Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "ppapi/native_client/src/trusted/plugin/pnacl_coordinator.h" | 5 #include "ppapi/native_client/src/trusted/plugin/pnacl_coordinator.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "native_client/src/include/checked_cast.h" | 10 #include "native_client/src/include/checked_cast.h" |
| (...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 419 } | 419 } |
| 420 ReportPpapiError(ERROR_PNACL_CACHE_FETCH_OTHER, | 420 ReportPpapiError(ERROR_PNACL_CACHE_FETCH_OTHER, |
| 421 pp_error, | 421 pp_error, |
| 422 "Failed to open translated nexe."); | 422 "Failed to open translated nexe."); |
| 423 return; | 423 return; |
| 424 } | 424 } |
| 425 | 425 |
| 426 translate_notify_callback_.Run(pp_error); | 426 translate_notify_callback_.Run(pp_error); |
| 427 } | 427 } |
| 428 | 428 |
| 429 void PnaclCoordinator::DidCheckPnaclInstalled(int32_t pp_error) { | |
| 430 if (pp_error != PP_OK) { | |
| 431 ReportNonPpapiError( | |
| 432 ERROR_PNACL_RESOURCE_FETCH, | |
| 433 nacl::string("The Portable Native Client (pnacl) component is not " | |
| 434 "installed. Please consult chrome://components for more " | |
| 435 "information.")); | |
| 436 return; | |
| 437 } | |
| 438 | |
| 439 // Loading resources (e.g. llc and ld nexes) is done with PnaclResources. | |
| 440 resources_.reset(new PnaclResources(plugin_, | |
| 441 this, | |
| 442 this->manifest_.get())); | |
| 443 CHECK(resources_ != NULL); | |
| 444 | |
| 445 // The first step of loading resources: read the resource info file. | |
| 446 pp::CompletionCallback resource_info_read_cb = | |
| 447 callback_factory_.NewCallback( | |
| 448 &PnaclCoordinator::ResourceInfoWasRead); | |
| 449 resources_->ReadResourceInfo(PnaclUrls::GetResourceInfoUrl(), | |
| 450 resource_info_read_cb); | |
| 451 } | |
| 452 | |
| 453 void PnaclCoordinator::ResourceInfoWasRead(int32_t pp_error) { | 429 void PnaclCoordinator::ResourceInfoWasRead(int32_t pp_error) { |
| 454 PLUGIN_PRINTF(("PluginCoordinator::ResourceInfoWasRead (pp_error=%" | 430 PLUGIN_PRINTF(("PluginCoordinator::ResourceInfoWasRead (pp_error=%" |
| 455 NACL_PRId32 ")\n", pp_error)); | 431 NACL_PRId32 ")\n", pp_error)); |
| 456 // Second step of loading resources: call StartLoad. | 432 // Second step of loading resources: call StartLoad. |
|
Derek Schuff
2013/11/01 23:36:28
the first step is gone, so fix this comment?
jvoung (off chromium)
2013/11/04 18:16:36
In the new patch, this second step follows line 52
| |
| 457 pp::CompletionCallback resources_cb = | 433 pp::CompletionCallback resources_cb = |
| 458 callback_factory_.NewCallback(&PnaclCoordinator::ResourcesDidLoad); | 434 callback_factory_.NewCallback(&PnaclCoordinator::ResourcesDidLoad); |
| 459 resources_->StartLoad(resources_cb); | 435 resources_->StartLoad(resources_cb); |
| 460 } | 436 } |
| 461 | 437 |
| 462 void PnaclCoordinator::ResourcesDidLoad(int32_t pp_error) { | 438 void PnaclCoordinator::ResourcesDidLoad(int32_t pp_error) { |
| 463 PLUGIN_PRINTF(("PnaclCoordinator::ResourcesDidLoad (pp_error=%" | 439 PLUGIN_PRINTF(("PnaclCoordinator::ResourcesDidLoad (pp_error=%" |
| 464 NACL_PRId32 ")\n", pp_error)); | 440 NACL_PRId32 ")\n", pp_error)); |
| 465 if (pp_error != PP_OK) { | 441 if (pp_error != PP_OK) { |
| 466 // Finer-grained error code should have already been reported by | 442 // Finer-grained error code should have already been reported by |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 532 | 508 |
| 533 void PnaclCoordinator::BitcodeStreamDidOpen(int32_t pp_error) { | 509 void PnaclCoordinator::BitcodeStreamDidOpen(int32_t pp_error) { |
| 534 if (pp_error != PP_OK) { | 510 if (pp_error != PP_OK) { |
| 535 BitcodeStreamDidFinish(pp_error); | 511 BitcodeStreamDidFinish(pp_error); |
| 536 // We have not spun up the translation process yet, so we need to call | 512 // We have not spun up the translation process yet, so we need to call |
| 537 // TranslateFinished here. | 513 // TranslateFinished here. |
| 538 TranslateFinished(pp_error); | 514 TranslateFinished(pp_error); |
| 539 return; | 515 return; |
| 540 } | 516 } |
| 541 | 517 |
| 542 // Now that we've started the url request for the response headers and | 518 // The component updater's resource throttles + OnDemand update/install |
| 543 // for tickling the component updater's On-Demand API, check that the | 519 // should block the URL request until the compiler is present. Now we |
| 544 // compiler is present, or block until it is present or an error is hit. | 520 // can load the resources (e.g. llc and ld nexes). |
| 545 pp::CompletionCallback pnacl_installed_cb = | 521 resources_.reset(new PnaclResources(plugin_, this, this->manifest_.get())); |
| 546 callback_factory_.NewCallback(&PnaclCoordinator::DidCheckPnaclInstalled); | 522 CHECK(resources_ != NULL); |
| 547 plugin_->nacl_interface()->EnsurePnaclInstalled( | 523 |
| 548 plugin_->pp_instance(), | 524 // The first step of loading resources: read the resource info file. |
| 549 pnacl_installed_cb.pp_completion_callback()); | 525 pp::CompletionCallback resource_info_read_cb = |
| 526 callback_factory_.NewCallback(&PnaclCoordinator::ResourceInfoWasRead); | |
| 527 resources_->ReadResourceInfo(PnaclUrls::GetResourceInfoUrl(), | |
| 528 resource_info_read_cb); | |
| 550 } | 529 } |
| 551 | 530 |
| 552 void PnaclCoordinator::NexeFdDidOpen(int32_t pp_error) { | 531 void PnaclCoordinator::NexeFdDidOpen(int32_t pp_error) { |
| 553 PLUGIN_PRINTF(("PnaclCoordinator::NexeFdDidOpen (pp_error=%" | 532 PLUGIN_PRINTF(("PnaclCoordinator::NexeFdDidOpen (pp_error=%" |
| 554 NACL_PRId32 ", hit=%d, handle=%d)\n", pp_error, | 533 NACL_PRId32 ", hit=%d, handle=%d)\n", pp_error, |
| 555 is_cache_hit_ == PP_TRUE, | 534 is_cache_hit_ == PP_TRUE, |
| 556 *temp_nexe_file_->existing_handle())); | 535 *temp_nexe_file_->existing_handle())); |
| 557 if (pp_error < PP_OK) { | 536 if (pp_error < PP_OK) { |
| 558 ReportPpapiError(ERROR_PNACL_CREATE_TEMP, pp_error, | 537 ReportPpapiError(ERROR_PNACL_CREATE_TEMP, pp_error, |
| 559 nacl::string("GetNexeFd failed")); | 538 nacl::string("GetNexeFd failed")); |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 711 obj_file_.get(), | 690 obj_file_.get(), |
| 712 temp_nexe_file_.get(), | 691 temp_nexe_file_.get(), |
| 713 &error_info_, | 692 &error_info_, |
| 714 resources_.get(), | 693 resources_.get(), |
| 715 &pnacl_options_, | 694 &pnacl_options_, |
| 716 this, | 695 this, |
| 717 plugin_); | 696 plugin_); |
| 718 } | 697 } |
| 719 | 698 |
| 720 } // namespace plugin | 699 } // namespace plugin |
| OLD | NEW |