From 50eb5454d4d7a87cb9af0e5b60a52f71aaf2685f Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Fri, 31 Jan 2014 21:47:59 +0800 Subject: [PATCH] Still subscribe to "updates" for update notifications. It seems that we should subscribeError to checkForUpdatesCommand to catch all errors, and the "updates" would only work when there is no error happened. --- browser/auto_updater_mac.mm | 46 +++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/browser/auto_updater_mac.mm b/browser/auto_updater_mac.mm index 111dcdcf13e4..be383ab47367 100644 --- a/browser/auto_updater_mac.mm +++ b/browser/auto_updater_mac.mm @@ -37,6 +37,31 @@ void AutoUpdater::SetFeedURL(const std::string& feed) { NSURL* url = [NSURL URLWithString:base::SysUTF8ToNSString(feed)]; NSURLRequest* urlRequest = [NSURLRequest requestWithURL:url]; g_updater = [[SQRLUpdater alloc] initWithUpdateRequest:urlRequest]; + + AutoUpdaterDelegate* delegate = GetDelegate(); + if (!delegate) + return; + + // Subscribe to events. + __block bool has_update = false; + [g_updater.updates subscribeNext:^(SQRLDownloadedUpdate* downloadedUpdate) { + has_update = true; + + // There is a new update that has been downloaded. + SQRLUpdate* update = downloadedUpdate.update; + delegate->OnUpdateDownloaded( + base::SysNSStringToUTF8(update.releaseNotes), + base::SysNSStringToUTF8(update.releaseName), + base::Time::FromDoubleT(update.releaseDate.timeIntervalSince1970), + base::SysNSStringToUTF8(update.updateURL.absoluteString), + base::Bind(RelaunchToInstallUpdate)); + } completed:^() { + // When the completed event is sent with no update, then we know there + // is no update available. + if (!has_update) + delegate->OnUpdateNotAvailable(); + has_update = false; + }]; } } @@ -48,28 +73,9 @@ void AutoUpdater::CheckForUpdates() { if (!delegate) return; - // Subscribe to events. - __block bool has_update = false; - [signal subscribeNext:^(SQRLDownloadedUpdate* downloadedUpdate) { - has_update = true; - - // There is a new update that has been downloaded. - SQRLUpdate* update = downloadedUpdate.update; - delegate->OnUpdateDownloaded( - base::SysNSStringToUTF8(update.releaseNotes), - base::SysNSStringToUTF8(update.releaseName), - base::Time::FromDoubleT(update.releaseDate.timeIntervalSince1970), - base::SysNSStringToUTF8(update.updateURL.absoluteString), - base::Bind(RelaunchToInstallUpdate)); - } error:^(NSError* error) { + [signal subscribeError:^(NSError* error) { // Something wrong happened. delegate->OnError(base::SysNSStringToUTF8(error.localizedDescription)); - } completed:^() { - // When the completed event is sent with no update, then we know there - // is no update available. - if (!has_update) - delegate->OnUpdateNotAvailable(); - has_update = false; }]; }