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

Side by Side Diff: chrome/renderer/render_process_impl.cc

Issue 2832093: NaCl: Allow setting up multiple sockets for subprocess instead of just one (Closed) Base URL: git://codf21.jail/chromium.git
Patch Set: Whitespace fixes Created 10 years, 4 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
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "build/build_config.h" 5 #include "build/build_config.h"
6 6
7 #if defined(OS_WIN) 7 #if defined(OS_WIN)
8 #include <windows.h> 8 #include <windows.h>
9 #include <objidl.h> 9 #include <objidl.h>
10 #include <mlang.h> 10 #include <mlang.h>
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 43
44 namespace { 44 namespace {
45 45
46 bool LaunchNaClProcess(const char* url, 46 bool LaunchNaClProcess(const char* url,
47 int imc_fd, 47 int imc_fd,
48 nacl::Handle* imc_handle, 48 nacl::Handle* imc_handle,
49 nacl::Handle* nacl_process_handle, 49 nacl::Handle* nacl_process_handle,
50 int* nacl_process_id) { 50 int* nacl_process_id) {
51 // TODO(gregoryd): nacl::FileDescriptor will be soon merged with 51 // TODO(gregoryd): nacl::FileDescriptor will be soon merged with
52 // base::FileDescriptor 52 // base::FileDescriptor
53 nacl::FileDescriptor imc_descriptor; 53 std::vector<nacl::FileDescriptor> sockets;
54 base::ProcessHandle nacl_process; 54 base::ProcessHandle nacl_process;
55 if (!RenderThread::current()->Send( 55 if (!RenderThread::current()->Send(
56 new ViewHostMsg_LaunchNaCl(ASCIIToWide(url), 56 new ViewHostMsg_LaunchNaCl(
57 imc_fd, 57 ASCIIToWide(url),
58 &imc_descriptor, 58 /* socket_count= */ 1,
59 &sockets,
59 &nacl_process, 60 &nacl_process,
60 reinterpret_cast<base::ProcessId*>(nacl_process_id)))) { 61 reinterpret_cast<base::ProcessId*>(nacl_process_id)))) {
61 return false; 62 return false;
62 } 63 }
63 *imc_handle = nacl::ToNativeHandle(imc_descriptor); 64 CHECK(static_cast<int>(sockets.size()) == 1);
65 *imc_handle = nacl::ToNativeHandle(sockets[0]);
64 *nacl_process_handle = nacl_process; 66 *nacl_process_handle = nacl_process;
65 return true; 67 return true;
66 } 68 }
69
70 bool LaunchNaClProcessMultiFD(const char* alleged_url,
71 int socket_count,
72 nacl::Handle* imc_handles,
73 nacl::Handle* nacl_process_handle,
74 int* nacl_process_id) {
75 // TODO(gregoryd): nacl::FileDescriptor will be soon merged with
76 // base::FileDescriptor
77 std::vector<nacl::FileDescriptor> sockets;
78 base::ProcessHandle nacl_process;
79 if (!RenderThread::current()->Send(
80 new ViewHostMsg_LaunchNaCl(
81 ASCIIToWide(alleged_url),
82 socket_count,
83 &sockets,
84 &nacl_process,
85 reinterpret_cast<base::ProcessId*>(nacl_process_id)))) {
86 return false;
87 }
88 CHECK(static_cast<int>(sockets.size()) == socket_count);
89 for (int i = 0; i < socket_count; i++) {
90 imc_handles[i] = nacl::ToNativeHandle(sockets[i]);
91 }
92 *nacl_process_handle = nacl_process;
93 return true;
94 }
67 95
68 } // namespace 96 } // namespace
69 97
70 //----------------------------------------------------------------------------- 98 //-----------------------------------------------------------------------------
71 99
72 #if defined(OS_WIN) 100 #if defined(OS_WIN)
73 101
74 static iat_patch::IATPatchFunction g_iat_patch_createdca; 102 static iat_patch::IATPatchFunction g_iat_patch_createdca;
75 HDC WINAPI CreateDCAPatch(LPCSTR driver_name, 103 HDC WINAPI CreateDCAPatch(LPCSTR driver_name,
76 LPCSTR device_name, 104 LPCSTR device_name,
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 179
152 if (command_line.HasSwitch(switches::kDumpHistogramsOnExit)) { 180 if (command_line.HasSwitch(switches::kDumpHistogramsOnExit)) {
153 StatisticsRecorder::set_dump_on_exit(true); 181 StatisticsRecorder::set_dump_on_exit(true);
154 } 182 }
155 183
156 #ifndef DISABLE_NACL 184 #ifndef DISABLE_NACL
157 if (command_line.HasSwitch(switches::kInternalNaCl)) { 185 if (command_line.HasSwitch(switches::kInternalNaCl)) {
158 std::map<std::string, uintptr_t> funcs; 186 std::map<std::string, uintptr_t> funcs;
159 funcs["launch_nacl_process"] = 187 funcs["launch_nacl_process"] =
160 reinterpret_cast<uintptr_t>(LaunchNaClProcess); 188 reinterpret_cast<uintptr_t>(LaunchNaClProcess);
189 funcs["launch_nacl_process_multi_fd"] =
190 reinterpret_cast<uintptr_t>(LaunchNaClProcessMultiFD);
161 RegisterInternalNaClPlugin(funcs); 191 RegisterInternalNaClPlugin(funcs);
162 } 192 }
163 #endif 193 #endif
164 194
165 if (!command_line.HasSwitch(switches::kDisableByteRangeSupport)) { 195 if (!command_line.HasSwitch(switches::kDisableByteRangeSupport)) {
166 webkit_glue::SetMediaCacheEnabled(true); 196 webkit_glue::SetMediaCacheEnabled(true);
167 } 197 }
168 198
169 #if defined(OS_MACOSX) 199 #if defined(OS_MACOSX)
170 FilePath bundle_path = mac_util::MainAppBundlePath(); 200 FilePath bundle_path = mac_util::MainAppBundlePath();
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 } 387 }
358 388
359 void RenderProcessImpl::ClearTransportDIBCache() { 389 void RenderProcessImpl::ClearTransportDIBCache() {
360 for (size_t i = 0; i < arraysize(shared_mem_cache_); ++i) { 390 for (size_t i = 0; i < arraysize(shared_mem_cache_); ++i) {
361 if (shared_mem_cache_[i]) { 391 if (shared_mem_cache_[i]) {
362 FreeTransportDIB(shared_mem_cache_[i]); 392 FreeTransportDIB(shared_mem_cache_[i]);
363 shared_mem_cache_[i] = NULL; 393 shared_mem_cache_[i] = NULL;
364 } 394 }
365 } 395 }
366 } 396 }
OLDNEW
« chrome/common/nacl_messages_internal.h ('K') | « chrome/nacl/nacl_thread.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698