Index: components/devtools_http_handler/devtools_http_handler.cc |
diff --git a/components/devtools_http_handler/devtools_http_handler.cc b/components/devtools_http_handler/devtools_http_handler.cc |
index 184c039ac37f802d944901ceb9c0e3a90fda6346..2a72d069f3423123b9e6346517ebbc6fdea88a9f 100644 |
--- a/components/devtools_http_handler/devtools_http_handler.cc |
+++ b/components/devtools_http_handler/devtools_http_handler.cc |
@@ -17,11 +17,11 @@ |
#include "base/strings/stringprintf.h" |
#include "base/threading/thread.h" |
#include "base/values.h" |
+#include "components/devtools_discovery/devtools_discovery_manager.h" |
#include "components/devtools_http_handler/devtools_http_handler.h" |
#include "components/devtools_http_handler/devtools_http_handler_delegate.h" |
#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/devtools_agent_host.h" |
-#include "content/public/browser/devtools_target.h" |
#include "content/public/common/url_constants.h" |
#include "content/public/common/user_agent.h" |
#include "net/base/escape.h" |
@@ -40,8 +40,7 @@ |
using content::BrowserThread; |
using content::DevToolsAgentHost; |
using content::DevToolsAgentHostClient; |
-using content::DevToolsManagerDelegate; |
-using content::DevToolsTarget; |
+using devtools_discovery::DevToolsTargetDescriptor; |
namespace devtools_http_handler { |
@@ -319,9 +318,9 @@ class DevToolsAgentHostClientImpl : public DevToolsAgentHostClient { |
scoped_refptr<DevToolsAgentHost> agent_host_; |
}; |
-static bool TimeComparator(const DevToolsTarget* target1, |
- const DevToolsTarget* target2) { |
- return target1->GetLastActivityTime() > target2->GetLastActivityTime(); |
+static bool TimeComparator(const DevToolsTargetDescriptor* desc1, |
+ const DevToolsTargetDescriptor* desc2) { |
+ return desc1->GetLastActivityTime() > desc2->GetLastActivityTime(); |
} |
// DevToolsHttpHandler::ServerSocketFactory ---------------------------------- |
@@ -341,7 +340,7 @@ DevToolsHttpHandler::ServerSocketFactory::CreateForTethering( |
DevToolsHttpHandler::~DevToolsHttpHandler() { |
TerminateOnUI(thread_, server_wrapper_, socket_factory_); |
- STLDeleteValues(&target_map_); |
+ STLDeleteValues(&descriptor_map_); |
STLDeleteValues(&connection_to_client_); |
} |
@@ -565,14 +564,17 @@ void DevToolsHttpHandler::OnJsonRequest( |
if (command == "list") { |
std::string host = info.headers["host"]; |
- if (manager_delegate_) { |
- manager_delegate_->EnumerateTargets( |
- base::Bind(&DevToolsHttpHandler::OnTargetListReceivedWeak, |
- weak_factory_.GetWeakPtr(), connection_id, host)); |
- } else { |
- DevToolsManagerDelegate::TargetList empty_list; |
- OnTargetListReceived(connection_id, host, empty_list); |
+ DevToolsTargetDescriptor::List descriptors = |
+ devtools_discovery::DevToolsDiscoveryManager::GetInstance()-> |
+ GetDescriptors(); |
+ std::sort(descriptors.begin(), descriptors.end(), TimeComparator); |
+ STLDeleteValues(&descriptor_map_); |
+ base::ListValue list_value; |
+ for (DevToolsTargetDescriptor* descriptor : descriptors) { |
+ descriptor_map_[descriptor->GetId()] = descriptor; |
+ list_value.Append(SerializeDescriptor(*descriptor, host)); |
} |
+ SendJson(connection_id, net::HTTP_OK, &list_value, std::string()); |
return; |
} |
@@ -581,10 +583,10 @@ void DevToolsHttpHandler::OnJsonRequest( |
query, net::UnescapeRule::URL_SPECIAL_CHARS)); |
if (!url.is_valid()) |
url = GURL(url::kAboutBlankURL); |
- scoped_ptr<DevToolsTarget> target; |
- if (manager_delegate_) |
- target = manager_delegate_->CreateNewTarget(url); |
- if (!target) { |
+ scoped_ptr<DevToolsTargetDescriptor> descriptor = |
+ devtools_discovery::DevToolsDiscoveryManager::GetInstance()-> |
+ CreateNew(url); |
+ if (!descriptor) { |
SendJson(connection_id, |
net::HTTP_INTERNAL_SERVER_ERROR, |
NULL, |
@@ -593,16 +595,16 @@ void DevToolsHttpHandler::OnJsonRequest( |
} |
std::string host = info.headers["host"]; |
scoped_ptr<base::DictionaryValue> dictionary( |
- SerializeTarget(*target.get(), host)); |
+ SerializeDescriptor(*descriptor.get(), host)); |
SendJson(connection_id, net::HTTP_OK, dictionary.get(), std::string()); |
- const std::string target_id = target->GetId(); |
- target_map_[target_id] = target.release(); |
+ const std::string target_id = descriptor->GetId(); |
+ descriptor_map_[target_id] = descriptor.release(); |
return; |
} |
if (command == "activate" || command == "close") { |
- DevToolsTarget* target = GetTarget(target_id); |
- if (!target) { |
+ DevToolsTargetDescriptor* descriptor = GetDescriptor(target_id); |
+ if (!descriptor) { |
SendJson(connection_id, |
net::HTTP_NOT_FOUND, |
NULL, |
@@ -611,7 +613,7 @@ void DevToolsHttpHandler::OnJsonRequest( |
} |
if (command == "activate") { |
- if (target->Activate()) { |
+ if (descriptor->Activate()) { |
SendJson(connection_id, net::HTTP_OK, NULL, "Target activated"); |
} else { |
SendJson(connection_id, |
@@ -623,7 +625,7 @@ void DevToolsHttpHandler::OnJsonRequest( |
} |
if (command == "close") { |
- if (target->Close()) { |
+ if (descriptor->Close()) { |
SendJson(connection_id, net::HTTP_OK, NULL, "Target is closing"); |
} else { |
SendJson(connection_id, |
@@ -641,52 +643,21 @@ void DevToolsHttpHandler::OnJsonRequest( |
return; |
} |
-// static |
-void DevToolsHttpHandler::OnTargetListReceivedWeak( |
- base::WeakPtr<DevToolsHttpHandler> handler, |
- int connection_id, |
- const std::string& host, |
- const DevToolsManagerDelegate::TargetList& targets) { |
- if (handler) { |
- handler->OnTargetListReceived(connection_id, host, targets); |
- } else { |
- STLDeleteContainerPointers(targets.begin(), targets.end()); |
- } |
-} |
- |
-void DevToolsHttpHandler::OnTargetListReceived( |
- int connection_id, |
- const std::string& host, |
- const DevToolsManagerDelegate::TargetList& targets) { |
- DevToolsManagerDelegate::TargetList sorted_targets = targets; |
- std::sort(sorted_targets.begin(), sorted_targets.end(), TimeComparator); |
- |
- STLDeleteValues(&target_map_); |
- base::ListValue list_value; |
- for (DevToolsManagerDelegate::TargetList::const_iterator it = |
- sorted_targets.begin(); it != sorted_targets.end(); ++it) { |
- DevToolsTarget* target = *it; |
- target_map_[target->GetId()] = target; |
- list_value.Append(SerializeTarget(*target, host)); |
- } |
- SendJson(connection_id, net::HTTP_OK, &list_value, std::string()); |
-} |
- |
-DevToolsTarget* DevToolsHttpHandler::GetTarget(const std::string& id) { |
- TargetMap::const_iterator it = target_map_.find(id); |
- if (it == target_map_.end()) |
- return NULL; |
+DevToolsTargetDescriptor* DevToolsHttpHandler::GetDescriptor( |
+ const std::string& target_id) { |
+ DescriptorMap::const_iterator it = descriptor_map_.find(target_id); |
+ if (it == descriptor_map_.end()) |
+ return nullptr; |
return it->second; |
} |
void DevToolsHttpHandler::OnThumbnailRequest( |
int connection_id, const std::string& target_id) { |
- DevToolsTarget* target = GetTarget(target_id); |
+ DevToolsTargetDescriptor* descriptor = GetDescriptor(target_id); |
GURL page_url; |
- if (target) |
- page_url = target->GetURL(); |
- std::string data = manager_delegate_ ? |
- manager_delegate_->GetPageThumbnailData(page_url) : ""; |
+ if (descriptor) |
+ page_url = descriptor->GetURL(); |
+ std::string data = delegate_->GetPageThumbnailData(page_url); |
if (!data.empty()) |
Send200(connection_id, data, "image/png"); |
else |
@@ -731,18 +702,18 @@ void DevToolsHttpHandler::OnWebSocketRequest( |
return; |
} |
- std::string page_id = request.path.substr(strlen(kPageUrlPrefix)); |
- DevToolsTarget* target = GetTarget(page_id); |
+ std::string target_id = request.path.substr(strlen(kPageUrlPrefix)); |
+ DevToolsTargetDescriptor* descriptor = GetDescriptor(target_id); |
scoped_refptr<DevToolsAgentHost> agent = |
- target ? target->GetAgentHost() : NULL; |
+ descriptor ? descriptor->GetAgentHost() : nullptr; |
if (!agent.get()) { |
- Send500(connection_id, "No such target id: " + page_id); |
+ Send500(connection_id, "No such target id: " + target_id); |
return; |
} |
if (agent->IsAttached()) { |
Send500(connection_id, |
- "Target with given id is being inspected: " + page_id); |
+ "Target with given id is being inspected: " + target_id); |
return; |
} |
@@ -775,7 +746,6 @@ DevToolsHttpHandler::DevToolsHttpHandler( |
scoped_ptr<ServerSocketFactory> server_socket_factory, |
const std::string& frontend_url, |
DevToolsHttpHandlerDelegate* delegate, |
- DevToolsManagerDelegate* manager_delegate, |
const base::FilePath& output_directory, |
const base::FilePath& debug_frontend_dir, |
const std::string& product_name, |
@@ -786,7 +756,6 @@ DevToolsHttpHandler::DevToolsHttpHandler( |
user_agent_(user_agent), |
server_wrapper_(nullptr), |
delegate_(delegate), |
- manager_delegate_(manager_delegate), |
socket_factory_(nullptr), |
weak_factory_(this) { |
bool bundles_resources = frontend_url_.empty(); |
@@ -912,35 +881,34 @@ void DevToolsHttpHandler::AcceptWebSocket( |
request)); |
} |
-base::DictionaryValue* DevToolsHttpHandler::SerializeTarget( |
- const DevToolsTarget& target, |
+base::DictionaryValue* DevToolsHttpHandler::SerializeDescriptor( |
+ const DevToolsTargetDescriptor& descriptor, |
const std::string& host) { |
base::DictionaryValue* dictionary = new base::DictionaryValue; |
- std::string id = target.GetId(); |
+ std::string id = descriptor.GetId(); |
dictionary->SetString(kTargetIdField, id); |
- std::string parent_id = target.GetParentId(); |
+ std::string parent_id = descriptor.GetParentId(); |
if (!parent_id.empty()) |
dictionary->SetString(kTargetParentIdField, parent_id); |
- dictionary->SetString(kTargetTypeField, target.GetType()); |
+ dictionary->SetString(kTargetTypeField, descriptor.GetType()); |
dictionary->SetString(kTargetTitleField, |
- net::EscapeForHTML(target.GetTitle())); |
- dictionary->SetString(kTargetDescriptionField, target.GetDescription()); |
+ net::EscapeForHTML(descriptor.GetTitle())); |
+ dictionary->SetString(kTargetDescriptionField, descriptor.GetDescription()); |
- GURL url = target.GetURL(); |
+ GURL url = descriptor.GetURL(); |
dictionary->SetString(kTargetUrlField, url.spec()); |
- GURL favicon_url = target.GetFaviconURL(); |
+ GURL favicon_url = descriptor.GetFaviconURL(); |
if (favicon_url.is_valid()) |
dictionary->SetString(kTargetFaviconUrlField, favicon_url.spec()); |
- if (manager_delegate_ && |
- !manager_delegate_->GetPageThumbnailData(url).empty()) { |
+ if (!delegate_->GetPageThumbnailData(url).empty()) { |
dictionary->SetString(kTargetThumbnailUrlField, |
std::string(kThumbUrlPrefix) + id); |
} |
- if (!target.IsAttached()) { |
+ if (!descriptor.IsAttached()) { |
dictionary->SetString(kTargetWebSocketDebuggerUrlField, |
base::StringPrintf("ws://%s%s%s", |
host.c_str(), |