1// Copyright 2014 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#ifndef COMPONENTS_CLOUD_DEVICES_COMMON_CLOUD_DEVICE_DESCRIPTION_H_ 6#define COMPONENTS_CLOUD_DEVICES_COMMON_CLOUD_DEVICE_DESCRIPTION_H_ 7 8#include <string> 9 10#include "base/callback.h" 11 12namespace base { 13class DictionaryValue; 14class ListValue; 15} 16 17namespace cloud_devices { 18 19// Provides parsing, serialization and validation Cloud Device Description or 20// Cloud Job Ticket. 21// https://developers.google.com/cloud-print/docs/cdd 22class CloudDeviceDescription { 23 public: 24 CloudDeviceDescription(); 25 ~CloudDeviceDescription(); 26 27 void Reset(); 28 29 bool InitFromDictionary(scoped_ptr<base::DictionaryValue> root); 30 bool InitFromString(const std::string& json); 31 32 std::string ToString() const; 33 34 const base::DictionaryValue& root() const { return *root_; } 35 36 // Returns dictionary with capability/option. 37 // Returns NULL if missing. 38 const base::DictionaryValue* GetItem(const std::string& path) const; 39 40 // Create dictionary for capability/option. 41 // Never returns NULL. 42 base::DictionaryValue* CreateItem(const std::string& path); 43 44 // Returns list with capability/option. 45 // Returns NULL if missing. 46 const base::ListValue* GetListItem(const std::string& path) const; 47 48 // Create list for capability/option. 49 // Never returns NULL. 50 base::ListValue* CreateListItem(const std::string& path); 51 52 private: 53 scoped_ptr<base::DictionaryValue> root_; 54 55 DISALLOW_COPY_AND_ASSIGN(CloudDeviceDescription); 56}; 57 58} // namespace cloud_devices 59 60#endif // COMPONENTS_CLOUD_DEVICES_COMMON_CLOUD_DEVICE_DESCRIPTION_H_ 61