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 #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 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
306 return; | 306 return; |
307 } | 307 } |
308 | 308 |
309 MimeTypeToURLMap::iterator iter = mime_type_to_url_.find(fetcher->MimeType()); | 309 MimeTypeToURLMap::iterator iter = mime_type_to_url_.find(fetcher->MimeType()); |
310 if (iter != mime_type_to_url_.end()) { | 310 if (iter != mime_type_to_url_.end()) { |
311 LoadWithContentHandler(iter->second, request.Pass(), | 311 LoadWithContentHandler(iter->second, request.Pass(), |
312 fetcher->AsURLResponse(blocking_pool_, 0)); | 312 fetcher->AsURLResponse(blocking_pool_, 0)); |
313 return; | 313 return; |
314 } | 314 } |
315 | 315 |
| 316 auto alias_iter = application_package_alias_.find(app_url); |
| 317 if (alias_iter != application_package_alias_.end()) { |
| 318 URLResponsePtr response(URLResponse::New()); |
| 319 response->url = String::From(app_url.spec()); |
| 320 LoadWithContentHandler(alias_iter->second, |
| 321 request.Pass(), |
| 322 response.Pass()); |
| 323 return; |
| 324 } |
| 325 |
316 // TODO(aa): Sanity check that the thing we got looks vaguely like a mojo | 326 // TODO(aa): Sanity check that the thing we got looks vaguely like a mojo |
317 // application. That could either mean looking for the platform-specific dll | 327 // application. That could either mean looking for the platform-specific dll |
318 // header, or looking for some specific mojo signature prepended to the | 328 // header, or looking for some specific mojo signature prepended to the |
319 // library. | 329 // library. |
320 // TODO(vtl): (Maybe this should be done by the factory/runner?) | 330 // TODO(vtl): (Maybe this should be done by the factory/runner?) |
321 | 331 |
322 GURL base_resolved_url = GetBaseURLAndQuery(fetcher->GetURL(), nullptr); | 332 GURL base_resolved_url = GetBaseURLAndQuery(fetcher->GetURL(), nullptr); |
323 NativeRunnerFactory::Options options; | 333 NativeRunnerFactory::Options options; |
324 if (url_to_native_options_.find(base_resolved_url) != | 334 if (url_to_native_options_.find(base_resolved_url) != |
325 url_to_native_options_.end()) { | 335 url_to_native_options_.end()) { |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
363 } | 373 } |
364 | 374 |
365 void ApplicationManager::RegisterContentHandler( | 375 void ApplicationManager::RegisterContentHandler( |
366 const std::string& mime_type, | 376 const std::string& mime_type, |
367 const GURL& content_handler_url) { | 377 const GURL& content_handler_url) { |
368 DCHECK(content_handler_url.is_valid()) | 378 DCHECK(content_handler_url.is_valid()) |
369 << "Content handler URL is invalid for mime type " << mime_type; | 379 << "Content handler URL is invalid for mime type " << mime_type; |
370 mime_type_to_url_[mime_type] = content_handler_url; | 380 mime_type_to_url_[mime_type] = content_handler_url; |
371 } | 381 } |
372 | 382 |
| 383 |
| 384 void ApplicationManager::RegisterApplicationPackageAlias( |
| 385 const GURL& alias, |
| 386 const GURL& content_handler_package) { |
| 387 application_package_alias_[alias] = content_handler_package; |
| 388 } |
| 389 |
373 void ApplicationManager::LoadWithContentHandler( | 390 void ApplicationManager::LoadWithContentHandler( |
374 const GURL& content_handler_url, | 391 const GURL& content_handler_url, |
375 InterfaceRequest<Application> application_request, | 392 InterfaceRequest<Application> application_request, |
376 URLResponsePtr url_response) { | 393 URLResponsePtr url_response) { |
377 ContentHandlerConnection* connection = nullptr; | 394 ContentHandlerConnection* connection = nullptr; |
378 URLToContentHandlerMap::iterator iter = | 395 URLToContentHandlerMap::iterator iter = |
379 url_to_content_handler_.find(content_handler_url); | 396 url_to_content_handler_.find(content_handler_url); |
380 if (iter != url_to_content_handler_.end()) { | 397 if (iter != url_to_content_handler_.end()) { |
381 connection = iter->second; | 398 connection = iter->second; |
382 } else { | 399 } else { |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
464 return pipe.handle0.Pass(); | 481 return pipe.handle0.Pass(); |
465 } | 482 } |
466 | 483 |
467 void ApplicationManager::CleanupRunner(NativeRunner* runner) { | 484 void ApplicationManager::CleanupRunner(NativeRunner* runner) { |
468 native_runners_.erase( | 485 native_runners_.erase( |
469 std::find(native_runners_.begin(), native_runners_.end(), runner)); | 486 std::find(native_runners_.begin(), native_runners_.end(), runner)); |
470 } | 487 } |
471 | 488 |
472 } // namespace shell | 489 } // namespace shell |
473 } // namespace mojo | 490 } // namespace mojo |
OLD | NEW |