Commit 4db5a3ec authored by Alan Cutter's avatar Alan Cutter Committed by Commit Bot

Make WebAppAudioFocusBrowserTest work with Extensions/BMO web app backends

This CL removes the hard dependency WebAppAudioFocusBrowserTest had on
Extensions in favour of using WebAppControllerBrowserTest to switch
between Extensions/BMO backends via parameterisation.
This ensures the functionality is still testing when BMO is enabled.

Bug: 876576
Change-Id: Id1756b35568c50b4b0b5087e4d60b65a2f4cefb7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2063189
Commit-Queue: Alan Cutter <alancutter@chromium.org>
Reviewed-by: default avatarAlexey Baskakov <loyso@chromium.org>
Reviewed-by: default avatarEric Willigers <ericwilligers@chromium.org>
Cr-Commit-Position: refs/heads/master@{#742569}
parent e8bdde61
...@@ -218,6 +218,7 @@ source_set("web_applications_browser_tests") { ...@@ -218,6 +218,7 @@ source_set("web_applications_browser_tests") {
"pending_app_manager_impl_browsertest.cc", "pending_app_manager_impl_browsertest.cc",
"system_web_app_manager_browsertest.cc", "system_web_app_manager_browsertest.cc",
"system_web_app_manager_browsertest.h", "system_web_app_manager_browsertest.h",
"web_app_audio_focus_browsertest.cc",
"web_app_icon_manager_browsertest.cc", "web_app_icon_manager_browsertest.cc",
"web_app_migration_manager_browsertest.cc", "web_app_migration_manager_browsertest.cc",
] ]
...@@ -308,6 +309,5 @@ group("browser_tests") { ...@@ -308,6 +309,5 @@ group("browser_tests") {
":web_app_test_group", ":web_app_test_group",
":web_applications_browser_tests", ":web_applications_browser_tests",
"//chrome/browser/web_applications/components:browser_tests", "//chrome/browser/web_applications/components:browser_tests",
"//chrome/browser/web_applications/extensions:browser_tests",
] ]
} }
...@@ -77,30 +77,3 @@ source_set("unit_tests") { ...@@ -77,30 +77,3 @@ source_set("unit_tests") {
"//testing/gtest", "//testing/gtest",
] ]
} }
source_set("browser_tests") {
testonly = true
sources = [ "web_app_audio_focus_browsertest.cc" ]
defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
deps = [
":extensions",
"//base/test:test_support",
"//chrome/browser",
"//chrome/browser/ui",
"//chrome/browser/web_applications",
"//chrome/browser/web_applications:web_app_test_group",
"//chrome/browser/web_applications:web_applications_on_extensions",
"//chrome/browser/web_applications:web_applications_on_extensions_test_support",
"//chrome/browser/web_applications:web_applications_test_support",
"//chrome/browser/web_applications/components",
"//chrome/test:test_support",
"//chrome/test:test_support_ui",
"//extensions:test_support",
"//extensions/browser",
"//extensions/common",
"//net:test_support",
]
}
...@@ -2,20 +2,22 @@ ...@@ -2,20 +2,22 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "base/macros.h"
#include "base/test/scoped_feature_list.h" #include "base/test/scoped_feature_list.h"
#include "chrome/browser/extensions/browsertest_util.h" #include "base/unguessable_token.h"
#include "chrome/browser/extensions/extension_browsertest.h" #include "chrome/browser/extensions/extension_browsertest.h"
#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/browser/ui/web_applications/web_app_controller_browsertest.h"
#include "chrome/browser/web_applications/components/web_app_tab_helper_base.h" #include "chrome/browser/web_applications/components/web_app_tab_helper_base.h"
#include "chrome/common/web_application_info.h"
#include "chrome/test/base/ui_test_utils.h" #include "chrome/test/base/ui_test_utils.h"
#include "content/public/browser/notification_service.h" #include "content/public/browser/web_contents.h"
#include "content/public/test/browser_test_utils.h" #include "content/public/test/browser_test_utils.h"
#include "extensions/test/extension_test_message_listener.h" #include "net/test/embedded_test_server/embedded_test_server.h"
#include "extensions/test/test_extension_dir.h"
#include "media/base/media_switches.h"
#include "services/media_session/public/cpp/features.h" #include "services/media_session/public/cpp/features.h"
#include "ui/base/page_transition_types.h"
#include "url/gurl.h"
#include "url/third_party/mozilla/url_parse.h"
#include "url/url_canon.h"
namespace web_app { namespace web_app {
...@@ -28,7 +30,7 @@ const char kAudioFocusTestPageURL[] = ...@@ -28,7 +30,7 @@ const char kAudioFocusTestPageURL[] =
// WebAppAudioFocusBrowserTest test that PWAs have separate audio // WebAppAudioFocusBrowserTest test that PWAs have separate audio
// focus from the rest of the browser. // focus from the rest of the browser.
class WebAppAudioFocusBrowserTest : public extensions::ExtensionBrowserTest { class WebAppAudioFocusBrowserTest : public WebAppControllerBrowserTest {
public: public:
WebAppAudioFocusBrowserTest() = default; WebAppAudioFocusBrowserTest() = default;
~WebAppAudioFocusBrowserTest() override = default; ~WebAppAudioFocusBrowserTest() override = default;
...@@ -40,7 +42,7 @@ class WebAppAudioFocusBrowserTest : public extensions::ExtensionBrowserTest { ...@@ -40,7 +42,7 @@ class WebAppAudioFocusBrowserTest : public extensions::ExtensionBrowserTest {
media_session::features::kAudioFocusSessionGrouping}, media_session::features::kAudioFocusSessionGrouping},
{}); {});
extensions::ExtensionBrowserTest::SetUp(); WebAppControllerBrowserTest::SetUp();
} }
bool IsPaused(content::WebContents* web_contents) { bool IsPaused(content::WebContents* web_contents) {
...@@ -82,27 +84,13 @@ class WebAppAudioFocusBrowserTest : public extensions::ExtensionBrowserTest { ...@@ -82,27 +84,13 @@ class WebAppAudioFocusBrowserTest : public extensions::ExtensionBrowserTest {
private: private:
base::test::ScopedFeatureList scoped_feature_list_; base::test::ScopedFeatureList scoped_feature_list_;
DISALLOW_COPY_AND_ASSIGN(WebAppAudioFocusBrowserTest);
}; };
IN_PROC_BROWSER_TEST_F(WebAppAudioFocusBrowserTest, AppHasDifferentAudioFocus) { IN_PROC_BROWSER_TEST_P(WebAppAudioFocusBrowserTest, AppHasDifferentAudioFocus) {
ASSERT_TRUE(embedded_test_server()->Start()); ASSERT_TRUE(embedded_test_server()->Start());
GURL app_url = embedded_test_server()->GetURL(kAudioFocusTestPageURL); GURL app_url = embedded_test_server()->GetURL(kAudioFocusTestPageURL);
// Install the PWA. AppId app_id = InstallPWA(app_url);
WebApplicationInfo web_app_info;
web_app_info.app_url = app_url;
web_app_info.scope = app_url.GetWithoutFilename();
web_app_info.open_as_window = true;
const extensions::Extension* extension =
extensions::browsertest_util::InstallBookmarkApp(browser()->profile(),
std::move(web_app_info));
ASSERT_TRUE(extension);
// Check that the extension has the correct type.
EXPECT_TRUE(extension->is_hosted_app());
EXPECT_TRUE(extension->from_bookmark());
// Launch browser with media page. // Launch browser with media page.
content::WebContents* tab1 = AddTestPageTabAtIndex(0); content::WebContents* tab1 = AddTestPageTabAtIndex(0);
...@@ -122,17 +110,10 @@ IN_PROC_BROWSER_TEST_F(WebAppAudioFocusBrowserTest, AppHasDifferentAudioFocus) { ...@@ -122,17 +110,10 @@ IN_PROC_BROWSER_TEST_F(WebAppAudioFocusBrowserTest, AppHasDifferentAudioFocus) {
EXPECT_EQ(base::UnguessableToken::Null(), GetAudioFocusGroupId(tab2)); EXPECT_EQ(base::UnguessableToken::Null(), GetAudioFocusGroupId(tab2));
// Launch the PWA. // Launch the PWA.
content::WebContents* web_contents; Browser* app_browser = LaunchWebAppBrowserAndWait(app_id);
{ content::WebContents* web_contents =
ui_test_utils::UrlLoadObserver url_observer( app_browser->tab_strip_model()->GetActiveWebContents();
app_url, content::NotificationService::AllSources()); EXPECT_TRUE(content::WaitForLoadStop(web_contents));
Browser* app_browser = extensions::browsertest_util::LaunchAppBrowser(
browser()->profile(), extension);
url_observer.Wait();
web_contents = app_browser->tab_strip_model()->GetActiveWebContents();
EXPECT_TRUE(content::WaitForLoadStop(web_contents));
}
// Start the PWA playing and check that it has a group id. // Start the PWA playing and check that it has a group id.
EXPECT_TRUE(StartPlaying(web_contents)); EXPECT_TRUE(StartPlaying(web_contents));
...@@ -166,14 +147,10 @@ IN_PROC_BROWSER_TEST_F(WebAppAudioFocusBrowserTest, AppHasDifferentAudioFocus) { ...@@ -166,14 +147,10 @@ IN_PROC_BROWSER_TEST_F(WebAppAudioFocusBrowserTest, AppHasDifferentAudioFocus) {
// Launch a second window for the PWA. It should have the same group id. // Launch a second window for the PWA. It should have the same group id.
{ {
ui_test_utils::UrlLoadObserver url_observer( Browser* second_app_browser = LaunchWebAppBrowserAndWait(app_id);
app_url, content::NotificationService::AllSources());
Browser* app_browser = extensions::browsertest_util::LaunchAppBrowser(
browser()->profile(), extension);
url_observer.Wait();
content::WebContents* new_contents = content::WebContents* new_contents =
app_browser->tab_strip_model()->GetActiveWebContents(); second_app_browser->tab_strip_model()->GetActiveWebContents();
EXPECT_TRUE(content::WaitForLoadStop(new_contents)); EXPECT_TRUE(content::WaitForLoadStop(new_contents));
EXPECT_EQ(group_id, GetAudioFocusGroupId(new_contents)); EXPECT_EQ(group_id, GetAudioFocusGroupId(new_contents));
...@@ -194,24 +171,11 @@ IN_PROC_BROWSER_TEST_F(WebAppAudioFocusBrowserTest, AppHasDifferentAudioFocus) { ...@@ -194,24 +171,11 @@ IN_PROC_BROWSER_TEST_F(WebAppAudioFocusBrowserTest, AppHasDifferentAudioFocus) {
EXPECT_EQ(group_id, GetAudioFocusGroupId(web_contents)); EXPECT_EQ(group_id, GetAudioFocusGroupId(web_contents));
} }
IN_PROC_BROWSER_TEST_F(WebAppAudioFocusBrowserTest, IN_PROC_BROWSER_TEST_P(WebAppAudioFocusBrowserTest, WebAppHasSameAudioFocus) {
BookmarkAppHasSameAudioFocus) {
ASSERT_TRUE(embedded_test_server()->Start()); ASSERT_TRUE(embedded_test_server()->Start());
GURL app_url = embedded_test_server()->GetURL(kAudioFocusTestPageURL); GURL app_url = embedded_test_server()->GetURL(kAudioFocusTestPageURL);
// Install the bookmark app. AppId app_id = InstallPWA(app_url);
WebApplicationInfo web_app_info;
web_app_info.app_url = app_url;
web_app_info.scope = app_url.GetWithoutFilename();
web_app_info.open_as_window = true;
const extensions::Extension* extension =
extensions::browsertest_util::InstallBookmarkApp(profile(),
std::move(web_app_info));
ASSERT_TRUE(extension);
// Check that the extension has the correct type.
EXPECT_TRUE(extension->is_hosted_app());
EXPECT_TRUE(extension->from_bookmark());
ui_test_utils::NavigateToURL(browser(), app_url); ui_test_utils::NavigateToURL(browser(), app_url);
content::WebContents* web_contents = content::WebContents* web_contents =
...@@ -221,4 +185,12 @@ IN_PROC_BROWSER_TEST_F(WebAppAudioFocusBrowserTest, ...@@ -221,4 +185,12 @@ IN_PROC_BROWSER_TEST_F(WebAppAudioFocusBrowserTest,
EXPECT_EQ(base::UnguessableToken::Null(), GetAudioFocusGroupId(web_contents)); EXPECT_EQ(base::UnguessableToken::Null(), GetAudioFocusGroupId(web_contents));
} }
INSTANTIATE_TEST_SUITE_P(
All,
WebAppAudioFocusBrowserTest,
::testing::Values(ControllerType::kHostedAppController,
ControllerType::kUnifiedControllerWithBookmarkApp,
ControllerType::kUnifiedControllerWithWebApp),
ControllerTypeParamToString);
} // namespace web_app } // namespace web_app
...@@ -665,8 +665,6 @@ if (!is_android) { ...@@ -665,8 +665,6 @@ if (!is_android) {
"HAS_OUT_OF_PROC_TEST_RUNNER", "HAS_OUT_OF_PROC_TEST_RUNNER",
"CHROME_VERSION_MAJOR=" + chrome_version_major, "CHROME_VERSION_MAJOR=" + chrome_version_major,
] ]
allow_circular_includes_from =
[ "//chrome/browser/web_applications/extensions:browser_tests" ]
deps = [ deps = [
":browser_tests_runner", ":browser_tests_runner",
":policy_testserver_pyproto", ":policy_testserver_pyproto",
...@@ -687,7 +685,6 @@ if (!is_android) { ...@@ -687,7 +685,6 @@ if (!is_android) {
"//chrome/browser/notifications/scheduler/test:test_support", "//chrome/browser/notifications/scheduler/test:test_support",
"//chrome/browser/profiling_host:profiling_browsertests", "//chrome/browser/profiling_host:profiling_browsertests",
"//chrome/browser/web_applications:browser_tests", "//chrome/browser/web_applications:browser_tests",
"//chrome/browser/web_applications/extensions:browser_tests",
"//chrome/renderer", "//chrome/renderer",
"//chrome/services/removable_storage_writer:lib", "//chrome/services/removable_storage_writer:lib",
"//chrome/test/data:webui_test_resources", "//chrome/test/data:webui_test_resources",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment