diff options
author | avi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-28 14:06:34 +0000 |
---|---|---|
committer | avi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-28 14:06:34 +0000 |
commit | b627d9acccce5b97f59d34c94c2e464848683df1 (patch) | |
tree | 152d1538f01caeb91b737ac12211515ebebbe172 | |
parent | 04bf01c33e2fc63b4425e26be3dcd3ef1f3a0f35 (diff) | |
download | chromium_src-b627d9acccce5b97f59d34c94c2e464848683df1.zip chromium_src-b627d9acccce5b97f59d34c94c2e464848683df1.tar.gz chromium_src-b627d9acccce5b97f59d34c94c2e464848683df1.tar.bz2 |
Remove Profiles from JavaScript dialogs.
BUG=84601
TEST=no change
Review URL: http://codereview.chromium.org/7253019
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90759 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/extensions/extension_host.cc | 15 | ||||
-rw-r--r-- | chrome/browser/ui/app_modal_dialogs/message_box_handler.cc | 85 | ||||
-rw-r--r-- | chrome/browser/ui/app_modal_dialogs/message_box_handler.h | 2 | ||||
-rw-r--r-- | content/browser/javascript_dialogs.h | 13 | ||||
-rw-r--r-- | content/browser/tab_contents/tab_contents.cc | 18 | ||||
-rw-r--r-- | content/browser/tab_contents/tab_contents_delegate.cc | 6 |
6 files changed, 74 insertions, 65 deletions
diff --git a/chrome/browser/extensions/extension_host.cc b/chrome/browser/extensions/extension_host.cc index 534bf06..6eeb05f 100644 --- a/chrome/browser/extensions/extension_host.cc +++ b/chrome/browser/extensions/extension_host.cc @@ -10,6 +10,7 @@ #include "base/message_loop.h" #include "base/metrics/histogram.h" #include "base/string_util.h" +#include "base/utf_string_conversions.h" #include "chrome/browser/browser_shutdown.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_tabs_module.h" @@ -47,6 +48,7 @@ #include "content/common/notification_service.h" #include "content/common/view_messages.h" #include "grit/browser_resources.h" +#include "grit/chromium_strings.h" #include "grit/generated_resources.h" #include "ui/base/keycodes/keyboard_codes.h" #include "ui/base/l10n/l10n_util.h" @@ -432,15 +434,22 @@ void ExtensionHost::RunJavaScriptMessage(const RenderViewHost* rvh, IPC::Message* reply_msg, bool* did_suppress_message) { bool suppress_this_message = false; + + string16 title; + if (extension_->location() == Extension::COMPONENT) + title = l10n_util::GetStringUTF16(IDS_PRODUCT_NAME); + else + title = UTF8ToUTF16(extension_->name()); + GetJavaScriptDialogCreatorInstance()->RunJavaScriptDialog( this, - frame_url, + content::JavaScriptDialogCreator::DIALOG_TITLE_PLAIN_STRING, + title, flags, message, default_prompt, reply_msg, - &suppress_this_message, - profile()); + &suppress_this_message); if (suppress_this_message) { // If we are suppressing messages, just reply as if the user immediately diff --git a/chrome/browser/ui/app_modal_dialogs/message_box_handler.cc b/chrome/browser/ui/app_modal_dialogs/message_box_handler.cc index 875024a..09870d4 100644 --- a/chrome/browser/ui/app_modal_dialogs/message_box_handler.cc +++ b/chrome/browser/ui/app_modal_dialogs/message_box_handler.cc @@ -8,35 +8,28 @@ #include "base/compiler_specific.h" #include "base/memory/singleton.h" -#include "base/time.h" #include "base/utf_string_conversions.h" #include "base/i18n/rtl.h" -#include "chrome/browser/extensions/extension_service.h" -#include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.h" #include "chrome/browser/ui/app_modal_dialogs/js_modal_dialog.h" #include "chrome/common/chrome_constants.h" -#include "chrome/common/pref_names.h" #include "content/browser/javascript_dialogs.h" #include "grit/generated_resources.h" -#include "grit/chromium_strings.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/message_box_flags.h" -#include "ui/base/text/text_elider.h" -#include "ui/gfx/font.h" class ChromeJavaScriptDialogCreator : public content::JavaScriptDialogCreator { public: static ChromeJavaScriptDialogCreator* GetInstance(); virtual void RunJavaScriptDialog(content::JavaScriptDialogDelegate* delegate, - const GURL& frame_url, + TitleType title_type, + const string16& title, int dialog_flags, const string16& message_text, const string16& default_prompt_text, IPC::Message* reply_message, - bool* did_suppress_message, - Profile* profile) OVERRIDE; + bool* did_suppress_message) OVERRIDE; virtual void RunBeforeUnloadDialog( content::JavaScriptDialogDelegate* delegate, @@ -52,9 +45,9 @@ class ChromeJavaScriptDialogCreator : public content::JavaScriptDialogCreator { friend struct DefaultSingletonTraits<ChromeJavaScriptDialogCreator>; - string16 GetTitle(Profile* profile, - bool is_alert, - const GURL& frame_url); + string16 GetTitle(TitleType title_type, + const string16& title, + bool is_alert); // Mapping between the JavaScriptDialogDelegates and their extra data. The key // is a void* because the pointer is just a cookie and is never dereferenced. @@ -78,13 +71,13 @@ ChromeJavaScriptDialogCreator* ChromeJavaScriptDialogCreator::GetInstance() { void ChromeJavaScriptDialogCreator::RunJavaScriptDialog( content::JavaScriptDialogDelegate* delegate, - const GURL& frame_url, + TitleType title_type, + const string16& title, int dialog_flags, const string16& message_text, const string16& default_prompt_text, IPC::Message* reply_message, - bool* did_suppress_message, - Profile* profile) { + bool* did_suppress_message) { *did_suppress_message = false; ChromeJavaScriptDialogExtraData* extra_data = @@ -107,12 +100,12 @@ void ChromeJavaScriptDialogCreator::RunJavaScriptDialog( } bool is_alert = dialog_flags == ui::MessageBoxFlags::kIsJavascriptAlert; - string16 title = GetTitle(profile, is_alert, frame_url); + string16 dialog_title = GetTitle(title_type, title, is_alert); AppModalDialogQueue::GetInstance()->AddDialog(new JavaScriptAppModalDialog( delegate, extra_data, - title, + dialog_title, dialog_flags, message_text, default_prompt_text, @@ -148,41 +141,31 @@ void ChromeJavaScriptDialogCreator::ResetJavaScriptState( javascript_dialog_extra_data_.erase(delegate); } -string16 ChromeJavaScriptDialogCreator::GetTitle(Profile* profile, - bool is_alert, - const GURL& frame_url) { - ExtensionService* extensions_service = profile->GetExtensionService(); - if (extensions_service) { - const Extension* extension = - extensions_service->GetExtensionByURL(frame_url); - if (!extension) - extension = extensions_service->GetExtensionByWebExtent(frame_url); - - if (extension && (extension->location() == Extension::COMPONENT)) { - return l10n_util::GetStringUTF16(IDS_PRODUCT_NAME); - } else if (extension && !extension->name().empty()) { - return UTF8ToUTF16(extension->name()); +string16 ChromeJavaScriptDialogCreator::GetTitle(TitleType title_type, + const string16& title, + bool is_alert) { + switch (title_type) { + case DIALOG_TITLE_NONE: { + return l10n_util::GetStringUTF16( + is_alert ? IDS_JAVASCRIPT_ALERT_DEFAULT_TITLE + : IDS_JAVASCRIPT_MESSAGEBOX_DEFAULT_TITLE); + break; + } + case DIALOG_TITLE_PLAIN_STRING: { + return title; + break; + } + case DIALOG_TITLE_FORMATTED_URL: { + // Force URL to have LTR directionality. + return l10n_util::GetStringFUTF16( + is_alert ? IDS_JAVASCRIPT_ALERT_TITLE + : IDS_JAVASCRIPT_MESSAGEBOX_TITLE, + base::i18n::GetDisplayStringInLTRDirectionality(title)); + break; } } - if (!frame_url.has_host()) { - return l10n_util::GetStringUTF16( - is_alert ? IDS_JAVASCRIPT_ALERT_DEFAULT_TITLE - : IDS_JAVASCRIPT_MESSAGEBOX_DEFAULT_TITLE); - } - - // TODO(brettw) it should be easier than this to do the correct language - // handling without getting the accept language from the profile. - string16 base_address = ui::ElideUrl(frame_url.GetOrigin(), - gfx::Font(), 0, profile->GetPrefs()->GetString(prefs::kAcceptLanguages)); - - // Force URL to have LTR directionality. - base_address = base::i18n::GetDisplayStringInLTRDirectionality( - base_address); - - return l10n_util::GetStringFUTF16( - is_alert ? IDS_JAVASCRIPT_ALERT_TITLE : - IDS_JAVASCRIPT_MESSAGEBOX_TITLE, - base_address); + NOTREACHED(); + return string16(); } //------------------------------------------------------------------------------ diff --git a/chrome/browser/ui/app_modal_dialogs/message_box_handler.h b/chrome/browser/ui/app_modal_dialogs/message_box_handler.h index 5d2642a..8dd735a 100644 --- a/chrome/browser/ui/app_modal_dialogs/message_box_handler.h +++ b/chrome/browser/ui/app_modal_dialogs/message_box_handler.h @@ -7,7 +7,7 @@ #pragma once namespace content { - class JavaScriptDialogCreator; +class JavaScriptDialogCreator; } // Returns a JavaScriptDialogCreator that creates real dialogs. diff --git a/content/browser/javascript_dialogs.h b/content/browser/javascript_dialogs.h index caeac36..20de44b 100644 --- a/content/browser/javascript_dialogs.h +++ b/content/browser/javascript_dialogs.h @@ -51,17 +51,22 @@ class JavaScriptDialogDelegate { // dialogs. class JavaScriptDialogCreator { public: + enum TitleType { + DIALOG_TITLE_NONE, + DIALOG_TITLE_PLAIN_STRING, + DIALOG_TITLE_FORMATTED_URL + }; + // Displays a JavaScript dialog. |did_suppress_message| will not be nil; if // |true| is returned in it, the caller will handle faking the reply. - // TODO(avi): Remove Profile from this call; http://crbug.com/84601 virtual void RunJavaScriptDialog(JavaScriptDialogDelegate* delegate, - const GURL& frame_url, + TitleType title_type, + const string16& title, int dialog_flags, const string16& message_text, const string16& default_prompt_text, IPC::Message* reply_message, - bool* did_suppress_message, - Profile* profile) = 0; + bool* did_suppress_message) = 0; // Displays a dialog asking the user if they want to leave a page. virtual void RunBeforeUnloadDialog(JavaScriptDialogDelegate* delegate, diff --git a/content/browser/tab_contents/tab_contents.cc b/content/browser/tab_contents/tab_contents.cc index e350f53..29bea5dc 100644 --- a/content/browser/tab_contents/tab_contents.cc +++ b/content/browser/tab_contents/tab_contents.cc @@ -1565,15 +1565,27 @@ void TabContents::RunJavaScriptMessage( delegate_->ShouldSuppressDialogs(); if (!suppress_this_message) { + content::JavaScriptDialogCreator::TitleType title_type; + string16 title; + + if (!frame_url.has_host()) { + title_type = content::JavaScriptDialogCreator::DIALOG_TITLE_NONE; + } else { + title_type = content::JavaScriptDialogCreator::DIALOG_TITLE_FORMATTED_URL; + title = net::FormatUrl( + frame_url.GetOrigin(), + content::GetContentClient()->browser()->GetAcceptLangs(this)); + } + delegate_->GetJavaScriptDialogCreator()->RunJavaScriptDialog( this, - frame_url, + title_type, + title, flags, message, default_prompt, reply_msg, - &suppress_this_message, - profile()); + &suppress_this_message); } if (suppress_this_message) { diff --git a/content/browser/tab_contents/tab_contents_delegate.cc b/content/browser/tab_contents/tab_contents_delegate.cc index da879df..57fca35 100644 --- a/content/browser/tab_contents/tab_contents_delegate.cc +++ b/content/browser/tab_contents/tab_contents_delegate.cc @@ -201,13 +201,13 @@ class JavaScriptDialogCreatorStub : public content::JavaScriptDialogCreator { } virtual void RunJavaScriptDialog(content::JavaScriptDialogDelegate* delegate, - const GURL& frame_url, + TitleType title_type, + const string16& title, int dialog_flags, const string16& message_text, const string16& default_prompt_text, IPC::Message* reply_message, - bool* did_suppress_message, - Profile* profile) OVERRIDE { + bool* did_suppress_message) OVERRIDE { *did_suppress_message = true; } |