| // Copyright 2018 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_WEB_APPLICATIONS_EXTENSIONS_SYSTEM_WEB_APP_MANAGER_BROWSERTEST_H_ |
| #define CHROME_BROWSER_WEB_APPLICATIONS_EXTENSIONS_SYSTEM_WEB_APP_MANAGER_BROWSERTEST_H_ |
| |
| #include <memory> |
| |
| #include "base/macros.h" |
| #include "base/test/scoped_feature_list.h" |
| #include "chrome/browser/web_applications/test/test_web_app_provider.h" |
| #include "chrome/test/base/in_process_browser_test.h" |
| |
| class Browser; |
| class KeyedService; |
| |
| namespace apps { |
| struct AppLaunchParams; |
| } |
| |
| namespace content { |
| class WebContents; |
| } |
| |
| namespace extensions { |
| class Extension; |
| } |
| |
| namespace web_app { |
| |
| class TestSystemWebAppManager; |
| class TestWebUIControllerFactory; |
| enum class SystemAppType; |
| |
| class SystemWebAppManagerBrowserTest : public InProcessBrowserTest { |
| public: |
| // Performs common initialization for testing SystemWebAppManager features. |
| // If true, |install_mock| installs a WebUIController that serves a mock |
| // System PWA, and ensures the WebAppProvider associated with the startup |
| // profile is a TestWebAppProviderCreator. |
| explicit SystemWebAppManagerBrowserTest(bool install_mock = true); |
| |
| ~SystemWebAppManagerBrowserTest() override; |
| |
| // Gets the Extension* from the HostedAppBrowserController associated with |
| // |browser|. |
| static const extensions::Extension* GetExtensionForAppBrowser( |
| Browser* browser); |
| |
| // Returns the SystemWebAppManager for browser()->profile(). This will be a |
| // TestSystemWebAppManager if initialized with |install_mock| true. |
| SystemWebAppManager& GetManager(); |
| |
| void WaitForTestSystemAppInstall(); |
| |
| // Wait for system apps to install, then launch one. Returns the browser that |
| // contains it. |
| Browser* WaitForSystemAppInstallAndLaunch(SystemAppType system_app_type); |
| |
| // Creates a default AppLaunchParams for |system_app_type|. Launches a window. |
| // Uses kSourceTest as the AppLaunchSource. |
| apps::AppLaunchParams LaunchParamsForApp(SystemAppType system_app_type); |
| |
| // Invokes OpenApplication() using the test's Profile. |
| content::WebContents* LaunchApp(const apps::AppLaunchParams& params); |
| |
| private: |
| std::unique_ptr<KeyedService> CreateWebAppProvider(Profile* profile); |
| |
| base::test::ScopedFeatureList scoped_feature_list_; |
| std::unique_ptr<TestWebUIControllerFactory> factory_; |
| std::unique_ptr<TestWebAppProviderCreator> test_web_app_provider_creator_; |
| TestSystemWebAppManager* test_system_web_app_manager_ = nullptr; |
| |
| DISALLOW_COPY_AND_ASSIGN(SystemWebAppManagerBrowserTest); |
| }; |
| |
| } // namespace web_app |
| |
| #endif // CHROME_BROWSER_WEB_APPLICATIONS_EXTENSIONS_SYSTEM_WEB_APP_MANAGER_BROWSERTEST_H_ |