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

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: Created 8 years, 10 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 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());

Powered by Google App Engine
This is Rietveld 408576698