diff options
-rw-r--r-- | chrome/browser/bookmarks/bookmark_utils.cc | 33 | ||||
-rw-r--r-- | chrome/browser/hang_monitor/hung_plugin_action.cc | 4 | ||||
-rw-r--r-- | chrome/browser/platform_util.h | 9 | ||||
-rw-r--r-- | chrome/browser/platform_util_common_linux.cc | 48 | ||||
-rw-r--r-- | chrome/browser/platform_util_mac.mm | 21 | ||||
-rw-r--r-- | chrome/browser/platform_util_win.cc | 7 | ||||
-rw-r--r-- | chrome/browser/process_singleton_win.cc | 4 |
7 files changed, 49 insertions, 77 deletions
diff --git a/chrome/browser/bookmarks/bookmark_utils.cc b/chrome/browser/bookmarks/bookmark_utils.cc index 331d46c..1221ae8 100644 --- a/chrome/browser/bookmarks/bookmark_utils.cc +++ b/chrome/browser/bookmarks/bookmark_utils.cc @@ -23,7 +23,6 @@ #include "chrome/browser/browser_process.h" #include "chrome/browser/browser_window.h" #include "chrome/browser/history/query_parser.h" -#include "chrome/browser/platform_util.h" #include "chrome/browser/pref_service.h" #include "chrome/browser/profile.h" #include "chrome/browser/tab_contents/page_navigator.h" @@ -165,11 +164,37 @@ bool ShouldOpenAll(gfx::NativeWindow parent, if (descendant_count < bookmark_utils::num_urls_before_prompting) return true; - string16 message = l10n_util::GetStringFUTF16( + // Bug 40011: we should refactor this into a cross-platform "prompt before + // continuing" function. +#if defined(OS_WIN) + std::wstring message = + l10n_util::GetStringF(IDS_BOOKMARK_BAR_SHOULD_OPEN_ALL, + IntToWString(descendant_count)); + return MessageBox(parent, message.c_str(), + l10n_util::GetString(IDS_PRODUCT_NAME).c_str(), + MB_YESNO | MB_ICONWARNING | MB_TOPMOST) == IDYES; +#elif defined(TOOLKIT_GTK) + std::string message = l10n_util::GetStringFUTF8( IDS_BOOKMARK_BAR_SHOULD_OPEN_ALL, IntToString16(descendant_count)); - string16 title = l10n_util::GetStringUTF16(IDS_PRODUCT_NAME); - return platform_util::SimpleYesNoBox(parent, title, message); + GtkWidget* dialog = gtk_message_dialog_new(parent, + static_cast<GtkDialogFlags>( + GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), + GTK_MESSAGE_QUESTION, + GTK_BUTTONS_YES_NO, + "%s", message.c_str()); + gtk_util::ApplyMessageDialogQuirks(dialog); + gtk_window_set_title(GTK_WINDOW(dialog), + l10n_util::GetStringUTF8(IDS_PRODUCT_NAME).c_str()); + gint result = gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); + return (result == GTK_RESPONSE_YES); +#else + // TODO(port): Display a dialog prompt. + // http://crbug.com/34481 + NOTIMPLEMENTED(); + return true; +#endif } // Comparison function that compares based on date modified of the two nodes. diff --git a/chrome/browser/hang_monitor/hung_plugin_action.cc b/chrome/browser/hang_monitor/hung_plugin_action.cc index 5fdcfd1..5bed393 100644 --- a/chrome/browser/hang_monitor/hung_plugin_action.cc +++ b/chrome/browser/hang_monitor/hung_plugin_action.cc @@ -9,7 +9,6 @@ #include "app/l10n_util.h" #include "app/win_util.h" #include "base/win_util.h" -#include "chrome/browser/platform_util.h" #include "chrome/common/logging_chrome.h" #include "grit/generated_resources.h" #include "webkit/glue/plugins/webplugin_delegate_impl.h" @@ -63,7 +62,8 @@ bool HungPluginAction::OnHungWindowDetected(HWND hung_window, HungWindowResponseCallback, reinterpret_cast<ULONG_PTR>(this)); current_hung_plugin_window_ = hung_window; - if (platform_util::SimpleYesNoBox(NULL, title, msg)) { + const UINT mb_flags = MB_YESNO | MB_ICONQUESTION | MB_SETFOREGROUND; + if (IDYES == win_util::MessageBox(NULL, msg, title, mb_flags)) { *action = HungWindowNotification::HUNG_WINDOW_TERMINATE_PROCESS; } else { // If the user choses to ignore the hung window warning, the diff --git a/chrome/browser/platform_util.h b/chrome/browser/platform_util.h index 3278696..1f148f4 100644 --- a/chrome/browser/platform_util.h +++ b/chrome/browser/platform_util.h @@ -36,18 +36,11 @@ bool IsVisible(gfx::NativeView view); // Pops up an error box with an OK button. If |parent| is non-null, the box // will be modal on it. (On Mac, it is always app-modal.) Generally speaking, -// this function should not be used for much. Infobars are preferred. +// this class should not be used for much. Infobars are preferred. void SimpleErrorBox(gfx::NativeWindow parent, const string16& title, const string16& message); -// Pops up a dialog box with two buttons (Yes/No), with the default button of -// Yes. If |parent| is non-null, the box will be modal on it. (On Mac, it is -// always app-modal.) Returns true if the Yes button was chosen. -bool SimpleYesNoBox(gfx::NativeWindow parent, - const string16& title, - const string16& message); - // Return a human readable modifier for the version string. For a // branded Chrome (not Chromium), this modifier is the channel (dev, // beta, stable). diff --git a/chrome/browser/platform_util_common_linux.cc b/chrome/browser/platform_util_common_linux.cc index 80fc66c..328d260 100644 --- a/chrome/browser/platform_util_common_linux.cc +++ b/chrome/browser/platform_util_common_linux.cc @@ -14,28 +14,6 @@ #include "gfx/native_widget_types.h" #include "googleurl/src/gurl.h" -namespace { - -void SetDialogTitle(GtkWidget* dialog, const string16& title) { - gtk_window_set_title(GTK_WINDOW(dialog), UTF16ToUTF8(title).c_str()); - - // Make sure it's big enough to show the title. - GtkRequisition req; - gtk_widget_size_request(dialog, &req); - int width; - gtk_util::GetWidgetSizeFromCharacters(dialog, title.length(), 0, - &width, NULL); - // The fudge factor accounts for extra space needed by the frame - // decorations as well as width differences between average text and the - // actual title text. - width = width * 1.2 + 50; - - if (width > req.width) - gtk_widget_set_size_request(dialog, width, -1); -} - -} // namespace - namespace platform_util { gfx::NativeWindow GetTopLevel(gfx::NativeView view) { @@ -59,24 +37,24 @@ void SimpleErrorBox(gfx::NativeWindow parent, GtkWidget* dialog = gtk_message_dialog_new(parent, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s", UTF16ToUTF8(message).c_str()); gtk_util::ApplyMessageDialogQuirks(dialog); - SetDialogTitle(dialog, title); + gtk_window_set_title(GTK_WINDOW(dialog), UTF16ToUTF8(title).c_str()); g_signal_connect(dialog, "response", G_CALLBACK(gtk_widget_destroy), NULL); gtk_widget_show_all(dialog); -} -bool SimpleYesNoBox(gfx::NativeWindow parent, - const string16& title, - const string16& message) { - GtkWidget* dialog = gtk_message_dialog_new(parent, GTK_DIALOG_MODAL, - GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "%s", - UTF16ToUTF8(message).c_str()); - gtk_util::ApplyMessageDialogQuirks(dialog); - SetDialogTitle(dialog, title); + // Make sure it's big enough to show the title. + GtkRequisition req; + gtk_widget_size_request(dialog, &req); + int width; + gtk_util::GetWidgetSizeFromCharacters(dialog, title.length(), 0, + &width, NULL); + // The fudge factor accounts for extra space needed by the frame + // decorations as well as width differences between average text and the + // actual title text. + width = width * 1.2 + 50; - gint result = gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); - return (result == GTK_RESPONSE_YES); + if (width > req.width) + gtk_widget_set_size_request(dialog, width, -1); } /* Warning: this may be either Linux or ChromeOS */ diff --git a/chrome/browser/platform_util_mac.mm b/chrome/browser/platform_util_mac.mm index 789059a..43d9582 100644 --- a/chrome/browser/platform_util_mac.mm +++ b/chrome/browser/platform_util_mac.mm @@ -59,31 +59,14 @@ bool IsVisible(gfx::NativeView view) { void SimpleErrorBox(gfx::NativeWindow parent, const string16& title, const string16& message) { - // Ignore the title; it's the window title on other platforms and ignorable. NSAlert* alert = [[[NSAlert alloc] init] autorelease]; [alert addButtonWithTitle:l10n_util::GetNSString(IDS_OK)]; - [alert setMessageText:base::SysUTF16ToNSString(message)]; + [alert setMessageText:base::SysUTF16ToNSString(title)]; + [alert setInformativeText:base::SysUTF16ToNSString(message)]; [alert setAlertStyle:NSWarningAlertStyle]; [alert runModal]; } -bool SimpleYesNoBox(gfx::NativeWindow parent, - const string16& title, - const string16& message) { - // Ignore the title; it's the window title on other platforms and ignorable. - NSAlert* alert = [[[NSAlert alloc] init] autorelease]; - [alert setMessageText:base::SysUTF16ToNSString(message)]; - [alert setAlertStyle:NSWarningAlertStyle]; - - [alert addButtonWithTitle: - l10n_util::GetNSString(IDS_CONFIRM_MESSAGEBOX_YES_BUTTON_LABEL)]; - [alert addButtonWithTitle: - l10n_util::GetNSString(IDS_CONFIRM_MESSAGEBOX_NO_BUTTON_LABEL)]; - - NSInteger result = [alert runModal]; - return result == NSAlertFirstButtonReturn; -} - string16 GetVersionStringModifier() { #if defined(GOOGLE_CHROME_BUILD) NSBundle* bundle = mac_util::MainAppBundle(); diff --git a/chrome/browser/platform_util_win.cc b/chrome/browser/platform_util_win.cc index e612f64..7738fe3 100644 --- a/chrome/browser/platform_util_win.cc +++ b/chrome/browser/platform_util_win.cc @@ -154,13 +154,6 @@ void SimpleErrorBox(gfx::NativeWindow parent, win_util::MessageBox(parent, message, title, MB_OK | MB_SETFOREGROUND); } -bool SimpleYesNoBox(gfx::NativeWindow parent, - const string16& title, - const string16& message) { - return win_util::MessageBox(parent, message.c_str(), title.c_str(), - MB_YESNO | MB_ICONWARNING | MB_SETFOREGROUND) == IDYES; -} - string16 GetVersionStringModifier() { #if defined(GOOGLE_CHROME_BUILD) FilePath module; diff --git a/chrome/browser/process_singleton_win.cc b/chrome/browser/process_singleton_win.cc index 6ae556a..09dec13 100644 --- a/chrome/browser/process_singleton_win.cc +++ b/chrome/browser/process_singleton_win.cc @@ -14,7 +14,6 @@ #include "base/win_util.h" #include "chrome/browser/browser_init.h" #include "chrome/browser/browser_process.h" -#include "chrome/browser/platform_util.h" #include "chrome/browser/profile.h" #include "chrome/browser/profile_manager.h" #include "chrome/common/chrome_constants.h" @@ -144,7 +143,8 @@ ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcess() { if (visible_window) { std::wstring text = l10n_util::GetString(IDS_BROWSER_HUNGBROWSER_MESSAGE); std::wstring caption = l10n_util::GetString(IDS_PRODUCT_NAME); - if (!platform_util::SimpleYesNoBox(NULL, caption, text)) { + if (IDYES != win_util::MessageBox(NULL, text, caption, + MB_YESNO | MB_ICONSTOP | MB_TOPMOST)) { // The user denied. Quit silently. return PROCESS_NOTIFIED; } |