| Index: chrome/browser/chromeos/policy/device_local_account_browsertest.cc
|
| diff --git a/chrome/browser/chromeos/policy/device_local_account_browsertest.cc b/chrome/browser/chromeos/policy/device_local_account_browsertest.cc
|
| index b3d0c744331309bca920a3075b19672b89f828a7..450f1921b902fe48fb1d456aa4744026c9156512 100644
|
| --- a/chrome/browser/chromeos/policy/device_local_account_browsertest.cc
|
| +++ b/chrome/browser/chromeos/policy/device_local_account_browsertest.cc
|
| @@ -40,9 +40,13 @@
|
| #include "chrome/browser/policy/proto/chromeos/chrome_device_policy.pb.h"
|
| #include "chrome/browser/policy/test/local_policy_test_server.h"
|
| #include "chrome/browser/prefs/session_startup_pref.h"
|
| +#include "chrome/browser/profiles/profile.h"
|
| +#include "chrome/browser/profiles/profile_manager.h"
|
| #include "chrome/browser/ui/browser.h"
|
| +#include "chrome/browser/ui/browser_commands.h"
|
| #include "chrome/browser/ui/browser_finder.h"
|
| #include "chrome/browser/ui/browser_list.h"
|
| +#include "chrome/browser/ui/browser_window.h"
|
| #include "chrome/browser/ui/host_desktop.h"
|
| #include "chrome/browser/ui/tabs/tab_strip_model.h"
|
| #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
|
| @@ -361,6 +365,62 @@ IN_PROC_BROWSER_TEST_F(DeviceLocalAccountTest, StartSession) {
|
| }
|
| }
|
|
|
| +IN_PROC_BROWSER_TEST_F(DeviceLocalAccountTest, FullscreenDisallowed) {
|
| + UploadAndInstallDeviceLocalAccountPolicy();
|
| + AddPublicSessionToDevicePolicy(kAccountId1);
|
| +
|
| + // This observes the display name becoming available as this indicates
|
| + // device-local account policy is fully loaded, which is a prerequisite for
|
| + // successful login.
|
| + content::WindowedNotificationObserver(
|
| + chrome::NOTIFICATION_USER_LIST_CHANGED,
|
| + base::Bind(&DisplayNameMatches, user_id_1_, kDisplayName)).Wait();
|
| +
|
| + // Wait for the login UI to be ready.
|
| + chromeos::LoginDisplayHostImpl* host =
|
| + reinterpret_cast<chromeos::LoginDisplayHostImpl*>(
|
| + chromeos::LoginDisplayHostImpl::default_host());
|
| + ASSERT_TRUE(host);
|
| + chromeos::OobeUI* oobe_ui = host->GetOobeUI();
|
| + ASSERT_TRUE(oobe_ui);
|
| + base::RunLoop run_loop;
|
| + const bool oobe_ui_ready = oobe_ui->IsJSReady(run_loop.QuitClosure());
|
| + if (!oobe_ui_ready)
|
| + run_loop.Run();
|
| +
|
| + // Ensure that the browser stays alive, even though no windows are opened
|
| + // during session start.
|
| + chrome::StartKeepAlive();
|
| +
|
| + // Start login into the device-local account.
|
| + host->StartSignInScreen();
|
| + chromeos::ExistingUserController* controller =
|
| + chromeos::ExistingUserController::current_controller();
|
| + ASSERT_TRUE(controller);
|
| + controller->LoginAsPublicAccount(user_id_1_);
|
| +
|
| + // Wait for the session to start.
|
| + content::WindowedNotificationObserver(chrome::NOTIFICATION_SESSION_STARTED,
|
| + base::Bind(IsSessionStarted)).Wait();
|
| +
|
| + // Open a browser window.
|
| + chrome::NewEmptyWindow(ProfileManager::GetDefaultProfile(),
|
| + chrome::HOST_DESKTOP_TYPE_ASH);
|
| + BrowserList* browser_list =
|
| + BrowserList::GetInstance(chrome::HOST_DESKTOP_TYPE_ASH);
|
| + EXPECT_EQ(1U, browser_list->size());
|
| + Browser* browser = browser_list->get(0);
|
| + ASSERT_TRUE(browser);
|
| + BrowserWindow* browser_window = browser->window();
|
| + ASSERT_TRUE(browser_window);
|
| + chrome::EndKeepAlive();
|
| +
|
| + // Verify that an attempt to enter fullscreen mode is denied.
|
| + EXPECT_FALSE(browser_window->IsFullscreen());
|
| + chrome::ToggleFullscreenMode(browser);
|
| + EXPECT_FALSE(browser_window->IsFullscreen());
|
| +}
|
| +
|
| class TermsOfServiceTest : public DeviceLocalAccountTest,
|
| public testing::WithParamInterface<bool> {
|
| };
|
|
|