| OLD | NEW |
| 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 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 124 { | 124 { |
| 125 if (!mediaTypeMatch(query->mediaType())) | 125 if (!mediaTypeMatch(query->mediaType())) |
| 126 return applyRestrictor(query->restrictor(), false); | 126 return applyRestrictor(query->restrictor(), false); |
| 127 | 127 |
| 128 const ExpressionHeapVector& expressions = query->expressions(); | 128 const ExpressionHeapVector& expressions = query->expressions(); |
| 129 // Iterate through expressions, stop if any of them eval to false (AND seman
tics). | 129 // Iterate through expressions, stop if any of them eval to false (AND seman
tics). |
| 130 size_t i = 0; | 130 size_t i = 0; |
| 131 for (; i < expressions.size(); ++i) { | 131 for (; i < expressions.size(); ++i) { |
| 132 bool exprResult = eval(expressions.at(i).get()); | 132 bool exprResult = eval(expressions.at(i).get()); |
| 133 if (viewportDependentMediaQueryResults && expressions.at(i)->isViewportD
ependent()) | 133 if (viewportDependentMediaQueryResults && expressions.at(i)->isViewportD
ependent()) |
| 134 viewportDependentMediaQueryResults->append(adoptRefWillBeNoop(new Me
diaQueryResult(*expressions.at(i), exprResult))); | 134 viewportDependentMediaQueryResults->append((new MediaQueryResult(*ex
pressions.at(i), exprResult))); |
| 135 if (deviceDependentMediaQueryResults && expressions.at(i)->isDeviceDepen
dent()) | 135 if (deviceDependentMediaQueryResults && expressions.at(i)->isDeviceDepen
dent()) |
| 136 deviceDependentMediaQueryResults->append(adoptRefWillBeNoop(new Medi
aQueryResult(*expressions.at(i), exprResult))); | 136 deviceDependentMediaQueryResults->append((new MediaQueryResult(*expr
essions.at(i), exprResult))); |
| 137 if (!exprResult) | 137 if (!exprResult) |
| 138 break; | 138 break; |
| 139 } | 139 } |
| 140 | 140 |
| 141 // Assume true if we are at the end of the list, otherwise assume false. | 141 // Assume true if we are at the end of the list, otherwise assume false. |
| 142 return applyRestrictor(query->restrictor(), expressions.size() == i); | 142 return applyRestrictor(query->restrictor(), expressions.size() == i); |
| 143 } | 143 } |
| 144 | 144 |
| 145 bool MediaQueryEvaluator::eval(const MediaQuerySet* querySet, MediaQueryResultLi
st* viewportDependentMediaQueryResults, MediaQueryResultList* deviceDependentMed
iaQueryResults) const | 145 bool MediaQueryEvaluator::eval(const MediaQuerySet* querySet, MediaQueryResultLi
st* viewportDependentMediaQueryResults, MediaQueryResultList* deviceDependentMed
iaQueryResults) const |
| 146 { | 146 { |
| 147 if (!querySet) | 147 if (!querySet) |
| 148 return true; | 148 return true; |
| 149 | 149 |
| 150 const WillBeHeapVector<OwnPtrWillBeMember<MediaQuery>>& queries = querySet->
queryVector(); | 150 const HeapVector<Member<MediaQuery>>& queries = querySet->queryVector(); |
| 151 if (!queries.size()) | 151 if (!queries.size()) |
| 152 return true; // Empty query list evaluates to true. | 152 return true; // Empty query list evaluates to true. |
| 153 | 153 |
| 154 // Iterate over queries, stop if any of them eval to true (OR semantics). | 154 // Iterate over queries, stop if any of them eval to true (OR semantics). |
| 155 bool result = false; | 155 bool result = false; |
| 156 for (size_t i = 0; i < queries.size() && !result; ++i) | 156 for (size_t i = 0; i < queries.size() && !result; ++i) |
| 157 result = eval(queries[i].get(), viewportDependentMediaQueryResults, devi
ceDependentMediaQueryResults); | 157 result = eval(queries[i].get(), viewportDependentMediaQueryResults, devi
ceDependentMediaQueryResults); |
| 158 | 158 |
| 159 return result; | 159 return result; |
| 160 } | 160 } |
| (...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 665 // Call the media feature evaluation function. Assume no prefix and let | 665 // Call the media feature evaluation function. Assume no prefix and let |
| 666 // trampoline functions override the prefix if prefix is used. | 666 // trampoline functions override the prefix if prefix is used. |
| 667 EvalFunc func = gFunctionMap->get(expr->mediaFeature().impl()); | 667 EvalFunc func = gFunctionMap->get(expr->mediaFeature().impl()); |
| 668 if (func) | 668 if (func) |
| 669 return func(expr->expValue(), NoPrefix, *m_mediaValues); | 669 return func(expr->expValue(), NoPrefix, *m_mediaValues); |
| 670 | 670 |
| 671 return false; | 671 return false; |
| 672 } | 672 } |
| 673 | 673 |
| 674 } // namespace blink | 674 } // namespace blink |
| OLD | NEW |