Bug#862502: unblock: webkit2gtk/2.14.7-1
Michael Biebl
biebl at debian.org
Sat May 13 18:07:12 UTC 2017
Package: release.debian.org
Severity: normal
User: release.debian.org at packages.debian.org
Usertags: unblock
Please unblock package webkit2gtk
Apparently Google introduced a new sign-in page.
This breaks users of webkit2gtk in a rather bad way as it is no longer
possible to log in.
The most important affected packages are probably epiphany-browser and
gnome-online-accounts.
The upstream bug report is at
https://bugs.webkit.org/show_bug.cgi?id=171770
We already have two downstream bug reports:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=862156
and users reporting this on the user mailing list:
https://lists.debian.org/debian-user/2017/05/msg00404.html
This was fixed in the new upstream release 2.14.7-1 and it's important
we git this fix into stretch.
Full debdiff is attached.
Regards,
Michael
unblock webkit2gtk/2.14.7-1
-- System Information:
Debian Release: 9.0
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: amd64
(x86_64)
Foreign Architectures: i386
Kernel: Linux 4.9.0-3-amd64 (SMP w/4 CPU cores)
Locale: LANG=de_DE.utf8, LC_CTYPE=de_DE.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
-------------- next part --------------
diff -Nru webkit2gtk-2.14.6/debian/changelog webkit2gtk-2.14.7/debian/changelog
--- webkit2gtk-2.14.6/debian/changelog 2017-04-07 12:56:45.000000000 +0200
+++ webkit2gtk-2.14.7/debian/changelog 2017-05-09 15:48:39.000000000 +0200
@@ -1,3 +1,11 @@
+webkit2gtk (2.14.7-1) unstable; urgency=medium
+
+ * New upstream release.
+ * debian/copyright:
+ + Update copyright years and remove nonexistent files.
+
+ -- Alberto Garcia <berto at igalia.com> Tue, 09 May 2017 16:48:39 +0300
+
webkit2gtk (2.14.6-1) unstable; urgency=high
* New upstream release.
diff -Nru webkit2gtk-2.14.6/debian/copyright webkit2gtk-2.14.7/debian/copyright
--- webkit2gtk-2.14.6/debian/copyright 2017-04-07 12:56:45.000000000 +0200
+++ webkit2gtk-2.14.7/debian/copyright 2017-05-09 15:48:39.000000000 +0200
@@ -3,7 +3,7 @@
Source: https://webkitgtk.org/releases/
Files: *
-Copyright: ? 2002-2016 Apple Inc. and others
+Copyright: ? 2002-2017 Apple Inc. and others
License: BSD-2-clause
Comment:
The default license of WebKit is BSD 2-clause, available in
@@ -22,8 +22,6 @@
Source/JavaScriptCore/bytecode/JumpTable.h
Source/JavaScriptCore/bytecode/Opcode.cpp
Source/JavaScriptCore/bytecode/Opcode.h
- Source/JavaScriptCore/bytecode/SamplingTool.cpp
- Source/JavaScriptCore/bytecode/SamplingTool.h
Source/JavaScriptCore/bytecode/SpeculatedType.cpp
Source/JavaScriptCore/bytecode/SpeculatedType.h
Source/JavaScriptCore/bytecode/ValueProfile.h
@@ -64,16 +62,10 @@
Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.h
Source/JavaScriptCore/interpreter/Interpreter.cpp
Source/JavaScriptCore/interpreter/Interpreter.h
- Source/JavaScriptCore/interpreter/JSStack.cpp
- Source/JavaScriptCore/interpreter/JSStack.h
Source/JavaScriptCore/interpreter/Register.h
Source/JavaScriptCore/jit/CompactJITCodeMap.h
Source/JavaScriptCore/parser/SourceCode.h
Source/JavaScriptCore/parser/SourceProvider.h
- Source/JavaScriptCore/profiler/LegacyProfiler.cpp
- Source/JavaScriptCore/profiler/LegacyProfiler.h
- Source/JavaScriptCore/profiler/ProfileNode.cpp
- Source/JavaScriptCore/profiler/ProfileNode.h
Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputsTemplates.py
Source/JavaScriptCore/runtime/CallData.h
Source/JavaScriptCore/runtime/ConstructData.h
@@ -86,8 +78,6 @@
Source/JavaScriptCore/runtime/JSGlobalObject.cpp
Source/JavaScriptCore/runtime/JSLexicalEnvironment.cpp
Source/JavaScriptCore/runtime/JSLexicalEnvironment.h
- Source/JavaScriptCore/runtime/JSNotAnObject.cpp
- Source/JavaScriptCore/runtime/JSNotAnObject.h
Source/JavaScriptCore/runtime/JSSegmentedVariableObject.cpp
Source/JavaScriptCore/runtime/JSSegmentedVariableObject.h
Source/JavaScriptCore/runtime/JSSymbolTableObject.cpp
@@ -205,7 +195,6 @@
Source/WebCore/bindings/js/JSCallbackData.h
Source/WebCore/bindings/js/JSCommandLineAPIHostCustom.cpp
Source/WebCore/bindings/js/JSCustomSQLStatementErrorCallback.cpp
- Source/WebCore/bindings/js/JSDOMFormDataCustom.cpp
Source/WebCore/bindings/js/JSDOMWindowShell.cpp
Source/WebCore/bindings/js/JSDOMWindowShell.h
Source/WebCore/bindings/js/JSDataTransferCustom.cpp
@@ -248,16 +237,12 @@
Source/WebCore/css/CSSGridLineNamesValue.h
Source/WebCore/css/CSSGridTemplateAreasValue.cpp
Source/WebCore/css/CSSGridTemplateAreasValue.h
- Source/WebCore/css/CSSOMUtils.cpp
- Source/WebCore/css/CSSOMUtils.h
Source/WebCore/css/CSSPropertySourceData.cpp
Source/WebCore/css/CSSPropertySourceData.h
Source/WebCore/css/CSSSupportsRule.cpp
Source/WebCore/css/CSSSupportsRule.h
Source/WebCore/css/CSSToLengthConversionData.cpp
Source/WebCore/css/CSSToLengthConversionData.h
- Source/WebCore/css/DOMWindowCSS.cpp
- Source/WebCore/css/DOMWindowCSS.h
Source/WebCore/dom/ChildListMutationScope.cpp
Source/WebCore/dom/ChildListMutationScope.h
Source/WebCore/dom/CurrentScriptIncrementer.h
@@ -273,13 +258,10 @@
Source/WebCore/dom/ElementRareData.cpp
Source/WebCore/dom/ErrorEvent.cpp
Source/WebCore/dom/ErrorEvent.h
- Source/WebCore/dom/EventException.h
Source/WebCore/dom/ExceptionBase.cpp
Source/WebCore/dom/ExceptionBase.h
Source/WebCore/dom/ExceptionCodePlaceholder.cpp
Source/WebCore/dom/ExceptionCodePlaceholder.h
- Source/WebCore/dom/IconURL.h
- Source/WebCore/dom/MessagePortChannel.cpp
Source/WebCore/dom/MessagePortChannel.h
Source/WebCore/dom/MutationCallback.h
Source/WebCore/dom/MutationObserver.cpp
@@ -320,7 +302,6 @@
Source/WebCore/editing/SmartReplace.cpp
Source/WebCore/editing/SmartReplace.h
Source/WebCore/editing/SmartReplaceCF.cpp
- Source/WebCore/editing/SurroundingText.cpp
Source/WebCore/editing/SurroundingText.h
Source/WebCore/editing/UndoStep.h
Source/WebCore/extract-localizable-strings.pl
@@ -451,8 +432,6 @@
Source/WebCore/page/Performance.h
Source/WebCore/page/PerformanceEntry.cpp
Source/WebCore/page/PerformanceEntry.h
- Source/WebCore/page/PerformanceEntryList.cpp
- Source/WebCore/page/PerformanceEntryList.h
Source/WebCore/page/PerformanceNavigation.cpp
Source/WebCore/page/PerformanceNavigation.h
Source/WebCore/page/PerformanceResourceTiming.cpp
@@ -472,8 +451,6 @@
Source/WebCore/platform/CalculationValue.h
Source/WebCore/platform/ColorChooser.h
Source/WebCore/platform/ColorChooserClient.h
- Source/WebCore/platform/CrossThreadCopier.cpp
- Source/WebCore/platform/CrossThreadCopier.h
Source/WebCore/platform/DateComponents.cpp
Source/WebCore/platform/DateComponents.h
Source/WebCore/platform/DateTimeChooser.h
@@ -546,14 +523,7 @@
Source/WebCore/platform/network/MIMEHeader.h
Source/WebCore/platform/network/ParsedContentType.cpp
Source/WebCore/platform/network/ParsedContentType.h
- Source/WebCore/platform/network/SocketStreamErrorBase.cpp
- Source/WebCore/platform/network/SocketStreamErrorBase.h
- Source/WebCore/platform/network/SocketStreamHandleBase.cpp
- Source/WebCore/platform/network/SocketStreamHandleBase.h
Source/WebCore/platform/network/SocketStreamHandleClient.h
- Source/WebCore/platform/network/soup/SocketStreamError.h
- Source/WebCore/platform/network/soup/SocketStreamHandle.h
- Source/WebCore/platform/network/soup/SocketStreamHandleSoup.cpp
Source/WebCore/platform/posix/FileSystemPOSIX.cpp
Source/WebCore/platform/sql/SQLValue.cpp
Source/WebCore/platform/sql/SQLValue.h
@@ -575,7 +545,6 @@
Source/WebCore/platform/text/TextChecking.h
Source/WebCore/platform/text/TextEncodingDetector.h
Source/WebCore/platform/text/TextEncodingDetectorICU.cpp
- Source/WebCore/platform/text/TextEncodingDetectorNone.cpp
Source/WebCore/platform/text/WritingMode.h
Source/WebCore/plugins/npruntime.h
Source/WebCore/rendering/OrderIterator.cpp
@@ -598,11 +567,8 @@
Source/WebCore/rendering/RenderRubyRun.h
Source/WebCore/rendering/RenderRubyText.cpp
Source/WebCore/rendering/RenderRubyText.h
- Source/WebCore/rendering/style/GridCoordinate.h
Source/WebCore/rendering/style/GridLength.h
Source/WebCore/rendering/style/GridPosition.h
- Source/WebCore/rendering/style/GridResolvedPosition.cpp
- Source/WebCore/rendering/style/GridResolvedPosition.h
Source/WebCore/rendering/style/GridTrackSize.h
Source/WebCore/rendering/style/StyleGridItemData.cpp
Source/WebCore/rendering/style/StyleGridItemData.h
@@ -616,7 +582,6 @@
Source/WebCore/xml/XPathException.h
Source/WebCore/xml/XSLTUnicodeSort.cpp
Source/WebCore/xml/XSLTUnicodeSort.h
- Source/WebKit/scripts/*
Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp
Source/WebKit2/UIProcess/API/gtk/WebKitSettings.h
Source/WebKit2/UIProcess/InspectorServer/HTTPRequest.h
@@ -803,7 +768,6 @@
Source/WTF/wtf/ListHashSet.h
Source/WTF/wtf/Noncopyable.h
Source/WTF/wtf/NumberOfCores.h
- Source/WTF/wtf/PassRef.h
Source/WTF/wtf/PassRefPtr.h
Source/WTF/wtf/RefCounted.h
Source/WTF/wtf/RefCountedLeakCounter.cpp
@@ -838,7 +802,6 @@
Source/WebCore/bindings/js/JSDOMMimeTypeArrayCustom.cpp
Source/WebCore/bindings/js/JSDOMPluginArrayCustom.cpp
Source/WebCore/bindings/js/JSDOMPluginCustom.cpp
- Source/WebCore/bindings/js/JSDOMStringListCustom.cpp
Source/WebCore/bindings/js/JSDOMWindowBase.cpp
Source/WebCore/bindings/js/JSDOMWindowBase.h
Source/WebCore/bindings/js/JSDOMWindowCustom.cpp
@@ -879,8 +842,6 @@
Source/WebCore/dom/CDATASection.h
Source/WebCore/dom/CharacterData.cpp
Source/WebCore/dom/CharacterData.h
- Source/WebCore/dom/CheckedRadioButtons.cpp
- Source/WebCore/dom/CheckedRadioButtons.h
Source/WebCore/dom/ChildNodeList.cpp
Source/WebCore/dom/ChildNodeList.h
Source/WebCore/dom/ClipboardEvent.cpp
@@ -908,9 +869,6 @@
Source/WebCore/dom/Element.h
Source/WebCore/dom/ElementRareData.h
Source/WebCore/dom/ElementTraversal.h
- Source/WebCore/dom/Entity.h
- Source/WebCore/dom/EntityReference.cpp
- Source/WebCore/dom/EntityReference.h
Source/WebCore/dom/Event.cpp
Source/WebCore/dom/Event.h
Source/WebCore/dom/EventDispatcher.cpp
@@ -954,7 +912,6 @@
Source/WebCore/dom/QualifiedName.h
Source/WebCore/dom/Range.cpp
Source/WebCore/dom/Range.h
- Source/WebCore/dom/RegisteredEventListener.cpp
Source/WebCore/dom/RegisteredEventListener.h
Source/WebCore/dom/ScriptElement.cpp
Source/WebCore/dom/ScriptElement.h
@@ -1050,8 +1007,6 @@
Source/WebCore/platform/graphics/IntSizeHash.h
Source/WebCore/platform/graphics/Latin1TextIterator.h
Source/WebCore/platform/graphics/PathTraversalState.cpp
- Source/WebCore/platform/graphics/SVGGlyph.cpp
- Source/WebCore/platform/graphics/SVGGlyph.h
Source/WebCore/platform/graphics/StrokeStyleApplier.h
Source/WebCore/platform/graphics/SurrogatePairAwareTextIterator.cpp
Source/WebCore/platform/graphics/SurrogatePairAwareTextIterator.h
@@ -1078,8 +1033,6 @@
Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h
Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedSurface.h
Source/WebCore/platform/graphics/texmap/coordinated/SurfaceUpdateInfo.h
- Source/WebCore/platform/graphics/texmap/coordinated/UpdateAtlas.cpp
- Source/WebCore/platform/graphics/texmap/coordinated/UpdateAtlas.h
Source/WebCore/platform/graphics/transforms/*
Source/WebCore/platform/gtk/*
Source/WebCore/platform/image-decoders/ImageDecoder.cpp
@@ -1104,12 +1057,7 @@
Source/WebCore/platform/text/ParserUtilities.h
Source/WebCore/platform/text/SegmentedString.cpp
Source/WebCore/platform/text/SegmentedString.h
- Source/WebCore/platform/text/TextBreakIterator.cpp
- Source/WebCore/platform/text/TextBreakIterator.h
- Source/WebCore/platform/text/TextBreakIteratorInternalICU.h
Source/WebCore/platform/text/enchant/*
- Source/WebCore/platform/text/gtk/*
- Source/WebCore/platform/text/wchar/*
Source/WebCore/plugins/DOMMimeType.cpp
Source/WebCore/plugins/DOMMimeType.h
Source/WebCore/plugins/DOMMimeTypeArray.cpp
@@ -1208,8 +1156,6 @@
Files: Source/WebCore/bridge/npruntime_internal.h
Source/WebCore/platform/graphics/OpenGLShims.cpp
Source/WebCore/platform/graphics/OpenGLShims.h
- Source/WebCore/platform/graphics/texmap/coordinated/AreaAllocator.cpp
- Source/WebCore/platform/graphics/texmap/coordinated/AreaAllocator.h
Source/WebKit2/UIProcess/API/gtk/WebKitCookieManager.cpp
Source/WebKit2/UIProcess/API/gtk/WebKitCookieManager.h
Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp
@@ -1238,7 +1184,6 @@
Source/WTF/wtf/DateMath.cpp
Source/WTF/wtf/DateMath.h
Source/WebCore/html/HTMLDocument.cpp
- Source/WebCore/platform/gtk/CursorGtk.h
Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp
Source/WebCore/platform/image-decoders/gif/GIFImageReader.h
Source/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp
@@ -1288,7 +1233,7 @@
Files: debian/*
Copyright: ? 2007-2009 Mike Hommey <glandium at debian.org>
? 2009 Gustavo Noronha Silva <kov at debian.org>
- ? 2014-2016 Alberto Garcia <berto at igalia.com>
+ ? 2014-2017 Alberto Garcia <berto at igalia.com>
License: LGPL-2+
License: BSD-2-clause
diff -Nru webkit2gtk-2.14.6/Documentation/webkit2gtk-4.0/html/index.html webkit2gtk-2.14.7/Documentation/webkit2gtk-4.0/html/index.html
--- webkit2gtk-2.14.6/Documentation/webkit2gtk-4.0/html/index.html 2017-04-06 15:35:56.000000000 +0200
+++ webkit2gtk-2.14.7/Documentation/webkit2gtk-4.0/html/index.html 2017-05-09 12:53:37.000000000 +0200
@@ -14,7 +14,7 @@
<div class="titlepage">
<div>
<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">WebKit2GTK+ Reference Manual</p></th></tr></table></div>
-<div><p class="releaseinfo">for WebKit2GTK+ 2.14.6</p></div>
+<div><p class="releaseinfo">for WebKit2GTK+ 2.14.7</p></div>
</div>
<hr>
</div>
diff -Nru webkit2gtk-2.14.6/Documentation/webkit2gtk-4.0/html/webkit2gtk-4.0-WebKitVersion.html webkit2gtk-2.14.7/Documentation/webkit2gtk-4.0/html/webkit2gtk-4.0-WebKitVersion.html
--- webkit2gtk-2.14.6/Documentation/webkit2gtk-4.0/html/webkit2gtk-4.0-WebKitVersion.html 2017-04-06 15:35:46.000000000 +0200
+++ webkit2gtk-2.14.7/Documentation/webkit2gtk-4.0/html/webkit2gtk-4.0-WebKitVersion.html 2017-05-09 12:53:27.000000000 +0200
@@ -177,7 +177,7 @@
<hr>
<div class="refsect2">
<a name="WEBKIT-MICRO-VERSION:CAPS"></a><h3>WEBKIT_MICRO_VERSION</h3>
-<pre class="programlisting">#define WEBKIT_MICRO_VERSION (6)
+<pre class="programlisting">#define WEBKIT_MICRO_VERSION (7)
</pre>
<p>Like <a class="link" href="webkit2gtk-4.0-WebKitVersion.html#webkit-get-micro-version" title="webkit_get_micro_version?()"><code class="function">webkit_get_micro_version()</code></a>, but from the headers used at
application compile time, rather than from the library linked
diff -Nru webkit2gtk-2.14.6/Documentation/webkitdomgtk-4.0/html/index.html webkit2gtk-2.14.7/Documentation/webkitdomgtk-4.0/html/index.html
--- webkit2gtk-2.14.6/Documentation/webkitdomgtk-4.0/html/index.html 2017-04-06 15:35:28.000000000 +0200
+++ webkit2gtk-2.14.7/Documentation/webkitdomgtk-4.0/html/index.html 2017-05-09 12:53:09.000000000 +0200
@@ -14,7 +14,7 @@
<div class="titlepage">
<div>
<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">WebKitDOMGTK+ Reference Manual</p></th></tr></table></div>
-<div><p class="releaseinfo">for WebKitDOMGTK+ 2.14.6</p></div>
+<div><p class="releaseinfo">for WebKitDOMGTK+ 2.14.7</p></div>
</div>
<hr>
</div>
diff -Nru webkit2gtk-2.14.6/NEWS webkit2gtk-2.14.7/NEWS
--- webkit2gtk-2.14.6/NEWS 2017-04-06 15:16:08.000000000 +0200
+++ webkit2gtk-2.14.7/NEWS 2017-05-09 12:23:58.000000000 +0200
@@ -1,4 +1,13 @@
==================
+WebKitGTK+ 2.14.7
+==================
+
+What's new in WebKitGTK+ 2.14.7?
+
+ - Update user agent quirks to make Youtube and new Google login page work.
+ - Fix playing of some live streams.
+
+==================
WebKitGTK+ 2.14.6
==================
diff -Nru webkit2gtk-2.14.6/Source/cmake/OptionsGTK.cmake webkit2gtk-2.14.7/Source/cmake/OptionsGTK.cmake
--- webkit2gtk-2.14.6/Source/cmake/OptionsGTK.cmake 2017-04-06 15:07:35.000000000 +0200
+++ webkit2gtk-2.14.7/Source/cmake/OptionsGTK.cmake 2017-05-09 12:22:01.000000000 +0200
@@ -2,7 +2,7 @@
set(PROJECT_VERSION_MAJOR 2)
set(PROJECT_VERSION_MINOR 14)
-set(PROJECT_VERSION_MICRO 6)
+set(PROJECT_VERSION_MICRO 7)
set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_MICRO})
set(WEBKITGTK_API_VERSION 4.0)
@@ -15,8 +15,8 @@
# Libtool library version, not to be confused with API version.
# See http://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html
-CALCULATE_LIBRARY_VERSIONS_FROM_LIBTOOL_TRIPLE(WEBKIT2 51 13 14)
-CALCULATE_LIBRARY_VERSIONS_FROM_LIBTOOL_TRIPLE(JAVASCRIPTCORE 22 13 4)
+CALCULATE_LIBRARY_VERSIONS_FROM_LIBTOOL_TRIPLE(WEBKIT2 51 14 14)
+CALCULATE_LIBRARY_VERSIONS_FROM_LIBTOOL_TRIPLE(JAVASCRIPTCORE 22 14 4)
# These are shared variables, but we special case their definition so that we can use the
# CMAKE_INSTALL_* variables that are populated by the GNUInstallDirs macro.
diff -Nru webkit2gtk-2.14.6/Source/WebCore/platform/graphics/GeometryUtilities.cpp webkit2gtk-2.14.7/Source/WebCore/platform/graphics/GeometryUtilities.cpp
--- webkit2gtk-2.14.6/Source/WebCore/platform/graphics/GeometryUtilities.cpp 2017-02-07 09:05:08.000000000 +0100
+++ webkit2gtk-2.14.7/Source/WebCore/platform/graphics/GeometryUtilities.cpp 2017-05-09 12:01:40.000000000 +0200
@@ -146,4 +146,18 @@
return destRect;
}
+bool ellipseContainsPoint(const FloatPoint& center, const FloatSize& radii, const FloatPoint& point)
+{
+ FloatPoint transformedPoint(point);
+ transformedPoint.move(-center.x(), -center.y());
+ transformedPoint.scale(radii.height(), radii.width());
+ float radius = radii.width() * radii.height();
+
+ if (transformedPoint.x() > radius || transformedPoint.y() > radius)
+ return false;
+ if (transformedPoint.x() + transformedPoint.y() <= radius)
+ return true;
+ return (transformedPoint.lengthSquared() <= radius * radius);
+}
+
}
diff -Nru webkit2gtk-2.14.6/Source/WebCore/platform/graphics/GeometryUtilities.h webkit2gtk-2.14.7/Source/WebCore/platform/graphics/GeometryUtilities.h
--- webkit2gtk-2.14.6/Source/WebCore/platform/graphics/GeometryUtilities.h 2017-02-07 09:05:08.000000000 +0100
+++ webkit2gtk-2.14.7/Source/WebCore/platform/graphics/GeometryUtilities.h 2017-05-09 12:01:40.000000000 +0200
@@ -23,8 +23,7 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef GeometryUtilities_h
-#define GeometryUtilities_h
+#pragma once
#include "FloatRect.h"
#include "IntRect.h"
@@ -51,6 +50,5 @@
// Compute a rect that encloses all points covered by the given rect if it were rotated a full turn around (0,0).
FloatRect boundsOfRotatingRect(const FloatRect&);
+bool ellipseContainsPoint(const FloatPoint& center, const FloatSize& radii, const FloatPoint&);
}
-
-#endif // GeometryUtilities_h
diff -Nru webkit2gtk-2.14.6/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp webkit2gtk-2.14.7/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
--- webkit2gtk-2.14.6/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp 2017-04-06 14:40:14.000000000 +0200
+++ webkit2gtk-2.14.7/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp 2017-05-09 11:59:35.000000000 +0200
@@ -901,9 +901,7 @@
GST_DEBUG("Message %s received from element %s", GST_MESSAGE_TYPE_NAME(message), GST_MESSAGE_SRC_NAME(message));
switch (GST_MESSAGE_TYPE(message)) {
case GST_MESSAGE_ERROR:
- if (m_resetPipeline)
- break;
- if (m_missingPluginsCallback)
+ if (m_resetPipeline || m_missingPluginsCallback || m_errorOccured)
break;
gst_message_parse_error(message, &err.outPtr(), &debug.outPtr());
GST_ERROR("Error %d: %s (url=%s)", err->code, err->message, m_url.string().utf8().data());
@@ -911,20 +909,19 @@
GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS(GST_BIN(m_pipeline.get()), GST_DEBUG_GRAPH_SHOW_ALL, "webkit-video.error");
error = MediaPlayer::Empty;
- if (err->code == GST_STREAM_ERROR_CODEC_NOT_FOUND
- || err->code == GST_STREAM_ERROR_WRONG_TYPE
- || err->code == GST_STREAM_ERROR_FAILED
- || err->code == GST_CORE_ERROR_MISSING_PLUGIN
- || err->code == GST_RESOURCE_ERROR_NOT_FOUND)
+ if (g_error_matches(err.get(), GST_STREAM_ERROR, GST_STREAM_ERROR_CODEC_NOT_FOUND)
+ || g_error_matches(err.get(), GST_STREAM_ERROR, GST_STREAM_ERROR_WRONG_TYPE)
+ || g_error_matches(err.get(), GST_STREAM_ERROR, GST_STREAM_ERROR_FAILED)
+ || g_error_matches(err.get(), GST_CORE_ERROR, GST_CORE_ERROR_MISSING_PLUGIN)
+ || g_error_matches(err.get(), GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_NOT_FOUND))
error = MediaPlayer::FormatError;
- else if (err->domain == GST_STREAM_ERROR) {
+ else if (g_error_matches(err.get(), GST_STREAM_ERROR, GST_STREAM_ERROR_TYPE_NOT_FOUND)) {
// Let the mediaPlayerClient handle the stream error, in
// this case the HTMLMediaElement will emit a stalled
// event.
- if (err->code == GST_STREAM_ERROR_TYPE_NOT_FOUND) {
- GST_ERROR("Decode error, let the Media element emit a stalled event.");
- break;
- }
+ GST_ERROR("Decode error, let the Media element emit a stalled event.");
+ break;
+ } else if (err->domain == GST_STREAM_ERROR) {
error = MediaPlayer::DecodeError;
attemptNextLocation = true;
} else if (err->domain == GST_RESOURCE_ERROR)
@@ -1380,6 +1377,23 @@
#endif
}
+bool MediaPlayerPrivateGStreamer::hasSingleSecurityOrigin() const
+{
+ if (!WEBKIT_IS_WEB_SRC(m_source.get()))
+ return false;
+
+ GUniqueOutPtr<char> originalURI, resolvedURI;
+ g_object_get(m_source.get(), "location", &originalURI.outPtr(), "resolved-location", &resolvedURI.outPtr(), nullptr);
+ if (!originalURI || !resolvedURI)
+ return false;
+ if (!g_strcmp0(originalURI.get(), resolvedURI.get()))
+ return true;
+
+ Ref<SecurityOrigin> resolvedOrigin(SecurityOrigin::createFromString(String::fromUTF8(resolvedURI.get())));
+ Ref<SecurityOrigin> requestedOrigin(SecurityOrigin::createFromString(String::fromUTF8(originalURI.get())));
+ return resolvedOrigin->isSameSchemeHostPort(&requestedOrigin.get());
+}
+
void MediaPlayerPrivateGStreamer::cancelLoad()
{
if (m_networkState < MediaPlayer::Loading || m_networkState == MediaPlayer::Loaded)
diff -Nru webkit2gtk-2.14.6/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h webkit2gtk-2.14.7/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h
--- webkit2gtk-2.14.6/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h 2017-04-06 14:33:43.000000000 +0200
+++ webkit2gtk-2.14.7/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h 2017-05-09 11:48:38.000000000 +0200
@@ -108,6 +108,8 @@
unsigned long long totalBytes() const override;
float maxTimeLoaded() const override;
+ bool hasSingleSecurityOrigin() const override;
+
void loadStateChanged();
void timeChanged();
void didEnd();
diff -Nru webkit2gtk-2.14.6/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp webkit2gtk-2.14.7/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp
--- webkit2gtk-2.14.6/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp 2017-02-07 10:39:33.000000000 +0100
+++ webkit2gtk-2.14.7/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp 2017-05-09 11:56:14.000000000 +0200
@@ -49,68 +49,76 @@
using namespace WebCore;
class StreamingClient {
- public:
- StreamingClient(WebKitWebSrc*);
- virtual ~StreamingClient();
-
- protected:
- char* createReadBuffer(size_t requestedSize, size_t& actualSize);
- void handleResponseReceived(const ResourceResponse&);
- void handleDataReceived(const char*, int);
- void handleNotifyFinished();
+public:
+ StreamingClient(WebKitWebSrc*, ResourceRequest&&);
+ virtual ~StreamingClient();
+
+protected:
+ char* createReadBuffer(size_t requestedSize, size_t& actualSize);
+ void handleResponseReceived(const ResourceResponse&);
+ void handleDataReceived(const char*, int);
+ void handleNotifyFinished();
- GstElement* m_src;
+ GRefPtr<GstElement> m_src;
+ ResourceRequest m_request;
};
class CachedResourceStreamingClient final : public PlatformMediaResourceClient, public StreamingClient {
WTF_MAKE_NONCOPYABLE(CachedResourceStreamingClient);
- public:
- CachedResourceStreamingClient(WebKitWebSrc*);
- virtual ~CachedResourceStreamingClient();
+public:
+ CachedResourceStreamingClient(WebKitWebSrc*, ResourceRequest&&);
+ virtual ~CachedResourceStreamingClient();
- private:
- // PlatformMediaResourceClient virtual methods.
+private:
+ // PlatformMediaResourceClient virtual methods.
#if USE(SOUP)
- char* getOrCreateReadBuffer(PlatformMediaResource&, size_t requestedSize, size_t& actualSize) override;
+ char* getOrCreateReadBuffer(PlatformMediaResource&, size_t requestedSize, size_t& actualSize) override;
#endif
- void responseReceived(PlatformMediaResource&, const ResourceResponse&) override;
- void dataReceived(PlatformMediaResource&, const char*, int) override;
- void accessControlCheckFailed(PlatformMediaResource&, const ResourceError&) override;
- void loadFailed(PlatformMediaResource&, const ResourceError&) override;
- void loadFinished(PlatformMediaResource&) override;
+ void responseReceived(PlatformMediaResource&, const ResourceResponse&) override;
+ void dataReceived(PlatformMediaResource&, const char*, int) override;
+ void accessControlCheckFailed(PlatformMediaResource&, const ResourceError&) override;
+ void loadFailed(PlatformMediaResource&, const ResourceError&) override;
+ void loadFinished(PlatformMediaResource&) override;
};
-class ResourceHandleStreamingClient : public ResourceHandleClient, public StreamingClient {
- WTF_MAKE_NONCOPYABLE(ResourceHandleStreamingClient); WTF_MAKE_FAST_ALLOCATED;
- public:
- ResourceHandleStreamingClient(WebKitWebSrc*, ResourceRequest&&);
- virtual ~ResourceHandleStreamingClient();
-
- // StreamingClient virtual methods.
- bool loadFailed() const;
- void setDefersLoading(bool);
+class ResourceHandleStreamingClient : public ThreadSafeRefCounted<ResourceHandleStreamingClient>, public ResourceHandleClient, public StreamingClient {
+public:
+ static Ref<ResourceHandleStreamingClient> create(WebKitWebSrc* src, ResourceRequest&& request)
+ {
+ return adoptRef(*new ResourceHandleStreamingClient(src, WTFMove(request)));
+ }
+ virtual ~ResourceHandleStreamingClient();
+
+ void invalidate();
+
+ // StreamingClient virtual methods.
+ bool loadFailed() const;
+ void setDefersLoading(bool);
+
+private:
+ ResourceHandleStreamingClient(WebKitWebSrc*, ResourceRequest&&);
+ void cleanupAndStopRunLoop();
- private:
- // ResourceHandleClient virtual methods.
+ // ResourceHandleClient virtual methods.
#if USE(SOUP)
- char* getOrCreateReadBuffer(size_t requestedSize, size_t& actualSize) override;
+ char* getOrCreateReadBuffer(size_t requestedSize, size_t& actualSize) override;
#endif
- ResourceRequest willSendRequest(ResourceHandle*, ResourceRequest&&, ResourceResponse&&) override;
- void didReceiveResponse(ResourceHandle*, ResourceResponse&&) override;
- void didReceiveData(ResourceHandle*, const char*, unsigned, int) override;
- void didReceiveBuffer(ResourceHandle*, Ref<SharedBuffer>&&, int encodedLength) override;
- void didFinishLoading(ResourceHandle*, double /*finishTime*/) override;
- void didFail(ResourceHandle*, const ResourceError&) override;
- void wasBlocked(ResourceHandle*) override;
- void cannotShowURL(ResourceHandle*) override;
-
- ThreadIdentifier m_thread { 0 };
- Lock m_initializeRunLoopConditionMutex;
- Condition m_initializeRunLoopCondition;
- RunLoop* m_runLoop { nullptr };
- Lock m_terminateRunLoopConditionMutex;
- Condition m_terminateRunLoopCondition;
- RefPtr<ResourceHandle> m_resource;
+ ResourceRequest willSendRequest(ResourceHandle*, ResourceRequest&&, ResourceResponse&&) override;
+ void didReceiveResponse(ResourceHandle*, ResourceResponse&&) override;
+ void didReceiveData(ResourceHandle*, const char*, unsigned, int) override;
+ void didReceiveBuffer(ResourceHandle*, Ref<SharedBuffer>&&, int encodedLength) override;
+ void didFinishLoading(ResourceHandle*, double) override;
+ void didFail(ResourceHandle*, const ResourceError&) override;
+ void wasBlocked(ResourceHandle*) override;
+ void cannotShowURL(ResourceHandle*) override;
+
+ ThreadIdentifier m_thread { 0 };
+ Lock m_initializeRunLoopConditionMutex;
+ Condition m_initializeRunLoopCondition;
+ RunLoop* m_runLoop { nullptr };
+ Lock m_terminateRunLoopConditionMutex;
+ Condition m_terminateRunLoopCondition;
+ RefPtr<ResourceHandle> m_resource;
};
enum MainThreadSourceNotification {
@@ -125,7 +133,8 @@
struct _WebKitWebSrcPrivate {
GstAppSrc* appsrc;
GstPad* srcpad;
- gchar* uri;
+ CString originalURI;
+ CString redirectedURI;
bool keepAlive;
GUniquePtr<GstStructure> extraHeaders;
bool compress;
@@ -135,7 +144,7 @@
RefPtr<PlatformMediaResourceLoader> loader;
RefPtr<PlatformMediaResource> resource;
- std::unique_ptr<ResourceHandleStreamingClient> client;
+ RefPtr<ResourceHandleStreamingClient> client;
bool didPassAccessControlCheck;
@@ -155,6 +164,7 @@
enum {
PROP_0,
PROP_LOCATION,
+ PROP_RESOLVED_LOCATION,
PROP_KEEP_ALIVE,
PROP_EXTRA_HEADERS,
PROP_COMPRESS,
@@ -223,13 +233,13 @@
/* Allows setting the uri using the 'location' property, which is used
* for example by gst_element_make_from_uri() */
- g_object_class_install_property(oklass,
- PROP_LOCATION,
- g_param_spec_string("location",
- "location",
- "Location to read from",
- 0,
- (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
+ g_object_class_install_property(oklass, PROP_LOCATION,
+ g_param_spec_string("location", "location", "Location to read from",
+ nullptr, static_cast<GParamFlags>(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
+
+ g_object_class_install_property(oklass, PROP_RESOLVED_LOCATION,
+ g_param_spec_string("resolved-location", "Resolved location", "The location resolved by the server",
+ nullptr, static_cast<GParamFlags>(G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(oklass, PROP_KEEP_ALIVE,
g_param_spec_boolean("keep-alive", "keep-alive", "Use HTTP persistent connections",
@@ -301,6 +311,8 @@
// This might need tweaking for ports not using libsoup.
g_object_set(priv->appsrc, "min-percent", 20, NULL);
+ gst_base_src_set_automatic_eos(GST_BASE_SRC(priv->appsrc), FALSE);
+
gst_app_src_set_caps(priv->appsrc, 0);
gst_app_src_set_size(priv->appsrc, -1);
}
@@ -317,10 +329,8 @@
static void webKitWebSrcFinalize(GObject* object)
{
- WebKitWebSrc* src = WEBKIT_WEB_SRC(object);
- WebKitWebSrcPrivate* priv = src->priv;
+ WebKitWebSrcPrivate* priv = WEBKIT_WEB_SRC(object)->priv;
- g_free(priv->uri);
priv->~WebKitWebSrcPrivate();
GST_CALL_PARENT(G_OBJECT_CLASS, finalize, (object));
@@ -362,7 +372,10 @@
WTF::GMutexLocker<GMutex> locker(*GST_OBJECT_GET_LOCK(src));
switch (propID) {
case PROP_LOCATION:
- g_value_set_string(value, priv->uri);
+ g_value_set_string(value, priv->originalURI.data());
+ break;
+ case PROP_RESOLVED_LOCATION:
+ g_value_set_string(value, priv->redirectedURI.isNull() ? priv->originalURI.data() : priv->redirectedURI.data());
break;
case PROP_KEEP_ALIVE:
g_value_set_boolean(value, priv->keepAlive);
@@ -404,12 +417,15 @@
});
}
+ if (priv->client) {
+ priv->client->invalidate();
+ priv->client = nullptr;
+ }
+
WTF::GMutexLocker<GMutex> locker(*GST_OBJECT_GET_LOCK(src));
bool wasSeeking = std::exchange(priv->isSeeking, false);
- priv->client = nullptr;
-
if (priv->buffer) {
unmapGstBuffer(priv->buffer.get());
priv->buffer.clear();
@@ -496,7 +512,7 @@
priv->didPassAccessControlCheck = false;
- if (!priv->uri) {
+ if (priv->originalURI.isNull()) {
GST_ERROR_OBJECT(src, "No URI provided");
locker.unlock();
webKitWebSrcStop(src);
@@ -505,8 +521,8 @@
ASSERT(!priv->client);
- GST_DEBUG_OBJECT(src, "Fetching %s", priv->uri);
- URL url = URL(URL(), priv->uri);
+ GST_DEBUG_OBJECT(src, "Fetching %s", priv->originalURI.data());
+ URL url = URL(URL(), priv->originalURI.data());
ResourceRequest request(url);
request.setAllowCookies(true);
@@ -557,10 +573,9 @@
request.setHTTPHeaderField(HTTPHeaderName::IcyMetadata, "1");
if (!priv->player || !priv->createdInMainThread) {
- priv->client = std::make_unique<ResourceHandleStreamingClient>(src, WTFMove(request));
+ priv->client = ResourceHandleStreamingClient::create(src, WTFMove(request));
if (priv->client->loadFailed()) {
GST_ERROR_OBJECT(src, "Failed to setup streaming client");
- priv->client = nullptr;
locker.unlock();
webKitWebSrcStop(src);
} else
@@ -582,7 +597,7 @@
loadOptions |= PlatformMediaResourceLoader::LoadOption::BufferData;
priv->resource = priv->loader->requestResource(request, loadOptions);
if (priv->resource) {
- priv->resource->setClient(std::make_unique<CachedResourceStreamingClient>(protector.get()));
+ priv->resource->setClient(std::make_unique<CachedResourceStreamingClient>(protector.get(), ResourceRequest(request)));
GST_DEBUG_OBJECT(protector.get(), "Started request");
} else {
GST_ERROR_OBJECT(protector.get(), "Failed to setup streaming client");
@@ -659,7 +674,9 @@
}
case GST_QUERY_URI: {
WTF::GMutexLocker<GMutex> locker(*GST_OBJECT_GET_LOCK(src));
- gst_query_set_uri(query, src->priv->uri);
+ gst_query_set_uri(query, src->priv->originalURI.data());
+ if (!src->priv->redirectedURI.isNull())
+ gst_query_set_uri_redirection(query, src->priv->redirectedURI.data());
result = TRUE;
break;
}
@@ -711,7 +728,7 @@
gchar* ret;
WTF::GMutexLocker<GMutex> locker(*GST_OBJECT_GET_LOCK(src));
- ret = g_strdup(src->priv->uri);
+ ret = g_strdup(src->priv->originalURI.data());
return ret;
}
@@ -727,9 +744,8 @@
WTF::GMutexLocker<GMutex> locker(*GST_OBJECT_GET_LOCK(src));
- g_free(priv->uri);
- priv->uri = 0;
-
+ priv->redirectedURI = CString();
+ priv->originalURI = CString();
if (!uri)
return TRUE;
@@ -739,7 +755,7 @@
return FALSE;
}
- priv->uri = g_strdup(url.string().utf8().data());
+ priv->originalURI = url.string().utf8();
return TRUE;
}
@@ -847,19 +863,19 @@
return src->priv->didPassAccessControlCheck;
}
-StreamingClient::StreamingClient(WebKitWebSrc* src)
- : m_src(static_cast<GstElement*>(gst_object_ref(src)))
+StreamingClient::StreamingClient(WebKitWebSrc* src, ResourceRequest&& request)
+ : m_src(GST_ELEMENT(src))
+ , m_request(WTFMove(request))
{
}
StreamingClient::~StreamingClient()
{
- gst_object_unref(m_src);
}
char* StreamingClient::createReadBuffer(size_t requestedSize, size_t& actualSize)
{
- WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src);
+ WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src.get());
WebKitWebSrcPrivate* priv = src->priv;
ASSERT(!priv->buffer);
@@ -878,11 +894,15 @@
void StreamingClient::handleResponseReceived(const ResourceResponse& response)
{
- WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src);
+ WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src.get());
WebKitWebSrcPrivate* priv = src->priv;
GST_DEBUG_OBJECT(src, "Received response: %d", response.httpStatusCode());
+ auto responseURI = response.url().string().utf8();
+ if (priv->originalURI != responseURI)
+ priv->redirectedURI = WTFMove(responseURI);
+
if (response.httpStatusCode() >= 400) {
GST_ELEMENT_ERROR(src, RESOURCE, READ, ("Received %d HTTP error code", response.httpStatusCode()), (nullptr));
gst_app_src_end_of_stream(priv->appsrc);
@@ -928,11 +948,26 @@
gst_app_src_set_size(priv->appsrc, -1);
gst_app_src_set_caps(priv->appsrc, 0);
+
+ // Emit a GST_EVENT_CUSTOM_DOWNSTREAM_STICKY event to let GStreamer know about the HTTP headers sent and received.
+ GstStructure* httpHeaders = gst_structure_new_empty("http-headers");
+ gst_structure_set(httpHeaders, "uri", G_TYPE_STRING, priv->originalURI.data(), nullptr);
+ if (!priv->redirectedURI.isNull())
+ gst_structure_set(httpHeaders, "redirection-uri", G_TYPE_STRING, priv->redirectedURI.data(), nullptr);
+ GUniquePtr<GstStructure> headers(gst_structure_new_empty("request-headers"));
+ for (const auto& header : m_request.httpHeaderFields())
+ gst_structure_set(headers.get(), header.key.utf8().data(), G_TYPE_STRING, header.value.utf8().data(), nullptr);
+ gst_structure_set(httpHeaders, "request-headers", GST_TYPE_STRUCTURE, headers.get(), nullptr);
+ headers.reset(gst_structure_new_empty("response-headers"));
+ for (const auto& header : response.httpHeaderFields())
+ gst_structure_set(headers.get(), header.key.utf8().data(), G_TYPE_STRING, header.value.utf8().data(), nullptr);
+ gst_structure_set(httpHeaders, "response-headers", GST_TYPE_STRUCTURE, headers.get(), nullptr);
+ gst_pad_push_event(GST_BASE_SRC_PAD(priv->appsrc), gst_event_new_custom(GST_EVENT_CUSTOM_DOWNSTREAM_STICKY, httpHeaders));
}
void StreamingClient::handleDataReceived(const char* data, int length)
{
- WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src);
+ WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src.get());
WebKitWebSrcPrivate* priv = src->priv;
WTF::GMutexLocker<GMutex> locker(*GST_OBJECT_GET_LOCK(src));
@@ -999,7 +1034,7 @@
void StreamingClient::handleNotifyFinished()
{
- WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src);
+ WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src.get());
WebKitWebSrcPrivate* priv = src->priv;
GST_DEBUG_OBJECT(src, "Have EOS");
@@ -1011,8 +1046,8 @@
}
}
-CachedResourceStreamingClient::CachedResourceStreamingClient(WebKitWebSrc* src)
- : StreamingClient(src)
+CachedResourceStreamingClient::CachedResourceStreamingClient(WebKitWebSrc* src, ResourceRequest&& request)
+ : StreamingClient(src, WTFMove(request))
{
}
@@ -1029,7 +1064,7 @@
void CachedResourceStreamingClient::responseReceived(PlatformMediaResource&, const ResourceResponse& response)
{
- WebKitWebSrcPrivate* priv = WEBKIT_WEB_SRC(m_src)->priv;
+ WebKitWebSrcPrivate* priv = WEBKIT_WEB_SRC(m_src.get())->priv;
priv->didPassAccessControlCheck = priv->resource->didPassAccessControlCheck();
handleResponseReceived(response);
}
@@ -1041,7 +1076,7 @@
void CachedResourceStreamingClient::accessControlCheckFailed(PlatformMediaResource&, const ResourceError& error)
{
- WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src);
+ WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src.get());
GST_ELEMENT_ERROR(src, RESOURCE, READ, ("%s", error.localizedDescription().utf8().data()), (nullptr));
gst_app_src_end_of_stream(src->priv->appsrc);
webKitWebSrcStop(src);
@@ -1049,7 +1084,7 @@
void CachedResourceStreamingClient::loadFailed(PlatformMediaResource&, const ResourceError& error)
{
- WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src);
+ WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src.get());
if (!error.isCancellation()) {
GST_ERROR_OBJECT(src, "Have failure: %s", error.localizedDescription().utf8().data());
@@ -1065,14 +1100,14 @@
}
ResourceHandleStreamingClient::ResourceHandleStreamingClient(WebKitWebSrc* src, ResourceRequest&& request)
- : StreamingClient(src)
+ : StreamingClient(src, WTFMove(request))
{
LockHolder locker(m_initializeRunLoopConditionMutex);
- m_thread = createThread("ResourceHandleStreamingClient", [this, request = WTFMove(request)] {
+ m_thread = createThread("ResourceHandleStreamingClient", [this] {
{
LockHolder locker(m_initializeRunLoopConditionMutex);
m_runLoop = &RunLoop::current();
- m_resource = ResourceHandle::create(nullptr /*context*/, request, this, true, false);
+ m_resource = ResourceHandle::create(nullptr /*context*/, m_request, this, true, false);
m_initializeRunLoopCondition.notifyOne();
}
if (!m_resource)
@@ -1080,14 +1115,6 @@
m_runLoop->dispatch([this] { m_resource->setDefersLoading(false); });
m_runLoop->run();
- {
- LockHolder locker(m_terminateRunLoopConditionMutex);
- m_runLoop = nullptr;
- m_resource->clearClient();
- m_resource->cancel();
- m_resource = nullptr;
- m_terminateRunLoopCondition.notifyOne();
- }
});
m_initializeRunLoopCondition.wait(m_initializeRunLoopConditionMutex);
}
@@ -1098,14 +1125,30 @@
detachThread(m_thread);
m_thread = 0;
}
+}
- if (m_runLoop == &RunLoop::current())
- m_runLoop->stop();
- else {
- LockHolder locker(m_terminateRunLoopConditionMutex);
- m_runLoop->stop();
- m_terminateRunLoopCondition.wait(m_terminateRunLoopConditionMutex);
+void ResourceHandleStreamingClient::cleanupAndStopRunLoop()
+{
+ m_resource->clearClient();
+ m_resource->cancel();
+ m_resource = nullptr;
+ m_runLoop->stop();
+}
+
+void ResourceHandleStreamingClient::invalidate()
+{
+ if (m_runLoop == &RunLoop::current()) {
+ cleanupAndStopRunLoop();
+ return;
}
+
+ LockHolder locker(m_terminateRunLoopConditionMutex);
+ m_runLoop->dispatch([this, protectedThis = makeRef(*this)] {
+ cleanupAndStopRunLoop();
+ LockHolder locker(m_terminateRunLoopConditionMutex);
+ m_terminateRunLoopCondition.notifyOne();
+ });
+ m_terminateRunLoopCondition.wait(m_terminateRunLoopConditionMutex);
}
bool ResourceHandleStreamingClient::loadFailed() const
@@ -1115,7 +1158,7 @@
void ResourceHandleStreamingClient::setDefersLoading(bool defers)
{
- m_runLoop->dispatch([this, defers] {
+ m_runLoop->dispatch([this, protectedThis = makeRef(*this), defers] {
if (m_resource)
m_resource->setDefersLoading(defers);
});
@@ -1135,7 +1178,8 @@
void ResourceHandleStreamingClient::didReceiveResponse(ResourceHandle*, ResourceResponse&& response)
{
- handleResponseReceived(response);
+ if (m_resource)
+ handleResponseReceived(response);
}
void ResourceHandleStreamingClient::didReceiveData(ResourceHandle*, const char* /* data */, unsigned /* length */, int)
@@ -1145,6 +1189,9 @@
void ResourceHandleStreamingClient::didReceiveBuffer(ResourceHandle*, Ref<SharedBuffer>&& buffer, int /* encodedLength */)
{
+ if (!m_resource)
+ return;
+
// This pattern is suggested by SharedBuffer.h.
const char* segment;
unsigned position = 0;
@@ -1156,12 +1203,13 @@
void ResourceHandleStreamingClient::didFinishLoading(ResourceHandle*, double)
{
- handleNotifyFinished();
+ if (m_resource)
+ handleNotifyFinished();
}
void ResourceHandleStreamingClient::didFail(ResourceHandle*, const ResourceError& error)
{
- WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src);
+ WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src.get());
GST_ERROR_OBJECT(src, "Have failure: %s", error.localizedDescription().utf8().data());
GST_ELEMENT_ERROR(src, RESOURCE, FAILED, ("%s", error.localizedDescription().utf8().data()), (0));
@@ -1170,13 +1218,13 @@
void ResourceHandleStreamingClient::wasBlocked(ResourceHandle*)
{
- WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src);
+ WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src.get());
GUniquePtr<gchar> uri;
GST_ERROR_OBJECT(src, "Request was blocked");
WTF::GMutexLocker<GMutex> locker(*GST_OBJECT_GET_LOCK(src));
- uri.reset(g_strdup(src->priv->uri));
+ uri.reset(g_strdup(src->priv->originalURI.data()));
locker.unlock();
GST_ELEMENT_ERROR(src, RESOURCE, OPEN_READ, ("Access to \"%s\" was blocked", uri.get()), (0));
@@ -1184,13 +1232,13 @@
void ResourceHandleStreamingClient::cannotShowURL(ResourceHandle*)
{
- WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src);
+ WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src.get());
GUniquePtr<gchar> uri;
GST_ERROR_OBJECT(src, "Cannot show URL");
WTF::GMutexLocker<GMutex> locker(*GST_OBJECT_GET_LOCK(src));
- uri.reset(g_strdup(src->priv->uri));
+ uri.reset(g_strdup(src->priv->originalURI.data()));
locker.unlock();
GST_ELEMENT_ERROR(src, RESOURCE, OPEN_READ, ("Can't show \"%s\"", uri.get()), (0));
diff -Nru webkit2gtk-2.14.6/Source/WebCore/platform/graphics/RoundedRect.cpp webkit2gtk-2.14.7/Source/WebCore/platform/graphics/RoundedRect.cpp
--- webkit2gtk-2.14.6/Source/WebCore/platform/graphics/RoundedRect.cpp 2017-02-07 09:05:08.000000000 +0100
+++ webkit2gtk-2.14.7/Source/WebCore/platform/graphics/RoundedRect.cpp 2017-05-09 12:01:40.000000000 +0200
@@ -29,6 +29,7 @@
#include "RoundedRect.h"
#include "FloatRoundedRect.h"
+#include "GeometryUtilities.h"
#include "LayoutRect.h"
#include "LayoutUnit.h"
@@ -232,6 +233,50 @@
return false;
}
}
+
+ return true;
+}
+
+bool RoundedRect::contains(const LayoutRect& otherRect) const
+{
+ if (!rect().contains(otherRect))
+ return false;
+
+ const LayoutSize& topLeft = m_radii.topLeft();
+ if (!topLeft.isEmpty()) {
+ FloatPoint center = { m_rect.x() + topLeft.width(), m_rect.y() + topLeft.height() };
+ if (otherRect.x() <= center.x() && otherRect.y() <= center.y()) {
+ if (!ellipseContainsPoint(center, topLeft, otherRect.location()))
+ return false;
+ }
+ }
+
+ const LayoutSize& topRight = m_radii.topRight();
+ if (!topRight.isEmpty()) {
+ FloatPoint center = { m_rect.maxX() - topRight.width(), m_rect.y() + topRight.height() };
+ if (otherRect.maxX() >= center.x() && otherRect.y() <= center.y()) {
+ if (!ellipseContainsPoint(center, topRight, otherRect.location()))
+ return false;
+ }
+ }
+
+ const LayoutSize& bottomLeft = m_radii.bottomLeft();
+ if (!bottomLeft.isEmpty()) {
+ FloatPoint center = { m_rect.x() + bottomLeft.width(), m_rect.maxY() - bottomLeft.height() };
+ if (otherRect.maxX() >= center.x() && otherRect.maxY() >= center.y()) {
+ if (!ellipseContainsPoint(center, bottomLeft, otherRect.location()))
+ return false;
+ }
+ }
+
+ const LayoutSize& bottomRight = m_radii.bottomRight();
+ if (!bottomRight.isEmpty()) {
+ FloatPoint center = { m_rect.maxX() - bottomRight.width(), m_rect.maxY() - bottomRight.height() };
+ if (otherRect.x() <= center.x() && otherRect.maxY() >= center.y()) {
+ if (!ellipseContainsPoint(center, bottomRight, otherRect.location()))
+ return false;
+ }
+ }
return true;
}
diff -Nru webkit2gtk-2.14.6/Source/WebCore/platform/graphics/RoundedRect.h webkit2gtk-2.14.7/Source/WebCore/platform/graphics/RoundedRect.h
--- webkit2gtk-2.14.6/Source/WebCore/platform/graphics/RoundedRect.h 2017-02-07 09:05:08.000000000 +0100
+++ webkit2gtk-2.14.7/Source/WebCore/platform/graphics/RoundedRect.h 2017-05-09 12:01:40.000000000 +0200
@@ -106,6 +106,7 @@
// Tests whether the quad intersects any part of this rounded rectangle.
// This only works for convex quads.
bool intersectsQuad(const FloatQuad&) const;
+ bool contains(const LayoutRect&) const;
FloatRoundedRect pixelSnappedRoundedRectForPainting(float deviceScaleFactor) const;
diff -Nru webkit2gtk-2.14.6/Source/WebCore/platform/gtk/UserAgentGtk.cpp webkit2gtk-2.14.7/Source/WebCore/platform/gtk/UserAgentGtk.cpp
--- webkit2gtk-2.14.6/Source/WebCore/platform/gtk/UserAgentGtk.cpp 2017-02-07 09:05:08.000000000 +0100
+++ webkit2gtk-2.14.7/Source/WebCore/platform/gtk/UserAgentGtk.cpp 2017-05-09 12:19:53.000000000 +0200
@@ -212,10 +212,6 @@
if (baseDomain == "typekit.net" || baseDomain == "typekit.com")
return true;
- // Needed for YouTube 360 (requires ENABLE_MEDIA_SOURCE).
- if (baseDomain == "youtube.com")
- return true;
-
// Slack completely blocks users with our standard user agent.
if (baseDomain == "slack.com")
return true;
@@ -225,7 +221,7 @@
static bool urlRequiresFirefoxBrowser(const URL& url)
{
- return isGoogle(url);
+ return isGoogle(url) && url.host() != "accounts.google.com";
}
static bool urlRequiresMacintoshPlatform(const URL& url)
diff -Nru webkit2gtk-2.14.6/Source/WebCore/platform/network/soup/SocketStreamHandleImplSoup.cpp webkit2gtk-2.14.7/Source/WebCore/platform/network/soup/SocketStreamHandleImplSoup.cpp
--- webkit2gtk-2.14.6/Source/WebCore/platform/network/soup/SocketStreamHandleImplSoup.cpp 2017-02-07 09:05:08.000000000 +0100
+++ webkit2gtk-2.14.7/Source/WebCore/platform/network/soup/SocketStreamHandleImplSoup.cpp 2017-05-09 11:12:37.000000000 +0200
@@ -175,7 +175,7 @@
{
LOG(Network, "SocketStreamHandle %p platformSend", this);
if (!m_outputStream || !data)
- return Nullopt;
+ return 0;
GUniqueOutPtr<GError> error;
gssize written = g_pollable_output_stream_write_nonblocking(m_outputStream.get(), data, length, m_cancellable.get(), &error.outPtr());
diff -Nru webkit2gtk-2.14.6/Source/WebCore/rendering/RenderBoxModelObject.cpp webkit2gtk-2.14.7/Source/WebCore/rendering/RenderBoxModelObject.cpp
--- webkit2gtk-2.14.6/Source/WebCore/rendering/RenderBoxModelObject.cpp 2017-02-07 09:05:09.000000000 +0100
+++ webkit2gtk-2.14.7/Source/WebCore/rendering/RenderBoxModelObject.cpp 2017-05-09 12:01:42.000000000 +0200
@@ -1691,6 +1691,10 @@
RoundedRect outerBorder = style.getRoundedBorderFor(rect, includeLogicalLeftEdge, includeLogicalRightEdge);
RoundedRect innerBorder = style.getRoundedInnerBorderFor(borderInnerRectAdjustedForBleedAvoidance(graphicsContext, rect, bleedAvoidance), includeLogicalLeftEdge, includeLogicalRightEdge);
+ // If no borders intersects with the dirty area, we can skip the border painting.
+ if (innerBorder.contains(info.rect))
+ return;
+
bool haveAlphaColor = false;
bool haveAllSolidEdges = true;
bool haveAllDoubleEdges = true;
More information about the Pkg-webkit-maintainers
mailing list