Index: chrome/browser/cocoa/extensions/extension_action_context_menu.mm |
=================================================================== |
--- chrome/browser/cocoa/extensions/extension_action_context_menu.mm (revision 38554) |
+++ chrome/browser/cocoa/extensions/extension_action_context_menu.mm (working copy) |
@@ -105,9 +105,10 @@ |
}; |
} // namespace |
-- (id)initWithExtension:(Extension*)extension { |
+- (id)initWithExtension:(Extension*)extension profile:(Profile*)profile { |
if ((self = [super initWithTitle:@""])) { |
extension_ = extension; |
+ profile_ = profile; |
NSArray* menuItems = [NSArray arrayWithObjects: |
base::SysUTF8ToNSString(extension->name()), |
@@ -148,13 +149,10 @@ |
} |
- (void)dispatch:(id)menuItem { |
- Browser* browser = BrowserList::GetLastActive(); |
- // GetLastActive() returns NULL during testing. |
+ Browser* browser = BrowserList::FindBrowserWithProfile(profile_); |
if (!browser) |
return; |
- Profile* profile = browser->profile(); |
- |
NSMenuItem* item = (NSMenuItem*)menuItem; |
switch ([item tag]) { |
case kExtensionContextName: { |
@@ -170,8 +168,10 @@ |
break; |
} |
case kExtensionContextDisable: { |
- ExtensionsService* extension_service = profile->GetExtensionsService(); |
- extension_service->DisableExtension(extension_->id()); |
+ ExtensionsService* extensionService = profile_->GetExtensionsService(); |
+ if (!extensionService) |
+ return; // Incognito mode. |
+ extensionService->DisableExtension(extension_->id()); |
break; |
} |
case kExtensionContextUninstall: { |