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