summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordavidben@chromium.org <davidben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-05 04:37:50 +0000
committerdavidben@chromium.org <davidben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-05 04:37:50 +0000
commita8de4aa7b39ed63862ef5c03fbde21fc0727ea5c (patch)
tree4349b7a4d0431e86937366e766c0128705c14e9d
parent52191e1e366bb2fa8b6e165a522b9aff37f25bce (diff)
downloadchromium_src-a8de4aa7b39ed63862ef5c03fbde21fc0727ea5c.zip
chromium_src-a8de4aa7b39ed63862ef5c03fbde21fc0727ea5c.tar.gz
chromium_src-a8de4aa7b39ed63862ef5c03fbde21fc0727ea5c.tar.bz2
Add UMA histogram for suppressed dialogs on prerender swap.
Get statistics on how often OnCloseWebContentsDeleter would have showed a dialog, presumably for onbeforeunload, just to see how often this actually occurs. BUG=304932 Review URL: https://codereview.chromium.org/58053002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@232908 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/prerender/prerender_manager.cc13
-rw-r--r--tools/metrics/histograms/histograms.xml21
2 files changed, 31 insertions, 3 deletions
diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc
index 954edb5..14f93c2 100644
--- a/chrome/browser/prerender/prerender_manager.cc
+++ b/chrome/browser/prerender/prerender_manager.cc
@@ -160,7 +160,8 @@ class PrerenderManager::OnCloseWebContentsDeleter
OnCloseWebContentsDeleter(PrerenderManager* manager,
WebContents* tab)
: manager_(manager),
- tab_(tab) {
+ tab_(tab),
+ suppressed_dialog_(false) {
tab_->SetDelegate(this);
base::MessageLoop::current()->PostDelayedTask(FROM_HERE,
base::Bind(&OnCloseWebContentsDeleter::ScheduleWebContentsForDeletion,
@@ -179,6 +180,9 @@ class PrerenderManager::OnCloseWebContentsDeleter
}
virtual bool ShouldSuppressDialogs() OVERRIDE {
+ // Use this as a proxy for getting statistics on how often we fail to honor
+ // the beforeunload event.
+ suppressed_dialog_ = true;
return true;
}
@@ -186,13 +190,17 @@ class PrerenderManager::OnCloseWebContentsDeleter
static const int kDeleteWithExtremePrejudiceSeconds = 3;
void ScheduleWebContentsForDeletion(bool timeout) {
+ UMA_HISTOGRAM_BOOLEAN("Prerender.TabContentsDeleterTimeout", timeout);
+ UMA_HISTOGRAM_BOOLEAN("Prerender.TabContentsDeleterSuppressedDialog",
+ suppressed_dialog_);
tab_->SetDelegate(NULL);
manager_->ScheduleDeleteOldWebContents(tab_.release(), this);
- UMA_HISTOGRAM_BOOLEAN("Prerender.TabContentsDeleterTimeout", timeout);
+ // |this| is deleted at this point.
}
PrerenderManager* manager_;
scoped_ptr<WebContents> tab_;
+ bool suppressed_dialog_;
DISALLOW_COPY_AND_ASSIGN(OnCloseWebContentsDeleter);
};
@@ -584,6 +592,7 @@ bool PrerenderManager::MaybeUsePrerenderedPage(const GURL& url,
if (old_web_contents->NeedToFireBeforeUnload()) {
// Schedule the delete to occur after the tab has run its unload handlers.
+ // TODO(davidben): Honor the beforeunload event. http://crbug.com/304932
on_close_web_contents_deleters_.push_back(
new OnCloseWebContentsDeleter(this, old_web_contents));
old_web_contents->GetRenderViewHost()->
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index a41e4c6..2b8e076 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -13880,7 +13880,16 @@ other types of suffix sets.
</summary>
</histogram>
-<histogram name="Prerender.TabContentsDeleterTimeout">
+<histogram name="Prerender.TabContentsDeleterSuppressedDialog"
+ enum="BooleanSuppressed">
+ <summary>
+ A boolean that indicates how often we suppress a dialog from a tab when
+ swapping it with a prerender.
+ </summary>
+</histogram>
+
+<histogram name="Prerender.TabContentsDeleterTimeout"
+ enum="BooleanCloseTimeout">
<summary>
A boolean that indicates how often we fail to delete an old prerendered tab
before the timeout.
@@ -20378,6 +20387,11 @@ other types of suffix sets.
<int value="1" label="Attempted"/>
</enum>
+<enum name="BooleanCloseTimeout" type="int">
+ <int value="0" label="Closed normally"/>
+ <int value="1" label="Timed out"/>
+</enum>
+
<enum name="BooleanCommonNameMatch" type="int">
<int value="0" label="subjectAltName used"/>
<int value="1" label="Common Name used"/>
@@ -20473,6 +20487,11 @@ other types of suffix sets.
<int value="1" label="Success"/>
</enum>
+<enum name="BooleanSuppressed" type="int">
+ <int value="0" label="No suppressions"/>
+ <int value="1" label="Suppressed"/>
+</enum>
+
<enum name="BooleanTabDiscard" type="int">
<int value="0" label="Memory OK, no discards"/>
<int value="1" label="Memory low, tabs discarded"/>