| Index: chrome/renderer/extensions/renderer_extension_bindings.cc
|
| diff --git a/chrome/renderer/extensions/renderer_extension_bindings.cc b/chrome/renderer/extensions/renderer_extension_bindings.cc
|
| index f7197974ee995c7e8ee224c0ffeac546f46ed45e..4cff1dd86338d3549cfeb7fc6490fd5fbceba7e0 100644
|
| --- a/chrome/renderer/extensions/renderer_extension_bindings.cc
|
| +++ b/chrome/renderer/extensions/renderer_extension_bindings.cc
|
| @@ -46,6 +46,8 @@ class ExtensionImpl : public ExtensionBase {
|
| return v8::FunctionTemplate::New(OpenChannelToExtension);
|
| } else if (name->Equals(v8::String::New("PostMessage"))) {
|
| return v8::FunctionTemplate::New(PostMessage);
|
| + } else if (name->Equals(v8::String::New("CloseChannel"))) {
|
| + return v8::FunctionTemplate::New(CloseChannel);
|
| }
|
| return ExtensionBase::GetNativeFunction(name);
|
| }
|
| @@ -83,6 +85,17 @@ class ExtensionImpl : public ExtensionBase {
|
| }
|
| return v8::Undefined();
|
| }
|
| +
|
| + // Sends a message along the given channel.
|
| + static v8::Handle<v8::Value> CloseChannel(const v8::Arguments& args) {
|
| + if (args.Length() >= 1 && args[0]->IsInt32()) {
|
| + int port_id = args[0]->Int32Value();
|
| + // Send via the RenderThread because the RenderView might be closing.
|
| + EventBindings::GetRenderThread()->Send(
|
| + new ViewHostMsg_ExtensionCloseChannel(port_id));
|
| + }
|
| + return v8::Undefined();
|
| + }
|
| };
|
|
|
| // Convert a ListValue to a vector of V8 values.
|
|
|