| Index: ui/gfx/win/direct_write.cc | 
| diff --git a/ui/gfx/win/direct_write.cc b/ui/gfx/win/direct_write.cc | 
| index 38c926a9bd11da661c3e66b614c177427a6bf6ae..9c8250b5bbf5175e7e339e7b72fbae5cfd550ecd 100644 | 
| --- a/ui/gfx/win/direct_write.cc | 
| +++ b/ui/gfx/win/direct_write.cc | 
| @@ -4,8 +4,6 @@ | 
|  | 
| #include "ui/gfx/win/direct_write.h" | 
|  | 
| -#include <dwrite.h> | 
| - | 
| #include "base/basictypes.h" | 
| #include "base/command_line.h" | 
| #include "base/metrics/field_trial.h" | 
| @@ -57,12 +55,7 @@ bool ShouldUseDirectWrite() { | 
| return group_name != "Disabled"; | 
| } | 
|  | 
| -void MaybeInitializeDirectWrite() { | 
| -  static bool tried_dwrite_initialize = false; | 
| -  if (tried_dwrite_initialize) | 
| -    return; | 
| -  tried_dwrite_initialize = true; | 
| - | 
| +void CreateDWriteFactory(IDWriteFactory** factory) { | 
| if (!ShouldUseDirectWrite() || | 
| base::CommandLine::ForCurrentProcess()->HasSwitch( | 
| switches::kDisableDirectWriteForUI)) { | 
| @@ -81,13 +74,26 @@ void MaybeInitializeDirectWrite() { | 
| if (!dwrite_create_factory_proc) | 
| return; | 
|  | 
| +  // Failure to create the DirectWrite factory indicates a corrupt dll. | 
| +  base::win::ScopedComPtr<IUnknown> factory_unknown; | 
| +  if (FAILED(dwrite_create_factory_proc(DWRITE_FACTORY_TYPE_SHARED, | 
| +                                        __uuidof(IDWriteFactory), | 
| +                                        factory_unknown.Receive()))) { | 
| +    return; | 
| +  } | 
| +  factory_unknown.QueryInterface<IDWriteFactory>(factory); | 
| +} | 
| + | 
| +void MaybeInitializeDirectWrite() { | 
| +  static bool tried_dwrite_initialize = false; | 
| +  if (tried_dwrite_initialize) | 
| +    return; | 
| +  tried_dwrite_initialize = true; | 
| + | 
| base::win::ScopedComPtr<IDWriteFactory> factory; | 
| +  CreateDWriteFactory(factory.Receive()); | 
|  | 
| -  // Failure to create the DirectWrite factory indicates a corrupt dll. | 
| -  if (FAILED(dwrite_create_factory_proc( | 
| -          DWRITE_FACTORY_TYPE_SHARED, | 
| -        __uuidof(IDWriteFactory), | 
| -        reinterpret_cast<IUnknown**>(factory.Receive())))) | 
| +  if (factory == nullptr) | 
| return; | 
|  | 
| // The skia call to create a new DirectWrite font manager instance can fail | 
|  |