browser_command_controller_unittest.cc revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_command_controller.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/app/chrome_command_ids.h"
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/browser_process.h"
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/command_updater.h"
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/profiles/profile_destroyer.h"
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/profiles/profile_manager.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h"
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/browser_commands.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_window_state.h"
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/common/pref_names.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/browser_with_test_window_test.h"
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/test/base/test_browser_window.h"
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/test/base/testing_browser_process.h"
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/test/base/testing_profile_manager.h"
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/native_web_keyboard_event.h"
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/keycodes/keyboard_codes.h"
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)typedef BrowserWithTestWindowTest BrowserCommandControllerTest;
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(BrowserCommandControllerTest, IsReservedCommandOrKey) {
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // F1-3 keys are reserved Chrome accelerators on Chrome OS.
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey(
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IDC_BACK, content::NativeWebKeyboardEvent(ui::ET_KEY_PRESSED, false,
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                ui::VKEY_F1, 0, 0)));
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey(
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IDC_FORWARD, content::NativeWebKeyboardEvent(ui::ET_KEY_PRESSED, false,
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                   ui::VKEY_F2, 0, 0)));
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey(
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IDC_RELOAD, content::NativeWebKeyboardEvent(ui::ET_KEY_PRESSED, false,
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                  ui::VKEY_F3, 0, 0)));
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // When there are modifier keys pressed, don't reserve.
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey(
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IDC_RELOAD_IGNORING_CACHE, content::NativeWebKeyboardEvent(
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          ui::ET_KEY_PRESSED, false, ui::VKEY_F3, ui::EF_SHIFT_DOWN, 0)));
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey(
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IDC_RELOAD_IGNORING_CACHE, content::NativeWebKeyboardEvent(
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          ui::ET_KEY_PRESSED, false, ui::VKEY_F3, ui::EF_CONTROL_DOWN, 0)));
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey(
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IDC_FULLSCREEN, content::NativeWebKeyboardEvent(
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          ui::ET_KEY_PRESSED, false, ui::VKEY_F4, ui::EF_SHIFT_DOWN, 0)));
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // F4-10 keys are not reserved since they are Ash accelerators.
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey(
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -1, content::NativeWebKeyboardEvent(ui::ET_KEY_PRESSED, false,
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          ui::VKEY_F4, 0, 0)));
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey(
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -1, content::NativeWebKeyboardEvent(ui::ET_KEY_PRESSED, false,
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          ui::VKEY_F5, 0, 0)));
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey(
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -1, content::NativeWebKeyboardEvent(ui::ET_KEY_PRESSED, false,
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          ui::VKEY_F6, 0, 0)));
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey(
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -1, content::NativeWebKeyboardEvent(ui::ET_KEY_PRESSED, false,
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          ui::VKEY_F7, 0, 0)));
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey(
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -1, content::NativeWebKeyboardEvent(ui::ET_KEY_PRESSED, false,
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          ui::VKEY_F8, 0, 0)));
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey(
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -1, content::NativeWebKeyboardEvent(ui::ET_KEY_PRESSED, false,
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          ui::VKEY_F9, 0, 0)));
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey(
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -1, content::NativeWebKeyboardEvent(ui::ET_KEY_PRESSED, false,
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          ui::VKEY_F10, 0, 0)));
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shift+Control+Alt+F3 is also an Ash accelerator. Don't reserve it.
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey(
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -1, content::NativeWebKeyboardEvent(
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          ui::ET_KEY_PRESSED, false,
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          ui::VKEY_F3,
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, 0)));
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // OS_CHROMEOS
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(USE_AURA)
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Ctrl+n, Ctrl+w are reserved while Ctrl+f is not.
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The content::NativeWebKeyboardEvent constructor is available only when
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // USE_AURA is #defined.
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey(
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IDC_NEW_WINDOW, content::NativeWebKeyboardEvent(
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          ui::ET_KEY_PRESSED, false, ui::VKEY_N, ui::EF_CONTROL_DOWN, 0)));
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey(
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IDC_CLOSE_TAB, content::NativeWebKeyboardEvent(
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          ui::ET_KEY_PRESSED, false, ui::VKEY_W, ui::EF_CONTROL_DOWN, 0)));
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey(
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IDC_FIND, content::NativeWebKeyboardEvent(
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          ui::ET_KEY_PRESSED, false, ui::VKEY_F, ui::EF_CONTROL_DOWN, 0)));
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // USE_AURA
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(BrowserCommandControllerTest, IsReservedCommandOrKeyIsApp) {
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  browser()->app_name_ = "app";
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(browser()->is_app());
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // When is_app(), no keys are reserved.
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS)
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey(
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IDC_BACK, content::NativeWebKeyboardEvent(ui::ET_KEY_PRESSED, false,
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                ui::VKEY_F1, 0, 0)));
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey(
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IDC_FORWARD, content::NativeWebKeyboardEvent(ui::ET_KEY_PRESSED, false,
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                   ui::VKEY_F2, 0, 0)));
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey(
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IDC_RELOAD, content::NativeWebKeyboardEvent(ui::ET_KEY_PRESSED, false,
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                  ui::VKEY_F3, 0, 0)));
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey(
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -1, content::NativeWebKeyboardEvent(ui::ET_KEY_PRESSED, false,
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          ui::VKEY_F4, 0, 0)));
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // OS_CHROMEOS
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(USE_AURA)
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The content::NativeWebKeyboardEvent constructor is available only when
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // USE_AURA is #defined.
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey(
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IDC_NEW_WINDOW, content::NativeWebKeyboardEvent(
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          ui::ET_KEY_PRESSED, false, ui::VKEY_N, ui::EF_CONTROL_DOWN, 0)));
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey(
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IDC_CLOSE_TAB, content::NativeWebKeyboardEvent(
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          ui::ET_KEY_PRESSED, false, ui::VKEY_W, ui::EF_CONTROL_DOWN, 0)));
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey(
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IDC_FIND, content::NativeWebKeyboardEvent(
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          ui::ET_KEY_PRESSED, false, ui::VKEY_F, ui::EF_CONTROL_DOWN, 0)));
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // USE_AURA
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(BrowserCommandControllerTest, AppFullScreen) {
1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Enable for tabbed browser.
1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FULLSCREEN));
1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Enabled for app windows.
1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  browser()->app_name_ = "app";
1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ASSERT_TRUE(browser()->is_app());
1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  browser()->command_controller()->FullscreenStateChanged();
1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FULLSCREEN));
1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(BrowserCommandControllerTest, AvatarMenuDisabledWhenOnlyOneProfile) {
1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (!ProfileManager::IsMultipleProfilesEnabled())
1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return;
1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestingProfileManager testing_profile_manager(
1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      TestingBrowserProcess::GetGlobal());
1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ASSERT_TRUE(testing_profile_manager.SetUp());
1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ProfileManager* profile_manager = testing_profile_manager.profile_manager();
1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  chrome::BrowserCommandController command_controller(browser(),
1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                                      profile_manager);
1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const CommandUpdater* command_updater = command_controller.command_updater();
1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  testing_profile_manager.CreateTestingProfile("p1");
1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ASSERT_EQ(1U, profile_manager->GetNumberOfProfiles());
1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(command_updater->IsCommandEnabled(IDC_SHOW_AVATAR_MENU));
1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  testing_profile_manager.CreateTestingProfile("p2");
1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ASSERT_EQ(2U, profile_manager->GetNumberOfProfiles());
1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(command_updater->IsCommandEnabled(IDC_SHOW_AVATAR_MENU));
1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  testing_profile_manager.DeleteTestingProfile("p1");
1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ASSERT_EQ(1U, profile_manager->GetNumberOfProfiles());
1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(command_updater->IsCommandEnabled(IDC_SHOW_AVATAR_MENU));
1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  testing_profile_manager.DeleteTestingProfile("p2");
1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)//////////////////////////////////////////////////////////////////////////////
1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// A test browser window that can toggle fullscreen state.
1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FullscreenTestBrowserWindow : public TestBrowserWindow {
1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public:
1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  FullscreenTestBrowserWindow() : fullscreen_(false) {}
1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual ~FullscreenTestBrowserWindow() {}
1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // TestBrowserWindow overrides:
1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool ShouldHideUIForFullscreen() const OVERRIDE {
1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return fullscreen_;
1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool IsFullscreen() const OVERRIDE {
1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return fullscreen_;
1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void EnterFullscreen(
1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const GURL& url, FullscreenExitBubbleType type) OVERRIDE {
1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    fullscreen_ = true;
1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void ExitFullscreen() OVERRIDE {
1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    fullscreen_ = false;
1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private:
1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool fullscreen_;
1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(FullscreenTestBrowserWindow);
1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Test that uses FullscreenTestBrowserWindow for its window.
2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class BrowserCommandControllerFullscreenTest
2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    : public BrowserWithTestWindowTest {
2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public:
2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  BrowserCommandControllerFullscreenTest() {}
2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual ~BrowserCommandControllerFullscreenTest() {}
2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // BrowserWithTestWindowTest overrides:
208c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual BrowserWindow* CreateBrowserWindow() OVERRIDE {
209c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    return new FullscreenTestBrowserWindow;
2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private:
2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(BrowserCommandControllerFullscreenTest);
2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(BrowserCommandControllerFullscreenTest,
2172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)       UpdateCommandsForFullscreenMode) {
2182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Defaults for a tabbed browser.
2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_OPEN_CURRENT_URL));
2202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_SHOW_AS_TAB));
2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_TOOLBAR));
2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_LOCATION));
2232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_SEARCH));
2242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_MENU_BAR));
2252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_NEXT_PANE));
2262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_PREVIOUS_PANE));
2272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_BOOKMARKS));
2282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_DEVELOPER_MENU));
2292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FEEDBACK));
2302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_OPTIONS));
2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_IMPORT_SETTINGS));
2322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_EDIT_SEARCH_ENGINES));
2332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_VIEW_PASSWORDS));
2342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ABOUT));
2352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_SHOW_APP_MENU));
2362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FULLSCREEN));
2372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Simulate going fullscreen.
2392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  chrome::ToggleFullscreenMode(browser());
2402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ASSERT_TRUE(browser()->window()->IsFullscreen());
2412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  browser()->command_controller()->FullscreenStateChanged();
2422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Most commands are disabled in fullscreen.
2442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_OPEN_CURRENT_URL));
2452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_SHOW_AS_TAB));
2462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_TOOLBAR));
2472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_LOCATION));
2482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_SEARCH));
2492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_MENU_BAR));
2502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_NEXT_PANE));
2512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_PREVIOUS_PANE));
2522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_BOOKMARKS));
2532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_DEVELOPER_MENU));
2542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_FEEDBACK));
2552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_OPTIONS));
2562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_IMPORT_SETTINGS));
2572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_EDIT_SEARCH_ENGINES));
2582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_VIEW_PASSWORDS));
2592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_ABOUT));
2602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_SHOW_APP_MENU));
2612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FULLSCREEN));
2622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Exit fullscreen.
2642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  chrome::ToggleFullscreenMode(browser());
2652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ASSERT_FALSE(browser()->window()->IsFullscreen());
2662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  browser()->command_controller()->FullscreenStateChanged();
2672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_OPEN_CURRENT_URL));
2682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_SHOW_AS_TAB));
2692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_TOOLBAR));
2702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_LOCATION));
2712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_SEARCH));
2722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_MENU_BAR));
2732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_NEXT_PANE));
2742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_PREVIOUS_PANE));
2752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_BOOKMARKS));
2762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_DEVELOPER_MENU));
2772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FEEDBACK));
2782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_OPTIONS));
2792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_IMPORT_SETTINGS));
2802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_EDIT_SEARCH_ENGINES));
2812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_VIEW_PASSWORDS));
2822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ABOUT));
2832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_SHOW_APP_MENU));
2842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FULLSCREEN));
2852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
2862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(BrowserCommandControllerTest,
2882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    IncognitoModeOnSigninAllowedPrefChange) {
2892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestingProfileManager testing_profile_manager(
2902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      TestingBrowserProcess::GetGlobal());
2912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ASSERT_TRUE(testing_profile_manager.SetUp());
2922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Set up a profile with an off the record profile.
2942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestingProfile::Builder builder;
2952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestingProfile* profile2 = builder.Build().release();
2962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  profile2->set_incognito(true);
297c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  TestingProfile::Builder builder2;
298c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  TestingProfile* profile1 = builder2.Build().release();
2992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  profile2->SetOriginalProfile(profile1);
3002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_EQ(profile2->GetOriginalProfile(), profile1);
3012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  profile1->SetOffTheRecordProfile(profile2);
302c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
3032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Create a new browser based on the off the record profile.
3042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  Browser::CreateParams profile_params(profile2,
3052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                       chrome::HOST_DESKTOP_TYPE_NATIVE);
3062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<Browser> browser2(
3072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      chrome::CreateBrowserWithTestWindowForParams(&profile_params));
3082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ProfileManager* profile_manager = testing_profile_manager.profile_manager();
3102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  chrome::BrowserCommandController* command_controller =
3112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      new chrome::BrowserCommandController(browser2.get(), profile_manager);
3122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const CommandUpdater* command_updater = command_controller->command_updater();
3132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Check that the SYNC_SETUP command is updated on preference change.
3152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(command_updater->IsCommandEnabled(IDC_SHOW_SYNC_SETUP));
3162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  profile1->GetPrefs()->SetBoolean(prefs::kSigninAllowed, false);
3172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(command_updater->IsCommandEnabled(IDC_SHOW_SYNC_SETUP));
3182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  delete command_controller;
3192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  browser2.reset();
320c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  ProfileDestroyer::DestroyProfileWhenAppropriate(profile1);
3212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
3222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(BrowserCommandControllerTest,
3242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    OnSigninAllowedPrefChange) {
3252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestingProfileManager testing_profile_manager(
3262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      TestingBrowserProcess::GetGlobal());
3272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ASSERT_TRUE(testing_profile_manager.SetUp());
3282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ProfileManager* profile_manager = testing_profile_manager.profile_manager();
3292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  chrome::BrowserCommandController command_controller(browser(),
3302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                                      profile_manager);
3312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const CommandUpdater* command_updater = command_controller.command_updater();
3322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Check that the SYNC_SETUP command is updated on preference change.
3342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(command_updater->IsCommandEnabled(IDC_SHOW_SYNC_SETUP));
3352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  profile()->GetPrefs()->SetBoolean(prefs::kSigninAllowed, false);
3362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(command_updater->IsCommandEnabled(IDC_SHOW_SYNC_SETUP));
3372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
338