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

Side by Side Diff: ppapi/native_client/src/trusted/plugin/plugin.h

Issue 512323002: NaCl: Detect plugin crashes via EOF on Chromium IPC. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 6 years, 3 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
« no previous file with comments | « ppapi/c/private/ppb_nacl_private.h ('k') | ppapi/native_client/src/trusted/plugin/plugin.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // -*- c++ -*- 1 // -*- c++ -*-
2 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be 3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file. 4 // found in the LICENSE file.
5 5
6 // The portable representation of an instance and root scriptable object. 6 // The portable representation of an instance and root scriptable object.
7 // The PPAPI version of the plugin instantiates a subclass of this class. 7 // The PPAPI version of the plugin instantiates a subclass of this class.
8 8
9 #ifndef NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PLUGIN_H_ 9 #ifndef NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PLUGIN_H_
10 #define NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PLUGIN_H_ 10 #define NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PLUGIN_H_
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 // does not signal that it is ready, then we will deadlock the main 86 // does not signal that it is ready, then we will deadlock the main
87 // thread of the renderer on this subsequent event delivery. We 87 // thread of the renderer on this subsequent event delivery. We
88 // should include a time-out at which point we declare the 88 // should include a time-out at which point we declare the
89 // nacl_ready_state to be done, and let the normal crash detection 89 // nacl_ready_state to be done, and let the normal crash detection
90 // mechanism(s) take over. 90 // mechanism(s) take over.
91 void LoadNaClModule(PP_NaClFileInfo file_info, 91 void LoadNaClModule(PP_NaClFileInfo file_info,
92 bool uses_nonsfi_mode, 92 bool uses_nonsfi_mode,
93 bool enable_dyncode_syscalls, 93 bool enable_dyncode_syscalls,
94 bool enable_exception_handling, 94 bool enable_exception_handling,
95 bool enable_crash_throttling, 95 bool enable_crash_throttling,
96 const pp::CompletionCallback& init_done_cb, 96 const pp::CompletionCallback& init_done_cb);
97 const pp::CompletionCallback& crash_cb);
98 97
99 // Finish hooking interfaces up, after low-level initialization is 98 // Finish hooking interfaces up, after low-level initialization is
100 // complete. 99 // complete.
101 bool LoadNaClModuleContinuationIntern(); 100 bool LoadNaClModuleContinuationIntern();
102 101
103 // Continuation for starting SRPC/JSProxy services as appropriate. 102 // Continuation for starting SRPC/JSProxy services as appropriate.
104 // This is invoked as a callback when the NaCl module makes the 103 // This is invoked as a callback when the NaCl module makes the
105 // init_done reverse RPC to tell us that low-level initialization 104 // init_done reverse RPC to tell us that low-level initialization
106 // such as ld.so processing is done. That initialization requires 105 // such as ld.so processing is done. That initialization requires
107 // that the main thread be free in order to do Pepper 106 // that the main thread be free in order to do Pepper
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 165
167 // This is invoked on the main thread. 166 // This is invoked on the main thread.
168 void StartNexe(int32_t pp_error, ServiceRuntime* service_runtime); 167 void StartNexe(int32_t pp_error, ServiceRuntime* service_runtime);
169 168
170 // Callback used when getting the URL for the .nexe file. If the URL loading 169 // Callback used when getting the URL for the .nexe file. If the URL loading
171 // is successful, the file descriptor is opened and can be passed to sel_ldr 170 // is successful, the file descriptor is opened and can be passed to sel_ldr
172 // with the sandbox on. 171 // with the sandbox on.
173 void NexeFileDidOpen(int32_t pp_error); 172 void NexeFileDidOpen(int32_t pp_error);
174 void NexeFileDidOpenContinuation(int32_t pp_error); 173 void NexeFileDidOpenContinuation(int32_t pp_error);
175 174
176 // Callback used when the reverse channel closes. This is an
177 // asynchronous event that might turn into a JavaScript error or
178 // crash event -- this is controlled by the two state variables
179 // nacl_ready_state_ and nexe_error_reported_: If an error or crash
180 // had already been reported, no additional crash event is
181 // generated. If no error has been reported but nacl_ready_state_
182 // is not DONE, then the loadend event has not been reported, and we
183 // enqueue an error event followed by loadend. If nacl_ready_state_
184 // is DONE, then we are in the post-loadend (we need temporal
185 // predicate symbols), and we enqueue a crash event.
186 void NexeDidCrash(int32_t pp_error);
187
188 // Callback used when a .nexe is translated from bitcode. If the translation 175 // Callback used when a .nexe is translated from bitcode. If the translation
189 // is successful, the file descriptor is opened and can be passed to sel_ldr 176 // is successful, the file descriptor is opened and can be passed to sel_ldr
190 // with the sandbox on. 177 // with the sandbox on.
191 void BitcodeDidTranslate(int32_t pp_error); 178 void BitcodeDidTranslate(int32_t pp_error);
192 void BitcodeDidTranslateContinuation(int32_t pp_error); 179 void BitcodeDidTranslateContinuation(int32_t pp_error);
193 180
194 // NaCl ISA selection manifest file support. The manifest file is specified 181 // NaCl ISA selection manifest file support. The manifest file is specified
195 // using the "nacl" attribute in the <embed> tag. First, the manifest URL (or 182 // using the "nacl" attribute in the <embed> tag. First, the manifest URL (or
196 // data: URI) is fetched, then the JSON is parsed. Once a valid .nexe is 183 // data: URI) is fetched, then the JSON is parsed. Once a valid .nexe is
197 // chosen for the sandbox ISA, any current service runtime is shut down, the 184 // chosen for the sandbox ISA, any current service runtime is shut down, the
(...skipping 20 matching lines...) Expand all
218 205
219 PP_NaClFileInfo nexe_file_info_; 206 PP_NaClFileInfo nexe_file_info_;
220 207
221 const PPB_NaCl_Private* nacl_interface_; 208 const PPB_NaCl_Private* nacl_interface_;
222 pp::UMAPrivate uma_interface_; 209 pp::UMAPrivate uma_interface_;
223 }; 210 };
224 211
225 } // namespace plugin 212 } // namespace plugin
226 213
227 #endif // NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PLUGIN_H_ 214 #endif // NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PLUGIN_H_
OLDNEW
« no previous file with comments | « ppapi/c/private/ppb_nacl_private.h ('k') | ppapi/native_client/src/trusted/plugin/plugin.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698