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

Side by Side Diff: Source/core/css/MediaQueryEvaluator.cpp

Issue 451113002: Updated hover media feature to comply updated media queries spec (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Change behind RuntimeEnabledFeature status=stable Created 6 years, 4 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 unified diff | Download patch
« no previous file with comments | « Source/core/css/CSSValueKeywords.in ('k') | Source/core/css/MediaQueryEvaluatorTest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * CSS Media Query Evaluator 2 * CSS Media Query Evaluator
3 * 3 *
4 * Copyright (C) 2006 Kimmo Kinnunen <kimmo.t.kinnunen@nokia.com>. 4 * Copyright (C) 2006 Kimmo Kinnunen <kimmo.t.kinnunen@nokia.com>.
5 * Copyright (C) 2013 Apple Inc. All rights reserved. 5 * Copyright (C) 2013 Apple Inc. All rights reserved.
6 * Copyright (C) 2013 Intel Corporation. All rights reserved. 6 * Copyright (C) 2013 Intel Corporation. All rights reserved.
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions 9 * modification, are permitted provided that the following conditions
10 * are met: 10 * are met:
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 #include "core/frame/FrameHost.h" 46 #include "core/frame/FrameHost.h"
47 #include "core/frame/FrameView.h" 47 #include "core/frame/FrameView.h"
48 #include "core/frame/LocalFrame.h" 48 #include "core/frame/LocalFrame.h"
49 #include "core/frame/Settings.h" 49 #include "core/frame/Settings.h"
50 #include "core/frame/UseCounter.h" 50 #include "core/frame/UseCounter.h"
51 #include "core/inspector/InspectorInstrumentation.h" 51 #include "core/inspector/InspectorInstrumentation.h"
52 #include "core/rendering/RenderView.h" 52 #include "core/rendering/RenderView.h"
53 #include "core/rendering/compositing/RenderLayerCompositor.h" 53 #include "core/rendering/compositing/RenderLayerCompositor.h"
54 #include "core/rendering/style/RenderStyle.h" 54 #include "core/rendering/style/RenderStyle.h"
55 #include "platform/PlatformScreen.h" 55 #include "platform/PlatformScreen.h"
56 #include "platform/RuntimeEnabledFeatures.h"
56 #include "platform/geometry/FloatRect.h" 57 #include "platform/geometry/FloatRect.h"
57 #include "wtf/HashMap.h" 58 #include "wtf/HashMap.h"
58 59
59 namespace blink { 60 namespace blink {
60 61
61 using namespace MediaFeatureNames; 62 using namespace MediaFeatureNames;
62 63
63 enum MediaFeaturePrefix { MinPrefix, MaxPrefix, NoPrefix }; 64 enum MediaFeaturePrefix { MinPrefix, MaxPrefix, NoPrefix };
64 65
65 typedef bool (*EvalFunc)(const MediaQueryExpValue&, MediaFeaturePrefix, const Me diaValues&); 66 typedef bool (*EvalFunc)(const MediaQueryExpValue&, MediaFeaturePrefix, const Me diaValues&);
(...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 static bool hoverMediaFeatureEval(const MediaQueryExpValue& value, MediaFeatureP refix, const MediaValues& mediaValues) 530 static bool hoverMediaFeatureEval(const MediaQueryExpValue& value, MediaFeatureP refix, const MediaValues& mediaValues)
530 { 531 {
531 MediaValues::PointerDeviceType pointer = mediaValues.pointer(); 532 MediaValues::PointerDeviceType pointer = mediaValues.pointer();
532 533
533 // If we're on a port that hasn't explicitly opted into providing pointer de vice information 534 // If we're on a port that hasn't explicitly opted into providing pointer de vice information
534 // (or otherwise can't be confident in the pointer hardware available), then behave exactly 535 // (or otherwise can't be confident in the pointer hardware available), then behave exactly
535 // as if this feature feature isn't supported. 536 // as if this feature feature isn't supported.
536 if (pointer == MediaValues::UnknownPointer) 537 if (pointer == MediaValues::UnknownPointer)
537 return false; 538 return false;
538 539
539 float number = 1; 540 // FIXME: Remove the old code once we're sure this doesn't break anything si gnificant.
540 if (value.isValid()) { 541 if (RuntimeEnabledFeatures::hoverMediaQueryKeywordsEnabled()) {
541 if (!numberValue(value, number)) 542 if (!value.isValid())
543 return pointer != MediaValues::NoPointer;
544
545 if (!value.isID)
542 return false; 546 return false;
547
548 return (pointer == MediaValues::NoPointer && value.id == CSSValueNone)
549 || (pointer == MediaValues::TouchPointer && value.id == CSSValueOnDe mand)
550 || (pointer == MediaValues::MousePointer && value.id == CSSValueHove r);
551 } else {
552 float number = 1;
553 if (value.isValid()) {
554 if (!numberValue(value, number))
555 return false;
556 }
557
558 return (pointer == MediaValues::NoPointer && !number)
559 || (pointer == MediaValues::TouchPointer && !number)
560 || (pointer == MediaValues::MousePointer && number == 1);
543 } 561 }
544
545 return (pointer == MediaValues::NoPointer && !number)
546 || (pointer == MediaValues::TouchPointer && !number)
547 || (pointer == MediaValues::MousePointer && number == 1);
548 } 562 }
549 563
550 static bool pointerMediaFeatureEval(const MediaQueryExpValue& value, MediaFeatur ePrefix, const MediaValues& mediaValues) 564 static bool pointerMediaFeatureEval(const MediaQueryExpValue& value, MediaFeatur ePrefix, const MediaValues& mediaValues)
551 { 565 {
552 MediaValues::PointerDeviceType pointer = mediaValues.pointer(); 566 MediaValues::PointerDeviceType pointer = mediaValues.pointer();
553 567
554 // If we're on a port that hasn't explicitly opted into providing pointer de vice information 568 // If we're on a port that hasn't explicitly opted into providing pointer de vice information
555 // (or otherwise can't be confident in the pointer hardware available), then behave exactly 569 // (or otherwise can't be confident in the pointer hardware available), then behave exactly
556 // as if this feature feature isn't supported. 570 // as if this feature feature isn't supported.
557 if (pointer == MediaValues::UnknownPointer) 571 if (pointer == MediaValues::UnknownPointer)
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
607 // Call the media feature evaluation function. Assume no prefix and let 621 // Call the media feature evaluation function. Assume no prefix and let
608 // trampoline functions override the prefix if prefix is used. 622 // trampoline functions override the prefix if prefix is used.
609 EvalFunc func = gFunctionMap->get(expr->mediaFeature().impl()); 623 EvalFunc func = gFunctionMap->get(expr->mediaFeature().impl());
610 if (func) 624 if (func)
611 return func(expr->expValue(), NoPrefix, *m_mediaValues); 625 return func(expr->expValue(), NoPrefix, *m_mediaValues);
612 626
613 return false; 627 return false;
614 } 628 }
615 629
616 } // namespace 630 } // namespace
OLDNEW
« no previous file with comments | « Source/core/css/CSSValueKeywords.in ('k') | Source/core/css/MediaQueryEvaluatorTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698