Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(176)

Side by Side Diff: mojo/shell/application_manager.h

Issue 1228743002: Mandoline: Move ContentHandlerConnection into separate file (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix build Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « mojo/shell/BUILD.gn ('k') | mojo/shell/application_manager.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 13 matching lines...) Expand all
24 #include "url/gurl.h" 24 #include "url/gurl.h"
25 25
26 namespace base { 26 namespace base {
27 class FilePath; 27 class FilePath;
28 class SequencedWorkerPool; 28 class SequencedWorkerPool;
29 } 29 }
30 30
31 namespace mojo { 31 namespace mojo {
32 namespace shell { 32 namespace shell {
33 33
34 class ContentHandlerConnection;
34 class ShellImpl; 35 class ShellImpl;
35 36
36 class ApplicationManager { 37 class ApplicationManager {
37 public: 38 public:
38 class Delegate { 39 class Delegate {
39 public: 40 public:
40 // Gives the delegate a chance to apply any mappings for the specified url. 41 // Gives the delegate a chance to apply any mappings for the specified url.
41 // This should not resolve 'mojo' urls, that is done by ResolveMojoURL(). 42 // This should not resolve 'mojo' urls, that is done by ResolveMojoURL().
42 virtual GURL ResolveMappings(const GURL& url) = 0; 43 virtual GURL ResolveMappings(const GURL& url) = 0;
43 44
(...skipping 25 matching lines...) Expand all
69 private: 70 private:
70 ApplicationManager* manager_; 71 ApplicationManager* manager_;
71 72
72 DISALLOW_COPY_AND_ASSIGN(TestAPI); 73 DISALLOW_COPY_AND_ASSIGN(TestAPI);
73 }; 74 };
74 75
75 explicit ApplicationManager(Delegate* delegate); 76 explicit ApplicationManager(Delegate* delegate);
76 ~ApplicationManager(); 77 ~ApplicationManager();
77 78
78 // Loads a service if necessary and establishes a new client connection. 79 // Loads a service if necessary and establishes a new client connection.
79 void ConnectToApplication(mojo::URLRequestPtr application_url, 80 void ConnectToApplication(
80 const GURL& requestor_url, 81 mojo::URLRequestPtr requested_url,
81 InterfaceRequest<ServiceProvider> services, 82 const std::string& qualifier,
82 ServiceProviderPtr exposed_services, 83 const GURL& requestor_url,
83 const base::Closure& on_application_end); 84 InterfaceRequest<ServiceProvider> services,
85 ServiceProviderPtr exposed_services,
86 const base::Closure& on_application_end);
87
84 88
85 template <typename Interface> 89 template <typename Interface>
86 inline void ConnectToService(const GURL& application_url, 90 inline void ConnectToService(const GURL& application_url,
87 InterfacePtr<Interface>* ptr) { 91 InterfacePtr<Interface>* ptr) {
88 ScopedMessagePipeHandle service_handle = 92 ScopedMessagePipeHandle service_handle =
89 ConnectToServiceByName(application_url, Interface::Name_); 93 ConnectToServiceByName(application_url, Interface::Name_);
90 ptr->Bind(InterfacePtrInfo<Interface>(service_handle.Pass(), 0u)); 94 ptr->Bind(InterfacePtrInfo<Interface>(service_handle.Pass(), 0u));
91 } 95 }
92 96
93 ScopedMessagePipeHandle ConnectToServiceByName( 97 ScopedMessagePipeHandle ConnectToServiceByName(
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 const GURL& url); 140 const GURL& url);
137 141
138 // Destroys all Shell-ends of connections established with Applications. 142 // Destroys all Shell-ends of connections established with Applications.
139 // Applications connected by this ApplicationManager will observe pipe errors 143 // Applications connected by this ApplicationManager will observe pipe errors
140 // and have a chance to shutdown. 144 // and have a chance to shutdown.
141 void TerminateShellConnections(); 145 void TerminateShellConnections();
142 146
143 // Removes a ShellImpl when it encounters an error. 147 // Removes a ShellImpl when it encounters an error.
144 void OnShellImplError(ShellImpl* shell_impl); 148 void OnShellImplError(ShellImpl* shell_impl);
145 149
150 // Removes a ContentHandler when its connection is closed.
151 void OnContentHandlerConnectionClosed(
152 ContentHandlerConnection* content_handler);
153
146 private: 154 private:
147 class ContentHandlerConnection;
148
149 using ApplicationPackagedAlias = std::map<GURL, std::pair<GURL, std::string>>; 155 using ApplicationPackagedAlias = std::map<GURL, std::pair<GURL, std::string>>;
150 using IdentityToShellImplMap = std::map<Identity, ShellImpl*>; 156 using IdentityToShellImplMap = std::map<Identity, ShellImpl*>;
151 using MimeTypeToURLMap = std::map<std::string, GURL>; 157 using MimeTypeToURLMap = std::map<std::string, GURL>;
152 using SchemeToLoaderMap = std::map<std::string, ApplicationLoader*>; 158 using SchemeToLoaderMap = std::map<std::string, ApplicationLoader*>;
153 using URLToContentHandlerMap = 159 using URLToContentHandlerMap =
154 std::map<std::pair<GURL, std::string>, ContentHandlerConnection*>; 160 std::map<std::pair<GURL, std::string>, ContentHandlerConnection*>;
155 using URLToLoaderMap = std::map<GURL, ApplicationLoader*>; 161 using URLToLoaderMap = std::map<GURL, ApplicationLoader*>;
156 using URLToNativeOptionsMap = std::map<GURL, NativeRunnerFactory::Options>; 162 using URLToNativeOptionsMap = std::map<GURL, NativeRunnerFactory::Options>;
157 163
158 void ConnectToApplicationInternal(
159 mojo::URLRequestPtr requested_url,
160 const std::string& qualifier,
161 const GURL& requestor_url,
162 InterfaceRequest<ServiceProvider> services,
163 ServiceProviderPtr exposed_services,
164 const base::Closure& on_application_end);
165
166 bool ConnectToRunningApplication(const GURL& resolved_url, 164 bool ConnectToRunningApplication(const GURL& resolved_url,
167 const std::string& qualifier, 165 const std::string& qualifier,
168 const GURL& requestor_url, 166 const GURL& requestor_url,
169 InterfaceRequest<ServiceProvider>* services, 167 InterfaceRequest<ServiceProvider>* services,
170 ServiceProviderPtr* exposed_services); 168 ServiceProviderPtr* exposed_services);
171 169
172 bool ConnectToApplicationWithLoader( 170 bool ConnectToApplicationWithLoader(
173 const GURL& requested_url, 171 const GURL& requested_url,
174 const std::string& qualifier, 172 const std::string& qualifier,
175 const GURL& resolved_url, 173 const GURL& resolved_url,
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 void LoadWithContentHandler(const GURL& content_handler_url, 214 void LoadWithContentHandler(const GURL& content_handler_url,
217 const GURL& requestor_url, 215 const GURL& requestor_url,
218 const std::string& qualifier, 216 const std::string& qualifier,
219 InterfaceRequest<Application> application_request, 217 InterfaceRequest<Application> application_request,
220 URLResponsePtr url_response); 218 URLResponsePtr url_response);
221 219
222 // Returns the appropriate loader for |url|, or null if there is no loader 220 // Returns the appropriate loader for |url|, or null if there is no loader
223 // configured for the URL. 221 // configured for the URL.
224 ApplicationLoader* GetLoaderForURL(const GURL& url); 222 ApplicationLoader* GetLoaderForURL(const GURL& url);
225 223
226 // Removes a ContentHandler when it encounters an error.
227 void OnContentHandlerError(ContentHandlerConnection* content_handler);
228
229 void CleanupRunner(NativeRunner* runner); 224 void CleanupRunner(NativeRunner* runner);
230 225
231 Delegate* const delegate_; 226 Delegate* const delegate_;
232 // Loader management. 227 // Loader management.
233 // Loaders are chosen in the order they are listed here. 228 // Loaders are chosen in the order they are listed here.
234 URLToLoaderMap url_to_loader_; 229 URLToLoaderMap url_to_loader_;
235 SchemeToLoaderMap scheme_to_loader_; 230 SchemeToLoaderMap scheme_to_loader_;
236 scoped_ptr<ApplicationLoader> default_loader_; 231 scoped_ptr<ApplicationLoader> default_loader_;
237 scoped_ptr<NativeRunnerFactory> native_runner_factory_; 232 scoped_ptr<NativeRunnerFactory> native_runner_factory_;
238 233
(...skipping 11 matching lines...) Expand all
250 bool disable_cache_; 245 bool disable_cache_;
251 base::WeakPtrFactory<ApplicationManager> weak_ptr_factory_; 246 base::WeakPtrFactory<ApplicationManager> weak_ptr_factory_;
252 247
253 DISALLOW_COPY_AND_ASSIGN(ApplicationManager); 248 DISALLOW_COPY_AND_ASSIGN(ApplicationManager);
254 }; 249 };
255 250
256 } // namespace shell 251 } // namespace shell
257 } // namespace mojo 252 } // namespace mojo
258 253
259 #endif // SHELL_APPLICATION_MANAGER_APPLICATION_MANAGER_H_ 254 #endif // SHELL_APPLICATION_MANAGER_APPLICATION_MANAGER_H_
OLDNEW
« no previous file with comments | « mojo/shell/BUILD.gn ('k') | mojo/shell/application_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698