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

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

Issue 2178833002: Add new app banner metrics using InstallableStatusCode. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@banner-integrate-checker-no-refptr
Patch Set: Fix histogram name Created 4 years, 4 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
« no previous file with comments | « chrome/browser/banners/app_banner_manager.cc ('k') | chrome/browser/banners/app_banner_manager_desktop.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 c4a174a8801dc04c8639af6386e00a875bc885be..157637560be3318d435787694492ba47f397605a 100644
--- a/chrome/browser/banners/app_banner_manager_browsertest.cc
+++ b/chrome/browser/banners/app_banner_manager_browsertest.cc
@@ -51,6 +51,8 @@ class AppBannerManagerTest : public AppBannerManager {
AppBannerManager::RequestAppBanner(validated_url, is_debug_mode);
}
+ bool need_to_log_status() { return need_to_log_status_; }
+
protected:
void Stop() override {
AppBannerManager::Stop();
@@ -60,6 +62,9 @@ class AppBannerManagerTest : public AppBannerManager {
}
void ShowBanner() override {
+ // Fake the call to ReportStatus here - this is usually called in
+ // platform-specific code which is not exposed here.
+ ReportStatus(nullptr, SHOWING_WEB_APP_BANNER);
ASSERT_FALSE(will_show_.get());
will_show_.reset(new bool(true));
base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, quit_closure_);
@@ -76,6 +81,8 @@ class AppBannerManagerTest : public AppBannerManager {
}
private:
+ bool IsDebugMode() const override { return false; }
+
base::Closure quit_closure_;
std::unique_ptr<bool> will_show_;
};
@@ -101,7 +108,6 @@ class AppBannerManagerBrowserTest : public InProcessBrowserTest {
base::RunLoop& run_loop,
ui::PageTransition transition,
bool expected_to_show) {
- base::HistogramTester histograms;
manager->set_page_transition_(transition);
manager->RequestAppBanner(url, false, run_loop.QuitClosure());
run_loop.Run();
@@ -110,14 +116,15 @@ class AppBannerManagerBrowserTest : public InProcessBrowserTest {
ASSERT_FALSE(manager->is_active());
// If showing the banner, ensure that the minutes histogram is recorded.
- histograms.ExpectTotalCount(banners::kMinutesHistogram,
+ histograms_.ExpectTotalCount(banners::kMinutesHistogram,
(manager->will_show() ? 1 : 0));
}
void RunBannerTest(const std::string& url,
ui::PageTransition transition,
unsigned int unshown_repetitions,
- bool expectation) {
+ InstallableStatusCode expected_code_for_histogram,
+ bool expected_to_show) {
std::string valid_page(url);
GURL test_url = embedded_test_server()->GetURL(valid_page);
content::WebContents* web_contents =
@@ -125,52 +132,70 @@ class AppBannerManagerBrowserTest : public InProcessBrowserTest {
std::unique_ptr<AppBannerManagerTest> manager(
new AppBannerManagerTest(web_contents));
- for (unsigned int i = 0; i < unshown_repetitions; ++i) {
+ 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);
- AppBannerManager::SetTimeDeltaForTesting(i + 1);
+ CheckInstallableStatusCodeHistogram(INSUFFICIENT_ENGAGEMENT, i, i);
+ AppBannerManager::SetTimeDeltaForTesting(i);
}
// 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, expectation);
+ 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,
+ unshown_repetitions + 1);
+ EXPECT_FALSE(manager->need_to_log_status());
+ }
+
+ void CheckInstallableStatusCodeHistogram(InstallableStatusCode expected_code,
+ int expected_count,
+ int total_count) {
+ histograms_.ExpectBucketCount(banners::kInstallableStatusCodeHistogram,
+ expected_code, expected_count);
+ histograms_.ExpectTotalCount(banners::kInstallableStatusCodeHistogram,
+ total_count);
}
+
+ private:
+ base::HistogramTester histograms_;
};
IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest, WebAppBannerCreatedDirect) {
RunBannerTest("/banners/manifest_test_page.html", ui::PAGE_TRANSITION_TYPED,
- 1, true);
+ 1, SHOWING_WEB_APP_BANNER, true);
}
IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
WebAppBannerCreatedDirectLargerTotal) {
AppBannerSettingsHelper::SetTotalEngagementToTrigger(4);
RunBannerTest("/banners/manifest_test_page.html", ui::PAGE_TRANSITION_TYPED,
- 3, true);
+ 3, SHOWING_WEB_APP_BANNER, true);
}
IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
WebAppBannerCreatedDirectSmallerTotal) {
AppBannerSettingsHelper::SetTotalEngagementToTrigger(1);
RunBannerTest("/banners/manifest_test_page.html", ui::PAGE_TRANSITION_TYPED,
- 0, true);
+ 0, SHOWING_WEB_APP_BANNER, true);
}
IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
WebAppBannerCreatedDirectSingle) {
AppBannerSettingsHelper::SetEngagementWeights(2, 1);
RunBannerTest("/banners/manifest_test_page.html",
- ui::PAGE_TRANSITION_GENERATED, 0, true);
+ ui::PAGE_TRANSITION_GENERATED, 0, SHOWING_WEB_APP_BANNER, true);
}
IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
WebAppBannerCreatedDirectMultiple) {
AppBannerSettingsHelper::SetEngagementWeights(0.5, 1);
RunBannerTest("/banners/manifest_test_page.html",
- ui::PAGE_TRANSITION_GENERATED, 3, true);
+ ui::PAGE_TRANSITION_GENERATED, 3, SHOWING_WEB_APP_BANNER, true);
}
IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
@@ -178,7 +203,7 @@ IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
AppBannerSettingsHelper::SetEngagementWeights(0.5, 1);
AppBannerSettingsHelper::SetTotalEngagementToTrigger(3);
RunBannerTest("/banners/manifest_test_page.html",
- ui::PAGE_TRANSITION_GENERATED, 5, true);
+ ui::PAGE_TRANSITION_GENERATED, 5, SHOWING_WEB_APP_BANNER, true);
}
IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
@@ -186,41 +211,41 @@ IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
AppBannerSettingsHelper::SetEngagementWeights(0.5, 1);
AppBannerSettingsHelper::SetTotalEngagementToTrigger(1);
RunBannerTest("/banners/manifest_test_page.html",
- ui::PAGE_TRANSITION_GENERATED, 1, true);
+ ui::PAGE_TRANSITION_GENERATED, 1, SHOWING_WEB_APP_BANNER, true);
}
IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
WebAppBannerCreatedIndirect) {
RunBannerTest("/banners/manifest_test_page.html", ui::PAGE_TRANSITION_LINK, 1,
- true);
+ SHOWING_WEB_APP_BANNER, true);
}
IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
WebAppBannerCreatedIndirectLargerTotal) {
AppBannerSettingsHelper::SetTotalEngagementToTrigger(5);
RunBannerTest("/banners/manifest_test_page.html", ui::PAGE_TRANSITION_LINK, 4,
- true);
+ SHOWING_WEB_APP_BANNER, true);
}
IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
WebAppBannerCreatedIndirectSmallerTotal) {
AppBannerSettingsHelper::SetTotalEngagementToTrigger(1);
RunBannerTest("/banners/manifest_test_page.html", ui::PAGE_TRANSITION_LINK, 0,
- true);
+ SHOWING_WEB_APP_BANNER, true);
}
IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
WebAppBannerCreatedIndirectSingle) {
AppBannerSettingsHelper::SetEngagementWeights(1, 3);
RunBannerTest("/banners/manifest_test_page.html", ui::PAGE_TRANSITION_RELOAD,
- 0, true);
+ 0, SHOWING_WEB_APP_BANNER, true);
}
IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
WebAppBannerCreatedIndirectMultiple) {
AppBannerSettingsHelper::SetEngagementWeights(1, 0.5);
RunBannerTest("/banners/manifest_test_page.html", ui::PAGE_TRANSITION_LINK, 3,
- true);
+ SHOWING_WEB_APP_BANNER, true);
}
IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
@@ -228,7 +253,7 @@ IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
AppBannerSettingsHelper::SetEngagementWeights(1, 0.5);
AppBannerSettingsHelper::SetTotalEngagementToTrigger(4);
RunBannerTest("/banners/manifest_test_page.html", ui::PAGE_TRANSITION_LINK, 7,
- true);
+ SHOWING_WEB_APP_BANNER, true);
}
IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
@@ -249,6 +274,8 @@ IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
ui_test_utils::NavigateToURL(browser(), test_url);
RequestAppBanner(manager.get(), web_contents->GetLastCommittedURL(),
run_loop, ui::PAGE_TRANSITION_TYPED, false);
+ CheckInstallableStatusCodeHistogram(INSUFFICIENT_ENGAGEMENT, 1, 1);
+ EXPECT_FALSE(manager->need_to_log_status());
}
// Add an indirect nav on day 1 which is ignored.
@@ -257,6 +284,8 @@ IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
ui_test_utils::NavigateToURL(browser(), test_url);
RequestAppBanner(manager.get(), web_contents->GetLastCommittedURL(),
run_loop, ui::PAGE_TRANSITION_LINK, false);
+ CheckInstallableStatusCodeHistogram(INSUFFICIENT_ENGAGEMENT, 2, 2);
+ EXPECT_FALSE(manager->need_to_log_status());
AppBannerManager::SetTimeDeltaForTesting(1);
}
@@ -266,6 +295,8 @@ IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
ui_test_utils::NavigateToURL(browser(), test_url);
RequestAppBanner(manager.get(), web_contents->GetLastCommittedURL(),
run_loop, ui::PAGE_TRANSITION_MANUAL_SUBFRAME, false);
+ CheckInstallableStatusCodeHistogram(INSUFFICIENT_ENGAGEMENT, 3, 3);
+ EXPECT_FALSE(manager->need_to_log_status());
}
// Add a direct nav on day 2 which overrides.
@@ -274,6 +305,8 @@ IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
ui_test_utils::NavigateToURL(browser(), test_url);
RequestAppBanner(manager.get(), web_contents->GetLastCommittedURL(),
run_loop, ui::PAGE_TRANSITION_GENERATED, false);
+ CheckInstallableStatusCodeHistogram(INSUFFICIENT_ENGAGEMENT, 4, 4);
+ EXPECT_FALSE(manager->need_to_log_status());
AppBannerManager::SetTimeDeltaForTesting(2);
}
@@ -283,6 +316,8 @@ IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
ui_test_utils::NavigateToURL(browser(), test_url);
RequestAppBanner(manager.get(), web_contents->GetLastCommittedURL(),
run_loop, ui::PAGE_TRANSITION_GENERATED, false);
+ CheckInstallableStatusCodeHistogram(INSUFFICIENT_ENGAGEMENT, 5, 5);
+ EXPECT_FALSE(manager->need_to_log_status());
AppBannerManager::SetTimeDeltaForTesting(3);
}
@@ -292,62 +327,67 @@ IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
ui_test_utils::NavigateToURL(browser(), test_url);
RequestAppBanner(manager.get(), web_contents->GetLastCommittedURL(),
run_loop, ui::PAGE_TRANSITION_FORM_SUBMIT, false);
+ EXPECT_FALSE(manager->need_to_log_status());
+ CheckInstallableStatusCodeHistogram(INSUFFICIENT_ENGAGEMENT, 6, 6);
}
+
// Add a direct nav on day 4 which should trigger the banner.
{
base::RunLoop run_loop;
ui_test_utils::NavigateToURL(browser(), test_url);
RequestAppBanner(manager.get(), web_contents->GetLastCommittedURL(),
run_loop, ui::PAGE_TRANSITION_TYPED, true);
+ EXPECT_FALSE(manager->need_to_log_status());
+ CheckInstallableStatusCodeHistogram(SHOWING_WEB_APP_BANNER, 1, 7);
}
}
IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
WebAppBannerNoTypeInManifest) {
RunBannerTest("/banners/manifest_no_type_test_page.html",
- ui::PAGE_TRANSITION_TYPED, 1, true);
+ ui::PAGE_TRANSITION_TYPED, 1, SHOWING_WEB_APP_BANNER, true);
}
IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest,
WebAppBannerNoTypeInManifestCapsExtension) {
RunBannerTest("/banners/manifest_no_type_caps_test_page.html",
- ui::PAGE_TRANSITION_TYPED, 1, true);
+ ui::PAGE_TRANSITION_TYPED, 1, SHOWING_WEB_APP_BANNER, true);
}
IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest, NoManifest) {
RunBannerTest("/banners/no_manifest_test_page.html",
- ui::PAGE_TRANSITION_TYPED, 1, false);
+ ui::PAGE_TRANSITION_TYPED, 0, NO_MANIFEST, false);
}
IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest, MissingManifest) {
- RunBannerTest("/banners/manifest_bad_link.html", ui::PAGE_TRANSITION_TYPED, 1,
- false);
+ RunBannerTest("/banners/manifest_bad_link.html", ui::PAGE_TRANSITION_TYPED, 0,
+ MANIFEST_EMPTY, false);
}
IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest, CancelBannerDirect) {
RunBannerTest("/banners/cancel_test_page.html", ui::PAGE_TRANSITION_TYPED, 1,
- false);
+ RENDERER_CANCELLED, false);
}
IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest, CancelBannerIndirect) {
AppBannerSettingsHelper::SetEngagementWeights(1, 0.5);
- RunBannerTest("/banners/cancel_test_page.html", ui::PAGE_TRANSITION_TYPED, 3,
- false);
+ RunBannerTest("/banners/cancel_test_page.html", ui::PAGE_TRANSITION_LINK, 3,
+ RENDERER_CANCELLED, false);
}
IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest, PromptBanner) {
RunBannerTest("/banners/prompt_test_page.html", ui::PAGE_TRANSITION_TYPED, 1,
- true);
+ SHOWING_WEB_APP_BANNER, true);
}
IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest, PromptBannerInHandler) {
RunBannerTest("/banners/prompt_in_handler_test_page.html",
- ui::PAGE_TRANSITION_TYPED, 1, true);
+ ui::PAGE_TRANSITION_TYPED, 1, SHOWING_WEB_APP_BANNER, true);
}
IN_PROC_BROWSER_TEST_F(AppBannerManagerBrowserTest, WebAppBannerInIFrame) {
- RunBannerTest("/banners/iframe_test_page.html", ui::PAGE_TRANSITION_TYPED, 1,
- false);
+ RunBannerTest("/banners/iframe_test_page.html", ui::PAGE_TRANSITION_TYPED, 0,
+ NO_MANIFEST, false);
}
} // namespace banners
« no previous file with comments | « chrome/browser/banners/app_banner_manager.cc ('k') | chrome/browser/banners/app_banner_manager_desktop.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698