Index: chrome/renderer/extensions/extension_process_bindings.cc |
diff --git a/chrome/renderer/extensions/extension_process_bindings.cc b/chrome/renderer/extensions/extension_process_bindings.cc |
index c1aa392ec2ef07f16ce53f9f891f86a7a65ccbbb..c203ffad640ab4b86e18c4bc2d2cbcd749c25940 100644 |
--- a/chrome/renderer/extensions/extension_process_bindings.cc |
+++ b/chrome/renderer/extensions/extension_process_bindings.cc |
@@ -203,6 +203,9 @@ class ExtensionImpl : public ChromeV8Extension { |
return v8::FunctionTemplate::New(DecodeJPEG, v8::External::New(this)); |
} else if (name->Equals(v8::String::New("CreateBlob"))) { |
return v8::FunctionTemplate::New(CreateBlob, v8::External::New(this)); |
+ } else if (name->Equals(v8::String::New("SendResponseAck"))) { |
+ return v8::FunctionTemplate::New(SendResponseAck, |
+ v8::External::New(this)); |
} |
return ChromeV8Extension::GetNativeFunction(name); |
@@ -373,6 +376,18 @@ class ExtensionImpl : public ChromeV8Extension { |
return blob.toV8Value(); |
} |
+ static v8::Handle<v8::Value> SendResponseAck(const v8::Arguments& args) { |
+ CHECK(args.Length() == 1); |
+ CHECK(args[0]->IsInt32()); |
+ |
+ content::RenderView* render_view = GetCurrentRenderView(); |
+ if (render_view) { |
+ render_view->Send(new ExtensionHostMsg_ResponseAck( |
+ render_view->GetRoutingId(), args[0]->Int32Value())); |
+ } |
+ return v8::Undefined(); |
+ } |
+ |
// Creates a new messaging channel to the tab with the given ID. |
static v8::Handle<v8::Value> OpenChannelToTab(const v8::Arguments& args) { |
// Get the current RenderView so that we can send a routed IPC message from |