mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-19 16:25:38 +00:00
Bug 1510569 - Correctly reconstruct nsIRequest in tab parent r=Ehsan
When `TabParent::ReconstructWebProgressRequest` was introduced in 31b206e2046f63af31424489e3d61d7761805878, it mistakenly was unconditionally constructing an `nsIRequest` from the received `RequestData`, even when the URI was null. Additionally `ReconstructWebProgressRequest` has been updated to use the Gecko style for out parameters (accepting an `nsIFoo**` and passing `getter_AddRefs(...)` instead of `nsCOMPtr<nsIFoo>&`). Differential Revision: https://phabricator.services.mozilla.com/D34445 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
3f9e2ec379
commit
5ac437d877
@ -2402,7 +2402,8 @@ mozilla::ipc::IPCResult BrowserParent::RecvOnStateChange(
|
||||
nsCOMPtr<nsIWebProgress> webProgress;
|
||||
nsCOMPtr<nsIRequest> request;
|
||||
ReconstructWebProgressAndRequest(manager, aWebProgressData, aRequestData,
|
||||
webProgress, request);
|
||||
getter_AddRefs(webProgress),
|
||||
getter_AddRefs(request));
|
||||
|
||||
if (aWebProgressData && aWebProgressData->isTopLevel()) {
|
||||
Unused << browser->SetIsNavigating(aStateChangeData->isNavigating());
|
||||
@ -2441,7 +2442,8 @@ mozilla::ipc::IPCResult BrowserParent::RecvOnProgressChange(
|
||||
nsCOMPtr<nsIWebProgress> webProgress;
|
||||
nsCOMPtr<nsIRequest> request;
|
||||
ReconstructWebProgressAndRequest(manager, aWebProgressData, aRequestData,
|
||||
webProgress, request);
|
||||
getter_AddRefs(webProgress),
|
||||
getter_AddRefs(request));
|
||||
|
||||
Unused << managerAsListener->OnProgressChange(
|
||||
webProgress, request, aCurSelfProgress, aMaxSelfProgress,
|
||||
@ -2465,7 +2467,8 @@ mozilla::ipc::IPCResult BrowserParent::RecvOnStatusChange(
|
||||
nsCOMPtr<nsIWebProgress> webProgress;
|
||||
nsCOMPtr<nsIRequest> request;
|
||||
ReconstructWebProgressAndRequest(manager, aWebProgressData, aRequestData,
|
||||
webProgress, request);
|
||||
getter_AddRefs(webProgress),
|
||||
getter_AddRefs(request));
|
||||
|
||||
Unused << managerAsListener->OnStatusChange(webProgress, request, aStatus,
|
||||
aMessage.get());
|
||||
@ -2487,7 +2490,8 @@ mozilla::ipc::IPCResult BrowserParent::RecvOnContentBlockingEvent(
|
||||
nsCOMPtr<nsIWebProgress> webProgress;
|
||||
nsCOMPtr<nsIRequest> request;
|
||||
ReconstructWebProgressAndRequest(manager, aWebProgressData, aRequestData,
|
||||
webProgress, request);
|
||||
getter_AddRefs(webProgress),
|
||||
getter_AddRefs(request));
|
||||
|
||||
Unused << managerAsListener->OnContentBlockingEvent(webProgress, request,
|
||||
aEvent);
|
||||
@ -2529,21 +2533,31 @@ bool BrowserParent::GetWebProgressListener(
|
||||
|
||||
void BrowserParent::ReconstructWebProgressAndRequest(
|
||||
nsIWebProgress* aManager, const Maybe<WebProgressData>& aWebProgressData,
|
||||
const RequestData& aRequestData, nsCOMPtr<nsIWebProgress>& aOutWebProgress,
|
||||
nsCOMPtr<nsIRequest>& aOutRequest) {
|
||||
const RequestData& aRequestData, nsIWebProgress** aOutWebProgress,
|
||||
nsIRequest** aOutRequest) {
|
||||
MOZ_DIAGNOSTIC_ASSERT(aOutWebProgress,
|
||||
"aOutWebProgress should never be null");
|
||||
MOZ_DIAGNOSTIC_ASSERT(aOutRequest, "aOutRequest should never be null");
|
||||
|
||||
nsCOMPtr<nsIWebProgress> webProgress;
|
||||
if (aWebProgressData) {
|
||||
aOutWebProgress = MakeAndAddRef<RemoteWebProgress>(
|
||||
webProgress = new RemoteWebProgress(
|
||||
aManager, aWebProgressData->outerDOMWindowID(),
|
||||
aWebProgressData->innerDOMWindowID(), aWebProgressData->loadType(),
|
||||
aWebProgressData->isLoadingDocument(), aWebProgressData->isTopLevel());
|
||||
} else {
|
||||
aOutWebProgress =
|
||||
MakeAndAddRef<RemoteWebProgress>(aManager, 0, 0, 0, false, false);
|
||||
webProgress = new RemoteWebProgress(aManager, 0, 0, 0, false, false);
|
||||
}
|
||||
webProgress.forget(aOutWebProgress);
|
||||
|
||||
aOutRequest = MakeAndAddRef<RemoteWebProgressRequest>(
|
||||
aRequestData.requestURI(), aRequestData.originalRequestURI(),
|
||||
aRequestData.matchedList());
|
||||
if (aRequestData.requestURI()) {
|
||||
nsCOMPtr<nsIRequest> request = MakeAndAddRef<RemoteWebProgressRequest>(
|
||||
aRequestData.requestURI(), aRequestData.originalRequestURI(),
|
||||
aRequestData.matchedList());
|
||||
request.forget(aOutRequest);
|
||||
} else {
|
||||
*aOutRequest = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
mozilla::ipc::IPCResult BrowserParent::RecvSessionStoreUpdate(
|
||||
|
@ -308,9 +308,8 @@ class BrowserParent final : public PBrowserParent,
|
||||
|
||||
void ReconstructWebProgressAndRequest(
|
||||
nsIWebProgress* aManager, const Maybe<WebProgressData>& aWebProgressData,
|
||||
const RequestData& aRequestData,
|
||||
nsCOMPtr<nsIWebProgress>& aOutWebProgress,
|
||||
nsCOMPtr<nsIRequest>& aOutRequest);
|
||||
const RequestData& aRequestData, nsIWebProgress** aOutWebProgress,
|
||||
nsIRequest** aOutRequest);
|
||||
|
||||
mozilla::ipc::IPCResult RecvSessionStoreUpdate(
|
||||
const Maybe<nsCString>& aDocShellCaps, const Maybe<bool>& aPrivatedMode,
|
||||
|
Loading…
Reference in New Issue
Block a user