gecko-dev/ipc/glue/URIParams.ipdlh
Andrea Marchesini f6768a8ff6 Bug 1228139 - Remove nsIURIWithPrincipal - part 3 - main part, r=bz
nsIURIWithPrincipal is currently used to retrieve the nsIPrincipal from a
BlobURL object.  BlobURLProtocolHandler has a hashtable containing, for each
blobURL, a BlobImpl and its nsIPrincipal. This patch introduces
BlobURLProtocolHandler::GetBlobURLPrincipal() that retrieves the nsIPrincipal
from this hashtable.

This patch fixes also a bug in how the revocation of blobURLs is broadcasted to
other processes. This should be done immediately because each process creates
its own timer to revoke them after 5 seconds.

An important change is related to NS_SecurityCompareURIs() where, if 1 (or
both) of the 2 URIs to compare, is a revoked BlobURL, we will QI its URL to
nsIStandardURL and fail out at that point.
2018-07-24 22:15:57 +02:00

109 lines
1.9 KiB
Plaintext

/* 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 struct mozilla::void_t from "ipc/IPCMessageUtils.h";
include PBackgroundSharedTypes;
namespace mozilla {
namespace ipc {
struct SimpleURIParams
{
nsCString scheme;
nsCString path;
nsCString ref;
nsCString query;
};
struct StandardURLSegment
{
uint32_t position;
int32_t length;
};
struct StandardURLParams
{
uint32_t urlType;
int32_t port;
int32_t defaultPort;
nsCString spec;
StandardURLSegment scheme;
StandardURLSegment authority;
StandardURLSegment username;
StandardURLSegment password;
StandardURLSegment host;
StandardURLSegment path;
StandardURLSegment filePath;
StandardURLSegment directory;
StandardURLSegment baseName;
StandardURLSegment extension;
StandardURLSegment query;
StandardURLSegment ref;
bool supportsFileURL;
};
struct JARURIParams
{
URIParams jarFile;
URIParams jarEntry;
nsCString charset;
};
struct IconURIParams
{
OptionalURIParams uri;
uint32_t size;
nsCString contentType;
nsCString fileName;
nsCString stockIcon;
int32_t iconSize;
int32_t iconState;
};
struct NullPrincipalURIParams
{
// Purposefully empty. Null principal URIs do not round-trip.
};
struct HostObjectURIParams
{
SimpleURIParams simpleParams;
bool revoked;
};
union URIParams
{
SimpleURIParams;
StandardURLParams;
JARURIParams;
IconURIParams;
NullPrincipalURIParams;
JSURIParams;
SimpleNestedURIParams;
HostObjectURIParams;
};
union OptionalURIParams
{
void_t;
URIParams;
};
struct JSURIParams
{
SimpleURIParams simpleParams;
OptionalURIParams baseURI;
};
struct SimpleNestedURIParams
{
SimpleURIParams simpleParams;
URIParams innerURI;
};
} // namespace ipc
} // namespace mozilla