| Index: content/renderer/renderer_main_platform_delegate_android.cc
|
| diff --git a/content/renderer/renderer_main_platform_delegate_android.cc b/content/renderer/renderer_main_platform_delegate_android.cc
|
| index 4a19706360269bd76526fc348869c5c37775a198..e5effd5c15f2b2907a37c9969ea67c1fa20f8b7f 100644
|
| --- a/content/renderer/renderer_main_platform_delegate_android.cc
|
| +++ b/content/renderer/renderer_main_platform_delegate_android.cc
|
| @@ -3,15 +3,45 @@
|
| // found in the LICENSE file.
|
|
|
| #include "content/renderer/renderer_main_platform_delegate.h"
|
| +
|
| +#include "base/command_line.h"
|
| #include "base/logging.h"
|
| +#include "base/rand_util.h"
|
| +#include "base/sys_info.h"
|
| +#include "content/common/sandbox_linux/android/sandbox_bpf_base_policy_android.h"
|
| +#include "content/public/common/content_switches.h"
|
| +#include "sandbox/linux/seccomp-bpf/sandbox_bpf.h"
|
| +#include "third_party/skia/include/ports/SkFontConfigInterface.h"
|
| +#include "v8/include/v8.h"
|
|
|
| #ifdef ENABLE_VTUNE_JIT_INTERFACE
|
| -#include "content/public/common/content_switches.h"
|
| #include "v8/src/third_party/vtune/v8-vtune.h"
|
| #endif
|
|
|
| namespace content {
|
|
|
| +namespace {
|
| +
|
| +bool GenerateEntropy(unsigned char* buffer, size_t length) {
|
| + base::RandBytes(buffer, length);
|
| + return true;
|
| +}
|
| +
|
| +void PreSandboxWarmUp() {
|
| + base::RandUint64();
|
| +
|
| + base::SysInfo::AmountOfPhysicalMemory();
|
| + base::SysInfo::MaxSharedMemorySize();
|
| + base::SysInfo::NumberOfProcessors();
|
| +
|
| + v8::V8::SetEntropySource(&GenerateEntropy);
|
| + v8::V8::Initialize();
|
| +
|
| + SkFontConfigInterface::GetSingletonDirectInterface();
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| RendererMainPlatformDelegate::RendererMainPlatformDelegate(
|
| const MainFunctionParams& parameters)
|
| : parameters_(parameters) {
|
| @@ -36,6 +66,16 @@ bool RendererMainPlatformDelegate::InitSandboxTests(bool no_sandbox) {
|
| }
|
|
|
| bool RendererMainPlatformDelegate::EnableSandbox() {
|
| + if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
|
| + switches::kEnableAndroidSeccompFilterSandbox)) {
|
| + return true;
|
| + }
|
| +
|
| + PreSandboxWarmUp();
|
| +
|
| + sandbox::SandboxBPF sandbox;
|
| + sandbox.SetSandboxPolicy(new SandboxBPFBasePolicyAndroid());
|
| + CHECK(sandbox.StartSandbox(sandbox::SandboxBPF::PROCESS_MULTI_THREADED));
|
| return true;
|
| }
|
|
|
|
|