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

Unified Diff: chrome/app/keystone_glue.h

Issue 338012: About box auto-update improvements (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 11 years, 2 months 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 | « base/worker_pool_mac.mm ('k') | chrome/app/keystone_glue.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/app/keystone_glue.h
===================================================================
--- chrome/app/keystone_glue.h (revision 30049)
+++ chrome/app/keystone_glue.h (working copy)
@@ -6,28 +6,31 @@
#define CHROME_APP_KEYSTONE_GLUE_H_
#import <Foundation/Foundation.h>
+#import <base/scoped_nsobject.h>
-// Objects which request callbacks from KeystoneGlue (e.g. information
-// on update availability) should implement this protocol. All callbacks
-// require the caller to be spinning in the runloop to happen.
-@protocol KeystoneGlueCallbacks
+// Possible outcomes of -checkForUpdate and -installUpdate. A version may
+// accompany some of these, but beware: a version is never required. For
+// statuses that can be accompanied by a version, the comment indicates what
+// version is referenced.
+enum AutoupdateStatus {
+ kAutoupdateCurrent = 0, // version of the running application
+ kAutoupdateAvailable, // version of the update that is available
+ kAutoupdateInstalled, // version of the update that was installed
+ kAutoupdateCheckFailed, // no version
+ kAutoupdateInstallFailed // no version
+};
-// Callback when a checkForUpdate completes.
-// |latestVersion| may be nil if not returned from the server.
-// |latestVersion| is not a localizable string.
-- (void)upToDateCheckCompleted:(BOOL)upToDate
- latestVersion:(NSString*)latestVersion;
+// kAutoupdateStatusNotification is the name of the notification posted when
+// -checkForUpdate and -installUpdate complete. This notification will be
+// sent with with its sender object set to the KeystoneGlue instance sending
+// the notification. Its userInfo dictionary will contain an AutoupdateStatus
+// value as an intValue at key kAutoupdateStatusStatus. If a version is
+// available (see AutoupdateStatus), it will be present at key
+// kAutoupdateStatusVersion.
+extern const NSString* const kAutoupdateStatusNotification;
+extern const NSString* const kAutoupdateStatusStatus;
+extern const NSString* const kAutoupdateStatusVersion;
-// Callback when a startUpdate completes.
-// |successful| tells if the *check* was successful. This does not
-// necessarily mean updates installed successfully.
-// |installs| tells the number of updates that installed successfully
-// (typically 0 or 1).
-- (void)updateCompleted:(BOOL)successful installs:(int)installs;
-
-@end // protocol KeystoneGlueCallbacks
-
-
// KeystoneGlue is an adapter around the KSRegistration class, allowing it to
// be used without linking directly against its containing KeystoneRegistration
// framework. This is used in an environment where most builds (such as
@@ -55,10 +58,11 @@
KSRegistration* registration_; // strong
NSTimer* timer_; // strong
- // Data for callbacks, all strong. Deallocated (if needed) in a
- // NSNotificationCenter callback.
- NSObject<KeystoneGlueCallbacks>* startTarget_;
- NSObject<KeystoneGlueCallbacks>* checkTarget_;
+ // The most recent kAutoupdateStatusNotification notification posted.
+ scoped_nsobject<NSNotification> recentNotification_;
+
+ // YES if an update was ever successfully installed by -installUpdate.
+ BOOL updateSuccessfullyInstalled_;
}
// Return the default Keystone Glue object.
@@ -68,22 +72,28 @@
// with Keystone, and set up periodic activity pings.
- (void)registerWithKeystone;
-// Check if updates are available.
-// upToDateCheckCompleted:: called on target when done.
-// Return NO if we could not start the check.
-- (BOOL)checkForUpdate:(NSObject<KeystoneGlueCallbacks>*)target;
+// -checkForUpdate launches a check for updates, and -installUpdate begins
+// installing an available update. For each, status will be communicated via
+// a kAutoupdateStatusNotification notification, and will also be available
+// through -recentUpdateStatus.
+- (void)checkForUpdate;
+- (void)installUpdate;
-// Start an update.
-// updateCompleted:: called on target when done.
-// This cannot be cancelled.
-// Return NO if we could not start the check.
-- (BOOL)startUpdate:(NSObject<KeystoneGlueCallbacks>*)target;
+// Accessor for recentNotification_. Returns an autoreleased NSNotification.
+- (NSNotification*)recentNotification;
-@end // KeystoneGlue
+// Clears the saved recentNotification_.
+- (void)clearRecentNotification;
+@end // @interface KeystoneGlue
-@interface KeystoneGlue (ExposedForTesting)
+@interface KeystoneGlue(ExposedForTesting)
+// Release the shared instance. Use this in tests to reset the shared
+// instance in case strange things are done to it for testing purposes. Never
+// call this from non-test code.
++ (void)releaseDefaultKeystoneGlue;
+
// Load any params we need for configuring Keystone.
- (void)loadParameters;
@@ -94,11 +104,11 @@
- (void)stopTimer;
// Called when a checkForUpdate: notification completes.
-- (void)checkComplete:(NSNotification *)notification;
+- (void)checkForUpdateComplete:(NSNotification*)notification;
-// Called when a startUpdate: notification completes.
-- (void)startUpdateComplete:(NSNotification *)notification;
+// Called when an installUpdate: notification completes.
+- (void)installUpdateComplete:(NSNotification*)notification;
-@end // KeystoneGlue (ExposedForTesting)
+@end // @interface KeystoneGlue(ExposedForTesting)
#endif // CHROME_APP_KEYSTONE_GLUE_H_
« no previous file with comments | « base/worker_pool_mac.mm ('k') | chrome/app/keystone_glue.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698