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

Unified Diff: chrome/browser/ui/javascript_dialogs/javascript_dialog_tab_helper.cc

Issue 2455973006: Prevent popunders with the new auto-dismissing dialogs. (Closed)
Patch Set: with test Created 4 years, 1 month 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: 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,

Powered by Google App Engine
This is Rietveld 408576698