123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// found in the LICENSE file. 423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "components/domain_reliability/beacon.h" 623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "base/values.h" 823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "net/base/net_errors.h" 923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 1023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)namespace domain_reliability { 1123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 1223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)using base::Value; 1323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)using base::DictionaryValue; 1423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 1523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)DomainReliabilityBeacon::DomainReliabilityBeacon() {} 1623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)DomainReliabilityBeacon::~DomainReliabilityBeacon() {} 1723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 1823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)Value* DomainReliabilityBeacon::ToValue(base::TimeTicks upload_time) const { 1923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) DictionaryValue* beacon_value = new DictionaryValue(); 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!url.empty()) 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) beacon_value->SetString("url", url); 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!domain.empty()) 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci beacon_value->SetString("domain", domain); 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!resource.empty()) 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) beacon_value->SetString("resource", resource); 2623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) beacon_value->SetString("status", status); 2723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) if (chrome_error != net::OK) { 2823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) DictionaryValue* failure_value = new DictionaryValue(); 2923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) failure_value->SetString("custom_error", 3023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) net::ErrorToString(chrome_error)); 3123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) beacon_value->Set("failure_data", failure_value); 3223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) } 3323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) beacon_value->SetString("server_ip", server_ip); 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch beacon_value->SetString("protocol", protocol); 3523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) if (http_response_code >= 0) 3623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) beacon_value->SetInteger("http_response_code", http_response_code); 3723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) beacon_value->SetInteger("request_elapsed_ms", 3823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) elapsed.InMilliseconds()); 3923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) beacon_value->SetInteger("request_age_ms", 4023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) (upload_time - start_time).InMilliseconds()); 4123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) return beacon_value; 4223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 4323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 4423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} // namespace domain_reliability 45