summaryrefslogtreecommitdiffstats
path: root/mojo/services/catalog/store.h
blob: cb763d510fcee4abe0728eb8419a6d7e906292d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// Copyright 2016 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 MOJO_SERVICES_CATALOG_STORE_H_
#define MOJO_SERVICES_CATALOG_STORE_H_

#include "base/values.h"

namespace catalog {

// Implemented by an object that provides storage for the application catalog
// (e.g. in Chrome, preferences). The Catalog is the canonical owner of the
// contents of the store, so no one else must modify its contents.
class Store {
 public:
  // Value is an integer.
  static const char kManifestVersionKey[];
  // Value is a string.
  static const char kNameKey[];
  // Value is a string.
  static const char kQualifierKey[];
  // Value is a string.
  static const char kDisplayNameKey[];
  // Value is a dictionary.
  static const char kCapabilitiesKey[];
  // Value is a dictionary.
  static const char kCapabilities_ProvidedKey[];
  // Value is a dictionary.
  static const char kCapabilities_RequiredKey[];
  // Value is a list.
  static const char kCapabilities_ClassesKey[];
  // Value is a list.
  static const char kCapabilities_InterfacesKey[];

  virtual ~Store() {}

  // Called during initialization to construct the Catalog's catalog.
  // Returns a serialized list of the apps. Each entry in the returned list
  // corresponds to an app (as a dictionary). Each dictionary has a name,
  // display name and capabilities. The return value is owned by the caller.
  virtual const base::ListValue* GetStore() = 0;

  // Write the catalog to the store. Called when the Catalog learns of a newly
  // encountered application.
  virtual void UpdateStore(scoped_ptr<base::ListValue> store) = 0;
};

}  // namespace catalog

#endif  // MOJO_SERVICES_CATALOG_STORE_H_