diff options
-rw-r--r-- | chrome/app/generated_resources.grd | 6 | ||||
-rw-r--r-- | chrome/browser/views/about_chrome_view.cc | 68 | ||||
-rw-r--r-- | chrome/browser/views/about_chrome_view.h | 11 |
3 files changed, 37 insertions, 48 deletions
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index b217207..ae64e12 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd @@ -4668,6 +4668,12 @@ Keep your key file in a safe place. You will need it to create new versions of y <message name="IDS_UPGRADE_SUCCESSFUL_NOVERSION" desc="Status label: Successfully upgraded"> <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> has been updated </message> + <message name="IDS_UPGRADE_SUCCESSFUL_RESTART" desc="Status label: Successfully updated"> + Restart <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> to finish updating to <ph name="VERSION">$2<ex>0.1.131</ex></ph> + </message> + <message name="IDS_UPGRADE_SUCCESSFUL_NOVERSION_RESTART" desc="Status label: Successfully updated"> + Restart <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> to finish updating + </message> <if expr="pp_ifdef('chromeos')"> <message name="IDS_UPGRADE_ALREADY_UP_TO_DATE" desc="Status label: Already up to date"> <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> is up to date diff --git a/chrome/browser/views/about_chrome_view.cc b/chrome/browser/views/about_chrome_view.cc index fae029c..4eba383 100644 --- a/chrome/browser/views/about_chrome_view.cc +++ b/chrome/browser/views/about_chrome_view.cc @@ -16,11 +16,14 @@ #include "base/string_number_conversions.h" #include "base/utf_string_conversions.h" #include "chrome/browser/browser_list.h" +#include "chrome/browser/browser_process.h" #include "chrome/browser/metrics/user_metrics.h" #include "chrome/browser/platform_util.h" +#include "chrome/browser/pref_service.h" #include "chrome/browser/views/accessible_view_helper.h" #include "chrome/common/chrome_constants.h" #include "chrome/common/chrome_version_info.h" +#include "chrome/common/pref_names.h" #include "chrome/common/url_constants.h" #include "gfx/canvas.h" #include "grit/chromium_strings.h" @@ -106,7 +109,7 @@ AboutChromeView::AboutChromeView(Profile* profile) chromium_url_(NULL), open_source_url_(NULL), terms_of_service_url_(NULL), - check_button_status_(CHECKBUTTON_HIDDEN), + restart_button_visible_(false), chromium_url_appears_first_(true), text_direction_is_rtl_(false) { DCHECK(profile); @@ -501,7 +504,7 @@ void AboutChromeView::Paint(gfx::Canvas* canvas) { void AboutChromeView::ViewHierarchyChanged(bool is_add, views::View* parent, views::View* child) { - // Since we want the some of the controls to show up in the same visual row + // Since we want some of the controls to show up in the same visual row // as the buttons, which are provided by the framework, we must add the // buttons to the non-client view, which is the parent of this view. // Similarly, when we're removed from the view hierarchy, we must take care @@ -555,10 +558,12 @@ void AboutChromeView::ViewHierarchyChanged(bool is_add, std::wstring AboutChromeView::GetDialogButtonLabel( MessageBoxFlags::DialogButton button) const { if (button == MessageBoxFlags::DIALOGBUTTON_OK) { - return l10n_util::GetString(IDS_ABOUT_CHROME_UPDATE_CHECK); + return l10n_util::GetString(IDS_RESTART_AND_UPDATE); } else if (button == MessageBoxFlags::DIALOGBUTTON_CANCEL) { + if (restart_button_visible_) + return l10n_util::GetString(IDS_NOT_NOW); // The OK button (which is the default button) has been re-purposed to be - // 'Check for Updates' so we want the Cancel button should have the label + // 'Restart Now' so we want the Cancel button should have the label // OK but act like a Cancel button in all other ways. return l10n_util::GetString(IDS_OK); } @@ -573,20 +578,16 @@ std::wstring AboutChromeView::GetWindowTitle() const { bool AboutChromeView::IsDialogButtonEnabled( MessageBoxFlags::DialogButton button) const { - if (button == MessageBoxFlags::DIALOGBUTTON_OK && - check_button_status_ != CHECKBUTTON_ENABLED) { + if (button == MessageBoxFlags::DIALOGBUTTON_OK && !restart_button_visible_) return false; - } return true; } bool AboutChromeView::IsDialogButtonVisible( MessageBoxFlags::DialogButton button) const { - if (button == MessageBoxFlags::DIALOGBUTTON_OK && - check_button_status_ == CHECKBUTTON_HIDDEN) { + if (button == MessageBoxFlags::DIALOGBUTTON_OK && !restart_button_visible_) return false; - } return true; } @@ -621,19 +622,13 @@ bool AboutChromeView::IsModal() const { bool AboutChromeView::Accept() { #if defined(OS_WIN) || defined(OS_CHROMEOS) - UpdateStatus(UPGRADE_STARTED, GOOGLE_UPDATE_NO_ERROR); - - // The Upgrade button isn't available until we have received notification - // that an update is available, at which point this pointer should have been - // null-ed out. - DCHECK(!google_updater_); - google_updater_ = new GoogleUpdate(); - google_updater_->set_status_listener(this); - // CheckForUpdate(true,...) means perform the upgrade if new version found. - google_updater_->CheckForUpdate(true, window()); + // Set the flag to restore the last session on shutdown. + PrefService* pref_service = g_browser_process->local_state(); + pref_service->SetBoolean(prefs::kRestartLastSessionOnShutdown, true); + BrowserList::CloseAllBrowsersAndExit(); #endif - return false; // We never allow this button to close the window. + return true; } views::View* AboutChromeView::GetContentsView() { @@ -714,26 +709,27 @@ void AboutChromeView::UpdateStatus(GoogleUpdateUpgradeResult result, switch (result) { case UPGRADE_STARTED: UserMetrics::RecordAction(UserMetricsAction("Upgrade_Started"), profile_); - check_button_status_ = CHECKBUTTON_DISABLED; show_throbber = true; update_label_.SetText(l10n_util::GetString(IDS_UPGRADE_STARTED)); break; case UPGRADE_CHECK_STARTED: UserMetrics::RecordAction(UserMetricsAction("UpgradeCheck_Started"), profile_); - check_button_status_ = CHECKBUTTON_HIDDEN; show_throbber = true; update_label_.SetText(l10n_util::GetString(IDS_UPGRADE_CHECK_STARTED)); break; case UPGRADE_IS_AVAILABLE: UserMetrics::RecordAction( UserMetricsAction("UpgradeCheck_UpgradeIsAvailable"), profile_); - check_button_status_ = CHECKBUTTON_ENABLED; - update_label_.SetText( - l10n_util::GetStringF(IDS_UPGRADE_AVAILABLE, - l10n_util::GetString(IDS_PRODUCT_NAME))); - show_update_available_indicator = true; - break; + DCHECK(!google_updater_); // Should have been nulled out already. + google_updater_ = new GoogleUpdate(); + google_updater_->set_status_listener(this); + UpdateStatus(UPGRADE_STARTED, GOOGLE_UPDATE_NO_ERROR); + // CheckForUpdate(true,...) means perform upgrade if new version found. + google_updater_->CheckForUpdate(true, window()); + // TODO(seanparent): Need to see if this code needs to change to + // force a machine restart. + return; case UPGRADE_ALREADY_UP_TO_DATE: { // The extra version check is necessary on Windows because the application // may be already up to date on disk though the running app is still @@ -753,7 +749,6 @@ void AboutChromeView::UpdateStatus(GoogleUpdateUpgradeResult result, #endif UserMetrics::RecordAction( UserMetricsAction("UpgradeCheck_AlreadyUpToDate"), profile_); - check_button_status_ = CHECKBUTTON_HIDDEN; #if defined(OS_CHROMEOS) std::wstring update_label_text = l10n_util::GetStringF(IDS_UPGRADE_ALREADY_UP_TO_DATE, @@ -783,26 +778,21 @@ void AboutChromeView::UpdateStatus(GoogleUpdateUpgradeResult result, else UserMetrics::RecordAction(UserMetricsAction("UpgradeCheck_Upgraded"), profile_); - check_button_status_ = CHECKBUTTON_HIDDEN; + restart_button_visible_ = true; const std::wstring& update_string = new_version_available_.empty() - ? l10n_util::GetStringF(IDS_UPGRADE_SUCCESSFUL_NOVERSION, + ? l10n_util::GetStringF(IDS_UPGRADE_SUCCESSFUL_NOVERSION_RESTART, l10n_util::GetString(IDS_PRODUCT_NAME)) - : l10n_util::GetStringF(IDS_UPGRADE_SUCCESSFUL, + : l10n_util::GetStringF(IDS_UPGRADE_SUCCESSFUL_RESTART, l10n_util::GetString(IDS_PRODUCT_NAME), new_version_available_); update_label_.SetText(update_string); show_success_indicator = true; - // TODO(seanparent): Need to see if this code needs to change to - // force a machine restart. -#if defined(OS_WIN) - RestartMessageBox::ShowMessageBox(window()->GetNativeWindow()); -#endif break; } case UPGRADE_ERROR: UserMetrics::RecordAction(UserMetricsAction("UpgradeCheck_Error"), profile_); - check_button_status_ = CHECKBUTTON_HIDDEN; + restart_button_visible_ = false; update_label_.SetText(l10n_util::GetStringF(IDS_UPGRADE_ERROR, UTF8ToWide(base::IntToString(error_code)))); show_timeout_indicator = true; diff --git a/chrome/browser/views/about_chrome_view.h b/chrome/browser/views/about_chrome_view.h index e1386d4..f3b6bee 100644 --- a/chrome/browser/views/about_chrome_view.h +++ b/chrome/browser/views/about_chrome_view.h @@ -84,13 +84,6 @@ class AboutChromeView : public views::View, #endif private: - // The visible state of the Check For Updates button. - enum CheckButtonStatus { - CHECKBUTTON_HIDDEN = 0, - CHECKBUTTON_DISABLED, - CHECKBUTTON_ENABLED, - }; - #if defined(OS_WIN) || defined(OS_CHROMEOS) // Update the UI to show the status of the upgrade. void UpdateStatus(GoogleUpdateUpgradeResult result, @@ -132,8 +125,8 @@ class AboutChromeView : public views::View, // The dialog dimensions. gfx::Size dialog_dimensions_; - // Keeps track of the visible state of the Check For Updates button. - CheckButtonStatus check_button_status_; + // Keeps track of the visible state of the Restart Now button. + bool restart_button_visible_; // The text to display as the main label of the About box. We draw this text // word for word with the help of the WordIterator, and make room for URLs |