OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/ui/webui/inspect_ui.h" | 5 #include "chrome/browser/ui/webui/inspect_ui.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
11 #include "base/json/json_writer.h" | 11 #include "base/json/json_writer.h" |
12 #include "base/memory/ref_counted_memory.h" | 12 #include "base/memory/ref_counted_memory.h" |
13 #include "base/strings/string_number_conversions.h" | 13 #include "base/strings/string_number_conversions.h" |
14 #include "base/strings/string_util.h" | 14 #include "base/strings/string_util.h" |
| 15 #include "base/strings/stringprintf.h" |
15 #include "base/strings/utf_string_conversions.h" | 16 #include "base/strings/utf_string_conversions.h" |
16 #include "base/values.h" | 17 #include "base/values.h" |
17 #include "chrome/browser/devtools/devtools_window.h" | 18 #include "chrome/browser/devtools/devtools_window.h" |
18 #include "chrome/browser/extensions/extension_service.h" | 19 #include "chrome/browser/extensions/extension_service.h" |
19 #include "chrome/browser/profiles/profile.h" | 20 #include "chrome/browser/profiles/profile.h" |
20 #include "chrome/browser/ui/tab_contents/tab_contents_iterator.h" | 21 #include "chrome/browser/ui/tab_contents/tab_contents_iterator.h" |
21 #include "chrome/browser/ui/webui/theme_source.h" | 22 #include "chrome/browser/ui/webui/theme_source.h" |
22 #include "chrome/common/pref_names.h" | 23 #include "chrome/common/pref_names.h" |
23 #include "chrome/common/url_constants.h" | 24 #include "chrome/common/url_constants.h" |
24 #include "content/public/browser/browser_thread.h" | 25 #include "content/public/browser/browser_thread.h" |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 | 68 |
68 static const char kAppTargetType[] = "app"; | 69 static const char kAppTargetType[] = "app"; |
69 static const char kExtensionTargetType[] = "extension"; | 70 static const char kExtensionTargetType[] = "extension"; |
70 static const char kPageTargetType[] = "page"; | 71 static const char kPageTargetType[] = "page"; |
71 static const char kWorkerTargetType[] = "worker"; | 72 static const char kWorkerTargetType[] = "worker"; |
72 static const char kAdbTargetType[] = "adb_page"; | 73 static const char kAdbTargetType[] = "adb_page"; |
73 | 74 |
74 static const char kInitUICommand[] = "init-ui"; | 75 static const char kInitUICommand[] = "init-ui"; |
75 static const char kInspectCommand[] = "inspect"; | 76 static const char kInspectCommand[] = "inspect"; |
76 static const char kTerminateCommand[] = "terminate"; | 77 static const char kTerminateCommand[] = "terminate"; |
| 78 static const char kReloadCommand[] = "reload"; |
| 79 static const char kOpenCommand[] = "open"; |
| 80 |
77 static const char kPortForwardingEnabledCommand[] = | 81 static const char kPortForwardingEnabledCommand[] = |
78 "set-port-forwarding-enabled"; | 82 "set-port-forwarding-enabled"; |
79 static const char kPortForwardingConfigCommand[] = "set-port-forwarding-config"; | 83 static const char kPortForwardingConfigCommand[] = "set-port-forwarding-config"; |
80 | 84 |
81 static const char kTargetTypeField[] = "type"; | 85 static const char kTargetTypeField[] = "type"; |
82 static const char kAttachedField[] = "attached"; | 86 static const char kAttachedField[] = "attached"; |
83 static const char kProcessIdField[] = "processId"; | 87 static const char kProcessIdField[] = "processId"; |
84 static const char kRouteIdField[] = "routeId"; | 88 static const char kRouteIdField[] = "routeId"; |
85 static const char kUrlField[] = "url"; | 89 static const char kUrlField[] = "url"; |
86 static const char kNameField[] = "name"; | 90 static const char kNameField[] = "name"; |
87 static const char kFaviconUrlField[] = "faviconUrl"; | 91 static const char kFaviconUrlField[] = "faviconUrl"; |
88 static const char kPidField[] = "pid"; | 92 static const char kPidField[] = "pid"; |
89 static const char kAdbSerialField[] = "adbSerial"; | 93 static const char kAdbSerialField[] = "adbSerial"; |
90 static const char kAdbModelField[] = "adbModel"; | 94 static const char kAdbModelField[] = "adbModel"; |
91 static const char kAdbBrowserNameField[] = "adbBrowserName"; | 95 static const char kAdbBrowserNameField[] = "adbBrowserName"; |
92 static const char kAdbPageIdField[] = "adbPageId"; | 96 static const char kAdbGlobalIdField[] = "adbGlobalId"; |
93 static const char kAdbBrowsersField[] = "browsers"; | 97 static const char kAdbBrowsersField[] = "browsers"; |
94 static const char kAdbPagesField[] = "pages"; | 98 static const char kAdbPagesField[] = "pages"; |
95 | 99 |
96 DictionaryValue* BuildTargetDescriptor( | 100 DictionaryValue* BuildTargetDescriptor( |
97 const std::string& target_type, | 101 const std::string& target_type, |
98 bool attached, | 102 bool attached, |
99 const GURL& url, | 103 const GURL& url, |
100 const std::string& name, | 104 const std::string& name, |
101 const GURL& favicon_url, | 105 const GURL& favicon_url, |
102 int process_id, | 106 int process_id, |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
171 : inspect_ui_(inspect_ui) {} | 175 : inspect_ui_(inspect_ui) {} |
172 virtual ~InspectMessageHandler() {} | 176 virtual ~InspectMessageHandler() {} |
173 | 177 |
174 private: | 178 private: |
175 // WebUIMessageHandler implementation. | 179 // WebUIMessageHandler implementation. |
176 virtual void RegisterMessages() OVERRIDE; | 180 virtual void RegisterMessages() OVERRIDE; |
177 | 181 |
178 void HandleInitUICommand(const ListValue* args); | 182 void HandleInitUICommand(const ListValue* args); |
179 void HandleInspectCommand(const ListValue* args); | 183 void HandleInspectCommand(const ListValue* args); |
180 void HandleTerminateCommand(const ListValue* args); | 184 void HandleTerminateCommand(const ListValue* args); |
| 185 void HandleReloadCommand(const ListValue* args); |
| 186 void HandleOpenCommand(const ListValue* args); |
181 void HandlePortForwardingEnabledCommand(const ListValue* args); | 187 void HandlePortForwardingEnabledCommand(const ListValue* args); |
182 void HandlePortForwardingConfigCommand(const ListValue* args); | 188 void HandlePortForwardingConfigCommand(const ListValue* args); |
183 | 189 |
184 bool GetProcessAndRouteId(const ListValue* args, | 190 static bool GetProcessAndRouteId(const ListValue* args, |
185 int* process_id, | 191 int* process_id, |
186 int* route_id); | 192 int* route_id); |
| 193 |
| 194 static bool GetRemotePageId(const ListValue* args, std::string* page_id); |
187 | 195 |
188 InspectUI* inspect_ui_; | 196 InspectUI* inspect_ui_; |
189 | 197 |
190 DISALLOW_COPY_AND_ASSIGN(InspectMessageHandler); | 198 DISALLOW_COPY_AND_ASSIGN(InspectMessageHandler); |
191 }; | 199 }; |
192 | 200 |
193 void InspectMessageHandler::RegisterMessages() { | 201 void InspectMessageHandler::RegisterMessages() { |
194 web_ui()->RegisterMessageCallback(kInitUICommand, | 202 web_ui()->RegisterMessageCallback(kInitUICommand, |
195 base::Bind(&InspectMessageHandler::HandleInitUICommand, | 203 base::Bind(&InspectMessageHandler::HandleInitUICommand, |
196 base::Unretained(this))); | 204 base::Unretained(this))); |
197 web_ui()->RegisterMessageCallback(kInspectCommand, | 205 web_ui()->RegisterMessageCallback(kInspectCommand, |
198 base::Bind(&InspectMessageHandler::HandleInspectCommand, | 206 base::Bind(&InspectMessageHandler::HandleInspectCommand, |
199 base::Unretained(this))); | 207 base::Unretained(this))); |
200 web_ui()->RegisterMessageCallback(kTerminateCommand, | 208 web_ui()->RegisterMessageCallback(kTerminateCommand, |
201 base::Bind(&InspectMessageHandler::HandleTerminateCommand, | 209 base::Bind(&InspectMessageHandler::HandleTerminateCommand, |
202 base::Unretained(this))); | 210 base::Unretained(this))); |
203 web_ui()->RegisterMessageCallback(kPortForwardingEnabledCommand, | 211 web_ui()->RegisterMessageCallback(kPortForwardingEnabledCommand, |
204 base::Bind(&InspectMessageHandler::HandlePortForwardingEnabledCommand, | 212 base::Bind(&InspectMessageHandler::HandlePortForwardingEnabledCommand, |
205 base::Unretained(this))); | 213 base::Unretained(this))); |
206 web_ui()->RegisterMessageCallback(kPortForwardingConfigCommand, | 214 web_ui()->RegisterMessageCallback(kPortForwardingConfigCommand, |
207 base::Bind(&InspectMessageHandler::HandlePortForwardingConfigCommand, | 215 base::Bind(&InspectMessageHandler::HandlePortForwardingConfigCommand, |
208 base::Unretained(this))); | 216 base::Unretained(this))); |
| 217 web_ui()->RegisterMessageCallback(kReloadCommand, |
| 218 base::Bind(&InspectMessageHandler::HandleReloadCommand, |
| 219 base::Unretained(this))); |
| 220 web_ui()->RegisterMessageCallback(kOpenCommand, |
| 221 base::Bind(&InspectMessageHandler::HandleOpenCommand, |
| 222 base::Unretained(this))); |
209 } | 223 } |
210 | 224 |
211 void InspectMessageHandler::HandleInitUICommand(const ListValue*) { | 225 void InspectMessageHandler::HandleInitUICommand(const ListValue*) { |
212 inspect_ui_->InitUI(); | 226 inspect_ui_->InitUI(); |
213 } | 227 } |
214 | 228 |
215 void InspectMessageHandler::HandleInspectCommand(const ListValue* args) { | 229 void InspectMessageHandler::HandleInspectCommand(const ListValue* args) { |
216 Profile* profile = Profile::FromWebUI(web_ui()); | 230 Profile* profile = Profile::FromWebUI(web_ui()); |
217 if (!profile) | 231 if (!profile) |
218 return; | 232 return; |
219 | 233 |
| 234 std::string page_id; |
| 235 if (GetRemotePageId(args, &page_id)) { |
| 236 inspect_ui_->InspectRemotePage(page_id); |
| 237 return; |
| 238 } |
| 239 |
220 int process_id; | 240 int process_id; |
221 int route_id; | 241 int route_id; |
222 if (!GetProcessAndRouteId(args, &process_id, &route_id) || process_id == 0 | 242 if (!GetProcessAndRouteId(args, &process_id, &route_id) || process_id == 0 |
223 || route_id == 0) { | 243 || route_id == 0) { |
224 // Check for ADB page id | |
225 const DictionaryValue* data; | |
226 std::string page_id; | |
227 if (args->GetSize() == 1 && args->GetDictionary(0, &data) && | |
228 data->GetString(kAdbPageIdField, &page_id)) { | |
229 inspect_ui_->InspectRemotePage(page_id); | |
230 } | |
231 return; | 244 return; |
232 } | 245 } |
233 | 246 |
234 RenderViewHost* rvh = RenderViewHost::FromID(process_id, route_id); | 247 RenderViewHost* rvh = RenderViewHost::FromID(process_id, route_id); |
235 if (rvh) { | 248 if (rvh) { |
236 DevToolsWindow::OpenDevToolsWindow(rvh); | 249 DevToolsWindow::OpenDevToolsWindow(rvh); |
237 return; | 250 return; |
238 } | 251 } |
239 | 252 |
240 scoped_refptr<DevToolsAgentHost> agent_host( | 253 scoped_refptr<DevToolsAgentHost> agent_host( |
241 DevToolsAgentHost::GetForWorker(process_id, route_id)); | 254 DevToolsAgentHost::GetForWorker(process_id, route_id)); |
242 if (!agent_host.get()) | 255 if (!agent_host.get()) |
243 return; | 256 return; |
244 | 257 |
245 DevToolsWindow::OpenDevToolsWindowForWorker(profile, agent_host.get()); | 258 DevToolsWindow::OpenDevToolsWindowForWorker(profile, agent_host.get()); |
246 } | 259 } |
247 | 260 |
248 static void TerminateWorker(int process_id, int route_id) { | 261 static void TerminateWorker(int process_id, int route_id) { |
249 WorkerService::GetInstance()->TerminateWorker(process_id, route_id); | 262 WorkerService::GetInstance()->TerminateWorker(process_id, route_id); |
250 } | 263 } |
251 | 264 |
252 void InspectMessageHandler::HandleTerminateCommand(const ListValue* args) { | 265 void InspectMessageHandler::HandleTerminateCommand(const ListValue* args) { |
| 266 std::string page_id; |
| 267 if (GetRemotePageId(args, &page_id)) { |
| 268 inspect_ui_->CloseRemotePage(page_id); |
| 269 return; |
| 270 } |
| 271 |
253 int process_id; | 272 int process_id; |
254 int route_id; | 273 int route_id; |
255 if (!GetProcessAndRouteId(args, &process_id, &route_id)) | 274 if (!GetProcessAndRouteId(args, &process_id, &route_id)) |
256 return; | 275 return; |
257 | 276 |
258 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, | 277 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, |
259 base::Bind(&TerminateWorker, process_id, route_id)); | 278 base::Bind(&TerminateWorker, process_id, route_id)); |
260 } | 279 } |
261 | 280 |
| 281 void InspectMessageHandler::HandleReloadCommand(const ListValue* args) { |
| 282 std::string page_id; |
| 283 if (GetRemotePageId(args, &page_id)) |
| 284 inspect_ui_->ReloadRemotePage(page_id); |
| 285 } |
| 286 |
| 287 void InspectMessageHandler::HandleOpenCommand(const ListValue* args) { |
| 288 std::string browser_id; |
| 289 std::string url; |
| 290 if (args->GetSize() == 2 && |
| 291 args->GetString(0, &browser_id) && |
| 292 args->GetString(1, &url)) { |
| 293 inspect_ui_->OpenRemotePage(browser_id, url); |
| 294 } |
| 295 } |
| 296 |
262 bool InspectMessageHandler::GetProcessAndRouteId(const ListValue* args, | 297 bool InspectMessageHandler::GetProcessAndRouteId(const ListValue* args, |
263 int* process_id, | 298 int* process_id, |
264 int* route_id) { | 299 int* route_id) { |
265 const DictionaryValue* data; | 300 const DictionaryValue* data; |
266 if (args->GetSize() == 1 && args->GetDictionary(0, &data) && | 301 if (args->GetSize() == 1 && args->GetDictionary(0, &data) && |
267 data->GetInteger(kProcessIdField, process_id) && | 302 data->GetInteger(kProcessIdField, process_id) && |
268 data->GetInteger(kRouteIdField, route_id)) { | 303 data->GetInteger(kRouteIdField, route_id)) { |
269 return true; | 304 return true; |
270 } | 305 } |
271 return false; | 306 return false; |
(...skipping 16 matching lines...) Expand all Loading... |
288 const ListValue* args) { | 323 const ListValue* args) { |
289 Profile* profile = Profile::FromWebUI(web_ui()); | 324 Profile* profile = Profile::FromWebUI(web_ui()); |
290 if (!profile) | 325 if (!profile) |
291 return; | 326 return; |
292 | 327 |
293 const DictionaryValue* dict_src; | 328 const DictionaryValue* dict_src; |
294 if (args->GetSize() == 1 && args->GetDictionary(0, &dict_src)) | 329 if (args->GetSize() == 1 && args->GetDictionary(0, &dict_src)) |
295 profile->GetPrefs()->Set(prefs::kDevToolsPortForwardingConfig, *dict_src); | 330 profile->GetPrefs()->Set(prefs::kDevToolsPortForwardingConfig, *dict_src); |
296 } | 331 } |
297 | 332 |
| 333 bool InspectMessageHandler::GetRemotePageId(const ListValue* args, |
| 334 std::string* page_id) { |
| 335 const DictionaryValue* data; |
| 336 if (args->GetSize() == 1 && args->GetDictionary(0, &data) && |
| 337 data->GetString(kAdbGlobalIdField, page_id)) { |
| 338 return true; |
| 339 } |
| 340 return false; |
| 341 } |
| 342 |
298 } // namespace | 343 } // namespace |
299 | 344 |
300 class InspectUI::WorkerCreationDestructionListener | 345 class InspectUI::WorkerCreationDestructionListener |
301 : public WorkerServiceObserver, | 346 : public WorkerServiceObserver, |
302 public base::RefCountedThreadSafe<WorkerCreationDestructionListener> { | 347 public base::RefCountedThreadSafe<WorkerCreationDestructionListener> { |
303 public: | 348 public: |
304 WorkerCreationDestructionListener() | 349 WorkerCreationDestructionListener() |
305 : discovery_ui_(NULL) {} | 350 : discovery_ui_(NULL) {} |
306 | 351 |
307 void Init(InspectUI* workers_ui) { | 352 void Init(InspectUI* workers_ui) { |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
412 } | 457 } |
413 | 458 |
414 void InspectUI::InspectRemotePage(const std::string& id) { | 459 void InspectUI::InspectRemotePage(const std::string& id) { |
415 RemotePages::iterator it = remote_pages_.find(id); | 460 RemotePages::iterator it = remote_pages_.find(id); |
416 if (it != remote_pages_.end()) { | 461 if (it != remote_pages_.end()) { |
417 Profile* profile = Profile::FromWebUI(web_ui()); | 462 Profile* profile = Profile::FromWebUI(web_ui()); |
418 it->second->Inspect(profile); | 463 it->second->Inspect(profile); |
419 } | 464 } |
420 } | 465 } |
421 | 466 |
| 467 void InspectUI::ReloadRemotePage(const std::string& id) { |
| 468 RemotePages::iterator it = remote_pages_.find(id); |
| 469 if (it != remote_pages_.end()) |
| 470 it->second->Reload(); |
| 471 } |
| 472 |
| 473 void InspectUI::CloseRemotePage(const std::string& id) { |
| 474 RemotePages::iterator it = remote_pages_.find(id); |
| 475 if (it != remote_pages_.end()) |
| 476 it->second->Close(); |
| 477 } |
| 478 |
| 479 void InspectUI::OpenRemotePage(const std::string& browser_id, |
| 480 const std::string& url) { |
| 481 GURL gurl(url); |
| 482 if (!gurl.is_valid()) { |
| 483 gurl = GURL("http://" + url); |
| 484 if (!gurl.is_valid()) |
| 485 return; |
| 486 } |
| 487 RemoteBrowsers::iterator it = remote_browsers_.find(browser_id); |
| 488 if (it != remote_browsers_.end()) |
| 489 it->second->Open(gurl.spec()); |
| 490 } |
| 491 |
422 void InspectUI::PopulateLists() { | 492 void InspectUI::PopulateLists() { |
423 std::set<RenderViewHost*> tab_rvhs; | 493 std::set<RenderViewHost*> tab_rvhs; |
424 for (TabContentsIterator it; !it.done(); it.Next()) | 494 for (TabContentsIterator it; !it.done(); it.Next()) |
425 tab_rvhs.insert(it->GetRenderViewHost()); | 495 tab_rvhs.insert(it->GetRenderViewHost()); |
426 | 496 |
427 scoped_ptr<ListValue> target_list(new ListValue()); | 497 scoped_ptr<ListValue> target_list(new ListValue()); |
428 | 498 |
429 std::vector<RenderViewHost*> rvh_vector = | 499 std::vector<RenderViewHost*> rvh_vector = |
430 DevToolsAgentHost::GetValidRenderViewHosts(); | 500 DevToolsAgentHost::GetValidRenderViewHosts(); |
431 | 501 |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
497 content::WebUIDataSource* source = | 567 content::WebUIDataSource* source = |
498 content::WebUIDataSource::Create(chrome::kChromeUIInspectHost); | 568 content::WebUIDataSource::Create(chrome::kChromeUIInspectHost); |
499 source->AddResourcePath("inspect.css", IDR_INSPECT_CSS); | 569 source->AddResourcePath("inspect.css", IDR_INSPECT_CSS); |
500 source->AddResourcePath("inspect.js", IDR_INSPECT_JS); | 570 source->AddResourcePath("inspect.js", IDR_INSPECT_JS); |
501 source->SetDefaultResource(IDR_INSPECT_HTML); | 571 source->SetDefaultResource(IDR_INSPECT_HTML); |
502 return source; | 572 return source; |
503 } | 573 } |
504 | 574 |
505 void InspectUI::RemoteDevicesChanged( | 575 void InspectUI::RemoteDevicesChanged( |
506 DevToolsAdbBridge::RemoteDevices* devices) { | 576 DevToolsAdbBridge::RemoteDevices* devices) { |
| 577 remote_browsers_.clear(); |
507 remote_pages_.clear(); | 578 remote_pages_.clear(); |
508 ListValue device_list; | 579 ListValue device_list; |
509 for (DevToolsAdbBridge::RemoteDevices::iterator dit = devices->begin(); | 580 for (DevToolsAdbBridge::RemoteDevices::iterator dit = devices->begin(); |
510 dit != devices->end(); ++dit) { | 581 dit != devices->end(); ++dit) { |
511 DevToolsAdbBridge::RemoteDevice& device = *(dit->get()); | 582 DevToolsAdbBridge::RemoteDevice* device = dit->get(); |
512 DictionaryValue* device_data = new DictionaryValue(); | 583 DictionaryValue* device_data = new DictionaryValue(); |
513 device_data->SetString(kAdbModelField, device.model()); | 584 device_data->SetString(kAdbModelField, device->model()); |
514 device_data->SetString(kAdbSerialField, device.serial()); | 585 device_data->SetString(kAdbSerialField, device->serial()); |
| 586 std::string device_id = base::StringPrintf( |
| 587 "device:%s", |
| 588 device->serial().c_str()); |
| 589 device_data->SetString(kAdbGlobalIdField, device_id); |
515 ListValue* browser_list = new ListValue(); | 590 ListValue* browser_list = new ListValue(); |
516 device_data->Set(kAdbBrowsersField, browser_list); | 591 device_data->Set(kAdbBrowsersField, browser_list); |
517 | 592 |
518 DevToolsAdbBridge::RemoteBrowsers& browsers = device.browsers(); | 593 DevToolsAdbBridge::RemoteBrowsers& browsers = device->browsers(); |
519 for (DevToolsAdbBridge::RemoteBrowsers::iterator bit = | 594 for (DevToolsAdbBridge::RemoteBrowsers::iterator bit = |
520 browsers.begin(); bit != browsers.end(); ++bit) { | 595 browsers.begin(); bit != browsers.end(); ++bit) { |
521 DevToolsAdbBridge::RemoteBrowser& browser = *(bit->get()); | 596 DevToolsAdbBridge::RemoteBrowser* browser = bit->get(); |
522 DictionaryValue* browser_data = new DictionaryValue(); | 597 DictionaryValue* browser_data = new DictionaryValue(); |
523 browser_data->SetString(kAdbBrowserNameField, browser.name()); | 598 browser_data->SetString(kAdbBrowserNameField, browser->name()); |
| 599 std::string browser_id = base::StringPrintf( |
| 600 "browser:%s:%s:%s", |
| 601 device->serial().c_str(), |
| 602 browser->socket().c_str(), |
| 603 browser->name().c_str()); |
| 604 browser_data->SetString(kAdbGlobalIdField, browser_id); |
| 605 remote_browsers_[browser_id] = browser; |
524 ListValue* page_list = new ListValue(); | 606 ListValue* page_list = new ListValue(); |
525 browser_data->Set(kAdbPagesField, page_list); | 607 browser_data->Set(kAdbPagesField, page_list); |
526 | 608 |
527 DevToolsAdbBridge::RemotePages& pages = browser.pages(); | 609 DevToolsAdbBridge::RemotePages& pages = browser->pages(); |
528 for (DevToolsAdbBridge::RemotePages::iterator it = | 610 for (DevToolsAdbBridge::RemotePages::iterator it = |
529 pages.begin(); it != pages.end(); ++it) { | 611 pages.begin(); it != pages.end(); ++it) { |
530 DevToolsAdbBridge::RemotePage* page = it->get(); | 612 DevToolsAdbBridge::RemotePage* page = it->get(); |
531 DictionaryValue* page_data = BuildTargetDescriptor(kAdbTargetType, | 613 DictionaryValue* page_data = BuildTargetDescriptor( |
532 false, GURL(page->url()), page->title(), GURL(page->favicon_url()), | 614 kAdbTargetType, page->attached(), |
| 615 GURL(page->url()), page->title(), GURL(page->favicon_url()), |
533 0, 0); | 616 0, 0); |
534 page_data->SetString(kAdbPageIdField, page->global_id()); | 617 std::string page_id = base::StringPrintf("page:%s:%s:%s", |
| 618 device->serial().c_str(), |
| 619 browser->socket().c_str(), |
| 620 page->id().c_str()); |
| 621 page_data->SetString(kAdbGlobalIdField, page_id); |
| 622 remote_pages_[page_id] = page; |
535 page_list->Append(page_data); | 623 page_list->Append(page_data); |
536 remote_pages_[page->global_id()] = page; | |
537 } | 624 } |
538 browser_list->Append(browser_data); | 625 browser_list->Append(browser_data); |
539 } | 626 } |
540 device_list.Append(device_data); | 627 device_list.Append(device_data); |
541 } | 628 } |
542 web_ui()->CallJavascriptFunction("populateDeviceLists", device_list); | 629 web_ui()->CallJavascriptFunction("populateDeviceLists", device_list); |
543 } | 630 } |
544 | 631 |
545 void InspectUI::UpdatePortForwardingEnabled() { | 632 void InspectUI::UpdatePortForwardingEnabled() { |
546 Profile* profile = Profile::FromWebUI(web_ui()); | 633 Profile* profile = Profile::FromWebUI(web_ui()); |
547 const base::Value* value = profile->GetPrefs()->FindPreference( | 634 const base::Value* value = profile->GetPrefs()->FindPreference( |
548 prefs::kDevToolsPortForwardingEnabled)->GetValue(); | 635 prefs::kDevToolsPortForwardingEnabled)->GetValue(); |
549 web_ui()->CallJavascriptFunction("updatePortForwardingEnabled", *value); | 636 web_ui()->CallJavascriptFunction("updatePortForwardingEnabled", *value); |
550 | 637 |
551 } | 638 } |
552 | 639 |
553 void InspectUI::UpdatePortForwardingConfig() { | 640 void InspectUI::UpdatePortForwardingConfig() { |
554 Profile* profile = Profile::FromWebUI(web_ui()); | 641 Profile* profile = Profile::FromWebUI(web_ui()); |
555 const base::Value* value = profile->GetPrefs()->FindPreference( | 642 const base::Value* value = profile->GetPrefs()->FindPreference( |
556 prefs::kDevToolsPortForwardingConfig)->GetValue(); | 643 prefs::kDevToolsPortForwardingConfig)->GetValue(); |
557 web_ui()->CallJavascriptFunction("updatePortForwardingConfig", *value); | 644 web_ui()->CallJavascriptFunction("updatePortForwardingConfig", *value); |
558 } | 645 } |
OLD | NEW |