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) 7a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/command_line.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/app/chrome_command_ids.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/browser_process.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/command_updater.h" 11010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "chrome/browser/prefs/incognito_mode_prefs.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/profiles/profile_manager.h" 139ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/browser/profiles/profiles_state.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/browser_commands.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_window_state.h" 17a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "chrome/common/chrome_switches.h" 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/common/pref_names.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/browser_with_test_window_test.h" 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/test/base/test_browser_window.h" 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/test/base/testing_browser_process.h" 220529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "chrome/test/base/testing_profile.h" 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/test/base/testing_profile_manager.h" 240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "components/signin/core/common/profile_management_switches.h" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/native_web_keyboard_event.h" 26d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ui/events/keycodes/keyboard_codes.h" 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)typedef BrowserWithTestWindowTest BrowserCommandControllerTest; 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(BrowserCommandControllerTest, IsReservedCommandOrKey) { 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // F1-3 keys are reserved Chrome accelerators on Chrome OS. 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey( 343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) IDC_BACK, content::NativeWebKeyboardEvent( 353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ui::ET_KEY_PRESSED, false, ui::VKEY_BROWSER_BACK, 0, 0))); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey( 373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) IDC_FORWARD, content::NativeWebKeyboardEvent( 383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ui::ET_KEY_PRESSED, false, ui::VKEY_BROWSER_FORWARD, 0, 0))); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey( 403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) IDC_RELOAD, content::NativeWebKeyboardEvent( 413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ui::ET_KEY_PRESSED, false, ui::VKEY_BROWSER_REFRESH, 0, 0))); 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // When there are modifier keys pressed, don't reserve. 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey( 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_RELOAD_IGNORING_CACHE, content::NativeWebKeyboardEvent( 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::ET_KEY_PRESSED, false, ui::VKEY_F3, ui::EF_SHIFT_DOWN, 0))); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey( 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_RELOAD_IGNORING_CACHE, content::NativeWebKeyboardEvent( 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::ET_KEY_PRESSED, false, ui::VKEY_F3, ui::EF_CONTROL_DOWN, 0))); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey( 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_FULLSCREEN, content::NativeWebKeyboardEvent( 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::ET_KEY_PRESSED, false, ui::VKEY_F4, ui::EF_SHIFT_DOWN, 0))); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // F4-10 keys are not reserved since they are Ash accelerators. 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey( 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -1, content::NativeWebKeyboardEvent(ui::ET_KEY_PRESSED, false, 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::VKEY_F4, 0, 0))); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey( 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -1, content::NativeWebKeyboardEvent(ui::ET_KEY_PRESSED, false, 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::VKEY_F5, 0, 0))); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey( 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -1, content::NativeWebKeyboardEvent(ui::ET_KEY_PRESSED, false, 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::VKEY_F6, 0, 0))); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey( 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -1, content::NativeWebKeyboardEvent(ui::ET_KEY_PRESSED, false, 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::VKEY_F7, 0, 0))); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey( 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -1, content::NativeWebKeyboardEvent(ui::ET_KEY_PRESSED, false, 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::VKEY_F8, 0, 0))); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey( 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -1, content::NativeWebKeyboardEvent(ui::ET_KEY_PRESSED, false, 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::VKEY_F9, 0, 0))); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey( 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -1, content::NativeWebKeyboardEvent(ui::ET_KEY_PRESSED, false, 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::VKEY_F10, 0, 0))); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shift+Control+Alt+F3 is also an Ash accelerator. Don't reserve it. 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey( 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -1, content::NativeWebKeyboardEvent( 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::ET_KEY_PRESSED, false, 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::VKEY_F3, 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, 0))); 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // OS_CHROMEOS 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(USE_AURA) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Ctrl+n, Ctrl+w are reserved while Ctrl+f is not. 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The content::NativeWebKeyboardEvent constructor is available only when 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // USE_AURA is #defined. 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey( 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_NEW_WINDOW, content::NativeWebKeyboardEvent( 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::ET_KEY_PRESSED, false, ui::VKEY_N, ui::EF_CONTROL_DOWN, 0))); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey( 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_CLOSE_TAB, content::NativeWebKeyboardEvent( 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::ET_KEY_PRESSED, false, ui::VKEY_W, ui::EF_CONTROL_DOWN, 0))); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey( 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_FIND, content::NativeWebKeyboardEvent( 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::ET_KEY_PRESSED, false, ui::VKEY_F, ui::EF_CONTROL_DOWN, 0))); 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // USE_AURA 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(BrowserCommandControllerTest, IsReservedCommandOrKeyIsApp) { 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser()->app_name_ = "app"; 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(browser()->is_app()); 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // When is_app(), no keys are reserved. 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey( 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_BACK, content::NativeWebKeyboardEvent(ui::ET_KEY_PRESSED, false, 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::VKEY_F1, 0, 0))); 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey( 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_FORWARD, content::NativeWebKeyboardEvent(ui::ET_KEY_PRESSED, false, 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::VKEY_F2, 0, 0))); 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey( 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_RELOAD, content::NativeWebKeyboardEvent(ui::ET_KEY_PRESSED, false, 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::VKEY_F3, 0, 0))); 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey( 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -1, content::NativeWebKeyboardEvent(ui::ET_KEY_PRESSED, false, 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::VKEY_F4, 0, 0))); 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // OS_CHROMEOS 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(USE_AURA) 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The content::NativeWebKeyboardEvent constructor is available only when 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // USE_AURA is #defined. 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey( 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_NEW_WINDOW, content::NativeWebKeyboardEvent( 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::ET_KEY_PRESSED, false, ui::VKEY_N, ui::EF_CONTROL_DOWN, 0))); 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey( 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_CLOSE_TAB, content::NativeWebKeyboardEvent( 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::ET_KEY_PRESSED, false, ui::VKEY_W, ui::EF_CONTROL_DOWN, 0))); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey( 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_FIND, content::NativeWebKeyboardEvent( 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::ET_KEY_PRESSED, false, ui::VKEY_F, ui::EF_CONTROL_DOWN, 0))); 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // USE_AURA 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 137010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_F(BrowserCommandControllerTest, IncognitoCommands) { 138010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_OPTIONS)); 139010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_IMPORT_SETTINGS)); 140010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_SHOW_SIGNIN)); 141010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 142010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) TestingProfile* testprofile = browser()->profile()->AsTestingProfile(); 143010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(testprofile); 144010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) testprofile->SetGuestSession(true); 145010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) chrome::BrowserCommandController 146010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ::UpdateSharedCommandsForIncognitoAvailability( 147010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) browser()->command_controller()->command_updater(), testprofile); 148010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_OPTIONS)); 149010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_IMPORT_SETTINGS)); 150010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_SHOW_SIGNIN)); 151010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 152010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) testprofile->SetGuestSession(false); 153010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) IncognitoModePrefs::SetAvailability(browser()->profile()->GetPrefs(), 154010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) IncognitoModePrefs::FORCED); 155010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) chrome::BrowserCommandController 156010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ::UpdateSharedCommandsForIncognitoAvailability( 157010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) browser()->command_controller()->command_updater(), testprofile); 158010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_OPTIONS)); 159010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_IMPORT_SETTINGS)); 160010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_SHOW_SIGNIN)); 161010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 162010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(BrowserCommandControllerTest, AppFullScreen) { 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Enable for tabbed browser. 1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FULLSCREEN)); 1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Enabled for app windows. 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->app_name_ = "app"; 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(browser()->is_app()); 1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->command_controller()->FullscreenStateChanged(); 1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FULLSCREEN)); 1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 174cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST_F(BrowserCommandControllerTest, OldAvatarMenuEnabledForOneOrMoreProfiles) { 1759ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch if (!profiles::IsMultipleProfilesEnabled()) 1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return; 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // The command line is reset at the end of every test by the test suite. 1796e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) switches::DisableNewAvatarMenuForTesting(CommandLine::ForCurrentProcess()); 1806e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ASSERT_FALSE(switches::IsNewAvatarMenu()); 181a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingProfileManager testing_profile_manager( 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingBrowserProcess::GetGlobal()); 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(testing_profile_manager.SetUp()); 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ProfileManager* profile_manager = testing_profile_manager.profile_manager(); 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 187cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) chrome::BrowserCommandController command_controller(browser()); 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const CommandUpdater* command_updater = command_controller.command_updater(); 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 190cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) bool enabled = true; 191cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#if defined(OS_CHROMEOS) 192cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Chrome OS uses system tray menu to handle multi-profiles. 193cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) enabled = false; 194cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif 195cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) testing_profile_manager.CreateTestingProfile("p1"); 1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1U, profile_manager->GetNumberOfProfiles()); 198cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(enabled, command_updater->IsCommandEnabled(IDC_SHOW_AVATAR_MENU)); 1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) testing_profile_manager.CreateTestingProfile("p2"); 2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(2U, profile_manager->GetNumberOfProfiles()); 202cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(enabled, command_updater->IsCommandEnabled(IDC_SHOW_AVATAR_MENU)); 2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) testing_profile_manager.DeleteTestingProfile("p1"); 2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1U, profile_manager->GetNumberOfProfiles()); 206cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(enabled, command_updater->IsCommandEnabled(IDC_SHOW_AVATAR_MENU)); 2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) testing_profile_manager.DeleteTestingProfile("p2"); 2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 211a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST_F(BrowserCommandControllerTest, NewAvatarMenuEnabledWhenOnlyOneProfile) { 212a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) if (!profiles::IsMultipleProfilesEnabled()) 213a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return; 214a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 215a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // The command line is reset at the end of every test by the test suite. 2165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) switches::EnableNewAvatarMenuForTesting(CommandLine::ForCurrentProcess()); 217a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 218a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) TestingProfileManager testing_profile_manager( 219a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) TestingBrowserProcess::GetGlobal()); 220a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ASSERT_TRUE(testing_profile_manager.SetUp()); 221a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ProfileManager* profile_manager = testing_profile_manager.profile_manager(); 222a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 223cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) chrome::BrowserCommandController command_controller(browser()); 224a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const CommandUpdater* command_updater = command_controller.command_updater(); 225a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 226a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) testing_profile_manager.CreateTestingProfile("p1"); 227a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ASSERT_EQ(1U, profile_manager->GetNumberOfProfiles()); 228a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#if defined(OS_CHROMEOS) 229a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Chrome OS uses system tray menu to handle multi-profiles. 230a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(command_updater->IsCommandEnabled(IDC_SHOW_AVATAR_MENU)); 231a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#else 232a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_TRUE(command_updater->IsCommandEnabled(IDC_SHOW_AVATAR_MENU)); 233a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif 234a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) testing_profile_manager.DeleteTestingProfile("p1"); 235a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 236a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 237a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST_F(BrowserCommandControllerTest, NewAvatarMenuEnabledInGuestMode) { 238a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) if (!profiles::IsMultipleProfilesEnabled()) 239a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return; 240a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 241a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // The command line is reset at the end of every test by the test suite. 2425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) switches::EnableNewAvatarMenuForTesting(CommandLine::ForCurrentProcess()); 243a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 244a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) TestingProfileManager testing_profile_manager( 245a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) TestingBrowserProcess::GetGlobal()); 246a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ASSERT_TRUE(testing_profile_manager.SetUp()); 247a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 248a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Set up guest a profile. 2491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<TestingProfile> original_profile = 2501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci TestingProfile::Builder().Build(); 251a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) TestingProfile::Builder guest_builder; 252a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) guest_builder.SetGuestSession(); 253a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) guest_builder.SetPath(ProfileManager::GetGuestProfilePath()); 2541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Browsers in Guest mode must be off the record profiles. 2551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci TestingProfile* guest_profile = 2561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci guest_builder.BuildIncognito(original_profile.get()); 257a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 258a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ASSERT_TRUE(guest_profile->IsGuestSession()); 259a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 260a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Create a new browser based on the guest profile. 2611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Browser::CreateParams profile_params(guest_profile, 262a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) chrome::GetActiveDesktop()); 263a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) scoped_ptr<Browser> guest_browser( 264a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) chrome::CreateBrowserWithTestWindowForParams(&profile_params)); 265cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) chrome::BrowserCommandController command_controller(guest_browser.get()); 266a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const CommandUpdater* command_updater = command_controller.command_updater(); 267a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#if defined(OS_CHROMEOS) 268a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Chrome OS uses system tray menu to handle multi-profiles. 269a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_FALSE(command_updater->IsCommandEnabled(IDC_SHOW_AVATAR_MENU)); 270a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#else 271a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_TRUE(command_updater->IsCommandEnabled(IDC_SHOW_AVATAR_MENU)); 272a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif 273a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 274a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 275a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST_F(BrowserCommandControllerTest, AvatarMenuAlwaysDisabledInIncognitoMode) { 276a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) if (!profiles::IsMultipleProfilesEnabled()) 277a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return; 278a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 279a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Set up a profile with an off the record profile. 280a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) TestingProfile::Builder normal_builder; 281a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) scoped_ptr<TestingProfile> original_profile = normal_builder.Build(); 282a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 283a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Create a new browser based on the off the record profile. 284a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) Browser::CreateParams profile_params( 285a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) original_profile->GetOffTheRecordProfile(), chrome::GetActiveDesktop()); 286a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) scoped_ptr<Browser> otr_browser( 287a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) chrome::CreateBrowserWithTestWindowForParams(&profile_params)); 288a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 289cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) chrome::BrowserCommandController command_controller(otr_browser.get()); 290a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const CommandUpdater* command_updater = command_controller.command_updater(); 291a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 2926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Both the old style and the new style avatar menu should be disabled. 293a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_FALSE(command_updater->IsCommandEnabled(IDC_SHOW_AVATAR_MENU)); 2946e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) if (switches::IsNewAvatarMenu()) { 2956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) switches::DisableNewAvatarMenuForTesting(CommandLine::ForCurrentProcess()); 2966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } else { 2976e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) switches::EnableNewAvatarMenuForTesting(CommandLine::ForCurrentProcess()); 2986e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 299a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_FALSE(command_updater->IsCommandEnabled(IDC_SHOW_AVATAR_MENU)); 3006e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // The command line is reset at the end of every test by the test suite. 301a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 302a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 3032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)////////////////////////////////////////////////////////////////////////////// 3042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// A test browser window that can toggle fullscreen state. 3062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FullscreenTestBrowserWindow : public TestBrowserWindow { 3072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 3082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FullscreenTestBrowserWindow() : fullscreen_(false) {} 3092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~FullscreenTestBrowserWindow() {} 3102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // TestBrowserWindow overrides: 3122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool ShouldHideUIForFullscreen() const OVERRIDE { 3132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return fullscreen_; 3142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 3152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool IsFullscreen() const OVERRIDE { 3162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return fullscreen_; 3172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 3182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void EnterFullscreen( 3192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL& url, FullscreenExitBubbleType type) OVERRIDE { 3202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fullscreen_ = true; 3212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 3222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void ExitFullscreen() OVERRIDE { 3232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fullscreen_ = false; 3242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 3252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 3272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool fullscreen_; 3282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FullscreenTestBrowserWindow); 3302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 3312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Test that uses FullscreenTestBrowserWindow for its window. 3332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class BrowserCommandControllerFullscreenTest 3342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : public BrowserWithTestWindowTest { 3352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 3362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) BrowserCommandControllerFullscreenTest() {} 3372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~BrowserCommandControllerFullscreenTest() {} 3382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // BrowserWithTestWindowTest overrides: 340c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual BrowserWindow* CreateBrowserWindow() OVERRIDE { 341c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return new FullscreenTestBrowserWindow; 3422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 3432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 3452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(BrowserCommandControllerFullscreenTest); 3462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 3472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(BrowserCommandControllerFullscreenTest, 3492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) UpdateCommandsForFullscreenMode) { 3502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Defaults for a tabbed browser. 3512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_OPEN_CURRENT_URL)); 3522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_SHOW_AS_TAB)); 3532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_TOOLBAR)); 3542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_LOCATION)); 3552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_SEARCH)); 3562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_MENU_BAR)); 3572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_NEXT_PANE)); 3582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_PREVIOUS_PANE)); 3592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_BOOKMARKS)); 3602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_DEVELOPER_MENU)); 36158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#if defined(GOOGLE_CHROME_BUILD) 3622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FEEDBACK)); 36358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif 3642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_OPTIONS)); 3652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_IMPORT_SETTINGS)); 3662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_EDIT_SEARCH_ENGINES)); 3672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_VIEW_PASSWORDS)); 3682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ABOUT)); 3692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_SHOW_APP_MENU)); 3702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FULLSCREEN)); 3712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Simulate going fullscreen. 3732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chrome::ToggleFullscreenMode(browser()); 3742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(browser()->window()->IsFullscreen()); 3752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->command_controller()->FullscreenStateChanged(); 3762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Most commands are disabled in fullscreen. 3782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_OPEN_CURRENT_URL)); 3792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_SHOW_AS_TAB)); 3802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_TOOLBAR)); 3812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_LOCATION)); 3822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_SEARCH)); 3832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_MENU_BAR)); 3842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_NEXT_PANE)); 3852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_PREVIOUS_PANE)); 3862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_BOOKMARKS)); 3872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_DEVELOPER_MENU)); 38858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#if defined(GOOGLE_CHROME_BUILD) 3892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_FEEDBACK)); 39058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif 3912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_OPTIONS)); 3922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_IMPORT_SETTINGS)); 3932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_EDIT_SEARCH_ENGINES)); 3942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_VIEW_PASSWORDS)); 3952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_ABOUT)); 3962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_SHOW_APP_MENU)); 3972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FULLSCREEN)); 3982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Exit fullscreen. 4002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chrome::ToggleFullscreenMode(browser()); 4012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_FALSE(browser()->window()->IsFullscreen()); 4022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->command_controller()->FullscreenStateChanged(); 4032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_OPEN_CURRENT_URL)); 4042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_SHOW_AS_TAB)); 4052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_TOOLBAR)); 4062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_LOCATION)); 4072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_SEARCH)); 4082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_MENU_BAR)); 4092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_NEXT_PANE)); 4102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_PREVIOUS_PANE)); 4112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_BOOKMARKS)); 4122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_DEVELOPER_MENU)); 41358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#if defined(GOOGLE_CHROME_BUILD) 4142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FEEDBACK)); 41558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif 4162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_OPTIONS)); 4172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_IMPORT_SETTINGS)); 4182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_EDIT_SEARCH_ENGINES)); 4192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_VIEW_PASSWORDS)); 4202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ABOUT)); 4212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_SHOW_APP_MENU)); 4222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FULLSCREEN)); 4230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 4240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // Guest Profiles disallow some options. 4250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch TestingProfile* testprofile = browser()->profile()->AsTestingProfile(); 4260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_TRUE(testprofile); 4270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch testprofile->SetGuestSession(true); 4280529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 4290529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch browser()->command_controller()->FullscreenStateChanged(); 430010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_OPTIONS)); 431010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_IMPORT_SETTINGS)); 4322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 4332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 434a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)TEST_F(BrowserCommandControllerTest, IncognitoModeOnSigninAllowedPrefChange) { 4352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Set up a profile with an off the record profile. 4361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<TestingProfile> profile1 = TestingProfile::Builder().Build(); 4371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Profile* profile2 = profile1->GetOffTheRecordProfile(); 4381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 439a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_EQ(profile2->GetOriginalProfile(), profile1.get()); 440c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 4412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Create a new browser based on the off the record profile. 4423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) Browser::CreateParams profile_params(profile1->GetOffTheRecordProfile(), 4433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) chrome::GetActiveDesktop()); 4442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<Browser> browser2( 4452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chrome::CreateBrowserWithTestWindowForParams(&profile_params)); 4462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 447cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) chrome::BrowserCommandController command_controller(browser2.get()); 448a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const CommandUpdater* command_updater = command_controller.command_updater(); 4492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Check that the SYNC_SETUP command is updated on preference change. 4512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(command_updater->IsCommandEnabled(IDC_SHOW_SYNC_SETUP)); 4522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) profile1->GetPrefs()->SetBoolean(prefs::kSigninAllowed, false); 4532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(command_updater->IsCommandEnabled(IDC_SHOW_SYNC_SETUP)); 4542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 4552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 456a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)TEST_F(BrowserCommandControllerTest, OnSigninAllowedPrefChange) { 457cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) chrome::BrowserCommandController command_controller(browser()); 4582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const CommandUpdater* command_updater = command_controller.command_updater(); 4592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Check that the SYNC_SETUP command is updated on preference change. 4612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(command_updater->IsCommandEnabled(IDC_SHOW_SYNC_SETUP)); 4622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) profile()->GetPrefs()->SetBoolean(prefs::kSigninAllowed, false); 4632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(command_updater->IsCommandEnabled(IDC_SHOW_SYNC_SETUP)); 4642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 465