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

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

Issue 1229903003: Mandoline: Implement basic "process per site" support (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed nit 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/services/network/url_loader_impl.cc ('k') | no next file » | 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 #include "mojo/shell/application_manager.h" 5 #include "mojo/shell/application_manager.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 return; 283 return;
284 } 284 }
285 285
286 const GURL app_url = 286 const GURL app_url =
287 requested_url.scheme() == "mojo" ? requested_url : fetcher->GetURL(); 287 requested_url.scheme() == "mojo" ? requested_url : fetcher->GetURL();
288 288
289 InterfaceRequest<Application> request( 289 InterfaceRequest<Application> request(
290 RegisterShell(app_url, qualifier, requestor_url, services.Pass(), 290 RegisterShell(app_url, qualifier, requestor_url, services.Pass(),
291 exposed_services.Pass(), on_application_end)); 291 exposed_services.Pass(), on_application_end));
292 292
293 // For resources that are loaded with content handlers, we group app instances
294 // by site.
295
293 // If the response begins with a #!mojo <content-handler-url>, use it. 296 // If the response begins with a #!mojo <content-handler-url>, use it.
294 GURL content_handler_url; 297 GURL content_handler_url;
295 std::string shebang; 298 std::string shebang;
299 bool enable_multi_process = base::CommandLine::ForCurrentProcess()->HasSwitch(
300 switches::kEnableMultiprocess);
301
296 if (fetcher->PeekContentHandler(&shebang, &content_handler_url)) { 302 if (fetcher->PeekContentHandler(&shebang, &content_handler_url)) {
297 LoadWithContentHandler( 303 URLResponsePtr response(fetcher->AsURLResponse(
298 content_handler_url, requestor_url, qualifier, request.Pass(), 304 blocking_pool_, static_cast<int>(shebang.size())));
299 fetcher->AsURLResponse(blocking_pool_, 305 std::string site =
300 static_cast<int>(shebang.size()))); 306 enable_multi_process ? response->site.To<std::string>() : std::string();
307 LoadWithContentHandler(content_handler_url, requestor_url, site,
308 request.Pass(), response.Pass());
301 return; 309 return;
302 } 310 }
303 311
304 MimeTypeToURLMap::iterator iter = mime_type_to_url_.find(fetcher->MimeType()); 312 MimeTypeToURLMap::iterator iter = mime_type_to_url_.find(fetcher->MimeType());
305 if (iter != mime_type_to_url_.end()) { 313 if (iter != mime_type_to_url_.end()) {
306 LoadWithContentHandler(iter->second, requestor_url, qualifier, 314 URLResponsePtr response(fetcher->AsURLResponse(blocking_pool_, 0));
307 request.Pass(), 315 std::string site =
308 fetcher->AsURLResponse(blocking_pool_, 0)); 316 enable_multi_process ? response->site.To<std::string>() : std::string();
317 LoadWithContentHandler(iter->second, requestor_url, site, request.Pass(),
318 response.Pass());
309 return; 319 return;
310 } 320 }
311 321
312 auto alias_iter = application_package_alias_.find(app_url); 322 auto alias_iter = application_package_alias_.find(app_url);
313 if (alias_iter != application_package_alias_.end()) { 323 if (alias_iter != application_package_alias_.end()) {
314 // We replace the qualifier with the one our package alias requested. 324 // We replace the qualifier with the one our package alias requested.
315 URLResponsePtr response(URLResponse::New()); 325 URLResponsePtr response(URLResponse::New());
316 response->url = String::From(app_url.spec()); 326 response->url = String::From(app_url.spec());
317 327
318 std::string qualifier; 328 std::string qualifier;
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 return pipe.handle0.Pass(); 509 return pipe.handle0.Pass();
500 } 510 }
501 511
502 void ApplicationManager::CleanupRunner(NativeRunner* runner) { 512 void ApplicationManager::CleanupRunner(NativeRunner* runner) {
503 native_runners_.erase( 513 native_runners_.erase(
504 std::find(native_runners_.begin(), native_runners_.end(), runner)); 514 std::find(native_runners_.begin(), native_runners_.end(), runner));
505 } 515 }
506 516
507 } // namespace shell 517 } // namespace shell
508 } // namespace mojo 518 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/services/network/url_loader_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698