| 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
|
|
|