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

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

Issue 2685363002: Update AppBannerManager & AppBannerManagerAndroid to request badge icon. (Closed)
Patch Set: Created 3 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/banners/app_banner_manager.cc
diff --git a/chrome/browser/banners/app_banner_manager.cc b/chrome/browser/banners/app_banner_manager.cc
index 98e0964741bbce168defece1ac6ead560c5f579d..0db84856da516b24884a3c4f90592eb25999307f 100644
--- a/chrome/browser/banners/app_banner_manager.cc
+++ b/chrome/browser/banners/app_banner_manager.cc
@@ -29,8 +29,10 @@
namespace {
-int gCurrentRequestID = -1;
-int gTimeDeltaInDaysForTesting = 0;
+const int kInvalidIdealBadgeIconSizeInPx = -1;
+
+int g_current_request_id = -1;
dominickn 2017/02/14 00:01:16 The change to this is unrelated to this CL. Can yo
F 2017/02/14 19:22:42 Done.
+int g_time_delta_in_days_for_testing = 0;
InstallableParams ParamsToGetManifest() {
return InstallableParams();
@@ -38,14 +40,20 @@ InstallableParams ParamsToGetManifest() {
// Returns an InstallableParams object that requests all checks necessary for
// a web app banner.
-InstallableParams ParamsToPerformInstallableCheck(int ideal_icon_size_in_px,
- int minimum_icon_size_in_px) {
+InstallableParams ParamsToPerformInstallableCheck(
+ int ideal_primary_icon_size_in_px,
+ int minimum_primary_icon_size_in_px,
+ int ideal_badge_icon_size_in_px) {
InstallableParams params;
- params.ideal_primary_icon_size_in_px = ideal_icon_size_in_px;
- params.minimum_primary_icon_size_in_px = minimum_icon_size_in_px;
+ params.ideal_primary_icon_size_in_px = ideal_primary_icon_size_in_px;
+ params.minimum_primary_icon_size_in_px = minimum_primary_icon_size_in_px;
params.check_installable = true;
params.fetch_valid_primary_icon = true;
-
+ if (ideal_badge_icon_size_in_px != kInvalidIdealBadgeIconSizeInPx) {
+ params.fetch_valid_badge_icon = true;
+ params.ideal_badge_icon_size_in_px = ideal_badge_icon_size_in_px;
+ params.minimum_badge_icon_size_in_px = ideal_badge_icon_size_in_px;
+ }
return params;
}
@@ -56,12 +64,12 @@ namespace banners {
// static
base::Time AppBannerManager::GetCurrentTime() {
return base::Time::Now() +
- base::TimeDelta::FromDays(gTimeDeltaInDaysForTesting);
+ base::TimeDelta::FromDays(g_time_delta_in_days_for_testing);
}
// static
void AppBannerManager::SetTimeDeltaForTesting(int days) {
- gTimeDeltaInDaysForTesting = days;
+ g_time_delta_in_days_for_testing = days;
}
// static
@@ -136,7 +144,7 @@ void AppBannerManager::OnInstall() {
}
void AppBannerManager::SendBannerAccepted(int request_id) {
- if (request_id != gCurrentRequestID)
+ if (request_id != g_current_request_id)
return;
DCHECK(event_.is_bound());
@@ -144,7 +152,7 @@ void AppBannerManager::SendBannerAccepted(int request_id) {
}
void AppBannerManager::SendBannerDismissed(int request_id) {
- if (request_id != gCurrentRequestID)
+ if (request_id != g_current_request_id)
return;
DCHECK(event_.is_bound());
@@ -197,14 +205,18 @@ std::string AppBannerManager::GetStatusParam(InstallableStatusCode code) {
return std::string();
}
-int AppBannerManager::GetIdealIconSizeInPx() {
+int AppBannerManager::GetIdealPrimaryIconSizeInPx() {
return InstallableManager::GetMinimumIconSizeInPx();
}
-int AppBannerManager::GetMinimumIconSizeInPx() {
+int AppBannerManager::GetMinimumPrimaryIconSizeInPx() {
return InstallableManager::GetMinimumIconSizeInPx();
}
+int AppBannerManager::GetIdealBadgeIconSizeInPx() {
+ return kInvalidIdealBadgeIconSizeInPx;
+}
+
base::WeakPtr<AppBannerManager> AppBannerManager::GetWeakPtr() {
return weak_factory_.GetWeakPtr();
}
@@ -247,10 +259,12 @@ void AppBannerManager::PerformInstallableCheck() {
return;
// Fetch and verify the other required information.
- manager_->GetData(ParamsToPerformInstallableCheck(GetIdealIconSizeInPx(),
- GetMinimumIconSizeInPx()),
- base::Bind(&AppBannerManager::OnDidPerformInstallableCheck,
- GetWeakPtr()));
+ manager_->GetData(
+ ParamsToPerformInstallableCheck(GetIdealPrimaryIconSizeInPx(),
+ GetMinimumPrimaryIconSizeInPx(),
+ GetIdealBadgeIconSizeInPx()),
+ base::Bind(&AppBannerManager::OnDidPerformInstallableCheck,
+ GetWeakPtr()));
}
void AppBannerManager::OnDidPerformInstallableCheck(
@@ -273,8 +287,15 @@ void AppBannerManager::OnDidPerformInstallableCheck(
DCHECK(!data.primary_icon_url.is_empty());
DCHECK(data.primary_icon);
- icon_url_ = data.primary_icon_url;
- icon_.reset(new SkBitmap(*data.primary_icon));
+ primary_icon_url_ = data.primary_icon_url;
+ primary_icon_.reset(new SkBitmap(*data.primary_icon));
+
+ if (data.badge_icon) {
+ DCHECK(!data.badge_icon_url.is_empty());
+
+ badge_icon_url_ = data.badge_icon_url;
+ badge_icon_.reset(new SkBitmap(*data.badge_icon));
+ }
SendBannerPromptRequest();
}
@@ -341,7 +362,7 @@ void AppBannerManager::SendBannerPromptRequest() {
RecordCouldShowBanner();
TrackBeforeInstallEvent(BEFORE_INSTALL_EVENT_CREATED);
- event_request_id_ = ++gCurrentRequestID;
+ event_request_id_ = ++g_current_request_id;
web_contents()->GetMainFrame()->GetRemoteInterfaces()->GetInterface(
mojo::MakeRequest(&controller_));
@@ -524,8 +545,8 @@ void AppBannerManager::OnBannerPromptReply(
DCHECK(!manifest_url_.is_empty());
DCHECK(!manifest_.IsEmpty());
- DCHECK(!icon_url_.is_empty());
- DCHECK(icon_.get());
+ DCHECK(!primary_icon_url_.is_empty());
+ DCHECK(primary_icon_.get());
TrackBeforeInstallEvent(BEFORE_INSTALL_EVENT_COMPLETE);
ShowBanner();

Powered by Google App Engine
This is Rietveld 408576698