// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_EXTENSIONS_API_DIAL_DIAL_DEVICE_DATA_H_ #define CHROME_BROWSER_EXTENSIONS_API_DIAL_DIAL_DEVICE_DATA_H_ #include #include #include "base/time.h" #include "base/values.h" #include "googleurl/src/gurl.h" namespace extensions { namespace api { namespace dial { struct DialDevice; } // namespace api } // namespace dial // Dial device information that is used within the DialService and Registry on // the IO thread. It is updated as new information arrives and a list of // DialDeviceData is copied and sent to event listeners on the UI thread. class DialDeviceData { public: DialDeviceData(); DialDeviceData(const std::string& device_id, const GURL& device_description_url, const base::Time& response_time); ~DialDeviceData(); bool operator==(const DialDeviceData& other_data) const { return device_id_ == other_data.device_id_; } const std::string& device_id() const { return device_id_; } void set_device_id(const std::string& id) { device_id_ = id; } const std::string& label() const { return label_; } void set_label(const std::string& label) { label_ = label; } const GURL& device_description_url() const; void set_device_description_url(const GURL& url); const base::Time& response_time() const { return response_time_; } void set_response_time(const base::Time& response_time) { response_time_ = response_time; } int max_age() const { return max_age_; } void set_max_age(int max_age) { max_age_ = max_age; } bool has_max_age() const { return max_age_ >= 0; } int config_id() const { return config_id_; } void set_config_id(int config_id) { config_id_ = config_id; } bool has_config_id() const { return config_id_ >= 0; } // Fills the |device| API struct from this instance. void FillDialDevice(api::dial::DialDevice* device) const; // Updates this DeviceData based on information from a new response in // |new_data|. Returns |true| if a field was updated that is visible through // the DIAL API. bool UpdateFrom(const DialDeviceData& new_data); // Validates that the URL is valid for the device description. static bool IsDeviceDescriptionUrl(const GURL& url); private: // Hardware identifier from the DIAL response. Not exposed to API clients. std::string device_id_; // Identifies this device to clients of the API as a proxy for the hardware // identifier. Automatically generated by the DIAL registry. std::string label_; // The device description URL. GURL device_description_url_; // The time that the most recent response was received. base::Time response_time_; // Optional (-1 means unset). int max_age_; // Optional (-1 means unset). int config_id_; }; } // namespace extensions #endif // CHROME_BROWSER_EXTENSIONS_API_DIAL_DIAL_DEVICE_DATA_H_