| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #import "chrome/app/keystone_glue.h" | 5 #import "chrome/app/keystone_glue.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/mac_util.h" | 8 #include "base/mac_util.h" |
| 9 #import "base/worker_pool_mac.h" | 9 #import "base/worker_pool_mac.h" |
| 10 #include "chrome/common/chrome_constants.h" | 10 #include "chrome/common/chrome_constants.h" |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 - (void)stopTimer { | 234 - (void)stopTimer { |
| 235 [timer_ invalidate]; | 235 [timer_ invalidate]; |
| 236 } | 236 } |
| 237 | 237 |
| 238 - (void)markActive:(NSTimer*)timer { | 238 - (void)markActive:(NSTimer*)timer { |
| 239 KSRegistration* ksr = [timer userInfo]; | 239 KSRegistration* ksr = [timer userInfo]; |
| 240 [ksr setActive]; | 240 [ksr setActive]; |
| 241 } | 241 } |
| 242 | 242 |
| 243 - (void)checkForUpdate { | 243 - (void)checkForUpdate { |
| 244 DCHECK(![self asyncOperationPending]); |
| 245 |
| 244 if (!registration_) { | 246 if (!registration_) { |
| 245 [self updateStatus:kAutoupdateCheckFailed version:nil]; | 247 [self updateStatus:kAutoupdateCheckFailed version:nil]; |
| 246 return; | 248 return; |
| 247 } | 249 } |
| 248 | 250 |
| 251 [self updateStatus:kAutoupdateChecking version:nil]; |
| 252 |
| 249 [registration_ checkForUpdate]; | 253 [registration_ checkForUpdate]; |
| 250 | 254 |
| 251 // Upon completion, KSRegistrationCheckForUpdateNotification will be posted, | 255 // Upon completion, KSRegistrationCheckForUpdateNotification will be posted, |
| 252 // and -checkForUpdateComplete: will be called. | 256 // and -checkForUpdateComplete: will be called. |
| 253 } | 257 } |
| 254 | 258 |
| 255 - (void)checkForUpdateComplete:(NSNotification*)notification { | 259 - (void)checkForUpdateComplete:(NSNotification*)notification { |
| 256 NSDictionary* userInfo = [notification userInfo]; | 260 NSDictionary* userInfo = [notification userInfo]; |
| 257 BOOL updatesAvailable = | 261 BOOL updatesAvailable = |
| 258 [[userInfo objectForKey:KSRegistrationStatusKey] boolValue]; | 262 [[userInfo objectForKey:KSRegistrationStatusKey] boolValue]; |
| 259 | 263 |
| 260 if (updatesAvailable) { | 264 if (updatesAvailable) { |
| 261 // If an update is known to be available, go straight to | 265 // If an update is known to be available, go straight to |
| 262 // -updateStatus:version:. It doesn't matter what's currently on disk. | 266 // -updateStatus:version:. It doesn't matter what's currently on disk. |
| 263 NSString* version = [userInfo objectForKey:KSRegistrationVersionKey]; | 267 NSString* version = [userInfo objectForKey:KSRegistrationVersionKey]; |
| 264 [self updateStatus:kAutoupdateAvailable version:version]; | 268 [self updateStatus:kAutoupdateAvailable version:version]; |
| 265 } else { | 269 } else { |
| 266 // If no updates are available, check what's on disk, because an update | 270 // If no updates are available, check what's on disk, because an update |
| 267 // may have already been installed. This check happens on another thread, | 271 // may have already been installed. This check happens on another thread, |
| 268 // and -updateStatus:version: will be called on the main thread when done. | 272 // and -updateStatus:version: will be called on the main thread when done. |
| 269 [self determineUpdateStatusAsync]; | 273 [self determineUpdateStatusAsync]; |
| 270 } | 274 } |
| 271 } | 275 } |
| 272 | 276 |
| 273 - (void)installUpdate { | 277 - (void)installUpdate { |
| 278 DCHECK(![self asyncOperationPending]); |
| 279 |
| 274 if (!registration_) { | 280 if (!registration_) { |
| 275 [self updateStatus:kAutoupdateInstallFailed version:nil]; | 281 [self updateStatus:kAutoupdateInstallFailed version:nil]; |
| 276 return; | 282 return; |
| 277 } | 283 } |
| 278 | 284 |
| 285 [self updateStatus:kAutoupdateInstalling version:nil]; |
| 286 |
| 279 [registration_ startUpdate]; | 287 [registration_ startUpdate]; |
| 280 | 288 |
| 281 // Upon completion, KSRegistrationStartUpdateNotification will be posted, | 289 // Upon completion, KSRegistrationStartUpdateNotification will be posted, |
| 282 // and -installUpdateComplete: will be called. | 290 // and -installUpdateComplete: will be called. |
| 283 } | 291 } |
| 284 | 292 |
| 285 - (void)installUpdateComplete:(NSNotification*)notification { | 293 - (void)installUpdateComplete:(NSNotification*)notification { |
| 286 NSDictionary* userInfo = [notification userInfo]; | 294 NSDictionary* userInfo = [notification userInfo]; |
| 287 BOOL checkSuccessful = | 295 BOOL checkSuccessful = |
| 288 [[userInfo objectForKey:KSUpdateCheckSuccessfulKey] boolValue]; | 296 [[userInfo objectForKey:KSUpdateCheckSuccessfulKey] boolValue]; |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 384 } | 392 } |
| 385 | 393 |
| 386 - (NSNotification*)recentNotification { | 394 - (NSNotification*)recentNotification { |
| 387 return [[recentNotification_ retain] autorelease]; | 395 return [[recentNotification_ retain] autorelease]; |
| 388 } | 396 } |
| 389 | 397 |
| 390 - (void)clearRecentNotification { | 398 - (void)clearRecentNotification { |
| 391 recentNotification_.reset(nil); | 399 recentNotification_.reset(nil); |
| 392 } | 400 } |
| 393 | 401 |
| 402 - (AutoupdateStatus)recentStatus { |
| 403 NSDictionary* dictionary = [recentNotification_ userInfo]; |
| 404 return static_cast<AutoupdateStatus>( |
| 405 [[dictionary objectForKey:kAutoupdateStatusStatus] intValue]); |
| 406 } |
| 407 |
| 408 - (BOOL)asyncOperationPending { |
| 409 AutoupdateStatus status = [self recentStatus]; |
| 410 return status == kAutoupdateChecking || status == kAutoupdateInstalling; |
| 411 } |
| 412 |
| 394 @end // @implementation KeystoneGlue | 413 @end // @implementation KeystoneGlue |
| OLD | NEW |