OLD | NEW |
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 <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 #include <utility> | 10 #include <utility> |
(...skipping 611 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
622 ExtensionFrameHelper::GetBackgroundPageFrame(extension_id); | 622 ExtensionFrameHelper::GetBackgroundPageFrame(extension_id); |
623 if (background_frame) { | 623 if (background_frame) { |
624 int message_id; | 624 int message_id; |
625 args.GetInteger(3, &message_id); | 625 args.GetInteger(3, &message_id); |
626 background_frame->Send(new ExtensionHostMsg_EventAck( | 626 background_frame->Send(new ExtensionHostMsg_EventAck( |
627 background_frame->GetRoutingID(), message_id)); | 627 background_frame->GetRoutingID(), message_id)); |
628 } | 628 } |
629 } | 629 } |
630 } | 630 } |
631 | 631 |
632 void Dispatcher::ClearPortData(int port_id) { | |
633 // Only the target port side has entries in |port_to_tab_id_map_|. If | |
634 // |port_id| is a source port, std::map::erase() will just silently fail | |
635 // here as a no-op. | |
636 port_to_tab_id_map_.erase(port_id); | |
637 } | |
638 | |
639 // static | 632 // static |
640 std::vector<std::pair<std::string, int> > Dispatcher::GetJsResources() { | 633 std::vector<std::pair<std::string, int> > Dispatcher::GetJsResources() { |
641 std::vector<std::pair<std::string, int> > resources; | 634 std::vector<std::pair<std::string, int> > resources; |
642 | 635 |
643 // Libraries. | 636 // Libraries. |
644 resources.push_back(std::make_pair("appView", IDR_APP_VIEW_JS)); | 637 resources.push_back(std::make_pair("appView", IDR_APP_VIEW_JS)); |
645 resources.push_back(std::make_pair("entryIdManager", IDR_ENTRY_ID_MANAGER)); | 638 resources.push_back(std::make_pair("entryIdManager", IDR_ENTRY_ID_MANAGER)); |
646 resources.push_back(std::make_pair(kEventBindings, IDR_EVENT_BINDINGS_JS)); | 639 resources.push_back(std::make_pair(kEventBindings, IDR_EVENT_BINDINGS_JS)); |
647 resources.push_back(std::make_pair("extensionOptions", | 640 resources.push_back(std::make_pair("extensionOptions", |
648 IDR_EXTENSION_OPTIONS_JS)); | 641 IDR_EXTENSION_OPTIONS_JS)); |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
837 std::unique_ptr<NativeHandler>(new UserGesturesNativeHandler(context))); | 830 std::unique_ptr<NativeHandler>(new UserGesturesNativeHandler(context))); |
838 module_system->RegisterNativeHandler( | 831 module_system->RegisterNativeHandler( |
839 "utils", std::unique_ptr<NativeHandler>(new UtilsNativeHandler(context))); | 832 "utils", std::unique_ptr<NativeHandler>(new UtilsNativeHandler(context))); |
840 module_system->RegisterNativeHandler( | 833 module_system->RegisterNativeHandler( |
841 "v8_context", | 834 "v8_context", |
842 std::unique_ptr<NativeHandler>(new V8ContextNativeHandler(context))); | 835 std::unique_ptr<NativeHandler>(new V8ContextNativeHandler(context))); |
843 module_system->RegisterNativeHandler( | 836 module_system->RegisterNativeHandler( |
844 "event_natives", | 837 "event_natives", |
845 std::unique_ptr<NativeHandler>(new EventBindings(context))); | 838 std::unique_ptr<NativeHandler>(new EventBindings(context))); |
846 module_system->RegisterNativeHandler( | 839 module_system->RegisterNativeHandler( |
847 "messaging_natives", std::unique_ptr<NativeHandler>( | 840 "messaging_natives", |
848 MessagingBindings::Get(dispatcher, context))); | 841 std::unique_ptr<NativeHandler>(MessagingBindings::Get(context))); |
849 module_system->RegisterNativeHandler( | 842 module_system->RegisterNativeHandler( |
850 "apiDefinitions", std::unique_ptr<NativeHandler>( | 843 "apiDefinitions", std::unique_ptr<NativeHandler>( |
851 new ApiDefinitionsNatives(dispatcher, context))); | 844 new ApiDefinitionsNatives(dispatcher, context))); |
852 module_system->RegisterNativeHandler( | 845 module_system->RegisterNativeHandler( |
853 "sendRequest", std::unique_ptr<NativeHandler>( | 846 "sendRequest", std::unique_ptr<NativeHandler>( |
854 new SendRequestNatives(request_sender, context))); | 847 new SendRequestNatives(request_sender, context))); |
855 module_system->RegisterNativeHandler( | 848 module_system->RegisterNativeHandler( |
856 "setIcon", std::unique_ptr<NativeHandler>(new SetIconNatives(context))); | 849 "setIcon", std::unique_ptr<NativeHandler>(new SetIconNatives(context))); |
857 module_system->RegisterNativeHandler( | 850 module_system->RegisterNativeHandler( |
858 "activityLogger", | 851 "activityLogger", |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
985 | 978 |
986 InitOriginPermissions(extension); | 979 InitOriginPermissions(extension); |
987 | 980 |
988 UpdateActiveExtensions(); | 981 UpdateActiveExtensions(); |
989 } | 982 } |
990 | 983 |
991 void Dispatcher::OnCancelSuspend(const std::string& extension_id) { | 984 void Dispatcher::OnCancelSuspend(const std::string& extension_id) { |
992 DispatchEvent(extension_id, kOnSuspendCanceledEvent); | 985 DispatchEvent(extension_id, kOnSuspendCanceledEvent); |
993 } | 986 } |
994 | 987 |
995 void Dispatcher::OnDeliverMessage(int target_port_id, const Message& message) { | 988 void Dispatcher::OnDeliverMessage(int target_port_id, |
| 989 int source_tab_id, |
| 990 const Message& message) { |
996 std::unique_ptr<RequestSender::ScopedTabID> scoped_tab_id; | 991 std::unique_ptr<RequestSender::ScopedTabID> scoped_tab_id; |
997 std::map<int, int>::const_iterator it = | 992 if (source_tab_id != -1) { |
998 port_to_tab_id_map_.find(target_port_id); | |
999 if (it != port_to_tab_id_map_.end()) { | |
1000 scoped_tab_id.reset( | 993 scoped_tab_id.reset( |
1001 new RequestSender::ScopedTabID(request_sender(), it->second)); | 994 new RequestSender::ScopedTabID(request_sender(), source_tab_id)); |
1002 } | 995 } |
1003 | 996 |
1004 MessagingBindings::DeliverMessage(*script_context_set_, target_port_id, | 997 MessagingBindings::DeliverMessage(*script_context_set_, target_port_id, |
1005 message, | 998 message, |
1006 NULL); // All render frames. | 999 NULL); // All render frames. |
1007 } | 1000 } |
1008 | 1001 |
1009 void Dispatcher::OnDispatchOnConnect( | 1002 void Dispatcher::OnDispatchOnConnect( |
1010 int target_port_id, | 1003 int target_port_id, |
1011 const std::string& channel_name, | 1004 const std::string& channel_name, |
1012 const ExtensionMsg_TabConnectionInfo& source, | 1005 const ExtensionMsg_TabConnectionInfo& source, |
1013 const ExtensionMsg_ExternalConnectionInfo& info, | 1006 const ExtensionMsg_ExternalConnectionInfo& info, |
1014 const std::string& tls_channel_id) { | 1007 const std::string& tls_channel_id) { |
1015 DCHECK(!ContainsKey(port_to_tab_id_map_, target_port_id)); | |
1016 DCHECK_EQ(1, target_port_id % 2); // target renderer ports have odd IDs. | 1008 DCHECK_EQ(1, target_port_id % 2); // target renderer ports have odd IDs. |
1017 int sender_tab_id = -1; | |
1018 source.tab.GetInteger("id", &sender_tab_id); | |
1019 port_to_tab_id_map_[target_port_id] = sender_tab_id; | |
1020 | 1009 |
1021 MessagingBindings::DispatchOnConnect(*script_context_set_, target_port_id, | 1010 MessagingBindings::DispatchOnConnect(*script_context_set_, target_port_id, |
1022 channel_name, source, info, | 1011 channel_name, source, info, |
1023 tls_channel_id, | 1012 tls_channel_id, |
1024 NULL); // All render frames. | 1013 NULL); // All render frames. |
1025 } | 1014 } |
1026 | 1015 |
1027 void Dispatcher::OnDispatchOnDisconnect(int port_id, | 1016 void Dispatcher::OnDispatchOnDisconnect(int port_id, |
1028 const std::string& error_message) { | 1017 const std::string& error_message) { |
1029 MessagingBindings::DispatchOnDisconnect(*script_context_set_, port_id, | 1018 MessagingBindings::DispatchOnDisconnect(*script_context_set_, port_id, |
(...skipping 566 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1596 // The "guestViewDeny" module must always be loaded last. It registers | 1585 // The "guestViewDeny" module must always be loaded last. It registers |
1597 // error-providing custom elements for the GuestView types that are not | 1586 // error-providing custom elements for the GuestView types that are not |
1598 // available, and thus all of those types must have been checked and loaded | 1587 // available, and thus all of those types must have been checked and loaded |
1599 // (or not loaded) beforehand. | 1588 // (or not loaded) beforehand. |
1600 if (context_type == Feature::BLESSED_EXTENSION_CONTEXT) { | 1589 if (context_type == Feature::BLESSED_EXTENSION_CONTEXT) { |
1601 module_system->Require("guestViewDeny"); | 1590 module_system->Require("guestViewDeny"); |
1602 } | 1591 } |
1603 } | 1592 } |
1604 | 1593 |
1605 } // namespace extensions | 1594 } // namespace extensions |
OLD | NEW |