summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/extensions
diff options
context:
space:
mode:
authoraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-28 19:56:51 +0000
committeraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-28 19:56:51 +0000
commit703e807a70e50e32b3c4821c84c23bde69f73272 (patch)
tree615d9f7d150e5ec51821a892eecc8ebdb269b447 /chrome/renderer/extensions
parenta137bdac37451b1b218cf4c43a798aa3abd4c875 (diff)
downloadchromium_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.cc20
-rw-r--r--chrome/renderer/extensions/extension_process_bindings.h2
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);