// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_APPS_APP_BROWSERTEST_UTIL_H_ #define CHROME_BROWSER_APPS_APP_BROWSERTEST_UTIL_H_ #include "apps/app_window.h" #include "chrome/browser/extensions/extension_apitest.h" #include "content/public/common/page_transition_types.h" namespace base { class CommandLine; } namespace content { class WebContents; } class Browser; class ExtensionTestMessageListener; namespace extensions { class Extension; class PlatformAppBrowserTest : public ExtensionApiTest { public: PlatformAppBrowserTest(); virtual void SetUpCommandLine(base::CommandLine* command_line) OVERRIDE; // Gets the first app window that is found for a given browser. static apps::AppWindow* GetFirstAppWindowForBrowser(Browser* browser); protected: // Runs the app named |name| out of the platform_apps subdirectory. Waits // for the provided listener to be satisifed. const Extension* LoadAndLaunchPlatformApp( const char* name, ExtensionTestMessageListener* listener); // Runs the app named |name| out of the platform_apps subdirectory. Waits // until the given message is received from the app. const Extension* LoadAndLaunchPlatformApp(const char* name, const std::string& message); // Installs the app named |name| out of the platform_apps subdirectory. const Extension* InstallPlatformApp(const char* name); // Installs and runs the app named |name| out of the platform_apps // subdirectory. Waits until it is launched. const Extension* InstallAndLaunchPlatformApp(const char* name); // Launch the given platform app. void LaunchPlatformApp(const Extension* extension); // Gets the WebContents associated with the first app window that is found // (most tests only deal with one platform app window, so this is good // enough). content::WebContents* GetFirstAppWindowWebContents(); // Gets the first app window that is found (most tests only deal with one // platform app window, so this is good enough). apps::AppWindow* GetFirstAppWindow(); // Gets the first app window for an app. apps::AppWindow* GetFirstAppWindowForApp(const std::string& app_id); // Runs chrome.windows.getAll for the given extension and returns the number // of windows that the function returns. size_t RunGetWindowsFunctionForExtension(const Extension* extension); // Runs chrome.windows.get(|window_id|) for the the given extension and // returns whether or not a window was found. bool RunGetWindowFunctionForExtension(int window_id, const Extension* extension); // Returns the number of app windows. size_t GetAppWindowCount(); // Returns the number of app windows for a specific app. size_t GetAppWindowCountForApp(const std::string& app_id); // The command line already has an argument on it - about:blank, which // is set by InProcessBrowserTest::PrepareTestCommandLine. For platform app // launch tests we need to clear this. void ClearCommandLineArgs(); // Sets up the command line for running platform apps. void SetCommandLineArg(const std::string& test_file); // Creates an empty app window for |extension|. apps::AppWindow* CreateAppWindow(const Extension* extension); apps::AppWindow* CreateAppWindowFromParams( const Extension* extension, const apps::AppWindow::CreateParams& params); // Closes |window| and waits until it's gone. void CloseAppWindow(apps::AppWindow* window); // Call AdjustBoundsToBeVisibleOnScreen of |window|. void CallAdjustBoundsToBeVisibleOnScreenForAppWindow( apps::AppWindow* window, const gfx::Rect& cached_bounds, const gfx::Rect& cached_screen_bounds, const gfx::Rect& current_screen_bounds, const gfx::Size& minimum_size, gfx::Rect* bounds); // Load a simple test app and create a window. The window must be closed by // the caller in order to terminate the test - use CloseAppWindow(). // |window_create_options| are the options that will be passed to // chrome.app.window.create() in the test app. apps::AppWindow* CreateTestAppWindow( const std::string& window_create_options); }; class ExperimentalPlatformAppBrowserTest : public PlatformAppBrowserTest { public: virtual void SetUpCommandLine(base::CommandLine* command_line) OVERRIDE; }; } // namespace extensions #endif // CHROME_BROWSER_APPS_APP_BROWSERTEST_UTIL_H_