OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef SHELL_APPLICATION_MANAGER_APPLICATION_MANAGER_H_ | 5 #ifndef SHELL_APPLICATION_MANAGER_APPLICATION_MANAGER_H_ |
6 #define SHELL_APPLICATION_MANAGER_APPLICATION_MANAGER_H_ | 6 #define SHELL_APPLICATION_MANAGER_APPLICATION_MANAGER_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 | 9 |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
(...skipping 18 matching lines...) Expand all Loading... |
29 namespace shell { | 29 namespace shell { |
30 | 30 |
31 class Fetcher; | 31 class Fetcher; |
32 class ShellImpl; | 32 class ShellImpl; |
33 | 33 |
34 class ApplicationManager { | 34 class ApplicationManager { |
35 public: | 35 public: |
36 class Delegate { | 36 class Delegate { |
37 public: | 37 public: |
38 virtual ~Delegate(); | 38 virtual ~Delegate(); |
39 // Send when the Application holding the handle on the other end of the | |
40 // Shell pipe goes away. | |
41 virtual void OnApplicationError(const GURL& url); | |
42 virtual GURL ResolveURL(const GURL& url); | 39 virtual GURL ResolveURL(const GURL& url); |
43 virtual GURL ResolveMappings(const GURL& url); | 40 virtual GURL ResolveMappings(const GURL& url); |
44 }; | 41 }; |
45 | 42 |
46 // API for testing. | 43 // API for testing. |
47 class TestAPI { | 44 class TestAPI { |
48 public: | 45 public: |
49 explicit TestAPI(ApplicationManager* manager); | 46 explicit TestAPI(ApplicationManager* manager); |
50 ~TestAPI(); | 47 ~TestAPI(); |
51 | 48 |
52 // Returns true if the shared instance has been created. | 49 // Returns true if the shared instance has been created. |
53 static bool HasCreatedInstance(); | 50 static bool HasCreatedInstance(); |
54 // Returns true if there is a ShellImpl for this URL. | 51 // Returns true if there is a ShellImpl for this URL. |
55 bool HasFactoryForURL(const GURL& url) const; | 52 bool HasFactoryForURL(const GURL& url) const; |
56 | 53 |
57 private: | 54 private: |
58 ApplicationManager* manager_; | 55 ApplicationManager* manager_; |
59 | 56 |
60 DISALLOW_COPY_AND_ASSIGN(TestAPI); | 57 DISALLOW_COPY_AND_ASSIGN(TestAPI); |
61 }; | 58 }; |
62 | 59 |
63 explicit ApplicationManager(Delegate* delegate); | 60 explicit ApplicationManager(Delegate* delegate); |
64 ~ApplicationManager(); | 61 ~ApplicationManager(); |
65 | 62 |
66 // Loads a service if necessary and establishes a new client connection. | 63 // Loads a service if necessary and establishes a new client connection. |
67 void ConnectToApplication(const GURL& application_url, | 64 void ConnectToApplication(const GURL& application_url, |
68 const GURL& requestor_url, | 65 const GURL& requestor_url, |
69 InterfaceRequest<ServiceProvider> services, | 66 InterfaceRequest<ServiceProvider> services, |
70 ServiceProviderPtr exposed_services); | 67 ServiceProviderPtr exposed_services, |
| 68 const base::Closure& on_application_end); |
71 | 69 |
72 template <typename Interface> | 70 template <typename Interface> |
73 inline void ConnectToService(const GURL& application_url, | 71 inline void ConnectToService(const GURL& application_url, |
74 InterfacePtr<Interface>* ptr) { | 72 InterfacePtr<Interface>* ptr) { |
75 ScopedMessagePipeHandle service_handle = | 73 ScopedMessagePipeHandle service_handle = |
76 ConnectToServiceByName(application_url, Interface::Name_); | 74 ConnectToServiceByName(application_url, Interface::Name_); |
77 ptr->Bind(service_handle.Pass()); | 75 ptr->Bind(service_handle.Pass()); |
78 } | 76 } |
79 | 77 |
80 ScopedMessagePipeHandle ConnectToServiceByName( | 78 ScopedMessagePipeHandle ConnectToServiceByName( |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 typedef std::map<GURL, ContentHandlerConnection*> URLToContentHandlerMap; | 136 typedef std::map<GURL, ContentHandlerConnection*> URLToContentHandlerMap; |
139 typedef std::map<GURL, std::vector<std::string>> URLToArgsMap; | 137 typedef std::map<GURL, std::vector<std::string>> URLToArgsMap; |
140 typedef std::map<std::string, GURL> MimeTypeToURLMap; | 138 typedef std::map<std::string, GURL> MimeTypeToURLMap; |
141 typedef std::map<GURL, NativeRunnerFactory::Options> URLToNativeOptionsMap; | 139 typedef std::map<GURL, NativeRunnerFactory::Options> URLToNativeOptionsMap; |
142 | 140 |
143 void ConnectToApplicationWithParameters( | 141 void ConnectToApplicationWithParameters( |
144 const GURL& application_url, | 142 const GURL& application_url, |
145 const GURL& requestor_url, | 143 const GURL& requestor_url, |
146 InterfaceRequest<ServiceProvider> services, | 144 InterfaceRequest<ServiceProvider> services, |
147 ServiceProviderPtr exposed_services, | 145 ServiceProviderPtr exposed_services, |
| 146 const base::Closure& on_application_end, |
148 const std::vector<std::string>& parameters); | 147 const std::vector<std::string>& parameters); |
149 | 148 |
150 bool ConnectToRunningApplication(const GURL& resolved_url, | 149 bool ConnectToRunningApplication(const GURL& resolved_url, |
151 const GURL& requestor_url, | 150 const GURL& requestor_url, |
152 InterfaceRequest<ServiceProvider>* services, | 151 InterfaceRequest<ServiceProvider>* services, |
153 ServiceProviderPtr* exposed_services); | 152 ServiceProviderPtr* exposed_services); |
154 | 153 |
155 bool ConnectToApplicationWithLoader( | 154 bool ConnectToApplicationWithLoader( |
156 const GURL& requested_url, | |
157 const GURL& resolved_url, | 155 const GURL& resolved_url, |
158 const GURL& requestor_url, | 156 const GURL& requestor_url, |
159 InterfaceRequest<ServiceProvider>* services, | 157 InterfaceRequest<ServiceProvider>* services, |
160 ServiceProviderPtr* exposed_services, | 158 ServiceProviderPtr* exposed_services, |
| 159 const base::Closure& on_application_end, |
161 const std::vector<std::string>& parameters, | 160 const std::vector<std::string>& parameters, |
162 ApplicationLoader* loader); | 161 ApplicationLoader* loader); |
163 | 162 |
164 InterfaceRequest<Application> RegisterShell( | 163 InterfaceRequest<Application> RegisterShell( |
165 // The original URL requested by client, before any resolution or | |
166 // redirects. | |
167 // This is mostly useless and should be removed. | |
168 const GURL& original_url, | |
169 // The URL after resolution and redirects, including the querystring. | 164 // The URL after resolution and redirects, including the querystring. |
170 const GURL& resolved_url, | 165 const GURL& resolved_url, |
171 const GURL& requestor_url, | 166 const GURL& requestor_url, |
172 InterfaceRequest<ServiceProvider> services, | 167 InterfaceRequest<ServiceProvider> services, |
173 ServiceProviderPtr exposed_services, | 168 ServiceProviderPtr exposed_services, |
| 169 const base::Closure& on_application_end, |
174 const std::vector<std::string>& parameters); | 170 const std::vector<std::string>& parameters); |
175 | 171 |
176 ShellImpl* GetShellImpl(const GURL& url); | 172 ShellImpl* GetShellImpl(const GURL& url); |
177 | 173 |
178 void ConnectToClient(ShellImpl* shell_impl, | 174 void ConnectToClient(ShellImpl* shell_impl, |
179 const GURL& resolved_url, | 175 const GURL& resolved_url, |
180 const GURL& requestor_url, | 176 const GURL& requestor_url, |
181 InterfaceRequest<ServiceProvider> services, | 177 InterfaceRequest<ServiceProvider> services, |
182 ServiceProviderPtr exposed_services); | 178 ServiceProviderPtr exposed_services); |
183 | 179 |
184 void HandleFetchCallback(const GURL& requested_url, | 180 void HandleFetchCallback(const GURL& requestor_url, |
185 const GURL& requestor_url, | |
186 InterfaceRequest<ServiceProvider> services, | 181 InterfaceRequest<ServiceProvider> services, |
187 ServiceProviderPtr exposed_services, | 182 ServiceProviderPtr exposed_services, |
| 183 const base::Closure& on_application_end, |
188 const std::vector<std::string>& parameters, | 184 const std::vector<std::string>& parameters, |
189 NativeRunner::CleanupBehavior cleanup_behavior, | 185 NativeRunner::CleanupBehavior cleanup_behavior, |
190 scoped_ptr<Fetcher> fetcher); | 186 scoped_ptr<Fetcher> fetcher); |
191 | 187 |
192 void RunNativeApplication(InterfaceRequest<Application> application_request, | 188 void RunNativeApplication(InterfaceRequest<Application> application_request, |
193 const NativeRunnerFactory::Options& options, | 189 const NativeRunnerFactory::Options& options, |
194 NativeRunner::CleanupBehavior cleanup_behavior, | 190 NativeRunner::CleanupBehavior cleanup_behavior, |
195 scoped_ptr<Fetcher> fetcher, | 191 scoped_ptr<Fetcher> fetcher, |
196 const base::FilePath& file_path, | 192 const base::FilePath& file_path, |
197 bool path_exists); | 193 bool path_exists); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
233 bool disable_cache_; | 229 bool disable_cache_; |
234 base::WeakPtrFactory<ApplicationManager> weak_ptr_factory_; | 230 base::WeakPtrFactory<ApplicationManager> weak_ptr_factory_; |
235 | 231 |
236 DISALLOW_COPY_AND_ASSIGN(ApplicationManager); | 232 DISALLOW_COPY_AND_ASSIGN(ApplicationManager); |
237 }; | 233 }; |
238 | 234 |
239 } // namespace shell | 235 } // namespace shell |
240 } // namespace mojo | 236 } // namespace mojo |
241 | 237 |
242 #endif // SHELL_APPLICATION_MANAGER_APPLICATION_MANAGER_H_ | 238 #endif // SHELL_APPLICATION_MANAGER_APPLICATION_MANAGER_H_ |
OLD | NEW |