diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-28 19:56:51 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-28 19:56:51 +0000 |
commit | 703e807a70e50e32b3c4821c84c23bde69f73272 (patch) | |
tree | 615d9f7d150e5ec51821a892eecc8ebdb269b447 /chrome/renderer/extensions | |
parent | a137bdac37451b1b218cf4c43a798aa3abd4c875 (diff) | |
download | chromium_src-703e807a70e50e32b3c4821c84c23bde69f73272.zip chromium_src-703e807a70e50e32b3c4821c84c23bde69f73272.tar.gz chromium_src-703e807a70e50e32b3c4821c84c23bde69f73272.tar.bz2 |
Add more of the server-side plumbing for extension APIs. Also
added getTabsForWindow() to drive it.
Review URL: http://codereview.chromium.org/42680
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@12744 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/extensions')
-rw-r--r-- | chrome/renderer/extensions/extension_process_bindings.cc | 20 | ||||
-rw-r--r-- | chrome/renderer/extensions/extension_process_bindings.h | 2 |
2 files changed, 20 insertions, 2 deletions
diff --git a/chrome/renderer/extensions/extension_process_bindings.cc b/chrome/renderer/extensions/extension_process_bindings.cc index 63c0562..1802a66 100644 --- a/chrome/renderer/extensions/extension_process_bindings.cc +++ b/chrome/renderer/extensions/extension_process_bindings.cc @@ -19,11 +19,19 @@ class ExtensionProcessBindingsWrapper : public v8::Extension { ExtensionProcessBindingsWrapper() : v8::Extension(kExtensionProcessExtensionName, GetSource()) {} + static void SetFunctionNames(const std::vector<std::string>& names) { + function_names_ = new std::set<std::string>(); + for (size_t i = 0; i < names.size(); ++i) { + function_names_->insert(names[i]); + } + } + virtual v8::Handle<v8::FunctionTemplate> GetNativeFunction( v8::Handle<v8::String> name) { if (name->Equals(v8::String::New("GetNextCallbackId"))) return v8::FunctionTemplate::New(GetNextCallbackId); - else if (name->Equals(v8::String::New("CreateTab"))) + else if (function_names_->find(*v8::String::AsciiValue(name)) != + function_names_->end()) return v8::FunctionTemplate::New(StartRequest, name); return v8::Handle<v8::FunctionTemplate>(); @@ -53,7 +61,7 @@ class ExtensionProcessBindingsWrapper : public v8::Extension { static v8::Handle<v8::Value> StartRequest(const v8::Arguments& args) { WebFrame* webframe = WebFrame::RetrieveActiveFrame(); DCHECK(webframe) << "There should be an active frame since we just got " - "an API called."; + "a native function called."; if (!webframe) return v8::Undefined(); WebView* webview = webframe->GetView(); @@ -76,9 +84,11 @@ class ExtensionProcessBindingsWrapper : public v8::Extension { } static std::string* source_; + static std::set<std::string>* function_names_; }; std::string* ExtensionProcessBindingsWrapper::source_; +std::set<std::string>* ExtensionProcessBindingsWrapper::function_names_; // static @@ -87,6 +97,12 @@ v8::Extension* ExtensionProcessBindings::Get() { } // static +void ExtensionProcessBindings::SetFunctionNames( + const std::vector<std::string>& names) { + ExtensionProcessBindingsWrapper::SetFunctionNames(names); +} + +// static void ExtensionProcessBindings::ExecuteCallbackInFrame( WebFrame* frame, int callback_id, const std::string& response) { std::string code = "chromium._dispatchCallback("; diff --git a/chrome/renderer/extensions/extension_process_bindings.h b/chrome/renderer/extensions/extension_process_bindings.h index cbdd0bd..53fe17d 100644 --- a/chrome/renderer/extensions/extension_process_bindings.h +++ b/chrome/renderer/extensions/extension_process_bindings.h @@ -8,6 +8,7 @@ #define CHROME_RENDERER_EXTENSIONS_EXTENSION_PROCESS_BINDINGS_H_
#include <string>
+#include <vector>
#include "v8/include/v8.h"
@@ -17,6 +18,7 @@ namespace extensions_v8 { class ExtensionProcessBindings {
public:
+ static void SetFunctionNames(const std::vector<std::string>& names);
static v8::Extension* Get();
static void ExecuteCallbackInFrame(WebFrame* frame, int callback_id,
const std::string& response);
|