| 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/api/dial/dial_api.h" | 5 #include "chrome/browser/extensions/api/dial/dial_api.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <utility> | 8 #include <utility> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 dial_registry_->AddDeviceForTest(*test_device_data_); | 57 dial_registry_->AddDeviceForTest(*test_device_data_); |
| 58 } | 58 } |
| 59 } | 59 } |
| 60 return dial_registry_; | 60 return dial_registry_; |
| 61 } | 61 } |
| 62 | 62 |
| 63 void DialAPI::OnListenerAdded(const EventListenerInfo& details) { | 63 void DialAPI::OnListenerAdded(const EventListenerInfo& details) { |
| 64 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 64 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 65 BrowserThread::PostTask( | 65 BrowserThread::PostTask( |
| 66 BrowserThread::IO, FROM_HERE, | 66 BrowserThread::IO, FROM_HERE, |
| 67 base::Bind(&DialAPI::NotifyListenerAddedOnIOThread, this)); | 67 base::BindOnce(&DialAPI::NotifyListenerAddedOnIOThread, this)); |
| 68 } | 68 } |
| 69 | 69 |
| 70 void DialAPI::OnListenerRemoved(const EventListenerInfo& details) { | 70 void DialAPI::OnListenerRemoved(const EventListenerInfo& details) { |
| 71 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 71 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 72 BrowserThread::PostTask( | 72 BrowserThread::PostTask( |
| 73 BrowserThread::IO, FROM_HERE, | 73 BrowserThread::IO, FROM_HERE, |
| 74 base::Bind(&DialAPI::NotifyListenerRemovedOnIOThread, this)); | 74 base::BindOnce(&DialAPI::NotifyListenerRemovedOnIOThread, this)); |
| 75 } | 75 } |
| 76 | 76 |
| 77 void DialAPI::NotifyListenerAddedOnIOThread() { | 77 void DialAPI::NotifyListenerAddedOnIOThread() { |
| 78 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 78 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 79 VLOG(2) << "DIAL device event listener added."; | 79 VLOG(2) << "DIAL device event listener added."; |
| 80 dial_registry()->OnListenerAdded(); | 80 dial_registry()->OnListenerAdded(); |
| 81 } | 81 } |
| 82 | 82 |
| 83 void DialAPI::NotifyListenerRemovedOnIOThread() { | 83 void DialAPI::NotifyListenerRemovedOnIOThread() { |
| 84 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 84 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 85 VLOG(2) << "DIAL device event listener removed"; | 85 VLOG(2) << "DIAL device event listener removed"; |
| 86 dial_registry()->OnListenerRemoved(); | 86 dial_registry()->OnListenerRemoved(); |
| 87 } | 87 } |
| 88 | 88 |
| 89 void DialAPI::FillDialDevice(const media_router::DialDeviceData& device_data, | 89 void DialAPI::FillDialDevice(const media_router::DialDeviceData& device_data, |
| 90 api::dial::DialDevice* device) const { | 90 api::dial::DialDevice* device) const { |
| 91 DCHECK(!device_data.device_id().empty()); | 91 DCHECK(!device_data.device_id().empty()); |
| 92 DCHECK(media_router::DialDeviceData::IsDeviceDescriptionUrl( | 92 DCHECK(media_router::DialDeviceData::IsDeviceDescriptionUrl( |
| 93 device_data.device_description_url())); | 93 device_data.device_description_url())); |
| 94 device->device_label = device_data.label(); | 94 device->device_label = device_data.label(); |
| 95 device->device_description_url = device_data.device_description_url().spec(); | 95 device->device_description_url = device_data.device_description_url().spec(); |
| 96 if (device_data.has_config_id()) | 96 if (device_data.has_config_id()) |
| 97 device->config_id.reset(new int(device_data.config_id())); | 97 device->config_id.reset(new int(device_data.config_id())); |
| 98 } | 98 } |
| 99 | 99 |
| 100 void DialAPI::OnDialDeviceEvent(const DialRegistry::DeviceList& devices) { | 100 void DialAPI::OnDialDeviceEvent(const DialRegistry::DeviceList& devices) { |
| 101 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 101 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 102 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 102 BrowserThread::PostTask( |
| 103 base::Bind(&DialAPI::SendEventOnUIThread, this, devices)); | 103 BrowserThread::UI, FROM_HERE, |
| 104 base::BindOnce(&DialAPI::SendEventOnUIThread, this, devices)); |
| 104 } | 105 } |
| 105 | 106 |
| 106 void DialAPI::OnDialError(const DialRegistry::DialErrorCode code) { | 107 void DialAPI::OnDialError(const DialRegistry::DialErrorCode code) { |
| 107 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 108 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 108 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 109 BrowserThread::PostTask( |
| 109 base::Bind(&DialAPI::SendErrorOnUIThread, this, code)); | 110 BrowserThread::UI, FROM_HERE, |
| 111 base::BindOnce(&DialAPI::SendErrorOnUIThread, this, code)); |
| 110 } | 112 } |
| 111 | 113 |
| 112 void DialAPI::SendEventOnUIThread(const DialRegistry::DeviceList& devices) { | 114 void DialAPI::SendEventOnUIThread(const DialRegistry::DeviceList& devices) { |
| 113 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 115 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 114 | 116 |
| 115 std::vector<api::dial::DialDevice> args; | 117 std::vector<api::dial::DialDevice> args; |
| 116 for (const DialDeviceData& device : devices) { | 118 for (const DialDeviceData& device : devices) { |
| 117 api::dial::DialDevice api_device; | 119 api::dial::DialDevice api_device; |
| 118 FillDialDevice(device, &api_device); | 120 FillDialDevice(device, &api_device); |
| 119 args.push_back(std::move(api_device)); | 121 args.push_back(std::move(api_device)); |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 197 DialFetchDeviceDescriptionFunction::~DialFetchDeviceDescriptionFunction() {} | 199 DialFetchDeviceDescriptionFunction::~DialFetchDeviceDescriptionFunction() {} |
| 198 | 200 |
| 199 bool DialFetchDeviceDescriptionFunction::RunAsync() { | 201 bool DialFetchDeviceDescriptionFunction::RunAsync() { |
| 200 dial_ = DialAPIFactory::GetForBrowserContext(browser_context()).get(); | 202 dial_ = DialAPIFactory::GetForBrowserContext(browser_context()).get(); |
| 201 params_ = api::dial::FetchDeviceDescription::Params::Create(*args_); | 203 params_ = api::dial::FetchDeviceDescription::Params::Create(*args_); |
| 202 EXTENSION_FUNCTION_VALIDATE(params_.get()); | 204 EXTENSION_FUNCTION_VALIDATE(params_.get()); |
| 203 | 205 |
| 204 // DialRegistry lives on the IO thread. Hop on over there to get the URL to | 206 // DialRegistry lives on the IO thread. Hop on over there to get the URL to |
| 205 // fetch. | 207 // fetch. |
| 206 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, | 208 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, |
| 207 base::Bind(&DialFetchDeviceDescriptionFunction:: | 209 base::BindOnce(&DialFetchDeviceDescriptionFunction:: |
| 208 GetDeviceDescriptionUrlOnIOThread, | 210 GetDeviceDescriptionUrlOnIOThread, |
| 209 this, params_->device_label)); | 211 this, params_->device_label)); |
| 210 return true; | 212 return true; |
| 211 } | 213 } |
| 212 | 214 |
| 213 void DialFetchDeviceDescriptionFunction::GetDeviceDescriptionUrlOnIOThread( | 215 void DialFetchDeviceDescriptionFunction::GetDeviceDescriptionUrlOnIOThread( |
| 214 const std::string& label) { | 216 const std::string& label) { |
| 215 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 217 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 216 const GURL& device_description_url = | 218 const GURL& device_description_url = |
| 217 dial_->dial_registry()->GetDeviceDescriptionURL(label); | 219 dial_->dial_registry()->GetDeviceDescriptionURL(label); |
| 218 BrowserThread::PostTask( | 220 BrowserThread::PostTask( |
| 219 BrowserThread::UI, FROM_HERE, | 221 BrowserThread::UI, FROM_HERE, |
| 220 base::Bind(&DialFetchDeviceDescriptionFunction::MaybeStartFetch, this, | 222 base::BindOnce(&DialFetchDeviceDescriptionFunction::MaybeStartFetch, this, |
| 221 device_description_url)); | 223 device_description_url)); |
| 222 } | 224 } |
| 223 | 225 |
| 224 void DialFetchDeviceDescriptionFunction::MaybeStartFetch(const GURL& url) { | 226 void DialFetchDeviceDescriptionFunction::MaybeStartFetch(const GURL& url) { |
| 225 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 227 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 226 if (url.is_empty()) { | 228 if (url.is_empty()) { |
| 227 SetError("Device not found"); | 229 SetError("Device not found"); |
| 228 SendResponse(false); | 230 SendResponse(false); |
| 229 return; | 231 return; |
| 230 } | 232 } |
| 231 | 233 |
| (...skipping 28 matching lines...) Expand all Loading... |
| 260 void DialFetchDeviceDescriptionFunction::OnFetchError( | 262 void DialFetchDeviceDescriptionFunction::OnFetchError( |
| 261 const std::string& message) { | 263 const std::string& message) { |
| 262 // Destroy the DeviceDescriptionFetcher since it still contains a reference | 264 // Destroy the DeviceDescriptionFetcher since it still contains a reference |
| 263 // to |this| in its un-invoked callback. | 265 // to |this| in its un-invoked callback. |
| 264 device_description_fetcher_.reset(); | 266 device_description_fetcher_.reset(); |
| 265 SetError(message); | 267 SetError(message); |
| 266 SendResponse(false); | 268 SendResponse(false); |
| 267 } | 269 } |
| 268 | 270 |
| 269 } // namespace extensions | 271 } // namespace extensions |
| OLD | NEW |