| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/browser/api/networking_private/networking_private_service_c
lient.h" | 5 #include "extensions/browser/api/networking_private/networking_private_service_c
lient.h" |
| 6 | 6 |
| 7 #include "base/base64.h" | 7 #include "base/base64.h" |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/sequenced_task_runner.h" | 9 #include "base/sequenced_task_runner.h" |
| 10 #include "base/thread_task_runner_handle.h" | 10 #include "base/thread_task_runner_handle.h" |
| 11 #include "base/threading/worker_pool.h" | 11 #include "base/threading/worker_pool.h" |
| 12 #include "components/onc/onc_constants.h" | 12 #include "components/onc/onc_constants.h" |
| 13 #include "content/public/browser/browser_thread.h" | 13 #include "content/public/browser/browser_thread.h" |
| 14 #include "extensions/browser/api/networking_private/networking_private_api.h" | 14 #include "extensions/browser/api/networking_private/networking_private_api.h" |
| 15 #include "extensions/browser/api/networking_private/networking_private_delegate_
observer.h" | 15 #include "extensions/browser/api/networking_private/networking_private_delegate_
observer.h" |
| 16 | 16 |
| 17 using content::BrowserThread; | 17 using content::BrowserThread; |
| 18 using wifi::WiFiService; | 18 using wifi::WiFiService; |
| 19 | 19 |
| 20 namespace extensions { | 20 namespace extensions { |
| 21 | 21 |
| 22 namespace { | 22 namespace { |
| 23 | 23 |
| 24 const char kNetworkingPrivateSequenceTokenName[] = "NetworkingPrivate"; | 24 const char kNetworkingPrivateSequenceTokenName[] = "NetworkingPrivate"; |
| 25 | 25 |
| 26 // Deletes WiFiService object on the worker thread. | 26 // Deletes WiFiService object on the worker thread. |
| 27 void ShutdownWifiServiceOnWorkerThread(scoped_ptr<WiFiService> wifi_service) { | 27 void ShutdownWifiServiceOnWorkerThread( |
| 28 std::unique_ptr<WiFiService> wifi_service) { |
| 28 DCHECK(wifi_service.get()); | 29 DCHECK(wifi_service.get()); |
| 29 } | 30 } |
| 30 | 31 |
| 31 } // namespace | 32 } // namespace |
| 32 | 33 |
| 33 NetworkingPrivateServiceClient::ServiceCallbacks::ServiceCallbacks() { | 34 NetworkingPrivateServiceClient::ServiceCallbacks::ServiceCallbacks() { |
| 34 } | 35 } |
| 35 | 36 |
| 36 NetworkingPrivateServiceClient::ServiceCallbacks::~ServiceCallbacks() { | 37 NetworkingPrivateServiceClient::ServiceCallbacks::~ServiceCallbacks() { |
| 37 } | 38 } |
| 38 | 39 |
| 39 NetworkingPrivateServiceClient::NetworkingPrivateServiceClient( | 40 NetworkingPrivateServiceClient::NetworkingPrivateServiceClient( |
| 40 scoped_ptr<WiFiService> wifi_service, | 41 std::unique_ptr<WiFiService> wifi_service, |
| 41 scoped_ptr<VerifyDelegate> verify_delegate) | 42 std::unique_ptr<VerifyDelegate> verify_delegate) |
| 42 : NetworkingPrivateDelegate(std::move(verify_delegate)), | 43 : NetworkingPrivateDelegate(std::move(verify_delegate)), |
| 43 wifi_service_(std::move(wifi_service)), | 44 wifi_service_(std::move(wifi_service)), |
| 44 weak_factory_(this) { | 45 weak_factory_(this) { |
| 45 sequence_token_ = BrowserThread::GetBlockingPool()->GetNamedSequenceToken( | 46 sequence_token_ = BrowserThread::GetBlockingPool()->GetNamedSequenceToken( |
| 46 kNetworkingPrivateSequenceTokenName); | 47 kNetworkingPrivateSequenceTokenName); |
| 47 task_runner_ = | 48 task_runner_ = |
| 48 BrowserThread::GetBlockingPool() | 49 BrowserThread::GetBlockingPool() |
| 49 ->GetSequencedTaskRunnerWithShutdownBehavior( | 50 ->GetSequencedTaskRunnerWithShutdownBehavior( |
| 50 sequence_token_, base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); | 51 sequence_token_, base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); |
| 51 task_runner_->PostTask( | 52 task_runner_->PostTask( |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 // NetworkingPrivateServiceClient implementation | 118 // NetworkingPrivateServiceClient implementation |
| 118 | 119 |
| 119 void NetworkingPrivateServiceClient::GetProperties( | 120 void NetworkingPrivateServiceClient::GetProperties( |
| 120 const std::string& guid, | 121 const std::string& guid, |
| 121 const DictionaryCallback& success_callback, | 122 const DictionaryCallback& success_callback, |
| 122 const FailureCallback& failure_callback) { | 123 const FailureCallback& failure_callback) { |
| 123 ServiceCallbacks* service_callbacks = AddServiceCallbacks(); | 124 ServiceCallbacks* service_callbacks = AddServiceCallbacks(); |
| 124 service_callbacks->failure_callback = failure_callback; | 125 service_callbacks->failure_callback = failure_callback; |
| 125 service_callbacks->get_properties_callback = success_callback; | 126 service_callbacks->get_properties_callback = success_callback; |
| 126 | 127 |
| 127 scoped_ptr<base::DictionaryValue> properties(new base::DictionaryValue); | 128 std::unique_ptr<base::DictionaryValue> properties(new base::DictionaryValue); |
| 128 std::string* error = new std::string; | 129 std::string* error = new std::string; |
| 129 | 130 |
| 130 base::DictionaryValue* properties_ptr = properties.get(); | 131 base::DictionaryValue* properties_ptr = properties.get(); |
| 131 task_runner_->PostTaskAndReply( | 132 task_runner_->PostTaskAndReply( |
| 132 FROM_HERE, base::Bind(&WiFiService::GetProperties, | 133 FROM_HERE, base::Bind(&WiFiService::GetProperties, |
| 133 base::Unretained(wifi_service_.get()), guid, | 134 base::Unretained(wifi_service_.get()), guid, |
| 134 properties_ptr, error), | 135 properties_ptr, error), |
| 135 base::Bind(&NetworkingPrivateServiceClient::AfterGetProperties, | 136 base::Bind(&NetworkingPrivateServiceClient::AfterGetProperties, |
| 136 weak_factory_.GetWeakPtr(), service_callbacks->id, guid, | 137 weak_factory_.GetWeakPtr(), service_callbacks->id, guid, |
| 137 base::Passed(&properties), base::Owned(error))); | 138 base::Passed(&properties), base::Owned(error))); |
| 138 } | 139 } |
| 139 | 140 |
| 140 void NetworkingPrivateServiceClient::GetManagedProperties( | 141 void NetworkingPrivateServiceClient::GetManagedProperties( |
| 141 const std::string& guid, | 142 const std::string& guid, |
| 142 const DictionaryCallback& success_callback, | 143 const DictionaryCallback& success_callback, |
| 143 const FailureCallback& failure_callback) { | 144 const FailureCallback& failure_callback) { |
| 144 ServiceCallbacks* service_callbacks = AddServiceCallbacks(); | 145 ServiceCallbacks* service_callbacks = AddServiceCallbacks(); |
| 145 service_callbacks->failure_callback = failure_callback; | 146 service_callbacks->failure_callback = failure_callback; |
| 146 service_callbacks->get_properties_callback = success_callback; | 147 service_callbacks->get_properties_callback = success_callback; |
| 147 | 148 |
| 148 scoped_ptr<base::DictionaryValue> properties(new base::DictionaryValue); | 149 std::unique_ptr<base::DictionaryValue> properties(new base::DictionaryValue); |
| 149 std::string* error = new std::string; | 150 std::string* error = new std::string; |
| 150 | 151 |
| 151 base::DictionaryValue* properties_ptr = properties.get(); | 152 base::DictionaryValue* properties_ptr = properties.get(); |
| 152 task_runner_->PostTaskAndReply( | 153 task_runner_->PostTaskAndReply( |
| 153 FROM_HERE, base::Bind(&WiFiService::GetManagedProperties, | 154 FROM_HERE, base::Bind(&WiFiService::GetManagedProperties, |
| 154 base::Unretained(wifi_service_.get()), guid, | 155 base::Unretained(wifi_service_.get()), guid, |
| 155 properties_ptr, error), | 156 properties_ptr, error), |
| 156 base::Bind(&NetworkingPrivateServiceClient::AfterGetProperties, | 157 base::Bind(&NetworkingPrivateServiceClient::AfterGetProperties, |
| 157 weak_factory_.GetWeakPtr(), service_callbacks->id, guid, | 158 weak_factory_.GetWeakPtr(), service_callbacks->id, guid, |
| 158 base::Passed(&properties), base::Owned(error))); | 159 base::Passed(&properties), base::Owned(error))); |
| 159 } | 160 } |
| 160 | 161 |
| 161 void NetworkingPrivateServiceClient::GetState( | 162 void NetworkingPrivateServiceClient::GetState( |
| 162 const std::string& guid, | 163 const std::string& guid, |
| 163 const DictionaryCallback& success_callback, | 164 const DictionaryCallback& success_callback, |
| 164 const FailureCallback& failure_callback) { | 165 const FailureCallback& failure_callback) { |
| 165 ServiceCallbacks* service_callbacks = AddServiceCallbacks(); | 166 ServiceCallbacks* service_callbacks = AddServiceCallbacks(); |
| 166 service_callbacks->failure_callback = failure_callback; | 167 service_callbacks->failure_callback = failure_callback; |
| 167 service_callbacks->get_properties_callback = success_callback; | 168 service_callbacks->get_properties_callback = success_callback; |
| 168 | 169 |
| 169 scoped_ptr<base::DictionaryValue> properties(new base::DictionaryValue); | 170 std::unique_ptr<base::DictionaryValue> properties(new base::DictionaryValue); |
| 170 std::string* error = new std::string; | 171 std::string* error = new std::string; |
| 171 | 172 |
| 172 base::DictionaryValue* properties_ptr = properties.get(); | 173 base::DictionaryValue* properties_ptr = properties.get(); |
| 173 task_runner_->PostTaskAndReply( | 174 task_runner_->PostTaskAndReply( |
| 174 FROM_HERE, | 175 FROM_HERE, |
| 175 base::Bind(&WiFiService::GetState, base::Unretained(wifi_service_.get()), | 176 base::Bind(&WiFiService::GetState, base::Unretained(wifi_service_.get()), |
| 176 guid, properties_ptr, error), | 177 guid, properties_ptr, error), |
| 177 base::Bind(&NetworkingPrivateServiceClient::AfterGetProperties, | 178 base::Bind(&NetworkingPrivateServiceClient::AfterGetProperties, |
| 178 weak_factory_.GetWeakPtr(), service_callbacks->id, guid, | 179 weak_factory_.GetWeakPtr(), service_callbacks->id, guid, |
| 179 base::Passed(&properties), base::Owned(error))); | 180 base::Passed(&properties), base::Owned(error))); |
| 180 } | 181 } |
| 181 | 182 |
| 182 void NetworkingPrivateServiceClient::SetProperties( | 183 void NetworkingPrivateServiceClient::SetProperties( |
| 183 const std::string& guid, | 184 const std::string& guid, |
| 184 scoped_ptr<base::DictionaryValue> properties, | 185 std::unique_ptr<base::DictionaryValue> properties, |
| 185 const VoidCallback& success_callback, | 186 const VoidCallback& success_callback, |
| 186 const FailureCallback& failure_callback) { | 187 const FailureCallback& failure_callback) { |
| 187 ServiceCallbacks* service_callbacks = AddServiceCallbacks(); | 188 ServiceCallbacks* service_callbacks = AddServiceCallbacks(); |
| 188 service_callbacks->failure_callback = failure_callback; | 189 service_callbacks->failure_callback = failure_callback; |
| 189 service_callbacks->set_properties_callback = success_callback; | 190 service_callbacks->set_properties_callback = success_callback; |
| 190 | 191 |
| 191 std::string* error = new std::string; | 192 std::string* error = new std::string; |
| 192 | 193 |
| 193 task_runner_->PostTaskAndReply( | 194 task_runner_->PostTaskAndReply( |
| 194 FROM_HERE, base::Bind(&WiFiService::SetProperties, | 195 FROM_HERE, base::Bind(&WiFiService::SetProperties, |
| 195 base::Unretained(wifi_service_.get()), guid, | 196 base::Unretained(wifi_service_.get()), guid, |
| 196 base::Passed(&properties), error), | 197 base::Passed(&properties), error), |
| 197 base::Bind(&NetworkingPrivateServiceClient::AfterSetProperties, | 198 base::Bind(&NetworkingPrivateServiceClient::AfterSetProperties, |
| 198 weak_factory_.GetWeakPtr(), service_callbacks->id, | 199 weak_factory_.GetWeakPtr(), service_callbacks->id, |
| 199 base::Owned(error))); | 200 base::Owned(error))); |
| 200 } | 201 } |
| 201 | 202 |
| 202 void NetworkingPrivateServiceClient::CreateNetwork( | 203 void NetworkingPrivateServiceClient::CreateNetwork( |
| 203 bool shared, | 204 bool shared, |
| 204 scoped_ptr<base::DictionaryValue> properties, | 205 std::unique_ptr<base::DictionaryValue> properties, |
| 205 const StringCallback& success_callback, | 206 const StringCallback& success_callback, |
| 206 const FailureCallback& failure_callback) { | 207 const FailureCallback& failure_callback) { |
| 207 ServiceCallbacks* service_callbacks = AddServiceCallbacks(); | 208 ServiceCallbacks* service_callbacks = AddServiceCallbacks(); |
| 208 service_callbacks->failure_callback = failure_callback; | 209 service_callbacks->failure_callback = failure_callback; |
| 209 service_callbacks->create_network_callback = success_callback; | 210 service_callbacks->create_network_callback = success_callback; |
| 210 | 211 |
| 211 std::string* network_guid = new std::string; | 212 std::string* network_guid = new std::string; |
| 212 std::string* error = new std::string; | 213 std::string* error = new std::string; |
| 213 | 214 |
| 214 task_runner_->PostTaskAndReply( | 215 task_runner_->PostTaskAndReply( |
| (...skipping 17 matching lines...) Expand all Loading... |
| 232 const std::string& network_type, | 233 const std::string& network_type, |
| 233 bool configured_only, | 234 bool configured_only, |
| 234 bool visible_only, | 235 bool visible_only, |
| 235 int limit, | 236 int limit, |
| 236 const NetworkListCallback& success_callback, | 237 const NetworkListCallback& success_callback, |
| 237 const FailureCallback& failure_callback) { | 238 const FailureCallback& failure_callback) { |
| 238 ServiceCallbacks* service_callbacks = AddServiceCallbacks(); | 239 ServiceCallbacks* service_callbacks = AddServiceCallbacks(); |
| 239 service_callbacks->failure_callback = failure_callback; | 240 service_callbacks->failure_callback = failure_callback; |
| 240 service_callbacks->get_visible_networks_callback = success_callback; | 241 service_callbacks->get_visible_networks_callback = success_callback; |
| 241 | 242 |
| 242 scoped_ptr<base::ListValue> networks(new base::ListValue); | 243 std::unique_ptr<base::ListValue> networks(new base::ListValue); |
| 243 | 244 |
| 244 // TODO(stevenjb/mef): Apply filters (configured, visible, limit). | 245 // TODO(stevenjb/mef): Apply filters (configured, visible, limit). |
| 245 | 246 |
| 246 base::ListValue* networks_ptr = networks.get(); | 247 base::ListValue* networks_ptr = networks.get(); |
| 247 task_runner_->PostTaskAndReply( | 248 task_runner_->PostTaskAndReply( |
| 248 FROM_HERE, base::Bind(&WiFiService::GetVisibleNetworks, | 249 FROM_HERE, base::Bind(&WiFiService::GetVisibleNetworks, |
| 249 base::Unretained(wifi_service_.get()), network_type, | 250 base::Unretained(wifi_service_.get()), network_type, |
| 250 networks_ptr, false), | 251 networks_ptr, false), |
| 251 base::Bind(&NetworkingPrivateServiceClient::AfterGetVisibleNetworks, | 252 base::Bind(&NetworkingPrivateServiceClient::AfterGetVisibleNetworks, |
| 252 weak_factory_.GetWeakPtr(), service_callbacks->id, | 253 weak_factory_.GetWeakPtr(), service_callbacks->id, |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 323 void NetworkingPrivateServiceClient::SetCellularSimState( | 324 void NetworkingPrivateServiceClient::SetCellularSimState( |
| 324 const std::string& guid, | 325 const std::string& guid, |
| 325 bool require_pin, | 326 bool require_pin, |
| 326 const std::string& current_pin, | 327 const std::string& current_pin, |
| 327 const std::string& new_pin, | 328 const std::string& new_pin, |
| 328 const VoidCallback& success_callback, | 329 const VoidCallback& success_callback, |
| 329 const FailureCallback& failure_callback) { | 330 const FailureCallback& failure_callback) { |
| 330 failure_callback.Run(networking_private::kErrorNotSupported); | 331 failure_callback.Run(networking_private::kErrorNotSupported); |
| 331 } | 332 } |
| 332 | 333 |
| 333 scoped_ptr<base::ListValue> | 334 std::unique_ptr<base::ListValue> |
| 334 NetworkingPrivateServiceClient::GetEnabledNetworkTypes() { | 335 NetworkingPrivateServiceClient::GetEnabledNetworkTypes() { |
| 335 scoped_ptr<base::ListValue> network_list; | 336 std::unique_ptr<base::ListValue> network_list; |
| 336 network_list->AppendString(::onc::network_type::kWiFi); | 337 network_list->AppendString(::onc::network_type::kWiFi); |
| 337 return network_list; | 338 return network_list; |
| 338 } | 339 } |
| 339 | 340 |
| 340 scoped_ptr<NetworkingPrivateDelegate::DeviceStateList> | 341 std::unique_ptr<NetworkingPrivateDelegate::DeviceStateList> |
| 341 NetworkingPrivateServiceClient::GetDeviceStateList() { | 342 NetworkingPrivateServiceClient::GetDeviceStateList() { |
| 342 scoped_ptr<DeviceStateList> device_state_list(new DeviceStateList); | 343 std::unique_ptr<DeviceStateList> device_state_list(new DeviceStateList); |
| 343 scoped_ptr<api::networking_private::DeviceStateProperties> properties( | 344 std::unique_ptr<api::networking_private::DeviceStateProperties> properties( |
| 344 new api::networking_private::DeviceStateProperties); | 345 new api::networking_private::DeviceStateProperties); |
| 345 properties->type = api::networking_private::NETWORK_TYPE_WIFI; | 346 properties->type = api::networking_private::NETWORK_TYPE_WIFI; |
| 346 properties->state = api::networking_private::DEVICE_STATE_TYPE_ENABLED; | 347 properties->state = api::networking_private::DEVICE_STATE_TYPE_ENABLED; |
| 347 device_state_list->push_back(std::move(properties)); | 348 device_state_list->push_back(std::move(properties)); |
| 348 return device_state_list; | 349 return device_state_list; |
| 349 } | 350 } |
| 350 | 351 |
| 351 bool NetworkingPrivateServiceClient::EnableNetworkType( | 352 bool NetworkingPrivateServiceClient::EnableNetworkType( |
| 352 const std::string& type) { | 353 const std::string& type) { |
| 353 return false; | 354 return false; |
| 354 } | 355 } |
| 355 | 356 |
| 356 bool NetworkingPrivateServiceClient::DisableNetworkType( | 357 bool NetworkingPrivateServiceClient::DisableNetworkType( |
| 357 const std::string& type) { | 358 const std::string& type) { |
| 358 return false; | 359 return false; |
| 359 } | 360 } |
| 360 | 361 |
| 361 bool NetworkingPrivateServiceClient::RequestScan() { | 362 bool NetworkingPrivateServiceClient::RequestScan() { |
| 362 task_runner_->PostTask(FROM_HERE, | 363 task_runner_->PostTask(FROM_HERE, |
| 363 base::Bind(&WiFiService::RequestNetworkScan, | 364 base::Bind(&WiFiService::RequestNetworkScan, |
| 364 base::Unretained(wifi_service_.get()))); | 365 base::Unretained(wifi_service_.get()))); |
| 365 return true; | 366 return true; |
| 366 } | 367 } |
| 367 | 368 |
| 368 //////////////////////////////////////////////////////////////////////////////// | 369 //////////////////////////////////////////////////////////////////////////////// |
| 369 | 370 |
| 370 void NetworkingPrivateServiceClient::AfterGetProperties( | 371 void NetworkingPrivateServiceClient::AfterGetProperties( |
| 371 ServiceCallbacksID callback_id, | 372 ServiceCallbacksID callback_id, |
| 372 const std::string& network_guid, | 373 const std::string& network_guid, |
| 373 scoped_ptr<base::DictionaryValue> properties, | 374 std::unique_ptr<base::DictionaryValue> properties, |
| 374 const std::string* error) { | 375 const std::string* error) { |
| 375 ServiceCallbacks* service_callbacks = callbacks_map_.Lookup(callback_id); | 376 ServiceCallbacks* service_callbacks = callbacks_map_.Lookup(callback_id); |
| 376 DCHECK(service_callbacks); | 377 DCHECK(service_callbacks); |
| 377 if (!error->empty()) { | 378 if (!error->empty()) { |
| 378 DCHECK(!service_callbacks->failure_callback.is_null()); | 379 DCHECK(!service_callbacks->failure_callback.is_null()); |
| 379 service_callbacks->failure_callback.Run(*error); | 380 service_callbacks->failure_callback.Run(*error); |
| 380 } else { | 381 } else { |
| 381 DCHECK(!service_callbacks->get_properties_callback.is_null()); | 382 DCHECK(!service_callbacks->get_properties_callback.is_null()); |
| 382 service_callbacks->get_properties_callback.Run(std::move(properties)); | 383 service_callbacks->get_properties_callback.Run(std::move(properties)); |
| 383 } | 384 } |
| 384 RemoveServiceCallbacks(callback_id); | 385 RemoveServiceCallbacks(callback_id); |
| 385 } | 386 } |
| 386 | 387 |
| 387 void NetworkingPrivateServiceClient::AfterGetVisibleNetworks( | 388 void NetworkingPrivateServiceClient::AfterGetVisibleNetworks( |
| 388 ServiceCallbacksID callback_id, | 389 ServiceCallbacksID callback_id, |
| 389 scoped_ptr<base::ListValue> networks) { | 390 std::unique_ptr<base::ListValue> networks) { |
| 390 ServiceCallbacks* service_callbacks = callbacks_map_.Lookup(callback_id); | 391 ServiceCallbacks* service_callbacks = callbacks_map_.Lookup(callback_id); |
| 391 DCHECK(service_callbacks); | 392 DCHECK(service_callbacks); |
| 392 DCHECK(!service_callbacks->get_visible_networks_callback.is_null()); | 393 DCHECK(!service_callbacks->get_visible_networks_callback.is_null()); |
| 393 service_callbacks->get_visible_networks_callback.Run(std::move(networks)); | 394 service_callbacks->get_visible_networks_callback.Run(std::move(networks)); |
| 394 RemoveServiceCallbacks(callback_id); | 395 RemoveServiceCallbacks(callback_id); |
| 395 } | 396 } |
| 396 | 397 |
| 397 void NetworkingPrivateServiceClient::AfterSetProperties( | 398 void NetworkingPrivateServiceClient::AfterSetProperties( |
| 398 ServiceCallbacksID callback_id, | 399 ServiceCallbacksID callback_id, |
| 399 const std::string* error) { | 400 const std::string* error) { |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 465 | 466 |
| 466 void NetworkingPrivateServiceClient::OnNetworkListChangedEventOnUIThread( | 467 void NetworkingPrivateServiceClient::OnNetworkListChangedEventOnUIThread( |
| 467 const std::vector<std::string>& network_guids) { | 468 const std::vector<std::string>& network_guids) { |
| 468 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 469 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 469 FOR_EACH_OBSERVER(NetworkingPrivateDelegateObserver, | 470 FOR_EACH_OBSERVER(NetworkingPrivateDelegateObserver, |
| 470 network_events_observers_, | 471 network_events_observers_, |
| 471 OnNetworkListChangedEvent(network_guids)); | 472 OnNetworkListChangedEvent(network_guids)); |
| 472 } | 473 } |
| 473 | 474 |
| 474 } // namespace extensions | 475 } // namespace extensions |
| OLD | NEW |