diff options
Diffstat (limited to 'chrome/renderer/extensions/webstore_bindings.cc')
-rw-r--r-- | chrome/renderer/extensions/webstore_bindings.cc | 73 |
1 files changed, 10 insertions, 63 deletions
diff --git a/chrome/renderer/extensions/webstore_bindings.cc b/chrome/renderer/extensions/webstore_bindings.cc index 5991e6a..7214db9 100644 --- a/chrome/renderer/extensions/webstore_bindings.cc +++ b/chrome/renderer/extensions/webstore_bindings.cc @@ -13,7 +13,6 @@ #include "grit/renderer_resources.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebElement.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebNode.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebNodeList.h" #include "v8/include/v8.h" @@ -48,69 +47,17 @@ const char kInvalidWebstoreItemUrlError[] = // (successful or not) via OnInlineWebstoreInstallResponse. int g_next_install_id = 0; -class WebstoreBindingsHandler : public ChromeV8ExtensionHandler { - public: - WebstoreBindingsHandler( - 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> Install(const v8::Arguments& args); - - void OnInlineWebstoreInstallResponse( - int install_id, bool success, const std::string& error); - - // Extracts a Web Store item ID from a <link rel="chrome-webstore-item" - // href="https://chrome.google.com/webstore/detail/id"> node found in the - // frame. On success, true will be returned and the |webstore_item_id| - // parameter will be populated with the ID. On failure, false will be returned - // and |error| will be populated with the error. - static bool GetWebstoreItemIdFromFrame( - WebFrame* frame, const std::string& preferred_store_link_url, - std::string* webstore_item_id, std::string* error); - - ExtensionDispatcher* dispatcher_; - DISALLOW_COPY_AND_ASSIGN(WebstoreBindingsHandler); -}; - } // anonymous namespace -WebstoreBindings::WebstoreBindings(ExtensionDispatcher* dispatcher) - : ChromeV8Extension("extensions/webstore.js", IDR_WEBSTORE_BINDINGS_JS, - dispatcher) { -} - -ChromeV8ExtensionHandler* WebstoreBindings::CreateHandler( - ChromeV8Context* context) { - return new WebstoreBindingsHandler(extension_dispatcher(), context); -} - -WebstoreBindingsHandler::WebstoreBindingsHandler( - ExtensionDispatcher* dispatcher, +WebstoreBindings::WebstoreBindings(ExtensionDispatcher* dispatcher, ChromeV8Context* context) - : ChromeV8ExtensionHandler(context), - dispatcher_(dispatcher) { -} - -v8::Handle<v8::Value> WebstoreBindingsHandler::HandleNativeFunction( - const std::string& name, const v8::Arguments& args) { - if (name == "Install") { - return Install(args); - } else { - CHECK(false) << "Unknown native function: " << name; - } - - return v8::Undefined(); + : ChromeV8Extension(dispatcher), + ChromeV8ExtensionHandler(context) { + RouteFunction("Install", + base::Bind(&WebstoreBindings::Install, base::Unretained(this))); } -v8::Handle<v8::Value> WebstoreBindingsHandler::Install( +v8::Handle<v8::Value> WebstoreBindings::Install( const v8::Arguments& args) { WebFrame* frame = WebFrame::frameForCurrentContext(); if (!frame || !frame->view()) @@ -161,7 +108,7 @@ v8::Handle<v8::Value> WebstoreBindingsHandler::Install( } // static -bool WebstoreBindingsHandler::GetWebstoreItemIdFromFrame( +bool WebstoreBindings::GetWebstoreItemIdFromFrame( WebFrame* frame, const std::string& preferred_store_link_url, std::string* webstore_item_id, std::string* error) { if (frame != frame->top()) { @@ -247,8 +194,8 @@ bool WebstoreBindingsHandler::GetWebstoreItemIdFromFrame( return false; } -bool WebstoreBindingsHandler::OnMessageReceived(const IPC::Message& message) { - IPC_BEGIN_MESSAGE_MAP(WebstoreBindingsHandler, message) +bool WebstoreBindings::OnMessageReceived(const IPC::Message& message) { + IPC_BEGIN_MESSAGE_MAP(WebstoreBindings, message) IPC_MESSAGE_HANDLER(ExtensionMsg_InlineWebstoreInstallResponse, OnInlineWebstoreInstallResponse) IPC_MESSAGE_UNHANDLED(CHECK(false) << "Unhandled IPC message") @@ -256,7 +203,7 @@ bool WebstoreBindingsHandler::OnMessageReceived(const IPC::Message& message) { return true; } -void WebstoreBindingsHandler::OnInlineWebstoreInstallResponse( +void WebstoreBindings::OnInlineWebstoreInstallResponse( int install_id, bool success, const std::string& error) { |