Backed out 3 changesets (bug 1697421) for causing mochitest failures on test_webassembly_compile.html. CLOSED TREE

Backed out changeset 65d4f5822383 (bug 1697421)
Backed out changeset cda8626f9ccc (bug 1697421)
Backed out changeset fe6151585dec (bug 1697421)
This commit is contained in:
Iulian Moraru 2022-09-16 01:19:21 +03:00
parent 8b1a8bcc9b
commit d8b071ca4d
17 changed files with 8109 additions and 265 deletions

View File

@ -21,7 +21,6 @@
#include "nsProxyRelease.h"
#include "mozilla/ErrorResult.h"
#include "mozilla/dom/MimeType.h"
#include "mozilla/dom/BindingDeclarations.h"
#include "mozilla/dom/BodyConsumer.h"
#include "mozilla/dom/Exceptions.h"
@ -1260,40 +1259,20 @@ template already_AddRefed<Promise> FetchBody<EmptyBody>::ConsumeBody(
template <class Derived>
void FetchBody<Derived>::GetMimeType(nsACString& aMimeType,
nsACString& aMixedCaseMimeType) {
// Extract mime type.
ErrorResult result;
nsAutoCString contentTypeValues, contentTypeUtf8;
nsCString contentTypeValues;
MOZ_ASSERT(DerivedClass()->GetInternalHeaders());
DerivedClass()->GetInternalHeaders()->Get("Content-Type"_ns,
contentTypeValues, result);
MOZ_ALWAYS_TRUE(!result.Failed());
nsCCharSeparatedTokenizer contentTypeTokens(contentTypeValues, ',');
// currently we extract the MIME-type from the first content type header
// In order to fully comply with the fetch spec we must be able to
// parse multiple content-type headers and extrace headers from it
// To achieve this we need to modify CMimeType::Parse and implement the
// algorithm https://fetch.spec.whatwg.org/#concept-header-extract-mime-type
// This issue is tracked by
// https://bugzilla.mozilla.org/show_bug.cgi?id=1510180
auto contentStr = contentTypeTokens.nextToken();
CopyLatin1toUTF8(contentStr, contentTypeUtf8);
UniquePtr<CMimeType> contentTypeRecord = CMimeType::Parse(contentTypeUtf8);
if (contentTypeRecord) {
contentTypeRecord->Serialize(aMixedCaseMimeType);
// validate invalid/empty parameter checks
// according to https://mimesniff.spec.whatwg.org/#parsing-a-mime-type
// CMimeType::Parse parses the parameters and discards ill-formed parameters
// If we have invalid/illformed paramters we need to discard the parsed
// mime-type
if (contentStr.Contains(';') && !aMixedCaseMimeType.Contains(';')) {
// parameters were discarded after parsing.
// This should result in invalid MimeType
aMixedCaseMimeType = "";
}
aMimeType = aMixedCaseMimeType;
// HTTP ABNF states Content-Type may have only one value.
// This is from the "parse a header value" of the fetch spec.
if (!contentTypeValues.IsVoid() && contentTypeValues.Find(",") == -1) {
// Convert from a bytestring to a UTF8 CString.
CopyLatin1toUTF8(contentTypeValues, aMimeType);
aMixedCaseMimeType = aMimeType;
ToLowerCase(aMimeType);
}
}

View File

@ -437,15 +437,15 @@ void InternalHeaders::Fill(const Record<nsCString, nsCString>& aInit,
namespace {
class FillOriginalResponseHeaders final : public nsIHttpHeaderVisitor {
class FillHeaders final : public nsIHttpHeaderVisitor {
RefPtr<InternalHeaders> mInternalHeaders;
~FillOriginalResponseHeaders() = default;
~FillHeaders() = default;
public:
NS_DECL_ISUPPORTS
explicit FillOriginalResponseHeaders(InternalHeaders* aInternalHeaders)
explicit FillHeaders(InternalHeaders* aInternalHeaders)
: mInternalHeaders(aInternalHeaders) {
MOZ_DIAGNOSTIC_ASSERT(mInternalHeaders);
}
@ -457,34 +457,8 @@ class FillOriginalResponseHeaders final : public nsIHttpHeaderVisitor {
}
};
NS_IMPL_ISUPPORTS(FillOriginalResponseHeaders, nsIHttpHeaderVisitor)
NS_IMPL_ISUPPORTS(FillHeaders, nsIHttpHeaderVisitor)
class FillMissingResponseHeaders final : public nsIHttpHeaderVisitor {
RefPtr<InternalHeaders> mInternalHeaders;
~FillMissingResponseHeaders() = default;
public:
NS_DECL_ISUPPORTS
explicit FillMissingResponseHeaders(InternalHeaders* aInternalHeaders)
: mInternalHeaders(aInternalHeaders) {
MOZ_DIAGNOSTIC_ASSERT(mInternalHeaders);
}
NS_IMETHOD
VisitHeader(const nsACString& aHeader, const nsACString& aValue) override {
ErrorResult rv;
if (!mInternalHeaders->Has(aHeader, rv)) {
MOZ_ASSERT(!rv.Failed());
mInternalHeaders->Append(aHeader, aValue, IgnoreErrors());
}
return NS_OK;
}
};
NS_IMPL_ISUPPORTS(FillMissingResponseHeaders, nsIHttpHeaderVisitor)
} // namespace
void InternalHeaders::FillResponseHeaders(nsIRequest* aRequest) {
@ -493,23 +467,8 @@ void InternalHeaders::FillResponseHeaders(nsIRequest* aRequest) {
return;
}
RefPtr<FillOriginalResponseHeaders> visitor =
new FillOriginalResponseHeaders(this);
// response headers received from fetch requires extra processing
// we need the response headers received in original formats and also include
// any headers internally added
// nsIHttpChannel does not have any implemenation to give both types of
// headers hence, we fetch them seperately and merge them first step is to get
// the original response header
nsresult rv = httpChannel->VisitOriginalResponseHeaders(visitor);
if (NS_FAILED(rv)) {
NS_WARNING("failed to fill headers");
}
RefPtr<FillMissingResponseHeaders> visitMissingHeaders =
new FillMissingResponseHeaders(this);
rv = httpChannel->VisitResponseHeaders(visitMissingHeaders);
RefPtr<FillHeaders> visitor = new FillHeaders(this);
nsresult rv = httpChannel->VisitResponseHeaders(visitor);
if (NS_FAILED(rv)) {
NS_WARNING("failed to fill headers");
}

View File

@ -1121,8 +1121,7 @@ void XMLHttpRequestMainThread::GetAllResponseHeaders(
if (nsCOMPtr<nsIHttpChannel> httpChannel = GetCurrentHttpChannel()) {
RefPtr<nsHeaderVisitor> visitor =
new nsHeaderVisitor(*this, WrapNotNull(httpChannel));
if (NS_SUCCEEDED(httpChannel->VisitOriginalResponseHeaders(visitor))) {
visitor->MergeDuplicateHeaders();
if (NS_SUCCEEDED(httpChannel->VisitResponseHeaders(visitor))) {
aResponseHeaders = visitor->Headers();
}
return;
@ -1157,38 +1156,6 @@ void XMLHttpRequestMainThread::GetAllResponseHeaders(
}
}
namespace {
// used for parsing headers with duplicate entries
class nsResponseHeaderVisitor final : public nsIHttpHeaderVisitor {
public:
NS_DECL_ISUPPORTS
nsResponseHeaderVisitor() = default;
NS_IMETHOD
VisitHeader(const nsACString& aHeader, const nsACString& aValue) override {
if (mIsHeaderPresent) {
mValue.AppendLiteral(", ");
}
mValue.Append(aValue);
mIsHeaderPresent = true;
return NS_OK;
}
void GetValue(nsACString& aValue) { aValue = mValue; }
private:
nsCString mValue;
// indicates whether a header is already stored during parsing
bool mIsHeaderPresent{false};
virtual ~nsResponseHeaderVisitor() = default;
};
NS_IMPL_ISUPPORTS(nsResponseHeaderVisitor, nsIHttpHeaderVisitor)
} // namespace
void XMLHttpRequestMainThread::GetResponseHeader(const nsACString& header,
nsACString& _retval,
ErrorResult& aRv) {
@ -1249,16 +1216,11 @@ void XMLHttpRequestMainThread::GetResponseHeader(const nsACString& header,
return;
}
RefPtr<nsResponseHeaderVisitor> resposeHeaderVisitor =
new nsResponseHeaderVisitor();
aRv = httpChannel->GetOriginalResponseHeader(header, resposeHeaderVisitor);
aRv = httpChannel->GetResponseHeader(header, _retval);
if (aRv.ErrorCodeIs(NS_ERROR_NOT_AVAILABLE)) {
// Means no header
_retval.SetIsVoid(true);
aRv.SuppressException();
} else if (!aRv.Failed()) {
resposeHeaderVisitor->GetValue(_retval);
}
}

View File

@ -571,36 +571,18 @@ class XMLHttpRequestMainThread final : public XMLHttpRequest,
NS_DECL_NSIHTTPHEADERVISITOR
nsHeaderVisitor(const XMLHttpRequestMainThread& aXMLHttpRequest,
NotNull<nsIHttpChannel*> aHttpChannel);
void MergeDuplicateHeaders() {
if (mHeaderList.IsEmpty()) {
return;
}
mHeaders.Append(mHeaderList.ElementAt(0).mName);
mHeaders.AppendLiteral(": ");
mHeaders.Append(mHeaderList.ElementAt(0).mValue);
for (uint32_t i = 1; i < mHeaderList.Length(); i++) {
const nsACString& Headers() {
for (uint32_t i = 0; i < mHeaderList.Length(); i++) {
HeaderEntry& header = mHeaderList.ElementAt(i);
HeaderEntry& prevHeader = mHeaderList.ElementAt(i - 1);
if (header.mName != prevHeader.mName) {
mHeaders.AppendLiteral("\r\n");
mHeaders.Append(header.mName);
mHeaders.AppendLiteral(": ");
mHeaders.Append(header.mValue);
} else {
mHeaders.AppendLiteral(", ");
mHeaders.Append(header.mValue);
}
mHeaders.Append(header.mName);
mHeaders.AppendLiteral(": ");
mHeaders.Append(header.mValue);
mHeaders.AppendLiteral("\r\n");
}
mHeaders.AppendLiteral("\r\n");
return mHeaders;
}
const nsACString& Headers() { return mHeaders; }
private:
virtual ~nsHeaderVisitor();

View File

@ -231,10 +231,6 @@ void nsHttpHeaderArray::ClearHeader(const nsHttpAtom& header) {
}
}
void nsHttpHeaderArray::PurgeHeaderEntries(const nsHttpAtom& header) {
mHeaders.RemoveElementsBy(
[header](const auto& entry) { return (entry.header == header); });
}
const char* nsHttpHeaderArray::PeekHeader(const nsHttpAtom& header) const {
const nsEntry* entry = nullptr;
LookupEntry(header, &entry);
@ -448,16 +444,12 @@ void nsHttpHeaderArray::FlattenOriginalHeader(nsACString& buf) {
}
}
const char* nsHttpHeaderArray::PeekHeaderAt(uint32_t index, nsHttpAtom& header,
nsACString& headerNameOriginal,
HeaderVariety& variety,
nsACString& val) const {
const char* nsHttpHeaderArray::PeekHeaderAt(
uint32_t index, nsHttpAtom& header, nsACString& headerNameOriginal) const {
const nsEntry& entry = mHeaders[index];
header = entry.header;
headerNameOriginal = entry.headerNameOriginal;
variety = entry.variety;
val = entry.value;
return entry.value.get();
}

View File

@ -82,8 +82,6 @@ class nsHttpHeaderArray {
nsIHttpHeaderVisitor* aVisitor);
void ClearHeader(const nsHttpAtom& h);
void PurgeHeaderEntries(const nsHttpAtom& header);
// Find the location of the given header value, or null if none exists.
const char* FindHeaderValue(const nsHttpAtom& header,
const char* value) const {
@ -119,8 +117,7 @@ class nsHttpHeaderArray {
uint32_t Count() const { return mHeaders.Length(); }
const char* PeekHeaderAt(uint32_t i, nsHttpAtom& header,
nsACString& headerNameOriginal,
HeaderVariety& variety, nsACString& val) const;
nsACString& headerNameOriginal) const;
void Clear();

View File

@ -163,10 +163,12 @@ nsresult nsHttpResponseHead::SetHeader(const nsHttpAtom& hdr,
return SetHeader_locked(hdr, ""_ns, val, merge);
}
nsresult nsHttpResponseHead::SetHeader_locked(
const nsHttpAtom& atom, const nsACString& hdr, const nsACString& val,
bool merge, const nsHttpHeaderArray::HeaderVariety& variety) {
nsresult rv = mHeaders.SetHeader(atom, hdr, val, merge, variety);
nsresult nsHttpResponseHead::SetHeader_locked(const nsHttpAtom& atom,
const nsACString& hdr,
const nsACString& val,
bool merge) {
nsresult rv = mHeaders.SetHeader(atom, hdr, val, merge,
nsHttpHeaderArray::eVarietyResponse);
if (NS_FAILED(rv)) return rv;
// respond to changes in these headers. we need to reparse the entire
@ -891,95 +893,48 @@ bool nsHttpResponseHead::ExpiresInPast_locked() const {
NS_SUCCEEDED(GetDateValue_locked(&dateVal)) && expiresVal < dateVal;
}
void nsHttpResponseHead::UpdateOriginalHeaders(nsHttpResponseHead* aOther) {
mRecursiveMutex.AssertCurrentThreadIn();
aOther->mRecursiveMutex.AssertCurrentThreadIn();
uint32_t i, count = aOther->mHeaders.Count();
// container to maintain a list of entries purged
nsTHashSet<nsCString> purgedEntries;
for (i = 0; i < count; ++i) {
nsHttpAtom header;
nsHttpHeaderArray::HeaderVariety variety;
nsAutoCString headerNameOriginal;
nsAutoCString val;
if (!aOther->mHeaders.PeekHeaderAt(i, header, headerNameOriginal, variety,
val)) {
continue;
}
if (CanIgnoreResponseHeaderTypes(header) ||
!IsOriginalResponseHeader(variety)) {
continue;
}
// remove old response header entries as we have received updated
// response headers from 304/206 response
if (purgedEntries.EnsureInserted(header.val())) {
mHeaders.PurgeHeaderEntries(header);
}
DebugOnly<nsresult> rv =
mHeaders.SetHeaderFromNet(header, headerNameOriginal, val, true);
MOZ_ASSERT(NS_SUCCEEDED(rv));
}
}
bool nsHttpResponseHead::CanIgnoreResponseHeaderTypes(
const nsHttpAtom& header) const {
return (header == nsHttp::Connection || header == nsHttp::Proxy_Connection ||
header == nsHttp::Keep_Alive ||
header == nsHttp::Proxy_Authenticate ||
header == nsHttp::Proxy_Authorization ||
// not a response header!
header == nsHttp::TE || header == nsHttp::Trailer ||
header == nsHttp::Transfer_Encoding || header == nsHttp::Upgrade ||
// Ignore any non-modifiable headers...
header == nsHttp::Content_Location || header == nsHttp::Content_MD5 ||
header == nsHttp::ETag ||
// Assume Cache-Control: "no-transform"
header == nsHttp::Content_Encoding ||
header == nsHttp::Content_Range || header == nsHttp::Content_Type ||
// Ignore wacky headers too...
// this one is for MS servers that send "Content-Length: 0"
// on 304 responses
header == nsHttp::Content_Length);
}
void nsHttpResponseHead::UpdateHeaders(nsHttpResponseHead* aOther) {
LOG(("nsHttpResponseHead::UpdateHeaders [this=%p]\n", this));
RecursiveMutexAutoLock monitor(mRecursiveMutex);
RecursiveMutexAutoLock monitorOther(aOther->mRecursiveMutex);
UpdateOriginalHeaders(aOther);
uint32_t i, count = aOther->mHeaders.Count();
for (i = 0; i < count; ++i) {
nsHttpAtom header;
nsAutoCString headerNameOriginal;
nsHttpHeaderArray::HeaderVariety variety;
nsAutoCString val;
if (!aOther->mHeaders.PeekHeaderAt(i, header, headerNameOriginal, variety,
val)) {
if (!aOther->mHeaders.PeekHeaderAt(i, header, headerNameOriginal)) {
continue;
}
if (CanIgnoreResponseHeaderTypes(header)) {
nsAutoCString val;
if (NS_FAILED(aOther->GetHeader(header, val))) {
continue;
}
// Ignore any hop-by-hop headers...
if (header == nsHttp::Connection || header == nsHttp::Proxy_Connection ||
header == nsHttp::Keep_Alive || header == nsHttp::Proxy_Authenticate ||
header == nsHttp::Proxy_Authorization || // not a response header!
header == nsHttp::TE || header == nsHttp::Trailer ||
header == nsHttp::Transfer_Encoding || header == nsHttp::Upgrade ||
// Ignore any non-modifiable headers...
header == nsHttp::Content_Location || header == nsHttp::Content_MD5 ||
header == nsHttp::ETag ||
// Assume Cache-Control: "no-transform"
header == nsHttp::Content_Encoding || header == nsHttp::Content_Range ||
header == nsHttp::Content_Type ||
// Ignore wacky headers too...
// this one is for MS servers that send "Content-Length: 0"
// on 304 responses
header == nsHttp::Content_Length) {
LOG(("ignoring response header [%s: %s]\n", header.get(), val.get()));
} else {
LOG(("new response header [%s: %s]\n", header.get(), val.get()));
if (NS_FAILED(aOther->GetHeader(header, val))) {
continue;
}
// overwrite the current header value with the new value...
DebugOnly<nsresult> rv =
// overwrite the current header value with the new value...
SetHeader_locked(header, headerNameOriginal, val);
MOZ_ASSERT(NS_SUCCEEDED(rv));
}

View File

@ -147,11 +147,10 @@ class nsHttpResponseHead {
bool GetContentTypeOptionsHeader(nsACString& aOutput) const;
private:
[[nodiscard]] nsresult SetHeader_locked(
const nsHttpAtom& atom, const nsACString& h, const nsACString& v,
bool m = false,
const nsHttpHeaderArray::HeaderVariety& variety =
nsHttpHeaderArray::eVarietyResponse) MOZ_REQUIRES(mRecursiveMutex);
[[nodiscard]] nsresult SetHeader_locked(const nsHttpAtom& atom,
const nsACString& h,
const nsACString& v, bool m = false)
MOZ_REQUIRES(mRecursiveMutex);
void AssignDefaultStatusText() MOZ_REQUIRES(mRecursiveMutex);
void ParseVersion(const char*) MOZ_REQUIRES(mRecursiveMutex);
void ParseCacheControl(const char*) MOZ_REQUIRES(mRecursiveMutex);
@ -199,19 +198,6 @@ class nsHttpResponseHead {
return mHasCacheControl ? mCacheControlNoCache : mPragmaNoCache;
}
// update original response headers
void UpdateOriginalHeaders(nsHttpResponseHead* aOther);
// headers that can be ignored for a 304/206 response
bool CanIgnoreResponseHeaderTypes(const nsHttpAtom& header) const;
bool IsOriginalResponseHeader(
const nsHttpHeaderArray::HeaderVariety variety) const {
return (
(variety == nsHttpHeaderArray::eVarietyResponseNetOriginal) ||
(variety == nsHttpHeaderArray::eVarietyResponseNetOriginalAndResponse));
}
private:
// All members must be copy-constructable and assignable
nsHttpHeaderArray mHeaders MOZ_GUARDED_BY(mRecursiveMutex);

View File

@ -0,0 +1,55 @@
[header-value-combining.any.html]
[response.headers.get('heya') expects , \x0b\x0c, 1, , , 2]
expected: FAIL
[response.headers.get('double-trouble') expects , ]
expected: FAIL
[response.headers.get('www-authenticate') expects 1, 2, 3, 4]
expected: FAIL
[response.headers.get('content-length') expects 0, 0]
expected: FAIL
[header-value-combining.any.worker.html]
[response.headers.get('heya') expects , \x0b\x0c, 1, , , 2]
expected: FAIL
[response.headers.get('double-trouble') expects , ]
expected: FAIL
[response.headers.get('www-authenticate') expects 1, 2, 3, 4]
expected: FAIL
[response.headers.get('content-length') expects 0, 0]
expected: FAIL
[header-value-combining.any.serviceworker.html]
[response.headers.get('heya') expects , \x0b\x0c, 1, , , 2]
expected: FAIL
[response.headers.get('double-trouble') expects , ]
expected: FAIL
[response.headers.get('www-authenticate') expects 1, 2, 3, 4]
expected: FAIL
[response.headers.get('content-length') expects 0, 0]
expected: FAIL
[header-value-combining.any.sharedworker.html]
[response.headers.get('heya') expects , \x0b\x0c, 1, , , 2]
expected: FAIL
[response.headers.get('double-trouble') expects , ]
expected: FAIL
[response.headers.get('www-authenticate') expects 1, 2, 3, 4]
expected: FAIL
[response.headers.get('content-length') expects 0, 0]
expected: FAIL

View File

@ -0,0 +1,15 @@
[api-and-duplicate-headers.any.worker.html]
[fetch() and duplicate Content-Length/Content-Type headers]
expected: FAIL
[XMLHttpRequest and duplicate Content-Length/Content-Type headers]
expected: FAIL
[api-and-duplicate-headers.any.html]
[fetch() and duplicate Content-Length/Content-Type headers]
expected: FAIL
[XMLHttpRequest and duplicate Content-Length/Content-Type headers]
expected: FAIL

View File

@ -5,6 +5,9 @@
[Request: combined response Content-Type: */* text/html]
expected: FAIL
[Response: combined response Content-Type: text/html */*]
expected: FAIL
[fetch(): separate response Content-Type: */* text/html]
expected: FAIL
@ -20,6 +23,9 @@
[fetch(): combined response Content-Type: */* text/html]
expected: FAIL
[Request: combined response Content-Type: text/html */*]
expected: FAIL
[Request: combined response Content-Type: text/plain;charset=gbk text/plain;charset=windows-1252]
expected: FAIL
@ -44,12 +50,24 @@
[<iframe>: separate response Content-Type: text/plain;charset=gbk text/html]
expected: FAIL
[fetch(): combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[fetch(): combined response Content-Type: text/plain;charset=gbk text/plain]
expected: FAIL
[Request: combined response Content-Type: text/html text/plain]
expected: FAIL
[Request: combined response Content-Type: text/plain */*]
expected: FAIL
[fetch(): separate response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL
[Request: combined response Content-Type: text/plain;charset=gbk text/plain]
expected: FAIL
[fetch(): combined response Content-Type: text/plain;charset=gbk text/html]
expected: FAIL
@ -68,9 +86,18 @@
[Request: combined response Content-Type: text/html;x=" text/plain]
expected: FAIL
[Response: combined response Content-Type: text/plain */*]
expected: FAIL
[Request: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[Response: combined response Content-Type: text/html;x=" text/plain]
expected: FAIL
[fetch(): combined response Content-Type: text/html */*]
expected: FAIL
[Response: combined response Content-Type: text/html;" text/plain]
expected: FAIL
@ -104,21 +131,45 @@
[fetch(): combined response Content-Type: text/html;charset=gbk text/html;x=",text/plain]
expected: FAIL
[fetch(): combined response Content-Type: text/plain */*]
expected: FAIL
[Request: combined response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
[fetch(): separate response Content-Type: text/plain;charset=gbk text/html;charset=windows-1254]
expected: FAIL
[fetch(): combined response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
[fetch(): combined response Content-Type: text/plain;charset=gbk text/plain;charset=windows-1252]
expected: FAIL
[Response: combined response Content-Type: text/plain;charset=gbk text/plain]
expected: FAIL
[fetch(): separate response Content-Type: text/html text/plain]
expected: FAIL
[Request: combined response Content-Type: text/html;" text/plain]
expected: FAIL
[Response: combined response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
[Request: combined response Content-Type: text/html;charset=gbk text/html;x=",text/plain]
expected: FAIL
[Response: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[fetch(): combined response Content-Type: text/plain ]
expected: FAIL
[Response: combined response Content-Type: text/plain ]
expected: FAIL
[fetch(): separate response Content-Type: text/plain]
expected: FAIL
@ -131,6 +182,9 @@
[fetch(): combined response Content-Type: text/plain]
expected: FAIL
[Request: combined response Content-Type: text/plain ]
expected: FAIL
[fetch(): separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL

View File

@ -0,0 +1,56 @@
[navigation-sets-cookie.https.html]
expected: TIMEOUT
[Same-site top-level navigation with passthrough service worker should be able to set SameSite=* cookies.]
expected:
if (os == "linux") and fission and not debug and (processor == "x86_64"): [TIMEOUT, NOTRUN]
TIMEOUT
[Cross-site top-level navigation with passthrough service worker should be able to set SameSite=* cookies.]
expected: NOTRUN
[Same-site top-level POST with passthrough service worker should be able to set SameSite=* cookies.]
expected: NOTRUN
[Cross-site top-level with passthrough service worker POST should be able to set SameSite=* cookies.]
expected: NOTRUN
[Same-site top-level navigation with navpreload service worker should be able to set SameSite=* cookies.]
expected: NOTRUN
[Cross-site top-level navigation with navpreload service worker should be able to set SameSite=* cookies.]
expected: NOTRUN
[Same-site top-level navigation with change-request service worker should be able to set SameSite=* cookies.]
expected: NOTRUN
[Cross-site top-level navigation with change-request service worker should be able to set SameSite=* cookies.]
expected: NOTRUN
[Same-site top-level POST with change-request service worker should be able to set SameSite=* cookies.]
expected: NOTRUN
[Cross-site top-level with change-request service worker POST should be able to set SameSite=* cookies.]
expected: NOTRUN
[Cleanup service workers]
expected: NOTRUN
[Cross-site top-level navigation with fallback service worker should be able to set SameSite=* cookies.]
expected:
if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, NOTRUN]
[Cross-site top-level with fallback service worker POST should be able to set SameSite=* cookies.]
expected:
if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, NOTRUN]
[Same-site top-level POST with fallback service worker should be able to set SameSite=* cookies.]
expected:
if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, NOTRUN]
[Same-site top-level navigation with fallback service worker should be able to set SameSite=* cookies.]
expected:
if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, NOTRUN]
[Setup service workers]
expected:
if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, TIMEOUT]

View File

@ -1,54 +1,193 @@
[same-site-cookies.https.html]
expected:
if (os == "linux") and fission and not debug: [TIMEOUT, CRASH]
if (os == "linux") and not fission and not debug: [TIMEOUT, CRASH]
TIMEOUT
[same-origin, window.open with passthrough]
expected: TIMEOUT
[same-origin, window.open with change-request]
expected: NOTRUN
[same-origin, window.open with navpreload]
expected: NOTRUN
[same-site, window.open with no service worker]
expected: NOTRUN
[same-site, window.open with fallback]
expected: NOTRUN
[same-site, window.open with passthrough]
expected: NOTRUN
[same-site, window.open with change-request]
expected: NOTRUN
[same-site, window.open with navpreload]
expected: NOTRUN
[cross-site, window.open with no service worker]
expected: NOTRUN
[cross-site, window.open with fallback]
expected: NOTRUN
[cross-site, window.open with passthrough]
expected: FAIL
expected: NOTRUN
[cross-site, window.open with change-request]
expected: NOTRUN
[cross-site, window.open with navpreload]
expected: FAIL
expected: NOTRUN
[same-origin, form post with no service worker]
expected: NOTRUN
[same-origin, form post with fallback]
expected: NOTRUN
[same-origin, form post with passthrough]
expected: NOTRUN
[same-origin, form post with change-request]
expected: NOTRUN
[same-site, form post with no service worker]
expected: NOTRUN
[same-site, form post with fallback]
expected: NOTRUN
[same-site, form post with passthrough]
expected: NOTRUN
[same-site, form post with change-request]
expected: NOTRUN
[cross-site, form post with no service worker]
expected: FAIL
expected: NOTRUN
[cross-site, form post with fallback]
expected: FAIL
expected: NOTRUN
[cross-site, form post with passthrough]
expected: FAIL
expected: NOTRUN
[cross-site, form post with change-request]
expected: NOTRUN
[Cleanup service workers]
expected: NOTRUN
[same-origin, window.open with no service worker and same-site redirect]
expected: NOTRUN
[same-origin, window.open with fallback and same-site redirect]
expected: NOTRUN
[same-origin, window.open with passthrough and same-site redirect]
expected: NOTRUN
[same-origin, window.open with change-request and same-site redirect]
expected: NOTRUN
[same-origin, window.open with navpreload and same-site redirect]
expected: NOTRUN
[same-origin, window.open with no service worker and cross-site redirect]
expected: NOTRUN
[same-origin, window.open with fallback and cross-site redirect]
expected: NOTRUN
[same-origin, window.open with passthrough and cross-site redirect]
expected: FAIL
expected: NOTRUN
[same-origin, window.open with change-request and cross-site redirect]
expected: NOTRUN
[same-origin, window.open with navpreload and cross-site redirect]
expected: FAIL
expected: NOTRUN
[same-origin, window.open with no service worker, cross-site redirect, and same-origin redirect]
expected: NOTRUN
[same-origin, window.open with fallback, cross-site redirect, and same-origin redirect]
expected: NOTRUN
[same-origin, window.open with passthrough, cross-site redirect, and same-origin redirect]
expected: FAIL
expected: NOTRUN
[same-origin, window.open with change-request, cross-site redirect, and same-origin redirect]
expected: NOTRUN
[same-origin, window.open with navpreload, cross-site redirect, and same-origin redirect]
expected: FAIL
expected: NOTRUN
[same-origin, form post with no service worker and same-site redirect]
expected: NOTRUN
[same-origin, form post with fallback and same-site redirect]
expected: NOTRUN
[same-origin, form post with passthrough and same-site redirect]
expected: NOTRUN
[same-origin, form post with change-request and same-site redirect]
expected: NOTRUN
[same-origin, form post with no service worker and cross-site redirect]
expected: FAIL
expected: NOTRUN
[same-origin, form post with fallback and cross-site redirect]
expected: FAIL
expected: NOTRUN
[same-origin, form post with passthrough and cross-site redirect]
expected: FAIL
expected: NOTRUN
[same-origin, form post with change-request and cross-site redirect]
expected: NOTRUN
[same-origin, form post with no service worker, cross-site redirect, and same-origin redirect]
expected: FAIL
expected: NOTRUN
[same-origin, form post with fallback, cross-site redirect, and same-origin redirect]
expected: FAIL
expected: NOTRUN
[same-origin, form post with passthrough, cross-site redirect, and same-origin redirect]
expected: FAIL
expected: NOTRUN
[same-origin, form post with change-request, cross-site redirect, and same-origin redirect]
expected: NOTRUN
[same-origin, nested window.open with cross-site middle frame and no service worker]
expected: NOTRUN
[same-origin, nested window.open with cross-site middle frame and fallback service worker]
expected: NOTRUN
[same-origin, nested window.open with cross-site middle frame and passthrough service worker]
expected: NOTRUN
[same-origin, nested window.open with cross-site middle frame and change-request service worker]
expected: NOTRUN
[same-origin, nested window.open with cross-site middle frame and navpreload service worker]
expected: NOTRUN
[same-origin, nested set location with cross-site middle frame and no service worker]
expected: NOTRUN
[same-origin, nested set location with cross-site middle frame and fallback service worker]
expected: NOTRUN
[same-origin, nested set location with cross-site middle frame and passthrough service worker]
expected: FAIL
expected: NOTRUN
[same-origin, nested set location with cross-site middle frame and change-request service worker]
expected: FAIL
expected: NOTRUN
[same-origin, nested set location with cross-site middle frame and navpreload service worker]
expected: FAIL
expected: NOTRUN

View File

@ -0,0 +1,5 @@
[xhr-content-length.https.window.html]
expected:
if (os == "android") and debug and not swgl: [OK, ERROR]
[Synthetic response with two Content-Length headers value larger than response body length]
expected: FAIL

View File

@ -0,0 +1,13 @@
[getallresponseheaders.htm]
[XMLHttpRequest: getAllResponseHeaders() 5]
expected: FAIL
[XMLHttpRequest: getAllResponseHeaders() 2]
expected: FAIL
[XMLHttpRequest: getAllResponseHeaders() 6]
expected: FAIL
[XMLHttpRequest: getAllResponseHeaders() 3]
expected: FAIL

View File

@ -0,0 +1,27 @@
[getresponseheader.any.worker.html]
[getResponseHeader('heya') expects , \x0b\x0c, 1, , , 2]
expected: FAIL
[getResponseHeader('double-trouble') expects , ]
expected: FAIL
[getResponseHeader('content-length') expects 0, 0]
expected: FAIL
[getResponseHeader('www-authenticate') expects 1, 2, 3, 4]
expected: FAIL
[getresponseheader.any.html]
[getResponseHeader('heya') expects , \x0b\x0c, 1, , , 2]
expected: FAIL
[getResponseHeader('double-trouble') expects , ]
expected: FAIL
[getResponseHeader('content-length') expects 0, 0]
expected: FAIL
[getResponseHeader('www-authenticate') expects 1, 2, 3, 4]
expected: FAIL