Chromium Code Reviews| 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 ec8619c1d8ed064771197eac54bb93d2a7014c6f..773a2e35894c00ee0c997017de77d3e8ecb44fd4 100644 | 
| --- a/chrome/renderer/extensions/renderer_extension_bindings.cc | 
| +++ b/chrome/renderer/extensions/renderer_extension_bindings.cc | 
| @@ -253,3 +253,41 @@ v8::Extension* RendererExtensionBindings::Get(ExtensionDispatcher* dispatcher) { | 
| static v8::Extension* extension = new ExtensionImpl(dispatcher); | 
| return extension; | 
| } | 
| + | 
| +void RendererExtensionBindings::DeliverMessage( | 
| + int target_port_id, | 
| + const std::string& message, | 
| + RenderView* restrict_to_render_view) { | 
| + v8::HandleScope handle_scope; | 
| + | 
| + bindings_utils::ContextList contexts = bindings_utils::GetContexts(); | 
| + for (bindings_utils::ContextList::iterator it = contexts.begin(); | 
| + it != contexts.end(); ++it) { | 
| + | 
| + v8::Handle<v8::Context> context = (*it)->context; | 
| + if (context.IsEmpty()) | 
| + continue; | 
| + | 
| + if (restrict_to_render_view != NULL && | 
| 
 
Matt Perry
2011/09/15 01:42:37
nit: chrome style is to use boolean-style checks f
 
 | 
| + (*it)->GetRenderView() != restrict_to_render_view) { | 
| + continue; | 
| + } | 
| + | 
| + // Check to see whether the context has this port before bothering to create | 
| + // the message. | 
| + v8::Handle<v8::Value> port_id_handle = v8::Integer::New(target_port_id); | 
| + v8::Handle<v8::Value> has_port = | 
| + bindings_utils::CallFunctionInContext( | 
| + context, "Port.hasPort", 1, &port_id_handle); | 
| + CHECK(!has_port.IsEmpty()); | 
| + if (!has_port->BooleanValue()) | 
| + continue; | 
| + | 
| + std::vector<v8::Handle<v8::Value> > arguments; | 
| + arguments.push_back(v8::String::New(message.c_str(), message.size())); | 
| + arguments.push_back(port_id_handle); | 
| + bindings_utils::CallFunctionInContext( | 
| + context, "Port.dispatchOnMessage", | 
| + arguments.size(), &arguments[0]); | 
| + } | 
| +} |