import changes from `dev' branch of rmottola/Arctic-Fox:

- Bug 1171486 - Part 2: Make it OK to call ServiceWorkerManager::GetInstance() during its Init() function; r=baku (c3c7bd78c)
- Bug 1115820 - Add telemetry to ServiceWorkers. r=nsm, r=vladan (9a86f7466)
- Bug 1172717 - Fail on UNKNOWN_APP_ID instead of crashing. r=bholley a=RyanVM (f950a7c59)
- Bug 1154068 - rename relaxed to insecure scheme and add more runtime checks r=hurley (76e8ce41a)
- Bug 1154061 - clear cached alt svc mappings on a variety of state changes r=hurley (9855ee544)
- Bug 1153437 - rename proxyFlags to controlFlags with nsISocketProvider interfaces r=hurley (043a531c8)
- bug 1153212 - 2/2 Necko explicitly track origin vs routed host and give psm only origin r=dkeeler r=hurley IGNORE IDL (d44c3d0e6)
- part of Bug 935838 - Add per app network traffic statistics (d1861cb3d)
- Bug 1109338: Part 1: Separate UDPSocket logging from network logging r=dragana (c2c887b0f)
- Bug 1109338: Part 2: Sharing UDPSocket between PNecko and PBackground r=bent (90b2a09d2)
- Bug 1133189 - Extend PrincipalInfo to handle expanded principals. r=bent, r=sicking (d3269d57e)
- Bug 1155153 - about:serviceworkers should work in e10s mode, r=nsm, r=bholley (90dd0bb4b)
- Bug 1061116 - Make the comparison query/hash insensitive for validity widget. r=fabrice (0969e8404)
- Bug 1167603 - use string to replace nsIURI in aApps.widgetPages. r=fabrice (c528e2615)
- Bug 1087469 - Add support for a start_url property in app manifests r=fabrice (0053f26d6)
- Bug 1168783 - Expose principal in mozIApplication. r=fabrice (2fee4ed8e)
- Bug 1169249 - Unregister service worker registration when uninstalling a service-worker-enabled application. r=baku (c881ee50b)
- Bug 1174381 - ServiceWorkerManager::TeardownRunnable should be called when xpcom-shutdown notification is received, r=nsm (f47d59f19)
- Bug 1167296 - patch 1 - ServiceWorkerManager::RemoveAll should use PBackground, r=nsm (8f8feda13)
- Bug 1167296 - patch 2 - ServiceWorkerManager::Remove should use PBackground, r=nsm (fc931fffc)
This commit is contained in:
2021-02-19 12:19:36 +08:00
parent 9eb17f6255
commit 3b1d2cdd8a
85 changed files with 2911 additions and 662 deletions
+84 -19
View File
@@ -17,44 +17,109 @@
#include "mozilla/dom/CSPDictionariesBinding.h"
#include "mozilla/dom/ToJSValue.h"
#include "mozilla/dom/URLSearchParams.h"
namespace mozilla {
using dom::URLSearchParams;
void
OriginAttributes::CreateSuffix(nsACString& aStr) const
{
aStr.Truncate();
MOZ_RELEASE_ASSERT(mAppId != nsIScriptSecurityManager::UNKNOWN_APP_ID);
int attrCount = 0;
nsRefPtr<URLSearchParams> usp = new URLSearchParams();
nsAutoString value;
if (mAppId != nsIScriptSecurityManager::NO_APP_ID) {
aStr.Append(attrCount++ ? "&appId=" : "!appId=");
aStr.AppendInt(mAppId);
value.AppendInt(mAppId);
usp->Set(NS_LITERAL_STRING("appId"), value);
}
if (mInBrowser) {
aStr.Append(attrCount++ ? "&inBrowser=1" : "!inBrowser=1");
usp->Set(NS_LITERAL_STRING("inBrowser"), NS_LITERAL_STRING("1"));
}
aStr.Truncate();
usp->Serialize(value);
if (!value.IsEmpty()) {
aStr.AppendLiteral("!");
aStr.Append(NS_ConvertUTF16toUTF8(value));
}
}
void
OriginAttributes::Serialize(nsIObjectOutputStream* aStream) const
namespace {
class MOZ_STACK_CLASS PopulateFromSuffixIterator final
: public URLSearchParams::ForEachIterator
{
aStream->Write32(mAppId);
aStream->WriteBoolean(mInBrowser);
public:
explicit PopulateFromSuffixIterator(OriginAttributes* aOriginAttributes)
: mOriginAttributes(aOriginAttributes)
{
MOZ_ASSERT(aOriginAttributes);
}
bool URLSearchParamsIterator(const nsString& aName,
const nsString& aValue) override
{
if (aName.EqualsLiteral("appId")) {
nsresult rv;
mOriginAttributes->mAppId = aValue.ToInteger(&rv);
if (NS_WARN_IF(NS_FAILED(rv))) {
return false;
}
if (mOriginAttributes->mAppId == nsIScriptSecurityManager::UNKNOWN_APP_ID) {
return false;
}
return true;
}
if (aName.EqualsLiteral("inBrowser")) {
if (!aValue.EqualsLiteral("1")) {
return false;
}
mOriginAttributes->mInBrowser = true;
return true;
}
// No other attributes are supported.
return false;
}
private:
OriginAttributes* mOriginAttributes;
};
} // anonymous namespace
bool
OriginAttributes::PopulateFromSuffix(const nsACString& aStr)
{
if (aStr.IsEmpty()) {
return true;
}
if (aStr[0] != '!') {
return false;
}
nsRefPtr<URLSearchParams> usp = new URLSearchParams();
usp->ParseInput(Substring(aStr, 1, aStr.Length() - 1), nullptr);
PopulateFromSuffixIterator iterator(this);
return usp->ForEach(iterator);
}
nsresult
OriginAttributes::Deserialize(nsIObjectInputStream* aStream)
{
nsresult rv = aStream->Read32(&mAppId);
NS_ENSURE_SUCCESS(rv, rv);
BasePrincipal::BasePrincipal()
{}
rv = aStream->ReadBoolean(&mInBrowser);
NS_ENSURE_SUCCESS(rv, rv);
return NS_OK;
}
BasePrincipal::~BasePrincipal()
{}
NS_IMETHODIMP
BasePrincipal::GetOrigin(nsACString& aOrigin)