Index: Source/core/css/MediaQueryEvaluator.cpp |
diff --git a/Source/core/css/MediaQueryEvaluator.cpp b/Source/core/css/MediaQueryEvaluator.cpp |
index ec243f25bb28bde3c463d46ebbff84593d092fa6..0ecb932285a9f45a547c9c4a84e2b8a5034de9c3 100644 |
--- a/Source/core/css/MediaQueryEvaluator.cpp |
+++ b/Source/core/css/MediaQueryEvaluator.cpp |
@@ -53,6 +53,7 @@ |
#include "core/rendering/compositing/RenderLayerCompositor.h" |
#include "core/rendering/style/RenderStyle.h" |
#include "platform/PlatformScreen.h" |
+#include "platform/RuntimeEnabledFeatures.h" |
#include "platform/geometry/FloatRect.h" |
#include "wtf/HashMap.h" |
@@ -536,15 +537,28 @@ static bool hoverMediaFeatureEval(const MediaQueryExpValue& value, MediaFeatureP |
if (pointer == MediaValues::UnknownPointer) |
return false; |
- float number = 1; |
- if (value.isValid()) { |
- if (!numberValue(value, number)) |
+ // FIXME: Remove the old code once we're sure this doesn't break anything significant. |
+ if (RuntimeEnabledFeatures::hoverMediaQueryKeywordsEnabled()) { |
+ if (!value.isValid()) |
+ return pointer != MediaValues::NoPointer; |
+ |
+ if (!value.isID) |
return false; |
- } |
- return (pointer == MediaValues::NoPointer && !number) |
- || (pointer == MediaValues::TouchPointer && !number) |
- || (pointer == MediaValues::MousePointer && number == 1); |
+ return (pointer == MediaValues::NoPointer && value.id == CSSValueNone) |
+ || (pointer == MediaValues::TouchPointer && value.id == CSSValueOnDemand) |
+ || (pointer == MediaValues::MousePointer && value.id == CSSValueHover); |
+ } else { |
+ float number = 1; |
+ if (value.isValid()) { |
+ if (!numberValue(value, number)) |
+ return false; |
+ } |
+ |
+ return (pointer == MediaValues::NoPointer && !number) |
+ || (pointer == MediaValues::TouchPointer && !number) |
+ || (pointer == MediaValues::MousePointer && number == 1); |
+ } |
} |
static bool pointerMediaFeatureEval(const MediaQueryExpValue& value, MediaFeaturePrefix, const MediaValues& mediaValues) |