Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(306)

Unified Diff: chrome/browser/devtools/chrome_devtools_manager_delegate.cc

Issue 2437633003: [DevTools] Switch remote locations to Target domain. (Closed)
Patch Set: removed dispose Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/devtools/chrome_devtools_manager_delegate.cc
diff --git a/chrome/browser/devtools/chrome_devtools_manager_delegate.cc b/chrome/browser/devtools/chrome_devtools_manager_delegate.cc
index 8cb8f874b7dc6c70c89a92a0655a501e9e6c9b19..a438fc43036256e924e81a26a7cbe89cc6164807 100644
--- a/chrome/browser/devtools/chrome_devtools_manager_delegate.cc
+++ b/chrome/browser/devtools/chrome_devtools_manager_delegate.cc
@@ -40,10 +40,13 @@ char kHostParam[] = "host";
char kPortParam[] = "port";
ChromeDevToolsManagerDelegate::ChromeDevToolsManagerDelegate()
- : network_protocol_handler_(new DevToolsNetworkProtocolHandler()) {
+ : network_protocol_handler_(new DevToolsNetworkProtocolHandler()),
+ remote_locations_requester_(nullptr) {
+ content::DevToolsAgentHost::AddObserver(this);
}
ChromeDevToolsManagerDelegate::~ChromeDevToolsManagerDelegate() {
+ content::DevToolsAgentHost::RemoveObserver(this);
}
void ChromeDevToolsManagerDelegate::Inspect(
@@ -52,36 +55,15 @@ void ChromeDevToolsManagerDelegate::Inspect(
}
void ChromeDevToolsManagerDelegate::DevicesAvailable(
- const DevToolsAgentHost::DiscoveryCallback& callback,
const DevToolsDeviceDiscovery::CompleteDevices& devices) {
- DevToolsAgentHost::List result = DevToolsAgentHost::GetOrCreateAll();
+ DevToolsAgentHost::List remote_targets;
for (const auto& complete : devices) {
for (const auto& browser : complete.second->browsers()) {
for (const auto& page : browser->pages())
- result.push_back(page->CreateTarget());
+ remote_targets.push_back(page->CreateTarget());
}
}
- callback.Run(std::move(result));
-}
-
-bool ChromeDevToolsManagerDelegate::DiscoverTargets(
- const DevToolsAgentHost::DiscoveryCallback& callback) {
- if (!tcp_locations_.size())
- return false;
-
- if (!device_manager_)
- device_manager_ = AndroidDeviceManager::Create();
-
- AndroidDeviceManager::DeviceProviders providers;
- providers.push_back(new TCPDeviceProvider(tcp_locations_));
- device_manager_->SetDeviceProviders(providers);
-
- DevToolsDeviceDiscovery::DiscoverOnce(
- device_manager_.get(),
- base::Bind(&ChromeDevToolsManagerDelegate::DevicesAvailable,
- base::Unretained(this),
- callback));
- return true;
+ remote_agent_hosts_.swap(remote_targets);
}
base::DictionaryValue* ChromeDevToolsManagerDelegate::HandleCommand(
@@ -94,7 +76,7 @@ base::DictionaryValue* ChromeDevToolsManagerDelegate::HandleCommand(
if (!DevToolsProtocol::ParseCommand(command_dict, &id, &method, &params))
return nullptr;
- if (method == chrome::devtools::Browser::setRemoteLocations::kName)
+ if (method == chrome::devtools::Target::setRemoteLocations::kName)
return SetRemoteLocations(agent_host, id, params).release();
return network_protocol_handler_->HandleCommand(agent_host, command_dict);
@@ -191,6 +173,11 @@ void ChromeDevToolsManagerDelegate::DevToolsAgentHostAttached(
void ChromeDevToolsManagerDelegate::DevToolsAgentHostDetached(
content::DevToolsAgentHost* agent_host) {
+ if (agent_host == remote_locations_requester_) {
+ remote_locations_requester_ = nullptr;
+ device_discovery_.reset();
+ remote_agent_hosts_.clear();
+ }
network_protocol_handler_->DevToolsAgentStateChanged(agent_host, false);
}
@@ -199,8 +186,14 @@ ChromeDevToolsManagerDelegate::SetRemoteLocations(
content::DevToolsAgentHost* agent_host,
int command_id,
base::DictionaryValue* params) {
- tcp_locations_.clear();
+ if (remote_locations_requester_) {
+ return DevToolsProtocol::CreateInvalidParamsResponse(
+ command_id,
+ "Remote locations are already in use by another client.");
+ }
+ remote_locations_requester_ = agent_host;
+ std::set<net::HostPortPair> tcp_locations;
base::ListValue* locations;
if (!params->GetList(kLocationsParam, &locations))
return DevToolsProtocol::CreateInvalidParamsResponse(command_id,
@@ -222,8 +215,25 @@ ChromeDevToolsManagerDelegate::SetRemoteLocations(
return DevToolsProtocol::CreateInvalidParamsResponse(command_id,
kLocationsParam);
}
- tcp_locations_.insert(net::HostPortPair(host, port));
+ tcp_locations.insert(net::HostPortPair(host, port));
+ }
+
+ if (tcp_locations.empty()) {
+ device_discovery_.reset();
+ remote_agent_hosts_.clear();
+ } else {
+ if (!device_manager_)
+ device_manager_ = AndroidDeviceManager::Create();
+
+ AndroidDeviceManager::DeviceProviders providers;
+ providers.push_back(new TCPDeviceProvider(tcp_locations));
+ device_manager_->SetDeviceProviders(providers);
+
+ device_discovery_.reset(new DevToolsDeviceDiscovery(device_manager_.get(),
+ base::Bind(&ChromeDevToolsManagerDelegate::DevicesAvailable,
+ base::Unretained(this))));
}
+
std::unique_ptr<base::DictionaryValue> result(
base::MakeUnique<base::DictionaryValue>());
return DevToolsProtocol::CreateSuccessResponse(command_id, std::move(result));
« no previous file with comments | « chrome/browser/devtools/chrome_devtools_manager_delegate.h ('k') | chrome/browser/devtools/device/devtools_device_discovery.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698