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..f41a952a1d2fe770cae6aeded4c8d69d0381d5ca 100644 |
--- a/content/common/font_warmup_win.h |
+++ b/content/common/font_warmup_win.h |
@@ -13,14 +13,6 @@ class SkTypeface; |
namespace content { |
-// Make necessary calls to cache the data for a given font, used before |
-// sandbox lockdown. |
-CONTENT_EXPORT void DoPreSandboxWarmupForTypeface(SkTypeface* typeface); |
- |
-// Get the shared font manager used during pre-sandbox warmup for DirectWrite |
-// fonts. |
-CONTENT_EXPORT SkFontMgr* GetPreSandboxWarmupFontMgr(); |
- |
class GdiFontPatchData { |
public: |
virtual ~GdiFontPatchData() {} |
@@ -43,13 +35,23 @@ CONTENT_EXPORT size_t GetEmulatedGdiHandleCountForTesting(); |
// Testing method to reset the table of emulated GDI handles. |
CONTENT_EXPORT void ResetEmulatedGdiHandlesForTesting(); |
-// Sets the pre-sandbox warmup font manager directly. This should only be used |
-// for testing the implementation. |
-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_ |