| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/extensions/event_router_forwarder.h" | 5 #include "chrome/browser/extensions/event_router_forwarder.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <utility> |
| 8 | 9 |
| 9 #include "base/bind.h" | 10 #include "base/bind.h" |
| 10 #include "base/values.h" | 11 #include "base/values.h" |
| 11 #include "build/build_config.h" | 12 #include "build/build_config.h" |
| 12 #include "chrome/browser/browser_process.h" | 13 #include "chrome/browser/browser_process.h" |
| 13 #include "chrome/browser/profiles/profile_manager.h" | 14 #include "chrome/browser/profiles/profile_manager.h" |
| 14 #include "content/public/browser/browser_thread.h" | 15 #include "content/public/browser/browser_thread.h" |
| 15 #include "extensions/browser/event_router.h" | 16 #include "extensions/browser/event_router.h" |
| 16 #include "url/gurl.h" | 17 #include "url/gurl.h" |
| 17 | 18 |
| 18 using content::BrowserThread; | 19 using content::BrowserThread; |
| 19 | 20 |
| 20 namespace extensions { | 21 namespace extensions { |
| 21 | 22 |
| 22 EventRouterForwarder::EventRouterForwarder() { | 23 EventRouterForwarder::EventRouterForwarder() { |
| 23 } | 24 } |
| 24 | 25 |
| 25 EventRouterForwarder::~EventRouterForwarder() { | 26 EventRouterForwarder::~EventRouterForwarder() { |
| 26 } | 27 } |
| 27 | 28 |
| 28 void EventRouterForwarder::BroadcastEventToRenderers( | 29 void EventRouterForwarder::BroadcastEventToRenderers( |
| 29 events::HistogramValue histogram_value, | 30 events::HistogramValue histogram_value, |
| 30 const std::string& event_name, | 31 const std::string& event_name, |
| 31 scoped_ptr<base::ListValue> event_args, | 32 scoped_ptr<base::ListValue> event_args, |
| 32 const GURL& event_url) { | 33 const GURL& event_url) { |
| 33 HandleEvent(std::string(), histogram_value, event_name, event_args.Pass(), 0, | 34 HandleEvent(std::string(), histogram_value, event_name, std::move(event_args), |
| 34 true, event_url); | 35 0, true, event_url); |
| 35 } | 36 } |
| 36 | 37 |
| 37 void EventRouterForwarder::DispatchEventToRenderers( | 38 void EventRouterForwarder::DispatchEventToRenderers( |
| 38 events::HistogramValue histogram_value, | 39 events::HistogramValue histogram_value, |
| 39 const std::string& event_name, | 40 const std::string& event_name, |
| 40 scoped_ptr<base::ListValue> event_args, | 41 scoped_ptr<base::ListValue> event_args, |
| 41 void* profile, | 42 void* profile, |
| 42 bool use_profile_to_restrict_events, | 43 bool use_profile_to_restrict_events, |
| 43 const GURL& event_url) { | 44 const GURL& event_url) { |
| 44 if (!profile) | 45 if (!profile) |
| 45 return; | 46 return; |
| 46 HandleEvent(std::string(), histogram_value, event_name, event_args.Pass(), | 47 HandleEvent(std::string(), histogram_value, event_name, std::move(event_args), |
| 47 profile, use_profile_to_restrict_events, event_url); | 48 profile, use_profile_to_restrict_events, event_url); |
| 48 } | 49 } |
| 49 | 50 |
| 50 void EventRouterForwarder::BroadcastEventToExtension( | 51 void EventRouterForwarder::BroadcastEventToExtension( |
| 51 const std::string& extension_id, | 52 const std::string& extension_id, |
| 52 events::HistogramValue histogram_value, | 53 events::HistogramValue histogram_value, |
| 53 const std::string& event_name, | 54 const std::string& event_name, |
| 54 scoped_ptr<base::ListValue> event_args, | 55 scoped_ptr<base::ListValue> event_args, |
| 55 const GURL& event_url) { | 56 const GURL& event_url) { |
| 56 HandleEvent(extension_id, histogram_value, event_name, event_args.Pass(), 0, | 57 HandleEvent(extension_id, histogram_value, event_name, std::move(event_args), |
| 57 true, event_url); | 58 0, true, event_url); |
| 58 } | 59 } |
| 59 | 60 |
| 60 void EventRouterForwarder::DispatchEventToExtension( | 61 void EventRouterForwarder::DispatchEventToExtension( |
| 61 const std::string& extension_id, | 62 const std::string& extension_id, |
| 62 events::HistogramValue histogram_value, | 63 events::HistogramValue histogram_value, |
| 63 const std::string& event_name, | 64 const std::string& event_name, |
| 64 scoped_ptr<base::ListValue> event_args, | 65 scoped_ptr<base::ListValue> event_args, |
| 65 void* profile, | 66 void* profile, |
| 66 bool use_profile_to_restrict_events, | 67 bool use_profile_to_restrict_events, |
| 67 const GURL& event_url) { | 68 const GURL& event_url) { |
| 68 if (!profile) | 69 if (!profile) |
| 69 return; | 70 return; |
| 70 HandleEvent(extension_id, histogram_value, event_name, event_args.Pass(), | 71 HandleEvent(extension_id, histogram_value, event_name, std::move(event_args), |
| 71 profile, use_profile_to_restrict_events, event_url); | 72 profile, use_profile_to_restrict_events, event_url); |
| 72 } | 73 } |
| 73 | 74 |
| 74 void EventRouterForwarder::HandleEvent(const std::string& extension_id, | 75 void EventRouterForwarder::HandleEvent(const std::string& extension_id, |
| 75 events::HistogramValue histogram_value, | 76 events::HistogramValue histogram_value, |
| 76 const std::string& event_name, | 77 const std::string& event_name, |
| 77 scoped_ptr<base::ListValue> event_args, | 78 scoped_ptr<base::ListValue> event_args, |
| 78 void* profile_ptr, | 79 void* profile_ptr, |
| 79 bool use_profile_to_restrict_events, | 80 bool use_profile_to_restrict_events, |
| 80 const GURL& event_url) { | 81 const GURL& event_url) { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 92 | 93 |
| 93 ProfileManager* profile_manager = g_browser_process->profile_manager(); | 94 ProfileManager* profile_manager = g_browser_process->profile_manager(); |
| 94 Profile* profile = NULL; | 95 Profile* profile = NULL; |
| 95 if (profile_ptr) { | 96 if (profile_ptr) { |
| 96 if (!profile_manager->IsValidProfile(profile_ptr)) | 97 if (!profile_manager->IsValidProfile(profile_ptr)) |
| 97 return; | 98 return; |
| 98 profile = reinterpret_cast<Profile*>(profile_ptr); | 99 profile = reinterpret_cast<Profile*>(profile_ptr); |
| 99 } | 100 } |
| 100 if (profile) { | 101 if (profile) { |
| 101 CallEventRouter(profile, extension_id, histogram_value, event_name, | 102 CallEventRouter(profile, extension_id, histogram_value, event_name, |
| 102 event_args.Pass(), | 103 std::move(event_args), |
| 103 use_profile_to_restrict_events ? profile : NULL, event_url); | 104 use_profile_to_restrict_events ? profile : NULL, event_url); |
| 104 } else { | 105 } else { |
| 105 std::vector<Profile*> profiles(profile_manager->GetLoadedProfiles()); | 106 std::vector<Profile*> profiles(profile_manager->GetLoadedProfiles()); |
| 106 for (size_t i = 0; i < profiles.size(); ++i) { | 107 for (size_t i = 0; i < profiles.size(); ++i) { |
| 107 scoped_ptr<base::ListValue> per_profile_event_args( | 108 scoped_ptr<base::ListValue> per_profile_event_args( |
| 108 event_args->DeepCopy()); | 109 event_args->DeepCopy()); |
| 109 CallEventRouter(profiles[i], extension_id, histogram_value, event_name, | 110 CallEventRouter(profiles[i], extension_id, histogram_value, event_name, |
| 110 per_profile_event_args.Pass(), | 111 std::move(per_profile_event_args), |
| 111 use_profile_to_restrict_events ? profiles[i] : NULL, | 112 use_profile_to_restrict_events ? profiles[i] : NULL, |
| 112 event_url); | 113 event_url); |
| 113 } | 114 } |
| 114 } | 115 } |
| 115 } | 116 } |
| 116 | 117 |
| 117 void EventRouterForwarder::CallEventRouter( | 118 void EventRouterForwarder::CallEventRouter( |
| 118 Profile* profile, | 119 Profile* profile, |
| 119 const std::string& extension_id, | 120 const std::string& extension_id, |
| 120 events::HistogramValue histogram_value, | 121 events::HistogramValue histogram_value, |
| 121 const std::string& event_name, | 122 const std::string& event_name, |
| 122 scoped_ptr<base::ListValue> event_args, | 123 scoped_ptr<base::ListValue> event_args, |
| 123 Profile* restrict_to_profile, | 124 Profile* restrict_to_profile, |
| 124 const GURL& event_url) { | 125 const GURL& event_url) { |
| 125 #if defined(OS_CHROMEOS) | 126 #if defined(OS_CHROMEOS) |
| 126 // Extension does not exist for chromeos login. This needs to be | 127 // Extension does not exist for chromeos login. This needs to be |
| 127 // removed once we have an extension service for login screen. | 128 // removed once we have an extension service for login screen. |
| 128 // crosbug.com/12856. | 129 // crosbug.com/12856. |
| 129 if (!extensions::EventRouter::Get(profile)) | 130 if (!extensions::EventRouter::Get(profile)) |
| 130 return; | 131 return; |
| 131 #endif | 132 #endif |
| 132 | 133 |
| 133 scoped_ptr<Event> event( | 134 scoped_ptr<Event> event( |
| 134 new Event(histogram_value, event_name, event_args.Pass())); | 135 new Event(histogram_value, event_name, std::move(event_args))); |
| 135 event->restrict_to_browser_context = restrict_to_profile; | 136 event->restrict_to_browser_context = restrict_to_profile; |
| 136 event->event_url = event_url; | 137 event->event_url = event_url; |
| 137 if (extension_id.empty()) { | 138 if (extension_id.empty()) { |
| 138 extensions::EventRouter::Get(profile)->BroadcastEvent(event.Pass()); | 139 extensions::EventRouter::Get(profile)->BroadcastEvent(std::move(event)); |
| 139 } else { | 140 } else { |
| 140 extensions::EventRouter::Get(profile) | 141 extensions::EventRouter::Get(profile) |
| 141 ->DispatchEventToExtension(extension_id, event.Pass()); | 142 ->DispatchEventToExtension(extension_id, std::move(event)); |
| 142 } | 143 } |
| 143 } | 144 } |
| 144 | 145 |
| 145 } // namespace extensions | 146 } // namespace extensions |
| OLD | NEW |