OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/tab_contents/tab_contents.h" | 5 #include "chrome/browser/tab_contents/tab_contents.h" |
6 | 6 |
7 #include <cmath> | 7 #include <cmath> |
8 | 8 |
9 #include "app/l10n_util.h" | 9 #include "app/l10n_util.h" |
10 #include "app/resource_bundle.h" | 10 #include "app/resource_bundle.h" |
(...skipping 2736 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2747 const GURL& frame_url, | 2747 const GURL& frame_url, |
2748 const int flags, | 2748 const int flags, |
2749 IPC::Message* reply_msg, | 2749 IPC::Message* reply_msg, |
2750 bool* did_suppress_message) { | 2750 bool* did_suppress_message) { |
2751 // Suppress javascript messages when requested and when inside a constrained | 2751 // Suppress javascript messages when requested and when inside a constrained |
2752 // popup window (because that activates them and breaks them out of the | 2752 // popup window (because that activates them and breaks them out of the |
2753 // constrained window jail). | 2753 // constrained window jail). |
2754 // Also suppress messages when showing an interstitial. The interstitial is | 2754 // Also suppress messages when showing an interstitial. The interstitial is |
2755 // shown over the previous page, we don't want the hidden page dialogs to | 2755 // shown over the previous page, we don't want the hidden page dialogs to |
2756 // interfere with the interstitial. | 2756 // interfere with the interstitial. |
2757 bool suppress_this_message = suppress_javascript_messages_ || | 2757 bool suppress_this_message = |
2758 showing_interstitial_page(); | 2758 suppress_javascript_messages_ || |
| 2759 showing_interstitial_page() || |
| 2760 (delegate() && delegate()->ShouldSuppressDialogs()); |
2759 if (delegate()) | 2761 if (delegate()) |
2760 suppress_this_message |= | 2762 suppress_this_message |= |
2761 (delegate()->GetConstrainingContents(this) != this); | 2763 (delegate()->GetConstrainingContents(this) != this); |
2762 | 2764 |
2763 *did_suppress_message = suppress_this_message; | 2765 *did_suppress_message = suppress_this_message; |
2764 | 2766 |
2765 if (!suppress_this_message) { | 2767 if (!suppress_this_message) { |
2766 base::TimeDelta time_since_last_message( | 2768 base::TimeDelta time_since_last_message( |
2767 base::TimeTicks::Now() - last_javascript_message_dismissal_); | 2769 base::TimeTicks::Now() - last_javascript_message_dismissal_); |
2768 bool show_suppress_checkbox = false; | 2770 bool show_suppress_checkbox = false; |
2769 // Show a checkbox offering to suppress further messages if this message is | 2771 // Show a checkbox offering to suppress further messages if this message is |
2770 // being displayed within kJavascriptMessageExpectedDelay of the last one. | 2772 // being displayed within kJavascriptMessageExpectedDelay of the last one. |
2771 if (time_since_last_message < | 2773 if (time_since_last_message < |
2772 base::TimeDelta::FromMilliseconds(kJavascriptMessageExpectedDelay)) | 2774 base::TimeDelta::FromMilliseconds(kJavascriptMessageExpectedDelay)) |
2773 show_suppress_checkbox = true; | 2775 show_suppress_checkbox = true; |
2774 | 2776 |
2775 RunJavascriptMessageBox(profile(), this, frame_url, flags, message, | 2777 RunJavascriptMessageBox(profile(), this, frame_url, flags, message, |
2776 default_prompt, show_suppress_checkbox, reply_msg); | 2778 default_prompt, show_suppress_checkbox, reply_msg); |
2777 } else { | 2779 } else { |
2778 // If we are suppressing messages, just reply as is if the user immediately | 2780 // If we are suppressing messages, just reply as is if the user immediately |
2779 // pressed "Cancel". | 2781 // pressed "Cancel". |
2780 OnMessageBoxClosed(reply_msg, false, std::wstring()); | 2782 OnMessageBoxClosed(reply_msg, false, std::wstring()); |
2781 } | 2783 } |
2782 } | 2784 } |
2783 | 2785 |
2784 void TabContents::RunBeforeUnloadConfirm(const std::wstring& message, | 2786 void TabContents::RunBeforeUnloadConfirm(const std::wstring& message, |
2785 IPC::Message* reply_msg) { | 2787 IPC::Message* reply_msg) { |
| 2788 if (delegate() && delegate()->ShouldSuppressDialogs()) { |
| 2789 render_view_host()->JavaScriptMessageBoxClosed(reply_msg, true, |
| 2790 std::wstring()); |
| 2791 return; |
| 2792 } |
2786 is_showing_before_unload_dialog_ = true; | 2793 is_showing_before_unload_dialog_ = true; |
2787 RunBeforeUnloadDialog(this, message, reply_msg); | 2794 RunBeforeUnloadDialog(this, message, reply_msg); |
2788 } | 2795 } |
2789 | 2796 |
2790 void TabContents::ShowModalHTMLDialog(const GURL& url, int width, int height, | 2797 void TabContents::ShowModalHTMLDialog(const GURL& url, int width, int height, |
2791 const std::string& json_arguments, | 2798 const std::string& json_arguments, |
2792 IPC::Message* reply_msg) { | 2799 IPC::Message* reply_msg) { |
2793 if (delegate()) { | 2800 if (delegate()) { |
2794 HtmlDialogUIDelegate* dialog_delegate = | 2801 HtmlDialogUIDelegate* dialog_delegate = |
2795 new ModalHtmlDialogDelegate(url, width, height, json_arguments, | 2802 new ModalHtmlDialogDelegate(url, width, height, json_arguments, |
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3236 } | 3243 } |
3237 | 3244 |
3238 void TabContents::set_encoding(const std::string& encoding) { | 3245 void TabContents::set_encoding(const std::string& encoding) { |
3239 encoding_ = CharacterEncoding::GetCanonicalEncodingNameByAliasName(encoding); | 3246 encoding_ = CharacterEncoding::GetCanonicalEncodingNameByAliasName(encoding); |
3240 } | 3247 } |
3241 | 3248 |
3242 void TabContents::SetAppIcon(const SkBitmap& app_icon) { | 3249 void TabContents::SetAppIcon(const SkBitmap& app_icon) { |
3243 app_icon_ = app_icon; | 3250 app_icon_ = app_icon; |
3244 NotifyNavigationStateChanged(INVALIDATE_TITLE); | 3251 NotifyNavigationStateChanged(INVALIDATE_TITLE); |
3245 } | 3252 } |
OLD | NEW |