Reporting: Add ReportingDelegate to check site permissions
This adds a Delegate to Reporting that can eventually be plumbed to
check whether sites are allowed to store data (reports and clients).
BUG=704259,676324
Review-Url: https://codereview.chromium.org/2889193002
Cr-Commit-Position: refs/heads/master@{#473885}
diff --git a/net/reporting/reporting_delegate.h b/net/reporting/reporting_delegate.h
new file mode 100644
index 0000000..7acf4c76
--- /dev/null
+++ b/net/reporting/reporting_delegate.h
@@ -0,0 +1,46 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef NET_REPORTING_REPORTING_DELEGATE_H_
+#define NET_REPORTING_REPORTING_DELEGATE_H_
+
+#include <memory>
+
+#include "base/macros.h"
+#include "net/base/net_export.h"
+
+class GURL;
+
+namespace url {
+class Origin;
+} // namespace url
+
+namespace net {
+
+class NET_EXPORT ReportingDelegate {
+ public:
+ virtual ~ReportingDelegate();
+
+ // Checks whether |origin| is allowed to queue reports for future delivery.
+ virtual bool CanQueueReport(const url::Origin& origin) const = 0;
+
+ // Checks whether |origin| is allowed to receive reports, either in real time
+ // or that were queued earlier.
+ virtual bool CanSendReport(const url::Origin& origin) const = 0;
+
+ // Checks whether |origin| can set |endpoint| to be used for future report
+ // deliveries.
+ virtual bool CanSetClient(const url::Origin& origin,
+ const GURL& endpoint) const = 0;
+
+ // Checks whether |origin| can use |endpoint| for a report delivery right now.
+ virtual bool CanUseClient(const url::Origin& origin,
+ const GURL& endpoint) const = 0;
+
+ static std::unique_ptr<ReportingDelegate> Create();
+};
+
+} // namespace net
+
+#endif // NET_REPORTING_REPORTING_DELEGATE_H_