12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/extensions/api/dial/dial_device_data.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/common/extensions/api/dial.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace extensions { 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)DialDeviceData::DialDeviceData() : max_age_(-1), config_id_(-1) { } 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)DialDeviceData::DialDeviceData(const std::string& device_id, 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL& device_description_url, 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::Time& response_time) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : device_id_(device_id), device_description_url_(device_description_url), 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) response_time_(response_time), max_age_(-1), config_id_(-1) { 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)DialDeviceData::~DialDeviceData() { } 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const GURL& DialDeviceData::device_description_url() const { 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return device_description_url_; 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DialDeviceData::set_device_description_url(const GURL& url) { 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) device_description_url_ = url; 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool DialDeviceData::IsDeviceDescriptionUrl(const GURL& url) { 323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return url.is_valid() && !url.is_empty() && url.SchemeIsHTTPOrHTTPS(); 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool DialDeviceData::UpdateFrom(const DialDeviceData& new_data) { 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DCHECK(new_data.device_id() == device_id_); 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DCHECK(new_data.label().empty()); 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string label_tmp(label_); 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool updated_api_visible_field = 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) (new_data.device_description_url() != device_description_url_) || 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) (new_data.config_id() != config_id_); 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *this = new_data; 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) label_ = label_tmp; 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return updated_api_visible_field; 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DialDeviceData::FillDialDevice(api::dial::DialDevice* device) const { 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DCHECK(!device_id_.empty()); 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DCHECK(IsDeviceDescriptionUrl(device_description_url_)); 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) device->device_label = label_; 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) device->device_description_url = device_description_url_.spec(); 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (has_config_id()) 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) device->config_id.reset(new int(config_id_)); 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace extensions 57