New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 836272 link

Starred by 4 users

Issue metadata

Status: Fixed
Owner:
Last visit 28 days ago
Closed: May 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 2
Type: Bug



Sign in to add a comment

DevTools(Protocol): support browser context management in headful chrome

Project Member Reported by lushnikov@chromium.org, Apr 24 2018

Issue description

Headless chrome supports browser contexts via the following calls:
- Target.createBrowserContext()
- Target.disposeBrowserContext(browserContextId)
- Target.createTarget(browserContextId)

We need to support this functionality in non-headless mode: it will come very handy
for automation purposes.


 
Project Member

Comment 1 by bugdroid1@chromium.org, Apr 24 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d39d906ad1b6733d8fe8f4edc5b540dbafda9aaa

commit d39d906ad1b6733d8fe8f4edc5b540dbafda9aaa
Author: Andrey Lushnikov <lushnikov@chromium.org>
Date: Tue Apr 24 17:33:35 2018

Introduce BrowserContext::UniqueId

Introduce BrowserContext::UniqueId() method that returns
a string, uniquely identifying the browser context.

This patch:
- re-pursposes BrowserContext's media_device_id_salt_ into the
  unique_id
- exposes the id as BrowserContext::UniqueId
- moves headless browser contexts to use BrowserContext::UniqueId()

BrowserContext::UniqueId() will be exposed in DevTools protocol to
support browser context management for the automation needs.

BUG= 836272 

Change-Id: Ic721d5b06aab555d9c3d47043f49ab02506f2b0b
Reviewed-on: https://chromium-review.googlesource.com/1025269
Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
Reviewed-by: Eric Seckler <eseckler@chromium.org>
Reviewed-by: Guido Urdaneta <guidou@chromium.org>
Commit-Queue: Andrey Lushnikov <lushnikov@chromium.org>
Cr-Commit-Position: refs/heads/master@{#553193}
[modify] https://crrev.com/d39d906ad1b6733d8fe8f4edc5b540dbafda9aaa/content/browser/browser_context.cc
[modify] https://crrev.com/d39d906ad1b6733d8fe8f4edc5b540dbafda9aaa/content/public/browser/browser_context.h
[modify] https://crrev.com/d39d906ad1b6733d8fe8f4edc5b540dbafda9aaa/headless/lib/browser/headless_browser_context_impl.cc
[modify] https://crrev.com/d39d906ad1b6733d8fe8f4edc5b540dbafda9aaa/headless/lib/browser/headless_browser_context_impl.h

Project Member

Comment 2 by bugdroid1@chromium.org, Apr 24 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/092e601673b89bf0db1b6ea56dfb33b6e52a4fa6

commit 092e601673b89bf0db1b6ea56dfb33b6e52a4fa6
Author: Andrey Lushnikov <lushnikov@chromium.org>
Date: Tue Apr 24 20:55:32 2018

DevTools(Protocol): expose BrowserContextId in TargetInfo

This patch exposes BrowserContextId as a part of TargetInfo.
This helps to attribute pages to the browser contexts they
belong to.

BUG= 836272 
R=dgozman

Change-Id: I93d54756c98124a077bd979c207c0c7cd7e38971
Reviewed-on: https://chromium-review.googlesource.com/1026391
Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
Commit-Queue: Andrey Lushnikov <lushnikov@chromium.org>
Cr-Commit-Position: refs/heads/master@{#553268}
[modify] https://crrev.com/092e601673b89bf0db1b6ea56dfb33b6e52a4fa6/content/browser/devtools/protocol/target_handler.cc
[add] https://crrev.com/092e601673b89bf0db1b6ea56dfb33b6e52a4fa6/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/target/target-browser-context-expected.txt
[add] https://crrev.com/092e601673b89bf0db1b6ea56dfb33b6e52a4fa6/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/target/target-browser-context.js
[modify] https://crrev.com/092e601673b89bf0db1b6ea56dfb33b6e52a4fa6/third_party/blink/renderer/core/inspector/browser_protocol.pdl

Project Member

Comment 3 by bugdroid1@chromium.org, Apr 24 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/933b81ec9520463c18329bc185b0dab3bc40bc80

commit 933b81ec9520463c18329bc185b0dab3bc40bc80
Author: Andrey Lushnikov <lushnikov@chromium.org>
Date: Tue Apr 24 22:29:51 2018

DevTools: implement Target.createBrowserContext for non-headless mode

This patch uses OffTheRecord profiles to implement
|Target.createBrowserContext| and |Target.diposeBrowserContext| methods
for non-headless mode.

R=dgozman
BUG= 836272 

Change-Id: Ibd8b33bd9c804b69f17ef9cf1283b8c4bfc405ac
Reviewed-on: https://chromium-review.googlesource.com/1023591
Commit-Queue: Andrey Lushnikov <lushnikov@chromium.org>
Reviewed-by: Stefan Kuhne <skuhne@chromium.org>
Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#553323}
[modify] https://crrev.com/933b81ec9520463c18329bc185b0dab3bc40bc80/chrome/browser/devtools/chrome_devtools_session.cc
[modify] https://crrev.com/933b81ec9520463c18329bc185b0dab3bc40bc80/chrome/browser/devtools/devtools_sanity_browsertest.cc
[modify] https://crrev.com/933b81ec9520463c18329bc185b0dab3bc40bc80/chrome/browser/devtools/inspector_protocol_config.json
[modify] https://crrev.com/933b81ec9520463c18329bc185b0dab3bc40bc80/chrome/browser/devtools/protocol/target_handler.cc
[modify] https://crrev.com/933b81ec9520463c18329bc185b0dab3bc40bc80/chrome/browser/devtools/protocol/target_handler.h
[add] https://crrev.com/933b81ec9520463c18329bc185b0dab3bc40bc80/chrome/test/data/devtools/empty.html
[modify] https://crrev.com/933b81ec9520463c18329bc185b0dab3bc40bc80/third_party/blink/renderer/devtools/front_end/Tests.js

Project Member

Comment 4 by bugdroid1@chromium.org, May 3 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/191b1eadf1a39fc89a3757fe46ff28499a9d51d2

commit 191b1eadf1a39fc89a3757fe46ff28499a9d51d2
Author: Andrey Lushnikov <lushnikov@chromium.org>
Date: Thu May 03 01:09:36 2018

DevTools: change Target.disposeBrowserContext to force-close WebContents

This patch changes the behavior of Target.disposeBrowserContext method
to force-close all the belonging WebContents.

R=dgozman
BUG= 836272 

Change-Id: Iec3da859363120a22c2648b31102457aee20e6cb
Reviewed-on: https://chromium-review.googlesource.com/1031774
Commit-Queue: Andrey Lushnikov <lushnikov@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
Reviewed-by: Alex Clarke <alexclarke@chromium.org>
Reviewed-by: Andrey Kosyakov <caseq@chromium.org>
Cr-Commit-Position: refs/heads/master@{#555640}
[modify] https://crrev.com/191b1eadf1a39fc89a3757fe46ff28499a9d51d2/chrome/browser/devtools/inspector_protocol_config.json
[modify] https://crrev.com/191b1eadf1a39fc89a3757fe46ff28499a9d51d2/chrome/browser/devtools/protocol/target_handler.cc
[modify] https://crrev.com/191b1eadf1a39fc89a3757fe46ff28499a9d51d2/chrome/browser/devtools/protocol/target_handler.h
[modify] https://crrev.com/191b1eadf1a39fc89a3757fe46ff28499a9d51d2/chrome/browser/ui/browser_list.cc
[modify] https://crrev.com/191b1eadf1a39fc89a3757fe46ff28499a9d51d2/chrome/browser/ui/browser_list.h
[modify] https://crrev.com/191b1eadf1a39fc89a3757fe46ff28499a9d51d2/chrome/browser/unload_browsertest.cc
[modify] https://crrev.com/191b1eadf1a39fc89a3757fe46ff28499a9d51d2/content/browser/devtools/protocol/target_handler.cc
[modify] https://crrev.com/191b1eadf1a39fc89a3757fe46ff28499a9d51d2/content/browser/devtools/protocol/target_handler.h
[modify] https://crrev.com/191b1eadf1a39fc89a3757fe46ff28499a9d51d2/headless/lib/browser/headless_devtools_client_impl.cc
[modify] https://crrev.com/191b1eadf1a39fc89a3757fe46ff28499a9d51d2/headless/lib/browser/protocol/target_handler.cc
[modify] https://crrev.com/191b1eadf1a39fc89a3757fe46ff28499a9d51d2/headless/lib/browser/protocol/target_handler.h
[modify] https://crrev.com/191b1eadf1a39fc89a3757fe46ff28499a9d51d2/headless/lib/headless_devtools_client_browsertest.cc
[modify] https://crrev.com/191b1eadf1a39fc89a3757fe46ff28499a9d51d2/third_party/blink/renderer/core/inspector/browser_protocol.pdl
[modify] https://crrev.com/191b1eadf1a39fc89a3757fe46ff28499a9d51d2/third_party/blink/renderer/devtools/front_end/Tests.js

Status: Fixed (was: Assigned)
Project Member

Comment 6 by bugdroid1@chromium.org, May 5 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f2fe5a5bf8a99e491a4ea285b74bd56efc341163

commit f2fe5a5bf8a99e491a4ea285b74bd56efc341163
Author: Pavel Feldman <pfeldman@chromium.org>
Date: Sat May 05 00:45:58 2018

Revert "DevTools: change Target.disposeBrowserContext to force-close WebContents"

This reverts commit 191b1eadf1a39fc89a3757fe46ff28499a9d51d2.

Reason for revert: We can't process protocol synchronously in the headless embedder.

Original change's description:
> DevTools: change Target.disposeBrowserContext to force-close WebContents
> 
> This patch changes the behavior of Target.disposeBrowserContext method
> to force-close all the belonging WebContents.
> 
> R=​dgozman
> BUG= 836272 
> 
> Change-Id: Iec3da859363120a22c2648b31102457aee20e6cb
> Reviewed-on: https://chromium-review.googlesource.com/1031774
> Commit-Queue: Andrey Lushnikov <lushnikov@chromium.org>
> Reviewed-by: Scott Violet <sky@chromium.org>
> Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
> Reviewed-by: Alex Clarke <alexclarke@chromium.org>
> Reviewed-by: Andrey Kosyakov <caseq@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#555640}

TBR=dgozman@chromium.org,sky@chromium.org,lushnikov@chromium.org,caseq@chromium.org,alexclarke@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug:  836272 
Change-Id: Ib5d06ad2ce6816a82c0819c693b2eb2819d3a502
Reviewed-on: https://chromium-review.googlesource.com/1045525
Reviewed-by: Pavel Feldman <pfeldman@chromium.org>
Commit-Queue: Pavel Feldman <pfeldman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#556276}
[modify] https://crrev.com/f2fe5a5bf8a99e491a4ea285b74bd56efc341163/chrome/browser/devtools/inspector_protocol_config.json
[modify] https://crrev.com/f2fe5a5bf8a99e491a4ea285b74bd56efc341163/chrome/browser/devtools/protocol/target_handler.cc
[modify] https://crrev.com/f2fe5a5bf8a99e491a4ea285b74bd56efc341163/chrome/browser/devtools/protocol/target_handler.h
[modify] https://crrev.com/f2fe5a5bf8a99e491a4ea285b74bd56efc341163/chrome/browser/ui/browser_list.cc
[modify] https://crrev.com/f2fe5a5bf8a99e491a4ea285b74bd56efc341163/chrome/browser/ui/browser_list.h
[modify] https://crrev.com/f2fe5a5bf8a99e491a4ea285b74bd56efc341163/chrome/browser/unload_browsertest.cc
[modify] https://crrev.com/f2fe5a5bf8a99e491a4ea285b74bd56efc341163/content/browser/devtools/protocol/target_handler.cc
[modify] https://crrev.com/f2fe5a5bf8a99e491a4ea285b74bd56efc341163/content/browser/devtools/protocol/target_handler.h
[modify] https://crrev.com/f2fe5a5bf8a99e491a4ea285b74bd56efc341163/headless/lib/browser/headless_devtools_client_impl.cc
[modify] https://crrev.com/f2fe5a5bf8a99e491a4ea285b74bd56efc341163/headless/lib/browser/protocol/target_handler.cc
[modify] https://crrev.com/f2fe5a5bf8a99e491a4ea285b74bd56efc341163/headless/lib/browser/protocol/target_handler.h
[modify] https://crrev.com/f2fe5a5bf8a99e491a4ea285b74bd56efc341163/headless/lib/headless_devtools_client_browsertest.cc
[modify] https://crrev.com/f2fe5a5bf8a99e491a4ea285b74bd56efc341163/third_party/blink/renderer/core/inspector/browser_protocol.pdl
[modify] https://crrev.com/f2fe5a5bf8a99e491a4ea285b74bd56efc341163/third_party/blink/renderer/devtools/front_end/Tests.js

Status: Assigned (was: Fixed)
Project Member

Comment 8 by bugdroid1@chromium.org, May 8 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3a17a2f6e5152bb6a717a9b243dba1769ae66dfe

commit 3a17a2f6e5152bb6a717a9b243dba1769ae66dfe
Author: Andrey Lushnikov <lushnikov@chromium.org>
Date: Tue May 08 18:20:47 2018

Reland "DevTools: change Target.disposeBrowserContext to force-close WebContents""

This CL re-lands r555640 that was reverted since it was breaking
headless clients. The breakage is addressed separately:

https://chromium-review.googlesource.com/c/chromium/src/+/1048725

TBR=sky, dgozman, alexclarke, caseq

Bug:  836272 
Change-Id: I9bf7e13f07ebdb7ffe1cfa52e1e000a336f43541
Reviewed-on: https://chromium-review.googlesource.com/1048838
Commit-Queue: Andrey Lushnikov <lushnikov@chromium.org>
Reviewed-by: Andrey Lushnikov <lushnikov@chromium.org>
Cr-Commit-Position: refs/heads/master@{#556881}
[modify] https://crrev.com/3a17a2f6e5152bb6a717a9b243dba1769ae66dfe/chrome/browser/devtools/inspector_protocol_config.json
[modify] https://crrev.com/3a17a2f6e5152bb6a717a9b243dba1769ae66dfe/chrome/browser/devtools/protocol/target_handler.cc
[modify] https://crrev.com/3a17a2f6e5152bb6a717a9b243dba1769ae66dfe/chrome/browser/devtools/protocol/target_handler.h
[modify] https://crrev.com/3a17a2f6e5152bb6a717a9b243dba1769ae66dfe/chrome/browser/ui/browser_list.cc
[modify] https://crrev.com/3a17a2f6e5152bb6a717a9b243dba1769ae66dfe/chrome/browser/ui/browser_list.h
[modify] https://crrev.com/3a17a2f6e5152bb6a717a9b243dba1769ae66dfe/chrome/browser/unload_browsertest.cc
[modify] https://crrev.com/3a17a2f6e5152bb6a717a9b243dba1769ae66dfe/content/browser/devtools/protocol/target_handler.cc
[modify] https://crrev.com/3a17a2f6e5152bb6a717a9b243dba1769ae66dfe/content/browser/devtools/protocol/target_handler.h
[modify] https://crrev.com/3a17a2f6e5152bb6a717a9b243dba1769ae66dfe/headless/lib/browser/protocol/target_handler.cc
[modify] https://crrev.com/3a17a2f6e5152bb6a717a9b243dba1769ae66dfe/headless/lib/browser/protocol/target_handler.h
[modify] https://crrev.com/3a17a2f6e5152bb6a717a9b243dba1769ae66dfe/headless/lib/headless_devtools_client_browsertest.cc
[modify] https://crrev.com/3a17a2f6e5152bb6a717a9b243dba1769ae66dfe/third_party/blink/renderer/core/inspector/browser_protocol.pdl
[modify] https://crrev.com/3a17a2f6e5152bb6a717a9b243dba1769ae66dfe/third_party/blink/renderer/devtools/front_end/Tests.js

Project Member

Comment 9 by bugdroid1@chromium.org, May 8 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7806af1ca610a5b9ab525cb6dfcd8672eb4a03fc

commit 7806af1ca610a5b9ab525cb6dfcd8672eb4a03fc
Author: Andrey Lushnikov <lushnikov@chromium.org>
Date: Tue May 08 19:25:38 2018

DevTools: untie browser context lifetime from protocol session

Currently, browser contexts created with `Target.createBrowserContext()`
method will die once the protocol session is closed. This is inconvenient
and inconsistent with headless behavior.

This patch introduces a new DevToolsBrowserContextManager class to take
care of browser context management. The instance of this class is shared
between all protocol sessions.

R=dgozman
BUG= 836272 

Change-Id: If8b4b542d1a861298ef417a40b44c218d04d2f22
Reviewed-on: https://chromium-review.googlesource.com/1049110
Commit-Queue: Andrey Lushnikov <lushnikov@chromium.org>
Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#556923}
[modify] https://crrev.com/7806af1ca610a5b9ab525cb6dfcd8672eb4a03fc/chrome/browser/devtools/protocol/target_handler.cc
[modify] https://crrev.com/7806af1ca610a5b9ab525cb6dfcd8672eb4a03fc/chrome/browser/devtools/protocol/target_handler.h

Project Member

Comment 10 by bugdroid1@chromium.org, May 8 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7c173628db963ab1e459e5b857273fe41f2a81c2

commit 7c173628db963ab1e459e5b857273fe41f2a81c2
Author: Andrey Lushnikov <lushnikov@chromium.org>
Date: Tue May 08 22:00:52 2018

DevTools: implement Target.getBrowserContexts() method

This patch implements Target.getBrowserContexts() method that
returns all the contexts created with Target.createBrowserContext()
calls.

R=dgozman, alexclarke, caseq

BUG:  836272 
Change-Id: Ib39f947c5591ddb2d6158d8417bc1c8b82561d15
Reviewed-on: https://chromium-review.googlesource.com/1049266
Commit-Queue: Andrey Lushnikov <lushnikov@chromium.org>
Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
Reviewed-by: Alex Clarke <alexclarke@chromium.org>
Cr-Commit-Position: refs/heads/master@{#556977}
[modify] https://crrev.com/7c173628db963ab1e459e5b857273fe41f2a81c2/chrome/browser/devtools/inspector_protocol_config.json
[modify] https://crrev.com/7c173628db963ab1e459e5b857273fe41f2a81c2/chrome/browser/devtools/protocol/target_handler.cc
[modify] https://crrev.com/7c173628db963ab1e459e5b857273fe41f2a81c2/chrome/browser/devtools/protocol/target_handler.h
[modify] https://crrev.com/7c173628db963ab1e459e5b857273fe41f2a81c2/content/browser/devtools/protocol/target_handler.cc
[modify] https://crrev.com/7c173628db963ab1e459e5b857273fe41f2a81c2/content/browser/devtools/protocol/target_handler.h
[modify] https://crrev.com/7c173628db963ab1e459e5b857273fe41f2a81c2/headless/lib/browser/protocol/target_handler.cc
[modify] https://crrev.com/7c173628db963ab1e459e5b857273fe41f2a81c2/headless/lib/browser/protocol/target_handler.h
[modify] https://crrev.com/7c173628db963ab1e459e5b857273fe41f2a81c2/headless/lib/headless_devtools_client_browsertest.cc
[modify] https://crrev.com/7c173628db963ab1e459e5b857273fe41f2a81c2/headless/protocol_config.json
[modify] https://crrev.com/7c173628db963ab1e459e5b857273fe41f2a81c2/third_party/blink/renderer/core/inspector/browser_protocol.pdl
[modify] https://crrev.com/7c173628db963ab1e459e5b857273fe41f2a81c2/third_party/blink/renderer/devtools/front_end/Tests.js

Status: Fixed (was: Assigned)
Cc: pfeldman@chromium.org dgozman@chromium.org eseckler@chromium.org altimin@chromium.org lushnikov@chromium.org skyos...@chromium.org
 Issue 697043  has been merged into this issue.

Sign in to add a comment