Title: [184037] trunk
Revision
184037
Author
[email protected]
Date
2015-05-08 23:33:02 -0700 (Fri, 08 May 2015)

Log Message

Remove convenience constructors for TextRun
https://bugs.webkit.org/show_bug.cgi?id=144752

Source/WebCore:

These convenience constructors are unnecessary. Moving the code that makes the StringView
back to the call site will also help us make things more elegant in future refactoring.

Reviewed by Darin Adler.

No new tests because there is no behavior change.

* css/CSSPrimitiveValue.cpp:
(WebCore::CSSPrimitiveValue::formatNumberForCustomCSSText): Remove ambiguous call.
* platform/graphics/StringTruncator.cpp:
(WebCore::stringWidth):
* platform/graphics/TextRun.h:
(WebCore::TextRun::TextRun):
* platform/mac/DragImageMac.mm:
(WebCore::widthWithFont):
(WebCore::drawAtPoint):
* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::canUseFor):
* rendering/SimpleLineLayoutTextFragmentIterator.cpp:
(WebCore::SimpleLineLayout::TextFragmentIterator::Style::Style):
(WebCore::SimpleLineLayout::TextFragmentIterator::runWidth):
* rendering/TextPainter.cpp:
(WebCore::TextPainter::paintText):

Source/WebKit/mac:

These convenience constructors are unnecessary. Moving the code that makes the StringView
back to the call site will also help us make things more elegant in future refactoring.

Reviewed by Darin Adler.

No new tests because there is no behavior change.

* Misc/WebKitNSStringExtras.mm:
(-[NSString _web_drawAtPoint:font:textColor:allowingFontSmoothing:]):
(-[NSString _web_widthWithFont:]):

Source/WTF:

Reviewed by Anders Carlsson.

No reason why StringView shouldn't have a StringImpl* constructor.

Test: StringView8Bit in TestWebKitAPI

* wtf/text/StringView.h: Add the constructor.

Tools:

Reviewed by Anders Carlsson.

Test the StringView which takes a StringImpl*.

* TestWebKitAPI/Tests/WTF/StringView.cpp:
(StringView8Bit): Testing is8Bit() on StringView

Modified Paths

Diff

Modified: trunk/Source/WTF/ChangeLog (184036 => 184037)


--- trunk/Source/WTF/ChangeLog	2015-05-09 05:35:02 UTC (rev 184036)
+++ trunk/Source/WTF/ChangeLog	2015-05-09 06:33:02 UTC (rev 184037)
@@ -1,3 +1,16 @@
+2015-05-08  Myles C. Maxfield  <[email protected]>
+
+        Remove convenience constructors for TextRun
+        https://bugs.webkit.org/show_bug.cgi?id=144752
+
+        Reviewed by Anders Carlsson.
+
+        No reason why StringView shouldn't have a StringImpl* constructor.
+
+        Test: StringView8Bit in TestWebKitAPI
+
+        * wtf/text/StringView.h: Add the constructor.
+
 2015-05-08  Commit Queue  <[email protected]>
 
         Unreviewed, rolling out r183996.

Modified: trunk/Source/WTF/wtf/text/StringView.h (184036 => 184037)


--- trunk/Source/WTF/wtf/text/StringView.h	2015-05-09 05:35:02 UTC (rev 184036)
+++ trunk/Source/WTF/wtf/text/StringView.h	2015-05-09 06:33:02 UTC (rev 184037)
@@ -58,6 +58,7 @@
 
     StringView(const String&);
     StringView(const StringImpl&);
+    StringView(const StringImpl*);
     StringView(const LChar*, unsigned length);
     StringView(const UChar*, unsigned length);
 
@@ -271,6 +272,18 @@
         initialize(string.characters16(), string.length());
 }
 
+inline StringView::StringView(const StringImpl* string)
+{
+    if (!string)
+        return;
+
+    setUnderlyingString(string);
+    if (string->is8Bit())
+        initialize(string->characters8(), string->length());
+    else
+        initialize(string->characters16(), string->length());
+}
+
 inline StringView::StringView(const String& string)
 {
     setUnderlyingString(string.impl());

Modified: trunk/Source/WebCore/ChangeLog (184036 => 184037)


--- trunk/Source/WebCore/ChangeLog	2015-05-09 05:35:02 UTC (rev 184036)
+++ trunk/Source/WebCore/ChangeLog	2015-05-09 06:33:02 UTC (rev 184037)
@@ -1,3 +1,32 @@
+2015-05-08  Myles C. Maxfield  <[email protected]>
+
+        Remove convenience constructors for TextRun
+        https://bugs.webkit.org/show_bug.cgi?id=144752
+
+        These convenience constructors are unnecessary. Moving the code that makes the StringView
+        back to the call site will also help us make things more elegant in future refactoring.
+
+        Reviewed by Darin Adler.
+
+        No new tests because there is no behavior change.
+
+        * css/CSSPrimitiveValue.cpp:
+        (WebCore::CSSPrimitiveValue::formatNumberForCustomCSSText): Remove ambiguous call.
+        * platform/graphics/StringTruncator.cpp:
+        (WebCore::stringWidth):
+        * platform/graphics/TextRun.h:
+        (WebCore::TextRun::TextRun):
+        * platform/mac/DragImageMac.mm:
+        (WebCore::widthWithFont):
+        (WebCore::drawAtPoint):
+        * rendering/SimpleLineLayout.cpp:
+        (WebCore::SimpleLineLayout::canUseFor):
+        * rendering/SimpleLineLayoutTextFragmentIterator.cpp:
+        (WebCore::SimpleLineLayout::TextFragmentIterator::Style::Style):
+        (WebCore::SimpleLineLayout::TextFragmentIterator::runWidth):
+        * rendering/TextPainter.cpp:
+        (WebCore::TextPainter::paintText):
+
 2015-05-08  Sam Weinig  <[email protected]>
 
         Element Traversal is not just Elements anymore

Modified: trunk/Source/WebCore/css/CSSPrimitiveValue.cpp (184036 => 184037)


--- trunk/Source/WebCore/css/CSSPrimitiveValue.cpp	2015-05-09 05:35:02 UTC (rev 184036)
+++ trunk/Source/WebCore/css/CSSPrimitiveValue.cpp	2015-05-09 06:33:02 UTC (rev 184037)
@@ -1051,7 +1051,7 @@
         StringBuilder result;
         result.reserveCapacity(6 + m_value.string->length());
         result.appendLiteral("attr(");
-        result.append(m_value.string);
+        result.append(String(m_value.string));
         result.append(')');
 
         return result.toString();

Modified: trunk/Source/WebCore/platform/graphics/StringTruncator.cpp (184036 => 184037)


--- trunk/Source/WebCore/platform/graphics/StringTruncator.cpp	2015-05-09 05:35:02 UTC (rev 184036)
+++ trunk/Source/WebCore/platform/graphics/StringTruncator.cpp	2015-05-09 06:33:02 UTC (rev 184037)
@@ -194,7 +194,7 @@
 
 static float stringWidth(const FontCascade& renderer, const UChar* characters, unsigned length, bool disableRoundingHacks)
 {
-    TextRun run(characters, length);
+    TextRun run(StringView(characters, length));
     if (disableRoundingHacks)
         run.disableRoundingHacks();
     return renderer.width(run);

Modified: trunk/Source/WebCore/platform/graphics/TextRun.h (184036 => 184037)


--- trunk/Source/WebCore/platform/graphics/TextRun.h	2015-05-09 05:35:02 UTC (rev 184036)
+++ trunk/Source/WebCore/platform/graphics/TextRun.h	2015-05-09 06:33:02 UTC (rev 184037)
@@ -52,9 +52,9 @@
 
     typedef unsigned RoundingHacks;
 
-    explicit TextRun(StringView s, float xpos = 0, float expansion = 0, ExpansionBehavior expansionBehavior = AllowTrailingExpansion | ForbidLeadingExpansion, TextDirection direction = LTR, bool directionalOverride = false, bool characterScanForCodePath = true, RoundingHacks roundingHacks = RunRounding | WordRounding)
-        : m_text(s)
-        , m_charactersLength(s.length())
+    explicit TextRun(StringView text, float xpos = 0, float expansion = 0, ExpansionBehavior expansionBehavior = AllowTrailingExpansion | ForbidLeadingExpansion, TextDirection direction = LTR, bool directionalOverride = false, bool characterScanForCodePath = true, RoundingHacks roundingHacks = RunRounding | WordRounding)
+        : m_text(text)
+        , m_charactersLength(text.length())
         , m_tabSize(0)
         , m_xpos(xpos)
         , m_horizontalGlyphStretch(1)
@@ -70,21 +70,6 @@
     {
     }
 
-    explicit TextRun(const String& s)
-        : TextRun(StringView(s))
-    {
-    }
-
-    TextRun(const LChar* c, unsigned len)
-        : TextRun(StringView(c, len))
-    {
-    }
-
-    TextRun(const UChar* c, unsigned len)
-        : TextRun(StringView(c, len))
-    {
-    }
-
     TextRun subRun(unsigned startOffset, unsigned length) const
     {
         ASSERT_WITH_SECURITY_IMPLICATION(startOffset < m_text.length());

Modified: trunk/Source/WebCore/platform/mac/DragImageMac.mm (184036 => 184037)


--- trunk/Source/WebCore/platform/mac/DragImageMac.mm	2015-05-09 05:35:02 UTC (rev 184036)
+++ trunk/Source/WebCore/platform/mac/DragImageMac.mm	2015-05-09 06:33:02 UTC (rev 184037)
@@ -192,7 +192,7 @@
     
     if (canUseFastRenderer(buffer.data(), length)) {
         FontCascade webCoreFont(FontPlatformData(reinterpret_cast<CTFontRef>(font), [font pointSize]));
-        TextRun run(buffer.data(), length);
+        TextRun run(StringView(buffer.data(), length));
         run.disableRoundingHacks();
         return webCoreFont.width(run);
     }
@@ -224,7 +224,7 @@
             CGContextScaleCTM(cgContext, 1, -1);
             
         FontCascade webCoreFont(FontPlatformData(reinterpret_cast<CTFontRef>(font), [font pointSize]), Antialiased);
-        TextRun run(buffer.data(), length);
+        TextRun run(StringView(buffer.data(), length));
         run.disableRoundingHacks();
 
         CGFloat red;

Modified: trunk/Source/WebCore/platform/mac/ScrollAnimatorMac.h (184036 => 184037)


--- trunk/Source/WebCore/platform/mac/ScrollAnimatorMac.h	2015-05-09 05:35:02 UTC (rev 184036)
+++ trunk/Source/WebCore/platform/mac/ScrollAnimatorMac.h	2015-05-09 06:33:02 UTC (rev 184037)
@@ -1,3 +1,4 @@
+
 /*
  * Copyright (C) 2010, 2011, 2014-2015 Apple Inc. All rights reserved.
  *

Modified: trunk/Source/WebCore/rendering/SimpleLineLayoutTextFragmentIterator.cpp (184036 => 184037)


--- trunk/Source/WebCore/rendering/SimpleLineLayoutTextFragmentIterator.cpp	2015-05-09 05:35:02 UTC (rev 184036)
+++ trunk/Source/WebCore/rendering/SimpleLineLayoutTextFragmentIterator.cpp	2015-05-09 06:33:02 UTC (rev 184037)
@@ -40,7 +40,7 @@
     , preserveNewline(style.preserveNewline())
     , wrapLines(style.autoWrap())
     , breakWordOnOverflow(style.overflowWrap() == BreakOverflowWrap && (wrapLines || preserveNewline))
-    , spaceWidth(font.width(TextRun(&space, 1)))
+    , spaceWidth(font.width(TextRun(StringView(&space, 1))))
     , tabWidth(collapseWhitespace ? 0 : style.tabSize())
     , locale(style.locale())
 {
@@ -197,7 +197,8 @@
     bool measureWithEndSpace = m_style.collapseWhitespace && segmentTo < segment.text.length() && segment.text[segmentTo] == ' ';
     if (measureWithEndSpace)
         ++segmentTo;
-    TextRun run(segment.text.characters<CharacterType>() + segmentFrom, segmentTo - segmentFrom);
+    auto string = segment.text.substring(segmentFrom, segmentTo - segmentFrom);
+    TextRun run(string);
     run.setXPos(xPosition);
     run.setTabSize(!!m_style.tabWidth, m_style.tabWidth);
     float width = m_style.font.width(run);

Modified: trunk/Source/WebCore/rendering/TextPainter.cpp (184036 => 184037)


--- trunk/Source/WebCore/rendering/TextPainter.cpp	2015-05-09 05:35:02 UTC (rev 184036)
+++ trunk/Source/WebCore/rendering/TextPainter.cpp	2015-05-09 06:33:02 UTC (rev 184037)
@@ -170,7 +170,7 @@
         if (!m_emphasisMark.isEmpty()) {
             updateGraphicsContext(m_context, m_textPaintStyle, UseEmphasisMarkColor);
 
-            static NeverDestroyed<TextRun> objectReplacementCharacterTextRun(&objectReplacementCharacter, 1);
+            static NeverDestroyed<TextRun> objectReplacementCharacterTextRun(StringView(&objectReplacementCharacter, 1));
             TextRun& emphasisMarkTextRun = m_combinedText ? objectReplacementCharacterTextRun.get() : m_textRun;
             FloatPoint emphasisMarkTextOrigin = m_combinedText ? FloatPoint(boxOrigin.x() + m_boxRect.width() / 2, boxOrigin.y() + m_font.fontMetrics().ascent()) : m_textOrigin;
             if (m_combinedText)
@@ -196,7 +196,7 @@
         if (!m_emphasisMark.isEmpty()) {
             updateGraphicsContext(m_context, m_selectionPaintStyle, UseEmphasisMarkColor);
 
-            DEPRECATED_DEFINE_STATIC_LOCAL(TextRun, objectReplacementCharacterTextRun, (&objectReplacementCharacter, 1));
+            DEPRECATED_DEFINE_STATIC_LOCAL(TextRun, objectReplacementCharacterTextRun, (StringView(&objectReplacementCharacter, 1)));
             TextRun& emphasisMarkTextRun = m_combinedText ? objectReplacementCharacterTextRun : m_textRun;
             FloatPoint emphasisMarkTextOrigin = m_combinedText ? FloatPoint(boxOrigin.x() + m_boxRect.width() / 2, boxOrigin.y() + m_font.fontMetrics().ascent()) : m_textOrigin;
             if (m_combinedText)

Modified: trunk/Source/WebKit/mac/ChangeLog (184036 => 184037)


--- trunk/Source/WebKit/mac/ChangeLog	2015-05-09 05:35:02 UTC (rev 184036)
+++ trunk/Source/WebKit/mac/ChangeLog	2015-05-09 06:33:02 UTC (rev 184037)
@@ -1,3 +1,19 @@
+2015-05-08  Myles C. Maxfield  <[email protected]>
+
+        Remove convenience constructors for TextRun
+        https://bugs.webkit.org/show_bug.cgi?id=144752
+
+        These convenience constructors are unnecessary. Moving the code that makes the StringView
+        back to the call site will also help us make things more elegant in future refactoring.
+
+        Reviewed by Darin Adler.
+
+        No new tests because there is no behavior change.
+
+        * Misc/WebKitNSStringExtras.mm:
+        (-[NSString _web_drawAtPoint:font:textColor:allowingFontSmoothing:]):
+        (-[NSString _web_widthWithFont:]):
+
 2015-05-08  Commit Queue  <[email protected]>
 
         Unreviewed, rolling out r183996.

Modified: trunk/Source/WebKit/mac/Misc/WebKitNSStringExtras.mm (184036 => 184037)


--- trunk/Source/WebKit/mac/Misc/WebKitNSStringExtras.mm	2015-05-09 05:35:02 UTC (rev 184036)
+++ trunk/Source/WebKit/mac/Misc/WebKitNSStringExtras.mm	2015-05-09 06:33:02 UTC (rev 184037)
@@ -93,7 +93,7 @@
             CGContextScaleCTM(cgContext, 1, -1);
 
         FontCascade webCoreFont(FontPlatformData(reinterpret_cast<CTFontRef>(font), [font pointSize]), fontSmoothingIsAllowed ? AutoSmoothing : Antialiased);
-        TextRun run(buffer.data(), length);
+        TextRun run(StringView(buffer.data(), length));
         run.disableRoundingHacks();
 
         CGFloat red;
@@ -139,7 +139,7 @@
 
     if (canUseFastRenderer(buffer.data(), length)) {
         FontCascade webCoreFont(FontPlatformData(reinterpret_cast<CTFontRef>(font), [font pointSize]));
-        TextRun run(buffer.data(), length);
+        TextRun run(StringView(buffer.data(), length));
         run.disableRoundingHacks();
         return webCoreFont.width(run);
     }

Modified: trunk/Tools/ChangeLog (184036 => 184037)


--- trunk/Tools/ChangeLog	2015-05-09 05:35:02 UTC (rev 184036)
+++ trunk/Tools/ChangeLog	2015-05-09 06:33:02 UTC (rev 184037)
@@ -1,3 +1,15 @@
+2015-05-08  Myles C. Maxfield  <[email protected]>
+
+        Remove convenience constructors for TextRun
+        https://bugs.webkit.org/show_bug.cgi?id=144752
+
+        Reviewed by Anders Carlsson.
+
+        Test the StringView which takes a StringImpl*.
+
+        * TestWebKitAPI/Tests/WTF/StringView.cpp:
+        (StringView8Bit): Testing is8Bit() on StringView
+
 2015-05-07  Sam Weinig  <[email protected]>
 
         [Content Extensions] Add simple tester that takes an extension and compiles it

Modified: trunk/Tools/TestWebKitAPI/Tests/WTF/StringView.cpp (184036 => 184037)


--- trunk/Tools/TestWebKitAPI/Tests/WTF/StringView.cpp	2015-05-09 05:35:02 UTC (rev 184036)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/StringView.cpp	2015-05-09 06:33:02 UTC (rev 184037)
@@ -697,4 +697,23 @@
     EXPECT_FALSE(referenceUTF8.endsWithIgnoringASCIICase(reference));
 }
 
+TEST(WTF, StringView8Bit)
+{
+    StringView nullView;
+    StringView emptyView = StringView::empty();
+    EXPECT_TRUE(StringView().is8Bit());
+    EXPECT_TRUE(StringView::empty().is8Bit());
+
+    LChar* lcharPtr = nullptr;
+    UChar* ucharPtr = nullptr;
+    EXPECT_TRUE(StringView(lcharPtr, 0).is8Bit());
+    EXPECT_FALSE(StringView(ucharPtr, 0).is8Bit());
+
+    EXPECT_TRUE(StringView(String(lcharPtr, 0)).is8Bit());
+    EXPECT_TRUE(StringView(String(ucharPtr, 0)).is8Bit());
+
+    EXPECT_TRUE(StringView(String().impl()).is8Bit());
+    EXPECT_TRUE(StringView(emptyString().impl()).is8Bit());
+}
+
 } // namespace TestWebKitAPI
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to