dial_device_data.cc revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
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 "chrome/browser/extensions/api/dial/dial_device_data.h"
6
7#include "chrome/common/extensions/api/dial.h"
8
9namespace extensions {
10
11DialDeviceData::DialDeviceData() : max_age_(-1), config_id_(-1) { }
12
13DialDeviceData::DialDeviceData(const std::string& device_id,
14                               const GURL& device_description_url,
15                               const base::Time& response_time)
16    : device_id_(device_id), device_description_url_(device_description_url),
17      response_time_(response_time), max_age_(-1), config_id_(-1) {
18}
19
20DialDeviceData::~DialDeviceData() { }
21
22const GURL& DialDeviceData::device_description_url() const {
23  return device_description_url_;
24}
25
26void DialDeviceData::set_device_description_url(const GURL& url) {
27  device_description_url_ = url;
28}
29
30// static
31bool DialDeviceData::IsDeviceDescriptionUrl(const GURL& url) {
32  return url.is_valid() && !url.is_empty() &&
33      (url.SchemeIs("http") || url.SchemeIs("https"));
34}
35
36bool DialDeviceData::UpdateFrom(const DialDeviceData& new_data) {
37  DCHECK(new_data.device_id() == device_id_);
38  DCHECK(new_data.label().empty());
39  std::string label_tmp(label_);
40  bool updated_api_visible_field =
41      (new_data.device_description_url() != device_description_url_) ||
42      (new_data.config_id() != config_id_);
43  *this = new_data;
44  label_ = label_tmp;
45  return updated_api_visible_field;
46}
47
48void DialDeviceData::FillDialDevice(api::dial::DialDevice* device) const {
49  DCHECK(!device_id_.empty());
50  DCHECK(IsDeviceDescriptionUrl(device_description_url_));
51  device->device_label = label_;
52  device->device_description_url = device_description_url_.spec();
53  if (has_config_id())
54    device->config_id.reset(new int(config_id_));
55}
56
57}  // namespace extensions
58