Skip to content

DevToolsClient.Emulation methods doesn't affect dynamically created frames #4394

@n303ef

Description

@n303ef

We can override User Agent, locale and some other settings through DevToolsClient.Emulation methods but they doesn't affect frames that created dynamically by JavaScript. These frames can access original browser settings which were set on Cef.Initialize().

To reproduce problem:

  1. Redefine UserAgent:
_ = client.Emulation.SetUserAgentOverrideAsync("Some UserAgent");
//or: _ = client.Network.SetUserAgentOverrideAsync("Some UserAgent");
  1. Attach such code to ChromiumWebBrowser.FrameLoadEnd:
string js = "alert(navigator.userAgent);";
e.Frame.ExecuteJavaScriptAsync(js);
  1. Load any page with is dynamically adding frames. For example, it's a website with google ads:
browser.LoadUrl("https://browserleaks.com/");

What messages we see after that:

Some UserAgent
Some UserAgent
Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36

Metadata

Metadata

Assignees

No one assigned

    Labels

    upstreamThese issues require fixing in the Chromium Embedded Framework(CEF) or Chromium.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions