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;