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

Unified Diff: chrome/browser/ui/webui/inspect_ui.cc

Issue 46523002: Fix Telemetry. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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
« no previous file with comments | « chrome/browser/ui/webui/inspect_ui.h ('k') | chrome/chrome.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 f1dbdc3a3331da830b66da5a5c45189deca510dd..84def4440f4fecbe5faa192a5c752a88b4098c50 100644
--- a/chrome/browser/ui/webui/inspect_ui.cc
+++ b/chrome/browser/ui/webui/inspect_ui.cc
@@ -10,20 +10,21 @@
#include "base/bind_helpers.h"
#include "base/json/json_writer.h"
#include "base/memory/ref_counted_memory.h"
-#include "base/prefs/pref_service.h"
-#include "base/stl_util.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
-#include "chrome/browser/devtools/devtools_target_impl.h"
+#include "chrome/browser/devtools/devtools_window.h"
#include "chrome/browser/devtools/port_forwarding_controller.h"
+#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser_navigator.h"
#include "chrome/browser/ui/singleton_tabs.h"
#include "chrome/browser/ui/tab_contents/tab_contents_iterator.h"
+#include "chrome/browser/ui/webui/extensions/extension_icon_source.h"
#include "chrome/browser/ui/webui/theme_source.h"
+#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
#include "content/public/browser/browser_child_process_observer.h"
@@ -32,6 +33,8 @@
#include "content/public/browser/devtools_agent_host.h"
#include "content/public/browser/devtools_client_host.h"
#include "content/public/browser/devtools_manager.h"
+#include "content/public/browser/favicon_status.h"
+#include "content/public/browser/navigation_entry.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/notification_source.h"
#include "content/public/browser/notification_types.h"
@@ -67,13 +70,16 @@ using content::WorkerServiceObserver;
namespace {
+const char kAppTargetType[] = "app";
+const char kExtensionTargetType[] = "extension";
+const char kPageTargetType[] = "page";
const char kWorkerTargetType[] = "worker";
const char kAdbTargetType[] = "adb_page";
const char kInitUICommand[] = "init-ui";
const char kInspectCommand[] = "inspect";
const char kActivateCommand[] = "activate";
-const char kCloseCommand[] = "close";
+const char kTerminateCommand[] = "terminate";
const char kReloadCommand[] = "reload";
const char kOpenCommand[] = "open";
@@ -86,13 +92,15 @@ const char kPortForwardingConfigCommand[] = "set-port-forwarding-config";
const char kPortForwardingDefaultPort[] = "8080";
const char kPortForwardingDefaultLocation[] = "localhost:8080";
-const char kTargetIdField[] = "id";
const char kTargetTypeField[] = "type";
const char kAttachedField[] = "attached";
+const char kProcessIdField[] = "processId";
+const char kRouteIdField[] = "routeId";
const char kUrlField[] = "url";
const char kNameField[] = "name";
const char kFaviconUrlField[] = "faviconUrl";
const char kDescription[] = "description";
+const char kPidField[] = "pid";
const char kAdbConnectedField[] = "adbConnected";
const char kAdbModelField[] = "adbModel";
const char kAdbSerialField[] = "adbSerial";
@@ -109,19 +117,92 @@ const char kAdbAttachedForeignField[] = "adbAttachedForeign";
const char kGuestList[] = "guests";
DictionaryValue* BuildTargetDescriptor(
- const DevToolsTargetImpl& target) {
+ const std::string& target_type,
+ bool attached,
+ const GURL& url,
+ const std::string& name,
+ const GURL& favicon_url,
+ const std::string& description,
+ int process_id,
+ int route_id,
+ base::ProcessHandle handle = base::kNullProcessHandle) {
DictionaryValue* target_data = new DictionaryValue();
- target_data->SetString(kTargetIdField, target.GetId());
- target_data->SetString(kTargetTypeField, target.GetType());
- target_data->SetBoolean(kAttachedField, target.IsAttached());
- target_data->SetString(kUrlField, target.GetUrl().spec());
- target_data->SetString(kNameField, net::EscapeForHTML(target.GetTitle()));
- target_data->SetString(kFaviconUrlField, target.GetFaviconUrl().spec());
- target_data->SetString(kDescription, target.GetDescription());
+ target_data->SetString(kTargetTypeField, target_type);
+ target_data->SetBoolean(kAttachedField, attached);
+ target_data->SetInteger(kProcessIdField, process_id);
+ target_data->SetInteger(kRouteIdField, route_id);
+ target_data->SetString(kUrlField, url.spec());
+ target_data->SetString(kNameField, net::EscapeForHTML(name));
+ target_data->SetInteger(kPidField, base::GetProcId(handle));
+ target_data->SetString(kFaviconUrlField, favicon_url.spec());
+ target_data->SetString(kDescription, description);
return target_data;
}
+bool HasClientHost(RenderViewHost* rvh) {
+ if (!DevToolsAgentHost::HasFor(rvh))
+ return false;
+
+ scoped_refptr<DevToolsAgentHost> agent(
+ DevToolsAgentHost::GetOrCreateFor(rvh));
+ return agent->IsAttached();
+}
+
+bool HasClientHost(int process_id, int route_id) {
+ if (!DevToolsAgentHost::HasForWorker(process_id, route_id))
+ return false;
+
+ scoped_refptr<DevToolsAgentHost> agent(
+ DevToolsAgentHost::GetForWorker(process_id, route_id));
+ return agent->IsAttached();
+}
+
+DictionaryValue* BuildTargetDescriptor(RenderViewHost* rvh, bool is_tab) {
+ WebContents* web_contents = WebContents::FromRenderViewHost(rvh);
+ std::string title;
+ std::string target_type = is_tab ? kPageTargetType : "";
+ GURL url;
+ GURL favicon_url;
+ if (web_contents) {
+ url = web_contents->GetURL();
+ title = UTF16ToUTF8(web_contents->GetTitle());
+ content::NavigationController& controller = web_contents->GetController();
+ content::NavigationEntry* entry = controller.GetActiveEntry();
+ if (entry != NULL && entry->GetURL().is_valid())
+ favicon_url = entry->GetFavicon().url;
+
+ Profile* profile = Profile::FromBrowserContext(
+ web_contents->GetBrowserContext());
+ if (profile) {
+ ExtensionService* extension_service = profile->GetExtensionService();
+ const extensions::Extension* extension = extension_service->
+ extensions()->GetByID(url.host());
+ if (extension) {
+ if (extension->is_hosted_app()
+ || extension->is_legacy_packaged_app()
+ || extension->is_platform_app())
+ target_type = kAppTargetType;
+ else
+ target_type = kExtensionTargetType;
+ title = extension->name();
+ favicon_url = extensions::ExtensionIconSource::GetIconURL(
+ extension, extension_misc::EXTENSION_ICON_SMALLISH,
+ ExtensionIconSet::MATCH_BIGGER, false, NULL);
+ }
+ }
+ }
+
+ return BuildTargetDescriptor(target_type,
+ HasClientHost(rvh),
+ url,
+ title,
+ favicon_url,
+ "",
+ rvh->GetProcess()->GetID(),
+ rvh->GetRoutingID());
+}
+
class InspectMessageHandler : public WebUIMessageHandler {
public:
explicit InspectMessageHandler(InspectUI* inspect_ui)
@@ -135,14 +216,18 @@ class InspectMessageHandler : public WebUIMessageHandler {
void HandleInitUICommand(const ListValue* args);
void HandleInspectCommand(const ListValue* args);
void HandleActivateCommand(const ListValue* args);
- void HandleCloseCommand(const ListValue* args);
+ void HandleTerminateCommand(const ListValue* args);
void HandleReloadCommand(const ListValue* args);
void HandleOpenCommand(const ListValue* args);
void HandleBooleanPrefChanged(const char* pref_name,
const ListValue* args);
void HandlePortForwardingConfigCommand(const ListValue* args);
- DevToolsTargetImpl* FindTarget(const ListValue* args);
+ static bool GetProcessAndRouteId(const ListValue* args,
+ int* process_id,
+ int* route_id);
+
+ static bool GetRemotePageId(const ListValue* args, std::string* page_id);
InspectUI* inspect_ui_;
@@ -159,8 +244,8 @@ void InspectMessageHandler::RegisterMessages() {
web_ui()->RegisterMessageCallback(kActivateCommand,
base::Bind(&InspectMessageHandler::HandleActivateCommand,
base::Unretained(this)));
- web_ui()->RegisterMessageCallback(kCloseCommand,
- base::Bind(&InspectMessageHandler::HandleCloseCommand,
+ web_ui()->RegisterMessageCallback(kTerminateCommand,
+ base::Bind(&InspectMessageHandler::HandleTerminateCommand,
base::Unretained(this)));
web_ui()->RegisterMessageCallback(kDiscoverUsbDevicesEnabledCommand,
base::Bind(&InspectMessageHandler::HandleBooleanPrefChanged,
@@ -189,61 +274,86 @@ void InspectMessageHandler::HandleInspectCommand(const ListValue* args) {
Profile* profile = Profile::FromWebUI(web_ui());
if (!profile)
return;
- DevToolsTargetImpl* target = FindTarget(args);
- if (target)
- target->Inspect(profile);
+
+ std::string page_id;
+ if (GetRemotePageId(args, &page_id)) {
+ inspect_ui_->InspectRemotePage(page_id);
+ return;
+ }
+
+ int process_id;
+ int route_id;
+ if (!GetProcessAndRouteId(args, &process_id, &route_id) || process_id == 0
+ || route_id == 0) {
+ return;
+ }
+
+ RenderViewHost* rvh = RenderViewHost::FromID(process_id, route_id);
+ if (rvh) {
+ DevToolsWindow::OpenDevToolsWindow(rvh);
+ return;
+ }
+
+ scoped_refptr<DevToolsAgentHost> agent_host(
+ DevToolsAgentHost::GetForWorker(process_id, route_id));
+ if (!agent_host.get())
+ return;
+
+ DevToolsWindow::OpenDevToolsWindowForWorker(profile, agent_host.get());
}
void InspectMessageHandler::HandleActivateCommand(const ListValue* args) {
- DevToolsTargetImpl* target = FindTarget(args);
- if (target)
- target->Activate();
+ std::string page_id;
+ if (GetRemotePageId(args, &page_id))
+ inspect_ui_->ActivateRemotePage(page_id);
+}
+
+static void TerminateWorker(int process_id, int route_id) {
+ WorkerService::GetInstance()->TerminateWorker(process_id, route_id);
}
-void InspectMessageHandler::HandleCloseCommand(const ListValue* args) {
- DevToolsTargetImpl* target = FindTarget(args);
- if (target)
- target->Close();
+void InspectMessageHandler::HandleTerminateCommand(const ListValue* args) {
+ std::string page_id;
+ if (GetRemotePageId(args, &page_id)) {
+ inspect_ui_->CloseRemotePage(page_id);
+ return;
+ }
+
+ int process_id;
+ int route_id;
+ if (!GetProcessAndRouteId(args, &process_id, &route_id))
+ return;
+
+ BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
+ base::Bind(&TerminateWorker, process_id, route_id));
}
void InspectMessageHandler::HandleReloadCommand(const ListValue* args) {
- DevToolsTargetImpl* target = FindTarget(args);
- if (target)
- target->Reload();
+ std::string page_id;
+ if (GetRemotePageId(args, &page_id))
+ inspect_ui_->ReloadRemotePage(page_id);
}
void InspectMessageHandler::HandleOpenCommand(const ListValue* args) {
- if (args->GetSize() != 2)
- return;
std::string browser_id;
- if (!args->GetString(0, &browser_id))
- return;
- scoped_refptr<DevToolsAdbBridge::RemoteBrowser> remote_browser =
- inspect_ui_->FindRemoteBrowser(browser_id);
- if (!remote_browser)
- return;
std::string url;
- if (!args->GetString(1, &url))
- return;
- GURL gurl(url);
- if (!gurl.is_valid()) {
- gurl = GURL("http://" + url);
- if (!gurl.is_valid())
- return;
+ if (args->GetSize() == 2 &&
+ args->GetString(0, &browser_id) &&
+ args->GetString(1, &url)) {
+ inspect_ui_->OpenRemotePage(browser_id, url);
}
- remote_browser->Open(gurl.spec());
}
-DevToolsTargetImpl* InspectMessageHandler::FindTarget(const ListValue* args) {
+bool InspectMessageHandler::GetProcessAndRouteId(const ListValue* args,
+ int* process_id,
+ int* route_id) {
const DictionaryValue* data;
- std::string type;
- std::string id;
if (args->GetSize() == 1 && args->GetDictionary(0, &data) &&
- data->GetString(kTargetTypeField, &type) &&
- data->GetString(kTargetIdField, &id)) {
- return inspect_ui_->FindTarget(type, id);
+ data->GetInteger(kProcessIdField, process_id) &&
+ data->GetInteger(kRouteIdField, route_id)) {
+ return true;
}
- return NULL;
+ return false;
}
void InspectMessageHandler::HandleBooleanPrefChanged(
@@ -269,6 +379,16 @@ void InspectMessageHandler::HandlePortForwardingConfigCommand(
profile->GetPrefs()->Set(prefs::kDevToolsPortForwardingConfig, *dict_src);
}
+bool InspectMessageHandler::GetRemotePageId(const ListValue* args,
+ std::string* page_id) {
+ const DictionaryValue* data;
+ if (args->GetSize() == 1 && args->GetDictionary(0, &data) &&
+ data->GetString(kAdbGlobalIdField, page_id)) {
+ return true;
+ }
+ return false;
+}
+
} // namespace
class InspectUI::WorkerCreationDestructionListener
@@ -337,9 +457,10 @@ class InspectUI::WorkerCreationDestructionListener
void CollectWorkersData() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
- DevToolsTargetImpl::EnumerateWorkerTargets(
- base::Bind(
- &WorkerCreationDestructionListener::PopulateWorkersList, this));
+ BrowserThread::PostTask(
+ BrowserThread::UI, FROM_HERE,
+ base::Bind(&WorkerCreationDestructionListener::PopulateWorkersList,
+ this, WorkerService::GetInstance()->GetWorkers()));
}
void RegisterObserver() {
@@ -350,10 +471,29 @@ class InspectUI::WorkerCreationDestructionListener
WorkerService::GetInstance()->RemoveObserver(this);
}
- void PopulateWorkersList(const DevToolsTargetImpl::List& targets) {
+ void PopulateWorkersList(
+ const std::vector<WorkerService::WorkerInfo>& worker_info) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- if (discovery_ui_)
- discovery_ui_->PopulateWorkerTargets(targets);
+ if (!discovery_ui_)
+ return;
+
+ ListValue target_list;
+ for (size_t i = 0; i < worker_info.size(); ++i) {
+ if (!worker_info[i].handle)
+ continue; // Process is still being created.
+ target_list.Append(BuildTargetDescriptor(
+ kWorkerTargetType,
+ HasClientHost(worker_info[i].process_id, worker_info[i].route_id),
+ worker_info[i].url,
+ UTF16ToUTF8(worker_info[i].name),
+ GURL(),
+ "",
+ worker_info[i].process_id,
+ worker_info[i].route_id,
+ worker_info[i].handle));
+ }
+ discovery_ui_->web_ui()->CallJavascriptFunction(
+ "populateWorkersList", target_list);
}
InspectUI* discovery_ui_;
@@ -377,31 +517,50 @@ InspectUI::~InspectUI() {
void InspectUI::InitUI() {
SetPortForwardingDefaults();
StartListeningNotifications();
- PopulateWebContentsTargets();
+ PopulateLists();
UpdateDiscoverUsbDevicesEnabled();
UpdatePortForwardingEnabled();
UpdatePortForwardingConfig();
observer_->UpdateUI();
}
-DevToolsTargetImpl* InspectUI::FindTarget(const std::string& type,
- const std::string& id) {
- if (type == kWorkerTargetType) {
- TargetMap::iterator it = worker_targets_.find(id);
- return it == worker_targets_.end() ? NULL : it->second;
- } else if (type == kAdbTargetType) {
- TargetMap::iterator it = remote_targets_.find(id);
- return it == remote_targets_.end() ? NULL : it->second;
- } else {
- TargetMap::iterator it = web_contents_targets_.find(id);
- return it == web_contents_targets_.end() ? NULL : it->second;
+void InspectUI::InspectRemotePage(const std::string& id) {
+ RemotePages::iterator it = remote_pages_.find(id);
+ if (it != remote_pages_.end()) {
+ Profile* profile = Profile::FromWebUI(web_ui());
+ it->second->Inspect(profile);
}
}
-scoped_refptr<DevToolsAdbBridge::RemoteBrowser>
-InspectUI::FindRemoteBrowser(const std::string& id) {
- RemoteBrowsers::iterator it = remote_browsers_.find(id);
- return it == remote_browsers_.end() ? NULL : it->second;
+void InspectUI::ActivateRemotePage(const std::string& id) {
+ RemotePages::iterator it = remote_pages_.find(id);
+ if (it != remote_pages_.end())
+ it->second->Activate();
+}
+
+void InspectUI::ReloadRemotePage(const std::string& id) {
+ RemotePages::iterator it = remote_pages_.find(id);
+ if (it != remote_pages_.end())
+ it->second->Reload();
+}
+
+void InspectUI::CloseRemotePage(const std::string& id) {
+ RemotePages::iterator it = remote_pages_.find(id);
+ if (it != remote_pages_.end())
+ it->second->Close();
+}
+
+void InspectUI::OpenRemotePage(const std::string& browser_id,
+ const std::string& url) {
+ GURL gurl(url);
+ if (!gurl.is_valid()) {
+ gurl = GURL("http://" + url);
+ if (!gurl.is_valid())
+ return;
+ }
+ RemoteBrowsers::iterator it = remote_browsers_.find(browser_id);
+ if (it != remote_browsers_.end())
+ it->second->Open(gurl.spec());
}
void InspectUI::InspectDevices(Browser* browser) {
@@ -412,74 +571,61 @@ void InspectUI::InspectDevices(Browser* browser) {
ShowSingletonTabOverwritingNTP(browser, params);
}
-void InspectUI::PopulateWebContentsTargets() {
- ListValue list_value;
+void InspectUI::PopulateLists() {
+ std::set<RenderViewHost*> tab_rvhs;
+ for (TabContentsIterator it; !it.done(); it.Next())
+ tab_rvhs.insert(it->GetRenderViewHost());
- std::map<WebContents*, DictionaryValue*> web_contents_to_descriptor_;
- std::vector<DevToolsTargetImpl*> guest_targets;
+ scoped_ptr<ListValue> target_list(new ListValue());
- DevToolsTargetImpl::List targets =
- DevToolsTargetImpl::EnumerateWebContentsTargets();
+ std::vector<RenderViewHost*> rvh_vector =
+ DevToolsAgentHost::GetValidRenderViewHosts();
- STLDeleteValues(&web_contents_targets_);
- for (DevToolsTargetImpl::List::iterator it = targets.begin();
- it != targets.end(); ++it) {
- DevToolsTargetImpl* target = *it;
- WebContents* web_contents = target->GetWebContents();
- if (!web_contents)
- continue;
- RenderViewHost* rvh = web_contents->GetRenderViewHost();
- if (!rvh)
- continue;
+ std::map<WebContents*, DictionaryValue*> description_map;
+ std::vector<WebContents*> guest_contents;
- web_contents_targets_[target->GetId()] = target;
+ for (std::vector<RenderViewHost*>::iterator it(rvh_vector.begin());
+ it != rvh_vector.end(); it++) {
+ bool is_tab = tab_rvhs.find(*it) != tab_rvhs.end();
+ RenderViewHost* rvh = (*it);
+ WebContents* web_contents = WebContents::FromRenderViewHost(rvh);
if (rvh->GetProcess()->IsGuest()) {
- guest_targets.push_back(target);
+ if (web_contents)
+ guest_contents.push_back(web_contents);
} else {
- DictionaryValue* descriptor = BuildTargetDescriptor(*target);
- list_value.Append(descriptor);
- web_contents_to_descriptor_[web_contents] = descriptor;
+ DictionaryValue* dictionary = BuildTargetDescriptor(rvh, is_tab);
+ if (web_contents)
+ description_map[web_contents] = dictionary;
+ target_list->Append(dictionary);
}
}
// Add the list of guest-views to each of its embedders.
- for (std::vector<DevToolsTargetImpl*>::iterator it(guest_targets.begin());
- it != guest_targets.end(); ++it) {
- DevToolsTargetImpl* guest = (*it);
- WebContents* embedder = guest->GetWebContents()->GetEmbedderWebContents();
- if (embedder && web_contents_to_descriptor_.count(embedder) > 0) {
- DictionaryValue* parent = web_contents_to_descriptor_[embedder];
+ for (std::vector<WebContents*>::iterator it(guest_contents.begin());
+ it != guest_contents.end(); ++it) {
+ WebContents* guest = (*it);
+ WebContents* embedder = guest->GetEmbedderWebContents();
+ if (embedder && description_map.count(embedder) > 0) {
+ DictionaryValue* description = description_map[embedder];
ListValue* guests = NULL;
- if (!parent->GetList(kGuestList, &guests)) {
+ if (!description->GetList(kGuestList, &guests)) {
guests = new ListValue();
- parent->Set(kGuestList, guests);
+ description->Set(kGuestList, guests);
}
- guests->Append(BuildTargetDescriptor(*guest));
+ RenderViewHost* rvh = guest->GetRenderViewHost();
+ if (rvh)
+ guests->Append(BuildTargetDescriptor(rvh, false));
}
}
- web_ui()->CallJavascriptFunction("populateWebContentsTargets", list_value);
-}
-
-void InspectUI::PopulateWorkerTargets(const DevToolsTargetImpl::List& targets) {
- ListValue list_value;
-
- STLDeleteValues(&worker_targets_);
- for (DevToolsTargetImpl::List::const_iterator it = targets.begin();
- it != targets.end(); ++it) {
- DevToolsTargetImpl* target = *it;
- list_value.Append(BuildTargetDescriptor(*target));
- worker_targets_[target->GetId()] = target;
- }
-
- web_ui()->CallJavascriptFunction("populateWorkerTargets", list_value);
+ web_ui()->CallJavascriptFunction("populateLists", *target_list.get());
}
void InspectUI::Observe(int type,
const content::NotificationSource& source,
const content::NotificationDetails& details) {
if (source != content::Source<WebContents>(web_ui()->GetWebContents()))
- PopulateWebContentsTargets();
+ PopulateLists();
else if (type == content::NOTIFICATION_WEB_CONTENTS_DISCONNECTED)
StopListeningNotifications();
}
@@ -554,7 +700,7 @@ void InspectUI::RemoteDevicesChanged(
port_forwarding_controller->UpdateDeviceList(*devices);
remote_browsers_.clear();
- STLDeleteValues(&remote_targets_);
+ remote_pages_.clear();
ListValue device_list;
for (DevToolsAdbBridge::RemoteDevices::iterator dit = devices->begin();
dit != devices->end(); ++dit) {
@@ -588,22 +734,28 @@ void InspectUI::RemoteDevicesChanged(
ListValue* page_list = new ListValue();
browser_data->Set(kAdbPagesField, page_list);
- DevToolsTargetImpl::List pages = browser->CreatePageTargets();
- for (DevToolsTargetImpl::List::iterator it =
+ DevToolsAdbBridge::RemotePages& pages = browser->pages();
+ for (DevToolsAdbBridge::RemotePages::iterator it =
pages.begin(); it != pages.end(); ++it) {
- DevToolsTargetImpl* page = *it;
- DictionaryValue* page_data = BuildTargetDescriptor(*page);
- page_data->SetBoolean(
- kAdbAttachedForeignField,
- page->IsAttached() &&
- !DevToolsAdbBridge::HasDevToolsWindow(page->GetId()));
+ DevToolsAdbBridge::RemotePage* page = it->get();
+ DictionaryValue* page_data = BuildTargetDescriptor(
+ kAdbTargetType, page->attached(),
+ GURL(page->url()), page->title(), GURL(page->favicon_url()),
+ page->description(), 0, 0);
+ std::string page_id = base::StringPrintf("page:%s:%s:%s",
+ device->GetSerial().c_str(),
+ browser->socket().c_str(),
+ page->id().c_str());
+ page_data->SetString(kAdbGlobalIdField, page_id);
+ page_data->SetBoolean(kAdbAttachedForeignField,
+ page->attached() && !page->HasDevToolsWindow());
// Pass the screen size in the page object to make sure that
// the caching logic does not prevent the page item from updating
// when the screen size changes.
gfx::Size screen_size = device->screen_size();
page_data->SetInteger(kAdbScreenWidthField, screen_size.width());
page_data->SetInteger(kAdbScreenHeightField, screen_size.height());
- remote_targets_[page->GetId()] = page;
+ remote_pages_[page_id] = page;
page_list->Append(page_data);
}
browser_list->Append(browser_data);
@@ -627,7 +779,7 @@ void InspectUI::RemoteDevicesChanged(
device_list.Append(device_data);
}
- web_ui()->CallJavascriptFunction("populateRemoteTargets", device_list);
+ web_ui()->CallJavascriptFunction("populateDeviceLists", device_list);
}
void InspectUI::UpdateDiscoverUsbDevicesEnabled() {
« no previous file with comments | « chrome/browser/ui/webui/inspect_ui.h ('k') | chrome/chrome.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698