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

Side by Side Diff: extensions/renderer/dispatcher.cc

Issue 327953002: Make MessagingBindings use ScriptContextSet::ForEach (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ForEach shortcuts Created 6 years, 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | extensions/renderer/extension_helper.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "extensions/renderer/dispatcher.h" 5 #include "extensions/renderer/dispatcher.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/debug/alias.h" 9 #include "base/debug/alias.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 384
385 void Dispatcher::DispatchEvent(const std::string& extension_id, 385 void Dispatcher::DispatchEvent(const std::string& extension_id,
386 const std::string& event_name) const { 386 const std::string& event_name) const {
387 base::ListValue args; 387 base::ListValue args;
388 args.Set(0, new base::StringValue(event_name)); 388 args.Set(0, new base::StringValue(event_name));
389 args.Set(1, new base::ListValue()); 389 args.Set(1, new base::ListValue());
390 390
391 // Needed for Windows compilation, since kEventBindings is declared extern. 391 // Needed for Windows compilation, since kEventBindings is declared extern.
392 const char* local_event_bindings = kEventBindings; 392 const char* local_event_bindings = kEventBindings;
393 script_context_set_.ForEach(extension_id, 393 script_context_set_.ForEach(extension_id,
394 NULL, // all render views
395 base::Bind(&CallModuleMethod, 394 base::Bind(&CallModuleMethod,
396 local_event_bindings, 395 local_event_bindings,
397 kEventDispatchFunction, 396 kEventDispatchFunction,
398 &args)); 397 &args));
399 } 398 }
400 399
401 void Dispatcher::InvokeModuleSystemMethod(content::RenderView* render_view, 400 void Dispatcher::InvokeModuleSystemMethod(content::RenderView* render_view,
402 const std::string& extension_id, 401 const std::string& extension_id,
403 const std::string& module_name, 402 const std::string& module_name,
404 const std::string& function_name, 403 const std::string& function_name,
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
569 568
570 void Dispatcher::OnDeliverMessage(int target_port_id, const Message& message) { 569 void Dispatcher::OnDeliverMessage(int target_port_id, const Message& message) {
571 scoped_ptr<RequestSender::ScopedTabID> scoped_tab_id; 570 scoped_ptr<RequestSender::ScopedTabID> scoped_tab_id;
572 std::map<int, int>::const_iterator it = 571 std::map<int, int>::const_iterator it =
573 port_to_tab_id_map_.find(target_port_id); 572 port_to_tab_id_map_.find(target_port_id);
574 if (it != port_to_tab_id_map_.end()) { 573 if (it != port_to_tab_id_map_.end()) {
575 scoped_tab_id.reset( 574 scoped_tab_id.reset(
576 new RequestSender::ScopedTabID(request_sender(), it->second)); 575 new RequestSender::ScopedTabID(request_sender(), it->second));
577 } 576 }
578 577
579 MessagingBindings::DeliverMessage(script_context_set_.GetAll(), 578 MessagingBindings::DeliverMessage(script_context_set_,
580 target_port_id, 579 target_port_id,
581 message, 580 message,
582 NULL); // All render views. 581 NULL); // All render views.
583 } 582 }
584 583
585 void Dispatcher::OnDispatchOnConnect( 584 void Dispatcher::OnDispatchOnConnect(
586 int target_port_id, 585 int target_port_id,
587 const std::string& channel_name, 586 const std::string& channel_name,
588 const base::DictionaryValue& source_tab, 587 const base::DictionaryValue& source_tab,
589 const ExtensionMsg_ExternalConnectionInfo& info, 588 const ExtensionMsg_ExternalConnectionInfo& info,
590 const std::string& tls_channel_id) { 589 const std::string& tls_channel_id) {
591 DCHECK(!ContainsKey(port_to_tab_id_map_, target_port_id)); 590 DCHECK(!ContainsKey(port_to_tab_id_map_, target_port_id));
592 DCHECK_EQ(1, target_port_id % 2); // target renderer ports have odd IDs. 591 DCHECK_EQ(1, target_port_id % 2); // target renderer ports have odd IDs.
593 int sender_tab_id = -1; 592 int sender_tab_id = -1;
594 source_tab.GetInteger("id", &sender_tab_id); 593 source_tab.GetInteger("id", &sender_tab_id);
595 port_to_tab_id_map_[target_port_id] = sender_tab_id; 594 port_to_tab_id_map_[target_port_id] = sender_tab_id;
596 595
597 MessagingBindings::DispatchOnConnect(script_context_set_.GetAll(), 596 MessagingBindings::DispatchOnConnect(script_context_set_,
598 target_port_id, 597 target_port_id,
599 channel_name, 598 channel_name,
600 source_tab, 599 source_tab,
601 info.source_id, 600 info,
602 info.target_id,
603 info.source_url,
604 tls_channel_id, 601 tls_channel_id,
605 NULL); // All render views. 602 NULL); // All render views.
606 } 603 }
607 604
608 void Dispatcher::OnDispatchOnDisconnect(int port_id, 605 void Dispatcher::OnDispatchOnDisconnect(int port_id,
609 const std::string& error_message) { 606 const std::string& error_message) {
610 MessagingBindings::DispatchOnDisconnect(script_context_set_.GetAll(), 607 MessagingBindings::DispatchOnDisconnect(script_context_set_,
611 port_id, 608 port_id,
612 error_message, 609 error_message,
613 NULL); // All render views. 610 NULL); // All render views.
614 } 611 }
615 612
616 void Dispatcher::OnLoaded( 613 void Dispatcher::OnLoaded(
617 const std::vector<ExtensionMsg_Loaded_Params>& loaded_extensions) { 614 const std::vector<ExtensionMsg_Loaded_Params>& loaded_extensions) {
618 std::vector<ExtensionMsg_Loaded_Params>::const_iterator i; 615 std::vector<ExtensionMsg_Loaded_Params>::const_iterator i;
619 for (i = loaded_extensions.begin(); i != loaded_extensions.end(); ++i) { 616 for (i = loaded_extensions.begin(); i != loaded_extensions.end(); ++i) {
620 std::string error; 617 std::string error;
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
835 832
836 void Dispatcher::EnableCustomElementWhiteList() { 833 void Dispatcher::EnableCustomElementWhiteList() {
837 blink::WebCustomElement::addEmbedderCustomElementName("webview"); 834 blink::WebCustomElement::addEmbedderCustomElementName("webview");
838 // TODO(fsamuel): Add <adview> to the whitelist once it has been converted 835 // TODO(fsamuel): Add <adview> to the whitelist once it has been converted
839 // into a custom element. 836 // into a custom element.
840 blink::WebCustomElement::addEmbedderCustomElementName("browser-plugin"); 837 blink::WebCustomElement::addEmbedderCustomElementName("browser-plugin");
841 } 838 }
842 839
843 void Dispatcher::UpdateBindings(const std::string& extension_id) { 840 void Dispatcher::UpdateBindings(const std::string& extension_id) {
844 script_context_set().ForEach(extension_id, 841 script_context_set().ForEach(extension_id,
845 NULL, // all render views
846 base::Bind(&Dispatcher::UpdateBindingsForContext, 842 base::Bind(&Dispatcher::UpdateBindingsForContext,
847 base::Unretained(this))); 843 base::Unretained(this)));
848 } 844 }
849 845
850 void Dispatcher::UpdateBindingsForContext(ScriptContext* context) { 846 void Dispatcher::UpdateBindingsForContext(ScriptContext* context) {
851 v8::HandleScope handle_scope(context->isolate()); 847 v8::HandleScope handle_scope(context->isolate());
852 v8::Context::Scope context_scope(context->v8_context()); 848 v8::Context::Scope context_scope(context->v8_context());
853 849
854 // TODO(kalman): Make the bindings registration have zero overhead then run 850 // TODO(kalman): Make the bindings registration have zero overhead then run
855 // the same code regardless of context type. 851 // the same code regardless of context type.
(...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after
1233 return v8::Handle<v8::Object>(); 1229 return v8::Handle<v8::Object>();
1234 1230
1235 if (bind_name) 1231 if (bind_name)
1236 *bind_name = split.back(); 1232 *bind_name = split.back();
1237 1233
1238 return bind_object.IsEmpty() ? AsObjectOrEmpty(GetOrCreateChrome(context)) 1234 return bind_object.IsEmpty() ? AsObjectOrEmpty(GetOrCreateChrome(context))
1239 : bind_object; 1235 : bind_object;
1240 } 1236 }
1241 1237
1242 } // namespace extensions 1238 } // namespace extensions
OLDNEW
« no previous file with comments | « no previous file | extensions/renderer/extension_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698