Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(235)

Unified Diff: chrome/browser/ui/webui/help/version_updater_win.cc

Issue 729273002: Modernize on-demand update checks on Windows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comments Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/help/version_updater_win.cc
diff --git a/chrome/browser/ui/webui/help/version_updater_win.cc b/chrome/browser/ui/webui/help/version_updater_win.cc
index 449ef19d4506e52e2da50230bb0d4d6e6961a84f..174a16c8d4851ab486cdd70590ba698a90faeb53 100644
--- a/chrome/browser/ui/webui/help/version_updater_win.cc
+++ b/chrome/browser/ui/webui/help/version_updater_win.cc
@@ -28,8 +28,7 @@ namespace {
// Windows implementation of version update functionality, used by the WebUI
// About/Help page.
-class VersionUpdaterWin : public VersionUpdater,
- public GoogleUpdateStatusListener {
+class VersionUpdaterWin : public VersionUpdater {
private:
friend class VersionReader;
friend class VersionUpdater;
@@ -42,11 +41,11 @@ class VersionUpdaterWin : public VersionUpdater,
virtual void CheckForUpdate(const StatusCallback& callback) override;
virtual void RelaunchBrowser() const override;
- // GoogleUpdateStatusListener implementation.
- virtual void OnReportResults(GoogleUpdateUpgradeResult result,
- GoogleUpdateErrorCode error_code,
- const base::string16& error_message,
- const base::string16& version) override;
+ // chrome::UpdateCheckCallback.
+ void OnUpdateCheckResults(GoogleUpdateUpgradeResult result,
+ GoogleUpdateErrorCode error_code,
+ const base::string16& error_message,
+ const base::string16& version);
// Update the UI to show the status of the upgrade.
void UpdateStatus(GoogleUpdateUpgradeResult result,
@@ -57,19 +56,9 @@ class VersionUpdaterWin : public VersionUpdater,
// result case can now be completeb on the UI thread.
void GotInstalledVersion(const Version& version);
- // Little helper function to create google_updater_.
- void CreateGoogleUpdater();
-
- // Helper function to clear google_updater_.
- void ClearGoogleUpdater();
-
// Returns a window that can be used for elevation.
HWND GetElevationParent();
- // The class that communicates with Google Update to find out if an update is
- // available and asks it to start an upgrade.
- scoped_refptr<GoogleUpdate> google_updater_;
-
// Used for callbacks.
base::WeakPtrFactory<VersionUpdaterWin> weak_factory_;
@@ -122,13 +111,9 @@ class VersionReader
VersionUpdaterWin::VersionUpdaterWin()
: weak_factory_(this) {
- CreateGoogleUpdater();
}
VersionUpdaterWin::~VersionUpdaterWin() {
- // The Google Updater will hold a pointer to the listener until it reports
- // status, so that pointer must be cleared when the listener is destoyed.
- ClearGoogleUpdater();
}
void VersionUpdaterWin::CheckForUpdate(const StatusCallback& callback) {
@@ -142,13 +127,12 @@ void VersionUpdaterWin::CheckForUpdate(const StatusCallback& callback) {
if (!(base::win::GetVersion() == base::win::VERSION_VISTA &&
(base::win::OSInfo::GetInstance()->service_pack().major == 0) &&
!base::win::UserAccountControlIsEnabled())) {
- // This could happen if the page got refreshed after results were returned.
- if (!google_updater_.get())
- CreateGoogleUpdater();
UpdateStatus(UPGRADE_CHECK_STARTED, GOOGLE_UPDATE_NO_ERROR,
base::string16());
// Specify false to not upgrade yet.
- google_updater_->CheckForUpdate(false, GetElevationParent());
+ ::CheckForUpdate(false, GetElevationParent(),
Peter Kasting 2014/11/26 22:13:05 Nit: "::" shouldn't be necessary here, I wouldn't
grt (UTC plus 2) 2014/11/27 04:44:57 ADL wasn't enough to find it. I've renamed the fun
+ base::Bind(&VersionUpdaterWin::OnUpdateCheckResults,
+ weak_factory_.GetWeakPtr()));
}
}
@@ -156,11 +140,11 @@ void VersionUpdaterWin::RelaunchBrowser() const {
chrome::AttemptRestart();
}
-void VersionUpdaterWin::OnReportResults(
- GoogleUpdateUpgradeResult result, GoogleUpdateErrorCode error_code,
- const base::string16& error_message, const base::string16& version) {
- // Drop the last reference to the object so that it gets cleaned up here.
- ClearGoogleUpdater();
+void VersionUpdaterWin::OnUpdateCheckResults(
+ GoogleUpdateUpgradeResult result,
+ GoogleUpdateErrorCode error_code,
+ const base::string16& error_message,
+ const base::string16& version) {
UpdateStatus(result, error_code, error_message);
}
@@ -184,11 +168,11 @@ void VersionUpdaterWin::UpdateStatus(GoogleUpdateUpgradeResult result,
break;
}
case UPGRADE_IS_AVAILABLE: {
- DCHECK(!google_updater_.get()); // Should have been nulled out already.
- CreateGoogleUpdater();
UpdateStatus(UPGRADE_STARTED, GOOGLE_UPDATE_NO_ERROR, base::string16());
// Specify true to upgrade now.
- google_updater_->CheckForUpdate(true, GetElevationParent());
+ ::CheckForUpdate(true, GetElevationParent(),
+ base::Bind(&VersionUpdaterWin::OnUpdateCheckResults,
+ weak_factory_.GetWeakPtr()));
return;
}
case UPGRADE_ALREADY_UP_TO_DATE: {
@@ -252,19 +236,6 @@ void VersionUpdaterWin::GotInstalledVersion(const Version& version) {
base::string16());
}
-void VersionUpdaterWin::CreateGoogleUpdater() {
- ClearGoogleUpdater();
- google_updater_ = new GoogleUpdate();
- google_updater_->set_status_listener(this);
-}
-
-void VersionUpdaterWin::ClearGoogleUpdater() {
- if (google_updater_.get()) {
- google_updater_->set_status_listener(NULL);
- google_updater_ = NULL;
- }
-}
-
BOOL CALLBACK WindowEnumeration(HWND window, LPARAM param) {
if (IsWindowVisible(window)) {
HWND* returned_window = reinterpret_cast<HWND*>(param);

Powered by Google App Engine
This is Rietveld 408576698