forked from mirrors/gecko-dev
This patch uses MozURL in ServiceWorkerRegistrar and in DBScheme to obtain the origin of a URL. This is safe because the URL is always http/https/ftp. It also changes the serialization of Principal in nsJSPrincipals in order to pass the originNoSuffix together with the OriginAttributes and the spec.
57 lines
1.3 KiB
Text
57 lines
1.3 KiB
Text
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
using mozilla::OriginAttributes from "mozilla/ipc/BackgroundUtils.h";
|
|
using struct mozilla::void_t from "ipc/IPCMessageUtils.h";
|
|
|
|
namespace mozilla {
|
|
namespace ipc {
|
|
|
|
struct ContentPrincipalInfo
|
|
{
|
|
OriginAttributes attrs;
|
|
|
|
// Origin is not simply a part of the spec. Based on the scheme of the URI
|
|
// spec, we generate different kind of origins: for instance any file: URL
|
|
// shares the same origin, about: URLs have the full spec as origin and so
|
|
// on.
|
|
// Another important reason why we have this attribute is that
|
|
// ContentPrincipalInfo is used out of the main-thread. Having this value
|
|
// here allows us to retrive the origin without creating a full nsIPrincipal.
|
|
nsCString originNoSuffix;
|
|
|
|
nsCString spec;
|
|
};
|
|
|
|
struct SystemPrincipalInfo
|
|
{ };
|
|
|
|
struct NullPrincipalInfo
|
|
{
|
|
OriginAttributes attrs;
|
|
nsCString spec;
|
|
};
|
|
|
|
struct ExpandedPrincipalInfo
|
|
{
|
|
OriginAttributes attrs;
|
|
PrincipalInfo[] whitelist;
|
|
};
|
|
|
|
union PrincipalInfo
|
|
{
|
|
ContentPrincipalInfo;
|
|
SystemPrincipalInfo;
|
|
NullPrincipalInfo;
|
|
ExpandedPrincipalInfo;
|
|
};
|
|
|
|
union OptionalPrincipalInfo
|
|
{
|
|
void_t;
|
|
PrincipalInfo;
|
|
};
|
|
|
|
} // namespace ipc
|
|
} // namespace mozilla
|