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.
5 #ifndef XWALK_APPLICATION_COMMON_APPLICATION_STORAGE_IMPL_H_
6 #define XWALK_APPLICATION_COMMON_APPLICATION_STORAGE_IMPL_H_
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"
19 namespace application {
21 // The Sqlite backend implementation of ApplicationStorage.
22 class ApplicationStorageImpl {
24 static const base::FilePath::CharType kDBFileName[];
25 explicit ApplicationStorageImpl(const base::FilePath& path);
26 ~ApplicationStorageImpl();
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);
36 scoped_refptr<ApplicationData> GetApplicationData(const std::string& id);
37 bool GetInstalledApplications(
38 ApplicationData::ApplicationDataMap& applications); // NOLINT
40 bool GetInstalledApplicationIDs(
41 std::vector<std::string>& app_ids); // NOLINT
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);
60 scoped_ptr<sql::Connection> sqlite_db_;
61 sql::MetaTable meta_table_;
62 base::FilePath data_path_;
66 } // namespace application
69 #endif // XWALK_APPLICATION_COMMON_APPLICATION_STORAGE_IMPL_H_