Chromium Code Reviews| Index: Source/core/css/MediaQueryEvaluator.cpp |
| diff --git a/Source/core/css/MediaQueryEvaluator.cpp b/Source/core/css/MediaQueryEvaluator.cpp |
| index 90c28183a7406df21179b465971eb9ff19aae990..4f30e7bbd8fcbce21cb77c83a95ff3589b17f3a0 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,20 @@ MediaQueryEvaluator::~MediaQueryEvaluator() |
| { |
| } |
| +const String MediaQueryEvaluator::mediaType() const |
| +{ |
| + if (!m_mediaType.isEmpty()) |
| + return m_mediaType; |
| + if (m_mediaValues.get()) |
|
esprehn
2014/06/27 08:10:32
You don't need to call .get(), there's an overload
|
| + 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 +115,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 +270,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 +568,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()) |