| // Copyright 2018 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_UI_FULLSCREEN_KEYBOARD_BROWSERTEST_BASE_H_ |
| #define CHROME_BROWSER_UI_FULLSCREEN_KEYBOARD_BROWSERTEST_BASE_H_ |
| |
| #include <string> |
| |
| #include "chrome/test/base/in_process_browser_test.h" |
| #include "net/test/embedded_test_server/embedded_test_server.h" |
| #include "ui/events/keycodes/keyboard_codes.h" |
| |
| namespace content { |
| class WebContents; |
| } |
| |
| class Browser; |
| |
| class FullscreenKeyboardBrowserTestBase : public InProcessBrowserTest { |
| public: |
| FullscreenKeyboardBrowserTestBase(); |
| |
| FullscreenKeyboardBrowserTestBase(const FullscreenKeyboardBrowserTestBase&) = |
| delete; |
| FullscreenKeyboardBrowserTestBase& operator=( |
| const FullscreenKeyboardBrowserTestBase&) = delete; |
| |
| ~FullscreenKeyboardBrowserTestBase() override; |
| |
| protected: |
| // InProcessBrowserTest override; |
| void SetUpOnMainThread() override; |
| |
| // BrowserTestBase override |
| void SetUpCommandLine(base::CommandLine* command_line) override; |
| |
| // Overridable to allow for custom test servers. |
| virtual net::EmbeddedTestServer* GetEmbeddedTestServer(); |
| |
| // Starts |kFullscreenKeyboardLockHTML| in a new tab and waits for load. |
| void StartFullscreenLockPage(); |
| |
| // Sends a control or command + |key| shortcut to the focused window. Shift |
| // modifier will be added if |shift| is true. |
| void SendShortcut(ui::KeyboardCode key, bool shift = false); |
| |
| // Sends a control or command + shift + |key| shortcut to the focused window. |
| void SendShiftShortcut(ui::KeyboardCode key); |
| |
| // Sends a fullscreen shortcut to the focused window and wait for the |
| // operation to take effect. |
| void SendFullscreenShortcutAndWait(); |
| |
| // Sends a KeyS to the focused window to trigger JavaScript fullscreen and |
| // wait for the operation to take effect. |
| void SendJsFullscreenShortcutAndWait(); |
| |
| // Sends an ESC to the focused window. |
| void SendEscape(); |
| |
| // Sends an ESC to the focused window to exit JavaScript fullscreen and wait |
| // for the operation to take effect. |
| void SendEscapeAndWaitForExitingFullscreen(); |
| |
| // Sends a set of preventable shortcuts to the web page and expects them to be |
| // prevented. |
| void SendShortcutsAndExpectPrevented(); |
| |
| // Sends a set of preventable shortcuts to the web page and expects them to |
| // not be prevented. If |js_fullscreen| is true, the test will use |
| // SendJsFullscreenShortcutAndWait() to trigger the fullscreen mode. Otherwise |
| // SendFullscreenShortcutAndWait() will be used. |
| void SendShortcutsAndExpectNotPrevented(bool js_fullscreen); |
| |
| // Sends multiple shortcuts using the current window mode (i.e. fullscreen) |
| // and verifies they have no effect on the current browser instance. |
| void VerifyShortcutsAreNotPrevented(); |
| |
| // Sends a magic KeyX to the focused window to stop the test case, receives |
| // the result and verifies if it is equal to |expected_result_|. |
| void FinishTestAndVerifyResult(); |
| |
| // Returns whether the active tab is in html fullscreen mode. |
| bool IsActiveTabFullscreen() const; |
| |
| // Returns whether the GetActiveBrowser() is in browser fullscreen mode. |
| bool IsInBrowserFullscreen() const; |
| |
| content::WebContents* GetActiveWebContents() const; |
| |
| // Gets the current active tab index. |
| int GetActiveTabIndex() const; |
| |
| // Gets the count of tabs in current browser. |
| int GetTabCount() const; |
| |
| // Gets the count of browser instances. |
| size_t GetBrowserCount() const; |
| |
| // Gets the last active Browser instance. |
| Browser* GetActiveBrowser() const; |
| |
| // Creates a new browser instance. Returns a pointer to the new instance. |
| Browser* CreateNewBrowserInstance(); |
| |
| // Ensures GetActiveBrowser() is focused. |
| void FocusOnLastActiveBrowser(); |
| |
| // Waits until the count of Browser instances becomes |expected|. |
| void WaitForBrowserCount(size_t expected); |
| |
| // Waits until the count of the tabs in active Browser instance becomes |
| // |expected|. |
| void WaitForTabCount(int expected); |
| |
| // Waits until the index of active tab in active Browser instance becomes |
| // |expected|. |
| void WaitForActiveTabIndex(int expected); |
| |
| // Waits until the index of active tab in active Browser instance is not |
| // |expected|. |
| void WaitForInactiveTabIndex(int expected); |
| |
| // Returns the path for the fullscreen webpage used for testing. |
| std::string GetFullscreenFramePath(); |
| |
| private: |
| // The expected output from the web page. This string is generated by |
| // appending key presses from Send* functions above. |
| std::string expected_result_; |
| }; |
| |
| #endif // CHROME_BROWSER_UI_FULLSCREEN_KEYBOARD_BROWSERTEST_BASE_H_ |