diff options
Diffstat (limited to 'chrome/browser/cocoa/keystone_glue.h')
-rw-r--r-- | chrome/browser/cocoa/keystone_glue.h | 209 |
1 files changed, 0 insertions, 209 deletions
diff --git a/chrome/browser/cocoa/keystone_glue.h b/chrome/browser/cocoa/keystone_glue.h deleted file mode 100644 index 69b5351..0000000 --- a/chrome/browser/cocoa/keystone_glue.h +++ /dev/null @@ -1,209 +0,0 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_COCOA_KEYSTONE_GLUE_H_ -#define CHROME_BROWSER_COCOA_KEYSTONE_GLUE_H_ -#pragma once - -#include "base/string16.h" - -#if defined(__OBJC__) - -#import <Foundation/Foundation.h> - -#import "base/scoped_nsobject.h" -#include "chrome/browser/cocoa/scoped_authorizationref.h" - -// Possible outcomes of various operations. 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. -// A notification posted containing an asynchronous status will always be -// followed by a notification with a terminal status. -enum AutoupdateStatus { - kAutoupdateNone = 0, // no version (initial state only) - kAutoupdateRegistering, // no version (asynchronous operation in progress) - kAutoupdateRegistered, // no version - kAutoupdateChecking, // no version (asynchronous operation in progress) - kAutoupdateCurrent, // version of the running application - kAutoupdateAvailable, // version of the update that is available - kAutoupdateInstalling, // no version (asynchronous operation in progress) - kAutoupdateInstalled, // version of the update that was installed - kAutoupdatePromoting, // no version (asynchronous operation in progress) - kAutoupdatePromoted, // no version - kAutoupdateRegisterFailed, // no version - kAutoupdateCheckFailed, // no version - kAutoupdateInstallFailed, // no version - kAutoupdatePromoteFailed, // no version -}; - -// 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 NSString* const kAutoupdateStatusNotification; -extern NSString* const kAutoupdateStatusStatus; -extern NSString* const kAutoupdateStatusVersion; - -namespace { - -enum BrandFileType { - kBrandFileTypeNotDetermined = 0, - kBrandFileTypeNone, - kBrandFileTypeUser, - kBrandFileTypeSystem, -}; - -} // namespace - -// 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 -// developer builds) don't want or need Keystone support and might not even -// have the framework available. Enabling Keystone support in an application -// that uses KeystoneGlue is as simple as dropping -// KeystoneRegistration.framework in the application's Frameworks directory -// and providing the relevant information in its Info.plist. KeystoneGlue -// requires that the KSUpdateURL key be set in the application's Info.plist, -// and that it contain a string identifying the update URL to be used by -// Keystone. - -@class KSRegistration; - -@interface KeystoneGlue : NSObject { - @protected - - // Data for Keystone registration - NSString* productID_; - NSString* appPath_; - NSString* url_; - NSString* version_; - NSString* channel_; // Logically: Dev, Beta, or Stable. - BrandFileType brandFileType_; - - // And the Keystone registration itself, with the active timer - KSRegistration* registration_; // strong - NSTimer* timer_; // strong - - // The most recent kAutoupdateStatusNotification notification posted. - scoped_nsobject<NSNotification> recentNotification_; - - // The authorization object, when it needs to persist because it's being - // carried across threads. - scoped_AuthorizationRef authorization_; - - // YES if a synchronous promotion operation is in progress (promotion during - // installation). - BOOL synchronousPromotion_; - - // YES if an update was ever successfully installed by -installUpdate. - BOOL updateSuccessfullyInstalled_; -} - -// Return the default Keystone Glue object. -+ (id)defaultKeystoneGlue; - -// Load KeystoneRegistration.framework if present, call into it to register -// with Keystone, and set up periodic activity pings. -- (void)registerWithKeystone; - -// -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 -recentNotification. -- (void)checkForUpdate; -- (void)installUpdate; - -// Accessor for recentNotification_. Returns an autoreleased NSNotification. -- (NSNotification*)recentNotification; - -// Accessor for the kAutoupdateStatusStatus field of recentNotification_'s -// userInfo dictionary. -- (AutoupdateStatus)recentStatus; - -// Returns YES if an asynchronous operation is pending: if an update check or -// installation attempt is currently in progress. -- (BOOL)asyncOperationPending; - -// Returns YES if the application is running from a read-only filesystem, -// such as a disk image. -- (BOOL)isOnReadOnlyFilesystem; - -// -needsPromotion is YES if the application needs its ticket promoted to -// a system ticket. This will be YES when the application is on a user -// ticket and determines that the current user does not have sufficient -// permission to perform the update. -// -// -wantsPromotion is YES if the application wants its ticket promoted to -// a system ticket, even if it doesn't need it as determined by -// -needsPromotion. -wantsPromotion will always be YES if -needsPromotion is, -// and it will additionally be YES when the application is on a user ticket -// and appears to be installed in a system-wide location such as -// /Applications. -// -// Use -needsPromotion to decide whether to show any update UI at all. If -// it's YES, there's no sense in asking the user to "update now" because it -// will fail given the rights and permissions involved. On the other hand, -// when -needsPromotion is YES, the application can encourage the user to -// promote the ticket so that updates will work properly. -// -// Use -wantsPromotion to decide whether to allow the user to promote. The -// user shouldn't be nagged about promotion on the basis of -wantsPromotion, -// but if it's YES, the user should be allowed to promote the ticket. -- (BOOL)needsPromotion; -- (BOOL)wantsPromotion; - -// Promotes the Keystone ticket into the system store. System Keystone will -// be installed if necessary. If synchronous is NO, the promotion may occur -// in the background. synchronous should be YES for promotion during -// installation. The KeystoneGlue object assumes ownership of -// authorization_arg. -- (void)promoteTicketWithAuthorization:(AuthorizationRef)authorization_arg - synchronous:(BOOL)synchronous; - -// Requests authorization and calls -promoteTicketWithAuthorization: in -// asynchronous mode. -- (void)promoteTicket; - -// Sets a new value for appPath. Used during installation to point a ticket -// at the installed copy. -- (void)setAppPath:(NSString*)appPath; - -@end // @interface KeystoneGlue - -@interface KeystoneGlue(ExposedForTesting) - -// Load any params we need for configuring Keystone. -- (void)loadParameters; - -// Load the Keystone registration object. -// Return NO on failure. -- (BOOL)loadKeystoneRegistration; - -- (void)stopTimer; - -// Called when a checkForUpdate: notification completes. -- (void)checkForUpdateComplete:(NSNotification*)notification; - -// Called when an installUpdate: notification completes. -- (void)installUpdateComplete:(NSNotification*)notification; - -@end // @interface KeystoneGlue(ExposedForTesting) - -#endif // __OBJC__ - -// Functions that may be accessed from non-Objective-C C/C++ code. -namespace keystone_glue { - -// True if Keystone is enabled. -bool KeystoneEnabled(); - -// The version of the application currently installed on disk. -string16 CurrentlyInstalledVersion(); - -} // namespace keystone_glue - -#endif // CHROME_BROWSER_COCOA_KEYSTONE_GLUE_H_ |