| 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 316 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 327 static bool gridMediaFeatureEval(CSSValue* value, RenderStyle*, Frame*, MediaFea
     turePrefix op) | 327 static bool gridMediaFeatureEval(CSSValue* value, RenderStyle*, Frame*, MediaFea
     turePrefix op) | 
| 328 { | 328 { | 
| 329     // if output device is bitmap, grid: 0 == true | 329     // if output device is bitmap, grid: 0 == true | 
| 330     // assume we have bitmap device | 330     // assume we have bitmap device | 
| 331     float number; | 331     float number; | 
| 332     if (value && numberValue(value, number)) | 332     if (value && numberValue(value, number)) | 
| 333         return compareValue(static_cast<int>(number), 0, op); | 333         return compareValue(static_cast<int>(number), 0, op); | 
| 334     return false; | 334     return false; | 
| 335 } | 335 } | 
| 336 | 336 | 
| 337 static bool computeLength(CSSValue* value, bool strict, RenderStyle* style, Rend
     erStyle* rootStyle, int& result) | 337 static bool computeLength(Document* document, CSSValue* value, RenderStyle* styl
     e, RenderStyle* rootStyle, int& result) | 
| 338 { | 338 { | 
| 339     if (!value->isPrimitiveValue()) | 339     if (!value->isPrimitiveValue()) | 
| 340         return false; | 340         return false; | 
| 341 | 341 | 
| 342     CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); | 342     CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); | 
| 343 | 343 | 
| 344     if (primitiveValue->isNumber()) { | 344     if (primitiveValue->isNumber()) { | 
| 345         result = primitiveValue->getIntValue(); | 345         result = primitiveValue->getIntValue(); | 
|  | 346         bool strict = !document->inQuirksMode(); | 
| 346         return !strict || !result; | 347         return !strict || !result; | 
| 347     } | 348     } | 
| 348 | 349 | 
|  | 350     if (primitiveValue->primitiveType() == CSSPrimitiveValue::CSS_REMS) { | 
|  | 351         // Use the initial font size instead of <html> font size. | 
|  | 352         RefPtr<RenderStyle> defaultStyle = StyleResolver::styleForDocument(docum
     ent); | 
|  | 353         result = primitiveValue->computeLength<int>(style, defaultStyle.get(), 1
     .0 /* multiplier */, true /* computingFontSize */); | 
|  | 354         return true; | 
|  | 355     } | 
|  | 356 | 
| 349     if (primitiveValue->isLength()) { | 357     if (primitiveValue->isLength()) { | 
| 350         result = primitiveValue->computeLength<int>(style, rootStyle, 1.0 /* mul
     tiplier */, true /* computingFontSize */); | 358         result = primitiveValue->computeLength<int>(style, rootStyle, 1.0 /* mul
     tiplier */, true /* computingFontSize */); | 
| 351         return true; | 359         return true; | 
| 352     } | 360     } | 
| 353 | 361 | 
| 354     return false; | 362     return false; | 
| 355 } | 363 } | 
| 356 | 364 | 
| 357 static bool deviceHeightMediaFeatureEval(CSSValue* value, RenderStyle* style, Fr
     ame* frame, MediaFeaturePrefix op) | 365 static bool deviceHeightMediaFeatureEval(CSSValue* value, RenderStyle* style, Fr
     ame* frame, MediaFeaturePrefix op) | 
| 358 { | 366 { | 
| 359     if (value) { | 367     if (value) { | 
| 360         FloatRect sg = screenRect(frame->page()->mainFrame()->view()); | 368         FloatRect sg = screenRect(frame->page()->mainFrame()->view()); | 
| 361         RenderStyle* rootStyle = frame->document()->documentElement()->renderSty
     le(); | 369         RenderStyle* rootStyle = frame->document()->documentElement()->renderSty
     le(); | 
| 362         int length; | 370         int length; | 
| 363         long height = sg.height(); | 371         long height = sg.height(); | 
| 364         InspectorInstrumentation::applyScreenHeightOverride(frame, &height); | 372         InspectorInstrumentation::applyScreenHeightOverride(frame, &height); | 
| 365         return computeLength(value, !frame->document()->inQuirksMode(), style, r
     ootStyle, length) && compareValue(static_cast<int>(height), length, op); | 373         return computeLength(frame->document(), value, style, rootStyle, length)
      && compareValue(static_cast<int>(height), length, op); | 
| 366     } | 374     } | 
| 367     // ({,min-,max-}device-height) | 375     // ({,min-,max-}device-height) | 
| 368     // assume if we have a device, assume non-zero | 376     // assume if we have a device, assume non-zero | 
| 369     return true; | 377     return true; | 
| 370 } | 378 } | 
| 371 | 379 | 
| 372 static bool deviceWidthMediaFeatureEval(CSSValue* value, RenderStyle* style, Fra
     me* frame, MediaFeaturePrefix op) | 380 static bool deviceWidthMediaFeatureEval(CSSValue* value, RenderStyle* style, Fra
     me* frame, MediaFeaturePrefix op) | 
| 373 { | 381 { | 
| 374     if (value) { | 382     if (value) { | 
| 375         FloatRect sg = screenRect(frame->page()->mainFrame()->view()); | 383         FloatRect sg = screenRect(frame->page()->mainFrame()->view()); | 
| 376         RenderStyle* rootStyle = frame->document()->documentElement()->renderSty
     le(); | 384         RenderStyle* rootStyle = frame->document()->documentElement()->renderSty
     le(); | 
| 377         int length; | 385         int length; | 
| 378         long width = sg.width(); | 386         long width = sg.width(); | 
| 379         InspectorInstrumentation::applyScreenWidthOverride(frame, &width); | 387         InspectorInstrumentation::applyScreenWidthOverride(frame, &width); | 
| 380         return computeLength(value, !frame->document()->inQuirksMode(), style, r
     ootStyle, length) && compareValue(static_cast<int>(width), length, op); | 388         return computeLength(frame->document(), value, style, rootStyle, length)
      && compareValue(static_cast<int>(width), length, op); | 
| 381     } | 389     } | 
| 382     // ({,min-,max-}device-width) | 390     // ({,min-,max-}device-width) | 
| 383     // assume if we have a device, assume non-zero | 391     // assume if we have a device, assume non-zero | 
| 384     return true; | 392     return true; | 
| 385 } | 393 } | 
| 386 | 394 | 
| 387 static bool heightMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* f
     rame, MediaFeaturePrefix op) | 395 static bool heightMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* f
     rame, MediaFeaturePrefix op) | 
| 388 { | 396 { | 
| 389     FrameView* view = frame->view(); | 397     FrameView* view = frame->view(); | 
| 390 | 398 | 
| 391     int height = viewportSize(view).height(); | 399     int height = viewportSize(view).height(); | 
| 392     if (value) { | 400     if (value) { | 
| 393         if (RenderView* renderView = frame->document()->renderView()) | 401         if (RenderView* renderView = frame->document()->renderView()) | 
| 394             height = adjustForAbsoluteZoom(height, renderView); | 402             height = adjustForAbsoluteZoom(height, renderView); | 
| 395         RenderStyle* rootStyle = frame->document()->documentElement()->renderSty
     le(); | 403         RenderStyle* rootStyle = frame->document()->documentElement()->renderSty
     le(); | 
| 396         int length; | 404         int length; | 
| 397         return computeLength(value, !frame->document()->inQuirksMode(), style, r
     ootStyle, length) && compareValue(height, length, op); | 405         return computeLength(frame->document(), value, style, rootStyle, length)
      && compareValue(height, length, op); | 
| 398     } | 406     } | 
| 399 | 407 | 
| 400     return height; | 408     return height; | 
| 401 } | 409 } | 
| 402 | 410 | 
| 403 static bool widthMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* fr
     ame, MediaFeaturePrefix op) | 411 static bool widthMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* fr
     ame, MediaFeaturePrefix op) | 
| 404 { | 412 { | 
| 405     FrameView* view = frame->view(); | 413     FrameView* view = frame->view(); | 
| 406 | 414 | 
| 407     int width = viewportSize(view).width(); | 415     int width = viewportSize(view).width(); | 
| 408     if (value) { | 416     if (value) { | 
| 409         if (RenderView* renderView = frame->document()->renderView()) | 417         if (RenderView* renderView = frame->document()->renderView()) | 
| 410             width = adjustForAbsoluteZoom(width, renderView); | 418             width = adjustForAbsoluteZoom(width, renderView); | 
| 411         RenderStyle* rootStyle = frame->document()->documentElement()->renderSty
     le(); | 419         RenderStyle* rootStyle = frame->document()->documentElement()->renderSty
     le(); | 
| 412         int length; | 420         int length; | 
| 413         return computeLength(value, !frame->document()->inQuirksMode(), style, r
     ootStyle, length) && compareValue(width, length, op); | 421         return computeLength(frame->document(), value, style, rootStyle, length)
      && compareValue(width, length, op); | 
| 414     } | 422     } | 
| 415 | 423 | 
| 416     return width; | 424     return width; | 
| 417 } | 425 } | 
| 418 | 426 | 
| 419 // rest of the functions are trampolines which set the prefix according to the m
     edia feature expression used | 427 // rest of the functions are trampolines which set the prefix according to the m
     edia feature expression used | 
| 420 | 428 | 
| 421 static bool minColorMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame*
      frame, MediaFeaturePrefix) | 429 static bool minColorMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame*
      frame, MediaFeaturePrefix) | 
| 422 { | 430 { | 
| 423     return colorMediaFeatureEval(value, style, frame, MinPrefix); | 431     return colorMediaFeatureEval(value, style, frame, MinPrefix); | 
| (...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 685     // and let trampoline functions override the prefix if prefix is | 693     // and let trampoline functions override the prefix if prefix is | 
| 686     // used | 694     // used | 
| 687     EvalFunc func = gFunctionMap->get(expr->mediaFeature().impl()); | 695     EvalFunc func = gFunctionMap->get(expr->mediaFeature().impl()); | 
| 688     if (func) | 696     if (func) | 
| 689         return func(expr->value(), m_style.get(), m_frame, NoPrefix); | 697         return func(expr->value(), m_style.get(), m_frame, NoPrefix); | 
| 690 | 698 | 
| 691     return false; | 699     return false; | 
| 692 } | 700 } | 
| 693 | 701 | 
| 694 } // namespace | 702 } // namespace | 
| OLD | NEW | 
|---|