Upstream version 8.36.156.0
[platform/framework/web/crosswalk.git] / src / xwalk / application / common / 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_COMMON_APPLICATION_STORAGE_IMPL_H_
6 #define XWALK_APPLICATION_COMMON_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 ContainsApplication(const std::string& key);
32   bool UpdateApplication(ApplicationData* application,
33                          const base::Time& install_time);
34   bool Init();
35
36   scoped_refptr<ApplicationData> GetApplicationData(const std::string& id);
37   bool GetInstalledApplications(
38       ApplicationData::ApplicationDataMap& applications);  // NOLINT
39
40   bool GetInstalledApplicationIDs(
41       std::vector<std::string>& app_ids);  // NOLINT
42
43  private:
44   scoped_refptr<ApplicationData> ExtractApplicationData(
45       const sql::Statement& smt);
46   bool UpgradeToVersion1(const base::FilePath& v0_file);
47   bool SetApplicationValue(const ApplicationData* application,
48                            const base::Time& install_time,
49                            const std::string& operation);
50   // Permissions helper functions
51   bool SetPermissionsValue(const std::string& id,
52                            const StoredPermissionMap& permissions,
53                            const std::string& operation);
54   bool SetPermissions(const std::string& id,
55                       const StoredPermissionMap& permissions);
56   bool UpdatePermissions(const std::string& id,
57                          const StoredPermissionMap& permissions);
58   bool RevokePermissions(const std::string& id);
59
60   scoped_ptr<sql::Connection> sqlite_db_;
61   sql::MetaTable meta_table_;
62   base::FilePath data_path_;
63   bool db_initialized_;
64 };
65
66 }  // namespace application
67 }  // namespace xwalk
68
69 #endif  // XWALK_APPLICATION_COMMON_APPLICATION_STORAGE_IMPL_H_