| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #include "chrome/browser/extensions/external_install_ui.h" | 5 #include "chrome/browser/extensions/external_install_ui.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 237 | 237 |
| 238 // ExternalInstallMenuAlert ------------------------------------------------- | 238 // ExternalInstallMenuAlert ------------------------------------------------- |
| 239 | 239 |
| 240 ExternalInstallMenuAlert::ExternalInstallMenuAlert( | 240 ExternalInstallMenuAlert::ExternalInstallMenuAlert( |
| 241 ExtensionService* service, | 241 ExtensionService* service, |
| 242 const Extension* extension) | 242 const Extension* extension) |
| 243 : service_(service), | 243 : service_(service), |
| 244 extension_(extension) { | 244 extension_(extension) { |
| 245 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED, | 245 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED, |
| 246 content::Source<Profile>(service->profile())); | 246 content::Source<Profile>(service->profile())); |
| 247 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED, | 247 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_REMOVED, |
| 248 content::Source<Profile>(service->profile())); | 248 content::Source<Profile>(service->profile())); |
| 249 } | 249 } |
| 250 | 250 |
| 251 ExternalInstallMenuAlert::~ExternalInstallMenuAlert() { | 251 ExternalInstallMenuAlert::~ExternalInstallMenuAlert() { |
| 252 } | 252 } |
| 253 | 253 |
| 254 GlobalError::Severity ExternalInstallMenuAlert::GetSeverity() { | 254 GlobalError::Severity ExternalInstallMenuAlert::GetSeverity() { |
| 255 return SEVERITY_LOW; | 255 return SEVERITY_LOW; |
| 256 } | 256 } |
| 257 | 257 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 | 308 |
| 309 void ExternalInstallMenuAlert::BubbleViewCancelButtonPressed( | 309 void ExternalInstallMenuAlert::BubbleViewCancelButtonPressed( |
| 310 Browser* browser) { | 310 Browser* browser) { |
| 311 NOTREACHED(); | 311 NOTREACHED(); |
| 312 } | 312 } |
| 313 | 313 |
| 314 void ExternalInstallMenuAlert::Observe( | 314 void ExternalInstallMenuAlert::Observe( |
| 315 int type, | 315 int type, |
| 316 const content::NotificationSource& source, | 316 const content::NotificationSource& source, |
| 317 const content::NotificationDetails& details) { | 317 const content::NotificationDetails& details) { |
| 318 const Extension* extension = NULL; | 318 // The error is invalidated if the extension has been loaded or removed. |
| 319 // The error is invalidated if the extension has been reloaded or unloaded. | 319 DCHECK(type == chrome::NOTIFICATION_EXTENSION_LOADED || |
| 320 if (type == chrome::NOTIFICATION_EXTENSION_LOADED) { | 320 type == chrome::NOTIFICATION_EXTENSION_REMOVED); |
| 321 extension = content::Details<const Extension>(details).ptr(); | 321 const Extension* extension = content::Details<const Extension>(details).ptr(); |
| 322 } else { | 322 if (extension != extension_) |
| 323 DCHECK_EQ(chrome::NOTIFICATION_EXTENSION_UNLOADED, type); | 323 return; |
| 324 extensions::UnloadedExtensionInfo* info = | 324 GlobalErrorService* error_service = |
| 325 content::Details<extensions::UnloadedExtensionInfo>(details).ptr(); | 325 GlobalErrorServiceFactory::GetForProfile(service_->profile()); |
| 326 extension = info->extension; | 326 error_service->RemoveGlobalError(this); |
| 327 } | 327 service_->AcknowledgeExternalExtension(extension_->id()); |
| 328 if (extension == extension_) { | 328 delete this; |
| 329 GlobalErrorService* error_service = | |
| 330 GlobalErrorServiceFactory::GetForProfile(service_->profile()); | |
| 331 error_service->RemoveGlobalError(this); | |
| 332 service_->AcknowledgeExternalExtension(extension_->id()); | |
| 333 delete this; | |
| 334 } | |
| 335 } | 329 } |
| 336 | 330 |
| 337 // ExternalInstallGlobalError ----------------------------------------------- | 331 // ExternalInstallGlobalError ----------------------------------------------- |
| 338 | 332 |
| 339 ExternalInstallGlobalError::ExternalInstallGlobalError( | 333 ExternalInstallGlobalError::ExternalInstallGlobalError( |
| 340 ExtensionService* service, | 334 ExtensionService* service, |
| 341 const Extension* extension, | 335 const Extension* extension, |
| 342 ExternalInstallDialogDelegate* delegate, | 336 ExternalInstallDialogDelegate* delegate, |
| 343 const ExtensionInstallPrompt::Prompt& prompt) | 337 const ExtensionInstallPrompt::Prompt& prompt) |
| 344 : ExternalInstallMenuAlert(service, extension), | 338 : ExternalInstallMenuAlert(service, extension), |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 459 | 453 |
| 460 bool HasExternalInstallBubble(ExtensionService* service) { | 454 bool HasExternalInstallBubble(ExtensionService* service) { |
| 461 GlobalErrorService* error_service = | 455 GlobalErrorService* error_service = |
| 462 GlobalErrorServiceFactory::GetForProfile(service->profile()); | 456 GlobalErrorServiceFactory::GetForProfile(service->profile()); |
| 463 GlobalError* error = error_service->GetGlobalErrorByMenuItemCommandID( | 457 GlobalError* error = error_service->GetGlobalErrorByMenuItemCommandID( |
| 464 kMenuCommandId); | 458 kMenuCommandId); |
| 465 return error && error->HasBubbleView(); | 459 return error && error->HasBubbleView(); |
| 466 } | 460 } |
| 467 | 461 |
| 468 } // namespace extensions | 462 } // namespace extensions |
| OLD | NEW |