Index: shell/out_of_process_native_runner.cc |
diff --git a/shell/out_of_process_native_runner.cc b/shell/out_of_process_native_runner.cc |
index 9ac1dbd04f1e0382ec0e8a2c6a861550cc989f5e..02c5f8a6096467018166c6643caf9f60aaeda2a3 100644 |
--- a/shell/out_of_process_native_runner.cc |
+++ b/shell/out_of_process_native_runner.cc |
@@ -18,36 +18,37 @@ |
namespace { |
-// Determines if content handler must be run as 32 bit application |
-// based on elf header. Returns false on error. |
+// Determines if content handler must be run as 32 bit application based on the |
+// ELF header. Defaults to false on error. |
bool Require32Bit(const base::FilePath& app_path) { |
if (sizeof(void*) == 4) { |
- // CPU arch is already 32 bits |
+ // CPU arch is already 32 bits. |
return true; |
- } else { |
- char data[EI_NIDENT]; |
- // Read e_ident from the elf file |
- if (sizeof(data) != ReadFile(app_path, data, sizeof(data))) { |
- DCHECK(false); |
- return false; |
- } |
- // Check the magic elf number |
- if (memcmp(data, ELFMAG, SELFMAG)) { |
- DCHECK(false); |
- return false; |
- } |
- // Identify the architecture required |
- return data[EI_CLASS] == ELFCLASS32; |
} |
+ |
+ char data[EI_NIDENT]; |
+ // Read e_ident from the ELF file. |
+ if (ReadFile(app_path, data, sizeof(data)) != sizeof(data)) { |
+ DCHECK(false) << "Failed to read ELF header"; |
+ return false; |
+ } |
+ // Check the magic ELF number. |
+ if (memcmp(data, ELFMAG, SELFMAG)) { |
+ DCHECK(false) << "Not an ELF file?"; |
+ return false; |
+ } |
+ // Identify the architecture required. |
+ return data[EI_CLASS] == ELFCLASS32; |
} |
} // namespace |
namespace shell { |
-OutOfProcessNativeRunner::OutOfProcessNativeRunner(Context* context) |
- : context_(context) { |
-} |
+OutOfProcessNativeRunner::OutOfProcessNativeRunner( |
+ Context* context, |
+ const NativeApplicationOptions& options) |
+ : context_(context), options_(options) {} |
OutOfProcessNativeRunner::~OutOfProcessNativeRunner() { |
if (child_process_host_) { |
@@ -68,7 +69,11 @@ void OutOfProcessNativeRunner::Start( |
app_completed_callback_ = app_completed_callback; |
child_process_host_.reset(new ChildProcessHost(context_)); |
- child_process_host_->Start(Require32Bit(app_path)); |
+ |
+ NativeApplicationOptions options = options_; |
+ if (Require32Bit(app_path)) |
+ options.require_32_bit = true; |
+ child_process_host_->Start(options); |
// TODO(vtl): |app_path.AsUTF8Unsafe()| is unsafe. |
child_process_host_->StartApp( |
@@ -91,11 +96,11 @@ void OutOfProcessNativeRunner::AppCompleted(int32_t result) { |
} |
scoped_ptr<NativeRunner> OutOfProcessNativeRunnerFactory::Create( |
- const Options& options) { |
+ const NativeApplicationOptions& options) { |
if (options.force_in_process) |
return make_scoped_ptr(new InProcessNativeRunner(context_)); |
- return make_scoped_ptr(new OutOfProcessNativeRunner(context_)); |
+ return make_scoped_ptr(new OutOfProcessNativeRunner(context_, options)); |
} |
} // namespace shell |