browser(firefox): implelemt timezone overrides (#1577)
This commit is contained in:
parent
d130479e3c
commit
43b91e6930
|
|
@ -1 +1 @@
|
||||||
1063
|
1064
|
||||||
|
|
|
||||||
|
|
@ -138,15 +138,17 @@ index 040c7b124dec6bb254563bbe74fe50012cb077a3..b4e6b8132786af70e8ad0dce88b67c28
|
||||||
const transportProvider = {
|
const transportProvider = {
|
||||||
setListener(upgradeListener) {
|
setListener(upgradeListener) {
|
||||||
diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp
|
diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp
|
||||||
index 514a4f2890a20558afe0d9c1aec697612fc8e873..44b48f306cb6c67264edbb2eaa49c890b657c675 100644
|
index 514a4f2890a20558afe0d9c1aec697612fc8e873..4be480a4ec0e397c6c9a1d695a1faf381af414d1 100644
|
||||||
--- a/docshell/base/nsDocShell.cpp
|
--- a/docshell/base/nsDocShell.cpp
|
||||||
+++ b/docshell/base/nsDocShell.cpp
|
+++ b/docshell/base/nsDocShell.cpp
|
||||||
@@ -15,6 +15,12 @@
|
@@ -15,6 +15,14 @@
|
||||||
# include <unistd.h> // for getpid()
|
# include <unistd.h> // for getpid()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
+#if JS_HAS_INTL_API && !MOZ_SYSTEM_ICU
|
+#if JS_HAS_INTL_API && !MOZ_SYSTEM_ICU
|
||||||
+# include "unicode/locid.h"
|
+# include "unicode/locid.h"
|
||||||
|
+# include "unicode/timezone.h"
|
||||||
|
+# include "unicode/unistr.h"
|
||||||
+#endif /* JS_HAS_INTL_API && !MOZ_SYSTEM_ICU */
|
+#endif /* JS_HAS_INTL_API && !MOZ_SYSTEM_ICU */
|
||||||
+
|
+
|
||||||
+#include "js/LocaleSensitive.h"
|
+#include "js/LocaleSensitive.h"
|
||||||
|
|
@ -154,7 +156,7 @@ index 514a4f2890a20558afe0d9c1aec697612fc8e873..44b48f306cb6c67264edbb2eaa49c890
|
||||||
#include "mozilla/ArrayUtils.h"
|
#include "mozilla/ArrayUtils.h"
|
||||||
#include "mozilla/Attributes.h"
|
#include "mozilla/Attributes.h"
|
||||||
#include "mozilla/AutoRestore.h"
|
#include "mozilla/AutoRestore.h"
|
||||||
@@ -53,6 +59,7 @@
|
@@ -53,6 +61,7 @@
|
||||||
#include "mozilla/dom/ContentFrameMessageManager.h"
|
#include "mozilla/dom/ContentFrameMessageManager.h"
|
||||||
#include "mozilla/dom/DocGroup.h"
|
#include "mozilla/dom/DocGroup.h"
|
||||||
#include "mozilla/dom/Element.h"
|
#include "mozilla/dom/Element.h"
|
||||||
|
|
@ -162,7 +164,7 @@ index 514a4f2890a20558afe0d9c1aec697612fc8e873..44b48f306cb6c67264edbb2eaa49c890
|
||||||
#include "mozilla/dom/HTMLAnchorElement.h"
|
#include "mozilla/dom/HTMLAnchorElement.h"
|
||||||
#include "mozilla/dom/PerformanceNavigation.h"
|
#include "mozilla/dom/PerformanceNavigation.h"
|
||||||
#include "mozilla/dom/PermissionMessageUtils.h"
|
#include "mozilla/dom/PermissionMessageUtils.h"
|
||||||
@@ -71,6 +78,7 @@
|
@@ -71,6 +80,7 @@
|
||||||
#include "mozilla/dom/nsCSPContext.h"
|
#include "mozilla/dom/nsCSPContext.h"
|
||||||
#include "mozilla/dom/LoadURIOptionsBinding.h"
|
#include "mozilla/dom/LoadURIOptionsBinding.h"
|
||||||
#include "mozilla/dom/JSWindowActorChild.h"
|
#include "mozilla/dom/JSWindowActorChild.h"
|
||||||
|
|
@ -170,7 +172,7 @@ index 514a4f2890a20558afe0d9c1aec697612fc8e873..44b48f306cb6c67264edbb2eaa49c890
|
||||||
|
|
||||||
#include "mozilla/net/DocumentChannel.h"
|
#include "mozilla/net/DocumentChannel.h"
|
||||||
#include "mozilla/net/DocumentChannelChild.h"
|
#include "mozilla/net/DocumentChannelChild.h"
|
||||||
@@ -96,6 +104,7 @@
|
@@ -96,6 +106,7 @@
|
||||||
#include "nsIDocShellTreeItem.h"
|
#include "nsIDocShellTreeItem.h"
|
||||||
#include "nsIDocShellTreeOwner.h"
|
#include "nsIDocShellTreeOwner.h"
|
||||||
#include "mozilla/dom/Document.h"
|
#include "mozilla/dom/Document.h"
|
||||||
|
|
@ -178,7 +180,15 @@ index 514a4f2890a20558afe0d9c1aec697612fc8e873..44b48f306cb6c67264edbb2eaa49c890
|
||||||
#include "nsIDocumentLoaderFactory.h"
|
#include "nsIDocumentLoaderFactory.h"
|
||||||
#include "nsIDOMWindow.h"
|
#include "nsIDOMWindow.h"
|
||||||
#include "nsIEditingSession.h"
|
#include "nsIEditingSession.h"
|
||||||
@@ -350,6 +359,9 @@ nsDocShell::nsDocShell(BrowsingContext* aBrowsingContext,
|
@@ -183,6 +194,7 @@
|
||||||
|
#include "nsGlobalWindow.h"
|
||||||
|
#include "nsISearchService.h"
|
||||||
|
#include "nsJSEnvironment.h"
|
||||||
|
+#include "nsJSUtils.h"
|
||||||
|
#include "nsNetCID.h"
|
||||||
|
#include "nsNetUtil.h"
|
||||||
|
#include "nsObjectLoadingContent.h"
|
||||||
|
@@ -350,6 +362,9 @@ nsDocShell::nsDocShell(BrowsingContext* aBrowsingContext,
|
||||||
mUseErrorPages(false),
|
mUseErrorPages(false),
|
||||||
mObserveErrorPages(true),
|
mObserveErrorPages(true),
|
||||||
mCSSErrorReportingEnabled(false),
|
mCSSErrorReportingEnabled(false),
|
||||||
|
|
@ -188,7 +198,7 @@ index 514a4f2890a20558afe0d9c1aec697612fc8e873..44b48f306cb6c67264edbb2eaa49c890
|
||||||
mAllowAuth(mItemType == typeContent),
|
mAllowAuth(mItemType == typeContent),
|
||||||
mAllowKeywordFixup(false),
|
mAllowKeywordFixup(false),
|
||||||
mIsOffScreenBrowser(false),
|
mIsOffScreenBrowser(false),
|
||||||
@@ -1219,6 +1231,7 @@ bool nsDocShell::SetCurrentURI(nsIURI* aURI, nsIRequest* aRequest,
|
@@ -1219,6 +1234,7 @@ bool nsDocShell::SetCurrentURI(nsIURI* aURI, nsIRequest* aRequest,
|
||||||
isSubFrame = mLSHE->GetIsSubFrame();
|
isSubFrame = mLSHE->GetIsSubFrame();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -196,7 +206,7 @@ index 514a4f2890a20558afe0d9c1aec697612fc8e873..44b48f306cb6c67264edbb2eaa49c890
|
||||||
if (!isSubFrame && !isRoot) {
|
if (!isSubFrame && !isRoot) {
|
||||||
/*
|
/*
|
||||||
* We don't want to send OnLocationChange notifications when
|
* We don't want to send OnLocationChange notifications when
|
||||||
@@ -3340,6 +3353,131 @@ nsDocShell::GetMessageManager(ContentFrameMessageManager** aMessageManager) {
|
@@ -3340,6 +3356,162 @@ nsDocShell::GetMessageManager(ContentFrameMessageManager** aMessageManager) {
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -262,6 +272,37 @@ index 514a4f2890a20558afe0d9c1aec697612fc8e873..44b48f306cb6c67264edbb2eaa49c890
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+NS_IMETHODIMP
|
+NS_IMETHODIMP
|
||||||
|
+nsDocShell::OverrideTimezone(const nsAString& aTimezoneOverride, bool* aSuccess) {
|
||||||
|
+ NS_ENSURE_ARG(aSuccess);
|
||||||
|
+
|
||||||
|
+ // Validate timezone id.
|
||||||
|
+ UniquePtr<icu::TimeZone> timezone(icu::TimeZone::createTimeZone(
|
||||||
|
+ icu::UnicodeString(NS_LossyConvertUTF16toASCII(aTimezoneOverride).get(), -1, US_INV)));
|
||||||
|
+ if (!timezone || *timezone == icu::TimeZone::getUnknown()) {
|
||||||
|
+ fprintf(stderr, "Invalid timezone id: %s\n", NS_LossyConvertUTF16toASCII(aTimezoneOverride).get());
|
||||||
|
+ *aSuccess = false;
|
||||||
|
+ return NS_OK;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ // The env variable is read by js::DateTimeInfo::internalResyncICUDefaultTimeZone()
|
||||||
|
+ auto setTimeZoneEnv = [](const char* value) {
|
||||||
|
+#if defined(_WIN32)
|
||||||
|
+ return _putenv_s("TZ", value) == 0;
|
||||||
|
+#else
|
||||||
|
+ return setenv("TZ", value, true) == 0;
|
||||||
|
+#endif /* _WIN32 */
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ *aSuccess = setTimeZoneEnv(NS_LossyConvertUTF16toASCII(aTimezoneOverride).get());
|
||||||
|
+ if (*aSuccess) {
|
||||||
|
+ nsJSUtils::ResetTimeZone();
|
||||||
|
+ } else {
|
||||||
|
+ fprintf(stderr, "Failed to change timezone to '%s'\n", NS_LossyConvertUTF16toASCII(aTimezoneOverride).get());
|
||||||
|
+ }
|
||||||
|
+ return NS_OK;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+NS_IMETHODIMP
|
||||||
+nsDocShell::GetFileInputInterceptionEnabled(bool* aEnabled) {
|
+nsDocShell::GetFileInputInterceptionEnabled(bool* aEnabled) {
|
||||||
+ MOZ_ASSERT(aEnabled);
|
+ MOZ_ASSERT(aEnabled);
|
||||||
+ *aEnabled = GetRootDocShell()->mFileInputInterceptionEnabled;
|
+ *aEnabled = GetRootDocShell()->mFileInputInterceptionEnabled;
|
||||||
|
|
@ -328,7 +369,7 @@ index 514a4f2890a20558afe0d9c1aec697612fc8e873..44b48f306cb6c67264edbb2eaa49c890
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsDocShell::GetIsNavigating(bool* aOut) {
|
nsDocShell::GetIsNavigating(bool* aOut) {
|
||||||
*aOut = mIsNavigating;
|
*aOut = mIsNavigating;
|
||||||
@@ -12137,6 +12275,9 @@ class OnLinkClickEvent : public Runnable {
|
@@ -12137,6 +12309,9 @@ class OnLinkClickEvent : public Runnable {
|
||||||
mNoOpenerImplied, nullptr, nullptr,
|
mNoOpenerImplied, nullptr, nullptr,
|
||||||
mIsUserTriggered, mTriggeringPrincipal, mCsp);
|
mIsUserTriggered, mTriggeringPrincipal, mCsp);
|
||||||
}
|
}
|
||||||
|
|
@ -338,7 +379,7 @@ index 514a4f2890a20558afe0d9c1aec697612fc8e873..44b48f306cb6c67264edbb2eaa49c890
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -12226,6 +12367,9 @@ nsresult nsDocShell::OnLinkClick(
|
@@ -12226,6 +12401,9 @@ nsresult nsDocShell::OnLinkClick(
|
||||||
this, aContent, aURI, target, aFileName, aPostDataStream,
|
this, aContent, aURI, target, aFileName, aPostDataStream,
|
||||||
aHeadersDataStream, noOpenerImplied, aIsUserTriggered, aIsTrusted,
|
aHeadersDataStream, noOpenerImplied, aIsUserTriggered, aIsTrusted,
|
||||||
aTriggeringPrincipal, aCsp);
|
aTriggeringPrincipal, aCsp);
|
||||||
|
|
@ -405,7 +446,7 @@ index cc88045201371eb2195a28c60fcd3b6d940e8b72..7fad3529cc7a22b0b2aa8d8cb5ebbb58
|
||||||
bool mAllowKeywordFixup : 1;
|
bool mAllowKeywordFixup : 1;
|
||||||
bool mIsOffScreenBrowser : 1;
|
bool mIsOffScreenBrowser : 1;
|
||||||
diff --git a/docshell/base/nsIDocShell.idl b/docshell/base/nsIDocShell.idl
|
diff --git a/docshell/base/nsIDocShell.idl b/docshell/base/nsIDocShell.idl
|
||||||
index ee89208c3ada6da09ecda6147e1a372ee0562810..83a70dd59a22abd391f9b2db99837e3e5851db31 100644
|
index ee89208c3ada6da09ecda6147e1a372ee0562810..ce8d31365b5190ac2c974100a6ec6408c53681d5 100644
|
||||||
--- a/docshell/base/nsIDocShell.idl
|
--- a/docshell/base/nsIDocShell.idl
|
||||||
+++ b/docshell/base/nsIDocShell.idl
|
+++ b/docshell/base/nsIDocShell.idl
|
||||||
@@ -44,6 +44,7 @@ interface nsIURI;
|
@@ -44,6 +44,7 @@ interface nsIURI;
|
||||||
|
|
@ -416,7 +457,7 @@ index ee89208c3ada6da09ecda6147e1a372ee0562810..83a70dd59a22abd391f9b2db99837e3e
|
||||||
interface nsIDocShellLoadInfo;
|
interface nsIDocShellLoadInfo;
|
||||||
interface nsIEditor;
|
interface nsIEditor;
|
||||||
interface nsIEditingSession;
|
interface nsIEditingSession;
|
||||||
@@ -1129,4 +1130,19 @@ interface nsIDocShell : nsIDocShellTreeItem
|
@@ -1129,4 +1130,21 @@ interface nsIDocShell : nsIDocShellTreeItem
|
||||||
* @see nsISHEntry synchronizeLayoutHistoryState().
|
* @see nsISHEntry synchronizeLayoutHistoryState().
|
||||||
*/
|
*/
|
||||||
void synchronizeLayoutHistoryState();
|
void synchronizeLayoutHistoryState();
|
||||||
|
|
@ -427,6 +468,8 @@ index ee89208c3ada6da09ecda6147e1a372ee0562810..83a70dd59a22abd391f9b2db99837e3e
|
||||||
+
|
+
|
||||||
+ attribute AString languageOverride;
|
+ attribute AString languageOverride;
|
||||||
+
|
+
|
||||||
|
+ boolean overrideTimezone(in AString timezoneId);
|
||||||
|
+
|
||||||
+ cenum OnlineOverride: 8 {
|
+ cenum OnlineOverride: 8 {
|
||||||
+ ONLINE_OVERRIDE_NONE = 0,
|
+ ONLINE_OVERRIDE_NONE = 0,
|
||||||
+ ONLINE_OVERRIDE_ONLINE = 1,
|
+ ONLINE_OVERRIDE_ONLINE = 1,
|
||||||
|
|
@ -1953,10 +1996,10 @@ index 0000000000000000000000000000000000000000..ba34976ad05e7f5f1a99777f76ac08b1
|
||||||
+this.SimpleChannel = SimpleChannel;
|
+this.SimpleChannel = SimpleChannel;
|
||||||
diff --git a/juggler/TargetRegistry.js b/juggler/TargetRegistry.js
|
diff --git a/juggler/TargetRegistry.js b/juggler/TargetRegistry.js
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..98d00f70a61787e31c5ae58310fd86312f3d0dcf
|
index 0000000000000000000000000000000000000000..dcf03385589acc29c7fe0f02f912d40ab7efb76f
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/juggler/TargetRegistry.js
|
+++ b/juggler/TargetRegistry.js
|
||||||
@@ -0,0 +1,471 @@
|
@@ -0,0 +1,479 @@
|
||||||
+const {EventEmitter} = ChromeUtils.import('resource://gre/modules/EventEmitter.jsm');
|
+const {EventEmitter} = ChromeUtils.import('resource://gre/modules/EventEmitter.jsm');
|
||||||
+const {Helper} = ChromeUtils.import('chrome://juggler/content/Helper.js');
|
+const {Helper} = ChromeUtils.import('chrome://juggler/content/Helper.js');
|
||||||
+const {SimpleChannel} = ChromeUtils.import('chrome://juggler/content/SimpleChannel.js');
|
+const {SimpleChannel} = ChromeUtils.import('chrome://juggler/content/SimpleChannel.js');
|
||||||
|
|
@ -2048,6 +2091,10 @@ index 0000000000000000000000000000000000000000..98d00f70a61787e31c5ae58310fd8631
|
||||||
+ this._mainWindow.gBrowser.selectedTab = tab;
|
+ this._mainWindow.gBrowser.selectedTab = tab;
|
||||||
+ const target = this._tabToTarget.get(tab);
|
+ const target = this._tabToTarget.get(tab);
|
||||||
+ await target._contentReadyPromise;
|
+ await target._contentReadyPromise;
|
||||||
|
+ if (browserContext.options.timezoneId) {
|
||||||
|
+ if (await target.hasFailedToOverrideTimezone())
|
||||||
|
+ throw new Error('Failed to override timezone');
|
||||||
|
+ }
|
||||||
+ return target.id();
|
+ return target.id();
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
|
@ -2249,6 +2296,10 @@ index 0000000000000000000000000000000000000000..98d00f70a61787e31c5ae58310fd8631
|
||||||
+ await this._channel.connect('').send('setOnlineOverride', override).catch(e => void e);
|
+ await this._channel.connect('').send('setOnlineOverride', override).catch(e => void e);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
+ async hasFailedToOverrideTimezone() {
|
||||||
|
+ return await this._channel.connect('').send('hasFailedToOverrideTimezone').catch(e => true);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
+ dispose() {
|
+ dispose() {
|
||||||
+ this._disposed = true;
|
+ this._disposed = true;
|
||||||
+ if (this._browserContext)
|
+ if (this._browserContext)
|
||||||
|
|
@ -4840,10 +4891,10 @@ index 0000000000000000000000000000000000000000..3a386425d3796d0a6786dea193b3402d
|
||||||
+
|
+
|
||||||
diff --git a/juggler/content/main.js b/juggler/content/main.js
|
diff --git a/juggler/content/main.js b/juggler/content/main.js
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..b1f66264a97a0ca24fe29fb8a04e3ea2f5ec9eeb
|
index 0000000000000000000000000000000000000000..1864328a47107621309c9b3726bb84535b780c2f
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/juggler/content/main.js
|
+++ b/juggler/content/main.js
|
||||||
@@ -0,0 +1,146 @@
|
@@ -0,0 +1,153 @@
|
||||||
+const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
|
+const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
|
||||||
+const {Helper} = ChromeUtils.import('chrome://juggler/content/Helper.js');
|
+const {Helper} = ChromeUtils.import('chrome://juggler/content/Helper.js');
|
||||||
+const {FrameTree} = ChromeUtils.import('chrome://juggler/content/content/FrameTree.js');
|
+const {FrameTree} = ChromeUtils.import('chrome://juggler/content/content/FrameTree.js');
|
||||||
|
|
@ -4908,8 +4959,11 @@ index 0000000000000000000000000000000000000000..b1f66264a97a0ca24fe29fb8a04e3ea2
|
||||||
+ response = { sessionIds: [], browserContextOptions: {}, waitForInitialNavigation: false };
|
+ response = { sessionIds: [], browserContextOptions: {}, waitForInitialNavigation: false };
|
||||||
+
|
+
|
||||||
+ const { sessionIds, browserContextOptions, waitForInitialNavigation } = response;
|
+ const { sessionIds, browserContextOptions, waitForInitialNavigation } = response;
|
||||||
+ const { userAgent, bypassCSP, javaScriptDisabled, viewport, scriptsToEvaluateOnNewDocument, bindings, locale, geolocation, onlineOverride } = browserContextOptions;
|
+ const { userAgent, bypassCSP, javaScriptDisabled, viewport, scriptsToEvaluateOnNewDocument, bindings, locale, timezoneId, geolocation, onlineOverride } = browserContextOptions;
|
||||||
+
|
+
|
||||||
|
+ let failedToOverrideTimezone = false;
|
||||||
|
+ if (timezoneId)
|
||||||
|
+ failedToOverrideTimezone = !docShell.overrideTimezone(timezoneId);
|
||||||
+ if (userAgent !== undefined)
|
+ if (userAgent !== undefined)
|
||||||
+ docShell.browsingContext.customUserAgent = userAgent;
|
+ docShell.browsingContext.customUserAgent = userAgent;
|
||||||
+ if (bypassCSP !== undefined)
|
+ if (bypassCSP !== undefined)
|
||||||
|
|
@ -4970,6 +5024,10 @@ index 0000000000000000000000000000000000000000..b1f66264a97a0ca24fe29fb8a04e3ea2
|
||||||
+ // noop, just a rountrip.
|
+ // noop, just a rountrip.
|
||||||
+ },
|
+ },
|
||||||
+
|
+
|
||||||
|
+ hasFailedToOverrideTimezone() {
|
||||||
|
+ return failedToOverrideTimezone;
|
||||||
|
+ },
|
||||||
|
+
|
||||||
+ dispose() {
|
+ dispose() {
|
||||||
+ },
|
+ },
|
||||||
+ });
|
+ });
|
||||||
|
|
@ -6075,10 +6133,10 @@ index 0000000000000000000000000000000000000000..78b6601b91d0b7fcda61114e6846aa07
|
||||||
+this.EXPORTED_SYMBOLS = ['t', 'checkScheme'];
|
+this.EXPORTED_SYMBOLS = ['t', 'checkScheme'];
|
||||||
diff --git a/juggler/protocol/Protocol.js b/juggler/protocol/Protocol.js
|
diff --git a/juggler/protocol/Protocol.js b/juggler/protocol/Protocol.js
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..67df4d5592d66e0db3c7c120ad12f9b360b9c45d
|
index 0000000000000000000000000000000000000000..4028ed2f4c87e869da15103e936f85e887d769a1
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/juggler/protocol/Protocol.js
|
+++ b/juggler/protocol/Protocol.js
|
||||||
@@ -0,0 +1,778 @@
|
@@ -0,0 +1,779 @@
|
||||||
+const {t, checkScheme} = ChromeUtils.import('chrome://juggler/content/protocol/PrimitiveTypes.js');
|
+const {t, checkScheme} = ChromeUtils.import('chrome://juggler/content/protocol/PrimitiveTypes.js');
|
||||||
+
|
+
|
||||||
+// Protocol-specific types.
|
+// Protocol-specific types.
|
||||||
|
|
@ -6294,6 +6352,7 @@ index 0000000000000000000000000000000000000000..67df4d5592d66e0db3c7c120ad12f9b3
|
||||||
+ javaScriptDisabled: t.Optional(t.Boolean),
|
+ javaScriptDisabled: t.Optional(t.Boolean),
|
||||||
+ viewport: t.Optional(pageTypes.Viewport),
|
+ viewport: t.Optional(pageTypes.Viewport),
|
||||||
+ locale: t.Optional(t.String),
|
+ locale: t.Optional(t.String),
|
||||||
|
+ timezoneId: t.Optional(t.String),
|
||||||
+ },
|
+ },
|
||||||
+ returns: {
|
+ returns: {
|
||||||
+ browserContextId: t.String,
|
+ browserContextId: t.String,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue