reporting_delegate.cc 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // Copyright 2017 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "net/reporting/reporting_delegate.h"
  5. #include "base/memory/raw_ptr.h"
  6. #include "net/base/network_delegate.h"
  7. #include "net/url_request/url_request_context.h"
  8. namespace net {
  9. namespace {
  10. class ReportingDelegateImpl : public ReportingDelegate {
  11. public:
  12. explicit ReportingDelegateImpl(URLRequestContext* request_context)
  13. : request_context_(request_context) {
  14. DCHECK(request_context);
  15. }
  16. ~ReportingDelegateImpl() override = default;
  17. bool CanQueueReport(const url::Origin& origin) const override {
  18. return network_delegate() &&
  19. network_delegate()->CanQueueReportingReport(origin);
  20. }
  21. void CanSendReports(std::set<url::Origin> origins,
  22. base::OnceCallback<void(std::set<url::Origin>)>
  23. result_callback) const override {
  24. if (!network_delegate()) {
  25. origins.clear();
  26. std::move(result_callback).Run(std::move(origins));
  27. return;
  28. }
  29. network_delegate()->CanSendReportingReports(std::move(origins),
  30. std::move(result_callback));
  31. }
  32. bool CanSetClient(const url::Origin& origin,
  33. const GURL& endpoint) const override {
  34. return network_delegate() &&
  35. network_delegate()->CanSetReportingClient(origin, endpoint);
  36. }
  37. bool CanUseClient(const url::Origin& origin,
  38. const GURL& endpoint) const override {
  39. return network_delegate() &&
  40. network_delegate()->CanUseReportingClient(origin, endpoint);
  41. }
  42. private:
  43. const NetworkDelegate* network_delegate() const {
  44. return request_context_->network_delegate();
  45. }
  46. raw_ptr<URLRequestContext> request_context_;
  47. };
  48. } // namespace
  49. // static
  50. std::unique_ptr<ReportingDelegate> ReportingDelegate::Create(
  51. URLRequestContext* request_context) {
  52. return std::make_unique<ReportingDelegateImpl>(request_context);
  53. }
  54. ReportingDelegate::~ReportingDelegate() = default;
  55. } // namespace net