Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for direct communication over the DevTools protocol #2961

Closed
magreenblatt opened this issue Jun 16, 2020 · 4 comments
Closed

Add support for direct communication over the DevTools protocol #2961

magreenblatt opened this issue Jun 16, 2020 · 4 comments
Labels
enhancement Enhancement request Framework Related to framework code or APIs

Comments

@magreenblatt
Copy link
Collaborator

Original report by me.


The DevTools protocol can be used to automate behaviors in the browser. For example, projects like ChromeDriver use the DevTools protocol over a remote connection for automated testing. Access to DevTools protocol communication (methods and events) can also be exposed directly via CefBrowserHost methods for controlling behaviors such as offline mode (see issue #245). Some DevTools state is cleared on main frame (or cross-renderer) navigation so it will be necessary to additionally expose some document-related callbacks (see issue #1454).

@magreenblatt
Copy link
Collaborator Author

Add support for direct DevTools protocol messaging (fixes issue #2961).

This change allows the client to directly send and receive DevTools
protocol messages (send method calls, and receive method results and
events) without requiring a DevTools front-end or remote-debugging
session.

This change includes additional supporting changes:

  • Add a new CefRequestHandler::OnDocumentAvailableInMainFrame
    callback (see issue Add callback for document element creation #1454).
  • Add a CefParseJSON variant that accepts a UTF8-encoded buffer.
  • Add a --devtools-protocol-log-file=<path> command-line flag for
    logging protocol messages sent to/from the DevTools front-end
    while it is displayed. This is useful for understanding existing
    DevTools protocol usage.
  • Add a new "libcef_static_unittests" executable target to support
    light-weight unit tests of libcef_static internals (e.g. without
    requiring exposure via the CEF API). Files to be unittested are
    placed in the new "libcef_static_unittested" source_set which is
    then included by both the existing libcef_static library and the
    new unittests executable target.
  • Linux: Remove use_bundled_fontconfig=false, which is no longer
    required and causes unittest build errors (see issue Linux Ubuntu 16.04: Hang during startup in FT_Load_Glyph #2424).

This change also adds a cefclient demo for configuring offline mode
using the DevTools protocol (fixes issue #245). This is controlled
by the "Offline mode" context menu option and the --offline
command-line switch which will launch cefclient in offline mode. When
cefclient is offline all network requests will fail with
ERR_INTERNET_DISCONNECTED and navigator.onLine will return false when
called from JavaScript in any frame. This mode is per-browser so
newly created browser windows will have the default mode. Note that
configuring offline mode in this way will not update the Network tab
UI ("Throtting" option) in a displayed DevTools front-end instance.

→ <<cset 39aed35644dc (bb)>>

@magreenblatt
Copy link
Collaborator Author

  • changed state from "new" to "resolved"

@magreenblatt
Copy link
Collaborator Author

Add support for direct DevTools protocol messaging (fixes issue #2961).

This change allows the client to directly send and receive DevTools
protocol messages (send method calls, and receive method results and
events) without requiring a DevTools front-end or remote-debugging
session.

This change includes additional supporting changes:

  • Add a new CefRequestHandler::OnDocumentAvailableInMainFrame
    callback (see issue Add callback for document element creation #1454).
  • Add a CefParseJSON variant that accepts a UTF8-encoded buffer.
  • Add a --devtools-protocol-log-file=<path> command-line flag for
    logging protocol messages sent to/from the DevTools front-end
    while it is displayed. This is useful for understanding existing
    DevTools protocol usage.
  • Add a new "libcef_static_unittests" executable target to support
    light-weight unit tests of libcef_static internals (e.g. without
    requiring exposure via the CEF API). Files to be unittested are
    placed in the new "libcef_static_unittested" source_set which is
    then included by both the existing libcef_static library and the
    new unittests executable target.
  • Linux: Remove use_bundled_fontconfig=false, which is no longer
    required and causes unittest build errors (see issue Linux Ubuntu 16.04: Hang during startup in FT_Load_Glyph #2424).

This change also adds a cefclient demo for configuring offline mode
using the DevTools protocol (fixes issue #245). This is controlled
by the "Offline mode" context menu option and the --offline
command-line switch which will launch cefclient in offline mode. When
cefclient is offline all network requests will fail with
ERR_INTERNET_DISCONNECTED and navigator.onLine will return false when
called from JavaScript in any frame. This mode is per-browser so
newly created browser windows will have the default mode. Note that
configuring offline mode in this way will not update the Network tab
UI ("Throtting" option) in a displayed DevTools front-end instance.

→ <<cset 0fb8a5f1eada (bb)>>

@magreenblatt
Copy link
Collaborator Author

Add support for direct DevTools protocol messaging (fixes issue #2961).

This change allows the client to directly send and receive DevTools
protocol messages (send method calls, and receive method results and
events) without requiring a DevTools front-end or remote-debugging
session.

This change includes additional supporting changes:

  • Add a new CefRequestHandler::OnDocumentAvailableInMainFrame
    callback (see issue Add callback for document element creation #1454).
  • Add a CefParseJSON variant that accepts a UTF8-encoded buffer.
  • Add a --devtools-protocol-log-file=<path> command-line flag for
    logging protocol messages sent to/from the DevTools front-end
    while it is displayed. This is useful for understanding existing
    DevTools protocol usage.
  • Add a new "libcef_static_unittests" executable target to support
    light-weight unit tests of libcef_static internals (e.g. without
    requiring exposure via the CEF API). Files to be unittested are
    placed in the new "libcef_static_unittested" source_set which is
    then included by both the existing libcef_static library and the
    new unittests executable target.
  • Linux: Remove use_bundled_fontconfig=false, which is no longer
    required and causes unittest build errors (see issue Linux Ubuntu 16.04: Hang during startup in FT_Load_Glyph #2424).

This change also adds a cefclient demo for configuring offline mode
using the DevTools protocol (fixes issue #245). This is controlled
by the "Offline mode" context menu option and the --offline
command-line switch which will launch cefclient in offline mode. When
cefclient is offline all network requests will fail with
ERR_INTERNET_DISCONNECTED and navigator.onLine will return false when
called from JavaScript in any frame. This mode is per-browser so
newly created browser windows will have the default mode. Note that
configuring offline mode in this way will not update the Network tab
UI ("Throtting" option) in a displayed DevTools front-end instance.

→ <<cset fd6631bd1812 (bb)>>

S1artie pushed a commit to GEBIT/cef that referenced this issue Aug 10, 2023
…iumembedded#2961).

This change allows the client to directly send and receive DevTools
protocol messages (send method calls, and receive method results and
events) without requiring a DevTools front-end or remote-debugging
session.

This change includes additional supporting changes:
- Add a new CefRequestHandler::OnDocumentAvailableInMainFrame
  callback (see issue chromiumembedded#1454).
- Add a CefParseJSON variant that accepts a UTF8-encoded buffer.
- Add a `--devtools-protocol-log-file=<path>` command-line flag for
  logging protocol messages sent to/from the DevTools front-end
  while it is displayed. This is useful for understanding existing
  DevTools protocol usage.
- Add a new "libcef_static_unittests" executable target to support
  light-weight unit tests of libcef_static internals (e.g. without
  requiring exposure via the CEF API). Files to be unittested are
  placed in the new "libcef_static_unittested" source_set which is
  then included by both the existing libcef_static library and the
  new unittests executable target.
- Linux: Remove use_bundled_fontconfig=false, which is no longer
  required and causes unittest build errors (see issue chromiumembedded#2424).

This change also adds a cefclient demo for configuring offline mode
using the DevTools protocol (fixes issue chromiumembedded#245). This is controlled
by the "Offline mode" context menu option and the `--offline`
command-line switch which will launch cefclient in offline mode. When
cefclient is offline all network requests will fail with
ERR_INTERNET_DISCONNECTED and navigator.onLine will return false when
called from JavaScript in any frame. This mode is per-browser so
newly created browser windows will have the default mode. Note that
configuring offline mode in this way will not update the Network tab
UI ("Throtting" option) in a displayed DevTools front-end instance.
filipnavara pushed a commit to emclient/cef that referenced this issue Dec 26, 2023
…iumembedded#2961).

This change allows the client to directly send and receive DevTools
protocol messages (send method calls, and receive method results and
events) without requiring a DevTools front-end or remote-debugging
session.

This change includes additional supporting changes:
- Add a new CefRequestHandler::OnDocumentAvailableInMainFrame
  callback (see issue chromiumembedded#1454).
- Add a CefParseJSON variant that accepts a UTF8-encoded buffer.
- Add a `--devtools-protocol-log-file=<path>` command-line flag for
  logging protocol messages sent to/from the DevTools front-end
  while it is displayed. This is useful for understanding existing
  DevTools protocol usage.
- Add a new "libcef_static_unittests" executable target to support
  light-weight unit tests of libcef_static internals (e.g. without
  requiring exposure via the CEF API). Files to be unittested are
  placed in the new "libcef_static_unittested" source_set which is
  then included by both the existing libcef_static library and the
  new unittests executable target.
- Linux: Remove use_bundled_fontconfig=false, which is no longer
  required and causes unittest build errors (see issue chromiumembedded#2424).

This change also adds a cefclient demo for configuring offline mode
using the DevTools protocol (fixes issue chromiumembedded#245). This is controlled
by the "Offline mode" context menu option and the `--offline`
command-line switch which will launch cefclient in offline mode. When
cefclient is offline all network requests will fail with
ERR_INTERNET_DISCONNECTED and navigator.onLine will return false when
called from JavaScript in any frame. This mode is per-browser so
newly created browser windows will have the default mode. Note that
configuring offline mode in this way will not update the Network tab
UI ("Throtting" option) in a displayed DevTools front-end instance.
filipnavara pushed a commit to emclient/cef that referenced this issue Dec 26, 2023
…iumembedded#2961).

This change allows the client to directly send and receive DevTools
protocol messages (send method calls, and receive method results and
events) without requiring a DevTools front-end or remote-debugging
session.

This change includes additional supporting changes:
- Add a new CefRequestHandler::OnDocumentAvailableInMainFrame
  callback (see issue chromiumembedded#1454).
- Add a CefParseJSON variant that accepts a UTF8-encoded buffer.
- Add a `--devtools-protocol-log-file=<path>` command-line flag for
  logging protocol messages sent to/from the DevTools front-end
  while it is displayed. This is useful for understanding existing
  DevTools protocol usage.
- Add a new "libcef_static_unittests" executable target to support
  light-weight unit tests of libcef_static internals (e.g. without
  requiring exposure via the CEF API). Files to be unittested are
  placed in the new "libcef_static_unittested" source_set which is
  then included by both the existing libcef_static library and the
  new unittests executable target.
- Linux: Remove use_bundled_fontconfig=false, which is no longer
  required and causes unittest build errors (see issue chromiumembedded#2424).

This change also adds a cefclient demo for configuring offline mode
using the DevTools protocol (fixes issue chromiumembedded#245). This is controlled
by the "Offline mode" context menu option and the `--offline`
command-line switch which will launch cefclient in offline mode. When
cefclient is offline all network requests will fail with
ERR_INTERNET_DISCONNECTED and navigator.onLine will return false when
called from JavaScript in any frame. This mode is per-browser so
newly created browser windows will have the default mode. Note that
configuring offline mode in this way will not update the Network tab
UI ("Throtting" option) in a displayed DevTools front-end instance.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Enhancement request Framework Related to framework code or APIs
Projects
None yet
Development

No branches or pull requests

1 participant