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

Unified Diff: chrome/browser/google/google_update_win.h

Issue 729273002: Modernize on-demand update checks on Windows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: final tweaks Created 6 years 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
« no previous file with comments | « no previous file | chrome/browser/google/google_update_win.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/google/google_update_win.h
diff --git a/chrome/browser/google/google_update_win.h b/chrome/browser/google/google_update_win.h
index 659f3932caebfb087cb169da136583d94f10a1d6..75119e841281b836a81f55f1ea6ad5e7b4cb6165 100644
--- a/chrome/browser/google/google_update_win.h
+++ b/chrome/browser/google/google_update_win.h
@@ -6,17 +6,16 @@
#define CHROME_BROWSER_GOOGLE_GOOGLE_UPDATE_WIN_H_
#include "base/basictypes.h"
+#include "base/callback_forward.h"
#include "base/memory/ref_counted.h"
#include "base/strings/string16.h"
+#include "base/win/scoped_comptr.h"
#include "google_update/google_update_idl.h"
+#include "ui/gfx/native_widget_types.h"
namespace base {
-class MessageLoop;
-}
-
-namespace views {
-class Widget;
-}
+class TaskRunner;
+} // namespace base
// The status of the upgrade. UPGRADE_STARTED and UPGRADE_CHECK_STARTED are
// internal states and will not be reported as results to the listener.
@@ -52,10 +51,10 @@ enum GoogleUpdateErrorCode {
// Google Update OnDemand COM class reported an error during a check for
// update (or while upgrading).
GOOGLE_UPDATE_ONDEMAND_CLASS_REPORTED_ERROR = 4,
- // A call to GetResults failed.
- GOOGLE_UPDATE_GET_RESULT_CALL_FAILED = 5,
- // A call to GetVersionInfo failed.
- GOOGLE_UPDATE_GET_VERSION_INFO_FAILED = 6,
+ // A call to GetResults failed. DEPRECATED.
+ // GOOGLE_UPDATE_GET_RESULT_CALL_FAILED = 5,
+ // A call to GetVersionInfo failed. DEPRECATED
+ // GOOGLE_UPDATE_GET_VERSION_INFO_FAILED = 6,
// An error occurred while upgrading (or while checking for update).
// Check the Google Update log in %TEMP% for more details.
GOOGLE_UPDATE_ERROR_UPDATING = 7,
@@ -68,84 +67,34 @@ enum GoogleUpdateErrorCode {
NUM_ERROR_CODES
};
-// The GoogleUpdateStatusListener interface is used by components to receive
-// notifications about the results of an Google Update operation.
-class GoogleUpdateStatusListener {
- public:
- // This function is called when Google Update has finished its operation and
- // wants to notify us about the results. |results| represents what the end
- // state is, |error_code| represents what error occurred, |error_message| is a
- // string version of the same (might be blank) and |version| specifies what
- // new version Google Update detected (or installed). This value can be a
- // blank string, if the version tag in the Update{} block (in Google Update's
- // server config for Chrome) is blank.
- virtual void OnReportResults(GoogleUpdateUpgradeResult results,
- GoogleUpdateErrorCode error_code,
- const base::string16& error_message,
- const base::string16& version) = 0;
-};
-
-////////////////////////////////////////////////////////////////////////////////
-//
-// The Google Update class is responsible for communicating with Google Update
-// and get it to perform operations on our behalf (for example, CheckForUpdate).
-// This class will report back to its parent via the GoogleUpdateStatusListener
-// interface and will delete itself after reporting back.
-//
-////////////////////////////////////////////////////////////////////////////////
-class GoogleUpdate : public base::RefCountedThreadSafe<GoogleUpdate> {
- public:
- GoogleUpdate();
-
- // Ask Google Update to see if a new version is available. If the parameter
- // |install_if_newer| is true then Google Update will also install that new
- // version.
- // |window| should point to a foreground window. This is needed to ensure
- // that Vista/Windows 7 UAC prompts show up in the foreground. It may also
- // be null.
- void CheckForUpdate(bool install_if_newer, HWND window);
-
- // Pass NULL to clear the listener
- void set_status_listener(GoogleUpdateStatusListener* listener) {
- listener_ = listener;
- }
-
- private:
- friend class base::RefCountedThreadSafe<GoogleUpdate>;
-
- virtual ~GoogleUpdate();
-
- // This function reports failure from the Google Update operation to the
- // listener.
- // Note, after this function completes, this object will have deleted itself.
- bool ReportFailure(HRESULT hr, GoogleUpdateErrorCode error_code,
- const base::string16& error_message,
- base::MessageLoop* main_loop);
-
- // The update check needs to run on another thread than the main thread, and
- // therefore CheckForUpdate will delegate to this function. |main_loop| points
- // to the message loop that the response must come from.
- // |window| should point to a foreground window. This is needed to ensure that
- // Vista/Windows 7 UAC prompts show up in the foreground. It may also be null.
- void InitiateGoogleUpdateCheck(bool install_if_newer, HWND window,
- base::MessageLoop* main_loop);
-
- // This function reports the results of the GoogleUpdate operation to the
- // listener. If results indicates an error, the |error_code| and
- // |error_message| will indicate which error occurred.
- // Note, after this function completes, this object will have deleted itself.
- void ReportResults(GoogleUpdateUpgradeResult results,
- GoogleUpdateErrorCode error_code,
- const base::string16& error_message);
-
- // Which version string Google Update found (if a new one was available).
- // Otherwise, this will be blank.
- base::string16 version_available_;
-
- // The listener who is interested in finding out the result of the operation.
- GoogleUpdateStatusListener* listener_;
-
- DISALLOW_COPY_AND_ASSIGN(GoogleUpdate);
-};
+// A callback run when a check for updates has completed. |result| indicates the
+// end state of the operation. When |result| is UPGRADE_ERROR, |error_code| and
+// |error_message| indicate the the nature of the error. When |result| is
+// UPGRADE_IS_AVAILABLE or UPGRADE_SUCCESSFUL, |version| may indicate the new
+// version Google Update detected (it may, however, be empty).
+typedef base::Callback<void(GoogleUpdateUpgradeResult result,
+ GoogleUpdateErrorCode error_code,
+ const base::string16& error_message,
+ const base::string16& version)> UpdateCheckCallback;
+
+// Begins an asynchronous update check on |task_runner|, which must run a
+// TYPE_UI message loop. If |install_if_newer| is true, an update will be
+// applied. |elevation_window| is the window which should own any necessary
+// elevation UI. |callback| will be run on the caller's thread when the check
+// completes.
+void BeginUpdateCheck(const scoped_refptr<base::TaskRunner>& task_runner,
+ bool install_if_newer,
+ gfx::AcceleratedWidget elevation_window,
+ const UpdateCheckCallback& callback);
+
+// A type of callback supplied by tests to provide a custom IGoogleUpdate
+// implementation.
+typedef base::Callback<HRESULT(base::win::ScopedComPtr<IGoogleUpdate>*)>
+ OnDemandAppsClassFactory;
+
+// For use by tests that wish to provide a custom IGoogleUpdate implementation
+// independent of Google Update's.
+void SetGoogleUpdateFactoryForTesting(
+ const OnDemandAppsClassFactory& google_update_factory);
#endif // CHROME_BROWSER_GOOGLE_GOOGLE_UPDATE_WIN_H_
« no previous file with comments | « no previous file | chrome/browser/google/google_update_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698