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

Unified Diff: chrome/browser/android/banners/app_banner_manager.cc

Issue 886643003: Use heuristic to work out when to prompt for app install banners. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Review feedback Created 5 years, 10 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/android/banners/app_banner_manager.cc
diff --git a/chrome/browser/android/banners/app_banner_manager.cc b/chrome/browser/android/banners/app_banner_manager.cc
index 2ece59fd98d3ec1995e1d9ff16086f85d2771c85..99d9b315c3a1b43ae201d7631b994376cac01e6b 100644
--- a/chrome/browser/android/banners/app_banner_manager.cc
+++ b/chrome/browser/android/banners/app_banner_manager.cc
@@ -69,7 +69,9 @@ void AppBannerManager::BlockBanner(JNIEnv* env,
GURL url(ConvertJavaStringToUTF8(env, jurl));
std::string package_name = ConvertJavaStringToUTF8(env, jpackage);
- AppBannerSettingsHelper::Block(web_contents(), url, package_name);
+ AppBannerSettingsHelper::RecordBannerEvent(
+ web_contents(), url, package_name,
+ AppBannerSettingsHelper::APP_BANNER_EVENT_DID_BLOCK, base::Time::Now());
}
void AppBannerManager::Block() const {
@@ -77,9 +79,10 @@ void AppBannerManager::Block() const {
return;
if (!web_app_data_.IsEmpty()) {
- AppBannerSettingsHelper::Block(web_contents(),
- web_contents()->GetURL(),
- web_app_data_.start_url.spec());
+ AppBannerSettingsHelper::RecordBannerEvent(
+ web_contents(), web_contents()->GetURL(),
+ web_app_data_.start_url.spec(),
+ AppBannerSettingsHelper::APP_BANNER_EVENT_DID_BLOCK, base::Time::Now());
}
}
@@ -92,6 +95,12 @@ bool AppBannerManager::OnButtonClicked() const {
return true;
if (!web_app_data_.IsEmpty()) {
+ AppBannerSettingsHelper::RecordBannerEvent(
+ web_contents(), web_contents()->GetURL(),
+ web_app_data_.start_url.spec(),
+ AppBannerSettingsHelper::APP_BANNER_EVENT_DID_ADD_TO_HOMESCREEN,
+ base::Time::Now());
+
InstallManifestApp(web_app_data_, *app_icon_.get());
return true;
}
@@ -183,10 +192,35 @@ void AppBannerManager::OnDidCheckHasServiceWorker(bool has_service_worker) {
if (icon_url.is_empty())
return;
+ RecordCouldShowBanner(web_app_data_.start_url.spec());
+ if (!CheckIfShouldShow(web_app_data_.start_url.spec()))
+ return;
+
FetchIcon(icon_url);
}
}
+void AppBannerManager::RecordCouldShowBanner(
+ const std::string& package_or_start_url) {
+ AppBannerSettingsHelper::RecordBannerEvent(
+ web_contents(), validated_url_, package_or_start_url,
+ AppBannerSettingsHelper::APP_BANNER_EVENT_COULD_SHOW, base::Time::Now());
+}
+
+bool AppBannerManager::CheckIfShouldShow(
+ const std::string& package_or_start_url) {
+ if (!AppBannerSettingsHelper::ShouldShowBanner(web_contents(), validated_url_,
+ package_or_start_url,
+ base::Time::Now())) {
+ return false;
+ }
+
+ AppBannerSettingsHelper::RecordBannerEvent(
+ web_contents(), validated_url_, package_or_start_url,
+ AppBannerSettingsHelper::APP_BANNER_EVENT_DID_SHOW, base::Time::Now());
+ return true;
+}
+
bool AppBannerManager::OnMessageReceived(const IPC::Message& message) {
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(AppBannerManager, message)
@@ -237,11 +271,9 @@ void AppBannerManager::OnDidRetrieveMetaTagContent(
banners::TrackDisplayEvent(DISPLAY_BANNER_REQUESTED);
- if (!AppBannerSettingsHelper::IsAllowed(web_contents(),
- expected_url,
- tag_content)) {
+ RecordCouldShowBanner(tag_content);
+ if (!CheckIfShouldShow(tag_content))
return;
- }
// Send the info to the Java side to get info about the app.
JNIEnv* env = base::android::AttachCurrentThread();
« no previous file with comments | « chrome/browser/android/banners/app_banner_manager.h ('k') | chrome/browser/banners/app_banner_settings_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698