forked from mirrors/gecko-dev
Bug 1816918 - pass ClientInfo via IPC while creating webtransport session. r=necko-reviewers,jesup
Differential Revision: https://phabricator.services.mozilla.com/D173115
This commit is contained in:
parent
8dfe19eac9
commit
a35b81e828
15 changed files with 76 additions and 20 deletions
|
|
@ -147,6 +147,7 @@ inline const char* NS_CP_ContentTypeName(nsContentPolicyType contentType) {
|
||||||
CASE_RETURN(TYPE_INTERNAL_WORKER_STATIC_MODULE);
|
CASE_RETURN(TYPE_INTERNAL_WORKER_STATIC_MODULE);
|
||||||
CASE_RETURN(TYPE_PROXIED_WEBRTC_MEDIA);
|
CASE_RETURN(TYPE_PROXIED_WEBRTC_MEDIA);
|
||||||
CASE_RETURN(TYPE_WEB_IDENTITY);
|
CASE_RETURN(TYPE_WEB_IDENTITY);
|
||||||
|
CASE_RETURN(TYPE_WEB_TRANSPORT);
|
||||||
CASE_RETURN(TYPE_END);
|
CASE_RETURN(TYPE_END);
|
||||||
case nsIContentPolicy::TYPE_INVALID:
|
case nsIContentPolicy::TYPE_INVALID:
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -438,13 +438,18 @@ interface nsIContentPolicy : nsISupports
|
||||||
*/
|
*/
|
||||||
TYPE_INTERNAL_WORKER_STATIC_MODULE = 58,
|
TYPE_INTERNAL_WORKER_STATIC_MODULE = 58,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indicates Webtransport request
|
||||||
|
*/
|
||||||
|
TYPE_WEB_TRANSPORT = 59,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used to indicate the end of this list, not a content policy. If you want
|
* Used to indicate the end of this list, not a content policy. If you want
|
||||||
* to add a new content policy type, place it before this sentinel value
|
* to add a new content policy type, place it before this sentinel value
|
||||||
* TYPE_END, have it use TYPE_END's current value, and increment TYPE_END by
|
* TYPE_END, have it use TYPE_END's current value, and increment TYPE_END by
|
||||||
* one. (TYPE_END should always have the highest numerical value.)
|
* one. (TYPE_END should always have the highest numerical value.)
|
||||||
*/
|
*/
|
||||||
TYPE_END = 59,
|
TYPE_END = 60,
|
||||||
|
|
||||||
|
|
||||||
/* When adding new content types, please update
|
/* When adding new content types, please update
|
||||||
|
|
|
||||||
3
dom/cache/DBSchema.cpp
vendored
3
dom/cache/DBSchema.cpp
vendored
|
|
@ -344,7 +344,8 @@ static_assert(
|
||||||
nsIContentPolicy::TYPE_UA_FONT == 55 &&
|
nsIContentPolicy::TYPE_UA_FONT == 55 &&
|
||||||
nsIContentPolicy::TYPE_WEB_IDENTITY == 57 &&
|
nsIContentPolicy::TYPE_WEB_IDENTITY == 57 &&
|
||||||
nsIContentPolicy::TYPE_INTERNAL_WORKER_STATIC_MODULE == 58 &&
|
nsIContentPolicy::TYPE_INTERNAL_WORKER_STATIC_MODULE == 58 &&
|
||||||
nsIContentPolicy::TYPE_END == 59,
|
nsIContentPolicy::TYPE_WEB_TRANSPORT == 59 &&
|
||||||
|
nsIContentPolicy::TYPE_END == 60,
|
||||||
"nsContentPolicyType values are as expected");
|
"nsContentPolicyType values are as expected");
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
|
||||||
|
|
@ -347,6 +347,8 @@ RequestDestination InternalRequest::MapContentPolicyTypeToRequestDestination(
|
||||||
return RequestDestination::_empty;
|
return RequestDestination::_empty;
|
||||||
case nsIContentPolicy::TYPE_WEB_IDENTITY:
|
case nsIContentPolicy::TYPE_WEB_IDENTITY:
|
||||||
return RequestDestination::_empty;
|
return RequestDestination::_empty;
|
||||||
|
case nsIContentPolicy::TYPE_WEB_TRANSPORT:
|
||||||
|
return RequestDestination::_empty;
|
||||||
case nsIContentPolicy::TYPE_INVALID:
|
case nsIContentPolicy::TYPE_INVALID:
|
||||||
case nsIContentPolicy::TYPE_END:
|
case nsIContentPolicy::TYPE_END:
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -109,6 +109,8 @@ nsCString MapInternalContentPolicyTypeToDest(nsContentPolicyType aType) {
|
||||||
return "empty"_ns;
|
return "empty"_ns;
|
||||||
case nsIContentPolicy::TYPE_WEB_IDENTITY:
|
case nsIContentPolicy::TYPE_WEB_IDENTITY:
|
||||||
return "webidentity"_ns;
|
return "webidentity"_ns;
|
||||||
|
case nsIContentPolicy::TYPE_WEB_TRANSPORT:
|
||||||
|
return "webtransport"_ns;
|
||||||
case nsIContentPolicy::TYPE_END:
|
case nsIContentPolicy::TYPE_END:
|
||||||
case nsIContentPolicy::TYPE_INVALID:
|
case nsIContentPolicy::TYPE_INVALID:
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -323,6 +323,7 @@ CSPDirective CSP_ContentTypeToDirective(nsContentPolicyType aType) {
|
||||||
case nsIContentPolicy::TYPE_INTERNAL_EVENTSOURCE:
|
case nsIContentPolicy::TYPE_INTERNAL_EVENTSOURCE:
|
||||||
case nsIContentPolicy::TYPE_INTERNAL_FETCH_PRELOAD:
|
case nsIContentPolicy::TYPE_INTERNAL_FETCH_PRELOAD:
|
||||||
case nsIContentPolicy::TYPE_WEB_IDENTITY:
|
case nsIContentPolicy::TYPE_WEB_IDENTITY:
|
||||||
|
case nsIContentPolicy::TYPE_WEB_TRANSPORT:
|
||||||
return nsIContentSecurityPolicy::CONNECT_SRC_DIRECTIVE;
|
return nsIContentSecurityPolicy::CONNECT_SRC_DIRECTIVE;
|
||||||
|
|
||||||
case nsIContentPolicy::TYPE_OBJECT:
|
case nsIContentPolicy::TYPE_OBJECT:
|
||||||
|
|
|
||||||
|
|
@ -244,6 +244,11 @@ void WebTransport::Init(const GlobalObject& aGlobal, const nsAString& aURL,
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsIPrincipal> principal = mGlobal->PrincipalOrNull();
|
nsCOMPtr<nsIPrincipal> principal = mGlobal->PrincipalOrNull();
|
||||||
|
mozilla::Maybe<IPCClientInfo> ipcClientInfo;
|
||||||
|
|
||||||
|
if (mGlobal->GetClientInfo().isSome()) {
|
||||||
|
ipcClientInfo = mozilla::Some(mGlobal->GetClientInfo().ref().ToIPC());
|
||||||
|
}
|
||||||
// Create a new IPC connection
|
// Create a new IPC connection
|
||||||
Endpoint<PWebTransportParent> parentEndpoint;
|
Endpoint<PWebTransportParent> parentEndpoint;
|
||||||
Endpoint<PWebTransportChild> childEndpoint;
|
Endpoint<PWebTransportChild> childEndpoint;
|
||||||
|
|
@ -321,7 +326,7 @@ void WebTransport::Init(const GlobalObject& aGlobal, const nsAString& aURL,
|
||||||
|
|
||||||
// https://w3c.github.io/webtransport/#webtransport-constructor Spec 5.2
|
// https://w3c.github.io/webtransport/#webtransport-constructor Spec 5.2
|
||||||
backgroundChild
|
backgroundChild
|
||||||
->SendCreateWebTransportParent(aURL, principal, dedicated,
|
->SendCreateWebTransportParent(aURL, principal, ipcClientInfo, dedicated,
|
||||||
requireUnreliable,
|
requireUnreliable,
|
||||||
(uint32_t)congestionControl,
|
(uint32_t)congestionControl,
|
||||||
// XXX serverCertHashes,
|
// XXX serverCertHashes,
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
#include "mozilla/StaticPrefs_network.h"
|
#include "mozilla/StaticPrefs_network.h"
|
||||||
#include "mozilla/TimeStamp.h"
|
#include "mozilla/TimeStamp.h"
|
||||||
#include "mozilla/Unused.h"
|
#include "mozilla/Unused.h"
|
||||||
|
#include "mozilla/dom/ClientInfo.h"
|
||||||
#include "mozilla/dom/WebTransportBinding.h"
|
#include "mozilla/dom/WebTransportBinding.h"
|
||||||
#include "mozilla/dom/WebTransportLog.h"
|
#include "mozilla/dom/WebTransportLog.h"
|
||||||
#include "mozilla/ipc/BackgroundParent.h"
|
#include "mozilla/ipc/BackgroundParent.h"
|
||||||
|
|
@ -32,7 +33,8 @@ WebTransportParent::~WebTransportParent() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebTransportParent::Create(
|
void WebTransportParent::Create(
|
||||||
const nsAString& aURL, nsIPrincipal* aPrincipal, const bool& aDedicated,
|
const nsAString& aURL, nsIPrincipal* aPrincipal,
|
||||||
|
const mozilla::Maybe<IPCClientInfo>& aClientInfo, const bool& aDedicated,
|
||||||
const bool& aRequireUnreliable, const uint32_t& aCongestionControl,
|
const bool& aRequireUnreliable, const uint32_t& aCongestionControl,
|
||||||
// Sequence<WebTransportHash>* aServerCertHashes,
|
// Sequence<WebTransportHash>* aServerCertHashes,
|
||||||
Endpoint<PWebTransportParent>&& aParentEndpoint,
|
Endpoint<PWebTransportParent>&& aParentEndpoint,
|
||||||
|
|
@ -88,10 +90,11 @@ void WebTransportParent::Create(
|
||||||
"WebTransport AsyncConnect",
|
"WebTransport AsyncConnect",
|
||||||
[self = RefPtr{this}, uri = std::move(uri),
|
[self = RefPtr{this}, uri = std::move(uri),
|
||||||
principal = RefPtr{aPrincipal},
|
principal = RefPtr{aPrincipal},
|
||||||
flags = nsILoadInfo::SEC_ALLOW_CROSS_ORIGIN_SEC_CONTEXT_IS_NULL] {
|
flags = nsILoadInfo::SEC_ALLOW_CROSS_ORIGIN_SEC_CONTEXT_IS_NULL,
|
||||||
|
clientInfo = aClientInfo] {
|
||||||
LOG(("WebTransport %p AsyncConnect", self.get()));
|
LOG(("WebTransport %p AsyncConnect", self.get()));
|
||||||
if (NS_FAILED(self->mWebTransport->AsyncConnect(uri, principal, flags,
|
if (NS_FAILED(self->mWebTransport->AsyncConnectWithClient(
|
||||||
self))) {
|
uri, principal, flags, self, clientInfo))) {
|
||||||
LOG(("AsyncConnect failure; we should get OnSessionClosed"));
|
LOG(("AsyncConnect failure; we should get OnSessionClosed"));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
#define DOM_WEBTRANSPORT_PARENT_WEBTRANSPORTPARENT_H_
|
#define DOM_WEBTRANSPORT_PARENT_WEBTRANSPORTPARENT_H_
|
||||||
|
|
||||||
#include "ErrorList.h"
|
#include "ErrorList.h"
|
||||||
|
#include "mozilla/dom/ClientIPCTypes.h"
|
||||||
#include "mozilla/dom/FlippedOnce.h"
|
#include "mozilla/dom/FlippedOnce.h"
|
||||||
#include "mozilla/dom/PWebTransportParent.h"
|
#include "mozilla/dom/PWebTransportParent.h"
|
||||||
#include "mozilla/ipc/Endpoint.h"
|
#include "mozilla/ipc/Endpoint.h"
|
||||||
|
|
@ -31,6 +32,7 @@ class WebTransportParent : public PWebTransportParent,
|
||||||
NS_DECL_WEBTRANSPORTSESSIONEVENTLISTENER
|
NS_DECL_WEBTRANSPORTSESSIONEVENTLISTENER
|
||||||
|
|
||||||
void Create(const nsAString& aURL, nsIPrincipal* aPrincipal,
|
void Create(const nsAString& aURL, nsIPrincipal* aPrincipal,
|
||||||
|
const mozilla::Maybe<IPCClientInfo>& aClientInfo,
|
||||||
const bool& aDedicated, const bool& aRequireUnreliable,
|
const bool& aDedicated, const bool& aRequireUnreliable,
|
||||||
const uint32_t& aCongestionControl,
|
const uint32_t& aCongestionControl,
|
||||||
// Sequence<WebTransportHash>* aServerCertHashes,
|
// Sequence<WebTransportHash>* aServerCertHashes,
|
||||||
|
|
|
||||||
|
|
@ -490,7 +490,8 @@ mozilla::ipc::IPCResult BackgroundParentImpl::RecvCreateFileSystemManagerParent(
|
||||||
}
|
}
|
||||||
|
|
||||||
mozilla::ipc::IPCResult BackgroundParentImpl::RecvCreateWebTransportParent(
|
mozilla::ipc::IPCResult BackgroundParentImpl::RecvCreateWebTransportParent(
|
||||||
const nsAString& aURL, nsIPrincipal* aPrincipal, const bool& aDedicated,
|
const nsAString& aURL, nsIPrincipal* aPrincipal,
|
||||||
|
const mozilla::Maybe<IPCClientInfo>& aClientInfo, const bool& aDedicated,
|
||||||
const bool& aRequireUnreliable, const uint32_t& aCongestionControl,
|
const bool& aRequireUnreliable, const uint32_t& aCongestionControl,
|
||||||
// Sequence<WebTransportHash>* aServerCertHashes,
|
// Sequence<WebTransportHash>* aServerCertHashes,
|
||||||
Endpoint<PWebTransportParent>&& aParentEndpoint,
|
Endpoint<PWebTransportParent>&& aParentEndpoint,
|
||||||
|
|
@ -500,9 +501,10 @@ mozilla::ipc::IPCResult BackgroundParentImpl::RecvCreateWebTransportParent(
|
||||||
|
|
||||||
RefPtr<mozilla::dom::WebTransportParent> webt =
|
RefPtr<mozilla::dom::WebTransportParent> webt =
|
||||||
new mozilla::dom::WebTransportParent();
|
new mozilla::dom::WebTransportParent();
|
||||||
webt->Create(
|
webt->Create(aURL, aPrincipal, aClientInfo, aDedicated, aRequireUnreliable,
|
||||||
aURL, aPrincipal, aDedicated, aRequireUnreliable, aCongestionControl,
|
aCongestionControl,
|
||||||
/*aServerCertHashes, */ std::move(aParentEndpoint), std::move(aResolver));
|
/*aServerCertHashes, */ std::move(aParentEndpoint),
|
||||||
|
std::move(aResolver));
|
||||||
return IPC_OK();
|
return IPC_OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -136,7 +136,8 @@ class BackgroundParentImpl : public PBackgroundParent {
|
||||||
CreateFileSystemManagerParentResolver&& aResolver) override;
|
CreateFileSystemManagerParentResolver&& aResolver) override;
|
||||||
|
|
||||||
mozilla::ipc::IPCResult RecvCreateWebTransportParent(
|
mozilla::ipc::IPCResult RecvCreateWebTransportParent(
|
||||||
const nsAString& aURL, nsIPrincipal* aPrincipal, const bool& aDedicated,
|
const nsAString& aURL, nsIPrincipal* aPrincipal,
|
||||||
|
const mozilla::Maybe<IPCClientInfo>& aClientInfo, const bool& aDedicated,
|
||||||
const bool& aRequireUnreliable, const uint32_t& aCongestionControl,
|
const bool& aRequireUnreliable, const uint32_t& aCongestionControl,
|
||||||
// Sequence<WebTransportHash>* aServerCertHashes,
|
// Sequence<WebTransportHash>* aServerCertHashes,
|
||||||
Endpoint<PWebTransportParent>&& aParentEndpoint,
|
Endpoint<PWebTransportParent>&& aParentEndpoint,
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,7 @@ include protocol PWebSocketConnection;
|
||||||
include protocol PWebTransport;
|
include protocol PWebTransport;
|
||||||
include protocol PFetch;
|
include protocol PFetch;
|
||||||
|
|
||||||
|
include ClientIPCTypes;
|
||||||
include DOMTypes;
|
include DOMTypes;
|
||||||
include IPCBlob;
|
include IPCBlob;
|
||||||
include IPCServiceWorkerDescriptor;
|
include IPCServiceWorkerDescriptor;
|
||||||
|
|
@ -195,6 +196,7 @@ parent:
|
||||||
async CreateWebTransportParent(
|
async CreateWebTransportParent(
|
||||||
nsString aURL,
|
nsString aURL,
|
||||||
nullable nsIPrincipal aPrincipal,
|
nullable nsIPrincipal aPrincipal,
|
||||||
|
IPCClientInfo? aClientInfo,
|
||||||
bool aDedicated,
|
bool aDedicated,
|
||||||
bool aRequireUnreliable,
|
bool aRequireUnreliable,
|
||||||
uint32_t aCongestionControl,
|
uint32_t aCongestionControl,
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,14 @@ WebTransportSessionProxy::~WebTransportSessionProxy() {
|
||||||
nsresult WebTransportSessionProxy::AsyncConnect(
|
nsresult WebTransportSessionProxy::AsyncConnect(
|
||||||
nsIURI* aURI, nsIPrincipal* aPrincipal, uint32_t aSecurityFlags,
|
nsIURI* aURI, nsIPrincipal* aPrincipal, uint32_t aSecurityFlags,
|
||||||
WebTransportSessionEventListener* aListener) {
|
WebTransportSessionEventListener* aListener) {
|
||||||
|
return AsyncConnectWithClient(aURI, aPrincipal, aSecurityFlags, aListener,
|
||||||
|
Maybe<dom::ClientInfo>());
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult WebTransportSessionProxy::AsyncConnectWithClient(
|
||||||
|
nsIURI* aURI, nsIPrincipal* aPrincipal, uint32_t aSecurityFlags,
|
||||||
|
WebTransportSessionEventListener* aListener,
|
||||||
|
const Maybe<dom::ClientInfo>& aClientInfo) {
|
||||||
MOZ_ASSERT(NS_IsMainThread());
|
MOZ_ASSERT(NS_IsMainThread());
|
||||||
|
|
||||||
LOG(("WebTransportSessionProxy::AsyncConnect"));
|
LOG(("WebTransportSessionProxy::AsyncConnect"));
|
||||||
|
|
@ -81,12 +89,24 @@ nsresult WebTransportSessionProxy::AsyncConnect(
|
||||||
nsLoadFlags loadFlags = nsIRequest::LOAD_NORMAL |
|
nsLoadFlags loadFlags = nsIRequest::LOAD_NORMAL |
|
||||||
nsIRequest::LOAD_BYPASS_CACHE |
|
nsIRequest::LOAD_BYPASS_CACHE |
|
||||||
nsIRequest::INHIBIT_CACHING;
|
nsIRequest::INHIBIT_CACHING;
|
||||||
nsresult rv = NS_NewChannel(getter_AddRefs(mChannel), aURI, aPrincipal, flags,
|
nsresult rv = NS_ERROR_FAILURE;
|
||||||
nsContentPolicyType::TYPE_OTHER,
|
|
||||||
/* aCookieJarSettings */ nullptr,
|
if (aClientInfo.isSome()) {
|
||||||
/* aPerformanceStorage */ nullptr,
|
rv = NS_NewChannel(getter_AddRefs(mChannel), aURI, aPrincipal,
|
||||||
/* aLoadGroup */ nullptr,
|
aClientInfo.ref(), Maybe<dom::ServiceWorkerDescriptor>(),
|
||||||
/* aCallbacks */ this, loadFlags);
|
flags, nsContentPolicyType::TYPE_WEB_TRANSPORT,
|
||||||
|
/* aCookieJarSettings */ nullptr,
|
||||||
|
/* aPerformanceStorage */ nullptr,
|
||||||
|
/* aLoadGroup */ nullptr,
|
||||||
|
/* aCallbacks */ this, loadFlags);
|
||||||
|
} else {
|
||||||
|
rv = NS_NewChannel(getter_AddRefs(mChannel), aURI, aPrincipal, flags,
|
||||||
|
nsContentPolicyType::TYPE_WEB_TRANSPORT,
|
||||||
|
/* aCookieJarSettings */ nullptr,
|
||||||
|
/* aPerformanceStorage */ nullptr,
|
||||||
|
/* aLoadGroup */ nullptr,
|
||||||
|
/* aCallbacks */ this, loadFlags);
|
||||||
|
}
|
||||||
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,9 @@ interface nsIWebTransportSendStream;
|
||||||
interface nsIWebTransportReceiveStream;
|
interface nsIWebTransportReceiveStream;
|
||||||
|
|
||||||
%{C++
|
%{C++
|
||||||
|
namespace mozilla::dom {
|
||||||
|
class ClientInfo;
|
||||||
|
}
|
||||||
namespace mozilla::net {
|
namespace mozilla::net {
|
||||||
class Http3WebTransportSession;
|
class Http3WebTransportSession;
|
||||||
class Http3WebTransportStream;
|
class Http3WebTransportStream;
|
||||||
|
|
@ -23,6 +26,7 @@ class Http3WebTransportStream;
|
||||||
[ptr] native Http3WebTransportSessionPtr(mozilla::net::Http3WebTransportSession);
|
[ptr] native Http3WebTransportSessionPtr(mozilla::net::Http3WebTransportSession);
|
||||||
[ptr] native Http3WebTransportStreamPtr(mozilla::net::Http3WebTransportStream);
|
[ptr] native Http3WebTransportStreamPtr(mozilla::net::Http3WebTransportStream);
|
||||||
native Datagram(nsTArray<uint8_t>&&);
|
native Datagram(nsTArray<uint8_t>&&);
|
||||||
|
[ref] native const_MaybeClientInfoRef(const mozilla::Maybe<mozilla::dom::ClientInfo>);
|
||||||
|
|
||||||
[builtinclass, scriptable, uuid(c20d6e77-8cb1-4838-a88d-fff826080aa3)]
|
[builtinclass, scriptable, uuid(c20d6e77-8cb1-4838-a88d-fff826080aa3)]
|
||||||
interface nsIWebTransport : nsISupports {
|
interface nsIWebTransport : nsISupports {
|
||||||
|
|
@ -36,6 +40,13 @@ interface nsIWebTransport : nsISupports {
|
||||||
in nsIPrincipal aLoadingPrincipal,
|
in nsIPrincipal aLoadingPrincipal,
|
||||||
in unsigned long aSecurityFlags,
|
in unsigned long aSecurityFlags,
|
||||||
in WebTransportSessionEventListener aListener);
|
in WebTransportSessionEventListener aListener);
|
||||||
|
|
||||||
|
void asyncConnectWithClient(in nsIURI aURI,
|
||||||
|
in nsIPrincipal aLoadingPrincipal,
|
||||||
|
in unsigned long aSecurityFlags,
|
||||||
|
in WebTransportSessionEventListener aListener,
|
||||||
|
in const_MaybeClientInfoRef aClientInfo);
|
||||||
|
|
||||||
// Asynchronously get states.
|
// Asynchronously get states.
|
||||||
void getStats();
|
void getStats();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,5 +2,3 @@
|
||||||
expected:
|
expected:
|
||||||
if (os == "android"): [OK, TIMEOUT]
|
if (os == "android"): [OK, TIMEOUT]
|
||||||
[OK]
|
[OK]
|
||||||
[WebTransport connection should fail when CSP connect-src is set to none and reject the promises]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue