0003-Fix-broken-build-when-ENABLE_VIDEO-is-disabled.patch 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. From c054224e551547c3e3593b60ca1226fa4ac41c01 Mon Sep 17 00:00:00 2001
  2. From: "timothy@hatcher.name"
  3. <timothy@hatcher.name@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
  4. Date: Tue, 11 Jul 2017 18:07:24 +0000
  5. Subject: [PATCH] Fix broken build when ENABLE_VIDEO is disabled.
  6. https://bugs.webkit.org/show_bug.cgi?id=174368
  7. Reviewed by Alex Christensen.
  8. * dom/Document.cpp:
  9. * html/canvas/WebGLRenderingContextBase.cpp:
  10. (WebCore::WebGLRenderingContextBase::texSubImage2D):
  11. (WebCore::WebGLRenderingContextBase::texImage2D):
  12. * html/canvas/WebGLRenderingContextBase.h:
  13. * html/canvas/WebGLRenderingContextBase.idl:
  14. * testing/Internals.cpp:
  15. (WebCore::Internals::mediaResponseSources):
  16. (WebCore::Internals::mediaResponseContentRanges):
  17. * testing/Internals.h:
  18. * testing/Internals.idl:
  19. Signed-off-by: Adrian Perez de Castro <aperez@igalia.com>
  20. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@219343 268f45cc-cd09-0410-ab3c-d52691b4dbfc
  21. ---
  22. .../html/canvas/WebGLRenderingContextBase.cpp | 16 +++++++++++----
  23. .../html/canvas/WebGLRenderingContextBase.h | 12 ++++++++++-
  24. .../html/canvas/WebGLRenderingContextBase.idl | 4 ++++
  25. Source/WebCore/testing/Internals.cpp | 24 ++++++++++++++++++++++
  26. Source/WebCore/testing/Internals.h | 2 ++
  27. Source/WebCore/testing/Internals.idl | 2 ++
  28. 6 files changed, 55 insertions(+), 5 deletions(-)
  29. diff --git a/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp b/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp
  30. index f8fd63f7d87..a76a44ff06b 100644
  31. --- a/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp
  32. +++ b/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp
  33. @@ -3597,7 +3597,9 @@ ExceptionOr<void> WebGLRenderingContextBase::texSubImage2D(GC3Denum target, GC3D
  34. else
  35. texSubImage2DImpl(target, level, xoffset, yoffset, format, type, canvas->copiedImage(), GraphicsContext3D::HtmlDomCanvas, m_unpackFlipY, m_unpackPremultiplyAlpha);
  36. return { };
  37. - }, [&](const RefPtr<HTMLVideoElement>& video) -> ExceptionOr<void> {
  38. + }
  39. +#if ENABLE(VIDEO)
  40. + , [&](const RefPtr<HTMLVideoElement>& video) -> ExceptionOr<void> {
  41. ExceptionCode ec = 0;
  42. if (isContextLostOrPending() || !validateHTMLVideoElement("texSubImage2D", video.get(), ec))
  43. return ec ? Exception { ec } : ExceptionOr<void> { };
  44. @@ -3620,7 +3622,9 @@ ExceptionOr<void> WebGLRenderingContextBase::texSubImage2D(GC3Denum target, GC3D
  45. return { };
  46. texSubImage2DImpl(target, level, xoffset, yoffset, format, type, image.get(), GraphicsContext3D::HtmlDomVideo, m_unpackFlipY, m_unpackPremultiplyAlpha);
  47. return { };
  48. - });
  49. + }
  50. +#endif
  51. + );
  52. return WTF::visit(visitor, source.value());
  53. }
  54. @@ -4107,7 +4111,9 @@ ExceptionOr<void> WebGLRenderingContextBase::texImage2D(GC3Denum target, GC3Dint
  55. else
  56. texImage2DImpl(target, level, internalformat, format, type, canvas->copiedImage(), GraphicsContext3D::HtmlDomCanvas, m_unpackFlipY, m_unpackPremultiplyAlpha);
  57. return { };
  58. - }, [&](const RefPtr<HTMLVideoElement>& video) -> ExceptionOr<void> {
  59. + }
  60. +#if ENABLE(VIDEO)
  61. + , [&](const RefPtr<HTMLVideoElement>& video) -> ExceptionOr<void> {
  62. ExceptionCode ec = 0;
  63. if (isContextLostOrPending() || !validateHTMLVideoElement("texImage2D", video.get(), ec)
  64. || !validateTexFunc("texImage2D", TexImage, SourceHTMLVideoElement, target, level, internalformat, video->videoWidth(), video->videoHeight(), 0, format, type, 0, 0))
  65. @@ -4137,7 +4143,9 @@ ExceptionOr<void> WebGLRenderingContextBase::texImage2D(GC3Denum target, GC3Dint
  66. return { };
  67. texImage2DImpl(target, level, internalformat, format, type, image.get(), GraphicsContext3D::HtmlDomVideo, m_unpackFlipY, m_unpackPremultiplyAlpha);
  68. return { };
  69. - });
  70. + }
  71. +#endif
  72. + );
  73. return WTF::visit(visitor, source.value());
  74. }
  75. diff --git a/Source/WebCore/html/canvas/WebGLRenderingContextBase.h b/Source/WebCore/html/canvas/WebGLRenderingContextBase.h
  76. index 31e5542e612..d4738e834a1 100644
  77. --- a/Source/WebCore/html/canvas/WebGLRenderingContextBase.h
  78. +++ b/Source/WebCore/html/canvas/WebGLRenderingContextBase.h
  79. @@ -57,7 +57,6 @@ class EXTShaderTextureLOD;
  80. class EXTsRGB;
  81. class EXTFragDepth;
  82. class HTMLImageElement;
  83. -class HTMLVideoElement;
  84. class ImageData;
  85. class IntSize;
  86. class OESStandardDerivatives;
  87. @@ -85,6 +84,10 @@ class WebGLSharedObject;
  88. class WebGLShaderPrecisionFormat;
  89. class WebGLUniformLocation;
  90. +#if ENABLE(VIDEO)
  91. +class HTMLVideoElement;
  92. +#endif
  93. +
  94. inline void clip1D(GC3Dint start, GC3Dsizei range, GC3Dsizei sourceRange, GC3Dint* clippedStart, GC3Dsizei* clippedRange)
  95. {
  96. ASSERT(clippedStart && clippedRange);
  97. @@ -244,7 +247,12 @@ public:
  98. void texImage2D(GC3Denum target, GC3Dint level, GC3Denum internalformat, GC3Dsizei width, GC3Dsizei height, GC3Dint border, GC3Denum format, GC3Denum type, RefPtr<ArrayBufferView>&&);
  99. +#if ENABLE(VIDEO)
  100. using TexImageSource = WTF::Variant<RefPtr<ImageData>, RefPtr<HTMLImageElement>, RefPtr<HTMLCanvasElement>, RefPtr<HTMLVideoElement>>;
  101. +#else
  102. + using TexImageSource = WTF::Variant<RefPtr<ImageData>, RefPtr<HTMLImageElement>, RefPtr<HTMLCanvasElement>>;
  103. +#endif
  104. +
  105. ExceptionOr<void> texImage2D(GC3Denum target, GC3Dint level, GC3Denum internalformat, GC3Denum format, GC3Denum type, std::optional<TexImageSource>);
  106. void texParameterf(GC3Denum target, GC3Denum pname, GC3Dfloat param);
  107. @@ -677,7 +685,9 @@ protected:
  108. SourceImageData,
  109. SourceHTMLImageElement,
  110. SourceHTMLCanvasElement,
  111. +#if ENABLE(VIDEO)
  112. SourceHTMLVideoElement,
  113. +#endif
  114. };
  115. // Helper function for tex{Sub}Image2D to check if the input format/type/level/target/width/height/border/xoffset/yoffset are valid.
  116. diff --git a/Source/WebCore/html/canvas/WebGLRenderingContextBase.idl b/Source/WebCore/html/canvas/WebGLRenderingContextBase.idl
  117. index 63b64cdebd2..3111e798a89 100644
  118. --- a/Source/WebCore/html/canvas/WebGLRenderingContextBase.idl
  119. +++ b/Source/WebCore/html/canvas/WebGLRenderingContextBase.idl
  120. @@ -42,7 +42,11 @@ typedef (Float32Array or sequence<GLfloat>) Float32List;
  121. typedef (Int32Array or sequence<GLint>) Int32List;
  122. // FIXME: Should allow ImageBitmap too.
  123. +#ifdef ENABLE_VIDEO
  124. typedef (ImageData or HTMLImageElement or HTMLCanvasElement or HTMLVideoElement) TexImageSource;
  125. +#else
  126. +typedef (ImageData or HTMLImageElement or HTMLCanvasElement) TexImageSource;
  127. +#endif
  128. [
  129. Conditional=WEBGL,
  130. diff --git a/Source/WebCore/testing/Internals.cpp b/Source/WebCore/testing/Internals.cpp
  131. index 6d26d556e33..6d64845fd27 100644
  132. --- a/Source/WebCore/testing/Internals.cpp
  133. +++ b/Source/WebCore/testing/Internals.cpp
  134. @@ -2765,6 +2765,30 @@ String Internals::getImageSourceURL(Element& element)
  135. #if ENABLE(VIDEO)
  136. +Vector<String> Internals::mediaResponseSources(HTMLMediaElement& media)
  137. +{
  138. + auto* resourceLoader = media.lastMediaResourceLoaderForTesting();
  139. + if (!resourceLoader)
  140. + return { };
  141. + Vector<String> result;
  142. + auto responses = resourceLoader->responsesForTesting();
  143. + for (auto& response : responses)
  144. + result.append(responseSourceToString(response));
  145. + return result;
  146. +}
  147. +
  148. +Vector<String> Internals::mediaResponseContentRanges(HTMLMediaElement& media)
  149. +{
  150. + auto* resourceLoader = media.lastMediaResourceLoaderForTesting();
  151. + if (!resourceLoader)
  152. + return { };
  153. + Vector<String> result;
  154. + auto responses = resourceLoader->responsesForTesting();
  155. + for (auto& response : responses)
  156. + result.append(response.httpHeaderField(HTTPHeaderName::ContentRange));
  157. + return result;
  158. +}
  159. +
  160. void Internals::simulateAudioInterruption(HTMLMediaElement& element)
  161. {
  162. #if USE(GSTREAMER)
  163. diff --git a/Source/WebCore/testing/Internals.h b/Source/WebCore/testing/Internals.h
  164. index f5c08a87dfd..d35f651e452 100644
  165. --- a/Source/WebCore/testing/Internals.h
  166. +++ b/Source/WebCore/testing/Internals.h
  167. @@ -401,6 +401,8 @@ public:
  168. String getImageSourceURL(Element&);
  169. #if ENABLE(VIDEO)
  170. + Vector<String> mediaResponseSources(HTMLMediaElement&);
  171. + Vector<String> mediaResponseContentRanges(HTMLMediaElement&);
  172. void simulateAudioInterruption(HTMLMediaElement&);
  173. ExceptionOr<bool> mediaElementHasCharacteristic(HTMLMediaElement&, const String&);
  174. #endif
  175. diff --git a/Source/WebCore/testing/Internals.idl b/Source/WebCore/testing/Internals.idl
  176. index 155b70b4abf..3fe6885d362 100644
  177. --- a/Source/WebCore/testing/Internals.idl
  178. +++ b/Source/WebCore/testing/Internals.idl
  179. @@ -386,6 +386,8 @@ enum EventThrottlingBehavior {
  180. void enableAutoSizeMode(boolean enabled, long minimumWidth, long minimumHeight, long maximumWidth, long maximumHeight);
  181. + [Conditional=VIDEO] sequence<DOMString> mediaResponseSources(HTMLMediaElement media);
  182. + [Conditional=VIDEO] sequence<DOMString> mediaResponseContentRanges(HTMLMediaElement media);
  183. [Conditional=VIDEO] void simulateAudioInterruption(HTMLMediaElement element);
  184. [Conditional=VIDEO, MayThrowException] boolean mediaElementHasCharacteristic(HTMLMediaElement element, DOMString characteristic);
  185. --
  186. 2.13.3