Chromium Code Reviews| Index: chrome/browser/ui/android/javascript_app_modal_dialog_android.cc |
| diff --git a/chrome/browser/ui/android/javascript_app_modal_dialog_android.cc b/chrome/browser/ui/android/javascript_app_modal_dialog_android.cc |
| index 3c82caff4c1cdfd9f6084a63d2aea66ef6ddf6e6..5f7a18f5540b11029939a7106022efc5b67c769e 100644 |
| --- a/chrome/browser/ui/android/javascript_app_modal_dialog_android.cc |
| +++ b/chrome/browser/ui/android/javascript_app_modal_dialog_android.cc |
| @@ -8,6 +8,8 @@ |
| #include "base/android/jni_string.h" |
| #include "base/macros.h" |
| #include "base/memory/ptr_util.h" |
| +#include "base/metrics/histogram_macros.h" |
| +#include "chrome/browser/android/tab_android.h" |
| #include "chrome/browser/ui/javascript_dialogs/chrome_javascript_native_dialog_factory.h" |
| #include "components/app_modal/app_modal_dialog_queue.h" |
| #include "components/app_modal/javascript_app_modal_dialog.h" |
| @@ -46,7 +48,9 @@ void JavascriptAppModalDialogAndroid::ShowAppModalDialog() { |
| // Keep a strong ref to the parent window while we make the call to java to |
| // display the dialog. |
| ScopedJavaLocalRef<jobject> parent_jobj = parent_jobject_weak_ref_.get(env); |
| - if (parent_jobj.is_null()) { |
| + |
| + TabAndroid* tab = TabAndroid::FromWebContents(dialog_->web_contents()); |
| + if (parent_jobj.is_null() || !tab) { |
| CancelAppModalDialog(); |
| return; |
| } |
| @@ -57,13 +61,16 @@ void JavascriptAppModalDialogAndroid::ShowAppModalDialog() { |
| ScopedJavaLocalRef<jstring> message = |
| ConvertUTF16ToJavaString(env, dialog_->message_text()); |
| + bool foremost = tab->IsUserInteractable(); |
| switch (dialog_->javascript_message_type()) { |
| case content::JAVASCRIPT_MESSAGE_TYPE_ALERT: { |
| + UMA_HISTOGRAM_BOOLEAN("JSDialogs.IsForemost.Alert", foremost); |
| dialog_object = Java_JavascriptAppModalDialog_createAlertDialog( |
| env, title, message, dialog_->display_suppress_checkbox()); |
| break; |
| } |
| case content::JAVASCRIPT_MESSAGE_TYPE_CONFIRM: { |
| + UMA_HISTOGRAM_BOOLEAN("JSDialogs.IsForemost.Confirm", foremost); |
| if (dialog_->is_before_unload_dialog()) { |
| dialog_object = Java_JavascriptAppModalDialog_createBeforeUnloadDialog( |
|
Ted C
2017/01/12 01:11:39
@avi: are beforeunload handlers triggered differen
Avi (use Gerrit)
2017/01/12 01:25:38
beforeunload is a different code path on desktop;
Ted C
2017/01/13 17:32:05
Moved to the else
|
| env, title, message, dialog_->is_reload(), |
| @@ -75,6 +82,7 @@ void JavascriptAppModalDialogAndroid::ShowAppModalDialog() { |
| break; |
| } |
| case content::JAVASCRIPT_MESSAGE_TYPE_PROMPT: { |
| + UMA_HISTOGRAM_BOOLEAN("JSDialogs.IsForemost.Prompt", foremost); |
| ScopedJavaLocalRef<jstring> default_prompt_text = |
| ConvertUTF16ToJavaString(env, dialog_->default_prompt_text()); |
| dialog_object = Java_JavascriptAppModalDialog_createPromptDialog( |