Index: chrome/browser/ui/browser_command_controller_unittest.cc |
diff --git a/chrome/browser/ui/browser_command_controller_unittest.cc b/chrome/browser/ui/browser_command_controller_unittest.cc |
index 8fa33d207c1d87fb53c6cd94973f1dc894f0b413..5dd6fc59455bc0339678f9ca94625e6be9eb1664 100644 |
--- a/chrome/browser/ui/browser_command_controller_unittest.cc |
+++ b/chrome/browser/ui/browser_command_controller_unittest.cc |
@@ -252,7 +252,9 @@ class FullscreenTestBrowserWindow : public TestBrowserWindow, |
public: |
FullscreenTestBrowserWindow( |
BrowserCommandControllerFullscreenTest* test_browser) |
- : fullscreen_(false), test_browser_(test_browser) {} |
+ : fullscreen_(false), |
+ toolbar_showing_(false), |
+ test_browser_(test_browser) {} |
~FullscreenTestBrowserWindow() override {} |
@@ -264,6 +266,7 @@ class FullscreenTestBrowserWindow : public TestBrowserWindow, |
fullscreen_ = true; |
} |
void ExitFullscreen() override { fullscreen_ = false; } |
+ bool IsToolbarShowing() const override { return toolbar_showing_; } |
ExclusiveAccessContext* GetExclusiveAccessContext() override { return this; } |
@@ -277,8 +280,11 @@ class FullscreenTestBrowserWindow : public TestBrowserWindow, |
ExclusiveAccessBubbleType bubble_type) override {} |
void OnExclusiveAccessUserInput() override {} |
+ void set_toolbar_showing(bool showing) { toolbar_showing_ = showing; } |
+ |
private: |
bool fullscreen_; |
+ bool toolbar_showing_; |
BrowserCommandControllerFullscreenTest* test_browser_; |
DISALLOW_COPY_AND_ASSIGN(FullscreenTestBrowserWindow); |
@@ -312,129 +318,115 @@ content::WebContents* FullscreenTestBrowserWindow::GetActiveWebContents() { |
TEST_F(BrowserCommandControllerFullscreenTest, |
UpdateCommandsForFullscreenMode) { |
- // Defaults for a tabbed browser. |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_OPEN_CURRENT_URL)); |
- EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_SHOW_AS_TAB)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_TOOLBAR)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_LOCATION)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_SEARCH)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_MENU_BAR)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_NEXT_PANE)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_PREVIOUS_PANE)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_BOOKMARKS)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_DEVELOPER_MENU)); |
+ struct { |
+ int command_id; |
+ // Whether the command is enabled in tab mode. |
+ bool enabled_in_tab; |
+ // Whether the keyboard shortcut is reserved in tab mode. |
+ bool reserved_in_tab; |
+ // Whether the command is enabled in fullscreen mode. |
+ bool enabled_in_fullscreen; |
+ // Whether the keyboard shortcut is reserved in fullscreen mode. |
+ bool reserved_in_fullscreen; |
+ } commands[] = { |
+ // 1. Most commands are disabled in fullscreen. |
+ // 2. In fullscreen, only the exit fullscreen commands are reserved. All |
+ // other shortcuts should be delivered to the web page. See |
+ // http://crbug.com/680809. |
+ |
+ // Command ID | tab mode | fullscreen | |
+ // | enabled | reserved | enabled | reserved | |
+ { IDC_OPEN_CURRENT_URL, true, false, false, false }, |
+ { IDC_FOCUS_TOOLBAR, true, false, false, false }, |
+ { IDC_FOCUS_LOCATION, true, false, false, false }, |
+ { IDC_FOCUS_SEARCH, true, false, false, false }, |
+ { IDC_FOCUS_MENU_BAR, true, false, false, false }, |
+ { IDC_FOCUS_NEXT_PANE, true, false, false, false }, |
+ { IDC_FOCUS_PREVIOUS_PANE, true, false, false, false }, |
+ { IDC_FOCUS_BOOKMARKS, true, false, false, false }, |
+ { IDC_DEVELOPER_MENU, true, false, false, false }, |
#if defined(GOOGLE_CHROME_BUILD) |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FEEDBACK)); |
+ { IDC_FEEDBACK, true, false, false, false }, |
#endif |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_OPTIONS)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_IMPORT_SETTINGS)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_EDIT_SEARCH_ENGINES)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_VIEW_PASSWORDS)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ABOUT)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_SHOW_APP_MENU)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FULLSCREEN)); |
+ { IDC_OPTIONS, true, false, false, false }, |
+ { IDC_IMPORT_SETTINGS, true, false, false, false }, |
+ { IDC_EDIT_SEARCH_ENGINES, true, false, false, false }, |
+ { IDC_VIEW_PASSWORDS, true, false, false, false }, |
+ { IDC_ABOUT, true, false, false, false }, |
+ { IDC_SHOW_APP_MENU, true, false, false, false }, |
+ { IDC_FULLSCREEN, true, false, true, true }, |
+ { IDC_CLOSE_TAB, true, true, true, false }, |
+ { IDC_CLOSE_WINDOW, true, true, true, false }, |
+ { IDC_NEW_INCOGNITO_WINDOW, true, true, true, false }, |
+ { IDC_NEW_TAB, true, true, true, false }, |
+ { IDC_NEW_WINDOW, true, true, true, false }, |
+ { IDC_SELECT_NEXT_TAB, true, true, true, false }, |
+ { IDC_SELECT_PREVIOUS_TAB, true, true, true, false }, |
+ { IDC_EXIT, true, true, true, true }, |
+ { IDC_SHOW_AS_TAB, false, false, false, false }, |
+ }; |
+ const content::NativeWebKeyboardEvent key_event( |
+ blink::WebInputEvent::TypeFirst, 0, 0); |
+ // Defaults for a tabbed browser. |
+ for (size_t i = 0; i < arraysize(commands); i++) { |
+ SCOPED_TRACE(commands[i].command_id); |
+ EXPECT_EQ(chrome::IsCommandEnabled(browser(), commands[i].command_id), |
+ commands[i].enabled_in_tab); |
+ EXPECT_EQ(browser()->command_controller()->IsReservedCommandOrKey( |
+ commands[i].command_id, key_event), |
+ commands[i].reserved_in_tab); |
+ } |
// Simulate going fullscreen. |
chrome::ToggleFullscreenMode(browser()); |
ASSERT_TRUE(browser()->window()->IsFullscreen()); |
browser()->command_controller()->FullscreenStateChanged(); |
- // Most commands are disabled in fullscreen. |
- EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_OPEN_CURRENT_URL)); |
- EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_SHOW_AS_TAB)); |
- EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_TOOLBAR)); |
- EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_LOCATION)); |
- EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_SEARCH)); |
- EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_MENU_BAR)); |
- EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_NEXT_PANE)); |
- EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_PREVIOUS_PANE)); |
- EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_BOOKMARKS)); |
- EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_DEVELOPER_MENU)); |
-#if defined(GOOGLE_CHROME_BUILD) |
- EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_FEEDBACK)); |
-#endif |
- EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_OPTIONS)); |
- EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_IMPORT_SETTINGS)); |
- EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_EDIT_SEARCH_ENGINES)); |
- EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_VIEW_PASSWORDS)); |
- EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_ABOUT)); |
- EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_SHOW_APP_MENU)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FULLSCREEN)); |
+ // By default, in fullscreen mode, the toolbar should be hidden; and all |
+ // platforms behave similarly. |
+ EXPECT_FALSE(window()->IsToolbarShowing()); |
+ for (size_t i = 0; i < arraysize(commands); i++) { |
+ SCOPED_TRACE(commands[i].command_id); |
+ EXPECT_EQ(chrome::IsCommandEnabled(browser(), commands[i].command_id), |
+ commands[i].enabled_in_fullscreen); |
+ EXPECT_EQ(browser()->command_controller()->IsReservedCommandOrKey( |
+ commands[i].command_id, key_event), |
+ commands[i].reserved_in_fullscreen); |
+ } |
+#if defined(OS_MACOSX) |
+ // When the toolbar is showing, commands should be reserved as if the content |
+ // were in a tab; IDC_FULLSCREEN should also be reserved. |
+ static_cast<FullscreenTestBrowserWindow*>(window())->set_toolbar_showing( |
+ true); |
EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey( |
- IDC_CLOSE_TAB, |
- content::NativeWebKeyboardEvent(blink::WebInputEvent::TypeFirst, 0, 0))); |
- EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey( |
- IDC_CLOSE_WINDOW, |
- content::NativeWebKeyboardEvent(blink::WebInputEvent::TypeFirst, 0, 0))); |
- EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey( |
- IDC_NEW_INCOGNITO_WINDOW, |
- content::NativeWebKeyboardEvent(blink::WebInputEvent::TypeFirst, 0, 0))); |
- EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey( |
- IDC_NEW_TAB, |
- content::NativeWebKeyboardEvent(blink::WebInputEvent::TypeFirst, 0, 0))); |
- EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey( |
- IDC_NEW_WINDOW, |
- content::NativeWebKeyboardEvent(blink::WebInputEvent::TypeFirst, 0, 0))); |
- EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey( |
- IDC_SELECT_NEXT_TAB, |
- content::NativeWebKeyboardEvent(blink::WebInputEvent::TypeFirst, 0, 0))); |
- EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey( |
- IDC_SELECT_PREVIOUS_TAB, |
- content::NativeWebKeyboardEvent(blink::WebInputEvent::TypeFirst, 0, 0))); |
- EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey( |
- IDC_EXIT, |
- content::NativeWebKeyboardEvent(blink::WebInputEvent::TypeFirst, 0, 0))); |
+ IDC_FULLSCREEN, key_event)); |
+ for (size_t i = 0; i < arraysize(commands); i++) { |
+ if (commands[i].command_id != IDC_FULLSCREEN) { |
+ SCOPED_TRACE(commands[i].command_id); |
+ EXPECT_EQ(browser()->command_controller()->IsReservedCommandOrKey( |
+ commands[i].command_id, key_event), |
+ commands[i].reserved_in_tab); |
+ } |
+ } |
+ // Return to default state. |
+ static_cast<FullscreenTestBrowserWindow*>(window())->set_toolbar_showing( |
+ false); |
+#endif |
// Exit fullscreen. |
chrome::ToggleFullscreenMode(browser()); |
ASSERT_FALSE(browser()->window()->IsFullscreen()); |
browser()->command_controller()->FullscreenStateChanged(); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_OPEN_CURRENT_URL)); |
- EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_SHOW_AS_TAB)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_TOOLBAR)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_LOCATION)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_SEARCH)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_MENU_BAR)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_NEXT_PANE)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_PREVIOUS_PANE)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FOCUS_BOOKMARKS)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_DEVELOPER_MENU)); |
-#if defined(GOOGLE_CHROME_BUILD) |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FEEDBACK)); |
-#endif |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_OPTIONS)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_IMPORT_SETTINGS)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_EDIT_SEARCH_ENGINES)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_VIEW_PASSWORDS)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ABOUT)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_SHOW_APP_MENU)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FULLSCREEN)); |
- EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey( |
- IDC_CLOSE_TAB, |
- content::NativeWebKeyboardEvent(blink::WebInputEvent::TypeFirst, 0, 0))); |
- EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey( |
- IDC_CLOSE_WINDOW, |
- content::NativeWebKeyboardEvent(blink::WebInputEvent::TypeFirst, 0, 0))); |
- EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey( |
- IDC_NEW_INCOGNITO_WINDOW, |
- content::NativeWebKeyboardEvent(blink::WebInputEvent::TypeFirst, 0, 0))); |
- EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey( |
- IDC_NEW_TAB, |
- content::NativeWebKeyboardEvent(blink::WebInputEvent::TypeFirst, 0, 0))); |
- EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey( |
- IDC_NEW_WINDOW, |
- content::NativeWebKeyboardEvent(blink::WebInputEvent::TypeFirst, 0, 0))); |
- EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey( |
- IDC_SELECT_NEXT_TAB, |
- content::NativeWebKeyboardEvent(blink::WebInputEvent::TypeFirst, 0, 0))); |
- EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey( |
- IDC_SELECT_PREVIOUS_TAB, |
- content::NativeWebKeyboardEvent(blink::WebInputEvent::TypeFirst, 0, 0))); |
- EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey( |
- IDC_EXIT, |
- content::NativeWebKeyboardEvent(blink::WebInputEvent::TypeFirst, 0, 0))); |
+ for (size_t i = 0; i < arraysize(commands); i++) { |
+ SCOPED_TRACE(commands[i].command_id); |
+ EXPECT_EQ(chrome::IsCommandEnabled(browser(), commands[i].command_id), |
+ commands[i].enabled_in_tab); |
+ EXPECT_EQ(browser()->command_controller()->IsReservedCommandOrKey( |
+ commands[i].command_id, key_event), |
+ commands[i].reserved_in_tab); |
+ } |
// Guest Profiles disallow some options. |
TestingProfile* testprofile = browser()->profile()->AsTestingProfile(); |