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

Unified Diff: components/app_modal/javascript_app_modal_dialog.cc

Issue 1638013002: Add UMA histograms to track very brief or frequent tabs and JS dialogs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rename histograms; ignore blocked JS dialogs Created 4 years, 11 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: components/app_modal/javascript_app_modal_dialog.cc
diff --git a/components/app_modal/javascript_app_modal_dialog.cc b/components/app_modal/javascript_app_modal_dialog.cc
index 8db59363f1730f6a1c01e793aa568045ac5ebcb1..8485704b792ca63d18744a47faf6e72dc440ccae 100644
--- a/components/app_modal/javascript_app_modal_dialog.cc
+++ b/components/app_modal/javascript_app_modal_dialog.cc
@@ -4,6 +4,8 @@
#include "components/app_modal/javascript_app_modal_dialog.h"
+#include "base/metrics/histogram_macros.h"
+#include "base/time/time.h"
#include "build/build_config.h"
#include "components/app_modal/javascript_dialog_manager.h"
#include "components/app_modal/javascript_native_dialog_factory.h"
@@ -72,7 +74,8 @@ JavaScriptAppModalDialog::JavaScriptAppModalDialog(
is_before_unload_dialog_(is_before_unload_dialog),
is_reload_(is_reload),
callback_(callback),
- use_override_prompt_text_(false) {
+ use_override_prompt_text_(false),
+ creation_time_(base::TimeTicks::Now()) {
EnforceMaxTextSize(message_text, &message_text_);
EnforceMaxPromptSize(default_prompt_text, &default_prompt_text_);
}
@@ -95,10 +98,7 @@ void JavaScriptAppModalDialog::Invalidate() {
return;
AppModalDialog::Invalidate();
- if (!callback_.is_null()) {
- callback_.Run(false, base::string16());
- callback_.Reset();
- }
+ CallDialogClosedCallback(false, base::string16());
if (native_dialog())
CloseModalDialog();
}
@@ -142,12 +142,9 @@ void JavaScriptAppModalDialog::NotifyDelegate(bool success,
if (!IsValid())
return;
- if (!callback_.is_null()) {
- callback_.Run(success, user_input);
- callback_.Reset();
- }
+ CallDialogClosedCallback(success, user_input);
- // The callback_ above may delete web_contents_, thus removing the extra
+ // The close callback above may delete web_contents_, thus removing the extra
// data from the map owned by ::JavaScriptDialogManager. Make sure
// to only use the data if still present. http://crbug.com/236476
ExtraDataMap::iterator extra_data =
@@ -162,6 +159,20 @@ void JavaScriptAppModalDialog::NotifyDelegate(bool success,
AppModalDialog::Invalidate();
}
+void JavaScriptAppModalDialog::CallDialogClosedCallback(bool success,
+ const base::string16& user_input) {
+ // TODO(joenotcharles): Both the callers of this function also check IsValid
+ // and call AppModalDialog::Invalidate, but in different orders. If the
+ // difference is not significant, more common code could be moved here.
Avi (use Gerrit) 2016/01/30 04:41:31 It's probably not significant, but I'm not 100% su
+ UMA_HISTOGRAM_MEDIUM_TIMES(
+ "JSDialogs.FineTiming.TimeBetweenDialogCreatedAndSameDialogClosed",
+ base::TimeTicks::Now() - creation_time_);
+ if (!callback_.is_null()) {
+ callback_.Run(success, user_input);
+ callback_.Reset();
+ }
+}
+
// static
std::string JavaScriptAppModalDialog::GetSerializedOriginForWebContents(
content::WebContents* contents) {
« no previous file with comments | « components/app_modal/javascript_app_modal_dialog.h ('k') | components/app_modal/javascript_dialog_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698