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..2b632784b7dbdd9f622eb6f8ec92ed3ec8e99842 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_visible_(false), |
+ test_browser_(test_browser) {} |
~FullscreenTestBrowserWindow() override {} |
@@ -264,6 +266,7 @@ class FullscreenTestBrowserWindow : public TestBrowserWindow, |
fullscreen_ = true; |
} |
void ExitFullscreen() override { fullscreen_ = false; } |
+ bool IsToolbarVisible() const override { return toolbar_visible_; } |
ExclusiveAccessContext* GetExclusiveAccessContext() override { return this; } |
@@ -277,8 +280,12 @@ class FullscreenTestBrowserWindow : public TestBrowserWindow, |
ExclusiveAccessBubbleType bubble_type) override {} |
void OnExclusiveAccessUserInput() override {} |
+ // Setters |
+ void ShowToolbar() { toolbar_visible_ = true; } |
+ |
private: |
bool fullscreen_; |
+ bool toolbar_visible_; |
BrowserCommandControllerFullscreenTest* test_browser_; |
DISALLOW_COPY_AND_ASSIGN(FullscreenTestBrowserWindow); |
@@ -361,6 +368,149 @@ TEST_F(BrowserCommandControllerFullscreenTest, |
EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_SHOW_APP_MENU)); |
EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FULLSCREEN)); |
+ // In fullscreen, only the exit fullscreen commands are reserved. All other |
+ // shortcuts should be delivered to the web page. See https://goo.gl/4tJ32G. |
+ EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey( |
+ IDC_CLOSE_TAB, |
+ content::NativeWebKeyboardEvent(blink::WebInputEvent::TypeFirst, 0, 0))); |
+ EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey( |
+ IDC_CLOSE_WINDOW, |
+ content::NativeWebKeyboardEvent(blink::WebInputEvent::TypeFirst, 0, 0))); |
+ EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey( |
+ IDC_NEW_INCOGNITO_WINDOW, |
+ content::NativeWebKeyboardEvent(blink::WebInputEvent::TypeFirst, 0, 0))); |
+ EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey( |
+ IDC_NEW_TAB, |
+ content::NativeWebKeyboardEvent(blink::WebInputEvent::TypeFirst, 0, 0))); |
+ EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey( |
+ IDC_NEW_WINDOW, |
+ content::NativeWebKeyboardEvent(blink::WebInputEvent::TypeFirst, 0, 0))); |
+ EXPECT_FALSE(browser()->command_controller()->IsReservedCommandOrKey( |
+ IDC_SELECT_NEXT_TAB, |
+ content::NativeWebKeyboardEvent(blink::WebInputEvent::TypeFirst, 0, 0))); |
+ EXPECT_FALSE(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))); |
+ |
+ // 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))); |
+ |
+ // Guest Profiles disallow some options. |
+ TestingProfile* testprofile = browser()->profile()->AsTestingProfile(); |
+ EXPECT_TRUE(testprofile); |
+ testprofile->SetGuestSession(true); |
+ |
+ browser()->command_controller()->FullscreenStateChanged(); |
+ EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_OPTIONS)); |
+ EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_IMPORT_SETTINGS)); |
+} |
+ |
+#if defined(OS_MACOSX) |
+TEST_F(BrowserCommandControllerFullscreenTest, |
+ TabShortcutsShouldBePreservedOnMacOSX) { |
+ static_cast<FullscreenTestBrowserWindow*>(window())->ShowToolbar(); |
+ |
+ // 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)); |
+#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)); |
+ |
+ // 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)); |
+ |
+ // In fullscreen, once the toolbar is visible, browser shortcuts should still |
+ // be reserved. See http://crbug.com/702251. |
EXPECT_TRUE(browser()->command_controller()->IsReservedCommandOrKey( |
IDC_CLOSE_TAB, |
content::NativeWebKeyboardEvent(blink::WebInputEvent::TypeFirst, 0, 0))); |
@@ -445,6 +595,7 @@ TEST_F(BrowserCommandControllerFullscreenTest, |
EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_OPTIONS)); |
EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_IMPORT_SETTINGS)); |
} |
+#endif |
// Ensure that the logic for enabling IDC_OPTIONS is consistent, regardless of |
// the order of entering fullscreen and forced incognito modes. See |