Backed out changeset 2515c5b5a0d2 (bug 1622619) for build bustages. CLOSED TREE

This commit is contained in:
Razvan Maries 2020-03-31 17:18:38 +03:00
parent eca8fd9020
commit 40412d7928
23 changed files with 311 additions and 228 deletions

View File

@ -29,8 +29,11 @@ static nsresult BroadcastDomainSetChange(DomainSetType aSetType,
return NS_OK;
}
Maybe<URIParams> uri;
SerializeURI(aDomain, uri);
for (uint32_t i = 0; i < parents.Length(); i++) {
Unused << parents[i]->SendDomainSetChanged(aSetType, aChangeType, aDomain);
Unused << parents[i]->SendDomainSetChanged(aSetType, aChangeType, uri);
}
return NS_OK;
}
@ -115,13 +118,10 @@ void DomainPolicy::CloneDomainPolicy(DomainPolicyClone* aClone) {
mSuperAllowlist->CloneSet(&aClone->superAllowlist());
}
static void CopyURIs(const nsTArray<RefPtr<nsIURI>>& aDomains,
nsIDomainSet* aSet) {
static void CopyURIs(const nsTArray<URIParams>& aDomains, nsIDomainSet* aSet) {
for (uint32_t i = 0; i < aDomains.Length(); i++) {
if (NS_WARN_IF(!aDomains[i])) {
continue;
}
aSet->Add(aDomains[i]);
nsCOMPtr<nsIURI> uri = DeserializeURI(aDomains[i]);
aSet->Add(uri);
}
}
@ -149,9 +149,8 @@ DomainSet::Add(nsIURI* aDomain) {
nsCOMPtr<nsIURI> clone = GetCanonicalClone(aDomain);
NS_ENSURE_TRUE(clone, NS_ERROR_FAILURE);
mHashTable.PutEntry(clone);
if (XRE_IsParentProcess()) {
if (XRE_IsParentProcess())
return BroadcastDomainSetChange(mType, ADD_DOMAIN, aDomain);
}
return NS_OK;
}
@ -161,9 +160,8 @@ DomainSet::Remove(nsIURI* aDomain) {
nsCOMPtr<nsIURI> clone = GetCanonicalClone(aDomain);
NS_ENSURE_TRUE(clone, NS_ERROR_FAILURE);
mHashTable.RemoveEntry(clone);
if (XRE_IsParentProcess()) {
if (XRE_IsParentProcess())
return BroadcastDomainSetChange(mType, REMOVE_DOMAIN, aDomain);
}
return NS_OK;
}
@ -171,9 +169,8 @@ DomainSet::Remove(nsIURI* aDomain) {
NS_IMETHODIMP
DomainSet::Clear() {
mHashTable.Clear();
if (XRE_IsParentProcess()) {
if (XRE_IsParentProcess())
return BroadcastDomainSetChange(mType, CLEAR_DOMAINS);
}
return NS_OK;
}
@ -215,10 +212,14 @@ DomainSet::ContainsSuperDomain(nsIURI* aDomain, bool* aContains) {
return NS_OK;
}
void DomainSet::CloneSet(nsTArray<RefPtr<nsIURI>>* aDomains) {
void DomainSet::CloneSet(nsTArray<URIParams>* aDomains) {
for (auto iter = mHashTable.Iter(); !iter.Done(); iter.Next()) {
nsIURI* key = iter.Get()->GetKey();
aDomains->AppendElement(key);
URIParams uri;
SerializeURI(key, uri);
aDomains->AppendElement(uri);
}
}

View File

@ -13,6 +13,10 @@
namespace mozilla {
namespace ipc {
class URIParams;
} // namespace ipc
enum DomainSetChangeType {
ACTIVATE_POLICY,
DEACTIVATE_POLICY,
@ -36,7 +40,7 @@ class DomainSet final : public nsIDomainSet {
explicit DomainSet(DomainSetType aType) : mType(aType) {}
void CloneSet(nsTArray<RefPtr<nsIURI>>* aDomains);
void CloneSet(nsTArray<mozilla::ipc::URIParams>* aDomains);
protected:
virtual ~DomainSet() {}

View File

@ -389,7 +389,7 @@ nsDefaultURIFixup::KeywordToURI(const nsACString& aKeyword,
}
RefPtr<nsIInputStream> postData;
RefPtr<nsIURI> uri;
Maybe<mozilla::ipc::URIParams> uri;
nsAutoString providerName;
if (!contentChild->SendKeywordToURI(keyword, aIsPrivateContext,
&providerName, &postData, &uri)) {
@ -403,7 +403,8 @@ nsDefaultURIFixup::KeywordToURI(const nsACString& aKeyword,
postData.forget(aPostData);
}
info->mPreferredURI = uri.forget();
nsCOMPtr<nsIURI> temp = DeserializeURI(uri);
info->mPreferredURI = std::move(temp);
return NS_OK;
}

View File

@ -3682,9 +3682,11 @@ nsDocShell::DisplayLoadError(nsresult aError, nsIURI* aURI,
} else {
mozilla::dom::ContentChild* cc =
mozilla::dom::ContentChild::GetSingleton();
cc->SendIsSecureURI(nsISiteSecurityService::HEADER_HSTS, aURI, flags,
mozilla::ipc::URIParams uri;
SerializeURI(aURI, uri);
cc->SendIsSecureURI(nsISiteSecurityService::HEADER_HSTS, uri, flags,
mOriginAttributes, &isStsHost);
cc->SendIsSecureURI(nsISiteSecurityService::HEADER_HPKP, aURI, flags,
cc->SendIsSecureURI(nsISiteSecurityService::HEADER_HPKP, uri, flags,
mOriginAttributes, &isPinnedHost);
}
@ -8129,7 +8131,10 @@ void nsDocShell::CopyFavicon(nsIURI* aOldURI, nsIURI* aNewURI,
if (XRE_IsContentProcess()) {
dom::ContentChild* contentChild = dom::ContentChild::GetSingleton();
if (contentChild) {
contentChild->SendCopyFavicon(aOldURI, aNewURI,
mozilla::ipc::URIParams oldURI, newURI;
SerializeURI(aOldURI, oldURI);
SerializeURI(aNewURI, newURI);
contentChild->SendCopyFavicon(oldURI, newURI,
IPC::Principal(aLoadingPrincipal),
aInPrivateBrowsing);
}

View File

@ -1809,9 +1809,11 @@ void Document::GetFailedCertSecurityInfo(FailedCertSecurityInfo& aInfo,
if (XRE_IsContentProcess()) {
ContentChild* cc = ContentChild::GetSingleton();
MOZ_ASSERT(cc);
cc->SendIsSecureURI(nsISiteSecurityService::HEADER_HSTS, aURI, flags, attrs,
mozilla::ipc::URIParams uri;
SerializeURI(aURI, uri);
cc->SendIsSecureURI(nsISiteSecurityService::HEADER_HSTS, uri, flags, attrs,
&aInfo.mHasHSTS);
cc->SendIsSecureURI(nsISiteSecurityService::HEADER_HPKP, aURI, flags, attrs,
cc->SendIsSecureURI(nsISiteSecurityService::HEADER_HPKP, uri, flags, attrs,
&aInfo.mHasHPKP);
} else {
nsCOMPtr<nsISiteSecurityService> sss =

View File

@ -934,6 +934,9 @@ nsresult ContentChild::ProvideWindowCommon(
return rv;
}
Maybe<URIParams> uriToLoad;
SerializeURI(aURI, uriToLoad);
if (name.LowerCaseEqualsLiteral("_blank")) {
name = EmptyString();
}
@ -941,7 +944,7 @@ nsresult ContentChild::ProvideWindowCommon(
MOZ_DIAGNOSTIC_ASSERT(!nsContentUtils::IsSpecialName(name));
Unused << SendCreateWindowInDifferentProcess(
aTabOpener, aChromeFlags, aCalledFromJS, aWidthSpecified, aURI,
aTabOpener, aChromeFlags, aCalledFromJS, aWidthSpecified, uriToLoad,
features, fullZoom, name, triggeringPrincipal, csp, referrerInfo);
// We return NS_ERROR_ABORT, so that the caller knows that we've abandoned
@ -1189,7 +1192,13 @@ nsresult ContentChild::ProvideWindowCommon(
return rv;
}
SendCreateWindow(aTabOpener, newChild, aChromeFlags, aCalledFromJS, aWidthSpecified, aURI, features, fullZoom,
Maybe<URIParams> uriToLoad;
if (aURI) {
SerializeURI(aURI, uriToLoad);
}
SendCreateWindow(aTabOpener, newChild, aChromeFlags, aCalledFromJS,
aWidthSpecified, uriToLoad, features, fullZoom,
Principal(triggeringPrincipal), csp, referrerInfo,
std::move(resolve), std::move(reject));
}
@ -1392,7 +1401,7 @@ void ContentChild::InitXPCOM(
}
// The stylesheet cache is not ready yet. Store this URL for future use.
nsCOMPtr<nsIURI> ucsURL = aXPCOMInit.userContentSheetURL();
nsCOMPtr<nsIURI> ucsURL = DeserializeURI(aXPCOMInit.userContentSheetURL());
GlobalStyleSheetCache::SetUserContentCSSURL(ucsURL);
GfxInfoBase::SetFeatureStatus(aXPCOMInit.gfxFeatureStatus());
@ -2356,7 +2365,7 @@ mozilla::ipc::IPCResult ContentChild::RecvNotifyVisited(
return IPC_OK();
}
for (const VisitedQueryResult& result : aURIs) {
nsCOMPtr<nsIURI> newURI = result.uri();
nsCOMPtr<nsIURI> newURI = DeserializeURI(result.uri());
if (!newURI) {
return IPC_FAIL_NO_REASON(this);
}
@ -2738,35 +2747,38 @@ mozilla::ipc::IPCResult ContentChild::RecvNotifyIdleObserver(
}
mozilla::ipc::IPCResult ContentChild::RecvLoadAndRegisterSheet(
nsIURI* aURI, const uint32_t& aType) {
if (!aURI) {
const URIParams& aURI, const uint32_t& aType) {
nsCOMPtr<nsIURI> uri = DeserializeURI(aURI);
if (!uri) {
return IPC_OK();
}
nsStyleSheetService* sheetService = nsStyleSheetService::GetInstance();
if (sheetService) {
sheetService->LoadAndRegisterSheet(aURI, aType);
sheetService->LoadAndRegisterSheet(uri, aType);
}
return IPC_OK();
}
mozilla::ipc::IPCResult ContentChild::RecvUnregisterSheet(
nsIURI* aURI, const uint32_t& aType) {
if (!aURI) {
const URIParams& aURI, const uint32_t& aType) {
nsCOMPtr<nsIURI> uri = DeserializeURI(aURI);
if (!uri) {
return IPC_OK();
}
nsStyleSheetService* sheetService = nsStyleSheetService::GetInstance();
if (sheetService) {
sheetService->UnregisterSheet(aURI, aType);
sheetService->UnregisterSheet(uri, aType);
}
return IPC_OK();
}
mozilla::ipc::IPCResult ContentChild::RecvDomainSetChanged(
const uint32_t& aSetType, const uint32_t& aChangeType, nsIURI* aDomain) {
const uint32_t& aSetType, const uint32_t& aChangeType,
const Maybe<URIParams>& aDomain) {
if (aChangeType == ACTIVATE_POLICY) {
if (mPolicy) {
return IPC_OK();
@ -2815,14 +2827,16 @@ mozilla::ipc::IPCResult ContentChild::RecvDomainSetChanged(
MOZ_ASSERT(set);
nsCOMPtr<nsIURI> uri = DeserializeURI(aDomain);
switch (aChangeType) {
case ADD_DOMAIN:
NS_ENSURE_TRUE(aDomain, IPC_FAIL_NO_REASON(this));
set->Add(aDomain);
NS_ENSURE_TRUE(uri, IPC_FAIL_NO_REASON(this));
set->Add(uri);
break;
case REMOVE_DOMAIN:
NS_ENSURE_TRUE(aDomain, IPC_FAIL_NO_REASON(this));
set->Remove(aDomain);
NS_ENSURE_TRUE(uri, IPC_FAIL_NO_REASON(this));
set->Remove(uri);
break;
case CLEAR_DOMAINS:
set->Clear();
@ -3249,7 +3263,7 @@ bool ContentChild::DeallocPURLClassifierChild(PURLClassifierChild* aActor) {
}
PURLClassifierLocalChild* ContentChild::AllocPURLClassifierLocalChild(
nsIURI* aUri, const nsTArray<IPCURLClassifierFeature>& aFeatures) {
const URIParams& aUri, const nsTArray<IPCURLClassifierFeature>& aFeatures) {
return new URLClassifierLocalChild();
}
@ -3260,7 +3274,8 @@ bool ContentChild::DeallocPURLClassifierLocalChild(
return true;
}
PLoginReputationChild* ContentChild::AllocPLoginReputationChild(nsIURI* aUri) {
PLoginReputationChild* ContentChild::AllocPLoginReputationChild(
const URIParams& aUri) {
return new PLoginReputationChild();
}

View File

@ -60,6 +60,10 @@ using mozilla::loader::PScriptCacheChild;
bool IsDevelopmentBuild();
#endif /* !XP_WIN */
namespace ipc {
class URIParams;
} // namespace ipc
namespace dom {
namespace ipc {
@ -84,6 +88,7 @@ class ContentChild final
typedef mozilla::dom::ClonedMessageData ClonedMessageData;
typedef mozilla::ipc::FileDescriptor FileDescriptor;
typedef mozilla::ipc::PFileDescriptorSetChild PFileDescriptorSetChild;
typedef mozilla::ipc::URIParams URIParams;
friend class PContentChild;
@ -416,10 +421,10 @@ class ContentChild final
mozilla::ipc::IPCResult RecvMinimizeMemoryUsage();
mozilla::ipc::IPCResult RecvLoadAndRegisterSheet(nsIURI* aURI,
mozilla::ipc::IPCResult RecvLoadAndRegisterSheet(const URIParams& aURI,
const uint32_t& aType);
mozilla::ipc::IPCResult RecvUnregisterSheet(nsIURI* aURI,
mozilla::ipc::IPCResult RecvUnregisterSheet(const URIParams& aURI,
const uint32_t& aType);
void AddIdleObserver(nsIObserver* aObserver, uint32_t aIdleTimeInS);
@ -434,7 +439,7 @@ class ContentChild final
mozilla::ipc::IPCResult RecvDomainSetChanged(const uint32_t& aSetType,
const uint32_t& aChangeType,
nsIURI* aDomain);
const Maybe<URIParams>& aDomain);
mozilla::ipc::IPCResult RecvShutdown();
@ -596,10 +601,11 @@ class ContentChild final
// PURLClassifierLocalChild
PURLClassifierLocalChild* AllocPURLClassifierLocalChild(
nsIURI* aUri, const nsTArray<IPCURLClassifierFeature>& aFeatures);
const URIParams& aUri,
const nsTArray<IPCURLClassifierFeature>& aFeatures);
bool DeallocPURLClassifierLocalChild(PURLClassifierLocalChild* aActor);
PLoginReputationChild* AllocPLoginReputationChild(nsIURI* aUri);
PLoginReputationChild* AllocPLoginReputationChild(const URIParams& aUri);
bool DeallocPLoginReputationChild(PLoginReputationChild* aActor);

View File

@ -2398,9 +2398,9 @@ bool ContentParent::InitInternal(ProcessPriority aInitialPriority) {
// send the file URL instead.
auto* sheetCache = GlobalStyleSheetCache::Singleton();
if (StyleSheet* ucs = sheetCache->GetUserContentSheet()) {
xpcomInit.userContentSheetURL() = ucs->GetSheetURI();
SerializeURI(ucs->GetSheetURI(), xpcomInit.userContentSheetURL());
} else {
xpcomInit.userContentSheetURL() = nullptr;
SerializeURI(nullptr, xpcomInit.userContentSheetURL());
}
// 1. Build ContentDeviceData first, as it may affect some gfxVars.
@ -2528,17 +2528,22 @@ bool ContentParent::InitInternal(ProcessPriority aInitialPriority) {
// shouldn't matter which we look at.
for (StyleSheet* sheet : *sheetService->AgentStyleSheets()) {
Unused << SendLoadAndRegisterSheet(sheet->GetSheetURI(),
URIParams uri;
SerializeURI(sheet->GetSheetURI(), uri);
Unused << SendLoadAndRegisterSheet(uri,
nsIStyleSheetService::AGENT_SHEET);
}
for (StyleSheet* sheet : *sheetService->UserStyleSheets()) {
Unused << SendLoadAndRegisterSheet(sheet->GetSheetURI(),
nsIStyleSheetService::USER_SHEET);
URIParams uri;
SerializeURI(sheet->GetSheetURI(), uri);
Unused << SendLoadAndRegisterSheet(uri, nsIStyleSheetService::USER_SHEET);
}
for (StyleSheet* sheet : *sheetService->AuthorStyleSheets()) {
Unused << SendLoadAndRegisterSheet(sheet->GetSheetURI(),
URIParams uri;
SerializeURI(sheet->GetSheetURI(), uri);
Unused << SendLoadAndRegisterSheet(uri,
nsIStyleSheetService::AUTHOR_SHEET);
}
}
@ -2827,13 +2832,14 @@ mozilla::ipc::IPCResult ContentParent::RecvGetExternalClipboardFormats(
return IPC_OK();
}
mozilla::ipc::IPCResult ContentParent::RecvPlaySound(nsIURI* aURI) {
mozilla::ipc::IPCResult ContentParent::RecvPlaySound(const URIParams& aURI) {
nsCOMPtr<nsIURI> soundURI = DeserializeURI(aURI);
// If the check here fails, it can only mean that this message was spoofed.
if (!aURI || !aURI->SchemeIs("chrome")) {
if (!soundURI || !soundURI->SchemeIs("chrome")) {
// PlaySound only accepts a valid chrome URI.
return IPC_FAIL_NO_REASON(this);
}
nsCOMPtr<nsIURL> soundURL(do_QueryInterface(aURI));
nsCOMPtr<nsIURL> soundURL(do_QueryInterface(soundURI));
if (!soundURL) {
return IPC_OK();
}
@ -3636,12 +3642,14 @@ bool ContentParent::DeallocPParentToChildStreamParent(
already_AddRefed<PExternalHelperAppParent>
ContentParent::AllocPExternalHelperAppParent(
nsIURI* uri, const Maybe<mozilla::net::LoadInfoArgs>& aLoadInfoArgs,
const Maybe<URIParams>& uri,
const Maybe<mozilla::net::LoadInfoArgs>& aLoadInfoArgs,
const nsCString& aMimeContentType, const nsCString& aContentDisposition,
const uint32_t& aContentDispositionHint,
const nsString& aContentDispositionFilename, const bool& aForceSave,
const int64_t& aContentLength, const bool& aWasFileChannel,
nsIURI* aReferrer, const MaybeDiscarded<BrowsingContext>& aContext,
const Maybe<URIParams>& aReferrer,
const MaybeDiscarded<BrowsingContext>& aContext,
const bool& aShouldCloseWindow) {
RefPtr<ExternalHelperAppParent> parent = new ExternalHelperAppParent(
uri, aContentLength, aWasFileChannel, aContentDisposition,
@ -3650,13 +3658,14 @@ ContentParent::AllocPExternalHelperAppParent(
}
mozilla::ipc::IPCResult ContentParent::RecvPExternalHelperAppConstructor(
PExternalHelperAppParent* actor, nsIURI* uri,
PExternalHelperAppParent* actor, const Maybe<URIParams>& uri,
const Maybe<LoadInfoArgs>& loadInfoArgs, const nsCString& aMimeContentType,
const nsCString& aContentDisposition,
const uint32_t& aContentDispositionHint,
const nsString& aContentDispositionFilename, const bool& aForceSave,
const int64_t& aContentLength, const bool& aWasFileChannel,
nsIURI* aReferrer, const MaybeDiscarded<BrowsingContext>& aContext,
const Maybe<URIParams>& aReferrer,
const MaybeDiscarded<BrowsingContext>& aContext,
const bool& aShouldCloseWindow) {
BrowsingContext* context = aContext.IsDiscarded() ? nullptr : aContext.get();
static_cast<ExternalHelperAppParent*>(actor)->Init(
@ -3729,43 +3738,46 @@ mozilla::ipc::IPCResult ContentParent::RecvPSpeechSynthesisConstructor(
#endif
mozilla::ipc::IPCResult ContentParent::RecvStartVisitedQueries(
const nsTArray<RefPtr<nsIURI>>& aUris) {
const nsTArray<URIParams>& aUris) {
nsCOMPtr<IHistory> history = services::GetHistoryService();
if (!history) {
return IPC_OK();
}
for (const auto& params : aUris) {
if (NS_WARN_IF(!params)) {
nsCOMPtr<nsIURI> uri = DeserializeURI(params);
if (NS_WARN_IF(!uri)) {
continue;
}
history->RegisterVisitedCallback(params, nullptr);
history->RegisterVisitedCallback(uri, nullptr);
}
return IPC_OK();
}
mozilla::ipc::IPCResult ContentParent::RecvSetURITitle(nsIURI* uri,
mozilla::ipc::IPCResult ContentParent::RecvSetURITitle(const URIParams& uri,
const nsString& title) {
if (!uri) {
nsCOMPtr<nsIURI> ourURI = DeserializeURI(uri);
if (!ourURI) {
return IPC_FAIL_NO_REASON(this);
}
nsCOMPtr<IHistory> history = services::GetHistoryService();
if (history) {
history->SetURITitle(uri, title);
history->SetURITitle(ourURI, title);
}
return IPC_OK();
}
mozilla::ipc::IPCResult ContentParent::RecvIsSecureURI(
const uint32_t& aType, nsIURI* aURI, const uint32_t& aFlags,
const uint32_t& aType, const URIParams& aURI, const uint32_t& aFlags,
const OriginAttributes& aOriginAttributes, bool* aIsSecureURI) {
nsCOMPtr<nsISiteSecurityService> sss(do_GetService(NS_SSSERVICE_CONTRACTID));
if (!sss) {
return IPC_FAIL_NO_REASON(this);
}
if (!aURI) {
nsCOMPtr<nsIURI> ourURI = DeserializeURI(aURI);
if (!ourURI) {
return IPC_FAIL_NO_REASON(this);
}
nsresult rv = sss->IsSecureURI(aType, aURI, aFlags, aOriginAttributes,
nsresult rv = sss->IsSecureURI(aType, ourURI, aFlags, aOriginAttributes,
nullptr, nullptr, aIsSecureURI);
if (NS_FAILED(rv)) {
return IPC_FAIL_NO_REASON(this);
@ -3774,31 +3786,32 @@ mozilla::ipc::IPCResult ContentParent::RecvIsSecureURI(
}
mozilla::ipc::IPCResult ContentParent::RecvAccumulateMixedContentHSTS(
nsIURI* aURI, const bool& aActive,
const URIParams& aURI, const bool& aActive,
const OriginAttributes& aOriginAttributes) {
if (!aURI) {
nsCOMPtr<nsIURI> ourURI = DeserializeURI(aURI);
if (!ourURI) {
return IPC_FAIL_NO_REASON(this);
}
nsMixedContentBlocker::AccumulateMixedContentHSTS(aURI, aActive,
nsMixedContentBlocker::AccumulateMixedContentHSTS(ourURI, aActive,
aOriginAttributes);
return IPC_OK();
}
mozilla::ipc::IPCResult ContentParent::RecvLoadURIExternal(
nsIURI* uri, PBrowserParent* windowContext) {
const URIParams& uri, PBrowserParent* windowContext) {
nsCOMPtr<nsIExternalProtocolService> extProtService(
do_GetService(NS_EXTERNALPROTOCOLSERVICE_CONTRACTID));
if (!extProtService) {
return IPC_OK();
}
if (!uri) {
nsCOMPtr<nsIURI> ourURI = DeserializeURI(uri);
if (!ourURI) {
return IPC_FAIL_NO_REASON(this);
}
RefPtr<RemoteWindowContext> context =
new RemoteWindowContext(static_cast<BrowserParent*>(windowContext));
extProtService->LoadURI(uri, context);
extProtService->LoadURI(ourURI, context);
return IPC_OK();
}
@ -4180,9 +4193,10 @@ nsresult ContentParent::DoSendAsyncMessage(JSContext* aCx,
mozilla::ipc::IPCResult ContentParent::RecvKeywordToURI(
const nsCString& aKeyword, const bool& aIsPrivateContext,
nsString* aProviderName, RefPtr<nsIInputStream>* aPostData,
RefPtr<nsIURI>* aURI) {
Maybe<URIParams>* aURI) {
*aPostData = nullptr;
*aURI = nullptr;
*aURI = Nothing();
nsCOMPtr<nsIURIFixup> fixup = components::URIFixup::Service();
if (!fixup) {
return IPC_OK();
@ -4196,9 +4210,10 @@ mozilla::ipc::IPCResult ContentParent::RecvKeywordToURI(
return IPC_OK();
}
info->GetKeywordProviderName(*aProviderName);
nsCOMPtr<nsIURI> uri;
info->GetPreferredURI(getter_AddRefs(uri));
*aURI = uri;
SerializeURI(uri, *aURI);
return IPC_OK();
}
@ -4223,16 +4238,18 @@ mozilla::ipc::IPCResult ContentParent::RecvNotifyKeywordSearchLoading(
}
mozilla::ipc::IPCResult ContentParent::RecvCopyFavicon(
nsIURI* aOldURI, nsIURI* aNewURI, const IPC::Principal& aLoadingPrincipal,
const bool& aInPrivateBrowsing) {
if (!aOldURI) {
return IPC_FAIL(this, "aOldURI should not be null");
const URIParams& aOldURI, const URIParams& aNewURI,
const IPC::Principal& aLoadingPrincipal, const bool& aInPrivateBrowsing) {
nsCOMPtr<nsIURI> oldURI = DeserializeURI(aOldURI);
if (!oldURI) {
return IPC_OK();
}
if (!aNewURI) {
return IPC_FAIL(this, "aNewURI should not be null");
nsCOMPtr<nsIURI> newURI = DeserializeURI(aNewURI);
if (!newURI) {
return IPC_OK();
}
nsDocShell::CopyFavicon(aOldURI, aNewURI, aLoadingPrincipal,
nsDocShell::CopyFavicon(oldURI, newURI, aLoadingPrincipal,
aInPrivateBrowsing);
return IPC_OK();
}
@ -4448,7 +4465,7 @@ void ContentParent::NotifyRebuildFontList() {
already_AddRefed<mozilla::docshell::POfflineCacheUpdateParent>
ContentParent::AllocPOfflineCacheUpdateParent(
nsIURI* aManifestURI, nsIURI* aDocumentURI,
const URIParams& aManifestURI, const URIParams& aDocumentURI,
const PrincipalInfo& aLoadingPrincipalInfo, const bool& aStickDocument,
const CookieJarSettingsArgs& aCookieJarSettingsArgs) {
RefPtr<mozilla::docshell::OfflineCacheUpdateParent> update =
@ -4457,8 +4474,8 @@ ContentParent::AllocPOfflineCacheUpdateParent(
}
mozilla::ipc::IPCResult ContentParent::RecvPOfflineCacheUpdateConstructor(
POfflineCacheUpdateParent* aActor, nsIURI* aManifestURI,
nsIURI* aDocumentURI, const PrincipalInfo& aLoadingPrincipal,
POfflineCacheUpdateParent* aActor, const URIParams& aManifestURI,
const URIParams& aDocumentURI, const PrincipalInfo& aLoadingPrincipal,
const bool& aStickDocument,
const CookieJarSettingsArgs& aCookieJarSettingsArgs) {
MOZ_ASSERT(aActor);
@ -4825,10 +4842,10 @@ mozilla::ipc::IPCResult ContentParent::CommonCreateWindow(
mozilla::ipc::IPCResult ContentParent::RecvCreateWindow(
PBrowserParent* aThisTab, PBrowserParent* aNewTab,
const uint32_t& aChromeFlags, const bool& aCalledFromJS,
const bool& aWidthSpecified, nsIURI* aURIToLoad, const nsCString& aFeatures,
const float& aFullZoom, const IPC::Principal& aTriggeringPrincipal,
nsIContentSecurityPolicy* aCsp, nsIReferrerInfo* aReferrerInfo,
CreateWindowResolver&& aResolve) {
const bool& aWidthSpecified, const Maybe<URIParams>& aURIToLoad,
const nsCString& aFeatures, const float& aFullZoom,
const IPC::Principal& aTriggeringPrincipal, nsIContentSecurityPolicy* aCsp,
nsIReferrerInfo* aReferrerInfo, CreateWindowResolver&& aResolve) {
nsresult rv = NS_OK;
CreatedWindowInfo cwi;
@ -4861,11 +4878,13 @@ mozilla::ipc::IPCResult ContentParent::RecvCreateWindow(
const uint64_t nextRemoteTabId = ++sNextRemoteTabId;
sNextBrowserParents.Put(nextRemoteTabId, newTab);
const nsCOMPtr<nsIURI> uriToLoad = DeserializeURI(aURIToLoad);
nsCOMPtr<nsIRemoteTab> newRemoteTab;
int32_t openLocation = nsIBrowserDOMWindow::OPEN_NEWWINDOW;
mozilla::ipc::IPCResult ipcResult = CommonCreateWindow(
aThisTab, /* aSetOpener = */ true, aChromeFlags, aCalledFromJS,
aWidthSpecified, aURIToLoad, aFeatures, aFullZoom, nextRemoteTabId,
aWidthSpecified, uriToLoad, aFeatures, aFullZoom, nextRemoteTabId,
VoidString(), rv, newRemoteTab, &cwi.windowOpened(), openLocation,
aTriggeringPrincipal, aReferrerInfo,
/* aLoadUri = */ false, aCsp);
@ -4899,19 +4918,21 @@ mozilla::ipc::IPCResult ContentParent::RecvCreateWindow(
mozilla::ipc::IPCResult ContentParent::RecvCreateWindowInDifferentProcess(
PBrowserParent* aThisTab, const uint32_t& aChromeFlags,
const bool& aCalledFromJS, const bool& aWidthSpecified, nsIURI* aURIToLoad,
const nsCString& aFeatures, const float& aFullZoom, const nsString& aName,
const bool& aCalledFromJS, const bool& aWidthSpecified,
const Maybe<URIParams>& aURIToLoad, const nsCString& aFeatures,
const float& aFullZoom, const nsString& aName,
nsIPrincipal* aTriggeringPrincipal, nsIContentSecurityPolicy* aCsp,
nsIReferrerInfo* aReferrerInfo) {
MOZ_DIAGNOSTIC_ASSERT(!nsContentUtils::IsSpecialName(aName));
nsCOMPtr<nsIRemoteTab> newRemoteTab;
bool windowIsNew;
nsCOMPtr<nsIURI> uriToLoad = DeserializeURI(aURIToLoad);
int32_t openLocation = nsIBrowserDOMWindow::OPEN_NEWWINDOW;
// If we have enough data, check the schemes of the loader and loadee
// to make sure they make sense.
if (aURIToLoad && aURIToLoad->SchemeIs("file") &&
if (uriToLoad && uriToLoad->SchemeIs("file") &&
!GetRemoteType().EqualsLiteral(FILE_REMOTE_TYPE) &&
Preferences::GetBool("browser.tabs.remote.enforceRemoteTypeRestrictions",
false)) {
@ -4919,7 +4940,7 @@ mozilla::ipc::IPCResult ContentParent::RecvCreateWindowInDifferentProcess(
# ifdef DEBUG
nsAutoCString uriToLoadStr;
nsAutoCString triggeringUriStr;
aURIToLoad->GetAsciiSpec(uriToLoadStr);
uriToLoad->GetAsciiSpec(uriToLoadStr);
aTriggeringPrincipal->GetAsciiSpec(triggeringUriStr);
NS_WARNING(nsPrintfCString(
@ -4937,7 +4958,7 @@ mozilla::ipc::IPCResult ContentParent::RecvCreateWindowInDifferentProcess(
nsresult rv;
mozilla::ipc::IPCResult ipcResult = CommonCreateWindow(
aThisTab, /* aSetOpener = */ false, aChromeFlags, aCalledFromJS,
aWidthSpecified, aURIToLoad, aFeatures, aFullZoom,
aWidthSpecified, uriToLoad, aFeatures, aFullZoom,
/* aNextRemoteTabId = */ 0, aName, rv, newRemoteTab, &windowIsNew,
openLocation, aTriggeringPrincipal, aReferrerInfo,
/* aLoadUri = */ true, aCsp);
@ -5012,13 +5033,14 @@ mozilla::ipc::IPCResult ContentParent::RecvSetupFamilyCharMap(
}
mozilla::ipc::IPCResult ContentParent::RecvGetHyphDict(
nsIURI* aURI, mozilla::ipc::SharedMemoryBasic::Handle* aOutHandle,
uint32_t* aOutSize) {
if (!aURI) {
const mozilla::ipc::URIParams& aURI,
mozilla::ipc::SharedMemoryBasic::Handle* aOutHandle, uint32_t* aOutSize) {
nsCOMPtr<nsIURI> uri = DeserializeURI(aURI);
if (!uri) {
return IPC_FAIL_NO_REASON(this);
}
nsHyphenationManager::Instance()->ShareHyphDictToProcess(
aURI, Pid(), aOutHandle, aOutSize);
uri, Pid(), aOutHandle, aOutSize);
return IPC_OK();
}
@ -5565,7 +5587,7 @@ bool ContentParent::DeallocPURLClassifierParent(PURLClassifierParent* aActor) {
// PURLClassifierLocalParent
PURLClassifierLocalParent* ContentParent::AllocPURLClassifierLocalParent(
nsIURI* aURI, const nsTArray<IPCURLClassifierFeature>& aFeatures) {
const URIParams& aURI, const nsTArray<IPCURLClassifierFeature>& aFeatures) {
MOZ_ASSERT(NS_IsMainThread());
RefPtr<URLClassifierLocalParent> actor = new URLClassifierLocalParent();
@ -5573,20 +5595,21 @@ PURLClassifierLocalParent* ContentParent::AllocPURLClassifierLocalParent(
}
mozilla::ipc::IPCResult ContentParent::RecvPURLClassifierLocalConstructor(
PURLClassifierLocalParent* aActor, nsIURI* aURI,
PURLClassifierLocalParent* aActor, const URIParams& aURI,
nsTArray<IPCURLClassifierFeature>&& aFeatures) {
MOZ_ASSERT(NS_IsMainThread());
MOZ_ASSERT(aActor);
nsTArray<IPCURLClassifierFeature> features = std::move(aFeatures);
if (!aURI) {
NS_WARNING("aURI should not be null");
nsCOMPtr<nsIURI> uri = DeserializeURI(aURI);
if (!uri) {
NS_WARNING("Failed to DeserializeURI");
return IPC_FAIL_NO_REASON(this);
}
auto* actor = static_cast<URLClassifierLocalParent*>(aActor);
return actor->StartClassify(aURI, features);
return actor->StartClassify(uri, features);
}
bool ContentParent::DeallocPURLClassifierLocalParent(
@ -5600,7 +5623,7 @@ bool ContentParent::DeallocPURLClassifierLocalParent(
}
PLoginReputationParent* ContentParent::AllocPLoginReputationParent(
nsIURI* aURI) {
const URIParams& aURI) {
MOZ_ASSERT(NS_IsMainThread());
RefPtr<LoginReputationParent> actor = new LoginReputationParent();
@ -5608,16 +5631,17 @@ PLoginReputationParent* ContentParent::AllocPLoginReputationParent(
}
mozilla::ipc::IPCResult ContentParent::RecvPLoginReputationConstructor(
PLoginReputationParent* aActor, nsIURI* aURI) {
PLoginReputationParent* aActor, const URIParams& aURI) {
MOZ_ASSERT(NS_IsMainThread());
MOZ_ASSERT(aActor);
if (!aURI) {
nsCOMPtr<nsIURI> uri = DeserializeURI(aURI);
if (!uri) {
return IPC_FAIL_NO_REASON(this);
}
auto* actor = static_cast<LoginReputationParent*>(aActor);
return actor->QueryReputation(aURI);
return actor->QueryReputation(uri);
}
bool ContentParent::DeallocPLoginReputationParent(

View File

@ -94,6 +94,7 @@ class PrintingParent;
namespace ipc {
class CrashReporterHost;
class PFileDescriptorSetParent;
class URIParams;
class TestShellParent;
#ifdef FUZZING
class ProtocolFuzzerHelper;
@ -148,6 +149,7 @@ class ContentParent final
typedef mozilla::ipc::GeckoChildProcessHost GeckoChildProcessHost;
typedef mozilla::ipc::PFileDescriptorSetParent PFileDescriptorSetParent;
typedef mozilla::ipc::TestShellParent TestShellParent;
typedef mozilla::ipc::URIParams URIParams;
typedef mozilla::ipc::PrincipalInfo PrincipalInfo;
typedef mozilla::dom::ClonedMessageData ClonedMessageData;
typedef mozilla::dom::BrowsingContextGroup BrowsingContextGroup;
@ -487,13 +489,13 @@ class ContentParent final
const ContentParentId& aCpId);
already_AddRefed<POfflineCacheUpdateParent> AllocPOfflineCacheUpdateParent(
nsIURI* aManifestURI, nsIURI* aDocumentURI,
const URIParams& aManifestURI, const URIParams& aDocumentURI,
const PrincipalInfo& aLoadingPrincipalInfo, const bool& aStickDocument,
const CookieJarSettingsArgs& aCookieJarSettingsArgs);
virtual mozilla::ipc::IPCResult RecvPOfflineCacheUpdateConstructor(
POfflineCacheUpdateParent* aActor, nsIURI* aManifestURI,
nsIURI* aDocumentURI, const PrincipalInfo& aLoadingPrincipal,
POfflineCacheUpdateParent* aActor, const URIParams& aManifestURI,
const URIParams& aDocumentURI, const PrincipalInfo& aLoadingPrincipal,
const bool& stickDocument,
const CookieJarSettingsArgs& aCookieJarSettingsArgs) override;
@ -521,7 +523,7 @@ class ContentParent final
mozilla::ipc::IPCResult RecvCreateWindow(
PBrowserParent* aThisBrowserParent, PBrowserParent* aNewTab,
const uint32_t& aChromeFlags, const bool& aCalledFromJS,
const bool& aWidthSpecified, nsIURI* aURIToLoad,
const bool& aWidthSpecified, const Maybe<URIParams>& aURIToLoad,
const nsCString& aFeatures, const float& aFullZoom,
const IPC::Principal& aTriggeringPrincipal,
nsIContentSecurityPolicy* aCsp, nsIReferrerInfo* aReferrerInfo,
@ -530,7 +532,7 @@ class ContentParent final
mozilla::ipc::IPCResult RecvCreateWindowInDifferentProcess(
PBrowserParent* aThisTab, const uint32_t& aChromeFlags,
const bool& aCalledFromJS, const bool& aWidthSpecified,
nsIURI* aURIToLoad, const nsCString& aFeatures,
const Maybe<URIParams>& aURIToLoad, const nsCString& aFeatures,
const float& aFullZoom, const nsString& aName,
nsIPrincipal* aTriggeringPrincipal, nsIContentSecurityPolicy* aCsp,
nsIReferrerInfo* aReferrerInfo);
@ -565,16 +567,17 @@ class ContentParent final
// PURLClassifierLocalParent.
PURLClassifierLocalParent* AllocPURLClassifierLocalParent(
nsIURI* aURI, const nsTArray<IPCURLClassifierFeature>& aFeatures);
const URIParams& aURI,
const nsTArray<IPCURLClassifierFeature>& aFeatures);
virtual mozilla::ipc::IPCResult RecvPURLClassifierLocalConstructor(
PURLClassifierLocalParent* aActor, nsIURI* aURI,
PURLClassifierLocalParent* aActor, const URIParams& aURI,
nsTArray<IPCURLClassifierFeature>&& aFeatures) override;
PLoginReputationParent* AllocPLoginReputationParent(nsIURI* aURI);
PLoginReputationParent* AllocPLoginReputationParent(const URIParams& aURI);
virtual mozilla::ipc::IPCResult RecvPLoginReputationConstructor(
PLoginReputationParent* aActor, nsIURI* aURI) override;
PLoginReputationParent* aActor, const URIParams& aURI) override;
bool DeallocPLoginReputationParent(PLoginReputationParent* aActor);
@ -888,11 +891,11 @@ class ContentParent final
const uint32_t& chromeFlags);
mozilla::ipc::IPCResult RecvIsSecureURI(
const uint32_t& aType, nsIURI* aURI, const uint32_t& aFlags,
const uint32_t& aType, const URIParams& aURI, const uint32_t& aFlags,
const OriginAttributes& aOriginAttributes, bool* aIsSecureURI);
mozilla::ipc::IPCResult RecvAccumulateMixedContentHSTS(
nsIURI* aURI, const bool& aActive,
const URIParams& aURI, const bool& aActive,
const OriginAttributes& aOriginAttributes);
bool DeallocPHalParent(PHalParent*);
@ -918,22 +921,25 @@ class ContentParent final
bool DeallocPNeckoParent(PNeckoParent* necko);
already_AddRefed<PExternalHelperAppParent> AllocPExternalHelperAppParent(
nsIURI* aUri, const Maybe<mozilla::net::LoadInfoArgs>& aLoadInfoArgs,
const Maybe<URIParams>& aUri,
const Maybe<mozilla::net::LoadInfoArgs>& aLoadInfoArgs,
const nsCString& aMimeContentType, const nsCString& aContentDisposition,
const uint32_t& aContentDispositionHint,
const nsString& aContentDispositionFilename, const bool& aForceSave,
const int64_t& aContentLength, const bool& aWasFileChannel,
nsIURI* aReferrer, const MaybeDiscarded<BrowsingContext>& aContext,
const Maybe<URIParams>& aReferrer,
const MaybeDiscarded<BrowsingContext>& aContext,
const bool& aShouldCloseWindow);
mozilla::ipc::IPCResult RecvPExternalHelperAppConstructor(
PExternalHelperAppParent* actor, nsIURI* uri,
PExternalHelperAppParent* actor, const Maybe<URIParams>& uri,
const Maybe<LoadInfoArgs>& loadInfoArgs,
const nsCString& aMimeContentType, const nsCString& aContentDisposition,
const uint32_t& aContentDispositionHint,
const nsString& aContentDispositionFilename, const bool& aForceSave,
const int64_t& aContentLength, const bool& aWasFileChannel,
nsIURI* aReferrer, const MaybeDiscarded<BrowsingContext>& aContext,
const Maybe<URIParams>& aReferrer,
const MaybeDiscarded<BrowsingContext>& aContext,
const bool& aShouldCloseWindow) override;
already_AddRefed<PHandlerServiceParent> AllocPHandlerServiceParent();
@ -988,7 +994,7 @@ class ContentParent final
const int32_t& aWhichClipboard, const bool& aPlainTextOnly,
nsTArray<nsCString>* aTypes);
mozilla::ipc::IPCResult RecvPlaySound(nsIURI* aURI);
mozilla::ipc::IPCResult RecvPlaySound(const URIParams& aURI);
mozilla::ipc::IPCResult RecvBeep();
mozilla::ipc::IPCResult RecvPlayEventSound(const uint32_t& aEventId);
@ -998,10 +1004,10 @@ class ContentParent final
mozilla::ipc::IPCResult RecvGetShowPasswordSetting(bool* showPassword);
mozilla::ipc::IPCResult RecvStartVisitedQueries(
const nsTArray<RefPtr<nsIURI>>&);
mozilla::ipc::IPCResult RecvStartVisitedQueries(const nsTArray<URIParams>&);
mozilla::ipc::IPCResult RecvSetURITitle(nsIURI* uri, const nsString& title);
mozilla::ipc::IPCResult RecvSetURITitle(const URIParams& uri,
const nsString& title);
bool HasNotificationPermission(const IPC::Principal& aPrincipal);
@ -1019,7 +1025,7 @@ class ContentParent final
mozilla::ipc::IPCResult RecvNotificationEvent(
const nsString& aType, const NotificationEventData& aData);
mozilla::ipc::IPCResult RecvLoadURIExternal(nsIURI* uri,
mozilla::ipc::IPCResult RecvLoadURIExternal(const URIParams& uri,
PBrowserParent* windowContext);
mozilla::ipc::IPCResult RecvExtProtocolChannelConnectParent(
const uint32_t& registrarId);
@ -1095,14 +1101,14 @@ class ContentParent final
const bool& aIsPrivateContext,
nsString* aProviderName,
RefPtr<nsIInputStream>* aPostData,
RefPtr<nsIURI>* aURI);
Maybe<URIParams>* aURI);
mozilla::ipc::IPCResult RecvNotifyKeywordSearchLoading(
const nsString& aProvider, const nsString& aKeyword);
mozilla::ipc::IPCResult RecvCopyFavicon(
nsIURI* aOldURI, nsIURI* aNewURI, const IPC::Principal& aLoadingPrincipal,
const bool& aInPrivateBrowsing);
const URIParams& aOldURI, const URIParams& aNewURI,
const IPC::Principal& aLoadingPrincipal, const bool& aInPrivateBrowsing);
virtual void ProcessingError(Result aCode, const char* aMsgName) override;
@ -1164,8 +1170,8 @@ class ContentParent final
const mozilla::fontlist::Pointer& aFamilyPtr);
mozilla::ipc::IPCResult RecvGetHyphDict(
nsIURI* aURIParams, mozilla::ipc::SharedMemoryBasic::Handle* aOutHandle,
uint32_t* aOutSize);
const mozilla::ipc::URIParams& aURIParams,
mozilla::ipc::SharedMemoryBasic::Handle* aOutHandle, uint32_t* aOutSize);
mozilla::ipc::IPCResult RecvNotifyBenchmarkResult(const nsString& aCodecName,
const uint32_t& aDecodeFPS);

View File

@ -54,6 +54,7 @@ include JavaScriptTypes;
include IPCBlob;
include IPCStream;
include PTabContext;
include URIParams;
include PluginTypes;
include ProtocolTypes;
include PBackgroundSharedTypes;
@ -190,10 +191,10 @@ union FileDescOrError {
struct DomainPolicyClone
{
bool active;
nsIURI[] blocklist;
nsIURI[] allowlist;
nsIURI[] superBlocklist;
nsIURI[] superAllowlist;
URIParams[] blocklist;
URIParams[] allowlist;
URIParams[] superBlocklist;
URIParams[] superAllowlist;
};
struct AndroidSystemInfo
@ -281,7 +282,7 @@ struct XPCOMInitData
nsString[] dictionaries;
ClipboardCapabilities clipboardCaps;
DomainPolicyClone domainPolicy;
nsIURI userContentSheetURL;
URIParams? userContentSheetURL;
GfxVarUpdate[] gfxNonDefaultVarUpdates;
ContentDeviceData contentDeviceData;
GfxInfoFeatureStatus[] gfxFeatureStatus;
@ -293,7 +294,7 @@ struct XPCOMInitData
struct VisitedQueryResult
{
nsIURI uri;
URIParams uri;
bool visited;
};
@ -633,8 +634,8 @@ child:
/**
* Used to manage nsIStyleSheetService across processes.
*/
async LoadAndRegisterSheet(nsIURI uri, uint32_t type);
async UnregisterSheet(nsIURI uri, uint32_t type);
async LoadAndRegisterSheet(URIParams uri, uint32_t type);
async UnregisterSheet(URIParams uri, uint32_t type);
/**
* Notify idle observers in the child
@ -647,7 +648,7 @@ child:
LayoutDeviceIntPoint aDragEndPoint,
uint32_t aKeyModifiers);
async DomainSetChanged(uint32_t aSetType, uint32_t aChangeType, nsIURI aDomain);
async DomainSetChanged(uint32_t aSetType, uint32_t aChangeType, URIParams? aDomain);
/**
* Notify the child to shutdown. The child will in turn call FinishShutdown
@ -890,11 +891,11 @@ parent:
async InitCrashReporter(Shmem shmem, NativeThreadId tid);
sync IsSecureURI(uint32_t aType, nsIURI aURI, uint32_t aFlags,
sync IsSecureURI(uint32_t aType, URIParams aURI, uint32_t aFlags,
OriginAttributes aOriginAttributes)
returns (bool isSecureURI);
async AccumulateMixedContentHSTS(nsIURI aURI, bool aActive,
async AccumulateMixedContentHSTS(URIParams aURI, bool aActive,
OriginAttributes aOriginAttributes);
nested(inside_cpow) async PHal();
@ -922,9 +923,9 @@ parent:
sync PURLClassifier(Principal principal)
returns (bool success);
async PURLClassifierLocal(nsIURI uri, IPCURLClassifierFeature[] features);
async PURLClassifierLocal(URIParams uri, IPCURLClassifierFeature[] features);
async PLoginReputation(nsIURI formURI);
async PLoginReputation(URIParams formURI);
async PSessionStorageObserver();
@ -937,10 +938,10 @@ parent:
// Services remoting
async StartVisitedQueries(nsIURI[] uri);
async SetURITitle(nsIURI uri, nsString title);
async StartVisitedQueries(URIParams[] uri);
async SetURITitle(URIParams uri, nsString title);
async LoadURIExternal(nsIURI uri, PBrowser windowContext);
async LoadURIExternal(URIParams uri, PBrowser windowContext);
async ExtProtocolChannelConnectParent(uint32_t registrarId);
// PrefService message
@ -996,7 +997,7 @@ parent:
// nsIMIMEInfo and other such influences.
// Pass true for aShouldCloseWindow to specify that aContext was opened specifically
// for this load, and should be closed once we've handled it.
async PExternalHelperApp(nsIURI uri,
async PExternalHelperApp(URIParams? uri,
LoadInfoArgs? loadInfoArgs,
nsCString aMimeContentType,
nsCString aContentDisposition,
@ -1005,7 +1006,7 @@ parent:
bool aForceSave,
int64_t aContentLength,
bool aWasFileChannel,
nsIURI aReferrer,
URIParams? aReferrer,
MaybeDiscardedBrowsingContext aContext,
bool aShouldCloseWindow);
@ -1045,7 +1046,7 @@ parent:
// 'Play', 'Beep' and 'PlayEventSound' are the only nsISound methods used in
// the content process.
async PlaySound(nsIURI aURL) compress;
async PlaySound(URIParams aURL) compress;
async Beep() compress;
async PlayEventSound(uint32_t aEventId) compress;
@ -1064,11 +1065,11 @@ parent:
async DeviceReset();
sync KeywordToURI(nsCString keyword, bool isPrivateContext)
returns (nsString providerName, nsIInputStream postData, nsIURI uri);
returns (nsString providerName, nsIInputStream postData, URIParams? uri);
sync NotifyKeywordSearchLoading(nsString providerName, nsString keyword);
async CopyFavicon(nsIURI oldURI, nsIURI newURI, Principal aLoadingPrincipal, bool isPrivate);
async CopyFavicon(URIParams oldURI, URIParams newURI, Principal aLoadingPrincipal, bool isPrivate);
/**
* Notifies the parent about a recording device is starting or shutdown.
@ -1133,7 +1134,7 @@ parent:
* @param tabId
* To identify which tab owns the app.
*/
async POfflineCacheUpdate(nsIURI manifestURI, nsIURI documentURI,
async POfflineCacheUpdate(URIParams manifestURI, URIParams documentURI,
PrincipalInfo loadingPrincipal, bool stickDocument,
CookieJarSettingsArgs cookieJarSettings);
@ -1347,14 +1348,14 @@ parent:
* @param aLoaded
* Returns the size in bytes of the resource.
*/
sync GetHyphDict(nsIURI aURI) returns (Handle aHandle, uint32_t aSize);
sync GetHyphDict(URIParams aURI) returns (Handle aHandle, uint32_t aSize);
async CreateWindow(nullable PBrowser aThisTab,
PBrowser aNewTab,
uint32_t aChromeFlags,
bool aCalledFromJS,
bool aWidthSpecified,
nsIURI aURIToLoad,
URIParams? aURIToLoad,
nsCString aFeatures,
float aFullZoom,
Principal aTriggeringPrincipal,
@ -1367,7 +1368,7 @@ parent:
uint32_t aChromeFlags,
bool aCalledFromJS,
bool aWidthSpecified,
nsIURI aURIToLoad,
URIParams? aURIToLoad,
nsCString aFeatures,
float aFullZoom,
nsString aName,

View File

@ -986,8 +986,9 @@ nsresult nsMixedContentBlocker::ShouldLoad(
mozilla::dom::ContentChild* cc =
mozilla::dom::ContentChild::GetSingleton();
if (cc) {
cc->SendAccumulateMixedContentHSTS(innerContentLocation, active,
originAttributes);
mozilla::ipc::URIParams uri;
SerializeURI(innerContentLocation, uri);
cc->SendAccumulateMixedContentHSTS(uri, active, originAttributes);
}
}
}

View File

@ -64,8 +64,9 @@ already_AddRefed<ipc::SharedMemoryBasic> GetHyphDictFromParent(
MOZ_ASSERT(!XRE_IsParentProcess());
ipc::SharedMemoryBasic::Handle handle = ipc::SharedMemoryBasic::NULLHandle();
uint32_t size;
MOZ_ASSERT(aURI);
if (!dom::ContentChild::GetSingleton()->SendGetHyphDict(aURI, &handle,
ipc::URIParams params;
SerializeURI(aURI, params);
if (!dom::ContentChild::GetSingleton()->SendGetHyphDict(params, &handle,
&size)) {
return nullptr;
}

View File

@ -169,8 +169,11 @@ nsStyleSheetService::LoadAndRegisterSheet(nsIURI* aSheetURI,
return rv;
}
mozilla::ipc::URIParams uri;
SerializeURI(aSheetURI, uri);
for (uint32_t i = 0; i < children.Length(); i++) {
Unused << children[i]->SendLoadAndRegisterSheet(aSheetURI, aSheetType);
Unused << children[i]->SendLoadAndRegisterSheet(uri, aSheetType);
}
}
}
@ -324,8 +327,11 @@ nsStyleSheetService::UnregisterSheet(nsIURI* aSheetURI, uint32_t aSheetType) {
return NS_OK;
}
mozilla::ipc::URIParams uri;
SerializeURI(aSheetURI, uri);
for (uint32_t i = 0; i < children.Length(); i++) {
Unused << children[i]->SendUnregisterSheet(aSheetURI, aSheetType);
Unused << children[i]->SendUnregisterSheet(uri, aSheetType);
}
}

View File

@ -436,7 +436,7 @@ class VisitedQuery final : public AsyncStatementCallback {
AutoTArray<VisitedQueryResult, 1> results;
VisitedQueryResult& result = *results.AppendElement();
result.visited() = mIsVisited;
result.uri() = mURI;
SerializeURI(mURI, result.uri());
history->NotifyVisitedParent(results);
}
}
@ -584,7 +584,7 @@ class NotifyManyVisitsObservers : public Runnable {
if (BrowserTabsRemoteAutostart()) {
VisitedQueryResult& result = *results.AppendElement();
result.uri() = uris[i];
SerializeURI(uris[i], result.uri());
result.visited() = true;
}
}
@ -596,7 +596,7 @@ class NotifyManyVisitsObservers : public Runnable {
if (BrowserTabsRemoteAutostart()) {
VisitedQueryResult& result = *results.AppendElement();
result.uri() = uris[0];
SerializeURI(uris[0], result.uri());
result.visited() = true;
mHistory->NotifyVisitedParent(results);
}
@ -1993,9 +1993,12 @@ History::SetURITitle(nsIURI* aURI, const nsAString& aTitle) {
}
if (XRE_IsContentProcess()) {
URIParams uri;
SerializeURI(aURI, uri);
auto* cpc = dom::ContentChild::GetSingleton();
MOZ_ASSERT(cpc, "Content Protocol is NULL!");
Unused << cpc->SendSetURITitle(aURI, PromiseFlatString(aTitle));
Unused << cpc->SendSetURITitle(uri, PromiseFlatString(aTitle));
return NS_OK;
}
@ -2203,9 +2206,9 @@ History::IsURIVisited(nsIURI* aURI, mozIVisitedStatusCallback* aCallback) {
void History::StartPendingVisitedQueries(
const PendingVisitedQueries& aQueries) {
if (XRE_IsContentProcess()) {
nsTArray<RefPtr<nsIURI>> uris(aQueries.Count());
nsTArray<URIParams> uris(aQueries.Count());
for (auto iter = aQueries.ConstIter(); !iter.Done(); iter.Next()) {
uris.AppendElement(iter.Get()->GetKey());
SerializeURI(iter.Get()->GetKey(), *uris.AppendElement());
}
auto* cpc = mozilla::dom::ContentChild::GetSingleton();
MOZ_ASSERT(cpc, "Content Protocol is NULL!");

View File

@ -298,7 +298,10 @@ LoginReputationService::QueryReputationAsync(
return NS_ERROR_FAILURE;
}
if (!content->SendPLoginReputationConstructor(documentURI)) {
URIParams uri;
SerializeURI(documentURI, uri);
if (!content->SendPLoginReputationConstructor(uri)) {
return NS_ERROR_FAILURE;
}
} else {

View File

@ -2446,6 +2446,9 @@ nsUrlClassifierDBService::AsyncClassifyLocalWithFeatures(
mozilla::SystemGroup::EventTargetFor(mozilla::TaskCategory::Other);
content->SetEventTargetForActor(actor, systemGroupEventTarget);
URIParams uri;
SerializeURI(aURI, uri);
nsTArray<IPCURLClassifierFeature> ipcFeatures;
for (nsIUrlClassifierFeature* feature : aFeatures) {
nsAutoCString name;
@ -2470,8 +2473,7 @@ nsUrlClassifierDBService::AsyncClassifyLocalWithFeatures(
IPCURLClassifierFeature(name, tables, skipHostList));
}
if (!content->SendPURLClassifierLocalConstructor(actor, aURI,
ipcFeatures)) {
if (!content->SendPURLClassifierLocalConstructor(actor, uri, ipcFeatures)) {
return NS_ERROR_FAILURE;
}

View File

@ -34,11 +34,11 @@ NS_IMPL_ISUPPORTS_INHERITED(ExternalHelperAppParent, nsHashPropertyBag,
nsIStreamListener, nsIExternalHelperAppParent)
ExternalHelperAppParent::ExternalHelperAppParent(
nsIURI* uri, const int64_t& aContentLength, const bool& aWasFileChannel,
const nsCString& aContentDispositionHeader,
const Maybe<URIParams>& uri, const int64_t& aContentLength,
const bool& aWasFileChannel, const nsCString& aContentDispositionHeader,
const uint32_t& aContentDispositionHint,
const nsString& aContentDispositionFilename)
: mURI(uri),
: mURI(DeserializeURI(uri)),
mPending(false)
#ifdef DEBUG
,
@ -66,7 +66,7 @@ ExternalHelperAppParent::ExternalHelperAppParent(
void ExternalHelperAppParent::Init(
const Maybe<mozilla::net::LoadInfoArgs>& aLoadInfoArgs,
const nsCString& aMimeContentType, const bool& aForceSave,
nsIURI* aReferrer, BrowsingContext* aContext,
const Maybe<URIParams>& aReferrer, BrowsingContext* aContext,
const bool& aShouldCloseWindow) {
mozilla::ipc::LoadInfoArgsToLoadInfo(aLoadInfoArgs,
getter_AddRefs(mLoadInfo));
@ -75,10 +75,10 @@ void ExternalHelperAppParent::Init(
do_GetService(NS_EXTERNALHELPERAPPSERVICE_CONTRACTID);
NS_ASSERTION(helperAppService, "No Helper App Service!");
if (aReferrer) {
nsCOMPtr<nsIURI> referrer = DeserializeURI(aReferrer);
if (referrer)
SetPropertyAsInterface(NS_LITERAL_STRING("docshell.internalReferrer"),
aReferrer);
}
referrer);
if (aContext) {
WindowGlobalParent* parent =
@ -125,9 +125,7 @@ mozilla::ipc::IPCResult ExternalHelperAppParent::RecvOnStartRequest(
mozilla::ipc::IPCResult ExternalHelperAppParent::RecvOnDataAvailable(
const nsCString& data, const uint64_t& offset, const uint32_t& count) {
if (NS_FAILED(mStatus)) {
return IPC_OK();
}
if (NS_FAILED(mStatus)) return IPC_OK();
MOZ_ASSERT(!mDiverted,
"child forwarding callbacks after request was diverted");
@ -393,9 +391,7 @@ ExternalHelperAppParent::SetContentDisposition(uint32_t aContentDisposition) {
NS_IMETHODIMP
ExternalHelperAppParent::GetContentDispositionFilename(
nsAString& aContentDispositionFilename) {
if (mContentDispositionFilename.IsEmpty()) {
return NS_ERROR_NOT_AVAILABLE;
}
if (mContentDispositionFilename.IsEmpty()) return NS_ERROR_NOT_AVAILABLE;
aContentDispositionFilename = mContentDispositionFilename;
return NS_OK;
@ -411,9 +407,7 @@ ExternalHelperAppParent::SetContentDispositionFilename(
NS_IMETHODIMP
ExternalHelperAppParent::GetContentDispositionHeader(
nsACString& aContentDispositionHeader) {
if (mContentDispositionHeader.IsEmpty()) {
return NS_ERROR_NOT_AVAILABLE;
}
if (mContentDispositionHeader.IsEmpty()) return NS_ERROR_NOT_AVAILABLE;
aContentDispositionHeader = mContentDispositionHeader;
return NS_OK;
@ -421,11 +415,10 @@ ExternalHelperAppParent::GetContentDispositionHeader(
NS_IMETHODIMP
ExternalHelperAppParent::GetContentLength(int64_t* aContentLength) {
if (mContentLength < 0) {
if (mContentLength < 0)
*aContentLength = -1;
} else {
else
*aContentLength = mContentLength;
}
return NS_OK;
}

View File

@ -21,6 +21,10 @@ class nsExternalAppHandler;
namespace mozilla {
namespace ipc {
class URIParams;
} // namespace ipc
namespace net {
class PChannelDiverterParent;
} // namespace net
@ -80,15 +84,16 @@ class ExternalHelperAppParent
bool WasFileChannel() override { return mWasFileChannel; }
ExternalHelperAppParent(nsIURI* uri, const int64_t& contentLength,
ExternalHelperAppParent(const Maybe<mozilla::ipc::URIParams>& uri,
const int64_t& contentLength,
const bool& wasFileChannel,
const nsCString& aContentDispositionHeader,
const uint32_t& aContentDispositionHint,
const nsString& aContentDispositionFilename);
void Init(const Maybe<mozilla::net::LoadInfoArgs>& aLoadInfoArgs,
const nsCString& aMimeContentType, const bool& aForceSave,
nsIURI* aReferrer, BrowsingContext* aContext,
const bool& aShouldCloseWindow);
const Maybe<mozilla::ipc::URIParams>& aReferrer,
BrowsingContext* aContext, const bool& aShouldCloseWindow);
protected:
virtual ~ExternalHelperAppParent();

View File

@ -623,6 +623,10 @@ nsresult nsExternalHelperAppService::DoContentContentProcessHelper(
nsCOMPtr<nsIURI> referrer;
NS_GetReferrerFromChannel(channel, getter_AddRefs(referrer));
Maybe<URIParams> uriParams, referrerParams;
SerializeURI(uri, uriParams);
SerializeURI(referrer, referrerParams);
Maybe<mozilla::net::LoadInfoArgs> loadInfoArgs;
MOZ_ALWAYS_SUCCEEDS(LoadInfoToLoadInfoArgs(loadInfo, &loadInfoArgs));
@ -640,9 +644,9 @@ nsresult nsExternalHelperAppService::DoContentContentProcessHelper(
// DoContent.
RefPtr<ExternalHelperAppChild> childListener = new ExternalHelperAppChild();
MOZ_ALWAYS_TRUE(child->SendPExternalHelperAppConstructor(
childListener, uri, loadInfoArgs, nsCString(aMimeContentType), disp,
childListener, uriParams, loadInfoArgs, nsCString(aMimeContentType), disp,
contentDisposition, fileName, aForceSave, contentLength, wasFileChannel,
referrer, aContentContext, shouldCloseWindow));
referrerParams, aContentContext, shouldCloseWindow));
NS_ADDREF(*aStreamListener = childListener);
@ -925,9 +929,12 @@ nsExternalHelperAppService::LoadURI(nsIURI* aURI,
NS_ENSURE_ARG_POINTER(aURI);
if (XRE_IsContentProcess()) {
URIParams uri;
SerializeURI(aURI, uri);
nsCOMPtr<nsIBrowserChild> browserChild(do_GetInterface(aWindowContext));
mozilla::dom::ContentChild::GetSingleton()->SendLoadURIExternal(
aURI, static_cast<dom::BrowserChild*>(browserChild.get()));
uri, static_cast<dom::BrowserChild*>(browserChild.get()));
return NS_OK;
}

View File

@ -366,6 +366,10 @@ OfflineCacheUpdateChild::Schedule() {
return NS_ERROR_FAILURE;
}
URIParams manifestURI, documentURI;
SerializeURI(mManifestURI, manifestURI);
SerializeURI(mDocumentURI, documentURI);
nsresult rv = NS_OK;
PrincipalInfo loadingPrincipalInfo;
rv = PrincipalToPrincipalInfo(mLoadingPrincipal, &loadingPrincipalInfo);
@ -394,7 +398,7 @@ OfflineCacheUpdateChild::Schedule() {
}
ContentChild::GetSingleton()->SendPOfflineCacheUpdateConstructor(
this, mManifestURI, mDocumentURI, loadingPrincipalInfo, stickDocument,
this, manifestURI, documentURI, loadingPrincipalInfo, stickDocument,
csArgs);
return NS_OK;

View File

@ -70,7 +70,7 @@ void OfflineCacheUpdateParent::ActorDestroy(ActorDestroyReason why) {
}
nsresult OfflineCacheUpdateParent::Schedule(
nsIURI* aManifestURI, nsIURI* aDocumentURI,
const URIParams& aManifestURI, const URIParams& aDocumentURI,
const PrincipalInfo& aLoadingPrincipalInfo, const bool& stickDocument,
const CookieJarSettingsArgs& aCookieJarSettingsArgs) {
LOG(("OfflineCacheUpdateParent::RecvSchedule [%p]", this));
@ -78,48 +78,41 @@ nsresult OfflineCacheUpdateParent::Schedule(
nsresult rv;
RefPtr<nsOfflineCacheUpdate> update;
if (!aManifestURI) {
return NS_ERROR_FAILURE;
}
nsCOMPtr<nsIURI> manifestURI = DeserializeURI(aManifestURI);
if (!manifestURI) return NS_ERROR_FAILURE;
mLoadingPrincipal = PrincipalInfoToPrincipal(aLoadingPrincipalInfo, &rv);
NS_ENSURE_SUCCESS(rv, rv);
nsOfflineCacheUpdateService* service =
nsOfflineCacheUpdateService::EnsureService();
if (!service) {
return NS_ERROR_FAILURE;
}
if (!service) return NS_ERROR_FAILURE;
bool offlinePermissionAllowed = false;
rv = service->OfflineAppAllowed(mLoadingPrincipal, &offlinePermissionAllowed);
NS_ENSURE_SUCCESS(rv, rv);
if (!offlinePermissionAllowed) {
return NS_ERROR_DOM_SECURITY_ERR;
}
if (!offlinePermissionAllowed) return NS_ERROR_DOM_SECURITY_ERR;
if (!aDocumentURI) {
return NS_ERROR_FAILURE;
}
nsCOMPtr<nsIURI> documentURI = DeserializeURI(aDocumentURI);
if (!documentURI) return NS_ERROR_FAILURE;
if (!NS_SecurityCompareURIs(aManifestURI, aDocumentURI, false)) {
if (!NS_SecurityCompareURIs(manifestURI, documentURI, false))
return NS_ERROR_DOM_SECURITY_ERR;
}
nsAutoCString originSuffix;
rv = mLoadingPrincipal->GetOriginSuffix(originSuffix);
NS_ENSURE_SUCCESS(rv, rv);
service->FindUpdate(aManifestURI, originSuffix, nullptr,
service->FindUpdate(manifestURI, originSuffix, nullptr,
getter_AddRefs(update));
if (!update) {
update = new nsOfflineCacheUpdate();
// Leave aDocument argument null. Only glues and children keep
// document instances.
rv = update->Init(aManifestURI, aDocumentURI, mLoadingPrincipal, nullptr,
rv = update->Init(manifestURI, documentURI, mLoadingPrincipal, nullptr,
nullptr);
NS_ENSURE_SUCCESS(rv, rv);
@ -136,7 +129,7 @@ nsresult OfflineCacheUpdateParent::Schedule(
}
if (stickDocument) {
update->StickDocument(aDocumentURI);
update->StickDocument(documentURI);
}
return NS_OK;
@ -145,9 +138,7 @@ nsresult OfflineCacheUpdateParent::Schedule(
NS_IMETHODIMP
OfflineCacheUpdateParent::UpdateStateChanged(nsIOfflineCacheUpdate* aUpdate,
uint32_t state) {
if (mIPCClosed) {
return NS_ERROR_UNEXPECTED;
}
if (mIPCClosed) return NS_ERROR_UNEXPECTED;
LOG(("OfflineCacheUpdateParent::StateEvent [%p]", this));
@ -173,9 +164,7 @@ OfflineCacheUpdateParent::UpdateStateChanged(nsIOfflineCacheUpdate* aUpdate,
NS_IMETHODIMP
OfflineCacheUpdateParent::ApplicationCacheAvailable(
nsIApplicationCache* aApplicationCache) {
if (mIPCClosed) {
return NS_ERROR_UNEXPECTED;
}
if (mIPCClosed) return NS_ERROR_UNEXPECTED;
NS_ENSURE_ARG(aApplicationCache);

View File

@ -39,7 +39,7 @@ class OfflineCacheUpdateParent : public POfflineCacheUpdateParent,
NS_DECL_NSIOFFLINECACHEUPDATEOBSERVER
NS_DECL_NSILOADCONTEXT
nsresult Schedule(nsIURI* manifestURI, nsIURI* documentURI,
nsresult Schedule(const URIParams& manifestURI, const URIParams& documentURI,
const PrincipalInfo& loadingPrincipalInfo,
const bool& stickDocument,
const net::CookieJarSettingsArgs& aCookieJarSettingsArgs);

View File

@ -16,12 +16,16 @@ NS_IMPL_ISUPPORTS(nsSoundProxy, nsISound)
NS_IMETHODIMP
nsSoundProxy::Play(nsIURL* aURL) {
MOZ_ASSERT(XRE_GetProcessType() == GeckoProcessType_Content);
nsCOMPtr<nsIURI> soundURI(aURL);
// Only allow playing a chrome:// URL from the content process.
if (!aURL || !aURL->SchemeIs("chrome")) {
if (!soundURI || !soundURI->SchemeIs("chrome")) {
return NS_ERROR_FAILURE;
}
ContentChild::GetSingleton()->SendPlaySound(aURL);
mozilla::ipc::URIParams soundParams;
mozilla::ipc::SerializeURI(soundURI, soundParams);
ContentChild::GetSingleton()->SendPlaySound(soundParams);
return NS_OK;
}