Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(352)

Unified Diff: chrome/browser/banners/app_banner_manager_browsertest.cc

Issue 2393513004: Convert app banners to use Mojo. (Closed)
Patch Set: Fix Win clang compile Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
}

Powered by Google App Engine
This is Rietveld 408576698