summaryrefslogtreecommitdiffstats
path: root/chrome/browser/first_run
diff options
context:
space:
mode:
authortfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-14 01:15:13 +0000
committertfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-14 01:15:13 +0000
commit118b4a935b9e8102129b1de470b816abd5e9a1c6 (patch)
treec47766341663aa2a67bf395b418afb2986611544 /chrome/browser/first_run
parent9eae43d88f2cc6c8891db4fe24a6086d808186c3 (diff)
downloadchromium_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.cc99
-rw-r--r--chrome/browser/first_run/try_chrome_dialog_view.h54
-rw-r--r--chrome/browser/first_run/upgrade_util.h17
-rw-r--r--chrome/browser/first_run/upgrade_util_win.cc11
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