| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| module private_aggregation_internals.mojom; |
| |
| import "url/mojom/url.mojom"; |
| import "mojo/public/mojom/base/int128.mojom"; |
| |
| struct AggregatableReportRequestID { |
| int64 value; |
| }; |
| |
| // Due to dependency issues, this is duplicated from |
| // `content.mojom.AggregatableReportHistogramContribution`. |
| struct AggregatableHistogramContribution { |
| mojo_base.mojom.Uint128 bucket; |
| int32 value; |
| }; |
| |
| enum ReportStatus { |
| kPending, |
| kSent, |
| kFailedToAssemble, |
| kFailedToSend, |
| }; |
| |
| // Struct containing aggregatable report data. |
| struct WebUIAggregatableReport { |
| // Null indicates a report that wasn't stored/scheduled. |
| AggregatableReportRequestID? id; |
| // Javascript convention for times, a number of milliseconds since the epoch. |
| double report_time; |
| string api_identifier; |
| string api_version; |
| url.mojom.Url report_url; |
| array<AggregatableHistogramContribution> contributions; |
| ReportStatus status; |
| // JSON string. |
| string report_body; |
| }; |
| |
| // Observer for events relevant to the private aggregation internals WebUI. |
| interface Observer { |
| // Called when the reports in storage changed, indicating that the observer |
| // should call `Handler::GetReports()`. |
| OnRequestStorageModified(); |
| |
| // Called when a report is handled, regardless of success. |
| OnReportHandled(WebUIAggregatableReport report); |
| }; |
| |
| // Mojo interface used for communication between a WebUI and the storage layer |
| // for aggregation service. |
| interface Handler { |
| // Returns all reports contained in storage, including those that are |
| // actively being sent. |
| GetReports() => (array<WebUIAggregatableReport> reports); |
| |
| // Sends the given reports, ignoring delay, returning when the operation has |
| // been completed and the reports have been cleared from storage. |
| SendReports(array<AggregatableReportRequestID> ids) => (); |
| |
| // Deletes all persisted data for the aggregation service and private |
| // aggregation, returning when the operation has been completed. |
| ClearStorage() => (); |
| }; |
| |
| // Factory for Observer and Handler. |
| interface Factory { |
| // Binds the observer and handler. |
| Create(pending_remote<Observer> observer, |
| pending_receiver<Handler> handler); |
| }; |