| 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) {
 | 
| 
 |