Commit a8de4aa7 authored by davidben@chromium.org's avatar davidben@chromium.org

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
parent 52191e1e
......@@ -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()->
......
......@@ -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"/>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment