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_BROWSER_APPLICATION_STORAGE_IMPL_H_
6 #define XWALK_APPLICATION_BROWSER_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 UpdateApplication(ApplicationData* application,
32 const base::Time& install_time);
34 ApplicationData::ApplicationDataMap& applications);
35 bool GetInstalledApplications(
36 ApplicationData::ApplicationDataMap& applications);
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);
62 scoped_ptr<sql::Connection> sqlite_db_;
63 sql::MetaTable meta_table_;
64 base::FilePath data_path_;
68 } // namespace application
71 #endif // XWALK_APPLICATION_BROWSER_APPLICATION_STORAGE_IMPL_H_