1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
|
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
|