Index: chrome/browser/ui/views/ash/balloon_collection_impl_ash.cc |
diff --git a/chrome/browser/ui/views/ash/balloon_collection_impl_ash.cc b/chrome/browser/ui/views/ash/balloon_collection_impl_ash.cc |
index 7e2428bdb04abf3407e7926d64e7ab97ed23a6a5..a8bcb457657bef0a17f98da4baeb684d46b504f6 100644 |
--- a/chrome/browser/ui/views/ash/balloon_collection_impl_ash.cc |
+++ b/chrome/browser/ui/views/ash/balloon_collection_impl_ash.cc |
@@ -59,17 +59,10 @@ void BalloonCollectionImplAsh::Add(const Notification& notification, |
void BalloonCollectionImplAsh::DisableExtension( |
const std::string& notifcation_id) { |
Balloon* balloon = base().FindBalloonById(notifcation_id); |
- if (!balloon) |
- return; |
- ExtensionService* extension_service = |
- balloon->profile()->GetExtensionService(); |
- const GURL& origin = balloon->notification().origin_url(); |
- const extensions::Extension* extension = |
- extension_service->extensions()->GetExtensionOrAppByURL( |
- ExtensionURLInfo(origin)); |
+ const extensions::Extension* extension = GetBalloonExtension(balloon); |
if (!extension) |
return; |
- extension_service->DisableExtension( |
+ balloon->profile()->GetExtensionService()->DisableExtension( |
extension->id(), extensions::Extension::DISABLE_USER_ACTION); |
} |
@@ -93,7 +86,10 @@ void BalloonCollectionImplAsh::ShowSettings(const std::string& notifcation_id) { |
Profile* profile = |
balloon ? balloon->profile() : ProfileManager::GetDefaultProfile(); |
Browser* browser = browser::FindOrCreateTabbedBrowser(profile); |
- chrome::ShowContentSettings(browser, CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
+ if (GetBalloonExtension(balloon)) |
+ chrome::ShowExtensions(browser); |
+ else |
+ chrome::ShowContentSettings(browser, CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
} |
void BalloonCollectionImplAsh::OnClicked(const std::string& notifcation_id) { |
@@ -168,6 +164,17 @@ Balloon* BalloonCollectionImplAsh::MakeBalloon( |
return balloon; |
} |
+const extensions::Extension* BalloonCollectionImplAsh::GetBalloonExtension( |
+ Balloon* balloon) { |
+ if (!balloon) |
+ return NULL; |
+ ExtensionService* extension_service = |
+ balloon->profile()->GetExtensionService(); |
+ const GURL& origin = balloon->notification().origin_url(); |
+ return extension_service->extensions()->GetExtensionOrAppByURL( |
+ ExtensionURLInfo(origin)); |
+} |
+ |
// For now, only use BalloonCollectionImplAsh on ChromeOS, until |
// system_notifications_ is replaced with status area notifications. |
#if defined(OS_CHROMEOS) |