blob: d19a3485dfb86a68a1a4138868b6f06c65c233b6 [file] [log] [blame]
juliatuttle586843332017-03-27 16:22:371// 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
5#include "net/reporting/reporting_report.h"
6
7#include <memory>
8#include <string>
juliatuttlea35bbc82017-05-22 19:25:199#include <utility>
juliatuttle586843332017-03-27 16:22:3710
11#include "base/time/time.h"
12#include "base/values.h"
13#include "url/gurl.h"
14
15namespace net {
16
Lily Chen09383462020-04-09 21:39:0617ReportingReport::ReportingReport(
Ian Clellande74db7e62021-07-22 18:29:3718 const absl::optional<base::UnguessableToken>& reporting_source,
Lily Chen09383462020-04-09 21:39:0619 const NetworkIsolationKey& network_isolation_key,
20 const GURL& url,
21 const std::string& user_agent,
22 const std::string& group,
23 const std::string& type,
24 std::unique_ptr<const base::Value> body,
25 int depth,
26 base::TimeTicks queued,
27 int attempts)
Ian Clellande74db7e62021-07-22 18:29:3728 : reporting_source(reporting_source),
29 network_isolation_key(network_isolation_key),
Wolfgang Beyer7afc1e62021-09-06 10:31:2030 id(base::UnguessableToken::Create()),
Lily Chen09383462020-04-09 21:39:0631 url(url),
Douglas Creagerf6cb49f72018-07-19 20:14:5332 user_agent(user_agent),
juliatuttle586843332017-03-27 16:22:3733 group(group),
34 type(type),
35 body(std::move(body)),
Julia Tuttle107e30672018-03-29 18:48:4236 depth(depth),
juliatuttle586843332017-03-27 16:22:3737 queued(queued),
Ian Clellande74db7e62021-07-22 18:29:3738 attempts(attempts) {
39 // If |reporting_source| is present, it must not be empty.
40 DCHECK(!(reporting_source.has_value() && reporting_source->is_empty()));
41}
juliatuttle586843332017-03-27 16:22:3742
Wolfgang Beyere2433692021-08-25 11:19:4943ReportingReport::ReportingReport() = default;
44ReportingReport::ReportingReport(ReportingReport&& other) = default;
45ReportingReport& ReportingReport::operator=(ReportingReport&& other) = default;
Yutaka Hirano1515aed2021-07-09 07:38:4346ReportingReport::~ReportingReport() = default;
juliatuttle667c0bb2017-07-06 15:17:1347
Lily Chen606c9402020-05-19 18:50:3348ReportingEndpointGroupKey ReportingReport::GetGroupKey() const {
Ian Clellande74db7e62021-07-22 18:29:3749 return ReportingEndpointGroupKey(network_isolation_key, reporting_source,
Lily Chen606c9402020-05-19 18:50:3350 url::Origin::Create(url), group);
51}
52
Lily Chend9ab4e52020-01-03 22:04:4453bool ReportingReport::IsUploadPending() const {
Wolfgang Beyeraa852b82021-09-07 05:21:2654 return status == Status::PENDING || status == Status::DOOMED ||
55 status == Status::SUCCESS;
juliatuttle667c0bb2017-07-06 15:17:1356}
juliatuttle586843332017-03-27 16:22:3757
58} // namespace net