1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "components/nacl/loader/nacl_main_platform_delegate.h"
6
7#include "base/logging.h"
8#include "sandbox/win/src/sandbox.h"
9
10NaClMainPlatformDelegate::NaClMainPlatformDelegate(
11    const content::MainFunctionParams& parameters)
12    : parameters_(parameters) {
13}
14
15NaClMainPlatformDelegate::~NaClMainPlatformDelegate() {
16}
17
18void NaClMainPlatformDelegate::EnableSandbox() {
19  sandbox::TargetServices* target_services =
20      parameters_.sandbox_info->target_services;
21
22  CHECK(target_services) << "NaCl-Win EnableSandbox: No Target Services!";
23  // Cause advapi32 to load before the sandbox is turned on.
24  unsigned int dummy_rand;
25  rand_s(&dummy_rand);
26  // Warm up language subsystems before the sandbox is turned on.
27  ::GetUserDefaultLangID();
28  ::GetUserDefaultLCID();
29  // Turn the sandbox on.
30  target_services->LowerToken();
31}
32