diff options
author | Cait Phillips <caitkp@chromium.org> | 2016-02-23 19:05:12 -0500 |
---|---|---|
committer | Cait Phillips <caitkp@chromium.org> | 2016-02-24 00:07:19 +0000 |
commit | 7c2861286c40e3cdca7ce260a5bba1ee7ecb349d (patch) | |
tree | 575a145e3d64c0f6dc1050f7c98e4aaea45beb04 /components/app_modal | |
parent | 6f845317f943190dff1bb4cf0db814e1882da834 (diff) | |
download | chromium_src-7c2861286c40e3cdca7ce260a5bba1ee7ecb349d.zip chromium_src-7c2861286c40e3cdca7ce260a5bba1ee7ecb349d.tar.gz chromium_src-7c2861286c40e3cdca7ce260a5bba1ee7ecb349d.tar.bz2 |
Include suppressed dialogs in the FineTiming histogram
Review URL: https://codereview.chromium.org/1688183002
Cr-Commit-Position: refs/heads/master@{#374920}
(cherry picked from commit 505f421d0a73adae4f74924b3022996c731de40e)
BUG=588833
Review URL: https://codereview.chromium.org/1732563002 .
Cr-Commit-Position: refs/branch-heads/2623@{#488}
Cr-Branched-From: 92d77538a86529ca35f9220bd3cd512cbea1f086-refs/heads/master@{#369907}
Diffstat (limited to 'components/app_modal')
-rw-r--r-- | components/app_modal/javascript_app_modal_dialog.cc | 3 | ||||
-rw-r--r-- | components/app_modal/javascript_app_modal_dialog.h | 3 | ||||
-rw-r--r-- | components/app_modal/javascript_dialog_manager.cc | 15 |
3 files changed, 20 insertions, 1 deletions
diff --git a/components/app_modal/javascript_app_modal_dialog.cc b/components/app_modal/javascript_app_modal_dialog.cc index d494081..92ee660 100644 --- a/components/app_modal/javascript_app_modal_dialog.cc +++ b/components/app_modal/javascript_app_modal_dialog.cc @@ -52,7 +52,8 @@ void EnforceMaxPromptSize(const base::string16& in_string, ChromeJavaScriptDialogExtraData::ChromeJavaScriptDialogExtraData() : has_already_shown_a_dialog_(false), - suppress_javascript_messages_(false) {} + suppress_javascript_messages_(false), + suppressed_dialog_count_(0) {} JavaScriptAppModalDialog::JavaScriptAppModalDialog( content::WebContents* web_contents, diff --git a/components/app_modal/javascript_app_modal_dialog.h b/components/app_modal/javascript_app_modal_dialog.h index fca11c2..0fb4d89 100644 --- a/components/app_modal/javascript_app_modal_dialog.h +++ b/components/app_modal/javascript_app_modal_dialog.h @@ -25,6 +25,9 @@ class ChromeJavaScriptDialogExtraData { // True if the user has decided to block future JavaScript dialogs. bool suppress_javascript_messages_; + + // Number of dialogs from the origin that were suppressed. + int suppressed_dialog_count_; }; // A controller + model class for JavaScript alert, confirm, prompt, and diff --git a/components/app_modal/javascript_dialog_manager.cc b/components/app_modal/javascript_dialog_manager.cc index 0fcfb92..3dc5516 100644 --- a/components/app_modal/javascript_dialog_manager.cc +++ b/components/app_modal/javascript_dialog_manager.cc @@ -94,6 +94,21 @@ void JavaScriptDialogManager::RunJavaScriptDialog( &javascript_dialog_extra_data_[web_contents]; if (extra_data->suppress_javascript_messages_) { + // If a page tries to open dialogs in a tight loop, the number of + // suppressions logged can grow out of control. Arbitrarily cap the number + // logged at 100. That many suppressed dialogs is enough to indicate the + // page is doing something very hinky. + if (extra_data->suppressed_dialog_count_ < 100) { + // Log a suppressed dialog as one that opens and then closes immediately. + UMA_HISTOGRAM_MEDIUM_TIMES( + "JSDialogs.FineTiming.TimeBetweenDialogCreatedAndSameDialogClosed", + base::TimeDelta()); + + // Only increment the count if it's not already at the limit, to prevent + // overflow. + extra_data->suppressed_dialog_count_++; + } + *did_suppress_message = true; return; } |