| Index: Source/core/css/MediaQueryEvaluator.cpp
|
| diff --git a/Source/core/css/MediaQueryEvaluator.cpp b/Source/core/css/MediaQueryEvaluator.cpp
|
| index 90c28183a7406df21179b465971eb9ff19aae990..beae48645ed7dfec592e839502a4f93812198240 100644
|
| --- a/Source/core/css/MediaQueryEvaluator.cpp
|
| +++ b/Source/core/css/MediaQueryEvaluator.cpp
|
| @@ -71,28 +71,20 @@ MediaQueryEvaluator::MediaQueryEvaluator(bool mediaFeatureResult)
|
| {
|
| }
|
|
|
| -MediaQueryEvaluator::MediaQueryEvaluator(const String& acceptedMediaType, bool mediaFeatureResult)
|
| - : m_mediaType(acceptedMediaType)
|
| - , m_expectedResult(mediaFeatureResult)
|
| -{
|
| -}
|
| -
|
| MediaQueryEvaluator::MediaQueryEvaluator(const char* acceptedMediaType, bool mediaFeatureResult)
|
| : m_mediaType(acceptedMediaType)
|
| , m_expectedResult(mediaFeatureResult)
|
| {
|
| }
|
|
|
| -MediaQueryEvaluator::MediaQueryEvaluator(const String& acceptedMediaType, LocalFrame* frame)
|
| - : m_mediaType(acceptedMediaType)
|
| - , m_expectedResult(false) // Doesn't matter when we have m_frame and m_style.
|
| +MediaQueryEvaluator::MediaQueryEvaluator(LocalFrame* frame)
|
| + : m_expectedResult(false) // Doesn't matter when we have m_frame and m_style.
|
| , m_mediaValues(MediaValues::createDynamicIfFrameExists(frame))
|
| {
|
| }
|
|
|
| -MediaQueryEvaluator::MediaQueryEvaluator(const String& acceptedMediaType, const MediaValues& mediaValues)
|
| - : m_mediaType(acceptedMediaType)
|
| - , m_expectedResult(false) // Doesn't matter when we have mediaValues.
|
| +MediaQueryEvaluator::MediaQueryEvaluator(const MediaValues& mediaValues)
|
| + : m_expectedResult(false) // Doesn't matter when we have mediaValues.
|
| , m_mediaValues(mediaValues.copy())
|
| {
|
| }
|
| @@ -101,11 +93,22 @@ MediaQueryEvaluator::~MediaQueryEvaluator()
|
| {
|
| }
|
|
|
| +const String MediaQueryEvaluator::mediaType() const
|
| +{
|
| + // If a static mediaType was given by the constructor, we use it here.
|
| + if (!m_mediaType.isEmpty())
|
| + return m_mediaType;
|
| + // Otherwise, we get one from mediaValues (which may be dynamic or cached).
|
| + if (m_mediaValues)
|
| + return m_mediaValues->mediaType();
|
| + return nullAtom;
|
| +}
|
| +
|
| bool MediaQueryEvaluator::mediaTypeMatch(const String& mediaTypeToMatch) const
|
| {
|
| return mediaTypeToMatch.isEmpty()
|
| || equalIgnoringCase(mediaTypeToMatch, MediaTypeNames::all)
|
| - || equalIgnoringCase(mediaTypeToMatch, m_mediaType);
|
| + || equalIgnoringCase(mediaTypeToMatch, mediaType());
|
| }
|
|
|
| bool MediaQueryEvaluator::mediaTypeMatchSpecific(const char* mediaTypeToMatch) const
|
| @@ -114,7 +117,7 @@ bool MediaQueryEvaluator::mediaTypeMatchSpecific(const char* mediaTypeToMatch) c
|
| ASSERT(mediaTypeToMatch);
|
| ASSERT(mediaTypeToMatch[0] != '\0');
|
| ASSERT(!equalIgnoringCase(mediaTypeToMatch, MediaTypeNames::all));
|
| - return equalIgnoringCase(mediaTypeToMatch, m_mediaType);
|
| + return equalIgnoringCase(mediaTypeToMatch, mediaType());
|
| }
|
|
|
| static bool applyRestrictor(MediaQuery::Restrictor r, bool value)
|
| @@ -269,9 +272,9 @@ static bool evalResolution(const MediaQueryExpValue& value, MediaFeaturePrefix o
|
| // this method only got called if this media type matches the one defined
|
| // in the query. Thus, if if the document's media type is "print", the
|
| // media type of the query will either be "print" or "all".
|
| - if (mediaValues.screenMediaType()) {
|
| + if (equalIgnoringCase(mediaValues.mediaType(), MediaTypeNames::screen)) {
|
| actualResolution = clampTo<float>(mediaValues.devicePixelRatio());
|
| - } else if (mediaValues.printMediaType()) {
|
| + } else if (equalIgnoringCase(mediaValues.mediaType(), MediaTypeNames::print)) {
|
| // The resolution of images while printing should not depend on the DPI
|
| // of the screen. Until we support proper ways of querying this info
|
| // we use 300px which is considered minimum for current printers.
|
| @@ -567,7 +570,8 @@ static bool pointerMediaFeatureEval(const MediaQueryExpValue& value, MediaFeatur
|
|
|
| static bool scanMediaFeatureEval(const MediaQueryExpValue& value, MediaFeaturePrefix, const MediaValues& mediaValues)
|
| {
|
| - if (!mediaValues.scanMediaType())
|
| + // Scan only applies to 'tv' media.
|
| + if (!equalIgnoringCase(mediaValues.mediaType(), MediaTypeNames::tv))
|
| return false;
|
|
|
| if (!value.isValid())
|
|
|