| Index: Source/WebCore/css/MediaQueryEvaluator.cpp
|
| diff --git a/Source/WebCore/css/MediaQueryEvaluator.cpp b/Source/WebCore/css/MediaQueryEvaluator.cpp
|
| index c55bf50ffef7ec376e1067ce6008b09b69210d3f..4b2d4e4d199901e7ca99c389cc3b63909a18131d 100644
|
| --- a/Source/WebCore/css/MediaQueryEvaluator.cpp
|
| +++ b/Source/WebCore/css/MediaQueryEvaluator.cpp
|
| @@ -695,31 +695,14 @@ static bool view_modeMediaFeatureEval(CSSValue* value, RenderStyle*, Frame* fram
|
| }
|
| #endif // ENABLE(VIEW_MODE_CSS_MEDIA)
|
|
|
| -enum PointerDeviceType { TouchPointer, MousePointer, NoPointer, UnknownPointer };
|
| -
|
| -static PointerDeviceType leastCapablePrimaryPointerDeviceType(Frame* frame)
|
| -{
|
| - if (frame->settings()->deviceSupportsTouch())
|
| - return TouchPointer;
|
| -
|
| - // FIXME: We should also try to determine if we know we have a mouse.
|
| - // When we do this, we'll also need to differentiate between known not to
|
| - // have mouse or touch screen (NoPointer) and unknown (UnknownPointer).
|
| - // We could also take into account other preferences like accessibility
|
| - // settings to decide which of the available pointers should be considered
|
| - // "primary".
|
| -
|
| - return UnknownPointer;
|
| -}
|
| -
|
| static bool hoverMediaFeatureEval(CSSValue* value, RenderStyle*, Frame* frame, MediaFeaturePrefix)
|
| {
|
| - PointerDeviceType pointer = leastCapablePrimaryPointerDeviceType(frame);
|
| + int pointer = frame->settings()->primaryPointerDevices();
|
|
|
| // If we're on a port that hasn't explicitly opted into providing pointer device information
|
| // (or otherwise can't be confident in the pointer hardware available), then behave exactly
|
| // as if this feature feature isn't supported.
|
| - if (pointer == UnknownPointer)
|
| + if (pointer == PointerDeviceUnknown)
|
| return false;
|
|
|
| float number = 1;
|
| @@ -728,31 +711,40 @@ static bool hoverMediaFeatureEval(CSSValue* value, RenderStyle*, Frame* frame, M
|
| return false;
|
| }
|
|
|
| - return (pointer == NoPointer && !number)
|
| - || (pointer == TouchPointer && !number)
|
| - || (pointer == MousePointer && number == 1);
|
| + if (pointer & (PointerDeviceTouch | PointerDeviceNone))
|
| + return !number;
|
| + else if (pointer & PointerDeviceMouse)
|
| + return number == 1;
|
| + else
|
| + return false;
|
| }
|
|
|
| static bool pointerMediaFeatureEval(CSSValue* value, RenderStyle*, Frame* frame, MediaFeaturePrefix)
|
| {
|
| - PointerDeviceType pointer = leastCapablePrimaryPointerDeviceType(frame);
|
| + int pointer = frame->settings()->primaryPointerDevices();
|
|
|
| // If we're on a port that hasn't explicitly opted into providing pointer device information
|
| // (or otherwise can't be confident in the pointer hardware available), then behave exactly
|
| // as if this feature feature isn't supported.
|
| - if (pointer == UnknownPointer)
|
| + if (pointer == PointerDeviceUnknown)
|
| return false;
|
|
|
| if (!value)
|
| - return pointer != NoPointer;
|
| + return !(pointer & PointerDeviceNone);
|
|
|
| if (!value->isPrimitiveValue())
|
| return false;
|
|
|
| const int id = static_cast<CSSPrimitiveValue*>(value)->getIdent();
|
| - return (pointer == NoPointer && id == CSSValueNone)
|
| - || (pointer == TouchPointer && id == CSSValueCoarse)
|
| - || (pointer == MousePointer && id == CSSValueFine);
|
| +
|
| + if (pointer & PointerDeviceNone)
|
| + return id == CSSValueNone;
|
| + else if (pointer & PointerDeviceTouch)
|
| + return id == CSSValueCoarse;
|
| + else if (pointer & PointerDeviceMouse)
|
| + return id == CSSValueFine;
|
| + else
|
| + return false;
|
| }
|
|
|
| static void createFunctionMap()
|
|
|