Title: [259817] trunk/Source
Revision
259817
Author
ryanhad...@apple.com
Date
2020-04-09 13:00:41 -0700 (Thu, 09 Apr 2020)

Log Message

Unreviewed, reverting r259804.

Breaks the watchOS build.

Reverted changeset:

"IPC serialization of enums should serialize
std::underlying_type instead of uint64_t"
https://bugs.webkit.org/show_bug.cgi?id=210228
https://trac.webkit.org/changeset/259804

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (259816 => 259817)


--- trunk/Source/WebCore/ChangeLog	2020-04-09 19:44:21 UTC (rev 259816)
+++ trunk/Source/WebCore/ChangeLog	2020-04-09 20:00:41 UTC (rev 259817)
@@ -1,3 +1,16 @@
+2020-04-09  Ryan Haddad  <ryanhad...@apple.com>
+
+        Unreviewed, reverting r259804.
+
+        Breaks the watchOS build.
+
+        Reverted changeset:
+
+        "IPC serialization of enums should serialize
+        std::underlying_type instead of uint64_t"
+        https://bugs.webkit.org/show_bug.cgi?id=210228
+        https://trac.webkit.org/changeset/259804
+
 2020-04-09  Youenn Fablet  <you...@apple.com>
 
         Introduce a RealtimeMediaSource observer dedicated to receiving audio samples

Modified: trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp (259816 => 259817)


--- trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp	2020-04-09 19:44:21 UTC (rev 259816)
+++ trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp	2020-04-09 20:00:41 UTC (rev 259817)
@@ -558,7 +558,7 @@
             maskImageContext.setStrokeThickness(c->strokeThickness());
         }
 
-        maskImageContext.setTextDrawingMode(fill ? TextDrawingMode::Fill : TextDrawingMode::Stroke);
+        maskImageContext.setTextDrawingMode(fill ? TextModeFill : TextModeStroke);
 
         if (useMaxWidth) {
             maskImageContext.translate(location - maskRect.location());
@@ -578,7 +578,7 @@
     }
 #endif
 
-    c->setTextDrawingMode(fill ? TextDrawingMode::Fill : TextDrawingMode::Stroke);
+    c->setTextDrawingMode(fill ? TextModeFill : TextModeStroke);
 
     GraphicsContextStateSaver stateSaver(*c);
     if (useMaxWidth) {

Modified: trunk/Source/WebCore/platform/graphics/GraphicsContext.cpp (259816 => 259817)


--- trunk/Source/WebCore/platform/graphics/GraphicsContext.cpp	2020-04-09 19:44:21 UTC (rev 259816)
+++ trunk/Source/WebCore/platform/graphics/GraphicsContext.cpp	2020-04-09 20:00:41 UTC (rev 259817)
@@ -285,7 +285,7 @@
         ts.dumpProperty("stroke-thickness", m_state.strokeThickness);
 
     if (m_changeFlags.contains(GraphicsContextState::TextDrawingModeChange))
-        ts.dumpProperty("text-drawing-mode", m_state.textDrawingMode.toRaw());
+        ts.dumpProperty("text-drawing-mode", m_state.textDrawingMode);
 
     if (m_changeFlags.contains(GraphicsContextState::StrokeColorChange))
         ts.dumpProperty("stroke-color", m_state.strokeColor);

Modified: trunk/Source/WebCore/platform/graphics/GraphicsContext.h (259816 => 259817)


--- trunk/Source/WebCore/platform/graphics/GraphicsContext.h	2020-04-09 19:44:21 UTC (rev 259816)
+++ trunk/Source/WebCore/platform/graphics/GraphicsContext.h	2020-04-09 20:00:41 UTC (rev 259817)
@@ -98,14 +98,14 @@
 class TextRun;
 class TransformationMatrix;
 
-enum class TextDrawingMode : uint8_t {
-    Fill = 1 << 0,
-    Stroke = 1 << 1,
+enum TextDrawingMode {
+    TextModeFill = 1 << 0,
+    TextModeStroke = 1 << 1,
 #if ENABLE(LETTERPRESS)
-    Letterpress = 1 << 2,
+    TextModeLetterpress = 1 << 2,
 #endif
 };
-using TextDrawingModeFlags = OptionSet<TextDrawingMode>;
+typedef unsigned TextDrawingModeFlags;
 
 enum StrokeStyle {
     NoStroke,
@@ -210,7 +210,7 @@
     float strokeThickness { 0 };
     float shadowBlur { 0 };
 
-    TextDrawingModeFlags textDrawingMode { TextDrawingMode::Fill };
+    TextDrawingModeFlags textDrawingMode { TextModeFill };
 
     Color strokeColor { Color::black };
     Color fillColor { Color::black };

Modified: trunk/Source/WebCore/platform/graphics/ca/PlatformCALayer.cpp (259816 => 259817)


--- trunk/Source/WebCore/platform/graphics/ca/PlatformCALayer.cpp	2020-04-09 19:44:21 UTC (rev 259816)
+++ trunk/Source/WebCore/platform/graphics/ca/PlatformCALayer.cpp	2020-04-09 20:00:41 UTC (rev 259817)
@@ -132,7 +132,7 @@
     if (!platformCALayer->isOpaque() && platformCALayer->supportsSubpixelAntialiasedText() && platformCALayer->acceleratesDrawing()) {
         graphicsContext.setStrokeColor(linearGlyphMaskOutlineColor);
         graphicsContext.setStrokeThickness(4.5);
-        graphicsContext.setTextDrawingMode(TextDrawingModeFlags { TextDrawingMode::Fill, TextDrawingMode::Stroke });
+        graphicsContext.setTextDrawingMode(TextModeFill | TextModeStroke);
     }
 
     graphicsContext.setFillColor(platformCALayer->acceleratesDrawing() ? acceleratedContextLabelColor : unacceleratedContextLabelColor);

Modified: trunk/Source/WebCore/platform/graphics/cairo/CairoOperations.cpp (259816 => 259817)


--- trunk/Source/WebCore/platform/graphics/cairo/CairoOperations.cpp	2020-04-09 19:44:21 UTC (rev 259816)
+++ trunk/Source/WebCore/platform/graphics/cairo/CairoOperations.cpp	2020-04-09 20:00:41 UTC (rev 259817)
@@ -315,7 +315,7 @@
 static void drawGlyphsShadow(PlatformContextCairo& platformContext, const ShadowState& shadowState, TextDrawingModeFlags textDrawingMode, const FloatSize& shadowOffset, const Color& shadowColor, const FloatPoint& point, cairo_scaled_font_t* scaledFont, double syntheticBoldOffset, const Vector<cairo_glyph_t>& glyphs, FontSmoothingMode fontSmoothingMode)
 {
     ShadowBlur shadow({ shadowState.blur, shadowState.blur }, shadowState.offset, shadowState.color, shadowState.ignoreTransforms);
-    if (!textDrawingMode.contains(TextDrawingMode::Fill) || shadow.type() == ShadowBlur::NoShadow)
+    if (!(textDrawingMode & TextModeFill) || shadow.type() == ShadowBlur::NoShadow)
         return;
 
     if (!shadowState.isRequired(platformContext)) {
@@ -832,7 +832,7 @@
     cairo_t* cr = platformContext.cr();
     cairo_save(cr);
 
-    if (textDrawingMode.contains(TextDrawingMode::Fill)) {
+    if (textDrawingMode & TextModeFill) {
         prepareForFilling(cr, fillSource, AdjustPatternForGlobalAlpha);
         drawGlyphsToContext(cr, scaledFont, syntheticBoldOffset, glyphs, fontSmoothingMode);
     }
@@ -841,7 +841,7 @@
     // twice the size of the width of the text we will not ask cairo to stroke
     // the text as even one single stroke would cover the full wdth of the text.
     //  See https://bugs.webkit.org/show_bug.cgi?id=33759.
-    if (textDrawingMode.contains(TextDrawingMode::Stroke) && strokeThickness < 2 * xOffset) {
+    if (textDrawingMode & TextModeStroke && strokeThickness < 2 * xOffset) {
         prepareForStroking(cr, strokeSource, PreserveAlpha);
         cairo_set_line_width(cr, strokeThickness);
 

Modified: trunk/Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp (259816 => 259817)


--- trunk/Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp	2020-04-09 19:44:21 UTC (rev 259816)
+++ trunk/Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp	2020-04-09 20:00:41 UTC (rev 259817)
@@ -1760,15 +1760,19 @@
     ASSERT(hasPlatformContext());
 
     CGContextRef context = platformContext();
-    
-    bool fill = mode.contains(TextDrawingMode::Fill);
-    bool stroke = mode.contains(TextDrawingMode::Stroke);
-    if (fill && stroke)
-        CGContextSetTextDrawingMode(context, kCGTextFillStroke);
-    else if (fill)
+    switch (mode) {
+    case TextModeFill:
         CGContextSetTextDrawingMode(context, kCGTextFill);
-    else if (stroke)
+        break;
+    case TextModeStroke:
         CGContextSetTextDrawingMode(context, kCGTextStroke);
+        break;
+    case TextModeFill | TextModeStroke:
+        CGContextSetTextDrawingMode(context, kCGTextFillStroke);
+        break;
+    default:
+        break;
+    }
 }
 
 void GraphicsContext::setPlatformStrokeColor(const Color& color)

Modified: trunk/Source/WebCore/platform/graphics/cocoa/FontCascadeCocoa.mm (259816 => 259817)


--- trunk/Source/WebCore/platform/graphics/cocoa/FontCascadeCocoa.mm	2020-04-09 19:44:21 UTC (rev 259816)
+++ trunk/Source/WebCore/platform/graphics/cocoa/FontCascadeCocoa.mm	2020-04-09 20:00:41 UTC (rev 259817)
@@ -91,7 +91,7 @@
 static inline bool shouldUseLetterpressEffect(const GraphicsContext& context)
 {
 #if ENABLE(LETTERPRESS)
-    return context.textDrawingMode().contains(TextDrawingMode::Letterpress);
+    return context.textDrawingMode() & TextModeLetterpress;
 #else
     UNUSED_PARAM(context);
     return false;
@@ -278,7 +278,7 @@
         }
     };
 
-    bool hasSimpleShadow = context.textDrawingMode() == TextDrawingMode::Fill && shadowColor.isValid() && !shadowBlur && !platformData.isColorBitmapFont() && (!context.shadowsIgnoreTransforms() || contextCTM.isIdentityOrTranslationOrFlipped()) && !context.isInTransparencyLayer();
+    bool hasSimpleShadow = context.textDrawingMode() == TextModeFill && shadowColor.isValid() && !shadowBlur && !platformData.isColorBitmapFont() && (!context.shadowsIgnoreTransforms() || contextCTM.isIdentityOrTranslationOrFlipped()) && !context.isInTransparencyLayer();
     if (hasSimpleShadow) {
         // Paint simple shadows ourselves instead of relying on CG shadows, to avoid losing subpixel antialiasing.
         context.clearShadow();

Modified: trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItems.h (259816 => 259817)


--- trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItems.h	2020-04-09 19:44:21 UTC (rev 259816)
+++ trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItems.h	2020-04-09 20:00:41 UTC (rev 259817)
@@ -416,7 +416,7 @@
         encoder << state.strokeThickness;
 
     if (changeFlags.contains(GraphicsContextState::TextDrawingModeChange))
-        encoder << state.textDrawingMode;
+        encoder.encodeEnum(state.textDrawingMode);
 
     if (changeFlags.contains(GraphicsContextState::StrokeColorChange))
         encoder << state.strokeColor;
@@ -568,12 +568,11 @@
     }
 
     if (stateChange.m_changeFlags.contains(GraphicsContextState::TextDrawingModeChange)) {
-        Optional<TextDrawingModeFlags> textDrawingMode;
-        decoder >> textDrawingMode;
-        if (!textDrawingMode)
+        TextDrawingModeFlags textDrawingMode;
+        if (!decoder.decodeEnum(textDrawingMode))
             return WTF::nullopt;
 
-        stateChange.m_state.textDrawingMode = WTFMove(*textDrawingMode);
+        stateChange.m_state.textDrawingMode = textDrawingMode;
     }
 
     if (stateChange.m_changeFlags.contains(GraphicsContextState::StrokeColorChange)) {

Modified: trunk/Source/WebCore/platform/graphics/texmap/BitmapTexture.cpp (259816 => 259817)


--- trunk/Source/WebCore/platform/graphics/texmap/BitmapTexture.cpp	2020-04-09 19:44:21 UTC (rev 259816)
+++ trunk/Source/WebCore/platform/graphics/texmap/BitmapTexture.cpp	2020-04-09 20:00:41 UTC (rev 259817)
@@ -45,7 +45,7 @@
 
     GraphicsContext& context = imageBuffer->context();
     context.setImageInterpolationQuality(InterpolationQuality::Default);
-    context.setTextDrawingMode(TextDrawingMode::Fill);
+    context.setTextDrawingMode(TextModeFill);
 
     IntRect sourceRect(targetRect);
     sourceRect.setLocation(offset);

Modified: trunk/Source/WebCore/platform/graphics/win/Direct2DOperations.cpp (259816 => 259817)


--- trunk/Source/WebCore/platform/graphics/win/Direct2DOperations.cpp	2020-04-09 19:44:21 UTC (rev 259816)
+++ trunk/Source/WebCore/platform/graphics/win/Direct2DOperations.cpp	2020-04-09 20:00:41 UTC (rev 259817)
@@ -775,7 +775,7 @@
     Color shadowColor;
     graphicsContext.getShadow(shadowOffset, shadowBlur, shadowColor);
 
-    bool hasSimpleShadow = graphicsContext.textDrawingMode() == TextDrawingMode::Fill && shadowColor.isValid() && !shadowBlur && (!graphicsContext.shadowsIgnoreTransforms() || graphicsContext.getCTM().isIdentityOrTranslationOrFlipped());
+    bool hasSimpleShadow = graphicsContext.textDrawingMode() == TextModeFill && shadowColor.isValid() && !shadowBlur && (!graphicsContext.shadowsIgnoreTransforms() || graphicsContext.getCTM().isIdentityOrTranslationOrFlipped());
     if (hasSimpleShadow) {
         // Paint simple shadows ourselves instead of relying on CG shadows, to avoid losing subpixel antialiasing.
         graphicsContext.clearShadow();

Modified: trunk/Source/WebCore/platform/graphics/win/FontCGWin.cpp (259816 => 259817)


--- trunk/Source/WebCore/platform/graphics/win/FontCGWin.cpp	2020-04-09 19:44:21 UTC (rev 259816)
+++ trunk/Source/WebCore/platform/graphics/win/FontCGWin.cpp	2020-04-09 20:00:41 UTC (rev 259817)
@@ -181,7 +181,7 @@
     Color shadowColor;
     graphicsContext.getShadow(shadowOffset, shadowBlur, shadowColor);
 
-    bool hasSimpleShadow = graphicsContext.textDrawingMode() == TextDrawingMode::Fill && shadowColor.isValid() && !shadowBlur && (!graphicsContext.shadowsIgnoreTransforms() || graphicsContext.getCTM().isIdentityOrTranslationOrFlipped());
+    bool hasSimpleShadow = graphicsContext.textDrawingMode() == TextModeFill && shadowColor.isValid() && !shadowBlur && (!graphicsContext.shadowsIgnoreTransforms() || graphicsContext.getCTM().isIdentityOrTranslationOrFlipped());
     if (hasSimpleShadow) {
         // Paint simple shadows ourselves instead of relying on CG shadows, to avoid losing subpixel antialiasing.
         graphicsContext.clearShadow();

Modified: trunk/Source/WebCore/platform/graphics/win/FontCascadeDirect2D.cpp (259816 => 259817)


--- trunk/Source/WebCore/platform/graphics/win/FontCascadeDirect2D.cpp	2020-04-09 19:44:21 UTC (rev 259816)
+++ trunk/Source/WebCore/platform/graphics/win/FontCascadeDirect2D.cpp	2020-04-09 20:00:41 UTC (rev 259817)
@@ -116,7 +116,7 @@
     Color shadowColor;
     graphicsContext.getShadow(shadowOffset, shadowBlur, shadowColor);
 
-    bool hasSimpleShadow = graphicsContext.textDrawingMode() == TextDrawingMode::Fill && shadowColor.isValid() && !shadowBlur && (!graphicsContext.shadowsIgnoreTransforms() || graphicsContext.getCTM().isIdentityOrTranslationOrFlipped());
+    bool hasSimpleShadow = graphicsContext.textDrawingMode() == TextModeFill && shadowColor.isValid() && !shadowBlur && (!graphicsContext.shadowsIgnoreTransforms() || graphicsContext.getCTM().isIdentityOrTranslationOrFlipped());
     if (hasSimpleShadow) {
         // Paint simple shadows ourselves instead of relying on CG shadows, to avoid losing subpixel antialiasing.
         graphicsContext.clearShadow();

Modified: trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp (259816 => 259817)


--- trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp	2020-04-09 19:44:21 UTC (rev 259816)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp	2020-04-09 20:00:41 UTC (rev 259817)
@@ -353,7 +353,7 @@
     IntSize captureSize = this->captureSize();
     FloatPoint timeLocation(captureSize.width() * .05, captureSize.height() * .15);
     context.setFillColor(Color::white);
-    context.setTextDrawingMode(TextDrawingMode::Fill);
+    context.setTextDrawingMode(TextModeFill);
     String string = makeString(pad('0', 2, hours), ':', pad('0', 2, minutes), ':', pad('0', 2, seconds), '.', pad('0', 3, milliseconds % 1000));
     context.drawText(timeFont, TextRun((StringView(string))), timeLocation);
 

Modified: trunk/Source/WebCore/rendering/TextPaintStyle.cpp (259816 => 259817)


--- trunk/Source/WebCore/rendering/TextPaintStyle.cpp	2020-04-09 19:44:21 UTC (rev 259816)
+++ trunk/Source/WebCore/rendering/TextPaintStyle.cpp	2020-04-09 20:00:41 UTC (rev 259817)
@@ -185,12 +185,12 @@
     TextDrawingModeFlags newMode = mode;
 #if ENABLE(LETTERPRESS)
     if (paintStyle.useLetterpressEffect)
-        newMode.add(TextDrawingMode::Letterpress);
+        newMode |= TextModeLetterpress;
     else
-        newMode.remove(TextDrawingMode::Letterpress);
+        newMode &= ~TextModeLetterpress;
 #endif
     if (paintStyle.strokeWidth > 0 && paintStyle.strokeColor.isVisible())
-        newMode.add(TextDrawingMode::Stroke);
+        newMode |= TextModeStroke;
     if (mode != newMode) {
         context.setTextDrawingMode(newMode);
         mode = newMode;
@@ -201,10 +201,10 @@
 #endif
 
     Color fillColor = fillColorType == UseEmphasisMarkColor ? paintStyle.emphasisMarkColor : paintStyle.fillColor;
-    if (mode.contains(TextDrawingMode::Fill) && (fillColor != context.fillColor()))
+    if (mode & TextModeFill && (fillColor != context.fillColor()))
         context.setFillColor(fillColor);
 
-    if (mode & TextDrawingMode::Stroke) {
+    if (mode & TextModeStroke) {
         if (paintStyle.strokeColor != context.strokeColor())
             context.setStrokeColor(paintStyle.strokeColor);
         if (paintStyle.strokeWidth != context.strokeThickness())

Modified: trunk/Source/WebCore/rendering/TextPainter.cpp (259816 => 259817)


--- trunk/Source/WebCore/rendering/TextPainter.cpp	2020-04-09 19:44:21 UTC (rev 259816)
+++ trunk/Source/WebCore/rendering/TextPainter.cpp	2020-04-09 20:00:41 UTC (rev 259817)
@@ -159,23 +159,17 @@
 
         for (auto order : paintOrder) {
             switch (order) {
-            case PaintType::Fill: {
-                auto textDrawingModeWithoutStroke = textDrawingMode;
-                textDrawingModeWithoutStroke.remove(TextDrawingMode::Stroke);
-                m_context.setTextDrawingMode(textDrawingModeWithoutStroke);
+            case PaintType::Fill:
+                m_context.setTextDrawingMode(textDrawingMode & ~TextModeStroke);
                 paintTextWithShadows(shadowToUse, shadowColorFilter, *m_font, textRun, boxRect, textOrigin, startOffset, endOffset, nullAtom(), 0, false);
                 shadowToUse = nullptr;
                 m_context.setTextDrawingMode(textDrawingMode);
                 break;
-            }
-            case PaintType::Stroke: {
-                auto textDrawingModeWithoutFill = textDrawingMode;
-                textDrawingModeWithoutFill.remove(TextDrawingMode::Fill);
-                m_context.setTextDrawingMode(textDrawingModeWithoutFill);
+            case PaintType::Stroke:
+                m_context.setTextDrawingMode(textDrawingMode & ~TextModeFill);
                 paintTextWithShadows(shadowToUse, shadowColorFilter, *m_font, textRun, boxRect, textOrigin, startOffset, endOffset, nullAtom(), 0, paintStyle.strokeWidth > 0);
                 shadowToUse = nullptr;
                 m_context.setTextDrawingMode(textDrawingMode);
-            }
                 break;
             case PaintType::Markers:
                 continue;

Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp (259816 => 259817)


--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp	2020-04-09 19:44:21 UTC (rev 259816)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp	2020-04-09 20:00:41 UTC (rev 259817)
@@ -167,7 +167,7 @@
         }
 #endif
 
-        context->setTextDrawingMode(resourceMode.contains(RenderSVGResourceMode::ApplyToFill) ? TextDrawingMode::Fill : TextDrawingMode::Stroke);
+        context->setTextDrawingMode(resourceMode.contains(RenderSVGResourceMode::ApplyToFill) ? TextModeFill : TextModeStroke);
     }
 
     const SVGRenderStyle& svgStyle = style.svgStyle();

Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourcePattern.cpp (259816 => 259817)


--- trunk/Source/WebCore/rendering/svg/RenderSVGResourcePattern.cpp	2020-04-09 19:44:21 UTC (rev 259816)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourcePattern.cpp	2020-04-09 20:00:41 UTC (rev 259817)
@@ -185,13 +185,13 @@
 
     if (resourceMode.contains(RenderSVGResourceMode::ApplyToText)) {
         if (resourceMode.contains(RenderSVGResourceMode::ApplyToFill)) {
-            context->setTextDrawingMode(TextDrawingMode::Fill);
+            context->setTextDrawingMode(TextModeFill);
 
 #if USE(CG)
             context->applyFillPattern();
 #endif
         } else if (resourceMode.contains(RenderSVGResourceMode::ApplyToStroke)) {
-            context->setTextDrawingMode(TextDrawingMode::Stroke);
+            context->setTextDrawingMode(TextModeStroke);
 
 #if USE(CG)
             context->applyStrokePattern();

Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceSolidColor.cpp (259816 => 259817)


--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceSolidColor.cpp	2020-04-09 19:44:21 UTC (rev 259816)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceSolidColor.cpp	2020-04-09 20:00:41 UTC (rev 259817)
@@ -51,7 +51,7 @@
             context->setFillRule(svgStyle.fillRule());
 
         if (resourceMode.contains(RenderSVGResourceMode::ApplyToText))
-            context->setTextDrawingMode(TextDrawingMode::Fill);
+            context->setTextDrawingMode(TextModeFill);
     } else if (resourceMode.contains(RenderSVGResourceMode::ApplyToStroke)) {
         // When rendering the mask for a RenderSVGResourceClipper, the stroke code path is never hit.
         ASSERT(!isRenderingMask);
@@ -61,7 +61,7 @@
         SVGRenderSupport::applyStrokeStyleToContext(context, style, renderer);
 
         if (resourceMode.contains(RenderSVGResourceMode::ApplyToText))
-            context->setTextDrawingMode(TextDrawingMode::Stroke);
+            context->setTextDrawingMode(TextModeStroke);
     }
 
     return true;

Modified: trunk/Source/WebKit/ChangeLog (259816 => 259817)


--- trunk/Source/WebKit/ChangeLog	2020-04-09 19:44:21 UTC (rev 259816)
+++ trunk/Source/WebKit/ChangeLog	2020-04-09 20:00:41 UTC (rev 259817)
@@ -1,3 +1,16 @@
+2020-04-09  Ryan Haddad  <ryanhad...@apple.com>
+
+        Unreviewed, reverting r259804.
+
+        Breaks the watchOS build.
+
+        Reverted changeset:
+
+        "IPC serialization of enums should serialize
+        std::underlying_type instead of uint64_t"
+        https://bugs.webkit.org/show_bug.cgi?id=210228
+        https://trac.webkit.org/changeset/259804
+
 2020-04-09  Youenn Fablet  <you...@apple.com>
 
         Introduce a RealtimeMediaSource observer dedicated to receiving audio samples

Modified: trunk/Source/WebKit/Platform/IPC/Decoder.h (259816 => 259817)


--- trunk/Source/WebKit/Platform/IPC/Decoder.h	2020-04-09 19:44:21 UTC (rev 259816)
+++ trunk/Source/WebKit/Platform/IPC/Decoder.h	2020-04-09 20:00:41 UTC (rev 259817)
@@ -104,10 +104,10 @@
     bool decode(double&);
     Decoder& operator>>(Optional<double>&);
 
-    template<typename E, typename = std::enable_if_t<std::is_enum<E>::value>>
-    bool decode(E& e)
+    template<typename E>
+    auto decode(E& e) -> std::enable_if_t<std::is_enum<E>::value, bool>
     {
-        typename std::underlying_type<E>::type value;
+        uint64_t value;
         if (!decode(value))
             return false;
         if (!isValidEnum<E>(value))
@@ -117,10 +117,10 @@
         return true;
     }
 
-    template<typename E, typename = std::enable_if_t<std::is_enum<E>::value>>
+    template<typename E, std::enable_if_t<std::is_enum<E>::value>* = nullptr>
     Decoder& operator>>(Optional<E>& optional)
     {
-        Optional<typename std::underlying_type<E>::type> value;
+        Optional<uint64_t> value;
         *this >> value;
         if (value && isValidEnum<E>(*value))
             optional = static_cast<E>(*value);
@@ -129,10 +129,12 @@
 
     template<typename T> bool decodeEnum(T& result)
     {
-        typename std::underlying_type<T>::type value;
+        static_assert(sizeof(T) <= 8, "Enum type T must not be larger than 64 bits!");
+
+        uint64_t value;
         if (!decode(value))
             return false;
-
+        
         result = static_cast<T>(value);
         return true;
     }

Modified: trunk/Source/WebKit/Platform/IPC/Encoder.h (259816 => 259817)


--- trunk/Source/WebKit/Platform/IPC/Encoder.h	2020-04-09 19:44:21 UTC (rev 259816)
+++ trunk/Source/WebKit/Platform/IPC/Encoder.h	2020-04-09 20:00:41 UTC (rev 259817)
@@ -61,7 +61,9 @@
 
     template<typename T> void encodeEnum(T t)
     {
-        encode(static_cast<typename std::underlying_type<T>::type>(t));
+        COMPILE_ASSERT(sizeof(T) <= sizeof(uint64_t), enum_type_must_not_be_larger_than_64_bits);
+
+        encode(static_cast<uint64_t>(t));
     }
 
     template<typename T, std::enable_if_t<!std::is_enum<typename std::remove_const_t<std::remove_reference_t<T>>>::value>* = nullptr>
@@ -73,7 +75,7 @@
     template<typename T, std::enable_if_t<std::is_enum<T>::value>* = nullptr>
     Encoder& operator<<(T&& t)
     {
-        encode(static_cast<typename std::underlying_type<T>::type>(t));
+        encode(static_cast<uint64_t>(t));
         return *this;
     }
 
@@ -111,8 +113,10 @@
     template<typename E>
     auto encode(E value) -> std::enable_if_t<std::is_enum<E>::value>
     {
-        ASSERT(isValidEnum<E>(static_cast<typename std::underlying_type<E>::type>(value)));
-        encode(static_cast<typename std::underlying_type<E>::type>(value));
+        static_assert(sizeof(E) <= sizeof(uint64_t), "Enum type must not be larger than 64 bits.");
+
+        ASSERT(isValidEnum<E>(static_cast<uint64_t>(value)));
+        encode(static_cast<uint64_t>(value));
     }
 
     void encodeHeader();

Modified: trunk/Source/WebKit/Shared/cf/ArgumentCodersCF.cpp (259816 => 259817)


--- trunk/Source/WebKit/Shared/cf/ArgumentCodersCF.cpp	2020-04-09 19:44:21 UTC (rev 259816)
+++ trunk/Source/WebKit/Shared/cf/ArgumentCodersCF.cpp	2020-04-09 20:00:41 UTC (rev 259817)
@@ -491,7 +491,7 @@
     bool result = CFNumberGetValue(number, numberType, buffer.data());
     ASSERT_UNUSED(result, result);
 
-    encoder << static_cast<uint8_t>(numberType);
+    encoder.encodeEnum(numberType);
     encoder << IPC::DataReference(buffer);
 }
 
@@ -537,11 +537,9 @@
 
 bool decode(Decoder& decoder, RetainPtr<CFNumberRef>& result)
 {
-    Optional<uint8_t> numberTypeFromIPC;
-    decoder >> numberTypeFromIPC;
-    if (!numberTypeFromIPC || *numberTypeFromIPC > kCFNumberMaxType)
+    CFNumberType numberType;
+    if (!decoder.decodeEnum(numberType))
         return false;
-    auto numberType = static_cast<CFNumberType>(*numberTypeFromIPC);
 
     IPC::DataReference dataReference;
     if (!decoder.decode(dataReference))
@@ -573,17 +571,15 @@
     numConvertedBytes = CFStringGetBytes(string, range, encoding, 0, false, buffer.data(), buffer.size(), &bufferLength);
     ASSERT(numConvertedBytes == length);
 
-    encoder << static_cast<UInt32>(encoding);
+    encoder.encodeEnum(encoding);
     encoder << IPC::DataReference(buffer);
 }
 
 bool decode(Decoder& decoder, RetainPtr<CFStringRef>& result)
 {
-    UInt32 encodingFromIPC;
-    if (!decoder.decode(encodingFromIPC))
+    CFStringEncoding encoding;
+    if (!decoder.decodeEnum(encoding))
         return false;
-    // FIXME: Should we validate that this value is an expected value?
-    auto encoding = static_cast<CFStringEncoding>(encodingFromIPC);
 
     if (!CFStringIsEncodingAvailable(encoding))
         return false;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to