Commit 7732fd3f authored by vkuzkokov's avatar vkuzkokov Committed by Commit bot

DevTools: Made id unique across different remote browsers

BUG=338303

Review URL: https://codereview.chromium.org/560523004

Cr-Commit-Position: refs/heads/master@{#296188}
parent dd5b6a61
......@@ -101,11 +101,12 @@ class AdbClientSocketTest : public InProcessBrowserTest,
webview->CreatePages();
ASSERT_EQ(1U, chrome_pages.size());
ASSERT_EQ(0U, chrome_beta_pages.size());
ASSERT_EQ(1U, chrome_beta_pages.size());
ASSERT_EQ(2U, webview_pages.size());
// Check that we have non-empty description for webview pages.
ASSERT_EQ(0U, chrome_pages[0]->GetTarget()->GetDescription().size());
ASSERT_EQ(0U, chrome_beta_pages[0]->GetTarget()->GetDescription().size());
ASSERT_NE(0U, webview_pages[0]->GetTarget()->GetDescription().size());
ASSERT_NE(0U, webview_pages[1]->GetTarget()->GetDescription().size());
......
......@@ -100,16 +100,26 @@ char kSampleWebViewVersion[] = "{\n"
char kSampleChromePages[] = "[ {\n"
" \"description\": \"\",\n"
" \"devtoolsFrontendUrl\": \"/devtools/devtools.html?"
"ws=/devtools/page/755DE5C9-D49F-811D-0693-51B8E15C80D2\",\n"
" \"id\": \"755DE5C9-D49F-811D-0693-51B8E15C80D2\",\n"
"ws=/devtools/page/0\",\n"
" \"id\": \"0\",\n"
" \"title\": \"The Chromium Projects\",\n"
" \"type\": \"page\",\n"
" \"url\": \"http://www.chromium.org/\",\n"
" \"webSocketDebuggerUrl\": \""
"ws:///devtools/page/755DE5C9-D49F-811D-0693-51B8E15C80D2\"\n"
"ws:///devtools/page/0\"\n"
"} ]";
char kSampleChromeBetaPages[] = "[]";
char kSampleChromeBetaPages[] = "[ {\n"
" \"description\": \"\",\n"
" \"devtoolsFrontendUrl\": \"/devtools/devtools.html?"
"ws=/devtools/page/0\",\n"
" \"id\": \"0\",\n"
" \"title\": \"The Chromium Projects\",\n"
" \"type\": \"page\",\n"
" \"url\": \"http://www.chromium.org/\",\n"
" \"webSocketDebuggerUrl\": \""
"ws:///devtools/page/0\"\n"
"} ]";
char kSampleWebViewPages[] = "[ {\n"
" \"description\": \"{\\\"attached\\\":false,\\\"empty\\\":false,"
......
......@@ -311,10 +311,10 @@ AgentHostDelegate::GetOrCreateAgentHost(
const std::string& id,
scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> browser,
const std::string& debug_url) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
AgentHostDelegates::iterator it = g_host_delegates.Get().find(id);
if (it != g_host_delegates.Get().end())
return it->second->agent_host_;
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
AgentHostDelegates::iterator it = g_host_delegates.Get().find(id);
if (it != g_host_delegates.Get().end())
return it->second->agent_host_;
AgentHostDelegate* delegate = new AgentHostDelegate(id, browser, debug_url);
scoped_refptr<content::DevToolsAgentHost> result =
......@@ -415,6 +415,7 @@ class RemotePageTarget : public DevToolsTargetImpl,
std::string frontend_url_;
std::string remote_id_;
std::string remote_type_;
std::string local_id_;
DISALLOW_COPY_AND_ASSIGN(RemotePageTarget);
};
......@@ -451,7 +452,8 @@ RemotePageTarget::RemotePageTarget(
browser_(browser),
debug_url_(GetDebugURL(value)),
remote_id_(GetStringProperty(value, "id")),
remote_type_(GetStringProperty(value, "type")) {
remote_type_(GetStringProperty(value, "type")),
local_id_(BuildUniqueTargetId(browser.get(), value)) {
set_type("adb_page");
set_url(GURL(GetStringProperty(value, "url")));
set_title(base::UTF16ToUTF8(net::UnescapeForHTML(base::UTF8ToUTF16(
......@@ -480,7 +482,7 @@ std::string RemotePageTarget::GetFrontendURL() {
}
std::string RemotePageTarget::GetId() const {
return remote_id_;
return local_id_;
}
bool RemotePageTarget::IsAttached() const {
......
......@@ -505,6 +505,7 @@ function addWebViewThumbnail(row, webview, screenWidth, screenHeight) {
function addTargetToList(data, list, properties) {
var row = document.createElement('div');
row.className = 'row';
row.targetId = data.id;
var propertiesBox = document.createElement('div');
propertiesBox.className = 'properties-box';
......
......@@ -66,6 +66,15 @@ function testAdbTargetsListed() {
chromePages, 'http://www.chromium.org/', '.url');
expectNotEquals(undefined, chromiumPage);
var pageById = {};
Array.prototype.forEach.call(devices, function (device) {
var pages = device.querySelectorAll('.row');
Array.prototype.forEach.call(pages, function (page) {
expectEquals(undefined, pageById[page.targetId]);
pageById[page.targetId] = page;
});
});
var webView = findByContentSubstring(
browsers, 'WebView in com.sample.feed (4.0)', '.browser-name');
expectNotEquals(undefined, webView);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment