Title: [183996] trunk
Revision
183996
Author
mmaxfi...@apple.com
Date
2015-05-08 10:18:00 -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 (183995 => 183996)


--- trunk/Source/WTF/ChangeLog	2015-05-08 16:09:42 UTC (rev 183995)
+++ trunk/Source/WTF/ChangeLog	2015-05-08 17:18:00 UTC (rev 183996)
@@ -1,3 +1,16 @@
+2015-05-08  Myles C. Maxfield  <mmaxfi...@apple.com>
+
+        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  Andreas Kling  <akl...@apple.com>
 
         Optimize serialization of quoted JSON strings.

Modified: trunk/Source/WTF/wtf/text/StringView.h (183995 => 183996)


--- trunk/Source/WTF/wtf/text/StringView.h	2015-05-08 16:09:42 UTC (rev 183995)
+++ trunk/Source/WTF/wtf/text/StringView.h	2015-05-08 17:18:00 UTC (rev 183996)
@@ -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 (183995 => 183996)


--- trunk/Source/WebCore/ChangeLog	2015-05-08 16:09:42 UTC (rev 183995)
+++ trunk/Source/WebCore/ChangeLog	2015-05-08 17:18:00 UTC (rev 183996)
@@ -1,3 +1,32 @@
+2015-05-08  Myles C. Maxfield  <mmaxfi...@apple.com>
+
+        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  Xabier Rodriguez Calvar  <calva...@igalia.com> and Youenn Fablet <youenn.fab...@crf.canon.fr>
 
         [Streams API] ReadableStream constructor start function should be able to error the stream

Modified: trunk/Source/WebCore/css/CSSPrimitiveValue.cpp (183995 => 183996)


--- trunk/Source/WebCore/css/CSSPrimitiveValue.cpp	2015-05-08 16:09:42 UTC (rev 183995)
+++ trunk/Source/WebCore/css/CSSPrimitiveValue.cpp	2015-05-08 17:18:00 UTC (rev 183996)
@@ -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 (183995 => 183996)


--- trunk/Source/WebCore/platform/graphics/StringTruncator.cpp	2015-05-08 16:09:42 UTC (rev 183995)
+++ trunk/Source/WebCore/platform/graphics/StringTruncator.cpp	2015-05-08 17:18:00 UTC (rev 183996)
@@ -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 (183995 => 183996)


--- trunk/Source/WebCore/platform/graphics/TextRun.h	2015-05-08 16:09:42 UTC (rev 183995)
+++ trunk/Source/WebCore/platform/graphics/TextRun.h	2015-05-08 17:18:00 UTC (rev 183996)
@@ -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 (183995 => 183996)


--- trunk/Source/WebCore/platform/mac/DragImageMac.mm	2015-05-08 16:09:42 UTC (rev 183995)
+++ trunk/Source/WebCore/platform/mac/DragImageMac.mm	2015-05-08 17:18:00 UTC (rev 183996)
@@ -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/rendering/SimpleLineLayoutTextFragmentIterator.cpp (183995 => 183996)


--- trunk/Source/WebCore/rendering/SimpleLineLayoutTextFragmentIterator.cpp	2015-05-08 16:09:42 UTC (rev 183995)
+++ trunk/Source/WebCore/rendering/SimpleLineLayoutTextFragmentIterator.cpp	2015-05-08 17:18:00 UTC (rev 183996)
@@ -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,7 @@
     bool measureWithEndSpace = m_style.collapseWhitespace && segmentTo < segment.text.length() && segment.text[segmentTo] == ' ';
     if (measureWithEndSpace)
         ++segmentTo;
-    TextRun run(segment.text.characters<CharacterType>() + segmentFrom, segmentTo - segmentFrom);
+    TextRun run(StringView(segment.text.substring(segmentFrom, segmentTo - segmentFrom)));
     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 (183995 => 183996)


--- trunk/Source/WebCore/rendering/TextPainter.cpp	2015-05-08 16:09:42 UTC (rev 183995)
+++ trunk/Source/WebCore/rendering/TextPainter.cpp	2015-05-08 17:18:00 UTC (rev 183996)
@@ -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 (183995 => 183996)


--- trunk/Source/WebKit/mac/ChangeLog	2015-05-08 16:09:42 UTC (rev 183995)
+++ trunk/Source/WebKit/mac/ChangeLog	2015-05-08 17:18:00 UTC (rev 183996)
@@ -1,3 +1,19 @@
+2015-05-08  Myles C. Maxfield  <mmaxfi...@apple.com>
+
+        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-07  Anders Carlsson  <ander...@apple.com>
 
         Build fixes.

Modified: trunk/Source/WebKit/mac/Misc/WebKitNSStringExtras.mm (183995 => 183996)


--- trunk/Source/WebKit/mac/Misc/WebKitNSStringExtras.mm	2015-05-08 16:09:42 UTC (rev 183995)
+++ trunk/Source/WebKit/mac/Misc/WebKitNSStringExtras.mm	2015-05-08 17:18:00 UTC (rev 183996)
@@ -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 (183995 => 183996)


--- trunk/Tools/ChangeLog	2015-05-08 16:09:42 UTC (rev 183995)
+++ trunk/Tools/ChangeLog	2015-05-08 17:18:00 UTC (rev 183996)
@@ -1,3 +1,15 @@
+2015-05-08  Myles C. Maxfield  <mmaxfi...@apple.com>
+
+        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-08  Carlos Garcia Campos  <cgar...@igalia.com>
 
         [GTK] WTR doesn't correctly handle the Escape key

Modified: trunk/Tools/TestWebKitAPI/Tests/WTF/StringView.cpp (183995 => 183996)


--- trunk/Tools/TestWebKitAPI/Tests/WTF/StringView.cpp	2015-05-08 16:09:42 UTC (rev 183995)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/StringView.cpp	2015-05-08 17:18:00 UTC (rev 183996)
@@ -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
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to