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

Side by Side Diff: shell/application_manager/application_manager.cc

Issue 868463008: Remove Client relationship between mojo.Shell/mojo.Application (Closed) Base URL: git@github.com:domokit/mojo.git@app_impl_init
Patch Set: fix android Created 5 years, 11 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
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 #include "shell/application_manager/application_manager.h" 5 #include "shell/application_manager/application_manager.h"
6 6
7 #include <stdio.h> 7 #include <stdio.h>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/lazy_instance.h" 10 #include "base/lazy_instance.h"
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 << requested_url.spec(); 144 << requested_url.spec();
145 } 145 }
146 146
147 void ApplicationManager::ConnectToApplicationImpl( 147 void ApplicationManager::ConnectToApplicationImpl(
148 const GURL& requested_url, 148 const GURL& requested_url,
149 const GURL& resolved_url, 149 const GURL& resolved_url,
150 const GURL& requestor_url, 150 const GURL& requestor_url,
151 InterfaceRequest<ServiceProvider> services, 151 InterfaceRequest<ServiceProvider> services,
152 ServiceProviderPtr exposed_services, 152 ServiceProviderPtr exposed_services,
153 ApplicationLoader* loader) { 153 ApplicationLoader* loader) {
154 ShellPtr shell_ptr; 154 ApplicationPtr application;
155 InterfaceRequest<Application> application_request = GetProxy(&application);
155 ShellImpl* shell = 156 ShellImpl* shell =
156 new ShellImpl(GetProxy(&shell_ptr), this, requested_url, resolved_url); 157 new ShellImpl(application.Pass(), this, requested_url, resolved_url);
157 url_to_shell_impl_[resolved_url] = shell; 158 url_to_shell_impl_[resolved_url] = shell;
158 shell->client()->Initialize(GetArgsForURL(requested_url)); 159 shell->InitializeApplication(GetArgsForURL(requested_url));
159 160
160 loader->Load(this, resolved_url, shell_ptr.Pass(), 161 loader->Load(this, resolved_url, application_request.Pass(),
161 base::Bind(&ApplicationManager::LoadWithContentHandler, 162 base::Bind(&ApplicationManager::LoadWithContentHandler,
162 weak_ptr_factory_.GetWeakPtr())); 163 weak_ptr_factory_.GetWeakPtr()));
163 ConnectToClient(shell, resolved_url, requestor_url, services.Pass(), 164 ConnectToClient(shell, resolved_url, requestor_url, services.Pass(),
164 exposed_services.Pass()); 165 exposed_services.Pass());
165 } 166 }
166 167
167 ShellImpl* ApplicationManager::GetShellImpl(const GURL& url) { 168 ShellImpl* ApplicationManager::GetShellImpl(const GURL& url) {
168 const auto& shell_it = url_to_shell_impl_.find(url); 169 const auto& shell_it = url_to_shell_impl_.find(url);
169 if (shell_it != url_to_shell_impl_.end()) 170 if (shell_it != url_to_shell_impl_.end())
170 return shell_it->second; 171 return shell_it->second;
171 return nullptr; 172 return nullptr;
172 } 173 }
173 174
174 void ApplicationManager::ConnectToClient( 175 void ApplicationManager::ConnectToClient(
175 ShellImpl* shell_impl, 176 ShellImpl* shell_impl,
176 const GURL& url, 177 const GURL& url,
177 const GURL& requestor_url, 178 const GURL& requestor_url,
178 InterfaceRequest<ServiceProvider> services, 179 InterfaceRequest<ServiceProvider> services,
179 ServiceProviderPtr exposed_services) { 180 ServiceProviderPtr exposed_services) {
180 shell_impl->ConnectToClient(requestor_url, services.Pass(), 181 shell_impl->ConnectToClient(requestor_url, services.Pass(),
181 exposed_services.Pass()); 182 exposed_services.Pass());
182 } 183 }
183 184
184 void ApplicationManager::RegisterExternalApplication( 185 void ApplicationManager::RegisterExternalApplication(
185 const GURL& url, 186 const GURL& url,
186 const std::vector<std::string>& args, 187 const std::vector<std::string>& args,
187 ScopedMessagePipeHandle shell_handle) { 188 ApplicationPtr application) {
188 ShellImpl* shell_impl = 189 ShellImpl* shell_impl = new ShellImpl(application.Pass(), this, url, url);
189 new ShellImpl(MakeRequest<Shell>(shell_handle.Pass()), this, url, url);
190 url_to_shell_impl_[url] = shell_impl; 190 url_to_shell_impl_[url] = shell_impl;
191 191
192 if (args.empty()) 192 if (args.empty())
193 shell_impl->client()->Initialize(GetArgsForURL(url)); 193 shell_impl->InitializeApplication(GetArgsForURL(url));
194 else 194 else
195 shell_impl->client()->Initialize(Array<String>::From(args)); 195 shell_impl->InitializeApplication(Array<String>::From(args));
196 } 196 }
197 197
198 void ApplicationManager::LoadWithContentHandler( 198 void ApplicationManager::LoadWithContentHandler(
199 const GURL& content_handler_url, 199 const GURL& content_handler_url,
200 ScopedMessagePipeHandle shell_handle, 200 InterfaceRequest<Application> application_request,
201 URLResponsePtr url_response) { 201 URLResponsePtr url_response) {
202 ContentHandlerConnection* connection = NULL; 202 ContentHandlerConnection* connection = NULL;
203 URLToContentHandlerMap::iterator iter = 203 URLToContentHandlerMap::iterator iter =
204 url_to_content_handler_.find(content_handler_url); 204 url_to_content_handler_.find(content_handler_url);
205 if (iter != url_to_content_handler_.end()) { 205 if (iter != url_to_content_handler_.end()) {
206 connection = iter->second; 206 connection = iter->second;
207 } else { 207 } else {
208 connection = new ContentHandlerConnection(this, content_handler_url); 208 connection = new ContentHandlerConnection(this, content_handler_url);
209 url_to_content_handler_[content_handler_url] = connection; 209 url_to_content_handler_[content_handler_url] = connection;
210 } 210 }
211 211
212 connection->content_handler()->StartApplication( 212 connection->content_handler()->StartApplication(application_request.Pass(),
213 MakeProxy<Shell>(shell_handle.Pass()), url_response.Pass()); 213 url_response.Pass());
214 } 214 }
215 215
216 void ApplicationManager::SetLoaderForURL(scoped_ptr<ApplicationLoader> loader, 216 void ApplicationManager::SetLoaderForURL(scoped_ptr<ApplicationLoader> loader,
217 const GURL& url) { 217 const GURL& url) {
218 URLToLoaderMap::iterator it = url_to_loader_.find(url); 218 URLToLoaderMap::iterator it = url_to_loader_.find(url);
219 if (it != url_to_loader_.end()) 219 if (it != url_to_loader_.end())
220 delete it->second; 220 delete it->second;
221 url_to_loader_[url] = loader.release(); 221 url_to_loader_[url] = loader.release();
222 } 222 }
223 223
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 return pipe.handle0.Pass(); 284 return pipe.handle0.Pass();
285 } 285 }
286 286
287 Array<String> ApplicationManager::GetArgsForURL(const GURL& url) { 287 Array<String> ApplicationManager::GetArgsForURL(const GURL& url) {
288 URLToArgsMap::const_iterator args_it = url_to_args_.find(url); 288 URLToArgsMap::const_iterator args_it = url_to_args_.find(url);
289 if (args_it != url_to_args_.end()) 289 if (args_it != url_to_args_.end())
290 return Array<String>::From(args_it->second); 290 return Array<String>::From(args_it->second);
291 return Array<String>(); 291 return Array<String>();
292 } 292 }
293 } // namespace mojo 293 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698