Files
sousa-gecko/dom/fetch/PFetch.ipdl
T
Simon Farre 79294530f2 Bug 2016380 - Fix edge case CSP Violation report sending r=edenchuang,dom-worker-reviewers,tschuster
An edge case amount of CSP reports, are triggered not with the global
present, in the parent process.

In those scenarios it uses listeners and fires events by
dispatching IPC, FetchChild::RecvOnCSPViolationEvent and
WindowGlobalChild::RecvDispatchSecurityPolicyViolation to fire an actual
"securitypolicyviolation" event that the webcontent can see.

This is the same time we should be
reporting the event to a potential ReportingObserver and also queuing
the report to be sent.

These two methods therefore get a "violated policy index" by which it
can use to look up the name for the group it should report to.

Differential Revision: https://phabricator.services.mozilla.com/D283683
2026-03-04 13:40:39 +00:00

60 lines
1.5 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/. */
include protocol PBackground;
include ClientIPCTypes;
include FetchTypes;
include IPCServiceWorkerDescriptor;
include NeckoChannelParams;
include PBackgroundSharedTypes;
include PerformanceTimingTypes;
namespace mozilla {
namespace dom {
struct FetchOpArgs{
IPCInternalRequest request;
PrincipalInfo principalInfo;
nsCString workerScript;
IPCClientInfo clientInfo;
IPCServiceWorkerDescriptor? controller;
CookieJarSettingsArgs? cookieJarSettings;
bool needOnDataAvailable;
bool hasCSPEventListener;
uint64_t associatedBrowsingContextID;
bool isThirdPartyContext;
bool isWorkerRequest;
bool isOn3PCBExceptionList;
};
protocol PFetch {
manager PBackground;
parent:
async FetchOp(FetchOpArgs aArgs);
async AbortFetchOp(bool aForceAbort);
child:
async OnResponseAvailableInternal(ParentToChildInternalResponse aResponse);
async OnResponseEnd(ResponseEndArgs aResponseEndArgs);
async OnDataAvailable();
async OnFlushConsoleReport(ConsoleReportCollected[] aReports);
async OnCSPViolationEvent(nsString aJSON, nsString aReportGroupName);
async OnReportPerformanceTiming(ResponseTiming aTiming);
async OnNotifyNetworkMonitorAlternateStack(uint64_t aChannelID);
async __delete__(nsresult aResult);
};
}
}