Ignore:
Timestamp:
Sep 10, 2013, 7:39:05 PM (12 years ago)
Author:
[email protected]
Message:

[iOS] Upstream text autosizing
https://bugs.webkit.org/show_bug.cgi?id=121111

Reviewed by Andy Estes and Sam Weinig.

Source/WebCore:

Tests: platform/iphone-simulator/text-autosizing/anonymous-block.html

platform/iphone-simulator/text-autosizing/contenteditable.html
platform/iphone-simulator/text-autosizing/first-letter.html
platform/iphone-simulator/text-autosizing/font-family-case-insensitive.html
platform/iphone-simulator/text-autosizing/lists.html
platform/iphone-simulator/text-autosizing/overflow.html
platform/iphone-simulator/text-autosizing/percent-adjust-length-line-height.html
platform/iphone-simulator/text-autosizing/percent-adjust-number-line-height.html
platform/iphone-simulator/text-autosizing/percent-adjust-percent-line-height.html

  • WebCore.exp.in:
  • WebCore.xcodeproj/project.pbxproj:
  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::propertyValue):

  • css/CSSParser.cpp:

(WebCore::isValidKeywordPropertyAndValue):
(WebCore::CSSParser::parseValue):

  • css/CSSProperty.cpp:

(WebCore::CSSProperty::isInheritedProperty):

  • css/CSSPropertyNames.in: Add property -webkit-text-size-adjust.
  • css/DeprecatedStyleBuilder.cpp:

(WebCore::ApplyPropertyLineHeightForIOSTextAutosizing::applyValue): Added.
(WebCore::ApplyPropertyLineHeightForIOSTextAutosizing::applyInitialValue): Added.
(WebCore::ApplyPropertyLineHeightForIOSTextAutosizing::applyInheritValue): Added.
(WebCore::ApplyPropertyLineHeightForIOSTextAutosizing::createHandler): Added.
(WebCore::DeprecatedStyleBuilder::DeprecatedStyleBuilder):

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::updateFont):
(WebCore::StyleResolver::applyProperties): Add COMPILE_ASSERT to ensure that
all properties that affect font size, including -webkit-text-size-adjust, are
resolved before properties that depend on them; see <rdar://problem/13522835>.
(WebCore::StyleResolver::applyProperty):
(WebCore::StyleResolver::checkForTextSizeAdjust): Added.

  • css/StyleResolver.h:
  • dom/Document.cpp:

(WebCore::TextAutoSizingTraits::constructDeletedValue): Added.
(WebCore::TextAutoSizingTraits::isDeletedValue): Added.
(WebCore::Document::detach):
(WebCore::Document::addAutoSizingNode): Added.
(WebCore::Document::validateAutoSizingNodes): Added.
(WebCore::Document::resetAutoSizingNodes): Added.

  • dom/Document.h:
  • editing/EditingStyle.cpp:
  • page/Frame.h: Add declarations for setTextAutosizingWidth(), textAutosizingWidth().
  • page/FrameView.cpp:

(WebCore::FrameView::layout):

  • page/Settings.in: Generate setter and getter for setting minimumZoomFontSize.
  • platform/graphics/Font.h:

(WebCore::Font::equalForTextAutoSizing): Added.

  • platform/graphics/FontDescription.cpp:

(WebCore::FontDescription::familiesEqualForTextAutoSizing): Added.

  • platform/graphics/FontDescription.h:

(WebCore::FontDescription::equalForTextAutoSizing): Added.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::RenderBlock):
(WebCore::isVisibleRenderText): Added.
(WebCore::resizeTextPermitted): Added.
(WebCore::RenderBlock::immediateLineCount): Added.
(WebCore::isNonBlocksOrNonFixedHeightListItems): Added.
(WebCore::oneLineTextMultiplier): Added.
(WebCore::textMultiplier): Added.
(WebCore::RenderBlock::adjustComputedFontSizes): Added.

  • rendering/RenderBlock.h:

(WebCore::RenderBlock::resetComputedFontSize): Added.

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::traverseNext): Added.
(WebCore::includeNonFixedHeight): Added.
(WebCore::RenderObject::adjustComputedFontSizesOnBlocks): Added.
(WebCore::RenderObject::resetTextAutosizing): Added.

  • rendering/RenderObject.h:
  • rendering/RenderText.cpp:

(WebCore::RenderText::RenderText):

  • rendering/RenderText.h:

(WebCore::RenderText::candidateComputedTextSize): Added.
(WebCore::RenderText::setCandidateComputedTextSize): Added.

  • rendering/style/RenderStyle.cpp:

(WebCore::computeFontHash):
(WebCore::RenderStyle::hashForTextAutosizing): Added.
(WebCore::RenderStyle::equalForTextAutosizing): Added.
(WebCore::RenderStyle::changeRequiresLayout):
(WebCore::RenderStyle::specifiedLineHeight): Added; iOS-specific variant.
We should reconcile this getter with the getter of the same name that is
compiled when building with IOS_TEXT_AUTOSIZING disabled.
(WebCore::RenderStyle::setSpecifiedLineHeight): Added.

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::initialSpecifiedLineHeight): Added.
(WebCore::RenderStyle::initialTextSizeAdjust): Added.
(WebCore::RenderStyle::setTextSizeAdjust): Added.
(WebCore::RenderStyle::textSizeAdjust): Added.

  • rendering/style/StyleInheritedData.cpp:

(WebCore::StyleInheritedData::StyleInheritedData):
(WebCore::StyleInheritedData::operator==):

  • rendering/style/StyleInheritedData.h:
  • rendering/style/StyleRareInheritedData.cpp:

(WebCore::StyleRareInheritedData::StyleRareInheritedData):
(WebCore::StyleRareInheritedData::operator==):

  • rendering/style/StyleRareInheritedData.h:
  • rendering/style/TextSizeAdjustment.h: Added.

(TextSizeAdjustment::TextSizeAdjustment):
(TextSizeAdjustment::percentage):
(TextSizeAdjustment::multiplier):
(TextSizeAdjustment::isAuto):
(TextSizeAdjustment::isNone):
(TextSizeAdjustment::isPercentage):
(TextSizeAdjustment::operator == ):
(TextSizeAdjustment::operator != ):

Source/WebKit/mac:

  • WebView/WebFrame.mm:

(-[WebFrame resetTextAutosizingBeforeLayout]): Added.
(-[WebFrame _setVisibleSize:]): Added.
(-[WebFrame _setTextAutosizingWidth:]): Added.

  • WebView/WebFramePrivate.h:
  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
(-[WebPreferences _setMinimumZoomFontSize:]): Added.
(-[WebPreferences _minimumZoomFontSize]): Added.

Source/WTF:

Define iOS text autosizing to be enabled on iOS unless otherwise defined.

  • wtf/FeatureDefines.h:

Tools:

Implement infrastructure to test the iOS text autosizing code.

  • DumpRenderTree/TestRunner.cpp:

(setTextAutosizingEnabledCallback): Added.
(TestRunner::staticFunctions):

  • DumpRenderTree/TestRunner.h:
  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetDefaultsToConsistentValues):

  • DumpRenderTree/mac/TestRunnerMac.mm:

(TestRunner::setTextAutosizingEnabled): Added.

LayoutTests:

Add tests to ensure we don't regress iOS text autosizing.

  • platform/iphone-simulator/text-autosizing/anonymous-block-expected.txt: Added.
  • platform/iphone-simulator/text-autosizing/anonymous-block.html: Added.
  • platform/iphone-simulator/text-autosizing/contenteditable-expected.txt: Added.
  • platform/iphone-simulator/text-autosizing/contenteditable.html: Added.
  • platform/iphone-simulator/text-autosizing/first-letter-expected.txt: Added.
  • platform/iphone-simulator/text-autosizing/first-letter.html: Added.
  • platform/iphone-simulator/text-autosizing/font-family-case-insensitive-expected.txt: Added.
  • platform/iphone-simulator/text-autosizing/font-family-case-insensitive.html: Added.
  • platform/iphone-simulator/text-autosizing/lists-expected.txt: Added.
  • platform/iphone-simulator/text-autosizing/lists.html: Added.
  • platform/iphone-simulator/text-autosizing/overflow-expected.txt: Added.
  • platform/iphone-simulator/text-autosizing/overflow.html: Added.
  • platform/iphone-simulator/text-autosizing/percent-adjust-length-line-height-expected.txt: Added.
  • platform/iphone-simulator/text-autosizing/percent-adjust-length-line-height.html: Added.
  • platform/iphone-simulator/text-autosizing/percent-adjust-number-line-height-expected.txt: Added.
  • platform/iphone-simulator/text-autosizing/percent-adjust-number-line-height.html: Added.
  • platform/iphone-simulator/text-autosizing/percent-adjust-percent-line-height-expected.txt: Added.
  • platform/iphone-simulator/text-autosizing/percent-adjust-percent-line-height.html: Added.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/editing/EditingStyle.cpp

    r154938 r155496  
    7777    CSSPropertyWebkitTextDecorationsInEffect,
    7878    CSSPropertyWebkitTextFillColor,
     79#if ENABLE(IOS_TEXT_AUTOSIZING)
     80    CSSPropertyWebkitTextSizeAdjust,
     81#endif
    7982    CSSPropertyWebkitTextStrokeColor,
    8083    CSSPropertyWebkitTextStrokeWidth,
Note: See TracChangeset for help on using the changeset viewer.