Index: chrome/browser/jsmessage_box_handler.cc |
diff --git a/chrome/browser/jsmessage_box_handler.cc b/chrome/browser/jsmessage_box_handler.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..426d10bfc228d9476d632f9d571593a868ed3b7c |
--- /dev/null |
+++ b/chrome/browser/jsmessage_box_handler.cc |
@@ -0,0 +1,79 @@ |
+// Copyright (c) 2009 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/browser/jsmessage_box_handler.h" |
+ |
+#include "build/build_config.h" |
+#include "chrome/browser/app_modal_dialog_queue.h" |
+#include "chrome/browser/browser_process.h" |
+#include "chrome/browser/profile.h" |
+#include "chrome/browser/tab_contents/web_contents.h" |
+#include "chrome/common/gfx/text_elider.h" |
+#include "chrome/common/l10n_util.h" |
+#include "chrome/common/message_box_flags.h" |
+#include "chrome/common/pref_names.h" |
+#include "chrome/common/pref_service.h" |
+#include "googleurl/src/gurl.h" |
+#include "grit/generated_resources.h" |
+ |
+namespace { |
+ |
+std::wstring GetWindowTitle(WebContents* web_contents, const GURL& frame_url) { |
+ if (!frame_url.has_host()) |
+ return l10n_util::GetString(IDS_JAVASCRIPT_MESSAGEBOX_DEFAULT_TITLE); |
+ |
+ // We really only want the scheme, hostname, and port. |
+ GURL::Replacements replacements; |
+ replacements.ClearUsername(); |
+ replacements.ClearPassword(); |
+ replacements.ClearPath(); |
+ replacements.ClearQuery(); |
+ replacements.ClearRef(); |
+ GURL clean_url = frame_url.ReplaceComponents(replacements); |
+ |
+ // TODO(brettw) it should be easier than this to do the correct language |
+ // handling without getting the accept language from the profile. |
+ std::wstring base_address = gfx::ElideUrl(clean_url, ChromeFont(), 0, |
+ web_contents->profile()->GetPrefs()->GetString(prefs::kAcceptLanguages)); |
+ // Force URL to have LTR directionality. |
+ if (l10n_util::GetTextDirection() == l10n_util::RIGHT_TO_LEFT) |
+ l10n_util::WrapStringWithLTRFormatting(&base_address); |
+ return l10n_util::GetStringF(IDS_JAVASCRIPT_MESSAGEBOX_TITLE, base_address); |
+} |
+ |
+} |
+ |
+void RunJavascriptMessageBox(WebContents* web_contents, |
+ const GURL& frame_url, |
+ int dialog_flags, |
+ const std::wstring& message_text, |
+ const std::wstring& default_prompt_text, |
+ bool display_suppress_checkbox, |
+ IPC::Message* reply_msg) { |
+ std::wstring title = GetWindowTitle(web_contents, frame_url); |
+ |
+#if defined(OS_WIN) |
+ AppModalDialogQueue::AddDialog(new AppModalDialog(web_contents, title, |
+ dialog_flags, message_text, default_prompt_text, |
+ display_suppress_checkbox, false, reply_msg)); |
+#else |
+ NOTIMPLEMENTED(); |
+#endif |
+} |
+ |
+void RunBeforeUnloadDialog(WebContents* web_contents, |
+ const std::wstring& message_text, |
+ IPC::Message* reply_msg) { |
+ std::wstring full_message = |
+ message_text + L"\n\n" + |
+ l10n_util::GetString(IDS_BEFOREUNLOAD_MESSAGEBOX_FOOTER); |
+#if defined(OS_WIN) |
+ AppModalDialogQueue::AddDialog(new AppModalDialog( |
+ web_contents, l10n_util::GetString(IDS_BEFOREUNLOAD_MESSAGEBOX_TITLE), |
+ MessageBox::kIsJavascriptConfirm, message_text, std::wstring(), false, |
+ true, reply_msg)); |
+#else |
+ NOTIMPLEMENTED(); |
+#endif |
+} |