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/nqe/network_quality_observation.h"
6
7 #include "base/check.h"
8 #include "base/notreached.h"
9
10 namespace net::nqe::internal {
11
Observation(int32_t value,base::TimeTicks timestamp,int32_t signal_strength,NetworkQualityObservationSource source)12 Observation::Observation(int32_t value,
13 base::TimeTicks timestamp,
14 int32_t signal_strength,
15 NetworkQualityObservationSource source)
16 : Observation(value, timestamp, signal_strength, source, std::nullopt) {}
17
Observation(int32_t value,base::TimeTicks timestamp,int32_t signal_strength,NetworkQualityObservationSource source,const std::optional<IPHash> & host)18 Observation::Observation(int32_t value,
19 base::TimeTicks timestamp,
20 int32_t signal_strength,
21 NetworkQualityObservationSource source,
22 const std::optional<IPHash>& host)
23 : value_(value),
24 timestamp_(timestamp),
25 signal_strength_(signal_strength),
26 source_(source),
27 host_(host) {
28 DCHECK(!timestamp_.is_null());
29 DCHECK(signal_strength_ == INT32_MIN ||
30 (signal_strength_ >= 0 && signal_strength_ <= 4));
31 }
32
33 Observation::Observation(const Observation& other) = default;
34
35 Observation& Observation::operator=(const Observation& other) = default;
36
37 Observation::~Observation() = default;
38
GetObservationCategories() const39 std::vector<ObservationCategory> Observation::GetObservationCategories() const {
40 std::vector<ObservationCategory> observation_categories;
41 switch (source_) {
42 case NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP:
43 case NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP_CACHED_ESTIMATE:
44 case NETWORK_QUALITY_OBSERVATION_SOURCE_DEFAULT_HTTP_FROM_PLATFORM:
45 case DEPRECATED_NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP_EXTERNAL_ESTIMATE:
46 observation_categories.push_back(
47 ObservationCategory::OBSERVATION_CATEGORY_HTTP);
48 return observation_categories;
49 case NETWORK_QUALITY_OBSERVATION_SOURCE_TRANSPORT_CACHED_ESTIMATE:
50 case NETWORK_QUALITY_OBSERVATION_SOURCE_DEFAULT_TRANSPORT_FROM_PLATFORM:
51 case NETWORK_QUALITY_OBSERVATION_SOURCE_TCP:
52 observation_categories.push_back(
53 ObservationCategory::OBSERVATION_CATEGORY_TRANSPORT);
54 return observation_categories;
55 case NETWORK_QUALITY_OBSERVATION_SOURCE_QUIC:
56 case NETWORK_QUALITY_OBSERVATION_SOURCE_H2_PINGS:
57 observation_categories.push_back(
58 ObservationCategory::OBSERVATION_CATEGORY_TRANSPORT);
59 observation_categories.push_back(
60 ObservationCategory::OBSERVATION_CATEGORY_END_TO_END);
61 return observation_categories;
62 case NETWORK_QUALITY_OBSERVATION_SOURCE_MAX:
63 NOTREACHED();
64 return observation_categories;
65 }
66 NOTREACHED();
67 return observation_categories;
68 }
69
70 } // namespace net::nqe::internal
71