15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "native_client/src/include/nacl_macros.h" 6ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "ppapi/native_client/src/trusted/plugin/nacl_entry_points.h" 7ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "ppapi/native_client/src/trusted/plugin/sel_ldr_launcher_chrome.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "ppapi/cpp/var.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LaunchNaClProcessFunc launch_nacl_process = NULL; 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace plugin { 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool SelLdrLauncherChrome::Start(const char* url) { 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NACL_NOTREACHED(); 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return false; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool SelLdrLauncherChrome::Start(PP_Instance instance, 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* url, 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool uses_irt, 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool uses_ppapi, 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool enable_ppapi_dev, 257d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) bool enable_dyncode_syscalls, 26ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch bool enable_exception_handling, 27ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch nacl::string* error_message) { 28ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch *error_message = ""; 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!launch_nacl_process) 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return false; 31ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch PP_Var var_error_message; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // send a synchronous message to the browser process 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (launch_nacl_process(instance, 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) url, 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_FromBool(uses_irt), 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_FromBool(uses_ppapi), 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_FromBool(enable_ppapi_dev), 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) PP_FromBool(enable_dyncode_syscalls), 397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) PP_FromBool(enable_exception_handling), 40ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch &channel_, 41a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch &var_error_message) != PP_EXTERNAL_PLUGIN_OK) { 42ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch pp::Var var_error_message_cpp(pp::PASS_REF, var_error_message); 43ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch if (var_error_message_cpp.is_string()) { 44ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch *error_message = var_error_message_cpp.AsString(); 45ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch } 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace plugin 52