diff options
author | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-14 01:15:13 +0000 |
---|---|---|
committer | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-14 01:15:13 +0000 |
commit | 118b4a935b9e8102129b1de470b816abd5e9a1c6 (patch) | |
tree | c47766341663aa2a67bf395b418afb2986611544 /chrome/browser/first_run | |
parent | 9eae43d88f2cc6c8891db4fe24a6086d808186c3 (diff) | |
download | chromium_src-118b4a935b9e8102129b1de470b816abd5e9a1c6.zip chromium_src-118b4a935b9e8102129b1de470b816abd5e9a1c6.tar.gz chromium_src-118b4a935b9e8102129b1de470b816abd5e9a1c6.tar.bz2 |
first-run: Refactor TryChromeDialogView to eliminate ShowTryChromeDialog() function.
BUG=79203
TEST=None
R=jhawkins@chromium.org
Review URL: http://codereview.chromium.org/6838025
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81516 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/first_run')
-rw-r--r-- | chrome/browser/first_run/try_chrome_dialog_view.cc | 99 | ||||
-rw-r--r-- | chrome/browser/first_run/try_chrome_dialog_view.h | 54 | ||||
-rw-r--r-- | chrome/browser/first_run/upgrade_util.h | 17 | ||||
-rw-r--r-- | chrome/browser/first_run/upgrade_util_win.cc | 11 |
4 files changed, 89 insertions, 92 deletions
diff --git a/chrome/browser/first_run/try_chrome_dialog_view.cc b/chrome/browser/first_run/try_chrome_dialog_view.cc index 6669887..b4f4b68 100644 --- a/chrome/browser/first_run/try_chrome_dialog_view.cc +++ b/chrome/browser/first_run/try_chrome_dialog_view.cc @@ -31,20 +31,32 @@ const wchar_t kHelpCenterUrl[] = } // namespace +// static +TryChromeDialogView::Result TryChromeDialogView::Show( + size_t version, + ProcessSingleton* process_singleton) { + if (version > 10000) { + // This is a test value. We want to make sure we exercise + // returning this early. See EarlyReturnTest test harness. + return NOT_NOW; + } + TryChromeDialogView dialog(version); + return dialog.ShowModal(process_singleton); +} + TryChromeDialogView::TryChromeDialogView(size_t version) : version_(version), popup_(NULL), try_chrome_(NULL), kill_chrome_(NULL), - result_(upgrade_util::COUNT) { + result_(COUNT) { } TryChromeDialogView::~TryChromeDialogView() { } -upgrade_util::TryResult TryChromeDialogView::ShowModal( +TryChromeDialogView::Result TryChromeDialogView::ShowModal( ProcessSingleton* process_singleton) { - using views::GridLayout; ResourceBundle& rb = ResourceBundle::GetSharedInstance(); views::ImageView* icon = new views::ImageView(); @@ -57,7 +69,7 @@ upgrade_util::TryResult TryChromeDialogView::ShowModal( popup_ = views::Widget::CreateWidget(params); if (!popup_) { NOTREACHED(); - return upgrade_util::DIALOG_ERROR; + return DIALOG_ERROR; } gfx::Rect pos(310, 160); @@ -71,48 +83,48 @@ upgrade_util::TryResult TryChromeDialogView::ShowModal( views::GridLayout* layout = views::GridLayout::CreatePanel(root_view); if (!layout) { NOTREACHED(); - return upgrade_util::DIALOG_ERROR; + return DIALOG_ERROR; } root_view->SetLayoutManager(layout); views::ColumnSet* columns; // First row: [icon][pad][text][button]. columns = layout->AddColumnSet(0); - columns->AddColumn(GridLayout::LEADING, GridLayout::LEADING, 0, - GridLayout::FIXED, icon_size.width(), + columns->AddColumn(views::GridLayout::LEADING, views::GridLayout::LEADING, 0, + views::GridLayout::FIXED, icon_size.width(), icon_size.height()); columns->AddPaddingColumn(0, views::kRelatedControlHorizontalSpacing); - columns->AddColumn(GridLayout::FILL, GridLayout::FILL, 1, - GridLayout::USE_PREF, 0, 0); - columns->AddColumn(GridLayout::TRAILING, GridLayout::FILL, 1, - GridLayout::USE_PREF, 0, 0); + columns->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1, + views::GridLayout::USE_PREF, 0, 0); + columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::FILL, 1, + views::GridLayout::USE_PREF, 0, 0); // Second row: [pad][pad][radio 1]. columns = layout->AddColumnSet(1); columns->AddPaddingColumn(0, icon_size.width()); columns->AddPaddingColumn(0, views::kRelatedControlHorizontalSpacing); - columns->AddColumn(GridLayout::LEADING, GridLayout::FILL, 1, - GridLayout::USE_PREF, 0, 0); + columns->AddColumn(views::GridLayout::LEADING, views::GridLayout::FILL, 1, + views::GridLayout::USE_PREF, 0, 0); // Third row: [pad][pad][radio 2]. columns = layout->AddColumnSet(2); columns->AddPaddingColumn(0, icon_size.width()); columns->AddPaddingColumn(0, views::kRelatedControlHorizontalSpacing); - columns->AddColumn(GridLayout::LEADING, GridLayout::FILL, 1, - GridLayout::USE_PREF, 0, 0); + columns->AddColumn(views::GridLayout::LEADING, views::GridLayout::FILL, 1, + views::GridLayout::USE_PREF, 0, 0); // Fourth row: [pad][pad][button][pad][button]. columns = layout->AddColumnSet(3); columns->AddPaddingColumn(0, icon_size.width()); columns->AddPaddingColumn(0, views::kRelatedControlHorizontalSpacing); - columns->AddColumn(GridLayout::LEADING, GridLayout::FILL, 0, - GridLayout::USE_PREF, 0, 0); + columns->AddColumn(views::GridLayout::LEADING, views::GridLayout::FILL, 0, + views::GridLayout::USE_PREF, 0, 0); columns->AddPaddingColumn(0, views::kRelatedButtonHSpacing); - columns->AddColumn(GridLayout::LEADING, GridLayout::FILL, 0, - GridLayout::USE_PREF, 0, 0); + columns->AddColumn(views::GridLayout::LEADING, views::GridLayout::FILL, 0, + views::GridLayout::USE_PREF, 0, 0); // Fifth row: [pad][pad][link]. columns = layout->AddColumnSet(4); columns->AddPaddingColumn(0, icon_size.width()); columns->AddPaddingColumn(0, views::kRelatedControlHorizontalSpacing); - columns->AddColumn(GridLayout::LEADING, GridLayout::FILL, 1, - GridLayout::USE_PREF, 0, 0); + columns->AddColumn(views::GridLayout::LEADING, views::GridLayout::FILL, 1, + views::GridLayout::USE_PREF, 0, 0); // First row views. layout->StartRow(0, 0); layout->AddView(icon); @@ -121,13 +133,13 @@ upgrade_util::TryResult TryChromeDialogView::ShowModal( BrowserDistribution* dist = BrowserDistribution::GetDistribution(); if (!dist) { NOTREACHED() << "Cannot determine browser distribution"; - return upgrade_util::DIALOG_ERROR; + return DIALOG_ERROR; } BrowserDistribution::UserExperiment experiment; if (!dist->GetExperimentDetails(&experiment, version_) || !experiment.heading) { NOTREACHED() << "Cannot determine which headline to show."; - return upgrade_util::DIALOG_ERROR; + return DIALOG_ERROR; } string16 heading = l10n_util::GetStringUTF16(experiment.heading); views::Label* label = new views::Label(heading); @@ -198,27 +210,6 @@ upgrade_util::TryResult TryChromeDialogView::ShowModal( return result_; } -void TryChromeDialogView::ButtonPressed(views::Button* sender, - const views::Event& event) { - if (sender->tag() == BT_CLOSE_BUTTON) { - // The user pressed cancel or the [x] button. - result_ = upgrade_util::NOT_NOW; - } else if (!try_chrome_) { - // We don't have radio buttons, the user pressed ok. - result_ = upgrade_util::TRY_CHROME; - } else { - // The outcome is according to the selected ratio button. - result_ = try_chrome_->checked() ? upgrade_util::TRY_CHROME : - upgrade_util::UNINSTALL_CHROME; - } - popup_->Close(); - MessageLoop::current()->Quit(); -} - -void TryChromeDialogView::LinkActivated(views::Link* source, int event_flags) { - ::ShellExecuteW(NULL, L"open", kHelpCenterUrl, NULL, NULL, SW_SHOW); -} - gfx::Rect TryChromeDialogView::ComputeWindowPosition(int width, int height, bool is_RTL) { @@ -247,3 +238,23 @@ void TryChromeDialogView::SetToastRegion(HWND window, int w, int h) { HRGN region = ::CreatePolygonRgn(polygon, arraysize(polygon), WINDING); ::SetWindowRgn(window, region, FALSE); } + +void TryChromeDialogView::ButtonPressed(views::Button* sender, + const views::Event& event) { + if (sender->tag() == BT_CLOSE_BUTTON) { + // The user pressed cancel or the [x] button. + result_ = NOT_NOW; + } else if (!try_chrome_) { + // We don't have radio buttons, the user pressed ok. + result_ = TRY_CHROME; + } else { + // The outcome is according to the selected ratio button. + result_ = try_chrome_->checked() ? TRY_CHROME : UNINSTALL_CHROME; + } + popup_->Close(); + MessageLoop::current()->Quit(); +} + +void TryChromeDialogView::LinkActivated(views::Link* source, int event_flags) { + ::ShellExecuteW(NULL, L"open", kHelpCenterUrl, NULL, NULL, SW_SHOW); +} diff --git a/chrome/browser/first_run/try_chrome_dialog_view.h b/chrome/browser/first_run/try_chrome_dialog_view.h index 6abe776..6f813b2 100644 --- a/chrome/browser/first_run/try_chrome_dialog_view.h +++ b/chrome/browser/first_run/try_chrome_dialog_view.h @@ -8,7 +8,6 @@ #include "base/basictypes.h" #include "base/compiler_specific.h" -#include "chrome/browser/first_run/upgrade_util.h" #include "views/controls/button/button.h" #include "views/controls/link.h" #include "ui/gfx/native_widget_types.h" @@ -41,25 +40,24 @@ class Widget; class TryChromeDialogView : public views::ButtonListener, public views::LinkController { public: - explicit TryChromeDialogView(size_t version); - virtual ~TryChromeDialogView(); - - // Shows the modal dialog asking the user to try chrome. Note that the dialog - // has no parent and it will position itself in a lower corner of the screen. - // The dialog does not steal focus and does not have an entry in the taskbar. - upgrade_util::TryResult ShowModal(ProcessSingleton* process_singleton); - - protected: - // views::ButtonListener: - // We have two buttons and according to what the user clicked we set |result_| - // and we should always close and end the modal loop. - virtual void ButtonPressed(views::Button* sender, - const views::Event& event) OVERRIDE; + enum Result { + TRY_CHROME, // Launch chrome right now. + NOT_NOW, // Don't launch chrome. Exit now. + UNINSTALL_CHROME, // Initiate chrome uninstall and exit. + DIALOG_ERROR, // An error occurred creating the dialog. + COUNT + }; - // views::LinkController: - // If the user selects the link we need to fire off the default browser that - // by some convoluted logic should not be chrome. - virtual void LinkActivated(views::Link* source, int event_flags) OVERRIDE; + // Shows a modal dialog asking the user to give chrome another try. See + // above for the possible outcomes of the function. This is an experimental, + // non-localized dialog. + // |version| can be 0, 1 or 2 and selects what strings to present. + // |process_singleton| needs to be valid and it will be locked while + // the dialog is shown. + // Note that the dialog has no parent and it will position itself in a lower + // corner of the screen. The dialog does not steal focus and does not have an + // entry in the taskbar. + static Result Show(size_t version, ProcessSingleton* process_singleton); private: enum ButtonTags { @@ -68,6 +66,11 @@ class TryChromeDialogView : public views::ButtonListener, BT_OK_BUTTON, }; + explicit TryChromeDialogView(size_t version); + virtual ~TryChromeDialogView(); + + Result ShowModal(ProcessSingleton* process_singleton); + // Returns a screen rectangle that is fit to show the window. In particular // it has the following properties: a) is visible and b) is attached to the // bottom of the working area. For LTR machines it returns a left side @@ -79,6 +82,17 @@ class TryChromeDialogView : public views::ButtonListener, // |h|. This is best effort, so we don't care much if the operation fails. void SetToastRegion(gfx::NativeWindow window, int w, int h); + // views::ButtonListener: + // We have two buttons and according to what the user clicked we set |result_| + // and we should always close and end the modal loop. + virtual void ButtonPressed(views::Button* sender, + const views::Event& event) OVERRIDE; + + // views::LinkController: + // If the user selects the link we need to fire off the default browser that + // by some convoluted logic should not be chrome. + virtual void LinkActivated(views::Link* source, int event_flags) OVERRIDE; + // Controls which version of the text to use. size_t version_; @@ -87,7 +101,7 @@ class TryChromeDialogView : public views::ButtonListener, views::Widget* popup_; views::RadioButton* try_chrome_; views::RadioButton* kill_chrome_; - upgrade_util::TryResult result_; + Result result_; DISALLOW_COPY_AND_ASSIGN(TryChromeDialogView); }; diff --git a/chrome/browser/first_run/upgrade_util.h b/chrome/browser/first_run/upgrade_util.h index c5b4c6e..322073c 100644 --- a/chrome/browser/first_run/upgrade_util.h +++ b/chrome/browser/first_run/upgrade_util.h @@ -34,15 +34,6 @@ bool RelaunchChromeBrowser(const CommandLine& command_line); bool IsUpdatePendingRestart(); #if defined(OS_WIN) -// Possible results of ShowTryChromeDialog(). -enum TryResult { - TRY_CHROME, // Launch chrome right now. - NOT_NOW, // Don't launch chrome. Exit now. - UNINSTALL_CHROME, // Initiate chrome uninstall and exit. - DIALOG_ERROR, // An error occurred creating the dialog. - COUNT -}; - // Check if current chrome.exe is already running as a browser process by // trying to create a Global event with name same as full path of chrome.exe. // This method caches the handle to this event so on subsequent calls also @@ -62,14 +53,6 @@ bool SwapNewChromeExeIfPresent(); // function. If browser is already running, you will need to exit it. bool DoUpgradeTasks(const CommandLine& command_line); -// Shows a modal dialog asking the user to give chrome another try. See -// above for the possible outcomes of the function. This is an experimental, -// non-localized dialog. -// |version| can be 0, 1 or 2 and selects what strings to present. -// |process_singleton| needs to be valid and it will be locked while -// the dialog is shown. -TryResult ShowTryChromeDialog(size_t version, - ProcessSingleton* process_singleton); #endif // OS_WIN #if defined(OS_LINUX) && !defined(OS_CHROMEOS) diff --git a/chrome/browser/first_run/upgrade_util_win.cc b/chrome/browser/first_run/upgrade_util_win.cc index ee01ffe..316eecc 100644 --- a/chrome/browser/first_run/upgrade_util_win.cc +++ b/chrome/browser/first_run/upgrade_util_win.cc @@ -138,15 +138,4 @@ bool DoUpgradeTasks(const CommandLine& command_line) { return true; } -TryResult ShowTryChromeDialog(size_t version, - ProcessSingleton* process_singleton) { - if (version > 10000) { - // This is a test value. We want to make sure we exercise - // returning this early. See EarlyReturnTest test harness. - return NOT_NOW; - } - TryChromeDialogView dialog(version); - return dialog.ShowModal(process_singleton); -} - } // namespace upgrade_util |