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

Unified Diff: chrome/renderer/extensions/app_bindings.cc

Issue 9386001: Implement a module system for the extension bindings JS. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 9 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/renderer/extensions/app_bindings.cc
diff --git a/chrome/renderer/extensions/app_bindings.cc b/chrome/renderer/extensions/app_bindings.cc
index 21ee43828c7f90d5863fc9407b20fe76d7c8286f..34c8047616466b493074817ac2f836fd80b6e372 100644
--- a/chrome/renderer/extensions/app_bindings.cc
+++ b/chrome/renderer/extensions/app_bindings.cc
@@ -53,93 +53,41 @@ const char* kMissingClientIdError = "Missing clientId parameter";
const char* kInvalidClientIdError = "Invalid clientId";
const char* kInvalidCallbackIdError = "Invalid callbackId";
-
-class AppBindingsHandler : public ChromeV8ExtensionHandler {
- public:
- AppBindingsHandler(ExtensionDispatcher* dispatcher, ChromeV8Context* context);
-
- // ChromeV8ExtensionHandler
- virtual v8::Handle<v8::Value> HandleNativeFunction(
- const std::string& name,
- const v8::Arguments& arguments) OVERRIDE;
-
- // IPC::Channel::Listener
- virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
-
- private:
- v8::Handle<v8::Value> GetIsInstalled(const v8::Arguments& args);
- v8::Handle<v8::Value> Install(const v8::Arguments& args);
- v8::Handle<v8::Value> GetDetails(const v8::Arguments& args);
- v8::Handle<v8::Value> GetDetailsForFrame(const v8::Arguments& args);
- v8::Handle<v8::Value> GetAppNotifyChannel(const v8::Arguments& args);
-
- v8::Handle<v8::Value> GetDetailsForFrameImpl(WebKit::WebFrame* frame);
-
- void OnGetAppNotifyChannelResponse(const std::string& channel_id,
- const std::string& error,
- int callback_id);
-
- ExtensionDispatcher* dispatcher_;
- DISALLOW_COPY_AND_ASSIGN(AppBindingsHandler);
-};
-
} // namespace
-AppBindings::AppBindings(ExtensionDispatcher* dispatcher)
- : ChromeV8Extension("extensions/app.js", IDR_APP_BINDINGS_JS,
- dispatcher) {
-}
-
-ChromeV8ExtensionHandler* AppBindings::CreateHandler(
- ChromeV8Context* context) {
- return new AppBindingsHandler(extension_dispatcher(), context);
-}
-
-
-
-AppBindingsHandler::AppBindingsHandler(ExtensionDispatcher* dispatcher,
- ChromeV8Context* context)
- : ChromeV8ExtensionHandler(context),
- dispatcher_(dispatcher) {
+AppBindings::AppBindings(ExtensionDispatcher* dispatcher,
+ ChromeV8Context* context)
+ : ChromeV8Extension(dispatcher),
+ ChromeV8ExtensionHandler(context) {
+ RouteFunction("GetIsInstalled",
+ base::Bind(&AppBindings::GetIsInstalled, base::Unretained(this)));
+ RouteFunction("Install",
+ base::Bind(&AppBindings::Install, base::Unretained(this)));
+ RouteFunction("GetDetails",
+ base::Bind(&AppBindings::GetDetails, base::Unretained(this)));
+ RouteFunction("GetDetailsForFrame",
+ base::Bind(&AppBindings::GetDetailsForFrame, base::Unretained(this)));
+ RouteFunction("GetAppNotifyChannel",
+ base::Bind(&AppBindings::GetAppNotifyChannel, base::Unretained(this)));
}
-v8::Handle<v8::Value> AppBindingsHandler::HandleNativeFunction(
- const std::string& name, const v8::Arguments& args) {
- // TODO(aa): Create a helper map of callback that can be used in either
- // extensions or handlers.
- if (name == "GetIsInstalled") {
- return GetIsInstalled(args);
- } else if (name == "Install") {
- return Install(args);
- } else if (name == "GetDetails") {
- return GetDetails(args);
- } else if (name == "GetDetailsForFrame") {
- return GetDetailsForFrame(args);
- } else if (name == "GetAppNotifyChannel") {
- return GetAppNotifyChannel(args);
- } else {
- CHECK(false) << "Unknown native function: " << name;
- }
-
- return v8::Undefined();
-}
-v8::Handle<v8::Value> AppBindingsHandler::GetIsInstalled(
+v8::Handle<v8::Value> AppBindings::GetIsInstalled(
const v8::Arguments& args) {
// TODO(aa): Hm, maybe ExtensionBindingsContext should have GetExtension()
// afterall?
const ::Extension* extension =
- dispatcher_->extensions()->GetByID(context_->extension_id());
+ extension_dispatcher_->extensions()->GetByID(context_->extension_id());
// TODO(aa): Why only hosted app?
// TODO(aa): GARRR - why is there IsExtensionActive and IsApplicationActive!?
bool result = extension && extension->is_hosted_app() &&
- dispatcher_->IsApplicationActive(extension->id());
+ extension_dispatcher_->IsApplicationActive(extension->id());
return v8::Boolean::New(result);
}
-v8::Handle<v8::Value> AppBindingsHandler::Install(const v8::Arguments& args) {
+v8::Handle<v8::Value> AppBindings::Install(const v8::Arguments& args) {
content::RenderView* render_view = context_->GetRenderView();
CHECK(render_view);
@@ -153,13 +101,13 @@ v8::Handle<v8::Value> AppBindingsHandler::Install(const v8::Arguments& args) {
return v8::Undefined();
}
-v8::Handle<v8::Value> AppBindingsHandler::GetDetails(
+v8::Handle<v8::Value> AppBindings::GetDetails(
const v8::Arguments& args) {
CHECK(context_->web_frame());
return GetDetailsForFrameImpl(context_->web_frame());
}
-v8::Handle<v8::Value> AppBindingsHandler::GetDetailsForFrame(
+v8::Handle<v8::Value> AppBindings::GetDetailsForFrame(
const v8::Arguments& args) {
CHECK(context_->web_frame());
if (!CheckAccessToAppDetails(context_->web_frame()))
@@ -186,12 +134,12 @@ v8::Handle<v8::Value> AppBindingsHandler::GetDetailsForFrame(
return GetDetailsForFrameImpl(target_frame);
}
-v8::Handle<v8::Value> AppBindingsHandler::GetDetailsForFrameImpl(
+v8::Handle<v8::Value> AppBindings::GetDetailsForFrameImpl(
WebFrame* frame) {
const ::Extension* extension =
- dispatcher_->extensions()->GetExtensionOrAppByURL(ExtensionURLInfo(
- frame->document().securityOrigin(),
- frame->document().url()));
+ extension_dispatcher_->extensions()->GetExtensionOrAppByURL(
+ ExtensionURLInfo(frame->document().securityOrigin(),
+ frame->document().url()));
if (!extension)
return v8::Null();
@@ -203,7 +151,7 @@ v8::Handle<v8::Value> AppBindingsHandler::GetDetailsForFrameImpl(
frame->mainWorldScriptContext());
}
-v8::Handle<v8::Value> AppBindingsHandler::GetAppNotifyChannel(
+v8::Handle<v8::Value> AppBindings::GetAppNotifyChannel(
const v8::Arguments& args) {
// Read the required 'clientId' value out of the object at args[0].
std::string client_id;
@@ -242,8 +190,8 @@ v8::Handle<v8::Value> AppBindingsHandler::GetAppNotifyChannel(
return v8::Undefined();
}
-bool AppBindingsHandler::OnMessageReceived(const IPC::Message& message) {
- IPC_BEGIN_MESSAGE_MAP(AppBindingsHandler, message)
+bool AppBindings::OnMessageReceived(const IPC::Message& message) {
+ IPC_BEGIN_MESSAGE_MAP(AppBindings, message)
IPC_MESSAGE_HANDLER(ExtensionMsg_GetAppNotifyChannelResponse,
OnGetAppNotifyChannelResponse)
IPC_MESSAGE_UNHANDLED(CHECK(false) << "Unhandled IPC message")
@@ -251,7 +199,7 @@ bool AppBindingsHandler::OnMessageReceived(const IPC::Message& message) {
return true;
}
-void AppBindingsHandler::OnGetAppNotifyChannelResponse(
+void AppBindings::OnGetAppNotifyChannelResponse(
const std::string& channel_id, const std::string& error, int callback_id) {
v8::HandleScope handle_scope;
v8::Context::Scope context_scope(context_->v8_context());
« no previous file with comments | « chrome/renderer/extensions/app_bindings.h ('k') | chrome/renderer/extensions/chrome_private_custom_bindings.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698