Index: src/webkit/port/rendering/RenderThemeWin.cpp |
diff --git a/src/webkit/port/rendering/RenderThemeWin.cpp b/src/webkit/port/rendering/RenderThemeWin.cpp |
index a740c9e247ab705a50a707a3de89d25a84b88c27..f7b47f0ae471838b933c0e5b533140bf4d2b403a 100644 |
--- a/src/webkit/port/rendering/RenderThemeWin.cpp |
+++ b/src/webkit/port/rendering/RenderThemeWin.cpp |
@@ -182,6 +182,15 @@ static void setSizeIfAuto(RenderStyle* style, const IntSize& size) |
style->setHeight(Length(size.height(), Fixed)); |
} |
+static double querySystemBlinkInterval(double defaultInterval) { |
+ UINT blinkTime = ::GetCaretBlinkTime(); |
+ if (blinkTime == 0) |
+ return defaultInterval; |
+ if (blinkTime == INFINITE) |
+ return 0; |
+ return blinkTime / 1000.0; |
+} |
+ |
// Implement WebCore::theme() for getting the global RenderTheme. |
RenderTheme* theme() |
{ |
@@ -243,8 +252,9 @@ double RenderThemeWin::caretBlinkFrequency() const |
if (ChromiumBridge::layoutTestMode()) |
return 0; |
- // TODO(ericroman): this should be using the platform's blink frequency. |
- return RenderTheme::caretBlinkFrequency(); |
+ // This involves a system call, so we cache the result. |
+ static double blinkInterval = querySystemBlinkInterval(RenderTheme::caretBlinkFrequency()); |
+ return blinkInterval; |
} |
void RenderThemeWin::systemFont(int propId, Document* document, FontDescription& fontDescription) const |