diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Documentation/jsc-glib-4.0/html/index.html webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Documentation/jsc-glib-4.0/html/index.html --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Documentation/jsc-glib-4.0/html/index.html 2019-11-06 01:59:41.000000000 -0700 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Documentation/jsc-glib-4.0/html/index.html 2020-01-22 04:02:00.000000000 -0700 @@ -14,7 +14,7 @@
-

for JavaScriptCore 2.26.2

+

for JavaScriptCore 2.26.3


diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Documentation/jsc-glib-4.0/html/jsc-glib-4.0-JSCVersion.html webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Documentation/jsc-glib-4.0/html/jsc-glib-4.0-JSCVersion.html --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Documentation/jsc-glib-4.0/html/jsc-glib-4.0-JSCVersion.html 2019-11-06 01:59:41.000000000 -0700 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Documentation/jsc-glib-4.0/html/jsc-glib-4.0-JSCVersion.html 2020-01-22 04:02:00.000000000 -0700 @@ -175,7 +175,7 @@

JSC_MICRO_VERSION

-
#define JSC_MICRO_VERSION (2)
+
#define JSC_MICRO_VERSION (3)
 
diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Documentation/webkit2gtk-4.0/html/index.html webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Documentation/webkit2gtk-4.0/html/index.html --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Documentation/webkit2gtk-4.0/html/index.html 2019-11-06 02:00:19.000000000 -0700 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Documentation/webkit2gtk-4.0/html/index.html 2020-01-22 04:02:38.000000000 -0700 @@ -14,7 +14,7 @@
-

for WebKitGTK 2.26.2

+

for WebKitGTK 2.26.3


diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Documentation/webkit2gtk-4.0/html/webkit2gtk-4.0-WebKitVersion.html webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Documentation/webkit2gtk-4.0/html/webkit2gtk-4.0-WebKitVersion.html --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Documentation/webkit2gtk-4.0/html/webkit2gtk-4.0-WebKitVersion.html 2019-11-06 02:00:19.000000000 -0700 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Documentation/webkit2gtk-4.0/html/webkit2gtk-4.0-WebKitVersion.html 2020-01-22 04:02:38.000000000 -0700 @@ -213,7 +213,7 @@

WEBKIT_MICRO_VERSION

-
#define WEBKIT_MICRO_VERSION (2)
+
#define WEBKIT_MICRO_VERSION (3)
 

Like webkit_get_micro_version(), but from the headers used at application compile time, rather than from the library linked diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Documentation/webkitdomgtk-4.0/html/index.html webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Documentation/webkitdomgtk-4.0/html/index.html --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Documentation/webkitdomgtk-4.0/html/index.html 2019-11-06 02:00:03.000000000 -0700 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Documentation/webkitdomgtk-4.0/html/index.html 2020-01-22 04:02:22.000000000 -0700 @@ -14,7 +14,7 @@

-

for WebKitDOMGTK+ 2.26.2

+

for WebKitDOMGTK+ 2.26.3


diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/NEWS webkit-gtk-2.26.3/work/webkitgtk-2.26.3/NEWS --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/NEWS 2019-11-06 02:03:41.000000000 -0700 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/NEWS 2020-01-22 03:49:15.000000000 -0700 @@ -1,4 +1,18 @@ ================ +WebKitGTK 2.26.3 +================ + +What's new in WebKitGTK 2.26.3? + + - Fix issues while trying to play a video on NextCloud. + - Make sure the GL video sink uses a valid WebKit shared GL context. + - Fix vertical alignment of text containing arabic diacritics. + - Fix build with icu 65.1. + - Fix page loading errors with websites using HSTS. + - Fix web process crash when displaying a KaTeX formula. + - Fix several crashes and rendering issues. + +================ WebKitGTK 2.26.2 ================ diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp 2019-09-02 03:46:20.000000000 -0600 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp 2020-01-22 03:21:42.000000000 -0700 @@ -1815,9 +1815,11 @@ availabilityCalculator.m_availability, identifier, phiDef->value()); for (PromotedHeapLocation location : hintsForPhi[variable->index()]) { - m_insertionSet.insert(0, - location.createHint(m_graph, block->at(0)->origin.withInvalidExit(), phiDef->value())); - m_localMapping.set(location, phiDef->value()); + if (m_heap.onlyLocalAllocation(location.base())) { + m_insertionSet.insert(0, + location.createHint(m_graph, block->at(0)->origin.withInvalidExit(), phiDef->value())); + m_localMapping.set(location, phiDef->value()); + } } } diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/JavaScriptCore/dfg/DFGValidate.cpp webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/JavaScriptCore/dfg/DFGValidate.cpp --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/JavaScriptCore/dfg/DFGValidate.cpp 2019-08-28 05:46:27.000000000 -0600 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/JavaScriptCore/dfg/DFGValidate.cpp 2020-01-22 03:21:41.000000000 -0700 @@ -31,6 +31,7 @@ #include "CodeBlockWithJITType.h" #include "DFGClobberize.h" #include "DFGClobbersExitState.h" +#include "DFGDominators.h" #include "DFGMayExit.h" #include "JSCInlines.h" #include @@ -775,6 +776,10 @@ VALIDATE((), !m_graph.m_argumentFormats.isEmpty()); // We always have at least one entrypoint. VALIDATE((), m_graph.m_rootToArguments.isEmpty()); // This is only used in CPS. + m_graph.initializeNodeOwners(); + + auto& dominators = m_graph.ensureSSADominators(); + for (unsigned entrypointIndex : m_graph.m_entrypointIndexToCatchBytecodeOffset.keys()) VALIDATE((), entrypointIndex > 0); // By convention, 0 is the entrypoint index for the op_enter entrypoint, which can not be in a catch. @@ -788,6 +793,8 @@ bool didSeeExitOK = false; bool isOSRExited = false; + HashSet nodesInThisBlock; + for (auto* node : *block) { didSeeExitOK |= node->origin.exitOK; switch (node->op()) { @@ -906,7 +913,13 @@ }); break; } + isOSRExited |= node->isPseudoTerminal(); + + m_graph.doToChildren(node, [&] (Edge child) { + VALIDATE((node), dominators.strictlyDominates(child->owner, block) || nodesInThisBlock.contains(child.node())); + }); + nodesInThisBlock.add(node); } } } diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WTF/wtf/URLHelpers.cpp webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WTF/wtf/URLHelpers.cpp --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WTF/wtf/URLHelpers.cpp 2019-08-28 05:46:29.000000000 -0600 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WTF/wtf/URLHelpers.cpp 2020-01-22 02:58:48.000000000 -0700 @@ -301,7 +301,7 @@ Optional previousCodePoint; while (i < length) { UChar32 c; - U16_NEXT(buffer, i, length, c) + U16_NEXT(buffer, i, length, c); UErrorCode error = U_ZERO_ERROR; UScriptCode script = uscript_getScript(c, &error); if (error != U_ZERO_ERROR) { diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/Modules/indexeddb/shared/IDBGetAllRecordsData.cpp webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/Modules/indexeddb/shared/IDBGetAllRecordsData.cpp --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/Modules/indexeddb/shared/IDBGetAllRecordsData.cpp 2019-08-28 05:46:30.000000000 -0600 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/Modules/indexeddb/shared/IDBGetAllRecordsData.cpp 2020-01-22 02:32:31.000000000 -0700 @@ -29,6 +29,7 @@ #if ENABLE(INDEXED_DATABASE) #include "IDBKeyRangeData.h" +#include namespace WebCore { diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/Modules/indexeddb/shared/IDBIterateCursorData.cpp webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/Modules/indexeddb/shared/IDBIterateCursorData.cpp --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/Modules/indexeddb/shared/IDBIterateCursorData.cpp 2019-08-28 05:46:30.000000000 -0600 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/Modules/indexeddb/shared/IDBIterateCursorData.cpp 2020-01-22 02:32:31.000000000 -0700 @@ -28,6 +28,8 @@ #if ENABLE(INDEXED_DATABASE) +#include + namespace WebCore { IDBIterateCursorData IDBIterateCursorData::isolatedCopy() const diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/dom/Document.cpp webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/dom/Document.cpp --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/dom/Document.cpp 2019-09-02 03:41:47.000000000 -0600 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/dom/Document.cpp 2020-01-22 02:58:49.000000000 -0700 @@ -4944,12 +4944,12 @@ unsigned i = 0; UChar32 c; - U16_NEXT(characters, i, length, c) + U16_NEXT(characters, i, length, c); if (!isValidNameStart(c)) return false; while (i < length) { - U16_NEXT(characters, i, length, c) + U16_NEXT(characters, i, length, c); if (!isValidNamePart(c)) return false; } @@ -5009,7 +5009,7 @@ for (unsigned i = 0; i < length; ) { UChar32 c; - U16_NEXT(qualifiedName, i, length, c) + U16_NEXT(qualifiedName, i, length, c); if (c == ':') { if (sawColon) return Exception { InvalidCharacterError }; diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/page/DOMWindowExtension.cpp webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/page/DOMWindowExtension.cpp --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/page/DOMWindowExtension.cpp 2019-08-28 05:46:31.000000000 -0600 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/page/DOMWindowExtension.cpp 2020-01-22 02:32:31.000000000 -0700 @@ -28,6 +28,7 @@ #include "DOMWindow.h" #include "DOMWrapperWorld.h" +#include "Document.h" #include "Frame.h" #include "FrameLoader.h" #include "FrameLoaderClient.h" diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/platform/glib/UserAgentGLib.cpp webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/platform/glib/UserAgentGLib.cpp --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/platform/glib/UserAgentGLib.cpp 2019-09-23 02:13:05.000000000 -0600 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/platform/glib/UserAgentGLib.cpp 2020-01-22 02:32:31.000000000 -0700 @@ -27,6 +27,7 @@ #include "config.h" #include "UserAgent.h" +#include "HTTPParsers.h" #include "UserAgentQuirks.h" #include #include diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/platform/graphics/ComplexTextController.cpp webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/platform/graphics/ComplexTextController.cpp --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/platform/graphics/ComplexTextController.cpp 2019-08-28 05:46:31.000000000 -0600 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/platform/graphics/ComplexTextController.cpp 2020-01-22 03:39:57.000000000 -0700 @@ -205,7 +205,8 @@ for (unsigned j = 0; j < complexTextRun.glyphCount(); ++j) { unsigned index = offsetIntoAdjustedGlyphs + j; float adjustedAdvance = m_adjustedBaseAdvances[index].width(); - if (x < adjustedAdvance) { + bool hit = m_run.ltr() ? x < adjustedAdvance : (x <= adjustedAdvance && adjustedAdvance); + if (hit) { unsigned hitGlyphStart = complexTextRun.indexAt(j); unsigned hitGlyphEnd; if (m_run.ltr()) @@ -215,7 +216,18 @@ // FIXME: Instead of dividing the glyph's advance equally between the characters, this // could use the glyph's "ligature carets". This is available in CoreText via CTFontGetLigatureCaretPositions(). - unsigned hitIndex = hitGlyphStart + (hitGlyphEnd - hitGlyphStart) * (m_run.ltr() ? x / adjustedAdvance : 1 - x / adjustedAdvance); + unsigned hitIndex; + if (m_run.ltr()) + hitIndex = hitGlyphStart + (hitGlyphEnd - hitGlyphStart) * (x / adjustedAdvance); + else { + if (hitGlyphStart == hitGlyphEnd) + hitIndex = hitGlyphStart; + else if (x) + hitIndex = hitGlyphEnd - (hitGlyphEnd - hitGlyphStart) * (x / adjustedAdvance); + else + hitIndex = hitGlyphEnd - 1; + } + unsigned stringLength = complexTextRun.stringLength(); CachedTextBreakIterator cursorPositionIterator(StringView(complexTextRun.characters(), stringLength), TextBreakIterator::Mode::Caret, nullAtom()); unsigned clusterStart; diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/platform/graphics/cairo/FontCairo.cpp webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/platform/graphics/cairo/FontCairo.cpp --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/platform/graphics/cairo/FontCairo.cpp 2019-08-28 05:46:31.000000000 -0600 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/platform/graphics/cairo/FontCairo.cpp 2020-01-22 03:36:27.000000000 -0700 @@ -65,7 +65,7 @@ for (size_t i = 0; i < numGlyphs; ++i) { glyphs[i] = { glyphsData[i], xOffset, yOffset }; xOffset += advances[i].width(); - yOffset -= advances[i].height(); + yOffset += advances[i].height(); } } diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/platform/graphics/cairo/GraphicsContextImplCairo.cpp webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/platform/graphics/cairo/GraphicsContextImplCairo.cpp --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/platform/graphics/cairo/GraphicsContextImplCairo.cpp 2019-08-29 06:15:16.000000000 -0600 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/platform/graphics/cairo/GraphicsContextImplCairo.cpp 2020-01-22 03:36:45.000000000 -0700 @@ -248,7 +248,7 @@ for (size_t i = 0; i < numGlyphs; ++i) { glyphs[i] = { glyphsData[i], xOffset, yOffset }; xOffset += advances[i].width(); - yOffset -= advances[i].height(); + yOffset += advances[i].height(); } } diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp 2019-08-28 05:46:31.000000000 -0600 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp 2020-01-22 03:31:15.000000000 -0700 @@ -279,7 +279,7 @@ if (!ftFace) return nullptr; - HbUniquePtr face(hb_ft_face_create_cached(ftFace)); + HbUniquePtr face(hb_ft_face_create_referenced(ftFace)); if (!hb_ot_math_has_data(face.get())) return nullptr; diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp 2019-09-23 02:23:57.000000000 -0600 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp 2020-01-22 03:34:10.000000000 -0700 @@ -1148,17 +1148,15 @@ if (!mediaDuration || mediaDuration.isPositiveInfinite()) return timeRanges; - GstQuery* query = gst_query_new_buffering(GST_FORMAT_PERCENT); + GRefPtr query = adoptGRef(gst_query_new_buffering(GST_FORMAT_PERCENT)); - if (!gst_element_query(m_pipeline.get(), query)) { - gst_query_unref(query); + if (!gst_element_query(m_pipeline.get(), query.get())) return timeRanges; - } - guint numBufferingRanges = gst_query_get_n_buffering_ranges(query); + guint numBufferingRanges = gst_query_get_n_buffering_ranges(query.get()); for (guint index = 0; index < numBufferingRanges; index++) { gint64 rangeStart = 0, rangeStop = 0; - if (gst_query_parse_nth_buffering_range(query, index, &rangeStart, &rangeStop)) { + if (gst_query_parse_nth_buffering_range(query.get(), index, &rangeStart, &rangeStop)) { uint64_t startTime = gst_util_uint64_scale_int_round(toGstUnsigned64Time(mediaDuration), rangeStart, GST_FORMAT_PERCENT_MAX); uint64_t stopTime = gst_util_uint64_scale_int_round(toGstUnsigned64Time(mediaDuration), rangeStop, GST_FORMAT_PERCENT_MAX); timeRanges->add(MediaTime(startTime, GST_SECOND), MediaTime(stopTime, GST_SECOND)); @@ -1173,8 +1171,6 @@ timeRanges->add(MediaTime::zeroTime(), loaded); } - gst_query_unref(query); - return timeRanges; } @@ -1395,7 +1391,7 @@ } else if (gst_structure_has_name(structure, "adaptive-streaming-statistics")) { if (WEBKIT_IS_WEB_SRC(m_source.get()) && !webkitGstCheckVersion(1, 12, 0)) { if (const char* uri = gst_structure_get_string(structure, "uri")) - m_hasTaintedOrigin = webKitSrcWouldTaintOrigin(WEBKIT_WEB_SRC(m_source.get()), SecurityOrigin::create(URL(URL(), uri))); + m_hasTaintedOrigin = webKitSrcWouldTaintOrigin(WEBKIT_WEB_SRC_CAST(m_source.get()), SecurityOrigin::create(URL(URL(), uri))); } } else GST_DEBUG_OBJECT(pipeline(), "Unhandled element message: %" GST_PTR_FORMAT, structure); @@ -1856,7 +1852,7 @@ m_source = sourceElement; if (WEBKIT_IS_WEB_SRC(m_source.get())) { - webKitWebSrcSetMediaPlayer(WEBKIT_WEB_SRC(m_source.get()), m_player); + webKitWebSrcSetMediaPlayer(WEBKIT_WEB_SRC_CAST(m_source.get()), m_player); g_signal_connect(GST_ELEMENT_PARENT(m_source.get()), "element-added", G_CALLBACK(uriDecodeBinElementAddedCallback), this); #if ENABLE(MEDIA_STREAM) } else if (WEBKIT_IS_MEDIA_STREAM_SRC(sourceElement)) { @@ -2510,7 +2506,7 @@ bool MediaPlayerPrivateGStreamer::didPassCORSAccessCheck() const { if (WEBKIT_IS_WEB_SRC(m_source.get())) - return webKitSrcPassedCORSAccessCheck(WEBKIT_WEB_SRC(m_source.get())); + return webKitSrcPassedCORSAccessCheck(WEBKIT_WEB_SRC_CAST(m_source.get())); return false; } diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp 2019-09-23 02:23:57.000000000 -0600 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp 2020-01-22 03:07:07.000000000 -0700 @@ -447,6 +447,9 @@ } GLContext* webkitContext = sharedDisplay.sharingGLContext(); + if (!webkitContext) + return false; + // EGL and GLX are mutually exclusive, no need for ifdefs here. GstGLPlatform glPlatform = webkitContext->isEGLContext() ? GST_GL_PLATFORM_EGL : GST_GL_PLATFORM_GLX; diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp 2019-11-06 01:09:10.000000000 -0700 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp 2020-01-22 03:18:20.000000000 -0700 @@ -61,7 +61,7 @@ void setSourceElement(WebKitWebSrc* src) { m_src = GST_ELEMENT_CAST(src); } private: - void checkUpdateBlocksize(uint64_t bytesRead); + void checkUpdateBlocksize(unsigned bytesRead); // PlatformMediaResourceClient virtual methods. void responseReceived(PlatformMediaResource&, const ResourceResponse&, CompletionHandler&&) override; @@ -137,7 +137,7 @@ bool isSeekable; bool isSeeking; bool wasSeeking { false }; - uint64_t minimumBlocksize; + unsigned minimumBlocksize; Lock adapterLock; Condition adapterCondition; uint64_t queueSize { 0 }; @@ -412,20 +412,21 @@ unsigned retries = 0; size_t available = gst_adapter_available_fast(priv->adapter.get()); while (available < size && !isAdapterDrained) { - priv->adapterCondition.waitFor(priv->adapterLock, 200_ms, [&] { + priv->adapterCondition.waitFor(priv->adapterLock, 100_ms, [&] { return gst_adapter_available_fast(priv->adapter.get()) >= size; }); retries++; available = gst_adapter_available_fast(priv->adapter.get()); - if (available && available < size) + if (available && available < size) { + GST_TRACE_OBJECT(src, "did not get the %u blocksize bytes, let's push the %" G_GSIZE_FORMAT " bytes we got", size, available); size = available; - else if (retries > 3) + } else if (retries > 3) isAdapterDrained = true; } } if (isAdapterDrained) { - GST_DEBUG_OBJECT(src, "Adapter still empty after 800 milli-seconds of waiting, assuming EOS"); + GST_DEBUG_OBJECT(src, "Adapter still empty after 400 milli-seconds of waiting, assuming EOS"); return GST_FLOW_EOS; } @@ -464,7 +465,7 @@ && (priv->size > SMALL_MEDIA_RESOURCE_MAX_SIZE) && priv->readPosition && (priv->readPosition != priv->size) && (priv->queueSize < (priv->size * HIGH_QUEUE_FACTOR_THRESHOLD * LOW_QUEUE_FACTOR_THRESHOLD)) - && (GST_STATE(src) == GST_STATE_PLAYING) && priv->isDownloadSuspended) { + && GST_STATE(src) >= GST_STATE_PAUSED && priv->isDownloadSuspended) { GST_DEBUG_OBJECT(src, "[Buffering] Adapter running out of data, restarting download"); priv->isDownloadSuspended = false; webKitWebSrcMakeRequest(baseSrc, false); @@ -920,14 +921,14 @@ CachedResourceStreamingClient::~CachedResourceStreamingClient() = default; -void CachedResourceStreamingClient::checkUpdateBlocksize(uint64_t bytesRead) +void CachedResourceStreamingClient::checkUpdateBlocksize(unsigned bytesRead) { WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src.get()); GstBaseSrc* baseSrc = GST_BASE_SRC_CAST(src); WebKitWebSrcPrivate* priv = src->priv; - uint64_t blocksize = gst_base_src_get_blocksize(baseSrc); - GST_LOG_OBJECT(src, "Checking to update blocksize. Read: %" PRIu64 ", current blocksize: %" PRIu64, bytesRead, blocksize); + unsigned blocksize = gst_base_src_get_blocksize(baseSrc); + GST_LOG_OBJECT(src, "Checking to update blocksize. Read: %u, current blocksize: %u", bytesRead, blocksize); if (bytesRead >= blocksize * s_growBlocksizeLimit) { m_reduceBlocksizeCount = 0; @@ -935,7 +936,7 @@ if (m_increaseBlocksizeCount >= s_growBlocksizeCount) { blocksize *= s_growBlocksizeFactor; - GST_DEBUG_OBJECT(src, "Increased blocksize to %" PRIu64, blocksize); + GST_DEBUG_OBJECT(src, "Increased blocksize to %u", blocksize); gst_base_src_set_blocksize(baseSrc, blocksize); m_increaseBlocksizeCount = 0; } @@ -946,7 +947,7 @@ if (m_reduceBlocksizeCount >= s_reduceBlocksizeCount) { blocksize *= s_reduceBlocksizeFactor; blocksize = std::max(blocksize, priv->minimumBlocksize); - GST_DEBUG_OBJECT(src, "Decreased blocksize to %" PRIu64, blocksize); + GST_DEBUG_OBJECT(src, "Decreased blocksize to %u", blocksize); gst_base_src_set_blocksize(baseSrc, blocksize); m_reduceBlocksizeCount = 0; } diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.h webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.h --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.h 2019-08-28 05:46:31.000000000 -0600 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.h 2020-01-22 03:18:20.000000000 -0700 @@ -35,6 +35,7 @@ #define WEBKIT_WEB_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WEBKIT_TYPE_WEB_SRC, WebKitWebSrcClass)) #define WEBKIT_IS_WEB_SRC(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WEBKIT_TYPE_WEB_SRC)) #define WEBKIT_IS_WEB_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WEBKIT_TYPE_WEB_SRC)) +#define WEBKIT_WEB_SRC_CAST(obj) ((WebKitWebSrc*)(obj)) #define WEBKIT_WEB_SRC_PLAYER_CONTEXT_TYPE_NAME "webkit.media-player" diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp 2019-08-28 05:46:31.000000000 -0600 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp 2020-01-22 03:36:27.000000000 -0700 @@ -164,17 +164,15 @@ } float offsetX = harfBuzzPositionToFloat(glyphPositions[i].x_offset); - float offsetY = -harfBuzzPositionToFloat(glyphPositions[i].y_offset); + float offsetY = harfBuzzPositionToFloat(glyphPositions[i].y_offset); float advanceX = harfBuzzPositionToFloat(glyphPositions[i].x_advance); float advanceY = harfBuzzPositionToFloat(glyphPositions[i].y_advance); - if (!i) - m_initialAdvance = { offsetX, -offsetY }; - m_glyphs[i] = glyph; m_baseAdvances[i] = { advanceX, advanceY }; m_glyphOrigins[i] = { offsetX, offsetY }; } + m_initialAdvance = toFloatSize(m_glyphOrigins[0]); } static const hb_tag_t s_vertTag = HB_TAG('v', 'e', 'r', 't'); diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/rendering/RenderFrameSet.cpp webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/rendering/RenderFrameSet.cpp --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/rendering/RenderFrameSet.cpp 2019-08-28 05:46:31.000000000 -0600 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/rendering/RenderFrameSet.cpp 2020-01-22 02:59:50.000000000 -0700 @@ -525,17 +525,15 @@ int width = m_cols.m_sizes[c]; // has to be resized and itself resize its contents - if (width != child->width() || height != child->height()) { - child->setWidth(width); - child->setHeight(height); + child->setWidth(width); + child->setHeight(height); #if PLATFORM(IOS_FAMILY) - // FIXME: Is this iOS-specific? - child->setNeedsLayout(MarkOnlyThis); + // FIXME: Is this iOS-specific? + child->setNeedsLayout(MarkOnlyThis); #else - child->setNeedsLayout(); + child->setNeedsLayout(); #endif - child->layout(); - } + child->layout(); xPos += width + borderThickness; diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/rendering/SimpleLineLayoutResolver.cpp webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/rendering/SimpleLineLayoutResolver.cpp --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/rendering/SimpleLineLayoutResolver.cpp 2019-08-28 05:46:31.000000000 -0600 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/rendering/SimpleLineLayoutResolver.cpp 2020-01-22 03:22:50.000000000 -0700 @@ -299,6 +299,8 @@ { ASSERT(startOffset <= endOffset); auto range = rangeForRenderer(renderer); + if (range.begin() == range.end()) + return { end(), end() }; auto it = range.begin(); auto localEnd = (*it).start() + endOffset; // Advance to the first run with the start offset inside. Only the first node in a range can have a startOffset. diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/svg/properties/SVGAnimatedPropertyPairAccessor.h webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/svg/properties/SVGAnimatedPropertyPairAccessor.h --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebCore/svg/properties/SVGAnimatedPropertyPairAccessor.h 2019-08-28 05:46:32.000000000 -0600 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebCore/svg/properties/SVGAnimatedPropertyPairAccessor.h 2020-01-22 03:23:49.000000000 -0700 @@ -58,6 +58,12 @@ Ref& property2(OwnerType& owner) const { return m_accessor2.property(owner); } const Ref& property2(const OwnerType& owner) const { return m_accessor2.property(owner); } + void detach(const OwnerType& owner) const override + { + property1(owner)->detach(); + property2(owner)->detach(); + } + bool matches(const OwnerType& owner, const SVGAnimatedProperty& animatedProperty) const override { return m_accessor1.matches(owner, animatedProperty) || m_accessor2.matches(owner, animatedProperty); diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp 2019-08-28 05:46:32.000000000 -0600 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp 2020-01-22 02:32:31.000000000 -0700 @@ -29,6 +29,7 @@ #include "BlobDataFileReferenceWithSandboxExtension.h" #include "CacheStorageEngineConnectionMessages.h" #include "DataReference.h" +#include "Logging.h" #include "NetworkCache.h" #include "NetworkMDNSRegisterMessages.h" #include "NetworkProcess.h" diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp 2019-08-28 05:46:32.000000000 -0600 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp 2020-01-22 03:27:10.000000000 -0700 @@ -296,11 +296,22 @@ void NetworkDataTaskSoup::sendRequestCallback(SoupRequest* soupRequest, GAsyncResult* result, NetworkDataTaskSoup* task) { RefPtr protectedThis = adoptRef(task); + if (soupRequest != task->m_soupRequest.get()) { + // This can happen when the request is cancelled and a new one is started before + // the previous async operation completed. This is common when forcing a redirection + // due to HSTS. We can simply ignore this old request. +#if !ASSERT_DISABLED + GUniqueOutPtr error; + GRefPtr inputStream = adoptGRef(soup_request_send_finish(soupRequest, result, &error.outPtr())); + ASSERT(g_error_matches(error.get(), G_IO_ERROR, G_IO_ERROR_CANCELLED)); +#endif + return; + } + if (task->state() == State::Canceling || task->state() == State::Completed || !task->m_client) { task->clearRequest(); return; } - ASSERT(soupRequest == task->m_soupRequest.get()); if (task->state() == State::Suspended) { ASSERT(!task->m_pendingResult); diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h 2019-11-06 01:09:11.000000000 -0700 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h 2020-01-22 02:57:35.000000000 -0700 @@ -212,7 +212,6 @@ inline void LayerTreeHost::cancelPendingLayerFlush() { } inline void LayerTreeHost::setRootCompositingLayer(WebCore::GraphicsLayer*) { } inline void LayerTreeHost::setViewOverlayRootLayer(WebCore::GraphicsLayer*) { } -inline void LayerTreeHost::invalidate() { } inline void LayerTreeHost::scrollNonCompositedContents(const WebCore::IntRect&) { } inline void LayerTreeHost::forceRepaint() { } inline bool LayerTreeHost::forceRepaintAsync(CallbackID) { return false; } diff -urN webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/cmake/OptionsGTK.cmake webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/cmake/OptionsGTK.cmake --- webkit-gtk-2.26.2/work/webkitgtk-2.26.2/Source/cmake/OptionsGTK.cmake 2019-11-06 01:56:16.000000000 -0700 +++ webkit-gtk-2.26.3/work/webkitgtk-2.26.3/Source/cmake/OptionsGTK.cmake 2020-01-22 03:49:30.000000000 -0700 @@ -1,11 +1,11 @@ include(GNUInstallDirs) include(VersioningUtils) -SET_PROJECT_VERSION(2 26 2) +SET_PROJECT_VERSION(2 26 3) set(WEBKITGTK_API_VERSION 4.0) -CALCULATE_LIBRARY_VERSIONS_FROM_LIBTOOL_TRIPLE(WEBKIT 76 3 39) -CALCULATE_LIBRARY_VERSIONS_FROM_LIBTOOL_TRIPLE(JAVASCRIPTCORE 32 7 14) +CALCULATE_LIBRARY_VERSIONS_FROM_LIBTOOL_TRIPLE(WEBKIT 76 4 39) +CALCULATE_LIBRARY_VERSIONS_FROM_LIBTOOL_TRIPLE(JAVASCRIPTCORE 32 8 14) # 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.