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

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

Issue 1036213002: [DevTools] Remove support for old /json/new (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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
« no previous file with comments | « chrome/browser/devtools/device/devtools_android_bridge.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 #include "net/base/escape.h" 46 #include "net/base/escape.h"
47 #include "net/base/net_errors.h" 47 #include "net/base/net_errors.h"
48 48
49 using content::BrowserThread; 49 using content::BrowserThread;
50 50
51 namespace { 51 namespace {
52 52
53 const char kPageListRequest[] = "/json"; 53 const char kPageListRequest[] = "/json";
54 const char kVersionRequest[] = "/json/version"; 54 const char kVersionRequest[] = "/json/version";
55 const char kClosePageRequest[] = "/json/close/%s"; 55 const char kClosePageRequest[] = "/json/close/%s";
56 const char kNewPageRequest[] = "/json/new";
57 const char kNewPageRequestWithURL[] = "/json/new?%s"; 56 const char kNewPageRequestWithURL[] = "/json/new?%s";
58 const char kActivatePageRequest[] = "/json/activate/%s"; 57 const char kActivatePageRequest[] = "/json/activate/%s";
59 const char kBrowserTargetSocket[] = "/devtools/browser"; 58 const char kBrowserTargetSocket[] = "/devtools/browser";
60 const int kAdbPollingIntervalMs = 1000; 59 const int kAdbPollingIntervalMs = 1000;
61 60
62 const char kUrlParam[] = "url";
63 const char kPageReloadCommand[] = "Page.reload"; 61 const char kPageReloadCommand[] = "Page.reload";
64 const char kPageNavigateCommand[] = "Page.navigate";
65
66 const int kMinVersionNewWithURL = 32;
67 const int kNewPageNavigateDelayMs = 500;
68 62
69 const char kWebViewSocketPrefix[] = "webview_devtools_remote"; 63 const char kWebViewSocketPrefix[] = "webview_devtools_remote";
70 64
71 bool IsWebRTCDeviceProviderEnabled() { 65 bool IsWebRTCDeviceProviderEnabled() {
72 return base::CommandLine::ForCurrentProcess()->HasSwitch( 66 return base::CommandLine::ForCurrentProcess()->HasSwitch(
73 switches::kEnableDevToolsExperiments); 67 switches::kEnableDevToolsExperiments);
74 } 68 }
75 69
76 bool BrowserIdFromString(const std::string& browser_id_str, 70 bool BrowserIdFromString(const std::string& browser_id_str,
77 DevToolsAndroidBridge::BrowserId* browser_id) { 71 DevToolsAndroidBridge::BrowserId* browser_id) {
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 ~RemotePageTarget() override; 431 ~RemotePageTarget() override;
438 432
439 // DevToolsTargetImpl overrides. 433 // DevToolsTargetImpl overrides.
440 std::string GetId() const override; 434 std::string GetId() const override;
441 bool IsAttached() const override; 435 bool IsAttached() const override;
442 bool Activate() const override; 436 bool Activate() const override;
443 bool Close() const override; 437 bool Close() const override;
444 void Inspect(Profile* profile) const override; 438 void Inspect(Profile* profile) const override;
445 void Reload() const override; 439 void Reload() const override;
446 440
447 void Navigate(const std::string& url, base::Closure callback) const;
448
449 private: 441 private:
450 base::WeakPtr<DevToolsAndroidBridge> bridge_; 442 base::WeakPtr<DevToolsAndroidBridge> bridge_;
451 BrowserId browser_id_; 443 BrowserId browser_id_;
452 std::string debug_url_; 444 std::string debug_url_;
453 std::string frontend_url_; 445 std::string frontend_url_;
454 std::string remote_id_; 446 std::string remote_id_;
455 std::string remote_type_; 447 std::string remote_type_;
456 std::string local_id_; 448 std::string local_id_;
457 DISALLOW_COPY_AND_ASSIGN(RemotePageTarget); 449 DISALLOW_COPY_AND_ASSIGN(RemotePageTarget);
458 }; 450 };
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 } 550 }
559 551
560 void DevToolsAndroidBridge::RemotePageTarget::Reload() const { 552 void DevToolsAndroidBridge::RemotePageTarget::Reload() const {
561 if (!bridge_) 553 if (!bridge_)
562 return; 554 return;
563 555
564 bridge_->SendProtocolCommand(browser_id_, debug_url_, kPageReloadCommand, 556 bridge_->SendProtocolCommand(browser_id_, debug_url_, kPageReloadCommand,
565 NULL, base::Closure()); 557 NULL, base::Closure());
566 } 558 }
567 559
568 void DevToolsAndroidBridge::RemotePageTarget::Navigate(
569 const std::string& url,
570 base::Closure callback) const {
571 if (!bridge_)
572 return;
573
574 scoped_ptr<base::DictionaryValue> params(new base::DictionaryValue);
575 params->SetString(kUrlParam, url);
576 bridge_->SendProtocolCommand(browser_id_, debug_url_, kPageNavigateCommand,
577 params.Pass(), callback);
578 }
579
580 // DevToolsAndroidBridge::RemotePage ------------------------------------------ 560 // DevToolsAndroidBridge::RemotePage ------------------------------------------
581 561
582 DevToolsAndroidBridge::RemotePage::RemotePage(const BrowserId& browser_id, 562 DevToolsAndroidBridge::RemotePage::RemotePage(const BrowserId& browser_id,
583 const base::DictionaryValue& dict) 563 const base::DictionaryValue& dict)
584 : browser_id_(browser_id), 564 : browser_id_(browser_id),
585 frontend_url_(GetFrontendURL(dict)), 565 frontend_url_(GetFrontendURL(dict)),
586 dict_(dict.DeepCopy()) { 566 dict_(dict.DeepCopy()) {
587 } 567 }
588 568
589 DevToolsAndroidBridge::RemotePage::~RemotePage() { 569 DevToolsAndroidBridge::RemotePage::~RemotePage() {
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
711 DCHECK_CURRENTLY_ON(BrowserThread::UI); 691 DCHECK_CURRENTLY_ON(BrowserThread::UI);
712 GURL gurl(input_url); 692 GURL gurl(input_url);
713 if (!gurl.is_valid()) { 693 if (!gurl.is_valid()) {
714 gurl = GURL("http://" + input_url); 694 gurl = GURL("http://" + input_url);
715 if (!gurl.is_valid()) 695 if (!gurl.is_valid())
716 return; 696 return;
717 } 697 }
718 std::string url = gurl.spec(); 698 std::string url = gurl.spec();
719 RemoteBrowser::ParsedVersion parsed_version = browser->GetParsedVersion(); 699 RemoteBrowser::ParsedVersion parsed_version = browser->GetParsedVersion();
720 700
721 if (browser->IsChrome() && 701 std::string query = net::EscapeQueryParamValue(url, false /* use_plus */);
722 !parsed_version.empty() && 702 std::string request =
723 parsed_version[0] >= kMinVersionNewWithURL) { 703 base::StringPrintf(kNewPageRequestWithURL, query.c_str());
724 std::string query = net::EscapeQueryParamValue(url, false /* use_plus */); 704 SendJsonRequest(browser->browser_id_, request,
725 std::string request = 705 base::Bind(&DevToolsAndroidBridge::RespondToOpenOnUIThread,
726 base::StringPrintf(kNewPageRequestWithURL, query.c_str()); 706 AsWeakPtr(), browser, callback));
727 SendJsonRequest(browser->browser_id_, request,
728 base::Bind(&DevToolsAndroidBridge::RespondToOpenOnUIThread,
729 AsWeakPtr(), browser, callback));
730 } else {
731 SendJsonRequest(browser->browser_id_, kNewPageRequest,
732 base::Bind(&DevToolsAndroidBridge::PageCreatedOnUIThread,
733 AsWeakPtr(), browser, callback, url));
734 }
735 }
736
737 void DevToolsAndroidBridge::PageCreatedOnUIThread(
738 scoped_refptr<RemoteBrowser> browser,
739 const RemotePageCallback& callback,
740 const std::string& url,
741 int result,
742 const std::string& response) {
743 DCHECK_CURRENTLY_ON(BrowserThread::UI);
744
745 if (result < 0)
746 return;
747 // Navigating too soon after the page creation breaks navigation history
748 // (crbug.com/311014). This can be avoided by adding a moderate delay.
749 BrowserThread::PostDelayedTask(
750 BrowserThread::UI, FROM_HERE,
751 base::Bind(&DevToolsAndroidBridge::NavigatePageOnUIThread,
752 AsWeakPtr(), browser, callback, result, response, url),
753 base::TimeDelta::FromMilliseconds(kNewPageNavigateDelayMs));
754 }
755
756 void DevToolsAndroidBridge::NavigatePageOnUIThread(
757 scoped_refptr<RemoteBrowser> browser,
758 const RemotePageCallback& callback,
759 int result,
760 const std::string& response,
761 const std::string& url) {
762 DCHECK_CURRENTLY_ON(BrowserThread::UI);
763 scoped_ptr<base::Value> value(base::JSONReader::Read(response));
764 base::DictionaryValue* dict;
765
766 if (value && value->GetAsDictionary(&dict)) {
767 RemotePageTarget new_page(this, browser->browser_id_, *dict);
768 new_page.Navigate(url,
769 base::Bind(&DevToolsAndroidBridge::RespondToOpenOnUIThread,
770 AsWeakPtr(), browser, callback, result, response));
771 }
772 } 707 }
773 708
774 DevToolsAndroidBridge::RemoteBrowser::~RemoteBrowser() { 709 DevToolsAndroidBridge::RemoteBrowser::~RemoteBrowser() {
775 } 710 }
776 711
777 // DevToolsAndroidBridge::RemoteDevice ---------------------------------------- 712 // DevToolsAndroidBridge::RemoteDevice ----------------------------------------
778 713
779 DevToolsAndroidBridge::RemoteDevice::RemoteDevice( 714 DevToolsAndroidBridge::RemoteDevice::RemoteDevice(
780 const std::string& serial, 715 const std::string& serial,
781 const AndroidDeviceManager::DeviceInfo& device_info) 716 const AndroidDeviceManager::DeviceInfo& device_info)
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
1012 device_providers.push_back( 947 device_providers.push_back(
1013 new WebRTCDeviceProvider(profile_, signin_manager_, token_service_)); 948 new WebRTCDeviceProvider(profile_, signin_manager_, token_service_));
1014 } 949 }
1015 950
1016 device_manager_->SetDeviceProviders(device_providers); 951 device_manager_->SetDeviceProviders(device_providers);
1017 if (NeedsDeviceListPolling()) { 952 if (NeedsDeviceListPolling()) {
1018 StopDeviceListPolling(); 953 StopDeviceListPolling();
1019 StartDeviceListPolling(); 954 StartDeviceListPolling();
1020 } 955 }
1021 } 956 }
OLDNEW
« no previous file with comments | « chrome/browser/devtools/device/devtools_android_bridge.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698