Commit c1e2838f authored by arthursonzogni's avatar arthursonzogni Committed by Commit Bot

[COOP] access reporting [4/N] Send reports.

All of this is put behind a flag disabled by default.
This is mostly based on the initial prototype:
https://chromium-review.googlesource.com/c/chromium/src/+/2223934/24

Partially implement the QueueAccessReport function. A simple report is
sent containing:
- disposition
- effective-policy
- property

but missing for now:
- blocked-window-url
- source-file
- line-no
- col-no
- violation-type

COOP access reporting:
[1/N] https://chromium-review.googlesource.com/c/chromium/src/+/2264294
[2/N] https://chromium-review.googlesource.com/c/chromium/src/+/2270185
[3/N] https://chromium-review.googlesource.com/c/chromium/src/+/2270472
[4/N] this patch.

Bug: chromium:1090273
Change-Id: Ib5ed9fc598f437459a6b57e35875be6fbf5a63b5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2273120
Commit-Queue: Camille Lamy <clamy@chromium.org>
Auto-Submit: Arthur Sonzogni <arthursonzogni@chromium.org>
Reviewed-by: default avatarCamille Lamy <clamy@chromium.org>
Reviewed-by: default avatarPâris Meuleman <pmeuleman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#790381}
parent 2970fae6
...@@ -19,20 +19,20 @@ namespace content { ...@@ -19,20 +19,20 @@ namespace content {
namespace { namespace {
constexpr char kUnsafeNone[] = "unsafe-none";
constexpr char kSameOrigin[] = "same-origin";
constexpr char kSameOriginPlusCoep[] = "same-origin-plus-coep";
constexpr char kSameOriginAllowPopups[] = "same-origin-allow-popups";
constexpr char kDisposition[] = "disposition";
constexpr char kDispositionEnforce[] = "enforce"; constexpr char kDispositionEnforce[] = "enforce";
constexpr char kDispositionReporting[] = "reporting"; constexpr char kDispositionReporting[] = "reporting";
constexpr char kDisposition[] = "disposition";
constexpr char kDocumentURI[] = "document-uri"; constexpr char kDocumentURI[] = "document-uri";
constexpr char kEffectivePolicy[] = "effective-policy";
constexpr char kNavigationURI[] = "navigation-uri"; constexpr char kNavigationURI[] = "navigation-uri";
constexpr char kViolationType[] = "violation-type"; constexpr char kProperty[] = "property";
constexpr char kSameOriginAllowPopups[] = "same-origin-allow-popups";
constexpr char kSameOriginPlusCoep[] = "same-origin-plus-coep";
constexpr char kSameOrigin[] = "same-origin";
constexpr char kUnsafeNone[] = "unsafe-none";
constexpr char kViolationTypeFromDocument[] = "navigation-from-document"; constexpr char kViolationTypeFromDocument[] = "navigation-from-document";
constexpr char kViolationTypeToDocument[] = "navigation-to-document"; constexpr char kViolationTypeToDocument[] = "navigation-to-document";
constexpr char kEffectivePolicy[] = "effective-policy"; constexpr char kViolationType[] = "violation-type";
std::string CoopValueToString( std::string CoopValueToString(
network::mojom::CrossOriginOpenerPolicyValue coop_value) { network::mojom::CrossOriginOpenerPolicyValue coop_value) {
...@@ -169,7 +169,28 @@ void CrossOriginOpenerPolicyReporter::QueueOpenerBreakageReport( ...@@ -169,7 +169,28 @@ void CrossOriginOpenerPolicyReporter::QueueOpenerBreakageReport(
void CrossOriginOpenerPolicyReporter::QueueAccessReport( void CrossOriginOpenerPolicyReporter::QueueAccessReport(
const std::string& property) { const std::string& property) {
// TODO(arthursonzogni) Implement this. // Cross-Origin-Opener-Policy-Report-Only is not required to provide
// endpoints.
if (!coop_.report_only_reporting_endpoint)
return;
const std::string& endpoint = coop_.report_only_reporting_endpoint.value();
DCHECK(base::FeatureList::IsEnabled(
network::features::kCrossOriginOpenerPolicyAccessReporting));
base::DictionaryValue body;
body.SetStringPath(kDisposition, kDispositionReporting);
body.SetStringPath(kEffectivePolicy,
CoopValueToString(coop_.report_only_value));
body.SetStringPath(kProperty, property);
// TODO(arthursonzogni): Fill "blocked-window-url".
// TODO(arthursonzogni): Fill "source-file".
// TODO(arthursonzogni): Fill "line-no".
// TODO(arthursonzogni): Fill "col-no".
// TODO(arthursonzogni): Fill "violation-type".
storage_partition_->GetNetworkContext()->QueueReport(
"coop", endpoint, context_url_, base::nullopt, std::move(body));
} }
void CrossOriginOpenerPolicyReporter::Clone( void CrossOriginOpenerPolicyReporter::Clone(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment