| Index: components/nacl/browser/nacl_browser.cc
|
| diff --git a/components/nacl/browser/nacl_browser.cc b/components/nacl/browser/nacl_browser.cc
|
| index f271af69b0f8c957fa9a914cc4baefba1102c9cd..84e710f84fcbecb7774a470b75fde934b8e49ef9 100644
|
| --- a/components/nacl/browser/nacl_browser.cc
|
| +++ b/components/nacl/browser/nacl_browser.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include "base/command_line.h"
|
| #include "base/file_util.h"
|
| +#include "base/files/file_proxy.h"
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/metrics/histogram.h"
|
| #include "base/path_service.h"
|
| @@ -140,7 +141,6 @@ base::File OpenNaClExecutableImpl(const base::FilePath& file_path) {
|
|
|
| NaClBrowser::NaClBrowser()
|
| : weak_factory_(this),
|
| - irt_platform_file_(base::kInvalidPlatformFileValue),
|
| irt_filepath_(),
|
| irt_state_(NaClResourceUninitialized),
|
| validation_cache_file_path_(),
|
| @@ -172,8 +172,6 @@ void NaClBrowser::EarlyStartup() {
|
| }
|
|
|
| NaClBrowser::~NaClBrowser() {
|
| - if (irt_platform_file_ != base::kInvalidPlatformFileValue)
|
| - base::ClosePlatformFile(irt_platform_file_);
|
| }
|
|
|
| void NaClBrowser::InitIrtFilePath() {
|
| @@ -224,11 +222,11 @@ bool NaClBrowser::IsOk() const {
|
| return ok_;
|
| }
|
|
|
| -base::PlatformFile NaClBrowser::IrtFile() const {
|
| +const base::File& NaClBrowser::IrtFile() const {
|
| DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
|
| CHECK_EQ(irt_state_, NaClResourceReady);
|
| - CHECK_NE(irt_platform_file_, base::kInvalidPlatformFileValue);
|
| - return irt_platform_file_;
|
| + CHECK(irt_file_.IsValid());
|
| + return irt_file_;
|
| }
|
|
|
| void NaClBrowser::EnsureAllResourcesAvailable() {
|
| @@ -243,28 +241,27 @@ void NaClBrowser::EnsureIrtAvailable() {
|
| if (IsOk() && irt_state_ == NaClResourceUninitialized) {
|
| irt_state_ = NaClResourceRequested;
|
| // TODO(ncbray) use blocking pool.
|
| - if (!base::FileUtilProxy::CreateOrOpen(
|
| - content::BrowserThread::GetMessageLoopProxyForThread(
|
| - content::BrowserThread::FILE)
|
| - .get(),
|
| - irt_filepath_,
|
| - base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ,
|
| - base::Bind(&NaClBrowser::OnIrtOpened,
|
| - weak_factory_.GetWeakPtr()))) {
|
| + scoped_ptr<base::FileProxy> file_proxy(new base::FileProxy(
|
| + content::BrowserThread::GetMessageLoopProxyForThread(
|
| + content::BrowserThread::FILE).get()));
|
| + base::FileProxy* proxy = file_proxy.get();
|
| + if (!proxy->CreateOrOpen(irt_filepath_,
|
| + base::File::FLAG_OPEN | base::File::FLAG_READ,
|
| + base::Bind(&NaClBrowser::OnIrtOpened,
|
| + weak_factory_.GetWeakPtr(),
|
| + Passed(&file_proxy)))) {
|
| LOG(ERROR) << "Internal error, NaCl disabled.";
|
| MarkAsFailed();
|
| }
|
| }
|
| }
|
|
|
| -void NaClBrowser::OnIrtOpened(base::File::Error error_code,
|
| - base::PassPlatformFile file,
|
| - bool created) {
|
| +void NaClBrowser::OnIrtOpened(scoped_ptr<base::FileProxy> file_proxy,
|
| + base::File::Error error_code) {
|
| DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
|
| DCHECK_EQ(irt_state_, NaClResourceRequested);
|
| - DCHECK(!created);
|
| - if (error_code == base::File::FILE_OK) {
|
| - irt_platform_file_ = file.ReleaseValue();
|
| + if (file_proxy->IsValid()) {
|
| + irt_file_ = file_proxy->TakeFile();
|
| } else {
|
| LOG(ERROR) << "Failed to open NaCl IRT file \""
|
| << irt_filepath_.LossyDisplayName()
|
|
|