Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / xwalk / application / browser / application_storage_impl.h
1 // Copyright (c) 2013 Intel Corporation. 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 XWALK_APPLICATION_BROWSER_APPLICATION_STORAGE_IMPL_H_
6 #define XWALK_APPLICATION_BROWSER_APPLICATION_STORAGE_IMPL_H_
7
8 #include <set>
9 #include <string>
10 #include <utility>
11 #include <vector>
12
13 #include "base/files/file_path.h"
14 #include "sql/connection.h"
15 #include "sql/meta_table.h"
16 #include "xwalk/application/common/application_data.h"
17
18 namespace xwalk {
19 namespace application {
20
21 // The Sqlite backend implementation of ApplicationStorage.
22 class ApplicationStorageImpl {
23  public:
24   static const base::FilePath::CharType kDBFileName[];
25   explicit ApplicationStorageImpl(const base::FilePath& path);
26   ~ApplicationStorageImpl();
27
28   bool AddApplication(const ApplicationData* application,
29                       const base::Time& install_time);
30   bool RemoveApplication(const std::string& key);
31   bool UpdateApplication(ApplicationData* application,
32                          const base::Time& install_time);
33   bool Init(
34       ApplicationData::ApplicationDataMap& applications);
35   bool GetInstalledApplications(
36       ApplicationData::ApplicationDataMap& applications);
37
38  private:
39   bool UpgradeToVersion1(const base::FilePath& v0_file);
40   bool SetApplicationValue(const ApplicationData* application,
41                            const base::Time& install_time,
42                            const std::string& operation);
43   // Events helper functions
44   bool SetEventsValue(const std::string& id,
45                       const std::set<std::string>& events,
46                       const std::string& operation);
47   bool SetEvents(const std::string& id,
48                  const std::set<std::string>& events);
49   bool UpdateEvents(const std::string& id,
50                     const std::set<std::string>& events);
51   bool DeleteEvents(const std::string& id);
52   // Permissions helper functions
53   bool SetPermissionsValue(const std::string& id,
54                            const StoredPermissionMap& permissions,
55                            const std::string& operation);
56   bool SetPermissions(const std::string& id,
57                       const StoredPermissionMap& permissions);
58   bool UpdatePermissions(const std::string& id,
59                          const StoredPermissionMap& permissions);
60   bool RevokePermissions(const std::string& id);
61
62   bool CollectGarbageApplications();
63
64   scoped_ptr<sql::Connection> sqlite_db_;
65   sql::MetaTable meta_table_;
66   base::FilePath data_path_;
67   bool db_initialized_;
68 };
69
70 }  // namespace application
71 }  // namespace xwalk
72
73 #endif  // XWALK_APPLICATION_BROWSER_APPLICATION_STORAGE_IMPL_H_