// Copyright (c) 2009 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Exposes extension APIs into the extension process. #ifndef CHROME_RENDERER_EXTENSIONS_EXTENSION_PROCESS_BINDINGS_H_ #define CHROME_RENDERER_EXTENSIONS_EXTENSION_PROCESS_BINDINGS_H_ #pragma once #include #include #include #include "chrome/common/view_types.h" #include "v8/include/v8.h" class GURL; class URLPattern; namespace WebKit { class WebView; } class ExtensionProcessBindings { public: static void SetFunctionNames(const std::vector& names); static v8::Extension* Get(); // Gets the set of extensions running in this process. static void GetActiveExtensions(std::set* extension_ids); // Handles a response to an API request. static void HandleResponse(int request_id, bool success, const std::string& response, const std::string& error); // Sets the page action ids for a particular extension. static void SetPageActions(const std::string& extension_id, const std::vector& page_actions); // Sets the API permissions for a particular extension. static void SetAPIPermissions(const std::string& extension_id, const std::set& permissions); // Sets the host permissions for a particular extension. static void SetHostPermissions(const GURL& extension_url, const std::vector& permissions); // Check if the extension in the currently running context has permission to // access the given extension function. Must be called with a valid V8 // context in scope. static bool CurrentContextHasPermission(const std::string& function_name); // Checks whether |permission| is enabled for |extension_id|. |permission| // may be a raw permission name (from Extension::kPermissionNames), a // function name (e.g. "tabs.create") or an event name (e.g. "contextMenus/id" // or "devtools.tabid.name"). // TODO(erikkay) We should standardize the naming scheme for our events. static bool HasPermission(const std::string& extension_id, const std::string& permission); // Throw a V8 exception indicating that permission to access function_name was // denied. Must be called with a valid V8 context in scope. static v8::Handle ThrowPermissionDeniedException( const std::string& function_name); }; #endif // CHROME_RENDERER_EXTENSIONS_EXTENSION_PROCESS_BINDINGS_H_