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 "chrome/browser/devtools/device/devtools_device_discovery.h" | 5 #include "chrome/browser/devtools/device/devtools_device_discovery.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/json/json_reader.h" | 8 #include "base/json/json_reader.h" |
9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 base::StartsWith(browser_id_, kWebViewSocketPrefix, | 263 base::StartsWith(browser_id_, kWebViewSocketPrefix, |
264 base::CompareCase::SENSITIVE) | 264 base::CompareCase::SENSITIVE) |
265 ? base::UserMetricsAction("DevTools_InspectAndroidWebView") | 265 ? base::UserMetricsAction("DevTools_InspectAndroidWebView") |
266 : base::UserMetricsAction("DevTools_InspectAndroidPage")); | 266 : base::UserMetricsAction("DevTools_InspectAndroidPage")); |
267 web_socket_.reset( | 267 web_socket_.reset( |
268 device_->CreateWebSocket(browser_id_, target_path_, this)); | 268 device_->CreateWebSocket(browser_id_, target_path_, this)); |
269 } | 269 } |
270 | 270 |
271 void AgentHostDelegate::Detach() { | 271 void AgentHostDelegate::Detach() { |
272 web_socket_.reset(); | 272 web_socket_.reset(); |
| 273 proxy_->ConnectionClosed(); |
273 proxy_ = nullptr; | 274 proxy_ = nullptr; |
274 } | 275 } |
275 | 276 |
276 std::string AgentHostDelegate::GetType() { | 277 std::string AgentHostDelegate::GetType() { |
277 return remote_type_; | 278 return remote_type_; |
278 } | 279 } |
279 | 280 |
280 std::string AgentHostDelegate::GetTitle() { | 281 std::string AgentHostDelegate::GetTitle() { |
281 return title_; | 282 return title_; |
282 } | 283 } |
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
610 } | 611 } |
611 | 612 |
612 void DevToolsDeviceDiscovery::ReceivedDeviceList( | 613 void DevToolsDeviceDiscovery::ReceivedDeviceList( |
613 const CompleteDevices& complete_devices) { | 614 const CompleteDevices& complete_devices) { |
614 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 615 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
615 task_scheduler_.Run(base::Bind(&DevToolsDeviceDiscovery::RequestDeviceList, | 616 task_scheduler_.Run(base::Bind(&DevToolsDeviceDiscovery::RequestDeviceList, |
616 weak_factory_.GetWeakPtr())); | 617 weak_factory_.GetWeakPtr())); |
617 // |callback_| should be run last as it may destroy |this|. | 618 // |callback_| should be run last as it may destroy |this|. |
618 callback_.Run(complete_devices); | 619 callback_.Run(complete_devices); |
619 } | 620 } |
620 | |
621 namespace { | |
622 | |
623 class OnceWrapper { | |
624 public: | |
625 OnceWrapper(AndroidDeviceManager* device_manager, | |
626 const DevToolsDeviceDiscovery::DeviceListCallback& callback) | |
627 : callback_(callback) { | |
628 discovery_.reset(new DevToolsDeviceDiscovery(device_manager, | |
629 base::Bind(&OnceWrapper::Callback, base::Unretained(this)))); | |
630 discovery_->SetScheduler(base::Bind(&OnceWrapper::NoOp)); | |
631 } | |
632 | |
633 private: | |
634 static void NoOp(const base::Closure&) {} | |
635 | |
636 void Callback(const DevToolsDeviceDiscovery::CompleteDevices& devices) { | |
637 callback_.Run(devices); | |
638 delete this; | |
639 } | |
640 | |
641 std::unique_ptr<DevToolsDeviceDiscovery> discovery_; | |
642 const DevToolsDeviceDiscovery::DeviceListCallback callback_; | |
643 }; | |
644 | |
645 } // namespace | |
646 | |
647 // static | |
648 void DevToolsDeviceDiscovery::DiscoverOnce( | |
649 AndroidDeviceManager* device_manager, | |
650 const DeviceListCallback& callback) { | |
651 new OnceWrapper(device_manager, callback); | |
652 } | |
OLD | NEW |