Index: chrome/renderer/extensions/app_bindings.cc |
diff --git a/chrome/renderer/extensions/app_bindings.cc b/chrome/renderer/extensions/app_bindings.cc |
index e502ce65c856dcf830b40fce6499a1bc690bcc61..b1dce19c3bc37fef65bf1095c36b5160a52f0da4 100644 |
--- a/chrome/renderer/extensions/app_bindings.cc |
+++ b/chrome/renderer/extensions/app_bindings.cc |
@@ -53,58 +53,28 @@ 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) |
+AppBindings::AppBindings(ExtensionDispatcher* dispatcher, |
+ ChromeV8Context* context) |
: ChromeV8Extension("extensions/app.js", IDR_APP_BINDINGS_JS, |
- dispatcher) { |
+ dispatcher), |
+ ChromeV8ExtensionHandler(context) { |
} |
-ChromeV8ExtensionHandler* AppBindings::CreateHandler( |
- ChromeV8Context* context) { |
- return new AppBindingsHandler(extension_dispatcher(), context); |
+AppBindings::~AppBindings() { |
} |
- |
- |
-AppBindingsHandler::AppBindingsHandler(ExtensionDispatcher* dispatcher, |
- ChromeV8Context* context) |
- : ChromeV8ExtensionHandler(context), |
- dispatcher_(dispatcher) { |
+void AppBindings::SetNativeFunctions(v8::Handle<v8::Object> object) { |
+ RouteFunctionHere("GetIsInstalled", object); |
+ RouteFunctionHere("Install", object); |
+ RouteFunctionHere("GetDetails", object); |
+ RouteFunctionHere("GetDetailsForFrame", object); |
+ RouteFunctionHere("GetAppNotifyChannel", object); |
} |
-v8::Handle<v8::Value> AppBindingsHandler::HandleNativeFunction( |
+v8::Handle<v8::Value> AppBindings::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. |
@@ -125,21 +95,21 @@ v8::Handle<v8::Value> AppBindingsHandler::HandleNativeFunction( |
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 +123,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 +156,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 +173,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 +212,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 +221,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()); |