Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5467)

Unified Diff: chrome/browser/extensions/extension_menu_manager.cc

Issue 10535155: Hook the activeTab permission up to the omnibox, page action, and context menu APIs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/extension_menu_manager.cc
diff --git a/chrome/browser/extensions/extension_menu_manager.cc b/chrome/browser/extensions/extension_menu_manager.cc
index d0fb4375c378fbae2e0cfa485fc782ef6f20e424..dcf0809adad5fd999c07e2fd59983ba2140ecf8d 100644
--- a/chrome/browser/extensions/extension_menu_manager.cc
+++ b/chrome/browser/extensions/extension_menu_manager.cc
@@ -17,12 +17,15 @@
#include "chrome/browser/extensions/extension_prefs.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_system.h"
+#include "chrome/browser/extensions/extension_tab_helper.h"
#include "chrome/browser/extensions/extension_tab_util.h"
#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/tab_contents/tab_contents.h"
#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/extensions/extension.h"
#include "content/public/browser/notification_details.h"
#include "content/public/browser/notification_source.h"
+#include "content/public/browser/web_contents.h"
#include "content/public/common/context_menu_params.h"
#include "ui/base/text/text_elider.h"
#include "ui/gfx/favicon_size.h"
@@ -533,15 +536,20 @@ void ExtensionMenuManager::ExecuteCommand(
Profile* profile,
WebContents* web_contents,
const content::ContextMenuParams& params,
- const ExtensionMenuItem::Id& menuItemId) {
+ const ExtensionMenuItem::Id& menu_item_id) {
ExtensionEventRouter* event_router = profile->GetExtensionEventRouter();
if (!event_router)
return;
- ExtensionMenuItem* item = GetItemById(menuItemId);
+ ExtensionMenuItem* item = GetItemById(menu_item_id);
if (!item)
return;
+ const extensions::Extension* extension = ExtensionSystem::Get(profile_)->
+ extension_service()->extensions()->GetByID(menu_item_id.extension_id);
+ if (!extension)
+ return;
+
if (item->type() == ExtensionMenuItem::RADIO)
RadioItemSelected(item);
@@ -578,11 +586,11 @@ void ExtensionMenuManager::ExecuteCommand(
args.Append(properties);
// Add the tab info to the argument list.
- if (web_contents) {
+ // Note: web_contents only NULL in unit tests :(
+ if (web_contents)
args.Append(ExtensionTabUtil::CreateTabValue(web_contents));
- } else {
+ else
args.Append(new DictionaryValue());
- }
if (item->type() == ExtensionMenuItem::CHECKBOX ||
item->type() == ExtensionMenuItem::RADIO) {
@@ -597,11 +605,16 @@ void ExtensionMenuManager::ExecuteCommand(
item->SetChecked(checked);
properties->SetBoolean("checked", item->checked());
- const extensions::Extension* extension = ExtensionSystem::Get(profile_)->
- extension_service()->GetExtensionById(menuItemId.extension_id, false);
WriteToPrefs(extension);
}
+ TabContents* tab_contents = web_contents ?
+ TabContents::FromWebContents(web_contents) : NULL;
+ if (tab_contents) {
+ tab_contents->extension_tab_helper()->active_tab_permission_manager()->
+ GrantIfRequested(extension);
+ }
+
std::string json_args;
base::JSONWriter::Write(&args, &json_args);
event_router->DispatchEventToExtension(

Powered by Google App Engine
This is Rietveld 408576698