| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/domain_reliability/beacon.h" | 5 #include "components/domain_reliability/beacon.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/memory/ptr_util.h" |
| 9 #include "base/values.h" | 10 #include "base/values.h" |
| 10 #include "components/domain_reliability/util.h" | 11 #include "components/domain_reliability/util.h" |
| 11 #include "net/base/net_errors.h" | 12 #include "net/base/net_errors.h" |
| 12 | 13 |
| 13 namespace domain_reliability { | 14 namespace domain_reliability { |
| 14 | 15 |
| 15 using base::Value; | 16 using base::Value; |
| 16 using base::DictionaryValue; | 17 using base::DictionaryValue; |
| 17 | 18 |
| 18 DomainReliabilityBeacon::DomainReliabilityBeacon() {} | 19 DomainReliabilityBeacon::DomainReliabilityBeacon() {} |
| 19 DomainReliabilityBeacon::DomainReliabilityBeacon( | 20 DomainReliabilityBeacon::DomainReliabilityBeacon( |
| 20 const DomainReliabilityBeacon& other) = default; | 21 const DomainReliabilityBeacon& other) = default; |
| 21 DomainReliabilityBeacon::~DomainReliabilityBeacon() {} | 22 DomainReliabilityBeacon::~DomainReliabilityBeacon() {} |
| 22 | 23 |
| 23 std::unique_ptr<Value> DomainReliabilityBeacon::ToValue( | 24 std::unique_ptr<Value> DomainReliabilityBeacon::ToValue( |
| 24 base::TimeTicks upload_time, | 25 base::TimeTicks upload_time, |
| 25 base::TimeTicks last_network_change_time, | 26 base::TimeTicks last_network_change_time, |
| 26 const GURL& collector_url, | 27 const GURL& collector_url, |
| 27 const std::vector<std::unique_ptr<std::string>>& path_prefixes) const { | 28 const std::vector<std::unique_ptr<std::string>>& path_prefixes) const { |
| 28 std::unique_ptr<DictionaryValue> beacon_value(new DictionaryValue()); | 29 auto beacon_value = base::MakeUnique<DictionaryValue>(); |
| 29 DCHECK(url.is_valid()); | 30 DCHECK(url.is_valid()); |
| 30 GURL sanitized_url = SanitizeURLForReport(url, collector_url, path_prefixes); | 31 GURL sanitized_url = SanitizeURLForReport(url, collector_url, path_prefixes); |
| 31 beacon_value->SetString("url", sanitized_url.spec()); | 32 beacon_value->SetString("url", sanitized_url.spec()); |
| 32 beacon_value->SetString("status", status); | 33 beacon_value->SetString("status", status); |
| 33 if (!quic_error.empty()) | 34 if (!quic_error.empty()) |
| 34 beacon_value->SetString("quic_error", quic_error); | 35 beacon_value->SetString("quic_error", quic_error); |
| 35 if (chrome_error != net::OK) { | 36 if (chrome_error != net::OK) { |
| 36 DictionaryValue* failure_value = new DictionaryValue(); | 37 auto failure_value = base::MakeUnique<DictionaryValue>(); |
| 37 failure_value->SetString("custom_error", | 38 failure_value->SetString("custom_error", |
| 38 net::ErrorToString(chrome_error)); | 39 net::ErrorToString(chrome_error)); |
| 39 beacon_value->Set("failure_data", failure_value); | 40 beacon_value->Set("failure_data", std::move(failure_value)); |
| 40 } | 41 } |
| 41 beacon_value->SetString("server_ip", server_ip); | 42 beacon_value->SetString("server_ip", server_ip); |
| 42 beacon_value->SetBoolean("was_proxied", was_proxied); | 43 beacon_value->SetBoolean("was_proxied", was_proxied); |
| 43 beacon_value->SetString("protocol", protocol); | 44 beacon_value->SetString("protocol", protocol); |
| 44 if (details.quic_broken) | 45 if (details.quic_broken) |
| 45 beacon_value->SetBoolean("quic_broken", details.quic_broken); | 46 beacon_value->SetBoolean("quic_broken", details.quic_broken); |
| 46 if (details.quic_port_migration_detected) | 47 if (details.quic_port_migration_detected) |
| 47 beacon_value->SetBoolean("quic_port_migration_detected", | 48 beacon_value->SetBoolean("quic_port_migration_detected", |
| 48 details.quic_port_migration_detected); | 49 details.quic_port_migration_detected); |
| 49 if (http_response_code >= 0) | 50 if (http_response_code >= 0) |
| 50 beacon_value->SetInteger("http_response_code", http_response_code); | 51 beacon_value->SetInteger("http_response_code", http_response_code); |
| 51 beacon_value->SetInteger("request_elapsed_ms", elapsed.InMilliseconds()); | 52 beacon_value->SetInteger("request_elapsed_ms", elapsed.InMilliseconds()); |
| 52 base::TimeDelta request_age = upload_time - start_time; | 53 base::TimeDelta request_age = upload_time - start_time; |
| 53 beacon_value->SetInteger("request_age_ms", request_age.InMilliseconds()); | 54 beacon_value->SetInteger("request_age_ms", request_age.InMilliseconds()); |
| 54 bool network_changed = last_network_change_time > start_time; | 55 bool network_changed = last_network_change_time > start_time; |
| 55 beacon_value->SetBoolean("network_changed", network_changed); | 56 beacon_value->SetBoolean("network_changed", network_changed); |
| 56 beacon_value->SetDouble("sample_rate", sample_rate); | 57 beacon_value->SetDouble("sample_rate", sample_rate); |
| 57 return std::move(beacon_value); | 58 return std::move(beacon_value); |
| 58 } | 59 } |
| 59 | 60 |
| 60 } // namespace domain_reliability | 61 } // namespace domain_reliability |
| OLD | NEW |