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()); |