Skip to content

Commit 9743584

Browse files
authored
browser(firefox): move user agent emulation to browser side (#4016)
References #3995
1 parent ab2714e commit 9743584

File tree

4 files changed

+15
-7
lines changed

4 files changed

+15
-7
lines changed

browser_patches/firefox/BUILD_NUMBER

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
1176
2-
Changed: [email protected] Wed Sep 30 03:06:09 MDT 2020
1+
1177
2+
Changed: [email protected] Wed Sep 30 03:11:29 MDT 2020

browser_patches/firefox/juggler/TargetRegistry.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ class TargetRegistry {
175175
if (!browserContext)
176176
throw new Error(`Internal error: cannot find context for userContextId=${userContextId}`);
177177
const target = new PageTarget(this, window, tab, browserContext, openerTarget);
178+
target.updateUserAgent();
178179
if (!hasExplicitSize)
179180
target.updateViewportSize();
180181
};
@@ -393,6 +394,10 @@ class PageTarget {
393394
return this._browserContext;
394395
}
395396

397+
updateUserAgent() {
398+
this._linkedBrowser.browsingContext.customUserAgent = this._browserContext.defaultUserAgent;
399+
}
400+
396401
async updateViewportSize() {
397402
// Viewport size is defined by three arguments:
398403
// 1. default size. Could be explicit if set as part of `window.open` call, e.g.
@@ -513,6 +518,7 @@ class BrowserContext {
513518
this.ignoreHTTPSErrors = undefined;
514519
this.downloadOptions = undefined;
515520
this.defaultViewportSize = undefined;
521+
this.defaultUserAgent = null;
516522
this.screencastOptions = undefined;
517523
this.scriptsToEvaluateOnNewDocument = [];
518524
this.bindings = [];
@@ -559,6 +565,12 @@ class BrowserContext {
559565
}
560566
}
561567

568+
async setDefaultUserAgent(userAgent) {
569+
this.defaultUserAgent = userAgent;
570+
for (const page of this.pages)
571+
page.updateUserAgent();
572+
}
573+
562574
async setDefaultViewport(viewport) {
563575
this.defaultViewportSize = viewport ? viewport.viewportSize : undefined;
564576
const promises = Array.from(this.pages).map(page => page.updateViewportSize());

browser_patches/firefox/juggler/content/main.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,6 @@ const applySetting = {
5959
Ci.nsIDocShell.ONLINE_OVERRIDE_ONLINE : Ci.nsIDocShell.ONLINE_OVERRIDE_OFFLINE;
6060
},
6161

62-
userAgent: (userAgent) => {
63-
docShell.browsingContext.customUserAgent = userAgent;
64-
},
65-
6662
bypassCSP: (bypassCSP) => {
6763
docShell.bypassCSPEnabled = bypassCSP;
6864
},

browser_patches/firefox/juggler/protocol/BrowserHandler.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ class BrowserHandler {
197197
}
198198

199199
async setUserAgentOverride({browserContextId, userAgent}) {
200-
await this._targetRegistry.browserContextForId(browserContextId).applySetting('userAgent', nullToUndefined(userAgent));
200+
await this._targetRegistry.browserContextForId(browserContextId).setDefaultUserAgent(userAgent);
201201
}
202202

203203
async setBypassCSP({browserContextId, bypassCSP}) {

0 commit comments

Comments
 (0)