1 // Copyright (c) 2014 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_service_tizen.h"
10 #include "xwalk/application/browser/application.h"
11 #include "xwalk/application/common/application_storage.h"
12 #include "xwalk/application/common/id_util.h"
13 #include "xwalk/runtime/browser/runtime_context.h"
17 namespace application {
21 const base::FilePath::CharType kApplicationDataDirName[] =
22 FILE_PATH_LITERAL("Storage/ext");
24 base::FilePath GetStoragePartitionPath(
25 const base::FilePath& base_path, const std::string& app_id) {
26 return base_path.Append(kApplicationDataDirName).Append(app_id);
29 void CollectUnusedStoragePartitions(RuntimeContext* context,
30 ApplicationStorage* storage) {
31 std::vector<std::string> app_ids;
32 if (!storage->GetInstalledApplicationIDs(app_ids))
35 scoped_ptr<base::hash_set<base::FilePath> > active_paths(
36 new base::hash_set<base::FilePath>()); // NOLINT
38 for (unsigned i = 0; i < app_ids.size(); ++i) {
40 GetStoragePartitionPath(context->GetPath(), app_ids.at(i)));
43 content::BrowserContext::GarbageCollectStoragePartitions(
44 context, active_paths.Pass(), base::Bind(&base::DoNothing));
49 ApplicationServiceTizen::ApplicationServiceTizen(
50 RuntimeContext* runtime_context)
51 : ApplicationService(runtime_context),
52 application_storage_(new ApplicationStorage(runtime_context->GetPath())) {
53 CollectUnusedStoragePartitions(runtime_context, application_storage_.get());
56 ApplicationServiceTizen::~ApplicationServiceTizen() {
59 Application* ApplicationServiceTizen::LaunchFromAppID(
60 const std::string& id, const Application::LaunchParams& params) {
61 if (!IsValidApplicationID(id)) {
62 LOG(ERROR) << "The input parameter is not a valid app id: " << id;
66 scoped_refptr<ApplicationData> app_data =
67 application_storage_->GetApplicationData(id);
69 LOG(ERROR) << "Application with id " << id << " is not installed.";
73 return Launch(app_data, params);
76 } // namespace application