<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[187110] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/187110">187110</a></dd>
<dt>Author</dt> <dd>hyatt@apple.com</dd>
<dt>Date</dt> <dd>2015-07-21 11:43:46 -0700 (Tue, 21 Jul 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Need a way to ignore text-zoom in a Web page.
https://bugs.webkit.org/show_bug.cgi?id=27092
rdar://problem/7037987

Reviewed by Simon Fraser.

Source/WebCore:

This patch adds a new property, -webkit-text-zoom, with values of normal and reset. The reset
keyword, just as with the zoom property, can be used to ignore any inherited zoom from the
document.

Added new test in fast/text.

* Modules/mediacontrols/mediaControlsApple.css:
(audio::-webkit-media-controls-panel):
(video::-webkit-media-controls-panel):
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::propertyValue):
* css/CSSParser.cpp:
(WebCore::CSSParser::parseValue):
* css/CSSPrimitiveValueMappings.h:
(WebCore::CSSPrimitiveValue::operator ContentDistributionType):
(WebCore::CSSPrimitiveValue::operator TextZoom):
(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
* css/CSSPropertyNames.in:
* css/StyleBuilderConverter.h:
(WebCore::StyleBuilderConverter::csstoLengthConversionDataWithTextZoomFactor):
* css/StyleBuilderCustom.h:
(WebCore::StyleBuilderCustom::applyValueWebkitTextSizeAdjust):
(WebCore::StyleBuilderCustom::applyValueWebkitTextZoom):
(WebCore::StyleBuilderCustom::applyTextOrBoxShadowValue):
* css/StyleResolver.cpp:
(WebCore::StyleResolver::checkForZoomChange):
* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::changeRequiresLayout):
* rendering/style/RenderStyle.h:
* rendering/style/RenderStyleConstants.h:
* rendering/style/StyleRareInheritedData.cpp:
(WebCore::StyleRareInheritedData::StyleRareInheritedData):
(WebCore::StyleRareInheritedData::operator==):
* rendering/style/StyleRareInheritedData.h:
* style/StyleFontSizeFunctions.cpp:
(WebCore::Style::computedFontSizeFromSpecifiedSize):
* testing/Internals.cpp:
(WebCore::Internals::setPageZoomFactor):
(WebCore::Internals::setTextZoomFactor):
(WebCore::Internals::setUseFixedLayout):
* testing/Internals.h:
* testing/Internals.idl:

LayoutTests:

* fast/text/text-zoom-reset-expected.html: Added.
* fast/text/text-zoom-reset.html: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesmediacontrolsmediaControlsApplecss">trunk/Source/WebCore/Modules/mediacontrols/mediaControlsApple.css</a></li>
<li><a href="#trunkSourceWebCorecssCSSComputedStyleDeclarationcpp">trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSParsercpp">trunk/Source/WebCore/css/CSSParser.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSPrimitiveValueMappingsh">trunk/Source/WebCore/css/CSSPrimitiveValueMappings.h</a></li>
<li><a href="#trunkSourceWebCorecssCSSPropertyNamesin">trunk/Source/WebCore/css/CSSPropertyNames.in</a></li>
<li><a href="#trunkSourceWebCorecssStyleBuilderConverterh">trunk/Source/WebCore/css/StyleBuilderConverter.h</a></li>
<li><a href="#trunkSourceWebCorecssStyleBuilderCustomh">trunk/Source/WebCore/css/StyleBuilderCustom.h</a></li>
<li><a href="#trunkSourceWebCorecssStyleResolvercpp">trunk/Source/WebCore/css/StyleResolver.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleRenderStylecpp">trunk/Source/WebCore/rendering/style/RenderStyle.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleRenderStyleh">trunk/Source/WebCore/rendering/style/RenderStyle.h</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleRenderStyleConstantsh">trunk/Source/WebCore/rendering/style/RenderStyleConstants.h</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleStyleRareInheritedDatacpp">trunk/Source/WebCore/rendering/style/StyleRareInheritedData.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleStyleRareInheritedDatah">trunk/Source/WebCore/rendering/style/StyleRareInheritedData.h</a></li>
<li><a href="#trunkSourceWebCorestyleStyleFontSizeFunctionscpp">trunk/Source/WebCore/style/StyleFontSizeFunctions.cpp</a></li>
<li><a href="#trunkSourceWebCoretestingInternalscpp">trunk/Source/WebCore/testing/Internals.cpp</a></li>
<li><a href="#trunkSourceWebCoretestingInternalsh">trunk/Source/WebCore/testing/Internals.h</a></li>
<li><a href="#trunkSourceWebCoretestingInternalsidl">trunk/Source/WebCore/testing/Internals.idl</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfasttexttextzoomresetexpectedhtml">trunk/LayoutTests/fast/text/text-zoom-reset-expected.html</a></li>
<li><a href="#trunkLayoutTestsfasttexttextzoomresethtml">trunk/LayoutTests/fast/text/text-zoom-reset.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (187109 => 187110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-07-21 18:40:07 UTC (rev 187109)
+++ trunk/LayoutTests/ChangeLog        2015-07-21 18:43:46 UTC (rev 187110)
</span><span class="lines">@@ -1,3 +1,14 @@
</span><ins>+2015-07-21  David Hyatt  &lt;hyatt@apple.com&gt;
+
+        Need a way to ignore text-zoom in a Web page.
+        https://bugs.webkit.org/show_bug.cgi?id=27092
+        rdar://problem/7037987
+
+        Reviewed by Simon Fraser.
+
+        * fast/text/text-zoom-reset-expected.html: Added.
+        * fast/text/text-zoom-reset.html: Added.
+
</ins><span class="cx"> 2015-07-20  Nan Wang  &lt;n_wang@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         AX: Selection change as a result of focusing an element may cause Safari to crash
</span></span></pre></div>
<a id="trunkLayoutTestsfasttexttextzoomresetexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/text/text-zoom-reset-expected.html (0 => 187110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/text/text-zoom-reset-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/text/text-zoom-reset-expected.html        2015-07-21 18:43:46 UTC (rev 187110)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html style=&quot;font-size:18px&quot;&gt;
+&lt;body&gt;
+&lt;p style=&quot;-webkit-text-zoom:reset&quot;&gt;This text should not zoom&lt;/p&gt;
+&lt;p style=&quot;-webkit-text-zoom:reset; font-size:24px&quot;&gt;This text should not zoom&lt;/p&gt;
+&lt;p style=&quot;-webkit-text-zoom:reset; font-size:inherit&quot;&gt;This text should not zoom&lt;/p&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfasttexttextzoomresethtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/text/text-zoom-reset.html (0 => 187110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/text/text-zoom-reset.html                                (rev 0)
+++ trunk/LayoutTests/fast/text/text-zoom-reset.html        2015-07-21 18:43:46 UTC (rev 187110)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html style=&quot;font-size:18px&quot;&gt;
+&lt;head&gt;
+&lt;script&gt;
+if (window.internals)
+    window.internals.setTextZoomFactor(2)
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p style=&quot;-webkit-text-zoom:reset&quot;&gt;This text should not zoom&lt;/p&gt;
+&lt;p style=&quot;-webkit-text-zoom:reset; font-size:24px&quot;&gt;This text should not zoom&lt;/p&gt;
+&lt;p style=&quot;-webkit-text-zoom:reset; font-size:inherit&quot;&gt;This text should not zoom&lt;/p&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (187109 => 187110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-07-21 18:40:07 UTC (rev 187109)
+++ trunk/Source/WebCore/ChangeLog        2015-07-21 18:43:46 UTC (rev 187110)
</span><span class="lines">@@ -1,3 +1,54 @@
</span><ins>+2015-07-21  David Hyatt  &lt;hyatt@apple.com&gt;
+
+        Need a way to ignore text-zoom in a Web page.
+        https://bugs.webkit.org/show_bug.cgi?id=27092
+        rdar://problem/7037987
+
+        Reviewed by Simon Fraser.
+
+        This patch adds a new property, -webkit-text-zoom, with values of normal and reset. The reset
+        keyword, just as with the zoom property, can be used to ignore any inherited zoom from the
+        document.
+
+        Added new test in fast/text.
+
+        * Modules/mediacontrols/mediaControlsApple.css:
+        (audio::-webkit-media-controls-panel):
+        (video::-webkit-media-controls-panel):
+        * css/CSSComputedStyleDeclaration.cpp:
+        (WebCore::ComputedStyleExtractor::propertyValue):
+        * css/CSSParser.cpp:
+        (WebCore::CSSParser::parseValue):
+        * css/CSSPrimitiveValueMappings.h:
+        (WebCore::CSSPrimitiveValue::operator ContentDistributionType):
+        (WebCore::CSSPrimitiveValue::operator TextZoom):
+        (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
+        * css/CSSPropertyNames.in:
+        * css/StyleBuilderConverter.h:
+        (WebCore::StyleBuilderConverter::csstoLengthConversionDataWithTextZoomFactor):
+        * css/StyleBuilderCustom.h:
+        (WebCore::StyleBuilderCustom::applyValueWebkitTextSizeAdjust):
+        (WebCore::StyleBuilderCustom::applyValueWebkitTextZoom):
+        (WebCore::StyleBuilderCustom::applyTextOrBoxShadowValue):
+        * css/StyleResolver.cpp:
+        (WebCore::StyleResolver::checkForZoomChange):
+        * rendering/style/RenderStyle.cpp:
+        (WebCore::RenderStyle::changeRequiresLayout):
+        * rendering/style/RenderStyle.h:
+        * rendering/style/RenderStyleConstants.h:
+        * rendering/style/StyleRareInheritedData.cpp:
+        (WebCore::StyleRareInheritedData::StyleRareInheritedData):
+        (WebCore::StyleRareInheritedData::operator==):
+        * rendering/style/StyleRareInheritedData.h:
+        * style/StyleFontSizeFunctions.cpp:
+        (WebCore::Style::computedFontSizeFromSpecifiedSize):
+        * testing/Internals.cpp:
+        (WebCore::Internals::setPageZoomFactor):
+        (WebCore::Internals::setTextZoomFactor):
+        (WebCore::Internals::setUseFixedLayout):
+        * testing/Internals.h:
+        * testing/Internals.idl:
+
</ins><span class="cx"> 2015-07-21  Per Arne Vollan  &lt;peavo@outlook.com&gt;
</span><span class="cx"> 
</span><span class="cx">         WinLauncher does not start on WinXP.
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediacontrolsmediaControlsApplecss"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediacontrols/mediaControlsApple.css (187109 => 187110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediacontrols/mediaControlsApple.css        2015-07-21 18:40:07 UTC (rev 187109)
+++ trunk/Source/WebCore/Modules/mediacontrols/mediaControlsApple.css        2015-07-21 18:43:46 UTC (rev 187110)
</span><span class="lines">@@ -87,6 +87,8 @@
</span><span class="cx">     direction: ltr;
</span><span class="cx"> 
</span><span class="cx">     transition: opacity 0.25s linear;
</span><ins>+    
+    -webkit-text-zoom: reset
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> video::-webkit-media-controls-panel {
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSComputedStyleDeclarationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp (187109 => 187110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp        2015-07-21 18:40:07 UTC (rev 187109)
+++ trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp        2015-07-21 18:43:46 UTC (rev 187110)
</span><span class="lines">@@ -395,6 +395,7 @@
</span><span class="cx"> #endif
</span><span class="cx">     CSSPropertyWebkitTextStrokeColor,
</span><span class="cx">     CSSPropertyWebkitTextStrokeWidth,
</span><ins>+    CSSPropertyWebkitTextZoom,
</ins><span class="cx">     CSSPropertyWebkitTransformStyle,
</span><span class="cx">     CSSPropertyWebkitTransitionDelay,
</span><span class="cx">     CSSPropertyWebkitTransitionDuration,
</span><span class="lines">@@ -3178,6 +3179,8 @@
</span><span class="cx">             return zoomAdjustedPixelValueForLength(style-&gt;svgStyle().x(), *style);
</span><span class="cx">         case CSSPropertyY:
</span><span class="cx">             return zoomAdjustedPixelValueForLength(style-&gt;svgStyle().y(), *style);
</span><ins>+        case CSSPropertyWebkitTextZoom:
+            return cssValuePool().createValue(style-&gt;textZoom());
</ins><span class="cx"> 
</span><span class="cx">         /* Unimplemented CSS 3 properties (including CSS3 shorthand properties) */
</span><span class="cx">         case CSSPropertyAnimation:
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSParser.cpp (187109 => 187110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSParser.cpp        2015-07-21 18:40:07 UTC (rev 187109)
+++ trunk/Source/WebCore/css/CSSParser.cpp        2015-07-21 18:43:46 UTC (rev 187110)
</span><span class="lines">@@ -2358,12 +2358,19 @@
</span><span class="cx">         // auto | alphabetic | under
</span><span class="cx">         return parseTextUnderlinePosition(important);
</span><span class="cx"> 
</span><del>-    case CSSPropertyZoom:          // normal | reset | document | &lt;number&gt; | &lt;percentage&gt; | inherit
</del><ins>+    case CSSPropertyZoom:
+        // normal | reset | document | &lt;number&gt; | &lt;percentage&gt; | inherit
</ins><span class="cx">         if (id == CSSValueNormal || id == CSSValueReset || id == CSSValueDocument)
</span><span class="cx">             validPrimitive = true;
</span><span class="cx">         else
</span><span class="cx">             validPrimitive = (!id &amp;&amp; validateUnit(valueWithCalculation, FNumber | FPercent | FNonNeg, CSSStrictMode));
</span><span class="cx">         break;
</span><ins>+    
+    case CSSPropertyWebkitTextZoom:
+        // normal | reset
+        if (id == CSSValueNormal || id == CSSValueReset)
+            validPrimitive = true;
+        break;
</ins><span class="cx"> 
</span><span class="cx">     case CSSPropertySrc: // Only used within @font-face and @-webkit-filter, so cannot use inherit | initial or be !important. This is a list of urls or local references.
</span><span class="cx">         return parseFontFaceSrc();
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSPrimitiveValueMappingsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSPrimitiveValueMappings.h (187109 => 187110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSPrimitiveValueMappings.h        2015-07-21 18:40:07 UTC (rev 187109)
+++ trunk/Source/WebCore/css/CSSPrimitiveValueMappings.h        2015-07-21 18:43:46 UTC (rev 187110)
</span><span class="lines">@@ -5254,6 +5254,40 @@
</span><span class="cx">     return ContentDistributionStretch;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+template&lt;&gt; inline CSSPrimitiveValue::operator TextZoom() const
+{
+    ASSERT(isValueID());
+
+    switch (m_value.valueID) {
+    case CSSValueNormal:
+        return TextZoomNormal;
+    case CSSValueReset:
+        return TextZoomReset;
+    default:
+        break;
+    }
+
+    ASSERT_NOT_REACHED();
+    return TextZoomNormal;
+}
+
+template&lt;&gt; inline CSSPrimitiveValue::CSSPrimitiveValue(TextZoom textZoom)
+    : CSSValue(PrimitiveClass)
+{
+    m_primitiveUnitType = CSS_VALUE_ID;
+    switch (textZoom) {
+    case TextZoomNormal:
+        m_value.valueID = CSSValueNormal;
+        return;
+    case TextZoomReset:
+        m_value.valueID = CSSValueReset;
+        return;
+    }
+
+    ASSERT_NOT_REACHED();
+    m_value.valueID = CSSValueNormal;
+}
+
</ins><span class="cx"> #if ENABLE(CSS_SCROLL_SNAP)
</span><span class="cx"> template&lt;&gt; inline CSSPrimitiveValue::CSSPrimitiveValue(ScrollSnapType e)
</span><span class="cx">     : CSSValue(PrimitiveClass)
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSPropertyNamesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSPropertyNames.in (187109 => 187110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSPropertyNames.in        2015-07-21 18:40:07 UTC (rev 187109)
+++ trunk/Source/WebCore/css/CSSPropertyNames.in        2015-07-21 18:43:46 UTC (rev 187110)
</span><span class="lines">@@ -117,6 +117,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> -webkit-writing-mode [Inherited, Custom=Value]
</span><span class="cx"> -epub-writing-mode = -webkit-writing-mode
</span><ins>+-webkit-text-zoom [Inherited, Custom=Value]
</ins><span class="cx"> zoom [Custom=All]
</span><span class="cx"> font-synthesis [Inherited, FontProperty, Converter=FontSynthesis]
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorecssStyleBuilderConverterh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleBuilderConverter.h (187109 => 187110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleBuilderConverter.h        2015-07-21 18:40:07 UTC (rev 187109)
+++ trunk/Source/WebCore/css/StyleBuilderConverter.h        2015-07-21 18:43:46 UTC (rev 187110)
</span><span class="lines">@@ -930,9 +930,10 @@
</span><span class="cx"> 
</span><span class="cx"> inline CSSToLengthConversionData StyleBuilderConverter::csstoLengthConversionDataWithTextZoomFactor(StyleResolver&amp; styleResolver)
</span><span class="cx"> {
</span><del>-    if (auto* frame = styleResolver.document().frame())
-        return styleResolver.state().cssToLengthConversionData().copyWithAdjustedZoom(styleResolver.style()-&gt;effectiveZoom() * frame-&gt;textZoomFactor());
-
</del><ins>+    if (auto* frame = styleResolver.document().frame()) {
+        float textZoomFactor = styleResolver.style()-&gt;textZoom() != TextZoomReset ? frame-&gt;textZoomFactor() : 1.0f;
+        return styleResolver.state().cssToLengthConversionData().copyWithAdjustedZoom(styleResolver.style()-&gt;effectiveZoom() * textZoomFactor);
+    }
</ins><span class="cx">     return styleResolver.state().cssToLengthConversionData();
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorecssStyleBuilderCustomh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleBuilderCustom.h (187109 => 187110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleBuilderCustom.h        2015-07-21 18:40:07 UTC (rev 187109)
+++ trunk/Source/WebCore/css/StyleBuilderCustom.h        2015-07-21 18:43:46 UTC (rev 187110)
</span><span class="lines">@@ -125,6 +125,7 @@
</span><span class="cx"> #if ENABLE(IOS_TEXT_AUTOSIZING)
</span><span class="cx">     static void applyValueWebkitTextSizeAdjust(StyleResolver&amp;, CSSValue&amp;);
</span><span class="cx"> #endif
</span><ins>+    static void applyValueWebkitTextZoom(StyleResolver&amp;, CSSValue&amp;);
</ins><span class="cx">     static void applyValueWebkitWritingMode(StyleResolver&amp;, CSSValue&amp;);
</span><span class="cx">     static void applyValueAlt(StyleResolver&amp;, CSSValue&amp;);
</span><span class="cx"> #if ENABLE(CSS_SCROLL_SNAP)
</span><span class="lines">@@ -731,6 +732,16 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+inline void StyleBuilderCustom::applyValueWebkitTextZoom(StyleResolver&amp; styleResolver, CSSValue&amp; value)
+{
+    auto&amp; primitiveValue = downcast&lt;CSSPrimitiveValue&gt;(value);
+    if (primitiveValue.getValueID() == CSSValueNormal)
+        styleResolver.style()-&gt;setTextZoom(TextZoomNormal);
+    else if (primitiveValue.getValueID() == CSSValueReset)
+        styleResolver.style()-&gt;setTextZoom(TextZoomReset);
+    styleResolver.state().setFontDirty(true);
+}
+
</ins><span class="cx"> template &lt;CSSPropertyID id&gt;
</span><span class="cx"> inline void StyleBuilderCustom::applyTextOrBoxShadowValue(StyleResolver&amp; styleResolver, CSSValue&amp; value)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebCorecssStyleResolvercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleResolver.cpp (187109 => 187110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleResolver.cpp        2015-07-21 18:40:07 UTC (rev 187109)
+++ trunk/Source/WebCore/css/StyleResolver.cpp        2015-07-21 18:43:46 UTC (rev 187110)
</span><span class="lines">@@ -1991,7 +1991,7 @@
</span><span class="cx">     if (!parentStyle)
</span><span class="cx">         return;
</span><span class="cx">     
</span><del>-    if (style-&gt;effectiveZoom() == parentStyle-&gt;effectiveZoom())
</del><ins>+    if (style-&gt;effectiveZoom() == parentStyle-&gt;effectiveZoom() &amp;&amp; style-&gt;textZoom() == parentStyle-&gt;textZoom())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     const FontDescription&amp; childFont = style-&gt;fontDescription();
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleRenderStylecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/RenderStyle.cpp (187109 => 187110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/RenderStyle.cpp        2015-07-21 18:40:07 UTC (rev 187109)
+++ trunk/Source/WebCore/rendering/style/RenderStyle.cpp        2015-07-21 18:43:46 UTC (rev 187110)
</span><span class="lines">@@ -563,6 +563,7 @@
</span><span class="cx">             || rareInheritedData-&gt;m_textIndentLine != other.rareInheritedData-&gt;m_textIndentLine
</span><span class="cx"> #endif
</span><span class="cx">             || rareInheritedData-&gt;m_effectiveZoom != other.rareInheritedData-&gt;m_effectiveZoom
</span><ins>+            || rareInheritedData-&gt;m_textZoom != other.rareInheritedData-&gt;m_textZoom
</ins><span class="cx"> #if ENABLE(IOS_TEXT_AUTOSIZING)
</span><span class="cx">             || rareInheritedData-&gt;textSizeAdjust != other.rareInheritedData-&gt;textSizeAdjust
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleRenderStyleh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/RenderStyle.h (187109 => 187110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/RenderStyle.h        2015-07-21 18:40:07 UTC (rev 187109)
+++ trunk/Source/WebCore/rendering/style/RenderStyle.h        2015-07-21 18:43:46 UTC (rev 187110)
</span><span class="lines">@@ -731,6 +731,8 @@
</span><span class="cx"> 
</span><span class="cx">     float zoom() const { return visual-&gt;m_zoom; }
</span><span class="cx">     float effectiveZoom() const { return rareInheritedData-&gt;m_effectiveZoom; }
</span><ins>+    
+    TextZoom textZoom() const { return static_cast&lt;TextZoom&gt;(rareInheritedData-&gt;m_textZoom); }
</ins><span class="cx"> 
</span><span class="cx">     TextDirection direction() const { return static_cast&lt;TextDirection&gt;(inherited_flags._direction); }
</span><span class="cx">     bool isLeftToRightDirection() const { return direction() == LTR; }
</span><span class="lines">@@ -1370,7 +1372,8 @@
</span><span class="cx">     bool setZoom(float);
</span><span class="cx">     void setZoomWithoutReturnValue(float f) { setZoom(f); }
</span><span class="cx">     bool setEffectiveZoom(float);
</span><del>-
</del><ins>+    void setTextZoom(TextZoom v) { SET_VAR(rareInheritedData, m_textZoom, v); }
+    
</ins><span class="cx"> #if ENABLE(CSS_IMAGE_ORIENTATION)
</span><span class="cx">     void setImageOrientation(ImageOrientationEnum v) { SET_VAR(rareInheritedData, m_imageOrientation, static_cast&lt;int&gt;(v)); }
</span><span class="cx"> #endif
</span><span class="lines">@@ -1920,6 +1923,7 @@
</span><span class="cx">     static TextDecorationSkip initialTextDecorationSkip() { return TextDecorationSkipAuto; }
</span><span class="cx">     static TextUnderlinePosition initialTextUnderlinePosition() { return TextUnderlinePositionAuto; }
</span><span class="cx">     static float initialZoom() { return 1.0f; }
</span><ins>+    static TextZoom initialTextZoom() { return TextZoomNormal; }
</ins><span class="cx">     static int initialOutlineOffset() { return 0; }
</span><span class="cx">     static float initialOpacity() { return 1.0f; }
</span><span class="cx">     static EBoxAlignment initialBoxAlign() { return BSTRETCH; }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleRenderStyleConstantsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/RenderStyleConstants.h (187109 => 187110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/RenderStyleConstants.h        2015-07-21 18:40:07 UTC (rev 187109)
+++ trunk/Source/WebCore/rendering/style/RenderStyleConstants.h        2015-07-21 18:43:46 UTC (rev 187110)
</span><span class="lines">@@ -465,6 +465,10 @@
</span><span class="cx">     TextUnderlinePositionAuto = 0x1, TextUnderlinePositionAlphabetic = 0x2, TextUnderlinePositionUnder = 0x4
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+enum TextZoom {
+    TextZoomNormal, TextZoomReset
+};
+
</ins><span class="cx"> enum EPageBreak {
</span><span class="cx">     PBAUTO, PBALWAYS, PBAVOID
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleStyleRareInheritedDatacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/StyleRareInheritedData.cpp (187109 => 187110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/StyleRareInheritedData.cpp        2015-07-21 18:40:07 UTC (rev 187109)
+++ trunk/Source/WebCore/rendering/style/StyleRareInheritedData.cpp        2015-07-21 18:43:46 UTC (rev 187110)
</span><span class="lines">@@ -113,6 +113,7 @@
</span><span class="cx">     , m_textDecorationSkip(RenderStyle::initialTextDecorationSkip())
</span><span class="cx">     , m_textUnderlinePosition(RenderStyle::initialTextUnderlinePosition())
</span><span class="cx">     , m_rubyPosition(RenderStyle::initialRubyPosition())
</span><ins>+    , m_textZoom(RenderStyle::initialTextZoom())
</ins><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx">     , touchCalloutEnabled(RenderStyle::initialTouchCalloutEnabled())
</span><span class="cx"> #endif
</span><span class="lines">@@ -194,6 +195,7 @@
</span><span class="cx">     , m_textDecorationSkip(o.m_textDecorationSkip)
</span><span class="cx">     , m_textUnderlinePosition(o.m_textUnderlinePosition)
</span><span class="cx">     , m_rubyPosition(o.m_rubyPosition)
</span><ins>+    , m_textZoom(o.m_textZoom)
</ins><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx">     , touchCalloutEnabled(o.touchCalloutEnabled)
</span><span class="cx"> #endif
</span><span class="lines">@@ -321,6 +323,7 @@
</span><span class="cx">         &amp;&amp; m_textDecorationSkip == o.m_textDecorationSkip
</span><span class="cx">         &amp;&amp; m_textUnderlinePosition == o.m_textUnderlinePosition
</span><span class="cx">         &amp;&amp; m_rubyPosition == o.m_rubyPosition
</span><ins>+        &amp;&amp; m_textZoom == o.m_textZoom
</ins><span class="cx">         &amp;&amp; m_lineSnap == o.m_lineSnap
</span><span class="cx">         &amp;&amp; m_lineAlign == o.m_lineAlign
</span><span class="cx"> #if ENABLE(CSS_TRAILING_WORD)
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleStyleRareInheritedDatah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/StyleRareInheritedData.h (187109 => 187110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/StyleRareInheritedData.h        2015-07-21 18:40:07 UTC (rev 187109)
+++ trunk/Source/WebCore/rendering/style/StyleRareInheritedData.h        2015-07-21 18:43:46 UTC (rev 187110)
</span><span class="lines">@@ -124,6 +124,7 @@
</span><span class="cx">     unsigned m_textDecorationSkip : 5; // TextDecorationSkip
</span><span class="cx">     unsigned m_textUnderlinePosition : 3; // TextUnderlinePosition
</span><span class="cx">     unsigned m_rubyPosition : 2; // RubyPosition
</span><ins>+    unsigned m_textZoom: 1; // TextZoom
</ins><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx">     unsigned touchCalloutEnabled : 1;
</span></span></pre></div>
<a id="trunkSourceWebCorestyleStyleFontSizeFunctionscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/style/StyleFontSizeFunctions.cpp (187109 => 187110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/style/StyleFontSizeFunctions.cpp        2015-07-21 18:40:07 UTC (rev 187109)
+++ trunk/Source/WebCore/style/StyleFontSizeFunctions.cpp        2015-07-21 18:43:46 UTC (rev 187110)
</span><span class="lines">@@ -95,7 +95,8 @@
</span><span class="cx">     float zoomFactor = 1.0f;
</span><span class="cx">     if (!useSVGZoomRules) {
</span><span class="cx">         zoomFactor = style-&gt;effectiveZoom();
</span><del>-        if (Frame* frame = document.frame())
</del><ins>+        Frame* frame = document.frame();
+        if (frame &amp;&amp; style-&gt;textZoom() != TextZoomReset)
</ins><span class="cx">             zoomFactor *= frame-&gt;textZoomFactor();
</span><span class="cx">     }
</span><span class="cx">     return computedFontSizeFromSpecifiedSize(specifiedSize, isAbsoluteSize, zoomFactor, useSVGZoomRules ? DoNotApplyMinimumFontSize : UseSmartMinimumForFontFize, document.settings());
</span></span></pre></div>
<a id="trunkSourceWebCoretestingInternalscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/Internals.cpp (187109 => 187110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/Internals.cpp        2015-07-21 18:40:07 UTC (rev 187109)
+++ trunk/Source/WebCore/testing/Internals.cpp        2015-07-21 18:43:46 UTC (rev 187110)
</span><span class="lines">@@ -2012,6 +2012,17 @@
</span><span class="cx">     frame-&gt;setPageZoomFactor(zoomFactor);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void Internals::setTextZoomFactor(float zoomFactor, ExceptionCode&amp; ec)
+{
+    Document* document = contextDocument();
+    if (!document || !document-&gt;frame()) {
+        ec = INVALID_ACCESS_ERR;
+        return;
+    }
+    Frame* frame = document-&gt;frame();
+    frame-&gt;setTextZoomFactor(zoomFactor);
+}
+
</ins><span class="cx"> void Internals::setUseFixedLayout(bool useFixedLayout, ExceptionCode&amp; ec)
</span><span class="cx"> {
</span><span class="cx">     Document* document = contextDocument();
</span></span></pre></div>
<a id="trunkSourceWebCoretestingInternalsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/Internals.h (187109 => 187110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/Internals.h        2015-07-21 18:40:07 UTC (rev 187109)
+++ trunk/Source/WebCore/testing/Internals.h        2015-07-21 18:43:46 UTC (rev 187110)
</span><span class="lines">@@ -279,6 +279,7 @@
</span><span class="cx"> 
</span><span class="cx">     void setPageScaleFactor(float scaleFactor, int x, int y, ExceptionCode&amp;);
</span><span class="cx">     void setPageZoomFactor(float zoomFactor, ExceptionCode&amp;);
</span><ins>+    void setTextZoomFactor(float zoomFactor, ExceptionCode&amp;);
</ins><span class="cx"> 
</span><span class="cx">     void setUseFixedLayout(bool useFixedLayout, ExceptionCode&amp;);
</span><span class="cx">     void setFixedLayoutSize(int width, int height, ExceptionCode&amp;);
</span></span></pre></div>
<a id="trunkSourceWebCoretestingInternalsidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/Internals.idl (187109 => 187110)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/Internals.idl        2015-07-21 18:40:07 UTC (rev 187109)
+++ trunk/Source/WebCore/testing/Internals.idl        2015-07-21 18:43:46 UTC (rev 187110)
</span><span class="lines">@@ -253,6 +253,7 @@
</span><span class="cx"> 
</span><span class="cx">     [RaisesException] void setPageScaleFactor(unrestricted float scaleFactor, long x, long y);
</span><span class="cx">     [RaisesException] void setPageZoomFactor(unrestricted float zoomFactor);
</span><ins>+    [RaisesException] void setTextZoomFactor(unrestricted float zoomFactor);
</ins><span class="cx"> 
</span><span class="cx">     [RaisesException] void setUseFixedLayout(boolean useFixedLayout);
</span><span class="cx">     [RaisesException] void setFixedLayoutSize(long width, long height);
</span></span></pre>
</div>
</div>

</body>
</html>