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_SERVICE_H_
6 #define XWALK_APPLICATION_BROWSER_APPLICATION_SERVICE_H_
9 #include "base/files/file_path.h"
10 #include "base/memory/scoped_ptr.h"
11 #include "base/memory/scoped_vector.h"
12 #include "base/observer_list.h"
13 #include "xwalk/application/browser/application.h"
14 #include "xwalk/runtime/browser/runtime_context.h"
15 #include "xwalk/application/common/application_data.h"
21 namespace application {
23 class ApplicationStorage;
24 class ApplicationEventManager;
26 // The application service manages install, uninstall and updates of
28 class ApplicationService : public Application::Observer {
30 // Client code may use this class (and register with AddObserver below) to
31 // keep track of [un]installation of applications.
34 virtual void OnApplicationInstalled(const std::string& app_id) {}
35 virtual void OnApplicationUninstalled(const std::string& app_id) {}
37 virtual void DidLaunchApplication(Application* app) {}
38 virtual void WillDestroyApplication(Application* app) {}
40 virtual ~Observer() {}
43 ApplicationService(RuntimeContext* runtime_context,
44 ApplicationStorage* app_storage,
45 ApplicationEventManager* event_manager);
46 virtual ~ApplicationService();
48 bool Install(const base::FilePath& path, std::string* id);
49 bool Uninstall(const std::string& id);
50 // Launch an installed application using application id.
51 Application* Launch(const std::string& id);
52 // Launch an unpacked application using path to a local directory which
53 // contains manifest file.
54 Application* Launch(const base::FilePath& path);
55 // Launch an application created from arbitrary url.
56 // FIXME: This application should have the same strict permissions
57 // as common browser apps.
58 Application* Launch(const GURL& url);
60 Application* GetApplicationByRenderHostID(int id) const;
61 Application* GetApplicationByID(const std::string& app_id) const;
63 const ScopedVector<Application>& active_applications() const {
64 return applications_; }
66 void AddObserver(Observer* observer);
67 void RemoveObserver(Observer* observer);
70 // Implementation of Application::Observer.
71 virtual void OnApplicationTerminated(Application* app) OVERRIDE;
73 Application* Launch(scoped_refptr<ApplicationData> application_data,
74 const Application::LaunchParams& launch_params);
76 xwalk::RuntimeContext* runtime_context_;
77 ApplicationStorage* application_storage_;
78 ApplicationEventManager* event_manager_;
79 ScopedVector<Application> applications_;
80 ObserverList<Observer> observers_;
82 DISALLOW_COPY_AND_ASSIGN(ApplicationService);
85 } // namespace application
88 #endif // XWALK_APPLICATION_BROWSER_APPLICATION_SERVICE_H_