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

Side by Side Diff: chrome/browser/banners/app_banner_manager.cc

Issue 2685363002: Update AppBannerManager & AppBannerManagerAndroid to request badge icon. (Closed)
Patch Set: Addressing comments (move can_install init to constructor) 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/banners/app_banner_manager.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/banners/app_banner_manager.h" 5 #include "chrome/browser/banners/app_banner_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 18 matching lines...) Expand all
29 29
30 namespace { 30 namespace {
31 31
32 int gCurrentRequestID = -1; 32 int gCurrentRequestID = -1;
33 int gTimeDeltaInDaysForTesting = 0; 33 int gTimeDeltaInDaysForTesting = 0;
34 34
35 InstallableParams ParamsToGetManifest() { 35 InstallableParams ParamsToGetManifest() {
36 return InstallableParams(); 36 return InstallableParams();
37 } 37 }
38 38
39 // Returns an InstallableParams object that requests all checks necessary for
40 // a web app banner.
41 InstallableParams ParamsToPerformInstallableCheck(int ideal_icon_size_in_px,
42 int minimum_icon_size_in_px) {
43 InstallableParams params;
44 params.ideal_primary_icon_size_in_px = ideal_icon_size_in_px;
45 params.minimum_primary_icon_size_in_px = minimum_icon_size_in_px;
46 params.check_installable = true;
47 params.fetch_valid_primary_icon = true;
48
49 return params;
50 }
51
52 } // anonymous namespace 39 } // anonymous namespace
53 40
54 namespace banners { 41 namespace banners {
55 42
56 // static 43 // static
57 base::Time AppBannerManager::GetCurrentTime() { 44 base::Time AppBannerManager::GetCurrentTime() {
58 return base::Time::Now() + 45 return base::Time::Now() +
59 base::TimeDelta::FromDays(gTimeDeltaInDaysForTesting); 46 base::TimeDelta::FromDays(gTimeDeltaInDaysForTesting);
60 } 47 }
61 48
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 } 177 }
191 178
192 std::string AppBannerManager::GetStatusParam(InstallableStatusCode code) { 179 std::string AppBannerManager::GetStatusParam(InstallableStatusCode code) {
193 if (code == NO_ACCEPTABLE_ICON || code == MANIFEST_MISSING_SUITABLE_ICON) { 180 if (code == NO_ACCEPTABLE_ICON || code == MANIFEST_MISSING_SUITABLE_ICON) {
194 return base::IntToString(InstallableManager::GetMinimumIconSizeInPx()); 181 return base::IntToString(InstallableManager::GetMinimumIconSizeInPx());
195 } 182 }
196 183
197 return std::string(); 184 return std::string();
198 } 185 }
199 186
200 int AppBannerManager::GetIdealIconSizeInPx() { 187 int AppBannerManager::GetIdealPrimaryIconSizeInPx() {
201 return InstallableManager::GetMinimumIconSizeInPx(); 188 return InstallableManager::GetMinimumIconSizeInPx();
202 } 189 }
203 190
204 int AppBannerManager::GetMinimumIconSizeInPx() { 191 int AppBannerManager::GetMinimumPrimaryIconSizeInPx() {
205 return InstallableManager::GetMinimumIconSizeInPx(); 192 return InstallableManager::GetMinimumIconSizeInPx();
206 } 193 }
207 194
208 base::WeakPtr<AppBannerManager> AppBannerManager::GetWeakPtr() { 195 base::WeakPtr<AppBannerManager> AppBannerManager::GetWeakPtr() {
209 return weak_factory_.GetWeakPtr(); 196 return weak_factory_.GetWeakPtr();
210 } 197 }
211 198
212 bool AppBannerManager::IsDebugMode() const { 199 bool AppBannerManager::IsDebugMode() const {
213 return is_debug_mode_ || 200 return is_debug_mode_ ||
214 base::CommandLine::ForCurrentProcess()->HasSwitch( 201 base::CommandLine::ForCurrentProcess()->HasSwitch(
(...skipping 20 matching lines...) Expand all
235 DCHECK(!data.manifest.IsEmpty()); 222 DCHECK(!data.manifest.IsEmpty());
236 223
237 manifest_url_ = data.manifest_url; 224 manifest_url_ = data.manifest_url;
238 manifest_ = data.manifest; 225 manifest_ = data.manifest;
239 app_title_ = (manifest_.name.is_null()) ? manifest_.short_name.string() 226 app_title_ = (manifest_.name.is_null()) ? manifest_.short_name.string()
240 : manifest_.name.string(); 227 : manifest_.name.string();
241 228
242 PerformInstallableCheck(); 229 PerformInstallableCheck();
243 } 230 }
244 231
232 InstallableParams AppBannerManager::ParamsToPerformInstallableCheck() {
233 InstallableParams params;
234 params.ideal_primary_icon_size_in_px = GetIdealPrimaryIconSizeInPx();
235 params.minimum_primary_icon_size_in_px = GetMinimumPrimaryIconSizeInPx();
236 params.check_installable = true;
237 params.fetch_valid_primary_icon = true;
238
239 return params;
240 }
241
245 void AppBannerManager::PerformInstallableCheck() { 242 void AppBannerManager::PerformInstallableCheck() {
246 if (!CheckIfShouldShowBanner()) 243 if (!CheckIfShouldShowBanner())
247 return; 244 return;
248 245
249 // Fetch and verify the other required information. 246 // Fetch and verify the other required information.
250 manager_->GetData(ParamsToPerformInstallableCheck(GetIdealIconSizeInPx(), 247 manager_->GetData(ParamsToPerformInstallableCheck(),
251 GetMinimumIconSizeInPx()),
252 base::Bind(&AppBannerManager::OnDidPerformInstallableCheck, 248 base::Bind(&AppBannerManager::OnDidPerformInstallableCheck,
253 GetWeakPtr())); 249 GetWeakPtr()));
254 } 250 }
255 251
256 void AppBannerManager::OnDidPerformInstallableCheck( 252 void AppBannerManager::OnDidPerformInstallableCheck(
257 const InstallableData& data) { 253 const InstallableData& data) {
258 if (data.is_installable) 254 if (data.is_installable)
259 TrackDisplayEvent(DISPLAY_EVENT_WEB_APP_BANNER_REQUESTED); 255 TrackDisplayEvent(DISPLAY_EVENT_WEB_APP_BANNER_REQUESTED);
260 256
261 if (data.error_code != NO_ERROR_DETECTED) { 257 if (data.error_code != NO_ERROR_DETECTED) {
262 if (data.error_code == NO_MATCHING_SERVICE_WORKER) 258 if (data.error_code == NO_MATCHING_SERVICE_WORKER)
263 TrackDisplayEvent(DISPLAY_EVENT_LACKS_SERVICE_WORKER); 259 TrackDisplayEvent(DISPLAY_EVENT_LACKS_SERVICE_WORKER);
264 260
265 ReportStatus(web_contents(), data.error_code); 261 ReportStatus(web_contents(), data.error_code);
266 Stop(); 262 Stop();
267 } 263 }
268 264
269 if (!is_active_) 265 if (!is_active_)
270 return; 266 return;
271 267
272 DCHECK(data.is_installable); 268 DCHECK(data.is_installable);
273 DCHECK(!data.primary_icon_url.is_empty()); 269 DCHECK(!data.primary_icon_url.is_empty());
274 DCHECK(data.primary_icon); 270 DCHECK(data.primary_icon);
275 271
276 icon_url_ = data.primary_icon_url; 272 primary_icon_url_ = data.primary_icon_url;
277 icon_.reset(new SkBitmap(*data.primary_icon)); 273 primary_icon_.reset(new SkBitmap(*data.primary_icon));
278 274
279 SendBannerPromptRequest(); 275 SendBannerPromptRequest();
280 } 276 }
281 277
282 void AppBannerManager::RecordDidShowBanner(const std::string& event_name) { 278 void AppBannerManager::RecordDidShowBanner(const std::string& event_name) {
283 content::WebContents* contents = web_contents(); 279 content::WebContents* contents = web_contents();
284 DCHECK(contents); 280 DCHECK(contents);
285 281
286 AppBannerSettingsHelper::RecordBannerEvent( 282 AppBannerSettingsHelper::RecordBannerEvent(
287 contents, validated_url_, GetAppIdentifier(), 283 contents, validated_url_, GetAppIdentifier(),
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
517 was_canceled_by_page_ = false; 513 was_canceled_by_page_ = false;
518 } else { 514 } else {
519 TrackBeforeInstallEvent(BEFORE_INSTALL_EVENT_NO_ACTION); 515 TrackBeforeInstallEvent(BEFORE_INSTALL_EVENT_NO_ACTION);
520 } 516 }
521 517
522 AppBannerSettingsHelper::RecordMinutesFromFirstVisitToShow( 518 AppBannerSettingsHelper::RecordMinutesFromFirstVisitToShow(
523 contents, validated_url_, GetAppIdentifier(), GetCurrentTime()); 519 contents, validated_url_, GetAppIdentifier(), GetCurrentTime());
524 520
525 DCHECK(!manifest_url_.is_empty()); 521 DCHECK(!manifest_url_.is_empty());
526 DCHECK(!manifest_.IsEmpty()); 522 DCHECK(!manifest_.IsEmpty());
527 DCHECK(!icon_url_.is_empty()); 523 DCHECK(!primary_icon_url_.is_empty());
528 DCHECK(icon_.get()); 524 DCHECK(primary_icon_.get());
529 525
530 TrackBeforeInstallEvent(BEFORE_INSTALL_EVENT_COMPLETE); 526 TrackBeforeInstallEvent(BEFORE_INSTALL_EVENT_COMPLETE);
531 ShowBanner(); 527 ShowBanner();
532 is_active_ = false; 528 is_active_ = false;
533 } 529 }
534 530
535 void AppBannerManager::DisplayAppBanner() { 531 void AppBannerManager::DisplayAppBanner() {
536 if (was_canceled_by_page_) { 532 if (was_canceled_by_page_) {
537 // Simulate a non-canceled OnBannerPromptReply to show the delayed banner. 533 // Simulate a non-canceled OnBannerPromptReply to show the delayed banner.
538 // Don't reset |was_canceled_by_page_| yet for metrics purposes. 534 // Don't reset |was_canceled_by_page_| yet for metrics purposes.
539 OnBannerPromptReply(blink::mojom::AppBannerPromptReply::NONE, referrer_); 535 OnBannerPromptReply(blink::mojom::AppBannerPromptReply::NONE, referrer_);
540 } else { 536 } else {
541 // Log that the prompt request was made for when we get the prompt reply. 537 // Log that the prompt request was made for when we get the prompt reply.
542 page_requested_prompt_ = true; 538 page_requested_prompt_ = true;
543 } 539 }
544 } 540 }
545 541
546 } // namespace banners 542 } // namespace banners
OLDNEW
« no previous file with comments | « chrome/browser/banners/app_banner_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698