New issue
Advanced search Search tips

Issue 595353 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Apr 2016
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug

Blocking:
issue 546953



Sign in to add a comment

Implement code generator for headless client API

Project Member Reported by skyos...@chromium.org, Mar 16 2016

Issue description

Implement code generator for the headless client API. The generator will read protocol.json and create a set of equivalent C++ interfaces for the chosen domains.
 
Blocking: 546953
Project Member

Comment 2 by bugdroid1@chromium.org, Apr 6 2016

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

commit ab258d6d6ddc01e681716ec2be8433bc77b682a3
Author: skyostil <skyostil@chromium.org>
Date: Wed Apr 06 16:32:57 2016

headless: Require the user to pass in an initial URL

Require the user to pass in an initial URL when creating a
HeadlessWebContents. This is to ensure that we have a navigation that
initializes the renderer, making it possible to inspect the tab.

BUG= 595353 , 546953 

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

Cr-Commit-Position: refs/heads/master@{#385476}

[modify] https://crrev.com/ab258d6d6ddc01e681716ec2be8433bc77b682a3/headless/app/headless_shell.cc
[modify] https://crrev.com/ab258d6d6ddc01e681716ec2be8433bc77b682a3/headless/lib/browser/headless_browser_impl.cc
[modify] https://crrev.com/ab258d6d6ddc01e681716ec2be8433bc77b682a3/headless/lib/browser/headless_browser_impl.h
[modify] https://crrev.com/ab258d6d6ddc01e681716ec2be8433bc77b682a3/headless/lib/browser/headless_web_contents_impl.cc
[modify] https://crrev.com/ab258d6d6ddc01e681716ec2be8433bc77b682a3/headless/lib/browser/headless_web_contents_impl.h
[modify] https://crrev.com/ab258d6d6ddc01e681716ec2be8433bc77b682a3/headless/lib/headless_browser_browsertest.cc
[modify] https://crrev.com/ab258d6d6ddc01e681716ec2be8433bc77b682a3/headless/lib/headless_web_contents_browsertest.cc
[modify] https://crrev.com/ab258d6d6ddc01e681716ec2be8433bc77b682a3/headless/public/headless_browser.h
[modify] https://crrev.com/ab258d6d6ddc01e681716ec2be8433bc77b682a3/headless/public/headless_web_contents.h
[modify] https://crrev.com/ab258d6d6ddc01e681716ec2be8433bc77b682a3/headless/test/headless_browser_test.cc
[modify] https://crrev.com/ab258d6d6ddc01e681716ec2be8433bc77b682a3/headless/test/headless_browser_test.h

Project Member

Comment 3 by bugdroid1@chromium.org, Apr 7 2016

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

commit d79e1515bc06265a1216c6910feb7a21232131e2
Author: skyostil <skyostil@chromium.org>
Date: Thu Apr 07 17:50:58 2016

headless: Add a Maybe-type

Add a Maybe-type which will be used by the C++ DevTools client API for
representing optional values.

BUG= 595353 

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

Cr-Commit-Position: refs/heads/master@{#385797}

[modify] https://crrev.com/d79e1515bc06265a1216c6910feb7a21232131e2/headless/BUILD.gn
[add] https://crrev.com/d79e1515bc06265a1216c6910feb7a21232131e2/headless/public/util/maybe.h
[add] https://crrev.com/d79e1515bc06265a1216c6910feb7a21232131e2/headless/public/util/maybe_unittest.cc

Project Member

Comment 5 by bugdroid1@chromium.org, Apr 20 2016

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

commit 564a123cb9c2786db2b382a7f519cfbc65ae5e2f
Author: skyostil <skyostil@chromium.org>
Date: Wed Apr 20 13:45:18 2016

headless: Implement client API generation

Implement a C++ client API which can be used to control and
inspect a tab in the headless browser. The API consists of
C++ bindings for the DevTools remote debugging protocol and
is automatically generated from the protocol definition.

Design doc: https://docs.google.com/document/d/1rlqcp8nk-ZQvldNJWdbaMbwfDbJoOXvahPCDoPGOwhQ/edit#

BUG= 595353 

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

Cr-Commit-Position: refs/heads/master@{#388488}

[modify] https://crrev.com/564a123cb9c2786db2b382a7f519cfbc65ae5e2f/headless/BUILD.gn
[modify] https://crrev.com/564a123cb9c2786db2b382a7f519cfbc65ae5e2f/headless/README.md
[modify] https://crrev.com/564a123cb9c2786db2b382a7f519cfbc65ae5e2f/headless/app/headless_shell.cc
[add] https://crrev.com/564a123cb9c2786db2b382a7f519cfbc65ae5e2f/headless/lib/browser/client_api_generator.py
[add] https://crrev.com/564a123cb9c2786db2b382a7f519cfbc65ae5e2f/headless/lib/browser/client_api_generator_unittest.py
[add] https://crrev.com/564a123cb9c2786db2b382a7f519cfbc65ae5e2f/headless/lib/browser/domain_cc.template
[add] https://crrev.com/564a123cb9c2786db2b382a7f519cfbc65ae5e2f/headless/lib/browser/domain_h.template
[add] https://crrev.com/564a123cb9c2786db2b382a7f519cfbc65ae5e2f/headless/lib/browser/headless_devtools_client_impl.cc
[add] https://crrev.com/564a123cb9c2786db2b382a7f519cfbc65ae5e2f/headless/lib/browser/headless_devtools_client_impl.h
[modify] https://crrev.com/564a123cb9c2786db2b382a7f519cfbc65ae5e2f/headless/lib/browser/headless_web_contents_impl.cc
[modify] https://crrev.com/564a123cb9c2786db2b382a7f519cfbc65ae5e2f/headless/lib/browser/headless_web_contents_impl.h
[add] https://crrev.com/564a123cb9c2786db2b382a7f519cfbc65ae5e2f/headless/lib/browser/type_conversions_h.template
[add] https://crrev.com/564a123cb9c2786db2b382a7f519cfbc65ae5e2f/headless/lib/browser/types_cc.template
[add] https://crrev.com/564a123cb9c2786db2b382a7f519cfbc65ae5e2f/headless/lib/browser/types_h.template
[add] https://crrev.com/564a123cb9c2786db2b382a7f519cfbc65ae5e2f/headless/lib/headless_devtools_client_browsertest.cc
[add] https://crrev.com/564a123cb9c2786db2b382a7f519cfbc65ae5e2f/headless/public/domains/README.md
[add] https://crrev.com/564a123cb9c2786db2b382a7f519cfbc65ae5e2f/headless/public/domains/types_unittest.cc
[add] https://crrev.com/564a123cb9c2786db2b382a7f519cfbc65ae5e2f/headless/public/headless_devtools_client.h
[add] https://crrev.com/564a123cb9c2786db2b382a7f519cfbc65ae5e2f/headless/public/headless_devtools_target.h
[modify] https://crrev.com/564a123cb9c2786db2b382a7f519cfbc65ae5e2f/headless/public/headless_web_contents.h
[add] https://crrev.com/564a123cb9c2786db2b382a7f519cfbc65ae5e2f/headless/public/internal/message_dispatcher.h
[add] https://crrev.com/564a123cb9c2786db2b382a7f519cfbc65ae5e2f/headless/public/internal/value_conversions.h
[modify] https://crrev.com/564a123cb9c2786db2b382a7f519cfbc65ae5e2f/headless/public/util/maybe.h
[modify] https://crrev.com/564a123cb9c2786db2b382a7f519cfbc65ae5e2f/headless/test/headless_browser_test.cc

Project Member

Comment 7 by bugdroid1@chromium.org, Apr 20 2016

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

commit 4e4448eebbfdd3ba279f87705129be31ffb54c55
Author: skyostil <skyostil@chromium.org>
Date: Wed Apr 20 17:40:15 2016

headless: Implement convenience overloads for DevTools commands

Implement conveniene overloads for DevTools commands which only take
required parameters. For example, instead of this:

    client->GetPage()->Navigate(
        page::NavigateParams::Builder()
            .SetUrl("https://www.example.com"))
            .Build());

you can now do this:

    client->GetPage()->Navigate("https://www.example.com");

BUG= 595353 

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

Cr-Commit-Position: refs/heads/master@{#388527}

[modify] https://crrev.com/4e4448eebbfdd3ba279f87705129be31ffb54c55/headless/lib/browser/domain_cc.template
[modify] https://crrev.com/4e4448eebbfdd3ba279f87705129be31ffb54c55/headless/lib/browser/domain_h.template
[modify] https://crrev.com/4e4448eebbfdd3ba279f87705129be31ffb54c55/headless/lib/headless_devtools_client_browsertest.cc

Project Member

Comment 8 by bugdroid1@chromium.org, Apr 20 2016

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

commit 7161641ae3eb7d4dd77c5c1884b34dd091ec8d39
Author: skyostil <skyostil@chromium.org>
Date: Wed Apr 20 19:04:59 2016

headless: Fix handling of replies without any parameters

Fix handling of replies to DevTools commands which don't include any
parameters. Previously we used th presence of the reply dictionary to
decide between a callback with or without parameters, but this
dictionary can be present in the reply also when there are no actual
parameters in it.

BUG= 595353 

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

Cr-Commit-Position: refs/heads/master@{#388543}

[modify] https://crrev.com/7161641ae3eb7d4dd77c5c1884b34dd091ec8d39/headless/lib/browser/headless_devtools_client_impl.cc
[modify] https://crrev.com/7161641ae3eb7d4dd77c5c1884b34dd091ec8d39/headless/lib/headless_devtools_client_browsertest.cc

Project Member

Comment 9 by bugdroid1@chromium.org, Apr 22 2016

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

commit 8a15bb3cc46b4d9de5e7334e2746f993941f8a96
Author: skyostil <skyostil@chromium.org>
Date: Fri Apr 22 11:19:55 2016

headless: Implement DevTools events

Make it possible to subscribe to DevTools events from all domains.

BUG= 595353 

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

Cr-Commit-Position: refs/heads/master@{#389074}

[modify] https://crrev.com/8a15bb3cc46b4d9de5e7334e2746f993941f8a96/headless/lib/browser/client_api_generator.py
[modify] https://crrev.com/8a15bb3cc46b4d9de5e7334e2746f993941f8a96/headless/lib/browser/client_api_generator_unittest.py
[modify] https://crrev.com/8a15bb3cc46b4d9de5e7334e2746f993941f8a96/headless/lib/browser/domain_cc.template
[modify] https://crrev.com/8a15bb3cc46b4d9de5e7334e2746f993941f8a96/headless/lib/browser/domain_h.template
[modify] https://crrev.com/8a15bb3cc46b4d9de5e7334e2746f993941f8a96/headless/lib/browser/headless_devtools_client_impl.cc
[modify] https://crrev.com/8a15bb3cc46b4d9de5e7334e2746f993941f8a96/headless/lib/browser/headless_devtools_client_impl.h
[modify] https://crrev.com/8a15bb3cc46b4d9de5e7334e2746f993941f8a96/headless/lib/browser/types_h.template
[modify] https://crrev.com/8a15bb3cc46b4d9de5e7334e2746f993941f8a96/headless/lib/headless_devtools_client_browsertest.cc
[modify] https://crrev.com/8a15bb3cc46b4d9de5e7334e2746f993941f8a96/headless/public/internal/message_dispatcher.h

Project Member

Comment 10 by bugdroid1@chromium.org, Apr 22 2016

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

commit 5cd0556825d3dbe6f47ffe023a876192d5d8514a
Author: skyostil <skyostil@chromium.org>
Date: Fri Apr 22 13:11:10 2016

headless: Move hidden commands and events to experimental domains

Some DevTools commands are still in development and may change. Move
them to experimental domains to make their status clear. Note that if an
experimental command is made stable, it will still be available through
the experimental domain and existing users will not be affected.

BUG= 595353 

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

Cr-Commit-Position: refs/heads/master@{#389086}

[modify] https://crrev.com/5cd0556825d3dbe6f47ffe023a876192d5d8514a/headless/lib/browser/client_api_generator.py
[modify] https://crrev.com/5cd0556825d3dbe6f47ffe023a876192d5d8514a/headless/lib/browser/client_api_generator_unittest.py
[modify] https://crrev.com/5cd0556825d3dbe6f47ffe023a876192d5d8514a/headless/lib/browser/domain_cc.template
[modify] https://crrev.com/5cd0556825d3dbe6f47ffe023a876192d5d8514a/headless/lib/browser/domain_h.template
[modify] https://crrev.com/5cd0556825d3dbe6f47ffe023a876192d5d8514a/headless/lib/browser/headless_devtools_client_impl.h
[modify] https://crrev.com/5cd0556825d3dbe6f47ffe023a876192d5d8514a/headless/lib/headless_devtools_client_browsertest.cc

Status: Fixed (was: Started)
Labels: -merge-merged-2716
Project Member

Comment 15 by bugdroid1@chromium.org, May 25 2016

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

commit b5ee712010a665091eb525be87f47d0464621b6e
Author: skyostil <skyostil@chromium.org>
Date: Wed May 25 11:54:22 2016

headless: Make HeadlessBrowser::Options move-only

This patch turns HeadlessBrowser::Options into a move-only object. This
makes it possible to later add move-only options (e.g.,
std::unique_ptr).

BUG= 595353 

Review-Url: https://codereview.chromium.org/2013483002
Cr-Commit-Position: refs/heads/master@{#395867}

[modify] https://crrev.com/b5ee712010a665091eb525be87f47d0464621b6e/headless/lib/browser/headless_browser_context.cc
[modify] https://crrev.com/b5ee712010a665091eb525be87f47d0464621b6e/headless/lib/browser/headless_browser_context.h
[modify] https://crrev.com/b5ee712010a665091eb525be87f47d0464621b6e/headless/lib/browser/headless_browser_impl.cc
[modify] https://crrev.com/b5ee712010a665091eb525be87f47d0464621b6e/headless/lib/browser/headless_browser_impl.h
[modify] https://crrev.com/b5ee712010a665091eb525be87f47d0464621b6e/headless/lib/browser/headless_browser_main_parts.cc
[modify] https://crrev.com/b5ee712010a665091eb525be87f47d0464621b6e/headless/lib/browser/headless_devtools.cc
[modify] https://crrev.com/b5ee712010a665091eb525be87f47d0464621b6e/headless/lib/browser/headless_url_request_context_getter.cc
[modify] https://crrev.com/b5ee712010a665091eb525be87f47d0464621b6e/headless/lib/browser/headless_url_request_context_getter.h
[modify] https://crrev.com/b5ee712010a665091eb525be87f47d0464621b6e/headless/lib/headless_content_client.cc
[modify] https://crrev.com/b5ee712010a665091eb525be87f47d0464621b6e/headless/lib/headless_content_client.h
[modify] https://crrev.com/b5ee712010a665091eb525be87f47d0464621b6e/headless/lib/headless_content_main_delegate.cc
[modify] https://crrev.com/b5ee712010a665091eb525be87f47d0464621b6e/headless/public/headless_browser.cc
[modify] https://crrev.com/b5ee712010a665091eb525be87f47d0464621b6e/headless/public/headless_browser.h
[modify] https://crrev.com/b5ee712010a665091eb525be87f47d0464621b6e/headless/test/headless_browser_test.cc
[modify] https://crrev.com/b5ee712010a665091eb525be87f47d0464621b6e/headless/test/headless_browser_test.h
[modify] https://crrev.com/b5ee712010a665091eb525be87f47d0464621b6e/headless/test/headless_test_launcher.cc

Project Member

Comment 17 by bugdroid1@chromium.org, Jun 1 2016

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

commit 1b67e83a4e32a1acbb89e4680d4ec2771ab765ad
Author: skyostil <skyostil@chromium.org>
Date: Wed Jun 01 09:37:09 2016

Revert of headless: Allow protocol handler customization (patchset #3 id:40001 of https://codereview.chromium.org/2024973002/ )

Reason for revert:
Doing another review round with net/.

Original issue's description:
> headless: Allow protocol handler customization
>
> Allow headless clients to provide custom protocol handlers. This lets
> the clients override how URL requests are fulfilled for different
> schemes types.
>
> Design doc: https://docs.google.com/document/d/1m4CCZGJWOJdHY5MVwQqY3sT-5kBoz7NqmGvIb6-l3fM/edit#bookmark=id.5bqp8w95liri
>
> BUG= 595353 
>
> Committed: https://crrev.com/789f9abbbc69e5d485984a9d7b4e3d167054919f
> Cr-Commit-Position: refs/heads/master@{#396884}

TBR=altimin@chromium.org,alexclarke@chromium.org,eseckler@chromium.org,rsleevi@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= 595353 

Review-Url: https://codereview.chromium.org/2026253002
Cr-Commit-Position: refs/heads/master@{#397093}

[modify] https://crrev.com/1b67e83a4e32a1acbb89e4680d4ec2771ab765ad/headless/lib/browser/headless_url_request_context_getter.cc
[modify] https://crrev.com/1b67e83a4e32a1acbb89e4680d4ec2771ab765ad/headless/lib/headless_browser_browsertest.cc
[modify] https://crrev.com/1b67e83a4e32a1acbb89e4680d4ec2771ab765ad/headless/public/headless_browser.cc
[modify] https://crrev.com/1b67e83a4e32a1acbb89e4680d4ec2771ab765ad/headless/public/headless_browser.h
[modify] https://crrev.com/1b67e83a4e32a1acbb89e4680d4ec2771ab765ad/headless/test/headless_browser_test.cc
[modify] https://crrev.com/1b67e83a4e32a1acbb89e4680d4ec2771ab765ad/headless/test/headless_browser_test.h

Project Member

Comment 18 by bugdroid1@chromium.org, Jun 22 2016

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

commit 7fc3c120cd55159988d6e28620ac7a8e95e901df
Author: skyostil <skyostil@chromium.org>
Date: Wed Jun 22 12:45:54 2016

headless: Add a dedicated child process entrypoint

Add a dedicated entrypoint for transferring control to the headless
library in a child process (e.g., a renderer). This avoids the need for
the embedder to construct options for the browser, which would get
ignored anyway.

Embedders should now call headless::RunChildProcessIfNeeded() as soon as
possible in their main entrypoint.

BUG= 595353 

Review-Url: https://codereview.chromium.org/2081423004
Cr-Commit-Position: refs/heads/master@{#401260}

[modify] https://crrev.com/7fc3c120cd55159988d6e28620ac7a8e95e901df/headless/app/headless_shell.cc
[modify] https://crrev.com/7fc3c120cd55159988d6e28620ac7a8e95e901df/headless/lib/browser/headless_browser_impl.cc
[modify] https://crrev.com/7fc3c120cd55159988d6e28620ac7a8e95e901df/headless/public/headless_browser.h

Sign in to add a comment