Part 1: Bug 1700623 - Add storagePrincipal to WindowGlobalParent. r=nika,timhuang

We use the storage principal to look up origin records in the
background session storage manager.

Differential Revision: https://phabricator.services.mozilla.com/D111428
This commit is contained in:
Andreas Farre
2021-05-20 12:48:20 +00:00
parent da7e1adce3
commit a498319923
9 changed files with 88 additions and 9 deletions

View File

@@ -110,6 +110,8 @@ class WindowGlobalParent final : public WindowContext,
// |document.domain|.
nsIPrincipal* DocumentPrincipal() { return mDocumentPrincipal; }
nsIPrincipal* DocumentStoragePrincipal() { return mDocumentStoragePrincipal; }
// The BrowsingContext which this WindowGlobal has been loaded into.
// FIXME: It's quite awkward that this method has a slightly different name
// than the one on WindowContext.
@@ -232,7 +234,8 @@ class WindowGlobalParent final : public WindowContext,
mozilla::ipc::IPCResult RecvInternalLoad(nsDocShellLoadState* aLoadState);
mozilla::ipc::IPCResult RecvUpdateDocumentURI(nsIURI* aURI);
mozilla::ipc::IPCResult RecvUpdateDocumentPrincipal(
nsIPrincipal* aNewDocumentPrincipal);
nsIPrincipal* aNewDocumentPrincipal,
nsIPrincipal* aNewDocumentStoragePrincipal);
mozilla::ipc::IPCResult RecvUpdateDocumentHasLoaded(bool aDocumentHasLoaded);
mozilla::ipc::IPCResult RecvUpdateDocumentHasUserInteracted(
bool aDocumentHasUserInteracted);
@@ -305,11 +308,20 @@ class WindowGlobalParent final : public WindowContext,
nsresult ResetSessionStore(uint32_t aEpoch);
// NOTE: This document principal doesn't reflect possible |document.domain|
// mutations which may have been made in the actual document.
// Returns failure if the new storage principal cannot be validated
// against the current document principle.
nsresult SetDocumentStoragePrincipal(
nsIPrincipal* aNewDocumentStoragePrincipal);
// NOTE: Neither this document principal nor the document storage
// principal doesn't reflect possible |document.domain| mutations
// which may have been made in the actual document.
nsCOMPtr<nsIPrincipal> mDocumentPrincipal;
nsCOMPtr<nsIPrincipal> mDocumentStoragePrincipal;
// The principal to use for the content blocking allow list.
nsCOMPtr<nsIPrincipal> mDocContentBlockingAllowListPrincipal;
nsCOMPtr<nsIURI> mDocumentURI;
Maybe<nsString> mDocumentTitle;