Add credentials to same-origin Report uploads
When the reporting endpoint is same-origin with the page generating
reports, the reporting API specifies that credentials should be included
with the report delivery.
This change enables that behaviour for V1 reporting endpoints only --
any endpoints configured with the Report-To header are unaffected. This
CL corrects the way that we distinguish V0 from V1 endpoints at delivery
time, which also corrects the metrics collection for delivered reports,
and adds a test for a case which was previously missed.
Bug: 1163645
Change-Id: I8fcd934b3026b57374e7e7df31c9af9a8d93962d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3169200
Reviewed-by: Matt Menke <[email protected]>
Reviewed-by: Maksim Orlovich <[email protected]>
Reviewed-by: Ken Buchanan <[email protected]>
Reviewed-by: Mike West <[email protected]>
Reviewed-by: Christian Dullweber <[email protected]>
Commit-Queue: Ian Clelland <[email protected]>
Cr-Commit-Position: refs/heads/main@{#929239}
diff --git a/net/reporting/reporting_test_util.cc b/net/reporting/reporting_test_util.cc
index d3a637a..9f56dfa 100644
--- a/net/reporting/reporting_test_util.cc
+++ b/net/reporting/reporting_test_util.cc
@@ -17,6 +17,7 @@
#include "base/test/simple_test_clock.h"
#include "base/test/simple_test_tick_clock.h"
#include "base/timer/mock_timer.h"
+#include "net/base/isolation_info.h"
#include "net/base/network_isolation_key.h"
#include "net/reporting/reporting_cache.h"
#include "net/reporting/reporting_context.h"
@@ -38,13 +39,13 @@
public:
PendingUploadImpl(const url::Origin& report_origin,
const GURL& url,
- const NetworkIsolationKey& network_isolation_key,
+ const IsolationInfo& isolation_info,
const std::string& json,
ReportingUploader::UploadCallback callback,
base::OnceCallback<void(PendingUpload*)> complete_callback)
: report_origin_(report_origin),
url_(url),
- network_isolation_key_(network_isolation_key),
+ isolation_info_(isolation_info),
json_(json),
callback_(std::move(callback)),
complete_callback_(std::move(complete_callback)) {}
@@ -68,7 +69,7 @@
private:
url::Origin report_origin_;
GURL url_;
- NetworkIsolationKey network_isolation_key_;
+ IsolationInfo isolation_info_;
std::string json_;
ReportingUploader::UploadCallback callback_;
base::OnceCallback<void(PendingUpload*)> complete_callback_;
@@ -103,15 +104,15 @@
TestReportingUploader::TestReportingUploader() = default;
TestReportingUploader::~TestReportingUploader() = default;
-void TestReportingUploader::StartUpload(
- const url::Origin& report_origin,
- const GURL& url,
- const NetworkIsolationKey& network_isolation_key,
- const std::string& json,
- int max_depth,
- UploadCallback callback) {
+void TestReportingUploader::StartUpload(const url::Origin& report_origin,
+ const GURL& url,
+ const IsolationInfo& isolation_info,
+ const std::string& json,
+ int max_depth,
+ bool eligible_for_credentials,
+ UploadCallback callback) {
pending_uploads_.push_back(std::make_unique<PendingUploadImpl>(
- report_origin, url, network_isolation_key, json, std::move(callback),
+ report_origin, url, isolation_info, json, std::move(callback),
base::BindOnce(&ErasePendingUpload, &pending_uploads_)));
}
@@ -231,8 +232,10 @@
void ReportingTestBase::SetV1EndpointInCache(
const ReportingEndpointGroupKey& group_key,
const base::UnguessableToken& reporting_source,
+ const IsolationInfo& isolation_info,
const GURL& url) {
- cache()->SetV1EndpointForTesting(group_key, reporting_source, url);
+ cache()->SetV1EndpointForTesting(group_key, reporting_source, isolation_info,
+ url);
}
bool ReportingTestBase::EndpointExistsInCache(