diff options
author | avi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-30 19:43:18 +0000 |
---|---|---|
committer | avi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-30 19:43:18 +0000 |
commit | f21cf2cfe34186333a591ee0788072889c2eaa3e (patch) | |
tree | de1a7e58c0d6e6547026a0f01570ee9bc08542f2 /chrome/browser | |
parent | e8982947401fb01cfb944271d8defcec0104d224 (diff) | |
download | chromium_src-f21cf2cfe34186333a591ee0788072889c2eaa3e.zip chromium_src-f21cf2cfe34186333a591ee0788072889c2eaa3e.tar.gz chromium_src-f21cf2cfe34186333a591ee0788072889c2eaa3e.tar.bz2 |
Revert 46101 - Make a new yes/no messagebox wrapper function, use it in the bookmark alert.
BUG=http://crbug.com/34481; http://crbug.com/40011
TEST=on Mac/ChromeOS, have at least 15 bookmarks on bookmarks bar or other bookmarks,
right click on one of those and click on Open all bookmarks. An confirmation
dialog box should be shown. No other visible change.
Review URL: http://codereview.chromium.org/1687017
TBR=avi@chromium.org
Review URL: http://codereview.chromium.org/1783014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@46108 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-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; } |