[go: nahoru, domu]

blob: d1d5b8bc98f1e57f50bf83d7168fefea60881b71 [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module network.mojom;
import "url/mojom/url.mojom";
import "url/mojom/origin.mojom";
import "mojo/public/mojom/base/time.mojom";
import "mojo/public/mojom/base/values.mojom";
import "mojo/public/mojom/base/unguessable_token.mojom";
import "services/network/public/mojom/network_isolation_key.mojom";
// The status of a Reporting API report.
enum ReportingApiReportStatus {
kQueued,
kPending,
kDoomed,
kSuccess,
};
// A Reporting API report.
struct ReportingApiReport {
mojo_base.mojom.UnguessableToken id;
// The URL of the document that triggered the report.
url.mojom.Url url;
// The name of the endpoint group that should be used to deliver the report.
string group;
// The type of the report (specifies the set of data that is contained
// in the report body).
string type;
// When the report was generated.
mojo_base.mojom.TimeTicks timestamp;
// How many uploads deep the related request was.
int32 depth;
// The number of delivery attempts made so far, not including an active
// attempt.
int32 attempts;
// The body of the report.
mojo_base.mojom.DeprecatedDictionaryValue body;
// The status of the report.
ReportingApiReportStatus status;
};
struct ReportingApiEndpoint {
// The endpoint to which reports may be delivered.
url.mojom.Url url;
// The number of attempted uploads that were made for this endpoint.
int32 attempted_uploads;
// The number of uploads that have succeeded for this endpoint.
int32 successful_uploads;
// The number of individual reports that we've attempted to upload for this
// endpoint. (Failed uploads will cause a report to be counted multiple
// times, once for each attempt.)
int32 attempted_reports;
// The number of individual reports that were successfully uploaded for
// this endpoint.
int32 successful_reports;
// Priority when multiple endpoints are configured for an origin; endpoints
// with numerically lower priorities are used first.
int32 priority;
// Weight when multiple endpoints are configured for an origin with the same
// priority; among those with the same priority, each endpoint has a chance
// of being chosen that is proportional to its weight.
int32 weight;
// Origin that configured this endpoint group.
url.mojom.Origin origin;
// Name of the endpoint group (defaults to "default" during header parsing).
string group_name;
// The NetworkIsolationKey the group is scoped to. Needed to prevent leaking
// third party contexts across sites.
NetworkIsolationKey network_isolation_key;
// Source token for the document or worker which configured this endpoint.
mojo_base.mojom.UnguessableToken? reporting_source;
};
// Indirectly listens to changes in the Reporting Service via
// ReportingCacheObserver as intermediate
interface ReportingApiObserver {
// Called whenever a report is added
OnReportAdded(ReportingApiReport report);
// Called whenever a report is updated (status change or attempts incremented)
OnReportUpdated(ReportingApiReport report);
// Called on every update to the Reporting API endpoints
OnEndpointsUpdatedForOrigin(array<ReportingApiEndpoint> endpoints);
};