208 lines
9.0 KiB
Diff
208 lines
9.0 KiB
Diff
|
From c054224e551547c3e3593b60ca1226fa4ac41c01 Mon Sep 17 00:00:00 2001
|
||
|
From: "timothy@hatcher.name"
|
||
|
<timothy@hatcher.name@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
|
||
|
Date: Tue, 11 Jul 2017 18:07:24 +0000
|
||
|
Subject: [PATCH] Fix broken build when ENABLE_VIDEO is disabled.
|
||
|
https://bugs.webkit.org/show_bug.cgi?id=174368
|
||
|
|
||
|
Reviewed by Alex Christensen.
|
||
|
|
||
|
* dom/Document.cpp:
|
||
|
* html/canvas/WebGLRenderingContextBase.cpp:
|
||
|
(WebCore::WebGLRenderingContextBase::texSubImage2D):
|
||
|
(WebCore::WebGLRenderingContextBase::texImage2D):
|
||
|
* html/canvas/WebGLRenderingContextBase.h:
|
||
|
* html/canvas/WebGLRenderingContextBase.idl:
|
||
|
* testing/Internals.cpp:
|
||
|
(WebCore::Internals::mediaResponseSources):
|
||
|
(WebCore::Internals::mediaResponseContentRanges):
|
||
|
* testing/Internals.h:
|
||
|
* testing/Internals.idl:
|
||
|
|
||
|
Signed-off-by: Adrian Perez de Castro <aperez@igalia.com>
|
||
|
|
||
|
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@219343 268f45cc-cd09-0410-ab3c-d52691b4dbfc
|
||
|
---
|
||
|
.../html/canvas/WebGLRenderingContextBase.cpp | 16 +++++++++++----
|
||
|
.../html/canvas/WebGLRenderingContextBase.h | 12 ++++++++++-
|
||
|
.../html/canvas/WebGLRenderingContextBase.idl | 4 ++++
|
||
|
Source/WebCore/testing/Internals.cpp | 24 ++++++++++++++++++++++
|
||
|
Source/WebCore/testing/Internals.h | 2 ++
|
||
|
Source/WebCore/testing/Internals.idl | 2 ++
|
||
|
6 files changed, 55 insertions(+), 5 deletions(-)
|
||
|
|
||
|
diff --git a/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp b/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp
|
||
|
index f8fd63f7d87..a76a44ff06b 100644
|
||
|
--- a/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp
|
||
|
+++ b/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp
|
||
|
@@ -3597,7 +3597,9 @@ ExceptionOr<void> WebGLRenderingContextBase::texSubImage2D(GC3Denum target, GC3D
|
||
|
else
|
||
|
texSubImage2DImpl(target, level, xoffset, yoffset, format, type, canvas->copiedImage(), GraphicsContext3D::HtmlDomCanvas, m_unpackFlipY, m_unpackPremultiplyAlpha);
|
||
|
return { };
|
||
|
- }, [&](const RefPtr<HTMLVideoElement>& video) -> ExceptionOr<void> {
|
||
|
+ }
|
||
|
+#if ENABLE(VIDEO)
|
||
|
+ , [&](const RefPtr<HTMLVideoElement>& video) -> ExceptionOr<void> {
|
||
|
ExceptionCode ec = 0;
|
||
|
if (isContextLostOrPending() || !validateHTMLVideoElement("texSubImage2D", video.get(), ec))
|
||
|
return ec ? Exception { ec } : ExceptionOr<void> { };
|
||
|
@@ -3620,7 +3622,9 @@ ExceptionOr<void> WebGLRenderingContextBase::texSubImage2D(GC3Denum target, GC3D
|
||
|
return { };
|
||
|
texSubImage2DImpl(target, level, xoffset, yoffset, format, type, image.get(), GraphicsContext3D::HtmlDomVideo, m_unpackFlipY, m_unpackPremultiplyAlpha);
|
||
|
return { };
|
||
|
- });
|
||
|
+ }
|
||
|
+#endif
|
||
|
+ );
|
||
|
|
||
|
return WTF::visit(visitor, source.value());
|
||
|
}
|
||
|
@@ -4107,7 +4111,9 @@ ExceptionOr<void> WebGLRenderingContextBase::texImage2D(GC3Denum target, GC3Dint
|
||
|
else
|
||
|
texImage2DImpl(target, level, internalformat, format, type, canvas->copiedImage(), GraphicsContext3D::HtmlDomCanvas, m_unpackFlipY, m_unpackPremultiplyAlpha);
|
||
|
return { };
|
||
|
- }, [&](const RefPtr<HTMLVideoElement>& video) -> ExceptionOr<void> {
|
||
|
+ }
|
||
|
+#if ENABLE(VIDEO)
|
||
|
+ , [&](const RefPtr<HTMLVideoElement>& video) -> ExceptionOr<void> {
|
||
|
ExceptionCode ec = 0;
|
||
|
if (isContextLostOrPending() || !validateHTMLVideoElement("texImage2D", video.get(), ec)
|
||
|
|| !validateTexFunc("texImage2D", TexImage, SourceHTMLVideoElement, target, level, internalformat, video->videoWidth(), video->videoHeight(), 0, format, type, 0, 0))
|
||
|
@@ -4137,7 +4143,9 @@ ExceptionOr<void> WebGLRenderingContextBase::texImage2D(GC3Denum target, GC3Dint
|
||
|
return { };
|
||
|
texImage2DImpl(target, level, internalformat, format, type, image.get(), GraphicsContext3D::HtmlDomVideo, m_unpackFlipY, m_unpackPremultiplyAlpha);
|
||
|
return { };
|
||
|
- });
|
||
|
+ }
|
||
|
+#endif
|
||
|
+ );
|
||
|
|
||
|
return WTF::visit(visitor, source.value());
|
||
|
}
|
||
|
diff --git a/Source/WebCore/html/canvas/WebGLRenderingContextBase.h b/Source/WebCore/html/canvas/WebGLRenderingContextBase.h
|
||
|
index 31e5542e612..d4738e834a1 100644
|
||
|
--- a/Source/WebCore/html/canvas/WebGLRenderingContextBase.h
|
||
|
+++ b/Source/WebCore/html/canvas/WebGLRenderingContextBase.h
|
||
|
@@ -57,7 +57,6 @@ class EXTShaderTextureLOD;
|
||
|
class EXTsRGB;
|
||
|
class EXTFragDepth;
|
||
|
class HTMLImageElement;
|
||
|
-class HTMLVideoElement;
|
||
|
class ImageData;
|
||
|
class IntSize;
|
||
|
class OESStandardDerivatives;
|
||
|
@@ -85,6 +84,10 @@ class WebGLSharedObject;
|
||
|
class WebGLShaderPrecisionFormat;
|
||
|
class WebGLUniformLocation;
|
||
|
|
||
|
+#if ENABLE(VIDEO)
|
||
|
+class HTMLVideoElement;
|
||
|
+#endif
|
||
|
+
|
||
|
inline void clip1D(GC3Dint start, GC3Dsizei range, GC3Dsizei sourceRange, GC3Dint* clippedStart, GC3Dsizei* clippedRange)
|
||
|
{
|
||
|
ASSERT(clippedStart && clippedRange);
|
||
|
@@ -244,7 +247,12 @@ public:
|
||
|
|
||
|
void texImage2D(GC3Denum target, GC3Dint level, GC3Denum internalformat, GC3Dsizei width, GC3Dsizei height, GC3Dint border, GC3Denum format, GC3Denum type, RefPtr<ArrayBufferView>&&);
|
||
|
|
||
|
+#if ENABLE(VIDEO)
|
||
|
using TexImageSource = WTF::Variant<RefPtr<ImageData>, RefPtr<HTMLImageElement>, RefPtr<HTMLCanvasElement>, RefPtr<HTMLVideoElement>>;
|
||
|
+#else
|
||
|
+ using TexImageSource = WTF::Variant<RefPtr<ImageData>, RefPtr<HTMLImageElement>, RefPtr<HTMLCanvasElement>>;
|
||
|
+#endif
|
||
|
+
|
||
|
ExceptionOr<void> texImage2D(GC3Denum target, GC3Dint level, GC3Denum internalformat, GC3Denum format, GC3Denum type, std::optional<TexImageSource>);
|
||
|
|
||
|
void texParameterf(GC3Denum target, GC3Denum pname, GC3Dfloat param);
|
||
|
@@ -677,7 +685,9 @@ protected:
|
||
|
SourceImageData,
|
||
|
SourceHTMLImageElement,
|
||
|
SourceHTMLCanvasElement,
|
||
|
+#if ENABLE(VIDEO)
|
||
|
SourceHTMLVideoElement,
|
||
|
+#endif
|
||
|
};
|
||
|
|
||
|
// Helper function for tex{Sub}Image2D to check if the input format/type/level/target/width/height/border/xoffset/yoffset are valid.
|
||
|
diff --git a/Source/WebCore/html/canvas/WebGLRenderingContextBase.idl b/Source/WebCore/html/canvas/WebGLRenderingContextBase.idl
|
||
|
index 63b64cdebd2..3111e798a89 100644
|
||
|
--- a/Source/WebCore/html/canvas/WebGLRenderingContextBase.idl
|
||
|
+++ b/Source/WebCore/html/canvas/WebGLRenderingContextBase.idl
|
||
|
@@ -42,7 +42,11 @@ typedef (Float32Array or sequence<GLfloat>) Float32List;
|
||
|
typedef (Int32Array or sequence<GLint>) Int32List;
|
||
|
|
||
|
// FIXME: Should allow ImageBitmap too.
|
||
|
+#ifdef ENABLE_VIDEO
|
||
|
typedef (ImageData or HTMLImageElement or HTMLCanvasElement or HTMLVideoElement) TexImageSource;
|
||
|
+#else
|
||
|
+typedef (ImageData or HTMLImageElement or HTMLCanvasElement) TexImageSource;
|
||
|
+#endif
|
||
|
|
||
|
[
|
||
|
Conditional=WEBGL,
|
||
|
diff --git a/Source/WebCore/testing/Internals.cpp b/Source/WebCore/testing/Internals.cpp
|
||
|
index 6d26d556e33..6d64845fd27 100644
|
||
|
--- a/Source/WebCore/testing/Internals.cpp
|
||
|
+++ b/Source/WebCore/testing/Internals.cpp
|
||
|
@@ -2765,6 +2765,30 @@ String Internals::getImageSourceURL(Element& element)
|
||
|
|
||
|
#if ENABLE(VIDEO)
|
||
|
|
||
|
+Vector<String> Internals::mediaResponseSources(HTMLMediaElement& media)
|
||
|
+{
|
||
|
+ auto* resourceLoader = media.lastMediaResourceLoaderForTesting();
|
||
|
+ if (!resourceLoader)
|
||
|
+ return { };
|
||
|
+ Vector<String> result;
|
||
|
+ auto responses = resourceLoader->responsesForTesting();
|
||
|
+ for (auto& response : responses)
|
||
|
+ result.append(responseSourceToString(response));
|
||
|
+ return result;
|
||
|
+}
|
||
|
+
|
||
|
+Vector<String> Internals::mediaResponseContentRanges(HTMLMediaElement& media)
|
||
|
+{
|
||
|
+ auto* resourceLoader = media.lastMediaResourceLoaderForTesting();
|
||
|
+ if (!resourceLoader)
|
||
|
+ return { };
|
||
|
+ Vector<String> result;
|
||
|
+ auto responses = resourceLoader->responsesForTesting();
|
||
|
+ for (auto& response : responses)
|
||
|
+ result.append(response.httpHeaderField(HTTPHeaderName::ContentRange));
|
||
|
+ return result;
|
||
|
+}
|
||
|
+
|
||
|
void Internals::simulateAudioInterruption(HTMLMediaElement& element)
|
||
|
{
|
||
|
#if USE(GSTREAMER)
|
||
|
diff --git a/Source/WebCore/testing/Internals.h b/Source/WebCore/testing/Internals.h
|
||
|
index f5c08a87dfd..d35f651e452 100644
|
||
|
--- a/Source/WebCore/testing/Internals.h
|
||
|
+++ b/Source/WebCore/testing/Internals.h
|
||
|
@@ -401,6 +401,8 @@ public:
|
||
|
String getImageSourceURL(Element&);
|
||
|
|
||
|
#if ENABLE(VIDEO)
|
||
|
+ Vector<String> mediaResponseSources(HTMLMediaElement&);
|
||
|
+ Vector<String> mediaResponseContentRanges(HTMLMediaElement&);
|
||
|
void simulateAudioInterruption(HTMLMediaElement&);
|
||
|
ExceptionOr<bool> mediaElementHasCharacteristic(HTMLMediaElement&, const String&);
|
||
|
#endif
|
||
|
diff --git a/Source/WebCore/testing/Internals.idl b/Source/WebCore/testing/Internals.idl
|
||
|
index 155b70b4abf..3fe6885d362 100644
|
||
|
--- a/Source/WebCore/testing/Internals.idl
|
||
|
+++ b/Source/WebCore/testing/Internals.idl
|
||
|
@@ -386,6 +386,8 @@ enum EventThrottlingBehavior {
|
||
|
|
||
|
void enableAutoSizeMode(boolean enabled, long minimumWidth, long minimumHeight, long maximumWidth, long maximumHeight);
|
||
|
|
||
|
+ [Conditional=VIDEO] sequence<DOMString> mediaResponseSources(HTMLMediaElement media);
|
||
|
+ [Conditional=VIDEO] sequence<DOMString> mediaResponseContentRanges(HTMLMediaElement media);
|
||
|
[Conditional=VIDEO] void simulateAudioInterruption(HTMLMediaElement element);
|
||
|
[Conditional=VIDEO, MayThrowException] boolean mediaElementHasCharacteristic(HTMLMediaElement element, DOMString characteristic);
|
||
|
|
||
|
--
|
||
|
2.13.3
|
||
|
|