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

Side by Side Diff: chrome/browser/devtools/device/devtools_android_bridge.cc

Issue 560523004: DevTools: Made id unique across different remote browsers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed leak in test Created 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/devtools/device/devtools_android_bridge.h" 5 #include "chrome/browser/devtools/device/devtools_android_bridge.h"
6 6
7 #include <map> 7 #include <map>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/base64.h" 10 #include "base/base64.h"
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 content::DevToolsExternalAgentProxy* proxy_; 304 content::DevToolsExternalAgentProxy* proxy_;
305 DISALLOW_COPY_AND_ASSIGN(AgentHostDelegate); 305 DISALLOW_COPY_AND_ASSIGN(AgentHostDelegate);
306 }; 306 };
307 307
308 // static 308 // static
309 scoped_refptr<content::DevToolsAgentHost> 309 scoped_refptr<content::DevToolsAgentHost>
310 AgentHostDelegate::GetOrCreateAgentHost( 310 AgentHostDelegate::GetOrCreateAgentHost(
311 const std::string& id, 311 const std::string& id,
312 scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> browser, 312 scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> browser,
313 const std::string& debug_url) { 313 const std::string& debug_url) {
314 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 314 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
315 AgentHostDelegates::iterator it = g_host_delegates.Get().find(id); 315 AgentHostDelegates::iterator it = g_host_delegates.Get().find(id);
316 if (it != g_host_delegates.Get().end()) 316 if (it != g_host_delegates.Get().end())
317 return it->second->agent_host_; 317 return it->second->agent_host_;
318 318
319 AgentHostDelegate* delegate = new AgentHostDelegate(id, browser, debug_url); 319 AgentHostDelegate* delegate = new AgentHostDelegate(id, browser, debug_url);
320 scoped_refptr<content::DevToolsAgentHost> result = 320 scoped_refptr<content::DevToolsAgentHost> result =
321 content::DevToolsAgentHost::Create(delegate); 321 content::DevToolsAgentHost::Create(delegate);
322 delegate->agent_host_ = result.get(); 322 delegate->agent_host_ = result.get();
323 return result; 323 return result;
324 } 324 }
325 325
326 AgentHostDelegate::AgentHostDelegate( 326 AgentHostDelegate::AgentHostDelegate(
327 const std::string& id, 327 const std::string& id,
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
408 virtual void Reload() const OVERRIDE; 408 virtual void Reload() const OVERRIDE;
409 409
410 void Navigate(const std::string& url, base::Closure callback) const; 410 void Navigate(const std::string& url, base::Closure callback) const;
411 411
412 private: 412 private:
413 scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> browser_; 413 scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> browser_;
414 std::string debug_url_; 414 std::string debug_url_;
415 std::string frontend_url_; 415 std::string frontend_url_;
416 std::string remote_id_; 416 std::string remote_id_;
417 std::string remote_type_; 417 std::string remote_type_;
418 std::string local_id_;
418 DISALLOW_COPY_AND_ASSIGN(RemotePageTarget); 419 DISALLOW_COPY_AND_ASSIGN(RemotePageTarget);
419 }; 420 };
420 421
421 static std::string GetStringProperty(const base::DictionaryValue& value, 422 static std::string GetStringProperty(const base::DictionaryValue& value,
422 const std::string& name) { 423 const std::string& name) {
423 std::string result; 424 std::string result;
424 value.GetString(name, &result); 425 value.GetString(name, &result);
425 return result; 426 return result;
426 } 427 }
427 428
(...skipping 16 matching lines...) Expand all
444 445
445 RemotePageTarget::RemotePageTarget( 446 RemotePageTarget::RemotePageTarget(
446 scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> browser, 447 scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> browser,
447 const base::DictionaryValue& value) 448 const base::DictionaryValue& value)
448 : DevToolsTargetImpl(AgentHostDelegate::GetOrCreateAgentHost( 449 : DevToolsTargetImpl(AgentHostDelegate::GetOrCreateAgentHost(
449 BuildUniqueTargetId(browser.get(), value), 450 BuildUniqueTargetId(browser.get(), value),
450 browser, GetDebugURL(value))), 451 browser, GetDebugURL(value))),
451 browser_(browser), 452 browser_(browser),
452 debug_url_(GetDebugURL(value)), 453 debug_url_(GetDebugURL(value)),
453 remote_id_(GetStringProperty(value, "id")), 454 remote_id_(GetStringProperty(value, "id")),
454 remote_type_(GetStringProperty(value, "type")) { 455 remote_type_(GetStringProperty(value, "type")),
456 local_id_(BuildUniqueTargetId(browser.get(), value)) {
455 set_type("adb_page"); 457 set_type("adb_page");
456 set_url(GURL(GetStringProperty(value, "url"))); 458 set_url(GURL(GetStringProperty(value, "url")));
457 set_title(base::UTF16ToUTF8(net::UnescapeForHTML(base::UTF8ToUTF16( 459 set_title(base::UTF16ToUTF8(net::UnescapeForHTML(base::UTF8ToUTF16(
458 GetStringProperty(value, "title"))))); 460 GetStringProperty(value, "title")))));
459 set_description(GetStringProperty(value, "description")); 461 set_description(GetStringProperty(value, "description"));
460 set_favicon_url(GURL(GetStringProperty(value, "faviconUrl"))); 462 set_favicon_url(GURL(GetStringProperty(value, "faviconUrl")));
461 debug_url_ = GetDebugURL(value); 463 debug_url_ = GetDebugURL(value);
462 frontend_url_ = GetStringProperty(value, "devtoolsFrontendUrl"); 464 frontend_url_ = GetStringProperty(value, "devtoolsFrontendUrl");
463 465
464 size_t ws_param = frontend_url_.find("?ws"); 466 size_t ws_param = frontend_url_.find("?ws");
465 if (ws_param != std::string::npos) 467 if (ws_param != std::string::npos)
466 frontend_url_ = frontend_url_.substr(0, ws_param); 468 frontend_url_ = frontend_url_.substr(0, ws_param);
467 if (frontend_url_.find("http:") == 0) 469 if (frontend_url_.find("http:") == 0)
468 frontend_url_ = "https:" + frontend_url_.substr(5); 470 frontend_url_ = "https:" + frontend_url_.substr(5);
469 } 471 }
470 472
471 RemotePageTarget::~RemotePageTarget() { 473 RemotePageTarget::~RemotePageTarget() {
472 } 474 }
473 475
474 DevToolsTargetImpl* RemotePageTarget::GetTarget() { 476 DevToolsTargetImpl* RemotePageTarget::GetTarget() {
475 return this; 477 return this;
476 } 478 }
477 479
478 std::string RemotePageTarget::GetFrontendURL() { 480 std::string RemotePageTarget::GetFrontendURL() {
479 return frontend_url_; 481 return frontend_url_;
480 } 482 }
481 483
482 std::string RemotePageTarget::GetId() const { 484 std::string RemotePageTarget::GetId() const {
483 return remote_id_; 485 return local_id_;
484 } 486 }
485 487
486 bool RemotePageTarget::IsAttached() const { 488 bool RemotePageTarget::IsAttached() const {
487 return debug_url_.empty(); 489 return debug_url_.empty();
488 } 490 }
489 491
490 static void NoOp(int, const std::string&) {} 492 static void NoOp(int, const std::string&) {}
491 493
492 void RemotePageTarget::Inspect(Profile* profile) const { 494 void RemotePageTarget::Inspect(Profile* profile) const {
493 Activate(); 495 Activate();
(...skipping 436 matching lines...) Expand 10 before | Expand all | Expand 10 after
930 bool enabled; 932 bool enabled;
931 if (pref_value->GetAsBoolean(&enabled) && enabled) { 933 if (pref_value->GetAsBoolean(&enabled) && enabled) {
932 device_providers.push_back(new UsbDeviceProvider(profile_)); 934 device_providers.push_back(new UsbDeviceProvider(profile_));
933 } 935 }
934 device_manager_->SetDeviceProviders(device_providers); 936 device_manager_->SetDeviceProviders(device_providers);
935 if (NeedsDeviceListPolling()) { 937 if (NeedsDeviceListPolling()) {
936 StopDeviceListPolling(); 938 StopDeviceListPolling();
937 StartDeviceListPolling(); 939 StartDeviceListPolling();
938 } 940 }
939 } 941 }
OLDNEW
« no previous file with comments | « chrome/browser/devtools/device/adb/mock_adb_server.cc ('k') | chrome/browser/resources/inspect/inspect.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698