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 #include "xwalk/application/browser/application_storage.h"
9 #include "xwalk/application/browser/application_storage_impl.h"
10 #include "xwalk/application/common/application_file_util.h"
11 #include "xwalk/runtime/browser/runtime_context.h"
14 namespace application {
16 ApplicationStorage::ApplicationStorage(const base::FilePath& path)
18 impl_(new ApplicationStorageImpl(path)) {
19 impl_->Init(applications_);
22 ApplicationStorage::~ApplicationStorage() {
25 bool ApplicationStorage::AddApplication(
26 scoped_refptr<ApplicationData> app_data) {
27 if (Contains(app_data->ID())) {
28 LOG(WARNING) << "Application " << app_data->ID()
29 << " has been already installed";
33 if (!impl_->AddApplication(app_data.get(), base::Time::Now()) ||
40 bool ApplicationStorage::RemoveApplication(const std::string& id) {
41 if (applications_.erase(id) != 1) {
42 LOG(ERROR) << "Application " << id << " is invalid.";
46 if (!impl_->RemoveApplication(id)) {
47 LOG(ERROR) << "Error occurred while trying to remove application"
48 "information with id "
49 << id << " from database.";
56 bool ApplicationStorage::UpdateApplication(
57 scoped_refptr<ApplicationData> app_data) {
58 ApplicationData::ApplicationDataMapIterator it =
59 applications_.find(app_data->ID());
60 if (it == applications_.end()) {
61 LOG(ERROR) << "Application " << app_data->ID() << " is invalid.";
65 it->second = app_data;
66 if (!impl_->UpdateApplication(app_data.get(), base::Time::Now()))
72 bool ApplicationStorage::Contains(const std::string& app_id) const {
73 return applications_.find(app_id) != applications_.end();
76 scoped_refptr<ApplicationData> ApplicationStorage::GetApplicationData(
77 const std::string& application_id) const {
78 ApplicationData::ApplicationDataMap::const_iterator it =
79 applications_.find(application_id);
80 if (it != applications_.end()) {
87 const ApplicationData::ApplicationDataMap&
88 ApplicationStorage::GetInstalledApplications() const {
92 bool ApplicationStorage::Insert(scoped_refptr<ApplicationData> app_data) {
93 return applications_.insert(
94 std::pair<std::string, scoped_refptr<ApplicationData> >(
95 app_data->ID(), app_data)).second;
98 } // namespace application