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

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

Issue 1129103003: Log messages regarding why app banners aren't displayed to the console (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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_data_fetcher.cc
diff --git a/chrome/browser/banners/app_banner_data_fetcher.cc b/chrome/browser/banners/app_banner_data_fetcher.cc
index e46110efd2e89e78b040607442028309c351dae9..c0fcb795e283e176450431c9f84ce36f230a5fb9 100644
--- a/chrome/browser/banners/app_banner_data_fetcher.cc
+++ b/chrome/browser/banners/app_banner_data_fetcher.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/banners/app_banner_data_fetcher.h"
#include "base/bind.h"
+#include "base/command_line.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/banners/app_banner_metrics.h"
@@ -14,6 +15,7 @@
#include "chrome/browser/infobars/infobar_service.h"
#include "chrome/browser/manifest/manifest_icon_selector.h"
#include "chrome/browser/profiles/profile.h"
+#include "chrome/common/chrome_switches.h"
#include "chrome/common/render_messages.h"
#include "components/infobars/core/infobar.h"
#include "components/rappor/rappor_utils.h"
@@ -71,7 +73,8 @@ AppBannerDataFetcher::AppBannerDataFetcher(
: WebContentsObserver(web_contents),
ideal_icon_size_(ideal_icon_size),
weak_delegate_(delegate),
- is_active_(false) {
+ is_active_(false),
+ log_err_(false) {
}
void AppBannerDataFetcher::Start(const GURL& validated_url) {
@@ -81,6 +84,8 @@ void AppBannerDataFetcher::Start(const GURL& validated_url) {
DCHECK(web_contents);
is_active_ = true;
+ log_err_ = base::CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kBypassAppBannerEngagementChecks);
benwells 2015/05/07 01:57:20 Nit: I think this indenting isn't quite right. Th
dominickn (DO NOT USE) 2015/05/07 05:37:24 Done.
validated_url_ = validated_url;
web_contents->GetManifest(
base::Bind(&AppBannerDataFetcher::OnDidGetManifest, this));
@@ -140,6 +145,15 @@ void AppBannerDataFetcher::OnBannerPromptReply(
blink::WebAppBannerPromptReply reply) {
content::WebContents* web_contents = GetWebContents();
if (!is_active_ || !web_contents || request_id != gCurrentRequestID) {
+ if (!is_active_)
benwells 2015/05/07 01:57:20 Nit: you need braces around all these statements a
dominickn (DO NOT USE) 2015/05/07 05:37:24 Done.
+ SendDebugMessage(
+ "Banner not shown: display pipeline halted before "
benwells 2015/05/07 01:57:20 I think 'Banner not shown' is probably a touch too
dominickn (DO NOT USE) 2015/05/07 05:37:24 Done.
+ "prompt reply checking.");
benwells 2015/05/07 01:57:20 For this error I think something like 'user naviga
dominickn (DO NOT USE) 2015/05/07 05:37:24 Done.
+ else if (!web_contents)
+ SendDebugMessage(
+ "Banner not shown: no web content available for banner display.");
benwells 2015/05/07 01:57:19 Something like 'web contents closed.' would be goo
dominickn (DO NOT USE) 2015/05/07 05:37:24 Done.
+ else if (request_id != gCurrentRequestID)
+ SendDebugMessage("Banner not shown: incorrect request id.");
benwells 2015/05/07 01:57:19 We shouldn't show the error in this case. This mea
dominickn (DO NOT USE) 2015/05/07 05:37:24 Done.
Cancel();
return;
}
@@ -148,6 +162,8 @@ void AppBannerDataFetcher::OnBannerPromptReply(
if (reply == blink::WebAppBannerPromptReply::Cancel) {
// TODO(mlamouri,benwells): we should probably record that to behave
// differently with regard to showing the banner.
+ SendDebugMessage("Banner not shown: renderer has requested the banner "
+ "prompt be cancelled.");
benwells 2015/05/07 01:57:20 Nit: indenting here is also off.
dominickn (DO NOT USE) 2015/05/07 05:37:24 Done.
Cancel();
return;
}
@@ -233,6 +249,14 @@ void AppBannerDataFetcher::OnDidGetManifest(
const content::Manifest& manifest) {
content::WebContents* web_contents = GetWebContents();
if (!is_active_ || !web_contents || manifest.IsEmpty()) {
+ if (!is_active_)
+ SendDebugMessage("Banner not shown: display pipeline halted before "
+ "manifest checking.");
+ else if (!web_contents)
+ SendDebugMessage(
+ "Banner not shown: no web content available for banner display.");
+ else if (manifest.IsEmpty())
+ SendDebugMessage("Banner not shown: manifest is empty.");
Cancel();
return;
}
@@ -248,6 +272,7 @@ void AppBannerDataFetcher::OnDidGetManifest(
}
if (!IsManifestValidForWebApp(manifest)) {
+ SendDebugMessage("Banner not shown: invalid manifest.");
benwells 2015/05/07 01:57:20 Can we move this output into IsManifestValidForWeb
dominickn (DO NOT USE) 2015/05/07 05:37:24 Done.
Cancel();
return;
}
@@ -276,6 +301,12 @@ void AppBannerDataFetcher::OnDidCheckHasServiceWorker(
bool has_service_worker) {
content::WebContents* web_contents = GetWebContents();
if (!is_active_ || !web_contents) {
+ if (!is_active_)
+ SendDebugMessage("Banner not shown: display pipeline halted before "
+ "manifest checking.");
benwells 2015/05/07 01:57:20 This code block is repeated a few times. Would be
dominickn (DO NOT USE) 2015/05/07 05:37:24 Done.
+ else if (!web_contents)
+ SendDebugMessage(
+ "Banner not shown: no web content available for banner display.");
Cancel();
return;
}
@@ -291,10 +322,13 @@ void AppBannerDataFetcher::OnDidCheckHasServiceWorker(
FetchIcon(icon_url);
return;
}
+ SendDebugMessage(
+ "Banner not shownL could not find icon specified in manifest");
} else {
TrackDisplayEvent(DISPLAY_EVENT_LACKS_SERVICE_WORKER);
}
+ SendDebugMessage("Banner not shown: no service worker detected.");
benwells 2015/05/07 01:57:20 A common cause of this will be that the site is no
dominickn (DO NOT USE) 2015/05/07 05:37:24 Done.
Cancel();
}
@@ -309,16 +343,26 @@ void AppBannerDataFetcher::OnFetchComplete(const GURL& url,
void AppBannerDataFetcher::ShowBanner(const SkBitmap* icon) {
content::WebContents* web_contents = GetWebContents();
if (!is_active_ || !web_contents || !icon) {
+ if (!is_active_)
+ SendDebugMessage(
+ "Banner not shown: display pipeline halted before banner display.");
+ else if (!web_contents)
+ SendDebugMessage(
+ "Banner not shown: no web content available for banner display.");
+ else if (!icon)
+ SendDebugMessage("Banner not shown: no icon available to display.");
Cancel();
return;
}
RecordCouldShowBanner();
if (!CheckIfShouldShowBanner()) {
+ SendDebugMessage("Banner not shown: engagement checks failed.");
Cancel();
return;
}
+ SendDebugMessage("Showing banner.");
app_icon_.reset(new SkBitmap(*icon));
web_contents->GetMainFrame()->Send(
new ChromeViewMsg_AppBannerPromptRequest(
@@ -345,6 +389,17 @@ bool AppBannerDataFetcher::CheckIfShouldShowBanner() {
web_contents, validated_url_, GetAppIdentifier(), GetCurrentTime());
}
+void AppBannerDataFetcher::SendDebugMessage(const std::string& message) {
+ if (log_err_) {
+ content::WebContents* web_contents = GetWebContents();
+ if (web_contents) {
+ web_contents->GetMainFrame()->Send(
+ new ChromeViewMsg_AppBannerDebugMessageRequest(
+ web_contents->GetMainFrame()->GetRoutingID(), message));
+ }
+ }
+}
+
// static
bool AppBannerDataFetcher::IsManifestValidForWebApp(
const content::Manifest& manifest) {

Powered by Google App Engine
This is Rietveld 408576698