Chromium Code Reviews| 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(); |