xref: /aosp_15_r20/external/cronet/net/reporting/reporting_delegate.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2017 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "net/reporting/reporting_delegate.h"
6 
7 #include "base/memory/raw_ptr.h"
8 #include "net/base/network_delegate.h"
9 #include "net/url_request/url_request_context.h"
10 
11 namespace net {
12 
13 namespace {
14 
15 class ReportingDelegateImpl : public ReportingDelegate {
16  public:
ReportingDelegateImpl(URLRequestContext * request_context)17   explicit ReportingDelegateImpl(URLRequestContext* request_context)
18       : request_context_(request_context) {
19     DCHECK(request_context);
20   }
21 
22   ~ReportingDelegateImpl() override = default;
23 
CanQueueReport(const url::Origin & origin) const24   bool CanQueueReport(const url::Origin& origin) const override {
25     return network_delegate() &&
26            network_delegate()->CanQueueReportingReport(origin);
27   }
28 
CanSendReports(std::set<url::Origin> origins,base::OnceCallback<void (std::set<url::Origin>)> result_callback) const29   void CanSendReports(std::set<url::Origin> origins,
30                       base::OnceCallback<void(std::set<url::Origin>)>
31                           result_callback) const override {
32     if (!network_delegate()) {
33       origins.clear();
34       std::move(result_callback).Run(std::move(origins));
35       return;
36     }
37     network_delegate()->CanSendReportingReports(std::move(origins),
38                                                 std::move(result_callback));
39   }
40 
CanSetClient(const url::Origin & origin,const GURL & endpoint) const41   bool CanSetClient(const url::Origin& origin,
42                     const GURL& endpoint) const override {
43     return network_delegate() &&
44            network_delegate()->CanSetReportingClient(origin, endpoint);
45   }
46 
CanUseClient(const url::Origin & origin,const GURL & endpoint) const47   bool CanUseClient(const url::Origin& origin,
48                     const GURL& endpoint) const override {
49     return network_delegate() &&
50            network_delegate()->CanUseReportingClient(origin, endpoint);
51   }
52 
53  private:
network_delegate() const54   const NetworkDelegate* network_delegate() const {
55     return request_context_->network_delegate();
56   }
57 
58   raw_ptr<URLRequestContext> request_context_;
59 };
60 
61 }  // namespace
62 
63 // static
Create(URLRequestContext * request_context)64 std::unique_ptr<ReportingDelegate> ReportingDelegate::Create(
65     URLRequestContext* request_context) {
66   return std::make_unique<ReportingDelegateImpl>(request_context);
67 }
68 
69 ReportingDelegate::~ReportingDelegate() = default;
70 
71 }  // namespace net
72