Index: content/common/font_warmup_win.h |
diff --git a/content/common/font_warmup_win.h b/content/common/font_warmup_win.h |
index 7a0e9b502c7e8c4c3d5c36d29532c3305d63cf8f..587b731a7b980b555181020d13447ca6466d100e 100644 |
--- a/content/common/font_warmup_win.h |
+++ b/content/common/font_warmup_win.h |
@@ -50,6 +50,24 @@ CONTENT_EXPORT void SetPreSandboxWarmupFontMgrForTesting(SkFontMgr* fontmgr); |
// Warmup the direct write font manager for content processes. |
CONTENT_EXPORT void WarmupDirectWrite(); |
+// Directwrite connects to the font cache service to retrieve information about |
+// fonts installed on the system etc. This works well outside the sandbox and |
+// within the sandbox as long as the lpc connection maintained by the current |
+// process with the font cache service remains valid. It appears that there |
+// are cases when this connection is dropped after which directwrite is unable |
+// to connect to the font cache service which causes problems with characters |
+// disappearing. |
+// Directwrite has fallback code to enumerate fonts if it is unable to connect |
+// to the font cache service. We need to intercept the following APIs to |
+// ensure that it does not connect to the font cache service. |
+// NtALpcConnectPort |
+// OpenSCManagerW |
+// OpenServiceW |
+// StartServiceW |
+// CloseServiceHandle. |
+// These are all IAT patched. |
+CONTENT_EXPORT void PatchServiceManagerCalls(); |
+ |
} // namespace content |
#endif // CONTENT_COMMON_FONT_WARMUP_WIN_H_ |