Chromium Code Reviews| Index: Source/core/css/MediaValues.cpp |
| diff --git a/Source/core/css/MediaValues.cpp b/Source/core/css/MediaValues.cpp |
| index 533562476a437a2e3061d531d862e209ba970495..af6c2910529aa5ae4d96bb7c08160ad912e7c9ac 100644 |
| --- a/Source/core/css/MediaValues.cpp |
| +++ b/Source/core/css/MediaValues.cpp |
| @@ -85,6 +85,26 @@ static int calculateDefaultFontSize(RenderStyle* style) |
| return style->fontDescription().specifiedSize(); |
| } |
| +static int calculateComputedFontSize(RenderStyle* style) |
| +{ |
| + return style->fontDescription().computedSize(); |
| +} |
| + |
| +static bool calculateHasXHeight(RenderStyle* style) |
| +{ |
| + return style->fontMetrics().hasXHeight(); |
| +} |
| + |
| +static double calculateXHeight(RenderStyle* style) |
| +{ |
| + return style->fontMetrics().xHeight(); |
| +} |
| + |
| +static double calculateZeroWidth(RenderStyle* style) |
| +{ |
| + return style->fontMetrics().zeroWidth(); |
| +} |
| + |
| static bool calculateScanMediaType(LocalFrame* frame) |
| { |
| ASSERT(frame && frame->view()); |
| @@ -113,6 +133,12 @@ static bool calculateThreeDEnabled(LocalFrame* frame) |
| return threeDEnabled; |
| } |
| +static float calculateEffectiveZoom(RenderStyle* style) |
| +{ |
| + ASSERT(style); |
| + return style->effectiveZoom(); |
| +} |
| + |
| static MediaValues::PointerDeviceType calculateLeastCapablePrimaryPointerDeviceType(LocalFrame* frame) |
| { |
| ASSERT(frame && frame->settings()); |
| @@ -139,11 +165,16 @@ PassRefPtr<MediaValues> MediaValues::create(MediaValuesMode mode, |
| int monochromeBitsPerComponent, |
| PointerDeviceType pointer, |
| int defaultFontSize, |
| + int computedFontSize, |
| + bool hasXHeight, |
| + double xHeight, |
| + double zeroWidth, |
| bool threeDEnabled, |
| bool scanMediaType, |
| bool screenMediaType, |
| bool printMediaType, |
| - bool strictMode) |
| + bool strictMode, |
| + float effectiveZoom) |
| { |
| ASSERT(mode == CachingMode); |
| RefPtr<MediaValues> mediaValues = adoptRef(new MediaValues(0, nullptr, mode)); |
| @@ -156,11 +187,16 @@ PassRefPtr<MediaValues> MediaValues::create(MediaValuesMode mode, |
| mediaValues->m_monochromeBitsPerComponent = monochromeBitsPerComponent; |
| mediaValues->m_pointer = pointer; |
| mediaValues->m_defaultFontSize = defaultFontSize; |
| + mediaValues->m_computedFontSize = computedFontSize; |
| + mediaValues->m_hasXHeight = hasXHeight; |
| + mediaValues->m_xHeight = xHeight; |
| + mediaValues->m_zeroWidth = zeroWidth; |
| mediaValues->m_threeDEnabled = threeDEnabled; |
| mediaValues->m_scanMediaType = scanMediaType; |
| mediaValues->m_screenMediaType = screenMediaType; |
| mediaValues->m_printMediaType = printMediaType; |
| mediaValues->m_strictMode = strictMode; |
| + mediaValues->m_effectiveZoom = effectiveZoom; |
| return mediaValues; |
| } |
| @@ -172,19 +208,24 @@ PassRefPtr<MediaValues> MediaValues::create(LocalFrame* frame, RenderStyle* styl |
| mediaValues = adoptRef(new MediaValues(frame, style, mode)); |
| if (mode == CachingMode) { |
| mediaValues->m_viewportWidth = calculateViewportWidth(frame, style); |
| - mediaValues->m_viewportHeight = calculateViewportHeight(frame, style), |
| - mediaValues->m_deviceWidth = calculateDeviceWidth(frame), |
| - mediaValues->m_deviceHeight = calculateDeviceHeight(frame), |
| - mediaValues->m_devicePixelRatio = calculateDevicePixelRatio(frame), |
| - mediaValues->m_colorBitsPerComponent = calculateColorBitsPerComponent(frame), |
| - mediaValues->m_monochromeBitsPerComponent = calculateMonochromeBitsPerComponent(frame), |
| - mediaValues->m_pointer = calculateLeastCapablePrimaryPointerDeviceType(frame), |
| - mediaValues->m_defaultFontSize = calculateDefaultFontSize(style), |
| - mediaValues->m_threeDEnabled = calculateThreeDEnabled(frame), |
| - mediaValues->m_scanMediaType = calculateScanMediaType(frame), |
| - mediaValues->m_screenMediaType = calculateScreenMediaType(frame), |
| - mediaValues->m_printMediaType = calculatePrintMediaType(frame), |
| + mediaValues->m_viewportHeight = calculateViewportHeight(frame, style); |
| + mediaValues->m_deviceWidth = calculateDeviceWidth(frame); |
| + mediaValues->m_deviceHeight = calculateDeviceHeight(frame); |
| + mediaValues->m_devicePixelRatio = calculateDevicePixelRatio(frame); |
| + mediaValues->m_colorBitsPerComponent = calculateColorBitsPerComponent(frame); |
| + mediaValues->m_monochromeBitsPerComponent = calculateMonochromeBitsPerComponent(frame); |
| + mediaValues->m_pointer = calculateLeastCapablePrimaryPointerDeviceType(frame); |
| + mediaValues->m_defaultFontSize = calculateDefaultFontSize(style); |
| + mediaValues->m_computedFontSize = calculateComputedFontSize(style); |
| + mediaValues->m_hasXHeight = calculateHasXHeight(style); |
| + mediaValues->m_xHeight = calculateXHeight(style); |
| + mediaValues->m_zeroWidth = calculateZeroWidth(style); |
| + mediaValues->m_threeDEnabled = calculateThreeDEnabled(frame); |
| + mediaValues->m_scanMediaType = calculateScanMediaType(frame); |
| + mediaValues->m_screenMediaType = calculateScreenMediaType(frame); |
| + mediaValues->m_printMediaType = calculatePrintMediaType(frame); |
| mediaValues->m_strictMode = calculateStrictMode(frame); |
| + mediaValues->m_effectiveZoom = calculateEffectiveZoom(style); |
| mediaValues->m_style.clear(); |
| mediaValues->m_frame = 0; |
| @@ -193,10 +234,9 @@ PassRefPtr<MediaValues> MediaValues::create(LocalFrame* frame, RenderStyle* styl |
| return mediaValues; |
| } |
| -PassRefPtr<MediaValues> MediaValues::create(Document* document, MediaValuesMode mode) |
| +PassRefPtr<MediaValues> MediaValues::create(const Document& document, MediaValuesMode mode) |
| { |
| - ASSERT(document); |
| - Document* executingDocument = document->import() ? document->import()->master() : document; |
| + const Document* executingDocument = document.import() ? document.import()->master() : &document; |
| ASSERT(executingDocument->frame()); |
| ASSERT(executingDocument->renderer()); |
| ASSERT(executingDocument->renderer()->style()); |
| @@ -219,11 +259,16 @@ PassRefPtr<MediaValues> MediaValues::copy() const |
| mediaValues->m_monochromeBitsPerComponent = m_monochromeBitsPerComponent; |
| mediaValues->m_pointer = m_pointer; |
| mediaValues->m_defaultFontSize = m_defaultFontSize; |
| + mediaValues->m_computedFontSize = m_computedFontSize; |
| + mediaValues->m_hasXHeight = m_hasXHeight; |
| + mediaValues->m_xHeight = m_xHeight; |
| + mediaValues->m_zeroWidth = m_zeroWidth; |
| mediaValues->m_threeDEnabled = m_threeDEnabled; |
| mediaValues->m_scanMediaType = m_scanMediaType; |
| mediaValues->m_screenMediaType = m_screenMediaType; |
| mediaValues->m_printMediaType = m_printMediaType; |
| mediaValues->m_strictMode = m_strictMode; |
| + mediaValues->m_effectiveZoom = m_effectiveZoom; |
| return mediaValues; |
| } |
| @@ -296,6 +341,34 @@ int MediaValues::defaultFontSize() const |
| return m_defaultFontSize; |
| } |
| +int MediaValues::computedFontSize() const |
| +{ |
| + if (m_mode == DynamicMode) |
| + return calculateComputedFontSize(m_style.get()); |
| + return m_computedFontSize; |
| +} |
| + |
| +bool MediaValues::hasXHeight() const |
| +{ |
| + if (m_mode == DynamicMode) |
|
esprehn
2014/04/08 17:40:39
What is DynamicMode? You should use two difference
|
| + return calculateHasXHeight(m_style.get()); |
| + return m_hasXHeight; |
| +} |
| + |
| +double MediaValues::xHeight() const |
| +{ |
| + if (m_mode == DynamicMode) |
|
eseidel
2014/04/08 16:51:28
I don't understand caching vs. dynamic mode. Why
|
| + return calculateXHeight(m_style.get()); |
| + return m_xHeight; |
| +} |
| + |
| +double MediaValues::zeroWidth() const |
| +{ |
| + if (m_mode == DynamicMode) |
| + return calculateZeroWidth(m_style.get()); |
| + return m_zeroWidth; |
| +} |
| + |
| bool MediaValues::threeDEnabled() const |
| { |
| if (m_mode == DynamicMode) |
| @@ -331,6 +404,13 @@ bool MediaValues::strictMode() const |
| return m_strictMode; |
| } |
| +float MediaValues::effectiveZoom() const |
| +{ |
| + if (m_mode == DynamicMode) |
| + return calculateEffectiveZoom(m_style.get()); |
| + return m_effectiveZoom; |
| +} |
| + |
| Document* MediaValues::document() const |
| { |
| if (!m_frame) |