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