| Index: content/common/sandbox_win.cc
|
| diff --git a/content/common/sandbox_win.cc b/content/common/sandbox_win.cc
|
| index 8398b798d06080dd6cd0e9281ad07005c95b49a8..f04fc5f9920501c58aca4f17674c888b9512f9f9 100644
|
| --- a/content/common/sandbox_win.cc
|
| +++ b/content/common/sandbox_win.cc
|
| @@ -11,9 +11,11 @@
|
| #include "base/debug/profiler.h"
|
| #include "base/files/file_util.h"
|
| #include "base/hash.h"
|
| +#include "base/memory/shared_memory.h"
|
| #include "base/metrics/sparse_histogram.h"
|
| #include "base/path_service.h"
|
| #include "base/process/launch.h"
|
| +#include "base/strings/string_number_conversions.h"
|
| #include "base/strings/string_util.h"
|
| #include "base/strings/stringprintf.h"
|
| #include "base/trace_event/trace_event.h"
|
| @@ -24,6 +26,7 @@
|
| #include "content/common/content_switches_internal.h"
|
| #include "content/public/common/content_client.h"
|
| #include "content/public/common/content_switches.h"
|
| +#include "content/public/common/dwrite_font_platform_win.h"
|
| #include "content/public/common/sandbox_init.h"
|
| #include "content/public/common/sandboxed_process_launcher_delegate.h"
|
| #include "sandbox/win/src/process_mitigations.h"
|
| @@ -677,6 +680,22 @@ base::Process StartSandboxedProcess(
|
| true,
|
| sandbox::TargetPolicy::FILES_ALLOW_READONLY,
|
| policy);
|
| +
|
| + // If DirectWrite is enabled for font rendering then open the font cache
|
| + // section which is created by the browser and pass the handle to the
|
| + // renderer process. This is needed because renderer processes on
|
| + // Windows 8+ may be running in an AppContainer sandbox and hence their
|
| + // kernel object namespace may be partitioned.
|
| + std::string name(content::kFontCacheSharedSectionName);
|
| + name.append(base::UintToString(base::GetCurrentProcId()));
|
| +
|
| + base::SharedMemory direct_write_font_cache_section;
|
| + if (direct_write_font_cache_section.Open(name, true)) {
|
| + void* shared_handle =
|
| + policy->AddHandleToShare(direct_write_font_cache_section.handle());
|
| + cmd_line->AppendSwitchASCII(switches::kFontCacheSharedHandle,
|
| + base::UintToString(reinterpret_cast<unsigned int>(shared_handle)));
|
| + }
|
| }
|
| #endif
|
| } else {
|
|
|