| Index: chrome/browser/banners/app_banner_manager_browsertest.cc
|
| diff --git a/chrome/browser/banners/app_banner_manager_browsertest.cc b/chrome/browser/banners/app_banner_manager_browsertest.cc
|
| index 1cd312703051dc08fa3418eb3aae8b696584567f..162272281144d3b489d4da6d95fb061e978eee6b 100644
|
| --- a/chrome/browser/banners/app_banner_manager_browsertest.cc
|
| +++ b/chrome/browser/banners/app_banner_manager_browsertest.cc
|
| @@ -2,7 +2,7 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "chrome/browser/banners/app_banner_manager.h"
|
| +#include <memory>
|
|
|
| #include "base/command_line.h"
|
| #include "base/run_loop.h"
|
| @@ -19,8 +19,12 @@
|
| #include "chrome/common/chrome_switches.h"
|
| #include "chrome/test/base/in_process_browser_test.h"
|
| #include "chrome/test/base/ui_test_utils.h"
|
| +#include "content/public/browser/render_frame_host.h"
|
| #include "content/public/common/content_switches.h"
|
| +#include "mojo/public/cpp/bindings/binding.h"
|
| #include "net/test/embedded_test_server/embedded_test_server.h"
|
| +#include "services/shell/public/cpp/interface_registry.h"
|
| +#include "third_party/WebKit/public/platform/modules/app_banner/app_banner.mojom.h"
|
|
|
| namespace banners {
|
|
|
| @@ -33,6 +37,12 @@ class AppBannerManagerTest : public AppBannerManager {
|
| : AppBannerManager(web_contents) {}
|
| ~AppBannerManagerTest() override {}
|
|
|
| + void BindHandle(mojo::ScopedMessagePipeHandle handle) {
|
| + binding_.reset(new mojo::Binding<blink::mojom::AppBannerService>(
|
| + this,
|
| + mojo::MakeRequest<blink::mojom::AppBannerService>(std::move(handle))));
|
| + }
|
| +
|
| bool will_show() { return will_show_.get() && *will_show_; }
|
|
|
| bool is_active() { return AppBannerManager::is_active(); }
|
| @@ -83,6 +93,8 @@ class AppBannerManagerTest : public AppBannerManager {
|
| private:
|
| bool IsDebugMode() const override { return false; }
|
|
|
| + std::unique_ptr<mojo::Binding<blink::mojom::AppBannerService>> binding_;
|
| +
|
| base::Closure quit_closure_;
|
| std::unique_ptr<bool> will_show_;
|
| };
|
| @@ -104,12 +116,20 @@ class AppBannerManagerBrowserTest : public InProcessBrowserTest {
|
|
|
| protected:
|
| void RequestAppBanner(AppBannerManagerTest* manager,
|
| - const GURL& url,
|
| + content::WebContents* web_contents,
|
| base::RunLoop& run_loop,
|
| ui::PageTransition transition,
|
| bool expected_to_show) {
|
| + // Intercept the app banner Mojo requests, since
|
| + // AppBannerManager::BindToMojoRequest does not bind this test class.
|
| + web_contents->GetMainFrame()->GetInterfaceRegistry()->AddInterface(
|
| + blink::mojom::AppBannerService::Name_,
|
| + base::Bind(&AppBannerManagerTest::BindHandle,
|
| + base::Unretained(manager)));
|
| +
|
| manager->set_page_transition_(transition);
|
| - manager->RequestAppBanner(url, false, run_loop.QuitClosure());
|
| + manager->RequestAppBanner(web_contents->GetLastCommittedURL(), false,
|
| + run_loop.QuitClosure());
|
| run_loop.Run();
|
|
|
| EXPECT_EQ(expected_to_show, manager->will_show());
|
| @@ -143,8 +163,8 @@ class AppBannerManagerBrowserTest : public InProcessBrowserTest {
|
| for (unsigned int i = 1; i <= unshown_repetitions; ++i) {
|
| ui_test_utils::NavigateToURL(browser(), test_url);
|
| base::RunLoop run_loop;
|
| - RequestAppBanner(manager.get(), web_contents->GetLastCommittedURL(),
|
| - run_loop, transition, false);
|
| + RequestAppBanner(manager.get(), web_contents, run_loop, transition,
|
| + false);
|
| CheckInstallableStatusCodeHistogram(INSUFFICIENT_ENGAGEMENT, i, i);
|
| AppBannerManager::SetTimeDeltaForTesting(i);
|
| }
|
| @@ -152,8 +172,8 @@ class AppBannerManagerBrowserTest : public InProcessBrowserTest {
|
| // On the final loop, check whether the banner triggered or not as expected.
|
| ui_test_utils::NavigateToURL(browser(), test_url);
|
| base::RunLoop run_loop;
|
| - RequestAppBanner(manager.get(), web_contents->GetLastCommittedURL(),
|
| - run_loop, transition, expected_to_show);
|
| + RequestAppBanner(manager.get(), web_contents, run_loop, transition,
|
| + expected_to_show);
|
| // Navigate to ensure the InstallableStatusCodeHistogram is logged.
|
| ui_test_utils::NavigateToURL(browser(), GURL("about:blank"));
|
| CheckInstallableStatusCodeHistogram(expected_code_for_histogram, 1,
|
| @@ -280,8 +300,8 @@ IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
|
| {
|
| base::RunLoop run_loop;
|
| ui_test_utils::NavigateToURL(browser(), test_url);
|
| - RequestAppBanner(manager.get(), web_contents->GetLastCommittedURL(),
|
| - run_loop, ui::PAGE_TRANSITION_TYPED, false);
|
| + RequestAppBanner(manager.get(), web_contents, run_loop,
|
| + ui::PAGE_TRANSITION_TYPED, false);
|
| CheckInstallableStatusCodeHistogram(INSUFFICIENT_ENGAGEMENT, 1, 1);
|
| EXPECT_FALSE(manager->need_to_log_status());
|
| }
|
| @@ -290,8 +310,8 @@ IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
|
| {
|
| base::RunLoop run_loop;
|
| ui_test_utils::NavigateToURL(browser(), test_url);
|
| - RequestAppBanner(manager.get(), web_contents->GetLastCommittedURL(),
|
| - run_loop, ui::PAGE_TRANSITION_LINK, false);
|
| + RequestAppBanner(manager.get(), web_contents, run_loop,
|
| + ui::PAGE_TRANSITION_LINK, false);
|
| CheckInstallableStatusCodeHistogram(INSUFFICIENT_ENGAGEMENT, 2, 2);
|
| EXPECT_FALSE(manager->need_to_log_status());
|
| AppBannerManager::SetTimeDeltaForTesting(1);
|
| @@ -301,8 +321,8 @@ IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
|
| {
|
| base::RunLoop run_loop;
|
| ui_test_utils::NavigateToURL(browser(), test_url);
|
| - RequestAppBanner(manager.get(), web_contents->GetLastCommittedURL(),
|
| - run_loop, ui::PAGE_TRANSITION_MANUAL_SUBFRAME, false);
|
| + RequestAppBanner(manager.get(), web_contents, run_loop,
|
| + ui::PAGE_TRANSITION_MANUAL_SUBFRAME, false);
|
| CheckInstallableStatusCodeHistogram(INSUFFICIENT_ENGAGEMENT, 3, 3);
|
| EXPECT_FALSE(manager->need_to_log_status());
|
| }
|
| @@ -311,8 +331,8 @@ IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
|
| {
|
| base::RunLoop run_loop;
|
| ui_test_utils::NavigateToURL(browser(), test_url);
|
| - RequestAppBanner(manager.get(), web_contents->GetLastCommittedURL(),
|
| - run_loop, ui::PAGE_TRANSITION_GENERATED, false);
|
| + RequestAppBanner(manager.get(), web_contents, run_loop,
|
| + ui::PAGE_TRANSITION_GENERATED, false);
|
| CheckInstallableStatusCodeHistogram(INSUFFICIENT_ENGAGEMENT, 4, 4);
|
| EXPECT_FALSE(manager->need_to_log_status());
|
| AppBannerManager::SetTimeDeltaForTesting(2);
|
| @@ -322,8 +342,8 @@ IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
|
| {
|
| base::RunLoop run_loop;
|
| ui_test_utils::NavigateToURL(browser(), test_url);
|
| - RequestAppBanner(manager.get(), web_contents->GetLastCommittedURL(),
|
| - run_loop, ui::PAGE_TRANSITION_GENERATED, false);
|
| + RequestAppBanner(manager.get(), web_contents, run_loop,
|
| + ui::PAGE_TRANSITION_GENERATED, false);
|
| CheckInstallableStatusCodeHistogram(INSUFFICIENT_ENGAGEMENT, 5, 5);
|
| EXPECT_FALSE(manager->need_to_log_status());
|
| AppBannerManager::SetTimeDeltaForTesting(3);
|
| @@ -333,8 +353,8 @@ IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
|
| {
|
| base::RunLoop run_loop;
|
| ui_test_utils::NavigateToURL(browser(), test_url);
|
| - RequestAppBanner(manager.get(), web_contents->GetLastCommittedURL(),
|
| - run_loop, ui::PAGE_TRANSITION_FORM_SUBMIT, false);
|
| + RequestAppBanner(manager.get(), web_contents, run_loop,
|
| + ui::PAGE_TRANSITION_FORM_SUBMIT, false);
|
| EXPECT_FALSE(manager->need_to_log_status());
|
| CheckInstallableStatusCodeHistogram(INSUFFICIENT_ENGAGEMENT, 6, 6);
|
| }
|
| @@ -343,8 +363,8 @@ IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
|
| {
|
| base::RunLoop run_loop;
|
| ui_test_utils::NavigateToURL(browser(), test_url);
|
| - RequestAppBanner(manager.get(), web_contents->GetLastCommittedURL(),
|
| - run_loop, ui::PAGE_TRANSITION_TYPED, true);
|
| + RequestAppBanner(manager.get(), web_contents, run_loop,
|
| + ui::PAGE_TRANSITION_TYPED, true);
|
| EXPECT_FALSE(manager->need_to_log_status());
|
| CheckInstallableStatusCodeHistogram(SHOWING_WEB_APP_BANNER, 1, 7);
|
| }
|
|
|