summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoravi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-28 14:06:34 +0000
committeravi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-28 14:06:34 +0000
commitb627d9acccce5b97f59d34c94c2e464848683df1 (patch)
tree152d1538f01caeb91b737ac12211515ebebbe172
parent04bf01c33e2fc63b4425e26be3dcd3ef1f3a0f35 (diff)
downloadchromium_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.cc15
-rw-r--r--chrome/browser/ui/app_modal_dialogs/message_box_handler.cc85
-rw-r--r--chrome/browser/ui/app_modal_dialogs/message_box_handler.h2
-rw-r--r--content/browser/javascript_dialogs.h13
-rw-r--r--content/browser/tab_contents/tab_contents.cc18
-rw-r--r--content/browser/tab_contents/tab_contents_delegate.cc6
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;
}