Index: chrome/browser/ui/webui/inspect_ui.cc |
diff --git a/chrome/browser/ui/webui/inspect_ui.cc b/chrome/browser/ui/webui/inspect_ui.cc |
index 0562d1231380a34a4844abc667da2258cd7d211c..437f3aaf6970c2ddf836b7e32311f6edac772c96 100644 |
--- a/chrome/browser/ui/webui/inspect_ui.cc |
+++ b/chrome/browser/ui/webui/inspect_ui.cc |
@@ -42,6 +42,7 @@ |
#include "grit/browser_resources.h" |
#include "grit/generated_resources.h" |
#include "net/base/escape.h" |
+#include "net/base/net_errors.h" |
#include "ui/base/resource/resource_bundle.h" |
using content::BrowserThread; |
@@ -62,12 +63,13 @@ namespace { |
static const char kDataFile[] = "targets-data.json"; |
static const char kAdbQuery[] = "adb-query/"; |
-static const char kAdbDevices[] = "adb-devices"; |
+static const char kAdbPages[] = "adb-pages"; |
static const char kLocalXhr[] = "local-xhr/"; |
static const char kExtensionTargetType[] = "extension"; |
static const char kPageTargetType[] = "page"; |
static const char kWorkerTargetType[] = "worker"; |
+static const char kAdbTargetType[] = "adb_page"; |
static const char kInspectCommand[] = "inspect"; |
static const char kTerminateCommand[] = "terminate"; |
@@ -78,8 +80,12 @@ static const char kProcessIdField[] = "processId"; |
static const char kRouteIdField[] = "routeId"; |
static const char kUrlField[] = "url"; |
static const char kNameField[] = "name"; |
-static const char kFaviconUrlField[] = "favicon_url"; |
+static const char kFaviconUrlField[] = "faviconUrl"; |
static const char kPidField[] = "pid"; |
+static const char kAdbSerialField[] = "adbSerial"; |
+static const char kAdbModelField[] = "adbModel"; |
+static const char kAdbPageIdField[] = "adbPageId"; |
+static const char kAdbDebugUrl[] = "adbDebugUrl"; |
DictionaryValue* BuildTargetDescriptor( |
const std::string& target_type, |
@@ -169,7 +175,6 @@ void SendDescriptors( |
std::string json_string; |
base::JSONWriter::Write(rvh_list, &json_string); |
- |
callback.Run(base::RefCountedString::TakeString(&json_string)); |
} |
@@ -338,7 +343,7 @@ InspectUI::InspectUI(content::WebUI* web_ui) |
web_ui->AddMessageHandler(new InspectMessageHandler()); |
Profile* profile = Profile::FromWebUI(web_ui); |
- adb_bridge_ = DevToolsAdbBridge::Start(); |
+ adb_bridge_.reset(new DevToolsAdbBridge(profile)); |
content::WebUIDataSource::Add(profile, CreateInspectUIHTMLSource()); |
registrar_.Add(this, |
@@ -383,10 +388,7 @@ void InspectUI::StopListeningNotifications() |
{ |
if (!observer_) |
return; |
- if (adb_bridge_) { |
- adb_bridge_->Stop(); |
- adb_bridge_ = NULL; |
- } |
+ adb_bridge_.reset(); |
observer_->InspectUIDestroyed(); |
observer_ = NULL; |
registrar_.RemoveAll(); |
@@ -408,8 +410,8 @@ bool InspectUI::HandleRequestCallback( |
const content::WebUIDataSource::GotDataCallback& callback) { |
if (path == kDataFile) |
return HandleDataRequestCallback(path, callback); |
- if (path.find(kAdbDevices) == 0) |
- return HandleAdbDevicesCallback(path, callback); |
+ if (path.find(kAdbPages) == 0) |
+ return HandleAdbPagesCallback(path, callback); |
if (path.find(kAdbQuery) == 0) |
return HandleAdbQueryCallback(path, callback); |
if (path.find(kLocalXhr) == 0) |
@@ -429,13 +431,39 @@ bool InspectUI::HandleAdbQueryCallback( |
return true; |
} |
-bool InspectUI::HandleAdbDevicesCallback( |
+bool InspectUI::HandleAdbPagesCallback( |
const std::string& path, |
const content::WebUIDataSource::GotDataCallback& callback) { |
- adb_bridge_->Devices(); |
+ adb_bridge_->Pages(base::Bind(&InspectUI::OnAdbPages, |
+ weak_factory_.GetWeakPtr(), |
+ callback)); |
+ return true; |
+} |
+ |
+void InspectUI::OnAdbPages( |
+ const content::WebUIDataSource::GotDataCallback& callback, |
+ int result, |
+ DevToolsAdbBridge::RemotePages* pages) { |
+ if (result != net::OK) |
+ return; |
+ ListValue targets; |
+ scoped_ptr<DevToolsAdbBridge::RemotePages> my_pages(pages); |
+ for (DevToolsAdbBridge::RemotePages::iterator it = my_pages->begin(); |
+ it != my_pages->end(); ++it) { |
+ DevToolsAdbBridge::RemotePage* page = it->get(); |
+ DictionaryValue* target_data = BuildTargetDescriptor(kAdbTargetType, |
+ false, GURL(page->url()), page->title(), GURL(page->favicon_url()), 0, |
+ 0); |
+ target_data->SetString(kAdbSerialField, page->serial()); |
+ target_data->SetString(kAdbModelField, page->model()); |
+ target_data->SetString(kAdbPageIdField, page->id()); |
+ target_data->SetString(kAdbDebugUrl, page->debug_url()); |
+ targets.Append(target_data); |
+ } |
+ |
std::string json_string = ""; |
+ base::JSONWriter::Write(&targets, &json_string); |
callback.Run(base::RefCountedString::TakeString(&json_string)); |
- return true; |
} |
bool InspectUI::HandleLocalXhrCallback( |