diff options
author | Damiano Galassi <[email protected]> | 2019-03-10 14:04:51 +0100 |
---|---|---|
committer | Damiano Galassi <[email protected]> | 2019-03-12 11:42:50 +0100 |
commit | e6a0642d20d1136947099bd47dc70cd5a0f55a51 (patch) | |
tree | 6a527c24d3b0b22e3d9aedd88f9e2c8aa6b71485 /macosx/Sparkle/Sparkle.framework/Versions/A/Headers/SPUUpdaterDelegate.h | |
parent | 9cd1ac3096533af12b4a144bdaefc9c3d89d526c (diff) |
MacGui: use ui-separation-and-xpc Sparkle branch.
Diffstat (limited to 'macosx/Sparkle/Sparkle.framework/Versions/A/Headers/SPUUpdaterDelegate.h')
-rwxr-xr-x | macosx/Sparkle/Sparkle.framework/Versions/A/Headers/SPUUpdaterDelegate.h | 305 |
1 files changed, 305 insertions, 0 deletions
diff --git a/macosx/Sparkle/Sparkle.framework/Versions/A/Headers/SPUUpdaterDelegate.h b/macosx/Sparkle/Sparkle.framework/Versions/A/Headers/SPUUpdaterDelegate.h new file mode 100755 index 000000000..09132e74e --- /dev/null +++ b/macosx/Sparkle/Sparkle.framework/Versions/A/Headers/SPUUpdaterDelegate.h @@ -0,0 +1,305 @@ +// +// SPUUpdaterDelegate.h +// Sparkle +// +// Created by Mayur Pawashe on 8/12/16. +// Copyright © 2016 Sparkle Project. All rights reserved. +// + +#if __has_feature(modules) +@import Foundation; +#else +#import <Foundation/Foundation.h> +#endif + +#import <Sparkle/SUExport.h> + +@protocol SUVersionComparison; +@class SPUUpdater, SUAppcast, SUAppcastItem; + +NS_ASSUME_NONNULL_BEGIN + +// ----------------------------------------------------------------------------- +// SUUpdater Notifications for events that might be interesting to more than just the delegate +// The updater will be the notification object +// ----------------------------------------------------------------------------- +SU_EXPORT extern NSString *const SUUpdaterDidFinishLoadingAppCastNotification; +SU_EXPORT extern NSString *const SUUpdaterDidFindValidUpdateNotification; +SU_EXPORT extern NSString *const SUUpdaterDidNotFindUpdateNotification; +SU_EXPORT extern NSString *const SUUpdaterWillRestartNotification; +#define SUUpdaterWillRelaunchApplicationNotification SUUpdaterWillRestartNotification; +#define SUUpdaterWillInstallUpdateNotification SUUpdaterWillRestartNotification; + +// Key for the SUAppcastItem object in the SUUpdaterDidFindValidUpdateNotification userInfo +SU_EXPORT extern NSString *const SUUpdaterAppcastItemNotificationKey; +// Key for the SUAppcast object in the SUUpdaterDidFinishLoadingAppCastNotification userInfo +SU_EXPORT extern NSString *const SUUpdaterAppcastNotificationKey; + +// ----------------------------------------------------------------------------- +// SPUUpdater Delegate: +// ----------------------------------------------------------------------------- + +typedef NS_ENUM(NSInteger, SPUUpdateCheck) +{ + SPUUpdateCheckUserInitiated = 0, + SPUUpdateCheckBackgroundScheduled = 1 +}; + +/*! + Provides methods to control the behavior of an SPUUpdater object. + */ +@protocol SPUUpdaterDelegate <NSObject> +@optional + +/*! + Called when a background update will be scheduled after a delay. + + Automatic update checks need to be enabled for this to trigger. + + \param delay The delay until the next scheduled update will occur. + + \param updater The updater instance. + */ +- (void)updater:(SPUUpdater *)updater willScheduleUpdateCheckAfterDelay:(NSTimeInterval)delay; + +/*! + Called when no updates will be scheduled in the future. + + This may later change if automatic update checks become enabled. + + \param updater The updater instance. + */ +- (void)updaterWillIdleSchedulingUpdates:(SPUUpdater *)updater; + +/*! + Returns whether to allow Sparkle to pop up. + + For example, this may be used to prevent Sparkle from interrupting a setup assistant. + Alternatively, you may want to consider starting the updater after eg: the setup assistant finishes + + \param updater The updater instance. + */ +- (BOOL)updaterMayCheckForUpdates:(SPUUpdater *)updater; + +/*! + Returns additional parameters to append to the appcast URL's query string. + + This is potentially based on whether or not Sparkle will also be sending along the system profile. + + \param updater The updater instance. + \param sendingProfile Whether the system profile will also be sent. + + \return An array of dictionaries with keys: "key", "value", "displayKey", "displayValue", the latter two being specifically for display to the user. + */ +#if __has_feature(objc_generics) +- (NSArray<NSDictionary<NSString *, NSString *> *> *)feedParametersForUpdater:(SPUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile; +#else +- (NSArray *)feedParametersForUpdater:(SPUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile; +#endif + +/*! + Returns a custom appcast URL. + + Override this to dynamically specify the entire URL. + Alternatively you may want to consider adding a feed parameter using -feedParametersForUpdater:sendingSystemProfile: + and having the server which appcast to serve. + + \param updater The updater instance. + */ +- (nullable NSString *)feedURLStringForUpdater:(SPUUpdater *)updater; + +/*! + Returns whether Sparkle should prompt the user about automatic update checks. + + Use this to override the default behavior. + + \param updater The updater instance. + */ +- (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SPUUpdater *)updater; + +/*! + Called after Sparkle has downloaded the appcast from the remote server. + + Implement this if you want to do some special handling with the appcast once it finishes loading. + + \param updater The updater instance. + \param appcast The appcast that was downloaded from the remote server. + */ +- (void)updater:(SPUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast; + +/*! + Returns the item in the appcast corresponding to the update that should be installed. + + If you're using special logic or extensions in your appcast, + implement this to use your own logic for finding a valid update, if any, + in the given appcast. + + \param appcast The appcast that was downloaded from the remote server. + \param updater The updater instance. + \return The best valid appcast item, or nil if you don't want to be delegated this task. + */ +- (nullable SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SPUUpdater *)updater; + +/*! + Called when a valid update is found by the update driver. + + \param updater The updater instance. + \param item The appcast item corresponding to the update that is proposed to be installed. + */ +- (void)updater:(SPUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)item; + +/*! + Called when a valid update is not found. + + \param updater The updater instance. + */ +- (void)updaterDidNotFindUpdate:(SPUUpdater *)updater; + +/*! + Returns whether the release notes (if available) should be downloaded after an update is found and shown. + + This is specifically for the releaseNotesLink element in the appcast. + + \param updater The updater instance. + + \return \c YES to download and show the release notes if available, otherwise NO. The default behavior is YES. + */ +- (BOOL)updaterShouldDownloadReleaseNotes:(SPUUpdater *)updater; + +/*! + Called immediately before downloading the specified update. + + \param updater The updater instance. + \param item The appcast item corresponding to the update that is proposed to be downloaded. + \param request The mutable URL request that will be used to download the update. + */ +- (void)updater:(SPUUpdater *)updater willDownloadUpdate:(SUAppcastItem *)item withRequest:(NSMutableURLRequest *)request; + +/*! + Called after the specified update failed to download. + + \param updater The updater instance. + \param item The appcast item corresponding to the update that failed to download. + \param error The error generated by the failed download. + */ +- (void)updater:(SPUUpdater *)updater failedToDownloadUpdate:(SUAppcastItem *)item error:(NSError *)error; + +/*! + Called when the user clicks the cancel button while and update is being downloaded. + + \param updater The updater instance. + */ +- (void)userDidCancelDownload:(SPUUpdater *)updater; + +/*! + Called immediately before installing the specified update. + + \param updater The updater instance. + \param item The appcast item corresponding to the update that is proposed to be installed. + */ +- (void)updater:(SPUUpdater *)updater willInstallUpdate:(SUAppcastItem *)item; + +/*! + Returns whether the relaunch should be delayed in order to perform other tasks. + + This is not called if the user didn't relaunch on the previous update, + in that case it will immediately restart. + + This may also not be called if the application is not going to relaunch after it terminates. + + \param updater The updater instance. + \param item The appcast item corresponding to the update that is proposed to be installed. + \param installHandler The install handler that must be completed before continuing with the relaunch. + + \return \c YES to delay the relaunch until \p installHandler is invoked. + */ +- (BOOL)updater:(SPUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)item untilInvokingBlock:(void (^)(void))installHandler; + +/*! + Returns whether the application should be relaunched at all. + + Some apps \b cannot be relaunched under certain circumstances. + This method can be used to explicitly prevent a relaunch. + + \param updater The updater instance. + \return YES if the updater should be relaunched, otherwise NO if it shouldn't. + */ +- (BOOL)updaterShouldRelaunchApplication:(SPUUpdater *)updater; + +/*! + Called immediately before relaunching. + + \param updater The updater instance. + */ +- (void)updaterWillRelaunchApplication:(SPUUpdater *)updater; + +/*! + Returns an object that compares version numbers to determine their arithmetic relation to each other. + + This method allows you to provide a custom version comparator. + If you don't implement this method or return \c nil, + the standard version comparator will be used. Note that the + standard version comparator may be used during installation for preventing + a downgrade, even if you provide a custom comparator here. + + \sa SUStandardVersionComparator + + \param updater The updater instance. + \return The custom version comparator or nil if you don't want to be delegated this task. + */ +- (nullable id<SUVersionComparison>)versionComparatorForUpdater:(SPUUpdater *)updater; + +/*! + Returns whether or not the updater should allow interaction from the installer + + Use this to override the default behavior which is to allow interaction with the installer. + + If interaction is allowed, then an authorization prompt may show up to the user if they do + not curently have sufficient privileges to perform the installation of the new update. + The installer may also show UI and progress when interaction is allowed. + + On the other hand, if interaction is not allowed, then an installation may fail if the user does not + have sufficient privileges to perform the installation. In this case, the feed and update may not even be downloaded. + + Note this has no effect if the update has already been downloaded in the background silently and ready to be resumed. + + \param updater The updater instance. + \param updateCheck The type of update check being performed. + */ +- (BOOL)updater:(SPUUpdater *)updater shouldAllowInstallerInteractionForUpdateCheck:(SPUUpdateCheck)updateCheck; + +/*! + Returns the decryption password (if any) which is used to extract the update archive DMG. + + Return nil if no password should be used. + + \param updater The updater instance. + \return The password used for decrypting the archive, or nil if no password should be used. + */ +- (nullable NSString *)decryptionPasswordForUpdater:(SPUUpdater *)updater; + +/*! + Called when an update is scheduled to be silently installed on quit after downloading the update automatically. + + \param updater The updater instance. + \param item The appcast item corresponding to the update that is proposed to be installed. + \param immediateInstallHandler The install handler to immediately install the update. No UI interaction will be shown and the application will be relaunched after installation. + \return Return YES if the delegate will handle installing the update or NO if the updater should be given responsibility. + + If the updater is given responsibility, it can later remind the user an update is available if they have not terminated the application for a long time. + Also if the updater is given responsibility and the update item is marked critical, the new update will be presented to the user immediately after. + Even if the immediateInstallHandler is not invoked, the installer will attempt to install the update on termination. + */ +- (BOOL)updater:(SPUUpdater *)updater willInstallUpdateOnQuit:(SUAppcastItem *)item immediateInstallationBlock:(void (^)(void))immediateInstallHandler; + +/*! + Called after an update is aborted due to an error. + + \param updater The updater instance. + \param error The error that caused the abort + */ +- (void)updater:(SPUUpdater *)updater didAbortWithError:(NSError *)error; + +@end + +NS_ASSUME_NONNULL_END |