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