Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(297)

Unified Diff: Source/WebCore/css/MediaQueryEvaluator.cpp

Issue 13818030: Added primary input devices setting to blink to allow media queries for hover/pointer (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Review fixes Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « LayoutTests/fast/media/mq-pointer-expected.txt ('k') | Source/WebCore/page/Settings.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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()
« no previous file with comments | « LayoutTests/fast/media/mq-pointer-expected.txt ('k') | Source/WebCore/page/Settings.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698