Upstream version 7.35.144.0
[platform/framework/web/crosswalk.git] / src / components / cloud_devices / cloud_device_description.h
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_CLOUD_DEVICE_DESCRIPTION_H_
6 #define COMPONENTS_CLOUD_DEVICES_CLOUD_DEVICE_DESCRIPTION_H_
7
8 #include <string>
9
10 #include "base/callback.h"
11
12 namespace base {
13 class DictionaryValue;
14 class ListValue;
15 }
16
17 namespace 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
22 class 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   // Returns dictionary with capability/option.
35   // Returns NULL if missing.
36   const base::DictionaryValue* GetItem(const std::string& path) const;
37
38   // Create dictionary for capability/option.
39   // Never returns NULL.
40   base::DictionaryValue* CreateItem(const std::string& path);
41
42   // Returns list with capability/option.
43   // Returns NULL if missing.
44   const base::ListValue* GetListItem(const std::string& path) const;
45
46   // Create list for capability/option.
47   // Never returns NULL.
48   base::ListValue* CreateListItem(const std::string& path);
49
50  private:
51   scoped_ptr<base::DictionaryValue> root_;
52
53   DISALLOW_COPY_AND_ASSIGN(CloudDeviceDescription);
54 };
55
56 }  // namespace cloud_devices
57
58 #endif  // COMPONENTS_CLOUD_DEVICES_CLOUD_DEVICE_DESCRIPTION_H_