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

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

Issue 2915623002: Permanently turn on auto-dismissing dialogs. (Closed)
Patch Set: Created 3 years, 7 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: 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 3c129ddf63df97801ae902bdb359207226d48ff3..299623b1fe9be6c4ade868ed6db2f72460474f78 100644
--- a/chrome/browser/ui/javascript_dialogs/javascript_dialog_tab_helper.cc
+++ b/chrome/browser/ui/javascript_dialogs/javascript_dialog_tab_helper.cc
@@ -14,7 +14,6 @@
#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/navigation_handle.h"
#include "content/public/browser/render_frame_host.h"
@@ -24,10 +23,6 @@ DEFINE_WEB_CONTENTS_USER_DATA_KEY(JavaScriptDialogTabHelper);
namespace {
-bool IsEnabled() {
- return base::FeatureList::IsEnabled(features::kAutoDismissingDialogs);
-}
-
app_modal::JavaScriptDialogManager* AppModalDialogManager() {
return app_modal::JavaScriptDialogManager::GetInstance();
}
@@ -133,70 +128,64 @@ void JavaScriptDialogTabHelper::RunJavaScriptDialog(
break;
}
- if (IsEnabled()) {
- if (!IsWebContentsForemost(parent_web_contents) &&
- dialog_type == content::JAVASCRIPT_DIALOG_TYPE_PROMPT) {
- // Don't allow "prompt" dialogs to steal the user's focus. TODO(avi):
- // Eventually, for subsequent phases of http://bit.ly/project-oldspice,
- // turn off focus stealing for other dialog types.
- *did_suppress_message = true;
- alerting_web_contents->GetMainFrame()->AddMessageToConsole(
- content::CONSOLE_MESSAGE_LEVEL_WARNING,
- "A window.prompt() dialog generated by this page was suppressed "
- "because this page is not the active tab of the front window. "
- "Please make sure your dialogs are triggered by user interactions "
- "to avoid this situation. "
- "https://www.chromestatus.com/feature/5637107137642496");
- return;
- }
-
- if (dialog_) {
- // There's already a dialog up; clear it out.
- CloseDialog(false, base::string16(),
- DismissalCause::SUBSEQUENT_DIALOG_SHOWN);
- }
-
- // Enforce sane sizes. ElideRectangleString breaks horizontally, which isn't
- // strictly needed, but it restricts the vertical size, which is crucial.
- // This gives about 2000 characters, which is about the same as the
- // AppModalDialogManager provides, but allows no more than 24 lines.
- const int kMessageTextMaxRows = 24;
- const int kMessageTextMaxCols = 80;
- const size_t kDefaultPromptMaxSize = 2000;
- base::string16 truncated_message_text;
- gfx::ElideRectangleString(message_text, kMessageTextMaxRows,
- kMessageTextMaxCols, false,
- &truncated_message_text);
- base::string16 truncated_default_prompt_text;
- gfx::ElideString(default_prompt_text, kDefaultPromptMaxSize,
- &truncated_default_prompt_text);
-
- base::string16 title =
- AppModalDialogManager()->GetTitle(alerting_web_contents, origin_url);
- dialog_callback_ = callback;
- dialog_type_ = dialog_type;
- dialog_ = JavaScriptDialog::Create(
- parent_web_contents, alerting_web_contents, title, dialog_type,
- truncated_message_text, truncated_default_prompt_text,
- base::Bind(&JavaScriptDialogTabHelper::OnDialogClosed,
- base::Unretained(this), 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, dialog_type, message_text,
- default_prompt_text, callback, did_suppress_message);
+ if (!IsWebContentsForemost(parent_web_contents) &&
+ dialog_type == content::JAVASCRIPT_DIALOG_TYPE_PROMPT) {
+ // Don't allow "prompt" dialogs to steal the user's focus. TODO(avi):
+ // Eventually, for subsequent phases of http://bit.ly/project-oldspice,
+ // turn off focus stealing for other dialog types.
+ *did_suppress_message = true;
+ alerting_web_contents->GetMainFrame()->AddMessageToConsole(
+ content::CONSOLE_MESSAGE_LEVEL_WARNING,
+ "A window.prompt() dialog generated by this page was suppressed "
+ "because this page is not the active tab of the front window. "
+ "Please make sure your dialogs are triggered by user interactions "
+ "to avoid this situation. "
+ "https://www.chromestatus.com/feature/5637107137642496");
+ return;
+ }
+
+ if (dialog_) {
+ // There's already a dialog up; clear it out.
+ CloseDialog(false, base::string16(),
+ DismissalCause::SUBSEQUENT_DIALOG_SHOWN);
+ }
+
+ // Enforce sane sizes. ElideRectangleString breaks horizontally, which isn't
+ // strictly needed, but it restricts the vertical size, which is crucial.
+ // This gives about 2000 characters, which is about the same as the
+ // AppModalDialogManager provides, but allows no more than 24 lines.
+ const int kMessageTextMaxRows = 24;
+ const int kMessageTextMaxCols = 80;
+ const size_t kDefaultPromptMaxSize = 2000;
+ base::string16 truncated_message_text;
+ gfx::ElideRectangleString(message_text, kMessageTextMaxRows,
+ kMessageTextMaxCols, false,
+ &truncated_message_text);
+ base::string16 truncated_default_prompt_text;
+ gfx::ElideString(default_prompt_text, kDefaultPromptMaxSize,
+ &truncated_default_prompt_text);
+
+ base::string16 title =
+ AppModalDialogManager()->GetTitle(alerting_web_contents, origin_url);
+ dialog_callback_ = callback;
+ dialog_type_ = dialog_type;
+ dialog_ = JavaScriptDialog::Create(
+ parent_web_contents, alerting_web_contents, title, dialog_type,
+ truncated_message_text, truncated_default_prompt_text,
+ base::Bind(&JavaScriptDialogTabHelper::OnDialogClosed,
+ base::Unretained(this), 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();
}
if (did_suppress_message) {
« no previous file with comments | « chrome/browser/ui/javascript_dialogs/javascript_dialog_browsertest.cc ('k') | chrome/common/chrome_features.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698