Index: chrome/browser/ui/javascript_dialogs/javascript_dialog_tab_helper.cc |
diff --git a/chrome/browser/ui/javascript_dialogs/javascript_dialog_tab_helper.cc b/chrome/browser/ui/javascript_dialogs/javascript_dialog_tab_helper.cc |
index 3303de24286487c73c67c012bef91f419e97f612..dd52e788c6c634380fed2c5ca9a9966a4076e6e1 100644 |
--- a/chrome/browser/ui/javascript_dialogs/javascript_dialog_tab_helper.cc |
+++ b/chrome/browser/ui/javascript_dialogs/javascript_dialog_tab_helper.cc |
@@ -5,6 +5,7 @@ |
#include "chrome/browser/ui/javascript_dialogs/javascript_dialog_tab_helper.h" |
#include "base/bind.h" |
+#include "base/callback.h" |
#include "base/feature_list.h" |
#include "base/metrics/histogram_macros.h" |
#include "chrome/browser/engagement/site_engagement_service.h" |
@@ -13,18 +14,15 @@ |
#include "chrome/browser/ui/browser_list.h" |
#include "chrome/browser/ui/tab_modal_confirm_dialog.h" |
#include "chrome/browser/ui/tabs/tab_strip_model.h" |
+#include "chrome/common/chrome_features.h" |
#include "components/app_modal/javascript_dialog_manager.h" |
-#include "content/public/browser/web_contents_delegate.h" |
DEFINE_WEB_CONTENTS_USER_DATA_KEY(JavaScriptDialogTabHelper); |
namespace { |
-const base::Feature kAutoDismissingDialogsFeature{ |
- "AutoDismissingDialogs", base::FEATURE_DISABLED_BY_DEFAULT}; |
- |
bool IsEnabled() { |
- return base::FeatureList::IsEnabled(kAutoDismissingDialogsFeature); |
+ return base::FeatureList::IsEnabled(features::kAutoDismissingDialogs); |
} |
app_modal::JavaScriptDialogManager* AppModalDialogManager() { |
@@ -47,6 +45,11 @@ JavaScriptDialogTabHelper::JavaScriptDialogTabHelper( |
JavaScriptDialogTabHelper::~JavaScriptDialogTabHelper() { |
} |
+void JavaScriptDialogTabHelper::SetDialogShownCallbackForTesting( |
+ base::Closure callback) { |
+ dialog_shown_ = callback; |
+} |
+ |
void JavaScriptDialogTabHelper::RunJavaScriptDialog( |
content::WebContents* alerting_web_contents, |
const GURL& origin_url, |
@@ -91,21 +94,25 @@ void JavaScriptDialogTabHelper::RunJavaScriptDialog( |
CloseDialog(false, false, base::string16()); |
} |
- parent_web_contents->GetDelegate()->ActivateContents(parent_web_contents); |
- |
base::string16 title = |
AppModalDialogManager()->GetTitle(alerting_web_contents, origin_url); |
dialog_callback_ = callback; |
- BrowserList::AddObserver(this); |
dialog_ = JavaScriptDialog::Create( |
parent_web_contents, alerting_web_contents, title, message_type, |
message_text, default_prompt_text, callback); |
+ BrowserList::AddObserver(this); |
+ |
// Message suppression is something that we don't give the user a checkbox |
// for any more. It was useful back in the day when dialogs were app-modal |
// and clicking the checkbox was the only way to escape a loop that the page |
// was doing, but now the user can just close the page. |
*did_suppress_message = false; |
+ |
+ if (!dialog_shown_.is_null()) { |
+ dialog_shown_.Run(); |
+ dialog_shown_.Reset(); |
+ } |
} else { |
AppModalDialogManager()->RunJavaScriptDialog( |
alerting_web_contents, origin_url, message_type, message_text, |