[webkit-changes] [WebKit/WebKit] 0e3b75: Branch WebKitGTK+ for 2.14

Carlos Garcia Campos noreply at github.com
Tue Nov 29 17:22:55 PST 2022


  Branch: refs/heads/webkitgtk/2.14
  Home:   https://github.com/WebKit/WebKit
  Commit: 0e3b75b0638e7acfb63b65b15e58a530c4a176a4
      https://github.com/WebKit/WebKit/commit/0e3b75b0638e7acfb63b65b15e58a530c4a176a4
  Author: Carlos Garcia Campos <carlosgc at webkit.org>
  Date:   2016-08-30 (Tue, 30 Aug 2016)

  Changed paths:

  Log Message:
  -----------
  Branch WebKitGTK+ for 2.14


  Commit: 56ef5bfc8651419741d420e1931a9e4f69de5c80
      https://github.com/WebKit/WebKit/commit/56ef5bfc8651419741d420e1931a9e4f69de5c80
  Author: Carlos Garcia Campos <carlosgc at webkit.org>
  Date:   2016-08-31 (Wed, 31 Aug 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/dfg/DFGAbstractValue.h

  Log Message:
  -----------
  Unreviewed. Remove incorrect assert causing crashes in debug builds.

* dfg/DFGAbstractValue.h:
(JSC::DFG::AbstractValue::AbstractValue):


  Commit: 590d1572e046b2def59e61209f596c1c2027b922
      https://github.com/WebKit/WebKit/commit/590d1572e046b2def59e61209f596c1c2027b922
  Author: Carlos Garcia Campos <carlosgc at webkit.org>
  Date:   2016-08-31 (Wed, 31 Aug 2016)

  Changed paths:
    M ChangeLog
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/gtk/NEWS
    M Source/cmake/OptionsGTK.cmake

  Log Message:
  -----------
  Unreviewed. Update OptionsGTK.cmake and NEWS for 2.13.90 release.

.:

* Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit2:

* gtk/NEWS: Add release notes for 2.13.90.


  Commit: d26115844037ad99c8df6c7bb25b6e8053462c2e
      https://github.com/WebKit/WebKit/commit/d26115844037ad99c8df6c7bb25b6e8053462c2e
  Author: Antti Koivisto <koivisto at iki.fi>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/css/CSSCrossfadeValue.cpp
    M Source/WebCore/css/CSSCrossfadeValue.h
    M Source/WebCore/css/CSSCursorImageValue.cpp
    M Source/WebCore/css/CSSCursorImageValue.h
    M Source/WebCore/css/CSSFilterImageValue.cpp
    M Source/WebCore/css/CSSFilterImageValue.h
    M Source/WebCore/css/CSSImageGeneratorValue.cpp
    M Source/WebCore/css/CSSImageGeneratorValue.h
    M Source/WebCore/css/CSSImageSetValue.cpp
    M Source/WebCore/css/CSSImageSetValue.h
    M Source/WebCore/css/CSSImageValue.cpp
    M Source/WebCore/css/CSSImageValue.h
    M Source/WebCore/css/StyleResolver.cpp
    M Source/WebCore/page/PageSerializer.cpp
    M Source/WebCore/page/animation/CSSPropertyAnimation.cpp
    M Source/WebCore/rendering/RenderImageResourceStyleImage.cpp
    M Source/WebCore/rendering/shapes/ShapeOutsideInfo.cpp
    M Source/WebCore/rendering/style/StyleCachedImage.cpp
    M Source/WebCore/rendering/style/StyleCachedImage.h
    M Source/WebCore/rendering/style/StyleGeneratedImage.cpp
    M Source/WebCore/rendering/style/StyleGeneratedImage.h
    M Source/WebCore/rendering/style/StyleImage.h
    R Source/WebCore/rendering/style/StylePendingImage.h
    M Source/WebCore/style/StylePendingResources.cpp

  Log Message:
  -----------
  Merge r205181 - Remove StylePendingImage
https://bugs.webkit.org/show_bug.cgi?id=161245

Reviewed by Andreas Kling.

Instances of this confusing type are used as placeholders during style resolution.
We can get rid of it and make "pending" a state of StyleImage. This simplies the code and
will allow further improvements.

* WebCore.xcodeproj/project.pbxproj:
* css/CSSCrossfadeValue.cpp:
(WebCore::CSSCrossfadeValue::isPending):
(WebCore::CSSCrossfadeValue::blend):
* css/CSSCrossfadeValue.h:
* css/CSSCursorImageValue.cpp:
(WebCore::CSSCursorImageValue::CSSCursorImageValue):
(WebCore::CSSCursorImageValue::~CSSCursorImageValue):

    Save the original URL since the underlying CSSImageValue may change.

(WebCore::CSSCursorImageValue::updateCursorElement):
(WebCore::CSSCursorImageValue::cursorElementRemoved):
(WebCore::CSSCursorImageValue::cursorElementChanged):
(WebCore::CSSCursorImageValue::loadImage):
(WebCore::CSSCursorImageValue::styleImage):
(WebCore::CSSCursorImageValue::isSVGCursor):
(WebCore::CSSCursorImageValue::cachedImageURL):
(WebCore::CSSCursorImageValue::updateCachedImage):
(WebCore::CSSCursorImageValue::detachPendingImage): Deleted.
(WebCore::CSSCursorImageValue::cachedImage): Deleted.
(WebCore::CSSCursorImageValue::cachedOrPendingImage): Deleted.
(WebCore::CSSCursorImageValue::clearCachedImage): Deleted.
* css/CSSCursorImageValue.h:
* css/CSSFilterImageValue.cpp:
(WebCore::CSSFilterImageValue::isPending):
* css/CSSFilterImageValue.h:
* css/CSSImageGeneratorValue.cpp:
(WebCore::CSSImageGeneratorValue::isPending):
(WebCore::CSSImageGeneratorValue::subimageIsPending):
(WebCore::CSSImageGeneratorValue::cachedImageForCSSValue):
* css/CSSImageGeneratorValue.h:
* css/CSSImageSetValue.cpp:
(WebCore::CSSImageSetValue::~CSSImageSetValue):
(WebCore::CSSImageSetValue::loadBestFitImage):
(WebCore::CSSImageSetValue::styleImage):
(WebCore::CSSImageSetValue::traverseSubresources):
(WebCore::CSSImageSetValue::detachPendingImage): Deleted.
(WebCore::CSSImageSetValue::bestFitImage): Deleted.
(WebCore::CSSImageSetValue::cachedOrPendingImageSet): Deleted.
* css/CSSImageSetValue.h:
* css/CSSImageValue.cpp:
(WebCore::CSSImageValue::CSSImageValue):
(WebCore::CSSImageValue::~CSSImageValue):
(WebCore::CSSImageValue::isPending):
(WebCore::CSSImageValue::styleImage):
(WebCore::CSSImageValue::loadImage):
(WebCore::CSSImageValue::traverseSubresources):
(WebCore::CSSImageValue::detachPendingImage): Deleted.
(WebCore::CSSImageValue::cachedOrPendingImage): Deleted.
(WebCore::CSSImageValue::cachedImage): Deleted.
* css/CSSImageValue.h:
(WebCore::CSSImageValue::create):
* css/StyleResolver.cpp:
(WebCore::StyleResolver::cachedOrPendingFromValue):
(WebCore::StyleResolver::generatedOrPendingFromValue):
(WebCore::StyleResolver::setOrPendingFromValue):
(WebCore::StyleResolver::cursorOrPendingFromValue):
* page/PageSerializer.cpp:
(WebCore::PageSerializer::retrieveResourcesForProperties):
* page/animation/CSSPropertyAnimation.cpp:
(WebCore::blendFilter):
(WebCore::crossfadeBlend):
* rendering/RenderImageResourceStyleImage.cpp:
(WebCore::RenderImageResourceStyleImage::image):
* rendering/shapes/ShapeOutsideInfo.cpp:
(WebCore::ShapeOutsideInfo::createShapeForImage):
* rendering/style/StyleCachedImage.cpp:
(WebCore::StyleCachedImage::StyleCachedImage):
(WebCore::StyleCachedImage::~StyleCachedImage):
(WebCore::StyleCachedImage::setCachedImage):
(WebCore::StyleCachedImage::cssValue):
(WebCore::StyleCachedImage::canRender):
(WebCore::StyleCachedImage::isPending):
(WebCore::StyleCachedImage::isLoaded):
(WebCore::StyleCachedImage::errorOccurred):
(WebCore::StyleCachedImage::imageSize):
(WebCore::StyleCachedImage::imageHasRelativeWidth):
(WebCore::StyleCachedImage::imageHasRelativeHeight):
(WebCore::StyleCachedImage::computeIntrinsicDimensions):
(WebCore::StyleCachedImage::usesImageContainerSize):
(WebCore::StyleCachedImage::setContainerSizeForRenderer):
(WebCore::StyleCachedImage::addClient):
(WebCore::StyleCachedImage::removeClient):
(WebCore::StyleCachedImage::image):
(WebCore::StyleCachedImage::knownToBeOpaque):
* rendering/style/StyleCachedImage.h:
* rendering/style/StyleGeneratedImage.cpp:
(WebCore::StyleGeneratedImage::isPending):
* rendering/style/StyleGeneratedImage.h:
* rendering/style/StyleImage.h:
(WebCore::StyleImage::isCachedImage):
(WebCore::StyleImage::StyleImage):
(WebCore::StyleImage::canRender): Deleted.
(WebCore::StyleImage::isPendingImage): Deleted.
* rendering/style/StylePendingImage.h: Removed.
* style/StylePendingResources.cpp:
(WebCore::Style::loadPendingImage):
(WebCore::Style::loadPendingImages):


  Commit: 8f7e9e841a627c8dd9ce9f71dd214ec74c0a58fc
      https://github.com/WebKit/WebKit/commit/8f7e9e841a627c8dd9ce9f71dd214ec74c0a58fc
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp

  Log Message:
  -----------
  Merge r205182 - REGRESSION(r194846): [GTK] UI process crash visiting sites protected with HTTP auth when using GTK+ < 3.14
https://bugs.webkit.org/show_bug.cgi?id=161385

Reviewed by Antonio Gomes.

Since r194846, we are chaining up webkitWebViewBaseMotionNotifyEvent, but before GTK+ 3.14
GtkWidget::motion_notify_event was nullptr, so it can't be used unconditionally.

* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseMotionNotifyEvent):


  Commit: 28e44ba7ffd0431895e2bdce75dd54c40294725a
      https://github.com/WebKit/WebKit/commit/28e44ba7ffd0431895e2bdce75dd54c40294725a
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/text/assert-on-expansion-opportunity-expected.txt
    A LayoutTests/fast/text/assert-on-expansion-opportunity.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/FontCascade.cpp
    M Source/WebCore/platform/graphics/FontCascade.h
    M Source/WebCore/rendering/RenderBlockLineLayout.cpp

  Log Message:
  -----------
  Merge r205186 - ASSERTION FAILED: opportunitiesInRun <= expansionOpportunityCount in WebCore::computeExpansionForJustifiedText
https://bugs.webkit.org/show_bug.cgi?id=139393
<rdar://problem/27704243>

Reviewed by Myles C. Maxfield.

Source/WebCore:

This patch ensures that we always remove a valid 'after expansion' opportunity (even when the last entry
in the opportunities list is 0).

Test: fast/text/assert-on-expansion-opportunity.html

* rendering/RenderBlockLineLayout.cpp:
(WebCore::RenderBlockFlow::computeInlineDirectionPositionsForSegment):

LayoutTests:

* fast/text/assert-on-expansion-opportunity-expected.txt: Added.
* fast/text/assert-on-expansion-opportunity.html: Added.


  Commit: 751276b13a3c5d46217d740232d39ebaf19eea90
      https://github.com/WebKit/WebKit/commit/751276b13a3c5d46217d740232d39ebaf19eea90
  Author: Alex Christensen <achristensen at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/URLParser.cpp
    M Tools/ChangeLog
    M Tools/TestWebKitAPI/Tests/WebCore/URLParser.cpp

  Log Message:
  -----------
  Merge r205194 - URLParser should handle relative URLs that start with //
https://bugs.webkit.org/show_bug.cgi?id=161364

Reviewed by Darin Adler.

Source/WebCore:

Covered by an API test.

* platform/URLParser.cpp:
(WebCore::URLParser::parse):

Tools:

* TestWebKitAPI/Tests/WebCore/URLParser.cpp:
(TestWebKitAPI::checkRelativeURL):
(TestWebKitAPI::TEST_F):


  Commit: c76b2a4153e4eb2ed07fa8fdbda3d87d4d0b6f40
      https://github.com/WebKit/WebKit/commit/c76b2a4153e4eb2ed07fa8fdbda3d87d4d0b6f40
  Author: Brent Fulgham <bfulgham at webkit.org>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp
    M Source/WebCore/platform/graphics/transforms/TransformationMatrix.h
    M Tools/ChangeLog
    M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
    A Tools/TestWebKitAPI/Tests/WebCore/TransformationMatrix.cpp

  Log Message:
  -----------
  Merge r205197 - Use of uninitialised memory in TransformationMatrx::blend4()
https://bugs.webkit.org/show_bug.cgi?id=134621
<rdar://problem/27337539>

Reviewed by Dean Jackson.

Change is based on the Blink change (patch by <alancutter at chromium.org>):
<https://src.chromium.org/viewvc/blink?revision=177453&view=revision>

Source/WebCore:

TransformationMatrix::blend() was attempting to blend between non-invertable
matricies. This resulted in garbage stack variables being used.
This patch ensures that blend() will fall back to a 50% step interpolation
when one of the sides are not invertable.

Tested by new TransformationMatrix test in TestWebKitAPI.

* platform/graphics/transforms/TransformationMatrix.cpp:
(WebCore::TransformationMatrix::blend2): Properly handle failure in the
decompose method calls.
(WebCore::TransformationMatrix::blend4): Ditto.

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebCore/TransformationMatrix.cpp: Added.
(TestWebKitAPI::TEST):


  Commit: 91132dfe095c67f6279a2aa788b428548585098e
      https://github.com/WebKit/WebKit/commit/91132dfe095c67f6279a2aa788b428548585098e
  Author: Mark Lam <mark.lam at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/JavaScriptCore/API/APICallbackFunction.h
    M Source/JavaScriptCore/API/JSCallbackObjectFunctions.h
    M Source/JavaScriptCore/API/JSTypedArray.cpp
    M Source/JavaScriptCore/CMakeLists.txt
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
    M Source/JavaScriptCore/dfg/DFGOperations.cpp
    M Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp
    M Source/JavaScriptCore/inspector/JSInjectedScriptHostPrototype.cpp
    M Source/JavaScriptCore/inspector/JSJavaScriptCallFrame.cpp
    M Source/JavaScriptCore/inspector/JSJavaScriptCallFramePrototype.cpp
    M Source/JavaScriptCore/interpreter/CachedCall.h
    M Source/JavaScriptCore/interpreter/Interpreter.cpp
    M Source/JavaScriptCore/jit/JITOperations.cpp
    M Source/JavaScriptCore/jsc.cpp
    M Source/JavaScriptCore/llint/LLIntSlowPaths.cpp
    M Source/JavaScriptCore/runtime/ArrayConstructor.cpp
    M Source/JavaScriptCore/runtime/ArrayConstructor.h
    M Source/JavaScriptCore/runtime/ArrayPrototype.cpp
    M Source/JavaScriptCore/runtime/BooleanPrototype.cpp
    M Source/JavaScriptCore/runtime/CommonSlowPaths.cpp
    M Source/JavaScriptCore/runtime/CommonSlowPaths.h
    M Source/JavaScriptCore/runtime/CommonSlowPathsExceptions.cpp
    M Source/JavaScriptCore/runtime/ConstructData.cpp
    M Source/JavaScriptCore/runtime/DatePrototype.cpp
    M Source/JavaScriptCore/runtime/Error.cpp
    M Source/JavaScriptCore/runtime/Error.h
    M Source/JavaScriptCore/runtime/ErrorPrototype.cpp
    M Source/JavaScriptCore/runtime/ExceptionFuzz.cpp
    M Source/JavaScriptCore/runtime/ExceptionHelpers.cpp
    M Source/JavaScriptCore/runtime/ExceptionHelpers.h
    M Source/JavaScriptCore/runtime/Executable.cpp
    M Source/JavaScriptCore/runtime/FunctionConstructor.cpp
    M Source/JavaScriptCore/runtime/FunctionPrototype.cpp
    M Source/JavaScriptCore/runtime/GetterSetter.cpp
    M Source/JavaScriptCore/runtime/IntlCollator.cpp
    M Source/JavaScriptCore/runtime/IntlCollatorPrototype.cpp
    M Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp
    M Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp
    M Source/JavaScriptCore/runtime/IntlNumberFormat.cpp
    M Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp
    M Source/JavaScriptCore/runtime/IntlObject.cpp
    M Source/JavaScriptCore/runtime/IteratorOperations.cpp
    M Source/JavaScriptCore/runtime/JSArray.cpp
    M Source/JavaScriptCore/runtime/JSArrayBufferConstructor.cpp
    M Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp
    M Source/JavaScriptCore/runtime/JSCInlines.h
    M Source/JavaScriptCore/runtime/JSCJSValue.cpp
    M Source/JavaScriptCore/runtime/JSCJSValueInlines.h
    M Source/JavaScriptCore/runtime/JSDataView.cpp
    M Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp
    M Source/JavaScriptCore/runtime/JSFunction.cpp
    M Source/JavaScriptCore/runtime/JSGenericTypedArrayView.h
    M Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h
    M Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h
    M Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeFunctions.h
    M Source/JavaScriptCore/runtime/JSGlobalObject.cpp
    M Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp
    M Source/JavaScriptCore/runtime/JSModuleEnvironment.cpp
    M Source/JavaScriptCore/runtime/JSModuleNamespaceObject.cpp
    M Source/JavaScriptCore/runtime/JSModuleRecord.cpp
    M Source/JavaScriptCore/runtime/JSONObject.cpp
    M Source/JavaScriptCore/runtime/JSObject.cpp
    M Source/JavaScriptCore/runtime/JSObject.h
    M Source/JavaScriptCore/runtime/JSObjectInlines.h
    M Source/JavaScriptCore/runtime/JSPromiseConstructor.cpp
    M Source/JavaScriptCore/runtime/JSPropertyNameIterator.cpp
    M Source/JavaScriptCore/runtime/JSString.cpp
    M Source/JavaScriptCore/runtime/JSStringBuilder.h
    M Source/JavaScriptCore/runtime/JSStringJoiner.cpp
    M Source/JavaScriptCore/runtime/JSStringJoiner.h
    M Source/JavaScriptCore/runtime/JSSymbolTableObject.h
    M Source/JavaScriptCore/runtime/JSTypedArrayViewConstructor.cpp
    M Source/JavaScriptCore/runtime/JSTypedArrayViewPrototype.cpp
    M Source/JavaScriptCore/runtime/MapConstructor.cpp
    M Source/JavaScriptCore/runtime/MapDataInlines.h
    M Source/JavaScriptCore/runtime/MapIteratorPrototype.cpp
    M Source/JavaScriptCore/runtime/MapPrototype.cpp
    M Source/JavaScriptCore/runtime/ModuleLoaderPrototype.cpp
    M Source/JavaScriptCore/runtime/NullSetterFunction.cpp
    M Source/JavaScriptCore/runtime/NumberPrototype.cpp
    M Source/JavaScriptCore/runtime/ObjectConstructor.cpp
    M Source/JavaScriptCore/runtime/ObjectPrototype.cpp
    M Source/JavaScriptCore/runtime/Operations.h
    M Source/JavaScriptCore/runtime/ProxyConstructor.cpp
    M Source/JavaScriptCore/runtime/ProxyObject.cpp
    M Source/JavaScriptCore/runtime/ReflectObject.cpp
    M Source/JavaScriptCore/runtime/RegExpConstructor.cpp
    M Source/JavaScriptCore/runtime/RegExpObject.cpp
    M Source/JavaScriptCore/runtime/RegExpObject.h
    M Source/JavaScriptCore/runtime/RegExpPrototype.cpp
    M Source/JavaScriptCore/runtime/Reject.h
    M Source/JavaScriptCore/runtime/SetConstructor.cpp
    M Source/JavaScriptCore/runtime/SetIteratorPrototype.cpp
    M Source/JavaScriptCore/runtime/SetPrototype.cpp
    M Source/JavaScriptCore/runtime/SparseArrayValueMap.cpp
    M Source/JavaScriptCore/runtime/StringConstructor.cpp
    M Source/JavaScriptCore/runtime/StringObject.cpp
    M Source/JavaScriptCore/runtime/StringPrototype.cpp
    M Source/JavaScriptCore/runtime/StringRecursionChecker.cpp
    M Source/JavaScriptCore/runtime/Symbol.cpp
    M Source/JavaScriptCore/runtime/SymbolConstructor.cpp
    M Source/JavaScriptCore/runtime/SymbolPrototype.cpp
    A Source/JavaScriptCore/runtime/ThrowScope.cpp
    A Source/JavaScriptCore/runtime/ThrowScope.h
    A Source/JavaScriptCore/runtime/ThrowScopeLocation.h
    M Source/JavaScriptCore/runtime/VM.h
    M Source/JavaScriptCore/runtime/VMEntryScope.h
    M Source/JavaScriptCore/runtime/WeakMapConstructor.cpp
    M Source/JavaScriptCore/runtime/WeakMapPrototype.cpp
    M Source/JavaScriptCore/runtime/WeakSetConstructor.cpp
    M Source/JavaScriptCore/runtime/WeakSetPrototype.cpp
    M Source/WTF/ChangeLog
    M Source/WTF/wtf/Platform.h
    M Source/WebCore/ChangeLog
    M Source/WebCore/bindings/js/JSApplePaySessionCustom.cpp
    M Source/WebCore/bindings/js/JSBlobCustom.cpp
    M Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp
    M Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp
    M Source/WebCore/bindings/js/JSCryptoCustom.cpp
    M Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.cpp
    M Source/WebCore/bindings/js/JSCryptoOperationData.cpp
    M Source/WebCore/bindings/js/JSCustomElementInterface.cpp
    M Source/WebCore/bindings/js/JSCustomElementRegistryCustom.cpp
    M Source/WebCore/bindings/js/JSDOMBinding.cpp
    M Source/WebCore/bindings/js/JSDOMBinding.h
    M Source/WebCore/bindings/js/JSDOMConstructor.h
    M Source/WebCore/bindings/js/JSDOMConvert.h
    M Source/WebCore/bindings/js/JSDOMIterator.h
    M Source/WebCore/bindings/js/JSDOMWindowCustom.cpp
    M Source/WebCore/bindings/js/JSDataCueCustom.cpp
    M Source/WebCore/bindings/js/JSDictionary.cpp
    M Source/WebCore/bindings/js/JSDocumentCustom.cpp
    M Source/WebCore/bindings/js/JSFileCustom.cpp
    M Source/WebCore/bindings/js/JSHTMLAllCollectionCustom.cpp
    M Source/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp
    M Source/WebCore/bindings/js/JSHTMLDocumentCustom.cpp
    M Source/WebCore/bindings/js/JSHTMLElementCustom.cpp
    M Source/WebCore/bindings/js/JSHTMLFormControlsCollectionCustom.cpp
    M Source/WebCore/bindings/js/JSHTMLInputElementCustom.cpp
    M Source/WebCore/bindings/js/JSHistoryCustom.cpp
    M Source/WebCore/bindings/js/JSIDBDatabaseCustom.cpp
    M Source/WebCore/bindings/js/JSImageConstructor.cpp
    M Source/WebCore/bindings/js/JSLocationCustom.cpp
    M Source/WebCore/bindings/js/JSMediaDevicesCustom.cpp
    M Source/WebCore/bindings/js/JSMediaStreamTrackCustom.cpp
    M Source/WebCore/bindings/js/JSMessagePortCustom.cpp
    M Source/WebCore/bindings/js/JSMessagePortCustom.h
    M Source/WebCore/bindings/js/JSMockContentFilterSettingsCustom.cpp
    M Source/WebCore/bindings/js/JSModuleLoader.cpp
    M Source/WebCore/bindings/js/JSMutationObserverCustom.cpp
    M Source/WebCore/bindings/js/JSNodeCustom.cpp
    M Source/WebCore/bindings/js/JSNodeFilterCustom.cpp
    M Source/WebCore/bindings/js/JSPluginElementFunctions.cpp
    M Source/WebCore/bindings/js/JSReadableStreamPrivateConstructors.cpp
    M Source/WebCore/bindings/js/JSSVGLengthCustom.cpp
    M Source/WebCore/bindings/js/JSWebGL2RenderingContextCustom.cpp
    M Source/WebCore/bindings/js/JSWebGLRenderingContextBaseCustom.cpp
    M Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp
    M Source/WebCore/bindings/js/JSWorkerCustom.cpp
    M Source/WebCore/bindings/js/JSWorkerGlobalScopeCustom.cpp
    M Source/WebCore/bindings/js/ReadableStreamDefaultController.cpp
    M Source/WebCore/bindings/js/SerializedScriptValue.cpp
    M Source/WebCore/bindings/js/WorkerScriptController.cpp
    M Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
    M Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSattribute.cpp
    M Source/WebCore/bindings/scripts/test/JS/JSreadonly.cpp
    M Source/WebCore/bridge/c/c_instance.cpp
    M Source/WebCore/bridge/objc/objc_instance.mm
    M Source/WebCore/bridge/objc/objc_runtime.mm
    M Source/WebCore/bridge/objc/objc_utility.h
    M Source/WebCore/bridge/objc/objc_utility.mm
    M Source/WebCore/bridge/runtime_array.cpp
    M Source/WebCore/bridge/runtime_method.cpp
    M Source/WebCore/bridge/runtime_object.cpp
    M Source/WebCore/bridge/runtime_object.h
    M Source/WebKit/mac/ChangeLog
    M Source/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm
    M Source/WebKit/mac/Plugins/Hosted/ProxyInstance.mm
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/WebProcess/Plugins/Netscape/JSNPMethod.cpp
    M Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.cpp
    M Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h
    M Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp

  Log Message:
  -----------
  Merge r205198 - Introduce the ThrowScope and force every throw site to instantiate a ThrowScope.
https://bugs.webkit.org/show_bug.cgi?id=161171

Reviewed by Filip Pizlo and Geoffrey Garen.

Source/JavaScriptCore:

This is the first step towards having a mechanism (using the ThrowScope) to
verify that we're properly checking for exceptions in all the needed places.
See comments at the top of ThrowScope.cpp for details on how the ThrowScope works.

This patch only introduces the ThrowScope, and changes all throw sites to throw
using a ThrowScope instance.  VM::throwException() functions are now private, and
cannot be accessed directly.  All throws must now go through a ThrowScope.

Verification is disabled for the moment until we can fix all the verification
failures that will show up.

I also did a smoke test of the ThrowScope mechanisms by running verification on
the JSTests/stress/op-add-exceptions.js test with a local build with verification
turned on.

Performance is neutral on aggregate with this patch.

Misc other changes:
- deleted the unused CALL_THROW() macro from LLIntSlowPaths.cpp.
- moved createListFromArrayLike() from JSObject.h to JSObjectInlines.h.

* API/APICallbackFunction.h:
(JSC::APICallbackFunction::call):
(JSC::APICallbackFunction::construct):
* API/JSCallbackObjectFunctions.h:
(JSC::JSCallbackObject<Parent>::getOwnPropertySlot):
(JSC::JSCallbackObject<Parent>::defaultValue):
(JSC::JSCallbackObject<Parent>::put):
(JSC::JSCallbackObject<Parent>::putByIndex):
(JSC::JSCallbackObject<Parent>::deleteProperty):
(JSC::JSCallbackObject<Parent>::construct):
(JSC::JSCallbackObject<Parent>::customHasInstance):
(JSC::JSCallbackObject<Parent>::call):
(JSC::JSCallbackObject<Parent>::getStaticValue):
(JSC::JSCallbackObject<Parent>::staticFunctionGetter):
(JSC::JSCallbackObject<Parent>::callbackGetter):
* API/JSTypedArray.cpp:
(createTypedArray):
* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* dfg/DFGOperations.cpp:
(JSC::DFG::newTypedArrayWithSize):
* inspector/JSInjectedScriptHost.cpp:
(Inspector::JSInjectedScriptHost::evaluateWithScopeExtension):
* inspector/JSInjectedScriptHostPrototype.cpp:
(Inspector::jsInjectedScriptHostPrototypeAttributeEvaluate):
(Inspector::jsInjectedScriptHostPrototypeFunctionInternalConstructorName):
(Inspector::jsInjectedScriptHostPrototypeFunctionIsHTMLAllCollection):
(Inspector::jsInjectedScriptHostPrototypeFunctionWeakMapSize):
(Inspector::jsInjectedScriptHostPrototypeFunctionWeakMapEntries):
(Inspector::jsInjectedScriptHostPrototypeFunctionWeakSetSize):
(Inspector::jsInjectedScriptHostPrototypeFunctionWeakSetEntries):
(Inspector::jsInjectedScriptHostPrototypeFunctionIteratorEntries):
(Inspector::jsInjectedScriptHostPrototypeFunctionEvaluateWithScopeExtension):
(Inspector::jsInjectedScriptHostPrototypeFunctionSubtype):
(Inspector::jsInjectedScriptHostPrototypeFunctionFunctionDetails):
(Inspector::jsInjectedScriptHostPrototypeFunctionGetInternalProperties):
* inspector/JSJavaScriptCallFrame.cpp:
(Inspector::JSJavaScriptCallFrame::evaluateWithScopeExtension):
* inspector/JSJavaScriptCallFramePrototype.cpp:
(Inspector::jsJavaScriptCallFramePrototypeFunctionEvaluateWithScopeExtension):
(Inspector::jsJavaScriptCallFramePrototypeFunctionScopeDescriptions):
(Inspector::jsJavaScriptCallFrameAttributeCaller):
(Inspector::jsJavaScriptCallFrameAttributeSourceID):
(Inspector::jsJavaScriptCallFrameAttributeLine):
(Inspector::jsJavaScriptCallFrameAttributeColumn):
(Inspector::jsJavaScriptCallFrameAttributeFunctionName):
(Inspector::jsJavaScriptCallFrameAttributeScopeChain):
(Inspector::jsJavaScriptCallFrameAttributeThisObject):
(Inspector::jsJavaScriptCallFrameAttributeType):
(Inspector::jsJavaScriptCallFrameIsTailDeleted):
* interpreter/CachedCall.h:
(JSC::CachedCall::CachedCall):
* interpreter/Interpreter.cpp:
(JSC::eval):
(JSC::sizeOfVarargs):
(JSC::sizeFrameForForwardArguments):
(JSC::sizeFrameForVarargs):
(JSC::Interpreter::execute):
(JSC::Interpreter::executeCall):
(JSC::Interpreter::executeConstruct):
(JSC::Interpreter::prepareForRepeatCall):
* jit/JITOperations.cpp:
* jsc.cpp:
(WTF::CustomGetter::customGetter):
(WTF::RuntimeArray::lengthGetter):
(functionCreateElement):
(functionRun):
(functionRunString):
(functionLoad):
(functionLoadString):
(functionReadFile):
(functionCheckSyntax):
(functionTransferArrayBuffer):
(functionLoadModule):
(functionCheckModuleSyntax):
(functionSamplingProfilerStackTraces):
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
(JSC::LLInt::getByVal):
(JSC::LLInt::handleHostCall):
(JSC::LLInt::setUpCall):
(JSC::LLInt::llint_throw_stack_overflow_error):
* runtime/ArrayConstructor.cpp:
(JSC::constructArrayWithSizeQuirk):
* runtime/ArrayConstructor.h:
(JSC::isArray):
* runtime/ArrayPrototype.cpp:
(JSC::shift):
(JSC::unshift):
(JSC::arrayProtoFuncToString):
(JSC::arrayProtoFuncPop):
(JSC::arrayProtoFuncReverse):
(JSC::arrayProtoFuncSplice):
(JSC::concatAppendOne):
(JSC::arrayProtoPrivateFuncConcatMemcpy):
* runtime/BooleanPrototype.cpp:
(JSC::booleanProtoFuncToString):
(JSC::booleanProtoFuncValueOf):
* runtime/CommonSlowPaths.cpp:
* runtime/CommonSlowPaths.h:
(JSC::CommonSlowPaths::opIn):
* runtime/CommonSlowPathsExceptions.cpp:
(JSC::CommonSlowPaths::interpreterThrowInCaller):
* runtime/ConstructData.cpp:
(JSC::construct):
* runtime/DatePrototype.cpp:
(JSC::formateDateInstance):
(JSC::dateProtoFuncToISOString):
(JSC::dateProtoFuncToLocaleString):
(JSC::dateProtoFuncToLocaleDateString):
(JSC::dateProtoFuncToLocaleTimeString):
(JSC::dateProtoFuncToPrimitiveSymbol):
(JSC::dateProtoFuncGetTime):
(JSC::dateProtoFuncGetFullYear):
(JSC::dateProtoFuncGetUTCFullYear):
(JSC::dateProtoFuncGetMonth):
(JSC::dateProtoFuncGetUTCMonth):
(JSC::dateProtoFuncGetDate):
(JSC::dateProtoFuncGetUTCDate):
(JSC::dateProtoFuncGetDay):
(JSC::dateProtoFuncGetUTCDay):
(JSC::dateProtoFuncGetHours):
(JSC::dateProtoFuncGetUTCHours):
(JSC::dateProtoFuncGetMinutes):
(JSC::dateProtoFuncGetUTCMinutes):
(JSC::dateProtoFuncGetSeconds):
(JSC::dateProtoFuncGetUTCSeconds):
(JSC::dateProtoFuncGetMilliSeconds):
(JSC::dateProtoFuncGetUTCMilliseconds):
(JSC::dateProtoFuncGetTimezoneOffset):
(JSC::dateProtoFuncSetTime):
(JSC::setNewValueFromTimeArgs):
(JSC::setNewValueFromDateArgs):
(JSC::dateProtoFuncSetYear):
(JSC::dateProtoFuncGetYear):
(JSC::dateProtoFuncToJSON):
* runtime/Error.cpp:
(JSC::throwConstructorCannotBeCalledAsFunctionTypeError):
(JSC::throwTypeError):
(JSC::throwSyntaxError):
* runtime/Error.h:
(JSC::throwRangeError):
(JSC::throwVMError):
(JSC::throwVMTypeError):
(JSC::throwVMRangeError):
(JSC::StrictModeTypeErrorFunction::constructThrowTypeError):
(JSC::StrictModeTypeErrorFunction::callThrowTypeError):
* runtime/ErrorPrototype.cpp:
(JSC::errorProtoFuncToString):
* runtime/ExceptionFuzz.cpp:
(JSC::doExceptionFuzzing):
* runtime/ExceptionHelpers.cpp:
(JSC::throwOutOfMemoryError):
(JSC::throwStackOverflowError):
(JSC::throwTerminatedExecutionException):
* runtime/ExceptionHelpers.h:
* runtime/Executable.cpp:
(JSC::ScriptExecutable::newCodeBlockFor):
(JSC::EvalExecutable::create):
* runtime/FunctionConstructor.cpp:
(JSC::constructFunction):
(JSC::constructFunctionSkippingEvalEnabledCheck):
* runtime/FunctionPrototype.cpp:
(JSC::functionProtoFuncToString):
(JSC::functionProtoFuncBind):
* runtime/GetterSetter.cpp:
(JSC::callSetter):
* runtime/IntlCollator.cpp:
(JSC::IntlCollator::compareStrings):
* runtime/IntlCollatorPrototype.cpp:
(JSC::IntlCollatorPrototypeGetterCompare):
(JSC::IntlCollatorPrototypeFuncResolvedOptions):
* runtime/IntlDateTimeFormat.cpp:
(JSC::IntlDateTimeFormat::initializeDateTimeFormat):
(JSC::IntlDateTimeFormat::format):
* runtime/IntlDateTimeFormatPrototype.cpp:
(JSC::IntlDateTimeFormatPrototypeGetterFormat):
(JSC::IntlDateTimeFormatPrototypeFuncResolvedOptions):
* runtime/IntlNumberFormat.cpp:
(JSC::IntlNumberFormat::initializeNumberFormat):
(JSC::IntlNumberFormat::formatNumber):
* runtime/IntlNumberFormatPrototype.cpp:
(JSC::IntlNumberFormatPrototypeGetterFormat):
(JSC::IntlNumberFormatPrototypeFuncResolvedOptions):
* runtime/IntlObject.cpp:
(JSC::intlStringOption):
(JSC::intlNumberOption):
(JSC::canonicalizeLocaleList):
(JSC::lookupSupportedLocales):
* runtime/IteratorOperations.cpp:
(JSC::iteratorNext):
(JSC::iteratorClose):
(JSC::createIteratorResultObject):
(JSC::iteratorForIterable):
* runtime/JSArray.cpp:
(JSC::JSArray::defineOwnProperty):
(JSC::JSArray::put):
(JSC::JSArray::appendMemcpy):
(JSC::JSArray::setLength):
(JSC::JSArray::pop):
(JSC::JSArray::push):
(JSC::JSArray::unshiftCountWithArrayStorage):
(JSC::JSArray::unshiftCountWithAnyIndexingType):
* runtime/JSArrayBufferConstructor.cpp:
(JSC::constructArrayBuffer):
(JSC::callArrayBuffer):
* runtime/JSArrayBufferPrototype.cpp:
(JSC::arrayBufferProtoFuncSlice):
* runtime/JSCInlines.h:
* runtime/JSCJSValue.cpp:
(JSC::JSValue::toObjectSlowCase):
(JSC::JSValue::synthesizePrototype):
(JSC::JSValue::putToPrimitive):
(JSC::JSValue::putToPrimitiveByIndex):
(JSC::JSValue::toStringSlowCase):
* runtime/JSCJSValueInlines.h:
(JSC::toPreferredPrimitiveType):
(JSC::JSValue::requireObjectCoercible):
* runtime/JSDataView.cpp:
(JSC::JSDataView::create):
* runtime/JSDataViewPrototype.cpp:
(JSC::getData):
(JSC::setData):
(JSC::dataViewProtoGetterBuffer):
(JSC::dataViewProtoGetterByteLength):
(JSC::dataViewProtoGetterByteOffset):
* runtime/JSFunction.cpp:
(JSC::callHostFunctionAsConstructor):
(JSC::JSFunction::callerGetter):
(JSC::JSFunction::put):
(JSC::JSFunction::defineOwnProperty):
* runtime/JSGenericTypedArrayView.h:
(JSC::JSGenericTypedArrayView::setIndex):
* runtime/JSGenericTypedArrayViewConstructorInlines.h:
(JSC::constructGenericTypedArrayViewFromIterator):
(JSC::constructGenericTypedArrayViewWithArguments):
(JSC::constructGenericTypedArrayView):
(JSC::callGenericTypedArrayView):
* runtime/JSGenericTypedArrayViewInlines.h:
(JSC::JSGenericTypedArrayView<Adaptor>::create):
(JSC::JSGenericTypedArrayView<Adaptor>::createUninitialized):
(JSC::JSGenericTypedArrayView<Adaptor>::validateRange):
(JSC::JSGenericTypedArrayView<Adaptor>::throwNeuteredTypedArrayTypeError):
* runtime/JSGenericTypedArrayViewPrototypeFunctions.h:
(JSC::speciesConstruct):
(JSC::genericTypedArrayViewProtoFuncSet):
(JSC::genericTypedArrayViewProtoFuncCopyWithin):
(JSC::genericTypedArrayViewProtoFuncIncludes):
(JSC::genericTypedArrayViewProtoFuncIndexOf):
(JSC::genericTypedArrayViewProtoFuncJoin):
(JSC::genericTypedArrayViewProtoFuncLastIndexOf):
(JSC::genericTypedArrayViewProtoGetterFuncBuffer):
(JSC::genericTypedArrayViewProtoGetterFuncLength):
(JSC::genericTypedArrayViewProtoGetterFuncByteLength):
(JSC::genericTypedArrayViewProtoGetterFuncByteOffset):
(JSC::genericTypedArrayViewProtoFuncReverse):
(JSC::genericTypedArrayViewPrivateFuncSort):
(JSC::genericTypedArrayViewProtoFuncSlice):
(JSC::genericTypedArrayViewPrivateFuncSubarrayCreate):
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::createEvalCodeBlock):
(JSC::JSGlobalObject::createModuleProgramCodeBlock):
* runtime/JSGlobalObjectFunctions.cpp:
(JSC::encode):
(JSC::decode):
(JSC::globalFuncEval):
(JSC::globalFuncThrowTypeError):
(JSC::globalFuncThrowTypeErrorArgumentsCalleeAndCaller):
(JSC::globalFuncProtoGetter):
(JSC::globalFuncProtoSetter):
* runtime/JSModuleEnvironment.cpp:
(JSC::JSModuleEnvironment::put):
* runtime/JSModuleNamespaceObject.cpp:
(JSC::JSModuleNamespaceObject::getOwnPropertySlot):
(JSC::JSModuleNamespaceObject::put):
(JSC::JSModuleNamespaceObject::putByIndex):
(JSC::JSModuleNamespaceObject::defineOwnProperty):
(JSC::moduleNamespaceObjectSymbolIterator):
* runtime/JSModuleRecord.cpp:
(JSC::JSModuleRecord::getModuleNamespace):
(JSC::JSModuleRecord::link):
(JSC::JSModuleRecord::instantiateDeclarations):
* runtime/JSONObject.cpp:
(JSC::Stringifier::appendStringifiedValue):
(JSC::Walker::walk):
(JSC::JSONProtoFuncParse):
(JSC::JSONProtoFuncStringify):
* runtime/JSObject.cpp:
(JSC::JSObject::setPrototypeWithCycleCheck):
(JSC::callToPrimitiveFunction):
(JSC::JSObject::ordinaryToPrimitive):
(JSC::JSObject::hasInstance):
(JSC::JSObject::defaultHasInstance):
(JSC::JSObject::putByIndexBeyondVectorLengthWithoutAttributes):
(JSC::JSObject::putByIndexBeyondVectorLengthWithArrayStorage):
(JSC::validateAndApplyPropertyDescriptor):
(JSC::JSObject::getMethod):
* runtime/JSObject.h:
(JSC::createListFromArrayLike): Deleted.
* runtime/JSObjectInlines.h:
(JSC::createListFromArrayLike):
(JSC::JSObject::putInline):
* runtime/JSPromiseConstructor.cpp:
(JSC::constructPromise):
(JSC::callPromise):
* runtime/JSPropertyNameIterator.cpp:
(JSC::propertyNameIteratorFuncNext):
* runtime/JSString.cpp:
(JSC::JSRopeString::outOfMemory):
* runtime/JSStringBuilder.h:
(JSC::JSStringBuilder::build):
(JSC::jsMakeNontrivialString):
* runtime/JSStringJoiner.cpp:
(JSC::JSStringJoiner::joinedLength):
(JSC::JSStringJoiner::join):
* runtime/JSStringJoiner.h:
(JSC::JSStringJoiner::JSStringJoiner):
* runtime/JSSymbolTableObject.h:
(JSC::symbolTablePut):
* runtime/JSTypedArrayViewConstructor.cpp:
(JSC::constructTypedArrayView):
* runtime/JSTypedArrayViewPrototype.cpp:
(JSC::typedArrayViewPrivateFuncLength):
(JSC::typedArrayViewPrivateFuncSort):
(JSC::typedArrayViewProtoFuncSet):
(JSC::typedArrayViewProtoFuncCopyWithin):
(JSC::typedArrayViewProtoFuncIncludes):
(JSC::typedArrayViewProtoFuncLastIndexOf):
(JSC::typedArrayViewProtoFuncIndexOf):
(JSC::typedArrayViewProtoFuncJoin):
(JSC::typedArrayViewProtoGetterFuncBuffer):
(JSC::typedArrayViewProtoGetterFuncLength):
(JSC::typedArrayViewProtoGetterFuncByteLength):
(JSC::typedArrayViewProtoGetterFuncByteOffset):
(JSC::typedArrayViewProtoFuncReverse):
(JSC::typedArrayViewPrivateFuncSubarrayCreate):
(JSC::typedArrayViewProtoFuncSlice):
* runtime/MapConstructor.cpp:
(JSC::callMap):
(JSC::constructMap):
* runtime/MapDataInlines.h:
(JSC::JSIterator>::ensureSpaceForAppend):
* runtime/MapIteratorPrototype.cpp:
(JSC::MapIteratorPrototypeFuncNext):
* runtime/MapPrototype.cpp:
(JSC::getMap):
(JSC::mapProtoFuncValues):
(JSC::mapProtoFuncEntries):
(JSC::mapProtoFuncKeys):
* runtime/ModuleLoaderPrototype.cpp:
(JSC::moduleLoaderPrototypeParseModule):
* runtime/NullSetterFunction.cpp:
(JSC::callReturnUndefined):
* runtime/NumberPrototype.cpp:
(JSC::numberProtoFuncToExponential):
(JSC::numberProtoFuncToFixed):
(JSC::numberProtoFuncToPrecision):
(JSC::numberProtoFuncToString):
(JSC::numberProtoFuncToLocaleString):
(JSC::numberProtoFuncValueOf):
* runtime/ObjectConstructor.cpp:
(JSC::objectConstructorSetPrototypeOf):
(JSC::toPropertyDescriptor):
(JSC::objectConstructorDefineProperty):
(JSC::objectConstructorDefineProperties):
(JSC::objectConstructorCreate):
* runtime/ObjectPrototype.cpp:
(JSC::objectProtoFuncDefineGetter):
(JSC::objectProtoFuncDefineSetter):
(JSC::objectProtoFuncToString):
* runtime/Operations.h:
(JSC::jsString):
(JSC::jsStringFromRegisterArray):
(JSC::jsStringFromArguments):
* runtime/ProxyConstructor.cpp:
(JSC::makeRevocableProxy):
(JSC::proxyRevocableConstructorThrowError):
(JSC::constructProxyObject):
(JSC::callProxy):
* runtime/ProxyObject.cpp:
(JSC::ProxyObject::finishCreation):
(JSC::performProxyGet):
(JSC::ProxyObject::performInternalMethodGetOwnProperty):
(JSC::ProxyObject::performHasProperty):
(JSC::ProxyObject::getOwnPropertySlotCommon):
(JSC::ProxyObject::performPut):
(JSC::performProxyCall):
(JSC::performProxyConstruct):
(JSC::ProxyObject::performDelete):
(JSC::ProxyObject::performPreventExtensions):
(JSC::ProxyObject::performIsExtensible):
(JSC::ProxyObject::performDefineOwnProperty):
(JSC::ProxyObject::performGetOwnPropertyNames):
(JSC::ProxyObject::performSetPrototype):
(JSC::ProxyObject::performGetPrototype):
* runtime/ReflectObject.cpp:
(JSC::reflectObjectConstruct):
(JSC::reflectObjectDefineProperty):
(JSC::reflectObjectEnumerate):
(JSC::reflectObjectGet):
(JSC::reflectObjectGetOwnPropertyDescriptor):
(JSC::reflectObjectGetPrototypeOf):
(JSC::reflectObjectIsExtensible):
(JSC::reflectObjectOwnKeys):
(JSC::reflectObjectPreventExtensions):
(JSC::reflectObjectSet):
(JSC::reflectObjectSetPrototypeOf):
* runtime/RegExpConstructor.cpp:
(JSC::toFlags):
(JSC::regExpCreate):
* runtime/RegExpObject.cpp:
(JSC::collectMatches):
* runtime/RegExpObject.h:
(JSC::RegExpObject::setLastIndex):
* runtime/RegExpPrototype.cpp:
(JSC::regExpProtoFuncTestFast):
(JSC::regExpProtoFuncExec):
(JSC::regExpProtoFuncMatchFast):
(JSC::regExpProtoFuncCompile):
(JSC::regExpProtoFuncToString):
(JSC::regExpProtoGetterGlobal):
(JSC::regExpProtoGetterIgnoreCase):
(JSC::regExpProtoGetterMultiline):
(JSC::regExpProtoGetterSticky):
(JSC::regExpProtoGetterUnicode):
(JSC::regExpProtoGetterFlags):
(JSC::regExpProtoGetterSource):
(JSC::regExpProtoFuncSplitFast):
* runtime/Reject.h:
(JSC::reject):
* runtime/SetConstructor.cpp:
(JSC::callSet):
(JSC::constructSet):
* runtime/SetIteratorPrototype.cpp:
(JSC::SetIteratorPrototypeFuncNext):
* runtime/SetPrototype.cpp:
(JSC::getSet):
(JSC::setProtoFuncValues):
(JSC::setProtoFuncEntries):
* runtime/SparseArrayValueMap.cpp:
(JSC::SparseArrayValueMap::putEntry):
(JSC::SparseArrayEntry::put):
* runtime/StringConstructor.cpp:
(JSC::stringFromCodePoint):
* runtime/StringObject.cpp:
(JSC::StringObject::put):
(JSC::StringObject::putByIndex):
* runtime/StringPrototype.cpp:
(JSC::jsSpliceSubstrings):
(JSC::jsSpliceSubstringsWithSeparators):
(JSC::repeatCharacter):
(JSC::replace):
(JSC::stringProtoFuncToString):
(JSC::stringProtoFuncCharAt):
(JSC::stringProtoFuncCharCodeAt):
(JSC::stringProtoFuncCodePointAt):
(JSC::stringProtoFuncConcat):
(JSC::stringProtoFuncIndexOf):
(JSC::stringProtoFuncLastIndexOf):
(JSC::stringProtoFuncSlice):
(JSC::stringProtoFuncSubstr):
(JSC::stringProtoFuncSubstring):
(JSC::stringProtoFuncToLowerCase):
(JSC::stringProtoFuncToUpperCase):
(JSC::stringProtoFuncLocaleCompare):
(JSC::toLocaleCase):
(JSC::stringProtoFuncBig):
(JSC::stringProtoFuncSmall):
(JSC::stringProtoFuncBlink):
(JSC::stringProtoFuncBold):
(JSC::stringProtoFuncFixed):
(JSC::stringProtoFuncItalics):
(JSC::stringProtoFuncStrike):
(JSC::stringProtoFuncSub):
(JSC::stringProtoFuncSup):
(JSC::stringProtoFuncFontcolor):
(JSC::stringProtoFuncFontsize):
(JSC::stringProtoFuncAnchor):
(JSC::stringProtoFuncLink):
(JSC::trimString):
(JSC::stringProtoFuncStartsWith):
(JSC::stringProtoFuncEndsWith):
(JSC::stringProtoFuncIncludes):
(JSC::stringProtoFuncIterator):
(JSC::normalize):
(JSC::stringProtoFuncNormalize):
* runtime/StringRecursionChecker.cpp:
(JSC::StringRecursionChecker::throwStackOverflowError):
* runtime/Symbol.cpp:
(JSC::Symbol::toNumber):
* runtime/SymbolConstructor.cpp:
(JSC::symbolConstructorKeyFor):
* runtime/SymbolPrototype.cpp:
(JSC::symbolProtoFuncToString):
(JSC::symbolProtoFuncValueOf):
* runtime/ThrowScope.cpp: Added.
(JSC::ThrowScope::ThrowScope):
(JSC::ThrowScope::~ThrowScope):
(JSC::ThrowScope::throwException):
(JSC::ThrowScope::printIfNeedCheck):
(JSC::ThrowScope::simulateThrow):
(JSC::ThrowScope::verifyExceptionCheckNeedIsSatisfied):
* runtime/ThrowScope.h: Added.
(JSC::ThrowScope::vm):
(JSC::ThrowScope::exception):
(JSC::ThrowScope::release):
(JSC::ThrowScope::ThrowScope):
(JSC::ThrowScope::throwException):
(JSC::throwException):
* runtime/ThrowScopeLocation.h: Added.
(JSC::ThrowScopeLocation::ThrowScopeLocation):
* runtime/VM.h:
* runtime/VMEntryScope.h:
(JSC::VMEntryScope::vm):
* runtime/WeakMapConstructor.cpp:
(JSC::callWeakMap):
(JSC::constructWeakMap):
* runtime/WeakMapPrototype.cpp:
(JSC::getWeakMapData):
(JSC::protoFuncWeakMapSet):
* runtime/WeakSetConstructor.cpp:
(JSC::callWeakSet):
(JSC::constructWeakSet):
* runtime/WeakSetPrototype.cpp:
(JSC::getWeakMapData):
(JSC::protoFuncWeakSetAdd):

Source/WebCore:

No new tests because this is only an internal API change. If it builds, it should be good.

* bindings/js/JSApplePaySessionCustom.cpp:
(WebCore::JSApplePaySession::completeShippingMethodSelection):
(WebCore::JSApplePaySession::completeShippingContactSelection):
(WebCore::JSApplePaySession::completePaymentMethodSelection):
* bindings/js/JSBlobCustom.cpp:
(WebCore::constructJSBlob):
* bindings/js/JSCSSStyleDeclarationCustom.cpp:
(WebCore::JSCSSStyleDeclaration::getPropertyCSSValue):
* bindings/js/JSCryptoAlgorithmDictionary.cpp:
(WebCore::JSCryptoAlgorithmDictionary::getAlgorithmIdentifier):
(WebCore::createAesCbcParams):
(WebCore::createAesKeyGenParams):
(WebCore::createHmacParams):
(WebCore::createHmacKeyParams):
(WebCore::createRsaKeyGenParams):
(WebCore::createRsaOaepParams):
(WebCore::createRsaSsaParams):
* bindings/js/JSCryptoCustom.cpp:
(WebCore::JSCrypto::getRandomValues):
* bindings/js/JSCryptoKeySerializationJWK.cpp:
(WebCore::getJSArrayFromJSON):
(WebCore::getStringFromJSON):
(WebCore::getBooleanFromJSON):
(WebCore::getBigIntegerVectorFromJSON):
(WebCore::JSCryptoKeySerializationJWK::JSCryptoKeySerializationJWK):
(WebCore::JSCryptoKeySerializationJWK::reconcileAlgorithm):
(WebCore::tryJWKKeyOpsValue):
(WebCore::JSCryptoKeySerializationJWK::reconcileUsages):
(WebCore::JSCryptoKeySerializationJWK::keyDataOctetSequence):
(WebCore::JSCryptoKeySerializationJWK::keyDataRSAComponents):
(WebCore::JSCryptoKeySerializationJWK::keyData):
(WebCore::addJWKAlgorithmToJSON):
(WebCore::JSCryptoKeySerializationJWK::serialize):
* bindings/js/JSCryptoOperationData.cpp:
(WebCore::cryptoOperationDataFromJSValue):
* bindings/js/JSCustomElementInterface.cpp:
(WebCore::JSCustomElementInterface::upgradeElement):
* bindings/js/JSCustomElementRegistryCustom.cpp:
(WebCore::getCustomElementCallback):
(WebCore::JSCustomElementRegistry::define):
* bindings/js/JSDOMBinding.cpp:
(WebCore::setDOMException):
(WebCore::enforceRange):
(WebCore::toSmallerInt):
(WebCore::toSmallerUInt):
(WebCore::canAccessDocument):
(WebCore::throwTypeError):
(WebCore::throwNotSupportedError):
(WebCore::throwInvalidStateError):
(WebCore::throwSecurityError):
(WebCore::throwArgumentMustBeEnumError):
(WebCore::throwArgumentMustBeFunctionError):
(WebCore::throwArgumentTypeError):
(WebCore::throwArrayElementTypeError):
(WebCore::throwAttributeTypeError):
(WebCore::throwConstructorScriptExecutionContextUnavailableError):
(WebCore::throwSequenceTypeError):
(WebCore::throwNonFiniteTypeError):
(WebCore::throwGetterTypeError):
(WebCore::throwSetterTypeError):
(WebCore::throwThisTypeError):
(WebCore::callThrowTypeError):
* bindings/js/JSDOMBinding.h:
(WebCore::toJSSequence):
(WebCore::toRefPtrNativeArray):
(WebCore::toNativeArray):
* bindings/js/JSDOMConstructor.h:
(WebCore::JSDOMConstructorNotConstructable::callThrowTypeError):
(WebCore::JSBuiltinConstructor<JSClass>::callConstructor):
* bindings/js/JSDOMConvert.h:
(WebCore::convertWrapperType):
* bindings/js/JSDOMIterator.h:
(WebCore::iteratorCreate):
(WebCore::iteratorForEach):
(WebCore::JSDOMIteratorPrototype<JSWrapper>::next):
* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::jsDOMWindowGetOwnPropertySlotRestrictedAccess):
(WebCore::JSDOMWindow::put):
(WebCore::JSDOMWindow::showModalDialog):
(WebCore::handlePostMessage):
(WebCore::JSDOMWindow::setTimeout):
(WebCore::JSDOMWindow::setInterval):
* bindings/js/JSDataCueCustom.cpp:
(WebCore::constructJSDataCue):
* bindings/js/JSDictionary.cpp:
(WebCore::JSDictionary::convertValue):
* bindings/js/JSDocumentCustom.cpp:
(WebCore::JSDocument::createTouchList):
(WebCore::JSDocument::getCSSCanvasContext):
* bindings/js/JSFileCustom.cpp:
(WebCore::constructJSFile):
* bindings/js/JSHTMLAllCollectionCustom.cpp:
(WebCore::JSHTMLAllCollection::item):
* bindings/js/JSHTMLCanvasElementCustom.cpp:
(WebCore::JSHTMLCanvasElement::getContext):
(WebCore::JSHTMLCanvasElement::probablySupportsContext):
* bindings/js/JSHTMLDocumentCustom.cpp:
(WebCore::JSHTMLDocument::open):
* bindings/js/JSHTMLElementCustom.cpp:
(WebCore::constructJSHTMLElement):
* bindings/js/JSHTMLFormControlsCollectionCustom.cpp:
(WebCore::JSHTMLFormControlsCollection::namedItem):
* bindings/js/JSHTMLInputElementCustom.cpp:
(WebCore::JSHTMLInputElement::selectionStart):
(WebCore::JSHTMLInputElement::setSelectionStart):
(WebCore::JSHTMLInputElement::selectionEnd):
(WebCore::JSHTMLInputElement::setSelectionEnd):
(WebCore::JSHTMLInputElement::selectionDirection):
(WebCore::JSHTMLInputElement::setSelectionDirection):
(WebCore::JSHTMLInputElement::setSelectionRange):
* bindings/js/JSHistoryCustom.cpp:
(WebCore::JSHistory::pushState):
(WebCore::JSHistory::replaceState):
* bindings/js/JSIDBDatabaseCustom.cpp:
(WebCore::JSIDBDatabase::createObjectStore):
* bindings/js/JSImageConstructor.cpp:
(WebCore::JSImageConstructor::construct):
* bindings/js/JSLocationCustom.cpp:
(WebCore::JSLocation::getOwnPropertySlotDelegate):
* bindings/js/JSMediaDevicesCustom.cpp:
(WebCore::JSMediaDevices::getUserMedia):
* bindings/js/JSMediaStreamTrackCustom.cpp:
(WebCore::JSMediaStreamTrack::getSettings):
(WebCore::JSMediaStreamTrack::getCapabilities):
* bindings/js/JSMessagePortCustom.cpp:
(WebCore::fillMessagePortArray):
* bindings/js/JSMessagePortCustom.h:
(WebCore::handlePostMessage):
* bindings/js/JSMockContentFilterSettingsCustom.cpp:
(WebCore::JSMockContentFilterSettings::setDecisionPoint):
(WebCore::toDecision):
* bindings/js/JSModuleLoader.cpp:
(WebCore::JSModuleLoader::evaluate):
* bindings/js/JSMutationObserverCustom.cpp:
(WebCore::constructJSMutationObserver):
* bindings/js/JSNodeCustom.cpp:
(WebCore::JSNode::insertBefore):
(WebCore::JSNode::replaceChild):
(WebCore::JSNode::removeChild):
(WebCore::JSNode::appendChild):
* bindings/js/JSNodeFilterCustom.cpp:
(WebCore::JSNodeFilter::acceptNode):
* bindings/js/JSPluginElementFunctions.cpp:
(WebCore::pluginElementPropertyGetter):
* bindings/js/JSReadableStreamPrivateConstructors.cpp:
(WebCore::constructJSReadableStreamDefaultController):
(WebCore::constructJSReadableStreamDefaultReader):
* bindings/js/JSSVGLengthCustom.cpp:
(WebCore::JSSVGLength::setValue):
(WebCore::JSSVGLength::convertToSpecifiedUnits):
* bindings/js/JSWebGL2RenderingContextCustom.cpp:
(WebCore::JSWebGL2RenderingContext::getIndexedParameter):
* bindings/js/JSWebGLRenderingContextBaseCustom.cpp:
(WebCore::getObjectParameter):
(WebCore::JSWebGLRenderingContextBase::getAttachedShaders):
(WebCore::JSWebGLRenderingContextBase::getExtension):
(WebCore::JSWebGLRenderingContextBase::getFramebufferAttachmentParameter):
(WebCore::JSWebGLRenderingContextBase::getParameter):
(WebCore::JSWebGLRenderingContextBase::getProgramParameter):
(WebCore::JSWebGLRenderingContextBase::getShaderParameter):
(WebCore::JSWebGLRenderingContextBase::getUniform):
(WebCore::dataFunctionf):
(WebCore::dataFunctioni):
(WebCore::dataFunctionMatrix):
* bindings/js/JSWebKitSubtleCryptoCustom.cpp:
(WebCore::cryptoKeyFormatFromJSValue):
(WebCore::cryptoKeyUsagesFromJSValue):
(WebCore::JSWebKitSubtleCrypto::encrypt):
(WebCore::JSWebKitSubtleCrypto::decrypt):
(WebCore::JSWebKitSubtleCrypto::sign):
(WebCore::JSWebKitSubtleCrypto::verify):
(WebCore::JSWebKitSubtleCrypto::digest):
(WebCore::JSWebKitSubtleCrypto::generateKey):
(WebCore::importKey):
(WebCore::JSWebKitSubtleCrypto::importKey):
(WebCore::exportKey):
(WebCore::JSWebKitSubtleCrypto::exportKey):
(WebCore::JSWebKitSubtleCrypto::wrapKey):
(WebCore::JSWebKitSubtleCrypto::unwrapKey):
* bindings/js/JSWorkerCustom.cpp:
(WebCore::constructJSWorker):
* bindings/js/JSWorkerGlobalScopeCustom.cpp:
(WebCore::JSWorkerGlobalScope::setTimeout):
(WebCore::JSWorkerGlobalScope::setInterval):
* bindings/js/ReadableStreamDefaultController.cpp:
(WebCore::ReadableStreamDefaultController::invoke):
* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneBase::throwStackOverflow):
(WebCore::CloneDeserializer::throwValidationError):
(WebCore::SerializedScriptValue::maybeThrowExceptionIfSerializationFailed):
* bindings/js/WorkerScriptController.cpp:
(WebCore::WorkerScriptController::evaluate):
(WebCore::WorkerScriptController::setException):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateEnumerationImplementationContent):
(GenerateDictionaryImplementationContent):
(GenerateOverloadedFunctionOrConstructor):
(GenerateImplementation):
(GenerateFunctionCastedThis):
(GenerateArgumentsCountCheck):
(GenerateParametersCheck):
(GenerateConstructorDefinition):
* bindings/scripts/test/JS/JSInterfaceName.cpp:
(WebCore::jsInterfaceNameConstructor):
(WebCore::setJSInterfaceNameConstructor):
* bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
(WebCore::jsTestActiveDOMObjectExcitingAttr):
(WebCore::jsTestActiveDOMObjectConstructor):
(WebCore::setJSTestActiveDOMObjectConstructor):
(WebCore::jsTestActiveDOMObjectPrototypeFunctionExcitingFunction):
(WebCore::jsTestActiveDOMObjectPrototypeFunctionPostMessage):
* bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
(WebCore::jsTestClassWithJSBuiltinConstructorConstructor):
(WebCore::setJSTestClassWithJSBuiltinConstructorConstructor):
* bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:
(WebCore::jsTestCustomConstructorWithNoInterfaceObjectConstructor):
(WebCore::setJSTestCustomConstructorWithNoInterfaceObjectConstructor):
* bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:
(WebCore::jsTestCustomNamedGetterConstructor):
(WebCore::setJSTestCustomNamedGetterConstructor):
(WebCore::jsTestCustomNamedGetterPrototypeFunctionAnotherFunction):
* bindings/scripts/test/JS/JSTestEventConstructor.cpp:
(WebCore::JSTestEventConstructorConstructor::construct):
(WebCore::jsTestEventConstructorAttr1):
(WebCore::jsTestEventConstructorAttr2):
(WebCore::jsTestEventConstructorAttr3):
(WebCore::jsTestEventConstructorConstructor):
(WebCore::setJSTestEventConstructorConstructor):
* bindings/scripts/test/JS/JSTestEventTarget.cpp:
(WebCore::jsTestEventTargetConstructor):
(WebCore::setJSTestEventTargetConstructor):
(WebCore::jsTestEventTargetPrototypeFunctionItem):
* bindings/scripts/test/JS/JSTestException.cpp:
(WebCore::jsTestExceptionName):
(WebCore::jsTestExceptionConstructor):
(WebCore::setJSTestExceptionConstructor):
* bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
(WebCore::jsTestGenerateIsReachableConstructor):
(WebCore::setJSTestGenerateIsReachableConstructor):
* bindings/scripts/test/JS/JSTestGlobalObject.cpp:
(WebCore::jsTestGlobalObjectRegularAttribute):
(WebCore::jsTestGlobalObjectPublicAndPrivateAttribute):
(WebCore::jsTestGlobalObjectPublicAndPrivateConditionalAttribute):
(WebCore::jsTestGlobalObjectEnabledAtRuntimeAttribute):
(WebCore::jsTestGlobalObjectConstructor):
(WebCore::setJSTestGlobalObjectConstructor):
(WebCore::setJSTestGlobalObjectRegularAttribute):
(WebCore::setJSTestGlobalObjectPublicAndPrivateAttribute):
(WebCore::setJSTestGlobalObjectPublicAndPrivateConditionalAttribute):
(WebCore::setJSTestGlobalObjectEnabledAtRuntimeAttribute):
(WebCore::jsTestGlobalObjectInstanceFunctionRegularOperation):
(WebCore::jsTestGlobalObjectInstanceFunctionEnabledAtRuntimeOperation1):
(WebCore::jsTestGlobalObjectInstanceFunctionEnabledAtRuntimeOperation2):
(WebCore::jsTestGlobalObjectInstanceFunctionEnabledAtRuntimeOperation):
(WebCore::jsTestGlobalObjectInstanceFunctionTestPrivateFunction):
* bindings/scripts/test/JS/JSTestInterface.cpp:
(WebCore::JSTestInterfaceConstructor::construct):
(WebCore::jsTestInterfaceConstructorImplementsStaticReadOnlyAttr):
(WebCore::jsTestInterfaceConstructorImplementsStaticAttr):
(WebCore::jsTestInterfaceImplementsStr1):
(WebCore::jsTestInterfaceImplementsStr2):
(WebCore::jsTestInterfaceImplementsStr3):
(WebCore::jsTestInterfaceImplementsNode):
(WebCore::jsTestInterfaceConstructorSupplementalStaticReadOnlyAttr):
(WebCore::jsTestInterfaceConstructorSupplementalStaticAttr):
(WebCore::jsTestInterfaceSupplementalStr1):
(WebCore::jsTestInterfaceSupplementalStr2):
(WebCore::jsTestInterfaceSupplementalStr3):
(WebCore::jsTestInterfaceSupplementalNode):
(WebCore::jsTestInterfaceConstructor):
(WebCore::setJSTestInterfaceConstructor):
(WebCore::setJSTestInterfaceConstructorImplementsStaticAttr):
(WebCore::setJSTestInterfaceImplementsStr2):
(WebCore::setJSTestInterfaceImplementsStr3):
(WebCore::setJSTestInterfaceImplementsNode):
(WebCore::setJSTestInterfaceConstructorSupplementalStaticAttr):
(WebCore::setJSTestInterfaceSupplementalStr2):
(WebCore::setJSTestInterfaceSupplementalStr3):
(WebCore::setJSTestInterfaceSupplementalNode):
(WebCore::jsTestInterfacePrototypeFunctionImplementsMethod1):
(WebCore::jsTestInterfacePrototypeFunctionImplementsMethod2):
(WebCore::jsTestInterfacePrototypeFunctionImplementsMethod3):
(WebCore::jsTestInterfaceConstructorFunctionImplementsMethod4):
(WebCore::jsTestInterfacePrototypeFunctionSupplementalMethod1):
(WebCore::jsTestInterfacePrototypeFunctionSupplementalMethod2):
(WebCore::jsTestInterfacePrototypeFunctionSupplementalMethod3):
(WebCore::jsTestInterfaceConstructorFunctionSupplementalMethod4):
* bindings/scripts/test/JS/JSTestIterable.cpp:
(WebCore::jsTestIterableConstructor):
(WebCore::setJSTestIterableConstructor):
* bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
(WebCore::jsTestJSBuiltinConstructorTestAttributeCustom):
(WebCore::jsTestJSBuiltinConstructorTestAttributeRWCustom):
(WebCore::jsTestJSBuiltinConstructorConstructor):
(WebCore::setJSTestJSBuiltinConstructorConstructor):
(WebCore::setJSTestJSBuiltinConstructorTestAttributeRWCustom):
(WebCore::jsTestJSBuiltinConstructorPrototypeFunctionTestCustomFunction):
* bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
(WebCore::jsTestMediaQueryListListenerConstructor):
(WebCore::setJSTestMediaQueryListListenerConstructor):
(WebCore::jsTestMediaQueryListListenerPrototypeFunctionMethod):
* bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
(WebCore::JSTestNamedConstructorNamedConstructor::construct):
(WebCore::jsTestNamedConstructorConstructor):
(WebCore::setJSTestNamedConstructorConstructor):
* bindings/scripts/test/JS/JSTestNode.cpp:
(WebCore::JSTestNodeConstructor::construct):
(WebCore::jsTestNodeName):
(WebCore::jsTestNodeConstructor):
(WebCore::setJSTestNodeConstructor):
(WebCore::setJSTestNodeName):
* bindings/scripts/test/JS/JSTestNondeterministic.cpp:
(WebCore::jsTestNondeterministicNondeterministicReadonlyAttr):
(WebCore::jsTestNondeterministicNondeterministicWriteableAttr):
(WebCore::jsTestNondeterministicNondeterministicExceptionAttr):
(WebCore::jsTestNondeterministicNondeterministicGetterExceptionAttr):
(WebCore::jsTestNondeterministicNondeterministicSetterExceptionAttr):
(WebCore::jsTestNondeterministicConstructor):
(WebCore::setJSTestNondeterministicConstructor):
(WebCore::setJSTestNondeterministicNondeterministicWriteableAttr):
(WebCore::setJSTestNondeterministicNondeterministicExceptionAttr):
(WebCore::setJSTestNondeterministicNondeterministicGetterExceptionAttr):
(WebCore::setJSTestNondeterministicNondeterministicSetterExceptionAttr):
(WebCore::jsTestNondeterministicPrototypeFunctionNondeterministicZeroArgFunction):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::convert<TestObj::EnumType>):
(WebCore::convert<TestObj::Optional>):
(WebCore::convert<AlternateEnumName>):
(WebCore::convert<TestObj::EnumA>):
(WebCore::convert<TestObj::EnumB>):
(WebCore::convert<TestObj::EnumC>):
(WebCore::convert<TestObj::Kind>):
(WebCore::convert<TestObj::Size>):
(WebCore::convert<TestObj::Confidence>):
(WebCore::convertDictionary<TestObj::Dictionary>):
(WebCore::convertDictionary<TestObj::DictionaryThatShouldNotTolerateNull>):
(WebCore::convertDictionary<TestObj::DictionaryThatShouldTolerateNull>):
(WebCore::convertDictionary<AlternateDictionaryName>):
(WebCore::JSTestObjConstructor::construct):
(WebCore::jsTestObjReadOnlyLongAttr):
(WebCore::jsTestObjReadOnlyStringAttr):
(WebCore::jsTestObjReadOnlyTestObjAttr):
(WebCore::jsTestObjConstructorStaticReadOnlyLongAttr):
(WebCore::jsTestObjConstructorStaticStringAttr):
(WebCore::jsTestObjConstructorTestSubObj):
(WebCore::jsTestObjTestSubObjEnabledBySettingConstructor):
(WebCore::jsTestObjEnumAttr):
(WebCore::jsTestObjByteAttr):
(WebCore::jsTestObjOctetAttr):
(WebCore::jsTestObjShortAttr):
(WebCore::jsTestObjClampedShortAttr):
(WebCore::jsTestObjEnforceRangeShortAttr):
(WebCore::jsTestObjUnsignedShortAttr):
(WebCore::jsTestObjLongAttr):
(WebCore::jsTestObjLongLongAttr):
(WebCore::jsTestObjUnsignedLongLongAttr):
(WebCore::jsTestObjStringAttr):
(WebCore::jsTestObjUsvstringAttr):
(WebCore::jsTestObjTestObjAttr):
(WebCore::jsTestObjTestNullableObjAttr):
(WebCore::jsTestObjLenientTestObjAttr):
(WebCore::jsTestObjUnforgeableAttr):
(WebCore::jsTestObjStringAttrTreatingNullAsEmptyString):
(WebCore::jsTestObjUsvstringAttrTreatingNullAsEmptyString):
(WebCore::jsTestObjImplementationEnumAttr):
(WebCore::jsTestObjXMLObjAttr):
(WebCore::jsTestObjCreate):
(WebCore::jsTestObjReflectedStringAttr):
(WebCore::jsTestObjReflectedUSVStringAttr):
(WebCore::jsTestObjReflectedIntegralAttr):
(WebCore::jsTestObjReflectedUnsignedIntegralAttr):
(WebCore::jsTestObjReflectedBooleanAttr):
(WebCore::jsTestObjReflectedURLAttr):
(WebCore::jsTestObjReflectedUSVURLAttr):
(WebCore::jsTestObjReflectedCustomIntegralAttr):
(WebCore::jsTestObjReflectedCustomBooleanAttr):
(WebCore::jsTestObjReflectedCustomURLAttr):
(WebCore::jsTestObjEnabledAtRuntimeAttribute):
(WebCore::jsTestObjTypedArrayAttr):
(WebCore::jsTestObjAttrWithGetterException):
(WebCore::jsTestObjAttrWithGetterExceptionWithMessage):
(WebCore::jsTestObjAttrWithSetterException):
(WebCore::jsTestObjAttrWithSetterExceptionWithMessage):
(WebCore::jsTestObjStringAttrWithGetterException):
(WebCore::jsTestObjStringAttrWithSetterException):
(WebCore::jsTestObjCustomAttr):
(WebCore::jsTestObjOnfoo):
(WebCore::jsTestObjOnwebkitfoo):
(WebCore::jsTestObjWithScriptStateAttribute):
(WebCore::jsTestObjWithCallWithAndSetterCallWithAttribute):
(WebCore::jsTestObjWithScriptExecutionContextAttribute):
(WebCore::jsTestObjWithScriptStateAttributeRaises):
(WebCore::jsTestObjWithScriptExecutionContextAttributeRaises):
(WebCore::jsTestObjWithScriptExecutionContextAndScriptStateAttribute):
(WebCore::jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaises):
(WebCore::jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute):
(WebCore::jsTestObjWithScriptArgumentsAndCallStackAttribute):
(WebCore::jsTestObjConditionalAttr1):
(WebCore::jsTestObjConditionalAttr2):
(WebCore::jsTestObjConditionalAttr3):
(WebCore::jsTestObjConditionalAttr4Constructor):
(WebCore::jsTestObjConditionalAttr5Constructor):
(WebCore::jsTestObjConditionalAttr6Constructor):
(WebCore::jsTestObjCachedAttribute1):
(WebCore::jsTestObjCachedAttribute2):
(WebCore::jsTestObjAnyAttribute):
(WebCore::jsTestObjContentDocument):
(WebCore::jsTestObjMutablePoint):
(WebCore::jsTestObjImmutablePoint):
(WebCore::jsTestObjStrawberry):
(WebCore::jsTestObjDescription):
(WebCore::jsTestObjId):
(WebCore::jsTestObjHash):
(WebCore::jsTestObjReplaceableAttribute):
(WebCore::jsTestObjNullableDoubleAttribute):
(WebCore::jsTestObjNullableLongAttribute):
(WebCore::jsTestObjNullableBooleanAttribute):
(WebCore::jsTestObjNullableStringAttribute):
(WebCore::jsTestObjNullableLongSettableAttribute):
(WebCore::jsTestObjNullableStringSettableAttribute):
(WebCore::jsTestObjNullableUSVStringSettableAttribute):
(WebCore::jsTestObjNullableStringValue):
(WebCore::jsTestObjAttribute):
(WebCore::jsTestObjAttributeWithReservedEnumType):
(WebCore::jsTestObjPutForwardsAttribute):
(WebCore::jsTestObjPutForwardsNullableAttribute):
(WebCore::jsTestObjStringifierAttribute):
(WebCore::jsTestObjConstructor):
(WebCore::setJSTestObjConstructor):
(WebCore::setJSTestObjConstructorStaticStringAttr):
(WebCore::setJSTestObjTestSubObjEnabledBySettingConstructor):
(WebCore::setJSTestObjEnumAttr):
(WebCore::setJSTestObjByteAttr):
(WebCore::setJSTestObjOctetAttr):
(WebCore::setJSTestObjShortAttr):
(WebCore::setJSTestObjClampedShortAttr):
(WebCore::setJSTestObjEnforceRangeShortAttr):
(WebCore::setJSTestObjUnsignedShortAttr):
(WebCore::setJSTestObjLongAttr):
(WebCore::setJSTestObjLongLongAttr):
(WebCore::setJSTestObjUnsignedLongLongAttr):
(WebCore::setJSTestObjStringAttr):
(WebCore::setJSTestObjUsvstringAttr):
(WebCore::setJSTestObjTestObjAttr):
(WebCore::setJSTestObjTestNullableObjAttr):
(WebCore::setJSTestObjLenientTestObjAttr):
(WebCore::setJSTestObjStringAttrTreatingNullAsEmptyString):
(WebCore::setJSTestObjUsvstringAttrTreatingNullAsEmptyString):
(WebCore::setJSTestObjImplementationEnumAttr):
(WebCore::setJSTestObjXMLObjAttr):
(WebCore::setJSTestObjCreate):
(WebCore::setJSTestObjReflectedStringAttr):
(WebCore::setJSTestObjReflectedUSVStringAttr):
(WebCore::setJSTestObjReflectedIntegralAttr):
(WebCore::setJSTestObjReflectedUnsignedIntegralAttr):
(WebCore::setJSTestObjReflectedBooleanAttr):
(WebCore::setJSTestObjReflectedURLAttr):
(WebCore::setJSTestObjReflectedUSVURLAttr):
(WebCore::setJSTestObjReflectedCustomIntegralAttr):
(WebCore::setJSTestObjReflectedCustomBooleanAttr):
(WebCore::setJSTestObjReflectedCustomURLAttr):
(WebCore::setJSTestObjEnabledAtRuntimeAttribute):
(WebCore::setJSTestObjTypedArrayAttr):
(WebCore::setJSTestObjAttrWithGetterException):
(WebCore::setJSTestObjAttrWithGetterExceptionWithMessage):
(WebCore::setJSTestObjAttrWithSetterException):
(WebCore::setJSTestObjAttrWithSetterExceptionWithMessage):
(WebCore::setJSTestObjStringAttrWithGetterException):
(WebCore::setJSTestObjStringAttrWithSetterException):
(WebCore::setJSTestObjCustomAttr):
(WebCore::setJSTestObjOnfoo):
(WebCore::setJSTestObjOnwebkitfoo):
(WebCore::setJSTestObjWithScriptStateAttribute):
(WebCore::setJSTestObjWithCallWithAndSetterCallWithAttribute):
(WebCore::setJSTestObjWithScriptExecutionContextAttribute):
(WebCore::setJSTestObjWithScriptStateAttributeRaises):
(WebCore::setJSTestObjWithScriptExecutionContextAttributeRaises):
(WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateAttribute):
(WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaises):
(WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute):
(WebCore::setJSTestObjWithScriptArgumentsAndCallStackAttribute):
(WebCore::setJSTestObjConditionalAttr1):
(WebCore::setJSTestObjConditionalAttr2):
(WebCore::setJSTestObjConditionalAttr3):
(WebCore::setJSTestObjConditionalAttr4Constructor):
(WebCore::setJSTestObjConditionalAttr5Constructor):
(WebCore::setJSTestObjConditionalAttr6Constructor):
(WebCore::setJSTestObjAnyAttribute):
(WebCore::setJSTestObjMutablePoint):
(WebCore::setJSTestObjImmutablePoint):
(WebCore::setJSTestObjStrawberry):
(WebCore::setJSTestObjId):
(WebCore::setJSTestObjReplaceableAttribute):
(WebCore::setJSTestObjNullableLongSettableAttribute):
(WebCore::setJSTestObjNullableStringSettableAttribute):
(WebCore::setJSTestObjNullableUSVStringSettableAttribute):
(WebCore::setJSTestObjNullableStringValue):
(WebCore::setJSTestObjAttributeWithReservedEnumType):
(WebCore::setJSTestObjPutForwardsAttribute):
(WebCore::setJSTestObjPutForwardsNullableAttribute):
(WebCore::setJSTestObjStringifierAttribute):
(WebCore::jsTestObjPrototypeFunctionEnabledAtRuntimeOperation1):
(WebCore::jsTestObjPrototypeFunctionEnabledAtRuntimeOperation2):
(WebCore::jsTestObjPrototypeFunctionEnabledAtRuntimeOperation):
(WebCore::jsTestObjPrototypeFunctionVoidMethod):
(WebCore::jsTestObjPrototypeFunctionVoidMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionByteMethod):
(WebCore::jsTestObjPrototypeFunctionByteMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionOctetMethod):
(WebCore::jsTestObjPrototypeFunctionOctetMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionLongMethod):
(WebCore::jsTestObjPrototypeFunctionLongMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionObjMethod):
(WebCore::jsTestObjPrototypeFunctionObjMethodWithArgs):
(WebCore::jsTestObjInstanceFunctionUnforgeableMethod):
(WebCore::jsTestObjPrototypeFunctionMethodWithArgTreatingNullAsEmptyString):
(WebCore::jsTestObjPrototypeFunctionMethodWithXPathNSResolverParameter):
(WebCore::jsTestObjPrototypeFunctionNullableStringMethod):
(WebCore::jsTestObjConstructorFunctionNullableStringStaticMethod):
(WebCore::jsTestObjPrototypeFunctionNullableStringSpecialMethod):
(WebCore::jsTestObjPrototypeFunctionMethodWithEnumArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalEnumArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalEnumArgAndDefaultValue):
(WebCore::jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrows):
(WebCore::jsTestObjPrototypeFunctionMethodWithUSVStringArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithNullableUSVStringArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithUSVStringArgTreatingNullAsEmptyString):
(WebCore::jsTestObjPrototypeFunctionSerializedValue):
(WebCore::jsTestObjPrototypeFunctionOptionsObject):
(WebCore::jsTestObjPrototypeFunctionMethodWithException):
(WebCore::jsTestObjPrototypeFunctionMethodWithExceptionWithMessage):
(WebCore::jsTestObjPrototypeFunctionCustomMethod):
(WebCore::jsTestObjPrototypeFunctionCustomMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionPrivateMethod):
(WebCore::jsTestObjPrototypeFunctionPublicAndPrivateMethod):
(WebCore::jsTestObjPrototypeFunctionAddEventListener):
(WebCore::jsTestObjPrototypeFunctionRemoveEventListener):
(WebCore::jsTestObjPrototypeFunctionWithScriptStateVoid):
(WebCore::jsTestObjPrototypeFunctionWithScriptStateObj):
(WebCore::jsTestObjPrototypeFunctionWithScriptStateVoidException):
(WebCore::jsTestObjPrototypeFunctionWithScriptStateObjException):
(WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContext):
(WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptState):
(WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptStateObjException):
(WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptStateWithSpaces):
(WebCore::jsTestObjPrototypeFunctionWithScriptArgumentsAndCallStack):
(WebCore::jsTestObjPrototypeFunctionWithDocumentArgument):
(WebCore::jsTestObjPrototypeFunctionWithCallerDocumentArgument):
(WebCore::jsTestObjPrototypeFunctionWithCallerWindowArgument):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalArgAndDefaultValue):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndOptionalArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndTwoOptionalArgs):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalString):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUSVString):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomicString):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringAndDefaultValue):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomicStringAndDefaultValue):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringIsNull):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringIsUndefined):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomicStringIsNull):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringIsEmptyString):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUSVStringIsEmptyString):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomicStringIsEmptyString):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalDoubleIsNaN):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalFloatIsNaN):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalLongLong):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalLongLongIsZero):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUnsignedLongLong):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUnsignedLongLongIsZero):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalSequence):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalSequenceIsEmpty):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalBoolean):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalBooleanIsFalse):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAny):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalNullableWrapper):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalNullableWrapperIsNull):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalXPathNSResolver):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackAndOptionalArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackFunctionArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackFunctionArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackFunctionAndOptionalArg):
(WebCore::jsTestObjConstructorFunctionStaticMethodWithCallbackAndOptionalArg):
(WebCore::jsTestObjConstructorFunctionStaticMethodWithCallbackArg):
(WebCore::jsTestObjPrototypeFunctionConditionalMethod1):
(WebCore::jsTestObjPrototypeFunctionConditionalMethod2):
(WebCore::jsTestObjPrototypeFunctionConditionalMethod3):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod1):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod2):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod3):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod4):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod5):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod6):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod7):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod8):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod9):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod10):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod11):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod12):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter1):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter2):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter):
(WebCore::jsTestObjConstructorFunctionClassMethod):
(WebCore::jsTestObjConstructorFunctionClassMethodWithOptional):
(WebCore::jsTestObjConstructorFunctionClassMethod2):
(WebCore::jsTestObjConstructorFunctionOverloadedMethod11):
(WebCore::jsTestObjConstructorFunctionOverloadedMethod12):
(WebCore::jsTestObjConstructorFunctionOverloadedMethod1):
(WebCore::jsTestObjPrototypeFunctionClassMethodWithClamp):
(WebCore::jsTestObjPrototypeFunctionClassMethodWithEnforceRange):
(WebCore::jsTestObjPrototypeFunctionMethodWithUnsignedLongSequence):
(WebCore::jsTestObjPrototypeFunctionStringArrayFunction):
(WebCore::jsTestObjPrototypeFunctionDomStringListFunction):
(WebCore::jsTestObjPrototypeFunctionMethodWithAndWithoutNullableSequence):
(WebCore::jsTestObjPrototypeFunctionGetElementById):
(WebCore::jsTestObjPrototypeFunctionGetSVGDocument):
(WebCore::jsTestObjPrototypeFunctionConvert1):
(WebCore::jsTestObjPrototypeFunctionConvert2):
(WebCore::jsTestObjPrototypeFunctionConvert3):
(WebCore::jsTestObjPrototypeFunctionConvert4):
(WebCore::jsTestObjPrototypeFunctionMutablePointFunction):
(WebCore::jsTestObjPrototypeFunctionImmutablePointFunction):
(WebCore::jsTestObjPrototypeFunctionOrange):
(WebCore::jsTestObjPrototypeFunctionVariadicStringMethod):
(WebCore::jsTestObjPrototypeFunctionVariadicDoubleMethod):
(WebCore::jsTestObjPrototypeFunctionVariadicNodeMethod):
(WebCore::jsTestObjPrototypeFunctionAny):
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionPromise):
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithFloatArgumentPromise):
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithExceptionPromise):
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithOptionalIntArgumentPromise):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction1Promise):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction2Promise):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction):
(WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunctionPromise):
(WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunctionWithExceptionPromise):
(WebCore::jsTestObjPrototypeFunctionMethodWithNeedsCustomElementReactionStack):
(WebCore::jsTestObjPrototypeFunctionConditionalOverload1):
(WebCore::jsTestObjPrototypeFunctionConditionalOverload2):
(WebCore::jsTestObjPrototypeFunctionConditionalOverload):
(WebCore::jsTestObjPrototypeFunctionSingleConditionalOverload1):
(WebCore::jsTestObjPrototypeFunctionSingleConditionalOverload2):
(WebCore::jsTestObjPrototypeFunctionSingleConditionalOverload):
(WebCore::jsTestObjPrototypeFunctionAttachShadowRoot):
(WebCore::jsTestObjPrototypeFunctionToString):
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
(WebCore::constructJSTestOverloadedConstructors1):
(WebCore::constructJSTestOverloadedConstructors2):
(WebCore::constructJSTestOverloadedConstructors3):
(WebCore::constructJSTestOverloadedConstructors4):
(WebCore::constructJSTestOverloadedConstructors5):
(WebCore::JSTestOverloadedConstructorsConstructor::construct):
(WebCore::jsTestOverloadedConstructorsConstructor):
(WebCore::setJSTestOverloadedConstructorsConstructor):
* bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
(WebCore::constructJSTestOverloadedConstructorsWithSequence1):
(WebCore::constructJSTestOverloadedConstructorsWithSequence2):
(WebCore::JSTestOverloadedConstructorsWithSequenceConstructor::construct):
(WebCore::jsTestOverloadedConstructorsWithSequenceConstructor):
(WebCore::setJSTestOverloadedConstructorsWithSequenceConstructor):
* bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
(WebCore::jsTestOverrideBuiltinsConstructor):
(WebCore::setJSTestOverrideBuiltinsConstructor):
(WebCore::jsTestOverrideBuiltinsPrototypeFunctionNamedItem):
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
(WebCore::jsTestSerializedScriptValueInterfaceValue):
(WebCore::jsTestSerializedScriptValueInterfaceReadonlyValue):
(WebCore::jsTestSerializedScriptValueInterfaceCachedValue):
(WebCore::jsTestSerializedScriptValueInterfacePorts):
(WebCore::jsTestSerializedScriptValueInterfaceCachedReadonlyValue):
(WebCore::jsTestSerializedScriptValueInterfaceConstructor):
(WebCore::setJSTestSerializedScriptValueInterfaceConstructor):
(WebCore::setJSTestSerializedScriptValueInterfaceValue):
(WebCore::setJSTestSerializedScriptValueInterfaceCachedValue):
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::JSTestTypedefsConstructor::construct):
(WebCore::jsTestTypedefsUnsignedLongLongAttr):
(WebCore::jsTestTypedefsImmutableSerializedScriptValue):
(WebCore::jsTestTypedefsConstructorTestSubObj):
(WebCore::jsTestTypedefsAttrWithGetterException):
(WebCore::jsTestTypedefsAttrWithSetterException):
(WebCore::jsTestTypedefsStringAttrWithGetterException):
(WebCore::jsTestTypedefsStringAttrWithSetterException):
(WebCore::jsTestTypedefsConstructor):
(WebCore::setJSTestTypedefsConstructor):
(WebCore::setJSTestTypedefsUnsignedLongLongAttr):
(WebCore::setJSTestTypedefsImmutableSerializedScriptValue):
(WebCore::setJSTestTypedefsAttrWithGetterException):
(WebCore::setJSTestTypedefsAttrWithSetterException):
(WebCore::setJSTestTypedefsStringAttrWithGetterException):
(WebCore::setJSTestTypedefsStringAttrWithSetterException):
(WebCore::jsTestTypedefsPrototypeFunctionFunc):
(WebCore::jsTestTypedefsPrototypeFunctionSetShadow):
(WebCore::jsTestTypedefsPrototypeFunctionMethodWithSequenceArg):
(WebCore::jsTestTypedefsPrototypeFunctionNullableSequenceArg):
(WebCore::jsTestTypedefsPrototypeFunctionFuncWithClamp):
(WebCore::jsTestTypedefsPrototypeFunctionImmutablePointFunction):
(WebCore::jsTestTypedefsPrototypeFunctionStringSequenceFunction):
(WebCore::jsTestTypedefsPrototypeFunctionStringSequenceFunction2):
(WebCore::jsTestTypedefsPrototypeFunctionCallWithSequenceThatRequiresInclude):
(WebCore::jsTestTypedefsPrototypeFunctionMethodWithException):
* bindings/scripts/test/JS/JSattribute.cpp:
(WebCore::jsattributeReadonly):
(WebCore::jsattributeConstructor):
(WebCore::setJSattributeConstructor):
* bindings/scripts/test/JS/JSreadonly.cpp:
(WebCore::jsreadonlyConstructor):
(WebCore::setJSreadonlyConstructor):
* bridge/c/c_instance.cpp:
(JSC::Bindings::CInstance::moveGlobalExceptionToExecState):
(JSC::Bindings::CInstance::invokeMethod):
(JSC::Bindings::CInstance::invokeDefaultMethod):
(JSC::Bindings::CInstance::invokeConstruct):
(JSC::Bindings::CInstance::toJSPrimitive):
* bridge/objc/objc_instance.mm:
(ObjcInstance::moveGlobalExceptionToExecState):
(ObjcInstance::invokeMethod):
* bridge/objc/objc_runtime.mm:
(JSC::Bindings::ObjcField::valueFromInstance):
(JSC::Bindings::ObjcField::setValueToInstance):
(JSC::Bindings::ObjcArray::setValueAt):
(JSC::Bindings::ObjcArray::valueAt):
(JSC::Bindings::callObjCFallbackObject):
* bridge/objc/objc_utility.h:
* bridge/objc/objc_utility.mm:
(JSC::Bindings::throwError):
* bridge/runtime_array.cpp:
(JSC::RuntimeArray::lengthGetter):
(JSC::RuntimeArray::put):
(JSC::RuntimeArray::putByIndex):
* bridge/runtime_method.cpp:
(JSC::RuntimeMethod::lengthGetter):
(JSC::callRuntimeMethod):
* bridge/runtime_object.cpp:
(JSC::Bindings::RuntimeObject::fallbackObjectGetter):
(JSC::Bindings::RuntimeObject::fieldGetter):
(JSC::Bindings::RuntimeObject::methodGetter):
(JSC::Bindings::RuntimeObject::getOwnPropertySlot):
(JSC::Bindings::RuntimeObject::put):
(JSC::Bindings::RuntimeObject::defaultValue):
(JSC::Bindings::RuntimeObject::getOwnPropertyNames):
(JSC::Bindings::RuntimeObject::throwInvalidAccessError):
* bridge/runtime_object.h:

Source/WebKit/mac:

* Plugins/Hosted/NetscapePluginInstanceProxy.mm:
(WebKit::NetscapePluginInstanceProxy::moveGlobalExceptionToExecState):
* Plugins/Hosted/ProxyInstance.mm:
(WebKit::ProxyInstance::invokeMethod):

Source/WebKit2:

* WebProcess/Plugins/Netscape/JSNPMethod.cpp:
(WebKit::callMethod):
* WebProcess/Plugins/Netscape/JSNPObject.cpp:
(WebKit::JSNPObject::callMethod):
(WebKit::JSNPObject::callObject):
(WebKit::JSNPObject::callConstructor):
(WebKit::JSNPObject::getOwnPropertySlot):
(WebKit::JSNPObject::put):
(WebKit::JSNPObject::deleteProperty):
(WebKit::JSNPObject::getOwnPropertyNames):
(WebKit::JSNPObject::propertyGetter):
(WebKit::JSNPObject::methodGetter):
(WebKit::JSNPObject::throwInvalidAccessError):
* WebProcess/Plugins/Netscape/JSNPObject.h:
* WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:
(WebKit::NPRuntimeObjectMap::moveGlobalExceptionToExecState):

Source/WTF:

* wtf/Platform.h:
- Introduced the ENABLE(THROW_SCOPE_VERIFICATION) flag.


  Commit: 67c2bcef3b3ee34572fbc84986b69214c78efe25
      https://github.com/WebKit/WebKit/commit/67c2bcef3b3ee34572fbc84986b69214c78efe25
  Author: Chris Dumez <cdumez at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    M LayoutTests/http/tests/security/cross-frame-access-delete-expected.txt
    M LayoutTests/http/tests/security/cross-frame-access-delete.html
    M LayoutTests/http/tests/security/resources/cross-frame-iframe-for-delete-test.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/bindings/js/JSDOMWindowCustom.cpp
    M Source/WebCore/bindings/js/JSLocationCustom.cpp

  Log Message:
  -----------
  Merge r205200 - [[Delete]] should throw for cross-origin Window / Location objects
https://bugs.webkit.org/show_bug.cgi?id=161397

Reviewed by Ryosuke Niwa.

Source/WebCore:

[[Delete]] should throw for cross-origin Window / Location objects:
- https://github.com/whatwg/html/pull/1728

Firefox and Chrome already throw. Previously, WebKit was merely
ignoring the call and logging an error message.

No new tests, updated existing test.

* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::JSDOMWindow::deleteProperty):
(WebCore::JSDOMWindow::deletePropertyByIndex):
* bindings/js/JSLocationCustom.cpp:
(WebCore::JSLocation::deleteProperty):
(WebCore::JSLocation::deletePropertyByIndex):

LayoutTests:

Update / rebaseline existing test to reflect behavior change.

* http/tests/security/cross-frame-access-delete-expected.txt:
* http/tests/security/cross-frame-access-delete.html:
* http/tests/security/resources/cross-frame-iframe-for-delete-test.html:


  Commit: 69a81e1adafce68b430ddb6ca2d003c060b1a78e
      https://github.com/WebKit/WebKit/commit/69a81e1adafce68b430ddb6ca2d003c060b1a78e
  Author: Benjamin Poulain <bpoulain at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/ftl/FTLCapabilities.cpp
    M Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp

  Log Message:
  -----------
  Merge r205204 - [JSC] Clean up the remaining compare nodes in FTLCapabilities
https://bugs.webkit.org/show_bug.cgi?id=161400

Patch by Benjamin Poulain <bpoulain at apple.com> on 2016-08-30
Reviewed by Geoffrey Garen.

It looks like we implemented all the cases without realizing it.

* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compare):


  Commit: 9a8664fb85e03013508c10c7006a0d9a31fc3c4e
      https://github.com/WebKit/WebKit/commit/9a8664fb85e03013508c10c7006a0d9a31fc3c4e
  Author: Chris Dumez <cdumez at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    M LayoutTests/http/tests/security/cross-frame-access-object-setPrototypeOf-expected.txt
    M LayoutTests/http/tests/security/cross-frame-access-object-setPrototypeOf.html
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/runtime/ObjectConstructor.cpp

  Log Message:
  -----------
  Merge r205205 - Object.setPrototypeOf() should throw when used on a cross-origin Window / Location object
https://bugs.webkit.org/show_bug.cgi?id=161396

Reviewed by Ryosuke Niwa.

Source/JavaScriptCore:

Object.setPrototypeOf() should throw when used on a cross-origin Window / Location object:
- https://html.spec.whatwg.org/#windowproxy-setprototypeof
- https://html.spec.whatwg.org/#location-setprototypeof
- https://tc39.github.io/ecma262/#sec-object.setprototypeof (step 5)

Firefox and Chrome already throw. However, WebKit merely ignores the call and logs an error message.

Note that technically, we should also throw in the same origin case.
However, not all browsers agree on this yet so I haven't not changed
the behavior for the same origin case.

* runtime/ObjectConstructor.cpp:
(JSC::objectConstructorSetPrototypeOf):

LayoutTests:

Update / rebaseline existing test to reflect behavior change.

* http/tests/security/cross-frame-access-object-setPrototypeOf-expected.txt:
* http/tests/security/cross-frame-access-object-setPrototypeOf.html:


  Commit: bc26efc0b21ae7b24d2d608abec3488560df95f3
      https://github.com/WebKit/WebKit/commit/bc26efc0b21ae7b24d2d608abec3488560df95f3
  Author: Geoffrey Garen <ggaren at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/bmalloc/ChangeLog
    M Source/bmalloc/bmalloc.xcodeproj/project.pbxproj
    A Source/bmalloc/bmalloc/ScopeExit.h
    M Source/bmalloc/bmalloc/StaticMutex.cpp
    M Source/bmalloc/bmalloc/StaticMutex.h

  Log Message:
  -----------
  Merge r205210 - bmalloc: speed up the lock slow path
https://bugs.webkit.org/show_bug.cgi?id=161058

Unreviewed roll-in - with regression fixed.

Revert to using yield() instead of swtch() because very low priority
background tasks can cause priority inversion and deadlock. In the
network process, that happened with com.apple.WebKit.Cache.Storage.serialBackground.

Still a big speedup on MallocBench.

* bmalloc.xcodeproj/project.pbxproj:
* bmalloc/ScopeExit.h: Added.
(bmalloc::ScopeExit::ScopeExit):
(bmalloc::ScopeExit::~ScopeExit):
(bmalloc::makeScopeExit):
* bmalloc/StaticMutex.cpp:
(bmalloc::StaticMutex::lockSlowCase):
* bmalloc/StaticMutex.h:
(bmalloc::StaticMutex::init):


  Commit: 6a0189f95438e0a93cf14ed57b43449a5a607b91
      https://github.com/WebKit/WebKit/commit/6a0189f95438e0a93cf14ed57b43449a5a607b91
  Author: Benjamin Poulain <bpoulain at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/dfg/DFGFixupPhase.cpp

  Log Message:
  -----------
  Merge r205216 - [JSC] Some arith nodes are too pessimistic with the types supported on the fast path
https://bugs.webkit.org/show_bug.cgi?id=161410

Patch by Benjamin Poulain <bpoulain at apple.com> on 2016-08-30
Reviewed by Geoffrey Garen.

* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
DoubleRep is able to convert numbers, undefined, booleans and null.
I was too pessimistic when I gated the double implementations
on number-or-boolean speculation. We can just let DoubleRep convert
the other cases as long as it is not a Cell.


  Commit: 2ca72e64cec2522194e00885f5f1ebef45642906
      https://github.com/WebKit/WebKit/commit/2ca72e64cec2522194e00885f5f1ebef45642906
  Author: Yusuke Suzuki <ysuzuki at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/dom/PendingScript.cpp
    M Source/WebCore/dom/PendingScript.h
    A Source/WebCore/dom/PendingScriptClient.h
    M Source/WebCore/dom/ScriptRunner.cpp
    M Source/WebCore/dom/ScriptRunner.h
    M Source/WebCore/html/parser/HTMLDocumentParser.cpp
    M Source/WebCore/html/parser/HTMLDocumentParser.h
    M Source/WebCore/html/parser/HTMLScriptRunner.cpp
    M Source/WebCore/html/parser/HTMLScriptRunner.h
    M Source/WebCore/html/parser/HTMLScriptRunnerHost.h

  Log Message:
  -----------
  Merge r205218 - Make PendingScript as ref-counted
https://bugs.webkit.org/show_bug.cgi?id=161350

Reviewed by Ryosuke Niwa.

Currently, while PendingScript is copyable, PendingScript is also CachedResourceClient.
So when copying this, the client registration is done in PendingScript's operator= etc.
However, this copying functionality is not effectively used.
In this patch, we change this PendingScript to ref-counted class and make it noncopyable.
This change makes things simple (dropping this copying functionality), and drops unnecessary
addClient / removeClient calls. And we also simplify PendingScript class. Since we can offer
all the members at the construction time, we do not need any setters like setCachedScript,
setElement etc. This prevents us from accidentally generating the half-baked pending script.

Furthermore, by changing PendingScript noncopyable & ref-counted, we easily make it
observable. In this patch, we add PendingScriptClient to receive the notification from
PendingScript. Previously, we directly used CachedScript in PendingScript to receive the
notification. When introducing ScriptModuleGraph and making this PendingScript the container
of the both CachedScript and ScriptModuleGraph, hiding the raw CachedScript operations is
useful.

No behavior changes.

* WebCore.xcodeproj/project.pbxproj:
* dom/PendingScript.cpp:
(WebCore::PendingScript::create): These factory functions take all the information needed
to construct the PendingScript. So the setters of PendingScript are dropped. This is better
since we now do not expose any half-baked pending script accidentally.
(WebCore::PendingScript::PendingScript):
(WebCore::PendingScript::~PendingScript):
(WebCore::PendingScript::notifyClientFinished):
(WebCore::PendingScript::notifyFinished):
(WebCore::PendingScript::isLoaded): When introducing ScriptModuleGraph, this will query to
either CachedScript or ScriptModuleGraph. PendingScript will become the container for the
both types.
(WebCore::PendingScript::setClient):
(WebCore::PendingScript::clearClient): PendingScript is now observable by PendingScriptClient.
This avoids touching CachedScript in PendingScript directly. That is good when we introduce
ScriptModuleGraph and make PendingScript the container of the both CachedScript and ScriptModuleGraph.
(WebCore::PendingScript::releaseElementAndClear): Deleted. Previously, PendingScript is not ref-counted.
So when we would like to say "this pending script is empty", we used the pending script with
`m_element = nullptr`. This releaseElementAndClear cleared this m_element and made the pending
script empty. Now, we use RefPtr<PendingScript> and empty one is just represented by the nullptr.
This function is no longer necessary. Dropped.
(WebCore::PendingScript::setCachedScript): Deleted. The fields are set in the constructor.
So this setter is no longer necessary. Dropped.
* dom/PendingScript.h:
* dom/PendingScriptClient.h: Copied from Source/WebCore/html/parser/HTMLScriptRunnerHost.h.
(WebCore::PendingScriptClient::~PendingScriptClient):
* dom/ScriptRunner.cpp:
(WebCore::ScriptRunner::queueScriptForExecution):
(WebCore::ScriptRunner::notifyScriptReady):
(WebCore::ScriptRunner::timerFired): We use `std::exchange` to retrieve the RefPtr<PendingScript>
and make the original vector element nullptr. Without this, all the PendingScript is held until
the iteration finishes. We keep the original semantics here that the pending script can be
released per iteration.
* dom/ScriptRunner.h:
* html/parser/HTMLDocumentParser.cpp:
(WebCore::HTMLDocumentParser::watchForLoad):
(WebCore::HTMLDocumentParser::stopWatchingForLoad): Use PendingScript instead of touching
CachedScript directly.
(WebCore::HTMLDocumentParser::notifyFinished):
* html/parser/HTMLDocumentParser.h:
* html/parser/HTMLScriptRunner.cpp:
(WebCore::HTMLScriptRunner::~HTMLScriptRunner):
(WebCore::HTMLScriptRunner::sourceFromPendingScript):
(WebCore::HTMLScriptRunner::isPendingScriptReady):
(WebCore::HTMLScriptRunner::executeParsingBlockingScript):
(WebCore::HTMLScriptRunner::executePendingScriptAndDispatchEvent): As the previous comment describes,
we used releaseElementAndClear to make the current pending script empty. Instead of doing so, we now
explicitly clear executeParsingBlockingScript (by assigning nullptr to m_parserBlockingScript).
(WebCore::HTMLScriptRunner::watchForLoad):
(WebCore::HTMLScriptRunner::stopWatchingForLoad): Previously, we used CachedScript::addClient directly
in the m_host.watchForLoad. This means that we did not have a quick way to query whether the pending
script is watched. In the old implementation, we have the `m_watchingForLoad : bool` flag in PendingScript
to hold the watching status for the given pending script. This `pendingScript.setWatchingForLoad(true)`
just made this flag `true`. But now, we do not use CachedScript::addClient directly. Instead, we have
the PendingScriptClient and PendingScript::{setClient,clearClient}. We can know whether this pending
script is watched by checking `m_client != nullptr`. This makes `m_watchingForLoad` unnecessary.
So this patch drops `m_watchingForLoad` and `pendingScript.setWatchingForLoad(true)` call.
(WebCore::HTMLScriptRunner::hasParserBlockingScript):
(WebCore::HTMLScriptRunner::executeParsingBlockingScripts): We clear the m_parserBlockingScript here
instead of the middle of the executePendingScriptAndDispatchEvent.
(WebCore::HTMLScriptRunner::executeScriptsWaitingForLoad):
(WebCore::HTMLScriptRunner::executeScriptsWaitingForParsing):
(WebCore::requestPendingScript):
(WebCore::HTMLScriptRunner::requestParsingBlockingScript): Setting m_parsingBlockingScript is now done
in this caller side.
(WebCore::HTMLScriptRunner::requestDeferredScript):
(WebCore::HTMLScriptRunner::runScript):
(WebCore::HTMLScriptRunner::requestPendingScript): Instead of configuring the passed PendingScript&,
we return the pending script and the caller sets it to m_parserBlockingScript or holds it. And we now
change this function to static location one and drop the member function. Previously, we always make
PendingScript& valid by always calling `setElement(...)`. I think this is the bug since we accidentally
exposed the half-baked pending script. But this bug is not shown since `!cachedScript` path is dead code!
This requestPendingScript is called from two places, requestDeferredScript and requestParsingBlockingScript.
And these functions are called if the script has `willBeParserExecuted` flag. In the case of the script
tag having "src" attribute, this flag is only set if `cachedScript` is correctly instantiated. So when
these functions are called, we can ensure that `cachedScript` is correctly instantiated for the given script.
In the case of the script tag not having "src" attribute, these functions are won't be called. This is
because if such a script tag has `willBeParserExecuted` flag, it also has `m_readyToBeParserExecuted`
and it does not have `m_willExecuteWhenDocumentFinishedParsing` flag, and in that case the both
functions are never called. So we drop that path and insert the assertion to ensure the above conditions.
* html/parser/HTMLScriptRunner.h:
* html/parser/HTMLScriptRunnerHost.h:


  Commit: a0e9b5ed301cd2de806fc2f010da6e4195796191
      https://github.com/WebKit/WebKit/commit/a0e9b5ed301cd2de806fc2f010da6e4195796191
  Author: Antti Koivisto <koivisto at iki.fi>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/editing/text-iterator/hidden-textarea-selection-quirk-expected.txt
    A LayoutTests/editing/text-iterator/hidden-textarea-selection-quirk.html
    A LayoutTests/platform/ios-simulator/editing/text-iterator/hidden-textarea-selection-quirk-expected.txt
    M Source/WebCore/ChangeLog
    M Source/WebCore/editing/TextIterator.cpp

  Log Message:
  -----------
  Merge r205246 - REGRESSION (r201701): Unable to copy from CodeMirror editor version used in Jenkins install website
https://bugs.webkit.org/show_bug.cgi?id=161386
<rdar://problem/27590077>

Reviewed by Dan Bernstein.

Source/WebCore:

This CodeMirror version uses a hidden <textarea> to implement copy/paste. The textarea has width:1px; border-width:1px.
Jenkins page has also has a stylesheet that contains * { box-sizing:border-box } and as a result the textarea content
width gets computed as 0. With r201701 we use content size instead of box size for clipping and the textarea content is
(correctly) considered invisible.

Add a quirk that allows this to continue working.

Test: editing/text-iterator/hidden-textarea-selection-quirk.html

* editing/TextIterator.cpp:
(WebCore::fullyClipsContents):

LayoutTests:

* editing/text-iterator/hidden-textarea-selection-quirk-expected.txt: Added.
* editing/text-iterator/hidden-textarea-selection-quirk.html: Added.
* platform/ios-simulator/editing/text-iterator/hidden-textarea-selection-quirk-expected.txt: Added.

    textarea.select() doesn't select the text content on iOS.


  Commit: 44679858dfe75962b42627d41b05ec2ca4d32e5e
      https://github.com/WebKit/WebKit/commit/44679858dfe75962b42627d41b05ec2ca4d32e5e
  Author: Andreas Kling <akling at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/dom/Element.cpp
    M Source/WebCore/dom/Element.h
    M Source/WebCore/dom/EventDispatcher.cpp
    M Source/WebCore/dom/Node.cpp
    M Source/WebCore/dom/Node.h
    M Source/WebCore/editing/Editor.cpp
    M Source/WebCore/editing/Editor.h
    M Source/WebCore/html/BaseCheckableInputType.cpp
    M Source/WebCore/html/BaseCheckableInputType.h
    M Source/WebCore/html/BaseChooserOnlyDateAndTimeInputType.cpp
    M Source/WebCore/html/BaseChooserOnlyDateAndTimeInputType.h
    M Source/WebCore/html/BaseClickableWithKeyInputType.cpp
    M Source/WebCore/html/BaseClickableWithKeyInputType.h
    M Source/WebCore/html/BaseDateAndTimeInputType.cpp
    M Source/WebCore/html/BaseDateAndTimeInputType.h
    M Source/WebCore/html/CheckboxInputType.cpp
    M Source/WebCore/html/CheckboxInputType.h
    M Source/WebCore/html/ColorInputType.cpp
    M Source/WebCore/html/ColorInputType.h
    M Source/WebCore/html/FileInputType.cpp
    M Source/WebCore/html/FileInputType.h
    M Source/WebCore/html/HTMLAnchorElement.cpp
    M Source/WebCore/html/HTMLAnchorElement.h
    M Source/WebCore/html/HTMLAreaElement.cpp
    M Source/WebCore/html/HTMLAreaElement.h
    M Source/WebCore/html/HTMLButtonElement.cpp
    M Source/WebCore/html/HTMLButtonElement.h
    M Source/WebCore/html/HTMLFormControlElement.cpp
    M Source/WebCore/html/HTMLFormControlElement.h
    M Source/WebCore/html/HTMLFormElement.cpp
    M Source/WebCore/html/HTMLFormElement.h
    M Source/WebCore/html/HTMLFrameOwnerElement.cpp
    M Source/WebCore/html/HTMLFrameOwnerElement.h
    M Source/WebCore/html/HTMLFrameSetElement.cpp
    M Source/WebCore/html/HTMLFrameSetElement.h
    M Source/WebCore/html/HTMLIFrameElement.h
    M Source/WebCore/html/HTMLInputElement.cpp
    M Source/WebCore/html/HTMLInputElement.h
    M Source/WebCore/html/HTMLLabelElement.cpp
    M Source/WebCore/html/HTMLLabelElement.h
    M Source/WebCore/html/HTMLLinkElement.cpp
    M Source/WebCore/html/HTMLLinkElement.h
    M Source/WebCore/html/HTMLPlugInElement.cpp
    M Source/WebCore/html/HTMLPlugInElement.h
    M Source/WebCore/html/HTMLPlugInImageElement.cpp
    M Source/WebCore/html/HTMLPlugInImageElement.h
    M Source/WebCore/html/HTMLSelectElement.cpp
    M Source/WebCore/html/HTMLSelectElement.h
    M Source/WebCore/html/HTMLSummaryElement.cpp
    M Source/WebCore/html/HTMLSummaryElement.h
    M Source/WebCore/html/HTMLTextAreaElement.cpp
    M Source/WebCore/html/HTMLTextAreaElement.h
    M Source/WebCore/html/HTMLTextFormControlElement.cpp
    M Source/WebCore/html/HTMLTextFormControlElement.h
    M Source/WebCore/html/ImageInputType.cpp
    M Source/WebCore/html/ImageInputType.h
    M Source/WebCore/html/InputType.cpp
    M Source/WebCore/html/InputType.h
    M Source/WebCore/html/MediaDocument.cpp
    M Source/WebCore/html/MediaDocument.h
    M Source/WebCore/html/NumberInputType.cpp
    M Source/WebCore/html/NumberInputType.h
    M Source/WebCore/html/RadioInputType.cpp
    M Source/WebCore/html/RadioInputType.h
    M Source/WebCore/html/RangeInputType.cpp
    M Source/WebCore/html/RangeInputType.h
    M Source/WebCore/html/ResetInputType.cpp
    M Source/WebCore/html/ResetInputType.h
    M Source/WebCore/html/SearchInputType.cpp
    M Source/WebCore/html/SearchInputType.h
    M Source/WebCore/html/SubmitInputType.cpp
    M Source/WebCore/html/SubmitInputType.h
    M Source/WebCore/html/TextFieldInputType.cpp
    M Source/WebCore/html/TextFieldInputType.h
    M Source/WebCore/html/shadow/AutoFillButtonElement.cpp
    M Source/WebCore/html/shadow/AutoFillButtonElement.h
    M Source/WebCore/html/shadow/MediaControlElementTypes.cpp
    M Source/WebCore/html/shadow/MediaControlElementTypes.h
    M Source/WebCore/html/shadow/MediaControlElements.cpp
    M Source/WebCore/html/shadow/MediaControlElements.h
    M Source/WebCore/html/shadow/MediaControls.cpp
    M Source/WebCore/html/shadow/MediaControls.h
    M Source/WebCore/html/shadow/MediaControlsApple.cpp
    M Source/WebCore/html/shadow/MediaControlsApple.h
    M Source/WebCore/html/shadow/SliderThumbElement.cpp
    M Source/WebCore/html/shadow/SliderThumbElement.h
    M Source/WebCore/html/shadow/SpinButtonElement.cpp
    M Source/WebCore/html/shadow/SpinButtonElement.h
    M Source/WebCore/html/shadow/TextControlInnerElements.cpp
    M Source/WebCore/html/shadow/TextControlInnerElements.h
    M Source/WebCore/html/shadow/mac/ImageControlsButtonElementMac.cpp
    M Source/WebCore/html/shadow/mac/ImageControlsButtonElementMac.h
    M Source/WebCore/loader/FrameLoader.cpp
    M Source/WebCore/mathml/MathMLElement.cpp
    M Source/WebCore/mathml/MathMLElement.h
    M Source/WebCore/mathml/MathMLSelectElement.cpp
    M Source/WebCore/mathml/MathMLSelectElement.h
    M Source/WebCore/page/EventHandler.cpp
    M Source/WebCore/page/EventHandler.h
    M Source/WebCore/page/FocusController.cpp
    M Source/WebCore/rendering/RenderFrameSet.cpp
    M Source/WebCore/rendering/RenderFrameSet.h
    M Source/WebCore/svg/SVGAElement.cpp
    M Source/WebCore/svg/SVGAElement.h
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm

  Log Message:
  -----------
  Merge r205249 - DOM event handling should pass Event around by reference.
<https://webkit.org/b/161398>

Reviewed by Chris Dumez.

Source/WebCore:

Start with making Node::defaultEventHandler() take an Event& instead of an Event*,
and then spread out from there, propagating the referenceness.

* dom/Element.cpp:
(WebCore::Element::isKeyboardFocusable):
* dom/Element.h:
* dom/EventDispatcher.cpp:
(WebCore::callDefaultEventHandlersInTheBubblingOrder):
* dom/Node.cpp:
(WebCore::Node::dispatchDOMActivateEvent):
(WebCore::Node::defaultEventHandler):
* dom/Node.h:
* editing/Editor.cpp:
(WebCore::Editor::handleKeyboardEvent):
(WebCore::Editor::handleInputMethodKeydown):
(WebCore::Editor::handleTextEvent):
* editing/Editor.h:
* html/BaseCheckableInputType.cpp:
(WebCore::BaseCheckableInputType::handleKeydownEvent):
(WebCore::BaseCheckableInputType::handleKeypressEvent):
* html/BaseCheckableInputType.h:
* html/BaseChooserOnlyDateAndTimeInputType.cpp:
(WebCore::BaseChooserOnlyDateAndTimeInputType::handleDOMActivateEvent):
(WebCore::BaseChooserOnlyDateAndTimeInputType::handleKeydownEvent):
(WebCore::BaseChooserOnlyDateAndTimeInputType::handleKeypressEvent):
(WebCore::BaseChooserOnlyDateAndTimeInputType::handleKeyupEvent):
* html/BaseChooserOnlyDateAndTimeInputType.h:
* html/BaseClickableWithKeyInputType.cpp:
(WebCore::BaseClickableWithKeyInputType::handleKeydownEvent):
(WebCore::BaseClickableWithKeyInputType::handleKeypressEvent):
(WebCore::BaseClickableWithKeyInputType::handleKeyupEvent):
* html/BaseClickableWithKeyInputType.h:
* html/BaseDateAndTimeInputType.cpp:
(WebCore::BaseDateAndTimeInputType::isKeyboardFocusable):
* html/BaseDateAndTimeInputType.h:
* html/CheckboxInputType.cpp:
(WebCore::CheckboxInputType::handleKeyupEvent):
* html/CheckboxInputType.h:
* html/ColorInputType.cpp:
(WebCore::ColorInputType::handleDOMActivateEvent):
* html/ColorInputType.h:
* html/FileInputType.cpp:
(WebCore::FileInputType::handleDOMActivateEvent):
* html/FileInputType.h:
* html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::isKeyboardFocusable):
(WebCore::HTMLAnchorElement::defaultEventHandler):
(WebCore::HTMLAnchorElement::handleClick):
(WebCore::HTMLAnchorElement::eventType):
(WebCore::isEnterKeyKeydownEvent):
* html/HTMLAnchorElement.h:
* html/HTMLAreaElement.cpp:
(WebCore::HTMLAreaElement::isKeyboardFocusable):
* html/HTMLAreaElement.h:
* html/HTMLButtonElement.cpp:
(WebCore::HTMLButtonElement::defaultEventHandler):
* html/HTMLButtonElement.h:
* html/HTMLFormControlElement.cpp:
(WebCore::HTMLFormControlElement::isKeyboardFocusable):
* html/HTMLFormControlElement.h:
* html/HTMLFormElement.cpp:
(WebCore::HTMLFormElement::submitImplicitly):
(WebCore::submitElementFromEvent):
(WebCore::HTMLFormElement::validateInteractively):
(WebCore::HTMLFormElement::prepareForSubmission):
* html/HTMLFormElement.h:
* html/HTMLFrameOwnerElement.cpp:
(WebCore::HTMLFrameOwnerElement::isKeyboardFocusable):
* html/HTMLFrameOwnerElement.h:
* html/HTMLFrameSetElement.cpp:
(WebCore::HTMLFrameSetElement::defaultEventHandler):
* html/HTMLFrameSetElement.h:
* html/HTMLIFrameElement.h:
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::isKeyboardFocusable):
(WebCore::HTMLInputElement::isTextFormControlKeyboardFocusable):
(WebCore::HTMLInputElement::willDispatchEvent):
(WebCore::HTMLInputElement::defaultEventHandler):
* html/HTMLInputElement.h:
* html/HTMLLabelElement.cpp:
(WebCore::HTMLLabelElement::defaultEventHandler):
* html/HTMLLabelElement.h:
* html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::defaultEventHandler):
* html/HTMLLinkElement.h:
* html/HTMLPlugInElement.cpp:
(WebCore::HTMLPlugInElement::defaultEventHandler):
(WebCore::HTMLPlugInElement::isKeyboardFocusable):
* html/HTMLPlugInElement.h:
* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::defaultEventHandler):
* html/HTMLPlugInImageElement.h:
* html/HTMLSelectElement.cpp:
(WebCore::HTMLSelectElement::isKeyboardFocusable):
(WebCore::HTMLSelectElement::menuListDefaultEventHandler):
(WebCore::HTMLSelectElement::listBoxDefaultEventHandler):
(WebCore::HTMLSelectElement::defaultEventHandler):
* html/HTMLSelectElement.h:
* html/HTMLSummaryElement.cpp:
(WebCore::HTMLSummaryElement::defaultEventHandler):
* html/HTMLSummaryElement.h:
* html/HTMLTextAreaElement.cpp:
(WebCore::HTMLTextAreaElement::isKeyboardFocusable):
(WebCore::HTMLTextAreaElement::defaultEventHandler):
(WebCore::HTMLTextAreaElement::handleBeforeTextInsertedEvent):
* html/HTMLTextAreaElement.h:
* html/HTMLTextFormControlElement.cpp:
(WebCore::HTMLTextFormControlElement::forwardEvent):
* html/HTMLTextFormControlElement.h:
* html/ImageInputType.cpp:
(WebCore::ImageInputType::handleDOMActivateEvent):
* html/ImageInputType.h:
* html/InputType.cpp:
(WebCore::InputType::handleClickEvent):
(WebCore::InputType::handleMouseDownEvent):
(WebCore::InputType::handleDOMActivateEvent):
(WebCore::InputType::handleKeydownEvent):
(WebCore::InputType::handleKeypressEvent):
(WebCore::InputType::handleKeyupEvent):
(WebCore::InputType::handleBeforeTextInsertedEvent):
(WebCore::InputType::handleTouchEvent):
(WebCore::InputType::forwardEvent):
(WebCore::InputType::shouldSubmitImplicitly):
(WebCore::InputType::dispatchSimulatedClickIfActive):
(WebCore::InputType::isKeyboardFocusable):
* html/InputType.h:
* html/MediaDocument.cpp:
(WebCore::MediaDocument::defaultEventHandler):
* html/MediaDocument.h:
* html/NumberInputType.cpp:
(WebCore::NumberInputType::handleKeydownEvent):
* html/NumberInputType.h:
* html/RadioInputType.cpp:
(WebCore::RadioInputType::handleClickEvent):
(WebCore::RadioInputType::handleKeydownEvent):
(WebCore::RadioInputType::handleKeyupEvent):
(WebCore::RadioInputType::isKeyboardFocusable):
* html/RadioInputType.h:
* html/RangeInputType.cpp:
(WebCore::RangeInputType::handleMouseDownEvent):
(WebCore::RangeInputType::handleTouchEvent):
(WebCore::RangeInputType::handleKeydownEvent):
* html/RangeInputType.h:
* html/ResetInputType.cpp:
(WebCore::ResetInputType::handleDOMActivateEvent):
* html/ResetInputType.h:
* html/SearchInputType.cpp:
(WebCore::SearchInputType::handleKeydownEvent):
* html/SearchInputType.h:
* html/SubmitInputType.cpp:
(WebCore::SubmitInputType::handleDOMActivateEvent):
* html/SubmitInputType.h:
* html/TextFieldInputType.cpp:
(WebCore::TextFieldInputType::isKeyboardFocusable):
(WebCore::TextFieldInputType::handleKeydownEvent):
(WebCore::TextFieldInputType::handleKeydownEventForSpinButton):
(WebCore::TextFieldInputType::forwardEvent):
(WebCore::TextFieldInputType::shouldSubmitImplicitly):
(WebCore::TextFieldInputType::handleBeforeTextInsertedEvent):
* html/TextFieldInputType.h:
* html/shadow/AutoFillButtonElement.cpp:
(WebCore::AutoFillButtonElement::defaultEventHandler):
* html/shadow/AutoFillButtonElement.h:
* html/shadow/MediaControlElementTypes.cpp:
(WebCore::MediaControlMuteButtonElement::defaultEventHandler):
(WebCore::MediaControlSeekButtonElement::defaultEventHandler):
(WebCore::MediaControlVolumeSliderElement::defaultEventHandler):
* html/shadow/MediaControlElementTypes.h:
* html/shadow/MediaControlElements.cpp:
(WebCore::MediaControlPanelElement::defaultEventHandler):
(WebCore::MediaControlVolumeSliderContainerElement::defaultEventHandler):
(WebCore::MediaControlPanelMuteButtonElement::defaultEventHandler):
(WebCore::MediaControlPlayButtonElement::defaultEventHandler):
(WebCore::MediaControlOverlayPlayButtonElement::defaultEventHandler):
(WebCore::MediaControlRewindButtonElement::defaultEventHandler):
(WebCore::MediaControlReturnToRealtimeButtonElement::defaultEventHandler):
(WebCore::MediaControlToggleClosedCaptionsButtonElement::defaultEventHandler):
(WebCore::MediaControlClosedCaptionsTrackListElement::defaultEventHandler):
(WebCore::MediaControlTimelineElement::defaultEventHandler):
(WebCore::MediaControlFullscreenButtonElement::defaultEventHandler):
(WebCore::MediaControlFullscreenVolumeMinButtonElement::defaultEventHandler):
(WebCore::MediaControlFullscreenVolumeMaxButtonElement::defaultEventHandler):
* html/shadow/MediaControlElements.h:
* html/shadow/MediaControls.cpp:
(WebCore::MediaControls::defaultEventHandler):
(WebCore::MediaControls::containsRelatedTarget):
* html/shadow/MediaControls.h:
* html/shadow/MediaControlsApple.cpp:
(WebCore::MediaControlsApple::defaultEventHandler):
(WebCore::MediaControlsApple::handleClickEvent):
(WebCore::MediaControlsAppleEventListener::handleEvent):
* html/shadow/MediaControlsApple.h:
* html/shadow/SliderThumbElement.cpp:
(WebCore::SliderThumbElement::defaultEventHandler):
(WebCore::SliderThumbElement::handleTouchStart):
(WebCore::SliderThumbElement::handleTouchMove):
(WebCore::SliderThumbElement::handleTouchEndAndCancel):
(WebCore::SliderThumbElement::handleTouchEvent):
* html/shadow/SliderThumbElement.h:
* html/shadow/SpinButtonElement.cpp:
(WebCore::SpinButtonElement::defaultEventHandler):
(WebCore::SpinButtonElement::forwardEvent):
* html/shadow/SpinButtonElement.h:
* html/shadow/TextControlInnerElements.cpp:
(WebCore::TextControlInnerTextElement::defaultEventHandler):
(WebCore::SearchFieldResultsButtonElement::defaultEventHandler):
(WebCore::SearchFieldCancelButtonElement::defaultEventHandler):
* html/shadow/TextControlInnerElements.h:
* html/shadow/mac/ImageControlsButtonElementMac.cpp:
(WebCore::ImageControlsButtonElementMac::defaultEventHandler):
* html/shadow/mac/ImageControlsButtonElementMac.h:
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::dispatchBeforeUnloadEvent):
* mathml/MathMLElement.cpp:
(WebCore::MathMLElement::defaultEventHandler):
(WebCore::MathMLElement::isKeyboardFocusable):
* mathml/MathMLElement.h:
* mathml/MathMLSelectElement.cpp:
(WebCore::MathMLSelectElement::defaultEventHandler):
* mathml/MathMLSelectElement.h:
* page/EventHandler.cpp:
(WebCore::didScrollInScrollableArea):
(WebCore::handleWheelEventInAppropriateEnclosingBox):
(WebCore::EventHandler::defaultWheelEventHandler):
(WebCore::EventHandler::keyEvent):
(WebCore::handleKeyboardSelectionMovement):
(WebCore::EventHandler::handleKeyboardSelectionMovementForAccessibility):
(WebCore::EventHandler::defaultKeyboardEventHandler):
(WebCore::EventHandler::defaultTextInputEventHandler):
(WebCore::EventHandler::defaultSpaceEventHandler):
(WebCore::EventHandler::defaultBackspaceEventHandler):
(WebCore::EventHandler::defaultArrowEventHandler):
(WebCore::EventHandler::defaultTabEventHandler):
* page/EventHandler.h:
* page/FocusController.cpp:
(WebCore::isFocusableElementOrScopeOwner):
(WebCore::isNonFocusableScopeOwner):
(WebCore::isFocusableScopeOwner):
(WebCore::FocusController::advanceFocusInDocumentOrder):
(WebCore::FocusController::findFocusCandidateInContainer):
* rendering/RenderFrameSet.cpp:
(WebCore::RenderFrameSet::userResize):
* rendering/RenderFrameSet.h:
* svg/SVGAElement.cpp:
(WebCore::SVGAElement::defaultEventHandler):
(WebCore::SVGAElement::isKeyboardFocusable):
* svg/SVGAElement.h:

Source/WebKit2:

* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::performNonEditingBehaviorForSelector):


  Commit: 43ce12ba452c64f0b16250312c4a70fa0f2a9cc7
      https://github.com/WebKit/WebKit/commit/43ce12ba452c64f0b16250312c4a70fa0f2a9cc7
  Author: Carlos Garcia Campos <carlosgc at webkit.org>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/dfg/DFGAbstractValue.h

  Log Message:
  -----------
  Revert "Unreviewed. Remove incorrect assert causing crashes in debug builds."

This reverts commit 6e6102ed50f641baac41e5f953a1b9118e030ebe.


  Commit: 63ddcf208c42bb1b49de82ece12a5356e1a0c163
      https://github.com/WebKit/WebKit/commit/63ddcf208c42bb1b49de82ece12a5356e1a0c163
  Author: Yusuke Suzuki <ysuzuki at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/dfg/DFGAbstractValue.cpp
    M Source/JavaScriptCore/dfg/DFGAbstractValue.h

  Log Message:
  -----------
  Merge r205254 - [JSC] AbstractValue can contain padding which is not zero-filled
https://bugs.webkit.org/show_bug.cgi?id=161427

Reviewed by Saam Barati.

We checked that AbstractValue is zero-filled when initializing it to ensure
that zero-filled memory can be used as the initialized AbstractValue.
However, since the size of SpeculatedType becomes 64bit, AbstractValue can have
padding now. And this padding is not ensured that it is initialized with zeros.
So debug assertion fails when building with GCC.

This patch changes the strategy. Instead of checking the initialized
AbstractValue is zero-filled, we ensure that zero-filled AbstractValue can be
considered to be equal to the initialized AbstractValue.

* dfg/DFGAbstractValue.cpp:
(JSC::DFG::AbstractValue::ensureCanInitializeWithZeros):
* dfg/DFGAbstractValue.h:
(JSC::DFG::AbstractValue::AbstractValue):


  Commit: 3487adfbf7a01ab4e2a9ab50525fb9b25257a05a
      https://github.com/WebKit/WebKit/commit/3487adfbf7a01ab4e2a9ab50525fb9b25257a05a
  Author: Chris Dumez <cdumez at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    M LayoutTests/http/tests/security/cross-frame-access-object-getPrototypeOf-expected.txt
    M LayoutTests/http/tests/security/cross-frame-access-object-getPrototypeOf.html
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/runtime/ObjectConstructor.cpp

  Log Message:
  -----------
  Merge r205258 - Object.getPrototypeOf() should return null cross-origin
https://bugs.webkit.org/show_bug.cgi?id=161393

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

Object.getPrototypeOf() should return null cross-origin:
- https://html.spec.whatwg.org/#windowproxy-getprototypeof
- https://html.spec.whatwg.org/#location-getprototypeof

Firefox and Chrome return null. However, WebKit was returning undefined.

* runtime/ObjectConstructor.cpp:
(JSC::ObjectConstructorGetPrototypeOfFunctor::operator()):

LayoutTests:

Add layout test coverage.

* http/tests/security/cross-frame-access-object-getPrototypeOf-expected.txt:
* http/tests/security/cross-frame-access-object-getPrototypeOf.html:


  Commit: d5c00813838a30324080ec4a6f6902d5e97fab87
      https://github.com/WebKit/WebKit/commit/d5c00813838a30324080ec4a6f6902d5e97fab87
  Author: Yusuke Suzuki <ysuzuki at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M JSTests/ChangeLog
    M JSTests/stress/random-53bit.js
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/jsc.cpp
    M Source/JavaScriptCore/runtime/JSGlobalObject.h

  Log Message:
  -----------
  Merge r205267 - stress/random-53bit.js.ftl-no-cjit-no-inline-validate sometimes fails
https://bugs.webkit.org/show_bug.cgi?id=161436

Reviewed by Filip Pizlo.

JSTests:

The test checks Math.random() correctly produces 53bit random values.
The test can fail by design, but this should be fairly rare.

However, when introducing, we wrap the `test()` with 1e4 to ensure the FTL compilation, and this
increases the failure rate. By increasing the MAX in the test, we make the failures much more rare case.

And we also add getRandomSeed() and setRandomSeed(seed) JSC shell helpers to dump more useful information
and reproduce the situation easily.

* stress/random-53bit.js:
(test):

Source/JavaScriptCore:

* jsc.cpp:
(GlobalObject::finishCreation):
(functionGetRandomSeed):
(functionSetRandomSeed):
* runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::weakRandom):
(JSC::JSGlobalObject::weakRandomInteger): Deleted.


  Commit: 036894de210b118bf3bc971c75a3d67e55c614f7
      https://github.com/WebKit/WebKit/commit/036894de210b118bf3bc971c75a3d67e55c614f7
  Author: Joseph Pecoraro <joepeck at webkit.org>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/inspector/network/resources/data.json
    A LayoutTests/inspector/network/xhr-json-blob-has-content-expected.txt
    A LayoutTests/inspector/network/xhr-json-blob-has-content.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/inspector/InspectorInstrumentation.cpp
    M Source/WebCore/inspector/InspectorInstrumentation.h
    M Source/WebCore/inspector/InspectorNetworkAgent.cpp
    M Source/WebCore/inspector/InspectorNetworkAgent.h
    M Source/WebCore/xml/XMLHttpRequest.cpp

  Log Message:
  -----------
  Merge r205268 - Web Inspector: XHR with text but responseType = "blob" shows blank content
https://bugs.webkit.org/show_bug.cgi?id=161422
<rdar://problem/28066869>

Reviewed by Brian Burg.

Source/WebCore:

Test: inspector/network/xhr-json-blob-has-content.html

When an XMLHttpRequest finished loading it was always setting the Inspector's
content for that load at the end. However, if the XHR was loading binary data
then it was passing an empty string to the inspector and overwriting the
data the inspector already had for the resource. Avoid this overwriting.

* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::didFinishLoading):
When loading binary content we have no decoded text to send to the inspector.

* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::didFinishXHRLoadingImpl):
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::didFinishXHRLoading):
Switch to an Optional string, and if it is not available don't
call through to the NetworkAgent expecting decoded text.

* inspector/InspectorNetworkAgent.cpp:
(WebCore::InspectorNetworkAgent::didFinishXHRLoading):
* inspector/InspectorNetworkAgent.h:
Improve variable name.

LayoutTests:

* inspector/network/resources/data.json: Added.
* inspector/network/xhr-json-blob-has-content-expected.txt: Added.
* inspector/network/xhr-json-blob-has-content.html: Added.


  Commit: e0e3975889c52f9be96f3d3970b003468a2337a6
      https://github.com/WebKit/WebKit/commit/e0e3975889c52f9be96f3d3970b003468a2337a6
  Author: Yusuke Suzuki <ysuzuki at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/builtins/ModuleLoaderPrototype.js
    M Source/JavaScriptCore/runtime/Completion.cpp
    M Source/JavaScriptCore/runtime/Completion.h
    M Source/JavaScriptCore/runtime/JSModuleLoader.cpp
    M Source/JavaScriptCore/runtime/JSModuleLoader.h

  Log Message:
  -----------
  Merge r205276 - [JSC] linking and evaluating the modules are done in a sync manner
https://bugs.webkit.org/show_bug.cgi?id=161467

Reviewed by Saam Barati.

While the fetching and the other stages are done in an asynchronous manner,
linking and evaluating are done in a sync manner.
Just return the result value and do not wrap them with the internal promise.

* builtins/ModuleLoaderPrototype.js:
(linkAndEvaluateModule):
* runtime/Completion.cpp:
(JSC::linkAndEvaluateModule):
* runtime/Completion.h:
* runtime/JSModuleLoader.cpp:
(JSC::JSModuleLoader::linkAndEvaluateModule):
* runtime/JSModuleLoader.h:


  Commit: c147bcaa1b1e94764580ef8f72926b0c5dc1fc63
      https://github.com/WebKit/WebKit/commit/c147bcaa1b1e94764580ef8f72926b0c5dc1fc63
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/compositing/layer-creation/assert-on-inline-element-with-will-change-expected.txt
    A LayoutTests/compositing/layer-creation/assert-on-inline-element-with-will-change.html
    A LayoutTests/compositing/layer-creation/will-change-on-normal-flow-content-expected.txt
    A LayoutTests/compositing/layer-creation/will-change-on-normal-flow-content.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/RenderLayer.cpp
    M Source/WebCore/rendering/style/WillChangeData.cpp
    M Source/WebCore/rendering/style/WillChangeData.h

  Log Message:
  -----------
  Merge r205277 - ASSERTION FAILED: !flow->layer() && !flow->isInlineElementContinuation() in WebCore::RenderBlock::addContinuationWithOutline
https://bugs.webkit.org/show_bug.cgi?id=151022
<rdar://problem/27710993>

Reviewed by Simon Fraser.

Source/WebCore:

Certain CSS properties like opacity, mask etc (graphical group members) require the layer to be a non-normal flow,
self painting layer so that we can manage painting properly. However in addition to those CSS properties, some of the will-change
values (again, graphical group members) also require the layer to be non-normal flow, self painting.
This patch ensures that when deciding whether a layer should be a normal flow layer, we take the will-change values into account as well.

Tests: compositing/layer-creation/assert-on-inline-element-with-will-change.html
       compositing/layer-creation/will-change-on-normal-flow-content.html

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects):
* rendering/style/WillChangeData.cpp:
(WebCore::propertyCreatesGraphicalGroup):
(WebCore::WillChangeData::addFeature):
* rendering/style/WillChangeData.h:
(WebCore::WillChangeData::canCreateGraphicalGroup):
(WebCore::WillChangeData::canTriggerCompositingOnInline): Deleted.

LayoutTests:

* compositing/layer-creation/assert-on-inline-element-with-will-change-expected.txt: Added.
* compositing/layer-creation/assert-on-inline-element-with-will-change.html: Added.
* compositing/layer-creation/will-change-on-normal-flow-content-expected.txt: Added.
* compositing/layer-creation/will-change-on-normal-flow-content.html: Added.


  Commit: 3c919b832346eb6baab24078dc0bb164320aa48d
      https://github.com/WebKit/WebKit/commit/3c919b832346eb6baab24078dc0bb164320aa48d
  Author: Yusuke Suzuki <ysuzuki at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/builtins/ModuleLoaderPrototype.js
    M Source/JavaScriptCore/bytecode/BytecodeIntrinsicRegistry.cpp
    M Source/JavaScriptCore/bytecode/BytecodeIntrinsicRegistry.h
    M Source/JavaScriptCore/jsc.cpp
    M Source/JavaScriptCore/runtime/Completion.cpp
    M Source/JavaScriptCore/runtime/Completion.h
    M Source/JavaScriptCore/runtime/JSGlobalObject.h
    M Source/JavaScriptCore/runtime/JSModuleLoader.cpp
    M Source/JavaScriptCore/runtime/JSModuleLoader.h
    M Source/JavaScriptCore/runtime/ModuleLoaderPrototype.cpp
    M Source/WebCore/CMakeLists.txt
    M Source/WebCore/ChangeLog
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/bindings/js/JSBindingsAllInOne.cpp
    M Source/WebCore/bindings/js/JSDOMWindowBase.cpp
    M Source/WebCore/bindings/js/JSDOMWindowBase.h
    M Source/WebCore/bindings/js/JSMainThreadExecState.h
    R Source/WebCore/bindings/js/JSModuleLoader.cpp
    R Source/WebCore/bindings/js/JSModuleLoader.h
    A Source/WebCore/bindings/js/ScriptModuleLoader.cpp
    A Source/WebCore/bindings/js/ScriptModuleLoader.h
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/dom/Document.h

  Log Message:
  -----------
  Merge r205278 - [JSC] Add initiator parameter to module pipeline
https://bugs.webkit.org/show_bug.cgi?id=161470

Reviewed by Saam Barati.

Source/JavaScriptCore:

The fetching semantics of the <script type="module"> tag has per module-tag context.
For example, "nonce", "crossorigin" etc. attributes are shared in the fetching requests
issued from the module-tag. To transfer this information, we add a new parameter "initiator"
to the module loader pipeline. We are planning to transfer information by this parameter.

At the same time, we also perform some clean up.

- Use arrow function in ModuleLoaderPrototype.js.
- Rename "ResolveDependencies" to "Satisfy" to align to the loader spec.

* builtins/ModuleLoaderPrototype.js:
(newRegistryEntry):
(commitInstantiated):
(requestFetch):
(requestTranslate):
(requestInstantiate):
(requestSatisfy):
(requestInstantiateAll):
(requestLink):
(moduleEvaluation):
(provide):
(loadAndEvaluateModule):
(requestResolveDependencies.): Deleted.
(requestResolveDependencies): Deleted.
(requestReady): Deleted.
(link): Deleted.
(loadModule): Deleted.
(linkAndEvaluateModule): Deleted.
* bytecode/BytecodeIntrinsicRegistry.cpp:
(JSC::BytecodeIntrinsicRegistry::BytecodeIntrinsicRegistry):
* bytecode/BytecodeIntrinsicRegistry.h:
* jsc.cpp:
(GlobalObject::moduleLoaderResolve):
(GlobalObject::moduleLoaderFetch):
* runtime/Completion.cpp:
(JSC::loadAndEvaluateModule):
(JSC::loadModule):
(JSC::linkAndEvaluateModule):
* runtime/Completion.h:
* runtime/JSGlobalObject.h:
* runtime/JSModuleLoader.cpp:
(JSC::JSModuleLoader::loadAndEvaluateModule):
(JSC::JSModuleLoader::loadModule):
(JSC::JSModuleLoader::linkAndEvaluateModule):
(JSC::JSModuleLoader::resolve):
(JSC::JSModuleLoader::fetch):
(JSC::JSModuleLoader::translate):
(JSC::JSModuleLoader::instantiate):
(JSC::JSModuleLoader::evaluate):
* runtime/JSModuleLoader.h:
* runtime/ModuleLoaderPrototype.cpp:
(JSC::moduleLoaderPrototypeResolve):
(JSC::moduleLoaderPrototypeFetch):
(JSC::moduleLoaderPrototypeTranslate):
(JSC::moduleLoaderPrototypeInstantiate):
(JSC::moduleLoaderPrototypeEvaluate):

Source/WebCore:

No user-observable behavior change.

We rename JSModuleLoader to ScriptModuleLoader.
The name "JSModuleLoader" is misleading since it seems like this is a JS object.
"ModuleLoader" is not good since there is CSS modules.

* CMakeLists.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSBindingsAllInOne.cpp:
* bindings/js/JSDOMWindowBase.cpp:
(WebCore::JSDOMWindowBase::moduleLoaderResolve):
(WebCore::JSDOMWindowBase::moduleLoaderFetch):
(WebCore::JSDOMWindowBase::moduleLoaderEvaluate):
* bindings/js/JSDOMWindowBase.h:
* bindings/js/JSMainThreadExecState.h:
(WebCore::JSMainThreadExecState::loadModule):
(WebCore::JSMainThreadExecState::linkAndEvaluateModule):
* bindings/js/JSModuleLoader.cpp:
(WebCore::JSModuleLoader::JSModuleLoader): Deleted.
(WebCore::JSModuleLoader::resolve): Deleted.
(WebCore::JSModuleLoader::fetch): Deleted.
(WebCore::JSModuleLoader::evaluate): Deleted.
* bindings/js/JSModuleLoader.h:
(WebCore::JSModuleLoader::document): Deleted.
* bindings/js/ScriptModuleLoader.cpp: Renamed from Source/WebCore/bindings/js/JSModuleLoader.cpp.
(WebCore::ScriptModuleLoader::ScriptModuleLoader):
(WebCore::ScriptModuleLoader::resolve):
(WebCore::ScriptModuleLoader::fetch):
(WebCore::ScriptModuleLoader::evaluate):
* bindings/js/ScriptModuleLoader.h: Renamed from Source/WebCore/bindings/js/JSModuleLoader.h.
(WebCore::ScriptModuleLoader::document):
* dom/Document.cpp:
(WebCore::Document::Document):
* dom/Document.h:
(WebCore::Document::moduleLoader):


  Commit: 5d8d1f18471dddb655e1b55a4a7369a0ba47be11
      https://github.com/WebKit/WebKit/commit/5d8d1f18471dddb655e1b55a4a7369a0ba47be11
  Author: Myles C. Maxfield <mmaxfield at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/TextRun.h
    M Source/WebCore/platform/graphics/mac/ComplexTextController.cpp
    M Source/WebCore/platform/spi/cocoa/CoreTextSPI.h
    M Source/WebCore/platform/text/TextFlags.h
    M Source/WebCore/rendering/RenderBlock.cpp
    M Source/WebCore/rendering/RenderBlock.h
    M Source/WebCore/rendering/RenderListMarker.cpp
    M Source/WebCore/rendering/RenderMenuList.cpp
    M Source/WebCore/rendering/RenderText.cpp
    M Source/WebCore/rendering/RenderText.h
    M Source/WebCore/rendering/RenderThemeIOS.mm
    M Source/WebCore/rendering/line/BreakingContext.h
    M Source/WebCore/rendering/svg/SVGInlineTextBox.cpp
    M Source/WebCore/rendering/svg/SVGInlineTextBox.h
    M Source/WebKit/mac/ChangeLog
    M Source/WebKit/mac/WebCoreSupport/WebDragClient.mm
    M Source/WebKit/mac/WebView/WebView.mm

  Log Message:
  -----------
  Merge r205282 - Clean up TextRun-related code
https://bugs.webkit.org/show_bug.cgi?id=161473

Reviewed by Simon Fraser.

Source/WebCore:

Some assorted cleanup, including:
- Renaming "AllowTrailingExpansion | ForbidLeadingExpansion" to "DefaultExpansion"
- Migrating from pointers to references
- Migrating from ints to unsigneds
- Using proper character names from CharacterNames.h
- Simplifying CoreTextSPI.h

No new tests because there is no behavior change.

* platform/graphics/TextRun.h:
(WebCore::TextRun::TextRun):
* platform/graphics/mac/ComplexTextController.cpp:
(WebCore::TextLayout::isNeeded):
(WebCore::TextLayout::constructTextRun):
* platform/spi/cocoa/CoreTextSPI.h:
* platform/text/TextFlags.h:
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::constructTextRun):
* rendering/RenderBlock.h:
* rendering/RenderListMarker.cpp:
(WebCore::RenderListMarker::computePreferredLogicalWidths):
(WebCore::RenderListMarker::getRelativeMarkerRect):
* rendering/RenderMenuList.cpp:
(RenderMenuList::updateOptionsWidth):
* rendering/RenderText.cpp:
(WebCore::RenderText::widthFromCache):
(WebCore::RenderText::trimmedPrefWidths):
(WebCore::hyphenWidth):
(WebCore::maxWordFragmentWidth):
(WebCore::RenderText::computePreferredLogicalWidths):
(WebCore::RenderText::width):
* rendering/RenderText.h:
* rendering/RenderThemeIOS.mm:
* rendering/line/BreakingContext.h:
(WebCore::textWidth):
(WebCore::tryHyphenating):
* rendering/svg/SVGInlineTextBox.cpp:
(WebCore::SVGInlineTextBox::offsetForPositionInFragment):
(WebCore::SVGInlineTextBox::selectionRectForTextFragment):
(WebCore::SVGInlineTextBox::localSelectionRect):
(WebCore::SVGInlineTextBox::paintSelectionBackground):
(WebCore::SVGInlineTextBox::paint):
(WebCore::SVGInlineTextBox::acquirePaintingResource):
(WebCore::SVGInlineTextBox::prepareGraphicsContextForTextPainting):
(WebCore::SVGInlineTextBox::constructTextRun):
(WebCore::SVGInlineTextBox::paintDecorationWithStyle):
(WebCore::SVGInlineTextBox::paintTextWithShadows):
(WebCore::SVGInlineTextBox::paintText):
* rendering/svg/SVGInlineTextBox.h:

Source/WebKit/mac:

Remove unused #includes.

* WebCoreSupport/WebDragClient.mm:
* WebView/WebView.mm:


  Commit: 08409e5819418e3cc104410e36b8912198ecbcf6
      https://github.com/WebKit/WebKit/commit/08409e5819418e3cc104410e36b8912198ecbcf6
  Author: Saam Barati <sbarati at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/assembler/ARM64Assembler.h
    M Source/JavaScriptCore/assembler/ARMAssembler.h
    M Source/JavaScriptCore/assembler/ARMv7Assembler.h
    M Source/JavaScriptCore/assembler/MacroAssemblerARM.h
    M Source/JavaScriptCore/assembler/MacroAssemblerARM64.h
    M Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h
    M Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h
    M Source/JavaScriptCore/assembler/X86Assembler.h
    M Source/JavaScriptCore/jit/JITMathIC.h

  Log Message:
  -----------
  Merge r205283 - JITMathIC was misusing maxJumpReplacementSize
https://bugs.webkit.org/show_bug.cgi?id=161356
<rdar://problem/28065560>

Reviewed by Benjamin Poulain.

JITMathIC was assuming that maxJumpReplacementSize is the size
you'd get if you emitted a patchableJump() using the macro assembler.
This is not true, however. It happens to be true on arm64, x86 and x86-64,
however, it is not true on armv7. This patch introduces an alternative to
maxJumpReplacementSize called patchableJumpSize, and switches JITMathIC
to use that number instead.

* assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::patchableJumpSize):
(JSC::ARM64Assembler::maxJumpReplacementSize): Deleted.
* assembler/ARMv7Assembler.h:
(JSC::ARMv7Assembler::patchableJumpSize):
(JSC::ARMv7Assembler::maxJumpReplacementSize): Deleted.
* assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::patchableJumpSize):
* assembler/MacroAssemblerARMv7.h:
(JSC::MacroAssemblerARMv7::patchableJumpSize):
* assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::patchableJumpSize):
* assembler/X86Assembler.h:
(JSC::X86Assembler::patchableJumpSize):
(JSC::X86Assembler::maxJumpReplacementSize): Deleted.
* jit/JITMathIC.h:
(JSC::JITMathIC::generateInline):


  Commit: a2acafa2748eb89e47d334b8defa6aacb498550e
      https://github.com/WebKit/WebKit/commit/a2acafa2748eb89e47d334b8defa6aacb498550e
  Author: Csaba Osztrogonác <ossy at webkit.org>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/bindings/js/JSPerformanceTimingCustom.cpp

  Log Message:
  -----------
  Merge r205286 - URTBF after r205161 to fix !ENABLE(WEB_TIMING) build.

* bindings/js/JSPerformanceTimingCustom.cpp:


  Commit: 86c402282d4afdc6099483acf0f34008a7c8a9a8
      https://github.com/WebKit/WebKit/commit/86c402282d4afdc6099483acf0f34008a7c8a9a8
  Author: Andreas Kling <akling at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/page/EventHandler.cpp
    M Source/WebCore/page/FocusController.cpp
    M Source/WebCore/page/FocusController.h

  Log Message:
  -----------
  Merge r205290 - FocusController should pass KeyboardEvent around by reference.
<https://webkit.org/b/161461>

Reviewed by Sam Weinig.

Clean up FocusController to pass KeyboardEvent& around internally.

Also make FocusController::setInitialFocus() synthesize a dummy KeyboardEvent
if one isn't provided, just like nextFocusableElement()/previousFocusableElement() does.
This way we can feel confident about dereferencing the formerly KeyboardEvent* everywhere.

* page/EventHandler.cpp:
(WebCore::EventHandler::defaultArrowEventHandler):
(WebCore::EventHandler::defaultTabEventHandler):
* page/FocusController.cpp:
(WebCore::isFocusableElementOrScopeOwner):
(WebCore::isNonFocusableScopeOwner):
(WebCore::isFocusableScopeOwner):
(WebCore::shadowAdjustedTabIndex):
(WebCore::FocusController::findFocusableElementDescendingDownIntoFrameDocument):
(WebCore::FocusController::setInitialFocus):
(WebCore::FocusController::advanceFocus):
(WebCore::FocusController::advanceFocusInDocumentOrder):
(WebCore::FocusController::findFocusableElementAcrossFocusScope):
(WebCore::FocusController::findFocusableElementWithinScope):
(WebCore::FocusController::nextFocusableElementWithinScope):
(WebCore::FocusController::previousFocusableElementWithinScope):
(WebCore::FocusController::findFocusableElementOrScopeOwner):
(WebCore::FocusController::findElementWithExactTabIndex):
(WebCore::nextElementWithGreaterTabIndex):
(WebCore::previousElementWithLowerTabIndex):
(WebCore::FocusController::nextFocusableElement):
(WebCore::FocusController::previousFocusableElement):
(WebCore::FocusController::nextFocusableElementOrScopeOwner):
(WebCore::FocusController::previousFocusableElementOrScopeOwner):
(WebCore::FocusController::findFocusCandidateInContainer):
(WebCore::FocusController::advanceFocusDirectionallyInContainer):
(WebCore::FocusController::advanceFocusDirectionally):
* page/FocusController.h:


  Commit: 6a451b28bbbbab34eec67c57d5ee7f74f7d3a5c7
      https://github.com/WebKit/WebKit/commit/6a451b28bbbbab34eec67c57d5ee7f74f7d3a5c7
  Author: Fujii Hironori <Hironori.Fujii at sony.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/WebCore/CMakeLists.txt
    M Source/WebCore/ChangeLog

  Log Message:
  -----------
  Merge r205291 - Fix the Mac cmake clean build issue
https://bugs.webkit.org/show_bug.cgi?id=157261

Patch by Fujii Hironori <Hironori.Fujii at sony.com> on 2016-09-01
Reviewed by Michael Catanzaro.

Building WebCoreDerivedSources target failed due to the race
condition with building ForwardingHeaders of JavaScriptCore.

* CMakeLists.txt: Make WebCoreDerivedSources depends on JavaScriptCore.


  Commit: 8264fd7e883093711faca2a6c51c01405fd27eb9
      https://github.com/WebKit/WebKit/commit/8264fd7e883093711faca2a6c51c01405fd27eb9
  Author: Javier Fernandez <jfernandez at igalia.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/css/CSSComputedStyleDeclaration.cpp
    M Source/WebCore/css/CSSPropertyNames.in
    M Source/WebCore/css/parser/CSSParser.cpp

  Log Message:
  -----------
  Merge r205292 - Unreviewed build fix after r205102.

The change made in r205102 caused compilation failures on
builds with the CSS_GRID_LAYOUT compilation flag disabled.

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::propertyValue):
(WebCore::resolveJustifySelfAuto): Deleted.
* css/CSSPropertyNames.in:
* css/parser/CSSParser.cpp:
(WebCore::isKeywordPropertyID):
(WebCore::CSSParser::parseValue):


  Commit: 36be824b578ec94e5766a76f7dfd24b04430526d
      https://github.com/WebKit/WebKit/commit/36be824b578ec94e5766a76f7dfd24b04430526d
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/css/CSSComputedStyleDeclaration.cpp

  Log Message:
  -----------
  Merge r205323 - Fix ENABLE(CSS_GRID_LAYOUT) guards harder after r205102/r205292

Unreviewed. Silence unused function warning.

* css/CSSComputedStyleDeclaration.cpp:


  Commit: 6ef9ab87eaa93a35e35595ce872710c558cd0042
      https://github.com/WebKit/WebKit/commit/6ef9ab87eaa93a35e35595ce872710c558cd0042
  Author: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/PlatformGTK.cmake

  Log Message:
  -----------
  Merge r205294 - [GTK] Fix configuration without wayland support
https://bugs.webkit.org/show_bug.cgi?id=161475

WebKit2WaylandClientProtocol.c is a derived source that is created
conditionally on ENABLE_WAYLAND_TARGET.  It was being included
in the sources list unconditionally, so configure failed whenever
wayland support was unavailable.

Patch by Jeremy Huddleston Sequoia <jeremyhu at apple.com> on 2016-09-01
Reviewed by Žan Doberšek.

* PlatformGTK.cmake: Include WebKit2WaylandClientProtocol.c in source list conditional on ENABLE_WAYLAND_TARGET


  Commit: b285396f4f5a33c94af05a56f517da3295ac77e0
      https://github.com/WebKit/WebKit/commit/b285396f4f5a33c94af05a56f517da3295ac77e0
  Author: Filip Pizlo <fpizlo at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M JSTests/ChangeLog
    A JSTests/stress/materialize-activation-referenced-from-phantom-function.js
    A JSTests/stress/materialize-object-referenced-from-phantom-object.js
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp

  Log Message:
  -----------
  Merge r205304 - ObjectAllocationSinkingPhase::insertOSRHintsForUpdate() fails to emit updated hints in some cases
https://bugs.webkit.org/show_bug.cgi?id=161492

Reviewed by Mark Lam.

JSTests:

This bug affected function->activation references but not object->object field references,
because object->object field references are !neededForMaterialization(). So, the object
test always passed but the activation/function test used to always fail. It passes now.

* stress/materialize-activation-referenced-from-phantom-function.js: Added.
(bar):
(inc):
(dec):
(foo):
(test):
* stress/materialize-object-referenced-from-phantom-object.js: Added.
(bar):
(foo):
(test):

Source/JavaScriptCore:

If you materialize a sunken object that is referenced from another sunken object, then you
have to emit a PutHint to tell OSR that the latter object now refers to a materialized
object rather than to the old sunken one.

The ObjectAllocationSinkingPhase totally knows how to do this, but for some reason it only
did it when the PromotedLocationDescriptor for the field used for referring to the other
object is !neededForMaterialization(), i.e. it's a NamedPropertyPLoc or a ClosureVarPLoc.
I can sort of imagine why we thought that would be right - neededForMaterialization() means
it's a special meta-data field initialized on construction. But just because it's immutable
and special doesn't mean that materialization can't change its physical representation.
Removing the requirement that it's !neededForMaterialization() fixes the test and doesn't
regress anything.

* dfg/DFGObjectAllocationSinkingPhase.cpp:


  Commit: 8574a24a073d1e9e8571d4d584c8df01efa35a4b
      https://github.com/WebKit/WebKit/commit/8574a24a073d1e9e8571d4d584c8df01efa35a4b
  Author: Nikita Vasilyev <nvasilyev at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/WebInspectorUI/ChangeLog
    M Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.css

  Log Message:
  -----------
  Merge r205307 - REGRESSION (r201454): Web Inspector: Text caret isn't visible when editing an attribute
https://bugs.webkit.org/show_bug.cgi?id=160986
<rdar://problem/27916207>

Reviewed by Brian Burg.

* UserInterface/Views/DOMTreeOutline.css:
(.tree-outline.dom li .selection-area):
(.tree-outline.dom li > span):
Place selection area under the edited field, the way it was before r201454.


  Commit: bc6ea18fc74778aa2f29c149fddeb4794dbffc19
      https://github.com/WebKit/WebKit/commit/bc6ea18fc74778aa2f29c149fddeb4794dbffc19
  Author: Keith Miller <keith_miller at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/b3/B3Type.h
    M Source/JavaScriptCore/wasm/JSWASMModule.h
    M Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp
    M Source/JavaScriptCore/wasm/WASMB3IRGenerator.h
    M Source/JavaScriptCore/wasm/WASMFormat.h
    M Source/JavaScriptCore/wasm/WASMFunctionParser.h
    M Source/JavaScriptCore/wasm/WASMModuleParser.cpp
    M Source/JavaScriptCore/wasm/WASMModuleParser.h
    M Source/JavaScriptCore/wasm/WASMOps.h
    M Source/JavaScriptCore/wasm/WASMParser.h
    M Source/JavaScriptCore/wasm/WASMPlan.cpp
    M Source/JavaScriptCore/wasm/WASMSections.cpp
    M Source/JavaScriptCore/wasm/WASMSections.h

  Log Message:
  -----------
  Merge r205309 - Rename WASM classes dropping the WASM prefix
https://bugs.webkit.org/show_bug.cgi?id=161500

Reviewed by Mark Lam.

Having to write WASM::WASMModule seems silly. Also, this patch
merges WASMFunctionReturnType and WASMValueType into one type
that is a typedef of B3::Type. Using B3::Type as the WASM
primitive type makes it trivial to convert a Vector of WASM
types into a Vector of B3 types.

* b3/B3Type.h:
* wasm/JSWASMModule.h:
(JSC::JSWASMModule::signatures):
(JSC::JSWASMModule::functionImports):
(JSC::JSWASMModule::functionImportSignatures):
(JSC::JSWASMModule::globalVariableTypes):
(JSC::JSWASMModule::functionDeclarations):
(JSC::JSWASMModule::functionPointerTables):
* wasm/WASMB3IRGenerator.cpp:
(JSC::WASM::toB3Op):
(JSC::WASM::B3IRGenerator::addLocal):
(JSC::WASM::B3IRGenerator::unaryOp):
(JSC::WASM::B3IRGenerator::binaryOp):
(JSC::WASM::B3IRGenerator::addConstant):
(JSC::WASM::parseAndCompile):
* wasm/WASMB3IRGenerator.h:
* wasm/WASMFormat.h:
* wasm/WASMFunctionParser.h:
(JSC::WASM::FunctionParser<Context>::FunctionParser):
(JSC::WASM::FunctionParser<Context>::parse):
(JSC::WASM::FunctionParser<Context>::parseBlock):
(JSC::WASM::FunctionParser<Context>::parseExpression):
(JSC::WASM::WASMFunctionParser<Context>::WASMFunctionParser): Deleted.
(JSC::WASM::WASMFunctionParser<Context>::parse): Deleted.
(JSC::WASM::WASMFunctionParser<Context>::parseBlock): Deleted.
(JSC::WASM::WASMFunctionParser<Context>::parseExpression): Deleted.
* wasm/WASMModuleParser.cpp:
(JSC::WASM::ModuleParser::parse):
(JSC::WASM::ModuleParser::parseFunctionTypes):
(JSC::WASM::ModuleParser::parseFunctionSignatures):
(JSC::WASM::ModuleParser::parseFunctionDefinitions):
(JSC::WASM::WASMModuleParser::parse): Deleted.
(JSC::WASM::WASMModuleParser::parseFunctionTypes): Deleted.
(JSC::WASM::WASMModuleParser::parseFunctionSignatures): Deleted.
(JSC::WASM::WASMModuleParser::parseFunctionDefinitions): Deleted.
* wasm/WASMModuleParser.h:
(JSC::WASM::ModuleParser::ModuleParser):
(JSC::WASM::ModuleParser::functionInformation):
(JSC::WASM::WASMModuleParser::WASMModuleParser): Deleted.
(JSC::WASM::WASMModuleParser::functionInformation): Deleted.
* wasm/WASMOps.h:
* wasm/WASMParser.h:
(JSC::WASM::Parser::Parser):
(JSC::WASM::Parser::consumeCharacter):
(JSC::WASM::Parser::consumeString):
(JSC::WASM::Parser::parseUInt32):
(JSC::WASM::Parser::parseUInt7):
(JSC::WASM::Parser::parseVarUInt1):
(JSC::WASM::Parser::parseValueType):
(JSC::WASM::WASMParser::WASMParser): Deleted.
(JSC::WASM::WASMParser::consumeCharacter): Deleted.
(JSC::WASM::WASMParser::consumeString): Deleted.
(JSC::WASM::WASMParser::parseUInt32): Deleted.
(JSC::WASM::WASMParser::parseUInt7): Deleted.
(JSC::WASM::WASMParser::parseVarUInt1): Deleted.
(JSC::WASM::WASMParser::parseValueType): Deleted.
* wasm/WASMPlan.cpp:
(JSC::WASM::Plan::Plan):
* wasm/WASMSections.cpp:
(JSC::WASM::Sections::lookup):
(JSC::WASM::WASMSections::lookup): Deleted.
* wasm/WASMSections.h:
(JSC::WASM::Sections::validateOrder):
(JSC::WASM::WASMSections::validateOrder): Deleted.


  Commit: 976c7a636c78c28d66caeb8fbc809ed97a7e4515
      https://github.com/WebKit/WebKit/commit/976c7a636c78c28d66caeb8fbc809ed97a7e4515
  Author: mattbaker at apple.com <mattbaker at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/WebInspectorUI/ChangeLog
    M Source/WebInspectorUI/UserInterface/Views/NetworkTimelineView.js
    M Source/WebInspectorUI/UserInterface/Views/TimelineRecordingContentView.js

  Log Message:
  -----------
  Merge r205320 - Web Inspector: Value checks of secondsPerPixel cause errors
https://bugs.webkit.org/show_bug.cgi?id=161304
<rdar://problem/28050070>

Reviewed by Brian Burg.

* UserInterface/Views/NetworkTimelineView.js:
(WebInspector.NetworkTimelineView.prototype.reset):
Clear resource node map, which is used to determine which nodes
to refresh during layout.

(WebInspector.NetworkTimelineView.prototype.layout):
Like OverviewTimelineView, only refresh node graphs when times change.
This prevents refreshing nodes when (endTime - startTime) === 0.

* UserInterface/Views/TimelineRecordingContentView.js:
(WebInspector.TimelineRecordingContentView.prototype._recordingReset):
TimelineViews must be cleared before calling _updateTimes to avoid
doing layouts in timeline views containing stale data.


  Commit: a3abf298a11e636d3b8d10c78a5543cb96a80525
      https://github.com/WebKit/WebKit/commit/a3abf298a11e636d3b8d10c78a5543cb96a80525
  Author: JF Bastien <jfbastien at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M JSTests/ChangeLog
    A JSTests/microbenchmarks/super-get-by-id-with-this-monomorphic.js
    A JSTests/microbenchmarks/super-get-by-id-with-this-polymorphic.js
    A JSTests/microbenchmarks/super-get-by-val-with-this-monomorphic.js
    A JSTests/microbenchmarks/super-get-by-val-with-this-polymorphic.js
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/bytecode/BytecodeList.json
    M Source/JavaScriptCore/bytecode/CodeBlock.cpp
    M Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp
    M Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp
    M Source/JavaScriptCore/dfg/DFGNode.h
    M Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp
    M Source/JavaScriptCore/llint/LowLevelInterpreter.asm
    M Source/JavaScriptCore/runtime/CommonSlowPaths.cpp

  Log Message:
  -----------
  Merge r205321 - GetByIdWithThis/GetByValWithThis should have ValueProfiles so that they can predict their result types
https://bugs.webkit.org/show_bug.cgi?id=160922

Patch by JF Bastien <jfbastien at apple.com> on 2016-09-01
Reviewed by Keith Miller.

JSTests:

Benchmark GetBy{Id,Val}WithThis in monomorphic and polymorphic uses.
The value profile is used by the calc functions, which do some mild math with the result.
These benchmarks get ~4% faster with value profiling.

* microbenchmarks/super-get-by-id-with-this-monomorphic.js: Added.
(A):
(A.prototype.set value):
(A.prototype.get value):
(B.prototype.set value):
(B.prototype.get value):
(B):
(const.bench):
* microbenchmarks/super-get-by-id-with-this-polymorphic.js: Added.
(A):
(A.prototype.set value):
(A.prototype.get value):
(B.prototype.set value):
(B.prototype.get value):
(B):
(const.bench):
* microbenchmarks/super-get-by-val-with-this-monomorphic.js: Added.
(value):
(A):
(A.prototype.set v):
(A.prototype.get v):
(B.prototype.set v):
(B.prototype.get v):
(B):
(const.bench):
* microbenchmarks/super-get-by-val-with-this-polymorphic.js: Added.
(value):
(A):
(A.prototype.set v):
(A.prototype.get v):
(B.prototype.set v):
(B.prototype.get v):
(B):
(const.bench):

Source/JavaScriptCore:

Add value profiling to GetBy{Id,Val}WithThis.

* bytecode/BytecodeList.json:
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dumpBytecode):
(JSC::CodeBlock::finishCreation):
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitGetById):
(JSC::BytecodeGenerator::emitGetByVal):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock):
* dfg/DFGNode.h:
(JSC::DFG::Node::hasHeapPrediction):
* dfg/DFGPredictionPropagationPhase.cpp:
* llint/LowLevelInterpreter.asm:
* runtime/CommonSlowPaths.cpp:
(JSC::SLOW_PATH_DECL):


  Commit: cff667494c764db19fc759a36f65ba8534df4bad
      https://github.com/WebKit/WebKit/commit/cff667494c764db19fc759a36f65ba8534df4bad
  Author: Mark Lam <mark.lam at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/bindings/ScriptValue.cpp
    M Source/JavaScriptCore/interpreter/Interpreter.cpp
    M Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp
    M Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp
    M Source/JavaScriptCore/runtime/JSArray.cpp
    M Source/JavaScriptCore/runtime/JSArray.h
    M Source/JavaScriptCore/runtime/JSArrayInlines.h
    M Source/JavaScriptCore/runtime/JSInternalPromise.cpp
    M Source/JavaScriptCore/runtime/JSInternalPromiseDeferred.cpp
    M Source/JavaScriptCore/runtime/JSJob.cpp
    M Source/JavaScriptCore/runtime/JSModuleRecord.cpp
    M Source/JavaScriptCore/runtime/JSObject.h
    M Source/JavaScriptCore/runtime/JSObjectInlines.h
    M Source/JavaScriptCore/runtime/JSPromiseDeferred.cpp
    M Source/JavaScriptCore/runtime/JSTypedArrayViewPrototype.cpp
    M Source/JavaScriptCore/runtime/MapConstructor.cpp
    M Source/JavaScriptCore/runtime/SamplingProfiler.cpp
    M Source/JavaScriptCore/runtime/SetConstructor.cpp
    M Source/JavaScriptCore/runtime/WeakMapConstructor.cpp
    M Source/JavaScriptCore/runtime/WeakSetConstructor.cpp
    M Source/WebCore/ChangeLog
    A Source/WebCore/ForwardingHeaders/runtime/JSObjectInlines.h
    M Source/WebCore/bindings/js/JSDOMBinding.h
    M Source/WebCore/bindings/js/JSSQLTransactionCustom.cpp
    M Source/WebCore/bindings/js/JSWebGLRenderingContextBaseCustom.cpp
    M Source/WebCore/contentextensions/ContentExtensionParser.cpp

  Log Message:
  -----------
  Merge r205324 - Move some JSObject and JSArray inline functions to their respective Inlines.h files.
https://bugs.webkit.org/show_bug.cgi?id=161499

Reviewed by Saam Barati.

Source/JavaScriptCore:

This is just a refactoring patch to move some inline functions to their Inlines.h
files.  This will be needed to enable https://bugs.webkit.org/show_bug.cgi?id=161498
later.

* bindings/ScriptValue.cpp:
* interpreter/Interpreter.cpp:
* runtime/IntlDateTimeFormatPrototype.cpp:
* runtime/IntlNumberFormatPrototype.cpp:
* runtime/JSArray.cpp:
* runtime/JSArray.h:
(JSC::getLength): Deleted.
(JSC::toLength): Deleted.
* runtime/JSArrayInlines.h:
(JSC::JSArray::mergeIndexingTypeForCopying):
(JSC::JSArray::canFastCopy):
(JSC::getLength):
(JSC::toLength):
* runtime/JSInternalPromise.cpp:
* runtime/JSInternalPromiseDeferred.cpp:
* runtime/JSJob.cpp:
* runtime/JSModuleRecord.cpp:
* runtime/JSObject.h:
(JSC::JSObject::getPropertySlot): Deleted.
(JSC::JSObject::getNonIndexPropertySlot): Deleted.
* runtime/JSObjectInlines.h:
(JSC::JSObject::getPropertySlot):
(JSC::JSObject::getNonIndexPropertySlot):
* runtime/JSPromiseDeferred.cpp:
* runtime/JSTypedArrayViewPrototype.cpp:
* runtime/MapConstructor.cpp:
* runtime/SamplingProfiler.cpp:
* runtime/SetConstructor.cpp:
* runtime/WeakMapConstructor.cpp:
* runtime/WeakSetConstructor.cpp:

Source/WebCore:

No new tests because there is no behavior change.

* ForwardingHeaders/runtime/JSObjectInlines.h: Added.
* bindings/js/JSDOMBinding.h:
* bindings/js/JSSQLTransactionCustom.cpp:
* bindings/js/JSWebGLRenderingContextBaseCustom.cpp:
* contentextensions/ContentExtensionParser.cpp:


  Commit: 43b2f5e1dbd576a1bd6ab288dc354b90bce1c2bd
      https://github.com/WebKit/WebKit/commit/43b2f5e1dbd576a1bd6ab288dc354b90bce1c2bd
  Author: JF Bastien <jfbastien at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp
    M Source/JavaScriptCore/runtime/IntlNumberFormat.cpp

  Log Message:
  -----------
  Merge r205332 - jsc: fix cmake build missing symbol getPropertySlot
https://bugs.webkit.org/show_bug.cgi?id=161521

Patch by JF Bastien <jfbastien at apple.com> on 2016-09-01
Reviewed by Saam Barati.

* runtime/IntlDateTimeFormat.cpp: include JSCInlines.h
* runtime/IntlNumberFormat.cpp: include JSCInlines.h


  Commit: 83df3af5769daf3886de9ab20b9ec147e583ce8c
      https://github.com/WebKit/WebKit/commit/83df3af5769daf3886de9ab20b9ec147e583ce8c
  Author: Žan Doberšek <zdobersek at igalia.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/WebProcess/WebPage/gtk/AcceleratedSurface.cpp

  Log Message:
  -----------
  Merge r205341 - Unreviewed GTK+ build fix when compiling with Clang.

* WebProcess/WebPage/gtk/AcceleratedSurface.cpp: Include WebPage.h.


  Commit: b99699cf3ca9cd9684451cc416d52fb1e6b2d3a3
      https://github.com/WebKit/WebKit/commit/b99699cf3ca9cd9684451cc416d52fb1e6b2d3a3
  Author: Tomáš Popela <tpopela at redhat.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Tools/ChangeLog
    M Tools/MiniBrowser/gtk/BrowserTab.c
    M Tools/MiniBrowser/gtk/BrowserWindow.c

  Log Message:
  -----------
  Merge r205343 - [GTK] Fix compiler warning in MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=161529

We were missing a return statement in decidePermissionRequest() and
also there was unused variable in browserWindowConstructed().

Patch by Tomas Popela <tpopela at redhat.com> on 2016-09-02
Reviewed by Carlos Garcia Campos.

* MiniBrowser/gtk/BrowserTab.c:
(decidePermissionRequest):
* MiniBrowser/gtk/BrowserWindow.c:
(browserWindowConstructed):


  Commit: 9467b8b322217683e5625b533aec7532cbbd1c80
      https://github.com/WebKit/WebKit/commit/9467b8b322217683e5625b533aec7532cbbd1c80
  Author: Johan K. Jensen <johan_jensen at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/WebInspectorUI/ChangeLog
    M Source/WebInspectorUI/UserInterface/Views/NetworkTimelineOverviewGraph.js
    M Source/WebInspectorUI/UserInterface/Views/TimelineOverview.js

  Log Message:
  -----------
  Merge r205349 - Web Inspector: NetworkTimelineOverviewGraph.MinimumBarPaddingTime is undefined
https://bugs.webkit.org/show_bug.cgi?id=161510

Patch by Johan K. Jensen <johan_jensen at apple.com> on 2016-09-02
Reviewed by Brian Burg.

* UserInterface/Views/NetworkTimelineOverviewGraph.js:
(WebInspector.NetworkTimelineOverviewGraph.prototype._networkTimelineRecordAdded):
(WebInspector.NetworkTimelineOverviewGraph):
Calculate the minimumBarPaddingTime in similar ways to TimelineRecordBar,
by using MinimumWidthPixel, MinimumMarginPixel and MinimumDurationPerPixel as the secondsPerPixel value.

* UserInterface/Views/TimelineOverview.js:
(WebInspector.TimelineOverview):
Make Minimum/MaximumDurationPerPixel public properties.


  Commit: 1eca25196d519220e0f11b667c8d8251e7b5467d
      https://github.com/WebKit/WebKit/commit/1eca25196d519220e0f11b667c8d8251e7b5467d
  Author: Chris Dumez <cdumez at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    M LayoutTests/platform/mac-wk1/TestExpectations
    M Source/WebCore/ChangeLog
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    R Source/WebCore/bindings/js/JSCanvasRenderingContext.h
    M Source/WebCore/bindings/js/JSDocumentCustom.cpp
    M Source/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp
    M Source/WebCore/bindings/js/JSWebGLRenderingContextBaseCustom.cpp
    M Source/WebCore/html/canvas/CanvasRenderingContext.h
    M Source/WebCore/html/canvas/WebGLRenderingContextBase.h
    M Source/WebCore/html/canvas/WebGLRenderingContextBase.idl

  Log Message:
  -----------
  Merge r205360 - REGRESSION (r204839): [mac-wk1] LayoutTest webgl/max-active-contexts-webglcontextlost-prevent-default.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=161205

Reviewed by Geoffrey Garen.

Source/WebCore:

Fixes several issues:
- Add missing isReachableFromOpaqueRoots() implementation for JSWebGLRenderingContextBase.
  It used to rely on the one from its JSCanvasRenderingContext base. However, that base
  was dropped in r204839.
- Update JSWebGLRenderingContextBase::visitAdditionalChildren() to add its canvas
  object as opaque root as well. This used to be taken care of by
  JSCanvasRenderingContext::visitAdditionalChildren() but it got dropped in r204839.

This also refactors the code a bit for clarity.

No new tests, unskipped existing test.

* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSCanvasRenderingContext.h: Removed.
* bindings/js/JSDocumentCustom.cpp:
(WebCore::JSDocument::getCSSCanvasContext):
* bindings/js/JSHTMLCanvasElementCustom.cpp:
(WebCore::JSHTMLCanvasElement::getContext):
* bindings/js/JSWebGLRenderingContextBaseCustom.cpp:
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
(WebCore::JSWebGLRenderingContextBaseOwner::isReachableFromOpaqueRoots):
(WebCore::JSWebGLRenderingContextBase::visitAdditionalChildren):
* html/canvas/CanvasRenderingContext.h:
(WebCore::CanvasRenderingContext::is3d):
* html/canvas/WebGLRenderingContextBase.h:
* html/canvas/WebGLRenderingContextBase.idl:

LayoutTests:

Unskip test case now that it is no longer flaky.

* platform/mac-wk1/TestExpectations:


  Commit: b257657e0425dd86c2631f0ab3e079615ddd3519
      https://github.com/WebKit/WebKit/commit/b257657e0425dd86c2631f0ab3e079615ddd3519
  Author: JF Bastien <jfbastien at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp

  Log Message:
  -----------
  Merge r205361 - GetByValWithThis: fix opInfo in DFG creation
https://bugs.webkit.org/show_bug.cgi?id=161541

Patch by JF Bastien <jfbastien at apple.com> on 2016-09-02
Reviewed by Saam Barati.

super-get-by-val-with-this-monomorphic might be 1.0148x faster after this change.

* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock): fix OpInfo


  Commit: 5e4124b1c240bdcad84c66b04b40e1df5dcfbb1b
      https://github.com/WebKit/WebKit/commit/5e4124b1c240bdcad84c66b04b40e1df5dcfbb1b
  Author: JF Bastien <jfbastien at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/WTF/ChangeLog
    M Source/WTF/wtf/StdLibExtras.h

  Log Message:
  -----------
  Merge r205362 - bitwise_cast infinite loops if called from the default constructor in ToType
https://bugs.webkit.org/show_bug.cgi?id=161365

Patch by JF Bastien <jfbastien at apple.com> on 2016-09-02
Reviewed by Saam Barati.

* wtf/StdLibExtras.h:
(WTF::bitwise_cast): use aggregate initialization to avoid ctor


  Commit: 123c16496015d8170d0e7beb4647d54a270cb926
      https://github.com/WebKit/WebKit/commit/123c16496015d8170d0e7beb4647d54a270cb926
  Author: Caio Araujo Neponoceno de Lima <ticaiolima at gmail.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp
    M Source/JavaScriptCore/jit/JITAddGenerator.h
    M Source/JavaScriptCore/jit/JITArithmetic.cpp
    M Source/JavaScriptCore/jit/JITMathIC.h
    M Source/JavaScriptCore/jit/JITMulGenerator.h
    M Source/JavaScriptCore/jit/JITSubGenerator.h

  Log Message:
  -----------
  Merge r205364 - Register usage optimization in mathIC when LHS and RHS are constants isn't configured correctly
https://bugs.webkit.org/show_bug.cgi?id=160802

Patch by Caio Lima <ticaiolima at gmail.com> on 2016-09-02
Reviewed by Saam Barati.

This patch is fixing a broken mechanism of MathIC that avoids allocate
a register to LHS or RHS if one of these operands are proven as valid
constant for JIT*Generator. In previous implementation, even if the
JIT*Generator was not using an operand register because it was proven as a
constant, compileMathIC and emitICFast were allocating a register for
it. This was broken because mathIC->isLeftOperandValidConstant and
mathIC->isLeftOperandValidConstant were being called before its Generator be
properly initialized. We changed this mechanism to enable Generators write
their validConstant rules using static methods isLeftOperandValidConstant(SnippetOperand)
and isRightOperandValidConstant(SnippetOperand).

* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileMathIC):
* jit/JITAddGenerator.h:
(JSC::JITAddGenerator::JITAddGenerator):
(JSC::JITAddGenerator::isLeftOperandValidConstant):
(JSC::JITAddGenerator::isRightOperandValidConstant):
* jit/JITArithmetic.cpp:
(JSC::JIT::emitMathICFast):
* jit/JITMathIC.h:
* jit/JITMulGenerator.h:
(JSC::JITMulGenerator::JITMulGenerator):
(JSC::JITMulGenerator::isLeftOperandValidConstant):
(JSC::JITMulGenerator::isRightOperandValidConstant):
* jit/JITSubGenerator.h:
(JSC::JITSubGenerator::isLeftOperandValidConstant):
(JSC::JITSubGenerator::isRightOperandValidConstant):


  Commit: f96a87ca7536013f911451318f85d07d76ac5978
      https://github.com/WebKit/WebKit/commit/f96a87ca7536013f911451318f85d07d76ac5978
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/text/assert-when-text-with-negative-margin-sibling-does-not-fit-expected.txt
    A LayoutTests/fast/text/assert-when-text-with-negative-margin-sibling-does-not-fit.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/line/BreakingContext.h
    M Source/WebCore/rendering/line/LineWidth.cpp
    M Source/WebCore/rendering/line/LineWidth.h

  Log Message:
  -----------
  Merge r205374 - ASSERTION FAILED: !m_committedWidth in WebCore::LineWidth::fitBelowFloats
https://bugs.webkit.org/show_bug.cgi?id=149462
<rdar://problem/27710841>

Reviewed by David Hyatt.

Source/WebCore:

In certain cases (multiple spans on the same line with negativ marings), the LineWidth::m_committedWidth > 0
check is not sufficient to decide if some content has already been committed to the current line.
This patch adds a flag to indicate if we ever committed to the current line.

Test: fast/text/assert-when-text-with-negative-margin-sibling-does-not-fit.html

* rendering/line/BreakingContext.h:
(WebCore::BreakingContext::handleText):
* rendering/line/LineWidth.h:
(WebCore::LineWidth::hasCommitted):

LayoutTests:

* fast/text/assert-when-text-with-negative-margin-sibling-does-not-fit-expected.txt: Added.
* fast/text/assert-when-text-with-negative-margin-sibling-does-not-fit.html: Added.


  Commit: 12e50d29b43f33fe9c8bbb09c116da995cd889ad
      https://github.com/WebKit/WebKit/commit/12e50d29b43f33fe9c8bbb09c116da995cd889ad
  Author: Benjamin Poulain <bpoulain at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/ftl/FTLCapabilities.cpp
    M Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp

  Log Message:
  -----------
  Merge r205380 - [JSC] Remove some more useless cases from FTL Capabilities
https://bugs.webkit.org/show_bug.cgi?id=161466

Patch by Benjamin Poulain <bpoulain at apple.com> on 2016-09-02
Reviewed by Geoffrey Garen.

Some cases do not make sense:
-In: Fixup only generate CellUse.
-PutByIdXXX: same.
-GetIndexedPropertyStorage: those cases are the only ones supported
 by DFG. We would have crashed in SpeculativeJIT if other modes
 were generated.

* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compilePutById):
(JSC::FTL::DFG::LowerDFGToB3::compileGetIndexedPropertyStorage):
(JSC::FTL::DFG::LowerDFGToB3::compileIn):


  Commit: ed19ee096206e7712b607531e3c0cda546ae0d74
      https://github.com/WebKit/WebKit/commit/ed19ee096206e7712b607531e3c0cda546ae0d74
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/table/assert-on-non-resolvable-row-dimension-expected.txt
    A LayoutTests/fast/table/assert-on-non-resolvable-row-dimension.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/RenderTableCell.h

  Log Message:
  -----------
  Merge r205384 - ASSERT_NOT_REACHED() is touched in WebCore::valueForLength
https://bugs.webkit.org/show_bug.cgi?id=123337
<rdar://problem/27684121>

Reviewed by Simon Fraser.

Source/WebCore:

Do not try to use unspecified height value while resolving logical height for table row.

Test: fast/table/assert-on-non-resolvable-row-dimension.html

* rendering/RenderTableCell.h:
(WebCore::RenderTableCell::logicalHeightForRowSizing):

LayoutTests:

* fast/table/assert-on-non-resolvable-row-dimension-expected.txt: Added.
* fast/table/assert-on-non-resolvable-row-dimension.html: Added.


  Commit: b939cdf3ff5dcdbeacd091fdc39bd0437d5d0a40
      https://github.com/WebKit/WebKit/commit/b939cdf3ff5dcdbeacd091fdc39bd0437d5d0a40
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/svg/css/assert-on-non-resolvable-dimension-expected.txt
    A LayoutTests/svg/css/assert-on-non-resolvable-dimension.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/svg/SVGLengthContext.cpp

  Log Message:
  -----------
  Merge r205392 - Should never be reached failure in WebCore::floatValueForLength
https://bugs.webkit.org/show_bug.cgi?id=139397
<rdar://problem/27704376>

Reviewed by Simon Fraser.

Source/WebCore:

floatValueForLength can't resolve unspecified Length types. Filter them out and return 0 as if they were auto.

Test: svg/css/assert-on-non-resolvable-dimension.html

* svg/SVGLengthContext.cpp:
(WebCore::SVGLengthContext::valueForLength):

LayoutTests:

* svg/css/assert-on-non-resolvable-dimension-expected.txt: Added.
* svg/css/assert-on-non-resolvable-dimension.html: Added.


  Commit: ad2db6170b23e44590ca53eb5de33702a8039c82
      https://github.com/WebKit/WebKit/commit/ad2db6170b23e44590ca53eb5de33702a8039c82
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp
    M Source/WebKit2/Shared/CoordinatedGraphics/SimpleViewportController.cpp
    M Source/WebKit2/Shared/CoordinatedGraphics/SimpleViewportController.h
    M Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp
    M Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h
    M Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp
    M Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h

  Log Message:
  -----------
  Merge r205395 - [Threaded Compositor] Move the viewport controller off the compositing thread
https://bugs.webkit.org/show_bug.cgi?id=161532

Reviewed by Michael Catanzaro.

While working on bug #161242 I've realized that having the view port controller in the compositing thread makes
everything more complex. The viewport controller receives changes about things like contents size, viewport
size, etc. and uses that information to compute the visible contents rect and page scale factor. Then it
notifies back to main thread about the computed visible contents rect and page scale. Those computations are not
heave at all, so they could be done in the main thread and we would avoid communications between the main and
compositing thread in both directions. The main thread needs the visible contents rect to notify the compositing
coordinator and the page cale to scale the page in case of pixed layout. But the compositing thread only needs
to know the effective scale and scroll position. So, instead of going to the compositing thread after every
change that might update the visible contents rect and page scale factor, we could do those calculations in the
main thread and only notify the compositing thread about the actual changes in the scroll position and effective scale.

* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::createTilesIfNeeded): Return early if backingStore is nullptr, which can
happen if the layer shouldn't have a backing store and was removed by the previous call to prepareContentBackingStore().
(WebKit::CoordinatedGraphicsScene::updateTilesIfNeeded): Ditto.
* Shared/CoordinatedGraphics/SimpleViewportController.cpp:
(WebKit::SimpleViewportController::SimpleViewportController): Remove the client since we no longer need to
notify about changes.
(WebKit::SimpleViewportController::didChangeViewportSize): Remove call to syncVisibleContents().
(WebKit::SimpleViewportController::didChangeContentsSize): Ditto.
(WebKit::SimpleViewportController::didChangeViewportAttributes): Ditto.
(WebKit::SimpleViewportController::didScroll): Removed unused scrollBy methods and renamed scrollTo as
didiScroll for consistency. Save the position without calling boundContentsPosition, because that's already
donde when the position is used to compute the contents visible rectangle.
(WebKit::SimpleViewportController::visibleContentsRect): No need to notify about the changes.
(WebKit::SimpleViewportController::visibleContentsSize): Deleted.
* Shared/CoordinatedGraphics/SimpleViewportController.h:
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::ThreadedCompositor::create): Pass a reference to the client instead of a pointer. It's no longer
possible to have a valid pointer when the object has been destroyed, so we can better use a reference now.
(WebKit::ThreadedCompositor::ThreadedCompositor): Ditto.
(WebKit::ThreadedCompositor::~ThreadedCompositor): Remove assert.
(WebKit::ThreadedCompositor::invalidate): No need to invalidate the client.
(WebKit::ThreadedCompositor::setScaleFactor): Set the effective scale factor that should be used for rendering.
(WebKit::ThreadedCompositor::setScrollPosition): Set the current scroll position and effective scale factor.
(WebKit::ThreadedCompositor::setViewportSize): Set the viewport size and effective scale factor.
(WebKit::ThreadedCompositor::renderNextFrame): Update m_client use that is no longer a pointer.
(WebKit::ThreadedCompositor::commitScrollOffset): Ditto.
(WebKit::ThreadedCompositor::renderLayerTree): Call glViewport after a resize and use m_viewportSize,
m_scrollPosition and m_scaleFactor members.
(WebKit::ThreadedCompositor::didChangeVisibleRect): Deleted.
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
(WebKit::ThreadedCoordinatedLayerTreeHost::ThreadedCoordinatedLayerTreeHost): Pass the compositor client as a
reference to ThreadedCompositor constructor.
(WebKit::ThreadedCoordinatedLayerTreeHost::scrollNonCompositedContents): Update the viewport and call didChangeViewport().
(WebKit::ThreadedCoordinatedLayerTreeHost::contentsSizeChanged): Ditto.
(WebKit::ThreadedCoordinatedLayerTreeHost::deviceOrPageScaleFactorChanged): Pass the effective scale factor to
the compositor.
(WebKit::ThreadedCoordinatedLayerTreeHost::sizeDidChange): Update the viewport, the compositor and call didChangeViewport().
(WebKit::ThreadedCoordinatedLayerTreeHost::didChangeViewportProperties): Update the viewport and call didChangeViewport().
(WebKit::ThreadedCoordinatedLayerTreeHost::didChangeViewport): Notify the compositing coordinator about the new
visible contents rectangle, and update the threaded compositor if needed.
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:


  Commit: 9e37978007c0b2ca38bb719c4d4172708b0e6ee2
      https://github.com/WebKit/WebKit/commit/9e37978007c0b2ca38bb719c4d4172708b0e6ee2
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp

  Log Message:
  -----------
  Merge r205397 - [GTK] -Wmissing-field-initializers on WaylandCompositor.cpp:295
https://bugs.webkit.org/show_bug.cgi?id=161524

Reviewed by Carlos Garcia Campos.

* UIProcess/gtk/WaylandCompositor.cpp:


  Commit: 9601d2e60a8cc67eae00bc73c504b9df6368597b
      https://github.com/WebKit/WebKit/commit/9601d2e60a8cc67eae00bc73c504b9df6368597b
  Author: Youenn Fablet <youenn at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    M LayoutTests/TestExpectations
    M LayoutTests/imported/w3c/ChangeLog
    A LayoutTests/imported/w3c/resources/resource-files.json
    M Tools/ChangeLog
    M Tools/Scripts/webkitpy/port/base.py
    M Tools/Scripts/webkitpy/port/base_unittest.py

  Log Message:
  -----------
  Merge r205399 - run-webkit-tests should detect w3c test resource files
https://bugs.webkit.org/show_bug.cgi?id=161307

Patch by Youenn Fablet <youenn at apple.com> on 2016-09-03
Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

* resources/resource-files.json: Added.

Tools:

* Scripts/webkitpy/port/base.py:
(Port.__init__): Adding self._w3c_resource_files to store the list of resource files.
(Port.potential_test_names_from_expected_file):
(Port._real_tests):
(Port.is_w3c_resource_file): Computing whether a file is a resource file based on imported/w3c/resources/resource-files.json.
(Port._is_test_file): Updated to call Port.is_w3c_resource_file. _is_test_file is no longer static.
(Port): Deleted.
* Scripts/webkitpy/port/base_unittest.py:
(PortTest.test_additional_platform_directory):
(PortTest.test_find_no_paths_specified):
(PortTest.test_is_test_file): Updated to use non-static version of _is_test_file.
(PortTest.test_is_w3c_resource_file): Adding tests.

LayoutTests:

* TestExpectations: Removing resource files skip expectations.


  Commit: d68fb95e76e4911376184d978399376c55785f09
      https://github.com/WebKit/WebKit/commit/d68fb95e76e4911376184d978399376c55785f09
  Author: Chris Dumez <cdumez at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    M LayoutTests/http/tests/misc/refresh-meta-with-newline.html
    M LayoutTests/imported/w3c/ChangeLog
    A LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing-expected.txt
    A LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html
    A LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/;url=foo
    A LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/__dir__.headers
    A LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/foo
    A LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/foo'bar
    A LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/refresh.sub.html
    A LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/ufoo
    A LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/urfoo
    A LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/url foo
    A LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/urlfoo
    A LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/x;url=foo
    M Source/WebCore/ChangeLog
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/html/parser/HTMLParserIdioms.cpp
    M Source/WebCore/html/parser/HTMLParserIdioms.h
    M Source/WebCore/loader/FrameLoader.cpp
    M Source/WebCore/platform/network/HTTPParsers.cpp
    M Source/WebCore/platform/network/HTTPParsers.h

  Log Message:
  -----------
  Merge r205400 - Align meta element http-equiv="refresh" parsing with the HTML specification
https://bugs.webkit.org/show_bug.cgi?id=161543

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Import corresponding test from W3C.

* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing-expected.txt: Added.
* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html: Added.
* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/;url=foo: Added.
* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/__dir__.headers: Added.
* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/foo: Added.
* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/foo'bar: Added.
* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/refresh.sub.html: Added.
* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/ufoo: Added.
* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/urfoo: Added.
* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/url foo: Added.
* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/urlfoo: Added.
* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/x;url=foo: Added.

Source/WebCore:

Align meta element http-equiv="refresh" parsing with the HTML specification:
- https://html.spec.whatwg.org/multipage/semantics.html#attr-meta-http-equiv-refresh

Tests: imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html

* dom/Document.cpp:
(WebCore::Document::processHttpEquiv):
* html/parser/HTMLParserIdioms.cpp:
(WebCore::parseHTTPRefreshInternal):
(WebCore::parseMetaHTTPEquivRefresh):
* html/parser/HTMLParserIdioms.h:
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::receivedFirstData):
* platform/network/HTTPParsers.cpp:
(WebCore::skipWhiteSpace):
(WebCore::skipEquals):
(WebCore::parseHTTPRefresh):
(WebCore::parseXSSProtectionHeader):
(WebCore::skipValue): Deleted.
* platform/network/HTTPParsers.h:

LayoutTests:

Update layout test to only use HTML spaces in http-equiv="refresh"
content value.

* http/tests/misc/refresh-meta-with-newline.html:


  Commit: 0546cb57203e983d53588d5776422e7e8b905f98
      https://github.com/WebKit/WebKit/commit/0546cb57203e983d53588d5776422e7e8b905f98
  Author: Joseph Pecoraro <pecoraro at apple.com>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/runtime/TypeSet.h
    M Source/WebCore/ChangeLog
    M Source/WebCore/Modules/indexeddb/IDBDatabaseException.cpp
    M Source/WebCore/Modules/websockets/WebSocket.cpp
    M Source/WebCore/css/FontFace.cpp
    M Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp
    M Source/WebCore/html/parser/HTMLPreloadScanner.cpp
    M Source/WebCore/loader/FormSubmission.cpp
    M Source/WebCore/page/SecurityOrigin.cpp
    M Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp
    M Source/WebCore/svg/graphics/SVGImage.cpp

  Log Message:
  -----------
  Merge r205405 - Use ASCIILiteral in some more places
https://bugs.webkit.org/show_bug.cgi?id=161557

Patch by Joseph Pecoraro <pecoraro at apple.com> on 2016-09-03
Reviewed by Darin Adler.

Source/JavaScriptCore:

* runtime/TypeSet.h:
(JSC::StructureShape::setConstructorName):

Source/WebCore:

* Modules/indexeddb/IDBDatabaseException.cpp:
(WebCore::IDBDatabaseException::getErrorName):
(WebCore::IDBDatabaseException::getErrorDescription):
* Modules/websockets/WebSocket.cpp:
(WebCore::WebSocket::binaryType):
* css/FontFace.cpp:
(WebCore::FontFace::stretch):
(WebCore::FontFace::unicodeRange):
(WebCore::FontFace::featureSettings):
* html/canvas/WebGLRenderingContextBase.cpp:
* html/parser/HTMLPreloadScanner.cpp:
(WebCore::TokenPreloadScanner::initiatorFor):
* loader/FormSubmission.cpp:
(WebCore::FormSubmission::Attributes::parseEncodingType):
* page/SecurityOrigin.cpp:
(WebCore::SecurityOrigin::toRawString):
* platform/graphics/cg/ImageBufferCG.cpp:
(WebCore::CGImageToDataURL):
(WebCore::ImageBuffer::toDataURL):
(WebCore::ImageDataToDataURL):
* svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::filenameExtension):


  Commit: 743498b98be67c2cd84d5760359929cf9fb25a05
      https://github.com/WebKit/WebKit/commit/743498b98be67c2cd84d5760359929cf9fb25a05
  Author: Antti Koivisto <koivisto at iki.fi>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/css/CSSCursorImageValue.cpp
    M Source/WebCore/css/CSSCursorImageValue.h
    M Source/WebCore/css/CSSImageGeneratorValue.cpp
    M Source/WebCore/css/CSSImageSetValue.cpp
    M Source/WebCore/css/CSSImageSetValue.h
    M Source/WebCore/css/CSSImageValue.cpp
    M Source/WebCore/css/CSSImageValue.h
    M Source/WebCore/css/StyleBuilderCustom.h
    M Source/WebCore/css/StyleResolver.cpp
    M Source/WebCore/css/StyleResolver.h
    M Source/WebCore/page/PageSerializer.cpp
    M Source/WebCore/rendering/style/FillLayer.cpp
    M Source/WebCore/rendering/style/StyleCachedImage.cpp
    M Source/WebCore/rendering/style/StyleCachedImage.h
    M Source/WebCore/rendering/style/StyleGeneratedImage.cpp
    M Source/WebCore/rendering/style/StyleGeneratedImage.h
    M Source/WebCore/rendering/style/StyleImage.h
    M Source/WebCore/style/StylePendingResources.cpp

  Log Message:
  -----------
  Merge r205419 - Reverse ownership relation of StyleCachedImage and CSSImageValue
https://bugs.webkit.org/show_bug.cgi?id=161447

Reviewed by Andreas Kling.

Currently StyleCachedImage (which represents an image in RenderStyle) has a weak ref to the
underlying CSSImageValue/CSSImageSetValue which actually owns it. This is awkwards especially since
StyleGeneratedImage, the other StyleImage subclass has reversed relationship where it refs
the underlying CSSImageGeneratorValue.

This patch makes StyleCachedImage similar to StyleGeneratedImage. StyleCachedImage now refs the
underlying CSSImageValue/CSSImageSetValue. CSSImageValues no longer need to know about StyleCachedImage.
Instead they reference CachedImages (memory cache objects) directly. StyleCachedImage instances are now
conceptually unique to RenderStyle instances. Actual resources are shared as before by sharing CachedImages.

* css/CSSCursorImageValue.cpp:
(WebCore::CSSCursorImageValue::loadImage):
(WebCore::CSSCursorImageValue::cachedImage):
(WebCore::CSSCursorImageValue::styleImage): Deleted.
* css/CSSCursorImageValue.h:
* css/CSSImageGeneratorValue.cpp:
(WebCore::CSSImageGeneratorValue::cachedImageForCSSValue):
* css/CSSImageSetValue.cpp:
(WebCore::CSSImageSetValue::~CSSImageSetValue):
(WebCore::CSSImageSetValue::loadBestFitImage):
(WebCore::CSSImageSetValue::traverseSubresources):
(WebCore::CSSImageSetValue::styleImage): Deleted.
* css/CSSImageSetValue.h:
* css/CSSImageValue.cpp:
(WebCore::CSSImageValue::CSSImageValue):
(WebCore::CSSImageValue::~CSSImageValue):
(WebCore::CSSImageValue::isPending):
(WebCore::CSSImageValue::loadImage):
(WebCore::CSSImageValue::traverseSubresources):
(WebCore::CSSImageValue::knownToBeOpaque):
(WebCore::CSSImageValue::styleImage): Deleted.
* css/CSSImageValue.h:
* css/StyleBuilderCustom.h:
(WebCore::StyleBuilderCustom::applyValueContent):
* css/StyleResolver.cpp:
(WebCore::StyleResolver::styleImage):
(WebCore::StyleResolver::styleCachedImageFromValue):
(WebCore::StyleResolver::styleGeneratedImageFromValue):
(WebCore::StyleResolver::cachedOrPendingFromValue): Deleted.
(WebCore::StyleResolver::generatedOrPendingFromValue): Deleted.
(WebCore::StyleResolver::setOrPendingFromValue): Deleted.
(WebCore::StyleResolver::cursorOrPendingFromValue): Deleted.
* css/StyleResolver.h:
* editing/TextIterator.cpp:
(WebCore::fullyClipsContents):
* page/PageSerializer.cpp:
(WebCore::PageSerializer::retrieveResourcesForProperties):
* rendering/style/FillLayer.cpp:
(WebCore::FillLayer::imagesIdentical):

    Compare data equality instead of pointer equality for StyleImages (since StyleImages are no longer shared).

(WebCore::layerImagesIdentical): Deleted.
* rendering/style/StyleCachedImage.cpp:
(WebCore::StyleCachedImage::StyleCachedImage):
(WebCore::StyleCachedImage::~StyleCachedImage):
(WebCore::StyleCachedImage::cachedImage):
(WebCore::StyleCachedImage::cssValue):
(WebCore::StyleCachedImage::canRender):
(WebCore::StyleCachedImage::isPending):
(WebCore::StyleCachedImage::isLoaded):
(WebCore::StyleCachedImage::errorOccurred):
(WebCore::StyleCachedImage::imageSize):
(WebCore::StyleCachedImage::imageHasRelativeWidth):
(WebCore::StyleCachedImage::imageHasRelativeHeight):
(WebCore::StyleCachedImage::computeIntrinsicDimensions):
(WebCore::StyleCachedImage::usesImageContainerSize):
(WebCore::StyleCachedImage::setContainerSizeForRenderer):
(WebCore::StyleCachedImage::addClient):
(WebCore::StyleCachedImage::removeClient):
(WebCore::StyleCachedImage::image):
(WebCore::StyleCachedImage::knownToBeOpaque):
(WebCore::StyleCachedImage::setCachedImage): Deleted.
* rendering/style/StyleCachedImage.h:


  Commit: 0725a0b2add50845137e2ed7306baf855938f5af
      https://github.com/WebKit/WebKit/commit/0725a0b2add50845137e2ed7306baf855938f5af
  Author: Antti Koivisto <koivisto at iki.fi>
  Date:   2016-09-08 (Thu, 08 Sep 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/css/CSSFilterImageValue.cpp
    M Source/WebCore/css/CSSToStyleMap.cpp
    M Source/WebCore/css/CSSToStyleMap.h
    M Source/WebCore/css/StyleBuilderConverter.h
    M Source/WebCore/css/StyleBuilderCustom.h
    M Source/WebCore/css/StyleResolver.cpp
    M Source/WebCore/css/StyleResolver.h
    M Source/WebCore/platform/graphics/filters/FilterOperation.cpp
    M Source/WebCore/platform/graphics/filters/FilterOperation.h
    M Source/WebCore/rendering/style/StyleCachedImage.cpp
    M Source/WebCore/style/StylePendingResources.cpp
    M Source/WebCore/style/StylePendingResources.h

  Log Message:
  -----------
  Merge r205421 - Remove Style::PendingResources
https://bugs.webkit.org/show_bug.cgi?id=161574

Reviewed by Andreas Kling.

RenderStyle contains all the information needed to initialize resource loads. There is no need for this side structure.

* css/CSSFilterImageValue.cpp:
(WebCore::CSSFilterImageValue::loadSubimages):

    Load external SVG resources along with any image resources.

* css/CSSToStyleMap.cpp:
(WebCore::CSSToStyleMap::styleImage):
(WebCore::CSSToStyleMap::mapFillImage):
(WebCore::CSSToStyleMap::mapNinePieceImage):
* css/CSSToStyleMap.h:
* css/StyleBuilderConverter.h:
(WebCore::StyleBuilderConverter::convertStyleImage):
(WebCore::StyleBuilderConverter::convertShapeValue):
* css/StyleBuilderCustom.h:
(WebCore::StyleBuilderCustom::applyValueCursor):
(WebCore::StyleBuilderCustom::applyValueContent):
* css/StyleResolver.cpp:
(WebCore::StyleResolver::State::clear):
(WebCore::StyleResolver::styleImage):
(WebCore::StyleResolver::createFilterOperations):
(WebCore::StyleResolver::loadPendingResources):
(WebCore::StyleResolver::State::ensurePendingResources): Deleted.
(WebCore::StyleResolver::styleCachedImageFromValue): Deleted.
(WebCore::StyleResolver::styleGeneratedImageFromValue): Deleted.
* css/StyleResolver.h:
(WebCore::StyleResolver::State::takePendingResources): Deleted.
* platform/graphics/filters/FilterOperation.cpp:
(WebCore::ReferenceFilterOperation::loadExternalDocumentIfNeeded):
(WebCore::ReferenceFilterOperation::getOrCreateCachedSVGDocumentReference): Deleted.
* platform/graphics/filters/FilterOperation.h:
(WebCore::ReferenceFilterOperation::cachedSVGDocumentReference):
* rendering/style/StyleCachedImage.cpp:
(WebCore::StyleCachedImage::StyleCachedImage):
* style/StylePendingResources.cpp:
(WebCore::Style::loadPendingResources):

    Trigger resource loads by checking pending resources in RenderStyle unconditionally. Keeping track of them
    separately wasn't necessary or a meaningful optimization.

(WebCore::Style::loadPendingImages): Deleted.
(WebCore::Style::loadPendingSVGFilters): Deleted.
* style/StylePendingResources.h:


  Commit: d423b2c58d1cca4f162a8d8820a2f1de1d466d33
      https://github.com/WebKit/WebKit/commit/d423b2c58d1cca4f162a8d8820a2f1de1d466d33
  Author: Žan Doberšek <zdobersek at igalia.com>
  Date:   2016-09-09 (Fri, 09 Sep 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp

  Log Message:
  -----------
  Merge r205430 - MediaPlayerPrivateGStreamerBase: improve build guards in nativeImageForCurrentTime()
https://bugs.webkit.org/show_bug.cgi?id=161594

Reviewed by Philippe Normand.

Guard the uses of cairo-gl API in nativeImageForCurrentTime() with the
USE(CAIRO) && ENABLE(ACCELERATED_2D_CANVAS) pair of build guards. This
API is only made available when the ACCELERATED_2D_CANVAS option is
enabled. Placing the guards this way thus avoids compilation errors
when compiling USE_GSTREAMER_GL code without the accelerated 2D canvas
support enabled.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::nativeImageForCurrentTime):


  Commit: 47d49b93ebd496b07c760dfc19b12915e210e048
      https://github.com/WebKit/WebKit/commit/47d49b93ebd496b07c760dfc19b12915e210e048
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-09-09 (Fri, 09 Sep 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/AcceleratedDrawingAreaProxy.cpp
    M Source/WebKit2/UIProcess/AcceleratedDrawingAreaProxy.h
    M Source/WebKit2/WebProcess/WebPage/AcceleratedDrawingArea.cpp
    M Source/WebKit2/WebProcess/WebPage/AcceleratedDrawingArea.h
    M Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp
    M Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h
    M Source/WebKit2/WebProcess/WebPage/DrawingArea.h
    M Source/WebKit2/WebProcess/WebPage/DrawingArea.messages.in
    M Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp
    M Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.h

  Log Message:
  -----------
  Merge r205431 - [GTK] SetNativeSurfaceHandleForCompositing should not be compiled in for wayland build
https://bugs.webkit.org/show_bug.cgi?id=161483

Reviewed by Žan Doberšek.

SetNativeSurfaceHandleForCompositing and DestroyNativeSurfaceHandleForCompositing messages should only be used
for GTK+ port when compiled with OpenGL and X11 enabled and redirected XComposite window disabled. So, we should
use USE(TEXTURE_MAPPER) && PLATFORM(GTK) && PLATFORM(X11) && !USE(REDIRECTED_XCOMPOSITE_WINDOW) consistently.
This fixes the build when building the GTK+ port with Wayland enabled and X11 disabled.

* UIProcess/AcceleratedDrawingAreaProxy.cpp:
(WebKit::AcceleratedDrawingAreaProxy::didUpdateBackingStoreState):
* UIProcess/AcceleratedDrawingAreaProxy.h:
* WebProcess/WebPage/AcceleratedDrawingArea.cpp:
(WebKit::AcceleratedDrawingArea::enterAcceleratedCompositingMode):
* WebProcess/WebPage/AcceleratedDrawingArea.h:
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:
* WebProcess/WebPage/DrawingArea.h:
* WebProcess/WebPage/DrawingArea.messages.in:
* WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp:
* WebProcess/WebPage/gtk/LayerTreeHostGtk.h:


  Commit: 3fbc2cf21e9d82ff669a2c2be7fa71147195b236
      https://github.com/WebKit/WebKit/commit/3fbc2cf21e9d82ff669a2c2be7fa71147195b236
  Author: Gustavo Noronha Silva <gns at gnome.org>
  Date:   2016-09-09 (Fri, 09 Sep 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp

  Log Message:
  -----------
  Merge r205452 - [GTK] GL_PACK_ROW_LENGTH is not available in GLES2
https://bugs.webkit.org/show_bug.cgi?id=161484

Reviewed by Carlos Garcia Campos.

* UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:
(WebKit::AcceleratedBackingStoreWayland::paint): when under GLES2 we cannot rely on
GL_PACK_ROW_LENGTH; use glReadPixel directly when stride matches width, read line
by line manually otherwise. Colour conversion is also required to get the data out
correctly.


  Commit: c543a8b6b0f625bfa6d50dc4a11e5db15e8e152a
      https://github.com/WebKit/WebKit/commit/c543a8b6b0f625bfa6d50dc4a11e5db15e8e152a
  Author: Fujii Hironori <Hironori.Fujii at sony.com>
  Date:   2016-09-09 (Fri, 09 Sep 2016)

  Changed paths:
    M Source/WebCore/CMakeLists.txt
    M Source/WebCore/ChangeLog
    M Source/WebCore/DerivedSources.cpp

  Log Message:
  -----------
  Merge r205457 - [CMake] Duplicated IDL files in WebCore_IDL_FILES
https://bugs.webkit.org/show_bug.cgi?id=161592

Patch by Fujii Hironori <Hironori.Fujii at sony.com> on 2016-09-05
Reviewed by Darin Adler.

* CMakeLists.txt: Removed duplicated IDL files.
* DerivedSources.cpp: Added #if ENABLE(USER_MESSAGE_HANDLERS)


  Commit: eedb234c46a19e0f00ccad135d38e7c3e82d4516
      https://github.com/WebKit/WebKit/commit/eedb234c46a19e0f00ccad135d38e7c3e82d4516
  Author: Filip Pizlo <fpizlo at apple.com>
  Date:   2016-09-09 (Fri, 09 Sep 2016)

  Changed paths:
    M JSTests/ChangeLog
    A JSTests/stress/array-storage-array-unshift.js
    A JSTests/stress/contiguous-array-unshift.js
    A JSTests/stress/double-array-unshift.js
    A JSTests/stress/int32-array-unshift.js
    A JSTests/stress/unshift-array-storage.js
    M Source/JavaScriptCore/API/JSManagedValue.mm
    M Source/JavaScriptCore/API/JSTypedArray.cpp
    M Source/JavaScriptCore/API/ObjCCallbackFunction.mm
    M Source/JavaScriptCore/API/tests/testapi.mm
    M Source/JavaScriptCore/CMakeLists.txt
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
    M Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py
    M Source/JavaScriptCore/Scripts/builtins/builtins_generate_internals_wrapper_implementation.py
    M Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py
    M Source/JavaScriptCore/assembler/AbstractMacroAssembler.h
    M Source/JavaScriptCore/assembler/MacroAssembler.h
    M Source/JavaScriptCore/assembler/MacroAssemblerARM64.h
    A Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.cpp
    M Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h
    M Source/JavaScriptCore/b3/B3BasicBlock.cpp
    M Source/JavaScriptCore/b3/B3BasicBlock.h
    M Source/JavaScriptCore/b3/B3DuplicateTails.cpp
    M Source/JavaScriptCore/b3/B3StackmapGenerationParams.h
    M Source/JavaScriptCore/b3/testb3.cpp
    M Source/JavaScriptCore/bindings/ScriptValue.cpp
    M Source/JavaScriptCore/bytecode/AdaptiveInferredPropertyValueWatchpointBase.cpp
    M Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp
    M Source/JavaScriptCore/bytecode/BytecodeRewriter.cpp
    M Source/JavaScriptCore/bytecode/BytecodeUseDef.h
    M Source/JavaScriptCore/bytecode/CallLinkInfo.cpp
    M Source/JavaScriptCore/bytecode/CallLinkInfo.h
    M Source/JavaScriptCore/bytecode/CallLinkStatus.cpp
    M Source/JavaScriptCore/bytecode/CodeBlock.cpp
    M Source/JavaScriptCore/bytecode/CodeBlock.h
    M Source/JavaScriptCore/bytecode/ExecutionCounter.h
    M Source/JavaScriptCore/bytecode/Instruction.h
    M Source/JavaScriptCore/bytecode/LLIntPrototypeLoadAdaptiveStructureWatchpoint.cpp
    M Source/JavaScriptCore/bytecode/ObjectAllocationProfile.h
    M Source/JavaScriptCore/bytecode/Opcode.h
    M Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp
    M Source/JavaScriptCore/bytecode/PolymorphicAccess.h
    M Source/JavaScriptCore/bytecode/StructureStubInfo.cpp
    M Source/JavaScriptCore/bytecode/StructureStubInfo.h
    M Source/JavaScriptCore/bytecode/SuperSampler.cpp
    M Source/JavaScriptCore/bytecode/SuperSampler.h
    M Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp
    M Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h
    M Source/JavaScriptCore/bytecode/UnlinkedInstructionStream.cpp
    M Source/JavaScriptCore/bytecode/UnlinkedInstructionStream.h
    M Source/JavaScriptCore/dfg/DFGCallArrayAllocatorSlowPathGenerator.h
    M Source/JavaScriptCore/dfg/DFGOperations.cpp
    M Source/JavaScriptCore/dfg/DFGOperations.h
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp
    M Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp
    M Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h
    M Source/JavaScriptCore/ftl/FTLCompile.cpp
    M Source/JavaScriptCore/ftl/FTLJITFinalizer.cpp
    M Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp
    M Source/JavaScriptCore/ftl/FTLOutput.cpp
    M Source/JavaScriptCore/ftl/FTLOutput.h
    M Source/JavaScriptCore/ftl/FTLValueFromBlock.h
    M Source/JavaScriptCore/ftl/FTLWeightedTarget.h
    A Source/JavaScriptCore/heap/CellContainer.h
    A Source/JavaScriptCore/heap/CellContainerInlines.h
    M Source/JavaScriptCore/heap/ConservativeRoots.cpp
    M Source/JavaScriptCore/heap/ConservativeRoots.h
    M Source/JavaScriptCore/heap/CopyToken.h
    A Source/JavaScriptCore/heap/FreeList.cpp
    A Source/JavaScriptCore/heap/FreeList.h
    A Source/JavaScriptCore/heap/GCTypeMap.h
    M Source/JavaScriptCore/heap/Heap.cpp
    M Source/JavaScriptCore/heap/Heap.h
    M Source/JavaScriptCore/heap/HeapCell.h
    A Source/JavaScriptCore/heap/HeapCellInlines.h
    M Source/JavaScriptCore/heap/HeapInlines.h
    A Source/JavaScriptCore/heap/HeapOperation.cpp
    M Source/JavaScriptCore/heap/HeapOperation.h
    A Source/JavaScriptCore/heap/HeapUtil.h
    M Source/JavaScriptCore/heap/IncrementalSweeper.cpp
    M Source/JavaScriptCore/heap/IncrementalSweeper.h
    A Source/JavaScriptCore/heap/LargeAllocation.cpp
    A Source/JavaScriptCore/heap/LargeAllocation.h
    M Source/JavaScriptCore/heap/MarkedAllocator.cpp
    M Source/JavaScriptCore/heap/MarkedAllocator.h
    M Source/JavaScriptCore/heap/MarkedBlock.cpp
    M Source/JavaScriptCore/heap/MarkedBlock.h
    M Source/JavaScriptCore/heap/MarkedSpace.cpp
    M Source/JavaScriptCore/heap/MarkedSpace.h
    M Source/JavaScriptCore/heap/SlotVisitor.cpp
    M Source/JavaScriptCore/heap/SlotVisitor.h
    M Source/JavaScriptCore/heap/WeakBlock.cpp
    M Source/JavaScriptCore/heap/WeakBlock.h
    M Source/JavaScriptCore/heap/WeakSet.cpp
    M Source/JavaScriptCore/heap/WeakSet.h
    M Source/JavaScriptCore/heap/WeakSetInlines.h
    M Source/JavaScriptCore/inspector/InjectedScriptManager.cpp
    M Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp
    M Source/JavaScriptCore/inspector/JSJavaScriptCallFrame.cpp
    M Source/JavaScriptCore/inspector/ScriptDebugServer.cpp
    M Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp
    M Source/JavaScriptCore/interpreter/CachedCall.h
    M Source/JavaScriptCore/interpreter/Interpreter.cpp
    M Source/JavaScriptCore/interpreter/Interpreter.h
    M Source/JavaScriptCore/jit/AssemblyHelpers.h
    M Source/JavaScriptCore/jit/CCallHelpers.h
    M Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp
    M Source/JavaScriptCore/jit/JIT.cpp
    M Source/JavaScriptCore/jit/JIT.h
    M Source/JavaScriptCore/jit/JITExceptions.cpp
    M Source/JavaScriptCore/jit/JITExceptions.h
    M Source/JavaScriptCore/jit/JITOpcodes.cpp
    M Source/JavaScriptCore/jit/JITOpcodes32_64.cpp
    M Source/JavaScriptCore/jit/JITOperations.cpp
    M Source/JavaScriptCore/jit/JITOperations.h
    M Source/JavaScriptCore/jit/JITPropertyAccess.cpp
    M Source/JavaScriptCore/jit/JITThunks.cpp
    M Source/JavaScriptCore/jit/JITThunks.h
    M Source/JavaScriptCore/jsc.cpp
    M Source/JavaScriptCore/llint/LLIntData.cpp
    M Source/JavaScriptCore/llint/LLIntExceptions.cpp
    M Source/JavaScriptCore/llint/LLIntThunks.cpp
    M Source/JavaScriptCore/llint/LLIntThunks.h
    M Source/JavaScriptCore/llint/LowLevelInterpreter.asm
    M Source/JavaScriptCore/llint/LowLevelInterpreter.cpp
    M Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
    M Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
    M Source/JavaScriptCore/parser/ModuleAnalyzer.cpp
    M Source/JavaScriptCore/parser/NodeConstructors.h
    M Source/JavaScriptCore/parser/Nodes.h
    M Source/JavaScriptCore/profiler/ProfilerBytecode.cpp
    M Source/JavaScriptCore/profiler/ProfilerBytecode.h
    M Source/JavaScriptCore/profiler/ProfilerBytecodeSequence.cpp
    A Source/JavaScriptCore/runtime/ArrayConventions.cpp
    M Source/JavaScriptCore/runtime/ArrayConventions.h
    M Source/JavaScriptCore/runtime/ArrayPrototype.cpp
    M Source/JavaScriptCore/runtime/ArrayStorage.h
    A Source/JavaScriptCore/runtime/AuxiliaryBarrier.h
    A Source/JavaScriptCore/runtime/AuxiliaryBarrierInlines.h
    M Source/JavaScriptCore/runtime/Butterfly.h
    M Source/JavaScriptCore/runtime/ButterflyInlines.h
    M Source/JavaScriptCore/runtime/ClonedArguments.cpp
    M Source/JavaScriptCore/runtime/CommonSlowPathsExceptions.cpp
    M Source/JavaScriptCore/runtime/CommonSlowPathsExceptions.h
    M Source/JavaScriptCore/runtime/DataView.cpp
    M Source/JavaScriptCore/runtime/DirectArguments.h
    M Source/JavaScriptCore/runtime/ECMAScriptSpecInternalFunctions.cpp
    M Source/JavaScriptCore/runtime/Error.cpp
    M Source/JavaScriptCore/runtime/Error.h
    M Source/JavaScriptCore/runtime/ErrorInstance.cpp
    M Source/JavaScriptCore/runtime/ErrorInstance.h
    M Source/JavaScriptCore/runtime/Exception.cpp
    M Source/JavaScriptCore/runtime/Exception.h
    M Source/JavaScriptCore/runtime/GeneratorPrototype.cpp
    M Source/JavaScriptCore/runtime/InternalFunction.cpp
    M Source/JavaScriptCore/runtime/IntlCollator.cpp
    M Source/JavaScriptCore/runtime/IntlCollatorConstructor.cpp
    M Source/JavaScriptCore/runtime/IntlCollatorPrototype.cpp
    M Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp
    M Source/JavaScriptCore/runtime/IntlDateTimeFormatConstructor.cpp
    M Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp
    M Source/JavaScriptCore/runtime/IntlNumberFormat.cpp
    M Source/JavaScriptCore/runtime/IntlNumberFormatConstructor.cpp
    M Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp
    M Source/JavaScriptCore/runtime/IntlObject.cpp
    M Source/JavaScriptCore/runtime/IteratorPrototype.cpp
    M Source/JavaScriptCore/runtime/JSArray.cpp
    M Source/JavaScriptCore/runtime/JSArray.h
    M Source/JavaScriptCore/runtime/JSArrayBufferView.h
    M Source/JavaScriptCore/runtime/JSCInlines.h
    M Source/JavaScriptCore/runtime/JSCJSValue.cpp
    M Source/JavaScriptCore/runtime/JSCallee.cpp
    M Source/JavaScriptCore/runtime/JSCell.cpp
    M Source/JavaScriptCore/runtime/JSCell.h
    M Source/JavaScriptCore/runtime/JSCellInlines.h
    M Source/JavaScriptCore/runtime/JSFunction.cpp
    M Source/JavaScriptCore/runtime/JSFunction.h
    M Source/JavaScriptCore/runtime/JSFunctionInlines.h
    M Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h
    M Source/JavaScriptCore/runtime/JSInternalPromise.cpp
    M Source/JavaScriptCore/runtime/JSInternalPromiseConstructor.cpp
    M Source/JavaScriptCore/runtime/JSInternalPromiseDeferred.cpp
    M Source/JavaScriptCore/runtime/JSInternalPromisePrototype.cpp
    M Source/JavaScriptCore/runtime/JSJob.cpp
    M Source/JavaScriptCore/runtime/JSMapIterator.cpp
    M Source/JavaScriptCore/runtime/JSModuleNamespaceObject.cpp
    M Source/JavaScriptCore/runtime/JSModuleRecord.cpp
    M Source/JavaScriptCore/runtime/JSObject.cpp
    M Source/JavaScriptCore/runtime/JSObject.h
    M Source/JavaScriptCore/runtime/JSObjectInlines.h
    M Source/JavaScriptCore/runtime/JSPromise.cpp
    M Source/JavaScriptCore/runtime/JSPromiseConstructor.cpp
    M Source/JavaScriptCore/runtime/JSPromiseDeferred.cpp
    M Source/JavaScriptCore/runtime/JSPromisePrototype.cpp
    M Source/JavaScriptCore/runtime/JSPropertyNameIterator.cpp
    M Source/JavaScriptCore/runtime/JSScope.cpp
    M Source/JavaScriptCore/runtime/JSScope.h
    M Source/JavaScriptCore/runtime/JSSetIterator.cpp
    M Source/JavaScriptCore/runtime/JSStringIterator.cpp
    M Source/JavaScriptCore/runtime/JSTemplateRegistryKey.cpp
    M Source/JavaScriptCore/runtime/JSTypedArrayViewConstructor.cpp
    M Source/JavaScriptCore/runtime/JSTypedArrayViewPrototype.cpp
    M Source/JavaScriptCore/runtime/JSWeakMap.cpp
    M Source/JavaScriptCore/runtime/JSWeakSet.cpp
    M Source/JavaScriptCore/runtime/MapConstructor.cpp
    M Source/JavaScriptCore/runtime/MapIteratorPrototype.cpp
    M Source/JavaScriptCore/runtime/MapPrototype.cpp
    M Source/JavaScriptCore/runtime/NativeErrorConstructor.cpp
    M Source/JavaScriptCore/runtime/NativeStdFunctionCell.cpp
    M Source/JavaScriptCore/runtime/Operations.h
    M Source/JavaScriptCore/runtime/Options.cpp
    M Source/JavaScriptCore/runtime/Options.h
    M Source/JavaScriptCore/runtime/PropertyTable.cpp
    M Source/JavaScriptCore/runtime/ProxyConstructor.cpp
    M Source/JavaScriptCore/runtime/ProxyObject.cpp
    M Source/JavaScriptCore/runtime/ProxyRevoke.cpp
    M Source/JavaScriptCore/runtime/RegExp.cpp
    M Source/JavaScriptCore/runtime/RegExp.h
    M Source/JavaScriptCore/runtime/RegExpConstructor.h
    M Source/JavaScriptCore/runtime/RegExpInlines.h
    M Source/JavaScriptCore/runtime/RegExpMatchesArray.h
    M Source/JavaScriptCore/runtime/RegExpPrototype.cpp
    M Source/JavaScriptCore/runtime/RuntimeType.cpp
    M Source/JavaScriptCore/runtime/SamplingProfiler.cpp
    M Source/JavaScriptCore/runtime/SetConstructor.cpp
    M Source/JavaScriptCore/runtime/SetIteratorPrototype.cpp
    M Source/JavaScriptCore/runtime/SetPrototype.cpp
    A Source/JavaScriptCore/runtime/StackFrame.cpp
    A Source/JavaScriptCore/runtime/StackFrame.h
    M Source/JavaScriptCore/runtime/StringConstructor.cpp
    M Source/JavaScriptCore/runtime/StringIteratorPrototype.cpp
    M Source/JavaScriptCore/runtime/StructureInlines.h
    M Source/JavaScriptCore/runtime/TemplateRegistry.cpp
    M Source/JavaScriptCore/runtime/TestRunnerUtils.cpp
    M Source/JavaScriptCore/runtime/TestRunnerUtils.h
    M Source/JavaScriptCore/runtime/ThrowScope.cpp
    M Source/JavaScriptCore/runtime/TypeProfilerLog.cpp
    M Source/JavaScriptCore/runtime/TypeSet.cpp
    M Source/JavaScriptCore/runtime/VM.cpp
    M Source/JavaScriptCore/runtime/VM.h
    M Source/JavaScriptCore/runtime/VMEntryScope.h
    M Source/JavaScriptCore/runtime/VMInlines.h
    M Source/JavaScriptCore/runtime/WeakMapConstructor.cpp
    M Source/JavaScriptCore/runtime/WeakMapData.cpp
    M Source/JavaScriptCore/runtime/WeakMapPrototype.cpp
    M Source/JavaScriptCore/runtime/WeakSetConstructor.cpp
    M Source/JavaScriptCore/runtime/WeakSetPrototype.cpp
    M Source/JavaScriptCore/testRegExp.cpp
    M Source/JavaScriptCore/tools/JSDollarVM.cpp
    M Source/JavaScriptCore/tools/JSDollarVMPrototype.cpp
    M Source/WTF/ChangeLog
    M Source/WTF/wtf/FastMalloc.cpp
    M Source/WTF/wtf/FastMalloc.h
    M Source/WTF/wtf/ParkingLot.cpp
    M Source/WTF/wtf/ParkingLot.h
    M Source/WTF/wtf/ScopedLambda.h
    M Source/WTF/wtf/SentinelLinkedList.h
    M Source/WTF/wtf/SimpleStats.h
    M Source/WebCore/ChangeLog
    A Source/WebCore/ForwardingHeaders/heap/HeapInlines.h
    R Source/WebCore/ForwardingHeaders/interpreter/Interpreter.h
    A Source/WebCore/ForwardingHeaders/runtime/AuxiliaryBarrierInlines.h
    M Source/WebCore/Modules/indexeddb/IDBCursorWithValue.cpp
    M Source/WebCore/Modules/indexeddb/client/TransactionOperation.cpp
    M Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp
    M Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp
    M Source/WebCore/bindings/js/JSApplePayPaymentAuthorizedEventCustom.cpp
    M Source/WebCore/bindings/js/JSApplePayPaymentMethodSelectedEventCustom.cpp
    M Source/WebCore/bindings/js/JSApplePayShippingContactSelectedEventCustom.cpp
    M Source/WebCore/bindings/js/JSApplePayShippingMethodSelectedEventCustom.cpp
    M Source/WebCore/bindings/js/JSClientRectCustom.cpp
    M Source/WebCore/bindings/js/JSDOMBinding.cpp
    M Source/WebCore/bindings/js/JSDOMBinding.h
    M Source/WebCore/bindings/js/JSDeviceMotionEventCustom.cpp
    M Source/WebCore/bindings/js/JSDeviceOrientationEventCustom.cpp
    M Source/WebCore/bindings/js/JSErrorEventCustom.cpp
    M Source/WebCore/bindings/js/JSIDBCursorWithValueCustom.cpp
    M Source/WebCore/bindings/js/JSIDBIndexCustom.cpp
    M Source/WebCore/bindings/js/JSPerformanceTimingCustom.cpp
    M Source/WebCore/bindings/js/JSPopStateEventCustom.cpp
    M Source/WebCore/bindings/js/JSWebGL2RenderingContextCustom.cpp
    M Source/WebCore/bindings/js/JSWorkerGlobalScopeCustom.cpp
    M Source/WebCore/bindings/js/WorkerScriptController.cpp
    M Source/WebCore/contentextensions/ContentExtensionParser.cpp
    M Source/WebCore/dom/ErrorEvent.cpp
    M Source/WebCore/html/HTMLCanvasElement.cpp
    M Source/WebCore/html/MediaDocument.cpp
    M Source/WebCore/inspector/CommandLineAPIModule.cpp
    M Source/WebCore/loader/EmptyClients.cpp
    M Source/WebCore/page/CaptionUserPreferences.cpp
    M Source/WebCore/page/Frame.cpp
    M Source/WebCore/page/PageGroup.cpp
    M Source/WebCore/page/UserContentController.cpp
    M Source/WebCore/platform/mock/mediasource/MockBox.cpp
    M Source/WebCore/testing/GCObservation.cpp
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/ViewGestureController.cpp
    M Source/WebKit2/UIProcess/WebPageProxy.cpp
    M Source/WebKit2/UIProcess/WebProcessPool.cpp
    M Source/WebKit2/UIProcess/WebProcessProxy.cpp
    M Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp
    M Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.cpp
    M Source/bmalloc/ChangeLog
    M Source/bmalloc/bmalloc/Allocator.cpp
    M Source/bmalloc/bmalloc/Allocator.h
    M Source/bmalloc/bmalloc/Cache.h
    M Source/bmalloc/bmalloc/bmalloc.h
    M Tools/ChangeLog
    M Tools/DumpRenderTree/TestRunner.cpp
    M Tools/DumpRenderTree/mac/DumpRenderTree.mm
    M Tools/Scripts/run-jsc-stress-tests

  Log Message:
  -----------
  Merge r205462 - Butterflies should be allocated in Auxiliary MarkedSpace instead of CopiedSpace and we should rewrite as much of the GC as needed to make this not a regression
https://bugs.webkit.org/show_bug.cgi?id=160125

Reviewed by Geoffrey Garen and Keith Miller.
JSTests:

Most of the things I did properly covered by existing tests, but I found some simple cases of
unshifting that had sketchy coverage.

* stress/array-storage-array-unshift.js: Added.
* stress/contiguous-array-unshift.js: Added.
* stress/double-array-unshift.js: Added.
* stress/int32-array-unshift.js: Added.

Source/bmalloc:

I needed to tryMemalign, so I added such a thing.

* bmalloc/Allocator.cpp:
(bmalloc::Allocator::allocate):
(bmalloc::Allocator::tryAllocate):
(bmalloc::Allocator::allocateImpl):
* bmalloc/Allocator.h:
* bmalloc/Cache.h:
(bmalloc::Cache::tryAllocate):
* bmalloc/bmalloc.h:
(bmalloc::api::tryMemalign):

Source/JavaScriptCore:

In order to make the GC concurrent (bug 149432), we would either need to enable concurrent
copying or we would need to not copy. Concurrent copying carries a 1-2% throughput overhead
from the barriers alone. Considering that MarkedSpace does a decent job of avoiding
fragmentation, it's unlikely that it's worth paying 1-2% throughput for copying. So, we want
to get rid of copied space. This change moves copied space's biggest client over to marked
space.

Moving butterflies to marked space means having them use the new Auxiliary HeapCell
allocation path. This is a fairly mechanical change, but it caused performance regressions
everywhere, so this change also fixes MarkedSpace's performance issues.

At a high level the mechanical changes are:

- We use AuxiliaryBarrier instead of CopyBarrier.

- We use tryAllocateAuxiliary instead of tryAllocateStorage. I got rid of the silly
  CheckedBoolean stuff, since it's so much more trouble than it's worth.

- The JITs have to emit inlined marked space allocations instead of inline copy space
  allocations.

- Everyone has to get used to zeroing their butterflies after allocation instead of relying
  on them being pre-zeroed by the GC. Copied space would zero things for you, while marked
  space doesn't.

That's about 1/3 of this change. But this led to performance problems, which I fixed with
optimizations that amounted to a major MarkedSpace rewrite:

- MarkedSpace always causes internal fragmentation for array allocations because the vector
  length we choose when we resize usually leads to a cell size that doesn't correspond to any
  size class. I got around this by making array allocations usually round up vectorLength to
  the maximum allowed by the size class that we would have allocated in. Also,
  ensureLengthSlow() and friends first make sure that the requested length can't just be
  fulfilled with the current allocation size. This safeguard means that not every array
  allocation has to do size class queries. For example, the fast path of new Array(length)
  never does any size class queries, under the assumption that (1) the speed gained from
  avoiding an ensureLengthSlow() call, which then just changes the vectorLength by doing the
  size class query, is too small to offset the speed lost by doing the query on every
  allocation and (2) new Array(length) is a pretty good hint that resizing is not very
  likely.

- Size classes in MarkedSpace were way too precise, which led to external fragmentation. This
  changes MarkedSpace size classes to use a linear progression for very small sizes followed
  by a geometric progression that naturally transitions to a hyperbolic progression. We want
  hyperbolic sizes when we get close to blockSize: for example the largest size we want is
  payloadSize / 2 rounded down, to ensure we get exactly two cells with minimal slop. The
  next size down should be payloadSize / 3 rounded down, and so on. After the last precise
  size (80 bytes), we proceed using a geometric progression, but round up each size to
  minimize slop at the end of the block. This naturally causes the geometric progression to
  turn hyperbolic for large sizes. The size class configuration happens at VM start-up, so
  it can be controlled with runtime options. I found that a base of 1.4 works pretty well.

- Large allocations caused massive internal fragmentation, since the smallest large
  allocation had to use exactly blockSize, and the largest small allocation used
  blockSize / 2. The next size up - the first large allocation size to require two blocks -
  also had 50% internal fragmentation. This is because we required large allocations to be
  blockSize aligned, so that MarkedBlock::blockFor() would work. I decided to rewrite all of
  that. Cells no longer have to be owned by a MarkedBlock. They can now alternatively be
  owned by a LargeAllocation. These two things are abstracted as CellContainer. You know that
  a cell is owned by a LargeAllocation if the MarkedBlock::atomSize / 2 bit is set.
  Basically, large allocations are deliberately misaligned by 8 bytes. This actually works
  out great since (1) typed arrays won't use large allocations anyway since they have their
  own malloc fallback and (2) large array butterflies already have a 8 byte header, which
  means that the 8 byte base misalignment aligns the large array payload on a 16 byte
  boundary. I took extreme care to make sure that the isLargeAllocation bit checks are as
  rare as possible; for example, ExecState::vm() skips the check because we know that callees
  must be small allocations. It's also possible to use template tricks to do one check for
  cell container kind, and then invoke a function specialized for MarkedBlock or a function
  specialized for LargeAllocation. LargeAllocation includes stubs for all MarkedBlock methods
  that get used from functions that are template-specialized like this. That's mostly to
  speed up the GC marking code. Most other code can use CellContainer API or HeapCell API
  directly. That's another thing: HeapCell, the common base of JSCell and auxiliary
  allocations, is now smart enough to do a lot of things for you, like HeapCell::vm(),
  HeapCell::heap(), HeapCell::isLargeAllocation(), and HeapCell::cellContainer(). The size
  cutoff for large allocations is runtime-configurable, so long as you don't choose something
  so small that callees end up large. I found that 400 bytes is roughly optimal. This means
  that the MarkedBlock size classes end up being:

  16, 32, 48, 64, 80, 112, 160, 224, 320

  The next size class would have been 432, but that's above the 400 byte cutoff. All of this
  is configurable with --sizeClassProgression and --largeAllocationCutoff. You can see what
  size classes you end up with by doing --dumpSizeClasses=true.

- Copied space uses 64KB blocks, while marked space used to use 16KB blocks. Allocating a lot
  of stuff in 16KB blocks was slower than allocating it in 64KB blocks because the GC had a
  lot of per-block overhead. I removed this overhead: It's now 2x faster to scan all
  MarkedBlocks because the list that contains the interesting meta-data is allocated on the
  side, for better locality during a sequential walk. It's no longer necessary to scan
  MarkedBlocks to find WeakSets, since the sets of WeakSets for eden scan and full scan are
  maintained on-the-fly. It's no longer necessary to scan all MarkedBlocks to clear mark
  bits because we now use versioned mark bits: to clear then, just increment the 64-bit
  heap version. It's no longer necessary to scan retired MarkedBlocks while allocating
  because marking retires them on-the-fly. It's no longer necessary to sort all blocks in
  the IncrementalSweeper's snapshot because blocks now know if they are in the snapshot. Put
  together, these optimizations allowed me to reduce block size to 16KB without losing much
  performance. There is some small perf loss on JetStream/splay, but not enough to hurt
  JetStream overall. I tried reducing block sizes further, to 4KB, since that is a
  progression on membuster. That's not possible yet, since there is still enough per-block
  overhead yet that such a reduction hurts JetStream too much. I filed a bug about improving
  this further: https://bugs.webkit.org/show_bug.cgi?id=161581.

- Even after all of that, copying butterflies was still faster because it allowed us to skip
  sweeping dead space. A good GC allocates over dead bytes without explicitly freeing them,
  so the GC pause is O(size of live), not O(size of live + dead). O(dead) is usually much
  larger than O(live), especially in an eden collection. Copying satisfies this premise while
  mark+sweep does not. So, I invented a new kind of allocator: bump'n'pop. Previously, our
  MarkedSpace allocator was a freelist pop. That's simple and easy to inline but requires
  that we walk the block to build a free list. This means walking dead space. The new
  allocator allows totally free MarkedBlocks to simply set up a bump-pointer arena instead.
  The allocator is a hybrid of bump-pointer and freelist pop. It tries bump first. The bump
  pointer always bumps by cellSize, so the result of filling a block with bumping looks as if
  we had used freelist popping to fill it. Additionally, each MarkedBlock now has a bit to
  quickly tell if the block is entirely free. This makes sweeping O(1) whenever a MarkedBlock
  is completely empty, which is the common case because of the generational hypothesis: the
  number of objects that survive an eden collection is a tiny fraction of the number of
  objects that had been allocated, and this fraction is so small that there are typically
  fewer than one survivors per MarkedBlock. This change was enough to make this change a net
  win over tip-of-tree.

- FTL now shares the same allocation fast paths as everything else, which is great, because
  bump'n'pop has gnarly control flow. We don't really want B3 to have to think about that
  control flow, since it won't be able to improve the machine code we write ourselves. GC
  fast paths are best written in assembly. So, I've empowered B3 to have even better support
  for Patchpoint terminals. It's now totally fine for a Patchpoint terminal to be non-Void.
  So, the new FTL allocation fast paths are just Patchpoint terminals that call through to
  AssemblyHelpers::emitAllocate(). B3 still reasons about things like constant-folding the
  size class calculation and constant-hoisting the allocator. Also, I gave the FTL the
  ability to constant-fold some allocator logic (in case we first assume that we're doing a
  variable-length allocation but then realize that the length is known). I think it makes
  sense to have constant folding rules in FTL::Output, or whatever the B3 IR builder is,
  since this makes lowering easier (you can constant fold during lowering more easily) and it
  reduces the amount of malloc traffic. In the future, we could teach B3 how to better
  constant-fold this code. That would require allowing loads to be constant-folded, which is
  doable but hella tricky.

- It used to be that if a logical object allocation required two physical allocations (first
  the butterfly and then the cell), then the JIT would emit the code in such a way that a
  failure in the second fast path would cause us to forget the successful first physical
  allocation. This was pointlessly wasteful. It turns out that it's very cheap to devote a
  register to storing either the butterfly or null, because the butterfly register is anyway
  going to be free inside the first allocation. The only overhead here is zeroing the
  butterfly register. With that in place, we can just pass the butterfly-or-null to the slow
  path, which can then either allocate a butterfly or not. So now we never waste a successful
  allocation. This patch implements such a solution both in DFG (where it's easy to do this
  since we control registers already) and in FTL (where it's annoying, because mutable
  "butterfly-or-null" variables are hard to say in SSA; also I realized that we had code
  duplicated the JSArray allocation utility, so I deduplicated it). This came up because in
  one version of this patch, this wastage would resonate with some Kraken benchmark: the
  benchmark would always allocate N small things followed by one bigger thing. The problem
  was I accidentally adjusted the various fixed overheads in MarkedBlock in such a way that
  the JSObject size class, which both the small and big thing shared for their cell, could
  hold exactly N cells per MarkedBlock. Then the benchmark would always call slow path when
  it allocated the big thing. So, it would end up having to allocate the big thing's large
  butterfly twice, every single time! Ouch!

- It used to be that we zeroed CopiedBlocks using memset, and so array allocations enjoyed
  amortization of the cost of zeroing. This doesn't work anymore - it's now up to the client
  of the allocator to initialize the object to whatever state they need. It used to be that
  we would just use a dumb loop. I initially changed this so that we would end up in memset
  for large allocations, but this didn't actually help performance that much. I got a much
  better result by playing with different memsets written in assembly. First I wrote one
  using non-temporal stores. That was a small speed-up over memset. Then I tried the classic
  "rep stos" approach, and holy cow that version was fast. It's a ~20% speed-up on array
  allocation microbenchmarks. So, this patch adds code paths to do "rep stos" on x86_64, or
  memset, or use a loop, as appropriate, for both "contiguous" arrays (holes are zero) and
  double arrays (holes are PNaN). Note that the JIT always emits either a loop or a flat slab
  of stores (if the size is known), but those paths in the JIT won't trigger for
  NewArrayWithSize() if the size is large, since that takes us to the
  operationNewArrayWithSize() slow path, which calls into JSArray::create(). That's why the
  optimizations here are all in JSArray::create() - that's the hot place for large arrays
  that need to be filled with holes.

All of this put together gives us neutral perf on JetStream,  membuster, and PLT3, a ~1%
regression on Speedometer, and up to a 4% regression Kraken. The Kraken regression is
because Kraken was allocating exactly 1024 element arrays at a rate of 400MB/sec. This is a
best-case scenario for bump allocation. I think that we should fix bmalloc to make up the
difference, but take the hit for now because it's a crazy corner case. By comparison, the
alternative approach of using a copy barrier would have cost us 1-2%. That's the real
apples-to-apples comparison if your premise is that we should have a concurrent GC. After we
finish removing copied space, we will be barrier-ready for concurrent GC: we already have a
marking barrier and we simply won't need a copying barrier. This change gets us there for
the purposes of our benchmarks, since the remaining clients of copied space are not very
important. On the other hand, if we keep copying, then getting barrier-ready would mean
adding back the copy barrier, which costs more perf.

We might get bigger speed-ups once we remove CopiedSpace altogether. That requires moving
typed arrays and a few other weird things over to Aux MarkedSpace.

This also includes some header sanitization. The introduction of AuxiliaryBarrier, HeapCell,
and CellContainer meant that I had to include those files from everywhere. Fortunately,
just including JSCInlines.h (instead of manually including the files that includes) is
usually enough. So, I made most of JSC's cpp files include JSCInlines.h, which is something
that we were already basically doing. In places where JSCInlines.h would be too much, I just
included HeapInlines.h. This got weird, because we previously included HeapInlines.h from
JSObject.h. That's bad because it led to some circular dependencies, so I fixed it - but that
meant having to manually include HeapInlines.h from the places that previously got it
implicitly via JSObject.h. But that led to more problems for some reason: I started getting
build errors because non-JSC files were having trouble including Opcode.h. That's just silly,
since Opcode.h is meant to be an internal JSC header. So, I made it an internal header and
made it impossible to include it from outside JSC. This was a lot of work, but it was
necessary to get the patch to build on all ports. It's also a net win. There were many places
in WebCore that were transitively including a *ton* of JSC headers just because of the
JSObject.h->HeapInlines.h edge and a bunch of dependency edges that arose from some public
(for WebCore) JSC headers needing Interpreter.h or Opcode.h for bad reasons.

* API/JSManagedValue.mm:
(-[JSManagedValue initWithValue:]):
* API/JSTypedArray.cpp:
* API/ObjCCallbackFunction.mm:
* API/tests/testapi.mm:
(testObjectiveCAPI):
(testWeakValue): Deleted.
* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* Scripts/builtins/builtins_generate_combined_implementation.py:
(BuiltinsCombinedImplementationGenerator.generate_secondary_header_includes):
* Scripts/builtins/builtins_generate_internals_wrapper_implementation.py:
(BuiltinsInternalsWrapperImplementationGenerator.generate_secondary_header_includes):
* Scripts/builtins/builtins_generate_separate_implementation.py:
(BuiltinsSeparateImplementationGenerator.generate_secondary_header_includes):
* assembler/AbstractMacroAssembler.h:
(JSC::AbstractMacroAssembler::JumpList::link):
(JSC::AbstractMacroAssembler::JumpList::linkTo):
* assembler/MacroAssembler.h:
* assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::add32):
* assembler/MacroAssemblerCodeRef.cpp: Added.
(JSC::MacroAssemblerCodePtr::createLLIntCodePtr):
(JSC::MacroAssemblerCodePtr::dumpWithName):
(JSC::MacroAssemblerCodePtr::dump):
(JSC::MacroAssemblerCodeRef::createLLIntCodeRef):
(JSC::MacroAssemblerCodeRef::dump):
* assembler/MacroAssemblerCodeRef.h:
(JSC::MacroAssemblerCodePtr::createLLIntCodePtr): Deleted.
(JSC::MacroAssemblerCodePtr::dumpWithName): Deleted.
(JSC::MacroAssemblerCodePtr::dump): Deleted.
(JSC::MacroAssemblerCodeRef::createLLIntCodeRef): Deleted.
(JSC::MacroAssemblerCodeRef::dump): Deleted.
* b3/B3BasicBlock.cpp:
(JSC::B3::BasicBlock::appendBoolConstant):
* b3/B3BasicBlock.h:
* b3/B3DuplicateTails.cpp:
* b3/B3StackmapGenerationParams.h:
* b3/testb3.cpp:
(JSC::B3::testPatchpointTerminalReturnValue):
(JSC::B3::run):
* bindings/ScriptValue.cpp:
* bytecode/AdaptiveInferredPropertyValueWatchpointBase.cpp:
* bytecode/BytecodeBasicBlock.cpp:
* bytecode/BytecodeLivenessAnalysis.cpp:
* bytecode/BytecodeUseDef.h:
* bytecode/CallLinkInfo.cpp:
(JSC::CallLinkInfo::callTypeFor):
* bytecode/CallLinkInfo.h:
(JSC::CallLinkInfo::callTypeFor): Deleted.
* bytecode/CallLinkStatus.cpp:
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::clearLLIntGetByIdCache):
(JSC::CodeBlock::predictedMachineCodeSize):
* bytecode/CodeBlock.h:
(JSC::CodeBlock::jitCodeMap): Deleted.
(JSC::clearLLIntGetByIdCache): Deleted.
* bytecode/ExecutionCounter.h:
* bytecode/Instruction.h:
* bytecode/LLIntPrototypeLoadAdaptiveStructureWatchpoint.cpp:
(JSC::LLIntPrototypeLoadAdaptiveStructureWatchpoint::fireInternal):
* bytecode/ObjectAllocationProfile.h:
(JSC::ObjectAllocationProfile::isNull):
(JSC::ObjectAllocationProfile::initialize):
* bytecode/Opcode.h:
(JSC::padOpcodeName):
* bytecode/PolymorphicAccess.cpp:
(JSC::AccessCase::generateImpl):
(JSC::PolymorphicAccess::regenerate):
* bytecode/PolymorphicAccess.h:
* bytecode/PreciseJumpTargets.cpp:
* bytecode/StructureStubInfo.cpp:
* bytecode/StructureStubInfo.h:
* bytecode/UnlinkedCodeBlock.cpp:
(JSC::UnlinkedCodeBlock::vm): Deleted.
* bytecode/UnlinkedCodeBlock.h:
* bytecode/UnlinkedInstructionStream.cpp:
* bytecode/UnlinkedInstructionStream.h:
* dfg/DFGOperations.cpp:
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::emitAllocateRawObject):
(JSC::DFG::SpeculativeJIT::compileMakeRope):
(JSC::DFG::SpeculativeJIT::compileAllocatePropertyStorage):
(JSC::DFG::SpeculativeJIT::compileReallocatePropertyStorage):
* dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::emitAllocateJSCell):
(JSC::DFG::SpeculativeJIT::emitAllocateJSObject):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::compileAllocateNewArrayWithSize):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::compileAllocateNewArrayWithSize):
* dfg/DFGStrengthReductionPhase.cpp:
(JSC::DFG::StrengthReductionPhase::handleNode):
* ftl/FTLAbstractHeapRepository.h:
* ftl/FTLCompile.cpp:
* ftl/FTLJITFinalizer.cpp:
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileCreateDirectArguments):
(JSC::FTL::DFG::LowerDFGToB3::compileCreateRest):
(JSC::FTL::DFG::LowerDFGToB3::allocateArrayWithSize):
(JSC::FTL::DFG::LowerDFGToB3::compileNewArrayWithSize):
(JSC::FTL::DFG::LowerDFGToB3::compileMakeRope):
(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeNewObject):
(JSC::FTL::DFG::LowerDFGToB3::initializeArrayElements):
(JSC::FTL::DFG::LowerDFGToB3::allocatePropertyStorageWithSizeImpl):
(JSC::FTL::DFG::LowerDFGToB3::allocateHeapCell):
(JSC::FTL::DFG::LowerDFGToB3::allocateCell):
(JSC::FTL::DFG::LowerDFGToB3::allocateObject):
(JSC::FTL::DFG::LowerDFGToB3::allocatorForSize):
(JSC::FTL::DFG::LowerDFGToB3::allocateVariableSizedObject):
(JSC::FTL::DFG::LowerDFGToB3::allocateJSArray):
(JSC::FTL::DFG::LowerDFGToB3::compileAllocateArrayWithSize): Deleted.
* ftl/FTLOutput.cpp:
(JSC::FTL::Output::constBool):
(JSC::FTL::Output::add):
(JSC::FTL::Output::shl):
(JSC::FTL::Output::aShr):
(JSC::FTL::Output::lShr):
(JSC::FTL::Output::zeroExt):
(JSC::FTL::Output::equal):
(JSC::FTL::Output::notEqual):
(JSC::FTL::Output::above):
(JSC::FTL::Output::aboveOrEqual):
(JSC::FTL::Output::below):
(JSC::FTL::Output::belowOrEqual):
(JSC::FTL::Output::greaterThan):
(JSC::FTL::Output::greaterThanOrEqual):
(JSC::FTL::Output::lessThan):
(JSC::FTL::Output::lessThanOrEqual):
(JSC::FTL::Output::select):
(JSC::FTL::Output::appendSuccessor):
(JSC::FTL::Output::addIncomingToPhi):
* ftl/FTLOutput.h:
* ftl/FTLValueFromBlock.h:
(JSC::FTL::ValueFromBlock::operator bool):
(JSC::FTL::ValueFromBlock::ValueFromBlock): Deleted.
* ftl/FTLWeightedTarget.h:
(JSC::FTL::WeightedTarget::frequentedBlock):
* heap/CellContainer.h: Added.
(JSC::CellContainer::CellContainer):
(JSC::CellContainer::operator bool):
(JSC::CellContainer::isMarkedBlock):
(JSC::CellContainer::isLargeAllocation):
(JSC::CellContainer::markedBlock):
(JSC::CellContainer::largeAllocation):
* heap/CellContainerInlines.h: Added.
(JSC::CellContainer::isMarked):
(JSC::CellContainer::isMarkedOrNewlyAllocated):
(JSC::CellContainer::noteMarked):
(JSC::CellContainer::cellSize):
(JSC::CellContainer::weakSet):
(JSC::CellContainer::flipIfNecessary):
* heap/ConservativeRoots.cpp:
(JSC::ConservativeRoots::ConservativeRoots):
(JSC::ConservativeRoots::~ConservativeRoots):
(JSC::ConservativeRoots::grow):
(JSC::ConservativeRoots::genericAddPointer):
(JSC::ConservativeRoots::genericAddSpan):
* heap/ConservativeRoots.h:
(JSC::ConservativeRoots::roots):
* heap/CopyToken.h:
* heap/FreeList.cpp: Added.
(JSC::FreeList::dump):
* heap/FreeList.h: Added.
(JSC::FreeList::FreeList):
(JSC::FreeList::list):
(JSC::FreeList::bump):
(JSC::FreeList::operator==):
(JSC::FreeList::operator!=):
(JSC::FreeList::operator bool):
(JSC::FreeList::allocationWillFail):
(JSC::FreeList::allocationWillSucceed):
* heap/GCTypeMap.h: Added.
(JSC::GCTypeMap::operator[]):
* heap/Heap.cpp:
(JSC::Heap::Heap):
(JSC::Heap::lastChanceToFinalize):
(JSC::Heap::finalizeUnconditionalFinalizers):
(JSC::Heap::markRoots):
(JSC::Heap::copyBackingStores):
(JSC::Heap::gatherStackRoots):
(JSC::Heap::gatherJSStackRoots):
(JSC::Heap::gatherScratchBufferRoots):
(JSC::Heap::clearLivenessData):
(JSC::Heap::visitSmallStrings):
(JSC::Heap::visitConservativeRoots):
(JSC::Heap::removeDeadCompilerWorklistEntries):
(JSC::Heap::gatherExtraHeapSnapshotData):
(JSC::Heap::removeDeadHeapSnapshotNodes):
(JSC::Heap::visitProtectedObjects):
(JSC::Heap::visitArgumentBuffers):
(JSC::Heap::visitException):
(JSC::Heap::visitStrongHandles):
(JSC::Heap::visitHandleStack):
(JSC::Heap::visitSamplingProfiler):
(JSC::Heap::traceCodeBlocksAndJITStubRoutines):
(JSC::Heap::converge):
(JSC::Heap::visitWeakHandles):
(JSC::Heap::updateObjectCounts):
(JSC::Heap::clearUnmarkedExecutables):
(JSC::Heap::deleteUnmarkedCompiledCode):
(JSC::Heap::collectAllGarbage):
(JSC::Heap::collect):
(JSC::Heap::collectWithoutAnySweep):
(JSC::Heap::collectImpl):
(JSC::Heap::suspendCompilerThreads):
(JSC::Heap::willStartCollection):
(JSC::Heap::flushOldStructureIDTables):
(JSC::Heap::flushWriteBarrierBuffer):
(JSC::Heap::stopAllocation):
(JSC::Heap::prepareForMarking):
(JSC::Heap::reapWeakHandles):
(JSC::Heap::pruneStaleEntriesFromWeakGCMaps):
(JSC::Heap::sweepArrayBuffers):
(JSC::MarkedBlockSnapshotFunctor::MarkedBlockSnapshotFunctor):
(JSC::MarkedBlockSnapshotFunctor::operator()):
(JSC::Heap::snapshotMarkedSpace):
(JSC::Heap::deleteSourceProviderCaches):
(JSC::Heap::notifyIncrementalSweeper):
(JSC::Heap::writeBarrierCurrentlyExecutingCodeBlocks):
(JSC::Heap::resetAllocators):
(JSC::Heap::updateAllocationLimits):
(JSC::Heap::didFinishCollection):
(JSC::Heap::resumeCompilerThreads):
(JSC::Zombify::visit):
(JSC::Heap::forEachCodeBlockImpl):
* heap/Heap.h:
(JSC::Heap::allocatorForObjectWithoutDestructor):
(JSC::Heap::allocatorForObjectWithDestructor):
(JSC::Heap::allocatorForAuxiliaryData):
(JSC::Heap::jitStubRoutines):
(JSC::Heap::codeBlockSet):
(JSC::Heap::storageAllocator): Deleted.
* heap/HeapCell.h:
(JSC::HeapCell::isZapped): Deleted.
* heap/HeapCellInlines.h: Added.
(JSC::HeapCell::isLargeAllocation):
(JSC::HeapCell::cellContainer):
(JSC::HeapCell::markedBlock):
(JSC::HeapCell::largeAllocation):
(JSC::HeapCell::heap):
(JSC::HeapCell::vm):
(JSC::HeapCell::cellSize):
(JSC::HeapCell::allocatorAttributes):
(JSC::HeapCell::destructionMode):
(JSC::HeapCell::cellKind):
* heap/HeapInlines.h:
(JSC::Heap::heap):
(JSC::Heap::isLive):
(JSC::Heap::isMarked):
(JSC::Heap::testAndSetMarked):
(JSC::Heap::setMarked):
(JSC::Heap::cellSize):
(JSC::Heap::forEachCodeBlock):
(JSC::Heap::allocateObjectOfType):
(JSC::Heap::subspaceForObjectOfType):
(JSC::Heap::allocatorForObjectOfType):
(JSC::Heap::allocateAuxiliary):
(JSC::Heap::tryAllocateAuxiliary):
(JSC::Heap::tryReallocateAuxiliary):
(JSC::Heap::isPointerGCObject): Deleted.
(JSC::Heap::isValueGCObject): Deleted.
* heap/HeapOperation.cpp: Added.
(WTF::printInternal):
* heap/HeapOperation.h:
* heap/HeapUtil.h: Added.
(JSC::HeapUtil::findGCObjectPointersForMarking):
(JSC::HeapUtil::isPointerGCObjectJSCell):
(JSC::HeapUtil::isValueGCObject):
* heap/IncrementalSweeper.cpp:
(JSC::IncrementalSweeper::sweepNextBlock):
* heap/IncrementalSweeper.h:
* heap/LargeAllocation.cpp: Added.
(JSC::LargeAllocation::tryCreate):
(JSC::LargeAllocation::LargeAllocation):
(JSC::LargeAllocation::lastChanceToFinalize):
(JSC::LargeAllocation::shrink):
(JSC::LargeAllocation::visitWeakSet):
(JSC::LargeAllocation::reapWeakSet):
(JSC::LargeAllocation::flip):
(JSC::LargeAllocation::isEmpty):
(JSC::LargeAllocation::sweep):
(JSC::LargeAllocation::destroy):
(JSC::LargeAllocation::dump):
* heap/LargeAllocation.h: Added.
(JSC::LargeAllocation::fromCell):
(JSC::LargeAllocation::cell):
(JSC::LargeAllocation::isLargeAllocation):
(JSC::LargeAllocation::heap):
(JSC::LargeAllocation::vm):
(JSC::LargeAllocation::weakSet):
(JSC::LargeAllocation::clearNewlyAllocated):
(JSC::LargeAllocation::isNewlyAllocated):
(JSC::LargeAllocation::isMarked):
(JSC::LargeAllocation::isMarkedOrNewlyAllocated):
(JSC::LargeAllocation::isLive):
(JSC::LargeAllocation::hasValidCell):
(JSC::LargeAllocation::cellSize):
(JSC::LargeAllocation::aboveLowerBound):
(JSC::LargeAllocation::belowUpperBound):
(JSC::LargeAllocation::contains):
(JSC::LargeAllocation::attributes):
(JSC::LargeAllocation::flipIfNecessary):
(JSC::LargeAllocation::flipIfNecessaryConcurrently):
(JSC::LargeAllocation::testAndSetMarked):
(JSC::LargeAllocation::setMarked):
(JSC::LargeAllocation::clearMarked):
(JSC::LargeAllocation::noteMarked):
(JSC::LargeAllocation::headerSize):
* heap/MarkedAllocator.cpp:
(JSC::MarkedAllocator::MarkedAllocator):
(JSC::MarkedAllocator::isPagedOut):
(JSC::MarkedAllocator::retire):
(JSC::MarkedAllocator::filterNextBlock):
(JSC::MarkedAllocator::setNextBlockToSweep):
(JSC::MarkedAllocator::tryAllocateWithoutCollectingImpl):
(JSC::MarkedAllocator::tryAllocateWithoutCollecting):
(JSC::MarkedAllocator::allocateSlowCase):
(JSC::MarkedAllocator::tryAllocateSlowCase):
(JSC::MarkedAllocator::allocateSlowCaseImpl):
(JSC::blockHeaderSize):
(JSC::MarkedAllocator::blockSizeForBytes):
(JSC::MarkedAllocator::tryAllocateBlock):
(JSC::MarkedAllocator::addBlock):
(JSC::MarkedAllocator::removeBlock):
(JSC::MarkedAllocator::stopAllocating):
(JSC::MarkedAllocator::reset):
(JSC::MarkedAllocator::lastChanceToFinalize):
(JSC::MarkedAllocator::setFreeList):
(JSC::isListPagedOut): Deleted.
(JSC::MarkedAllocator::tryAllocateHelper): Deleted.
(JSC::MarkedAllocator::tryPopFreeList): Deleted.
(JSC::MarkedAllocator::tryAllocate): Deleted.
(JSC::MarkedAllocator::allocateBlock): Deleted.
* heap/MarkedAllocator.h:
(JSC::MarkedAllocator::takeLastActiveBlock):
(JSC::MarkedAllocator::offsetOfFreeList):
(JSC::MarkedAllocator::offsetOfCellSize):
(JSC::MarkedAllocator::tryAllocate):
(JSC::MarkedAllocator::allocate):
(JSC::MarkedAllocator::forEachBlock):
(JSC::MarkedAllocator::offsetOfFreeListHead): Deleted.
(JSC::MarkedAllocator::MarkedAllocator): Deleted.
(JSC::MarkedAllocator::init): Deleted.
(JSC::MarkedAllocator::stopAllocating): Deleted.
* heap/MarkedBlock.cpp:
(JSC::MarkedBlock::tryCreate):
(JSC::MarkedBlock::Handle::Handle):
(JSC::MarkedBlock::Handle::~Handle):
(JSC::MarkedBlock::MarkedBlock):
(JSC::MarkedBlock::Handle::specializedSweep):
(JSC::MarkedBlock::Handle::sweep):
(JSC::MarkedBlock::Handle::sweepHelperSelectScribbleMode):
(JSC::MarkedBlock::Handle::sweepHelperSelectStateAndSweepMode):
(JSC::MarkedBlock::Handle::unsweepWithNoNewlyAllocated):
(JSC::SetNewlyAllocatedFunctor::SetNewlyAllocatedFunctor):
(JSC::SetNewlyAllocatedFunctor::operator()):
(JSC::MarkedBlock::Handle::stopAllocating):
(JSC::MarkedBlock::Handle::lastChanceToFinalize):
(JSC::MarkedBlock::Handle::resumeAllocating):
(JSC::MarkedBlock::Handle::zap):
(JSC::MarkedBlock::Handle::forEachFreeCell):
(JSC::MarkedBlock::flipIfNecessary):
(JSC::MarkedBlock::Handle::flipIfNecessary):
(JSC::MarkedBlock::flipIfNecessarySlow):
(JSC::MarkedBlock::flipIfNecessaryConcurrentlySlow):
(JSC::MarkedBlock::clearMarks):
(JSC::MarkedBlock::assertFlipped):
(JSC::MarkedBlock::needsFlip):
(JSC::MarkedBlock::Handle::needsFlip):
(JSC::MarkedBlock::Handle::willRemoveBlock):
(JSC::MarkedBlock::Handle::didConsumeFreeList):
(JSC::MarkedBlock::markCount):
(JSC::MarkedBlock::Handle::isEmpty):
(JSC::MarkedBlock::clearHasAnyMarked):
(JSC::MarkedBlock::noteMarkedSlow):
(WTF::printInternal):
(JSC::MarkedBlock::create): Deleted.
(JSC::MarkedBlock::destroy): Deleted.
(JSC::MarkedBlock::callDestructor): Deleted.
(JSC::MarkedBlock::specializedSweep): Deleted.
(JSC::MarkedBlock::sweep): Deleted.
(JSC::MarkedBlock::sweepHelper): Deleted.
(JSC::MarkedBlock::stopAllocating): Deleted.
(JSC::MarkedBlock::clearMarksWithCollectionType): Deleted.
(JSC::MarkedBlock::lastChanceToFinalize): Deleted.
(JSC::MarkedBlock::resumeAllocating): Deleted.
(JSC::MarkedBlock::didRetireBlock): Deleted.
* heap/MarkedBlock.h:
(JSC::MarkedBlock::VoidFunctor::returnValue):
(JSC::MarkedBlock::CountFunctor::CountFunctor):
(JSC::MarkedBlock::CountFunctor::count):
(JSC::MarkedBlock::CountFunctor::returnValue):
(JSC::MarkedBlock::Handle::hasAnyNewlyAllocated):
(JSC::MarkedBlock::Handle::isOnBlocksToSweep):
(JSC::MarkedBlock::Handle::setIsOnBlocksToSweep):
(JSC::MarkedBlock::Handle::state):
(JSC::MarkedBlock::needsDestruction):
(JSC::MarkedBlock::handle):
(JSC::MarkedBlock::Handle::block):
(JSC::MarkedBlock::firstAtom):
(JSC::MarkedBlock::atoms):
(JSC::MarkedBlock::isAtomAligned):
(JSC::MarkedBlock::Handle::cellAlign):
(JSC::MarkedBlock::blockFor):
(JSC::MarkedBlock::Handle::allocator):
(JSC::MarkedBlock::Handle::heap):
(JSC::MarkedBlock::Handle::vm):
(JSC::MarkedBlock::vm):
(JSC::MarkedBlock::Handle::weakSet):
(JSC::MarkedBlock::weakSet):
(JSC::MarkedBlock::Handle::shrink):
(JSC::MarkedBlock::Handle::visitWeakSet):
(JSC::MarkedBlock::Handle::reapWeakSet):
(JSC::MarkedBlock::Handle::cellSize):
(JSC::MarkedBlock::cellSize):
(JSC::MarkedBlock::Handle::attributes):
(JSC::MarkedBlock::attributes):
(JSC::MarkedBlock::Handle::needsDestruction):
(JSC::MarkedBlock::Handle::destruction):
(JSC::MarkedBlock::Handle::cellKind):
(JSC::MarkedBlock::Handle::markCount):
(JSC::MarkedBlock::Handle::size):
(JSC::MarkedBlock::atomNumber):
(JSC::MarkedBlock::flipIfNecessary):
(JSC::MarkedBlock::flipIfNecessaryConcurrently):
(JSC::MarkedBlock::Handle::flipIfNecessary):
(JSC::MarkedBlock::Handle::flipIfNecessaryConcurrently):
(JSC::MarkedBlock::Handle::flipForEdenCollection):
(JSC::MarkedBlock::assertFlipped):
(JSC::MarkedBlock::Handle::assertFlipped):
(JSC::MarkedBlock::isMarked):
(JSC::MarkedBlock::testAndSetMarked):
(JSC::MarkedBlock::Handle::isNewlyAllocated):
(JSC::MarkedBlock::Handle::setNewlyAllocated):
(JSC::MarkedBlock::Handle::clearNewlyAllocated):
(JSC::MarkedBlock::Handle::isMarkedOrNewlyAllocated):
(JSC::MarkedBlock::isMarkedOrNewlyAllocated):
(JSC::MarkedBlock::Handle::isLive):
(JSC::MarkedBlock::isAtom):
(JSC::MarkedBlock::Handle::isLiveCell):
(JSC::MarkedBlock::Handle::forEachCell):
(JSC::MarkedBlock::Handle::forEachLiveCell):
(JSC::MarkedBlock::Handle::forEachDeadCell):
(JSC::MarkedBlock::Handle::needsSweeping):
(JSC::MarkedBlock::Handle::isAllocated):
(JSC::MarkedBlock::Handle::isMarked):
(JSC::MarkedBlock::Handle::isFreeListed):
(JSC::MarkedBlock::hasAnyMarked):
(JSC::MarkedBlock::noteMarked):
(WTF::MarkedBlockHash::hash):
(JSC::MarkedBlock::FreeList::FreeList): Deleted.
(JSC::MarkedBlock::allocator): Deleted.
(JSC::MarkedBlock::heap): Deleted.
(JSC::MarkedBlock::shrink): Deleted.
(JSC::MarkedBlock::visitWeakSet): Deleted.
(JSC::MarkedBlock::reapWeakSet): Deleted.
(JSC::MarkedBlock::willRemoveBlock): Deleted.
(JSC::MarkedBlock::didConsumeFreeList): Deleted.
(JSC::MarkedBlock::markCount): Deleted.
(JSC::MarkedBlock::isEmpty): Deleted.
(JSC::MarkedBlock::destruction): Deleted.
(JSC::MarkedBlock::cellKind): Deleted.
(JSC::MarkedBlock::size): Deleted.
(JSC::MarkedBlock::capacity): Deleted.
(JSC::MarkedBlock::setMarked): Deleted.
(JSC::MarkedBlock::clearMarked): Deleted.
(JSC::MarkedBlock::isNewlyAllocated): Deleted.
(JSC::MarkedBlock::setNewlyAllocated): Deleted.
(JSC::MarkedBlock::clearNewlyAllocated): Deleted.
(JSC::MarkedBlock::isLive): Deleted.
(JSC::MarkedBlock::isLiveCell): Deleted.
(JSC::MarkedBlock::forEachCell): Deleted.
(JSC::MarkedBlock::forEachLiveCell): Deleted.
(JSC::MarkedBlock::forEachDeadCell): Deleted.
(JSC::MarkedBlock::needsSweeping): Deleted.
(JSC::MarkedBlock::isAllocated): Deleted.
(JSC::MarkedBlock::isMarkedOrRetired): Deleted.
* heap/MarkedSpace.cpp:
(JSC::MarkedSpace::initializeSizeClassForStepSize):
(JSC::MarkedSpace::MarkedSpace):
(JSC::MarkedSpace::~MarkedSpace):
(JSC::MarkedSpace::lastChanceToFinalize):
(JSC::MarkedSpace::allocate):
(JSC::MarkedSpace::tryAllocate):
(JSC::MarkedSpace::allocateLarge):
(JSC::MarkedSpace::tryAllocateLarge):
(JSC::MarkedSpace::sweep):
(JSC::MarkedSpace::sweepLargeAllocations):
(JSC::MarkedSpace::zombifySweep):
(JSC::MarkedSpace::resetAllocators):
(JSC::MarkedSpace::visitWeakSets):
(JSC::MarkedSpace::reapWeakSets):
(JSC::MarkedSpace::stopAllocating):
(JSC::MarkedSpace::prepareForMarking):
(JSC::MarkedSpace::resumeAllocating):
(JSC::MarkedSpace::isPagedOut):
(JSC::MarkedSpace::freeBlock):
(JSC::MarkedSpace::freeOrShrinkBlock):
(JSC::MarkedSpace::shrink):
(JSC::MarkedSpace::clearNewlyAllocated):
(JSC::VerifyMarked::operator()):
(JSC::MarkedSpace::flip):
(JSC::MarkedSpace::objectCount):
(JSC::MarkedSpace::size):
(JSC::MarkedSpace::capacity):
(JSC::MarkedSpace::addActiveWeakSet):
(JSC::MarkedSpace::didAddBlock):
(JSC::MarkedSpace::didAllocateInBlock):
(JSC::MarkedSpace::forEachAllocator): Deleted.
(JSC::VerifyMarkedOrRetired::operator()): Deleted.
(JSC::MarkedSpace::clearMarks): Deleted.
* heap/MarkedSpace.h:
(JSC::MarkedSpace::sizeClassToIndex):
(JSC::MarkedSpace::indexToSizeClass):
(JSC::MarkedSpace::version):
(JSC::MarkedSpace::blocksWithNewObjects):
(JSC::MarkedSpace::largeAllocations):
(JSC::MarkedSpace::largeAllocationsNurseryOffset):
(JSC::MarkedSpace::largeAllocationsOffsetForThisCollection):
(JSC::MarkedSpace::largeAllocationsForThisCollectionBegin):
(JSC::MarkedSpace::largeAllocationsForThisCollectionEnd):
(JSC::MarkedSpace::largeAllocationsForThisCollectionSize):
(JSC::MarkedSpace::forEachLiveCell):
(JSC::MarkedSpace::forEachDeadCell):
(JSC::MarkedSpace::allocatorFor):
(JSC::MarkedSpace::destructorAllocatorFor):
(JSC::MarkedSpace::auxiliaryAllocatorFor):
(JSC::MarkedSpace::allocateWithoutDestructor):
(JSC::MarkedSpace::allocateWithDestructor):
(JSC::MarkedSpace::allocateAuxiliary):
(JSC::MarkedSpace::tryAllocateAuxiliary):
(JSC::MarkedSpace::forEachBlock):
(JSC::MarkedSpace::forEachAllocator):
(JSC::MarkedSpace::optimalSizeFor):
(JSC::MarkedSpace::didAddBlock): Deleted.
(JSC::MarkedSpace::didAllocateInBlock): Deleted.
(JSC::MarkedSpace::objectCount): Deleted.
(JSC::MarkedSpace::size): Deleted.
(JSC::MarkedSpace::capacity): Deleted.
* heap/SlotVisitor.cpp:
(JSC::SlotVisitor::SlotVisitor):
(JSC::SlotVisitor::didStartMarking):
(JSC::SlotVisitor::reset):
(JSC::SlotVisitor::append):
(JSC::SlotVisitor::appendJSCellOrAuxiliary):
(JSC::SlotVisitor::setMarkedAndAppendToMarkStack):
(JSC::SlotVisitor::appendToMarkStack):
(JSC::SlotVisitor::markAuxiliary):
(JSC::SlotVisitor::noteLiveAuxiliaryCell):
(JSC::SlotVisitor::visitChildren):
* heap/SlotVisitor.h:
* heap/WeakBlock.cpp:
(JSC::WeakBlock::create):
(JSC::WeakBlock::WeakBlock):
(JSC::WeakBlock::visit):
(JSC::WeakBlock::reap):
* heap/WeakBlock.h:
(JSC::WeakBlock::disconnectContainer):
(JSC::WeakBlock::disconnectMarkedBlock): Deleted.
* heap/WeakSet.cpp:
(JSC::WeakSet::~WeakSet):
(JSC::WeakSet::sweep):
(JSC::WeakSet::shrink):
(JSC::WeakSet::addAllocator):
* heap/WeakSet.h:
(JSC::WeakSet::container):
(JSC::WeakSet::setContainer):
(JSC::WeakSet::WeakSet):
(JSC::WeakSet::visit):
(JSC::WeakSet::shrink): Deleted.
* heap/WeakSetInlines.h:
(JSC::WeakSet::allocate):
* inspector/InjectedScriptManager.cpp:
* inspector/JSGlobalObjectInspectorController.cpp:
* inspector/JSJavaScriptCallFrame.cpp:
* inspector/ScriptDebugServer.cpp:
* inspector/agents/InspectorDebuggerAgent.cpp:
* interpreter/CachedCall.h:
(JSC::CachedCall::CachedCall):
* interpreter/Interpreter.cpp:
(JSC::loadVarargs):
(JSC::StackFrame::sourceID): Deleted.
(JSC::StackFrame::sourceURL): Deleted.
(JSC::StackFrame::functionName): Deleted.
(JSC::StackFrame::computeLineAndColumn): Deleted.
(JSC::StackFrame::toString): Deleted.
* interpreter/Interpreter.h:
(JSC::StackFrame::isNative): Deleted.
* jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::emitAllocateWithNonNullAllocator):
(JSC::AssemblyHelpers::emitAllocate):
(JSC::AssemblyHelpers::emitAllocateJSCell):
(JSC::AssemblyHelpers::emitAllocateJSObject):
(JSC::AssemblyHelpers::emitAllocateJSObjectWithKnownSize):
(JSC::AssemblyHelpers::emitAllocateVariableSized):
* jit/GCAwareJITStubRoutine.cpp:
(JSC::GCAwareJITStubRoutine::GCAwareJITStubRoutine):
* jit/JIT.cpp:
(JSC::JIT::compileCTINativeCall):
(JSC::JIT::link):
* jit/JIT.h:
(JSC::JIT::compileCTINativeCall): Deleted.
* jit/JITExceptions.cpp:
(JSC::genericUnwind):
* jit/JITExceptions.h:
* jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_new_object):
(JSC::JIT::emitSlow_op_new_object):
(JSC::JIT::emit_op_create_this):
(JSC::JIT::emitSlow_op_create_this):
* jit/JITOpcodes32_64.cpp:
(JSC::JIT::emit_op_new_object):
(JSC::JIT::emitSlow_op_new_object):
(JSC::JIT::emit_op_create_this):
(JSC::JIT::emitSlow_op_create_this):
* jit/JITOperations.cpp:
* jit/JITOperations.h:
* jit/JITPropertyAccess.cpp:
(JSC::JIT::emitWriteBarrier):
* jit/JITThunks.cpp:
* jit/JITThunks.h:
* jsc.cpp:
(functionDescribeArray):
(main):
* llint/LLIntData.cpp:
(JSC::LLInt::Data::performAssertions):
* llint/LLIntExceptions.cpp:
* llint/LLIntThunks.cpp:
* llint/LLIntThunks.h:
* llint/LowLevelInterpreter.asm:
* llint/LowLevelInterpreter.cpp:
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* parser/ModuleAnalyzer.cpp:
* parser/NodeConstructors.h:
* parser/Nodes.h:
* profiler/ProfilerBytecode.cpp:
* profiler/ProfilerBytecode.h:
* profiler/ProfilerBytecodeSequence.cpp:
* runtime/ArrayConventions.h:
(JSC::indexingHeaderForArrayStorage):
(JSC::baseIndexingHeaderForArrayStorage):
(JSC::indexingHeaderForArray): Deleted.
(JSC::baseIndexingHeaderForArray): Deleted.
* runtime/ArrayPrototype.cpp:
(JSC::arrayProtoFuncSplice):
(JSC::concatAppendOne):
(JSC::arrayProtoPrivateFuncConcatMemcpy):
* runtime/ArrayStorage.h:
(JSC::ArrayStorage::vectorLength):
(JSC::ArrayStorage::totalSizeFor):
(JSC::ArrayStorage::totalSize):
(JSC::ArrayStorage::availableVectorLength):
(JSC::ArrayStorage::optimalVectorLength):
(JSC::ArrayStorage::sizeFor): Deleted.
* runtime/AuxiliaryBarrier.h: Added.
(JSC::AuxiliaryBarrier::AuxiliaryBarrier):
(JSC::AuxiliaryBarrier::clear):
(JSC::AuxiliaryBarrier::get):
(JSC::AuxiliaryBarrier::slot):
(JSC::AuxiliaryBarrier::operator bool):
(JSC::AuxiliaryBarrier::setWithoutBarrier):
* runtime/AuxiliaryBarrierInlines.h: Added.
(JSC::AuxiliaryBarrier<T>::AuxiliaryBarrier):
(JSC::AuxiliaryBarrier<T>::set):
* runtime/Butterfly.h:
* runtime/ButterflyInlines.h:
(JSC::Butterfly::availableContiguousVectorLength):
(JSC::Butterfly::optimalContiguousVectorLength):
(JSC::Butterfly::createUninitialized):
(JSC::Butterfly::growArrayRight):
* runtime/ClonedArguments.cpp:
(JSC::ClonedArguments::createEmpty):
* runtime/CommonSlowPathsExceptions.cpp:
* runtime/CommonSlowPathsExceptions.h:
* runtime/DataView.cpp:
* runtime/DirectArguments.h:
* runtime/ECMAScriptSpecInternalFunctions.cpp:
* runtime/Error.cpp:
* runtime/Error.h:
* runtime/ErrorInstance.cpp:
* runtime/ErrorInstance.h:
* runtime/Exception.cpp:
* runtime/Exception.h:
* runtime/GeneratorFrame.cpp:
* runtime/GeneratorPrototype.cpp:
* runtime/InternalFunction.cpp:
(JSC::InternalFunction::InternalFunction):
* runtime/IntlCollator.cpp:
* runtime/IntlCollatorConstructor.cpp:
* runtime/IntlCollatorPrototype.cpp:
* runtime/IntlDateTimeFormat.cpp:
* runtime/IntlDateTimeFormatConstructor.cpp:
* runtime/IntlDateTimeFormatPrototype.cpp:
* runtime/IntlNumberFormat.cpp:
* runtime/IntlNumberFormatConstructor.cpp:
* runtime/IntlNumberFormatPrototype.cpp:
* runtime/IntlObject.cpp:
* runtime/IteratorPrototype.cpp:
* runtime/JSArray.cpp:
(JSC::JSArray::tryCreateUninitialized):
(JSC::JSArray::setLengthWritable):
(JSC::JSArray::unshiftCountSlowCase):
(JSC::JSArray::setLengthWithArrayStorage):
(JSC::JSArray::appendMemcpy):
(JSC::JSArray::setLength):
(JSC::JSArray::pop):
(JSC::JSArray::push):
(JSC::JSArray::fastSlice):
(JSC::JSArray::shiftCountWithArrayStorage):
(JSC::JSArray::shiftCountWithAnyIndexingType):
(JSC::JSArray::unshiftCountWithArrayStorage):
(JSC::JSArray::fillArgList):
(JSC::JSArray::copyToArguments):
* runtime/JSArray.h:
(JSC::createContiguousArrayButterfly):
(JSC::createArrayButterfly):
(JSC::JSArray::create):
(JSC::JSArray::tryCreateUninitialized): Deleted.
* runtime/JSArrayBufferView.h:
* runtime/JSCInlines.h:
* runtime/JSCJSValue.cpp:
(JSC::JSValue::dumpInContextAssumingStructure):
* runtime/JSCallee.cpp:
(JSC::JSCallee::JSCallee):
* runtime/JSCell.cpp:
(JSC::JSCell::estimatedSize):
* runtime/JSCell.h:
(JSC::JSCell::cellStateOffset): Deleted.
* runtime/JSCellInlines.h:
(JSC::ExecState::vm):
(JSC::JSCell::classInfo):
(JSC::JSCell::callDestructor):
(JSC::JSCell::vm): Deleted.
* runtime/JSFunction.cpp:
(JSC::JSFunction::create):
(JSC::JSFunction::allocateAndInitializeRareData):
(JSC::JSFunction::initializeRareData):
(JSC::JSFunction::getOwnPropertySlot):
(JSC::JSFunction::put):
(JSC::JSFunction::deleteProperty):
(JSC::JSFunction::defineOwnProperty):
(JSC::JSFunction::setFunctionName):
(JSC::JSFunction::reifyLength):
(JSC::JSFunction::reifyName):
(JSC::JSFunction::reifyLazyPropertyIfNeeded):
(JSC::JSFunction::reifyBoundNameIfNeeded):
* runtime/JSFunction.h:
* runtime/JSFunctionInlines.h:
(JSC::JSFunction::createWithInvalidatedReallocationWatchpoint):
(JSC::JSFunction::JSFunction):
* runtime/JSGenericTypedArrayViewInlines.h:
(JSC::JSGenericTypedArrayView<Adaptor>::slowDownAndWasteMemory):
* runtime/JSInternalPromise.cpp:
* runtime/JSInternalPromiseConstructor.cpp:
* runtime/JSInternalPromiseDeferred.cpp:
* runtime/JSInternalPromisePrototype.cpp:
* runtime/JSJob.cpp:
* runtime/JSMapIterator.cpp:
* runtime/JSModuleNamespaceObject.cpp:
* runtime/JSModuleRecord.cpp:
* runtime/JSObject.cpp:
(JSC::JSObject::visitButterfly):
(JSC::JSObject::notifyPresenceOfIndexedAccessors):
(JSC::JSObject::createInitialIndexedStorage):
(JSC::JSObject::createInitialUndecided):
(JSC::JSObject::createInitialInt32):
(JSC::JSObject::createInitialDouble):
(JSC::JSObject::createInitialContiguous):
(JSC::JSObject::createArrayStorage):
(JSC::JSObject::createInitialArrayStorage):
(JSC::JSObject::convertUndecidedToInt32):
(JSC::JSObject::convertUndecidedToContiguous):
(JSC::JSObject::convertUndecidedToArrayStorage):
(JSC::JSObject::convertInt32ToDouble):
(JSC::JSObject::convertInt32ToArrayStorage):
(JSC::JSObject::convertDoubleToArrayStorage):
(JSC::JSObject::convertContiguousToArrayStorage):
(JSC::JSObject::putByIndexBeyondVectorLength):
(JSC::JSObject::putDirectIndexBeyondVectorLength):
(JSC::JSObject::getNewVectorLength):
(JSC::JSObject::increaseVectorLength):
(JSC::JSObject::ensureLengthSlow):
(JSC::JSObject::growOutOfLineStorage):
(JSC::JSObject::copyButterfly): Deleted.
(JSC::JSObject::copyBackingStore): Deleted.
* runtime/JSObject.h:
(JSC::JSObject::globalObject):
(JSC::JSObject::putDirectInternal):
(JSC::JSObject::setStructureAndReallocateStorageIfNecessary): Deleted.
* runtime/JSObjectInlines.h:
* runtime/JSPromise.cpp:
* runtime/JSPromiseConstructor.cpp:
* runtime/JSPromiseDeferred.cpp:
* runtime/JSPromisePrototype.cpp:
* runtime/JSPropertyNameIterator.cpp:
* runtime/JSScope.cpp:
(JSC::JSScope::resolve):
* runtime/JSScope.h:
(JSC::JSScope::globalObject):
(JSC::JSScope::vm): Deleted.
* runtime/JSSetIterator.cpp:
* runtime/JSStringIterator.cpp:
* runtime/JSTemplateRegistryKey.cpp:
* runtime/JSTypedArrayViewConstructor.cpp:
* runtime/JSTypedArrayViewPrototype.cpp:
* runtime/JSWeakMap.cpp:
* runtime/JSWeakSet.cpp:
* runtime/MapConstructor.cpp:
* runtime/MapIteratorPrototype.cpp:
* runtime/MapPrototype.cpp:
* runtime/NativeErrorConstructor.cpp:
* runtime/NativeStdFunctionCell.cpp:
* runtime/Operations.h:
(JSC::scribbleFreeCells):
(JSC::scribble):
* runtime/Options.h:
* runtime/PropertyTable.cpp:
* runtime/ProxyConstructor.cpp:
* runtime/ProxyObject.cpp:
* runtime/ProxyRevoke.cpp:
* runtime/RegExp.cpp:
(JSC::RegExp::match):
(JSC::RegExp::matchConcurrently):
(JSC::RegExp::matchCompareWithInterpreter):
* runtime/RegExp.h:
* runtime/RegExpConstructor.h:
* runtime/RegExpInlines.h:
(JSC::RegExp::matchInline):
* runtime/RegExpMatchesArray.h:
(JSC::tryCreateUninitializedRegExpMatchesArray):
(JSC::createRegExpMatchesArray):
* runtime/RegExpPrototype.cpp:
(JSC::genericSplit):
* runtime/RuntimeType.cpp:
* runtime/SamplingProfiler.cpp:
(JSC::SamplingProfiler::processUnverifiedStackTraces):
* runtime/SetConstructor.cpp:
* runtime/SetIteratorPrototype.cpp:
* runtime/SetPrototype.cpp:
* runtime/StackFrame.cpp: Added.
(JSC::StackFrame::sourceID):
(JSC::StackFrame::sourceURL):
(JSC::StackFrame::functionName):
(JSC::StackFrame::computeLineAndColumn):
(JSC::StackFrame::toString):
* runtime/StackFrame.h: Added.
(JSC::StackFrame::isNative):
* runtime/StringConstructor.cpp:
* runtime/StringIteratorPrototype.cpp:
* runtime/StructureInlines.h:
(JSC::Structure::propertyTable):
* runtime/TemplateRegistry.cpp:
* runtime/TestRunnerUtils.cpp:
(JSC::finalizeStatsAtEndOfTesting):
* runtime/TestRunnerUtils.h:
* runtime/TypeProfilerLog.cpp:
* runtime/TypeSet.cpp:
* runtime/VM.cpp:
(JSC::VM::VM):
(JSC::VM::ensureStackCapacityForCLoop):
(JSC::VM::isSafeToRecurseSoftCLoop):
* runtime/VM.h:
* runtime/VMEntryScope.h:
* runtime/VMInlines.h:
(JSC::VM::ensureStackCapacityFor):
(JSC::VM::isSafeToRecurseSoft):
* runtime/WeakMapConstructor.cpp:
* runtime/WeakMapData.cpp:
* runtime/WeakMapPrototype.cpp:
* runtime/WeakSetConstructor.cpp:
* runtime/WeakSetPrototype.cpp:
* testRegExp.cpp:
(testOneRegExp):
* tools/JSDollarVM.cpp:
* tools/JSDollarVMPrototype.cpp:
(JSC::JSDollarVMPrototype::isInObjectSpace):

Source/WebCore:

No new tests because no new WebCore behavior.

Just rewiring #includes.

* ForwardingHeaders/heap/HeapInlines.h: Added.
* ForwardingHeaders/interpreter/Interpreter.h: Removed.
* ForwardingHeaders/runtime/AuxiliaryBarrierInlines.h: Added.
* Modules/indexeddb/IDBCursorWithValue.cpp:
* Modules/indexeddb/client/TransactionOperation.cpp:
* Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
* bindings/js/JSApplePayPaymentAuthorizedEventCustom.cpp:
* bindings/js/JSApplePayPaymentMethodSelectedEventCustom.cpp:
* bindings/js/JSApplePayShippingContactSelectedEventCustom.cpp:
* bindings/js/JSApplePayShippingMethodSelectedEventCustom.cpp:
* bindings/js/JSClientRectCustom.cpp:
* bindings/js/JSDOMBinding.cpp:
* bindings/js/JSDOMBinding.h:
* bindings/js/JSDeviceMotionEventCustom.cpp:
* bindings/js/JSDeviceOrientationEventCustom.cpp:
* bindings/js/JSErrorEventCustom.cpp:
* bindings/js/JSIDBCursorWithValueCustom.cpp:
* bindings/js/JSIDBIndexCustom.cpp:
* bindings/js/JSPopStateEventCustom.cpp:
* bindings/js/JSWebGL2RenderingContextCustom.cpp:
* bindings/js/JSWorkerGlobalScopeCustom.cpp:
* bindings/js/WorkerScriptController.cpp:
* contentextensions/ContentExtensionParser.cpp:
* dom/ErrorEvent.cpp:
* html/HTMLCanvasElement.cpp:
* html/MediaDocument.cpp:
* inspector/CommandLineAPIModule.cpp:
* loader/EmptyClients.cpp:
* page/CaptionUserPreferences.cpp:
* page/Frame.cpp:
* page/PageGroup.cpp:
* page/UserContentController.cpp:
* platform/mock/mediasource/MockBox.cpp:
* testing/GCObservation.cpp:

Source/WebKit2:

Just rewiring some #includes.

* UIProcess/ViewGestureController.cpp:
* UIProcess/WebPageProxy.cpp:
* UIProcess/WebProcessPool.cpp:
* UIProcess/WebProcessProxy.cpp:
* WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
* WebProcess/Plugins/Netscape/JSNPObject.cpp:

Source/WTF:

I needed tryFastAlignedMalloc() so I added it.

* wtf/FastMalloc.cpp:
(WTF::tryFastAlignedMalloc):
* wtf/FastMalloc.h:
* wtf/ParkingLot.cpp:
(WTF::ParkingLot::forEachImpl):
(WTF::ParkingLot::forEach): Deleted.
* wtf/ParkingLot.h:
(WTF::ParkingLot::parkConditionally):
(WTF::ParkingLot::unparkOne):
(WTF::ParkingLot::forEach):
* wtf/ScopedLambda.h:
(WTF::scopedLambdaRef):
* wtf/SentinelLinkedList.h:
(WTF::SentinelLinkedList::forEach):
(WTF::RawNode>::takeFrom):
* wtf/SimpleStats.h:
(WTF::SimpleStats::operator bool):
(WTF::SimpleStats::operator!): Deleted.

Tools:

* DumpRenderTree/TestRunner.cpp:
* DumpRenderTree/mac/DumpRenderTree.mm:
(DumpRenderTreeMain):
* Scripts/run-jsc-stress-tests:
* TestWebKitAPI/Tests/WTF/Vector.cpp:
(TestWebKitAPI::TEST):


  Commit: 1600f616df80fc10c964bbc9a8bf5d98bd741262
      https://github.com/WebKit/WebKit/commit/1600f616df80fc10c964bbc9a8bf5d98bd741262
  Author: Filip Pizlo <fpizlo at apple.com>
  Date:   2016-09-09 (Fri, 09 Sep 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/heap/HeapInlines.h

  Log Message:
  -----------
  Merge r205466 - Heap::isMarked() should use concurrent lazy flipping
https://bugs.webkit.org/show_bug.cgi?id=161613

Reviewed by Michael Catanzaro.

I found out about this race condition via
https://bugs.webkit.org/show_bug.cgi?id=160125#c233.

The problem is that we use isMarked, and maybe even isLive, inside the concurrent mark
phase. So, they need to lazy-flip in a non-racy way.

* heap/HeapInlines.h:
(JSC::Heap::isLive):
(JSC::Heap::isMarked):


  Commit: 98452965a4eeed543cbcef4a68e82481065670ea
      https://github.com/WebKit/WebKit/commit/98452965a4eeed543cbcef4a68e82481065670ea
  Author: Emanuele Aina <emanuele.aina at collabora.com>
  Date:   2016-09-09 (Fri, 09 Sep 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/ChildProcessProxy.cpp
    M Source/WebKit2/UIProcess/Launcher/ProcessLauncher.h
    M Source/WebKit2/UIProcess/Launcher/efl/ProcessLauncherEfl.cpp
    M Source/WebKit2/UIProcess/Launcher/gtk/ProcessLauncherGtk.cpp

  Log Message:
  -----------
  Merge r205474 - [GTK][EFL] Make *_PROCESS_CMD_PREFIX conditional on DEVELOPER_MODE
https://bugs.webkit.org/show_bug.cgi?id=161621

Patch by Emanuele Aina <emanuele.aina at collabora.com> on 2016-09-06
Reviewed by Carlos Garcia Campos.

Instead of enabling support for the *_PROCESS_CMD_PREFIX set of
environment valiables (eg. WEB_PROCESS_CMD_PREFIX) on debug builds
only, enable it when DEVELOPER_MODE is enabled as it already guards
similar features (eg. WEBKIT_EXEC_PATH).

* UIProcess/ChildProcessProxy.cpp:
(WebKit::ChildProcessProxy::getLaunchOptions):
* UIProcess/Launcher/ProcessLauncher.h:
* UIProcess/Launcher/efl/ProcessLauncherEfl.cpp:
(WebKit::ProcessLauncher::launchProcess):
* UIProcess/Launcher/gtk/ProcessLauncherGtk.cpp:
(WebKit::ProcessLauncher::launchProcess):


  Commit: 943abfed059e61a2aa458be712bdb12f70a04fb4
      https://github.com/WebKit/WebKit/commit/943abfed059e61a2aa458be712bdb12f70a04fb4
  Author: Emanuele Aina <emanuele.aina at collabora.com>
  Date:   2016-09-09 (Fri, 09 Sep 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp

  Log Message:
  -----------
  Merge r205475 - [GTK] glImageTargetTexture2D() is a GL function, rename accordingly
https://bugs.webkit.org/show_bug.cgi?id=161622

Patch by Emanuele Aina <emanuele.aina at collabora.com> on 2016-09-06
Reviewed by Carlos Garcia Campos.

glImageTargetTexture2D() is a GL function, not EGL, using the 'egl'
prefix is misleading.

* UIProcess/gtk/WaylandCompositor.cpp:
(WebKit::WaylandCompositor::Surface::prepareTextureForPainting):
(WebKit::WaylandCompositor::initializeEGL):


  Commit: 88d6b187bbb4bdd7dc025d22ffd752dccf2bef6a
      https://github.com/WebKit/WebKit/commit/88d6b187bbb4bdd7dc025d22ffd752dccf2bef6a
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-09-09 (Fri, 09 Sep 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/block/positioning/assert-when-positioned-descendant-is-not-getting-laid-out-expected.txt
    A LayoutTests/fast/block/positioning/assert-when-positioned-descendant-is-not-getting-laid-out.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/RenderBlock.cpp

  Log Message:
  -----------
  Merge r205479 - ASSERTION FAILED: !currBox->needsLayout() in WebCore::RenderBlock::checkPositionedObjectsNeedLayout
https://bugs.webkit.org/show_bug.cgi?id=120291
<rdar://problem/27683456>

Reviewed by David Hyatt.

Source/WebCore:

This patch ensures that we always set the 'positioned child needs layout' bit on the containing block
when a new positioned descendant gets inserted. It fixes cases for simplified layout when
we ended up not laying out the descendant element.

Test: fast/block/positioning/assert-when-positioned-descendant-is-not-getting-laid-out.html

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::insertPositionedObject):

LayoutTests:

* fast/block/positioning/assert-when-positioned-descendant-is-not-getting-laid-out-expected.txt: Added.
* fast/block/positioning/assert-when-positioned-descendant-is-not-getting-laid-out.html: Added.


  Commit: 2d92385051080da4829564dbf10339ec26d874f9
      https://github.com/WebKit/WebKit/commit/2d92385051080da4829564dbf10339ec26d874f9
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-09-09 (Fri, 09 Sep 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp

  Log Message:
  -----------
  Merge r205484 - [Threaded Compositor] Update timer should have lower priority than tasks scheduled in compositing thread
https://bugs.webkit.org/show_bug.cgi?id=161625

Reviewed by Sergio Villar Senin.

This way, if a resize is scheduled, for example, and there are pending updates, the resize will happen first,
and then the updates will happen at the right size.

* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
(WebKit::CompositingRunLoop::CompositingRunLoop): Use G_PRIORITY_HIGH_IDLE as update timer priority. The actual
priority doesn't really matter as long as it's lower than G_PRIORITY_DEFAULT, because there are only two
possible sources in the compositing run loop, one for the tasks scheduled, and another one for the update timer.


  Commit: f6d8021b77d4b1dbec03203368034bd0e8d3bbdc
      https://github.com/WebKit/WebKit/commit/f6d8021b77d4b1dbec03203368034bd0e8d3bbdc
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-09-09 (Fri, 09 Sep 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/Plugins/gtk/PluginInfoCache.cpp

  Log Message:
  -----------
  Merge r205485 - [GTK][Wayland] evince-browser-plugin prevents viewing PDFs
https://bugs.webkit.org/show_bug.cgi?id=158697

Reviewed by Michael Catanzaro.

Use a different cache file for plugins depending on the current platform display. Plugins can claim to work on
X11 but not on Wayland, for example, if they need XEmebed to work. That's the case of the evince browser plugin.

* UIProcess/Plugins/gtk/PluginInfoCache.cpp:
(WebKit::cacheFilenameForCurrentDisplay):
(WebKit::PluginInfoCache::PluginInfoCache):


  Commit: 27ed26608f40cf8299e60e0970b28b5623c2c01e
      https://github.com/WebKit/WebKit/commit/27ed26608f40cf8299e60e0970b28b5623c2c01e
  Author: Daniel Bates <dbates at webkit.org>
  Date:   2016-09-09 (Fri, 09 Sep 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/block/align-overflow-child-expected.txt
    A LayoutTests/fast/block/align-overflow-child.html
    M LayoutTests/platform/efl/tables/mozilla_expected_failures/marvin/table_overflow_td_align_right-expected.txt
    M LayoutTests/platform/gtk/tables/mozilla_expected_failures/marvin/table_overflow_td_align_right-expected.txt
    M LayoutTests/platform/ios-simulator/tables/mozilla_expected_failures/marvin/table_overflow_td_align_right-expected.txt
    M LayoutTests/platform/mac/tables/mozilla_expected_failures/marvin/table_overflow_td_align_right-expected.txt
    M LayoutTests/platform/win/tables/mozilla_expected_failures/marvin/table_overflow_td_align_right-expected.txt
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/RenderBox.cpp

  Log Message:
  -----------
  Merge r205489 - <table> inside <div align="right"> with large content inside = no scrollbar
https://bugs.webkit.org/show_bug.cgi?id=3352

Reviewed by Brent Fulgham.

Source/WebCore:

Respect "right" text-alignment only if the width of the child does not overflow the
width of its containing block. This makes our margin computation more closely conform
to section "Block-level, non-replaced elements in normal flow" of the CSS 2.1
spec., <http://www.w3.org/TR/CSS21/>, and to the behavior observed in Firefox, Chrome,
IE version 9 or later and Microsoft Edge.

Test: fast/block/align-overflow-child.html

* rendering/RenderBox.cpp:
(WebCore::RenderBox::computeInlineDirectionMargins):

LayoutTests:

Add a new test that is derived from the test LayoutTests/fast/block/align-bigger-child.html included
in <https://src.chromium.org/viewvc/blink?revision=187157&view=revision>.

Also update expected results of existing tests.

* fast/block/align-overflow-child-expected.txt: Added.
* fast/block/align-overflow-child.html: Added.
* platform/efl/tables/mozilla_expected_failures/marvin/table_overflow_td_align_right-expected.txt:
* platform/gtk/tables/mozilla_expected_failures/marvin/table_overflow_td_align_right-expected.txt:
* platform/ios-simulator/tables/mozilla_expected_failures/marvin/table_overflow_td_align_right-expected.txt:
* platform/mac/tables/mozilla_expected_failures/marvin/table_overflow_td_align_right-expected.txt:
* platform/win/tables/mozilla_expected_failures/marvin/table_overflow_td_align_right-expected.txt:


  Commit: 3a1281049eb26e22df13fcbbca33f690c3010574
      https://github.com/WebKit/WebKit/commit/3a1281049eb26e22df13fcbbca33f690c3010574
  Author: Simon Fraser <simon.fraser at apple.com>
  Date:   2016-09-09 (Fri, 09 Sep 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/WebProcess/WebPage/WebPage.cpp

  Log Message:
  -----------
  Merge r205498 - Use TemporaryChange<> to maintain m_userIsInteracting
https://bugs.webkit.org/show_bug.cgi?id=161497

Reviewed by Tim Horton.

Replace some error-prone manual set/clear of m_userIsInteracting with
TemporaryChange<>.

No behavior change.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::mouseEvent):
(WebKit::WebPage::keyEvent):
(WebKit::WebPage::dispatchTouchEvent):


  Commit: 390373bb902f692baf15c6b04a2e5be02e3ea2ee
      https://github.com/WebKit/WebKit/commit/390373bb902f692baf15c6b04a2e5be02e3ea2ee
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-09-09 (Fri, 09 Sep 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/layers/assert-on-overlap-testing-with-frames-inside-columns-expected.txt
    A LayoutTests/fast/layers/assert-on-overlap-testing-with-frames-inside-columns.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/RenderWidget.cpp

  Log Message:
  -----------
  Merge r205510 - ASSERTION FAILED: !paintInfo.overlapTestRequests->contains(this) in WebCore::RenderWidget::paintContents
https://bugs.webkit.org/show_bug.cgi?id=135602
<rdar://problem/27701733>

Reviewed by Simon Fraser.

Source/WebCore:

ASSERT is updated to support multiple fragments painting. We just have to ensure that the FrameView's rect
has not changed between the 2 paintContents calls.

Test: fast/layers/assert-on-overlap-testing-with-frames-inside-columns.html

* rendering/RenderWidget.cpp:
(WebCore::RenderWidget::paintContents):

LayoutTests:

* fast/layers/assert-on-overlap-testing-with-frames-inside-columns-expected.txt: Added.
* fast/layers/assert-on-overlap-testing-with-frames-inside-columns.html: Added.


  Commit: 2ef4f5f08ada2bc5c1782a1316fe205e8a576b40
      https://github.com/WebKit/WebKit/commit/2ef4f5f08ada2bc5c1782a1316fe205e8a576b40
  Author: Benjamin Poulain <bpoulain at apple.com>
  Date:   2016-09-09 (Fri, 09 Sep 2016)

  Changed paths:
    M JSTests/ChangeLog
    A JSTests/stress/arith-clz32-on-various-types.js
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h
    M Source/JavaScriptCore/dfg/DFGClobberize.h
    M Source/JavaScriptCore/dfg/DFGFixupPhase.cpp
    M Source/JavaScriptCore/dfg/DFGNodeType.h
    M Source/JavaScriptCore/dfg/DFGOperations.cpp
    M Source/JavaScriptCore/dfg/DFGOperations.h
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h
    M Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp

  Log Message:
  -----------
  Merge r205511 - [JSC] Make ArithClz32 work with Cell arguments
https://bugs.webkit.org/show_bug.cgi?id=161369

Patch by Benjamin Poulain <bpoulain at apple.com> on 2016-09-06
Reviewed by Geoffrey Garen.

JSTests:

* stress/arith-clz32-on-various-types.js: Added.

Source/JavaScriptCore:

ArithClz32 was already working with all primitive types
thanks to the magic of ValueToInt32.
This patch adds support for cell arguments through a function
call.

* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
* dfg/DFGNodeType.h:
* dfg/DFGOperations.cpp:
* dfg/DFGOperations.h:
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileArithClz32):
* dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::callOperation):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileArithClz32):


  Commit: 9f9f3d405613f077402192c45ff49215123ae4a7
      https://github.com/WebKit/WebKit/commit/9f9f3d405613f077402192c45ff49215123ae4a7
  Author: Myles C. Maxfield <mmaxfield at apple.com>
  Date:   2016-09-09 (Fri, 09 Sep 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    M LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-line-through-mispositioned-expected.html
    A LayoutTests/fast/text/strikethrough-int-expected-mismatch.html
    A LayoutTests/fast/text/strikethrough-int.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/InlineTextBox.cpp
    M Source/WebCore/rendering/TextDecorationPainter.h

  Log Message:
  -----------
  Merge r205519 - Strikethrough positions are erroneously snapped twice
https://bugs.webkit.org/show_bug.cgi?id=161647
<rdar://problem/11542470>

Reviewed by Zalan Bujtas.

Source/WebCore:

Because we're using an int for the position of the baseline, the math to calculate the
strikethrough position is snapped. Then, we snap it again inside GraphicsContext.

Test: fast/text/strikethrough-int.html

* rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::paintDecoration):
* rendering/TextDecorationPainter.h:
(WebCore::TextDecorationPainter::setBaseline):

LayoutTests:

* fast/css3-text/css3-text-decoration/text-decoration-line-through-mispositioned-expected.html: Updated.
* fast/text/strikethrough-int-expected-mismatch.html: Added.
* fast/text/strikethrough-int.html: Added.


  Commit: e4839f9e23ad999e6c25ef2f2906a3563f8e65a4
      https://github.com/WebKit/WebKit/commit/e4839f9e23ad999e6c25ef2f2906a3563f8e65a4
  Author: Saam Barati <sbarati at apple.com>
  Date:   2016-09-09 (Fri, 09 Sep 2016)

  Changed paths:
    M JSTests/ChangeLog
    A JSTests/microbenchmarks/dense-set.js
    A JSTests/microbenchmarks/large-map-iteration-with-additions.js
    A JSTests/microbenchmarks/large-map-iteration-with-mutation.js
    A JSTests/microbenchmarks/large-map-iteration.js
    A JSTests/microbenchmarks/map-get-get-cse.js
    A JSTests/microbenchmarks/map-has-get-cse-opportunity.js
    A JSTests/microbenchmarks/sparse-set.js
    A JSTests/stress/map-cse-correctness.js
    A JSTests/stress/map-iteration.js
    M Source/JavaScriptCore/CMakeLists.txt
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
    M Source/JavaScriptCore/assembler/MacroAssemblerARM64.h
    M Source/JavaScriptCore/bytecode/SpeculatedType.cpp
    M Source/JavaScriptCore/bytecode/SpeculatedType.h
    M Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h
    M Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp
    M Source/JavaScriptCore/dfg/DFGClobberize.h
    M Source/JavaScriptCore/dfg/DFGDoesGC.cpp
    M Source/JavaScriptCore/dfg/DFGEdge.h
    M Source/JavaScriptCore/dfg/DFGFixupPhase.cpp
    M Source/JavaScriptCore/dfg/DFGHeapLocation.cpp
    M Source/JavaScriptCore/dfg/DFGHeapLocation.h
    M Source/JavaScriptCore/dfg/DFGNode.h
    M Source/JavaScriptCore/dfg/DFGNodeType.h
    M Source/JavaScriptCore/dfg/DFGOperations.cpp
    M Source/JavaScriptCore/dfg/DFGOperations.h
    M Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp
    M Source/JavaScriptCore/dfg/DFGSafeToExecute.h
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp
    M Source/JavaScriptCore/dfg/DFGUseKind.cpp
    M Source/JavaScriptCore/dfg/DFGUseKind.h
    M Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h
    M Source/JavaScriptCore/ftl/FTLCapabilities.cpp
    M Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp
    M Source/JavaScriptCore/jit/AssemblyHelpers.cpp
    M Source/JavaScriptCore/jit/AssemblyHelpers.h
    M Source/JavaScriptCore/jit/JITOperations.h
    M Source/JavaScriptCore/parser/ModuleAnalyzer.cpp
    A Source/JavaScriptCore/runtime/HashMapImpl.cpp
    A Source/JavaScriptCore/runtime/HashMapImpl.h
    M Source/JavaScriptCore/runtime/Intrinsic.h
    M Source/JavaScriptCore/runtime/JSCJSValue.h
    M Source/JavaScriptCore/runtime/JSCJSValueInlines.h
    M Source/JavaScriptCore/runtime/JSGlobalObject.cpp
    M Source/JavaScriptCore/runtime/JSMap.cpp
    M Source/JavaScriptCore/runtime/JSMap.h
    M Source/JavaScriptCore/runtime/JSMapIterator.cpp
    M Source/JavaScriptCore/runtime/JSMapIterator.h
    M Source/JavaScriptCore/runtime/JSModuleLoader.cpp
    M Source/JavaScriptCore/runtime/JSModuleLoader.h
    M Source/JavaScriptCore/runtime/JSModuleRecord.cpp
    M Source/JavaScriptCore/runtime/JSModuleRecord.h
    M Source/JavaScriptCore/runtime/JSSet.cpp
    M Source/JavaScriptCore/runtime/JSSet.h
    M Source/JavaScriptCore/runtime/JSSetIterator.cpp
    M Source/JavaScriptCore/runtime/JSSetIterator.h
    M Source/JavaScriptCore/runtime/JSType.h
    A Source/JavaScriptCore/runtime/MapBase.cpp
    A Source/JavaScriptCore/runtime/MapBase.h
    M Source/JavaScriptCore/runtime/MapConstructor.cpp
    M Source/JavaScriptCore/runtime/MapIteratorPrototype.cpp
    M Source/JavaScriptCore/runtime/MapPrototype.cpp
    M Source/JavaScriptCore/runtime/PropertyDescriptor.cpp
    M Source/JavaScriptCore/runtime/PropertyDescriptor.h
    M Source/JavaScriptCore/runtime/SetConstructor.cpp
    M Source/JavaScriptCore/runtime/SetIteratorPrototype.cpp
    M Source/JavaScriptCore/runtime/SetPrototype.cpp
    M Source/JavaScriptCore/runtime/VM.cpp
    M Source/JavaScriptCore/runtime/VM.h
    M Source/WTF/ChangeLog
    M Source/WTF/wtf/text/StringImpl.h
    M Source/WebCore/ChangeLog
    A Source/WebCore/ForwardingHeaders/runtime/HashMapImpl.h
    A Source/WebCore/ForwardingHeaders/runtime/MapBase.h
    M Source/WebCore/bindings/js/SerializedScriptValue.cpp

  Log Message:
  -----------
  Merge r205520 - Make JSMap and JSSet faster
https://bugs.webkit.org/show_bug.cgi?id=160989

Reviewed by Filip Pizlo.

JSTests:

* microbenchmarks/dense-set.js: Added.
(bench):
* microbenchmarks/large-map-iteration-with-additions.js: Added.
(bar):
(foo):
* microbenchmarks/large-map-iteration-with-mutation.js: Added.
(bar):
(foo):
* microbenchmarks/large-map-iteration.js: Added.
(bar):
(foo):
* microbenchmarks/map-get-get-cse.js: Added.
(bar):
(foo):
* microbenchmarks/map-has-get-cse-opportunity.js: Added.
(bar):
(foo):
* microbenchmarks/sparse-set.js: Added.
(bench):
* stress/map-cse-correctness.js: Added.
(assert):
(testHas):
(testGet):
(foo):
* stress/map-iteration.js: Added.
(assert):
(test1):
(test2):
(test3):
(test4):
(test5):
(test6):
(test7):
(test8):
(test9):
(test10):
(test11):
(test12):
(test13):
(test14):
(test15):
(test16):
(test17):
(test18):

Source/JavaScriptCore:

This patch revamps how we implement Map and Set. It uses
a new hash map implementation. The hash map uses linear
probing and it uses Wang's 64 bit hash function for JSValues
that aren't strings. Strings use StringImpl's hash function.
The reason I wanted to roll our own HashTable is twofold:
I didn't want to inline WTF::HashMap's implementation into our
JIT, since that seems error prone and unmaintainable. Also, I wanted
a different structure for hash map buckets where buckets also exist in
a linked list.

The reason for making buckets part of a linked list is that iteration
is now simple. Iteration works by just traversing a linked list.
This design also allows for a simple implementation when doing iteration
while the hash table is mutating. Whenever we remove a bucket from
the hash table, it is removed from the list, meaning items in the
list don't point to it. However, the removed bucket will still point
to things that are either in the list, or have also been removed.
e.g, from a removed bucket, you can always follow pointers until you
either find an item in the list, or you find the tail of the list.
This is a really nice property because it means that a Map or Set
does not need to reason about the all the iterators that point
into its list. Also, whenever we add items to the Map or Set, we
hijack the tail as the new item, and make the new item point to a newly
created tail. This means that any iterator that pointed to the "tail" now
points to non-tail items. This makes the implementation of adding things
to the Map/Set while iterating easy.

I also made Map.prototype.get, Map.prototype.has, and Set.prototype.has
into intrinsics in the DFG. The IR can now reason about hash map
operations and can even do CSE over Wang's hash function, hash map
bucket lookups, hash map bucket loads, and testing if a key is in
the hash table. This makes code patterns for Map like so, super fast
in the FTL, since we will only be doing a single hash and hash bucket lookup:

```
function getKeyIfPresent(map, key) {
    if (map.has(key))
        return map.get(key);
}
```

This patch is roughly an 8% speedup on ES6SampleBench.

* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::not64):
* bytecode/SpeculatedType.cpp:
(JSC::speculationFromClassInfo):
* bytecode/SpeculatedType.h:
* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
(JSC::DFG::AbstractInterpreter<AbstractStateType>::execute):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::handleIntrinsicCall):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):
* dfg/DFGEdge.h:
(JSC::DFG::Edge::shift):
(JSC::DFG::Edge::makeWord):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
* dfg/DFGHeapLocation.cpp:
(WTF::printInternal):
* dfg/DFGHeapLocation.h:
* dfg/DFGNode.h:
(JSC::DFG::Node::hasHeapPrediction):
* dfg/DFGNodeType.h:
* dfg/DFGOperations.cpp:
* dfg/DFGOperations.h:
* dfg/DFGPredictionPropagationPhase.cpp:
* dfg/DFGSafeToExecute.h:
(JSC::DFG::SafeToExecuteEdge::operator()):
(JSC::DFG::safeToExecute):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::speculateMapObject):
(JSC::DFG::SpeculativeJIT::speculateSetObject):
(JSC::DFG::SpeculativeJIT::speculate):
* dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::callOperation):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGUseKind.cpp:
(WTF::printInternal):
* dfg/DFGUseKind.h:
(JSC::DFG::typeFilterFor):
(JSC::DFG::isCell):
* ftl/FTLAbstractHeapRepository.h:
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileMapHash):
(JSC::FTL::DFG::LowerDFGToB3::compileGetMapBucket):
(JSC::FTL::DFG::LowerDFGToB3::compileLoadFromJSMapBucket):
(JSC::FTL::DFG::LowerDFGToB3::compileIsNonEmptyMapBucket):
(JSC::FTL::DFG::LowerDFGToB3::lowMapObject):
(JSC::FTL::DFG::LowerDFGToB3::lowSetObject):
(JSC::FTL::DFG::LowerDFGToB3::lowMapBucket):
(JSC::FTL::DFG::LowerDFGToB3::speculate):
(JSC::FTL::DFG::LowerDFGToB3::speculateMapObject):
(JSC::FTL::DFG::LowerDFGToB3::speculateSetObject):
(JSC::FTL::DFG::LowerDFGToB3::setMapBucket):
(JSC::FTL::DFG::LowerDFGToB3::lowRegExpObject): Deleted.
(JSC::FTL::DFG::LowerDFGToB3::lowStorage): Deleted.
(JSC::FTL::DFG::LowerDFGToB3::speculateRegExpObject): Deleted.
(JSC::FTL::DFG::LowerDFGToB3::setStorage): Deleted.
* jit/AssemblyHelpers.cpp:
(JSC::AssemblyHelpers::wangsInt64Hash):
* jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::emitAllocateDestructibleObject): Deleted.
* jit/JITOperations.h:
* parser/ModuleAnalyzer.cpp:
(JSC::ModuleAnalyzer::ModuleAnalyzer):
* runtime/HashMapImpl.cpp: Added.
(JSC::HashMapBucket<Data>::visitChildren):
(JSC::HashMapImpl<HashMapBucket>::visitChildren):
(JSC::HashMapImpl<HashMapBucket>::copyBackingStore):
* runtime/HashMapImpl.h: Added.
(JSC::HashMapBucket::selectStructure):
(JSC::HashMapBucket::createStructure):
(JSC::HashMapBucket::create):
(JSC::HashMapBucket::HashMapBucket):
(JSC::HashMapBucket::setNext):
(JSC::HashMapBucket::setPrev):
(JSC::HashMapBucket::setKey):
(JSC::HashMapBucket::setValue):
(JSC::HashMapBucket::key):
(JSC::HashMapBucket::value):
(JSC::HashMapBucket::next):
(JSC::HashMapBucket::prev):
(JSC::HashMapBucket::deleted):
(JSC::HashMapBucket::setDeleted):
(JSC::HashMapBucket::offsetOfKey):
(JSC::HashMapBucket::offsetOfValue):
(JSC::HashMapBuffer::allocationSize):
(JSC::HashMapBuffer::buffer):
(JSC::HashMapBuffer::create):
(JSC::areKeysEqual):
(JSC::normalizeMapKey):
(JSC::jsMapHash):
(JSC::HashMapImpl::selectStructure):
(JSC::HashMapImpl::createStructure):
(JSC::HashMapImpl::create):
(JSC::HashMapImpl::HashMapImpl):
(JSC::HashMapImpl::buffer):
(JSC::HashMapImpl::finishCreation):
(JSC::HashMapImpl::emptyValue):
(JSC::HashMapImpl::isEmpty):
(JSC::HashMapImpl::deletedValue):
(JSC::HashMapImpl::isDeleted):
(JSC::HashMapImpl::findBucket):
(JSC::HashMapImpl::get):
(JSC::HashMapImpl::has):
(JSC::HashMapImpl::add):
(JSC::HashMapImpl::remove):
(JSC::HashMapImpl::size):
(JSC::HashMapImpl::clear):
(JSC::HashMapImpl::bufferSizeInBytes):
(JSC::HashMapImpl::offsetOfBuffer):
(JSC::HashMapImpl::offsetOfCapacity):
(JSC::HashMapImpl::head):
(JSC::HashMapImpl::tail):
(JSC::HashMapImpl::approximateSize):
(JSC::HashMapImpl::findBucketAlreadyHashedAndNormalized):
(JSC::HashMapImpl::rehash):
(JSC::HashMapImpl::makeAndSetNewBuffer):
* runtime/Intrinsic.h:
* runtime/JSCJSValue.h:
* runtime/JSCJSValueInlines.h:
(JSC::sameValue):
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
* runtime/JSMap.cpp:
(JSC::JSMap::destroy): Deleted.
(JSC::JSMap::estimatedSize): Deleted.
(JSC::JSMap::visitChildren): Deleted.
(JSC::JSMap::copyBackingStore): Deleted.
(JSC::JSMap::has): Deleted.
(JSC::JSMap::size): Deleted.
(JSC::JSMap::get): Deleted.
(JSC::JSMap::set): Deleted.
(JSC::JSMap::clear): Deleted.
(JSC::JSMap::remove): Deleted.
* runtime/JSMap.h:
(JSC::JSMap::createStructure):
(JSC::JSMap::create):
(JSC::JSMap::get):
(JSC::JSMap::set):
(JSC::JSMap::JSMap):
(JSC::JSMap::Entry::key): Deleted.
(JSC::JSMap::Entry::value): Deleted.
(JSC::JSMap::Entry::visitChildren): Deleted.
(JSC::JSMap::Entry::setKey): Deleted.
(JSC::JSMap::Entry::setKeyWithoutWriteBarrier): Deleted.
(JSC::JSMap::Entry::setValue): Deleted.
(JSC::JSMap::Entry::clear): Deleted.
* runtime/JSMapIterator.cpp:
(JSC::JSMapIterator::finishCreation):
(JSC::JSMapIterator::visitChildren):
(JSC::JSMapIterator::clone):
* runtime/JSMapIterator.h:
(JSC::JSMapIterator::advanceIter):
(JSC::JSMapIterator::next):
(JSC::JSMapIterator::nextKeyValue):
(JSC::JSMapIterator::JSMapIterator):
(JSC::JSMapIterator::setIterator):
(JSC::JSMapIterator::finish): Deleted.
(JSC::JSMapIterator::iteratorData): Deleted.
* runtime/JSModuleLoader.cpp:
(JSC::JSModuleLoader::finishCreation):
* runtime/JSModuleLoader.h:
(JSC::JSModuleLoader::create):
* runtime/JSModuleRecord.cpp:
(JSC::JSModuleRecord::finishCreation):
* runtime/JSModuleRecord.h:
(JSC::JSModuleRecord::create):
* runtime/JSSet.cpp:
(JSC::JSSet::destroy): Deleted.
(JSC::JSSet::estimatedSize): Deleted.
(JSC::JSSet::visitChildren): Deleted.
(JSC::JSSet::copyBackingStore): Deleted.
(JSC::JSSet::has): Deleted.
(JSC::JSSet::size): Deleted.
(JSC::JSSet::add): Deleted.
(JSC::JSSet::clear): Deleted.
(JSC::JSSet::remove): Deleted.
* runtime/JSSet.h:
(JSC::JSSet::createStructure):
(JSC::JSSet::create):
(JSC::JSSet::add):
(JSC::JSSet::JSSet):
(JSC::JSSet::Entry::key): Deleted.
(JSC::JSSet::Entry::value): Deleted.
(JSC::JSSet::Entry::visitChildren): Deleted.
(JSC::JSSet::Entry::setKey): Deleted.
(JSC::JSSet::Entry::setKeyWithoutWriteBarrier): Deleted.
(JSC::JSSet::Entry::setValue): Deleted.
(JSC::JSSet::Entry::clear): Deleted.
* runtime/JSSetIterator.cpp:
(JSC::JSSetIterator::finishCreation):
(JSC::JSSetIterator::visitChildren):
(JSC::JSSetIterator::clone):
* runtime/JSSetIterator.h:
(JSC::JSSetIterator::advanceIter):
(JSC::JSSetIterator::next):
(JSC::JSSetIterator::JSSetIterator):
(JSC::JSSetIterator::setIterator):
(JSC::JSSetIterator::finish): Deleted.
(JSC::JSSetIterator::iteratorData): Deleted.
* runtime/JSType.h:
* runtime/MapBase.cpp: Added.
(JSC::MapBase<HashMapBucketType>::visitChildren):
(JSC::MapBase<HashMapBucketType>::estimatedSize):
* runtime/MapBase.h: Added.
(JSC::MapBase::size):
(JSC::MapBase::has):
(JSC::MapBase::clear):
(JSC::MapBase::remove):
(JSC::MapBase::findBucket):
(JSC::MapBase::offsetOfHashMapImpl):
(JSC::MapBase::impl):
(JSC::MapBase::finishCreation):
(JSC::MapBase::MapBase):
* runtime/MapConstructor.cpp:
(JSC::constructMap):
* runtime/MapIteratorPrototype.cpp:
(JSC::MapIteratorPrototypeFuncNext):
* runtime/MapPrototype.cpp:
(JSC::MapPrototype::finishCreation):
(JSC::getMap):
(JSC::privateFuncIsMap):
(JSC::privateFuncMapIteratorNext):
* runtime/PropertyDescriptor.cpp:
(JSC::sameValue): Deleted.
* runtime/PropertyDescriptor.h:
* runtime/SetConstructor.cpp:
(JSC::constructSet):
* runtime/SetIteratorPrototype.cpp:
(JSC::SetIteratorPrototypeFuncNext):
* runtime/SetPrototype.cpp:
(JSC::SetPrototype::finishCreation):
(JSC::getSet):
(JSC::privateFuncSetIteratorNext):
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:

Source/WebCore:

* ForwardingHeaders/runtime/HashMapImpl.h: Added.
* ForwardingHeaders/runtime/MapBase.h: Added.
* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneSerializer::serialize):
(WebCore::CloneDeserializer::deserialize):

Source/WTF:

I made s_flagCount public in StringImpl since JSC's JITs now use this field.

* wtf/text/StringImpl.h:


  Commit: a8f930d8a26f61877a40189b65767a0ee9049a0e
      https://github.com/WebKit/WebKit/commit/a8f930d8a26f61877a40189b65767a0ee9049a0e
  Author: Saam Barati <sbarati at apple.com>
  Date:   2016-09-09 (Fri, 09 Sep 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h

  Log Message:
  -----------
  Merge r205522 - Member call on NULL pointer in JavaScriptCore/dfg/DFGAbstractInterpretterInlines.h
https://bugs.webkit.org/show_bug.cgi?id=160870

Reviewed by Darin Adler.

Credit goes to Jonathan Bedard for finding this bug using the undefined
behavior sanitizer.

The rule for MaterializeNewObject inside AI was assuming that the graph
is in SSA form. This used to be true when MaterializeNewObject was only
inserted by the allocation sinking phase. However, Filip added more uses
of MaterializeNewObject in his RegExp constant folding patch. This fixes
the bug by using the structure set inside the Node's OpInfo rather than
generating it from m_phiChildren inside AI.

* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):


  Commit: 1b186eb0cbfd68baf332ed1c45ae4214d1698ee4
      https://github.com/WebKit/WebKit/commit/1b186eb0cbfd68baf332ed1c45ae4214d1698ee4
  Author: Saam Barati <sbarati at apple.com>
  Date:   2016-09-09 (Fri, 09 Sep 2016)

  Changed paths:
    M JSTests/ChangeLog
    A JSTests/stress/proxy-dont-infinite-loop.js
    M JSTests/stress/proxy-get-prototype-of.js
    M JSTests/stress/proxy-set-prototype-of.js
    A JSTests/stress/proxy-underscore-proto.js
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/runtime/JSGlobalObject.cpp
    M Source/JavaScriptCore/runtime/ProxyObject.cpp

  Log Message:
  -----------
  Merge r205535 - ProxyObject's structure should not have ObjectPrototype as its prototype and it should not have special behavior for intercepting "__proto__"
https://bugs.webkit.org/show_bug.cgi?id=161558

Reviewed by Benjamin Poulain.

JSTests:

* stress/proxy-get-prototype-of.js:
* stress/proxy-set-prototype-of.js:
(let.handler.setPrototypeOf): Deleted.
* stress/proxy-underscore-proto.js: Added.
(assert):

Source/JavaScriptCore:

ProxyObject had ObjectPrototype as its direct prototype.
This could lead to infinite loops when doing a getDirectPrototype()
loop.

Fixing this bug revealed another bug, which I made when implementing Proxy.
We should not special case "__proto__" in get and set for Proxy Object's
hooks. "__proto__" should just go through the normal set and get path.

* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
* runtime/ProxyObject.cpp:
(JSC::performProxyGet):
(JSC::ProxyObject::put):


  Commit: acb814e85428e9b1f3a74cc2bf1f4d87af561243
      https://github.com/WebKit/WebKit/commit/acb814e85428e9b1f3a74cc2bf1f4d87af561243
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-09-09 (Fri, 09 Sep 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp
    M Source/WebKit2/WebProcess/WebPage/WebPage.cpp
    M Source/WebKit2/WebProcess/WebPage/WebPage.h
    M Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm

  Log Message:
  -----------
  Merge r205537 - [GTK][Threaded Compositor] Several flaky tests
https://bugs.webkit.org/show_bug.cgi?id=161242

Reviewed by Michael Catanzaro.

Source/WebKit2:

Reset the viewport attributes on SimpleViewportController when viewport attributes change and fixed layout is
not used. We were only updating the viewport attributes when fixed layout was used, but not resetting them again
when it's no longer used. That caused that reference tests run after fast/fixed-layout/fixed-layout.html or
compositing/fixed-with-fixed-layout.html in the same worker thread were incorrectly rendered.

* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::dispatchViewportPropertiesDidChange): Remove ifdefs and call
WebPage::viewportPropertiesDidChange() unconditionally.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setSize): Pass current page viewport arguments to sendViewportAttributesChanged().
(WebKit::WebPage::sendViewportAttributesChanged): It now receives the viewport arguments.
(WebKit::WebPage::viewportPropertiesDidChange): Move the iOS implementation from WebPageIOS.mm and for
coordinated graphics call sendViewportAttributesChanged() when fixed layout is used or reset the viewport
attributes when not used in case of threaded compositor.
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::viewportPropertiesDidChange): Moved out of iOS ifdef.
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::viewportPropertiesDidChange): Deleted.


  Commit: 0da4a92e81b2f98c656f48fc2ea3f06191b1dc79
      https://github.com/WebKit/WebKit/commit/0da4a92e81b2f98c656f48fc2ea3f06191b1dc79
  Author: Carlos Garcia Campos <carlosgc at webkit.org>
  Date:   2016-09-09 (Fri, 09 Sep 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/GLContext.cpp
    M Source/WebCore/platform/graphics/glx/GLContextGLX.cpp
    M Source/WebCore/platform/graphics/glx/GLContextGLX.h

  Log Message:
  -----------
  [GTK] Crash of WebProcess on the last WebView disconnect
https://bugs.webkit.org/show_bug.cgi?id=161605

Reviewed by Michael Catanzaro.

The crash happens because GLX contexts are cleaned up in an exit handler to prevent X server crashes caused by
buggy drivers when process finishes with active GLX contexts. The cleanup is assuming that all contexts not
released when the exit handler is called are leaked, and then it manually deletes them. This assumption is no
longer true because PlatformDisplay owns the sharing GLContext now, and it's freed after the exit
handlers. Instead of deleting the GLContext objects, we could clear the internal GLXContext without breaking the
pointer ownership. Since this is specific to GLX, I've moed the code from GLContext to GLContextGLX and
simplified it.

* platform/graphics/GLContext.cpp:
(WebCore::GLContext::GLContext):
(WebCore::GLContext::~GLContext):
(WebCore::activeContextList): Deleted.
(WebCore::GLContext::addActiveContext): Deleted.
(WebCore::GLContext::removeActiveContext): Deleted.
(WebCore::GLContext::cleanupActiveContextsAtExit): Deleted.
* platform/graphics/glx/GLContextGLX.cpp:
(WebCore::activeContexts):
(WebCore::GLContextGLX::GLContextGLX):
(WebCore::GLContextGLX::~GLContextGLX):
(WebCore::GLContextGLX::clear):
* platform/graphics/glx/GLContextGLX.h:


  Commit: 7d459b04fb1697b7500c285c2392d3e6b711c031
      https://github.com/WebKit/WebKit/commit/7d459b04fb1697b7500c285c2392d3e6b711c031
  Author: Piotr Drąg <piotrdrag at gmail.com>
  Date:   2016-09-09 (Fri, 09 Sep 2016)

  Changed paths:
    M Source/WebCore/platform/gtk/po/ChangeLog
    M Source/WebCore/platform/gtk/po/pl.po

  Log Message:
  -----------
  Merge r205546 - [l10n] Updated Polish translation of WebKitGTK+ for 2.14
https://bugs.webkit.org/show_bug.cgi?id=161319

Patch by Piotr Drąg <piotrdrag at gmail.com> on 2016-09-07
Rubber-stamped by Michael Catanzaro.

* pl.po:


  Commit: d5077f9657f9216f674089d9e66a175ff9668002
      https://github.com/WebKit/WebKit/commit/d5077f9657f9216f674089d9e66a175ff9668002
  Author: Emanuele Aina <emanuele.aina at collabora.com>
  Date:   2016-09-09 (Fri, 09 Sep 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp

  Log Message:
  -----------
  Merge r205547 - [GTK] Clarify frame callbacks behaviour in Wayland compositor
https://bugs.webkit.org/show_bug.cgi?id=161683

Patch by Emanuele Aina <emanuele.aina at collabora.com> on 2016-09-07
Reviewed by Carlos Garcia Campos.

The way we fire frame callbacks in the nested Wayland compositor can
be puzzling to developers expecting Wayland semantics, but since we
have our own mechanism to handle synchronization we don't care much
about them. Add a comment to avoid surprised Wayland developers.

* UIProcess/gtk/WaylandCompositor.cpp:
(WebKit::WaylandCompositor::Surface::commit):


  Commit: 26c7afb7458ce2480cdd6d9a6c7329a0c47f3f6c
      https://github.com/WebKit/WebKit/commit/26c7afb7458ce2480cdd6d9a6c7329a0c47f3f6c
  Author: Konstantin Tokarev <annulen at yandex.ru>
  Date:   2016-09-09 (Fri, 09 Sep 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/gtk/WebInspectorProxyGtk.cpp

  Log Message:
  -----------
  Merge r205561 - [GTK] Make inspection of Inspector conditional on DEVELOPER_MODE
https://bugs.webkit.org/show_bug.cgi?id=161702

Reviewed by Michael Catanzaro.

* UIProcess/gtk/WebInspectorProxyGtk.cpp:
(WebKit::WebInspectorProxy::platformCreateInspectorPage):


  Commit: 622368604c6ae9b719268c0896789533cb4ad5b3
      https://github.com/WebKit/WebKit/commit/622368604c6ae9b719268c0896789533cb4ad5b3
  Author: Carlos Garcia Campos <carlosgc at webkit.org>
  Date:   2016-09-09 (Fri, 09 Sep 2016)

  Changed paths:
    M ChangeLog
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/gtk/NEWS
    M Source/cmake/OptionsGTK.cmake

  Log Message:
  -----------
  Unreviewed. Update OptionsGTK.cmake and NEWS for 2.13.91 release.

.:

* Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit2:

* gtk/NEWS: Add release notes for 2.13.91.


  Commit: 57206e197fb7a55d3f95843248395d6ca480eb96
      https://github.com/WebKit/WebKit/commit/57206e197fb7a55d3f95843248395d6ca480eb96
  Author: Carlos Alberto Lopez Perez <clopez at igalia.com>
  Date:   2016-09-15 (Thu, 15 Sep 2016)

  Changed paths:
    M ChangeLog
    M Source/cmake/OptionsCommon.cmake

  Log Message:
  -----------
  Merge r205672 - [CMake] Build failure with GCC 6 (fatal error: stdlib.h: No such file or directory)
https://bugs.webkit.org/show_bug.cgi?id=161697

Reviewed by Michael Catanzaro.

Get the list of system includes from GCC and add it to the CMake
list of implicit includes. This way, CMake will filter any of this
directories from the list of includes when calling the compiler.

This avoids an issue with GCC 6 that causes build failures when
including the default include path as a system include (-isystem).

* Source/cmake/OptionsCommon.cmake:


  Commit: 637a06ed94c3b1d46d9f745c7434a0c1b573f06b
      https://github.com/WebKit/WebKit/commit/637a06ed94c3b1d46d9f745c7434a0c1b573f06b
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-09-15 (Thu, 15 Sep 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/PlatformDisplay.h
    M Source/WebCore/platform/graphics/glx/GLContextGLX.cpp
    M Source/WebCore/platform/graphics/glx/GLContextGLX.h
    M Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp

  Log Message:
  -----------
  Merge r205852 - [GTK] Crash of WebProcess on the last WebView disconnect (take two)
https://bugs.webkit.org/show_bug.cgi?id=161842

Reviewed by Michael Catanzaro.

The problem is that when PlatformDisplayX11 is destroyed, the sharing GL context is deleted and its destructor
makes a downcast of PlatformDisplay to get the native X11 display. We could simply keep a pointer to the native
X11 display in GLContextGLX, got at construction time from the PlatformDisplay, and ensure the sharing GL
context is deleted before the native X11 display is closed.

* platform/graphics/PlatformDisplay.h: Make m_sharingGLContext protected.
* platform/graphics/glx/GLContextGLX.cpp:
(WebCore::GLContextGLX::GLContextGLX): Initialize m_x11Display.
(WebCore::GLContextGLX::~GLContextGLX): Use m_x11Display and remove confusing comment about possible crash with
nviedia closed drivers.
(WebCore::GLContextGLX::defaultFrameBufferSize): Use m_x11Display.
(WebCore::GLContextGLX::makeContextCurrent): Ditto.
(WebCore::GLContextGLX::swapBuffers): Ditto.
(WebCore::GLContextGLX::swapInterval): Ditto.
(WebCore::GLContextGLX::cairoDevice): Ditto.
* platform/graphics/glx/GLContextGLX.h:
* platform/graphics/x11/PlatformDisplayX11.cpp:
(WebCore::PlatformDisplayX11::~PlatformDisplayX11): Delete the sharing GL context before closing the display.


  Commit: c0f5769eaf48feadee8060cad61bfe104ffc316d
      https://github.com/WebKit/WebKit/commit/c0f5769eaf48feadee8060cad61bfe104ffc316d
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-09-15 (Thu, 15 Sep 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/gtk/ScrollbarThemeGtk.cpp

  Log Message:
  -----------
  Merge r205853 - [GTK] Scrollbar  too large
https://bugs.webkit.org/show_bug.cgi?id=161735

Reviewed by Michael Catanzaro.

We were not calculating the total scrollbar size correctly when the theme defines a minimum width/height. In
that case we need to take the extra size into account (border, margin, padding), but not adding the minimum
size. We were also adjusting the thumb position when rendering in indicator mode, but we really need to adjust
the whole rectangle. This worked in Adwaita because it uses a transparent track when in indicator mode. We are
also now taking into account the text direction when doing this adjustment for the indicator mode.

* platform/gtk/ScrollbarThemeGtk.cpp:
(WebCore::ScrollbarThemeGtk::paint):
(WebCore::ScrollbarThemeGtk::scrollbarThickness):


  Commit: 020188219d0d5ad1233376bf7e5dae1a41e376b6
      https://github.com/WebKit/WebKit/commit/020188219d0d5ad1233376bf7e5dae1a41e376b6
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-09-15 (Thu, 15 Sep 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/editing/gtk/EditorGtk.cpp
    M Source/WebCore/platform/Pasteboard.h
    M Source/WebCore/platform/gtk/DataObjectGtk.cpp
    M Source/WebCore/platform/gtk/DataObjectGtk.h
    M Source/WebCore/platform/gtk/PasteboardGtk.cpp
    M Source/WebCore/platform/gtk/PasteboardHelper.cpp
    M Source/WebCore/platform/gtk/PasteboardHelper.h
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/gtk/DragAndDropHandler.cpp
    M Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebDragClientGtk.cpp
    M Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp

  Log Message:
  -----------
  Merge r205860 - [GTK] Get rid of DataObjectGtk::forClipboard and cleanup pasteboard code
https://bugs.webkit.org/show_bug.cgi?id=161907

Reviewed by Michael Catanzaro.

Source/WebCore:

We don't really need to keep a DataObjectGtk for every clipboard, we could simply pass the DataObjectGtk to read
and write methods of PasteboardHelper.

* editing/gtk/EditorGtk.cpp:
(WebCore::createFragmentFromPasteboardData): Update for DataObjectGtk API changes.
* platform/Pasteboard.h:
* platform/gtk/DataObjectGtk.cpp: Remove forClipboard() static method.
* platform/gtk/DataObjectGtk.h: Ditto.
* platform/gtk/PasteboardGtk.cpp:
(WebCore::Pasteboard::Pasteboard): Always create a new DataObjectGtk.
(WebCore::Pasteboard::dataObject): Return a const reference instead of a pointer.
(WebCore::Pasteboard::writePlainText): Pass the DataObjectGtk to PasteboardHelper.
(WebCore::Pasteboard::write): Ditto.
(WebCore::Pasteboard::writePasteboard): Ditto.
(WebCore::Pasteboard::clear): Ditto.
(WebCore::Pasteboard::read): Ditto.
(WebCore::Pasteboard::hasData): Ditto.
(WebCore::Pasteboard::types): Ditto.
(WebCore::Pasteboard::readString): Ditto.
(WebCore::Pasteboard::readFilenames): Ditto.
* platform/gtk/PasteboardHelper.cpp:
(WebCore::PasteboardHelper::getClipboardContents): Update the given DataObjectGtk.
(WebCore::PasteboardHelper::fillSelectionData): Use a const reference to DataObjectGtk instead of a pointer.
(WebCore::PasteboardHelper::targetListForDataObject): Ditto.
(WebCore::PasteboardHelper::fillDataObjectFromDropData): Use a reference to DataObjectGtk instead of a pointer.
(WebCore::ClipboardSetData::ClipboardSetData): Helper struct to pass DataObjectGtk and callback to clipboard callbacks.
(WebCore::ClipboardSetData::~ClipboardSetData):
(WebCore::getClipboardContentsCallback): Get the DataObjectGtk from ClipboardSetData struct passed as user data.
(WebCore::clearClipboardContentsCallback): Get the DataObjectGtk and callback from ClipboardSetData struct
passed as user data.
(WebCore::PasteboardHelper::writeClipboardContents): Write the given DataObjectGtk.
* platform/gtk/PasteboardHelper.h:

Source/WebKit2:

Update to DataObjectGtk and PasteboardHelper API changes.

* UIProcess/gtk/DragAndDropHandler.cpp:
(WebKit::DragAndDropHandler::startDrag):
(WebKit::DragAndDropHandler::fillDragData):
(WebKit::DragAndDropHandler::dataObjectForDropData):
* WebProcess/WebCoreSupport/gtk/WebDragClientGtk.cpp:
(WebKit::WebDragClient::startDrag):
* WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
(WebKit::collapseSelection):
(WebKit::WebEditorClient::updateGlobalSelection): Remove wrong X11 guards, since that code is not X11 specific.


  Commit: 722c635d6454e98a6bbe1758fa9e17bb90fefcfe
      https://github.com/WebKit/WebKit/commit/722c635d6454e98a6bbe1758fa9e17bb90fefcfe
  Author: Carlos Garnacho <carlosg at gnome.org>
  Date:   2016-09-15 (Thu, 15 Sep 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/PlatformGTK.cmake
    M Source/WebCore/editing/gtk/EditorGtk.cpp
    M Source/WebCore/platform/Pasteboard.h
    M Source/WebCore/platform/PasteboardStrategy.h
    M Source/WebCore/platform/PlatformPasteboard.h
    M Source/WebCore/platform/gtk/DataObjectGtk.cpp
    M Source/WebCore/platform/gtk/DataObjectGtk.h
    M Source/WebCore/platform/gtk/PasteboardGtk.cpp
    M Source/WebCore/platform/gtk/PasteboardHelper.cpp
    M Source/WebCore/platform/gtk/PasteboardHelper.h
    A Source/WebCore/platform/gtk/PlatformPasteboardGtk.cpp
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/PlatformGTK.cmake
    M Source/WebKit2/Shared/gtk/ArgumentCodersGtk.cpp
    M Source/WebKit2/Shared/gtk/ArgumentCodersGtk.h
    A Source/WebKit2/Shared/gtk/PasteboardContent.cpp
    A Source/WebKit2/Shared/gtk/PasteboardContent.h
    M Source/WebKit2/UIProcess/WebFrameProxy.cpp
    M Source/WebKit2/UIProcess/WebFrameProxy.h
    M Source/WebKit2/UIProcess/WebPasteboardProxy.h
    M Source/WebKit2/UIProcess/WebPasteboardProxy.messages.in
    M Source/WebKit2/UIProcess/gtk/WebPageProxyGtk.cpp
    A Source/WebKit2/UIProcess/gtk/WebPasteboardProxyGtk.cpp
    M Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp
    M Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h
    M Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp
    M Source/WebKit2/WebProcess/WebPage/WebPage.h
    M Source/WebKit2/WebProcess/WebPage/WebPage.messages.in
    M Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp

  Log Message:
  -----------
  Merge r205909 - [GTK][Wayland] Implement clipboard support
https://bugs.webkit.org/show_bug.cgi?id=146574

Patch by Carlos Garnacho <carlosg at gnome.org> on 2016-09-14
Reviewed by Carlos Garcia Campos.

Source/WebCore:

Implement PlatformPasteboard in the GTK+ platform, and move Pasteboard
to using PasteboardStrategy so clipboard management is left to the
UIProcess.

DataObjectGtk is still used in the Pasteboard GTK implementation, it's
now just never backed by a GtkClipboard, this object is instead
serialized through PasteboardStrategy, so the UIProcess side can mirror
the content in a GtkClipboard-backed DataObjectGtk, which is then
exposed to the windowing through PlatformPasteboard/PasteboardHelper.

When requesting clipboard content, it works similarly, the UIProcess
side first updates its DataObjectGtk, which is then mirrored by the
WebProcess through the PasteboardStrategy requests.

* PlatformGTK.cmake: Added PlatformPasteboardGtk.cpp
* editing/gtk/EditorGtk.cpp:
(WebCore::Editor::writeSelectionToPasteboard): Eliminate usage of
PasteboardWebContent callback argument. This is done differently as
we have to signal back the WebProcess.
* platform/Pasteboard.h: Cleaned up of direct GTK+ dependency.
* platform/PasteboardStrategy.h: Added plumbing towards the pasteboard
proxy.
* platform/PlatformPasteboard.h:
* platform/gtk/DataObjectGtk.cpp:
(WebCore::DataObjectGtk::clearAllExceptFilenames): Clear the "smart
paste" flag if set, now that this is DataObjectGtk data.
* platform/gtk/DataObjectGtk.h:
(WebCore::DataObjectGtk::canSmartReplace):
(WebCore::DataObjectGtk::setCanSmartReplace): Added functions, in order
to flag whether a DataObjectGtk has the "smart paste" feature enabled
or not.
* platform/gtk/PasteboardGtk.cpp:
(WebCore::Pasteboard::createForCopyAndPaste):
(WebCore::Pasteboard::createForGlobalSelection):
(WebCore::Pasteboard::Pasteboard):
(WebCore::Pasteboard::writeToClipboard):
(WebCore::Pasteboard::readFromClipboard):
(WebCore::Pasteboard::writePlainText):
(WebCore::Pasteboard::write):
(WebCore::Pasteboard::writePasteboard):
(WebCore::Pasteboard::clear):
(WebCore::Pasteboard::canSmartReplace):
(WebCore::Pasteboard::read):
(WebCore::Pasteboard::hasData):
(WebCore::Pasteboard::types):
(WebCore::Pasteboard::readString):
(WebCore::Pasteboard::readFilenames): Made to use the
PasteboardStrategy instead of PasteboardHelper/GTK+ API.
* platform/gtk/PasteboardHelper.cpp:
(WebCore::PasteboardHelper::~PasteboardHelper):
(WebCore::ClipboardSetData::ClipboardSetData):
(WebCore::clearClipboardContentsCallback):
(WebCore::PasteboardHelper::writeClipboardContents): Remove the GClosure
to notify whether the global selection has been replaced. Use std:function
instead. Remove SmartPasteInclusion argument, now figured out through
DataObjectGtk canSmartPaste() member.
* platform/gtk/PasteboardHelper.h:
* platform/gtk/PlatformPasteboardGtk.cpp: Added.
(WebCore::PlatformPasteboard::PlatformPasteboard):
(WebCore::PlatformPasteboard::writeToClipboard):
(WebCore::PlatformPasteboard::readFromClipboard): Implemented
PlatformPasteboard using PasteboardHelper/GTK+ API.

Source/WebKit2:

Add the necessary plumbing for the GTK+ backend to use the
PlatformPasteboard in WebCore. All selection data is transmitted
at once through the serialization of PasteboardContentGtk/DataObjectGtk.

* PlatformGTK.cmake: Add PasteboardContentGtk.cpp and
WebPasteboardProxyGtk.cpp
* Shared/gtk/ArgumentCodersGtk.cpp:
(IPC::encode):
(IPC::decode): Renamed from encodeDataObject/decodeDataObject
and made public.
(IPC::ArgumentCoder<DragData>::encode):
(IPC::ArgumentCoder<DragData>::decode): Update DataObjectGtk
encode/decode callers. Encode the extra canSmartReplace field.
* Shared/gtk/ArgumentCodersGtk.h: Expose encode/decode methods for
DataObjectGtk.
* Shared/gtk/PasteboardContent.cpp: Added. Wraps a DataObjectGtk
so it can be serialized on WebProcess/UIProcess messaging.
(WebKit::PasteboardContent::PasteboardContent):
(WebKit::PasteboardContent::encode):
(WebKit::PasteboardContent::decode): Methods to encode/decode a
PasteboardContent.
* Shared/gtk/PasteboardContent.h: Added.
* UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::collapseSelection): Added plumbing to allow
collapsing the global selection from the UI process side.
* UIProcess/WebFrameProxy.h:
* UIProcess/WebPasteboardProxy.h:
* UIProcess/WebPasteboardProxy.messages.in: Added plumbing for the
GTK+ pasteboard proxy functions.
* UIProcess/gtk/WebPageProxyGtk.cpp:
(WebKit::WebPageProxy::editorStateChanged):
* UIProcess/gtk/WebPasteboardProxyGtk.cpp: Added.
(WebKit::WebPasteboardProxy::writeToClipboard):
(WebKit::WebPasteboardProxy::readFromClipboard): Implemented functions
hooking into the PlatformPasteboard. Per-selection (ie.
primary/clipboard) PlatformPasteboards are kept at this level, so those
are independently set and dealt with.
(WebKit::WebPasteboardProxy::setPrimarySelectionOwner):
(WebKit::WebPasteboardProxy::didDestroyFrame): Implemented functions
to manage the frame currently being currently interacted, so we can
signal back when the global selection has been replaced.
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::writeToClipboard):
(WebKit::WebPlatformStrategies::readFromClipboard): Added methods to
send the WebProcess->UIProcess messages.
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:
* WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
(WebKit::WebEditorClient::updateGlobalSelection): Remove GClosure to
get notifications about changes in global selection ownership. This
is done through a WebPage message now, as the UI process manages the
clipboard.
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/gtk/WebPageGtk.cpp:
(WebKit::WebPage::collapseSelectionInFrame): Added methods to send
the UIProcess->WebProcess notification that the global selection has
been replaced.


  Commit: 40c58f88430e99a1693ccf685c5c403f8d70583d
      https://github.com/WebKit/WebKit/commit/40c58f88430e99a1693ccf685c5c403f8d70583d
  Author: Carlos Garcia Campos <carlosgc at webkit.org>
  Date:   2016-09-15 (Thu, 15 Sep 2016)

  Changed paths:
    M ChangeLog
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/gtk/NEWS
    M Source/cmake/OptionsGTK.cmake

  Log Message:
  -----------
  Unreviewed. Update OptionsGTK.cmake and NEWS for 2.13.92 release.

.:

* Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit2:

* gtk/NEWS: Add release notes for 2.13.92.


  Commit: e5c92d55252d918190a183279c701327a823852f
      https://github.com/WebKit/WebKit/commit/e5c92d55252d918190a183279c701327a823852f
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-09-17 (Sat, 17 Sep 2016)

  Changed paths:
    M ChangeLog
    M Source/cmake/WebKitMacros.cmake

  Log Message:
  -----------
  Merge r206020 - [CMake] Build broken with current debian testing
https://bugs.webkit.org/show_bug.cgi?id=162054

Reviewed by Žan Doberšek.

Building WTR bindings is broken now in Debian testing. The reason is that '.' is no longer included in @INC for
perl, see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=588017 and
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-1238.

* Source/cmake/WebKitMacros.cmake(GENERATE_BINDINGS): Pass also the given BASE_DIR to perl executable so that it
can find modules in the current directory even if '.' is not in @INC. Also include generators in BASE_DIR to the
list of dependencies.


  Commit: 9553ff76ed148b66bd88f9f73dda1427ad03ab66
      https://github.com/WebKit/WebKit/commit/9553ff76ed148b66bd88f9f73dda1427ad03ab66
  Author: Filip Pizlo <fpizlo at apple.com>
  Date:   2016-09-17 (Sat, 17 Sep 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/heap/MarkedSpace.cpp

  Log Message:
  -----------
  Merge r205998 - REGRESSION (r205462): Lot of leaks
https://bugs.webkit.org/show_bug.cgi?id=161946

Reviewed by Saam Barati.

We were forgetting to delete LargeAllocations on VM exit!

* heap/MarkedSpace.cpp:
(JSC::MarkedSpace::~MarkedSpace):


  Commit: 046d6546b0f6742fdb6b16566b69087a3b39f979
      https://github.com/WebKit/WebKit/commit/046d6546b0f6742fdb6b16566b69087a3b39f979
  Author: Gustavo Noronha Silva <gns at gnome.org>
  Date:   2016-09-17 (Sat, 17 Sep 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp

  Log Message:
  -----------
  Merge r206045 - [GTK] Surface created for glReadPixels path on Wayland is bigger than needed
https://bugs.webkit.org/show_bug.cgi?id=162025

Reviewed by Carlos Garcia Campos.

* UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:
(WebKit::AcceleratedBackingStoreWayland::paint): the texture created by the Wayland
compositor is already scaled, so scaling its size when creating the surface causes it
to end up bigger than necessary.


  Commit: 3448f860e87da7637e3200426968b6ac0cc22c00
      https://github.com/WebKit/WebKit/commit/3448f860e87da7637e3200426968b6ac0cc22c00
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-09-17 (Sat, 17 Sep 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp

  Log Message:
  -----------
  Merge r206066 - [ThreadedCompositor] Scrolling artifacts on accelerated subframes
https://bugs.webkit.org/show_bug.cgi?id=149060

Reviewed by Michael Catanzaro.

The problem is that we are scrolling the main frame even when scrolling is not delegated.

* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
(WebKit::ThreadedCoordinatedLayerTreeHost::scrollNonCompositedContents): Return early if main frame view doesn't
delegate scrolling.


  Commit: 1fb633ee0b9f53900dc3698bdc07bef5a62af1de
      https://github.com/WebKit/WebKit/commit/1fb633ee0b9f53900dc3698bdc07bef5a62af1de
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-09-17 (Sat, 17 Sep 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp
    M Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp

  Log Message:
  -----------
  Merge r206067 - [GTK] Move the rendering of auth dialog shadow to the auth dialog widget
https://bugs.webkit.org/show_bug.cgi?id=162061

Reviewed by Michael Catanzaro.

Instead of rendering the shadow in the web view, we can let the auth dialog do it. This fixes the rendering of
the shadow in Wayland when using gdk_cairo_draw_from_gl().

* UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:
(webkitAuthenticationDialogDraw): Draw the shadow before rendering the child.
(webkitAuthenticationDialogSizeAllocate): Center the child on the allocated space.
(webkit_authentication_dialog_class_init): Add size_allocate implementation.
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseDraw): Do not draw the shadow when auth dialog is present.
(webkitWebViewBaseSizeAllocate): Give the whole web view allocation to the auth dialog.


  Commit: 915764043e41edfdab929273b8ee64e4a74d3be8
      https://github.com/WebKit/WebKit/commit/915764043e41edfdab929273b8ee64e4a74d3be8
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-09-17 (Sat, 17 Sep 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp
    M Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.h
    M Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp
    M Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h

  Log Message:
  -----------
  Merge r206019 - [TextureMapper] Scrolling through 01.org/dleyna crashes WebKitWebProcess
https://bugs.webkit.org/show_bug.cgi?id=162020

Reviewed by Žan Doberšek.

The problem is that we are trying to clone a ReferenceFilterOperation, which is not expected to be cloned, from
FilterAnimationValue copy constructor, and FilterOperations are never expected to be nullptr, so we end up
crashing. We just need to validate the filters before setting then and before creating a TextureMapperAnimation
for them.

* platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:
(WebCore::GraphicsLayerTextureMapper::filtersCanBeComposited): Return false if there are reference filters or no
filters at all. I don't know if we really support other filters, but at least we won't crash for the others.
(WebCore::GraphicsLayerTextureMapper::addAnimation): Check if filters can be composited before creating a
TextureMapperAnimation.
(WebCore::GraphicsLayerTextureMapper::setFilters): Check if filters can be composited before setting them.
* platform/graphics/texmap/GraphicsLayerTextureMapper.h:
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::filtersCanBeComposited): Return false if there are reference filters or no
filters at all. I don't know if we really support other filters, but at least we won't crash for the others.
(WebCore::CoordinatedGraphicsLayer::setFilters): Check if filters can be composited before setting them.
(WebCore::CoordinatedGraphicsLayer::addAnimation): Check if filters can be composited before creating a
TextureMapperAnimation.
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:


  Commit: b2212a8d97cafb9eeb9f5f7904fbfef3834315cb
      https://github.com/WebKit/WebKit/commit/b2212a8d97cafb9eeb9f5f7904fbfef3834315cb
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-09-19 (Mon, 19 Sep 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/API/gtk/WebKitWebViewSessionState.cpp

  Log Message:
  -----------
  Merge r206086 - [GTK] Empty referer header after WebKit session state restoration trips Bad Behavior Wordpress plugin
https://bugs.webkit.org/show_bug.cgi?id=159606

Reviewed by Carlos Garcia Campos.

Leave the referrer member of FrameState unset when restoring from session state, unless
there is actually a nonempty referrer saved in the state. If we set it to an empty string,
then an empty referrer gets sent to the server, which some servers do not accept. It
triggers the Bad Behavior plugin on my WordPress blog, for instance. It also breaks vox.com.

* UIProcess/API/gtk/WebKitWebViewSessionState.cpp:
(decodeFrameState):


  Commit: ae7a97a063057df11e7703eb35e391b30b2f7937
      https://github.com/WebKit/WebKit/commit/ae7a97a063057df11e7703eb35e391b30b2f7937
  Author: Yuri Chornoivan <yurchor at ukr.net>
  Date:   2016-09-19 (Mon, 19 Sep 2016)

  Changed paths:
    M Source/WebCore/platform/gtk/po/ChangeLog
    M Source/WebCore/platform/gtk/po/uk.po

  Log Message:
  -----------
  Merge r206079 - [GTK] [l10n] Updated Ukrainian translation of WebKitGTK+
https://bugs.webkit.org/show_bug.cgi?id=162136

Patch by Yuri Chornoivan <yurchor at ukr.net> on 2016-09-18
Rubber-stamped by Michael Catanzaro.

* uk.po:


  Commit: 16b4d448e3795d99eeb6f91b020d2187ad58aab9
      https://github.com/WebKit/WebKit/commit/16b4d448e3795d99eeb6f91b020d2187ad58aab9
  Author: Gustavo Noronha Silva <gns at gnome.org>
  Date:   2016-09-19 (Mon, 19 Sep 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp
    M Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h
    M Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp
    M Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp
    M Source/WebKit2/WebProcess/WebPage/gtk/AcceleratedSurface.h
    M Source/WebKit2/WebProcess/WebPage/gtk/AcceleratedSurfaceWayland.h
    M Source/WebKit2/WebProcess/WebPage/gtk/AcceleratedSurfaceX11.h
    M Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp

  Log Message:
  -----------
  Merge r206080 - [GTK] Stop using glReadPixels() to blit AC surfaces in the UIProcess under Wayland
https://bugs.webkit.org/show_bug.cgi?id=161530

Reviewed by Carlos Garcia Campos.

Use gdk_cairo_draw_from_gl when all necessary conditions exist.

* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::ThreadedCompositor::create): take TextureMapper::PaintFlags as optional argument.
(WebKit::ThreadedCompositor::ThreadedCompositor): ditto.
(WebKit::ThreadedCompositor::renderLayerTree): relay paint flags to TextureMapper::beginPaint.
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
* UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:
(WebKit::AcceleratedBackingStoreWayland::paint): use the faster gdk_cairo_draw_from_gl when a new
enough GTK+ is in use.
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
(WebKit::ThreadedCoordinatedLayerTreeHost::ThreadedCoordinatedLayerTreeHost): create compositor
with PaintingMirrored flag if we have recent GTK+ and are running under Wayland.
* WebProcess/WebPage/gtk/AcceleratedSurfaceX11.h: implement shouldPaintMirrored by always
returning false.
* WebProcess/WebPage/gtk/AcceleratedSurfaceWayland.h: implement shouldPaintMirrored by always
returning true.
* WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp:
(WebKit::LayerTreeHostGtk::compositeLayersToContext): pass PaintingMirror flag to TextureMapper
when under a recent enough GTK+ and Wayland.


  Commit: 282580a689ad94de535878923ce22989294ae0be
      https://github.com/WebKit/WebKit/commit/282580a689ad94de535878923ce22989294ae0be
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-09-20 (Tue, 20 Sep 2016)

  Changed paths:
    M ChangeLog
    M Source/cmake/OptionsGTK.cmake

  Log Message:
  -----------
  Merge r206095 - [GTK] Make ENABLE_THREADED_COMPOSITOR a public option
https://bugs.webkit.org/show_bug.cgi?id=162148

Reviewed by Carlos Garcia Campos.

* Source/cmake/OptionsGTK.cmake:


  Commit: 5493e425d7415c23db4aa7a2380e85ad9f1b5e5a
      https://github.com/WebKit/WebKit/commit/5493e425d7415c23db4aa7a2380e85ad9f1b5e5a
  Author: Carlos Garcia Campos <carlosgc at webkit.org>
  Date:   2016-09-20 (Tue, 20 Sep 2016)

  Changed paths:
    M ChangeLog
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/gtk/NEWS
    M Source/cmake/OptionsGTK.cmake

  Log Message:
  -----------
  Unreviewed. Update OptionsGTK.cmake and NEWS for 2.14.0 release.

.:

* Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit2:

* gtk/NEWS: Add release notes for 2.14.0.


  Commit: 100eb534afa2c7dd03036a9e732f79552811dd9a
      https://github.com/WebKit/WebKit/commit/100eb534afa2c7dd03036a9e732f79552811dd9a
  Author: Gustavo Noronha Silva <gns at gnome.org>
  Date:   2016-09-21 (Wed, 21 Sep 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp

  Log Message:
  -----------
  Merge 206216 - Unreviewed, build fix.

* UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:
(WebKit::AcceleratedBackingStoreWayland::paint): fix usage of deviceScaleFactor variable which was
removed.


  Commit: 1cd59530b70a7462ef4877355aef655d876c6c08
      https://github.com/WebKit/WebKit/commit/1cd59530b70a7462ef4877355aef655d876c6c08
  Author: Gustavo Noronha Silva <gns at gnome.org>
  Date:   2016-09-27 (Tue, 27 Sep 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp
    M Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreWayland.h

  Log Message:
  -----------
  Merge 206424 - [GTK] Should check whether GDK can use GL before asking it to
https://bugs.webkit.org/show_bug.cgi?id=162598

Reviewed by Michael Catanzaro.

gdk_cairo_draw_from_gl can fail even when WebKit itself has been able to use GL (its
context creation code might be buggy, GL may have been disabled using GDK_GL=disable, …).
Unfortunately it does not have any error reporting other than a warning printed to
stderr, so we cannot fallback from it. We have to first check if GL can be used by GDK
by trying to create a context.

See https://bugzilla.redhat.com/show_bug.cgi?id=1378987

* UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:
(WebKit::AcceleratedBackingStoreWayland::canGdkUseGL): decide whether GDK can use GL by
trying to create a context for a GdkWindow.
(WebKit::AcceleratedBackingStoreWayland::paint): fallback to glReadPixels if GDK cannot
use GL.
* UIProcess/gtk/AcceleratedBackingStoreWayland.h:


  Commit: cb58f77f0978f9742767a4366b0638b69a504487
      https://github.com/WebKit/WebKit/commit/cb58f77f0978f9742767a4366b0638b69a504487
  Author: Csaba Osztrogonác <ossy at webkit.org>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/wasm/JSWASMModule.cpp

  Log Message:
  -----------
  Merge r205541 - Fix the ENABLE(WEBASSEMBLY) build on Linux
https://bugs.webkit.org/show_bug.cgi?id=161685

Unreviewed buildfix.

* wasm/JSWASMModule.cpp:


  Commit: 3095f145744bf2f5a90f8cda48fd1729d107e774
      https://github.com/WebKit/WebKit/commit/3095f145744bf2f5a90f8cda48fd1729d107e774
  Author: Chris Dumez <cdumez at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M LayoutTests/imported/w3c/ChangeLog
    M LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element/area-processing-expected.txt
    M Source/WebCore/ChangeLog
    M Source/WebCore/html/HTMLAreaElement.cpp

  Log Message:
  -----------
  Merge r205565 - Fix handling of negative radius in HTMLAreaElement's coords when in circle state
https://bugs.webkit.org/show_bug.cgi?id=161690

Reviewed by Daniel Bates.

LayoutTests/imported/w3c:

Rebaseline existing test now that one more check is passing.

* web-platform-tests/html/semantics/embedded-content/the-area-element/area-processing-expected.txt:

Source/WebCore:

Fix handling of negative radius in HTMLAreaElement's coords when in
circle state:
- https://html.spec.whatwg.org/#attr-area-shape-circle

The radius must be non-negative as per the specification. However, our
code fails to check.

Firefox and Chrome both reject negative radius.

No new tests, rebaselined existing test.

* html/HTMLAreaElement.cpp:
(WebCore::HTMLAreaElement::getRegion):


  Commit: 4d1d7a4f0d305202b5ad7493ecd621fce875c6d1
      https://github.com/WebKit/WebKit/commit/4d1d7a4f0d305202b5ad7493ecd621fce875c6d1
  Author: Filip Pizlo <fpizlo at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/jit/AssemblyHelpers.h

  Log Message:
  -----------
  Merge r205566 - Make emitAllocateWithNonNullAllocator's sub32() disallow-scratch-friendly
https://bugs.webkit.org/show_bug.cgi?id=161706

Reviewed by Geoffrey Garen.

You can't sub32(Addr, Reg) on not-x86 without using a scratch register. So, on those CPUs, we
have to do something different.

* jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::emitAllocateWithNonNullAllocator):


  Commit: f1e1b696efb54ef4b08e276202050ee934995f5a
      https://github.com/WebKit/WebKit/commit/f1e1b696efb54ef4b08e276202050ee934995f5a
  Author: Andy VanWagoner <andy at vanwagoner.family>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    M LayoutTests/js/intl-collator-expected.txt
    M LayoutTests/js/intl-datetimeformat-expected.txt
    M LayoutTests/js/intl-numberformat-expected.txt
    M LayoutTests/js/script-tests/intl-collator.js
    M LayoutTests/js/script-tests/intl-datetimeformat.js
    M LayoutTests/js/script-tests/intl-numberformat.js
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/runtime/IntlObject.cpp

  Log Message:
  -----------
  Merge r205568 - [INTL] some valid language tags cause errors in Intl constructors
https://bugs.webkit.org/show_bug.cgi?id=161672

Patch by Andy VanWagoner <thetalecrafter at gmail.com> on 2016-09-07
Reviewed by Mark Lam.

Source/JavaScriptCore:

Fix private use tag parsing to match spec, allowing single character parts.
https://www.rfc-editor.org/rfc/bcp/bcp47.txt

```
privateuse    = "x" 1*("-" (1*8alphanum))
```

* runtime/IntlObject.cpp:
(JSC::privateUseLangTag): Allow singleton parts in private use tag.

LayoutTests:

Add list of valid language tags that should not throw from test262.

* js/intl-collator-expected.txt:
* js/intl-datetimeformat-expected.txt:
* js/intl-numberformat-expected.txt:
* js/script-tests/intl-collator.js:
* js/script-tests/intl-datetimeformat.js:
* js/script-tests/intl-numberformat.js:


  Commit: c5e121864b1b79500d730b8ad515089051473f52
      https://github.com/WebKit/WebKit/commit/c5e121864b1b79500d730b8ad515089051473f52
  Author: Žan Doberšek <zdobersek at igalia.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/API/C/soup/WKAPICastSoup.h
    R Source/WebKit2/UIProcess/soup/WebSoupRequestManagerClient.h
    R Source/WebKit2/UIProcess/soup/WebSoupRequestManagerProxy.h
    R Source/WebKit2/WebProcess/soup/WebSoupRequestManager.h

  Log Message:
  -----------
  Merge r205590 - [GTK] Remove stale WebSoupRequestManager headers
https://bugs.webkit.org/show_bug.cgi?id=161691

Reviewed by Sergio Villar Senin.

WebSoupRequestManager, WebSoupRequestManagerProxy and WebSoupRequestManagerClient
classes were used to implement custom URI scheme support for Soup. This API and
the implementations of these classes were removed in r174584, but curiously the
headers went unnoticed. This patch removes them, as well as the
WebSoupRequestManagerProxy forwarding declaration in WKAPICastSoup.h.

* UIProcess/API/C/soup/WKAPICastSoup.h:
* UIProcess/soup/WebSoupRequestManagerClient.h: Removed.
* UIProcess/soup/WebSoupRequestManagerProxy.h: Removed.
(WebKit::WebSoupRequestManagerProxy::registeredURISchemes): Deleted.
* WebProcess/soup/WebSoupRequestManager.h: Removed.


  Commit: bde4416afc48f17b5abdab1fdb602529e48e7715
      https://github.com/WebKit/WebKit/commit/bde4416afc48f17b5abdab1fdb602529e48e7715
  Author: Mark Lam <mark.lam at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/assembler/MacroAssemblerARM.h
    M Source/JavaScriptCore/assembler/MacroAssemblerARM64.h
    M Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h
    M Source/JavaScriptCore/assembler/MacroAssemblerSH4.h
    M Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h
    M Source/JavaScriptCore/b3/air/AirOpcode.opcodes
    M Source/JavaScriptCore/b3/testb3.cpp
    M Source/JavaScriptCore/jit/AssemblyHelpers.h

  Log Message:
  -----------
  Merge r205656 - Add support for a ternary sub32 emitter for ARM64 and 32-bit ARM.
https://bugs.webkit.org/show_bug.cgi?id=161724

Reviewed by Filip Pizlo.

ARM architectures support ternary sub instructions.  We should make use of them
in emitAllocateWithNonNullAllocator().

* assembler/MacroAssemblerARM.h:
(JSC::MacroAssemblerARM::sub32):
* assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::sub32):
* assembler/MacroAssemblerARMv7.h:
(JSC::MacroAssemblerARMv7::sub32):
* assembler/MacroAssemblerSH4.h:
(JSC::MacroAssemblerSH4::sub32):
* assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::sub32):
* b3/air/AirOpcode.opcodes:
* b3/testb3.cpp:
(JSC::B3::testTernarySubInstructionSelection):
(JSC::B3::run):
* jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::emitAllocateWithNonNullAllocator):


  Commit: b98151a21f701796cb457046a9ed655b114e9b64
      https://github.com/WebKit/WebKit/commit/b98151a21f701796cb457046a9ed655b114e9b64
  Author: Filip Pizlo <fpizlo at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/heap/CellContainer.h
    M Source/JavaScriptCore/heap/CellContainerInlines.h
    M Source/JavaScriptCore/heap/ConservativeRoots.cpp
    M Source/JavaScriptCore/heap/ConservativeRoots.h
    M Source/JavaScriptCore/heap/Heap.h
    M Source/JavaScriptCore/heap/HeapInlines.h
    M Source/JavaScriptCore/heap/HeapUtil.h
    M Source/JavaScriptCore/heap/MarkedBlock.cpp
    M Source/JavaScriptCore/heap/MarkedBlock.h
    M Source/JavaScriptCore/heap/MarkedSpace.cpp
    M Source/JavaScriptCore/heap/MarkedSpace.h
    M Source/JavaScriptCore/heap/SlotVisitor.cpp
    M Source/JavaScriptCore/heap/SlotVisitor.h

  Log Message:
  -----------
  Merge r205658 - Heap version should be 32-bit
https://bugs.webkit.org/show_bug.cgi?id=161751

Reviewed by Mark Lam.

32-bit devices are probably getting hurt by the 64-bit version number. The reason why I made
it 64-bit initially is so that I wouldn't have to worry about wrap-around. But wrap-around is
easy to handle.

* heap/CellContainer.h:
* heap/CellContainerInlines.h:
(JSC::CellContainer::flipIfNecessary):
* heap/ConservativeRoots.cpp:
(JSC::ConservativeRoots::genericAddPointer):
(JSC::ConservativeRoots::genericAddSpan):
* heap/ConservativeRoots.h:
* heap/Heap.h:
* heap/HeapInlines.h:
(JSC::Heap::testAndSetMarked):
* heap/HeapUtil.h:
(JSC::HeapUtil::findGCObjectPointersForMarking):
* heap/MarkedBlock.cpp:
(JSC::MarkedBlock::MarkedBlock):
* heap/MarkedBlock.h:
(JSC::MarkedBlock::flipIfNecessary):
(JSC::MarkedBlock::flipIfNecessaryConcurrently):
(JSC::MarkedBlock::Handle::flipIfNecessary):
(JSC::MarkedBlock::Handle::flipIfNecessaryConcurrently):
* heap/MarkedSpace.cpp:
(JSC::MarkedSpace::flip):
* heap/MarkedSpace.h:
(JSC::MarkedSpace::version):
* heap/SlotVisitor.cpp:
(JSC::SlotVisitor::SlotVisitor):
* heap/SlotVisitor.h:


  Commit: 7e27b7e00224799e2e45442b880609a254a959b9
      https://github.com/WebKit/WebKit/commit/7e27b7e00224799e2e45442b880609a254a959b9
  Author: Simon Fraser <simon.fraser at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/transitions/transition-to-from-undefined-expected.txt
    A LayoutTests/transitions/transition-to-from-undefined.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/page/animation/CSSPropertyAnimation.cpp
    M Source/WebCore/platform/Length.cpp

  Log Message:
  -----------
  Merge r205659 - Don't run transitions to or from undefined Lengths
https://bugs.webkit.org/show_bug.cgi?id=161750
rdar://problem/28170460

Reviewed by Zalan Bujtas.

Source/WebCore:

For properties like max-height whose default value is 'none', we would erroneously
attempt to run transitions/animations, and then assert when one of the endpoints
was undefined.

So don't attempt to blend such Length values, just as do when they are auto.

Fixes some transitions on apple.com and developer.apple.com.

Test: transitions/transition-to-from-undefined.html

* page/animation/CSSPropertyAnimation.cpp:
(WebCore::CSSPropertyAnimation::blendProperties):
* platform/Length.cpp:
(WebCore::blend):

LayoutTests:

* transitions/transition-to-from-undefined-expected.txt: Added.
* transitions/transition-to-from-undefined.html: Added.


  Commit: cbeb8a5525add55a4012d92aa5eda6b301f5b8eb
      https://github.com/WebKit/WebKit/commit/cbeb8a5525add55a4012d92aa5eda6b301f5b8eb
  Author: Saam Barati <sbarati at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M JSTests/ChangeLog
    A JSTests/stress/value-to-boolean.js
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/dfg/DFGFixupPhase.cpp
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp
    M Source/JavaScriptCore/jit/AssemblyHelpers.cpp
    M Source/JavaScriptCore/jit/AssemblyHelpers.h
    M Source/JavaScriptCore/jit/JIT.cpp
    M Source/JavaScriptCore/jit/JIT.h
    M Source/JavaScriptCore/jit/JITOpcodes.cpp
    M Source/JavaScriptCore/jit/JITOpcodes32_64.cpp
    M Source/JavaScriptCore/jit/JITOperations.cpp
    M Source/JavaScriptCore/jit/JITOperations.h

  Log Message:
  -----------
  Merge r205675 - We should inline operationConvertJSValueToBoolean into JIT code
https://bugs.webkit.org/show_bug.cgi?id=161729

Reviewed by Filip Pizlo.

JSTests:

* stress/value-to-boolean.js: Added.
(assert):
(test1):
(test2):
(test3):

Source/JavaScriptCore:

This patch introduces an AssemblyHelpers emitter function
that replaces operationConvertJSValueToBoolean. This operation
was showing up when I was doing performance analysis for the
speedometer benchmark. I saw that it was spending about 1% of
its time in this function. Hopefully this patch can help us speedup
up speedometer by a little bit.

* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compileLogicalNot):
(JSC::DFG::SpeculativeJIT::emitBranch):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compileLogicalNot):
(JSC::DFG::SpeculativeJIT::emitBranch):
* jit/AssemblyHelpers.cpp:
(JSC::AssemblyHelpers::emitConvertValueToBoolean):
* jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::emitAllocateDestructibleObject): Deleted.
* jit/JIT.cpp:
(JSC::JIT::privateCompileSlowCases):
* jit/JIT.h:
* jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_jfalse):
(JSC::JIT::emit_op_jtrue):
(JSC::JIT::emitSlow_op_jfalse): Deleted.
(JSC::JIT::emitSlow_op_jtrue): Deleted.
* jit/JITOpcodes32_64.cpp:
(JSC::JIT::emit_op_jfalse):
(JSC::JIT::emit_op_jtrue):
(JSC::JIT::emitSlow_op_jfalse): Deleted.
(JSC::JIT::emitSlow_op_jtrue): Deleted.
* jit/JITOperations.cpp:
* jit/JITOperations.h:


  Commit: 7db6347f23d0b5f27e158119e5dbe100bf6316de
      https://github.com/WebKit/WebKit/commit/7db6347f23d0b5f27e158119e5dbe100bf6316de
  Author: Filip Pizlo <fpizlo at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/bytecode/CodeBlock.cpp
    M Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp
    M Source/JavaScriptCore/heap/Heap.h
    M Source/JavaScriptCore/heap/HeapInlines.h
    M Source/JavaScriptCore/heap/HeapSnapshotBuilder.cpp
    M Source/JavaScriptCore/heap/MarkedBlock.cpp
    M Source/JavaScriptCore/heap/MarkedBlock.h
    M Source/JavaScriptCore/heap/SlotVisitor.cpp
    M Source/JavaScriptCore/runtime/Structure.cpp
    M Source/WTF/ChangeLog
    M Source/WTF/wtf/MainThread.cpp
    M Source/WTF/wtf/MainThread.h

  Log Message:
  -----------
  Merge r205683 - Heap::isMarked() shouldn't pay the price of concurrent lazy flipping
https://bugs.webkit.org/show_bug.cgi?id=161760

Reviewed by Mark Lam.
Source/JavaScriptCore:

To fix a race condition in marking, I made Heap::isMarked() and Heap::isLive() atomic by
using flipIfNecessaryConcurrently() instead of flipIfNecessary().

This introduces three unnecessary overheads:

- isLive() is not called by marking, so that change was not necessary.

- isMarked() gets calls many times outside of marking, so it shouldn't always do the
  concurrent thing. This adds isMarkedConcurrently() for use in marking, and reverts
  isMarked().

- isMarked() and isMarkedConcurrently() don't actually have to do the lazy flip. They can
  return false if the flip is necessary.

I added a bunch of debug assertions to make sure that isLive() and isMarked() are not called
during marking.

If we needed to, we could remove most of the calls to isMarkedConcurrently(). As a kind of
optimization, CodeBlock does an initial fixpoint iteration during marking, and so all of the
code called from CodeBlock's fixpoint iterator needs to use isMarkedConcurrently(). But we
could probably arrange for CodeBlock only do fixpoint iterating during the weak reference
thing.

* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::visitWeakly):
(JSC::CodeBlock::shouldJettisonDueToOldAge):
(JSC::shouldMarkTransition):
(JSC::CodeBlock::propagateTransitions):
(JSC::CodeBlock::determineLiveness):
* bytecode/PolymorphicAccess.cpp:
(JSC::AccessCase::propagateTransitions):
* heap/Heap.h:
* heap/HeapInlines.h:
(JSC::Heap::isLive):
(JSC::Heap::isMarked):
(JSC::Heap::isMarkedConcurrently):
* heap/MarkedBlock.cpp:
(JSC::MarkedBlock::flipIfNecessarySlow):
(JSC::MarkedBlock::flipIfNecessaryConcurrentlySlow):
(JSC::MarkedBlock::needsFlip):
* heap/MarkedBlock.h:
(JSC::MarkedBlock::needsFlip):
(JSC::MarkedBlock::flipIfNecessary):
(JSC::MarkedBlock::flipIfNecessaryConcurrently):
* heap/SlotVisitor.cpp:
(JSC::SlotVisitor::appendToMarkStack):
(JSC::SlotVisitor::markAuxiliary):
(JSC::SlotVisitor::visitChildren):
* runtime/Structure.cpp:
(JSC::Structure::isCheapDuringGC):
(JSC::Structure::markIfCheap):

Source/WTF:

* wtf/MainThread.cpp:
(WTF::isMainThreadOrGCThread):
(WTF::mayBeGCThread):
* wtf/MainThread.h:


  Commit: 2105aa9f0d87e7f59be64335d0be515a9187695d
      https://github.com/WebKit/WebKit/commit/2105aa9f0d87e7f59be64335d0be515a9187695d
  Author: Yusuke Suzuki <ysuzuki at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WTF/ChangeLog
    M Source/WTF/wtf/HashTable.h
    M Source/WebCore/ChangeLog
    M Source/WebCore/loader/ResourceLoadStatistics.h
    M Tools/ChangeLog
    M Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp
    M Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp

  Log Message:
  -----------
  Merge r205694 - [WTF] HashTable's rehash is not compatible to Ref<T> and ASan
https://bugs.webkit.org/show_bug.cgi?id=161763

Reviewed by Mark Lam.

Source/WebCore:

Include wtf/text/StringHash.h to avoid linking errors in EFL port.

* loader/ResourceLoadStatistics.h:

Source/WTF:

If we move an object, the location which the moved object used should not be touched anymore.
HashTable::rehash performs WTFMove for the object that resides in the old table.
However, after moving it, we accidentally touch this location by using `!isEmptyOrDeletedBucket(table[i])`
in HashTable::deallocateTable. And it causes ASan crashing if we use Ref<> for HashTable's key or value.

In this patch, we call the destructor right after moving the object. And HashTable::rehash just calls
fastFree since all the objects in the old table are already moved and destructed.
And we also change HashTable::deallocate to destruct only live objects. Calling destructors for empty objects
is meaningless. And according to the Ref<>'s comment, empty object is not designed to be destructed.

* wtf/HashTable.h:
(WTF::KeyTraits>::deallocateTable):

Tools:

Add tests that inserts many Ref<>s. It incurs HashTable::rehash, and we can ensure
that ASan crash does not occur with this patch.

* TestWebKitAPI/Tests/WTF/HashMap.cpp:
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WTF/HashSet.cpp:
(TestWebKitAPI::TEST):


  Commit: 7cd4814173334cfbaa388d57725843dffaa9d5e1
      https://github.com/WebKit/WebKit/commit/7cd4814173334cfbaa388d57725843dffaa9d5e1
  Author: Antti Koivisto <koivisto at iki.fi>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/css/StyleResolver.cpp
    M Source/WebCore/css/StyleResolver.h
    M Source/WebCore/page/animation/ImplicitAnimation.cpp
    M Source/WebCore/page/animation/KeyframeAnimation.cpp
    M Source/WebCore/page/animation/KeyframeAnimation.h
    M Source/WebCore/rendering/RenderElement.cpp
    M Source/WebCore/rendering/RenderImage.cpp
    M Source/WebCore/rendering/RenderImage.h
    M Source/WebCore/rendering/style/StyleCachedImage.cpp
    M Source/WebCore/rendering/style/StyleCachedImage.h

  Log Message:
  -----------
  Merge r205701 - v3: WebContent crash due to RELEASE_ASSERT in WebCore: WebCore::StyleResolver::styleForElement
https://bugs.webkit.org/show_bug.cgi?id=161689

Reviewed by Andreas Kling.

These crashes happen because synchronously triggered resource loads generate callbacks that may end up
deleting the resource loader.

Stop triggering resource loads from StyleResolver. Instead trigger them when applying style to render tree.

* css/StyleResolver.cpp:
(WebCore::StyleResolver::~StyleResolver):

    Replace the RELEASE_ASSERT against deletion during resource loads by a general isDeleted assert.

(WebCore::StyleResolver::styleForElement):
(WebCore::StyleResolver::styleForKeyframe):
(WebCore::StyleResolver::pseudoStyleForElement):
(WebCore::StyleResolver::styleForPage):
(WebCore::StyleResolver::applyMatchedProperties):
(WebCore::StyleResolver::loadPendingResources): Deleted.
* css/StyleResolver.h:
* page/animation/KeyframeAnimation.cpp:
(WebCore::KeyframeAnimation::KeyframeAnimation):
(WebCore::KeyframeAnimation::resolveKeyframeStyles):

    Ensure resource load for all animation frames.

* page/animation/KeyframeAnimation.h:
* rendering/RenderElement.cpp:
(WebCore::RenderElement::createFor):
(WebCore::RenderElement::initializeStyle):

    Load resources when renderer initializes a style.

(WebCore::RenderElement::setStyle):
(WebCore::RenderElement::getUncachedPseudoStyle):

    Load resources for pseudo styles.

* rendering/RenderImage.cpp:
(WebCore::RenderImage::RenderImage):
(WebCore::RenderImage::styleWillChange):

    Shuffle image resource initialization out from constructor so initializeStyle gets called before.

* rendering/RenderImage.h:
* rendering/style/StyleCachedImage.cpp:
(WebCore::StyleCachedImage::StyleCachedImage):

    Track pending status with a bit instead of implicitly by the existence of CachedResource.
    This is useful for asserts.

(WebCore::StyleCachedImage::load):
(WebCore::StyleCachedImage::isPending):
(WebCore::StyleCachedImage::addClient):
(WebCore::StyleCachedImage::removeClient):
(WebCore::StyleCachedImage::image):
* rendering/style/StyleCachedImage.h:


  Commit: 1342b1ee8d82f6d347bab2eda31e56a4faf4dc43
      https://github.com/WebKit/WebKit/commit/1342b1ee8d82f6d347bab2eda31e56a4faf4dc43
  Author: Mark Lam <mark.lam at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WTF/ChangeLog
    M Source/WTF/wtf/MainThread.cpp

  Log Message:
  -----------
  Merge r205740 - Gardening: fixing a few JSC test failures.
https://bugs.webkit.org/show_bug.cgi?id=161760

Not reviewed.

Without this fix, the following tests will crash on a null dereference of isGCThread.
    stress/slow-path-generator-updating-current-node-dfg.js.misc-ftl-no-cjit
    stress/unshift-array-storage.js.misc-ftl-no-cjit

* wtf/MainThread.cpp:
(WTF::mayBeGCThread):


  Commit: 7e452e50d2a8cd71756ef5d938dbc821f0d0b799
      https://github.com/WebKit/WebKit/commit/7e452e50d2a8cd71756ef5d938dbc821f0d0b799
  Author: Saam Barati <sbarati at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/runtime/JSObject.cpp
    M Source/JavaScriptCore/runtime/JSObjectInlines.h

  Log Message:
  -----------
  Merge r205753 - Make hasOwnProperty ALWAYS_INLINE
https://bugs.webkit.org/show_bug.cgi?id=161775

Reviewed by Ryosuke Niwa.

Speedometer spends around 2.5% of its time in hasOwnProperty.
Let's reduce the overhead of calling that function by marking
it as inline. Also, it's likely that the function will call into
JSObject::getOwnPropertySlot. I added a check to see if that's
the function we're calling, if it is, we do a direct call instead
of an indirect call.

* runtime/JSObject.cpp:
(JSC::JSObject::hasOwnProperty): Deleted.
* runtime/JSObjectInlines.h:
(JSC::JSObject::hasOwnProperty):


  Commit: 2a13906eb59b6f719f9587eface843a32f5c229e
      https://github.com/WebKit/WebKit/commit/2a13906eb59b6f719f9587eface843a32f5c229e
  Author: Filip Pizlo <fpizlo at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/jsc.cpp

  Log Message:
  -----------
  Merge r205767 - jsc.cpp should call initializeMainThread() to make sure that GC thread assertions work
https://bugs.webkit.org/show_bug.cgi?id=161801

Reviewed by Keith Miller.

The GC has debug assertions that certain things don't happen on GC threads. Those assertions
are no-ops unless initializeGCThreads() is called, and I think the most canonical way to do
that is to call initializeMainThread().

* jsc.cpp:
(jscmain):


  Commit: 0e884b8b4991e859abe174be78aadbacb0bbfd78
      https://github.com/WebKit/WebKit/commit/0e884b8b4991e859abe174be78aadbacb0bbfd78
  Author: Chris Dumez <cdumez at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/history/pagehide-remove-iframe-crash-expected.txt
    A LayoutTests/fast/history/pagehide-remove-iframe-crash.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/dom/Document.h
    M Source/WebCore/history/CachedFrame.cpp
    M Source/WebCore/history/PageCache.cpp
    M Source/WebCore/loader/FrameLoader.cpp
    M Source/WebCore/loader/HistoryController.cpp
    M Source/WebCore/page/Frame.cpp

  Log Message:
  -----------
  Merge r205786 - It is possible for Document::m_frame pointer to become stale
https://bugs.webkit.org/show_bug.cgi?id=161812
<rdar://problem/27745023>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Document::m_frame is supposed to get cleared by Document::prepareForDestruction().
The Frame destructor calls Frame::setView(nullptr) which is supposed to call the
prepareForDestruction() on the Frame's associated document. However,
Frame::setView(nullptr) was calling prepareForDestruction() only if
Document::inPageCache() returned true. This is because, we allow Documents to
stay alive in the PageCache even though they don't have a frame.

The issue is that Document::m_inPageCache flag was set to true right before
firing the pagehide event, so technically before really entering PageCache.
Therefore, we can run into problems if a Frame gets destroyed by a pagehide
EventHandler because ~Frame() will not call Document::prepareForDestruction()
due to Document::m_inPageCache being true. After the frame is destroyed,
Document::m_frame becomes stale and any action on the document will likely
lead to crashes (such as the one in the layout test and the radar which
happens when trying to unregister event listeners from the document).

The solution adopted in this patch is to replace the m_inPageCache boolean
with a m_pageCacheState enumeration that has 3 states:
- NotInPageCache
- AboutToEnterPageCache
- InPageCache

Frame::setView() / Frame::setDocument() were then updated to call
Document::prepareForDestruction() on the associated document whenever
the document's pageCacheState is not InPageCache. This means that we
will now call Document::prepareForDestruction() when the document is
being detached from its frame while firing the pagehide event.

Note that I tried to keep this patch minimal. Therefore, I kept
the Document::inPageCache() getter for now. I plan to switch all its
calls sites to the new Document::pageCacheState() getter in a follow-up
patch so that we can finally drop the confusing Document::inPageCache().

Test: fast/history/pagehide-remove-iframe-crash.html

* dom/Document.cpp:
(WebCore::Document::Document):
(WebCore::Document::~Document):
(WebCore::Document::createRenderTree):
(WebCore::Document::destroyRenderTree):
(WebCore::Document::setFocusedElement):
(WebCore::Document::setPageCacheState):
(WebCore::Document::topDocument):
* dom/Document.h:
(WebCore::Document::pageCacheState):
(WebCore::Document::inPageCache):
* history/CachedFrame.cpp:
(WebCore::CachedFrame::destroy):
* history/PageCache.cpp:
(WebCore::setPageCacheState):
(WebCore::PageCache::addIfCacheable):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::stopAllLoaders):
(WebCore::FrameLoader::open):
* loader/HistoryController.cpp:
(WebCore::HistoryController::invalidateCurrentItemCachedPage):
* page/Frame.cpp:
(WebCore::Frame::setView):

LayoutTests:

Add layout test that crashes on both Mac and iOS due to using a stale
Document::m_frame pointer.

* fast/history/pagehide-remove-iframe-crash-expected.txt: Added.
* fast/history/pagehide-remove-iframe-crash.html: Added.


  Commit: 472f8ca74aff2b525f7523a078cbeaa31c6c563d
      https://github.com/WebKit/WebKit/commit/472f8ca74aff2b525f7523a078cbeaa31c6c563d
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/dom/Document.cpp

  Log Message:
  -----------
  Merge r206299 - Replace redundant prepareForDestruction() call with RELEASE_ASSERT in Document::removedLastRef.
https://bugs.webkit.org/show_bug.cgi?id=162467

Reviewed by Chris Dumez.

Since r205786 fixed the root cause of webkit.org/b/159372, we no longer need the workaround.
Replace it with a RELEASE_ASSERT to ensure clean state.

No new tests, covered by existing test.

* dom/Document.cpp:
(WebCore::Document::removedLastRef):


  Commit: a02220434b0e3acb396859888c80c3ec5c20a626
      https://github.com/WebKit/WebKit/commit/a02220434b0e3acb396859888c80c3ec5c20a626
  Author: Yusuke Suzuki <ysuzuki at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WTF/ChangeLog
    M Source/WTF/wtf/HashTable.h
    M Source/WTF/wtf/Ref.h

  Log Message:
  -----------
  Merge r205836 - [WTF] HashTable's rehash is not compatible to Ref<T> and ASan
https://bugs.webkit.org/show_bug.cgi?id=161763

Reviewed by Darin Adler.

Destructors of HashTable's empty values need to be called while ones of deleted values don't.

* wtf/HashTable.h:
(WTF::KeyTraits>::deallocateTable):
* wtf/Ref.h:


  Commit: fbe5156f73459e35a13047c98a9b105208f31a2b
      https://github.com/WebKit/WebKit/commit/fbe5156f73459e35a13047c98a9b105208f31a2b
  Author: Filip Pizlo <fpizlo at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WTF/ChangeLog
    M Source/WTF/wtf/ParkingLot.cpp

  Log Message:
  -----------
  Merge r205859 - ParkingLot is going to have a bad time with threads dying
https://bugs.webkit.org/show_bug.cgi?id=161893

Reviewed by Michael Saboff.

If a thread dies right as it falls out of parkConditionally, then unparkOne() and friends
might die because they will dereference a deallocated ThreadData.

The solution is to ref-count ThreadData's. When unparkOne() and friends want to hold onto a
ThreadData past the queue lock, they can use RefPtr<>.

* wtf/ParkingLot.cpp:
(WTF::ParkingLot::unparkOne):
(WTF::ParkingLot::unparkOneImpl):
(WTF::ParkingLot::unparkAll):


  Commit: 015fbc7ed6c2ff5259b9bcfaac1f7d857dc8827d
      https://github.com/WebKit/WebKit/commit/015fbc7ed6c2ff5259b9bcfaac1f7d857dc8827d
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/forms/assert-on-input-type-change-expected.txt
    A LayoutTests/fast/forms/assert-on-input-type-change.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/html/ImageInputType.cpp

  Log Message:
  -----------
  Merge r205861 - Input type object and the associated render can go out of sync.
https://bugs.webkit.org/show_bug.cgi?id=161871
<rdar://problem/28178094>

Reviewed by Antti Koivisto.

Source/WebCore:

Bail out when we've got a mismatched renderer.

Test: fast/forms/assert-on-input-type-change.html

* html/ImageInputType.cpp:
(WebCore::ImageInputType::altAttributeChanged):

LayoutTests:

* fast/forms/assert-on-input-type-change-expected.txt: Added.
* fast/forms/assert-on-input-type-change.html: Added.


  Commit: 77875ee742bb0e7876e245ce3b7998e7ad62ad9c
      https://github.com/WebKit/WebKit/commit/77875ee742bb0e7876e245ce3b7998e7ad62ad9c
  Author: JF Bastien <jfbastien at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WTF/ChangeLog
    M Source/WTF/wtf/Atomics.h

  Log Message:
  -----------
  Merge r205914 - Alwasys inline atomic operations
https://bugs.webkit.org/show_bug.cgi?id=155371

Reviewed by Geoffrey Garen.

Fixes "build fails with memory model cannot be stronger than
success memory model for ‘__atomic_compare_exchange’".

Pre-5 revisions of GCC at Os only generated an error message
related to invalid failure memory ordering. The reason is that
libstdc++ tries to be clever about enforcing the C++ standard's
clause [atomics.types.operations.req] ¶21 which states:

    Requires: The failure argument shall not be
    `memory_order_release` nor `memory_order_acq_rel`. The failure
    argument shall be no stronger than the success argument.

It fails at doing this because its inlining heuristics are
modified by Os, and they're not quite as dumb as O0 but not smart
enough to get to the good code at O1. Adding ALWAYS_INLINE fixes
the silliness at Os, leaves O1 great, and makes O0 slightly less
bad but still pretty bad.

The other good news is that I'm going to get this particular
problem fixed in the version of C++ which will come after C++17:

https://github.com/jfbastien/papers/blob/master/source/P0418r1.bs

While we're at it we should always inline all of these wrapped
functions because the generated code is horrendous if the memory
order isn't known at compile time.

* wtf/Atomics.h:
(WTF::Atomic::load):
(WTF::Atomic::store):
(WTF::Atomic::compareExchangeWeak):
(WTF::Atomic::compareExchangeStrong):
(WTF::Atomic::exchangeAndAdd):
(WTF::Atomic::exchange):


  Commit: a8618d4432ae43130692b37d2f8aa2c8c16d58c3
      https://github.com/WebKit/WebKit/commit/a8618d4432ae43130692b37d2f8aa2c8c16d58c3
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/RenderObject.cpp

  Log Message:
  -----------
  Merge r205920 - ShowRenderTree should take position offset into account when printing inflow positioned renderers.
https://bugs.webkit.org/show_bug.cgi?id=161978

Reviewed by Simon Fraser.

Adjust (x, y) with the inflow positioned renderer's offset.

Not testable.

* rendering/RenderObject.cpp:
(WebCore::RenderObject::showRenderObject):


  Commit: 34f800c5f9fca8416cd8337082fafc9e78628083
      https://github.com/WebKit/WebKit/commit/34f800c5f9fca8416cd8337082fafc9e78628083
  Author: JF Bastien <jfbastien at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WTF/ChangeLog
    M Source/WTF/wtf/Atomics.h

  Log Message:
  -----------
  Merge r205921 - Atomics on ARM don't require full-system fencing, and other minutiae
https://bugs.webkit.org/show_bug.cgi?id=161928

Reviewed by Geoffrey Garen.

Add cmpxchg versions with both success and failure memory
ordering. In some interesting cases we can craft code which needs
barriers which aren't as strong.

weakCompareAndSwap is super dubious, its 3 uses seem
questionable... but for now I'm just adding debug asserts.

Rename armv7_dmb* functions to arm_dmb* because they apply to v7
and v8 (or more precisely; to ARMv7's ARM and Thumb2, as well as
ARMv8's aarch32 A32/T32 and aarch64).

Use inner-shareability domain for ARM barriers instead of
full-system. This is what C++ uses.

The default case for barriers simply used a compiler barrier. This
is generally wrong, e.g. for MIPS.

* wtf/Atomics.h:
(WTF::Atomic::compareExchangeWeak): offer two-order version
(WTF::Atomic::compareExchangeStrong): offer two-order version
(WTF::weakCompareAndSwap): a few assertions
(WTF::arm_dmb): rename since it applies to ARMv7 and v8; make it innser-shareable
(WTF::arm_dmb_st): rename since it applies to ARMv7 and v8; make it innser-shareable
(WTF::loadLoadFence): incorrect generally
(WTF::loadStoreFence): incorrect generally
(WTF::storeLoadFence): incorrect generally
(WTF::storeStoreFence): incorrect generally
(WTF::memoryBarrierAfterLock): incorrect generally
(WTF::memoryBarrierBeforeUnlock): incorrect generally
(WTF::armV7_dmb): Deleted.
(WTF::armV7_dmb_st): Deleted.


  Commit: c1baafffd7745ca636f69133674c403e772b94eb
      https://github.com/WebKit/WebKit/commit/c1baafffd7745ca636f69133674c403e772b94eb
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    M LayoutTests/fast/table/overflow-table-collapsed-borders-section-self-painting-layer-painting-expected.txt
    M LayoutTests/platform/ios-simulator/media/audio-repaint-expected.txt
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/RenderLayer.cpp

  Log Message:
  -----------
  Merge r205970 - Cleanup RenderLayer::shouldBeNormalFlowOnly
https://bugs.webkit.org/show_bug.cgi?id=161981

Reviewed by Simon Fraser.

Source/WebCore:

This patch changes the logic of figuring about if a particular layer is normal flow only by simply checking
if the layer creates a stacking context. If it does, we assume that it can't be a normal flow layer anymore.
This patch slightly changes behaviour by making layers with isolation and reflection to be non normal flow layers anymore.

Covered by existing testcases.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects):

LayoutTests:

Rebaselining.

* fast/table/overflow-table-collapsed-borders-section-self-painting-layer-painting-expected.txt:


  Commit: eceaca4bfe5f104516026a3fd6e53b6a080df8b0
      https://github.com/WebKit/WebKit/commit/eceaca4bfe5f104516026a3fd6e53b6a080df8b0
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/compositing/assert-on-will-change-transform-with-composited-descendant-expected.txt
    A LayoutTests/compositing/assert-on-will-change-transform-with-composited-descendant.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/RenderLayer.cpp
    M Source/WebCore/rendering/style/WillChangeData.cpp
    M Source/WebCore/rendering/style/WillChangeData.h

  Log Message:
  -----------
  Merge r205999 - ASSERTION FAILED: willBeComposited == needsToBeComposited(layer) in WebCore::RenderLayerCompositor::computeCompositingRequirements
https://bugs.webkit.org/show_bug.cgi?id=151097
<rdar://problem/27711678>

Reviewed by Simon Fraser.

Source/WebCore:

This patch ensures that when will-change property triggers stacking context, we make the associated layer a non-normal flow layer.
(This is similar to what any other stacking context-triggering CSS property does.)

Test: compositing/assert-on-will-change-transform-with-composited-descendant.html

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects):

LayoutTests:

* compositing/assert-on-will-change-transform-with-composited-descendant-expected.txt: Added.
* compositing/assert-on-will-change-transform-with-composited-descendant.html: Added.


  Commit: 545e57c140a8ac5fcdd6c8e146b79cf24b009d9a
      https://github.com/WebKit/WebKit/commit/545e57c140a8ac5fcdd6c8e146b79cf24b009d9a
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.h

  Log Message:
  -----------
  Merge r206061 - ASSERTION FAILED: The string being removed is atomic in the string table of an other thread! iterator != atomicStringTable.end() at Source/WTF/wtf/text/AtomicStringImpl.cpp(453)
https://bugs.webkit.org/show_bug.cgi?id=161800

Reviewed by Žan Doberšek.

Speculative fix. These strings are created as static objects on a secondary thread, but all
static objects are destroyed in exit handlers on the main thread, and AtomicStrings must
always be destroyed on the same thread they are created.

* platform/graphics/texmap/TextureMapperShaderProgram.h:


  Commit: a79be8dca5aef23c08c264a2ea99459f1f6dae8e
      https://github.com/WebKit/WebKit/commit/a79be8dca5aef23c08c264a2ea99459f1f6dae8e
  Author: Chris Dumez <cdumez at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/http/tests/cache/iframe-detach-expected.txt
    A LayoutTests/http/tests/cache/iframe-detach.html
    A LayoutTests/http/tests/cache/resources/slow-iframe.php
    A LayoutTests/http/tests/navigation/frames-same-url-cancel-load-expected.txt
    A LayoutTests/http/tests/navigation/frames-same-url-cancel-load.html
    A LayoutTests/http/tests/navigation/resources/success.html
    M LayoutTests/http/tests/security/XFrameOptions/x-frame-options-deny-multiple-clients-expected.txt
    M Source/WebCore/ChangeLog
    M Source/WebCore/loader/cache/CachedResourceLoader.cpp

  Log Message:
  -----------
  Merge r206062 - Cancelling one frame's load cancels load in other frames that have the same URL as well
https://bugs.webkit.org/show_bug.cgi?id=162094

Reviewed by Antti Koivisto.

Source/WebCore:

Cancelling one frame's load cancels load in other frames that have the same URL as well.

So if you have several frames that are loading URL X and you navigate one of the frames
to Y, then the load of X will be cancelled and this frame will navigate to Y. All other
frames will not load URL X even though they should.

The issue is that all the DocumentLoaders share the same CachedResource because of the
memoryCache. When we call DocumentLoader::stopLoading(), it will cancel the
CachedResource's load even though there are several clients for this CachedResource
and other clients still want the load.

The approach chosen in this patch is to not reuse CachedResources that are still
loading when trying to load a main resource. This is not the most efficient approach.
I still chose this approach because:
- It is very unlikely to introduce new bugs.
- The change is very simple.
- This is a corner case (several iframes having the same URL and cancelling the load in
  one of them).

Test: http/tests/navigation/frames-same-url-cancel-load.html

* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::determineRevalidationPolicy):

LayoutTests:

Add layout test coverage.

* http/tests/cache/iframe-detach-expected.txt: Added.
* http/tests/cache/iframe-detach.html: Added.
* http/tests/cache/resources/slow-iframe.php: Added.
Import Alex Christensen's test from Bug 157563.

* http/tests/navigation/frames-same-url-cancel-load-expected.txt: Added.
* http/tests/navigation/frames-same-url-cancel-load.html: Added.
* http/tests/navigation/resources/success.html: Added.
* http/tests/security/XFrameOptions/x-frame-options-deny-multiple-clients-expected.txt:


  Commit: cf9ac3d917a06b02067696625f069e36216395aa
      https://github.com/WebKit/WebKit/commit/cf9ac3d917a06b02067696625f069e36216395aa
  Author: David Kilzer <ddkilzer at webkit.org>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/loader/WorkerThreadableLoader.cpp

  Log Message:
  -----------
  Merge r206074 - MainThreadBridge needs an isolatedCopy() of SecurityOrigin
<https://webkit.org/b/162116>
<rdar://problem/27525870>

Reviewed by Carlos Garcia Campos.

Covered by existing tests.

* loader/WorkerThreadableLoader.cpp:
(WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge):
Make an isolatedCopy() of SecurityOrigin here since that's the
correct idiom to use when the object is passed from a worker
thread back to the main thread.  Fix suggested by Daniel Bates.


  Commit: c41ce3f9f5cce7a7d4b6db5e72b60d9521590d89
      https://github.com/WebKit/WebKit/commit/c41ce3f9f5cce7a7d4b6db5e72b60d9521590d89
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/multicol/assert-on-cliprect-caching-when-paginated-expected.txt
    A LayoutTests/fast/multicol/assert-on-cliprect-caching-when-paginated.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/RenderLayer.cpp

  Log Message:
  -----------
  Merge r206100 - ASSERTION FAILED: clipRectsContext.rootLayer == m_clipRectsCache->m_clipRectsRoot[clipRectsType] while loading guardian.co.uk
https://bugs.webkit.org/show_bug.cgi?id=162129
<rdar://problem/28353350>

Reviewed by Antti Koivisto.

Source/WebCore:

Neither ::localClipRect() nor ::selfClipRect() accounts for paginated context while computing the cliprects (See FIXMEs).
This patch ensures that we don't end up caching these invalid cliprects.

Test: fast/multicol/assert-on-cliprect-caching-when-paginated.html

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects):

LayoutTests:

* fast/multicol/assert-on-cliprect-caching-when-paginated-expected.txt: Added.
* fast/multicol/assert-on-cliprect-caching-when-paginated.html: Added.


  Commit: b25c43aff6d39d930c29697cd9f639b01fa4674e
      https://github.com/WebKit/WebKit/commit/b25c43aff6d39d930c29697cd9f639b01fa4674e
  Author: Chris Dumez <cdumez at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M LayoutTests/imported/w3c/ChangeLog
    A LayoutTests/imported/w3c/web-platform-tests/html/the-xhtml-syntax/parsing-xhtml-documents/w3c-import.log
    A LayoutTests/imported/w3c/web-platform-tests/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support-expected.txt
    A LayoutTests/imported/w3c/web-platform-tests/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support.htm
    M Source/WebCore/ChangeLog
    M Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp

  Log Message:
  -----------
  Merge r206118 - Update XHTMLParser to recognize "-//W3C//DTD MathML 2.0//EN" public identifier
https://bugs.webkit.org/show_bug.cgi?id=162166

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Import test coverage from W3C web-platform-tests.

* web-platform-tests/html/the-xhtml-syntax/parsing-xhtml-documents/w3c-import.log: Added.
* web-platform-tests/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support-expected.txt: Added.
* web-platform-tests/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support.htm: Added.

Source/WebCore:

Update XHTMLParser to recognize "-//W3C//DTD MathML 2.0//EN" public identifier as
per the latest HTML specification.
- https://html.spec.whatwg.org/#parsing-xhtml-documents

Firefox already recognizes it properly.

Test: imported/w3c/web-platform-tests/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support.htm

* xml/parser/XMLDocumentParserLibxml2.cpp:
(WebCore::convertUTF16EntityToUTF8):
Fix assertion that was causing the new test to crash in debug. The input '\u0026'
gets converted to '&' which is only 1 character. However, the assertion wrongly
expected WTF::Unicode::convertUTF16ToUTF8() to generate more than 1 character.

(WebCore::externalSubsetHandler):
Add "-//W3C//DTD MathML 2.0//EN" to the list.


  Commit: 8f13ed292aa486cfef0d372674555cf6bdb45aba
      https://github.com/WebKit/WebKit/commit/8f13ed292aa486cfef0d372674555cf6bdb45aba
  Author: Daniel Bates <dbates at webkit.org>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/loader/WorkerThreadableLoader.cpp

  Log Message:
  -----------
  Merge r206122 - Cleanup: Remove an extraneous copy of SecurityOrigin
https://bugs.webkit.org/show_bug.cgi?id=162118

Reviewed by Youenn Fablet.

Share one isolated copy of the SecurityOrigin between the ContentSecurityPolicy and
LoaderTaskOptions objects instead of creating two isolated copies of the SecurityOrigin.
This is safe because both ContentSecurityPolicy and LoaderTaskOptions are instantiated
in WorkerThreadableLoader::MainThreadBridge for use on the main thread only.

* loader/WorkerThreadableLoader.cpp:
(WebCore::LoaderTaskOptions::LoaderTaskOptions):
(WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge):


  Commit: 9c2ecfe1a111904484f1fbce9fd5e0e581783a54
      https://github.com/WebKit/WebKit/commit/9c2ecfe1a111904484f1fbce9fd5e0e581783a54
  Author: Jonathan Bedard <jbedard at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/dfg/DFGAbstractHeap.h
    M Source/WTF/ChangeLog
    M Source/WTF/wtf/text/Base64.cpp
    M Source/WTF/wtf/text/Base64.h

  Log Message:
  -----------
  Merge r206151 - Undefined behavior: Left shift negative number
https://bugs.webkit.org/show_bug.cgi?id=161866

Reviewed by Keith Miller.

Left shifting a negative number is undefined behavior in C/C++, although most implementations do define it. Explicitly clarifying the intended behavior due to shifting negative number in some cases.

Source/JavaScriptCore:

* dfg/DFGAbstractHeap.h:
(JSC::DFG::AbstractHeap::encode): Explicitly cast signed integer for left shift.

Source/WTF:

* wtf/text/Base64.cpp:
(WTF::base64EncodeInternal): Changed signed character to unsigned when shifting.
(WTF::base64Encode): Ditto.
(WTF::base64URLEncode): Ditto.
(WTF::base64DecodeInternal): Ditto.
* wtf/text/Base64.h: Ditto.
(WTF::SignedOrUnsignedCharVectorAdapter): Rebuilt to stop using union as a bitwise_cast.
(WTF::ConstSignedOrUnsignedCharVectorAdapter): Ditto.


  Commit: 82404f96ba23e6d91de11d22a21eb2a8ae2abe67
      https://github.com/WebKit/WebKit/commit/82404f96ba23e6d91de11d22a21eb2a8ae2abe67
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/layers/blank-content-when-child-layer-is-at-negative-big-number-expected.html
    A LayoutTests/fast/layers/blank-content-when-child-layer-is-at-negative-big-number.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/LayoutRect.cpp
    M Source/WebCore/platform/graphics/LayoutRect.h
    M Source/WebCore/rendering/RenderLayer.cpp

  Log Message:
  -----------
  Merge r206188 - REGRESSION (r204552): Athlete search on Strava gives bad rendering.
https://bugs.webkit.org/show_bug.cgi?id=162250

Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/layers/blank-content-when-child-layer-is-at-negative-big-number.html

* platform/graphics/LayoutRect.cpp:
(WebCore::LayoutRect::checkedUnite):
* platform/graphics/LayoutRect.h:
(WebCore::LayoutRect::isMaxXMaxYRepresentable):
(WebCore::LayoutRect::maxXMaxYCorner): Deleted.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects):

LayoutTests:

While computing the size of a particular layer, we unite the content size and the descendant layers' size.
If a descendant layer is positioned far off, the computed rectangle might not fully cover the original rectangles.
This happens when the 2 rectangles' distance is close to the maximum LayoutUnit value.
It's fairly common technic to put some content offscreen (top: -99999999px;). In order to keep the main content
visible, we need to ensure that the parent layer never gets cut off, while uniting it with the descendant layers.

* fast/layers/blank-content-when-child-layer-is-at-negative-big-number-expected.html: Added.
* fast/layers/blank-content-when-child-layer-is-at-negative-big-number.html: Added.


  Commit: e6674f48e2a525790d859c2baaf460ffc343cea9
      https://github.com/WebKit/WebKit/commit/e6674f48e2a525790d859c2baaf460ffc343cea9
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/Pasteboard.h
    M Source/WebCore/platform/PasteboardStrategy.h
    M Source/WebCore/platform/PlatformPasteboard.h
    M Source/WebCore/platform/gtk/DataObjectGtk.h
    M Source/WebCore/platform/gtk/PasteboardGtk.cpp
    M Source/WebCore/platform/gtk/PasteboardHelper.cpp
    M Source/WebCore/platform/gtk/PlatformPasteboardGtk.cpp
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/Shared/gtk/ArgumentCodersGtk.cpp
    M Source/WebKit2/Shared/gtk/ArgumentCodersGtk.h
    M Source/WebKit2/Shared/gtk/PasteboardContent.cpp
    M Source/WebKit2/Shared/gtk/PasteboardContent.h
    M Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp
    M Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h
    M Source/WebKit2/UIProcess/PageClient.h
    M Source/WebKit2/UIProcess/WebPageProxy.cpp
    M Source/WebKit2/UIProcess/WebPageProxy.h
    M Source/WebKit2/UIProcess/WebPageProxy.messages.in
    M Source/WebKit2/UIProcess/gtk/DragAndDropHandler.cpp
    M Source/WebKit2/UIProcess/gtk/DragAndDropHandler.h
    M Source/WebKit2/UIProcess/gtk/WebPasteboardProxyGtk.cpp
    M Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp
    M Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h
    M Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebDragClientGtk.cpp
    M Source/WebKit2/WebProcess/WebPage/WebPage.cpp
    M Source/WebKit2/WebProcess/WebPage/WebPage.h
    M Source/WebKit2/WebProcess/WebPage/WebPage.messages.in

  Log Message:
  -----------
  Merge r206197 - [GTK] Clean up DataObjectGtk handling
https://bugs.webkit.org/show_bug.cgi?id=162267

Reviewed by Michael Catanzaro.

Source/WebCore:

* platform/Pasteboard.h: Use Ref instead of RefPtr for DataObjectGtk member.
* platform/PasteboardStrategy.h: Pass a const reference to DataObjectGtk in write method and return a Ref from read.
* platform/PlatformPasteboard.h: Ditto.
* platform/gtk/DataObjectGtk.h:
(WebCore::DataObjectGtk::image): Use Image instead of GdkPixbuf.
(WebCore::DataObjectGtk::setImage):
* platform/gtk/PasteboardGtk.cpp:
(WebCore::Pasteboard::createForDragAndDrop): Use a reference instead of a pointer.
(WebCore::Pasteboard::Pasteboard): Receives a reference, so we can also remove the ASSERT.
(WebCore::Pasteboard::dataObject):
(WebCore::Pasteboard::writeToClipboard): Remove the ShouldIncludeSmartPaste parameter, callers should also update
canSmartPaste property of DataObjectGtk before calling this.
(WebCore::Pasteboard::writePlainText):
(WebCore::Pasteboard::write): Do not convert the image the GdkPixbuf, pass the image to the DataObjectGtk instead.
* platform/gtk/PasteboardHelper.cpp:
(WebCore::PasteboardHelper::fillSelectionData): Convert the DataObjectGtk image to GdkPixbuf right before
passing it to gtk_selection_data_set_pixbuf().
(WebCore::ClipboardSetData::ClipboardSetData): Use reference instead of pointer.
(WebCore::getClipboardContentsCallback):
(WebCore::clearClipboardContentsCallback): Never clear the saved DataObjectGtk, that was only needed when we had
a global DataObjectGtk associated to a GtkClipboard.
(WebCore::PasteboardHelper::writeClipboardContents): Use TemporaryChange to set the settingClipboardDataObject global.
* platform/gtk/PlatformPasteboardGtk.cpp:
(WebCore::PlatformPasteboard::writeToClipboard):
(WebCore::PlatformPasteboard::readFromClipboard):

Source/WebKit2:

In some cases the ownership of DataObjectGtk instances is not clear enough, and we have hacks to avoid memory
leaks because of that.

* Shared/gtk/ArgumentCodersGtk.cpp:
(IPC::encodeImage): Use Image instead of GdkPixbuf.
(IPC::decodeImage): Ditto.
(IPC::ArgumentCoder<DataObjectGtk>::encode):
(IPC::ArgumentCoder<DataObjectGtk>::decode):
(IPC::encode): Deleted.
(IPC::decode): Deleted.
(IPC::ArgumentCoder<DragData>::encode): Deleted.
(IPC::ArgumentCoder<DragData>::decode): Deleted.
* Shared/gtk/ArgumentCodersGtk.h:
* Shared/gtk/PasteboardContent.cpp:
(WebKit::PasteboardContent::PasteboardContent): Add empty constructor that creates a new DataObjectGtk, a
constructor that receives a const reference and another one that takes the ownership of the given DataObjectGtk.
(WebKit::PasteboardContent::encode):
(WebKit::PasteboardContent::decode):
* Shared/gtk/PasteboardContent.h: Use Ref instead of RefPtr for the DataObjectGtk member.
* UIProcess/API/gtk/PageClientImpl.cpp:
(WebKit::PageClientImpl::startDrag): Transfer the DataObjectGtk to the DragAndDropHandler, instead of using DragData.
* UIProcess/API/gtk/PageClientImpl.h:
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::performDragControllerAction): Instead of sending a DragData object to the web process,
send the DataObjectGtk and DragData members needed as parameters.
(WebKit::WebPageProxy::startDrag): Transfer the received DataObjectGtk to page client, instead of using
DragData. Also notify the web process that drag started.
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in: Update StartDrag message parameters.
* UIProcess/gtk/DragAndDropHandler.cpp:
(WebKit::DragAndDropHandler::DragAndDropHandler): Remove unneeded initialization.
(WebKit::DragAndDropHandler::startDrag): Take ownership of the given DataObjectGtk.
* UIProcess/gtk/DragAndDropHandler.h:
* UIProcess/gtk/WebPasteboardProxyGtk.cpp:
(WebKit::WebPasteboardProxy::writeToClipboard):
(WebKit::WebPasteboardProxy::readFromClipboard):
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::writeToClipboard):
(WebKit::WebPlatformStrategies::readFromClipboard):
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:
* WebProcess/WebCoreSupport/gtk/WebDragClientGtk.cpp:
(WebKit::convertCairoSurfaceToShareableBitmap):
(WebKit::WebDragClient::startDrag): Do not create a DragData and pass the DataObjectGtk directly to the
message. Also notify the WebPage that drag is about to start.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::performDragControllerAction): Remove explicit DataObjectGtk derefs and simply create a
DragData using the DataObjectGtk pointer as platform data.
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in: Update PerformDragControllerAction message parameters.


  Commit: 096d42e655efc3c4a9adf44a5cc88bdb119e0792
      https://github.com/WebKit/WebKit/commit/096d42e655efc3c4a9adf44a5cc88bdb119e0792
  Author: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/PlatformPasteboard.h
    M Source/WebCore/platform/gtk/PasteboardHelper.h

  Log Message:
  -----------
  Merge r206200 - [GTK] Fix build failure in clipboard support
https://bugs.webkit.org/show_bug.cgi?id=162261

Patch by Jeremy Huddleston Sequoia <jeremyhu at apple.com> on 2016-09-21
Reviewed by Carlos Garcia Campos.

* platform/PlatformPasteboard.h: Add missing #include <functional>
* platform/gtk/PasteboardHelper.h: Add missing #include <functional>


  Commit: b789a383573cb674fd60a460f99f51e8f8ba67e7
      https://github.com/WebKit/WebKit/commit/b789a383573cb674fd60a460f99f51e8f8ba67e7
  Author: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/gtk/ScrollbarThemeGtk.cpp

  Log Message:
  -----------
  Merge r206205 - [GTK] Fix build failure of ScrollbarThemeGtk with libc++
https://bugs.webkit.org/show_bug.cgi?id=162302

Patch by Jeremy Huddleston Sequoia <jeremyhu at apple.com> on 2016-09-21
Reviewed by Carlos Garcia Campos.

* platform/gtk/ScrollbarThemeGtk.cpp:
(WebCore::ScrollbarThemeGtk::paint): Add missing #include <cstdlib>


  Commit: 673a9de349ac8a629f927ee33080d2719de29225
      https://github.com/WebKit/WebKit/commit/673a9de349ac8a629f927ee33080d2719de29225
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/PlatformGTK.cmake
    M Source/WebCore/editing/gtk/EditorGtk.cpp
    M Source/WebCore/page/gtk/DragControllerGtk.cpp
    M Source/WebCore/platform/DragData.h
    M Source/WebCore/platform/Pasteboard.h
    M Source/WebCore/platform/PasteboardStrategy.h
    M Source/WebCore/platform/PlatformPasteboard.h
    R Source/WebCore/platform/gtk/DataObjectGtk.cpp
    R Source/WebCore/platform/gtk/DataObjectGtk.h
    M Source/WebCore/platform/gtk/DragDataGtk.cpp
    M Source/WebCore/platform/gtk/PasteboardGtk.cpp
    M Source/WebCore/platform/gtk/PasteboardHelper.cpp
    M Source/WebCore/platform/gtk/PasteboardHelper.h
    M Source/WebCore/platform/gtk/PlatformPasteboardGtk.cpp
    A Source/WebCore/platform/gtk/SelectionData.cpp
    A Source/WebCore/platform/gtk/SelectionData.h
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/PlatformGTK.cmake
    M Source/WebKit2/Shared/gtk/ArgumentCodersGtk.cpp
    M Source/WebKit2/Shared/gtk/ArgumentCodersGtk.h
    R Source/WebKit2/Shared/gtk/PasteboardContent.cpp
    R Source/WebKit2/Shared/gtk/PasteboardContent.h
    A Source/WebKit2/Shared/gtk/WebSelectionData.cpp
    A Source/WebKit2/Shared/gtk/WebSelectionData.h
    M Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp
    M Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h
    M Source/WebKit2/UIProcess/PageClient.h
    M Source/WebKit2/UIProcess/WebPageProxy.cpp
    M Source/WebKit2/UIProcess/WebPageProxy.h
    M Source/WebKit2/UIProcess/WebPageProxy.messages.in
    M Source/WebKit2/UIProcess/WebPasteboardProxy.h
    M Source/WebKit2/UIProcess/WebPasteboardProxy.messages.in
    M Source/WebKit2/UIProcess/gtk/DragAndDropHandler.cpp
    M Source/WebKit2/UIProcess/gtk/DragAndDropHandler.h
    M Source/WebKit2/UIProcess/gtk/WebPasteboardProxyGtk.cpp
    M Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp
    M Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h
    M Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebDragClientGtk.cpp
    M Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp
    M Source/WebKit2/WebProcess/WebPage/WebPage.cpp
    M Source/WebKit2/WebProcess/WebPage/WebPage.h
    M Source/WebKit2/WebProcess/WebPage/WebPage.messages.in

  Log Message:
  -----------
  Merge r206256 - [GTK] Rename DataObjectGtk as SelectionData
https://bugs.webkit.org/show_bug.cgi?id=162380

Reviewed by Žan Doberšek.

Source/WebCore:

DataObjectGtk represents the data of a selection, like GtkSelectionData, used for clipboard and drag adn drop
operations. Data object is a very generic name, and the Gtk suffix sounds like if this is the GTK implementation
of a generic DataObject class.

* PlatformGTK.cmake:
* editing/gtk/EditorGtk.cpp:
(WebCore::createFragmentFromPasteboardData):
* page/gtk/DragControllerGtk.cpp:
* platform/DragData.h:
* platform/Pasteboard.h:
* platform/PasteboardStrategy.h:
(WebCore::PasteboardStrategy::~PasteboardStrategy): Deleted.
* platform/PlatformPasteboard.h:
* platform/gtk/DragDataGtk.cpp:
* platform/gtk/PasteboardGtk.cpp:
(WebCore::Pasteboard::createPrivate):
(WebCore::Pasteboard::createForDragAndDrop):
(WebCore::Pasteboard::Pasteboard):
(WebCore::Pasteboard::selectionData):
(WebCore::selectionDataTypeFromHTMLClipboardType):
(WebCore::Pasteboard::writeToClipboard):
(WebCore::Pasteboard::readFromClipboard):
(WebCore::Pasteboard::writeString):
(WebCore::Pasteboard::writePlainText):
(WebCore::Pasteboard::write):
(WebCore::Pasteboard::writePasteboard):
(WebCore::Pasteboard::clear):
(WebCore::Pasteboard::canSmartReplace):
(WebCore::Pasteboard::read):
(WebCore::Pasteboard::hasData):
(WebCore::Pasteboard::types):
(WebCore::Pasteboard::readString):
(WebCore::Pasteboard::readFilenames):
* platform/gtk/PasteboardHelper.cpp:
(WebCore::PasteboardHelper::getClipboardContents):
(WebCore::PasteboardHelper::targetListForSelectionData):
(WebCore::PasteboardHelper::fillSelectionData):
(WebCore::ClipboardSetData::ClipboardSetData):
(WebCore::getClipboardContentsCallback):
(WebCore::PasteboardHelper::writeClipboardContents):
(WebCore::clearClipboardContentsCallback): Deleted.
* platform/gtk/PasteboardHelper.h:
* platform/gtk/PlatformPasteboardGtk.cpp:
(WebCore::PlatformPasteboard::writeToClipboard):
(WebCore::PlatformPasteboard::readFromClipboard):
* platform/gtk/SelectionData.cpp: Renamed from Source/WebCore/platform/gtk/DataObjectGtk.cpp.
(WebCore::SelectionData::setText):
(WebCore::SelectionData::setURIList):
(WebCore::SelectionData::setURL):
(WebCore::SelectionData::urlLabel):
(WebCore::SelectionData::clearAllExceptFilenames):
(WebCore::SelectionData::clearAll):
* platform/gtk/SelectionData.h: Renamed from Source/WebCore/platform/gtk/DataObjectGtk.h.
(WebCore::SelectionData::create):
(WebCore::SelectionData::text):
(WebCore::SelectionData::hasText):
(WebCore::SelectionData::clearText):
(WebCore::SelectionData::setMarkup):
(WebCore::SelectionData::markup):
(WebCore::SelectionData::hasMarkup):
(WebCore::SelectionData::clearMarkup):
(WebCore::SelectionData::hasURL):
(WebCore::SelectionData::clearURL):
(WebCore::SelectionData::filenames):
(WebCore::SelectionData::hasURIList):
(WebCore::SelectionData::hasFilenames):
(WebCore::SelectionData::setImage):
(WebCore::SelectionData::image):
(WebCore::SelectionData::hasImage):
(WebCore::SelectionData::unknownTypeData):
(WebCore::SelectionData::unknownTypes):
(WebCore::SelectionData::hasUnknownTypeData):
(WebCore::SelectionData::canSmartReplace):
(WebCore::SelectionData::url): Deleted.
(WebCore::SelectionData::uriList): Deleted.
(WebCore::SelectionData::clearURIList): Deleted.
(WebCore::SelectionData::clearImage): Deleted.
(WebCore::SelectionData::setUnknownTypeData): Deleted.

Source/WebKit2:

* PlatformGTK.cmake:
* Shared/gtk/ArgumentCodersGtk.cpp:
(IPC::ArgumentCoder<SelectionData>::encode):
(IPC::ArgumentCoder<SelectionData>::decode):
* Shared/gtk/ArgumentCodersGtk.h:
* Shared/gtk/WebSelectionData.cpp: Renamed from Source/WebKit2/Shared/gtk/PasteboardContent.cpp.
(WebKit::WebSelectionData::WebSelectionData):
(WebKit::WebSelectionData::encode):
(WebKit::WebSelectionData::decode):
* Shared/gtk/WebSelectionData.h: Renamed from Source/WebKit2/Shared/gtk/PasteboardContent.h.
* UIProcess/API/gtk/PageClientImpl.cpp:
(WebKit::PageClientImpl::startDrag):
* UIProcess/API/gtk/PageClientImpl.h:
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::performDragControllerAction):
(WebKit::WebPageProxy::startDrag):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/WebPasteboardProxy.h:
* UIProcess/WebPasteboardProxy.messages.in:
* UIProcess/gtk/DragAndDropHandler.cpp:
(WebKit::DragAndDropHandler::DroppingContext::DroppingContext):
(WebKit::DragAndDropHandler::startDrag):
(WebKit::DragAndDropHandler::fillDragData):
(WebKit::DragAndDropHandler::finishDrag):
(WebKit::DragAndDropHandler::dropDataSelection):
(WebKit::DragAndDropHandler::dragEntered):
(WebKit::DragAndDropHandler::dragDataSelection):
(WebKit::DragAndDropHandler::dragMotion):
(WebKit::DragAndDropHandler::dragLeave):
(WebKit::DragAndDropHandler::drop):
* UIProcess/gtk/DragAndDropHandler.h:
* UIProcess/gtk/WebPasteboardProxyGtk.cpp:
(WebKit::WebPasteboardProxy::writeToClipboard):
(WebKit::WebPasteboardProxy::readFromClipboard):
(WebKit::WebPasteboardProxy::setPrimarySelectionOwner): Deleted.
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::writeToClipboard):
(WebKit::WebPlatformStrategies::readFromClipboard):
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:
* WebProcess/WebCoreSupport/gtk/WebDragClientGtk.cpp:
(WebKit::WebDragClient::startDrag):
* WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::performDragControllerAction):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:


  Commit: 07b32f150cc56749bc9b528ac106eaed85dc0258
      https://github.com/WebKit/WebKit/commit/07b32f150cc56749bc9b528ac106eaed85dc0258
  Author: Daniel Bates <dbates at webkit.org>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    M LayoutTests/http/tests/security/xssAuditor/resources/echo-property.pl
    A LayoutTests/http/tests/security/xssAuditor/script-tag-with-source-data-url4-expected.txt
    A LayoutTests/http/tests/security/xssAuditor/script-tag-with-source-data-url4.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/html/parser/XSSAuditor.cpp

  Log Message:
  -----------
  Merge r206276 - [XSS Auditor] Truncate data URLs at quotes
https://bugs.webkit.org/show_bug.cgi?id=161937

Reviewed by David Kilzer.

Source/WebCore:

Merged from Blink:
<https://chromium.googlesource.com/chromium/src/+/c6d6331190dd43f09459e2341c3111e796f9de12/>

Truncate a data URL at the first single or double quote character to avoid considering
characters that may come from the page content following an injected data URL.

Test: http/tests/security/xssAuditor/script-tag-with-source-data-url4.html

* html/parser/XSSAuditor.cpp:
(WebCore::truncateForSrcLikeAttribute):

LayoutTests:

* http/tests/security/xssAuditor/resources/echo-property.pl:
* http/tests/security/xssAuditor/script-tag-with-source-data-url4-expected.txt: Added.
* http/tests/security/xssAuditor/script-tag-with-source-data-url4.html: Added.


  Commit: 47472ad5d2a0c040f289af73bf4ca5f520ba4cee
      https://github.com/WebKit/WebKit/commit/47472ad5d2a0c040f289af73bf4ca5f520ba4cee
  Author: Daniel Bates <dbates at webkit.org>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/http/tests/security/xssAuditor/script-tag-with-source-data-url5-expected.txt
    A LayoutTests/http/tests/security/xssAuditor/script-tag-with-source-data-url5.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/html/parser/XSSAuditor.cpp

  Log Message:
  -----------
  Merge r206277 - [XSS Auditor] HTML5 entities can bypass XSS Auditor
https://bugs.webkit.org/show_bug.cgi?id=161939
<rdar://problem/25819815>

Reviewed by David Kilzer.

Source/WebCore:

Merged from Blink:
<https://chromium.googlesource.com/chromium/src/+/04e44060dccee711842d08652bf1c622a0f43179>

Truncate a src-like URL at the first & character as it may mark the start of an HTML entity.
We will evaluate the effectiveness of this approach and adjust it if necessary if we see an
increase in false positives.

HTML5 defines more named character references, including named character references for common
punctuation characters. Characters following some punctuation characters may come from the page
itself. We truncate src-like strings at punctuation characters to avoid considering such page
content when performing a match.

Test: http/tests/security/xssAuditor/script-tag-with-source-data-url5.html

* html/parser/XSSAuditor.cpp:
(WebCore::truncateForSrcLikeAttribute):

LayoutTests:

* http/tests/security/xssAuditor/script-tag-with-source-data-url5-expected.txt: Added.
* http/tests/security/xssAuditor/script-tag-with-source-data-url5.html: Added.


  Commit: d753f75e94f79a7107a990776495378758a719ba
      https://github.com/WebKit/WebKit/commit/d753f75e94f79a7107a990776495378758a719ba
  Author: Brady Eidson <beidson at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/storage/indexeddb/modern/multiple-objectstore-index-cursor-collision-expected.txt
    A LayoutTests/storage/indexeddb/modern/multiple-objectstore-index-cursor-collision-private-expected.txt
    A LayoutTests/storage/indexeddb/modern/multiple-objectstore-index-cursor-collision-private.html
    A LayoutTests/storage/indexeddb/modern/multiple-objectstore-index-cursor-collision.html
    A LayoutTests/storage/indexeddb/modern/resources/multiple-objectstore-index-cursor-collision.js
    M Source/WebCore/ChangeLog
    M Source/WebCore/Modules/indexeddb/server/SQLiteIDBCursor.cpp

  Log Message:
  -----------
  Merge r206280 - IDBIndex.openCursor() matches indices on multiple object stores.
<rdar://problem/28434463> and https://bugs.webkit.org/show_bug.cgi?id=158833

Reviewed by Alex Christensen.

Source/WebCore:

Tests: storage/indexeddb/modern/multiple-objectstore-index-cursor-collision-private.html
       storage/indexeddb/modern/multiple-objectstore-index-cursor-collision.html

* Modules/indexeddb/server/SQLiteIDBCursor.cpp:
(WebCore::IDBServer::buildIndexStatement): Need to include the object store id in the statement for
  index cursors, otherwise there will be collisions amongst multiple object stores that happen to
  share primary keys.
(WebCore::IDBServer::SQLiteIDBCursor::bindArguments):

LayoutTests:

* storage/indexeddb/modern/multiple-objectstore-index-cursor-collision-expected.txt: Added.
* storage/indexeddb/modern/multiple-objectstore-index-cursor-collision-private-expected.txt: Added.
* storage/indexeddb/modern/multiple-objectstore-index-cursor-collision-private.html: Added.
* storage/indexeddb/modern/multiple-objectstore-index-cursor-collision.html: Added.
* storage/indexeddb/modern/resources/multiple-objectstore-index-cursor-collision.js: Added.


  Commit: 7bc85b91c4c5a996fd8ed5738754fc472e2f8690
      https://github.com/WebKit/WebKit/commit/7bc85b91c4c5a996fd8ed5738754fc472e2f8690
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/AcceleratedDrawingAreaProxy.cpp
    M Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreX11.cpp
    M Source/WebKit2/WebProcess/WebPage/gtk/AcceleratedSurfaceX11.cpp

  Log Message:
  -----------
  Merge r206294 - [GTK] Improve performance when resizing a window with multiple web views in X11
https://bugs.webkit.org/show_bug.cgi?id=162413

Reviewed by Michael Catanzaro.

Resizing a window with a single way view performs good enough, but when adding more tabs, the performance
decreases a lot. This is because resize is a sync operation, and the UI process waits for the web process to
have a new update for the new size, while still draws the previous frame. This is needed for the visible web
view, to avoid flickering and artifacts while resizing, but for all other hidden web views, we don't really need
to block the UI process. This doesn't happen in Wayland, because in Wayland we never block the UI process while
waiting for web process update after a resize.

* UIProcess/AcceleratedDrawingAreaProxy.cpp:
(WebKit::AcceleratedDrawingAreaProxy::waitForAndDispatchDidUpdateBackingStoreState): Return early if the web
view is not visible.
* UIProcess/gtk/AcceleratedBackingStoreX11.cpp:
(WebKit::AcceleratedBackingStoreX11::update): Only schedule a redraw on a damage event when the view is visible.
* WebProcess/WebPage/gtk/AcceleratedSurfaceX11.cpp:
(WebKit::AcceleratedSurfaceX11::AcceleratedSurfaceX11): Do a XSync right after creating the new pixmap.
(WebKit::AcceleratedSurfaceX11::resize): Ditto.


  Commit: 8824bb6965ff52569f46a5cead7b1196f345678e
      https://github.com/WebKit/WebKit/commit/8824bb6965ff52569f46a5cead7b1196f345678e
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/js/intl-invalid-locale-crash-expected.txt
    A LayoutTests/js/intl-invalid-locale-crash.html
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/runtime/IntlCollator.cpp
    M Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp
    M Source/JavaScriptCore/runtime/IntlNumberFormat.cpp
    M Source/WTF/ChangeLog
    M Source/WTF/wtf/PlatformUserPreferredLanguagesUnix.cpp
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp
    M Tools/ChangeLog
    M Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp

  Log Message:
  -----------
  Merge r206295 - REGRESSION(r194387): Crash on github.com in IntlDateTimeFormat::resolvedOptions in C locale
https://bugs.webkit.org/show_bug.cgi?id=162139

Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

The crash happens in unix ports because the resolved locale is empty when system locale is "C". IntlObject
considers any language tag with a size < 2 to be an invalid language, so "C" is not a valid language to resolve
the locale. We should ensure that WTF::platformUserPreferredLanguages() never returns invalid languages, but
that's not enough, because languages can be overriden from the public API, so we need to handle those cases and
throw exceptions instead of crashing.

* runtime/IntlCollator.cpp:
(JSC::IntlCollator::initializeCollator): Throw a exception when we fail to resolve the locale.
* runtime/IntlDateTimeFormat.cpp:
(JSC::IntlDateTimeFormat::initializeDateTimeFormat): Ditto.
* runtime/IntlNumberFormat.cpp:
(JSC::IntlNumberFormat::initializeNumberFormat): Ditto.

Source/WebKit2:

Handle the case of "C" locale passed by the user using "en-US" as default to match what
WTF::platformUserPreferredLanguages() does.

* UIProcess/API/gtk/WebKitWebContext.cpp:
(webkit_web_context_set_preferred_languages): Remove the call to languageDidChange() because
overrideUserPreferredLanguages() already calls it, so we were actually notifying the observers twice.

Source/WTF:

Handle the case of "C" or "POSIX" locale and use "en-US" as default. That matches what ICU and other ports do,
as well as what layout tests expect (some tests like js/intl-collator.html pass in the bots only because we use
en-US as system locale in those bots).

* wtf/PlatformUserPreferredLanguagesUnix.cpp:
(WTF::platformLanguage):

Tools:

Add test cases to check the behavior when using the C locale and an invalid locale.

* TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp:
(testWebContextLanguages):

LayoutTests:

* js/intl-invalid-locale-crash-expected.txt: Added.
* js/intl-invalid-locale-crash.html: Added.


  Commit: bc7a0693f80cea8eb55f143f2aa2536438a292e4
      https://github.com/WebKit/WebKit/commit/bc7a0693f80cea8eb55f143f2aa2536438a292e4
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Tools/ChangeLog
    M Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestConsoleMessage.cpp
    M Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestUIClient.cpp
    M Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitUserContentManager.cpp
    M Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp
    M Tools/TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.cpp
    M Tools/TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.h

  Log Message:
  -----------
  Merge r206302 - [GTK] Make all WebView tests have a WebKitUserContentManager
https://bugs.webkit.org/show_bug.cgi?id=162487

Reviewed by Michael Catanzaro.

It simplifies tests using the user content manager, and allows to use it without having to subclass WebViewTest.

* TestWebKitAPI/Tests/WebKit2Gtk/TestConsoleMessage.cpp:
(ConsoleMessageTest::ConsoleMessageTest):
(ConsoleMessageTest::~ConsoleMessageTest):
* TestWebKitAPI/Tests/WebKit2Gtk/TestUIClient.cpp:
* TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitUserContentManager.cpp:
(testUserContentManagerInjectedStyleSheet):
(testUserContentManagerInjectedScript):
(UserScriptMessageTest::UserScriptMessageTest):
(beforeAll):
* TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp:
(testWebViewIsPlayingAudio):
* TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.cpp:
(WebViewTest::WebViewTest):
* TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.h:


  Commit: 12c4f4b0b8605bb8964905e3702c52c3eb9a19b6
      https://github.com/WebKit/WebKit/commit/12c4f4b0b8605bb8964905e3702c52c3eb9a19b6
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Tools/ChangeLog
    M Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp

  Log Message:
  -----------
  Merge r206304 - REGRESSION(r204163): [GTK] API test /webkit2/WebKitSecurityManager/file-xhr is failing
https://bugs.webkit.org/show_bug.cgi?id=161607

Reviewed by Michael Catanzaro.

Since r204163, in case of cross origin error when loading the XHR, the load fails and an error message is shown
in the console, but there isn't any js expcetion, which is what we were checking. Now, we check that there
aren't exceptions, and that the error message is sent to the console.

* Scripts/run-gtk-tests:
(TestRunner):
* TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp:
(consoleMessageReceivedCallback):
(testWebContextSecurityFileXHR):


  Commit: 9c9ae6aa915bf005b2b0d406c6114cada7dcd1fa
      https://github.com/WebKit/WebKit/commit/9c9ae6aa915bf005b2b0d406c6114cada7dcd1fa
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreX11.cpp

  Log Message:
  -----------
  Merge r206305 - [GTK] BadDamage X error in /webkit2/WebKitWebView/preferred-size
https://bugs.webkit.org/show_bug.cgi?id=162489

Reviewed by Michael Catanzaro.

Do a XSync right after creating/destroying the XDamage used by the redirected window in X11.

* UIProcess/gtk/AcceleratedBackingStoreX11.cpp:
(WebKit::AcceleratedBackingStoreX11::~AcceleratedBackingStoreX11):
(WebKit::AcceleratedBackingStoreX11::update):


  Commit: 6dfccf5bd314abf8e7846f9f70375142c0808ead
      https://github.com/WebKit/WebKit/commit/6dfccf5bd314abf8e7846f9f70375142c0808ead
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/block/positioning/subtree-assert-when-positioned-element-dirties-containing-block-expected.txt
    A LayoutTests/fast/block/positioning/subtree-assert-when-positioned-element-dirties-containing-block.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/RenderBlock.cpp

  Log Message:
  -----------
  Merge r206343 - ASSERTION FAILED: !newRelayoutRoot.container() || is<RenderView>(newRelayoutRoot.container()) || !newRelayoutRoot.container()->needsLayout() while loading sohu.com
https://bugs.webkit.org/show_bug.cgi?id=162466

Reviewed by Simon Fraser.

Source/WebCore:

When we come across a out-of-flow positioned renderer during layout, we add it to a tracker map with
its containing block (calling RenderBlock::insertPositionedObject).
It ensures that a containing block can easily access to the out-of-flow positioned descendants during layout/painting/hittesting.
We do it even when the containing block - positioned renderer pair is already in this tracker map.
RenderBlock::insertPositionedObject() eagerly sets the positioned-child-needs-layout flag on the containing block
assuming it needs to layout this descendant later in the layout phase.
This patch ensure that we only flag the containing block dirty when the descendant needs layout.

Test: fast/block/positioning/subtree-assert-when-positioned-element-dirties-containing-block.html

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::insertPositionedObject):

LayoutTests:

* fast/block/positioning/subtree-assert-when-positioned-element-dirties-containing-block-expected.txt: Added.
* fast/block/positioning/subtree-assert-when-positioned-element-dirties-containing-block.html: Added.


  Commit: cf1ed964afd848d3d972d8aac9b55385ffe2e531
      https://github.com/WebKit/WebKit/commit/cf1ed964afd848d3d972d8aac9b55385ffe2e531
  Author: Benedikt M. Thoma <gnome at thomba.net>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/platform/gtk/po/ChangeLog
    M Source/WebCore/platform/gtk/po/de.po

  Log Message:
  -----------
  Merge r206362 - [GTK] German translation update
https://bugs.webkit.org/show_bug.cgi?id=152228

Patch by Benedikt M. Thoma <gnome at thomba.net> on 2016-09-25
Rubber-stamped by Michael Catanzaro.

* de.po:


  Commit: 768d688dba7bc9aa058964655ee1b4d31536bcef
      https://github.com/WebKit/WebKit/commit/768d688dba7bc9aa058964655ee1b4d31536bcef
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp

  Log Message:
  -----------
  Merge r206373 - [GTK] Unnecessary extern functions in FontPlatformDataFreeType.cpp
https://bugs.webkit.org/show_bug.cgi?id=162555

Reviewed by Carlos Garcia Campos.

These functions should be file-static.

* platform/graphics/freetype/FontPlatformDataFreeType.cpp:
(WebCore::convertFontConfigSubpixelOrder):
(WebCore::convertFontConfigHintStyle):
(WebCore::setCairoFontOptionsFromFontConfigPattern):


  Commit: 5a27d2e8e58b43a3d826cc2a604b0ca78debf91b
      https://github.com/WebKit/WebKit/commit/5a27d2e8e58b43a3d826cc2a604b0ca78debf91b
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WTF/ChangeLog
    M Source/WTF/wtf/efl/UniquePtrEfl.h
    M Source/WTF/wtf/glib/GUniquePtr.h
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/x11/XUniquePtr.h

  Log Message:
  -----------
  Merge r206377 - std::unique_ptr deleter functions should not check if pointer is null
https://bugs.webkit.org/show_bug.cgi?id=162558

Reviewed by Alex Christensen.

std::unique_ptr already does this before calling the deleter.

Source/WebCore:

* platform/graphics/x11/XUniquePtr.h:
(WebCore::XPtrDeleter::operator()):
(WebCore::XPtrDeleter<XImage>::operator()):
(WebCore::XPtrDeleter<_XGC>::operator()):
(WebCore::XPtrDeleter<__GLXcontextRec>::operator()):

Source/WTF:

* wtf/efl/UniquePtrEfl.h:
* wtf/glib/GUniquePtr.h:


  Commit: 5580fdb9b08e60bed9a8010dbff4db7aa56fe1aa
      https://github.com/WebKit/WebKit/commit/5580fdb9b08e60bed9a8010dbff4db7aa56fe1aa
  Author: Yoshiaki Jitsukawa <Yoshiaki.Jitsukawa at sony.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/bmalloc/ChangeLog
    M Source/bmalloc/bmalloc/Chunk.h
    M Source/bmalloc/bmalloc/FixedVector.h

  Log Message:
  -----------
  Merge r206380 - Avoid implicit conversion from iterator to pointer
https://bugs.webkit.org/show_bug.cgi?id=162482

Patch by Yoshiaki Jitsukawa <Yoshiaki.Jitsukawa at sony.com> on 2016-09-26
Reviewed by Geoffrey Garen.

Not every STL supporting such conversion, we should get a pointer explicitly.

* bmalloc/Chunk.h:
(bmalloc::Chunk::lines):
(bmalloc::Chunk::pages):
* bmalloc/FixedVector.h:
(bmalloc::FixedVector::begin):


  Commit: b40ac66f7e0d9e78e71ee1d0a8a1b358822de14e
      https://github.com/WebKit/WebKit/commit/b40ac66f7e0d9e78e71ee1d0a8a1b358822de14e
  Author: Tomáš Popela <tpopela at redhat.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Tools/ChangeLog
    M Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp

  Log Message:
  -----------
  Merge r206382 - [GTK] TestContextMenu is failing
https://bugs.webkit.org/show_bug.cgi?id=162569

We cannot use the MP3 file in the TestContextMenu, as it will not work
by default on most distributions (that don't have an MP3 codecs
installed). Change the test to use OGG file instead.

Patch by Tomas Popela <tpopela at redhat.com> on 2016-09-26
Reviewed by Michael Catanzaro.

* TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp:
(testContextMenuDefaultMenu):


  Commit: 399cc9d99fb836762044ac9644a97ddb378b97b3
      https://github.com/WebKit/WebKit/commit/399cc9d99fb836762044ac9644a97ddb378b97b3
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    A Source/WebCore/platform/graphics/cairo/CairoUniquePtr.h
    M Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp

  Log Message:
  -----------
  Merge r206383 - Add CairoUniquePtr and use it in FontPlatformDataFreetype.cpp
https://bugs.webkit.org/show_bug.cgi?id=162557

Reviewed by Alex Christensen.

* platform/graphics/cairo/CairoUniquePtr.h: Added.
(WebCore::CairoPtrDeleter<cairo_font_options_t>::operator()):
* platform/graphics/freetype/FontPlatformDataFreeType.cpp:
(WebCore::getDefaultCairoFontOptions): Return a smart pointer.
(WebCore::FontPlatformData::buildScaledFont): Use smart pointer.


  Commit: 30525d177bcbef706ad86fe17bd55e43b65df9e4
      https://github.com/WebKit/WebKit/commit/30525d177bcbef706ad86fe17bd55e43b65df9e4
  Author: Antti Koivisto <koivisto at iki.fi>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/shadow-dom/composed-tree-shadow-child-subtree-expected.txt
    A LayoutTests/fast/shadow-dom/composed-tree-shadow-child-subtree.html
    A LayoutTests/fast/shadow-dom/input-element-in-shadow-expected.html
    A LayoutTests/fast/shadow-dom/input-element-in-shadow.html
    M LayoutTests/platform/ios-simulator/TestExpectations
    M Source/WebCore/ChangeLog
    M Source/WebCore/dom/ComposedTreeIterator.cpp
    M Source/WebCore/dom/ComposedTreeIterator.h

  Log Message:
  -----------
  Merge r206403 - Input elements don't work inside shadow tree
https://bugs.webkit.org/show_bug.cgi?id=160427

Reviewed by Darin Adler.

Source/WebCore:

There is a bug in ComposedTreeIterator. If the iterator is initialized with an initial state where the root
is inside a shadow tree it won't iterate into slots.

If an input element is in a shadow tree it generates narrowly scoped style updates. When RenderTreeUpdater
applies such an update the update root will be inside the shadow tree and the bug will prevent the render tree
for slotted content from updating.

Added tests for both the iterator behavior and the specific symptom with input elements.

Tests: fast/shadow-dom/composed-tree-shadow-child-subtree.html
       fast/shadow-dom/input-element-in-shadow.html

* dom/ComposedTreeIterator.cpp:
(WebCore::ComposedTreeIterator::ComposedTreeIterator):

    Check and cache if the root is inside shadow tree.

(WebCore::ComposedTreeIterator::traverseNextInShadowTree):
* dom/ComposedTreeIterator.h:
(WebCore::ComposedTreeIterator::traverseNext):

    If it is, always use the shadow traversal code path.

LayoutTests:

* fast/shadow-dom/composed-tree-shadow-child-subtree-expected.txt: Added.
* fast/shadow-dom/composed-tree-shadow-child-subtree.html: Added.
* fast/shadow-dom/input-element-in-shadow-expected.html: Added.
* fast/shadow-dom/input-element-in-shadow.html: Added.


  Commit: 461dc86aa22de8532c29b4bfcd47cdc3c766554a
      https://github.com/WebKit/WebKit/commit/461dc86aa22de8532c29b4bfcd47cdc3c766554a
  Author: Ryosuke Niwa <rniwa at webkit.org>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/shadow-dom/shadow-layout-after-toggling-display-slot-parent-expected.html
    A LayoutTests/fast/shadow-dom/shadow-layout-after-toggling-display-slot-parent.html

  Log Message:
  -----------
  Merge r206493 - Toggling display: none on a parent element of a slot which shares style with its parent doesn't update the slot's visibility
https://bugs.webkit.org/show_bug.cgi?id=158421

Reviewed by Darin Adler.

Add a regression test now that the bug has been fixed by r206403.

* fast/shadow-dom/shadow-layout-after-toggling-display-slot-parent-expected.html: Added.
* fast/shadow-dom/shadow-layout-after-toggling-display-slot-parent.html: Added.


  Commit: afb004a51e232272d9aa6a7e1951060112b92590
      https://github.com/WebKit/WebKit/commit/afb004a51e232272d9aa6a7e1951060112b92590
  Author: Tomáš Popela <tpopela at redhat.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebInspectorUI/ChangeLog
    M Source/WebInspectorUI/UserInterface/Test.html
    M Source/WebInspectorUI/UserInterface/Views/CodeMirrorAdditions.js

  Log Message:
  -----------
  Merge r206426 - [GTK] Mac defaults are used for key shortcuts on Linux
https://bugs.webkit.org/show_bug.cgi?id=162564

Don't set Mac's default keymap as a fallthrough for CodeMirror when we
are not on Mac.

Patch by Tomas Popela <tpopela at redhat.com> on 2016-09-27
Reviewed by Carlos Garcia Campos.

* UserInterface/Test.html: Include Platform.js for the
WebInspector.Platform definition.
* UserInterface/Views/CodeMirrorAdditions.js:


  Commit: f9c0f855d7310b615ee78224c8cc1e331e9e02a8
      https://github.com/WebKit/WebKit/commit/f9c0f855d7310b615ee78224c8cc1e331e9e02a8
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/API/gtk/WebKitWebInspector.cpp

  Log Message:
  -----------
  Merge r206427 - [GTK] Unreviewed typo fix

* UIProcess/API/gtk/WebKitWebInspector.cpp:
(webkit_web_inspector_class_init):


  Commit: ba625d7b53c04c2c28ec7c6692ca916afadfc514
      https://github.com/WebKit/WebKit/commit/ba625d7b53c04c2c28ec7c6692ca916afadfc514
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Tools/ChangeLog
    M Tools/Scripts/webkitperl/FeatureList.pm

  Log Message:
  -----------
  Merge r206428 - [GTK] Disable ACCELERATED_2D_CANVAS when using build-webkit
https://bugs.webkit.org/show_bug.cgi?id=162600

Reviewed by Carlos Garcia Campos.

* Scripts/webkitperl/FeatureList.pm:


  Commit: 883c98ca92f4a9e06aad6a773005f90f819fab78
      https://github.com/WebKit/WebKit/commit/883c98ca92f4a9e06aad6a773005f90f819fab78
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/shell/CMakeLists.txt
    M Tools/ChangeLog
    M Tools/MiniBrowser/gtk/CMakeLists.txt

  Log Message:
  -----------
  Merge r206434 - [GTK] Install binaries to pkglibexecdir rather than bindir
https://bugs.webkit.org/show_bug.cgi?id=162602

Reviewed by Carlos Garcia Campos.

Source/JavaScriptCore:

Install jsc shell to LIBEXEC_INSTALL_DIR rather than EXEC_INSTALL_DIR.

Note these locations are the same on non-GTK ports.

* shell/CMakeLists.txt:

Tools:

Install MiniBrowser to LIBEXEC_INSTALL_DIR rather than EXEC_INSTALL_DIR.

* MiniBrowser/gtk/CMakeLists.txt:


  Commit: 144b2f11c2ce3d140cc6dbb249f8f35d1c9217a8
      https://github.com/WebKit/WebKit/commit/144b2f11c2ce3d140cc6dbb249f8f35d1c9217a8
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/gtk/UserAgentGtk.cpp

  Log Message:
  -----------
  Merge r206436 - Unreviewed typo fix

* platform/gtk/UserAgentGtk.cpp:
(WebCore::standardUserAgent):


  Commit: 324a2818473b8c86f0c88bf6aec7661c3cc12b72
      https://github.com/WebKit/WebKit/commit/324a2818473b8c86f0c88bf6aec7661c3cc12b72
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/gtk/UserAgentGtk.cpp

  Log Message:
  -----------
  Merge r206510 - [GTK] Add warning comment in UserAgentGtk.cpp
https://bugs.webkit.org/show_bug.cgi?id=162618

Reviewed by Carlos Garcia Campos.

* platform/gtk/UserAgentGtk.cpp:


  Commit: 8a8a71a57a0fcebe6946043a152ea4e7e0f0b901
      https://github.com/WebKit/WebKit/commit/8a8a71a57a0fcebe6946043a152ea4e7e0f0b901
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/gtk/UserAgentGtk.cpp

  Log Message:
  -----------
  Merge r206512 - [GTK] Bump fake Safari version in UA
https://bugs.webkit.org/show_bug.cgi?id=162615

Reviewed by Carlos Garcia Campos.

Pretend to be Safari 10.0 to fix sites that don't work when we pretend to be Safari 8.0.

* platform/gtk/UserAgentGtk.cpp:
(WebCore::buildUserAgentString):


  Commit: 11a4957c31b1a76c04101075cffac11934605c23
      https://github.com/WebKit/WebKit/commit/11a4957c31b1a76c04101075cffac11934605c23
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/gtk/UserAgentGtk.cpp

  Log Message:
  -----------
  Merge r206513 - [GTK] Simplify platformForUAString
https://bugs.webkit.org/show_bug.cgi?id=162614

Reviewed by Carlos Garcia Campos.

Note in particular that the previous PLATFORM(MAC) check was wrong here, as that is never
true for GTK; this patch risks changing it to OS(MAC_OS_X), on the hope that advertising Mac
when running on Mac might not break anything. If it does, then we should remove it and just
always pretend to be on X11.

* platform/gtk/UserAgentGtk.cpp:
(WebCore::platformForUAString):


  Commit: 549b260ca50391d4afb7d379e6a7987deac4a806
      https://github.com/WebKit/WebKit/commit/549b260ca50391d4afb7d379e6a7987deac4a806
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/gtk/UserAgentGtk.cpp
    M Tools/TestWebKitAPI/Tests/WebCore/gtk/UserAgentQuirks.cpp

  Log Message:
  -----------
  Merge r206515 - [GTK] Adjust OS X UA quirks list
https://bugs.webkit.org/show_bug.cgi?id=162616

Reviewed by Carlos Garcia Campos.

Remove the OS X quirk for yahoo.com as it's no longer needed. Add quirks for taobao.com and
whatsapp.com.

* platform/gtk/UserAgentGtk.cpp:
(WebCore::urlRequiresMacintoshPlatform):
(WebCore::standardUserAgentForURL):


  Commit: b0eaa3a7de4cffbe81c86b77bdf9bdbfc986a79c
      https://github.com/WebKit/WebKit/commit/b0eaa3a7de4cffbe81c86b77bdf9bdbfc986a79c
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/gtk/UserAgentGtk.cpp

  Log Message:
  -----------
  Merge r206517 - [GTK] User agent should always claim to be Intel
https://bugs.webkit.org/show_bug.cgi?id=162610

Reviewed by Carlos Garcia Campos.

We should always claim to be running on Intel regardless of actual CPU type. See discussion
in bug #162548 for details. In particular, we can never advertise ARM because it causes dumb
websites to send mobile pages.

* platform/gtk/UserAgentGtk.cpp:
(WebCore::platformVersionForUAString):
(WebCore::buildUserAgentString):
(WebCore::cpuDescriptionForUAString): Deleted.


  Commit: b432adf59c951de9e33533ea3f9d795fbcb49f6a
      https://github.com/WebKit/WebKit/commit/b432adf59c951de9e33533ea3f9d795fbcb49f6a
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/gtk/UserAgentGtk.cpp
    M Tools/ChangeLog
    M Tools/TestWebKitAPI/Tests/WebCore/gtk/UserAgentQuirks.cpp

  Log Message:
  -----------
  Merge r206519 - [GTK] Add Chrome UA quirk
https://bugs.webkit.org/show_bug.cgi?id=162617

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Add Chrome UA quirk and use it on typekit.net, typekit.com, youtube.com, slack.com, and
any domain that begins with "google".

* platform/gtk/UserAgentGtk.cpp:
(WebCore::buildUserAgentString):
(WebCore::urlRequiresChromeBrowser):
(WebCore::standardUserAgentForURL):

Tools:

Update test. This portion of the commit was actually unreviewed.

* TestWebKitAPI/Tests/WebCore/gtk/UserAgentQuirks.cpp:
(TestWebKitAPI::TEST):


  Commit: 3c63a70f5893f4270a8ec6318d21d7f61cc2e0ce
      https://github.com/WebKit/WebKit/commit/3c63a70f5893f4270a8ec6318d21d7f61cc2e0ce
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/gtk/UserAgentGtk.cpp

  Log Message:
  -----------
  Merge r206825 - [GTK] Improve comment in platformVersionForUAString
https://bugs.webkit.org/show_bug.cgi?id=162612

Reviewed by Carlos Garcia Campos.

* platform/gtk/UserAgentGtk.cpp:
(WebCore::platformVersionForUAString):


  Commit: 90d2fbf36edbb4aa2c38ad806cede929e07e5eef
      https://github.com/WebKit/WebKit/commit/90d2fbf36edbb4aa2c38ad806cede929e07e5eef
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/gtk/UserAgentGtk.cpp

  Log Message:
  -----------
  Merge r206826 - [GTK] Improve OS X UA quirk
https://bugs.webkit.org/show_bug.cgi?id=162613

Reviewed by Carlos Garcia Campos.

Include OS X version number in user agent, like Safari does.

* platform/gtk/UserAgentGtk.cpp:
(WebCore::buildUserAgentString):


  Commit: 39fc28203b71d6bc2a5545205b93540314b31e24
      https://github.com/WebKit/WebKit/commit/39fc28203b71d6bc2a5545205b93540314b31e24
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/gtk/UserAgentGtk.cpp

  Log Message:
  -----------
  Merge r206849 - [GTK] Bump Chrome version in Chrome user agent quirk
https://bugs.webkit.org/show_bug.cgi?id=162984

Reviewed by Carlos Garcia Campos.

* platform/gtk/UserAgentGtk.cpp:
(WebCore::buildUserAgentString):


  Commit: e3cf1d9069480bc07d2682536ea47c5b83641839
      https://github.com/WebKit/WebKit/commit/e3cf1d9069480bc07d2682536ea47c5b83641839
  Author: Simon Fraser <simon.fraser at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/svg/hittest/block-svg-expected.txt
    A LayoutTests/svg/hittest/block-svg.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/svg/RenderSVGRoot.cpp

  Log Message:
  -----------
  Merge r206591 - Fix hit testing on display:block <svg> elements
https://bugs.webkit.org/show_bug.cgi?id=162717
rdar://problem/23261130

Reviewed by Zalan Bujtas.
Source/WebCore:

RenderSVGRoot::nodeAtPoint() needs to test for both the HitTestBlockBackground and
HitTestChildBlockBackground phases, since we only get the HitTestChildBlockBackground
phase when the <svg> is a block. This is similar to code in RenderTable::nodeAtPoint(),
and matches Blink code.

This fixes the point dragging on http://anthonydugois.com/svg-path-builder/.

Test: svg/hittest/block-svg.html

* rendering/svg/RenderSVGRoot.cpp:
(WebCore::RenderSVGRoot::nodeAtPoint):

LayoutTests:

Test hit testing on inline and block <svg> elements.

* svg/hittest/block-svg-expected.txt: Added.
* svg/hittest/block-svg.html: Added.


  Commit: 7d31fcb1d7b21e27389dfb2d953573c4b99f50e3
      https://github.com/WebKit/WebKit/commit/7d31fcb1d7b21e27389dfb2d953573c4b99f50e3
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/RenderLayer.cpp
    M Source/WebCore/rendering/RenderLayer.h

  Log Message:
  -----------
  Merge r206639 - RenderLayer::clipRects may return nullptr.
https://bugs.webkit.org/show_bug.cgi?id=162729

Reviewed by Chris Dumez.

This patch refactors RenderLayer::updateClipRects(), parentClipRects() and backgroundClipRect()
so that we don't have to rely on this seemingly unsafe line: clipRects = *parent()->clipRects(clipRectsContext);
Now updateClipRects() returns the computed/cached clip rects as opposed to update and refetch them.
While this patch makes the code look more readable/safer, it also eliminates cached item tripple retrievals.

No change in functionality.

* rendering/RenderLayer.cpp:
(WebCore::ClipRectsCache::getClipRects):
(WebCore::ClipRectsCache::setClipRects):
(WebCore::RenderLayer::updateClipRects):
(WebCore::RenderLayer::clipRects):
(WebCore::RenderLayer::calculateClipRects):
* rendering/RenderLayer.h:


  Commit: b75696af899814aed7846fc1e2424abffb278aac
      https://github.com/WebKit/WebKit/commit/b75696af899814aed7846fc1e2424abffb278aac
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/RenderLayer.cpp

  Log Message:
  -----------
  Merge r206661 - Remove ClipRects's custom refcounting.
https://bugs.webkit.org/show_bug.cgi?id=162798

Reviewed by Simon Fraser.

It's safer to use RefCounted<>.

No change in functionality.

* rendering/RenderLayer.cpp:
(WebCore::ClipRects::ClipRects):
(WebCore::ClipRectsCache::getClipRects):
(WebCore::ClipRectsCache::setClipRects):
(WebCore::ClipRectsCache::getIndex):
(WebCore::RenderLayer::updateClipRects):
(WebCore::ClipRects::ref): Deleted.
(WebCore::ClipRects::deref): Deleted.


  Commit: 587e52cc1bc349baa51c9d89a32c6fd28b117732
      https://github.com/WebKit/WebKit/commit/587e52cc1bc349baa51c9d89a32c6fd28b117732
  Author: Joonghun Park <jh718.park at samsung.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/RenderLayer.cpp

  Log Message:
  -----------
  Merge r206704 - [EFL] Fix build break since r206661. Unreviewed
https://bugs.webkit.org/show_bug.cgi?id=162825

No new tests, no new behaviours.

* rendering/RenderLayer.cpp:
(WebCore::ClipRects::ClipRects):


  Commit: 9ec28fb78f4662e4809b9426a9ce81ff230f25ae
      https://github.com/WebKit/WebKit/commit/9ec28fb78f4662e4809b9426a9ce81ff230f25ae
  Author: Simon Fraser <simon.fraser at apple.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/scrolling/sticky-to-fixed-expected.txt
    A LayoutTests/fast/scrolling/sticky-to-fixed.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/page/scrolling/ScrollingStateTree.cpp
    M Source/WebCore/page/scrolling/ScrollingStateTree.h

  Log Message:
  -----------
  Merge r206712 - Bad cast when CSS position programmatically changed from -webkit-sticky to fixed
https://bugs.webkit.org/show_bug.cgi?id=160826

Reviewed by Zalan Bujtas.
Source/WebCore:

If a scrolling state tree node changed type (e.g. from sticky to fixed), we'd fail
to recreate the node so keep a node with the wrong type.

Fix by destroying the node and making a new one with a new ID in this case. The
new ID is necessary to ensure that the scrolling tree is updated.

Test: fast/scrolling/sticky-to-fixed.html

* page/scrolling/ScrollingStateTree.cpp:
(WebCore::ScrollingStateTree::nodeTypeAndParentMatch):
(WebCore::ScrollingStateTree::attachNode):
(WebCore::ScrollingStateTree::stateNodeForID):
* page/scrolling/ScrollingStateTree.h:

LayoutTests:

* fast/scrolling/sticky-to-fixed-expected.txt: Added.
* fast/scrolling/sticky-to-fixed.html: Added.


  Commit: b6e0b80e6d6fba3a4c99433fd285974189bf573f
      https://github.com/WebKit/WebKit/commit/b6e0b80e6d6fba3a4c99433fd285974189bf573f
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/page/scrolling/ScrollingStateTree.cpp

  Log Message:
  -----------
  Merge r206730 - Unreviewed. Fix the build with coordinated graphics enabled after r206712.

* page/scrolling/ScrollingStateTree.cpp:
(WebCore::ScrollingStateTree::attachNode):


  Commit: 5cb88d4bb7bc944b886114c099e191ea99732ee1
      https://github.com/WebKit/WebKit/commit/5cb88d4bb7bc944b886114c099e191ea99732ee1
  Author: Carlos Garcia Campos <carlosgc at webkit.org>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/frames/iframe-focus-crash-expected.txt
    A LayoutTests/fast/frames/iframe-focus-crash.html
    A LayoutTests/fast/frames/resources/iframe-focus-crash.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/page/DOMWindow.cpp

  Log Message:
  -----------
  Avoid null dereference when changing focus in design mode.
https://bugs.webkit.org/show_bug.cgi?id=162877
<rdar://problem/28061261>

Reviewed by Chris Dumez.

Source/WebCore:

The bare m_frame pointer in DOMWindow can be cleared when setting focus to a new element. Check
that the m_frame pointer is non-null before using it after calling a routine that could
clear the pointer value.

Test: fast/frames/iframe-focus-crash.html

* page/DOMWindow.cpp:
(WebCore::DOMWindow::focus): Check that the pointer is still non-null after setting the
current focused element to nullptr.

LayoutTests:

* fast/frames/iframe-focus-crash-expected.txt: Added.
* fast/frames/iframe-focus-crash.html: Added.
* fast/frames/resources/iframe-focus-crash.html: Added.


  Commit: 078a1d22f658b45f22515d02c7ec01d45f936aa5
      https://github.com/WebKit/WebKit/commit/078a1d22f658b45f22515d02c7ec01d45f936aa5
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/network/soup/SoupNetworkSession.cpp
    M Source/WebCore/platform/network/soup/SoupNetworkSession.h
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/NetworkProcess/soup/NetworkProcessMainSoup.cpp

  Log Message:
  -----------
  Merge r206772 - [SOUP] Remove SSLPolicyFlags from SoupNetworkSession
https://bugs.webkit.org/show_bug.cgi?id=162906

Patch by Carlos Garcia Campos <cgarcia at igalia.com> on 2016-10-04
Reviewed by Michael Catanzaro.

Source/WebCore:

All soup based ports are setting SSLUseSystemCAFile flag unconditionally, so we can just use that when creating
the session like we do for all other construct parameters.

* platform/network/soup/SoupNetworkSession.cpp:
(WebCore::SoupNetworkSession::createTestingSession):
(WebCore::SoupNetworkSession::setupLogger):
(WebCore::SoupNetworkSession::SoupNetworkSession): Deleted.
(WebCore::SoupNetworkSession::clearOldSoupCache): Deleted.
(WebCore::SoupNetworkSession::setHTTPProxy): Deleted.
* platform/network/soup/SoupNetworkSession.h:
(WebCore::SoupNetworkSession::soupSession): Deleted.

Source/WebKit2:

* NetworkProcess/soup/NetworkProcessMainSoup.cpp:
(WebKit::NetworkProcessMainUnix):


  Commit: 7f2db1075ec10729eb26c61078a58a4a12a5fe83
      https://github.com/WebKit/WebKit/commit/7f2db1075ec10729eb26c61078a58a4a12a5fe83
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/AcceleratedDrawingAreaProxy.cpp

  Log Message:
  -----------
  Merge r206806 - Unreviewed. Fix GTK+ build with USE_REDIRECTED_XCOMPOSITE_WINDOW disabled.

* UIProcess/AcceleratedDrawingAreaProxy.cpp:
(WebKit::AcceleratedDrawingAreaProxy::setNativeSurfaceHandleForCompositing):


  Commit: 0eeeb449d7af01f8236799e298bd6347eb327a6a
      https://github.com/WebKit/WebKit/commit/0eeeb449d7af01f8236799e298bd6347eb327a6a
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreX11.cpp

  Log Message:
  -----------
  Merge r206998 - [GTK] 2.14.0 Compile Errors: GTK 3.22.1
https://bugs.webkit.org/show_bug.cgi?id=163190

Patch by Carlos Garcia Campos <cgarcia at igalia.com> on 2016-10-10
Reviewed by Alex Christensen.

* UIProcess/gtk/AcceleratedBackingStoreX11.cpp: Include gtk.h since we are using gtk_widget_queue_draw().


  Commit: 11e20670c2d12050a4ec5ceb1a63cecfa8284258
      https://github.com/WebKit/WebKit/commit/11e20670c2d12050a4ec5ceb1a63cecfa8284258
  Author: Tomáš Popela <tpopela at redhat.com>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp
    M Source/WebKit2/UIProcess/gtk/InputMethodFilter.h

  Log Message:
  -----------
  Merge r206985 - [GTK] UIProcess crashes when using Japanese IM
https://bugs.webkit.org/show_bug.cgi?id=163011

We have to reference the current GdkEventKey before we try process it
as later when the lambda body is reached the event could be already
freed.

Patch by Tomas Popela <tpopela at redhat.com> on 2016-10-10
Reviewed by Carlos Garcia Campos.

* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseKeyPressEvent):
(webkitWebViewBaseKeyReleaseEvent):
* UIProcess/gtk/InputMethodFilter.h:
Use non-copyable Function so we can use WTFMove to pass the event to
lambda.


  Commit: 85a0844fa27b1b44f7c1e29c7926808f9382b485
      https://github.com/WebKit/WebKit/commit/85a0844fa27b1b44f7c1e29c7926808f9382b485
  Author: Carlos Garcia Campos <carlosgc at webkit.org>
  Date:   2016-10-11 (Tue, 11 Oct 2016)

  Changed paths:
    M ChangeLog
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/gtk/NEWS
    M Source/cmake/OptionsGTK.cmake

  Log Message:
  -----------
  Unreviewed. Update OptionsGTK.cmake and NEWS for 2.14.1 release.

.:

* Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit2:

* gtk/NEWS: Add release notes for 2.14.1.


  Commit: c17dcb87ae8d994343ed060d3d6ece38a32eb96e
      https://github.com/WebKit/WebKit/commit/c17dcb87ae8d994343ed060d3d6ece38a32eb96e
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/WebCore/bindings/gobject/WebKitDOMCustom.cpp
    M Source/WebCore/bindings/gobject/WebKitDOMCustomUnstable.h
    M Source/WebKit2/ChangeLog

  Log Message:
  -----------
  Merge r206906 - [GTK] Expose WebKitDOMHTMLInputElement APIs for form autofill
https://bugs.webkit.org/show_bug.cgi?id=163082

Reviewed by Darin Adler.

* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLInputElement.cpp:
(webkit_dom_html_input_element_get_auto_filled): Added.
(webkit_dom_html_input_element_set_auto_filled): Added.
(webkit_dom_html_input_element_set_editing_value): Added.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLInputElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/docs/webkitdomgtk-4.0-sections.txt:


  Commit: c141ce8ad298b129c324f75bb1b42c6e8a0934c2
      https://github.com/WebKit/WebKit/commit/c141ce8ad298b129c324f75bb1b42c6e8a0934c2
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/RenderListItem.cpp

  Log Message:
  -----------
  Merge r206765 - [ListItems] Render tree should be all clean by the end of FrameView::layout().
https://bugs.webkit.org/show_bug.cgi?id=162832

Reviewed by Simon Fraser.

List item markers are inserted into the tree during layout, right before laying out
the list item (that's a big FIXME). At this point we already know what part of the tree
needs to be laid out. Inserting a list item marker does not expand this dirty area.
However whenever we insert a new renderer into the tree, we call setNeedsLayout on the contining block chain.
In certain cases (floating renderers), it could potentially trigger some unintentional markings
and we return from FrameView::layout() with a dirty subtree.

This patch preemptively marks the list item and its marker dirty so that
when the marker is getting inserted into the tree, we stop the marking at the parent.

Not testable.

* rendering/RenderListItem.cpp:
(WebCore::RenderListItem::insertOrMoveMarkerRendererIfNeeded):


  Commit: 242744d7dd4217e034d9c63b6962a00584485a5c
      https://github.com/WebKit/WebKit/commit/242744d7dd4217e034d9c63b6962a00584485a5c
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/css-generated-content/missing-quotes-with-dynamic-content-expected.html
    A LayoutTests/fast/css-generated-content/missing-quotes-with-dynamic-content.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/dom/PseudoElement.cpp
    M Source/WebCore/rendering/RenderQuote.cpp
    M Source/WebCore/rendering/RenderQuote.h

  Log Message:
  -----------
  Merge r206821 - Missing quotation mark when <q> gets reparented.
https://bugs.webkit.org/show_bug.cgi?id=162940

Reviewed by Darin Adler.

Source/WebCore:

When an opening RenderQuote gets removed due to some change in the render tree,
we notify the closing RenderQuote so that it can update its content (") accordingly (and vice versa).
However when the same RenderQuote is added back to the render tree (aka reparenting), we fail to
let the other RenderQuote know about it and its content becomes stale.
This patch ensures that when either the opening or closing part of the quotation mark gets reparented,
we inform the other, corresponding opening/closing renderer about it.

Test: fast/css-generated-content/missing-quotes-with-dynamic-content.html

* dom/PseudoElement.cpp:
(WebCore::PseudoElement::didAttachRenderers):
* rendering/RenderQuote.cpp:
(WebCore::RenderQuote::insertedIntoTree):
* rendering/RenderQuote.h:

LayoutTests:

The position of the closing quotation mark is driven by the multicolumn code hence the cover div.

* fast/css-generated-content/missing-quotes-with-dynamic-content-expected.html: Added.
* fast/css-generated-content/missing-quotes-with-dynamic-content.html: Added.


  Commit: 5ae81b830b1e4f5ab4202076166c964afb92fad7
      https://github.com/WebKit/WebKit/commit/5ae81b830b1e4f5ab4202076166c964afb92fad7
  Author: Youenn Fablet <youenn at apple.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    M LayoutTests/http/tests/cache/disk-cache/disk-cache-revalidation-new-expire-header-expected.txt
    M LayoutTests/imported/w3c/ChangeLog
    A LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/conditional-get-expected.txt
    A LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/conditional-get.html
    A LayoutTests/imported/w3c/web-platform-tests/fetch/api/resources/cache.py
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp

  Log Message:
  -----------
  Merge r206855 - [WK2] 304 revalidation on the network process does not update the validated response
https://bugs.webkit.org/show_bug.cgi?id=162973

Patch by Youenn Fablet <youenn at apple.com> on 2016-10-06
Reviewed by Darin Adler.

LayoutTests/imported/w3c:

* web-platform-tests/fetch/api/basic/conditional-get-expected.txt: Added.
* web-platform-tests/fetch/api/basic/conditional-get.html: Added.
* web-platform-tests/fetch/api/resources/cache.py: Added.

Source/WebKit2:

* NetworkProcess/NetworkResourceLoader.cpp: Updating cache entry with the revalidated one.

LayoutTests:

* http/tests/cache/disk-cache/disk-cache-revalidation-new-expire-header-expected.txt:
Rebasing expectation as memory cache revalidation is no longer needed now that the disk cache is updating the response passed to the memory cache.
The disk cache is doing revalidation on the second load. It receives the updated response with longer validity.
As the extended validity response is now passed to the memory cache, the memory cache revalidation no longer happens.


  Commit: 8694e0ff0c5b90a62def69c59149a35d855a81ae
      https://github.com/WebKit/WebKit/commit/8694e0ff0c5b90a62def69c59149a35d855a81ae
  Author: Gwang Yoon Hwang <yoon at igalia.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp

  Log Message:
  -----------
  Merge r206907 - [GTK] Remove unneeded creation of TextureMapperPlatformLayerProxy
https://bugs.webkit.org/show_bug.cgi?id=163101

Reviewed by Žan Doberšek.

Covered by existing tests.

* platform/graphics/cairo/ImageBufferCairo.cpp:
(WebCore::ImageBufferData::ImageBufferData): Modified not to create
TextureMapperPlatformLayerProxy if it is not created for the
accelerated 2d canvas.


  Commit: 3441b9559c2f15cd05dc24cc3efdb4b3aaef498f
      https://github.com/WebKit/WebKit/commit/3441b9559c2f15cd05dc24cc3efdb4b3aaef498f
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/selectors/slow-style-sharing-with-long-cousin-list-expected.txt
    A LayoutTests/fast/selectors/slow-style-sharing-with-long-cousin-list.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/style/StyleSharingResolver.cpp

  Log Message:
  -----------
  Merge r206916 - https://vuldb.com/?cvssv3.2012 takes long time to load.
https://bugs.webkit.org/show_bug.cgi?id=162994
<rdar://problem/28593746>

Reviewed by Darin Adler.

Source/WebCore:

Stop visiting cousins when we hit the style sharing search threshold.

In addition to mistakenly ignoring the threshold at SharingResolver::findSibling(), we
continued on searching for cousin elements.

Test: fast/selectors/slow-style-sharing-with-long-cousin-list.html

* style/StyleSharingResolver.cpp:
(WebCore::Style::SharingResolver::resolve):
(WebCore::Style::SharingResolver::findSibling):
(WebCore::Style::SharingResolver::locateCousinList):

LayoutTests:

It takes ~100 seconds to run this test case without the fix (300ms with the fix).
Surely it will timeout if it gets regressed.

* fast/selectors/slow-style-sharing-with-long-cousin-list-expected.txt: Added.
* fast/selectors/slow-style-sharing-with-long-cousin-list.html: Added.
* platform/mac/TestExpectations: Skip perf test in debug.


  Commit: 88ce82457585a5c12b392506c8ff68dc43b87746
      https://github.com/WebKit/WebKit/commit/88ce82457585a5c12b392506c8ff68dc43b87746
  Author: Andreas Kling <akling at apple.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/history/CachedFrame.cpp
    M Tools/ChangeLog
    A Tools/TestWebKitAPI/Tests/WebKit2/DidRemoveFrameFromHiearchyInPageCache.cpp
    A Tools/TestWebKitAPI/Tests/WebKit2/DidRemoveFrameFromHiearchyInPageCache_Bundle.cpp
    A Tools/TestWebKitAPI/Tests/WebKit2/many-iframes.html

  Log Message:
  -----------
  Merge r206922 - [WK2] didRemoveFrameFromHierarchy callback doesn't fire for subframes when evicting from PageCache.
<https://webkit.org/b/163098>
<rdar://problem/28663488>

Reviewed by Antti Koivisto.

Source/WebCore:

Fix a bug where WK2 didRemoveFrameFromHierarchy callbacks wouldn't fire for subframes that were getting
kicked out of PageCache. The problem was happening because CachedFrame would disconnect the Frame from
its Page just before calling FrameLoader::detachViewsAndDocumentLoader() where the callbacks are fired.
Without a Page, the WebFrame on WK2 side can't find its WebPage, and so it can't fire its callbacks.

The fix is just to switch the order of those two lines.

This bug was causing frequent DOM and window object leaks in some clients *cough* Safari *cough* that
were relying on didRemoveFrameFromHierarchy to release their isolated worlds.

Test: WebKit2.DidRemoveFrameFromHiearchyInPageCache

* history/CachedFrame.cpp:
(WebCore::CachedFrame::destroy):

Tools:

Add an API test that puts a 10-subframe page into the page cache, then loads other pages
until the first page gets kicked out. The test succeeds if we receive didRemoveFrameFromHierarchy
callbacks for all the subframes.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit2/DidRemoveFrameFromHiearchyInPageCache.cpp: Added.
(TestWebKitAPI::didFinishLoadForFrame):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didReceivePageMessageFromInjectedBundle):
(TestWebKitAPI::setInjectedBundleClient):
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebKit2/DidRemoveFrameFromHiearchyInPageCache_Bundle.cpp: Added.
(TestWebKitAPI::didRemoveFrameFromHierarchyCallback):
(TestWebKitAPI::DidRemoveFrameFromHiearchyInPageCacheTest::DidRemoveFrameFromHiearchyInPageCacheTest):
(TestWebKitAPI::DidRemoveFrameFromHiearchyInPageCacheTest::didCreatePage):
* TestWebKitAPI/Tests/WebKit2/many-iframes.html: Added.


  Commit: 6273473a9bb137bfc32edc9484cf9ea38aaa23cd
      https://github.com/WebKit/WebKit/commit/6273473a9bb137bfc32edc9484cf9ea38aaa23cd
  Author: Brent Fulgham <bfulgham at webkit.org>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/page/EventHandler.cpp
    M Source/WebCore/page/ios/EventHandlerIOS.mm
    M Source/WebCore/page/mac/EventHandlerMac.mm

  Log Message:
  -----------
  Merge r206941 - EventHandler functions that need to guarantee event handler lifetime need to use Ref<Frame>
https://bugs.webkit.org/show_bug.cgi?id=98617
<rdar://problem/12778649>

Reviewed by Daniel Bates.

Improve stability by ensuring that the Frame holding an active EventHandler is kept
alive while in the process of handling events and executing JavaScript.

No new tests since there is no change in behavior.

* page/EventHandler.cpp:
(WebCore::EventHandler::handleMousePressEventSingleClick): Protect the Frame with a Ref<>.
(WebCore::EventHandler::handleMousePressEvent): Ditto.
(WebCore::EventHandler::handleMouseDraggedEvent): Ditto.
(WebCore::EventHandler::eventMayStartDrag): Ditto.
(WebCore::EventHandler::handleMouseReleaseEvent): Ditto.
(WebCore::EventHandler::hitTestResultAtPoint): Ditto.
(WebCore::EventHandler::scrollRecursively): Ditto.
(WebCore::EventHandler::logicalScrollRecursively): Ditto.
(WebCore::EventHandler::selectCursor): Ditto.
(WebCore::EventHandler::handleMouseDoubleClickEvent): Ditto.
(WebCore::EventHandler::mouseMoved): Ditto.
(WebCore::EventHandler::handleMouseMoveEvent): Ditto.
(WebCore::EventHandler::handleMouseForceEvent): Ditto.
(WebCore::EventHandler::dispatchDragEvent): Ditto.
(WebCore::EventHandler::updateDragAndDrop): Ditto.
(WebCore::EventHandler::cancelDragAndDrop): Ditto.
(WebCore::EventHandler::performDragAndDrop): Ditto.
(WebCore::EventHandler::prepareMouseEvent): Ditto.
(WebCore::EventHandler::updateMouseEventTargetNode): Ditto.
(WebCore::EventHandler::dispatchMouseEvent): Ditto.
(WebCore::EventHandler::platformCompleteWheelEvent): Ditto.
(WebCore::EventHandler::handleWheelEvent): Ditto.
(WebCore::EventHandler::defaultWheelEventHandler): Ditto.
(WebCore::EventHandler::sendContextMenuEvent): Ditto.
(WebCore::EventHandler::sendContextMenuEventForKey): Ditto.
(WebCore::EventHandler::hoverTimerFired): Ditto.
(WebCore::EventHandler::keyEvent): Ditto.
(WebCore::EventHandler::defaultKeyboardEventHandler): Ditto.
(WebCore::EventHandler::handleDrag): Ditto.
(WebCore::EventHandler::handleTextInputEvent): Ditto.
(WebCore::EventHandler::defaultSpaceEventHandler): Ditto.
(WebCore::EventHandler::defaultTabEventHandler): Ditto.
(WebCore::EventHandler::sendScrollEvent): Ditto.
(WebCore::EventHandler::handleTouchEvent): Ditto.
* page/ios/EventHandlerIOS.mm:
(WebCore::EventHandler::focusDocumentView): Ditto.
* page/mac/EventHandlerMac.mm:
(WebCore::EventHandler::platformCompleteWheelEvent): Ditto.


  Commit: a5a4ba737fb675c181f5738f4b14f7fd1b39a316
      https://github.com/WebKit/WebKit/commit/a5a4ba737fb675c181f5738f4b14f7fd1b39a316
  Author: Emanuele Aina <emanuele.aina at collabora.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp
    M Source/WebKit2/UIProcess/gtk/WaylandCompositor.h

  Log Message:
  -----------
  Merge r206961 - [GTK] Drop redundant wl_display_flush_clients() call
https://bugs.webkit.org/show_bug.cgi?id=161904

Patch by Emanuele Aina <emanuele.aina at collabora.com> on 2016-10-08
Reviewed by Michael Catanzaro.

The Wayland GSource::prepare() function already calls
wl_display_flush_clients() at every mainloop iteration, so there's no
need to further call it on Surface::commit().

* UIProcess/gtk/WaylandCompositor.cpp:
(WebKit::WaylandCompositor::Surface::commit):
* UIProcess/gtk/WaylandCompositor.h:


  Commit: f6757a249431016e211e2d659c4e6e533a64f93d
      https://github.com/WebKit/WebKit/commit/f6757a249431016e211e2d659c4e6e533a64f93d
  Author: Ryosuke Niwa <rniwa at webkit.org>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/dom/NodeList/form-labels-length-expected.txt
    A LayoutTests/fast/dom/NodeList/form-labels-length.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/dom/Document.h
    M Source/WebCore/dom/Node.cpp

  Log Message:
  -----------
  Merge r206975 - REGRESSION(r165103): labels list doesn't get invalidated when other lists are invalidated at document level
https://bugs.webkit.org/show_bug.cgi?id=163145

Reviewed by Darin Adler.

Source/WebCore:

The bug was caused by Document::invalidateNodeListAndCollectionCaches removing all node lists regardless
of whether they have been invalidated or not.

Fixed the bug by removing only those node lists that got invalidated via LiveNodeList::invalidateCache.

Test: fast/dom/NodeList/form-labels-length.html

* dom/Document.cpp:
(WebCore::Document::Document):
(WebCore::Document::unregisterNodeListForInvalidation): Removed the conditional which allowed removal to
happen while m_listsInvalidatedAtDocument is empty inside invalidateNodeListAndCollectionCaches.
* dom/Document.h:
* dom/Node.cpp:
(WebCore::Document::invalidateNodeListAndCollectionCaches): Just remove the node lists being invalidated via
LiveNodeList's invalidateCache, which calls unregisterNodeListForInvalidation, instead of removing them all.
We make a copy of the list of node lists into a local vector because mutating HashMap while iterating over it
is not a safe operation.

LayoutTests:

Added a regression test.

* fast/dom/NodeList/form-labels-length-expected.txt: Added.
* fast/dom/NodeList/form-labels-length.html: Added.


  Commit: e49636b596a7465f40c584614f5dd42012847953
      https://github.com/WebKit/WebKit/commit/e49636b596a7465f40c584614f5dd42012847953
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/RenderInline.cpp

  Log Message:
  -----------
  Merge r207310 - [Clean RenderTree] LayoutTests/imported/blink/fast/table/crash-bad-child-table-continuation.html fails.
https://bugs.webkit.org/show_bug.cgi?id=163399

Reviewed by David Hyatt.

When we try to insert a renderer before a child whose direct parent is a (anonymus) RenderTable, continuation logic
should dismiss the RenderTable as the parent and find a more appropriate ancestor.
RenderTables assumes a certain descendant tree structure which might not be available in the continuation.

Will be testable with webkit.org/b/162834

* rendering/RenderInline.cpp:
(WebCore::canUseAsParentForContinuation):
(WebCore::RenderInline::addChildToContinuation):


  Commit: d739fa60a95193e8c8384413927e2be2dad54154
      https://github.com/WebKit/WebKit/commit/d739fa60a95193e8c8384413927e2be2dad54154
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/loader/DocumentLoader.cpp
    M Tools/ChangeLog
    M Tools/TestWebKitAPI/CMakeLists.txt
    M Tools/TestWebKitAPI/PlatformEfl.cmake
    M Tools/TestWebKitAPI/PlatformGTK.cmake
    A Tools/TestWebKitAPI/Tests/WebKit2/ProvisionalURLAfterWillSendRequestCallback.cpp
    A Tools/TestWebKitAPI/Tests/WebKit2/ProvisionalURLAfterWillSendRequestCallback_Bundle.cpp

  Log Message:
  -----------
  Merge r207325 - WebView and WebPage URLs not updated after URL is modified by InjectedBundlePageResourceLoadClient::willSendRequestForFrame
https://bugs.webkit.org/show_bug.cgi?id=146306

Reviewed by Darin Adler.

Source/WebCore:

Notify about the provisional URL change when new request set for main resource load in DocumentLoader has a
different URL than the previous one.

* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::setRequest):

Tools:

Add unit test to check that the committed URL is updated when changed in willSendRequest callback.

* TestWebKitAPI/CMakeLists.txt:
* TestWebKitAPI/PlatformEfl.cmake:
* TestWebKitAPI/PlatformGTK.cmake:
* TestWebKitAPI/Tests/WebKit2/ProvisionalURLAfterWillSendRequestCallback.cpp: Added.
(TestWebKitAPI::didCommitLoadForFrame):
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebKit2/ProvisionalURLAfterWillSendRequestCallback_Bundle.cpp: Added.
(TestWebKitAPI::ProvisionalURLAfterWillSendRequestCallbackTest::ProvisionalURLAfterWillSendRequestCallbackTest):
(TestWebKitAPI::ProvisionalURLAfterWillSendRequestCallbackTest::willSendRequestForFrame):
(TestWebKitAPI::ProvisionalURLAfterWillSendRequestCallbackTest::didCommitLoadForFrame):


  Commit: 0add466c3af17b95d5d49e7cc160b895d9e990ef
      https://github.com/WebKit/WebKit/commit/0add466c3af17b95d5d49e7cc160b895d9e990ef
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M ChangeLog
    M Source/cmake/WebKitFeatures.cmake

  Log Message:
  -----------
  Merge r207351 - [CMake] Private/unsupported build options should be marked as advanced
https://bugs.webkit.org/show_bug.cgi?id=163451

Reviewed by Carlos Garcia Campos.

When checking to decide whether to mark an option as advanced, the conditional checks
whether _WEBKIT_AVAILABLE_OPTIONS_IS_PUBLIC_${_name} is defined. It is always defined. We
need to check its value instead.

* Source/cmake/WebKitFeatures.cmake:


  Commit: f6b62e9d4c50d6197020506f0c8b75c567f97335
      https://github.com/WebKit/WebKit/commit/f6b62e9d4c50d6197020506f0c8b75c567f97335
  Author: Antti Koivisto <koivisto at iki.fi>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/animation/animation-style-update-size-expected.txt
    A LayoutTests/fast/animation/animation-style-update-size.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/dom/Document.h
    M Source/WebCore/style/StyleTreeResolver.cpp
    M Source/WebCore/style/StyleUpdate.h
    M Source/WebCore/testing/Internals.cpp
    M Source/WebCore/testing/Internals.h
    M Source/WebCore/testing/Internals.idl

  Log Message:
  -----------
  Merge r207372 - 100% CPU on homedepot.com page
https://bugs.webkit.org/show_bug.cgi?id=163452
<rdar://problem/28730708>

Reviewed by Simon Fraser.

Source/WebCore:

The site has a keyframe animation on body. Currently this causes the animation to invalidate the
style of the entire document.

Animations use SyntheticStyleChange to invalidate elements when animation progresses and currently
that causes full subtree invalidation. However animation only ever affect individual elements and
the normal style resolution mechanism should be able to deal with things like inheritance as needed.

Test: fast/animation/animation-style-update-size.html

* dom/Document.cpp:
(WebCore::Document::recalcStyle):
* dom/Document.h:
(WebCore::Document::lastStyleUpdateSizeForTesting):

    Testing support.

* style/StyleTreeResolver.cpp:
(WebCore::Style::TreeResolver::resolveElement):

    Don't force subtree style resolution for SyntheticStyleChange.

* style/StyleUpdate.h:
(WebCore::Style::Update::size):
* testing/Internals.cpp:
(WebCore::Internals::lastStyleUpdateSize):
* testing/Internals.h:
* testing/Internals.idl:

LayoutTests:

* fast/animation/animation-style-update-size-expected.txt: Added.
* fast/animation/animation-style-update-size.html: Added.


  Commit: 96b570fa2b207e3e66f9be9fcb7e873372fecb2d
      https://github.com/WebKit/WebKit/commit/96b570fa2b207e3e66f9be9fcb7e873372fecb2d
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/CounterNode.cpp
    M Source/WebCore/rendering/CounterNode.h
    M Source/WebCore/rendering/RenderCounter.cpp
    M Source/WebCore/rendering/RenderCounter.h

  Log Message:
  -----------
  Merge r207374 - CounterNode::resetRenderers is so inefficient.
https://bugs.webkit.org/show_bug.cgi?id=163480

Reviewed by Simon Fraser.

CounterNode::resetRenderers() removes all the associated renderers from this CounterNode
and sets the dirty bit on them.
This patch does all that in a loop, instead of traversing the linked tree on each removal.

No change in functionality.

* rendering/CounterNode.cpp:
(WebCore::CounterNode::CounterNode):
(WebCore::CounterNode::~CounterNode):
(WebCore::CounterNode::nextInPreOrderAfterChildren):
(WebCore::CounterNode::lastDescendant):
(WebCore::CounterNode::addRenderer): These assertions do not seem super useful.
(WebCore::CounterNode::removeRenderer):
(WebCore::CounterNode::resetRenderers):
(WebCore::CounterNode::insertAfter):
(WebCore::CounterNode::removeChild):
* rendering/CounterNode.h:
* rendering/RenderCounter.cpp:
(WebCore::makeCounterNode):
(WebCore::RenderCounter::RenderCounter):
(WebCore::RenderCounter::~RenderCounter):
(WebCore::RenderCounter::originalText):
(WebCore::updateCounters):
(WebCore::RenderCounter::invalidate): Deleted.
* rendering/RenderCounter.h:


  Commit: f9e15a67652bbb65b77ed0a21b5ed44bded7c1af
      https://github.com/WebKit/WebKit/commit/f9e15a67652bbb65b77ed0a21b5ed44bded7c1af
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/gtk/UserAgentGtk.cpp

  Log Message:
  -----------
  Merge r207376 - [GTK] Restore user agent quirk for Yahoo
https://bugs.webkit.org/show_bug.cgi?id=163481

Reviewed by Carlos Garcia Campos.

finance.yahoo.com is sending a mobile version in response to our standard user agent.

* platform/gtk/UserAgentGtk.cpp:
(WebCore::urlRequiresMacintoshPlatform):


  Commit: bf136a2b71c89b66f7600f28a055d240bc5b8e6b
      https://github.com/WebKit/WebKit/commit/bf136a2b71c89b66f7600f28a055d240bc5b8e6b
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/loader/DocumentLoader.cpp
    M Source/WebCore/loader/DocumentLoader.h
    M Source/WebCore/loader/SubresourceLoader.cpp
    M Tools/ChangeLog
    M Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestLoaderClient.cpp
    M Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebExtensionTest.cpp
    M Tools/TestWebKitAPI/gtk/WebKit2Gtk/LoadTrackingTest.cpp

  Log Message:
  -----------
  Merge r207388 - Document request not updated after willSendRequest is called for a redirect
https://bugs.webkit.org/show_bug.cgi?id=163436

Reviewed by Michael Catanzaro.

Source/WebCore:

The first willSendRequest happens before DocumentLoader::startLoadingMainResource(), that calls setRequest, but
the second one happens after DocumentLoader::redirectReceived() and then the request is never updated again.

Covered by GTK+ unit tests.

* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::willContinueMainResourceLoadAfterRedirect): Set the new request.
* loader/DocumentLoader.h:
* loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::willSendRequestInternal): Notify the document loader when loading the main resource
and called for a redirection.

Tools:

Update /webkit2/WebKitWebView/active-uri test to check the active URI also when modified by
WebKitPage::send-request signal in a web extension.

* TestWebKitAPI/Tests/WebKit2Gtk/TestLoaderClient.cpp:
(testWebViewActiveURI):
(serverCallback):
* TestWebKitAPI/Tests/WebKit2Gtk/WebExtensionTest.cpp:
(sendRequestCallback):
* TestWebKitAPI/gtk/WebKit2Gtk/LoadTrackingTest.cpp:
(loadChangedCallback):


  Commit: 974db6f84865cfecd50da35a6a42f40ea0f17b3f
      https://github.com/WebKit/WebKit/commit/974db6f84865cfecd50da35a6a42f40ea0f17b3f
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp
    M Tools/ChangeLog
    M Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestLoaderClient.cpp

  Log Message:
  -----------
  Merge r207389 - [GTK] WebKitWebPage URI not updated after URI is modified by InjectedBundlePageResourceLoadClient::willSendRequestForFrame
https://bugs.webkit.org/show_bug.cgi?id=163389

Reviewed by Michael Catanzaro.

Source/WebKit2:

Update the page URI also when the load is committed.

* WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
(getDocumentLoaderURL):
(didStartProvisionalLoadForFrame):
(didReceiveServerRedirectForProvisionalLoadForFrame):
(didCommitLoadForFrame):
(webkitWebPageCreate):
(getProvisionalURLForFrame): Deleted.

Tools:

Update /webkit2/WebKitWebPage/get-uri test to check that web view and page uri always match even when request is
modified by WebKitWebPage::send-request signal.

* TestWebKitAPI/Tests/WebKit2Gtk/TestLoaderClient.cpp:
(testWebPageURI):


  Commit: 0d8df5d01cd5bb4938d2e05b2b9a08250fb50782
      https://github.com/WebKit/WebKit/commit/0d8df5d01cd5bb4938d2e05b2b9a08250fb50782
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp

  Log Message:
  -----------
  Merge r207391 - [GTK] Default WebKitWebsiteDataManager is always leaked in WebKitWebContext
https://bugs.webkit.org/show_bug.cgi?id=163443

Reviewed by Michael Catanzaro.

Adopt the reference returned by webkitWebsiteDataManagerCreate().

* UIProcess/API/gtk/WebKitWebContext.cpp:
(webkitWebContextConstructed):


  Commit: c8c4fcc86e3dcce79053031b7b651e35e851caa9
      https://github.com/WebKit/WebKit/commit/c8c4fcc86e3dcce79053031b7b651e35e851caa9
  Author: Manuel Rego Casasnovas <rego at igalia.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/Shared/WebPreferencesDefinitions.h

  Log Message:
  -----------
  Merge r207402 - [css-grid] Disable CSS Grid Layout runtime flag by default
https://bugs.webkit.org/show_bug.cgi?id=163432

Reviewed by Darin Adler.

It was enabled in r201042, but now Safari Technology Preview
has a UI to switch runtime flags so it doesn't need to be enabled
by default anymore.

* Shared/WebPreferencesDefinitions.h: Disable grid layout runtime flag
by default.


  Commit: cb95b692c2f8a8a86c427926d2896c2478e74355
      https://github.com/WebKit/WebKit/commit/cb95b692c2f8a8a86c427926d2896c2478e74355
  Author: Alberto Garcia <berto at igalia.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp

  Log Message:
  -----------
  Merge r207403 - [GTK] gobject-introspection on package build with webkit2gtk fails without active X session
https://bugs.webkit.org/show_bug.cgi?id=163105

Reviewed by Carlos Garcia Campos.

Don't call XCompositeQueryExtension() or XDamageQueryExtension()
if m_display is NULL.

* platform/graphics/x11/PlatformDisplayX11.cpp:
(WebCore::PlatformDisplayX11::supportsXComposite):
(WebCore::PlatformDisplayX11::supportsXDamage):


  Commit: 0fce1822bac37e14e6978b18f57f5788d9ee6afc
      https://github.com/WebKit/WebKit/commit/0fce1822bac37e14e6978b18f57f5788d9ee6afc
  Author: Chris Dumez <cdumez at apple.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp

  Log Message:
  -----------
  Merge r207441 - [WK2][NetworkCache] PendingFrameLoad objects are sometimes leaked
https://bugs.webkit.org/show_bug.cgi?id=163569
<rdar://problem/28810836>

Reviewed by Antti Koivisto.

PendingFrameLoad objects are created to track frame loads and added to
the m_pendingFrameLoads hash map. These objects are supposed to remove
themselves from the hash map once they detect that the page load has
finished by calling PendingFrameLoad::m_loadCompletionHandler().

PendingFrameLoad::m_loadCompletionHandler() is called from
markLoadAsCompleted() when we detect that the page load has finished
via the m_loadHysteresisActivity HysteresisActivity. We call impulse()
on the HysteresisActivity every time a subresource is loaded in the
frame. The issue is that if no subresource is ever loaded, then we
never call impulse() on the HysteresisActivity, which is therefore
never started. If it nevers starts, then it nevers stops and never
calls markLoadAsCompleted(). To address the problem, we now call
impulse() on the HysteresisActivity as soon as we construct it.

* NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:


  Commit: d791c1e23d1886b4f083412600676d64053edc69
      https://github.com/WebKit/WebKit/commit/d791c1e23d1886b4f083412600676d64053edc69
  Author: Said Abou-Hallawa <sabouhallawa at apple.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/css/implicit-property-restore-expected.txt
    A LayoutTests/fast/css/implicit-property-restore.html
    M LayoutTests/fast/css/remove-shorthand-expected.txt
    M Source/WTF/ChangeLog
    M Source/WTF/wtf/TemporaryChange.h
    M Source/WebCore/ChangeLog
    M Source/WebCore/css/parser/CSSParser.cpp
    M Source/WebCore/css/parser/SVGCSSParser.cpp

  Log Message:
  -----------
  Merge r207471 - SVGCSSParser: m_implicitShorthand value is not reset after adding the shorthand property
https://bugs.webkit.org/show_bug.cgi?id=116470

Reviewed by Simon Fraser.

Source/WebCore:

When we encounter a shorthand css property, we set m_implicitShorthand
to true to tell addProperty() later that the individual properties are
all set through a short hand one. We need to make sure that setting
m_implicitShorthand to true will not be leaked after finishing parsing
the short hand property.

Test: fast/css/implicit-property-restore.html

* css/parser/CSSParser.cpp:
(WebCore::CSSParser::parseValue):
(WebCore::CSSParser::parseFillShorthand):
(WebCore::CSSParser::parseShorthand):
(WebCore::CSSParser::parse4Values):
(WebCore::CSSParser::parseBorderRadius):
(WTF::ImplicitScope::ImplicitScope): Deleted.
(WTF::ImplicitScope::~ImplicitScope): Deleted.
Get rid of ImplicitScope and replace its calls by TemporaryChange<bool>.

* css/parser/SVGCSSParser.cpp:
(WebCore::CSSParser::parseSVGValue):
Restore m_implicitShorthand value after setting it temporarily to true.

Source/WTF:

* wtf/TemporaryChange.h:
(WTF::TemporaryChange::TemporaryChange):
Add a new constructor to make TemporaryChange work as a restorer. The
temporary change will happen after we construct the object.

LayoutTests:

* fast/css/implicit-property-restore-expected.txt: Added.
* fast/css/implicit-property-restore.html: Added.

* fast/css/remove-shorthand-expected.txt:
Rebase-line the test expected results because of fixing the leak of
m_implicitShorthand. The bug was happening because "background: ..." property
comes immediately before the "list-style: ...." property.


  Commit: dbc4f7959db90292448e2834e817a3c5adbb0f94
      https://github.com/WebKit/WebKit/commit/dbc4f7959db90292448e2834e817a3c5adbb0f94
  Author: Brent Fulgham <bfulgham at webkit.org>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/dom/Document.cpp

  Log Message:
  -----------
  Merge r207477 - Correct Document::removeAllEventListeners
https://bugs.webkit.org/show_bug.cgi?id=163558
<rdar://problem/28716840>

Reviewed by Chris Dumez.

Tested by fast/dom/node-move-to-new-document-crash-main.html.

* dom/Document.cpp:
(WebCore::Document::removeAllEventListeners): Clear out the wheel and
touch event targets when clearing all data.


  Commit: aed30a8c92a56fd56dfab8a923fc5a4972ff520b
      https://github.com/WebKit/WebKit/commit/aed30a8c92a56fd56dfab8a923fc5a4972ff520b
  Author: Gabor Kelemen <kelemeng at ubuntu.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/WebCore/platform/gtk/po/ChangeLog
    M Source/WebCore/platform/gtk/po/hu.po

  Log Message:
  -----------
  Merge r207534 - [GTK] [L10n] Updated Hungarian translation
https://bugs.webkit.org/show_bug.cgi?id=163650

Patch by Gabor Kelemen <kelemeng at ubuntu.com> on 2016-10-19
Rubber-stamped by Michael Catanzaro.

* hu.po:


  Commit: db51f023d773d5993c7c25c27843179b814036de
      https://github.com/WebKit/WebKit/commit/db51f023d773d5993c7c25c27843179b814036de
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/table/crash-when-table-has-continuation-and-content-inserted-expected.txt
    A LayoutTests/fast/table/crash-when-table-has-continuation-and-content-inserted.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/RenderObject.cpp
    M Source/WebCore/rendering/RenderTableRow.cpp

  Log Message:
  -----------
  Merge r207547 - Use anonymous table row for new child at RenderTableRow::addChild() if available.
https://bugs.webkit.org/show_bug.cgi?id=163651
<rdar://problem/28705022>

Reviewed by David Hyatt.

Source/WebCore:

We should try to prevent the continuation siblings from getting separated and inserted into
wrapper renderers. It makes finding these continuation siblings difficult.
This patch adds a checks for anonymous table rows so that we could find a closer common ancestor of
beforeChild/new child.

Test: fast/table/crash-when-table-has-continuation-and-content-inserted.html

* rendering/RenderObject.cpp:
(WebCore::RenderObject::showRenderObject): Add continuation information.
* rendering/RenderTableRow.cpp:
(WebCore::RenderTableRow::addChild):

LayoutTests:

* fast/table/crash-when-table-has-continuation-and-content-inserted-expected.txt: Added.
* fast/table/crash-when-table-has-continuation-and-content-inserted.html: Added.


  Commit: c839b8b006a48a307b73e704fca8b3e5cb1759d9
      https://github.com/WebKit/WebKit/commit/c839b8b006a48a307b73e704fca8b3e5cb1759d9
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/PlatformEfl.cmake
    M Source/WebCore/PlatformGTK.cmake
    M Source/WebCore/platform/graphics/egl/GLContextEGL.cpp
    A Source/WebCore/platform/graphics/x11/XErrorTrapper.cpp
    A Source/WebCore/platform/graphics/x11/XErrorTrapper.h
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.cpp

  Log Message:
  -----------
  Merge r207590 - Wrong use of EGL_DEPTH_SIZE
https://bugs.webkit.org/show_bug.cgi?id=155536

Reviewed by Michael Catanzaro.

Source/WebCore:

What happens here is that the driver doesn't implement EGL_DEPTH_SIZE and the default value, which is 0, is
returned. Then XCreatePixmap fails because 0 is not a valid depth. The thing is that even if EGL_DEPTH_SIZE or
EGL_BUFFER_SIZE returned a valid depth, it still might not be supported by the default screen and XCreatePixmap
can fail. What we need to ensure is that the depth we pass is compatible with the X display, not only with the
EGL config, to avoid failures when creating the pixmap. So, we can use EGL_NATIVE_VISUAL_ID instead, and
then ask X for the visual info for that id. If it isn't found then we just return before creating the pixmap,
but if the visual is found then we can be sure that the depth of the visual will not make the pixmap creation
fail. However, with the driver I'm using it doesn't matter how we create the pixmap that eglCreatePixmapSurface
always fails, again with X errors that are fatal by default. Since the driver is not free, I assume it doesn't
support eglCreatePixmapSurface or it's just buggy, so the only option we have here is trap the x errors and
ignore them. It turns out that the X errors are not fatal in this case, because eglCreatePixmapSurface ends up
returning a surface, and since these are offscreen contexts, it doesn't really matter if they contain an
invalid pixmap, because we never do swap buffer on them, so just ignoring the X errors fixes the crashes and
makes everythig work. This patch adds a helper class XErrorTrapper that allows to trap XErrors and decide what
to do with them (ignore, warn or crash) or even not consider a particular set of errors as errors.

* PlatformEfl.cmake: Add new file to compilation.
* PlatformGTK.cmake: Ditto.
* platform/graphics/egl/GLContextEGL.cpp:
(WebCore::GLContextEGL::createPixmapContext): Use EGL_NATIVE_VISUAL_ID instead of EGL_DEPTH_SIZE to figure out
the depth to be passed to XCreatePixmap. Also use the XErrorTrapper class to ignore all BadDrawable errors
produced by eglCreatePixmapSurface() and only show a warning about all other X errors.
* platform/graphics/x11/XErrorTrapper.cpp: Added.
(WebCore::xErrorTrappersMap):
(WebCore::XErrorTrapper::XErrorTrapper):
(WebCore::XErrorTrapper::~XErrorTrapper):
(WebCore::XErrorTrapper::errorCode):
(WebCore::XErrorTrapper::errorEvent):
* platform/graphics/x11/XErrorTrapper.h: Added.
(WebCore::XErrorTrapper::XErrorTrapper):

Source/WebKit2:

Use XErrorTrapper class instead of the custom XErrorHandler.

* PluginProcess/unix/PluginProcessMainUnix.cpp:
(WebKit::PluginProcessMainUnix):


  Commit: 0e92d64bb9e102d5648f437796f2b9a40ef5f3d8
      https://github.com/WebKit/WebKit/commit/0e92d64bb9e102d5648f437796f2b9a40ef5f3d8
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/GLContext.cpp
    M Source/WebCore/platform/graphics/GLContext.h
    M Source/WebCore/platform/graphics/egl/GLContextEGL.cpp
    M Source/WebCore/platform/graphics/glx/GLContextGLX.cpp
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp

  Log Message:
  -----------
  Merge r207614 - [GTK] Avoid strstr() when checking (E)GL extensions
https://bugs.webkit.org/show_bug.cgi?id=161958

Reviewed by Žan Doberšek.

Source/WebCore:

Add static method GLContext::isExtensionSupported() to properly search extenstions in the given extension
list, and use it instead of strstr().

* platform/graphics/GLContext.cpp:
(WebCore::GLContext::isExtensionSupported):
* platform/graphics/GLContext.h:
* platform/graphics/egl/GLContextEGL.cpp:
(WebCore::GLContextEGL::createSurfacelessContext):
* platform/graphics/glx/GLContextGLX.cpp:
(WebCore::hasSGISwapControlExtension):

Source/WebKit2:

Use GLContext::isExtensionSupported() instead of strstr().

* UIProcess/gtk/WaylandCompositor.cpp:
(WebKit::WaylandCompositor::initializeEGL):


  Commit: a96b31e656cc0719e4c89c2a84daa02778eb6295
      https://github.com/WebKit/WebKit/commit/a96b31e656cc0719e4c89c2a84daa02778eb6295
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/PlatformGTK.cmake
    M Source/WebCore/platform/graphics/GLContext.cpp
    M Source/WebCore/platform/graphics/GLContext.h
    M Source/WebCore/platform/graphics/egl/GLContextEGL.cpp
    M Source/WebCore/platform/graphics/egl/GLContextEGL.h
    A Source/WebCore/platform/graphics/egl/GLContextEGLWayland.cpp
    A Source/WebCore/platform/graphics/egl/GLContextEGLX11.cpp
    M Source/WebCore/platform/graphics/glx/GLContextGLX.cpp
    M Source/WebCore/platform/graphics/glx/GLContextGLX.h
    M Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp
    M Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp

  Log Message:
  -----------
  Merge r207615 - [GTK] Avoid including egl.h headers in internal headers
https://bugs.webkit.org/show_bug.cgi?id=163722

Reviewed by Žan Doberšek.

egl.h includes eglplatform.h that decides the native types for the platform at compile time. However, we support
to build with X11 and Wayland at the same time and decide what to use at runtime. Currently GLContext.h includes
eglplatform.h after wayland-egl.h if Wayland is enabled. That means that the wayland native types are used by
default from all cpp files including GLContext.h. It currently works in X11 because we cast the value anyway and
for example EGLNativeWindowType is a pointer in Wayland that can be casted to unsigned long in X11 to represent
the X Window. This is very fragile in any case, we should avoid adding egl headers in our headers and only
include it in cpp files. But we also need to ensure we don't use X11 and Wayland in the same cpp file.

* PlatformGTK.cmake:
* platform/graphics/GLContext.cpp:
(WebCore::GLContext::createContextForWindow):
* platform/graphics/GLContext.h:
* platform/graphics/egl/GLContextEGL.cpp:
(WebCore::GLContextEGL::createWindowContext):
(WebCore::GLContextEGL::createContext):
(WebCore::GLContextEGL::~GLContextEGL):
* platform/graphics/egl/GLContextEGL.h:
* platform/graphics/egl/GLContextEGLWayland.cpp: Added.
(WebCore::GLContextEGL::GLContextEGL):
(WebCore::GLContextEGL::createWindowSurfaceWayland):
(WebCore::GLContextEGL::createWaylandContext):
(WebCore::GLContextEGL::destroyWaylandWindow):
* platform/graphics/egl/GLContextEGLX11.cpp: Added.
(WebCore::GLContextEGL::GLContextEGL):
(WebCore::GLContextEGL::createWindowSurfaceX11):
(WebCore::GLContextEGL::createPixmapContext):
* platform/graphics/glx/GLContextGLX.cpp:
(WebCore::GLContextGLX::createWindowContext):
(WebCore::GLContextGLX::createContext):
(WebCore::GLContextGLX::GLContextGLX):
* platform/graphics/glx/GLContextGLX.h:
* platform/graphics/wayland/PlatformDisplayWayland.cpp:
* platform/graphics/x11/PlatformDisplayX11.cpp:


  Commit: 6f8110e743d56eb767152fccb4df53a4382fdea1
      https://github.com/WebKit/WebKit/commit/6f8110e743d56eb767152fccb4df53a4382fdea1
  Author: Adam Jackson <ajax at redhat.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp
    M Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp

  Log Message:
  -----------
  Merge r207616 - Prefer eglGetPlatformDisplay to eglGetDisplay
https://bugs.webkit.org/show_bug.cgi?id=163333

Patch by Adam Jackson <ajax at redhat.com> on 2016-10-20
Reviewed by Carlos Garcia Campos.

eglGetDisplay forces the implementation to guess what kind of void* it's been handed. Different implementations
do different things, in particular glvnd and Mesa behave differently. Fortunately there exists API to tell EGL
what kind of display it is, so let's use it.

* platform/graphics/wayland/PlatformDisplayWayland.cpp:
(WebCore::PlatformDisplayWayland::initialize):
* platform/graphics/x11/PlatformDisplayX11.cpp:
(WebCore::PlatformDisplayX11::initializeEGLDisplay):


  Commit: c101ade328ac61cfa5c29815517da23603148ec3
      https://github.com/WebKit/WebKit/commit/c101ade328ac61cfa5c29815517da23603148ec3
  Author: Carlos Alberto Lopez Perez <clopez at igalia.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp
    M Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp

  Log Message:
  -----------
  Merge r207619 - [GTK] Build fix after r207616
https://bugs.webkit.org/show_bug.cgi?id=163333

Reviewed by Carlos Garcia Campos.

EGL_PLATFORM_X11_KHR and EGL_PLATFORM_WAYLAND_KHR are not defined
on the EGL headers shipped by Mesa 10.3 (shipped by Debian 8)

* platform/graphics/wayland/PlatformDisplayWayland.cpp:
(WebCore::PlatformDisplayWayland::initialize):
* platform/graphics/x11/PlatformDisplayX11.cpp:
(WebCore::PlatformDisplayX11::initializeEGLDisplay):


  Commit: c38b122bc2d17800695651a434a186da5ac36897
      https://github.com/WebKit/WebKit/commit/c38b122bc2d17800695651a434a186da5ac36897
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/css-generated-content/first-letter-move-to-multicolumn-crash-expected.txt
    A LayoutTests/fast/css-generated-content/first-letter-move-to-multicolumn-crash.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/RenderBoxModelObject.cpp
    M Source/WebCore/rendering/RenderTextFragment.cpp

  Log Message:
  -----------
  Merge r207631 - Stop searching for first-letter containers at multi-column boundary.
https://bugs.webkit.org/show_bug.cgi?id=163739
<rdar://problem/28810750>

Source/WebCore:

We should not cross the multi-column boundary while searching for the first-letter container.
While moving first-letter renderers to a multi-column parent, it could result in finding the wrong
container and end up adding a new wrapper under the original container (from where we are moving the renderers).

Reviewed by David Hyatt.

Test: fast/css-generated-content/first-letter-move-to-multicolumn-crash.html

* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::moveChildrenTo):
* rendering/RenderTextFragment.cpp:
(WebCore::RenderTextFragment::blockForAccompanyingFirstLetter):

LayoutTests:

Reviewed by David Hyatt.

* fast/css-generated-content/first-letter-move-to-multicolumn-crash-expected.txt: Added.
* fast/css-generated-content/first-letter-move-to-multicolumn-crash.html: Added.


  Commit: c80601fbdc6a5a0b97aaca9cf3afd7b83122e3e4
      https://github.com/WebKit/WebKit/commit/c80601fbdc6a5a0b97aaca9cf3afd7b83122e3e4
  Author: Mark Lam <mark.lam at apple.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/bmalloc/ChangeLog
    M Source/bmalloc/bmalloc/Allocator.cpp

  Log Message:
  -----------
  Merge r207646 - bmalloc api should crash on failure to allocate when !isBmallocEnabled.
https://bugs.webkit.org/show_bug.cgi?id=163766

Reviewed by Keith Miller and Filip Pizlo.

We want to crash in bmalloc on failure to allocate even when !isBmallocEnabled.
This is so that failures to allocate memory will manifest as crashes with a
unique signature (i.e. as a SIGTRAP on release builds, or as a write to illegal
address 0xbbadbeef on debug builds) and the crash will manifest inside bmalloc.
This distinguishes allocation failures from other crashing bugs that manifest as
SIGSEGVs due to random pointer dereferences in the clients of bmalloc.

* bmalloc/Allocator.cpp:
(bmalloc::Allocator::allocateImpl):
(bmalloc::Allocator::reallocate):
(bmalloc::Allocator::allocateSlowCase):


  Commit: 61b28b9d9dc2ba1fb8f50fbb0c7436ad778bb8db
      https://github.com/WebKit/WebKit/commit/61b28b9d9dc2ba1fb8f50fbb0c7436ad778bb8db
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M ChangeLog
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/PlatformDisplay.cpp
    M Source/WebCore/platform/graphics/PlatformDisplay.h
    M Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp
    M Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp
    M Source/WebKit2/UIProcess/AcceleratedDrawingAreaProxy.cpp
    M Source/WebKit2/UIProcess/AcceleratedDrawingAreaProxy.h
    M Source/WebKit2/UIProcess/WebProcessPool.cpp
    M Source/WebKit2/UIProcess/gtk/AcceleratedBackingStore.cpp
    M Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp
    M Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp
    M Source/WebKit2/UIProcess/gtk/WaylandCompositor.h
    M Source/WebKit2/WebProcess/WebPage/AcceleratedDrawingArea.cpp
    M Source/WebKit2/WebProcess/WebPage/AcceleratedDrawingArea.h
    M Source/WebKit2/WebProcess/WebPage/DrawingArea.h
    M Source/WebKit2/WebProcess/WebPage/DrawingArea.messages.in
    M Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h
    M Source/cmake/OptionsGTK.cmake

  Log Message:
  -----------
  Merge r207658 - [GTK] Configures but fails to link with ENABLE_OPENGL=OFF
https://bugs.webkit.org/show_bug.cgi?id=163449

Reviewed by Michael Catanzaro.

.:

Remove wrong dependency of Wayland on OpenGL introduced in r190615, it should be possible to build for Wayland
without GL.

* Source/cmake/OptionsGTK.cmake:

Source/WebCore:

Only define sharingGLContext in PlatformDisplay if EGL or GLX are enabled.

* platform/graphics/PlatformDisplay.cpp:
* platform/graphics/PlatformDisplay.h:
* platform/graphics/wayland/PlatformDisplayWayland.cpp:
(WebCore::PlatformDisplayWayland::initialize):
* platform/graphics/x11/PlatformDisplayX11.cpp:
(WebCore::PlatformDisplayX11::~PlatformDisplayX11):

Source/WebKit2:

* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseRealize): Check TEXTURE_MAPPER_GL instead of TEXTURE_MAPPER and also ensure the current
display is X11.
(webkitWebViewBaseUnrealize): Ditto.
(webkitWebViewBaseDidRelaunchWebProcess): Check TEXTURE_MAPPER_GL instead of TEXTURE_MAPPER.
(webkitWebViewBasePageClosed): Ditto.
* UIProcess/AcceleratedDrawingAreaProxy.cpp:
(WebKit::AcceleratedDrawingAreaProxy::didUpdateBackingStoreState): Ditto.
(WebKit::AcceleratedDrawingAreaProxy::waitForAndDispatchDidUpdateBackingStoreState): Check EGL is enabled before
trying to use the WaylandCompositor.
* UIProcess/AcceleratedDrawingAreaProxy.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::createNewWebProcess): Ditto.
* UIProcess/gtk/AcceleratedBackingStore.cpp:
(WebKit::AcceleratedBackingStore::create): Ditto.
* UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:
* UIProcess/gtk/WaylandCompositor.cpp:
* UIProcess/gtk/WaylandCompositor.h:
* WebProcess/WebPage/AcceleratedDrawingArea.cpp:
(WebKit::AcceleratedDrawingArea::enterAcceleratedCompositingMode): Check TEXTURE_MAPPER_GL instead of TEXTURE_MAPPER.
* WebProcess/WebPage/AcceleratedDrawingArea.h:
* WebProcess/WebPage/DrawingArea.h:
* WebProcess/WebPage/DrawingArea.messages.in:
* WebProcess/WebPage/LayerTreeHost.h:


  Commit: 3a2189bfe888cd1fda81878a5838f1175669b016
      https://github.com/WebKit/WebKit/commit/3a2189bfe888cd1fda81878a5838f1175669b016
  Author: Žan Doberšek <zdobersek at igalia.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/heap/Heap.cpp
    M Source/JavaScriptCore/heap/HeapCell.h
    M Source/JavaScriptCore/heap/MarkedBlock.cpp

  Log Message:
  -----------
  Merge r207659 - Fix JSC cast-align compiler warnings on ARMv7
https://bugs.webkit.org/show_bug.cgi?id=163744

Reviewed by Mark Lam.

Use the reinterpret_cast_ptr workaround in a few places where
the cast alignment warning is being thrown by the GCC compiler
when compiling for the ARMv7 architecture.

* heap/Heap.cpp:
(JSC::Zombify::visit):
* heap/HeapCell.h:
(JSC::HeapCell::zap):
(JSC::HeapCell::isZapped):
* heap/MarkedBlock.cpp:
(JSC::MarkedBlock::Handle::specializedSweep):


  Commit: 52a8e6b8f69e911c4b7832910cd609a2fa25d8ad
      https://github.com/WebKit/WebKit/commit/52a8e6b8f69e911c4b7832910cd609a2fa25d8ad
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/lists/crash-when-list-marker-is-moved-during-selection-expected.txt
    A LayoutTests/fast/lists/crash-when-list-marker-is-moved-during-selection.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/RenderListItem.cpp

  Log Message:
  -----------
  Merge r207683 - Do not mutate the render tree while collecting selection repaint rects.
https://bugs.webkit.org/show_bug.cgi?id=163800
<rdar://problem/28806886>

Reviewed by David Hyatt.

Source/WebCore:

RenderListItem not only mutates the tree while in layout but it also uses
the old descendant context to find the insertion point.
This patch strictly ensures that we only do it while in layout and never
in other cases such as collecting repaint rects.
This gets redundant when webkit.org/b/163789 is fixed.

Test: fast/lists/crash-when-list-marker-is-moved-during-selection.html

* rendering/RenderListItem.cpp:
(WebCore::RenderListItem::insertOrMoveMarkerRendererIfNeeded):

LayoutTests:

* fast/lists/crash-when-list-marker-is-moved-during-selection-expected.txt: Added.
* fast/lists/crash-when-list-marker-is-moved-during-selection.html: Added.


  Commit: 89c4e17ade25186a4bfbdcf50e42e653c15030ec
      https://github.com/WebKit/WebKit/commit/89c4e17ade25186a4bfbdcf50e42e653c15030ec
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/css-generated-content/dynamic-first-letter-selection-clear-crash-expected.txt
    A LayoutTests/fast/css-generated-content/dynamic-first-letter-selection-clear-crash.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/RenderBlock.cpp
    M Source/WebCore/rendering/RenderBlock.h
    M Source/WebCore/rendering/RenderListItem.cpp
    M Source/WebCore/rendering/RenderRubyRun.cpp
    M Source/WebCore/rendering/RenderRubyRun.h
    M Source/WebCore/rendering/RenderTable.cpp
    M Source/WebCore/rendering/RenderTable.h
    M Source/WebCore/rendering/svg/RenderSVGText.cpp
    M Source/WebCore/rendering/svg/RenderSVGText.h

  Log Message:
  -----------
  Merge r207804 - Do not update selection rect on dirty lineboxes.
https://bugs.webkit.org/show_bug.cgi?id=163862
<rdar://problem/28813156>

Reviewed by Simon Fraser.

Source/WebCore:

In certain cases RenderBlock::updateFirstLetter() triggers
unwanted render tree mutation while the caller assumes intact renderers.
This patch ensures that no renderers gets destroyed while computing the preferred widths
when we are outside of layout context.

Test: fast/css-generated-content/dynamic-first-letter-selection-clear-crash.html

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::computePreferredLogicalWidths):
(WebCore::RenderBlock::updateFirstLetter):
* rendering/RenderBlock.h:
* rendering/RenderListItem.cpp:
(WebCore::RenderListItem::insertOrMoveMarkerRendererIfNeeded):
* rendering/RenderRubyRun.cpp:
(WebCore::RenderRubyRun::updateFirstLetter):
* rendering/RenderRubyRun.h:
* rendering/RenderTable.cpp:
(WebCore::RenderTable::updateFirstLetter):
* rendering/RenderTable.h:
* rendering/svg/RenderSVGText.cpp:
(WebCore::RenderSVGText::updateFirstLetter):
* rendering/svg/RenderSVGText.h:

LayoutTests:

* fast/css-generated-content/dynamic-first-letter-selection-clear-crash-expected.txt: Added.
* fast/css-generated-content/dynamic-first-letter-selection-clear-crash.html: Added.


  Commit: 5be234629cafbfa0d64645463b0db1b7f9c08203
      https://github.com/WebKit/WebKit/commit/5be234629cafbfa0d64645463b0db1b7f9c08203
  Author: Christopher Reid <Christopher.Reid at am.sony.com>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/jsc.cpp

  Log Message:
  -----------
  Merge r207842 - jsc.cpp is leaking memory allocated by readline in runInteractive
https://bugs.webkit.org/show_bug.cgi?id=163958

According to http://web.mit.edu/gnu/doc/html/rlman_2.html,
"The line readline returns is allocated with malloc ();
you should free () the line when you are done with it."
The memory allocated by readline is not being freed when it should.

Patch by Christopher Reid <Christopher.Reid at am.sony.com> on 2016-10-25
Reviewed by Mark Lam.

* jsc.cpp:


  Commit: 7cc988215291e7a7a1f32e9b777604e0bbd6fae6
      https://github.com/WebKit/WebKit/commit/7cc988215291e7a7a1f32e9b777604e0bbd6fae6
  Author: Daniel Bates <dbates at webkit.org>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/http/tests/security/xssAuditor/dom-write-location-dom-write-open-img-onerror-expected.txt
    A LayoutTests/http/tests/security/xssAuditor/dom-write-location-dom-write-open-img-onerror.html
    A LayoutTests/http/tests/security/xssAuditor/dom-write-location-open-img-onerror-expected.txt
    A LayoutTests/http/tests/security/xssAuditor/dom-write-location-open-img-onerror.html
    A LayoutTests/http/tests/security/xssAuditor/nested-dom-write-location-open-img-onerror-expected.txt
    A LayoutTests/http/tests/security/xssAuditor/nested-dom-write-location-open-img-onerror.html
    A LayoutTests/http/tests/security/xssAuditor/resources/echo-nested-dom-write-location.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/html/parser/HTMLSourceTracker.cpp
    M Source/WebCore/html/parser/HTMLToken.h
    M Source/WebCore/html/parser/HTMLTokenizer.h

  Log Message:
  -----------
  Merge r207848 - REGRESSION (r178265): XSS Auditor fails to block document.write() of incomplete tag
https://bugs.webkit.org/show_bug.cgi?id=163978
<rdar://problem/25962131>

Reviewed by Darin Adler.

Source/WebCore:

During the tokenization process of an HTML tag the start and end positions of each of its
attributes is tracked so that the XSS Auditor can request a snippet around a suspected
injected attribute. We need to take care to consider document.write() boundaries when
tracking the start and end positions of each HTML tag and attribute so that the XSS Auditor
receives the correct snippet. Following r178265 we no longer consider document.write()
boundaries when tracking the start and end positions of attributes. So, the substring
represented by the start and end positions of an attribute may correspond to some other
attribute in the tag. Therefore the XSS Auditor may fail to block an injection because the
snippet it requested may not be the snippet that it intended to request.

Tests: http/tests/security/xssAuditor/dom-write-location-dom-write-open-img-onerror.html
       http/tests/security/xssAuditor/dom-write-location-open-img-onerror.html
       http/tests/security/xssAuditor/nested-dom-write-location-open-img-onerror.html

* html/parser/HTMLSourceTracker.cpp:
(WebCore::HTMLSourceTracker::startToken): Set the attribute base offset to be the token
start position.
(WebCore::HTMLSourceTracker::source): Use the specified attribute start position as-is. We no
longer adjust it here because it was adjusted with respect to the attribute base offset, which
takes into account document.write() boundaries.
* html/parser/HTMLToken.h:
(WebCore::HTMLToken::setAttributeBaseOffset): Added.
(WebCore::HTMLToken::beginAttribute): Subtract attribute base offset from the specified offset.
(WebCore::HTMLToken::endAttribute): Ditto.
* html/parser/HTMLTokenizer.h:
(WebCore::HTMLTokenizer::setTokenAttributeBaseOffset): Added.

LayoutTests:

Add tests to ensure that the XSS Auditor blocks a document.write() of an incomplete HTML image tag.

* http/tests/security/xssAuditor/dom-write-location-dom-write-open-img-onerror-expected.txt: Added.
* http/tests/security/xssAuditor/dom-write-location-dom-write-open-img-onerror.html: Added.
* http/tests/security/xssAuditor/dom-write-location-open-img-onerror-expected.txt: Added.
* http/tests/security/xssAuditor/dom-write-location-open-img-onerror.html: Added.
* http/tests/security/xssAuditor/nested-dom-write-location-open-img-onerror-expected.txt: Added.
* http/tests/security/xssAuditor/nested-dom-write-location-open-img-onerror.html: Added.
* http/tests/security/xssAuditor/resources/echo-nested-dom-write-location.html: Added.


  Commit: 963bc4d4b8d25289c028ed03e97f05c1436baac5
      https://github.com/WebKit/WebKit/commit/963bc4d4b8d25289c028ed03e97f05c1436baac5
  Author: Dean Jackson <dino at apple.com>
  Date:   2016-10-28 (Fri, 28 Oct 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    R Source/WebCore/animation/DocumentTimeline.h.rej

  Log Message:
  -----------
  Merge r205894 - Remove a .rej file.

* animation/DocumentTimeline.h.rej: Removed.


  Commit: b9514d18d4a5bf0c62a2eb48355f92f3e09f2307
      https://github.com/WebKit/WebKit/commit/b9514d18d4a5bf0c62a2eb48355f92f3e09f2307
  Author: Carlos Garcia Campos <carlosgc at webkit.org>
  Date:   2016-11-03 (Thu, 03 Nov 2016)

  Changed paths:
    M ChangeLog
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/gtk/NEWS
    M Source/cmake/OptionsGTK.cmake

  Log Message:
  -----------
  Unreviewed. Update OptionsGTK.cmake and NEWS for 2.14.2 release.

.:

* Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit2:

* gtk/NEWS: Add release notes for 2.14.2.


  Commit: f729be76979b7dbf2dc8d95d4b27d2be90484067
      https://github.com/WebKit/WebKit/commit/f729be76979b7dbf2dc8d95d4b27d2be90484067
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-12-27 (Tue, 27 Dec 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/PlatformDisplay.h
    M Source/WebCore/platform/graphics/glx/GLContextGLX.cpp
    M Source/WebCore/platform/graphics/glx/GLContextGLX.h
    M Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp

  Log Message:
  -----------
  Revert "Merge r205852 - [GTK] Crash of WebProcess on the last WebView disconnect (take two)"

This reverts commit c6853af17a2290c2321cce33f5e012656511d27c.


  Commit: bb2077ec14faf85c6848784293f056197c822fef
      https://github.com/WebKit/WebKit/commit/bb2077ec14faf85c6848784293f056197c822fef
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-12-27 (Tue, 27 Dec 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/glx/GLContextGLX.cpp
    M Source/WebCore/platform/graphics/glx/GLContextGLX.h

  Log Message:
  -----------
  Merge r205544 - [GTK] Crash of WebProcess on the last WebView disconnect
https://bugs.webkit.org/show_bug.cgi?id=161605

Reviewed by Michael Catanzaro.

Stop tracking X11 GL contexts to be cleanered on an exit handler. This was added to work around bugs on drivers,
and it's assuming that all GLContext not deleted when the exit handler is called are leaked, which is no longer
true, because PlatformDisplay now owns a GLContext and is deleted after exit handlers.

* platform/graphics/GLContext.cpp:
(WebCore::GLContext::GLContext):
(WebCore::GLContext::~GLContext):
(WebCore::activeContextList): Deleted.
(WebCore::GLContext::addActiveContext): Deleted.
(WebCore::GLContext::removeActiveContext): Deleted.
(WebCore::GLContext::cleanupActiveContextsAtExit): Deleted.


  Commit: 920ad46a826b7856b7f6770c1af922877abf9370
      https://github.com/WebKit/WebKit/commit/920ad46a826b7856b7f6770c1af922877abf9370
  Author: Miguel Gomez <magomez at igalia.com>
  Date:   2016-12-27 (Tue, 27 Dec 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp

  Log Message:
  -----------
  Merge r207287 - [GTK] Video playback doesn't work properly with accelerated compositing disabled
https://bugs.webkit.org/show_bug.cgi?id=163386

Patch by Miguel Gomez <magomez at igalia.com> on 2016-10-13
Reviewed by Carlos Garcia Campos.

Trigger a repaint of the player when a new frame arrives and accelerated compositing is disabled.

Covered by existent tests.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint):


  Commit: a6c53c04f47f7ab3162c0887a6556b76692a4be1
      https://github.com/WebKit/WebKit/commit/a6c53c04f47f7ab3162c0887a6556b76692a4be1
  Author: Miguel Gomez <magomez at igalia.com>
  Date:   2016-12-27 (Tue, 27 Dec 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/html/HTMLMediaElement.cpp
    M Source/WebCore/html/HTMLMediaElement.h
    M Source/WebCore/platform/graphics/MediaPlayer.h
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h

  Log Message:
  -----------
  Merge r207666 - [GTK] Several tests crashing on debug bot in (anonymous namespace)::MediaPlayerPrivateGStreamerBase::repaint
https://bugs.webkit.org/show_bug.cgi?id=163511

Patch by Miguel Gomez <magomez at igalia.com> on 2016-10-21
Reviewed by Carlos Garcia Campos.

Perform the video repaint in the main thread when accelerated compositing is disabled. Added a new method to
MediaPlayerClient to get whether accelerated compositing is enabled from the MediaPlayer. This is needed
because mediaPlayerAcceleratedCompositingEnabled() will return false while HTMLMediaElement doesn't have a
RenderVideo, even when accelerated compositing is enabled.

Covered by existent tests.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::mediaPlayerAcceleratedCompositingEnabled):
* html/HTMLMediaElement.h:
* platform/graphics/MediaPlayer.h:
(WebCore::MediaPlayerClient::mediaPlayerAcceleratedCompositingEnabled):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::repaint):
(WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:


  Commit: ed94198c93f28911d6a6c3f7b0613ac9c28f2498
      https://github.com/WebKit/WebKit/commit/ed94198c93f28911d6a6c3f7b0613ac9c28f2498
  Author: Myles C. Maxfield <mmaxfield at apple.com>
  Date:   2016-12-27 (Tue, 27 Dec 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/canvas/webgl/webgl2-context-creation-expected.txt
    A LayoutTests/fast/canvas/webgl/webgl2-context-creation.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/html/canvas/WebGLBuffer.cpp
    M Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp
    M Source/WebCore/platform/graphics/GraphicsContext3D.h
    M Source/WebCore/platform/graphics/mac/GraphicsContext3DMac.mm
    M Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.cpp
    M Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.h
    M Source/WebCore/platform/graphics/opengl/Extensions3DOpenGLCommon.cpp
    M Source/WebCore/platform/graphics/opengl/Extensions3DOpenGLCommon.h
    M Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGL.cpp

  Log Message:
  -----------
  Merge r208022 - [macOS] [WebGL2] Temporarily upgrade WebGL 2's internal OpenGL context from version 2.1 to 3.2
https://bugs.webkit.org/show_bug.cgi?id=164091

Reviewed by Dean Jackson.

Source/WebCore:

In order to test WebGL2 correctly, I had to upgrade the macOS's OpenGL
context to a 3.2-compatible context to make sure the new symbols are
accepted. Eventually, this 3.2-compatible context will have to be
reverted and replaced with an ANGLE context. The current 3.2-compatible
context is just for testing.

Test: fast/canvas/webgl/webgl2-context-creation.html

* html/canvas/WebGLBuffer.cpp: Use "nullptr" instead of 0.
(WebCore::WebGLBuffer::associateBufferData):
* html/canvas/WebGLRenderingContextBase.cpp: Use make_unique() instead
of the unique_ptr constructor.
(WebCore::WebGLRenderingContextBase::create):
* platform/graphics/GraphicsContext3D.h: GraphicsContext should know
if it is using a 3.2-compatible context because some parts of 2.1 are
removed in these contexts, and replaced with new things which aren't
in 2.1.
* platform/graphics/mac/GraphicsContext3DMac.mm:
(WebCore::setPixelFormat): Use kCGLPFAOpenGLProfile to specify an
OpenGL 3.2 context.
(WebCore::GraphicsContext3D::GraphicsContext3D): GL_CLAMP is deprecated
in OpenGL 3.2. Fortunately, GL_CLAMP_TO_EDGE isn't deprecated and does
exactly what we want. In OpenGL3.2, point sprites are always enabled,
so there's no need to enable them in those contexts.
(WebCore::GraphicsContext3D::isGLES2Compliant):
* platform/graphics/opengl/Extensions3DOpenGL.cpp: In OpenGL 3.2,
glGetString() no longer accepts GL_EXTENSIONS. Instead, glGetStringi()
is used instead. Unfortunately, glGetString() is not available in
OpenGL 2.1 contexts, so we need to use one or the other based on the
version of the context we're using.
(WebCore::Extensions3DOpenGL::Extensions3DOpenGL):
(WebCore::Extensions3DOpenGL::getExtensions):
* platform/graphics/opengl/Extensions3DOpenGL.h:
* platform/graphics/opengl/Extensions3DOpenGLCommon.cpp:
(WebCore::Extensions3DOpenGLCommon::Extensions3DOpenGLCommon):
(WebCore::Extensions3DOpenGLCommon::initializeAvailableExtensions):
Instead of modifying getExtensions() to use glGetStringi(), it makes
better sense to modify this function because getExtensions() returns
a string. Building up a string just to split it up again is silly, so
modifying this function instead makes more sense.
* platform/graphics/opengl/Extensions3DOpenGLCommon.h:
* platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:
(WebCore::GraphicsContext3D::getIntegerv): GL_MAX_VARYING_FLOATS is
removed in OpenGL 3.2 contexts. However, it is replaced by
GL_MAX_VARYING_COMPONENTS, though this is deprecated but not removed.
In the more recent OpenGL context versions, GL_MAX_VARYING_VECTORS is
recommended instead, but that isn't available in OpenGL 3.2.
(WebCore::GraphicsContext3D::getExtensions):

LayoutTests:

* TestExpectations:
* fast/canvas/webgl/webgl2-context-creation-expected.txt: Added.
* fast/canvas/webgl/webgl2-context-creation.html: Added.


  Commit: 2836b426d7c5a66e1d0277b4b6d6a6026cd8fafb
      https://github.com/WebKit/WebKit/commit/2836b426d7c5a66e1d0277b4b6d6a6026cd8fafb
  Author: Alex Christensen <achristensen at apple.com>
  Date:   2016-12-27 (Tue, 27 Dec 2016)

  Changed paths:
    M Source/ThirdParty/ANGLE/ANGLE.plist
    M Source/ThirdParty/ANGLE/ANGLE.xcodeproj/project.pbxproj
    M Source/ThirdParty/ANGLE/AUTHORS
    M Source/ThirdParty/ANGLE/BUILD.gn
    M Source/ThirdParty/ANGLE/CMakeLists.txt
    M Source/ThirdParty/ANGLE/CONTRIBUTORS
    M Source/ThirdParty/ANGLE/ChangeLog
    M Source/ThirdParty/ANGLE/Configurations/ANGLE.xcconfig
    M Source/ThirdParty/ANGLE/DEPS
    M Source/ThirdParty/ANGLE/README.md
    R Source/ThirdParty/ANGLE/angle.isolate
    M Source/ThirdParty/ANGLE/changes.diff
    M Source/ThirdParty/ANGLE/codereview.settings
    R Source/ThirdParty/ANGLE/extensions/ANGLE_depth_texture.txt
    R Source/ThirdParty/ANGLE/extensions/ANGLE_framebuffer_blit.txt
    R Source/ThirdParty/ANGLE/extensions/ANGLE_framebuffer_multisample.txt
    R Source/ThirdParty/ANGLE/extensions/ANGLE_instanced_arrays.txt
    R Source/ThirdParty/ANGLE/extensions/ANGLE_pack_reverse_row_order.txt
    R Source/ThirdParty/ANGLE/extensions/ANGLE_platform_angle.txt
    R Source/ThirdParty/ANGLE/extensions/ANGLE_platform_angle_d3d.txt
    R Source/ThirdParty/ANGLE/extensions/ANGLE_platform_angle_opengl.txt
    R Source/ThirdParty/ANGLE/extensions/ANGLE_program_binary.txt
    R Source/ThirdParty/ANGLE/extensions/ANGLE_robust_resource_initialization.txt
    R Source/ThirdParty/ANGLE/extensions/ANGLE_texture_compression_dxt.txt
    R Source/ThirdParty/ANGLE/extensions/ANGLE_texture_usage.txt
    R Source/ThirdParty/ANGLE/extensions/ANGLE_timer_query.txt
    R Source/ThirdParty/ANGLE/extensions/ANGLE_translated_shader_source.txt
    R Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_d3d_share_handle_client_buffer.txt
    R Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_device_d3d.txt
    R Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_direct3d_display.txt
    R Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_query_surface_pointer.txt
    R Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_robust_resource_initialization.txt
    R Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_software_display.txt
    R Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_surface_d3d_texture_2d_share_handle.txt
    R Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_window_fixed_size.txt
    R Source/ThirdParty/ANGLE/extensions/EGL_EXT_create_context_robustness.txt
    R Source/ThirdParty/ANGLE/extensions/EGL_EXT_device_query.txt
    R Source/ThirdParty/ANGLE/extensions/EXT_blend_minmax.txt
    R Source/ThirdParty/ANGLE/extensions/EXT_color_buffer_float.txt
    R Source/ThirdParty/ANGLE/extensions/EXT_draw_buffers.txt
    R Source/ThirdParty/ANGLE/extensions/EXT_robustness.txt
    R Source/ThirdParty/ANGLE/extensions/EXT_shader_framebuffer_fetch.txt
    R Source/ThirdParty/ANGLE/extensions/EXT_texture_rg.txt
    R Source/ThirdParty/ANGLE/extensions/EXT_texture_storage.txt
    R Source/ThirdParty/ANGLE/generate_winrt_projects.py
    M Source/ThirdParty/ANGLE/include/EGL/egl.h
    M Source/ThirdParty/ANGLE/include/EGL/eglext.h
    M Source/ThirdParty/ANGLE/include/GLES2/gl2ext.h
    R Source/ThirdParty/ANGLE/include/GLES3/gl3ext.h
    M Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h
    M Source/ThirdParty/ANGLE/include/GLSLANG/ShaderVars.h
    M Source/ThirdParty/ANGLE/include/export.h
    M Source/ThirdParty/ANGLE/src/angle.gyp
    M Source/ThirdParty/ANGLE/src/commit_id.py
    A Source/ThirdParty/ANGLE/src/common/Color.h
    A Source/ThirdParty/ANGLE/src/common/Color.inl
    M Source/ThirdParty/ANGLE/src/common/Optional.h
    M Source/ThirdParty/ANGLE/src/common/angleutils.cpp
    M Source/ThirdParty/ANGLE/src/common/angleutils.h
    M Source/ThirdParty/ANGLE/src/common/debug.cpp
    M Source/ThirdParty/ANGLE/src/common/debug.h
    M Source/ThirdParty/ANGLE/src/common/mathutil.cpp
    M Source/ThirdParty/ANGLE/src/common/mathutil.h
    M Source/ThirdParty/ANGLE/src/common/mathutil_unittest.cpp
    M Source/ThirdParty/ANGLE/src/common/matrix_utils.h
    M Source/ThirdParty/ANGLE/src/common/platform.h
    M Source/ThirdParty/ANGLE/src/common/string_utils.cpp
    M Source/ThirdParty/ANGLE/src/common/string_utils.h
    M Source/ThirdParty/ANGLE/src/common/string_utils_unittest.cpp
    A Source/ThirdParty/ANGLE/src/common/third_party/numerics/README.angle
    A Source/ThirdParty/ANGLE/src/common/third_party/numerics/base/logging.h
    A Source/ThirdParty/ANGLE/src/common/third_party/numerics/base/numerics/OWNERS
    A Source/ThirdParty/ANGLE/src/common/third_party/numerics/base/numerics/safe_conversions.h
    A Source/ThirdParty/ANGLE/src/common/third_party/numerics/base/numerics/safe_conversions_impl.h
    A Source/ThirdParty/ANGLE/src/common/third_party/numerics/base/numerics/safe_math.h
    A Source/ThirdParty/ANGLE/src/common/third_party/numerics/base/numerics/safe_math_impl.h
    A Source/ThirdParty/ANGLE/src/common/third_party/numerics/base/numerics/safe_numerics_unittest.cc
    M Source/ThirdParty/ANGLE/src/common/utilities.cpp
    M Source/ThirdParty/ANGLE/src/common/utilities.h
    M Source/ThirdParty/ANGLE/src/compiler.gypi
    A Source/ThirdParty/ANGLE/src/compiler/fuzz/translator_fuzzer.cpp
    M Source/ThirdParty/ANGLE/src/compiler/preprocessor/64bit-tokenizer-safety.patch
    M Source/ThirdParty/ANGLE/src/compiler/preprocessor/DiagnosticsBase.cpp
    M Source/ThirdParty/ANGLE/src/compiler/preprocessor/DiagnosticsBase.h
    M Source/ThirdParty/ANGLE/src/compiler/preprocessor/DirectiveHandlerBase.cpp
    M Source/ThirdParty/ANGLE/src/compiler/preprocessor/DirectiveParser.cpp
    M Source/ThirdParty/ANGLE/src/compiler/preprocessor/DirectiveParser.h
    M Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp
    M Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.h
    M Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.y
    M Source/ThirdParty/ANGLE/src/compiler/preprocessor/Input.cpp
    M Source/ThirdParty/ANGLE/src/compiler/preprocessor/Input.h
    M Source/ThirdParty/ANGLE/src/compiler/preprocessor/Lexer.cpp
    M Source/ThirdParty/ANGLE/src/compiler/preprocessor/Lexer.h
    M Source/ThirdParty/ANGLE/src/compiler/preprocessor/Macro.cpp
    M Source/ThirdParty/ANGLE/src/compiler/preprocessor/Macro.h
    M Source/ThirdParty/ANGLE/src/compiler/preprocessor/MacroExpander.cpp
    M Source/ThirdParty/ANGLE/src/compiler/preprocessor/MacroExpander.h
    M Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.cpp
    M Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.h
    M Source/ThirdParty/ANGLE/src/compiler/preprocessor/Token.cpp
    M Source/ThirdParty/ANGLE/src/compiler/preprocessor/Token.h
    M Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.cpp
    M Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.h
    M Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.l
    R Source/ThirdParty/ANGLE/src/compiler/preprocessor/pp_utils.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/ASTMetadataHLSL.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/ASTMetadataHLSL.h
    A Source/ThirdParty/ANGLE/src/compiler/translator/AddAndTrueToLoopCondition.cpp
    A Source/ThirdParty/ANGLE/src/compiler/translator/AddAndTrueToLoopCondition.h
    A Source/ThirdParty/ANGLE/src/compiler/translator/AddDefaultReturnStatements.cpp
    A Source/ThirdParty/ANGLE/src/compiler/translator/AddDefaultReturnStatements.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/ArrayReturnValueToOutParameter.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/BaseTypes.h
    A Source/ThirdParty/ANGLE/src/compiler/translator/BreakVariableAliasingInInnerLoops.cpp
    A Source/ThirdParty/ANGLE/src/compiler/translator/BreakVariableAliasingInInnerLoops.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/BuiltInFunctionEmulator.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/BuiltInFunctionEmulatorGLSL.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/BuiltInFunctionEmulatorGLSL.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/BuiltInFunctionEmulatorHLSL.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/BuiltInFunctionEmulatorHLSL.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/CallDAG.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/CallDAG.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/CodeGen.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/Compiler.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/Compiler.h
    A Source/ThirdParty/ANGLE/src/compiler/translator/ConstantUnion.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/ConstantUnion.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/DeferGlobalInitializers.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/DeferGlobalInitializers.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/Diagnostics.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/Diagnostics.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/DirectiveHandler.cpp
    A Source/ThirdParty/ANGLE/src/compiler/translator/EmulateGLFragColorBroadcast.cpp
    A Source/ThirdParty/ANGLE/src/compiler/translator/EmulateGLFragColorBroadcast.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/EmulatePrecision.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/EmulatePrecision.h
    A Source/ThirdParty/ANGLE/src/compiler/translator/ExpandIntegerPowExpressions.cpp
    A Source/ThirdParty/ANGLE/src/compiler/translator/ExpandIntegerPowExpressions.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/Initialize.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/InitializeVariables.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/InitializeVariables.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/IntermNode.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/IntermNode.h
    A Source/ThirdParty/ANGLE/src/compiler/translator/IntermNodePatternMatcher.cpp
    A Source/ThirdParty/ANGLE/src/compiler/translator/IntermNodePatternMatcher.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/IntermTraverse.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/Intermediate.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/Intermediate.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/Operator.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/Operator.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/OutputGLSLBase.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/OutputGLSLBase.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/OutputHLSL.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/OutputHLSL.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/ParseContext.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/ParseContext.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/PoolAlloc.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/PoolAlloc.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/PruneEmptyDeclarations.cpp
    R Source/ThirdParty/ANGLE/src/compiler/translator/QualifierAlive.h
    A Source/ThirdParty/ANGLE/src/compiler/translator/QualifierTypes.cpp
    A Source/ThirdParty/ANGLE/src/compiler/translator/QualifierTypes.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/RecordConstantPrecision.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/RegenerateStructNames.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/RegenerateStructNames.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/RemoveDynamicIndexing.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/RemovePow.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/RemoveSwitchFallThrough.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/RemoveSwitchFallThrough.h
    R Source/ThirdParty/ANGLE/src/compiler/translator/RenameFunction.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/RewriteDoWhile.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/RewriteElseBlocks.cpp
    A Source/ThirdParty/ANGLE/src/compiler/translator/RewriteTexelFetchOffset.cpp
    A Source/ThirdParty/ANGLE/src/compiler/translator/RewriteTexelFetchOffset.h
    A Source/ThirdParty/ANGLE/src/compiler/translator/RewriteUnaryMinusOperatorInt.cpp
    A Source/ThirdParty/ANGLE/src/compiler/translator/RewriteUnaryMinusOperatorInt.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/ScalarizeVecAndMatConstructorArgs.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/ScalarizeVecAndMatConstructorArgs.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/SeparateArrayInitialization.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/SeparateDeclarations.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/SeparateExpressionsReturningArrays.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/ShaderLang.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/ShaderVars.cpp
    A Source/ThirdParty/ANGLE/src/compiler/translator/SimplifyLoopConditions.cpp
    A Source/ThirdParty/ANGLE/src/compiler/translator/SimplifyLoopConditions.h
    A Source/ThirdParty/ANGLE/src/compiler/translator/SplitSequenceOperator.cpp
    A Source/ThirdParty/ANGLE/src/compiler/translator/SplitSequenceOperator.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/SymbolTable.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/SymbolTable.h
    A Source/ThirdParty/ANGLE/src/compiler/translator/TextureFunctionHLSL.cpp
    A Source/ThirdParty/ANGLE/src/compiler/translator/TextureFunctionHLSL.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorESSL.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorESSL.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorGLSL.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorGLSL.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorHLSL.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorHLSL.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/Types.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/Types.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/UnfoldShortCircuitAST.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/UnfoldShortCircuitToIf.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/UniformHLSL.cpp
    A Source/ThirdParty/ANGLE/src/compiler/translator/UseInterfaceBlockFields.cpp
    A Source/ThirdParty/ANGLE/src/compiler/translator/UseInterfaceBlockFields.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/UtilsHLSL.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/UtilsHLSL.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/ValidateLimitations.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/ValidateOutputs.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/ValidateOutputs.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/ValidateSwitch.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/ValidateSwitch.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/VariableInfo.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/VariableInfo.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/VariablePacker.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/VariablePacker.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/VersionGLSL.cpp
    R Source/ThirdParty/ANGLE/src/compiler/translator/depgraph/DependencyGraph.cpp
    R Source/ThirdParty/ANGLE/src/compiler/translator/depgraph/DependencyGraph.h
    R Source/ThirdParty/ANGLE/src/compiler/translator/depgraph/DependencyGraphBuilder.cpp
    R Source/ThirdParty/ANGLE/src/compiler/translator/depgraph/DependencyGraphBuilder.h
    R Source/ThirdParty/ANGLE/src/compiler/translator/depgraph/DependencyGraphOutput.cpp
    R Source/ThirdParty/ANGLE/src/compiler/translator/depgraph/DependencyGraphOutput.h
    R Source/ThirdParty/ANGLE/src/compiler/translator/depgraph/DependencyGraphTraverse.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/glslang.l
    M Source/ThirdParty/ANGLE/src/compiler/translator/glslang.y
    M Source/ThirdParty/ANGLE/src/compiler/translator/glslang_lex.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/glslang_tab.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/glslang_tab.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/intermOut.cpp
    R Source/ThirdParty/ANGLE/src/compiler/translator/timing/RestrictFragmentShaderTiming.cpp
    R Source/ThirdParty/ANGLE/src/compiler/translator/timing/RestrictFragmentShaderTiming.h
    R Source/ThirdParty/ANGLE/src/compiler/translator/timing/RestrictVertexShaderTiming.cpp
    R Source/ThirdParty/ANGLE/src/compiler/translator/timing/RestrictVertexShaderTiming.h
    M Source/ThirdParty/ANGLE/src/compiler/translator/util.cpp
    M Source/ThirdParty/ANGLE/src/compiler/translator/util.h
    A Source/ThirdParty/ANGLE/src/image_util/copyimage.cpp
    A Source/ThirdParty/ANGLE/src/image_util/copyimage.h
    A Source/ThirdParty/ANGLE/src/image_util/copyimage.inl
    A Source/ThirdParty/ANGLE/src/image_util/generatemip.h
    A Source/ThirdParty/ANGLE/src/image_util/generatemip.inl
    A Source/ThirdParty/ANGLE/src/image_util/imageformats.cpp
    A Source/ThirdParty/ANGLE/src/image_util/imageformats.h
    A Source/ThirdParty/ANGLE/src/image_util/loadimage.cpp
    A Source/ThirdParty/ANGLE/src/image_util/loadimage.h
    A Source/ThirdParty/ANGLE/src/image_util/loadimage.inl
    A Source/ThirdParty/ANGLE/src/image_util/loadimage_etc.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/AttributeMap.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/AttributeMap.h
    M Source/ThirdParty/ANGLE/src/libANGLE/BinaryStream.h
    M Source/ThirdParty/ANGLE/src/libANGLE/Buffer.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/Buffer.h
    M Source/ThirdParty/ANGLE/src/libANGLE/Caps.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/Caps.h
    M Source/ThirdParty/ANGLE/src/libANGLE/Compiler.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/Compiler.h
    M Source/ThirdParty/ANGLE/src/libANGLE/Context.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/Context.h
    A Source/ThirdParty/ANGLE/src/libANGLE/ContextState.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/ContextState.h
    R Source/ThirdParty/ANGLE/src/libANGLE/Data.cpp
    R Source/ThirdParty/ANGLE/src/libANGLE/Data.h
    M Source/ThirdParty/ANGLE/src/libANGLE/Device.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/Display.h
    M Source/ThirdParty/ANGLE/src/libANGLE/Fence.cpp
    R Source/ThirdParty/ANGLE/src/libANGLE/Float16ToFloat32.cpp
    R Source/ThirdParty/ANGLE/src/libANGLE/Float16ToFloat32.py
    M Source/ThirdParty/ANGLE/src/libANGLE/Framebuffer.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/Framebuffer.h
    M Source/ThirdParty/ANGLE/src/libANGLE/FramebufferAttachment.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/FramebufferAttachment.h
    M Source/ThirdParty/ANGLE/src/libANGLE/HandleAllocator.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/HandleAllocator.h
    M Source/ThirdParty/ANGLE/src/libANGLE/HandleAllocator_unittest.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/HandleRangeAllocator.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/HandleRangeAllocator.h
    A Source/ThirdParty/ANGLE/src/libANGLE/HandleRangeAllocator_unittest.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/Image.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/Image.h
    M Source/ThirdParty/ANGLE/src/libANGLE/ImageIndex.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/ImageIndex.h
    M Source/ThirdParty/ANGLE/src/libANGLE/ImageIndexIterator_unittest.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/Image_unittest.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/Path.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/Path.h
    M Source/ThirdParty/ANGLE/src/libANGLE/Program.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/Program.h
    M Source/ThirdParty/ANGLE/src/libANGLE/Program_unittest.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/Renderbuffer.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/Renderbuffer.h
    M Source/ThirdParty/ANGLE/src/libANGLE/ResourceManager.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/ResourceManager.h
    M Source/ThirdParty/ANGLE/src/libANGLE/ResourceManager_unittest.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/Sampler.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/Sampler.h
    M Source/ThirdParty/ANGLE/src/libANGLE/Shader.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/Shader.h
    M Source/ThirdParty/ANGLE/src/libANGLE/State.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/State.h
    M Source/ThirdParty/ANGLE/src/libANGLE/Stream.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/Stream.h
    M Source/ThirdParty/ANGLE/src/libANGLE/Surface.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/Surface.h
    M Source/ThirdParty/ANGLE/src/libANGLE/Surface_unittest.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/Texture.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/Texture.h
    M Source/ThirdParty/ANGLE/src/libANGLE/TransformFeedback.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/TransformFeedback.h
    M Source/ThirdParty/ANGLE/src/libANGLE/TransformFeedback_unittest.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/Uniform.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/Uniform.h
    M Source/ThirdParty/ANGLE/src/libANGLE/Version.h
    M Source/ThirdParty/ANGLE/src/libANGLE/Version.inl
    M Source/ThirdParty/ANGLE/src/libANGLE/VertexArray.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/VertexArray.h
    M Source/ThirdParty/ANGLE/src/libANGLE/VertexAttribute.h
    M Source/ThirdParty/ANGLE/src/libANGLE/VertexAttribute.inl
    A Source/ThirdParty/ANGLE/src/libANGLE/Workarounds.h
    M Source/ThirdParty/ANGLE/src/libANGLE/angletypes.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/angletypes.h
    M Source/ThirdParty/ANGLE/src/libANGLE/angletypes.inl
    A Source/ThirdParty/ANGLE/src/libANGLE/es3_format_type_combinations.json
    A Source/ThirdParty/ANGLE/src/libANGLE/format_map_autogen.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/format_map_data.json
    M Source/ThirdParty/ANGLE/src/libANGLE/formatutils.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/formatutils.h
    A Source/ThirdParty/ANGLE/src/libANGLE/gen_format_map.py
    M Source/ThirdParty/ANGLE/src/libANGLE/queryconversions.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/queryconversions.h
    A Source/ThirdParty/ANGLE/src/libANGLE/queryutils.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/queryutils.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/BufferImpl.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/BufferImpl_mock.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/ContextImpl.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/ContextImpl.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/DisplayImpl.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/EGLImplFactory.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/Format.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/Format.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/Format_ID_autogen.inl
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/Format_autogen.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/FramebufferAttachmentObjectImpl.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/FramebufferImpl.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/FramebufferImpl_mock.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/GLImplFactory.h
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/ImplFactory.h
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/IndexRangeCache.cpp
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/IndexRangeCache.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/PathImpl.h
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/ProgramImpl.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/ProgramImpl.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/ProgramImpl_mock.h
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/RenderbufferImpl.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/RenderbufferImpl.h
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/Renderer.cpp
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/Renderer.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/ShaderImpl.h
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/StreamImpl.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/StreamProducerImpl.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/SurfaceImpl.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/SurfaceImpl.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/TextureImpl.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/TextureImpl.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/TextureImpl_mock.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/TransformFeedbackImpl.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/TransformFeedbackImpl_mock.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/VertexArrayImpl.h
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/Workarounds.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/angle_format.py
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/angle_format_data.json
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/angle_format_map.json
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/BufferD3D.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/DisplayD3D.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/DisplayD3D.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/DynamicHLSL.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/DynamicHLSL.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/FramebufferD3D.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/FramebufferD3D.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/HLSLCompiler.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/ImageD3D.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/NativeWindowD3D.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/NativeWindowD3D.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/ProgramD3D.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/ProgramD3D.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/RenderbufferD3D.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/RendererD3D.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/RendererD3D.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/ShaderD3D.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/ShaderD3D.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/SurfaceD3D.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/SurfaceD3D.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/SwapChainD3D.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/TextureD3D.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/TextureD3D.h
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/TextureStorage.cpp
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/TransformFeedbackD3D.cpp
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/TransformFeedbackD3D.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/VaryingPacking.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/VertexBuffer.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/VertexDataManager.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/WorkaroundsD3D.h
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/copyimage.cpp
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/copyimage.h
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/copyimage.inl
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Blit11.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Blit11.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Buffer11.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Clear11.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Clear11.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Context11.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Context11.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Fence11.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Image11.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Image11.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/InputLayoutCache.cpp
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/NativeWindow.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/NativeWindow11.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/PixelTransfer11.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Query11.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/RenderTarget11.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/RenderTarget11.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Renderer11.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/StateManager11.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/StateManager11.h
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Stream11.cpp
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Stream11.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/StreamProducerNV12.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/StreamProducerNV12.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/TextureStorage11.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/TextureStorage11.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/TransformFeedback11.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/TransformFeedback11.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Trim11.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/VertexArray11.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/VertexArray11.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/VertexBuffer11.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/dxgi_format_data.json
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/dxgi_format_map_autogen.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/dxgi_support_data.json
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/dxgi_support_table.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/formatutils11.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/formatutils11.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/gen_dxgi_format_table.py
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/gen_dxgi_support_tables.py
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/gen_load_functions_table.py
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/gen_texture_format_table.py
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/load_functions_data.json
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/load_functions_table.h
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/load_functions_table_autogen.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/shaders/Passthrough2D11.hlsl
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/shaders/ResolveDepthStencil.hlsl
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgbapremultiply2d11ps.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgbaunmultiply2d11ps.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgbpremultiply2d11ps.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgbunmultiply2d11ps.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/resolvedepth11_ps.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/resolvedepthstencil11_ps.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/resolvedepthstencil11_vs.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/shaders/compiled/resolvestencil11_ps.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/shaders/generate_shaders.bat
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/texture_format_data.json
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/texture_format_map.json
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/texture_format_table.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/texture_format_table.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/texture_format_table_autogen.cpp
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/texture_format_table_autogen.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/texture_format_table_utils.h
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow11Win32.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow11Win32.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/Blit9.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/Buffer9.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/Buffer9.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/Context9.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/Context9.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/Framebuffer9.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/Framebuffer9.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/Image9.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/Image9.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/IndexBuffer9.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/NativeWindow9.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/NativeWindow9.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/Query9.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/RenderTarget9.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/Renderer9.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/StateManager9.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/StateManager9.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/SwapChain9.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/SwapChain9.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/TextureStorage9.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/TextureStorage9.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/VertexArray9.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/formatutils9.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/formatutils9.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/renderer9_utils.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/renderer9_utils.h
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/formatutilsD3D.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/formatutilsD3D.h
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/generatemip.h
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/generatemip.inl
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/imageformats.h
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/loadimage.cpp
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/loadimage.h
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/loadimage.inl
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/loadimageSSE2.cpp
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/loadimage_etc.cpp
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/loadimage_etc.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/gen_angle_format_table.py
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/gen_load_functions_table.py
    R Source/ThirdParty/ANGLE/src/libANGLE/renderer/generate_new_renderer.py
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/BlitGL.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/BlitGL.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/BufferGL.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/BufferGL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ContextGL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ContextGL.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/DisplayGL.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/DisplayGL.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/FramebufferGL.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/FramebufferGL.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/FunctionsGL.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/FunctionsGL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/PathGL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/PathGL.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ProgramGL.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ProgramGL.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/RenderbufferGL.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/RendererGL.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/RendererGL.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ShaderGL.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ShaderGL.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/StateManagerGL.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/StateManagerGL.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/SurfaceGL.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/SurfaceGL.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/TextureGL.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/TextureGL.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/TransformFeedbackGL.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/TransformFeedbackGL.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/VertexArrayGL.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/VertexArrayGL.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/WorkaroundsGL.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/DisplayCGL.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/DisplayCGL.mm
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/PbufferSurfaceCGL.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/PbufferSurfaceCGL.mm
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/DisplayEGL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/DisplayEGL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/FunctionsEGL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/FunctionsEGL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/FunctionsEGLDL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/FunctionsEGLDL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/PbufferSurfaceEGL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/PbufferSurfaceEGL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/SurfaceEGL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/SurfaceEGL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/WindowSurfaceEGL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/WindowSurfaceEGL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/android/DisplayAndroid.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/android/DisplayAndroid.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/functionsegl_typedefs.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/ozone/DisplayOzone.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/ozone/DisplayOzone.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/ozone/SurfaceOzone.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/ozone/SurfaceOzone.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/formatutilsgl.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/formatutilsgl.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/functionsgl_typedefs.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/glx/DisplayGLX.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/glx/DisplayGLX.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/glx/FunctionsGLX.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/glx/FunctionsGLX.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/glx/PbufferSurfaceGLX.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/glx/PbufferSurfaceGLX.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/glx/SurfaceGLX.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/glx/WindowSurfaceGLX.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/glx/WindowSurfaceGLX.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/glx/platform_glx.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/renderergl_utils.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/renderergl_utils.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/wgl/DXGISwapChainWindowSurfaceWGL.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/wgl/DXGISwapChainWindowSurfaceWGL.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/wgl/DisplayWGL.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/wgl/DisplayWGL.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/wgl/PbufferSurfaceWGL.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/wgl/PbufferSurfaceWGL.h
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/wgl/WindowSurfaceWGL.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/wgl/WindowSurfaceWGL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/load_functions_data.json
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/load_functions_table.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/load_functions_table_autogen.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/BufferNULL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/BufferNULL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/CompilerNULL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/CompilerNULL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/ContextNULL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/ContextNULL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/DeviceNULL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/DeviceNULL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/DisplayNULL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/DisplayNULL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/FenceNVNULL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/FenceNVNULL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/FenceSyncNULL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/FenceSyncNULL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/FramebufferNULL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/FramebufferNULL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/ImageNULL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/ImageNULL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/PathNULL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/PathNULL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/ProgramNULL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/ProgramNULL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/QueryNULL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/QueryNULL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/RenderbufferNULL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/RenderbufferNULL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/SamplerNULL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/SamplerNULL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/ShaderNULL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/ShaderNULL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/SurfaceNULL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/SurfaceNULL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/TextureNULL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/TextureNULL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/TransformFeedbackNULL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/TransformFeedbackNULL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/VertexArrayNULL.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/VertexArrayNULL.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/renderer_utils.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/renderer_utils.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/BufferVk.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/BufferVk.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CompilerVk.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CompilerVk.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ContextVk.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ContextVk.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/DeviceVk.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/DeviceVk.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/DisplayVk.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/DisplayVk.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/FenceNVVk.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/FenceNVVk.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/FenceSyncVk.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/FenceSyncVk.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/FramebufferVk.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/FramebufferVk.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ImageVk.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ImageVk.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ProgramVk.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ProgramVk.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/QueryVk.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/QueryVk.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RenderbufferVk.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RenderbufferVk.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RendererVk.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RendererVk.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SamplerVk.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SamplerVk.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ShaderVk.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ShaderVk.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SurfaceVk.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SurfaceVk.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/TextureVk.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/TextureVk.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/TransformFeedbackVk.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/TransformFeedbackVk.h
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/VertexArrayVk.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/VertexArrayVk.h
    A Source/ThirdParty/ANGLE/src/libANGLE/signal_utils.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/signal_utils.h
    A Source/ThirdParty/ANGLE/src/libANGLE/signal_utils_unittest.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/validationEGL.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/validationEGL.h
    M Source/ThirdParty/ANGLE/src/libANGLE/validationES.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/validationES.h
    M Source/ThirdParty/ANGLE/src/libANGLE/validationES2.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/validationES2.h
    M Source/ThirdParty/ANGLE/src/libANGLE/validationES3.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/validationES3.h
    A Source/ThirdParty/ANGLE/src/libANGLE/validationES31.cpp
    A Source/ThirdParty/ANGLE/src/libANGLE/validationES31.h
    M Source/ThirdParty/ANGLE/src/libANGLE/validationES_unittest.cpp
    M Source/ThirdParty/ANGLE/src/libEGL.gypi
    M Source/ThirdParty/ANGLE/src/libEGL/libEGL.cpp
    M Source/ThirdParty/ANGLE/src/libEGL/libEGL.def
    M Source/ThirdParty/ANGLE/src/libGLESv2.gypi
    M Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_egl.cpp
    M Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_egl_ext.cpp
    M Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_egl_ext.h
    M Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_2_0.cpp
    M Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_2_0_ext.cpp
    M Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_2_0_ext.h
    M Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_3_0.cpp
    R Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_3_0_ext.cpp
    R Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_3_0_ext.h
    A Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_3_1.cpp
    A Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_gles_3_1.h
    M Source/ThirdParty/ANGLE/src/libGLESv2/global_state.cpp
    M Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.cpp
    M Source/ThirdParty/ANGLE/src/libGLESv2/libGLESv2.def
    A Source/ThirdParty/ANGLE/src/tests/BUILD.gn
    A Source/ThirdParty/ANGLE/src/tests/WebGL-CTS-known-failures.txt
    A Source/ThirdParty/ANGLE/src/tests/angle_end2end_tests.gypi
    A Source/ThirdParty/ANGLE/src/tests/angle_end2end_tests_main.cpp
    A Source/ThirdParty/ANGLE/src/tests/angle_perftests.gypi
    A Source/ThirdParty/ANGLE/src/tests/angle_perftests_main.cpp
    A Source/ThirdParty/ANGLE/src/tests/angle_unittests.gypi
    A Source/ThirdParty/ANGLE/src/tests/angle_unittests_main.cpp
    A Source/ThirdParty/ANGLE/src/tests/angle_unittests_utils.h
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/API_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/CollectVariables_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/ConstantFolding_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/DebugShaderPrecision_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/EXT_blend_func_extended_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/EmulateGLFragColorBroadcast_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/ExpressionLimit_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/FragDepth_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/GLSLCompatibilityOutput_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/IntermNode_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/MalformedShader_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/NV_draw_buffers_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/Pack_Unpack_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/PruneEmptyDeclarations_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/PruneUnusedFunctions_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/QualificationOrderESSL31_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/QualificationOrder_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/RecordConstantPrecision_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/RemovePow_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/ShCompile_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/ShaderExtension_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/ShaderVariable_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/TypeTracking_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/UnrollFlatten_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/VariablePacker_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/compiler_tests/WorkGroupSize_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/deqp.gypi
    A Source/ThirdParty/ANGLE/src/tests/deqp_support/angle_deqp_gtest.cpp
    A Source/ThirdParty/ANGLE/src/tests/deqp_support/angle_deqp_gtest_main.cpp
    A Source/ThirdParty/ANGLE/src/tests/deqp_support/angle_deqp_libtester.h
    A Source/ThirdParty/ANGLE/src/tests/deqp_support/angle_deqp_libtester_main.cpp
    A Source/ThirdParty/ANGLE/src/tests/deqp_support/angle_deqp_tests_main.cpp
    A Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_egl_test_expectations.txt
    A Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles2_test_expectations.txt
    A Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles31_test_expectations.txt
    A Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles3_test_expectations.txt
    A Source/ThirdParty/ANGLE/src/tests/deqp_support/tcuANGLENativeDisplayFactory.cpp
    A Source/ThirdParty/ANGLE/src/tests/deqp_support/tcuANGLENativeDisplayFactory.h
    A Source/ThirdParty/ANGLE/src/tests/deqp_support/tcuANGLEPlatform.cpp
    A Source/ThirdParty/ANGLE/src/tests/deqp_support/tcuANGLEPlatform.h
    A Source/ThirdParty/ANGLE/src/tests/deqp_support/tcuRandomOrderExecutor.cpp
    A Source/ThirdParty/ANGLE/src/tests/deqp_support/tcuRandomOrderExecutor.h
    A Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLContextCompatibilityTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLContextSharingTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLDeviceTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLPresentPathD3D11Test.cpp
    A Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLQueryContextTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLRobustnessTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLSanityCheckTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLStreamTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLSurfaceTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLSyncControlTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLThreadTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLX11VisualTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/egl_tests/media/yuvtest.inl
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/BindGeneratesResourceTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/BindUniformLocationTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/BlendMinMaxTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/BlitFramebufferANGLETest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/BufferDataTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/BuiltinVariableTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/ClearTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/ColorMaskTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/ComputeShaderTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyCompressedTextureTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyTexImageTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyTextureTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/CubeMapTextureTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/D3D11EmulatedIndexedBufferTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/D3D11FormatTablesTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/D3D11InputLayoutCacheTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/D3DImageFormatConversionTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/DXT1CompressedTextureTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/DebugMarkerTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/DebugTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/DepthStencilFormatsTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/DifferentStencilMasksTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/DiscardFramebufferEXTTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/DrawBuffersTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/DrawElementsTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/ETCTextureTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/FenceSyncTests.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/FramebufferMixedSamplesTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/FramebufferRenderMipmapTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/FramebufferTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/GLSLTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/ImageTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/IncompleteTextureTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/IndexBufferOffsetTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/IndexedPointsTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/InstancingTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/LineLoopTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/MaxTextureSizeTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/MipmapTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/MultisampleCompatibilityTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/ObjectAllocationTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/OcclusionQueriesTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/PBOExtensionTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/PackUnpackTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/PathRenderingTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/PbufferTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/PointSpritesTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/ProgramBinaryTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/ProvokingVertexTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/ReadPixelsTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/RendererTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/RobustClientMemoryTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/SRGBTextureTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/SimpleOperationTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/SixteenBppTextureTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/StateChangeTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/SwizzleTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/SyncQueriesTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/TimerQueriesTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/TransformFeedbackTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/UniformBufferTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/UniformTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/UnpackAlignmentTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/UnpackRowLength.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/VertexAttributeTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/ViewportTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/WebGLCompatibilityTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/gl_tests/media/pixel.inl
    A Source/ThirdParty/ANGLE/src/tests/gles_conformance_tests/generate_gles_conformance_tests.py
    A Source/ThirdParty/ANGLE/src/tests/gles_conformance_tests/gles_conformance_tests.cpp
    A Source/ThirdParty/ANGLE/src/tests/gles_conformance_tests/gles_conformance_tests.h
    A Source/ThirdParty/ANGLE/src/tests/gles_conformance_tests/gles_conformance_tests_main.cpp
    A Source/ThirdParty/ANGLE/src/tests/perf_tests/ANGLEPerfTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/perf_tests/ANGLEPerfTest.h
    A Source/ThirdParty/ANGLE/src/tests/perf_tests/BufferSubData.cpp
    A Source/ThirdParty/ANGLE/src/tests/perf_tests/DrawCallPerf.cpp
    A Source/ThirdParty/ANGLE/src/tests/perf_tests/DynamicPromotionPerfTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/perf_tests/EGLInitializePerf.cpp
    A Source/ThirdParty/ANGLE/src/tests/perf_tests/IndexConversionPerf.cpp
    A Source/ThirdParty/ANGLE/src/tests/perf_tests/IndexDataManagerTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/perf_tests/InstancingPerf.cpp
    A Source/ThirdParty/ANGLE/src/tests/perf_tests/InterleavedAttributeData.cpp
    A Source/ThirdParty/ANGLE/src/tests/perf_tests/PointSprites.cpp
    A Source/ThirdParty/ANGLE/src/tests/perf_tests/TexSubImage.cpp
    A Source/ThirdParty/ANGLE/src/tests/perf_tests/TextureSampling.cpp
    A Source/ThirdParty/ANGLE/src/tests/perf_tests/TexturesPerf.cpp
    A Source/ThirdParty/ANGLE/src/tests/perf_tests/UniformsPerf.cpp
    A Source/ThirdParty/ANGLE/src/tests/perf_tests/third_party/perf/angle-mods.patch
    A Source/ThirdParty/ANGLE/src/tests/perf_tests/third_party/perf/perf_test.cc
    A Source/ThirdParty/ANGLE/src/tests/perf_tests/third_party/perf/perf_test.h
    A Source/ThirdParty/ANGLE/src/tests/preprocessor_tests/MockDiagnostics.h
    A Source/ThirdParty/ANGLE/src/tests/preprocessor_tests/MockDirectiveHandler.h
    A Source/ThirdParty/ANGLE/src/tests/preprocessor_tests/PreprocessorTest.cpp
    A Source/ThirdParty/ANGLE/src/tests/preprocessor_tests/PreprocessorTest.h
    A Source/ThirdParty/ANGLE/src/tests/preprocessor_tests/char_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/preprocessor_tests/comment_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/preprocessor_tests/define_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/preprocessor_tests/error_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/preprocessor_tests/extension_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/preprocessor_tests/identifier_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/preprocessor_tests/if_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/preprocessor_tests/input_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/preprocessor_tests/location_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/preprocessor_tests/number_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/preprocessor_tests/operator_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/preprocessor_tests/pragma_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/preprocessor_tests/space_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/preprocessor_tests/token_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/preprocessor_tests/version_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/test_utils/ANGLETest.cpp
    A Source/ThirdParty/ANGLE/src/tests/test_utils/ANGLETest.h
    A Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_configs.cpp
    A Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_configs.h
    A Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.cpp
    A Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.h
    A Source/ThirdParty/ANGLE/src/tests/test_utils/compiler_test.cpp
    A Source/ThirdParty/ANGLE/src/tests/test_utils/compiler_test.h
    A Source/ThirdParty/ANGLE/src/tests/test_utils/gl_raii.h
    A Source/ThirdParty/ANGLE/src/tests/tests.gyp
    A Source/ThirdParty/ANGLE/src/tests/third_party/gpu_test_expectations/HowToMakeChanges.md
    A Source/ThirdParty/ANGLE/src/tests/third_party/gpu_test_expectations/angle-mods.patch
    A Source/ThirdParty/ANGLE/src/tests/third_party/gpu_test_expectations/angle_config.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/gpu_test_expectations/gpu_info.cc
    A Source/ThirdParty/ANGLE/src/tests/third_party/gpu_test_expectations/gpu_info.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/gpu_test_expectations/gpu_test_config.cc
    A Source/ThirdParty/ANGLE/src/tests/third_party/gpu_test_expectations/gpu_test_config.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/gpu_test_expectations/gpu_test_config_mac.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/gpu_test_expectations/gpu_test_config_mac.mm
    A Source/ThirdParty/ANGLE/src/tests/third_party/gpu_test_expectations/gpu_test_expectations_parser.cc
    A Source/ThirdParty/ANGLE/src/tests/third_party/gpu_test_expectations/gpu_test_expectations_parser.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/LICENSE
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/README.chromium
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/allocators.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/document.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/encodedstream.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/encodings.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/error/en.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/error/error.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/filereadstream.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/filestream.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/filewritestream.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/internal/biginteger.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/internal/diyfp.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/internal/dtoa.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/internal/ieee754.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/internal/itoa.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/internal/meta.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/internal/pow10.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/internal/stack.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/internal/strfunc.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/internal/strtod.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/memorybuffer.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/memorystream.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/msinttypes/inttypes.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/msinttypes/stdint.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/prettywriter.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/rapidjson.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/reader.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/stringbuffer.h
    A Source/ThirdParty/ANGLE/src/tests/third_party/rapidjson/include/rapidjson/writer.h
    A Source/ThirdParty/ANGLE/src/third_party/libXNVCtrl/BUILD.gn
    A Source/ThirdParty/ANGLE/src/third_party/libXNVCtrl/LICENSE
    A Source/ThirdParty/ANGLE/src/third_party/libXNVCtrl/NVCtrl.c
    A Source/ThirdParty/ANGLE/src/third_party/libXNVCtrl/NVCtrl.h
    A Source/ThirdParty/ANGLE/src/third_party/libXNVCtrl/NVCtrlLib.h
    A Source/ThirdParty/ANGLE/src/third_party/libXNVCtrl/README.angle
    A Source/ThirdParty/ANGLE/src/third_party/libXNVCtrl/libXNVCtrl.gyp
    A Source/ThirdParty/ANGLE/src/third_party/libXNVCtrl/nv_control.h
    M Source/ThirdParty/ANGLE/src/third_party/murmurhash/MurmurHash3.cpp
    A Source/ThirdParty/ANGLE/third_party/deqp/README.angle
    M Source/ThirdParty/ANGLE/util/EGLWindow.cpp
    M Source/ThirdParty/ANGLE/util/EGLWindow.h
    M Source/ThirdParty/ANGLE/util/Matrix.h
    M Source/ThirdParty/ANGLE/util/OSPixmap.h
    M Source/ThirdParty/ANGLE/util/OSWindow.h
    M Source/ThirdParty/ANGLE/util/Timer.h
    M Source/ThirdParty/ANGLE/util/Vector.cpp
    M Source/ThirdParty/ANGLE/util/Vector.h
    A Source/ThirdParty/ANGLE/util/android/AndroidPixmap.cpp
    A Source/ThirdParty/ANGLE/util/android/AndroidWindow.cpp
    A Source/ThirdParty/ANGLE/util/android/AndroidWindow.h
    A Source/ThirdParty/ANGLE/util/android/third_party/README.angle
    A Source/ThirdParty/ANGLE/util/android/third_party/android_native_app_glue.c
    A Source/ThirdParty/ANGLE/util/android/third_party/android_native_app_glue.h
    M Source/ThirdParty/ANGLE/util/geometry_utils.h
    A Source/ThirdParty/ANGLE/util/linux/LinuxTimer.cpp
    A Source/ThirdParty/ANGLE/util/linux/LinuxTimer.h
    A Source/ThirdParty/ANGLE/util/linux/Linux_system_utils.cpp
    A Source/ThirdParty/ANGLE/util/osx/OSXPixmap.h
    A Source/ThirdParty/ANGLE/util/osx/OSXPixmap.mm
    A Source/ThirdParty/ANGLE/util/osx/OSXTimer.cpp
    A Source/ThirdParty/ANGLE/util/osx/OSXTimer.h
    A Source/ThirdParty/ANGLE/util/osx/OSXWindow.h
    A Source/ThirdParty/ANGLE/util/osx/OSXWindow.mm
    A Source/ThirdParty/ANGLE/util/osx/OSX_system_utils.cpp
    A Source/ThirdParty/ANGLE/util/ozone/OzonePixmap.cpp
    A Source/ThirdParty/ANGLE/util/ozone/OzoneWindow.cpp
    A Source/ThirdParty/ANGLE/util/ozone/OzoneWindow.h
    R Source/ThirdParty/ANGLE/util/path_utils.h
    A Source/ThirdParty/ANGLE/util/posix/Posix_system_utils.cpp
    M Source/ThirdParty/ANGLE/util/random_utils.h
    M Source/ThirdParty/ANGLE/util/shader_utils.cpp
    M Source/ThirdParty/ANGLE/util/shader_utils.h
    M Source/ThirdParty/ANGLE/util/system_utils.h
    R Source/ThirdParty/ANGLE/util/testfixturetypes.h
    M Source/ThirdParty/ANGLE/util/util.gyp
    R Source/ThirdParty/ANGLE/util/win32/Win32Timer.cpp
    R Source/ThirdParty/ANGLE/util/win32/Win32Timer.h
    R Source/ThirdParty/ANGLE/util/win32/Win32Window.cpp
    R Source/ThirdParty/ANGLE/util/win32/Win32Window.h
    R Source/ThirdParty/ANGLE/util/win32/Win32_path_utils.cpp
    A Source/ThirdParty/ANGLE/util/windows/WindowsTimer.cpp
    A Source/ThirdParty/ANGLE/util/windows/WindowsTimer.h
    A Source/ThirdParty/ANGLE/util/windows/Windows_system_utils.cpp
    A Source/ThirdParty/ANGLE/util/windows/win32/Win32Pixmap.cpp
    A Source/ThirdParty/ANGLE/util/windows/win32/Win32Pixmap.h
    A Source/ThirdParty/ANGLE/util/windows/win32/Win32Window.cpp
    A Source/ThirdParty/ANGLE/util/windows/win32/Win32Window.h
    A Source/ThirdParty/ANGLE/util/windows/win32/Win32_system_utils.cpp
    A Source/ThirdParty/ANGLE/util/windows/winrt/WinRTPixmap.cpp
    A Source/ThirdParty/ANGLE/util/windows/winrt/WinRTWindow.cpp
    A Source/ThirdParty/ANGLE/util/windows/winrt/WinRTWindow.h
    A Source/ThirdParty/ANGLE/util/windows/winrt/WinRT_system_utils.cpp
    A Source/ThirdParty/ANGLE/util/x11/X11Pixmap.cpp
    A Source/ThirdParty/ANGLE/util/x11/X11Pixmap.h
    A Source/ThirdParty/ANGLE/util/x11/X11Window.cpp
    A Source/ThirdParty/ANGLE/util/x11/X11Window.h
    M Source/WebCore/CMakeLists.txt
    M Source/WebCore/ChangeLog
    M Source/WebCore/PlatformMac.cmake
    M Source/WebCore/PlatformWin.cmake
    M Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp
    M Source/WebCore/platform/graphics/ANGLEWebKitBridge.h
    M Source/WebCore/platform/graphics/GraphicsContext3D.h
    M Source/WebCore/platform/graphics/opengl/Extensions3DOpenGLCommon.cpp
    M Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp

  Log Message:
  -----------
  Merge r208036 - Update ANGLE
https://bugs.webkit.org/show_bug.cgi?id=164101

Reviewed by Darin Adler.

Source/ThirdParty/ANGLE:

Updated to f01731530e7f754e5ebaf32d00f3e23b62376424
Differences between upstream ANGLE and WebKit's copy of ANGLE are in changes.diff

Source/WebCore:

ShCheckVariablesWithinPackingLimits has changed signatures from taking a ShVariableInfo* and length
to taking a std::vector<sh::ShaderVariable> which requires more information about the shader variables
than we kept in GraphicsContext3D::SymbolInfo.  I removed the SymbolInfo class because it was redundant
with ANGLE's sh::ShaderVariable and now unused.

Covered by existing WebGL tests.

* CMakeLists.txt:
* PlatformMac.cmake:
* PlatformWin.cmake:
* platform/graphics/ANGLEWebKitBridge.cpp:
(WebCore::appendSymbol):
(WebCore::getStructInfo):
(WebCore::getSymbolInfo):
(WebCore::ANGLEWebKitBridge::compileShaderSource):
* platform/graphics/ANGLEWebKitBridge.h:
(WebCore::ANGLEShaderSymbol::isSampler): Deleted.
* platform/graphics/GraphicsContext3D.h:
(WebCore::GraphicsContext3D::SymbolInfo::SymbolInfo): Deleted.
(WebCore::GraphicsContext3D::SymbolInfo::operator==): Deleted.
* platform/graphics/opengl/Extensions3DOpenGLCommon.cpp:
(WebCore::Extensions3DOpenGLCommon::getTranslatedShaderSourceANGLE):
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
(WebCore::GraphicsContext3D::checkVaryingsPacking):
(WebCore::GraphicsContext3D::precisionsMatch):
(WebCore::GraphicsContext3D::mappedSymbolName):
(WebCore::GraphicsContext3D::originalSymbolName):


  Commit: 95d38965f0e995f0e9d3a977e7f20943ac6530fb
      https://github.com/WebKit/WebKit/commit/95d38965f0e995f0e9d3a977e7f20943ac6530fb
  Author: Alex Christensen <achristensen at apple.com>
  Date:   2016-12-27 (Tue, 27 Dec 2016)

  Changed paths:
    M Source/ThirdParty/ANGLE/CMakeLists.txt
    M Source/ThirdParty/ANGLE/ChangeLog

  Log Message:
  -----------
  Merge r208037 - Fix Windows WebGL build after r208036
https://bugs.webkit.org/show_bug.cgi?id=164101

* CMakeLists.txt:
Add new files, remove deleted files.


  Commit: 938d1bdd32a7893d1f78dadbde125ad60d609e45
      https://github.com/WebKit/WebKit/commit/938d1bdd32a7893d1f78dadbde125ad60d609e45
  Author: Alex Christensen <achristensen at apple.com>
  Date:   2016-12-27 (Tue, 27 Dec 2016)

  Changed paths:
    M Source/ThirdParty/ANGLE/CMakeLists.txt
    M Source/ThirdParty/ANGLE/ChangeLog
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/opengl/Extensions3DOpenGLCommon.h
    M Source/WebCore/platform/graphics/opengl/Extensions3DOpenGLES.cpp
    M Source/WebCore/platform/graphics/opengl/Extensions3DOpenGLES.h
    M Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp

  Log Message:
  -----------
  Merge r208040 - Fix Windows WebGL build after r208036
https://bugs.webkit.org/show_bug.cgi?id=164101

* CMakeLists.txt:

Source/WebCore:
Fix Windows WebGL build after r208022
https://bugs.webkit.org/show_bug.cgi?id=164091

* platform/graphics/opengl/Extensions3DOpenGLCommon.h:
* platform/graphics/opengl/Extensions3DOpenGLES.cpp:
(WebCore::Extensions3DOpenGLES::Extensions3DOpenGLES):
* platform/graphics/opengl/Extensions3DOpenGLES.h:
* platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp:
(WebCore::GraphicsContext3D::getExtensions):


  Commit: 73a248c2399779429c1398e90cb5bb32de14074b
      https://github.com/WebKit/WebKit/commit/73a248c2399779429c1398e90cb5bb32de14074b
  Author: Alex Christensen <achristensen at apple.com>
  Date:   2016-12-27 (Tue, 27 Dec 2016)

  Changed paths:
    M Source/ThirdParty/ANGLE/CMakeLists.txt
    M Source/ThirdParty/ANGLE/ChangeLog

  Log Message:
  -----------
  Merge r208041 - Another build fix.

* CMakeLists.txt:


  Commit: 09f85aa40ba81083bed121f36a686a7c5cd8e592
      https://github.com/WebKit/WebKit/commit/09f85aa40ba81083bed121f36a686a7c5cd8e592
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-12-27 (Tue, 27 Dec 2016)

  Changed paths:
    M Source/ThirdParty/ANGLE/ChangeLog
    M Source/ThirdParty/ANGLE/changes.diff
    M Source/ThirdParty/ANGLE/src/common/angleutils.cpp
    M Source/ThirdParty/ANGLE/src/common/angleutils.h
    M Source/ThirdParty/ANGLE/src/common/debug.cpp
    M Source/ThirdParty/ANGLE/src/common/mathutil.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/Caps.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/Device.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/formatutils.cpp
    M Source/ThirdParty/ANGLE/src/libANGLE/validationES3.cpp

  Log Message:
  -----------
  Merge r208136 - -Wpragmas warning spam from angleutils.h
https://bugs.webkit.org/show_bug.cgi?id=164207

Reviewed by Darin Adler.

Use #pragma clang instead of #pragma GCC since all of the warnings we need to suppress are
Clang-specific warnings. GCC ignores unknown pragmas and does not warn, but it does warn if
any GCC pragma is invalid.

Note that this might still be broken for MSVCC, as MSVCC warns when it sees unknown pragmas.

* changes.diff:
* src/common/angleutils.cpp:
(FormatString):
* src/common/angleutils.h:
(MakeStaticString):
* src/common/debug.cpp:
* src/common/mathutil.cpp:
* src/libANGLE/Caps.cpp:
(gl::TextureCapsMap::get):
(gl::GetExtensionInfoMap):
* src/libANGLE/Device.cpp:
(egl::GetDeviceSet):
* src/libANGLE/Display.cpp:
(egl::Display::getClientExtensionString):
* src/libANGLE/formatutils.cpp:
(gl::GetInternalFormatMap):
(gl::GetAllSizedInternalFormats):
* src/libANGLE/validationES3.cpp:
(gl::IsValidES3CopyTexImageCombination):


  Commit: 9d7ef9a3e8731a665516891d10f6048e0a410bf6
      https://github.com/WebKit/WebKit/commit/9d7ef9a3e8731a665516891d10f6048e0a410bf6
  Author: Miguel Gomez <magomez at igalia.com>
  Date:   2016-12-27 (Tue, 27 Dec 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/GLContext.cpp
    M Source/WebCore/platform/graphics/GLContext.h
    M Source/WebCore/platform/graphics/GraphicsContext3D.h
    M Source/WebCore/platform/graphics/OpenGLShims.cpp
    M Source/WebCore/platform/graphics/OpenGLShims.h
    M Source/WebCore/platform/graphics/cairo/GraphicsContext3DCairo.cpp
    M Source/WebCore/platform/graphics/glx/GLContextGLX.cpp
    M Source/WebCore/platform/graphics/opengl/Extensions3DOpenGLCommon.cpp
    M Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGL.cpp
    M Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp

  Log Message:
  -----------
  Merge r208997 - [GTK] Dramatic increase on memory usage since 2.14.x
https://bugs.webkit.org/show_bug.cgi?id=164049

Reviewed by Žan Doberšek.

Use OpenGL version 3.2 Core for rendering when available.
Update some operations that have changed when using 3.2 Core:
- Use glGetStringi to get the extensions list.
- Do not use GL_POINT_SPRITE.
- Always use a VAO when rendering.
- Use a GLSL 1.50 compatible shader.

No new tests needed.

* platform/graphics/GLContext.cpp:
(WebCore::GLContext::version):
Add a method to get OpenGL version we are using.
* platform/graphics/GLContext.h:
Ditto.
* platform/graphics/GraphicsContext3D.h:
Add an attribute to store the VAO used for rendering.
* platform/graphics/OpenGLShims.cpp:
(WebCore::initializeOpenGLShims):
Add glGetStringi to the list of functions.
* platform/graphics/OpenGLShims.h:
Ditto.
* platform/graphics/cairo/GraphicsContext3DCairo.cpp:
(WebCore::GraphicsContext3D::GraphicsContext3D):
Set appropriate output to the shader compiler and initalize the VAO if needed.
(WebCore::GraphicsContext3D::~GraphicsContext3D):
Delete the VAO if needed.
(WebCore::GraphicsContext3D::getExtensions):
Use glGetExtensionsi for OpenGL versions >= 3.2.
* platform/graphics/glx/GLContextGLX.cpp:
(WebCore::hasGLXARBCreateContextExtension):
Check whether the GLX_ARB_create_context extension is available.
(WebCore::GLContextGLX::createWindowContext):
Use glXCreateContextAttribsARB() if possible to request an OpenGL 3.2 context.
(WebCore::GLContextGLX::createPbufferContext):
Ditto.
* platform/graphics/opengl/Extensions3DOpenGLCommon.cpp:
(WebCore::Extensions3DOpenGLCommon::initializeAvailableExtensions):
Enable glGetStringi for GTK.
* platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:
Do not use default getExtensions() method for GTK.
* platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp:
Ditto.


  Commit: ced825284c2e14e72224575643ced7f53ebdf068
      https://github.com/WebKit/WebKit/commit/ced825284c2e14e72224575643ced7f53ebdf068
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-12-27 (Tue, 27 Dec 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/opengl/Extensions3DOpenGLCommon.cpp

  Log Message:
  -----------
  Merge r210133 - [GTK] GLES build broken since r208997
https://bugs.webkit.org/show_bug.cgi?id=166455

Unreviewed. Fix the preprocessor guards here; this code is incompatible with GLES2.

Looks like it's been broken for a month. Typical!

* platform/graphics/opengl/Extensions3DOpenGLCommon.cpp:
(WebCore::Extensions3DOpenGLCommon::initializeAvailableExtensions):


  Commit: cebe57cbf7dd8c4b70e78f4142d7bb949de84c33
      https://github.com/WebKit/WebKit/commit/cebe57cbf7dd8c4b70e78f4142d7bb949de84c33
  Author: Miguel Gomez <magomez at igalia.com>
  Date:   2016-12-27 (Tue, 27 Dec 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/GLContext.cpp

  Log Message:
  -----------
  Merge r209234 - [GTK] Use an OpenGL < 3.0 compliant way to request the OpenGL version
https://bugs.webkit.org/show_bug.cgi?id=165253

Reviewed by Carlos Garcia Campos.

Use glGetString(GL_VERSION) to get the OpenGL version, as glGetIntegerv with GL_MAJOR_VERSION
and GL_MINOR_VERSION is only supported from 3.0 on.

Covered by existent tests.

* platform/graphics/GLContext.cpp:
(WebCore::GLContext::version):


  Commit: d6dab00e35883f5af86c6c3715dd48ce0d735437
      https://github.com/WebKit/WebKit/commit/d6dab00e35883f5af86c6c3715dd48ce0d735437
  Author: Miguel Gomez <magomez at igalia.com>
  Date:   2016-12-27 (Tue, 27 Dec 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/glx/GLContextGLX.cpp

  Log Message:
  -----------
  Merge r209982 - [GTK] GLXBadFBConfig error when creating an OpenGL context
https://bugs.webkit.org/show_bug.cgi?id=165200

Reviewed by Carlos Garcia Campos.

glXCreateContextAttribsARB causes a GLXBadFBConfig X error when it's not able to provide the
OpenGL version >= 3.2 we are requesting. Due to this, the app crashes instead of falling back to
the legacy path.
The patch modifies GLX context creation using a XErrorTrapper, so the first time a context is created
we don't crash if OpenGL >= 3.2 is not available.
If the gotten context is not valid, we fall back to whatever version glXCreateContextAttribsARB is
able to provide.
The legacy glXCreateContext is only used if the GLX_ARB_create_context extension is not available.

Covered by existent tests.

* platform/graphics/glx/GLContextGLX.cpp:
(WebCore::tryCreateGLXARBContext):
(WebCore::GLContextGLX::createWindowContext):
(WebCore::GLContextGLX::createPbufferContext):


  Commit: e77353db021ee744d54d2a6c63e0fe041afa3070
      https://github.com/WebKit/WebKit/commit/e77353db021ee744d54d2a6c63e0fe041afa3070
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-12-27 (Tue, 27 Dec 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/Shared/WebPreferencesDefinitions.h

  Log Message:
  -----------
  Merge r208495 - Experimental features should not be enabled by default
https://bugs.webkit.org/show_bug.cgi?id=164367

Reviewed by Darin Adler.

We have two classes of experimental features:

(1) Features that are unstable and should be off by default, except for the developers
    currently working on them. This is straightforward to handle; the default value should
    be false.
(2) Features that are still not ready for end users, but are stable enough for testing. We
    want these features to be enabled in testing environments like the bots, MiniBrowser,
    Safari Tech Preview, and so forth, but not in stable release builds.

Implement this. It is better than having all experimental features on unconditionally, and
expecting them to be disabled manually on release branches, which is not something we are
keen to do. An exception is Cocoa ports, which to my knowledge do not currently have any
concept of development builds. These ports seem happy to continue disabling features
manually in release branches, and should continue to do so at least for now.

We also have features that we wish to enumerate at runtime, yet have enabled by default
unconditionally. We do not currently have any infrastructure to support this and should not
abuse the experimental status for this purpose; it requires future work. All settings can
still be toggled at runtime by clients that know about them using the existing runtime
features API.

Lastly, the custom elements feature is ready to be enabled by default, so it's no longer
experimental and can graduate to the list of normal boolean features.

* Shared/WebPreferencesDefinitions.h:


  Commit: 223e1339169113aa0fed4cade19b66dfbb3db901
      https://github.com/WebKit/WebKit/commit/223e1339169113aa0fed4cade19b66dfbb3db901
  Author: Fujii Hironori <Hironori.Fujii at sony.com>
  Date:   2016-12-27 (Tue, 27 Dec 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/text/international/harfbuzz-runs-with-no-glyph-expected.txt
    A LayoutTests/fast/text/international/harfbuzz-runs-with-no-glyph.html
    A LayoutTests/fast/text/international/resources/ignorables.woff
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/harfbuzz/HarfBuzzShaper.cpp
    M Source/WebCore/platform/graphics/harfbuzz/HarfBuzzShaper.h

  Log Message:
  -----------
  Merge r208675 - [HarfBuzz] HarfBuzzShaper should not assume numGlyphs is greater than 0
https://bugs.webkit.org/show_bug.cgi?id=164500

Patch by Fujii Hironori <Hironori.Fujii at sony.com> on 2016-11-13
Reviewed by Myles C. Maxfield.

Source/WebCore:

Test: fast/text/international/harfbuzz-runs-with-no-glyph.html

HarfBuzzShaper assumes numGlyphs of HarfBuzzRun is greater than
zero. But this is not necessarily true. If a font does not have a
glyph of SPACE (U+0020), HarfBuzz removes ignorable glyphs. In
this case, HarfBuzzRun can have no glyphs.

* platform/graphics/harfbuzz/HarfBuzzShaper.cpp:
(WebCore::HarfBuzzShaper::HarfBuzzRun::applyShapeResult): Resize
m_offsets to one if m_numGlyphs is zero.
* platform/graphics/harfbuzz/HarfBuzzShaper.h:
(WebCore::HarfBuzzShaper::HarfBuzzRun::glyphs): Use Vector::data()
instread of operator[0].
(WebCore::HarfBuzzShaper::HarfBuzzRun::advances): Ditto.
(WebCore::HarfBuzzShaper::HarfBuzzRun::offsets): Ditto.
(WebCore::HarfBuzzShaper::HarfBuzzRun::glyphToCharacterIndexes): Ditto.

LayoutTests:

* fast/text/international/harfbuzz-runs-with-no-glyph-expected.txt: Added.
* fast/text/international/harfbuzz-runs-with-no-glyph.html: Added.
* fast/text/international/resources/ignorables.woff: Added.


  Commit: e96e900327a16ea664ae4027f6fd5936122ce1a0
      https://github.com/WebKit/WebKit/commit/e96e900327a16ea664ae4027f6fd5936122ce1a0
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-12-27 (Tue, 27 Dec 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/DatabaseProcess/gtk/DatabaseProcessMainGtk.cpp

  Log Message:
  -----------
  Merge r209122 - [GTK] Database process should not initialize gtk
https://bugs.webkit.org/show_bug.cgi?id=165138

Reviewed by Sergio Villar Senin.

It doesn't use GTK+ at all.

* DatabaseProcess/gtk/DatabaseProcessMainGtk.cpp:
(WebKit::DatabaseProcessMainUnix):
(): Deleted.


  Commit: ad9bc5deb40646581265854cc35ed514773c0b9e
      https://github.com/WebKit/WebKit/commit/ad9bc5deb40646581265854cc35ed514773c0b9e
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-12-27 (Tue, 27 Dec 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/cairo/FontCairo.cpp

  Log Message:
  -----------
  Merge r210056 - [Cairo] Conditional jump or move depends on uninitialised value(s)
https://bugs.webkit.org/show_bug.cgi?id=166058

Patch by Carlos Garcia Campos <cgarcia at igalia.com> on 2016-12-20
Reviewed by Michael Catanzaro.

Initialize x and y members of cairo_glyph_t struct before passing it to cairo_glyph_path.

* platform/graphics/cairo/FontCairo.cpp:
(WebCore::CairoGlyphToPathTranslator::path):


  Commit: 3c047c537857ea966495c3fa9e617235bdf6302a
      https://github.com/WebKit/WebKit/commit/3c047c537857ea966495c3fa9e617235bdf6302a
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-12-27 (Tue, 27 Dec 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreX11.cpp

  Log Message:
  -----------
  Merge r208285 - [GTK] BadDamage X Window System error in WebKit::AcceleratedBackingStoreX11::update when called from WebPageProxy::exitAcceleratedCompositingMode
https://bugs.webkit.org/show_bug.cgi?id=164303

Reviewed by Michael Catanzaro.

This can happen if the web process exits before the UI process has cleaned up the accelerated surface. Trap
BadDrawable and BadDamage X errors and ignore them, while still crashing for any other X error.

* UIProcess/gtk/AcceleratedBackingStoreX11.cpp:
(WebKit::AcceleratedBackingStoreX11::~AcceleratedBackingStoreX11):
(WebKit::AcceleratedBackingStoreX11::update):


  Commit: 4d3fd868fed1fa314d59b53e0c5994ad458daae9
      https://github.com/WebKit/WebKit/commit/4d3fd868fed1fa314d59b53e0c5994ad458daae9
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-12-27 (Tue, 27 Dec 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreX11.cpp

  Log Message:
  -----------
  Merge r209063 - [GTK] BadDamage X Window System error in WebKit::AcceleratedBackingStoreX11::update when called from WebPageProxy::exitAcceleratedCompositingMode
https://bugs.webkit.org/show_bug.cgi?id=164303

Reviewed by Michael Catanzaro.

Trap also BadDrawable and BadDamage X errors when creating the surface and damage.

* UIProcess/gtk/AcceleratedBackingStoreX11.cpp:
(WebKit::AcceleratedBackingStoreX11::update):


  Commit: d50b4ad5b9781103e7eb649e24c8bfadb35b8da8
      https://github.com/WebKit/WebKit/commit/d50b4ad5b9781103e7eb649e24c8bfadb35b8da8
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-12-27 (Tue, 27 Dec 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/gtk/WaylandCompositor.cpp
    M Source/WebKit2/UIProcess/gtk/WaylandCompositor.h

  Log Message:
  -----------
  Merge r209177 - [GTK] UI process crash in WebKit::WaylandCompositor::Surface::prepareTextureForPainting
https://bugs.webkit.org/show_bug.cgi?id=164911

Reviewed by Michael Catanzaro.

The problem is that m_buffer is nullptr in Surface::prepareTextureForPainting() even though we have already an
image. We only use the buffer to get the image size, so we could save the image size when the image is created,
and then we don't need to care about the buffer anymore.

* UIProcess/gtk/WaylandCompositor.cpp:
(WebKit::WaylandCompositor::Surface::prepareTextureForPainting):
(WebKit::WaylandCompositor::Surface::commit):
* UIProcess/gtk/WaylandCompositor.h:


  Commit: 513d46fc5181b2733375fcf3e51a562b6f6ada18
      https://github.com/WebKit/WebKit/commit/513d46fc5181b2733375fcf3e51a562b6f6ada18
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-12-27 (Tue, 27 Dec 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/PlatformDisplay.h
    M Source/WebCore/platform/graphics/glx/GLContextGLX.cpp
    M Source/WebCore/platform/graphics/glx/GLContextGLX.h
    M Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp

  Log Message:
  -----------
  Merge r205852 - [GTK] Crash of WebProcess on the last WebView disconnect (take two)
https://bugs.webkit.org/show_bug.cgi?id=161842

Reviewed by Michael Catanzaro.

The problem is that when PlatformDisplayX11 is destroyed, the sharing GL context is deleted and its destructor
makes a downcast of PlatformDisplay to get the native X11 display. We could simply keep a pointer to the native
X11 display in GLContextGLX, got at construction time from the PlatformDisplay, and ensure the sharing GL
context is deleted before the native X11 display is closed.

* platform/graphics/PlatformDisplay.h: Make m_sharingGLContext protected.
* platform/graphics/glx/GLContextGLX.cpp:
(WebCore::GLContextGLX::GLContextGLX): Initialize m_x11Display.
(WebCore::GLContextGLX::~GLContextGLX): Use m_x11Display and remove confusing comment about possible crash with
nviedia closed drivers.
(WebCore::GLContextGLX::defaultFrameBufferSize): Use m_x11Display.
(WebCore::GLContextGLX::makeContextCurrent): Ditto.
(WebCore::GLContextGLX::swapBuffers): Ditto.
(WebCore::GLContextGLX::swapInterval): Ditto.
(WebCore::GLContextGLX::cairoDevice): Ditto.
* platform/graphics/glx/GLContextGLX.h:
* platform/graphics/x11/PlatformDisplayX11.cpp:
(WebCore::PlatformDisplayX11::~PlatformDisplayX11): Delete the sharing GL context before closing the display.


  Commit: 28abd9b6988b567d30335ea2cfa38f17782f5381
      https://github.com/WebKit/WebKit/commit/28abd9b6988b567d30335ea2cfa38f17782f5381
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2016-12-27 (Tue, 27 Dec 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/PlatformDisplay.cpp
    M Source/WebCore/platform/graphics/PlatformDisplay.h
    M Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp
    M Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.h
    M Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp
    M Source/WebCore/platform/graphics/x11/PlatformDisplayX11.h

  Log Message:
  -----------
  Merge r209064 - [GTK] Crash in WebCore::PlatformDisplayX11::supportsXComposite when running under Wayland
https://bugs.webkit.org/show_bug.cgi?id=164917

Reviewed by Michael Catanzaro.

WebKitGTK+ appplications are expected to call gtk_init(), because WebKitGTK+, like GTK+ itself, requires a
display to work. We currently fallback to create a X11 display when X11 is enabled in cases where GTK+ doesn't
have a default display (gtk_init() wasn't called or failed). That's why we end up creating an X11 display under
Wayland when both Wayland and X11 option are enabled. The code assumes X11 display creation will always work if
X11 is enabled, but that's not true now that we support also Wayland at runtime. So, we should try to get a
native display before creating the PlatformDisplay. Rendering will not work in any case when gtk_init() is not
called, but in most of the cases those applications are not actually going to render anything, so this way at
least we will not crash.

* platform/graphics/PlatformDisplay.cpp:
(WebCore::PlatformDisplay::createPlatformDisplay): Use create() method for X11 and Wayland if we couldn't get a
native display from GTK+. If everything fails create a display with no native.
(WebCore::PlatformDisplay::PlatformDisplay): Add NativeDisplayOwned parameter.
* platform/graphics/PlatformDisplay.h:
* platform/graphics/wayland/PlatformDisplayWayland.cpp:
(WebCore::PlatformDisplayWayland::create): Try to create a native Wayland display or return nullptr.
(WebCore::PlatformDisplayWayland::PlatformDisplayWayland): Initialize NativeDisplayOwned parameter.
(WebCore::PlatformDisplayWayland::~PlatformDisplayWayland): Destroy the display if owned.
(WebCore::PlatformDisplayWayland::initialize): Return early if native display is nullptr.
* platform/graphics/wayland/PlatformDisplayWayland.h:
* platform/graphics/x11/PlatformDisplayX11.cpp:
(WebCore::PlatformDisplayX11::create): Try to create a native X11 display or return nullptr.
(WebCore::PlatformDisplayX11::PlatformDisplayX11): Use NativeDisplayOwned now.
(WebCore::PlatformDisplayX11::~PlatformDisplayX11): Ditto.
* platform/graphics/x11/PlatformDisplayX11.h:


  Commit: af5ffd31873923e2366c5abec5d151fc38e01464
      https://github.com/WebKit/WebKit/commit/af5ffd31873923e2366c5abec5d151fc38e01464
  Author: Tomáš Popela <tpopela at redhat.com>
  Date:   2016-12-27 (Tue, 27 Dec 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/gtk/WebPreferencesGtk.cpp

  Log Message:
  -----------
  Merge r209534 - [GTK] Process accelerated compositing env variables only if they are really enabled
https://bugs.webkit.org/show_bug.cgi?id=165300

Don't process the WEBKIT_FORCE_COMPOSITING_MODE and
WEBKIT_DISABLE_COMPOSITING_MODE env variables if they are disabled
(eg. WEBKIT_DISABLE_COMPOSITING_MODE=0).

Reviewed by Michael Catanzaro.

* UIProcess/gtk/WebPreferencesGtk.cpp:
(WebKit::WebPreferences::platformInitializeStore):


  Commit: fa2bc3ff5044dd9a3a3503611cd924819d698d84
      https://github.com/WebKit/WebKit/commit/fa2bc3ff5044dd9a3a3503611cd924819d698d84
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-12-27 (Tue, 27 Dec 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/gtk/UserAgentGtk.cpp
    M Tools/ChangeLog
    M Tools/TestWebKitAPI/Tests/WebCore/gtk/UserAgentQuirks.cpp

  Log Message:
  -----------
  Merge r210168 - [GTK] Improve user agent construction
https://bugs.webkit.org/show_bug.cgi?id=142074

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Use the macOS rather than the Chrome quirk for Google domains, to avoid problems with
Google Calendar and Google Maps.

* platform/UserAgentQuirks.cpp:
(WebCore::urlRequiresChromeBrowser):
(WebCore::urlRequiresMacintoshPlatform):

Tools:

* TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp:
(TestWebKitAPI::TEST):


  Commit: 4ef1ebd39de0a3fb9e46ead48a02fd6ea612fc52
      https://github.com/WebKit/WebKit/commit/4ef1ebd39de0a3fb9e46ead48a02fd6ea612fc52
  Author: Mark Lam <mark.lam at apple.com>
  Date:   2016-12-28 (Wed, 28 Dec 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/dfg/DFGFixupPhase.cpp

  Log Message:
  -----------
  Merge r205882 - DFG NewArrayBuffer node should watch for "have a bad time" state change.
https://bugs.webkit.org/show_bug.cgi?id=161927
<rdar://problem/27995222>

Reviewed by Geoffrey Garen.

* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):


  Commit: 30934a2dccb0e186478b03ef513fe0b3ffca9c39
      https://github.com/WebKit/WebKit/commit/30934a2dccb0e186478b03ef513fe0b3ffca9c39
  Author: John Wilander <wilander at apple.com>
  Date:   2016-12-28 (Wed, 28 Dec 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    M Source/WebCore/ChangeLog

  Log Message:
  -----------
  Merge r204266 - Popups opened from a sandboxed iframe should themselves be sandboxed
https://bugs.webkit.org/show_bug.cgi?id=134850
<rdar://problem/27375388>

Reviewed by Brent Fulgham.

Source/WebCore:

Test: http/tests/security/window-opened-from-sandboxed-iframe-should-inherit-sandbox.html

* loader/FrameLoader.cpp:
(WebCore::FrameLoader::continueLoadAfterNewWindowPolicy):
    Now copies the opener's frame loader effective sandbox flags to the
    new frame loader.

LayoutTests:

* http/tests/security/resources/anchor-tag-with-blank-target.html: Added.
* http/tests/security/resources/page-executing-javascript.html: Added.
* http/tests/security/window-opened-from-sandboxed-iframe-should-inherit-sandbox-expected.txt: Added.
* http/tests/security/window-opened-from-sandboxed-iframe-should-inherit-sandbox.html: Added.


  Commit: 0fd601c9bff1931d21d20422b73aa1ee13e2e0b0
      https://github.com/WebKit/WebKit/commit/0fd601c9bff1931d21d20422b73aa1ee13e2e0b0
  Author: John Wilander <wilander at apple.com>
  Date:   2016-12-28 (Wed, 28 Dec 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    M Source/WebCore/ChangeLog

  Log Message:
  -----------
  Revert "Merge r204266 - Popups opened from a sandboxed iframe should themselves be sandboxed"

This reverts commit r210183. r204266 is before 2.14 branch point so this
was an empty commit.


  Commit: a605440d4fe12e40717bd8c92b6e7c3340d2a5c3
      https://github.com/WebKit/WebKit/commit/a605440d4fe12e40717bd8c92b6e7c3340d2a5c3
  Author: Youenn Fablet <youenn at apple.com>
  Date:   2016-12-28 (Wed, 28 Dec 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    M LayoutTests/fast/files/apply-blob-url-to-xhr-expected.txt
    M LayoutTests/fast/files/workers/worker-apply-blob-url-to-xhr-expected.txt
    M LayoutTests/imported/w3c/ChangeLog
    M LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-blob-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-blob-worker-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-blob-worker.html
    M LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-blob.html
    M LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-blob.js
    M Source/WebCore/ChangeLog
    M Source/WebCore/fileapi/FileReaderLoader.cpp
    M Source/WebCore/fileapi/FileReaderLoader.h
    M Source/WebCore/platform/network/BlobResourceHandle.cpp
    M Source/WebCore/platform/network/BlobResourceHandle.h

  Log Message:
  -----------
  Merge r205190 - [Fetch API] Blob not found URL should result in a network error
https://bugs.webkit.org/show_bug.cgi?id=161381

Patch by Youenn Fablet <youenn at apple.com> on 2016-08-30
Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

* web-platform-tests/fetch/api/basic/scheme-blob-expected.txt:
* web-platform-tests/fetch/api/basic/scheme-blob-worker-expected.txt:
* web-platform-tests/fetch/api/basic/scheme-blob-worker.html:
* web-platform-tests/fetch/api/basic/scheme-blob.html:
* web-platform-tests/fetch/api/basic/scheme-blob.js:
(invalidRequestMethods.forEach):

Source/WebCore:

Covered by rebased and updated tests.

Raising a network error if no blob can be found from the URL.
It is no longer notified by a 404 response.

Updated FileReaderLoader to generate the correct exception.

Made some clean-up in the code, in particular adding an enum class for BlobResourceHandle errors.

* fileapi/FileReaderLoader.cpp:
(WebCore::FileReaderLoader::didFail):
(WebCore::FileReaderLoader::toErrorCode):
(WebCore::FileReaderLoader::httpStatusCodeToErrorCode):
* fileapi/FileReaderLoader.h:
* platform/network/BlobResourceHandle.cpp:
(WebCore::BlobResourceHandle::loadResourceSynchronously):
(WebCore::BlobResourceHandle::doStart):
(WebCore::BlobResourceHandle::didGetSize):
(WebCore::BlobResourceHandle::readSync):
(WebCore::BlobResourceHandle::readFileSync):
(WebCore::BlobResourceHandle::readAsync):
(WebCore::BlobResourceHandle::didOpen):
(WebCore::BlobResourceHandle::didRead):
(WebCore::BlobResourceHandle::failed):
(WebCore::BlobResourceHandle::notifyResponse):
(WebCore::BlobResourceHandle::notifyResponseOnError):
(WebCore::BlobResourceHandle::notifyFail):
* platform/network/BlobResourceHandle.h:

LayoutTests:

* fast/files/apply-blob-url-to-xhr-expected.txt:
* fast/files/workers/worker-apply-blob-url-to-xhr-expected.txt:


  Commit: 82a23f8090e808e8a1adfd075bbd1544db9241b0
      https://github.com/WebKit/WebKit/commit/82a23f8090e808e8a1adfd075bbd1544db9241b0
  Author: Filip Pizlo <fpizlo at apple.com>
  Date:   2016-12-28 (Wed, 28 Dec 2016)

  Changed paths:
    M JSTests/ChangeLog
    A JSTests/stress/chill-mod-chill-mod.js
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/b3/B3LowerMacros.cpp

  Log Message:
  -----------
  Merge r206472 - B3::lowerMacros forgets to before->updatePredecessorsAfter() when lowering ChillMod on ARM64
https://bugs.webkit.org/show_bug.cgi?id=162644

Reviewed by Keith Miller.

JSTests:

* stress/chill-mod-chill-mod.js: Added.
(foo):

Source/JavaScriptCore:

If you forget to update the predecessors of your successors, then bad things will happen if you
do something that requires accurate predecessors for correctness. lowerMacros() uses
BlockInsertionSet, which relies on accurate predecessors.

* b3/B3LowerMacros.cpp:


  Commit: 7e13718be689e4af1f56365eaa98aa01dfbe3eb0
      https://github.com/WebKit/WebKit/commit/7e13718be689e4af1f56365eaa98aa01dfbe3eb0
  Author: Anders Carlsson <andersca at apple.com>
  Date:   2016-12-28 (Wed, 28 Dec 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/loader/FrameLoader.h
    M Source/WebCore/loader/FrameLoaderStateMachine.h
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp

  Log Message:
  -----------
  Merge r206132 - Suppress JavaScript prompts early on in certain cases
https://bugs.webkit.org/show_bug.cgi?id=162243
rdar://problem/27661602

Reviewed by Geoffrey Garen.

Source/WebCore:

Export symbols needed by WebKit2.

* loader/FrameLoader.h:
* loader/FrameLoaderStateMachine.h:

Source/WebKit2:

* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::shouldSuppressJavaScriptDialogs):
Add helper function.

(WebKit::WebChromeClient::runJavaScriptAlert):
(WebKit::WebChromeClient::runJavaScriptConfirm):
(WebKit::WebChromeClient::runJavaScriptPrompt):
Call helper function and return early if we should supress dialogs.


  Commit: 943c01ac94e7121d9b7acd5003c50ed732f7f880
      https://github.com/WebKit/WebKit/commit/943c01ac94e7121d9b7acd5003c50ed732f7f880
  Author: Daniel Bates <dbates at webkit.org>
  Date:   2016-12-28 (Wed, 28 Dec 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-https-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-https.html
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin.html
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin-https-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin-https.html
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin.html
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/report-uri-effective-directive-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/script-blocked-sends-multiple-reports-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-enforced-policy-and-blocked-by-report-policy-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-enforced-policy-and-blocked-by-report-policy2-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-legacy-enforced-policy-and-blocked-by-report-policy-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-legacy-enforced-policy-and-blocked-by-report-policy2-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-enforced-policy-and-allowed-by-report-policy-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-legacy-enforced-policy-and-allowed-by-report-policy-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy2-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-enforced-policy-and-allowed-by-report-policy-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-legacy-enforced-policy-and-allowed-by-report-policy-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy2-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-and-enforce-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-blocked-data-uri-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-blocked-file-uri-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-blocked-uri-cross-origin-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-blocked-uri-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-when-private-browsing-enabled-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-when-private-browsing-toggled-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-only-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-only-from-header-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-only-upgrade-insecure-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-same-origin-no-cookies-when-private-browsing-toggled-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-same-origin-with-cookies-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-same-origin-with-cookies-when-private-browsing-enabled-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-status-code-zero-when-using-https-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-uri-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-uri-from-child-frame-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-uri-from-inline-javascript-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-uri-from-javascript-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-uri-scheme-relative-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/resources/save-report.php
    M LayoutTests/http/tests/security/xssAuditor/report-script-tag-expected.txt
    M LayoutTests/http/tests/security/xssAuditor/report-script-tag-full-block-expected.txt
    M LayoutTests/http/tests/security/xssAuditor/report-script-tag-replace-state-expected.txt
    M Source/WebCore/ChangeLog
    M Source/WebCore/page/csp/ContentSecurityPolicy.cpp

  Log Message:
  -----------
  Merge r206278 - [CSP] Violation report may be sent to wrong domain on frame-ancestors violation
https://bugs.webkit.org/show_bug.cgi?id=162079
<rdar://problem/28321575>

Reviewed by Andy Estes.

Source/WebCore:

Fixes an issue where a CSP violation report may be sent to the wrong domain when the
frame-ancestors directive is violated. In particular, when the frame-ancestors directive
is violated for a page that specifies a report URI that is a relative URL then the
report URI would be resolved with respect to the parent frame's document URL and hence
be sent to the domain of the parent frame's document.

* page/csp/ContentSecurityPolicy.cpp:
(WebCore::ContentSecurityPolicy::reportViolation): Adjust the report URL with respect
to the blocked URL when we do not have a script execution context.

LayoutTests:

Modified http/tests/security/contentSecurityPolicy/resources/save-report.php to print the HTTP Host header as a means
to validate that the CSP violation report was sent to the appropriate host. Update test expectations.

Note that the presence of "localhost" in the HTTP Host header in the test results for tests
security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin.html and
security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-https.html
verify that we resolve a relative URL CSP report URI with respect to the blocked URL.

* http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-https-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-https.html:
* http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin.html:
* http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin-https-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin-https.html:
* http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin.html:
* http/tests/security/contentSecurityPolicy/1.1/report-uri-effective-directive-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/script-blocked-sends-multiple-reports-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-enforced-policy-and-blocked-by-report-policy-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-enforced-policy-and-blocked-by-report-policy2-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-legacy-enforced-policy-and-blocked-by-report-policy-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-legacy-enforced-policy-and-blocked-by-report-policy2-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-enforced-policy-and-allowed-by-report-policy-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-legacy-enforced-policy-and-allowed-by-report-policy-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy2-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-enforced-policy-and-allowed-by-report-policy-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-legacy-enforced-policy-and-allowed-by-report-policy-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy2-expected.txt:
* http/tests/security/contentSecurityPolicy/report-and-enforce-expected.txt:
* http/tests/security/contentSecurityPolicy/report-blocked-data-uri-expected.txt:
* http/tests/security/contentSecurityPolicy/report-blocked-file-uri-expected.txt:
* http/tests/security/contentSecurityPolicy/report-blocked-uri-cross-origin-expected.txt:
* http/tests/security/contentSecurityPolicy/report-blocked-uri-expected.txt:
* http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-expected.txt:
* http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-when-private-browsing-enabled-expected.txt:
* http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-when-private-browsing-toggled-expected.txt:
* http/tests/security/contentSecurityPolicy/report-only-expected.txt:
* http/tests/security/contentSecurityPolicy/report-only-from-header-expected.txt:
* http/tests/security/contentSecurityPolicy/report-only-upgrade-insecure-expected.txt:
* http/tests/security/contentSecurityPolicy/report-same-origin-no-cookies-when-private-browsing-toggled-expected.txt:
* http/tests/security/contentSecurityPolicy/report-same-origin-with-cookies-expected.txt:
* http/tests/security/contentSecurityPolicy/report-same-origin-with-cookies-when-private-browsing-enabled-expected.txt:
* http/tests/security/contentSecurityPolicy/report-status-code-zero-when-using-https-expected.txt:
* http/tests/security/contentSecurityPolicy/report-uri-expected.txt:
* http/tests/security/contentSecurityPolicy/report-uri-from-child-frame-expected.txt:
* http/tests/security/contentSecurityPolicy/report-uri-from-inline-javascript-expected.txt:
* http/tests/security/contentSecurityPolicy/report-uri-from-javascript-expected.txt:
* http/tests/security/contentSecurityPolicy/report-uri-scheme-relative-expected.txt:
* http/tests/security/contentSecurityPolicy/resources/save-report.php:
* http/tests/security/xssAuditor/report-script-tag-expected.txt:
* http/tests/security/xssAuditor/report-script-tag-full-block-expected.txt:
* http/tests/security/xssAuditor/report-script-tag-replace-state-expected.txt:


  Commit: 89f7f8413246bc29d8219a9c9717975e05abd570
      https://github.com/WebKit/WebKit/commit/89f7f8413246bc29d8219a9c9717975e05abd570
  Author: Daniel Bates <dbates at webkit.org>
  Date:   2016-12-28 (Wed, 28 Dec 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-https-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin-https-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/report-uri-effective-directive-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/script-blocked-sends-multiple-reports-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-enforced-policy-and-blocked-by-report-policy-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-enforced-policy-and-blocked-by-report-policy2-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-legacy-enforced-policy-and-blocked-by-report-policy-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-legacy-enforced-policy-and-blocked-by-report-policy2-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-enforced-policy-and-allowed-by-report-policy-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-legacy-enforced-policy-and-allowed-by-report-policy-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy2-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-enforced-policy-and-allowed-by-report-policy-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-legacy-enforced-policy-and-allowed-by-report-policy-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy2-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-and-enforce-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-blocked-data-uri-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-blocked-file-uri-expected.txt
    A LayoutTests/http/tests/security/contentSecurityPolicy/report-blocked-uri-and-do-not-follow-redirect-when-sending-report-expected.txt
    A LayoutTests/http/tests/security/contentSecurityPolicy/report-blocked-uri-and-do-not-follow-redirect-when-sending-report.php
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-blocked-uri-cross-origin-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-blocked-uri-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-when-private-browsing-enabled-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-when-private-browsing-toggled-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-only-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-only-from-header-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-only-upgrade-insecure-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-same-origin-no-cookies-when-private-browsing-toggled-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-same-origin-with-cookies-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-same-origin-with-cookies-when-private-browsing-enabled-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-status-code-zero-when-using-https-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-uri-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-uri-from-child-frame-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-uri-from-inline-javascript-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-uri-from-javascript-expected.txt
    M LayoutTests/http/tests/security/contentSecurityPolicy/report-uri-scheme-relative-expected.txt
    A LayoutTests/http/tests/security/contentSecurityPolicy/resources/save-report-and-redirect-to-save-report.php
    M LayoutTests/http/tests/security/contentSecurityPolicy/resources/save-report.php
    A LayoutTests/http/tests/security/xssAuditor/report-script-tag-and-do-not-follow-redirect-when-sending-report-expected.txt
    A LayoutTests/http/tests/security/xssAuditor/report-script-tag-and-do-not-follow-redirect-when-sending-report.html
    M LayoutTests/http/tests/security/xssAuditor/report-script-tag-expected.txt
    A LayoutTests/http/tests/security/xssAuditor/report-script-tag-full-block-and-do-not-follow-redirect-when-sending-report-expected.txt
    A LayoutTests/http/tests/security/xssAuditor/report-script-tag-full-block-and-do-not-follow-redirect-when-sending-report.html
    M LayoutTests/http/tests/security/xssAuditor/report-script-tag-full-block-expected.txt
    M LayoutTests/http/tests/security/xssAuditor/report-script-tag-replace-state-expected.txt
    M LayoutTests/http/tests/security/xssAuditor/resources/echo-intertag.pl
    M Source/WebCore/ChangeLog
    M Source/WebCore/loader/LoaderStrategy.h
    M Source/WebCore/loader/PingLoader.cpp
    M Source/WebCore/loader/PingLoader.h
    M Source/WebCore/platform/network/PingHandle.h
    M Source/WebKit/ChangeLog
    M Source/WebKit/WebCoreSupport/WebResourceLoadScheduler.cpp
    M Source/WebKit/WebCoreSupport/WebResourceLoadScheduler.h
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp
    M Source/WebKit2/NetworkProcess/NetworkLoadParameters.h
    M Source/WebKit2/NetworkProcess/NetworkResourceLoadParameters.cpp
    M Source/WebKit2/NetworkProcess/PingLoad.h
    M Source/WebKit2/WebProcess/Network/WebLoaderStrategy.cpp
    M Source/WebKit2/WebProcess/Network/WebLoaderStrategy.h

  Log Message:
  -----------
  Merge r206809 - Do not follow redirects when sending violation report
https://bugs.webkit.org/show_bug.cgi?id=162520
<rdar://problem/27957639>

Reviewed by Alex Christensen.

Source/WebCore:

Do not follow redirects when sending a Content Security Policy or XSS Auditor violation report
as redirects can be used to forward report details to a third-party.

This changes makes WebKit more closely conform to the reporting requirements in section Reporting
of the Content Security Level 2 standard: <https://w3c.github.io/webappsec-csp/2/#violation-reports>
(Editor's Draft, 25 April 2016).

Tests: http/tests/security/contentSecurityPolicy/report-blocked-uri-and-do-not-follow-redirect-when-sending-report.php
       http/tests/security/xssAuditor/report-script-tag-and-do-not-follow-redirect-when-sending-report.html
       http/tests/security/xssAuditor/report-script-tag-full-block-and-do-not-follow-redirect-when-sending-report.html

* loader/LoaderStrategy.h: Modified createPingHandle() to take a boolean, shouldFollowRedirects,
whether to follow redirect responses for a ping request.
* loader/PingLoader.cpp:
(WebCore::PingLoader::loadImage): Pass ShouldFollowRedirects::Yes to PingLoader::startPingLoad to
keep our current behavior.
(WebCore::PingLoader::sendPing): Ditto. Note our current behavior of following redirects matches
the behavior described in the section "Hyperlink auditing" of the HTML standard:
<https://html.spec.whatwg.org/multipage/semantics.html#hyperlink-auditing> (23 September 2016).
(WebCore::PingLoader::sendViolationReport): Pass ShouldFollowRedirects::No to PingLoader::startPingLoad
so that we do not follow redirects when sending a violation report.
(WebCore::PingLoader::startPingLoad): Modified to take argument shouldFollowRedirects whether to
follow redirect responses for a ping request.
* loader/PingLoader.h:
* platform/network/PingHandle.h: Add boolean m_shouldFollowRedirects. I grouped this boolean with
the existing boolean, m_shouldUseCredentialStorage, as opposed to appending to the end of the class
definition to avoid increasing object size as clang will coalesces the two bools into a single
machine word. Override ResourceHandleClient::willSendRequest() and ResourceHandleClient::willSendRequestAsync()
to follow a redirect, if applicable.

Source/WebKit:

Update implementation of legacy WebKit loader strategy to pass through a boolean,
shouldFollowRedirects, to PingHandle as to whether to follow redirect responses
for a ping request.

* WebCoreSupport/WebResourceLoadScheduler.cpp:
(WebResourceLoadScheduler::createPingHandle):
* WebCoreSupport/WebResourceLoadScheduler.h:

Source/WebKit2:

Update the non-Network Session WebKit2 implementation to follow redirect responses for a ping
request, if applicable. I did not update the Network Session implementation at this time. I
will fix it in <https://bugs.webkit.org/show_bug.cgi?id=162580>.

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::loadPing): Tell PingHandle whether to follow redirects.
* NetworkProcess/NetworkLoadParameters.h:
* NetworkProcess/NetworkResourceLoadParameters.cpp:
(WebKit::NetworkResourceLoadParameters::encode): Encode NetworkResourceLoadParameters::shouldFollowRedirects.
(WebKit::NetworkResourceLoadParameters::decode): Decode NetworkResourceLoadParameters::shouldFollowRedirects.
* NetworkProcess/PingLoad.h: Added FIXME comment to implement support for following redirects,
if applicable (for hyperlink auditing). See <https://bugs.webkit.org/show_bug.cgi?id=162580>
for more details.
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::createPingHandle): Modified to take a boolean whether to follow
redirects responses and set NetworkResourceLoadParameters::shouldFollowRedirects as appropriate.
* WebProcess/Network/WebLoaderStrategy.h:

LayoutTests:

Add tests for Content Security Policy and XSS Auditor to ensure that we do not follow redirects
when sending a violation report. Modified http/tests/security/contentSecurityPolicy/resources/save-report.php
to save the URL of the original ping request and conditionally clear cookies. Modified
http/tests/security/xssAuditor/resources/echo-intertag.pl to support testing for the XSS Auditor.
These changes together with the existing HTTP Host information that is saved with the report we can detect
if a redirect occurred when saving a report.

Updated expected results of existing tests now that we emit the URL of the ping request in the saved report.

* http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-https-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin-https-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/report-uri-effective-directive-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/script-blocked-sends-multiple-reports-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-enforced-policy-and-blocked-by-report-policy-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-enforced-policy-and-blocked-by-report-policy2-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-legacy-enforced-policy-and-blocked-by-report-policy-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-legacy-enforced-policy-and-blocked-by-report-policy2-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-enforced-policy-and-allowed-by-report-policy-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-legacy-enforced-policy-and-allowed-by-report-policy-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy2-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-enforced-policy-and-allowed-by-report-policy-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-legacy-enforced-policy-and-allowed-by-report-policy-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy-expected.txt:
* http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy2-expected.txt:
* http/tests/security/contentSecurityPolicy/report-and-enforce-expected.txt:
* http/tests/security/contentSecurityPolicy/report-blocked-data-uri-expected.txt:
* http/tests/security/contentSecurityPolicy/report-blocked-file-uri-expected.txt:
* http/tests/security/contentSecurityPolicy/report-blocked-uri-and-do-not-follow-redirect-when-sending-report-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/report-blocked-uri-and-do-not-follow-redirect-when-sending-report.php: Added.
* http/tests/security/contentSecurityPolicy/report-blocked-uri-cross-origin-expected.txt:
* http/tests/security/contentSecurityPolicy/report-blocked-uri-expected.txt:
* http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-expected.txt:
* http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-when-private-browsing-enabled-expected.txt:
* http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-when-private-browsing-toggled-expected.txt:
* http/tests/security/contentSecurityPolicy/report-only-expected.txt:
* http/tests/security/contentSecurityPolicy/report-only-from-header-expected.txt:
* http/tests/security/contentSecurityPolicy/report-only-upgrade-insecure-expected.txt:
* http/tests/security/contentSecurityPolicy/report-same-origin-no-cookies-when-private-browsing-toggled-expected.txt:
* http/tests/security/contentSecurityPolicy/report-same-origin-with-cookies-expected.txt:
* http/tests/security/contentSecurityPolicy/report-same-origin-with-cookies-when-private-browsing-enabled-expected.txt:
* http/tests/security/contentSecurityPolicy/report-status-code-zero-when-using-https-expected.txt:
* http/tests/security/contentSecurityPolicy/report-uri-expected.txt:
* http/tests/security/contentSecurityPolicy/report-uri-from-child-frame-expected.txt:
* http/tests/security/contentSecurityPolicy/report-uri-from-inline-javascript-expected.txt:
* http/tests/security/contentSecurityPolicy/report-uri-from-javascript-expected.txt:
* http/tests/security/contentSecurityPolicy/report-uri-scheme-relative-expected.txt:
* http/tests/security/contentSecurityPolicy/resources/save-report-and-redirect-to-save-report.php: Added.
* http/tests/security/contentSecurityPolicy/resources/save-report.php:
* http/tests/security/xssAuditor/report-script-tag-and-do-not-follow-redirect-when-sending-report-expected.txt: Added.
* http/tests/security/xssAuditor/report-script-tag-and-do-not-follow-redirect-when-sending-report.html: Added.
* http/tests/security/xssAuditor/report-script-tag-expected.txt:
* http/tests/security/xssAuditor/report-script-tag-full-block-and-do-not-follow-redirect-when-sending-report-expected.txt: Added.
* http/tests/security/xssAuditor/report-script-tag-full-block-and-do-not-follow-redirect-when-sending-report.html: Added.
* http/tests/security/xssAuditor/report-script-tag-full-block-expected.txt:
* http/tests/security/xssAuditor/report-script-tag-replace-state-expected.txt:
* http/tests/security/xssAuditor/resources/echo-intertag.pl:


  Commit: 718b4d4e93cea893e3c799ad18172d7b50a28b8d
      https://github.com/WebKit/WebKit/commit/718b4d4e93cea893e3c799ad18172d7b50a28b8d
  Author: Joseph Pecoraro <joepeck at webkit.org>
  Date:   2016-12-28 (Wed, 28 Dec 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/inspector/console/console-log-proxy-expected.txt
    A LayoutTests/inspector/console/console-log-proxy.html
    M LayoutTests/inspector/model/remote-object-expected.txt
    M LayoutTests/inspector/model/remote-object.html
    M LayoutTests/platform/mac/inspector/model/remote-object-expected.txt
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/bindings/ScriptValue.cpp
    M Source/JavaScriptCore/inspector/InjectedScriptSource.js
    M Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp
    M Source/JavaScriptCore/inspector/JSInjectedScriptHost.h
    M Source/JavaScriptCore/inspector/JSInjectedScriptHostPrototype.cpp
    M Source/JavaScriptCore/inspector/ScriptArguments.cpp
    M Source/JavaScriptCore/inspector/protocol/Runtime.json
    M Source/WebInspectorUI/ChangeLog
    M Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js

  Log Message:
  -----------
  Merge r207229 - Web Inspector: Improve support for logging Proxy objects in console
https://bugs.webkit.org/show_bug.cgi?id=163323
<rdar://problem/28432553>

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

This is based off of similiar patches in Blink for Proxy handling.

* bindings/ScriptValue.cpp:
(Deprecated::ScriptValue::isEqual):
Use strict equality. This is the intent, and it prevents the possibility of triggering
primitive conversion on objects in previous ConsoleMessage argument lists.

* inspector/InjectedScriptSource.js:
(InjectedScript.prototype._propertyDescriptors):
Bail if the object is a Proxy.

(InjectedScript.prototype._describe):
Provide a friendlier name, "Proxy" instead of "ProxyObject".

(InjectedScript.RemoteObject):
When generating a preview for a Proxy object, generate it from the final target
and mark it as lossy so that the object can always be expanded to get the internal
target/handler properties.

* inspector/JSInjectedScriptHost.h:
* inspector/JSInjectedScriptHost.cpp:
(Inspector::JSInjectedScriptHost::subtype):
New subtype for Proxy objects.

(Inspector::JSInjectedScriptHost::proxyTargetValue):
Resolve the final target value for a Proxy.

* inspector/JSInjectedScriptHostPrototype.cpp:
(Inspector::JSInjectedScriptHostPrototype::finishCreation):
(Inspector::jsInjectedScriptHostPrototypeFunctionProxyTargetValue):
Add the new method.

* inspector/ScriptArguments.cpp:
(Inspector::ScriptArguments::getFirstArgumentAsString):
Avoid triggering Proxy traps on a Proxy object when getting a quick
string description for ConsoleMessages.

* inspector/protocol/Runtime.json:
Add new "proxy" subtype.

Source/WebInspectorUI:

* UserInterface/Views/ConsoleMessageView.js:
(WebInspector.ConsoleMessageView.prototype._formatParameter):
Treat a Proxy like any other object.

LayoutTests:

* inspector/console/console-log-proxy-expected.txt: Added.
* inspector/console/console-log-proxy.html: Added.
Add a test specific to console logs of Proxy objects to ensure the get
trap is not used in different cases.

* inspector/model/remote-object-expected.txt:
* inspector/model/remote-object.html:
* platform/mac/inspector/model/remote-object-expected.txt:
Update results for Proxy objects and include a test for a multi-level
Proxy object, which should preview the target.


  Commit: d0abb95b77702083d733f022271eb7f7f7238332
      https://github.com/WebKit/WebKit/commit/d0abb95b77702083d733f022271eb7f7f7238332
  Author: Dean Jackson <dino at apple.com>
  Date:   2016-12-28 (Wed, 28 Dec 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/svg/masking/mask-should-not-paint-selection-expected.html
    A LayoutTests/svg/masking/mask-should-not-paint-selection.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/PaintPhase.h
    M Source/WebCore/rendering/svg/SVGInlineTextBox.cpp
    M Source/WebCore/rendering/svg/SVGRenderingContext.cpp
    M Source/WebCore/rendering/svg/SVGRootInlineBox.cpp

  Log Message:
  -----------
  Merge r207692 - SVG should not paint selection within a mask
https://bugs.webkit.org/show_bug.cgi?id=163772
<rdar://problem/28705129>

Reviewed by Simon Fraser.

Source/WebCore:

When masking content, we shouldn't paint the text
selection as we are rendering into the masking
offscreen buffer.

Test: svg/masking/mask-should-not-paint-selection.html

* rendering/PaintPhase.h: Add a new behavior - PaintBehaviorSkipSelectionHighlight.
* rendering/svg/SVGInlineTextBox.cpp:
(WebCore::SVGInlineTextBox::paint): Don't update the selectionStyle if
PaintBehaviorSkipSelectionHighlight is true.
* rendering/svg/SVGRenderingContext.cpp:
(WebCore::SVGRenderingContext::renderSubtreeToImageBuffer): Add PaintBehaviorSkipSelectionHighlight
to the PaintInfo.

LayoutTests:

* svg/masking/mask-should-not-paint-selection-expected.html: Added.
* svg/masking/mask-should-not-paint-selection.html: Added.


  Commit: 8727ac3ab43ee137f9d381b6bc4294c3b3fb14b7
      https://github.com/WebKit/WebKit/commit/8727ac3ab43ee137f9d381b6bc4294c3b3fb14b7
  Author: David Kilzer <ddkilzer at webkit.org>
  Date:   2016-12-28 (Wed, 28 Dec 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/html/HTMLPlugInImageElement.cpp
    M Source/WebCore/html/ImageData.cpp
    M Source/WebCore/platform/graphics/BitmapImage.cpp
    M Source/WebCore/platform/graphics/ImageSource.cpp
    M Source/WebCore/platform/graphics/IntRect.h
    M Source/WebCore/platform/graphics/IntSize.h
    M Source/WebCore/platform/graphics/ca/LayerPool.cpp
    M Source/WebCore/platform/graphics/cg/ImageDecoderCG.cpp
    M Source/WebCore/platform/graphics/filters/FEGaussianBlur.cpp
    M Source/WebCore/platform/graphics/filters/FilterEffect.cpp
    M Source/WebCore/platform/image-decoders/ImageDecoder.cpp
    M Source/WebCore/platform/ios/LegacyTileLayerPool.mm
    M Source/WebCore/rendering/RenderLayerCompositor.cpp
    M Source/WebCore/rendering/shapes/Shape.cpp
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/Shared/ShareableBitmap.cpp
    M Source/WebKit2/Shared/ShareableBitmap.h
    M Source/WebKit2/Shared/cairo/ShareableBitmapCairo.cpp
    M Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm

  Log Message:
  -----------
  Merge r207708 - Bug 163762: IntSize::area() should used checked arithmetic
<https://webkit.org/b/163762>

Reviewed by Darin Adler.

Source/WebCore:

No new tests since no change in nominal behavior.

* platform/graphics/IntSize.h:
(WebCore::IntSize::area): Change to return a
Checked<unsigned, T> value. Use WTF:: namespace to avoid
including another header.

* platform/graphics/IntRect.h:
(WebCore::IntRect::area): Ditto.

The remaining changes are to use the Checked<unsigned> return
value of IntSize::area() and IntRect::area() correctly in
context, in addition to items noted below.

* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::isTopLevelFullPagePlugin):
Declare contentWidth and contentHeight as float values to
prevent overflow when computing the area, and to make the
inequality comparison in the return statement uses the same type
for both sides.
* html/ImageData.cpp:
(WebCore::ImageData::ImageData):
* html/MediaElementSession.cpp:
(WebCore::isElementRectMostlyInMainFrame):
* platform/graphics/ImageBackingStore.h:
(WebCore::ImageBackingStore::setSize): Restructure logic to
compute area only once.
(WebCore::ImageBackingStore::clear):
* platform/graphics/ImageFrame.h:
(WebCore::ImageFrame::frameBytes):
* platform/graphics/ImageSource.cpp:
(WebCore::ImageSource::maximumSubsamplingLevel):
* platform/graphics/ca/LayerPool.cpp:
(WebCore::LayerPool::backingStoreBytesForSize):
* platform/graphics/cg/ImageDecoderCG.cpp:
(WebCore::ImageDecoder::frameBytesAtIndex):
* platform/graphics/filters/FEGaussianBlur.cpp:
(WebCore::FEGaussianBlur::platformApplySoftware):
* platform/graphics/filters/FilterEffect.cpp:
(WebCore::FilterEffect::asUnmultipliedImage):
(WebCore::FilterEffect::asPremultipliedImage):
(WebCore::FilterEffect::copyUnmultipliedImage):
(WebCore::FilterEffect::copyPremultipliedImage):
(WebCore::FilterEffect::createUnmultipliedImageResult):
(WebCore::FilterEffect::createPremultipliedImageResult):
* platform/graphics/win/ImageBufferDataDirect2D.cpp:
(WebCore::ImageBufferData::getData): Update overflow check,
rename local variable to numBytes, and compute numBytes once.
* platform/graphics/win/ImageDecoderDirect2D.cpp:
(WebCore::ImageDecoder::frameBytesAtIndex):
* platform/image-decoders/ImageDecoder.cpp:
(WebCore::ImageDecoder::frameBytesAtIndex):
* platform/ios/LegacyTileLayerPool.mm:
(WebCore::LegacyTileLayerPool::bytesBackingLayerWithPixelSize):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::requiresCompositingForCanvas):
* rendering/shapes/Shape.cpp:
(WebCore::Shape::createRasterShape):

Source/WebKit2:

* Shared/ShareableBitmap.cpp:
(WebKit::ShareableBitmap::create): Add overflow check and return
nullptr on overflow.
(WebKit::ShareableBitmap::createShareable): Ditto.
(WebKit::ShareableBitmap::create): Change debug assert for
adequate buffer size check into release check.
* Shared/ShareableBitmap.h:
(WebKit::ShareableBitmap::numBytesForSize): Change to return a
Checked<unsigned, RecordOverflow> value.
(WebKit::ShareableBitmap::sizeInBytes):
* Shared/cairo/ShareableBitmapCairo.cpp:
(WebKit::ShareableBitmap::numBytesForSize): Ditto.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _takeViewSnapshot]): Call unsafeGet().

Tools:

* TestWebKitAPI/Tests/WebCore/IntRect.cpp:
(TestWebKitAPI::TEST): Call unsafeGet().
* TestWebKitAPI/Tests/WebCore/IntSize.cpp:
(TestWebKitAPI::TEST): Ditto.


  Commit: b25a6d4cd45c032bf4edbe362267efbb701e2367
      https://github.com/WebKit/WebKit/commit/b25a6d4cd45c032bf4edbe362267efbb701e2367
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2016-12-28 (Wed, 28 Dec 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/multicol/crash-when-spanner-candidate-is-out-of-flow-expected.txt
    A LayoutTests/fast/multicol/crash-when-spanner-candidate-is-out-of-flow.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/RenderMultiColumnFlowThread.cpp

  Log Message:
  -----------
  Merge r207930 - Ignore out-of-flow siblings when searching for a spanner candidate.
https://bugs.webkit.org/show_bug.cgi?id=164042.
<rdar://problem/28758456>

Reviewed by Simon Fraser.

Source/WebCore:

While searching for the spanner candidates in a flow thread, we have to take into account
whether renderers are in- or out-of-flow.
What it means is that while traversing the renderer tree to find the the candidate
renderer (next sibling/ancestor's next child in pre-order traversal), we have to check if the candidate
is in the same layout context too.

Test: fast/multicol/crash-when-spanner-candidate-is-out-of-flow.html

* rendering/RenderMultiColumnFlowThread.cpp:
(WebCore::spannerPlacehoderCandidate):
(WebCore::RenderMultiColumnFlowThread::processPossibleSpannerDescendant):

LayoutTests:

* fast/multicol/crash-when-spanner-candidate-is-out-of-flow-expected.txt: Added.
* fast/multicol/crash-when-spanner-candidate-is-out-of-flow.html: Added.


  Commit: 63917007ba1e9c1d33ef1cc4a118745e5788c48f
      https://github.com/WebKit/WebKit/commit/63917007ba1e9c1d33ef1cc4a118745e5788c48f
  Author: Brent Fulgham <bfulgham at webkit.org>
  Date:   2016-12-28 (Wed, 28 Dec 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/layers/prevent-hit-test-during-layout-expected.txt
    A LayoutTests/fast/layers/prevent-hit-test-during-layout.html
    M LayoutTests/platform/efl/TestExpectations
    M LayoutTests/platform/gtk/TestExpectations
    M Source/WebCore/ChangeLog
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/page/EventHandler.cpp
    M Source/WebCore/page/FrameView.cpp
    M Source/WebCore/rendering/RenderView.cpp
    M Source/WebCore/rendering/RenderView.h

  Log Message:
  -----------
  Merge r208003 - Prevent hit tests from being performed on an invalid render tree
https://bugs.webkit.org/show_bug.cgi?id=163877
<rdar://problem/28675761>

Reviewed by Simon Fraser.

Source/WebCore:

Changeset r200971 added code to ensure that layout is up-to-date before hit testing, but did
so only for the main frame. It was still possible to enter cross-frame hit testing with a
subframe needing style recalc. In that situation, the subframe's updateLayout() would get
called, which could trigger a compositing change that marked the parent frame as needing style
recalc. A subsequent layout on the parent frame (for example by hit testing traversing into
a second subframe) could then mutate the parent frame's layer tree while hit testing was
traversing it.

This patch modifies the hit test logic to ensure that a recursive layout is performed so that
we always perform hit tests on a clean set of frames. It also adds some assertions to warn
us if we encounter this invalid state.

Tested by fast/layers/prevent-hit-test-during-layout.html.

* dom/Document.cpp:
(WebCore::Document::scheduleStyleRecalc): Assert that we are not hit testing
during style recalculation.
* page/EventHandler.cpp:
(WebCore::EventHandler::hitTestResultAtPoint): Ensure that we have a clean render tree
when hit testing.
* page/FrameView.cpp:
(WebCore::FrameView::setNeedsLayout): Assert that we are not in the process of hit testing
when we schedule a layout.
* rendering/RenderView.cpp:
(WebCore::RenderView::hitTest): Mark RenderView as in an active hit test.
* rendering/RenderView.h:

LayoutTests:

* fast/layers/prevent-hit-test-during-layout-expected.txt: Added.
* fast/layers/prevent-hit-test-during-layout.html: Added.
* platform/efl/TestExpectations: Skip on this platform.
* platform/gtk/TestExpectations: Skip on this platform.
* platform/ios-simulator/TestExpectations: Skip on this platform.
* platform/win/TestExpectations: Skip on this platform.


  Commit: 6a8c7f5ecc9740a41d518894878b9d912fc12cf6
      https://github.com/WebKit/WebKit/commit/6a8c7f5ecc9740a41d518894878b9d912fc12cf6
  Author: Brent Fulgham <bfulgham at webkit.org>
  Date:   2016-12-28 (Wed, 28 Dec 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/editing/AlternativeTextController.cpp
    M Source/WebCore/editing/Editor.cpp
    M Source/WebCore/editing/EditorCommand.cpp
    M Source/WebCore/editing/TypingCommand.cpp
    M Source/WebCore/editing/mac/EditorMac.mm
    M Source/WebCore/page/ContextMenuController.cpp
    M Source/WebCore/page/DOMSelection.cpp
    M Source/WebCore/page/DragController.cpp
    M Source/WebCore/page/Frame.cpp
    M Source/WebCore/page/TextIndicator.cpp
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp
    M Source/WebKit2/WebProcess/WebPage/WebPage.cpp
    M Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm

  Log Message:
  -----------
  Merge r208168 - Do a better job of protecting Frame objects in the context of JavaScript calls
https://bugs.webkit.org/show_bug.cgi?id=164163
<rdar://problem/28955249>

Reviewed by Darin Adler.

Source/WebCore:

* editing/AlternativeTextController.cpp:
(WebCore::AlternativeTextController::respondToUnappliedSpellCorrection): Protected the Frame.
* editing/Editor.cpp:
(WebCore::Editor::setTextAsChildOfElement): Ditto.
* editing/EditorCommand.cpp:
(WebCore::executeSwapWithMark): Ditto.
* editing/TypingCommand.cpp:
(WebCore::TypingCommand::deleteKeyPressed): Ditto.
(WebCore::TypingCommand::forwardDeleteKeyPressed): Ditto.
* editing/mac/EditorMac.mm:
(WebCore::Editor::replaceNodeFromPasteboard): Ditto.
* page/ContextMenuController.cpp:
(WebCore::ContextMenuController::contextMenuItemSelected): Ditto.
* page/DOMSelection.cpp:
(WebCore::DOMSelection::collapse): Ditto.
(WebCore::DOMSelection::collapseToEnd): Ditto.
(WebCore::DOMSelection::collapseToStart): Ditto.
(WebCore::DOMSelection::setBaseAndExtent): Ditto.
(WebCore::DOMSelection::setPosition): Ditto.
(WebCore::DOMSelection::modify): Ditto.
(WebCore::DOMSelection::extend): Ditto.
(WebCore::DOMSelection::addRange): Ditto.
(WebCore::DOMSelection::deleteFromDocument): Ditto.
* page/DragController.cpp:
(WebCore::setSelectionToDragCaret): Ditto.
(WebCore::DragController::startDrag): Ditto.
* page/Frame.cpp:
(WebCore::Frame::checkOverflowScroll): Ditto.
* page/TextIndicator.cpp:
(WebCore::TextIndicator::createWithRange): Ditto.

Source/WebKit2:

* WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
(WebKit::InjectedBundleRangeHandle::renderedImage): Protected the Frame.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::insertTextAsync): Ditto.
(WebKit::WebPage::setComposition): Ditto.
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::insertDictatedTextAsync): Ditto.


  Commit: 77dbfbb8a9d8e66c739d7c7d02d06f3b5739a057
      https://github.com/WebKit/WebKit/commit/77dbfbb8a9d8e66c739d7c7d02d06f3b5739a057
  Author: Said Abou-Hallawa <sabouhallawa at apple.com>
  Date:   2016-12-28 (Wed, 28 Dec 2016)

  Changed paths:
    M LayoutTests/ChangeLog
    M Source/WebCore/ChangeLog
    M Source/WebCore/loader/cache/CachedImage.cpp
    M Source/WebCore/loader/cache/CachedImage.h
    M Source/WebCore/loader/cache/CachedResource.cpp
    M Source/WebCore/loader/cache/MemoryCache.cpp
    M Source/WebCore/loader/cache/MemoryCache.h
    M Source/WebCore/platform/graphics/BitmapImage.cpp
    M Source/WebCore/platform/graphics/ImageObserver.h
    M Source/WebCore/platform/graphics/IntSize.h
    M Source/WebCore/platform/graphics/cg/PDFDocumentImage.cpp

  Log Message:
  -----------
  Merge r206635 - Change the MemoryCache and CachedResource adjustSize functions to take a long argument
https://bugs.webkit.org/show_bug.cgi?id=162708
<rdar://problem/28555702>

Reviewed by Brent Fulgham.

Source/WebCore:

Because the MemoryCache stores the size of the cached memory in unsigned,
two problems my happen when reporting a change in the size of the memory:

1. Signed integer overflow -- which can happen because MemoryCache::adjustSize()
   takes a signed integer argument. If the allocated or the freed memory size is
   larger than the maximum of a signed integer, an overflow will happen.
   For the image caching code, this can be seen where the unsigned decodedSize
   is casted to an integer before passing it to ImageObserver::decodedSizeChanged().

2. Unsigned integer overflow -- which can happen if the new allocated memory
   size plus the currentSize exceeds the maximum of unsigned.
   This can be seen in MemoryCache::adjustSize() where we add delta to m_liveSize
   or m_deadSize without checking whether this addition will overflow or not. We
   do not assert for overflow although we assert for underflow.

The fix for these two problems can be the following:

1. Make all the adjustSize functions all the way till MemoryCache::adjustSize()
   take a signed long integer argument.

2. Do not create a NativeImagePtr for an ImageFrame if its frameBytes plus the
   ImageFrameCache::decodedSize() will exceed the maximum of an unsigned integer.

* loader/cache/CachedImage.cpp:
(WebCore::CachedImage::decodedSizeChanged): Change the argument to be long. No overflow will happen when casting the argument from unsigned to long.
* loader/cache/CachedImage.h:
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::setDecodedSize): Use long integer casting when calling MemoryCache::adjustSize().
(WebCore::CachedResource::setEncodedSize): Ditto.
* loader/cache/MemoryCache.cpp:
(WebCore::MemoryCache::MemoryCache): Add as static assert to ensure sizeof(long long) can hold any unsigned or its negation.
(WebCore::MemoryCache::revalidationSucceeded): Use long integer casting when calling MemoryCache::adjustSize().
(WebCore::MemoryCache::remove): Ditto.
(WebCore::MemoryCache::adjustSize): Change the function argument to long integer. No overflow will happen when casting the argument from unsigned to long.
* loader/cache/MemoryCache.h:
* platform/graphics/ImageFrameCache.cpp:
(WebCore::ImageFrameCache::destroyIncompleteDecodedData): Call a function with its new name.
(WebCore::ImageFrameCache::decodedSizeChanged): Change the function argument to long integer. No overflow will happen when casting the argument from unsigned to long.
(WebCore::ImageFrameCache::decodedSizeIncreased): Use long integer casting when calling decodedSizeChanged().
(WebCore::ImageFrameCache::decodedSizeDecreased): Ditto.
(WebCore::ImageFrameCache::decodedSizeReset): Ditto.
(WebCore::ImageFrameCache::didDecodeProperties): Ditto.
(WebCore::ImageFrameCache::frameAtIndex): Do not create the NativeImage if adding its frameByes to the MemoryCache will cause numerical overflow.
(WebCore::ImageFrameCache::decodedSizeIncremented): Deleted. This function is renamed decodedSizeIncreased().
(WebCore::ImageFrameCache::decodedSizeDecremented): Deleted. This function is renamed decodedSizeDecreased().
* platform/graphics/ImageFrameCache.h:
* platform/graphics/ImageObserver.h:
* platform/graphics/IntSize.h:
(WebCore::IntSize::unclampedArea): Returns the area of an IntSize in size_t.
* platform/graphics/cg/PDFDocumentImage.cpp:
(WebCore::PDFDocumentImage::decodedSizeChanged): Use long integer casting when calling ImageObserver::decodedSizeChanged().

LayoutTests:

* TestExpectations: Remove failed tests.


  Commit: 685a1be994518f3243f2c72ae4faba148bc4827a
      https://github.com/WebKit/WebKit/commit/685a1be994518f3243f2c72ae4faba148bc4827a
  Author: Said Abou-Hallawa <sabouhallawa at apple.com>
  Date:   2016-12-28 (Wed, 28 Dec 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/loader/cache/CachedImage.cpp

  Log Message:
  -----------
  Merge r206637 - Unreviewed, fix 32-bit build.

* loader/cache/CachedImage.cpp:
(WebCore::CachedImage::decodedSizeChanged):


  Commit: 671ffaa7249dc6fe61a1a2872d88ac90605ddf88
      https://github.com/WebKit/WebKit/commit/671ffaa7249dc6fe61a1a2872d88ac90605ddf88
  Author: Mark Lam <mark.lam at apple.com>
  Date:   2016-12-30 (Fri, 30 Dec 2016)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/jit/JITOperations.cpp
    M Source/JavaScriptCore/runtime/JSFunction.cpp
    M Source/JavaScriptCore/runtime/JSFunction.h

  Log Message:
  -----------
  Merge r208018 - JSFunction::put() should not allow caching of lazily reified properties.
https://bugs.webkit.org/show_bug.cgi?id=164081

Reviewed by Geoffrey Garen.

It is incorrect for JSFunction::put() to return PutPropertySlots that indicates
that its lazily reified properties (e.g. .caller, and .arguments) are cacheable.
The reason for this is:

1. Currently, a cacheable put may only consist of the following types of put
   operations:
   a. putting a new property at an offset in the object storage.
   b. changing the value of an existing property at an offset in the object storage.
   c. invoking the setter for a property at an offset in the object storage.

   Returning a PutPropertySlot that indicates the property is cacheable means that
   the property put must be one of the above operations.

   For lazily reified properties, JSFunction::put() implements complex conditional
   behavior that is different than the set of cacheable put operations above.
   Hence, it should not claim that the property put is cacheable.

2. Cacheable puts are cached on the original structure of the object before the
   put operation.

   Reifying a lazy property will trigger a structure transition.  Even though
   subsequent puts to such a property may be cacheable after the structure
   transition, it is incorrect to indicate that the property put is cacheable
   because the caching is on the original structure, not the new transitioned
   structure.

Also fixed some missing exception checks.

* jit/JITOperations.cpp:
* runtime/JSFunction.cpp:
(JSC::JSFunction::put):
(JSC::JSFunction::reifyLazyPropertyIfNeeded):
(JSC::JSFunction::reifyBoundNameIfNeeded):
* runtime/JSFunction.h:


  Commit: 371a931f0f26a6483a03f2eb0b8f605ea601a312
      https://github.com/WebKit/WebKit/commit/371a931f0f26a6483a03f2eb0b8f605ea601a312
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2016-12-30 (Fri, 30 Dec 2016)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/gtk/UserAgentGtk.cpp
    M Tools/ChangeLog
    M Tools/TestWebKitAPI/Tests/WebCore/gtk/UserAgentQuirks.cpp

  Log Message:
  -----------
  Merge r210207 - [GTK] Improve user agent construction
https://bugs.webkit.org/show_bug.cgi?id=142074

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Using the macOS quirk rather than the Chrome quirk for Google domains was a mistake: it
broke Hangouts in a different way than the Chrome quirk, and also prevents use of the nice
Earth mode on Google Maps. Google is making it really hard to develop a sane quirk.
Eventually I settled on the combination of two quirks: (1) Firefox browser, and (2) Linux
x86_64 platform. See the bug for full discussion on why these quirks are the best way to
make Google domains work properly in WebKit. This is an extremely sad state of affairs, but
I'm confident it is the best option. Note this effectively includes a rollout of r210168.

Also, fix a bug that caused an extra space to be inserted in the middle of the user agent.

* platform/UserAgentQuirks.cpp:
(WebCore::isGoogle):
(WebCore::urlRequiresFirefoxBrowser):
(WebCore::urlRequiresMacintoshPlatform):
(WebCore::urlRequiresLinuxDesktopPlatform):
(WebCore::UserAgentQuirks::quirksForURL):
(WebCore::UserAgentQuirks::stringForQuirk):
(WebCore::UserAgentQuirks::firefoxRevisionString):
* platform/UserAgentQuirks.h:
* platform/gtk/UserAgentGtk.cpp:
(WebCore::buildUserAgentString):

Tools:

* TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp:
(TestWebKitAPI::assertUserAgentForURLHasChromeBrowserQuirk):
(TestWebKitAPI::assertUserAgentForURLHasFirefoxBrowserQuirk):
(TestWebKitAPI::assertUserAgentForURLHasLinuxPlatformQuirk):
(TestWebKitAPI::assertUserAgentForURLHasMacPlatformQuirk):
(TestWebKitAPI::TEST):


  Commit: be6b057a66a799f6ff1f4df94a2f5379eedc280d
      https://github.com/WebKit/WebKit/commit/be6b057a66a799f6ff1f4df94a2f5379eedc280d
  Author: Emanuele Aina <emanuele.aina at collabora.com>
  Date:   2016-12-30 (Fri, 30 Dec 2016)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/WebProcessPool.cpp

  Log Message:
  -----------
  Merge r210180 - Ensure NetworkProcess is ready before whitelisting TLS certificates
https://bugs.webkit.org/show_bug.cgi?id=162962

Patch by Emanuele Aina <emanuele.aina at collabora.com> on 2016-12-27
Reviewed by Alex Christensen.

If the API user tries to whitelist TLS certificates before any web
view has been created, the action will be ignored because the
NetworkProcess hasn't been fired up yet.

For example, the snippet below using the GTK+ API does not work,
unless the whitelisting is moved after the web view creation:

  webkit_web_context_allow_tls_certificate_for_host(webkit_web_context_get_default(), crt, host);
  webView = webkit_web_view_new();

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::allowSpecificHTTPSCertificateForHost): Ensure
that the NetworkProcess has been already fired up when adding
certificates, so they can be whitelisted before the first web view is
instantiated.


  Commit: f9b77e4b2a7d2858b8543c677d69d337849ddabd
      https://github.com/WebKit/WebKit/commit/f9b77e4b2a7d2858b8543c677d69d337849ddabd
  Author: Miguel Gomez <magomez at igalia.com>
  Date:   2017-01-17 (Tue, 17 Jan 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/GraphicsContext3D.h
    M Source/WebCore/platform/graphics/cairo/GraphicsContext3DCairo.cpp
    M Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGL.cpp
    M Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp

  Log Message:
  -----------
  Merge r210800 - REGRESSION(r208997): [GLX] Google maps labels broken when using glXCreateContextAttribsARB
https://bugs.webkit.org/show_bug.cgi?id=166489

Reviewed by Žan Doberšek.

The format GL_ALPHA that can be used in WebGL's texImage2D and texSubImage2D functions is deprecated
in the OpenGL layer when using a core profile. Due to this, when using core, we need to transform
that parameter into something supported by OpenGL.

What we do is to use a texture with just GL_RED format (that allows a single color component) to
store the alpha values, and then configure the texture to swizzle red and alpha when accessing the
pixel components.

No new tests added.

* platform/graphics/GraphicsContext3D.h:
* platform/graphics/cairo/GraphicsContext3DCairo.cpp:
(WebCore::GraphicsContext3D::GraphicsContext3D):
* platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:
(WebCore::GraphicsContext3D::texImage2D):
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
(WebCore::GraphicsContext3D::texSubImage2D):


  Commit: edbd5096e09c0dcfe63c4d7cbe61bf9c061dbc2b
      https://github.com/WebKit/WebKit/commit/edbd5096e09c0dcfe63c4d7cbe61bf9c061dbc2b
  Author: Daniel Bates <dbates at webkit.org>
  Date:   2017-01-17 (Tue, 17 Jan 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/http/tests/security/contentSecurityPolicy/connect-src-star-secure-websocket-allowed-expected.txt
    A LayoutTests/http/tests/security/contentSecurityPolicy/connect-src-star-secure-websocket-allowed.html
    A LayoutTests/http/tests/security/contentSecurityPolicy/connect-src-star-websocket-allowed-expected.txt
    A LayoutTests/http/tests/security/contentSecurityPolicy/connect-src-star-websocket-allowed.html
    A LayoutTests/http/tests/security/contentSecurityPolicy/default-src-star-secure-websocket-allowed-expected.txt
    A LayoutTests/http/tests/security/contentSecurityPolicy/default-src-star-secure-websocket-allowed.html
    A LayoutTests/http/tests/security/contentSecurityPolicy/default-src-star-websocket-allowed-expected.txt
    A LayoutTests/http/tests/security/contentSecurityPolicy/default-src-star-websocket-allowed.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/page/csp/ContentSecurityPolicySourceList.cpp

  Log Message:
  -----------
  Merge r209789 - CSP: ws: and wss: blocked with connect-src *
https://bugs.webkit.org/show_bug.cgi?id=165804
<rdar://problem/28563643>

Reviewed by David Kilzer.

Source/WebCore:

Allow * to match ws: and wss:. This will make our behavior of * more closely conform
the behavior of * in the Content Security Policy Level 3 spec.,
<https://w3c.github.io/webappsec-csp/#match-url-to-source-expression> (Editor's Draft, 2 December 2016).

Tests: http/tests/security/contentSecurityPolicy/connect-src-star-secure-websocket-allowed.html
       http/tests/security/contentSecurityPolicy/connect-src-star-websocket-allowed.html
       http/tests/security/contentSecurityPolicy/default-src-star-secure-websocket-allowed.html
       http/tests/security/contentSecurityPolicy/default-src-star-websocket-allowed.html

* page/csp/ContentSecurityPolicySourceList.cpp:
(WebCore::ContentSecurityPolicySourceList::isProtocolAllowedByStar):

LayoutTests:

Add tests to ensure that * matches ws: and wss:.

* http/tests/security/contentSecurityPolicy/connect-src-star-secure-websocket-allowed-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/connect-src-star-secure-websocket-allowed.html: Added.
* http/tests/security/contentSecurityPolicy/connect-src-star-websocket-allowed-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/connect-src-star-websocket-allowed.html: Added.
* http/tests/security/contentSecurityPolicy/default-src-star-secure-websocket-allowed-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/default-src-star-secure-websocket-allowed.html: Added.
* http/tests/security/contentSecurityPolicy/default-src-star-websocket-allowed-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/default-src-star-websocket-allowed.html: Added.


  Commit: 5e19c92f64920c0cd7612d99307b9a0c37466fd5
      https://github.com/WebKit/WebKit/commit/5e19c92f64920c0cd7612d99307b9a0c37466fd5
  Author: Daniel Bates <dbates at webkit.org>
  Date:   2017-01-17 (Tue, 17 Jan 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/http/tests/security/contentSecurityPolicy/script-src-parsing-implicit-and-explicit-port-number-expected.txt
    A LayoutTests/http/tests/security/contentSecurityPolicy/script-src-parsing-implicit-and-explicit-port-number.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/page/csp/ContentSecurityPolicySource.cpp

  Log Message:
  -----------
  Merge r209821 - CSP: Allow HTTPS URL to match HTTP source expression
https://bugs.webkit.org/show_bug.cgi?id=159520
<rdar://problem/27287177>

Reviewed by Brent Fulgham.

Source/WebCore:

Test: http/tests/security/contentSecurityPolicy/script-src-parsing-implicit-and-explicit-port-number.html

* page/csp/ContentSecurityPolicySource.cpp:
(WebCore::ContentSecurityPolicySource::schemeMatches):
(WebCore::ContentSecurityPolicySource::portMatches):

LayoutTests:

* http/tests/security/contentSecurityPolicy/script-src-parsing-implicit-and-explicit-port-number-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/script-src-parsing-implicit-and-explicit-port-number.html: Added.
* platform/wk2/TestExpectations: Skip the test on WebKit2 because it makes use of Internals.registerDefaultPortForProtocol(),
which does not work with NetworkProcess.


  Commit: 65e05d4152a3b2b1cfceadfc7082b14fe5614e75
      https://github.com/WebKit/WebKit/commit/65e05d4152a3b2b1cfceadfc7082b14fe5614e75
  Author: Milan Crha <mcrha at redhat.com>
  Date:   2017-01-17 (Tue, 17 Jan 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/soup/PublicSuffixSoup.cpp

  Log Message:
  -----------
  Merge r210357 - [SOUP] AddressSanitizer: heap-use-after-free under WTF::String::fromUTF8()
https://bugs.webkit.org/show_bug.cgi?id=166722

Patch by Milan Crha <mcrha at redhat.com> on 2017-01-05
Reviewed by Alex Christensen.

* platform/soup/PublicSuffixSoup.cpp:
(WebCore::topPrivatelyControlledDomain):
Use a variable to hold UTF-8 version of the domain, because
the soup_tld_get_base_domain() returns a pointer into the passed-in
string, which could be freed due to the temporary object being freed.


  Commit: a04908aad241192b6bfca76daba73fbcf753c6ba
      https://github.com/WebKit/WebKit/commit/a04908aad241192b6bfca76daba73fbcf753c6ba
  Author: Žan Doberšek <zdobersek at igalia.com>
  Date:   2017-01-17 (Tue, 17 Jan 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/text/hyphen/HyphenationLibHyphen.cpp

  Log Message:
  -----------
  Merge r210670 - [GTK] WebKitWebProcess at 100% CPU loading hyphenation dictionaries
https://bugs.webkit.org/show_bug.cgi?id=165601

Reviewed by Carlos Garcia Campos.

In HyphenationLibHyphen, retrieve the canonicalized absolute pathname of the dictionary file
in order to avoid storing symbolic links as the target files for specific locales. libhyphen
distributes its dictionary files by linking a set of similar locales files to a single file.
Not resolving those symbolic links means we'll be opening a single file via multiple
HyphenationDictionary objects, which is far from optimal.

To add insult to injury, these HyphenationDictionary objects were stored in a TinyLRUCache
with a slim capacity of 4. This meant that while already loading one single file through
multiple symlinks, because of continuous eviciton from this LRU cache the same symlinks
continued to be processed, in some cases resulting in opening the same dictionary file
hundreds or thousands of times. The capacity of this TinyLRUCache is increased to 32
to keep the amount of open libhyphen dictionaries capped at some reasonable number.

* platform/text/hyphen/HyphenationLibHyphen.cpp:
(WebCore::scanDirectoryForDicionaries):


  Commit: efd4aeebc43c4c1df967098db061fc395611f674
      https://github.com/WebKit/WebKit/commit/efd4aeebc43c4c1df967098db061fc395611f674
  Author: Yusuke Suzuki <ysuzuki at apple.com>
  Date:   2017-01-17 (Tue, 17 Jan 2017)

  Changed paths:
    M Source/WTF/ChangeLog
    M Source/WTF/wtf/WorkQueue.h
    M Source/WTF/wtf/generic/WorkQueueGeneric.cpp
    M Tools/ChangeLog
    M Tools/TestWebKitAPI/Tests/WTF/WorkQueue.cpp

  Log Message:
  -----------
  Merge r210271 - WorkQueueGeneric's platformInvalidate() can deadlock when called on the RunLoop's thread
https://bugs.webkit.org/show_bug.cgi?id=166645

Reviewed by Carlos Garcia Campos.

Source/WTF:

WorkQueue can be destroyed on its invoking thread itself.
The scenario is the following.

    1. Create WorkQueue (in thread A).
    2. Dispatch a task (in thread A, dispatching a task to thread B).
    3. Deref in thread A.
    4. The task is executed in thread B.
    5. Deref in thread B.
    6. The WorkQueue is destroyed, calling platformInvalidate in thread B.

In that case, if platformInvalidate waits thread B's termination, it causes deadlock.
We do not need to wait the thread termination.

* wtf/WorkQueue.h:
* wtf/generic/WorkQueueGeneric.cpp:
(WorkQueue::platformInitialize):
(WorkQueue::platformInvalidate):

Tools:

* TestWebKitAPI/Tests/WTF/WorkQueue.cpp:
(TestWebKitAPI::TEST):


  Commit: d885a0b1e4f15399c0c625db2bcbf293a66b14f0
      https://github.com/WebKit/WebKit/commit/d885a0b1e4f15399c0c625db2bcbf293a66b14f0
  Author: Michael Catanzaro <mcatanzaro at igalia.com>
  Date:   2017-01-17 (Tue, 17 Jan 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/dom/Document.cpp

  Log Message:
  -----------
  REGRESSION(r203047): [GTK][Stable] "notify::title" signal unreliably triggered multiple times
https://bugs.webkit.org/show_bug.cgi?id=165073

Patch by Michael Catanzaro <mcatanzaro at igalia.com> on 2017-01-17
Reviewed by Carlos Garcia Campos.

* dom/Document.cpp:
(WebCore::Document::setTitle):


  Commit: adc2da9f200d3c0df733157cf684c8de8bdcd6f7
      https://github.com/WebKit/WebKit/commit/adc2da9f200d3c0df733157cf684c8de8bdcd6f7
  Author: Commit Queue <commit-queue at webkit.org>
  Date:   2017-01-17 (Tue, 17 Jan 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp

  Log Message:
  -----------
  Merge r210583 - Unreviewed, rolling out r182947.
https://bugs.webkit.org/show_bug.cgi?id=166922

Caused huge memory leak see https://webkit.org/b/166884
(Requested by KaL on #webkit).

Reverted changeset:

"[GStreamer] Silent WebAudio buffers support"
https://bugs.webkit.org/show_bug.cgi?id=143869
http://trac.webkit.org/changeset/182947


  Commit: 09fced26054af7204c12f1db39a024ee4c2b925f
      https://github.com/WebKit/WebKit/commit/09fced26054af7204c12f1db39a024ee4c2b925f
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-01-17 (Tue, 17 Jan 2017)

  Changed paths:
    M Tools/ChangeLog
    M Tools/gtk/manifest.txt.in

  Log Message:
  -----------
  Merge r210233 - REGRESSION(r173753): [GTK] Source/WebKit is distributed in tarballs
https://bugs.webkit.org/show_bug.cgi?id=165797

Reviewed by Michael Catanzaro.

Move directory ruleset after all exclude rules of Source rulset.

* gtk/manifest.txt.in:


  Commit: 78824521fd5c58ddd73898e10c8b2cd8331beb92
      https://github.com/WebKit/WebKit/commit/78824521fd5c58ddd73898e10c8b2cd8331beb92
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-01-17 (Tue, 17 Jan 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/Linux.cmake
    A Source/WebCore/platform/linux/CurrentProcessMemoryStatus.cpp
    A Source/WebCore/platform/linux/CurrentProcessMemoryStatus.h
    M Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp

  Log Message:
  -----------
  Merge r208536 - [Linux] Memory values shown by memory pressure handler logger are not useful
https://bugs.webkit.org/show_bug.cgi?id=164589

Reviewed by Michael Catanzaro.

We are currently using the VmSize field from /proc/self/status which is the virtual memory size of the process
and doesn't normally change even when the memory pressure handler manages to release memory. So, most of the
time we see that there's no changes in memory usage in the logs.
We should use the actual memory used by the process, memory that the process can release and then it's relevant
for the memory pressure handler. Using other fields from /proc/self/status we could do something like VmRSS -
(RssFile + RssShme), but there's also /proc/self/statm that provides the same information in a single. The main
different is that statm provides both resident and shared memory directly, but in number of pages, so we need to
multiply by the size of the page.
This patch adds a method to parse /proc/self/statm in its given file, because I plan to use this for the linux
memory sampler that is incorrectly parsing /proc/self/statm.

* platform/Linux.cmake: Add new files to compilation.
* platform/linux/CurrentProcessMemoryStatus.cpp: Added.
(WebCore::systemPageSize): Return the page size.
(WebCore::currentProcessMemoryStatus): Parse /proc/self/statm and fill the given ProcessMemoryStatus.
* platform/linux/CurrentProcessMemoryStatus.h: Added.
* platform/linux/MemoryPressureHandlerLinux.cpp:
(WebCore::MemoryPressureHandler::processMemoryUsage(): Helper function to return the memory used by the process
in bytes.
(WebCore::MemoryPressureHandler::ReliefLogger::platformMemoryUsage): Use processMemoryUsage().


  Commit: 553a6223ba2e003a9a84139b93aa3a807b537066
      https://github.com/WebKit/WebKit/commit/553a6223ba2e003a9a84139b93aa3a807b537066
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-01-17 (Tue, 17 Jan 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp

  Log Message:
  -----------
  Merge r210223 - [GTK] Since the memory pressure relief has been activated, my disk has a high usage and the desktop stalls
https://bugs.webkit.org/show_bug.cgi?id=164052

Reviewed by Michael Catanzaro.

Check how much memory is freed by the memory pressure handler and wait for a long time if we didn't free that
much.

* platform/linux/MemoryPressureHandlerLinux.cpp:
(WebCore::MemoryPressureHandler::EventFDPoller::EventFDPoller):


  Commit: bd63a2e9d4e7cacbf1b537f498d295fd28c3a043
      https://github.com/WebKit/WebKit/commit/bd63a2e9d4e7cacbf1b537f498d295fd28c3a043
  Author: Andreas Kling <akling at apple.com>
  Date:   2017-01-17 (Tue, 17 Jan 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/MemoryPressureHandler.cpp

  Log Message:
  -----------
  Merge r208975 - MemoryPressureHandler should only trigger synchronous GC on iOS
<https://webkit.org/b/165043>
<rdar://problem/29312684>

Reviewed by Sam Weinig.

On iOS we know that there is really only one web process in play at a time,
so it's okay to do a synchronous GC immediately in response to high memory pressure.

On other platforms, we may have tens or hundreds of web processes, and if they
all start doing full GCs at the same time, it can easily bring a system to its knees
if it's already under pressure.

Fix this by using garbageCollectSoon() on non-iOS platforms.

* page/MemoryRelease.cpp:
(WebCore::releaseCriticalMemory):


  Commit: 665213d94e64ba844eebf1ca21e55642c22a79a1
      https://github.com/WebKit/WebKit/commit/665213d94e64ba844eebf1ca21e55642c22a79a1
  Author: Žan Doberšek <zdobersek at igalia.com>
  Date:   2017-01-17 (Tue, 17 Jan 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp

  Log Message:
  -----------
  Merge r210541 - [TextureMapper] TextureMapperPlatformLayerProxy::swapBuffers() should hold the lock throughout invocation
https://bugs.webkit.org/show_bug.cgi?id=166852

Reviewed by Michael Catanzaro.

* platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:
(WebCore::TextureMapperPlatformLayerProxy::swapBuffer): Append to previous buffer
to the m_usedBuffers Vector while the object's lock is held. Everywhere else the
m_usedBuffers Vector is used under the lock, no reason to not do the same here.


  Commit: 4e079d813fa2282ec8b6fc1f16a70a3658b55e85
      https://github.com/WebKit/WebKit/commit/4e079d813fa2282ec8b6fc1f16a70a3658b55e85
  Author: Žan Doberšek <zdobersek at igalia.com>
  Date:   2017-01-17 (Tue, 17 Jan 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp
    M Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.h

  Log Message:
  -----------
  Merge r210542 - [TexMap] Use WTF::Function in TextureMapperPlatformLayerProxy
https://bugs.webkit.org/show_bug.cgi?id=166853

Reviewed by Michael Catanzaro.

Use WTF::Function in the TextureMapperPlatformLayerProxy, instead of
the std::function bloat.

* platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:
(WebCore::TextureMapperPlatformLayerProxy::scheduleUpdateOnCompositorThread):
(WebCore::TextureMapperPlatformLayerProxy::compositorThreadUpdateTimerFired):
* platform/graphics/texmap/TextureMapperPlatformLayerProxy.h:


  Commit: e150e53678b3c4a4fd479f4932d07854c6b02c25
      https://github.com/WebKit/WebKit/commit/e150e53678b3c4a4fd479f4932d07854c6b02c25
  Author: Žan Doberšek <zdobersek at igalia.com>
  Date:   2017-01-17 (Tue, 17 Jan 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp
    M Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h

  Log Message:
  -----------
  Merge r210543 - [CoordinatedGraphics] TextureMapperPlatformLayerProxy is constantly getting activated
https://bugs.webkit.org/show_bug.cgi?id=166856

Reviewed by Michael Catanzaro.

When CoordinatedGraphicsLayer::setContentsNeedsDisplay() is called, currently with
the threaded CoordinatedGraphics mode the platform layer is marked for synchronizing.
This means that at flush-time this layer swaps the buffer of the wrapped platform
layer and updates the layer state to indicate that the underlying
TextureMapperPlatformLayerProxy object has to be activated on the composition thread.

This current logic results in the TextureMapperPlatformLayerProxy object being
reactivated for every display request that arrives via setContentsNeedsDisplay().
This is pretty wasteful since this activation heap-allocates a RunLoop::Timer object
which internally also locks up the GLib main context to attach a new source, and
that's only after the source on the previous RunLoop::Timer was detached before
that RunLoop::Timer was destroyed.

To avoid this, CoordinatedGraphicsLayer::setContentsNeedsDisplay() sets a new flag,
m_shouldUpdatePlatformLayer. During flush, this flag is checked in
CoordinatedGraphicsLayer::updatePlatformLayer(), with the buffer swap performed in
case it's set. CoordinatedGraphicsLayer::syncPlatformLayer() now only sets the
platform layer proxy object for that layer's state.

* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer):
(WebCore::CoordinatedGraphicsLayer::setContentsNeedsDisplay):
(WebCore::CoordinatedGraphicsLayer::syncPlatformLayer):
(WebCore::CoordinatedGraphicsLayer::updatePlatformLayer):
(WebCore::CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly):
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:


  Commit: 0aaacc90a150651597589a5542ac5393e0ce7aba
      https://github.com/WebKit/WebKit/commit/0aaacc90a150651597589a5542ac5393e0ce7aba
  Author: Žan Doberšek <zdobersek at igalia.com>
  Date:   2017-01-17 (Tue, 17 Jan 2017)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp
    M Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h

  Log Message:
  -----------
  Merge r210545 - ThreadedCoordinatedLayerTreeHost::renderNextFrame() should short-cut to layer flushing
https://bugs.webkit.org/show_bug.cgi?id=157614

Reviewed by Carlos Garcia Campos.

CoordinatedLayerTreeHost prevents any layer flushes while a previously-commited scene
state is still being rendered on the composition thread. renderNextFrame() is called
once that is complete, and a new layer flush is scheduled.

This change improves the whole ordeal by immediately performing the layer flush only if
it was requested during the time we were waiting on the renderer (i.e. when the latest
scene state was being composited), instead of scheduling it unconditionally.
m_scheduledWhileWaitingForRenderer member variable is added to track that occurrence.

* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
(WebKit::CoordinatedLayerTreeHost::scheduleLayerFlush):
(WebKit::CoordinatedLayerTreeHost::renderNextFrame):
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:


  Commit: 273dee51642b5a5ed2b241410d6226a8341b5a59
      https://github.com/WebKit/WebKit/commit/273dee51642b5a5ed2b241410d6226a8341b5a59
  Author: Bernd Homuth <dev at hmt.im>
  Date:   2017-01-17 (Tue, 17 Jan 2017)

  Changed paths:
    M Source/WebCore/platform/gtk/po/ChangeLog
    M Source/WebCore/platform/gtk/po/de.po

  Log Message:
  -----------
  Merge r210214 - [GTK] German translation update
https://bugs.webkit.org/show_bug.cgi?id=152228

Patch by Bernd Homuth <dev at hmt.im> on 2016-12-30
Rubber-stamped by Michael Catanzaro.

* de.po:


  Commit: 03e4f3589bac5df2ea2100492f2f10496f015916
      https://github.com/WebKit/WebKit/commit/03e4f3589bac5df2ea2100492f2f10496f015916
  Author: Carlos Garcia Campos <carlosgc at webkit.org>
  Date:   2017-01-17 (Tue, 17 Jan 2017)

  Changed paths:
    M ChangeLog
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/gtk/NEWS
    M Source/cmake/OptionsGTK.cmake

  Log Message:
  -----------
  Unreviewed. Update OptionsGTK.cmake and NEWS for 2.14.3 release.

.:

* Source/cmake/OptionsGTK.cmake:

Source/WebKit2:

* gtk/NEWS: Add release notes for 2.14.3.


  Commit: 1e25ee2b0b34fd1e24cf6ff031f84b0a51c2aca2
      https://github.com/WebKit/WebKit/commit/1e25ee2b0b34fd1e24cf6ff031f84b0a51c2aca2
  Author: Bernd Homuth <dev at hmt.im>
  Date:   2017-01-18 (Wed, 18 Jan 2017)

  Changed paths:
    M Source/WebCore/platform/gtk/po/ChangeLog
    M Source/WebCore/platform/gtk/po/de.po

  Log Message:
  -----------
  Revert "Merge r210214 - [GTK] German translation update"

This reverts commit r210817.


  Commit: 304c13084af1f3f1200ef0e9c07194312c10d554
      https://github.com/WebKit/WebKit/commit/304c13084af1f3f1200ef0e9c07194312c10d554
  Author: Miguel Gomez <magomez at igalia.com>
  Date:   2017-02-07 (Tue, 07 Feb 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp
    M Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.cpp
    M Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.h

  Log Message:
  -----------
  Merge r210847 - [GTK] [TextureMapper] [GLES2] Draw repeated patterns for NPOT textures manually
https://bugs.webkit.org/show_bug.cgi?id=167118

Reviewed by Žan Doberšek.

When using GLES2 without the GL_OES_texture_npot extension, some implementations fail to properly
draw repeated patters from a texture (using GL_REPEAT). For those cases, perform the repetition
manually using the shader.

Covered by existent tests.

* platform/graphics/texmap/TextureMapperGL.cpp:
(WebCore::driverSupportsNPOTTextures):
(WebCore::TextureMapperGL::drawTexture):
(WebCore::TextureMapperGL::drawTexturedQuadWithProgram):
* platform/graphics/texmap/TextureMapperShaderProgram.cpp:
(WebCore::TextureMapperShaderProgram::create):
* platform/graphics/texmap/TextureMapperShaderProgram.h:


  Commit: f3692111ec6d81851afe382184dc2a06148f225b
      https://github.com/WebKit/WebKit/commit/f3692111ec6d81851afe382184dc2a06148f225b
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-02-07 (Tue, 07 Feb 2017)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp

  Log Message:
  -----------
  Merge r210920 - [GTK] Do not update the backing store state unnecessarily when page visibility changes
https://bugs.webkit.org/show_bug.cgi?id=167195

Reviewed by Sergio Villar Senin.

I've noticed that we are receiving UpdateBackingStoreState messages in the web process even when size and scale
factor didn't change. That's quite unfortunate because we do a lot of work unnecessarily and we tell the
threaded compositor that the size changed. This is not only a problem because it's not true, but also because
changing the size is a sync operation in the threaded compositor, so we block the compositing thread for
nothing. This is happening because the WebPageProxy notifies the drawing area that the backing store is
discardable when the page is not visible, and that always produces a new backing store state. In accelerating
compositing mode we don't even have a backing store to discard, so we should check we have something to discard
and also make sure we only generate a new backing store state if we really discarded the backing store.

* UIProcess/DrawingAreaProxyImpl.cpp:
(WebKit::DrawingAreaProxyImpl::discardBackingStoreSoon):
(WebKit::DrawingAreaProxyImpl::discardBackingStore):


  Commit: 7c32643a5295597441cd1b274866f47fc6456899
      https://github.com/WebKit/WebKit/commit/7c32643a5295597441cd1b274866f47fc6456899
  Author: Miguel Gomez <magomez at igalia.com>
  Date:   2017-02-07 (Tue, 07 Feb 2017)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/WebProcess/WebPage/AcceleratedDrawingArea.cpp

  Log Message:
  -----------
  Merge r211083 - [Coordinated Graphics] Ensure that we're in AC mode before trying to create GraphicsLayers
https://bugs.webkit.org/show_bug.cgi?id=167365

Reviewed by Carlos Garcia Campos.

When entering AC on demand, the RenderLayerCompositor wants to create the root GraphicsLayer before the
AcceleratedDrawingArea is in AC mode. This means there's no LayerTreeHost to request the GraphicsLayerFactory,
so no layers are created. Ensure that we are in AC mode before requesting the GraphicsLayerFactory.

No behaviour change, no new tests.

* WebProcess/WebPage/AcceleratedDrawingArea.cpp:
(WebKit::AcceleratedDrawingArea::graphicsLayerFactory):


  Commit: 63f5e2f1847becf078b7d33c250a1f0b15b88bc4
      https://github.com/WebKit/WebKit/commit/63f5e2f1847becf078b7d33c250a1f0b15b88bc4
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-02-07 (Tue, 07 Feb 2017)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/Shared/CoordinatedGraphics/SimpleViewportController.cpp
    M Source/WebKit2/Shared/CoordinatedGraphics/SimpleViewportController.h
    M Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp
    M Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h
    M Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp

  Log Message:
  -----------
  Merge r210954 - [Threaded Compositor] Initialize the threaded compositor with the current size
https://bugs.webkit.org/show_bug.cgi?id=167196

Reviewed by Žan Doberšek.

We are always creating the threaded compositor with an empty size and then a sizeDidChange always happen when
the backing store state changes. This is always happening because the threaded compositor is created before the
first backing store state, but if we wanted to create it later, for example to enter/leave AC mode on demand,
the threaded compositor will not have the viewport size unless the window is resized, or sizeDidChange is called
manually when entering AC mode. Creating the threaded compositor is sync and changing the size too, so it's
better to do both things at the same time using the same sync operation.

* Shared/CoordinatedGraphics/SimpleViewportController.cpp:
(WebKit::SimpleViewportController::SimpleViewportController): Pass an initial size to the constructor.
* Shared/CoordinatedGraphics/SimpleViewportController.h:
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::ThreadedCompositor::create): Add viewportSize and scaleFactor construction parameters,
(WebKit::ThreadedCompositor::ThreadedCompositor): Ditto. Also mark as needs resize if the given size is not empty.
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
(WebKit::ThreadedCoordinatedLayerTreeHost::ThreadedCoordinatedLayerTreeHost): Initialize the threaded compositor
with an initial viewport size and scale factor.


  Commit: 2379d6db772bda837fdf907deee7c3553bbf825f
      https://github.com/WebKit/WebKit/commit/2379d6db772bda837fdf907deee7c3553bbf825f
  Author: Miguel Gomez <magomez at igalia.com>
  Date:   2017-02-07 (Tue, 07 Feb 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/RenderLayerBacking.cpp

  Log Message:
  -----------
  Merge r211084 - [GTK] Do not paint non composited content into the window when using the threaded compositor
https://bugs.webkit.org/show_bug.cgi?id=167367

Reviewed by Carlos Garcia Campos.

When using the threaded compositor we need to send the non composited content for compositing as well,
not painting it directly into the window.

No new tests.

* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::paintsIntoWindow):


  Commit: 0887514ae294f7fa751d6cec3fcd9e3b61dd69e1
      https://github.com/WebKit/WebKit/commit/0887514ae294f7fa751d6cec3fcd9e3b61dd69e1
  Author: Miguel Gomez <magomez at igalia.com>
  Date:   2017-02-07 (Tue, 07 Feb 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/page/PageOverlayController.cpp
    M Source/WebCore/page/PageOverlayController.h
    M Source/WebCore/rendering/RenderLayerCompositor.cpp
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.cpp

  Log Message:
  -----------
  Merge r211141 - [GTK] The inspector is broken when AC support is disabled
https://bugs.webkit.org/show_bug.cgi?id=165237

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Ensure that PageOverlayController destroys its root GraphicsLayers when leaving AC. They
will be recreated if we enter AC again, avoiding a crash because the layers don't belong to
the appropriate compositor. Also, don't append the document overlay layers if we are not
in compositing mode.

No new tests added.

* page/PageOverlayController.cpp:
(WebCore::PageOverlayController::willDetachRootLayer):
* page/PageOverlayController.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::appendDocumentOverlayLayers):
(WebCore::RenderLayerCompositor::detachRootLayer):

Source/WebKit2:

WebInspector must not use PageOverlays or GraphicsLayers when AC is not avaialable.

No new tests added.

* WebProcess/WebCoreSupport/WebInspectorClient.cpp:
(WebKit::WebInspectorClient::highlight):
(WebKit::WebInspectorClient::showPaintRect):


  Commit: 3f2a1b34cb7783706a9c53f29f6f915c42728ab5
      https://github.com/WebKit/WebKit/commit/3f2a1b34cb7783706a9c53f29f6f915c42728ab5
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-02-07 (Tue, 07 Feb 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp
    M Source/WebCore/platform/graphics/x11/PlatformDisplayX11.h
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreX11.cpp
    M Source/WebKit2/UIProcess/gtk/WebPreferencesGtk.cpp

  Log Message:
  -----------
  Merge r211145 - [GTK] UIProcess from WebKitGtk+ 2.15.x SIGSEGVs because of X Error BadDamage in WebKit::AcceleratedBackingStoreX11::update(WebKit::LayerTreeContext const&) () at Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreX11.cpp:145
https://bugs.webkit.org/show_bug.cgi?id=165656

Reviewed by Michael Catanzaro.

Source/WebCore:

Also return the base error code from PlatformDisplayX11::supportsXDamage().

* platform/graphics/x11/PlatformDisplayX11.cpp:
(WebCore::PlatformDisplayX11::supportsXDamage):
* platform/graphics/x11/PlatformDisplayX11.h:

Source/WebKit2:

We are incorrectly handling BadDamage errors because the BadDamage value we pass to the XErrorTrapper is not
the actual error code used by X11. Since XDamage is an extension, it has its own errors and a base error
code. We need to use the base error code we get when calling XDamageQueryExtension to pass the right error code
to the XErrorTrapper.

* UIProcess/gtk/AcceleratedBackingStoreX11.cpp:
(WebKit::AcceleratedBackingStoreX11::create): Get also the damage base error.
(WebKit::xDamageErrorCode): Helper to get the actual error code.
(WebKit::AcceleratedBackingStoreX11::~AcceleratedBackingStoreX11): Use xDamageErrorCode().
(WebKit::AcceleratedBackingStoreX11::update): Ditto.


  Commit: d7751876886991b6037675a020faf583e4f2338e
      https://github.com/WebKit/WebKit/commit/d7751876886991b6037675a020faf583e4f2338e
  Author: Miguel Gomez <magomez at igalia.com>
  Date:   2017-02-07 (Tue, 07 Feb 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp

  Log Message:
  -----------
  Merge r211204 - [GTK] WebProcess from WebKitGtk+ 2.15.3 SIGSEVs in WebCore::GraphicsContext3D::drawArrays(unsigned int, int, int) at Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:740
https://bugs.webkit.org/show_bug.cgi?id=167296

Reviewed by Sergio Villar Senin.

Use a VBO to pass the vertex data when using the stencil for clipping. Passing a custom array without
using an VBO is deprecated when using OpenGL >= 3.0 and a Core profile.

No behaviour change, no new tests.

* platform/graphics/texmap/TextureMapperGL.cpp:
(WebCore::TextureMapperGL::beginClip):


  Commit: 138116607cff8380a4db312ee3b1defb5add8054
      https://github.com/WebKit/WebKit/commit/138116607cff8380a4db312ee3b1defb5add8054
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-02-07 (Tue, 07 Feb 2017)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp

  Log Message:
  -----------
  Merge r211205 - [Threaded Compositor] Update also the contents size when creating the threaded compositor
https://bugs.webkit.org/show_bug.cgi?id=167452

Reviewed by Žan Doberšek.

In r210954 we ensured that the threaded compositor and the viewport controller were created with the initial web
page size. If we don't update the contents size, the visible rectangle will be empty and tiles won't be created
until contentsSizeDidChange is called. It's even possible, when entering AC mode on demand, that we create the
layer tree host after the contents size changed, in which case nothing is rendered unless we resize the window.

* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
(WebKit::ThreadedCoordinatedLayerTreeHost::ThreadedCoordinatedLayerTreeHost):


  Commit: 006f567f29801996e0dc2e26415fa08e3c0d0a46
      https://github.com/WebKit/WebKit/commit/006f567f29801996e0dc2e26415fa08e3c0d0a46
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-02-07 (Tue, 07 Feb 2017)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp
    M Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h

  Log Message:
  -----------
  Merge r211281 - [Threaded Compositor] Stop creating the GLContext on demand the first time makeContextCurrent is called
https://bugs.webkit.org/show_bug.cgi?id=167496

Reviewed by Žan Doberšek.

This is causing problems with animations when entering AC mode on demand. What happens is that the threaded
compositor is created, then the animation is scheduled and during the first animation iteration the GLContext is
created, making the first frame of the animation quite slow. In my computer creating the GLContext takes 0.8
seconds. If the animation duration is less than the time it takes to create the GLContext, the animation ends
without iterating. This causing timeouts in the bots in tests like
animations/animation-iteration-event-destroy-renderer.html that expect webkitAnimationIteration events that
never fire.

* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::ThreadedCompositor::ThreadedCompositor): Create the GLContext right after the compositing thread is
created if we already have a native surface handle.
(WebKit::ThreadedCompositor::createGLContext): Helper to create the GLContext.
(WebKit::ThreadedCompositor::setNativeSurfaceHandleForCompositing): Create the GLContext when a native surface
handle is given.
(WebKit::ThreadedCompositor::makeContextCurrent): Deleted.
(WebKit::ThreadedCompositor::renderLayerTree): Make the context cunrrent directly here.
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:


  Commit: 79bafab8ff7d261af20239f568f95f36ad2efd64
      https://github.com/WebKit/WebKit/commit/79bafab8ff7d261af20239f568f95f36ad2efd64
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-02-07 (Tue, 07 Feb 2017)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp

  Log Message:
  -----------
  Merge r211346 - [GTK] ASSERTION FAILED: !m_layerTreeHost in DrawingAreaImpl::display()
https://bugs.webkit.org/show_bug.cgi?id=167548

Reviewed by Michael Catanzaro.

The problem is that non accelerated compositing forceRepaint implementation is doing a layout and then calling
display. The layout makes the drawing area enter in AC mode and display asserts that we have a layer tree
host. forceRepaint shouldn't do the layout because display already does that and it correctly handles the case
of entering AC mode during the layout. It shouldn't call setNeedsDisplay either, because that schedules a
display, but we are going to display synchronously.

* WebProcess/WebPage/DrawingAreaImpl.cpp:
(WebKit::DrawingAreaImpl::forceRepaint):


  Commit: 0f65cbac8ca929ad50a7e7d1f81b6574464330af
      https://github.com/WebKit/WebKit/commit/0f65cbac8ca929ad50a7e7d1f81b6574464330af
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-02-07 (Tue, 07 Feb 2017)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp

  Log Message:
  -----------
  Merge r211347 - [Threaded Compositor] Crash when deleting the compositor run loop
https://bugs.webkit.org/show_bug.cgi?id=167545

Reviewed by Michael Catanzaro.

The problem is that we are releasing the WorkQueue before the update timer that keeps a reference to the run
loop, destroyed by the WorkQueue. So, invalidate the WorkQueue in the next run loop iteration to ensure it
happens after the CompositingRunLoop destructor.

* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
(WebKit::CompositingRunLoop::~CompositingRunLoop):


  Commit: 6ccf54c41812a48da9f695296dc2b88f7bcf0409
      https://github.com/WebKit/WebKit/commit/6ccf54c41812a48da9f695296dc2b88f7bcf0409
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-02-07 (Tue, 07 Feb 2017)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp

  Log Message:
  -----------
  Merge r211348 - [Threaded Compositor] Crash when detaching the CoordinatedGraphicsScene
https://bugs.webkit.org/show_bug.cgi?id=167547

Reviewed by Michael Catanzaro.

It seems that commitSceneState() can be called after the CoordinatedGraphicsScene has been detached.

* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::commitSceneState): Return early if scene has been detached.
(WebKit::CoordinatedGraphicsScene::detach): Take the render queue lock before clearing the render queue.


  Commit: e9fe03786e4d2b42c64844890c52d0f055570427
      https://github.com/WebKit/WebKit/commit/e9fe03786e4d2b42c64844890c52d0f055570427
  Author: Miguel Gomez <magomez at igalia.com>
  Date:   2017-02-07 (Tue, 07 Feb 2017)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp

  Log Message:
  -----------
  Merge r211367 - [GTK] Scrolling iframes, doesn't redraw their content
https://bugs.webkit.org/show_bug.cgi?id=167581

Reviewed by Carlos Garcia Campos.

Take into account whether we are using AC or not in order to repaint an area after scrolling.

No behaviour change, no new tests.

* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::invalidateContentsForSlowScroll):


  Commit: e35499e50822b865aca658b219aa9bd5a71ae880
      https://github.com/WebKit/WebKit/commit/e35499e50822b865aca658b219aa9bd5a71ae880
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-02-07 (Tue, 07 Feb 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp

  Log Message:
  -----------
  Merge r211357 - [Threaded Compositor] Crash on WebCore::GLContext::version()
https://bugs.webkit.org/show_bug.cgi?id=167559

Reviewed by Michael Catanzaro.

Source/WebCore:

Fixes crashes in several media tests.

* platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:
(WebCore::TextureMapperPlatformLayerProxy::invalidate): Clear m_compositorThreadUpdateTimer and call the update function.

Source/WebKit2:

This is happening because TextureMapperPlatformLayerProxy::compositorThreadUpdateTimerFired() is fired after the
threaded compositor is deleted. CoordinatedGraphicsScene::purgeGLResources() should invalidate the proxies
before clearing the map.

* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::purgeGLResources):


  Commit: 83032f4e7ed5543571fe45db76124a4964b0226c
      https://github.com/WebKit/WebKit/commit/83032f4e7ed5543571fe45db76124a4964b0226c
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-02-07 (Tue, 07 Feb 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp

  Log Message:
  -----------
  Merge r211358 - [Threaded Compositor] Crash in GraphicsContext3D::deleteTexture when destroying TextureMapperPlatformLayerProxy
https://bugs.webkit.org/show_bug.cgi?id=167575

Reviewed by Žan Doberšek.

We should clear all the buffers on invalidate to ensure we don't have textures alive after CoordinatedGraphicsScene::purgeGLResources().

Fix crash in media/video-poster-background.html.

* platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:
(WebCore::TextureMapperPlatformLayerProxy::invalidate): Clear current, pending and all used buffers.


  Commit: 2a79a3ee979a2b887f10c086983d7c16bf048a41
      https://github.com/WebKit/WebKit/commit/2a79a3ee979a2b887f10c086983d7c16bf048a41
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-02-07 (Tue, 07 Feb 2017)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/Shared/CoordinatedGraphics/SimpleViewportController.cpp
    M Source/WebKit2/Shared/CoordinatedGraphics/SimpleViewportController.h
    M Source/WebKit2/WebProcess/WebPage/AcceleratedDrawingArea.cpp
    M Source/WebKit2/WebProcess/WebPage/AcceleratedDrawingArea.h
    M Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp
    M Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h
    M Source/WebKit2/WebProcess/WebPage/DrawingArea.h
    M Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h
    M Source/WebKit2/WebProcess/WebPage/WebPage.cpp

  Log Message:
  -----------
  Merge r211350 - [Coordinated Graphics] WebPage shouldn't use the layerTreeHost directly
https://bugs.webkit.org/show_bug.cgi?id=167494

Reviewed by Michael Catanzaro.

In Coordinated Graphics we have a couple of methods that the WebPage uses directly from the layer tree host,
instead of using the drawing area interface. This patch adds DrawingArea::didChangeViewportAttributes and
DrawingArea::deviceOrPageScaleFactorChanged and renames LayerTreeHost::didChangeViewportProperties as
LayerTreeHost::didChangeViewportAttributes for consistency.

* Shared/CoordinatedGraphics/SimpleViewportController.cpp:
(WebKit::SimpleViewportController::didChangeViewportAttributes): Receive an rvalue reference to avoid copies.
* Shared/CoordinatedGraphics/SimpleViewportController.h:
* WebProcess/WebPage/AcceleratedDrawingArea.cpp:
(WebKit::AcceleratedDrawingArea::didChangeViewportAttributes): Forward it to the layer tree host if any.
(WebKit::AcceleratedDrawingArea::deviceOrPageScaleFactorChanged): Ditto.
* WebProcess/WebPage/AcceleratedDrawingArea.h:
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
(WebKit::ThreadedCoordinatedLayerTreeHost::didChangeViewportAttributes): Renamed and updated to pass an rvalue reference.
(WebKit::ThreadedCoordinatedLayerTreeHost::didChangeViewportProperties): Deleted.
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:
* WebProcess/WebPage/DrawingArea.h:
* WebProcess/WebPage/LayerTreeHost.h:
(WebKit::LayerTreeHost::didChangeViewportAttributes): Renamed and updated to pass an rvalue reference.
(WebKit::LayerTreeHost::didChangeViewportProperties): Deleted.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::sendViewportAttributesChanged): Use the drawing area.
(WebKit::WebPage::scalePage): Ditto
(WebKit::WebPage::setDeviceScaleFactor): Ditto.
(WebKit::WebPage::viewportPropertiesDidChange): Ditto.


  Commit: 64ab1835940ba332121bbe6eed08370742107d63
      https://github.com/WebKit/WebKit/commit/64ab1835940ba332121bbe6eed08370742107d63
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-02-07 (Tue, 07 Feb 2017)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/WebProcess/WebPage/AcceleratedDrawingArea.cpp
    M Source/WebKit2/WebProcess/WebPage/AcceleratedDrawingArea.h
    M Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp
    M Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h
    M Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp
    M Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h

  Log Message:
  -----------
  Merge r211365 - [GTK] Do not release OpenGL resource immediately when leaving accelerated compositing mode
https://bugs.webkit.org/show_bug.cgi?id=167544

Reviewed by Michael Catanzaro.

Sometimes the conditions to be in AC mode or not change quickly, and then we leave AC mode just enter it again
after a very short period of time. In those cases we are dropping all the GL resources and the compositor
thread, and creating it again. We could keep the layer tree host alive for a while when exiting AC mode, and
reuse it if we enter AC mode before the previous one has been discarded. While the previous layer tree host is
alive we still need to keep it up to date, for example if the web view is resized or contents size change, and
synchronize with the threaded compositor when it becomes the layer tree host again.

* WebProcess/WebPage/AcceleratedDrawingArea.cpp:
(WebKit::AcceleratedDrawingArea::~AcceleratedDrawingArea): Discard the previous layer tree host.
(WebKit::AcceleratedDrawingArea::AcceleratedDrawingArea): Initialize the timer to discard the previous layer
tree host.
(WebKit::AcceleratedDrawingArea::pageBackgroundTransparencyChanged): Notify the previous layer tree host if needed.
(WebKit::AcceleratedDrawingArea::mainFrameContentSizeChanged): Ditto.
(WebKit::AcceleratedDrawingArea::updateBackingStoreState): Ditto.
(WebKit::AcceleratedDrawingArea::enterAcceleratedCompositingMode): Reuse the previous layer tree host if possible.
(WebKit::AcceleratedDrawingArea::exitAcceleratedCompositingModeNow): Exit AC mode and save the layer tree host
starting a timer of 5 seconds to discard it if not reused.
(WebKit::AcceleratedDrawingArea::discardPreviousLayerTreeHost): Invalidate and destroy the previous layer tree host.
(WebKit::AcceleratedDrawingArea::didChangeViewportAttributes): Notify the previous layer tree host if needed.
(WebKit::AcceleratedDrawingArea::deviceOrPageScaleFactorChanged): Ditto.
* WebProcess/WebPage/AcceleratedDrawingArea.h:
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
(WebKit::ThreadedCoordinatedLayerTreeHost::scrollNonCompositedContents): If it's discardable add the action to
be synchronized instead.
(WebKit::ThreadedCoordinatedLayerTreeHost::contentsSizeChanged): Ditto.
(WebKit::ThreadedCoordinatedLayerTreeHost::deviceOrPageScaleFactorChanged): Ditto.
(WebKit::ThreadedCoordinatedLayerTreeHost::pageBackgroundTransparencyChanged): Ditto.
(WebKit::ThreadedCoordinatedLayerTreeHost::sizeDidChange): Ditto.
(WebKit::ThreadedCoordinatedLayerTreeHost::didChangeViewportAttributes): Ditto.
(WebKit::ThreadedCoordinatedLayerTreeHost::setIsDiscardable): When the layer tree host becomes discardable,
reset the sync actions and return. When it becomes the real layer tree host again, apply all pending actions to
synchronize with the threaded compositor.
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:
* WebProcess/WebPage/DrawingAreaImpl.cpp:
(WebKit::DrawingAreaImpl::scroll): Notify the previous layer tree host if needed.
(WebKit::DrawingAreaImpl::mainFrameContentSizeChanged): Ditto.
(WebKit::DrawingAreaImpl::exitAcceleratedCompositingMode): Use AcceleratedDrawingArea::exitAcceleratedCompositingModeNow().
* WebProcess/WebPage/LayerTreeHost.h:
(WebKit::LayerTreeHost::setIsDiscardable): Added.


  Commit: ff8804f613b47c955a3d735c40cd2295e8486742
      https://github.com/WebKit/WebKit/commit/ff8804f613b47c955a3d735c40cd2295e8486742
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-02-07 (Tue, 07 Feb 2017)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/gtk/WebPreferencesGtk.cpp

  Log Message:
  -----------
  Merge r211277 - [GTK] Stop forcing accelerated compositing by default
https://bugs.webkit.org/show_bug.cgi?id=167492

Reviewed by Žan Doberšek.

We are now ready to bring back the on demand accelerated compositing mode with the threaded
compositor. Unfortunately, having AC always enabled brought a lot of issues for many people. Not only it
requires a lot more memory but also caused rendering issues (or even nothing rendered at all) with some graphics
drivers. People started to use WEBKIT_DISABLE_COMPOSITING_MODE as a workaround, but that was not expected to be
used by users. So, entering/leaving AC when required by web contents is not actually the solution but a huge
improvement for many people. If we are eventually ready to force AC mode again, we'll change this again. Note
that we still have WEBKIT_DISABLE_COMPOSITING_MODE, but now also WEBKIT_FORCE_COMPOSITING_MODE for testing and debugging.

* UIProcess/gtk/WebPreferencesGtk.cpp:
(WebKit::WebPreferences::platformInitializeStore):


  Commit: 9a7a7eb23940b7ffb5c5a52647a161fbf8f95478
      https://github.com/WebKit/WebKit/commit/9a7a7eb23940b7ffb5c5a52647a161fbf8f95478
  Author: Žan Doberšek <zdobersek at igalia.com>
  Date:   2017-02-07 (Tue, 07 Feb 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp

  Log Message:
  -----------
  Merge r211206 - ImageBufferCairo: cairo_image_surface should use bmalloc-allocated memory
https://bugs.webkit.org/show_bug.cgi?id=165751

Reviewed by Carlos Garcia Campos.

Allocate the underlying memory for cairo_image_surface objects through FastMalloc.
This way we can steer such large allocations away from the default libc allocator.

Objects of this class can create Cairo surfaces that need as much as 4MB of memory
for the underlying pixel buffer. Allocating such objects through the default
libc allocator can lead to increased memory usage because of non-optimal allocation
strategy in libc. In contrast, bmalloc performs large allocations by directly using
mmap() to reserve the necessary memory.

The improvements can be significant. On nytimes.com, with the threaded version of
the CoordinatedGraphics system, the memory consumption can drop by roughly 20%.

* platform/graphics/cairo/ImageBufferCairo.cpp:
(WebCore::ImageBuffer::ImageBuffer): Zero-allocate the necessary memory via FastMalloc.
Tie that memory lifetime to the lifetime of the surface by using
cairo_surface_set_user_data() with the specific user data key.


  Commit: acd66f52e7d97a4c7d437824d8e11377ef9c2005
      https://github.com/WebKit/WebKit/commit/acd66f52e7d97a4c7d437824d8e11377ef9c2005
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-02-07 (Tue, 07 Feb 2017)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/WebProcess/WebPage/AcceleratedDrawingArea.cpp

  Log Message:
  -----------
  Merge r211366 - Unreviewed. Fix GTK+ debug build after r211365.

Remove invalid assert.

* WebProcess/WebPage/AcceleratedDrawingArea.cpp:
(WebKit::AcceleratedDrawingArea::exitAcceleratedCompositingModeNow):


  Commit: bebe00e74130943403cb157e279da2363f07d5ff
      https://github.com/WebKit/WebKit/commit/bebe00e74130943403cb157e279da2363f07d5ff
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-02-07 (Tue, 07 Feb 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/scrolling/scroll-animator-overlay-scrollbars-clicked-expected.txt
    A LayoutTests/fast/scrolling/scroll-animator-overlay-scrollbars-clicked.html
    M LayoutTests/platform/ios-simulator/TestExpectations
    M LayoutTests/platform/mac-wk1/TestExpectations
    M Source/WebCore/ChangeLog
    M Source/WebCore/page/EventHandler.cpp
    M Source/WebCore/page/EventHandler.h

  Log Message:
  -----------
  Merge r211775 - Overlay scrolling with iframe-s broken
https://bugs.webkit.org/show_bug.cgi?id=165056

Reviewed by Antonio Gomes.

Source/WebCore:

Mouse press events for overlay scrollbars are ignored if there's a subframe under the scrollbar. This doesn't
happen with normal scrollbars, because the subframe is not really under the scrollbar, so events are always
correctly passed to the scrollbar. With overlay scrollbars, the hit test detects the scrollbar, but events are
always passed first to the subframe. Scrollbars are correctly updated on hover though, because
handleMouseMoveEvent checks the presence of scrollbars before checking for subframes and move events are
actually passed to both, the scrollbar and the subframe. Overlay scrollbars should always take precedence over
subframes to handle mouse press events, so we should check first if mouse is over a scrollbar and never pass the
event to a subframe in that case. Another problem is that the cursor is not updated either when the overlay
scrollbar is hovered and there's a subframe. This is because in handleMouseMoveEvent we pass the event to both
the scrollbar and subframe but we never update the cursor when a suframe was found. So, here again we need to make
an exception for scrollbars and upate the cursor when mouse is over the scrollbar even if a subframe was found.

Test: fast/scrolling/scroll-animator-overlay-scrollbars-clicked.html

* page/EventHandler.cpp:
(WebCore::EventHandler::handleMousePressEvent): Move the scrollbar check before the subframe check.
(WebCore::EventHandler::handleMouseMoveEvent): Update the cursor when hovering a scrollbar even if a subframe
was found.
(WebCore::EventHandler::updateLastScrollbarUnderMouse): Use an enum instead of a boolean for setLast parameter.
* page/EventHandler.h:

LayoutTests:

Add a new test to check that clicking on an overlay scrollbar works even it's over a subframe.

* fast/scrolling/scroll-animator-overlay-scrollbars-clicked-expected.txt: Added.
* fast/scrolling/scroll-animator-overlay-scrollbars-clicked.html: Added.
* platform/ios-simulator/TestExpectations:
* platform/mac-wk1/TestExpectations:


  Commit: 82dc333e5d3ea43c9cc456e7d8e5f9a4fac850d1
      https://github.com/WebKit/WebKit/commit/82dc333e5d3ea43c9cc456e7d8e5f9a4fac850d1
  Author: Carlos Garcia Campos <carlosgc at webkit.org>
  Date:   2017-02-08 (Wed, 08 Feb 2017)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/NetworkProcess/CustomProtocols/CustomProtocolManager.h
    M Source/WebKit2/NetworkProcess/CustomProtocols/soup/CustomProtocolManagerSoup.cpp

  Log Message:
  -----------
  [SOUP] Network process crash in WebKit::CustomProtocolManagerImpl::didFailWithError
https://bugs.webkit.org/show_bug.cgi?id=165082

CustomProtocolManager uses a Workqueue to receive the IPC messages since r149194. Then we added the Soup
implementation adopting that approach, but without making our implementation thread safe. The crash happens
because the CustomProtocolManager implementation is used by two threads at the same time, the main thread
because of a ping load (probably caused by an image load in the unload handler, I haven't been able to reproduce
the crash) and the work queue thread. I'm not sure if the reasons to make CustomProtocolManager use a WorkQueue
are still valid for Mac, but I don't think they are for Soup. CustomProtocolManager is now only used in the
network process and sync loads don't use any nested run loop, they are just an IPC sync message. So this patch
makes CustomProtocolManager a normal message receiver again for Soup to ensure messages are handled in the main
thread as expected by the Soup implementation.

* NetworkProcess/CustomProtocols/CustomProtocolManager.h:
(WebKit::CustomProtocolManager::childProcess): Remove WorkQueue initialization.
* NetworkProcess/CustomProtocols/soup/CustomProtocolManagerSoup.cpp:
(WebKit::CustomProtocolManager::CustomProtocolManager): Register the message receiver.
(WebKit::CustomProtocolManager::initializeConnection): Deleted.


  Commit: 888f2a5feb0f97dc222f24bdd214a411cc8b3018
      https://github.com/WebKit/WebKit/commit/888f2a5feb0f97dc222f24bdd214a411cc8b3018
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-02-08 (Wed, 08 Feb 2017)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/WebProcess/soup/WebKitSoupRequestInputStream.cpp

  Log Message:
  -----------
  Merge r211734 - [Soup] Deadlock in NetworkProcess
https://bugs.webkit.org/show_bug.cgi?id=167876

Reviewed by Michael Catanzaro.

WebKitSoupRequestInputStream uses a read lock. What is happening is that webkitSoupRequestInputStreamAddData
takes the lock, and it calls webkitSoupRequestInputStreamPendingReadAsyncComplete with the lock help. That
causes webkitSoupRequestInputStreamReadAsync to be called again to read the next chunk, but in the same run loop
operation. We don't really need the read lock because both webkitSoupRequestInputStreamAddData and
webkitSoupRequestInputStreamReadAsync shoudl always be called from the main thread.

* WebProcess/soup/WebKitSoupRequestInputStream.cpp:
(webkitSoupRequestInputStreamReadAsync): Remove the read lock and assert if called from a secondary thread.
(webkitSoupRequestInputStreamAddData): Ditto.


  Commit: 80cde392f34962958b063a77fd65a5ab8b5ca969
      https://github.com/WebKit/WebKit/commit/80cde392f34962958b063a77fd65a5ab8b5ca969
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-02-08 (Wed, 08 Feb 2017)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/WebProcess/soup/WebKitSoupRequestInputStream.cpp

  Log Message:
  -----------
  Merge r211773 - [Soup] Long resources loaded by custom protocols sometimes never finish loading
https://bugs.webkit.org/show_bug.cgi?id=167890

Reviewed by Michael Catanzaro.

It's another bug that has appeared in WebKitSoupRequestInputStream after moving the custom protocols handling to
the main thread. The problem is that webkitSoupRequestInputStreamPendingReadAsyncComplete invalidates
pendingAsyncRead after calling webkitSoupRequestInputStreamReadAsyncResultComplete, but in some cases
webkitSoupRequestInputStreamReadAsyncResultComplete completes the task in the same run loop iteration. In that
case webkitSoupRequestInputStreamReadAsync is called again creating a new AsyncReadData that is destroyed right
after webkitSoupRequestInputStreamReadAsyncResultComplete returns.

* WebProcess/soup/WebKitSoupRequestInputStream.cpp:
(AsyncReadData::AsyncReadData): Use an rvalue reference for the task.
(webkitSoupRequestInputStreamPendingReadAsyncComplete): Use WTFMove to ensure pendingAsyncRead is cleared before
webkitSoupRequestInputStreamReadAsyncResultComplete is called, and continue processing pending requests if there
are new ones after webkitSoupRequestInputStreamReadAsyncResultComplete.
(webkitSoupRequestInputStreamReadAsync): Use WTFMove to transfer the task to AsyncReadData.
(webkitSoupRequestInputStreamDidFailWithError): Use WTFMove to ensure pendingAsyncRead is cleared.


  Commit: fc611c28909f774c1347cf868d5029607805d14b
      https://github.com/WebKit/WebKit/commit/fc611c28909f774c1347cf868d5029607805d14b
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-02-08 (Wed, 08 Feb 2017)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/WebProcess/soup/WebKitSoupRequestInputStream.cpp

  Log Message:
  -----------
  Merge r211816 - [Soup] WebKitSoupRequestInputStream can still leave requests unfinished after r211773
https://bugs.webkit.org/show_bug.cgi?id=167929

Reviewed by Michael Catanzaro.

The while loop to process the pending data requests was not a good idea, because having a new pending request
doesn't mean we have more data available, but that more data was requested.

* WebProcess/soup/WebKitSoupRequestInputStream.cpp:
(webkitSoupRequestInputStreamPendingReadAsyncComplete): Process only one request if needed.


  Commit: 61785dc647c6821a24c0f2e839456215244a1b4f
      https://github.com/WebKit/WebKit/commit/61785dc647c6821a24c0f2e839456215244a1b4f
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-02-08 (Wed, 08 Feb 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp

  Log Message:
  -----------
  Merge r211815 - [GStreamer] Deadlock when media player is destroyed
https://bugs.webkit.org/show_bug.cgi?id=167861

Reviewed by Michael Catanzaro.

The problem is that we are calling notifyOne() for the draw mutex without taking the lock.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::repaint):


  Commit: f4c8089276377874fe02817c52718beacf7066f0
      https://github.com/WebKit/WebKit/commit/f4c8089276377874fe02817c52718beacf7066f0
  Author: Enrique Ocaña González <eocanha at igalia.com>
  Date:   2017-02-08 (Wed, 08 Feb 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.cpp

  Log Message:
  -----------
  Merge r211225 - [GStreamer] ASSERTION FAILED: !g_object_is_floating(ptr) in adoptGRef(GstContext* ptr)
https://bugs.webkit.org/show_bug.cgi?id=167458

Reviewed by Xabier Rodriguez-Calvar.

GstContext is a mini_object, not a GObject. Therefore it shouldn't (and can't) be checked for floatingness.

* platform/graphics/gstreamer/GRefPtrGStreamer.cpp:
(WTF::adoptGRef): Removed incorrect assertion.


  Commit: e35f5c5bbeabb10c714d7e57e0ec0212bcf43ec1
      https://github.com/WebKit/WebKit/commit/e35f5c5bbeabb10c714d7e57e0ec0212bcf43ec1
  Author: Enrique Ocaña González <eocanha at igalia.com>
  Date:   2017-02-08 (Wed, 08 Feb 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h

  Log Message:
  -----------
  Merge r211627 - [GStreamer] Store preloaded media in webkit's cache
https://bugs.webkit.org/show_bug.cgi?id=119477

Reviewed by Xabier Rodriguez-Calvar.

Files cached on disk by MediaPlayerPrivateGStreamer are deleted only when the player is closed. If the
WebProcess crashed, they're just left there in the cache directory. This patch changes the location
of those temporary files to a proper temporary directory (/var/tmp, as those files aren't actually
reusable, so they don't belong to a cache directory, and /tmp is a bad place because it's RAM-based on
some distros), unlinks (deletes) them right after creation and also deletes any other stalled temporary
file on the old legacy cache directory.

There's no API in GstPlaybin to control the temporary file location, so we do it manually by locating
the GstDownloadBuffer element in the pipeline as soon as it's created, reconfiguring it with the right
temporary file path and deleting the file as soon as it's created.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::~MediaPlayerPrivateGStreamer): Stop listening to element-added.
(WebCore::MediaPlayerPrivateGStreamer::uriDecodeBinElementAddedCallback): Look for GstDownloadBuffer.
(WebCore::MediaPlayerPrivateGStreamer::downloadBufferFileCreatedCallback): Remove the file after creation.
(WebCore::MediaPlayerPrivateGStreamer::purgeOldDownloadFiles): Delete legacy files.
(WebCore::MediaPlayerPrivateGStreamer::sourceChanged): Listen to element-added signals on GstUriDecodeBin.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h: New reference to GstDownloadBuffer.


  Commit: 439e5bfefac36649084d8e1591961f2b76fd2978
      https://github.com/WebKit/WebKit/commit/439e5bfefac36649084d8e1591961f2b76fd2978
  Author: Gustavo Noronha Silva <gns at gnome.org>
  Date:   2017-02-08 (Wed, 08 Feb 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/text/hyphen/HyphenationLibHyphen.cpp

  Log Message:
  -----------
  Merge r211040 - [GTK] asserting on unknown locale for hyphenation is wrong
https://bugs.webkit.org/show_bug.cgi?id=167312

Reviewed by Carlos Garcia Campos.

The fact that we hit the assert on a test called 'hyphenation-unknown-locale' is already
a strong indication we should not have it. In addition to that, Carlos Lopez pointed out
a similar assert was removed from the Mac codepaths when the test was introduced.

* platform/text/hyphen/HyphenationLibHyphen.cpp:
(WebCore::lastHyphenLocation): early return when a locale that is not available is provided
for hyphenation, instead of asserting.


  Commit: e2df70e4cb98f2fce8993117ceaafd7a7f372ca7
      https://github.com/WebKit/WebKit/commit/e2df70e4cb98f2fce8993117ceaafd7a7f372ca7
  Author: Daniel Bates <dbates at webkit.org>
  Date:   2017-02-09 (Thu, 09 Feb 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/events/popup-blocked-from-sandboxed-frame-via-window-open-named-sibling-frame-expected.txt
    A LayoutTests/fast/events/popup-blocked-from-sandboxed-frame-via-window-open-named-sibling-frame.html
    A LayoutTests/fast/events/popup-blocked-from-sandboxed-frame-via-window-open-named-sibling-frame2-expected.txt
    A LayoutTests/fast/events/popup-blocked-from-sandboxed-frame-via-window-open-named-sibling-frame2.html
    A LayoutTests/fast/events/popup-blocked-from-unique-frame-via-window-open-named-sibling-frame-expected.txt
    A LayoutTests/fast/events/popup-blocked-from-unique-frame-via-window-open-named-sibling-frame.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/page/DOMWindow.cpp

  Log Message:
  -----------
  Merge r210112 - Bypass pop-up blocker from cross-origin or sandboxed frame
https://bugs.webkit.org/show_bug.cgi?id=166290
<rdar://problem/29742039>

Reviewed by Darin Adler.

Source/WebCore:

Tests: fast/events/popup-blocked-from-sandboxed-frame-via-window-open-named-sibling-frame.html
       fast/events/popup-blocked-from-sandboxed-frame-via-window-open-named-sibling-frame2.html
       fast/events/popup-blocked-from-unique-frame-via-window-open-named-sibling-frame.html

* page/DOMWindow.cpp:
(WebCore::DOMWindow::open): Use FrameLoader::findFrameForNavigation() to find the
target frame to navigate with respect to the active document just as we do in WebCore::createWindow().

LayoutTests:

* fast/events/popup-blocked-from-sandboxed-frame-via-window-open-named-sibling-frame-expected.txt: Added.
* fast/events/popup-blocked-from-sandboxed-frame-via-window-open-named-sibling-frame.html: Added.
* fast/events/popup-blocked-from-sandboxed-frame-via-window-open-named-sibling-frame2-expected.txt: Added.
* fast/events/popup-blocked-from-sandboxed-frame-via-window-open-named-sibling-frame2.html: Added.
* fast/events/popup-blocked-from-unique-frame-via-window-open-named-sibling-frame-expected.txt: Added.
* fast/events/popup-blocked-from-unique-frame-via-window-open-named-sibling-frame.html: Added.


  Commit: 36700e9ac6934fac1460eba7a734858aed093183
      https://github.com/WebKit/WebKit/commit/36700e9ac6934fac1460eba7a734858aed093183
  Author: Brent Fulgham <bfulgham at webkit.org>
  Date:   2017-02-09 (Thu, 09 Feb 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/media/track/audio-track-add-remove-expected.txt
    A LayoutTests/media/track/audio-track-add-remove.html
    A LayoutTests/media/track/video-track-add-remove-expected.txt
    A LayoutTests/media/track/video-track-add-remove.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/html/HTMLMediaElement.cpp

  Log Message:
  -----------
  Merge r208825 - Clear track client when removing a track
https://bugs.webkit.org/show_bug.cgi?id=164842
<rdar://problem/29213621>

Reviewed by Eric Carlson.

Source/WebCore:

Call 'clearClient' when removing a track from an HTMLMediaElement.

Test: media/track/audio-track-add-remove.html
      media/track/video-track-add-remove.html

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::removeAudioTrack): Call 'clearClient'
(WebCore::HTMLMediaElement::removeVideoTrack): Ditto.

LayoutTests:

* media/track/audio-track-add-remove-expected.txt: Added.
* media/track/audio-track-add-remove.html: Added.
* media/track/video-track-add-remove-expected.txt: Added.
* media/track/video-track-add-remove.html: Added.


  Commit: e4d9020c45f5a56c923c5512785149d29c42043e
      https://github.com/WebKit/WebKit/commit/e4d9020c45f5a56c923c5512785149d29c42043e
  Author: Brent Fulgham <bfulgham at webkit.org>
  Date:   2017-02-09 (Thu, 09 Feb 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/canvas/neutered-imagedata-expected.txt
    A LayoutTests/fast/canvas/neutered-imagedata.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/bindings/js/SerializedScriptValue.cpp

  Log Message:
  -----------
  Merge r208628 - Neutered ArrayBuffers are not properly serialized
https://bugs.webkit.org/show_bug.cgi?id=164647
<rdar://problem/29213490>

Reviewed by David Kilzer.

Source/WebCore:

Correct binding logic to handle ImageBuffers being deserialized from neutered ArrayBuffers.

Test: fast/canvas/neutered-imagedata.html

* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneDeserializer::readTerminal):

LayoutTests:

* fast/canvas/neutered-imagedata-expected.txt: Added.
* fast/canvas/neutered-imagedata.html: Added.


  Commit: 3031df0f5e4387aa9c8eb61558c181712ed3263d
      https://github.com/WebKit/WebKit/commit/3031df0f5e4387aa9c8eb61558c181712ed3263d
  Author: Brent Fulgham <bfulgham at webkit.org>
  Date:   2017-02-09 (Thu, 09 Feb 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/forms/search-cancel-button-change-input-expected.txt
    A LayoutTests/fast/forms/search-cancel-button-change-input.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/WebCore.order
    M Source/WebCore/html/HTMLInputElement.cpp
    M Source/WebCore/html/InputType.h
    M Source/WebCore/html/SearchInputType.h

  Log Message:
  -----------
  Merge r208745 - Correct handling of changing input type
https://bugs.webkit.org/show_bug.cgi?id=164759
<rdar://problem/29211174>

Reviewed by Darin Adler.

Source/WebCore:

Test: fast/forms/search-cancel-button-change-input.html

It is possible for JavaScript to change the type property of an input field. WebKit
needs to gracefully handle this case.

Add a type traits specialization so we can properly downcast InputType elements.
Use this to only call search functions on actual search input types.

* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::onSearch): Only perform search functions if the
input type is actually a search field.
* html/InputType.h: Add type traits specialization for 'downcast' template.
* html/SearchInputType.h: Ditto.

LayoutTests:

* fast/forms/search-cancel-button-change-input-expected.txt: Added.
* fast/forms/search-cancel-button-change-input.html: Added.


  Commit: 194f6572d36b9321b294e2295553e6e3b5929d72
      https://github.com/WebKit/WebKit/commit/194f6572d36b9321b294e2295553e6e3b5929d72
  Author: Mark Lam <mark.lam at apple.com>
  Date:   2017-02-09 (Thu, 09 Feb 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/js/dom/proxy-is-not-allowed-in-global-prototype-chain-expected.txt
    A LayoutTests/js/dom/proxy-is-not-allowed-in-global-prototype-chain.html
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/runtime/Executable.cpp

  Log Message:
  -----------
  Merge r209149 - Proxy is not allowed in the global prototype chain.
https://bugs.webkit.org/show_bug.cgi?id=165205

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

* runtime/ProgramExecutable.cpp:
(JSC::ProgramExecutable::initializeGlobalProperties):
- We'll now throw a TypeError if we detect a Proxy in the global prototype chain.

LayoutTests:

* js/dom/proxy-is-not-allowed-in-global-prototype-chain-expected.txt: Added.
* js/dom/proxy-is-not-allowed-in-global-prototype-chain.html: Added.


  Commit: 1d213af4e843b39a7ea319d823f1009b2eab5c64
      https://github.com/WebKit/WebKit/commit/1d213af4e843b39a7ea319d823f1009b2eab5c64
  Author: Mark Lam <mark.lam at apple.com>
  Date:   2017-02-09 (Thu, 09 Feb 2017)

  Changed paths:
    M JSTests/ChangeLog
    M JSTests/stress/get-from-scope-dynamic-onto-proxy.js
    R JSTests/stress/proxy-dont-infinite-loop.js
    R JSTests/stress/proxy-json-path.js
    M LayoutTests/ChangeLog
    M LayoutTests/TestExpectations
    M LayoutTests/http/tests/security/window-named-valueOf-expected.txt
    M LayoutTests/js/dom/proxy-is-not-allowed-in-global-prototype-chain-expected.txt
    M LayoutTests/js/dom/proxy-is-not-allowed-in-global-prototype-chain.html
    A LayoutTests/js/prototype-assignment-expected.txt
    A LayoutTests/js/prototype-assignment.html
    A LayoutTests/js/script-tests/prototype-assignment.js
    M LayoutTests/js/setPrototypeOf-expected.txt
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/runtime/JSObject.cpp
    M Source/JavaScriptCore/runtime/JSTypeInfo.h
    M Source/JavaScriptCore/runtime/ObjectConstructor.cpp
    M Source/JavaScriptCore/runtime/ObjectPrototype.h
    M Source/JavaScriptCore/runtime/Structure.h
    M Source/WebCore/ChangeLog
    M Source/WebCore/bindings/js/JSDOMWindowProperties.h
    M Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
    M Source/WebCore/bindings/scripts/IDLAttributes.txt
    M Source/WebCore/dom/EventTarget.idl
    M Source/WebCore/page/DOMWindow.idl

  Log Message:
  -----------
  Merge r209424 - Introduce the concept of Immutable Prototype Exotic Objects to comply with the spec.
https://bugs.webkit.org/show_bug.cgi?id=165227
<rdar://problem/29442665>

Reviewed by Saam Barati.

JSTests:

* stress/get-from-scope-dynamic-onto-proxy.js:
- Updated error message.

* stress/proxy-dont-infinite-loop.js: Removed.
* stress/proxy-json-path.js: Removed.
* stress/rest-parameter-allocation-elimination-watchpoints-6.js: Removed.
- Removed these tests because the issue they are testing relies on being able to
  set Object.prototype.__proto__ to something else (which is now not possible).

Source/JavaScriptCore:

* runtime/JSObject.cpp:
(JSC::JSObject::setPrototypeWithCycleCheck):
- This is where we check for immutable prototype exotic objects and refuse to set
  the prototype if needed.
  See https://tc39.github.io/ecma262/#sec-immutable-prototype-exotic-objects.

* runtime/JSTypeInfo.h:
(JSC::TypeInfo::isImmutablePrototypeExoticObject):
* runtime/Structure.h:
- Add flag for declaring immutable prototype exotic objects.

* runtime/ObjectPrototype.h:
- Declare that Object.prototype is an immutable prototype exotic object.
  See https://tc39.github.io/ecma262/#sec-properties-of-the-object-prototype-object.

* runtime/ObjectConstructor.cpp:
(JSC::objectConstructorSetPrototypeOf):
- Use better error messages.

Source/WebCore:

Make all objects in window.__proto__'s prototype chain immutable prototype exotic
objects.  This gives us roughly equivalent behavior to other browsers.

Firefox's behavior differ slightly in that Firefox will fail any attempted
assignment their __proto__, while the immutable prototype exotic objects will
only fail if the assignment is of a different value.  See
https://tc39.github.io/ecma262/#sec-immutable-prototype-exotic-objects.

Chrome differs in that assignment to window.__proto__ is also handled like an
immutable prototype exotic object.  Instead we adhere to the current HTML spec
that says that the assignment should fail unconditionally.  See
https://html.spec.whatwg.org/#the-windowproxy-exotic-object and
https://html.spec.whatwg.org/#windowproxy-setprototypeof.

If the HTML spec is changed to make the WindowProxy and Location objects into
immutable prototype exotic objects later, we can update to match the spec then.

Test: js/prototype-assignment.html

* bindings/js/JSDOMWindowProperties.h:
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateHeader):
(GeneratePrototypeDeclaration):
* bindings/scripts/IDLAttributes.txt:
* dom/EventTarget.idl:
* page/DOMWindow.idl:

LayoutTests:

The new prototype-assignment.js test is currently only enabled for LLInt only
run in the JSC tests until webkit.org/b/165401 is fixed.

* TestExpectations:
- Skip js/prototype-assignment.html for now until webkit.org/b/165401 is fixed.

* http/tests/security/window-named-valueOf-expected.txt:
* js/dom/proxy-is-not-allowed-in-global-prototype-chain-expected.txt:
* js/dom/proxy-is-not-allowed-in-global-prototype-chain.html:
- Updated error messages.

* js/prototype-assignment-expected.txt: Added.
* js/prototype-assignment.html: Added.
* js/script-tests/prototype-assignment.js: Added.
(else):
(reportError):
(shouldEqual):
(shouldThrow):
(stringify):
(makeTestID):
(doInternalSetPrototypeOf):
(ordinarySetPrototypeOf):
(setImmutablePrototype):
(windowProxySetPrototypeOf):
(initSetterExpectation):
(throwIfNoExceptionPending):
(objectSetPrototypeOf):
(setUnderscoreProto):
(reflectSetPrototypeOf):
(newObjectProto.toString):
(this.testObject.targets.push.value):
(this.testProxy.targets.push.setPrototypeOf):
(Symbol):
(test):
(runTests):
* js/setPrototypeOf-expected.txt:


  Commit: cdea66022b7efc4b57fbdd5688b0319e35d08b26
      https://github.com/WebKit/WebKit/commit/cdea66022b7efc4b57fbdd5688b0319e35d08b26
  Author: Brent Fulgham <bfulgham at webkit.org>
  Date:   2017-02-09 (Thu, 09 Feb 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/html/form-mutate-expected.txt
    A LayoutTests/fast/html/form-mutate.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/html/HTMLFormElement.cpp
    M Source/WebCore/html/HTMLFormElement.h

  Log Message:
  -----------
  Merge r209990 - Side effects while restting form elements
https://bugs.webkit.org/show_bug.cgi?id=165959
<rdar://problem/29705967>

Reviewed by Anders Carlsson.

Source/WebCore:

JavaScript logic can run while resetting FormElement objects. This can
lead to unintended side-effets and other unwanted behavior. We should
protect these elements during the reset.

Test: fast/html/form-mutate.html

* html/HTMLFormElement.cpp:
(WebCore::HTMLFormElement::HTMLFormElement): Switch to C++11 initialization.
(WebCore::HTMLFormElement::reset): Protect elements until the reset
operation is finished.
(WebCore::HTMLFormElement::resetAssociatedFormControlElements): Added to share
code with 'resumeFromDocument'.
(WebCore::HTMLFormElement::resumeFromDocument): Protect elements until the
reset operation is finished.

LayoutTests:

* fast/html/form-mutate-expected.txt: Added.
* fast/html/form-mutate.html: Added.


  Commit: d2babba88caae82265d3428d9796e4fb27aa8281
      https://github.com/WebKit/WebKit/commit/d2babba88caae82265d3428d9796e4fb27aa8281
  Author: Brent Fulgham <bfulgham at webkit.org>
  Date:   2017-02-09 (Thu, 09 Feb 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/bindings/js/ScriptController.cpp
    M Source/WebCore/bindings/js/ScriptController.h
    M Source/WebCore/loader/FrameLoader.cpp

  Log Message:
  -----------
  Merge r210288 - Correct DOMWindow handling during FrameLoader::clear
https://bugs.webkit.org/show_bug.cgi?id=166357
<rdar://problem/29741862>

Reviewed by Andy Estes.

Make sure that we always clean up the DOM window when clearing Window properties, even if the document will
remain in the page cache. Since 'clearWindowShell' is only used in FrameLoader, divide it's beahvior into
two steps:

1. Rename 'clearWindowShell' to 'clearWIndowShellsNotMatchingDOMWindow' to better describe its function.
Switch to a modern C++ loop. Do not switch to the new DOMWindow here, but detach and clear existing
DOMWindow connections.

2. Add a new method 'setDOMWindowForWindowShell'. Complete switch to the new DOMWindow.

This change allows us to disconnect the old DOMWindow, perform the 'setDocument(nullptr)' operation, and then
connect to the new Window without leaving the loader in an inconsistent state.

* loader/bindings/js/ScriptController.cpp:
(WebCore::clearWindowShellsNotMatchingDOMWindow): Renamed from 'clearWindowShell'
(WebCore::setDOMWindowForWindowShell): Added.
* loader/bindings/js/ScriptController.h:
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::clear): Revise to use the new two-step DOMWindow switch logic.


  Commit: 9d2d364bc791fed3105b53e894931b315584cdb8
      https://github.com/WebKit/WebKit/commit/9d2d364bc791fed3105b53e894931b315584cdb8
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2017-02-09 (Thu, 09 Feb 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/accessibility/accessibility-crash-with-dynamic-inline-content-expected.txt
    A LayoutTests/accessibility/accessibility-crash-with-dynamic-inline-content.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/accessibility/AXObjectCache.cpp
    M Source/WebCore/accessibility/AXObjectCache.h
    M Source/WebCore/page/FrameView.cpp
    M Source/WebCore/rendering/RenderBlock.cpp
    M Source/WebCore/rendering/RenderBlockLineLayout.cpp

  Log Message:
  -----------
  Merge r209926 - Defer certain accessibility callbacks until after layout is finished.
https://bugs.webkit.org/show_bug.cgi?id=165861
rdar://problem/29646301

Reviewed by Chris Fleizach.

Source/WebCore:

Currently with certain AXObjectCache callbacks, we can end up in a layout while the render tree is being mutated.
This patch ensures that such callbacks are deferred until after tree mutation/layout is finished.

Test: accessibility/accessibility-crash-with-dynamic-inline-content.html

* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::remove):
(WebCore::AXObjectCache::performDeferredIsIgnoredChange):
(WebCore::AXObjectCache::insertDeferredIsIgnoredChange):
* accessibility/AXObjectCache.h:
* page/FrameView.cpp:
(WebCore::FrameView::performPostLayoutTasks):
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::deleteLines):
* rendering/RenderBlockLineLayout.cpp:
(WebCore::RenderBlockFlow::createAndAppendRootInlineBox):

LayoutTests:

* accessibility/accessibility-crash-with-dynamic-inline-content-expected.txt: Added.
* accessibility/accessibility-crash-with-dynamic-inline-content.html: Added.


  Commit: 6d89336da15740a1f9a3456f7ef88d43fcd09293
      https://github.com/WebKit/WebKit/commit/6d89336da15740a1f9a3456f7ef88d43fcd09293
  Author: Alan Bujtas <zalan at apple.com>
  Date:   2017-02-09 (Thu, 09 Feb 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/regions/flow-fragment-as-anonymous-block-crash-expected.txt
    A LayoutTests/fast/regions/flow-fragment-as-anonymous-block-crash.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/RenderObject.h

  Log Message:
  -----------
  Merge r210120 - Do not destroy the RenderNamedFlowFragment as leftover anonymous block.
https://bugs.webkit.org/show_bug.cgi?id=166436
rdar://problem/29772233

Reviewed by Simon Fraser.

Source/WebCore:

When as the result of certain style change, the generated anonymous block is not needed anymore, we
move its descendants up to the parent and destroy the generated box. While RenderNamedFlowFragment is a generated
block, the cleanup code should just ignore it the same way we ignore boxes like multicolumn, mathml etc.

Test: fast/regions/flow-fragment-as-anonymous-block-crash.html

* rendering/RenderObject.h:
(WebCore::RenderObject::isAnonymousBlock):

LayoutTests:

* fast/regions/flow-fragment-as-anonymous-block-crash-expected.txt: Added.
* fast/regions/flow-fragment-as-anonymous-block-crash.html: Added.


  Commit: b2b2916e0438856f0f15ea79180a622ef3b93e78
      https://github.com/WebKit/WebKit/commit/b2b2916e0438856f0f15ea79180a622ef3b93e78
  Author: Chris Dumez <cdumez at apple.com>
  Date:   2017-02-09 (Thu, 09 Feb 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    M LayoutTests/editing/mac/input/unconfirmed-text-navigation-with-page-cache.html
    M LayoutTests/fast/harness/page-cache-crash-on-data-urls.html
    M LayoutTests/fast/harness/use-page-cache.html
    A LayoutTests/fast/history/page-cache-after-window-open-expected.txt
    A LayoutTests/fast/history/page-cache-after-window-open.html
    A LayoutTests/fast/history/page-cache-back-navigation-crash-expected.txt
    A LayoutTests/fast/history/page-cache-back-navigation-crash.html
    A LayoutTests/fast/history/page-cache-with-opener-expected.txt
    A LayoutTests/fast/history/page-cache-with-opener.html
    A LayoutTests/fast/history/resources/page-cache-window-with-iframe.html
    A LayoutTests/fast/history/resources/page-cache-window-with-opener.html
    M LayoutTests/fast/loader/stateobjects/no-popstate-when-back-to-stateless-entry-with-page-cache.html
    M LayoutTests/fast/loader/stateobjects/popstate-fires-with-page-cache.html
    M LayoutTests/tiled-drawing/tiled-drawing-scroll-position-page-cache-restoration.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/dom/Document.h
    M Source/WebCore/history/PageCache.cpp
    M Source/WebCore/page/DOMWindow.cpp
    M Source/WebCore/page/DiagnosticLoggingKeys.cpp
    M Source/WebCore/page/DiagnosticLoggingKeys.h
    M Source/WebCore/page/Page.cpp
    M Source/WebCore/page/Page.h
    M Source/WebCore/page/Settings.in
    M Source/WebKit/mac/ChangeLog
    M Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h
    M Source/WebKit/mac/WebView/WebPreferences.mm
    M Source/WebKit/mac/WebView/WebPreferencesPrivate.h
    M Source/WebKit/mac/WebView/WebView.mm
    M Source/WebKit/win/ChangeLog
    M Source/WebKit/win/Interfaces/IWebPreferencesPrivate.idl
    M Source/WebKit/win/WebPreferenceKeysPrivate.h
    M Source/WebKit/win/WebPreferences.cpp
    M Source/WebKit/win/WebPreferences.h
    M Source/WebKit/win/WebView.cpp
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/Shared/WebPreferencesDefinitions.h
    M Source/WebKit2/UIProcess/API/C/WKPreferences.cpp
    M Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h
    M Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp
    M Source/WebKit2/WebProcess/WebPage/WebPage.cpp
    M Tools/ChangeLog
    M Tools/DumpRenderTree/mac/DumpRenderTree.mm
    M Tools/DumpRenderTree/win/DumpRenderTree.cpp
    M Tools/WebKitTestRunner/TestController.cpp

  Log Message:
  -----------
  Merge r211254 - Crash when navigating back to a page in PacheCache when one of its frames has been removed
https://bugs.webkit.org/show_bug.cgi?id=167421
<rdar://problem/30188490>

Reviewed by Darin Adler.

Source/WebCore:

Disallow page caching of a page if:
1. The main window has an opener (i.e. it was opened via window.open)
2. It has ever used window.open()

This is because allowing page caching in this case would allow such
windows to script each other even after one of them entered Page
Cache. Allowing this is dangerous and easily causes crashes.

This is a short term workaround until we find a better solution to
the problem. One issue is this workaround is that navigating back
to a page that has an opener or used window.open() will not longer
get the page from PageCache. As a result, state may be lost upon
navigating back. However, we never guarantee that pages get page
cached, and Chrome does not have a PageCache.

Tests: fast/history/page-cache-after-window-open.html
       fast/history/page-cache-back-navigation-crash.html
       fast/history/page-cache-with-opener.html

* dom/Document.cpp:
(WebCore::Document::hasEverCalledWindowOpen):
(WebCore::Document::markHasCalledWindowOpen):
* dom/Document.h:
* history/PageCache.cpp:
(WebCore::canCachePage):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::createWindow):
* page/DiagnosticLoggingKeys.cpp:
(WebCore::DiagnosticLoggingKeys::hasCalledWindowOpenKey):
(WebCore::DiagnosticLoggingKeys::hasOpenerKey):
* page/DiagnosticLoggingKeys.h:
* page/Page.cpp:
(WebCore::Page::openedByWindowOpen):
* page/Page.h:
* page/Settings.in:

Source/WebKit/mac:

Add a new setting allowing layout tests to enable PageCache in a window
that has an opener, for convenience.

* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences allowsPageCacheWithWindowOpener]):
(-[WebPreferences setAllowsPageCacheWithWindowOpener:]):
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):

Source/WebKit/win:

Add a new setting allowing layout tests to enable PageCache in a window
that has an opener, for convenience.

* WebPreferenceKeysPrivate.h:
* WebPreferences.cpp:
(WebPreferences::initializeDefaultSettings):
* WebPreferences.h:

Source/WebKit2:

Add a new setting allowing layout tests to enable PageCache in a window
that has an opener, for convenience.

* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetAllowsPageCacheWithWindowOpener):
(WKPreferencesGetAllowsPageCacheWithWindowOpener):
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):

Tools:

Add a new setting allowing layout tests to enable PageCache in a window
that has an opener, for convenience.

* DumpRenderTree/mac/DumpRenderTree.mm:
(resetWebPreferencesToConsistentValues):
* DumpRenderTree/win/DumpRenderTree.cpp:
(resetWebPreferencesToConsistentValues):
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetPreferencesToConsistentValues):

LayoutTests:

* fast/history/page-cache-after-window-open-expected.txt: Added.
* fast/history/page-cache-after-window-open.html: Added.
* fast/history/page-cache-back-navigation-crash-expected.txt: Added.
* fast/history/page-cache-back-navigation-crash.html: Added.
* fast/history/page-cache-with-opener-expected.txt: Added.
* fast/history/page-cache-with-opener.html: Added.
* fast/history/resources/page-cache-window-with-iframe.html: Added.
* fast/history/resources/page-cache-window-with-opener.html: Added.
Add layout test coverage.

* editing/mac/input/unconfirmed-text-navigation-with-page-cache.html:
* fast/harness/page-cache-crash-on-data-urls.html:
* fast/harness/use-page-cache.html:
* fast/history/page-cache-after-window-open-expected.txt: Added.
* fast/history/page-cache-after-window-open.html: Added.
* fast/history/page-cache-with-opener-expected.txt: Added.
* fast/history/page-cache-with-opener.html: Added.
* fast/history/resources/page-cache-window-with-opener.html: Added.
* fast/loader/stateobjects/no-popstate-when-back-to-stateless-entry-with-page-cache.html:
* fast/loader/stateobjects/popstate-fires-with-page-cache.html:
* tiled-drawing/tiled-drawing-scroll-position-page-cache-restoration.html:
These tests relied on using window.open() to test PageCache for convenience. They now
need to override a setting in order to be allowed to do so.


  Commit: 83277020d862f62a732eaa8e0b302bc7c6ed5d4a
      https://github.com/WebKit/WebKit/commit/83277020d862f62a732eaa8e0b302bc7c6ed5d4a
  Author: Brent Fulgham <bfulgham at webkit.org>
  Date:   2017-02-09 (Thu, 09 Feb 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/loader/nested-document-handling-expected.txt
    A LayoutTests/fast/loader/nested-document-handling.html
    A LayoutTests/fast/loader/resources/subframe-success.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/loader/DocumentWriter.cpp
    M Source/WebCore/page/Frame.cpp
    M Source/WebCore/page/Frame.h

  Log Message:
  -----------
  Merge r210122 - Nested calls to setDocument can omit firing 'unload' events
https://bugs.webkit.org/show_bug.cgi?id=166422
<rdar://problem/29763012>

Reviewed by Alex Christensen.

Source/WebCore:

Test: fast/loader/nested-document-handling.html

Only allow a single document change to be taking place during a given runloop cycle.

* bindings/js/ScriptController.cpp:
(WebCore::ScriptController::executeIfJavaScriptURL): Block script changing the document
when we are in the middle of changing the document.
* page/Frame.cpp:
(WebCore::Frame::setDocument): Keep track of document change state.
* page/Frame.h:

LayoutTests:

* fast/loader/nested-document-handling-expected.txt: Added.
* fast/loader/nested-document-handling.html: Added.
* fast/loader/resources/subframe-success.html: Added.


  Commit: c1d70541e8f6476d6d1b2bddf64aa23fd28966ae
      https://github.com/WebKit/WebKit/commit/c1d70541e8f6476d6d1b2bddf64aa23fd28966ae
  Author: Brent Fulgham <bfulgham at webkit.org>
  Date:   2017-02-09 (Thu, 09 Feb 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/shadow-dom/color-input-element-shadow-manipulation-expected.txt
    A LayoutTests/fast/shadow-dom/color-input-element-shadow-manipulation.html
    A LayoutTests/fast/shadow-dom/file-input-element-shadow-manipulation-expected.txt
    A LayoutTests/fast/shadow-dom/file-input-element-shadow-manipulation.html
    A LayoutTests/fast/shadow-dom/keygen-shadow-manipulation-expected.txt
    A LayoutTests/fast/shadow-dom/keygen-shadow-manipulation.html
    A LayoutTests/fast/shadow-dom/media-shadow-manipulation-expected.txt
    A LayoutTests/fast/shadow-dom/media-shadow-manipulation.html
    A LayoutTests/fast/shadow-dom/range-input-element-shadow-manipulation-expected.txt
    A LayoutTests/fast/shadow-dom/range-input-element-shadow-manipulation.html
    A LayoutTests/fast/shadow-dom/textarea-shadow-manipulation-expected.txt
    A LayoutTests/fast/shadow-dom/textarea-shadow-manipulation.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/dom/Element.h
    M Source/WebCore/html/ColorInputType.cpp
    M Source/WebCore/html/FileInputType.cpp
    M Source/WebCore/html/HTMLKeygenElement.cpp
    M Source/WebCore/html/HTMLMediaElement.cpp
    M Source/WebCore/html/HTMLTextAreaElement.cpp
    M Source/WebCore/html/RangeInputType.cpp
    M Source/WebCore/html/shadow/SliderThumbElement.h
    M Source/WebCore/svg/SVGUseElement.cpp

  Log Message:
  -----------
  Merge r209145 - Use 'childOfType' template when retrieving Shadow DOM elements
https://bugs.webkit.org/show_bug.cgi?id=165145
<rdar://problem/29331830>

Reviewed by Antti Koivisto.

Source/WebCore:

Tests: fast/shadow-dom/color-input-element-shadow-manipulation.html
       fast/shadow-dom/file-input-element-shadow-manipulation.html
       fast/shadow-dom/keygen-shadow-manipulation.html
       fast/shadow-dom/media-shadow-manipulation.html
       fast/shadow-dom/range-input-element-shadow-manipulation.html
       fast/shadow-dom/textarea-shadow-manipulation.html

Switch to using 'childOfType' when retrieving Shadow DOM elements, rather
than relying on expected element positions, as these can be changed by
JavaScript.

Drive by fix: Make more use of is<> and downcast<> templates rather than blindly casting.

* dom/Element.h:
(WebCore::Element::isUploadButton): Added.
(WebCore::Element::isSliderContainerElement): Added.
* html/ColorInputType.cpp:
(WebCore::ColorInputType::shadowColorSwatch): Use 'childOfType' rather than assuming
the first child is the one we want.
* html/FileInputType.cpp:
(isType): Added.
(WebCore::FileInputType::disabledAttributeChanged): Use 'childOfType' rather than assuming
the first child is the one we want.
(WebCore::FileInputType::multipleAttributeChanged): Ditto.
* html/HTMLKeygenElement.cpp:
(WebCore::HTMLKeygenElement::shadowSelect): Ditto.
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::mediaControls): Ditto.
(WebCore::HTMLMediaElement::hasMediaControls): Ditto.
* html/HTMLTextAreaElement.cpp:
(WebCore::HTMLTextAreaElement::innerTextElement): Ditto.
* html/RangeInputType.cpp:
(WebCore::RangeInputType::sliderTrackElement): Ditto.
* html/shadow/SliderThumbElement.h:
(isType): Added.
* svg/SVGUseElement.cpp:
(WebCore::SVGUseElement::targetClone): Use 'childOfType' rather than assuming
the first child is the one we want.

LayoutTests:

* fast/shadow-dom/color-input-element-shadow-manipulation-expected.txt: Added.
* fast/shadow-dom/color-input-element-shadow-manipulation.html: Added.
* fast/shadow-dom/file-input-element-shadow-manipulation-expected.txt: Added.
* fast/shadow-dom/file-input-element-shadow-manipulation.html: Added.
* fast/shadow-dom/keygen-shadow-manipulation-expected.txt: Added.
* fast/shadow-dom/keygen-shadow-manipulation.html: Added.
* fast/shadow-dom/media-shadow-manipulation-expected.txt: Added.
* fast/shadow-dom/media-shadow-manipulation.html: Added.
* fast/shadow-dom/range-input-element-shadow-manipulation-expected.txt: Added.
* fast/shadow-dom/range-input-element-shadow-manipulation.html: Added.
* fast/shadow-dom/textarea-shadow-manipulation-expected.txt: Added.
* fast/shadow-dom/textarea-shadow-manipulation.html: Added.


  Commit: 6d0baad6a6ceabf54752af3de617af7d9f8b349c
      https://github.com/WebKit/WebKit/commit/6d0baad6a6ceabf54752af3de617af7d9f8b349c
  Author: Brent Fulgham <bfulgham at webkit.org>
  Date:   2017-02-10 (Fri, 10 Feb 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/shadow-dom/resources/start.html
    A LayoutTests/fast/shadow-dom/shadow-at-root-during-disconnect-expected.txt
    A LayoutTests/fast/shadow-dom/shadow-at-root-during-disconnect.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/dom/ContainerNodeAlgorithms.cpp

  Log Message:
  -----------
  Merge r211999 - Disconnect shadow children of root when detaching a frame
https://bugs.webkit.org/show_bug.cgi?id=166851
<rdar://problem/29930443>

Reviewed by Andy Estes.

Source/WebCore:

If the root of the tree we are disconnecting has a shadow element, include it in the set of
things to disconnect.

Tests: fast/shadow-dom/shadow-at-root-during-disconnect.html

* dom/ContainerNodeAlgorithms.cpp:
(WebCore::disconnectSubframes):

LayoutTests:

* fast/shadow-dom/resources/start.html: Added.
* fast/shadow-dom/shadow-at-root-during-disconnect-expected.txt: Added.
* fast/shadow-dom/shadow-at-root-during-disconnect.html: Added.


  Commit: f265fbf2bdf153140e40c5b537145eb4b67038b3
      https://github.com/WebKit/WebKit/commit/f265fbf2bdf153140e40c5b537145eb4b67038b3
  Author: Brent Fulgham <bfulgham at webkit.org>
  Date:   2017-02-10 (Fri, 10 Feb 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/forms/input-type-change-during-selection-expected.txt
    A LayoutTests/fast/forms/input-type-change-during-selection.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/html/HTMLTextFormControlElement.cpp

  Log Message:
  -----------
  Merge r212023 - Handle synchronous layout when setting a selection range
https://bugs.webkit.org/show_bug.cgi?id=167092
<rdar://problem/30041640>

Reviewed by Antti Koivisto.

Source/WebCore:

The 'innerTextElement' of a form control can change during layout due
to arbitrary JavaScript executing. Handle the case where the inner text
element has changed so that current render box height is while setting
a selection range.

Test: fast/forms/input-type-change-during-selection.html

* html/HTMLTextFormControlElement.cpp:
(WebCore::HTMLTextFormControlElement::setSelectionRange):

LayoutTests:

* fast/forms/input-type-change-during-selection-expected.txt: Added.
* fast/forms/input-type-change-during-selection.html: Added.


  Commit: 155095f221412d58b266cf50d9caa00faf241515
      https://github.com/WebKit/WebKit/commit/155095f221412d58b266cf50d9caa00faf241515
  Author: Antti Koivisto <antti at apple.com>
  Date:   2017-02-10 (Fri, 10 Feb 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/shadow-dom/attach-shadow-teardown-expected.txt
    A LayoutTests/fast/shadow-dom/attach-shadow-teardown.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/dom/Element.cpp

  Log Message:
  -----------
  Merge r212024 - Tear down existing renderers when adding a shadow root.
https://bugs.webkit.org/show_bug.cgi?id=167117

Patch by Antti Koivisto <antti at apple.com> on 2017-02-09
Reviewed by Andreas Kling.

Source/WebCore:

Adding a shadow root may cause children no longer be part of the flat tree. If they had renderers
tear down code would no longer reach them.

Test: fast/shadow-dom/attach-shadow-teardown.html

* dom/Element.cpp:
(WebCore::Element::addShadowRoot):

    Tear down existing render tree when adding a shadow root.

LayoutTests:

* fast/shadow-dom/attach-shadow-teardown-expected.txt: Added.
* fast/shadow-dom/attach-shadow-teardown.html: Added.


  Commit: e9f9a8a86fbf5da7b3f2dedf261536dc1c83cc85
      https://github.com/WebKit/WebKit/commit/e9f9a8a86fbf5da7b3f2dedf261536dc1c83cc85
  Author: Miguel Gomez <magomez at igalia.com>
  Date:   2017-02-10 (Fri, 10 Feb 2017)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp
    M Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h

  Log Message:
  -----------
  Merge r211721 - [GTK][EFL] Release unused UpdateAtlas when in memory pressure situation
https://bugs.webkit.org/show_bug.cgi?id=167872

Reviewed by Carlos Garcia Campos.

In a memory pressure situation, release all the unused UpdateAtlas as soon as possible, instead
of waiting 3 seconds before releasing them.

* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
(WebKit::CompositingCoordinator::releaseInactiveAtlasesTimerFired):
(WebKit::CompositingCoordinator::releaseAtlases):
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:


  Commit: 9f6fdfdd7c140be5f44a3d77095ddf06e133737e
      https://github.com/WebKit/WebKit/commit/9f6fdfdd7c140be5f44a3d77095ddf06e133737e
  Author: Miguel Gomez <magomez at igalia.com>
  Date:   2017-02-10 (Fri, 10 Feb 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/texmap/coordinated/TiledBackingStore.cpp
    M Source/WebCore/platform/graphics/texmap/coordinated/TiledBackingStore.h

  Log Message:
  -----------
  Merge r211867 - [GTK] Reduce TiledBackingStore tile coverage when on memory pressure state
https://bugs.webkit.org/show_bug.cgi?id=167980

Reviewed by Carlos Garcia Campos.

Use a smaller coverAreaMultiplier in the TiledBackingStore when in memory pressure situation, to reduce
the amount of tiles created.

No new tests.

* platform/graphics/texmap/coordinated/TiledBackingStore.cpp:
(WebCore::TiledBackingStore::createTilesIfNeeded):
(WebCore::TiledBackingStore::createTiles):
* platform/graphics/texmap/coordinated/TiledBackingStore.h:


  Commit: 7ddb49395d5bacb29b0750357d74c68a175c6469
      https://github.com/WebKit/WebKit/commit/7ddb49395d5bacb29b0750357d74c68a175c6469
  Author: Miguel Gomez <magomez at igalia.com>
  Date:   2017-02-10 (Fri, 10 Feb 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/cairo/CairoUtilities.cpp

  Log Message:
  -----------
  Merge r211967 - [GTK] scroll with transparent background not repainted after scrollY >= 32768
https://bugs.webkit.org/show_bug.cgi?id=154283

Reviewed by Carlos Garcia Campos.

Due to a limitation of the pixman backend, which uses 16 bits to hold signed integers, cairo is
not able to draw anything when using transformation matrices with values bigger than 32768. When
drawing patterns into large pages, the matrices values can overflow those 16 bits, so cairo doesn't
draw anything in, which causes the reported transparent backgrounds.

The patch modifies the transformation matrices both from the current context and the pattern we
are painting, to avoid them to hold values that cannot stored in 16 bits.

There's still the possibility that this happens, but it would require using a pattern with a size
bigger than 32768.

Based on a previous patch by Gwang Yoon Hwang  <yoon at igalia.com>.

No new tests.

* platform/graphics/cairo/CairoUtilities.cpp:
(WebCore::drawPatternToCairoContext):


  Commit: 9c26cb066656f16e2d5ec75765add1724dd670a0
      https://github.com/WebKit/WebKit/commit/9c26cb066656f16e2d5ec75765add1724dd670a0
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-02-10 (Fri, 10 Feb 2017)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/WebProcess/WebPage/AcceleratedDrawingArea.cpp

  Log Message:
  -----------
  Merge r212097 - Unreviewed. Fix GTK+ build with threaded compositor disabled.

* WebProcess/WebPage/AcceleratedDrawingArea.cpp:
(WebKit::AcceleratedDrawingArea::enterAcceleratedCompositingMode):
(WebKit::AcceleratedDrawingArea::exitAcceleratedCompositingModeNow):


  Commit: 2ef3d1b6a95b11a88714d784134d239c708c09f6
      https://github.com/WebKit/WebKit/commit/2ef3d1b6a95b11a88714d784134d239c708c09f6
  Author: Carlos Garcia Campos <carlosgc at webkit.org>
  Date:   2017-02-10 (Fri, 10 Feb 2017)

  Changed paths:
    M ChangeLog
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/gtk/NEWS
    M Source/cmake/OptionsGTK.cmake

  Log Message:
  -----------
  Unreviewed. Update OptionsGTK.cmake and NEWS for 2.14.4 release.

.:

* Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit2:

* gtk/NEWS: Add release notes for 2.14.4.


  Commit: 3c718a70cf9a7e7cccd144456588c8a76bfcd687
      https://github.com/WebKit/WebKit/commit/3c718a70cf9a7e7cccd144456588c8a76bfcd687
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-02-15 (Wed, 15 Feb 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/page/PageOverlayController.cpp

  Log Message:
  -----------
  Merge r212228 - [GTK] Non-accelerated drawing is broken with HiDPI
https://bugs.webkit.org/show_bug.cgi?id=168128

Reviewed by Michael Catanzaro.

When device scale factor changes, the page notifies the page overlay controller about it. Then overlay root
layers are created to be notified about the device scale factor. That causes us to enter in accelerated
compositing mode, because the graphics layer factory is called. But the render layer compositor doesn't really
enter in accelerated mode, because there aren't page overlays, the accelerated mode is not forced and the website
doesn't require acceleration either. This leaves our drawing area in an inconsistent state, it thinks it's in AC
mode because it has a layer tree host, but without a root layer attached, so nothing is rendered. The page
overlay controller doesn't need to create the layers when device scale factor changes, when an overlay is
installed, layers will be created with the current device scale factor anyway.

* page/PageOverlayController.cpp:
(WebCore::PageOverlayController::didChangeDeviceScaleFactor): Return early if not initialized yet.


  Commit: 8217b9df851930968b9949f7ce88ce17c4aea2e7
      https://github.com/WebKit/WebKit/commit/8217b9df851930968b9949f7ce88ce17c4aea2e7
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-02-15 (Wed, 15 Feb 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/cairo/CairoUtilities.cpp

  Log Message:
  -----------
  Merge r212346 - Unreviewed, rolling out r211967.

Caused rendering issues in HiDPI

Reverted changeset:

"[GTK] scroll with transparent background not repainted after
scrollY >= 32768"
https://bugs.webkit.org/show_bug.cgi?id=154283
http://trac.webkit.org/changeset/211967


  Commit: 0a26d26419cfc8860085b59a529787793c8befc3
      https://github.com/WebKit/WebKit/commit/0a26d26419cfc8860085b59a529787793c8befc3
  Author: Carlos Garcia Campos <carlosgc at webkit.org>
  Date:   2017-02-15 (Wed, 15 Feb 2017)

  Changed paths:
    M ChangeLog
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/gtk/NEWS
    M Source/cmake/OptionsGTK.cmake

  Log Message:
  -----------
  Unreviewed. Update OptionsGTK.cmake and NEWS for 2.14.5 release.

.:

* Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit2:

* gtk/NEWS: Add release notes for 2.14.5.


  Commit: 504bfe48a2054c4531b467e1ed9e579927b182f4
      https://github.com/WebKit/WebKit/commit/504bfe48a2054c4531b467e1ed9e579927b182f4
  Author: Tomáš Popela <tpopela at redhat.com>
  Date:   2017-04-05 (Wed, 05 Apr 2017)

  Changed paths:
    M ChangeLog
    M Source/cmake/OptionsCommon.cmake

  Log Message:
  -----------
  Merge r212882 - [GTK] Compilation fails if using ninja together with icecream and cmake > 3.5
https://bugs.webkit.org/show_bug.cgi?id=168770

Reviewed by Carlos Garcia Campos.

If using cmake >= 3.6 together with ninja generator and icecream, the
build will fail as icecream does not correctly handle the response
files and it's not passing compiler flags from there to the compiler
itself (in our case it's not passing -fPIC which leads to the
failure while linking). Don't enable the ninja's response files
support if we fulfill the preconditions.

* Source/cmake/OptionsCommon.cmake:


  Commit: 9a47154239c724f41504500ff20821f37bea0ee3
      https://github.com/WebKit/WebKit/commit/9a47154239c724f41504500ff20821f37bea0ee3
  Author: Youenn Fablet <youenn at apple.com>
  Date:   2017-04-05 (Wed, 05 Apr 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fetch/closing-while-fetching-blob-expected.txt
    A LayoutTests/fetch/closing-while-fetching-blob.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/Modules/fetch/FetchBodyOwner.cpp

  Log Message:
  -----------
  Merge r206633 - DumpRenderTree crashed in com.apple.WebCore: WTF::Optional<WebCore::FetchBodyOwner::BlobLoader>::operator bool const + 12
https://bugs.webkit.org/show_bug.cgi?id=162483

Patch by Youenn Fablet <youenn at apple.com> on 2016-09-30
Reviewed by Alex Christensen.

Source/WebCore:

Test: fetch/closing-while-fetching-blob.html
No change of behavior.

* Modules/fetch/FetchBodyOwner.cpp:
(WebCore::FetchBodyOwner::stop): Asserting m_blobLoader is null (meaning that unsetPendingActivity was done)
only in case FetchBodyOwner has no risk being destroyed.

LayoutTests:

* fetch/closing-while-fetching-blob-expected.txt: Added.
* fetch/closing-while-fetching-blob.html: Added.


  Commit: 8831d81143d750d8ae4eb04104591c14896cd21a
      https://github.com/WebKit/WebKit/commit/8831d81143d750d8ae4eb04104591c14896cd21a
  Author: Joseph Pecoraro <pecoraro at apple.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/inspector/InspectorAgentBase.h
    M Source/JavaScriptCore/inspector/InspectorAgentRegistry.cpp
    M Source/JavaScriptCore/inspector/InspectorAgentRegistry.h
    M Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp
    M Source/JavaScriptCore/inspector/agents/InspectorConsoleAgent.cpp
    M Source/JavaScriptCore/inspector/agents/InspectorConsoleAgent.h
    M Source/WebCore/ChangeLog
    M Source/WebCore/inspector/InspectorController.cpp

  Log Message:
  -----------
  Merge r208177 - Web Inspector: Provide an opportunity to clear ScriptValues associated with debugged target
https://bugs.webkit.org/show_bug.cgi?id=164167
<rdar://problem/29010148>

Patch by Joseph Pecoraro <pecoraro at apple.com> on 2016-10-31
Reviewed by Mark Lam.

Source/JavaScriptCore:

* inspector/InspectorAgentBase.h:
(Inspector::InspectorAgentBase::discardValues):
* inspector/InspectorAgentRegistry.cpp:
(Inspector::AgentRegistry::~AgentRegistry):
(Inspector::AgentRegistry::discardValues):
* inspector/InspectorAgentRegistry.h:
New standard agent method to allow the agent to discard values.

* inspector/agents/InspectorConsoleAgent.h:
* inspector/agents/InspectorConsoleAgent.cpp:
(Inspector::InspectorConsoleAgent::discardValues):
Discard ScriptValues in ConsoleMessages.

* inspector/JSGlobalObjectInspectorController.cpp:
(Inspector::JSGlobalObjectInspectorController::globalObjectDestroyed):
Global object is going away, discard values.

Source/WebCore:

* inspector/InspectorController.cpp:
(WebCore::InspectorController::inspectedPageDestroyed):
Page is going away, discard values.

* inspector/WorkerInspectorController.h:
* inspector/WorkerInspectorController.cpp:
(WebCore::WorkerInspectorController::workerTerminating):
Worker is going away, discard values.


  Commit: e1d6fb867a026dd5f113b18fedeec95ce9a2dfc6
      https://github.com/WebKit/WebKit/commit/e1d6fb867a026dd5f113b18fedeec95ce9a2dfc6
  Author: Brent Fulgham <bfulgham at webkit.org>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    M Source/WebCore/ChangeLog
    M Source/WebCore/html/shadow/SliderThumbElement.h

  Log Message:
  -----------
  Merge r209145 - Use 'childOfType' template when retrieving Shadow DOM elements
https://bugs.webkit.org/show_bug.cgi?id=165145
<rdar://problem/29331830>

Reviewed by Antti Koivisto.

Source/WebCore:

Tests: fast/shadow-dom/color-input-element-shadow-manipulation.html
       fast/shadow-dom/file-input-element-shadow-manipulation.html
       fast/shadow-dom/keygen-shadow-manipulation.html
       fast/shadow-dom/media-shadow-manipulation.html
       fast/shadow-dom/range-input-element-shadow-manipulation.html
       fast/shadow-dom/textarea-shadow-manipulation.html

Switch to using 'childOfType' when retrieving Shadow DOM elements, rather
than relying on expected element positions, as these can be changed by
JavaScript.

Drive by fix: Make more use of is<> and downcast<> templates rather than blindly casting.

* dom/Element.h:
(WebCore::Element::isUploadButton): Added.
(WebCore::Element::isSliderContainerElement): Added.
* html/ColorInputType.cpp:
(WebCore::ColorInputType::shadowColorSwatch): Use 'childOfType' rather than assuming
the first child is the one we want.
* html/FileInputType.cpp:
(isType): Added.
(WebCore::FileInputType::disabledAttributeChanged): Use 'childOfType' rather than assuming
the first child is the one we want.
(WebCore::FileInputType::multipleAttributeChanged): Ditto.
* html/HTMLKeygenElement.cpp:
(WebCore::HTMLKeygenElement::shadowSelect): Ditto.
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::mediaControls): Ditto.
(WebCore::HTMLMediaElement::hasMediaControls): Ditto.
* html/HTMLTextAreaElement.cpp:
(WebCore::HTMLTextAreaElement::innerTextElement): Ditto.
* html/RangeInputType.cpp:
(WebCore::RangeInputType::sliderTrackElement): Ditto.
* html/shadow/SliderThumbElement.h:
(isType): Added.
* svg/SVGUseElement.cpp:
(WebCore::SVGUseElement::targetClone): Use 'childOfType' rather than assuming
the first child is the one we want.

LayoutTests:

* fast/shadow-dom/color-input-element-shadow-manipulation-expected.txt: Added.
* fast/shadow-dom/color-input-element-shadow-manipulation.html: Added.
* fast/shadow-dom/file-input-element-shadow-manipulation-expected.txt: Added.
* fast/shadow-dom/file-input-element-shadow-manipulation.html: Added.
* fast/shadow-dom/keygen-shadow-manipulation-expected.txt: Added.
* fast/shadow-dom/keygen-shadow-manipulation.html: Added.
* fast/shadow-dom/media-shadow-manipulation-expected.txt: Added.
* fast/shadow-dom/media-shadow-manipulation.html: Added.
* fast/shadow-dom/range-input-element-shadow-manipulation-expected.txt: Added.
* fast/shadow-dom/range-input-element-shadow-manipulation.html: Added.
* fast/shadow-dom/textarea-shadow-manipulation-expected.txt: Added.
* fast/shadow-dom/textarea-shadow-manipulation.html: Added.


  Commit: 07946a9101ac8dedfa30551d0ca5404dc9596ee4
      https://github.com/WebKit/WebKit/commit/07946a9101ac8dedfa30551d0ca5404dc9596ee4
  Author: Mark Lam <mark.lam at apple.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M JSTests/ChangeLog
    A JSTests/stress/jsc-setImpureGetterDelegate-on-bad-type.js
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/jsc.cpp

  Log Message:
  -----------
  Merge r208741 - The jsc shell's setImpureGetterDelegate() should ensure that the set value is an ImpureGetter.
https://bugs.webkit.org/show_bug.cgi?id=164781
<rdar://problem/28418590>

Reviewed by Geoffrey Garen and Michael Saboff.

JSTests:

* stress/jsc-setImpureGetterDelegate-on-bad-type.js: Added.

Source/JavaScriptCore:

* jsc.cpp:
(functionSetImpureGetterDelegate):


  Commit: 5d51322b73170cc69eb7c300cdc51b172cb1d55d
      https://github.com/WebKit/WebKit/commit/5d51322b73170cc69eb7c300cdc51b172cb1d55d
  Author: Daniel Bates <dbates at webkit.org>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/http/tests/security/contentSecurityPolicy/image-blocked-in-about-blank-window-expected.txt
    A LayoutTests/http/tests/security/contentSecurityPolicy/image-blocked-in-about-blank-window.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/loader/WorkerThreadableLoader.cpp
    M Source/WebCore/page/csp/ContentSecurityPolicy.cpp
    M Source/WebCore/page/csp/ContentSecurityPolicyDirectiveList.cpp
    M Source/WebCore/xml/XSLTProcessor.cpp

  Log Message:
  -----------
  Merge r209608 - [CSP] Policy of window opener not applied to about:blank window
https://bugs.webkit.org/show_bug.cgi?id=165531
<rdar://problem/29426639>

Reviewed by Brent Fulgham.

Source/WebCore:

Fixes an issue where the content security policy of the opener document was not applied to
an about:blank window.

An about:blank window inherits its security origin from its opener document. It should also
copy (inherit) the ContentSecurityPolicy from its opener document. When copying the ContentSecurityPolicy
state from the opener document to the about:blank document we must take care to avoid copying
any upgrade-insecure-request directive because new windows should not inherit it by definition.
With respect to upgrade-insecure-requests, new windows should only inherit the insecure navigation set
from their opener document.

Test: http/tests/security/contentSecurityPolicy/image-blocked-in-about-blank-window.html

* dom/Document.cpp:
(WebCore::Document::initContentSecurityPolicy): Copy the ContentSecurityPolicy state from the
owner document to this document when it inherits its security origin from its owner. An about:blank
window is one example of a document that inherits its security origin from its owner.
* loader/WorkerThreadableLoader.cpp:
(WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge): Call ContentSecurityPolicy::copyUpgradeInsecureRequestStateFrom()
to copy the upgrade insecure requests state from the owner document to the worker now that
ContentSecurityPolicy::copyStateFrom() no longer does this.
* page/csp/ContentSecurityPolicy.cpp:
(WebCore::ContentSecurityPolicy::copyStateFrom): Do not copy the upgrade insecure request state.
Callers are now responsible for calling ContentSecurityPolicy::copyUpgradeInsecureRequestStateFrom()
to copy this state.
* page/csp/ContentSecurityPolicyDirectiveList.cpp:
(WebCore::ContentSecurityPolicyDirectiveList::parse): Ignore directive upgrade-insecure-requests when
inheriting ContentSecurityPolicy state as this directive as the Upgrade Insecure Requests feature has
its own inheritance semantics that differ from the semantics of copying a ContentSecurityPolicy object.
* xml/XSLTProcessor.cpp:
(WebCore::XSLTProcessor::createDocumentFromSource): Call ContentSecurityPolicy::copyUpgradeInsecureRequestStateFrom()
to copy the upgrade insecure requests state from the original document to the transformed document now
that ContentSecurityPolicy::copyStateFrom() no longer does this.

LayoutTests:

Add a test to ensure that an about:blank window inherits the CSP policy of its
opener document.

* http/tests/security/contentSecurityPolicy/image-blocked-in-about-blank-window-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/image-blocked-in-about-blank-window-blocked.html: Added.


  Commit: 62114b3d7e81ae20fb84a754d250daa46557ff99
      https://github.com/WebKit/WebKit/commit/62114b3d7e81ae20fb84a754d250daa46557ff99
  Author: Carlos Alberto Lopez Perez <clopez at igalia.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/lists/list-marker-before-float-expected.html
    A LayoutTests/fast/lists/list-marker-before-float-nested-expected.html
    A LayoutTests/fast/lists/list-marker-before-float-nested-rtl-expected.html
    A LayoutTests/fast/lists/list-marker-before-float-nested-rtl.html
    A LayoutTests/fast/lists/list-marker-before-float-nested.html
    A LayoutTests/fast/lists/list-marker-before-float-rtl-expected.html
    A LayoutTests/fast/lists/list-marker-before-float-rtl.html
    A LayoutTests/fast/lists/list-marker-before-float.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/rendering/RenderListItem.cpp
    M Source/WebCore/rendering/RenderListMarker.cpp
    M Source/WebCore/rendering/RenderListMarker.h

  Log Message:
  -----------
  Merge r210239 - A floating element within <li> overlaps with the marker
https://bugs.webkit.org/show_bug.cgi?id=166528

Reviewed by Zalan Bujtas.

Source/WebCore:

Merged from Blink (patch by trobhogan at gmail.com):
https://crrev.com/c896e79e5ba348d7ed87438cd3a19d0176f3036d
https://crbug.com/548616

Establish a list marker's offset before floats have been added to its line.

Computing the offset for a list marker after the rest of the objects on the line
it is on have been laid out, means it will avoid floats it ought not to.

Instead, compute the offset when laying out the marker and cache it for use later.

Tests: fast/lists/list-marker-before-float-nested-rtl.html
       fast/lists/list-marker-before-float-nested.html
       fast/lists/list-marker-before-float-rtl.html
       fast/lists/list-marker-before-float.html

* rendering/RenderListItem.cpp:
(WebCore::RenderListItem::positionListMarker):
* rendering/RenderListMarker.cpp:
(WebCore::RenderListMarker::RenderListMarker):
(WebCore::RenderListMarker::layout):
* rendering/RenderListMarker.h:

LayoutTests:

* fast/lists/list-marker-before-float-expected.html: Added.
* fast/lists/list-marker-before-float-nested-expected.html: Added.
* fast/lists/list-marker-before-float-nested-rtl-expected.html: Added.
* fast/lists/list-marker-before-float-nested-rtl.html: Added.
* fast/lists/list-marker-before-float-nested.html: Added.
* fast/lists/list-marker-before-float-rtl-expected.html: Added.
* fast/lists/list-marker-before-float-rtl.html: Added.
* fast/lists/list-marker-before-float.html: Added.


  Commit: 8a36f6ffa8944983185d615ccb3954d5d37fda52
      https://github.com/WebKit/WebKit/commit/8a36f6ffa8944983185d615ccb3954d5d37fda52
  Author: Chris Dumez <cdumez at apple.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/frames/frame-window-as-callback-expected.txt
    A LayoutTests/fast/frames/frame-window-as-callback.html
    A LayoutTests/fast/frames/resources/wrong-global-object.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/bindings/js/JSCallbackData.cpp
    M Source/WebCore/bindings/js/JSCallbackData.h
    M Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
    M Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunction.cpp

  Log Message:
  -----------
  Merge r210468 - Regression(r189230): DOM Callbacks may use wrong global object
https://bugs.webkit.org/show_bug.cgi?id=166784

Reviewed by Mark Lam.

Source/WebCore:

DOM Callbacks could end up using the wrong global object after r189230
because we were getting the globalObject from the callback object
instead of the one at the point the callback object was passed in by
JavaScript. This patch fixes the issue.

Test: fast/frames/frame-window-as-callback.html

* bindings/js/JSCallbackData.cpp:
(WebCore::JSCallbackData::invokeCallback):
* bindings/js/JSCallbackData.h:
(WebCore::JSCallbackData::globalObject):
(WebCore::JSCallbackData::JSCallbackData):
(WebCore::JSCallbackDataStrong::JSCallbackDataStrong):
(WebCore::JSCallbackDataStrong::callback):
(WebCore::JSCallbackDataStrong::invokeCallback):
(WebCore::JSCallbackDataWeak::JSCallbackDataWeak):
(WebCore::JSCallbackDataWeak::callback):
(WebCore::JSCallbackDataWeak::invokeCallback):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateCallbackImplementationContent):

LayoutTests:

Add layout test coverage.

* fast/frames/frame-window-as-callback-expected.txt: Added.
* fast/frames/frame-window-as-callback.html: Added.
* fast/frames/resources/wrong-global-object.html: Added.


  Commit: bc5bca7604c188eebb9729ef3e16a85716ce7391
      https://github.com/WebKit/WebKit/commit/bc5bca7604c188eebb9729ef3e16a85716ce7391
  Author: Daniel Bates <dbates at webkit.org>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/bindings/js/JSDOMWindowProperties.cpp

  Log Message:
  -----------
  Merge r210508 - Evaluating window named element may return wrong result
https://bugs.webkit.org/show_bug.cgi?id=166792
<rdar://problem/29801059>

Reviewed by Chris Dumez.

* bindings/js/JSDOMWindowProperties.cpp:
(WebCore::jsDOMWindowPropertiesGetOwnPropertySlotNamedItemGetter):


  Commit: 28c6745ce1372fc33b23d17236d45b9fbce436f9
      https://github.com/WebKit/WebKit/commit/28c6745ce1372fc33b23d17236d45b9fbce436f9
  Author: Daniel Bates <dbates at webkit.org>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/html/HTMLAnchorElement.cpp
    M Source/WebCore/html/HTMLLinkElement.cpp
    M Source/WebCore/loader/FrameLoader.cpp
    M Source/WebCore/mathml/MathMLElement.cpp
    M Source/WebCore/svg/SVGAElement.cpp

  Log Message:
  -----------
  Merge r210474 - Ensure navigation only allowed for documents not in the page cache
https://bugs.webkit.org/show_bug.cgi?id=166773
<rdar://problem/29762809>

Reviewed by Brent Fulgham.

It is wise to ensure that navigation is only allowed when initiated from a document that
is not in- or about to be put in- the page cache. Such a navigation would surprise a
person that had navigated away from the initiating document among other issues.

* dom/Document.cpp:
(WebCore::Document::canNavigate): Only allow navigation if the document is not in the
page cache.
* html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::handleClick): Ditto.
* html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::handleClick): Ditto.
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::urlSelected): Assert triggering event's document is not in the
page cache.
(WebCore::FrameLoader::submitForm): Allow submission if the document is not in the
page cache.
(WebCore::FrameLoader::loadFrameRequest): Assert triggering event's document is not in
the page cache.
* mathml/MathMLElement.cpp:
(WebCore::MathMLElement::defaultEventHandler): Only allow navigation if the document is
not in the page cache.
* svg/SVGAElement.cpp:
(WebCore::SVGAElement::defaultEventHandler): Ditto.


  Commit: 853e15c5213d0915ee7278cea130dee5c330b8bb
      https://github.com/WebKit/WebKit/commit/853e15c5213d0915ee7278cea130dee5c330b8bb
  Author: Joseph Pecoraro <joepeck at webkit.org>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/inspector/InspectorController.cpp
    M Source/WebCore/inspector/PageScriptDebugServer.cpp
    M Source/WebCore/page/Page.cpp
    M Source/WebCore/page/Page.h
    M Source/WebKit/mac/ChangeLog
    M Source/WebKit/mac/WebView/WebView.mm
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/WebProcess/WebPage/WebPage.cpp

  Log Message:
  -----------
  Merge r210822 - Crash when closing tab with debugger paused
https://bugs.webkit.org/show_bug.cgi?id=161746
<rdar://problem/15607819>

Reviewed by Brian Burg and Brent Fulgham.

Source/WebCore:

* page/Page.h:
(WebCore::Page::incrementNestedRunLoopCount):
(WebCore::Page::decrementNestedRunLoopCount):
(WebCore::Page::insideNestedRunLoop):
Keep track of whether or not this Page is inside of a nested run loop.
Currently the only nested run loop we know about is EventLoop used
by Web Inspector when debugging JavaScript.

(WebCore::Page::whenUnnested):
Callback that can be called when we are no longer inside of a nested
run loop.

(WebCore::Page::~Page):
Ensure we are not in a known nested run loop when destructing, since
that could be unsafe.

* inspector/PageScriptDebugServer.cpp:
(WebCore::PageScriptDebugServer::runEventLoopWhilePausedInternal):
Increment and decrement as we go into or leave the nested runloop.

* inspector/InspectorController.cpp:
(WebCore::InspectorController::inspectedPageDestroyed):
(WebCore::InspectorController::disconnectAllFrontends):
Rework destruction to allow disconnectAllFrontends to happen earlier
if necessary. WebKit clients may use this to disconnect remote
frontends when closing a Page.

Source/WebKit/mac:

* WebView/WebView.mm:
(WebKit::DeferredPageDestructor::createDeferredPageDestructor):
(WebKit::DeferredPageDestructor::DeferredPageDestructor):
(WebKit::DeferredPageDestructor::tryDestruction):
(-[WebView _close]):
Defer destruction of the Page if we are in a nested runloop.

Source/WebKit2:

* WebProcess/WebPage/WebPage.cpp:
(WebKit::DeferredPageDestructor::createDeferredPageDestructor):
(WebKit::DeferredPageDestructor::DeferredPageDestructor):
(WebKit::DeferredPageDestructor::tryDestruction):
(WebKit::WebPage::close):
Defer destruction of the Page and WebPage if we are in a nested runloop.
Also, proactively close all inspector frontends, including remote frontends.

* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::handleSyntheticClick):
(WebKit::WebPage::completeSyntheticClick):
Return early in some cases where a nested run loop may have closed
the WebPage on us while handling JavaScript events.


  Commit: ce590962bef155d6a44626c58af9b982525207d9
      https://github.com/WebKit/WebKit/commit/ce590962bef155d6a44626c58af9b982525207d9
  Author: Michael Saboff <msaboff at apple.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M JSTests/ChangeLog
    A JSTests/microbenchmarks/regexp-nested-nonzero-min-counted-parens.js
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/yarr/YarrInterpreter.cpp
    M Source/JavaScriptCore/yarr/YarrInterpreter.h
    M Source/JavaScriptCore/yarr/YarrJIT.cpp
    M Source/JavaScriptCore/yarr/YarrPattern.cpp
    M Source/JavaScriptCore/yarr/YarrPattern.h

  Log Message:
  -----------
  Merge r210837 - Nested parenthesized regular expressions with non-zero minimum counts appear to hang and use lots of memory
https://bugs.webkit.org/show_bug.cgi?id=167125

Reviewed by Filip Pizlo.

JSTests:

* microbenchmarks/regexp-nested-nonzero-min-counted-parens.js: Added.
New test with limits that run slow and take a reasonable amount of memory
before the change and run fast, using little memory with the change.

Source/JavaScriptCore:

Changed Yarr to handle nested parenthesized subexpressions where the minimum count is
not 0 directly in the Yarr interpreter.  Previously we'd factor an expression like
(a|b)+ into (a|b)(a|b)* with special handling for captures.  This factoring was done
using a deep copy that doubled the size of the resulting expresion for each nested
parenthesized subexpression.  Now the Yarr interpreter can directly process a regexp
like (a|b){2,42}.

The parser will allow one level of nested, non-zero minimum, counted parenthesis using
the old copy method.  After one level, it will generate parenthesis terms with a non-zero
minimum.   Such an expression wasn't handled by the Yarr JIT before the change, so this
change isn't a performance regression.

Added a minimum count to the YarrPattern and ByteTerm classes, and then factored that
minimum into the interpreter.  A non-zero minimum is only handled by the Yarr interpreter.
If the Yarr JIT see such a term, it punts back to the interpreter.

* yarr/YarrInterpreter.cpp:
(JSC::Yarr::Interpreter::backtrackPatternCharacter):
(JSC::Yarr::Interpreter::backtrackPatternCasedCharacter):
(JSC::Yarr::Interpreter::matchCharacterClass):
(JSC::Yarr::Interpreter::backtrackCharacterClass):
(JSC::Yarr::Interpreter::matchBackReference):
(JSC::Yarr::Interpreter::backtrackBackReference):
(JSC::Yarr::Interpreter::matchParenthesesOnceBegin):
(JSC::Yarr::Interpreter::matchParenthesesOnceEnd):
(JSC::Yarr::Interpreter::backtrackParenthesesOnceBegin):
(JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd):
(JSC::Yarr::Interpreter::matchParenthesesTerminalBegin):
(JSC::Yarr::Interpreter::backtrackParenthesesTerminalBegin):
(JSC::Yarr::Interpreter::matchParentheticalAssertionBegin):
(JSC::Yarr::Interpreter::matchParentheticalAssertionEnd):
(JSC::Yarr::Interpreter::backtrackParentheticalAssertionBegin):
(JSC::Yarr::Interpreter::backtrackParentheticalAssertionEnd):
(JSC::Yarr::Interpreter::matchParentheses):
(JSC::Yarr::Interpreter::backtrackParentheses):
(JSC::Yarr::Interpreter::matchDisjunction):
(JSC::Yarr::ByteCompiler::atomPatternCharacter):
(JSC::Yarr::ByteCompiler::atomCharacterClass):
(JSC::Yarr::ByteCompiler::atomBackReference):
(JSC::Yarr::ByteCompiler::atomParentheticalAssertionEnd):
(JSC::Yarr::ByteCompiler::atomParenthesesSubpatternEnd):
(JSC::Yarr::ByteCompiler::atomParenthesesOnceEnd):
(JSC::Yarr::ByteCompiler::atomParenthesesTerminalEnd):
(JSC::Yarr::ByteCompiler::emitDisjunction):
* yarr/YarrInterpreter.h:
(JSC::Yarr::ByteTerm::ByteTerm):
* yarr/YarrJIT.cpp:
(JSC::Yarr::YarrGenerator::generatePatternCharacterOnce):
(JSC::Yarr::YarrGenerator::generatePatternCharacterFixed):
(JSC::Yarr::YarrGenerator::generatePatternCharacterGreedy):
(JSC::Yarr::YarrGenerator::backtrackPatternCharacterNonGreedy):
(JSC::Yarr::YarrGenerator::generateCharacterClassFixed):
(JSC::Yarr::YarrGenerator::generateCharacterClassGreedy):
(JSC::Yarr::YarrGenerator::backtrackCharacterClassNonGreedy):
(JSC::Yarr::YarrGenerator::generateTerm):
(JSC::Yarr::YarrGenerator::backtrackTerm):
(JSC::Yarr::YarrGenerator::generate):
(JSC::Yarr::YarrGenerator::backtrack):
(JSC::Yarr::YarrGenerator::opCompileParenthesesSubpattern):
* yarr/YarrPattern.cpp:
(JSC::Yarr::YarrPatternConstructor::copyTerm):
(JSC::Yarr::YarrPatternConstructor::quantifyAtom):
(JSC::Yarr::YarrPatternConstructor::checkForTerminalParentheses):
(JSC::Yarr::YarrPattern::YarrPattern):
* yarr/YarrPattern.h:
(JSC::Yarr::PatternTerm::PatternTerm):
(JSC::Yarr::PatternTerm::quantify):
(JSC::Yarr::YarrPattern::reset):


  Commit: 8f10dde163b3c95d7b048f893634a78ae0a91f0c
      https://github.com/WebKit/WebKit/commit/8f10dde163b3c95d7b048f893634a78ae0a91f0c
  Author: Ryosuke Niwa <rniwa at webkit.org>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/editing/selection/deleteFromDocument-shadow-tree-crash-expected.txt
    A LayoutTests/editing/selection/deleteFromDocument-shadow-tree-crash.html
    M LayoutTests/imported/blink/editing/selection/deleteFromDocument-crash-expected.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/page/DOMSelection.cpp

  Log Message:
  -----------
  Merge r211201 - Crash under DOMSelection::deleteFromDocument()
https://bugs.webkit.org/show_bug.cgi?id=167232

Reviewed by Chris Dumez.

Source/WebCore:

The crash was caused by DOMSelection's deleteFromDocument() mutating contents inside the user-agent
shadow tree of an input element when the text field is readonly. Fixed the bug by exiting early
whenever the selection is inside a shadow tree since getSelection().getRangeAt(0) always returns
a range outside the input element or any shadow tree for that matter.

New behavior matches that of Gecko. The working draft spec of which I'm the editor states that
deleteFromDocument() must invoke Range's deleteContents() on the associated range, which is
the collapsed range returned by getSelection().getRangeAt(0) in the spec:
https://www.w3.org/TR/2016/WD-selection-api-20160921/#widl-Selection-deleteFromDocument-void
And Range's deleteContents() immediately terminates in step 1 when start and end are identical:
https://dom.spec.whatwg.org/commit-snapshots/6b7621282c2e3b222ac585650e484abf4c0a416b/

Note that Range's DOM mutating methods are not available inside an user-agent shadow tree because
WebKit never returns a Range whose end boundary points are inside the tree to author scripts.
Editing commands (ones executable from document.execCommand) that mutate DOM like this check whether
the content is editable or not. Since VisibleSelection's validate() function makes sure the selection
is either entirely within or outside of an root editable element (editing host in the W3C spec lingo),
editing commands should never mutate a random node inside an user-agent shadow tree.

Test: editing/selection/deleteFromDocument-shadow-tree-crash.html

* page/DOMSelection.cpp:
(WebCore::DOMSelection::deleteFromDocument):

LayoutTests:

Based on a patch by Chris Dumez. Add a regression test and rebaseline a Blink test as WebKit's
new behavior matches that of Gecko instead of Blink.

* editing/selection/deleteFromDocument-shadow-tree-crash-expected.txt: Added.
* editing/selection/deleteFromDocument-shadow-tree-crash.html: Added.
* imported/blink/editing/selection/deleteFromDocument-crash-expected.html:


  Commit: 602881529538bf723ee3316a90bf3fed6c74e66c
      https://github.com/WebKit/WebKit/commit/602881529538bf723ee3316a90bf3fed6c74e66c
  Author: Ryosuke Niwa <rniwa at webkit.org>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/html/script-must-not-run-when-child-is-adopted-expected.txt
    A LayoutTests/fast/html/script-must-not-run-when-child-is-adopted.html
    A LayoutTests/fast/html/script-must-not-run-when-child-is-removed-expected.txt
    A LayoutTests/fast/html/script-must-not-run-when-child-is-removed.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/dom/CharacterData.cpp
    M Source/WebCore/dom/ContainerNode.cpp
    M Source/WebCore/dom/ContainerNode.h
    M Source/WebCore/dom/ContainerNodeAlgorithms.cpp
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/dom/Element.cpp
    M Source/WebCore/dom/EventDispatcher.cpp
    M Source/WebCore/dom/EventTarget.cpp
    M Source/WebCore/dom/NoEventDispatchAssertion.h
    M Source/WebCore/dom/Node.cpp
    M Source/WebCore/dom/ScriptElement.cpp
    M Source/WebCore/dom/ScriptElement.h
    M Source/WebCore/dom/WebKitNamedFlow.cpp
    M Source/WebCore/html/HTMLElement.cpp
    M Source/WebCore/html/HTMLElement.h
    M Source/WebCore/html/HTMLMediaElement.cpp
    M Source/WebCore/html/HTMLScriptElement.cpp
    M Source/WebCore/html/HTMLTextFormControlElement.cpp
    M Source/WebCore/html/track/VTTCue.cpp
    M Source/WebCore/loader/cache/CachedSVGFont.cpp
    M Source/WebCore/svg/SVGScriptElement.cpp

  Log Message:
  -----------
  Merge r211965 - Adopting a child node of a script element can run script
https://bugs.webkit.org/show_bug.cgi?id=167318

Patch by Ryosuke Niwa <rniwa at webkit.org> on 2017-02-09
Reviewed by Darin Adler.

Source/WebCore:

The bug was caused by ScriptElement::childrenChanged indiscriminately running the script.
Do this only if some node has been inserted as spec'ed:

https://html.spec.whatwg.org/multipage/scripting.html#script-processing-model
"The script element is connected and a node or document fragment is inserted into
the script element, after any script elements inserted at that time."

Split NonContentsChildChanged into NonContentsChildInserted and NonContentsChildRemoved to disambiguate
non-contents child such as text and element being removed or inserted. New behavior matches that of
Gecko and Chrome as well as the latest HTML5 specification.

Also deploy NoEventDispatchAssertion in more places. Unfortunately, this results in some DOM trees
internal to WebKit to be mutated while there is NoEventDispatchAssertion in the stack. Added a new RAII
object "EventAllowedScope" to temporarily disable this assertion within such a tree. CachedSVGFont's
ensureCustomFontData used to completely disable this assertion but we no longer have to do this either.

To clarify the new semantics, renamed isEventDispatchForbidden to isEventAllowedInMainThread with
the negated boolean value, and added a new variant isEventDispatchAllowedInSubtree, which checks
isEventDispatchForbidden() is true or if the node was one of an internal DOM node or its descendent
held by EventAllowedScope.

Inspired by https://chromium.googlesource.com/chromium/src/+/604e798ec6ee30f44d57a5c4a44ce3dab3a871ed

Tests: fast/html/script-must-not-run-when-child-is-adopted.html
       fast/html/script-must-not-run-when-child-is-removed.html

* dom/CharacterData.cpp:
(WebCore::CharacterData::notifyParentAfterChange): Added NoEventDispatchAssertion.
* dom/ContainerNode.cpp:
(WebCore::ContainerNode::insertBefore): Added NoEventDispatchAssertion around TreeScope's adoptIfNeeded
and insertBeforeCommon as done elsewhere.
(WebCore::ContainerNode::appendChildCommon): Added NoEventDispatchAssertion.
(WebCore::ContainerNode::changeForChildInsertion): Use NonContentsChildInserted here.
(WebCore::ContainerNode::notifyChildRemoved): Added NoEventDispatchAssertion.
(WebCore::ContainerNode::replaceChild): Moved adoptIfNeeded into NoEventDispatchAssertion.
(WebCore::ContainerNode::removeChild): Added NoEventDispatchAssertion.
(WebCore::ContainerNode::parserRemoveChild): Added NoEventDispatchAssertion.
(WebCore::ContainerNode::removeChildren): Call childrenChanged in NoEventDispatchAssertion.
(WebCore::ContainerNode::appendChildWithoutPreInsertionValidityCheck): Moved adoptIfNeeded into
NoEventDispatchAssertion.
(WebCore::dispatchChildInsertionEvents): Check the forbidden-ness more precisely.
(WebCore::dispatchChildRemovalEvents): Ditto.
* dom/ContainerNode.h:
(WebCore::ContainerNode::ChildChange::isInsertion): Added.
* dom/ContainerNodeAlgorithms.cpp:
(WebCore::notifyChildNodeInserted): Check the forbidden-ness more precisely. Here, we check against
insertionPoint since EventAllowedScope checks against the root node.
* dom/Document.cpp:
(WebCore::Document::adoptNode): Assert the node to be adopted has not been inserted back, or else
remove() had resulted in an exception before calling TreeScope::adoptIfNeeded.
* dom/Element.cpp:
(WebCore::Element::childrenChanged):
* dom/NoEventDispatchAssertion.h:
(WebCore::NoEventDispatchAssertion::isEventDispatchForbidden): Added a new variant that takes a node.
If this node is a descendent of a node "marked as safe" by EventAllowedScope, then we don't consider
the event dispatch to be forbidden.
(WebCore::NoEventDispatchAssertion::dropTemporarily): Deleted.
(WebCore::NoEventDispatchAssertion::restoreDropped): Deleted.
(WebCore::NoEventDispatchAssertion::EventAllowedScope): Added. A RAII object which marks descendants of
a given node as "safe" for the purpose of checking isEventDispatchForbidden.
(WebCore::NoEventDispatchAssertion::EventAllowedScope::EventAllowedScope): Added. There can be a chain
of EventAllowedScope objects in the stack. s_currentScope points to the most recently instantiated
RAII object, and each instance remembers prior instance.
(WebCore::NoEventDispatchAssertion::EventAllowedScope::~EventAllowedScope): Added.
(WebCore::NoEventDispatchAssertion::EventAllowedScope::isAllowedNode): Added. Returns true if the given
node is a descendent of any node held by instances of EventAllowedScope.
(WebCore::NoEventDispatchAssertion::EventAllowedScope::isAllowedNodeInternal): Added. A helper function
for isAllowedNode.
* dom/Node.cpp:
(WebCore::Node::dispatchSubtreeModifiedEvent): Check the forbidden-ness more precisely.
* dom/ScriptElement.cpp:
(WebCore::ScriptElement::childrenChanged): Only prepare the script if we've inserted nodes.
(WebCore::ScriptElement::executeClassicScript): Assert isEventDispatchForbidden is false since running
arbitrary author scripts can, indeed, result dispatch any events.
* dom/ScriptElement.h:
* html/HTMLElement.cpp:
(WebCore::textToFragment): Made this a static local function and not return an exception since there
is no way appendChild called in this function can throw an exception.
(WebCore::HTMLElement::setInnerText): Create EventAllowedScope for the fragment. It's called called by
HTMLTextAreaElement's childrenChanged to update its UA shadow tree, and it's dispatching as event on
a new fragment can't execute arbitrary scripts since it has never been exposed to author scripts.
Because of the precise-ness of this check, this does not disable the assertion for "this" element.
HTMLTextFormControlElement::setInnerTextValue explicitly creates another EventAllowedScope to mark
the shadow tree into which the fragment is inserted safe.
(WebCore::HTMLElement::setOuterText):
* html/HTMLElement.h:
* html/HTMLScriptElement.cpp:
(WebCore::HTMLScriptElement::childrenChanged):
* html/HTMLTextFormControlElement.cpp:
(WebCore::HTMLTextFormControlElement::setInnerTextValue): See above (setInnerText).
* html/track/VTTCue.cpp:
(WebCore::VTTCue::createCueRenderingTree): Create EventAllowedScope for the cloned fragment here since
the VTT tree is never exposed to author scripts.
(WebCore::VTTCue::updateDisplayTree): Ditto.
* loader/cache/CachedSVGFont.cpp:
(WebCore::CachedSVGFont::ensureCustomFontData): Use EventAllowedScope to disable assertions only on
the new SVG document we just created instead of disabling for all DOM trees.
* svg/SVGScriptElement.cpp:
(WebCore::SVGScriptElement::childrenChanged):

LayoutTests:

Added regression tests for adopting or removing a child node of a script element.
The script must not run when nodes are adopted or removed.

* fast/html/script-must-not-run-when-child-is-adopted-expected.txt: Added.
* fast/html/script-must-not-run-when-child-is-adopted.html: Added.
* fast/html/script-must-not-run-when-child-is-removed-expected.txt: Added.
* fast/html/script-must-not-run-when-child-is-removed.html: Added.


  Commit: 64e3c3ae0ec252a7cabb63ad55a55b528a74f153
      https://github.com/WebKit/WebKit/commit/64e3c3ae0ec252a7cabb63ad55a55b528a74f153
  Author: Keith Miller <keith_miller at apple.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M JSTests/ChangeLog
    A JSTests/stress/caller-native-code.js
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/runtime/JSFunction.cpp

  Log Message:
  -----------
  Merge r212009 - We should not allow Function.caller to be used on native functions
https://bugs.webkit.org/show_bug.cgi?id=165628

Patch by Keith Miller <keith_miller at apple.com> on 2017-02-09
Reviewed by Mark Lam.

JSTests:

* stress/caller-native-code.js: Added.
(f):

Source/JavaScriptCore:

Also remove unneeded dynamic cast.

* runtime/JSFunction.cpp:
(JSC::RetrieveCallerFunctionFunctor::RetrieveCallerFunctionFunctor):
(JSC::JSFunction::callerGetter):


  Commit: 41104d00ea516b8e31218398269e4efba3e70134
      https://github.com/WebKit/WebKit/commit/41104d00ea516b8e31218398269e4efba3e70134
  Author: Keith Miller <keith_miller at apple.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    M LayoutTests/js/dom/function-dot-arguments-and-caller.html

  Log Message:
  -----------
  Merge r212020 - Unreviewed, fix test for new .caller with native code caller semantics.

* js/dom/function-dot-arguments-and-caller.html:


  Commit: 6dd976de5aa4711e1160464fc142a186e89d2432
      https://github.com/WebKit/WebKit/commit/6dd976de5aa4711e1160464fc142a186e89d2432
  Author: Brent Fulgham <bfulgham at webkit.org>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    M Source/WebCore/ChangeLog

  Log Message:
  -----------
  Merge r212023 - Handle synchronous layout when setting a selection range
https://bugs.webkit.org/show_bug.cgi?id=167092
<rdar://problem/30041640>

Reviewed by Antti Koivisto.

Source/WebCore:

The 'innerTextElement' of a form control can change during layout due
to arbitrary JavaScript executing. Handle the case where the inner text
element has changed so that current render box height is while setting
a selection range.

Test: fast/forms/input-type-change-during-selection.html

* html/HTMLTextFormControlElement.cpp:
(WebCore::HTMLTextFormControlElement::setSelectionRange):

LayoutTests:

* fast/forms/input-type-change-during-selection-expected.txt: Added.
* fast/forms/input-type-change-during-selection.html: Added.


  Commit: b214ebb7f1db515d074c56f7df4d390437ffa4ed
      https://github.com/WebKit/WebKit/commit/b214ebb7f1db515d074c56f7df4d390437ffa4ed
  Author: Chris Dumez <cdumez at apple.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/forms/registerFormElement-crash-expected.txt
    A LayoutTests/fast/forms/registerFormElement-crash.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/html/FormAssociatedElement.cpp
    M Source/WebCore/html/HTMLFormElement.cpp

  Log Message:
  -----------
  Merge r212025 - Crash under HTMLFormElement::registerFormElement()
https://bugs.webkit.org/show_bug.cgi?id=167162

Patch by Chris Dumez <cdumez at apple.com> on 2017-02-09
Reviewed by Ryosuke Niwa.

Source/WebCore:

didMoveToNewDocument() was re-registering FormAttributeTargetObserver
even if the element's inDocument was not set yet. As a result, it was
possible for FormAssociatedElement::resetFormOwner() to be called
when the element was in the tree but with its inDocument still being
false (because insertedInto() has not been called yet). This could
end up calling HTMLFormElement::registerFormElement() even though
the element is still recognized as detached. This is an issue because
HTMLFormElement::m_associatedElements's order and its corresponding
indexes (m_associatedElementsBeforeIndex / m_associatedElementsAfterIndex)
rely on the position of the element with regards to the form element
(before / inside / after).

To address the issue, we now only register the FormAttributeTargetObserver
in didMoveToNewDocument() if the inDocument flag is set to true. This
is similar to what is done at other call sites of
resetFormAttributeTargetObserver(). We also ignore the form content
attribute in HTMLFormElement::formElementIndex() if the element is
not connected.

As per the HTML specification [1], the form content attribute is only
taken if the element is connected (i.e. inDocument flag is true).

Note that FormAssociatedElement::findAssociatedForm() was already
ignoring the form content attribute if the element is disconnected.

[1] https://html.spec.whatwg.org/#reset-the-form-owner (step 3)

Test: fast/forms/registerFormElement-crash.html

* html/FormAssociatedElement.cpp:
(WebCore::FormAssociatedElement::didMoveToNewDocument):
Only call resetFormAttributeTargetObserver() if inDocument flag is set,
similarly to what is done at other call sites.

(WebCore::FormAssociatedElement::resetFormAttributeTargetObserver):
Add an assertion to make sure no one call this method on an element that
is not connected.

* html/HTMLFormElement.cpp:
(WebCore::HTMLFormElement::formElementIndex):
Ignore the form content attribute if the element is not connected, as
per the HTML specification [1].

LayoutTests:

Add layout test coverage.

* fast/forms/registerFormElement-crash-expected.txt: Added.
* fast/forms/registerFormElement-crash.html: Added.


  Commit: 2963fa4cd91b1a387dd2c14d2bfed0e69f18b99f
      https://github.com/WebKit/WebKit/commit/2963fa4cd91b1a387dd2c14d2bfed0e69f18b99f
  Author: Antti Koivisto <antti at apple.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/html/details-close-modify-open-expected.html
    A LayoutTests/fast/html/details-close-modify-open.html
    A LayoutTests/fast/shadow-dom/slot-remove-mutate-add-expected.html
    A LayoutTests/fast/shadow-dom/slot-remove-mutate-add.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/dom/SlotAssignment.cpp

  Log Message:
  -----------
  Merge r212027 - Details element doesn't work correctly when mutating content between closing and opening
https://bugs.webkit.org/show_bug.cgi?id=167310

Patch by Antti Koivisto <antti at apple.com> on 2017-02-09
Reviewed by Ryosuke Niwa.

Source/WebCore:

Tests: fast/html/details-close-modify-open.html
       fast/shadow-dom/slot-remove-mutate-add.html

* dom/SlotAssignment.cpp:
(WebCore::SlotAssignment::didChangeSlot):

    Always reset the slot assignment when content is mutated.

LayoutTests:

* fast/html/details-close-modify-open-expected.html: Added.
* fast/html/details-close-modify-open.html: Added.
* fast/shadow-dom/slot-remove-mutate-add-expected.html: Added.
* fast/shadow-dom/slot-remove-mutate-add.html: Added.


  Commit: 6ddeba96e4b83e1f5050944e51043ccfe0167682
      https://github.com/WebKit/WebKit/commit/6ddeba96e4b83e1f5050944e51043ccfe0167682
  Author: Ryosuke Niwa <rniwa at webkit.org>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/html/details-summary-slot-expected.html
    A LayoutTests/fast/html/details-summary-slot.html
    A LayoutTests/fast/shadow-dom/shadow-slot-attribute-change-crash-expected.txt
    A LayoutTests/fast/shadow-dom/shadow-slot-attribute-change-crash.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/dom/Element.cpp
    M Source/WebCore/dom/ShadowRoot.h
    M Source/WebCore/dom/SlotAssignment.h
    M Source/WebCore/html/HTMLSummaryElement.cpp

  Log Message:
  -----------
  Merge r212028 - Crash in render tree after dynamically mutating the slot value
https://bugs.webkit.org/show_bug.cgi?id=167502

Patch by Ryosuke Niwa <rniwa at webkit.org> on 2017-02-09
Reviewed by Antti Koivisto.

Source/WebCore:

The crash was caused by attributeChanged not destructing the render tree after an assigned element had been
removed from its slot. Since the style resolver can no longer find this element in the flat tree, we need to
delete its render object as if the element had been removed from the DOM tree.

Tests: fast/html/details-summary-slot.html
       fast/shadow-dom/shadow-slot-attribute-change-crash.html

* dom/Element.cpp:
(WebCore::Element::attributeChanged):
* html/HTMLSummaryElement.cpp:
(WebCore::SummarySlotElement): Added. Always use the default slot regardless of the slot attribute's value.
(WebCore::HTMLSummaryElement::create): Use SummarySlotElement

LayoutTests:

Added regression tests for the crash, and one for assigning non-empty slot value to a child
of a summary element. The slot attribute should always be ignored since the fact summary
element has its own shadow tree is an implementation detail that should never be exposed.

* fast/html/details-summary-slot-expected.html: Added.
* fast/html/details-summary-slot.html: Added.
* fast/shadow-dom/shadow-slot-attribute-change-crash-expected.txt: Added.
* fast/shadow-dom/shadow-slot-attribute-change-crash.html: Added.


  Commit: 1073ddbfd5ccb5f0aa2a95ea377c2a4c09e7866a
      https://github.com/WebKit/WebKit/commit/1073ddbfd5ccb5f0aa2a95ea377c2a4c09e7866a
  Author: Chris Dumez <cdumez at apple.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/events/currentTarget-gc-crash-expected.txt
    A LayoutTests/fast/events/currentTarget-gc-crash.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/dom/Event.cpp
    M Source/WebCore/dom/Event.h

  Log Message:
  -----------
  Merge r212029 - Make sure Event keeps its current target element alive
https://bugs.webkit.org/show_bug.cgi?id=167885
<rdar://problem/30376972>

Patch by Chris Dumez <cdumez at apple.com> on 2017-02-09
Reviewed by Brent Fulgham.

Source/WebCore:

Make sure Event keeps its current target element alive to avoid
crashes if it is accessed by JS after it has been garbage collected.

Test: fast/events/currentTarget-gc-crash.html

* dom/Event.cpp:
(WebCore::Event::setCurrentTarget):
* dom/Event.h:
(WebCore::Event::currentTarget):

LayoutTests:

Add layout test reproducing the crash.

* fast/events/currentTarget-gc-crash-expected.txt: Added.
* fast/events/currentTarget-gc-crash.html: Added.


  Commit: f75b5ce261a9da2025aca227652fe53922d77ba9
      https://github.com/WebKit/WebKit/commit/f75b5ce261a9da2025aca227652fe53922d77ba9
  Author: Ryosuke Niwa <rniwa at webkit.org>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/dom/Attr/make-unique-element-data-while-replacing-attr-expected.txt
    A LayoutTests/fast/dom/Attr/make-unique-element-data-while-replacing-attr.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/dom/Element.cpp

  Log Message:
  -----------
  Merge r212214 - REGRESSION (r179497): Crash inside setAttributeNode
https://bugs.webkit.org/show_bug.cgi?id=168161
<rdar://problem/30451581>

Reviewed by Andreas Kling.

Source/WebCore:

The bug was caused by setAttributeNode calling setAttributeInternal with the same element data as the one used
to call removeAttributeInternal despite of the fact removeAttributeInternal could have invoked arbitrary scripts
and mutated element's m_elementData.

Fixed the bug by calling with setAttributeInternal with the result of new invocation of ensureUniqueElementData().

Test: fast/dom/Attr/make-unique-element-data-while-replacing-attr.html

* dom/Element.cpp:
(WebCore::Element::setAttributeNode):

LayoutTests:

Added a regression test.

* fast/dom/Attr/make-unique-element-data-while-replacing-attr-expected.txt: Added.
* fast/dom/Attr/make-unique-element-data-while-replacing-attr.html: Added.


  Commit: 176d1e129f90cb3169bd6524a82640fd5d39ab3f
      https://github.com/WebKit/WebKit/commit/176d1e129f90cb3169bd6524a82640fd5d39ab3f
  Author: Chris Dumez <cdumez at apple.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/html/HTMLAnchorElement.cpp
    M Source/WebCore/html/HTMLLinkElement.cpp
    M Source/WebCore/loader/FrameLoader.cpp
    M Source/WebCore/mathml/MathMLElement.cpp
    M Source/WebCore/svg/SVGAElement.cpp

  Log Message:
  -----------
  Merge r211256 - Revert r210474 it is no longer needed
https://bugs.webkit.org/show_bug.cgi?id=167487

Reviewed by Daniel Bates.

Revert r210474 it is no longer needed after r211254.

* dom/Document.cpp:
(WebCore::Document::canNavigate):
* html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::handleClick):
* html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::handleClick):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::urlSelected):
(WebCore::FrameLoader::submitForm):
(WebCore::FrameLoader::loadFrameRequest):
* mathml/MathMLElement.cpp:
(WebCore::MathMLElement::defaultEventHandler):
* svg/SVGAElement.cpp:
(WebCore::SVGAElement::defaultEventHandler):


  Commit: e38be57c1b3072c48e71eb264d972a686658ef97
      https://github.com/WebKit/WebKit/commit/e38be57c1b3072c48e71eb264d972a686658ef97
  Author: Ryosuke Niwa <rniwa at webkit.org>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    M LayoutTests/fast/css/stylesheet-candidate-nodes-crash-expected.txt
    A LayoutTests/fast/parser/adoption-agency-clear-focus-range-expected.txt
    A LayoutTests/fast/parser/adoption-agency-clear-focus-range.html
    A LayoutTests/fast/parser/adoption-agency-unload-iframe-1-expected.txt
    A LayoutTests/fast/parser/adoption-agency-unload-iframe-1.html
    A LayoutTests/fast/parser/adoption-agency-unload-iframe-2-expected.txt
    A LayoutTests/fast/parser/adoption-agency-unload-iframe-2.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/dom/ContainerNode.cpp
    M Source/WebCore/html/parser/HTMLConstructionSite.cpp

  Log Message:
  -----------
  Merge r212218 - parserRemoveChild should unload subframes
https://bugs.webkit.org/show_bug.cgi?id=168151

Reviewed by Darin Adler.

Source/WebCore:

Fix the bug that the adoption agency algorithm does not unload subframes as it disconnects nodes.

Also moved calls to nodeWillBeRemoved inside NoEventDispatchAssertion to expand on r211965.

Tests: fast/parser/adoption-agency-clear-focus-range.html
       fast/parser/adoption-agency-unload-iframe-1.html
       fast/parser/adoption-agency-unload-iframe-2.html

* dom/ContainerNode.cpp:
(WebCore::ContainerNode::takeAllChildrenFrom): Rewritten using idioms used in removeChildren and parserAppendChild.

Disconnect all subframes first since this can synchronously dispatch an unload event. Then update DOM ranges,
the focused element, and other states in the document.

Second, use the regular removeBetween, notifyChildNodeRemoved, childrenChanged sequence of calls to disconnect nodes
instead of a single call to removeDetachedChildren to properly disconnect child nodes since those nodes may have
already come live due to execution of synchronous scripts prior to the adoption agency algorithm has run, or in
response to the unload event we just dispatched.

Third, append these nodes using parserAppendChild to avoid dispatching mutation events.

(WebCore::willRemoveChild): Removed the call to nodeWillBeRemoved. It's now called within NoEventDispatchAssertion
in each call site of willRemoveChild and willRemoveChildren.
(WebCore::willRemoveChildren): Ditto.
(WebCore::ContainerNode::removeChild): Call nodeWillBeRemoved inside NoEventDispatchAssertion.
(WebCore::ContainerNode::replaceAllChildren): Call nodeWillBeRemoved inside NoEventDispatchAssertion.
(WebCore::ContainerNode::parserRemoveChild): Disconnect subframes and update document's states.

* html/parser/HTMLConstructionSite.cpp:
(WebCore::executeTakeAllChildrenAndReparentTask): Add a release assert that new parent does not already have a parent.

LayoutTests:

Add two W3C-style testharness tests for unloading iframes inside the adoption agency algorithm.

Also added a test to make sure ContainerNode::takeAllChildrenFrom adjusts the focused element and DOM ranges.

* fast/css/stylesheet-candidate-nodes-crash-expected.txt: Rebaselined. The difference comes from the fact
iframe now is unloaded in parserRemoveChild as expected and then reloaded in parserAppendChild inside
insertErrorMessageBlock as opposed to after the parser had completed as if the iframe had never been detached.
* fast/parser/adoption-agency-clear-focus-range-expected.txt: Added.
* fast/parser/adoption-agency-clear-focus-range.html: Added.
* fast/parser/adoption-agency-unload-iframe-1-expected.txt: Added.
* fast/parser/adoption-agency-unload-iframe-1.html: Added.
* fast/parser/adoption-agency-unload-iframe-2-expected.txt: Added.
* fast/parser/adoption-agency-unload-iframe-2.html: Added.


  Commit: 35df9076e8f9c192b7560be1b6047467014b6a46
      https://github.com/WebKit/WebKit/commit/35df9076e8f9c192b7560be1b6047467014b6a46
  Author: Ryosuke Niwa <rniwa at webkit.org>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/parser/adoption-agency-unload-iframe-3-expected.txt
    A LayoutTests/fast/parser/adoption-agency-unload-iframe-3.html
    A LayoutTests/fast/parser/adoption-agency-unload-iframe-4-expected.txt
    A LayoutTests/fast/parser/adoption-agency-unload-iframe-4.html
    A LayoutTests/fast/parser/xml-error-unload-iframe-expected.txt
    A LayoutTests/fast/parser/xml-error-unload-iframe.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/dom/ContainerNode.cpp
    M Source/WebCore/html/parser/HTMLConstructionSite.cpp
    M Source/WebCore/xml/XMLErrors.cpp
    M Source/WebCore/xml/parser/XMLDocumentParser.cpp

  Log Message:
  -----------
  Merge r212621 - REGRESSION(r212218): Assertion failures in and after parserRemoveChild
https://bugs.webkit.org/show_bug.cgi?id=168458

Reviewed by Antti Koivisto.

Source/WebCore:

The bug was caused by parserRemoveChild not preceeding to remove oldChild even when
oldChild had been inserted elsewhere during unload evnets of the disconnected frames.
Fixed the bug by checking this condition and exiting early.

Also fixed various callers of parserRemoveChild to not call parserAppendChild when
the removed node had already been inserted elsewhere by scripts.

Tests: fast/parser/adoption-agency-unload-iframe-3.html
       fast/parser/adoption-agency-unload-iframe-4.html
       fast/parser/xml-error-unload-iframe.html

* dom/ContainerNode.cpp:
(WebCore::ContainerNode::parserRemoveChild): Exit early when the node had been
inserted elsewhere while firing unload events. Also moved the call to
notifyRemovePendingSheetIfNeeded outside NoEventDispatchAssertion since it can
synchrnously fire a focus event.
(WebCore::ContainerNode::parserAppendChild): Moved adoptNode call to inside
NoEventDispatchAssertion since adoptNode call here should never mutate DOM.
* html/parser/HTMLConstructionSite.cpp:
(WebCore::executeReparentTask): Added an early exit when the node had already been
inserted elsewhere.
(WebCore::executeInsertAlreadyParsedChildTask): Ditto.
* xml/XMLErrors.cpp:
(WebCore::XMLErrors::insertErrorMessageBlock): Ditto.
* xml/parser/XMLDocumentParser.cpp:
(WebCore::XMLDocumentParser::end): Fixed a crash unveiled by one of the test cases.
Exit early when insertErrorMessageBlock detached the parser (by author scripts).
(WebCore::XMLDocumentParser::finish): Keep the parser alive until we exit.

LayoutTests:

Add tests to make sure parserAppendChild aren't called when a node removed by parserRemoveChild
had already been been inserted elsewhere by scripts.

* fast/parser/adoption-agency-unload-iframe-3-expected.txt: Added.
* fast/parser/adoption-agency-unload-iframe-3.html: Added.
* fast/parser/adoption-agency-unload-iframe-4-expected.txt: Added.
* fast/parser/adoption-agency-unload-iframe-4.html: Added.
* fast/parser/xml-error-unload-iframe-expected.txt: Added.
* fast/parser/xml-error-unload-iframe.html: Added.


  Commit: f7e1f467770e2bdf8439fc5ef807c2e10c392ed6
      https://github.com/WebKit/WebKit/commit/f7e1f467770e2bdf8439fc5ef807c2e10c392ed6
  Author: Mark Lam <mark.lam at apple.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M JSTests/ChangeLog
    A JSTests/stress/b3-delete-orphans-should-neutralize-upsilons-with-dead-phis.js
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/b3/B3Procedure.cpp

  Log Message:
  -----------
  Merge r212022 - B3::Procedure::deleteOrphans() should neutralize upsilons with dead phis.
https://bugs.webkit.org/show_bug.cgi?id=167437
<rdar://problem/30198083>

Patch by Mark Lam <mark.lam at apple.com> on 2017-02-09
Reviewed by Filip Pizlo.

JSTests:

* stress/b3-delete-orphans-should-neutralize-upsilons-with-dead-phis.js: Added.

Source/JavaScriptCore:

* b3/B3Procedure.cpp:
(JSC::B3::Procedure::deleteOrphans):


  Commit: 1d423035d96219fd182db57d3ea4e378d96fa1a6
      https://github.com/WebKit/WebKit/commit/1d423035d96219fd182db57d3ea4e378d96fa1a6
  Author: Chris Dumez <cdumez at apple.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/forms/formsubmission-appendFormData-crash-expected.txt
    A LayoutTests/fast/forms/formsubmission-appendFormData-crash.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/html/HTMLObjectElement.cpp
    M Source/WebCore/loader/FormSubmission.cpp

  Log Message:
  -----------
  Merge r212026 - Crash under FormSubmission::create()
https://bugs.webkit.org/show_bug.cgi?id=167200
<rdar://problem/30096323>

Patch by Chris Dumez <cdumez at apple.com> on 2017-02-09
Reviewed by Darin Adler.

Source/WebCore:

The issue is that FormSubmission::create() was iterating over
form.associatedElements() as was calling Element::appendFormData()
in the loop. HTMLObjectElement::appendFormData() was calling
pluginWidget(PluginLoadingPolicy::Load) which causes a synchronous
layout and can fire events (such as focus event) synchronously.
Firing those events synchronously allows the JS to modify the
form.associatedElements() vector we are currently iterating on.

To avoid this issue, we now call pluginWidget(PluginLoadingPolicy::DoNotLoad)
in HTMLObjectElement::appendFormData() as we are not allowed to fire
synchronous events at this point. I also added a security assertion
in FormSubmission::create() to catch cases where we fire JS events
while iterating over the form associated elements to more easily
notice these things in the future.

Test: fast/forms/formsubmission-appendFormData-crash.html

* html/HTMLObjectElement.cpp:
(WebCore::HTMLObjectElement::appendFormData):
* loader/FormSubmission.cpp:
(WebCore::FormSubmission::create):

LayoutTests:

Add layout test coverage.

* fast/forms/formsubmission-appendFormData-crash-expected.txt: Added.
* fast/forms/formsubmission-appendFormData-crash.html: Added.


  Commit: b9ad08a24385bb44e89b9f1c6a49fa3a98953c6d
      https://github.com/WebKit/WebKit/commit/b9ad08a24385bb44e89b9f1c6a49fa3a98953c6d
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/Platform/IPC/Connection.cpp
    M Source/WebKit2/Platform/IPC/Connection.h
    M Source/WebKit2/Platform/IPC/glib/GSocketMonitor.cpp
    M Source/WebKit2/Platform/IPC/glib/GSocketMonitor.h
    M Source/WebKit2/Platform/IPC/unix/ConnectionUnix.cpp
    A Source/WebKit2/Platform/IPC/unix/UnixMessage.h
    M Source/WebKit2/PlatformGTK.cmake

  Log Message:
  -----------
  Merge r213030 - [GTK] Hangs when showing Google search results
https://bugs.webkit.org/show_bug.cgi?id=168699

Reviewed by Žan Doberšek.

Connection::sendOutgoingMessage() can poll forever if sendmsg fails with EAGAIN or EWOULDBLOCK. For example if
socket read buffers are full, poll will be blocked until we read the pending data, but we can't read because
the thread is blocked in the poll. In case of EAGAIN/EWOULDBLOCK we should poll using the run loop, to allow
reads to happen in thread while we wait for the socket to be writable again. In the GTK+ port we use
GSocketMonitor to poll socket file descriptor without blocking, using the run loop. This patch renames the
socket monitor as readSocketMonitor and adds another one for polling output. When sendmsg fails with
EAGAIN/EWOULDBLOCK, the pending message is saved and the write monitor starts polling. Once the socket is
writable again we send the pending message. Helper class MessageInfo and a new one UnixMessage have been moved
to its own header file to be able to use std::unique_ptr member to save the pending message.

* Platform/IPC/Connection.cpp: Include UnixMessage.h as required by std::unique_ptr.
* Platform/IPC/Connection.h: Add write socket monitor and also keep the GSocket as a member to reuse it.
* Platform/IPC/glib/GSocketMonitor.cpp: Use Function instead of std::function.
(IPC::GSocketMonitor::start):
* Platform/IPC/glib/GSocketMonitor.h:
* Platform/IPC/unix/ConnectionUnix.cpp:
(IPC::Connection::platformInitialize): Initialize the GSocket here since we rely on it to take the ownership of
the descriptor. We were leaking it if the connection was invalidated without being opened.
(IPC::Connection::platformInvalidate): Destroy the GSocket even when not connected. Also stop the write monitor.
(IPC::Connection::processMessage):
(IPC::Connection::open):
(IPC::Connection::platformCanSendOutgoingMessages): Return false if we have a pending message to ensure
Connection doesn't try to send more messages until the pending message is dispatched. We don't need to check
m_isConnected because the caller already checks that.
(IPC::Connection::sendOutgoingMessage): Split it in two. This creates and prepares a UnixMessage and then calls
sendOutputMessage() to do the rest.
(IPC::Connection::sendOutputMessage): Send the message, or save it if sendmsg fails with EAGAIN or EWOULDBLOCK
to be sent later when the socket is writable.
* Platform/IPC/unix/UnixMessage.h: Added.
(IPC::MessageInfo::MessageInfo):
(IPC::MessageInfo::setMessageBodyIsOutOfLine):
(IPC::MessageInfo::isMessageBodyIsOutOfLine):
(IPC::MessageInfo::bodySize):
(IPC::MessageInfo::attachmentCount):
(IPC::UnixMessage::UnixMessage):
(IPC::UnixMessage::~UnixMessage):
(IPC::UnixMessage::attachments):
(IPC::UnixMessage::messageInfo):
(IPC::UnixMessage::body):
(IPC::UnixMessage::bodySize):
(IPC::UnixMessage::appendAttachment):
* PlatformGTK.cmake:


  Commit: aa4c0c46a12c9d09622dc28d3c477fc2a890fb11
      https://github.com/WebKit/WebKit/commit/aa4c0c46a12c9d09622dc28d3c477fc2a890fb11
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/WebProcess/WebPage/gtk/AcceleratedSurfaceX11.cpp
    M Source/WebKit2/WebProcess/WebPage/gtk/AcceleratedSurfaceX11.h

  Log Message:
  -----------
  Merge r213061 - [GTK] Rendering artifacts when resizing the window in X11 with AC mode enabled
https://bugs.webkit.org/show_bug.cgi?id=168728

Reviewed by Žan Doberšek.

This happens because the pixmap we create from the redirected window is uninitialized until the threaded
compositor renders into it. We should always initialize the pixmap right after it's created.

* WebProcess/WebPage/gtk/AcceleratedSurfaceX11.cpp:
(WebKit::defaultVisual): Helper static method to get the default GdkVisual.
(WebKit::AcceleratedSurfaceX11::AcceleratedSurfaceX11): Use createPixmap().
(WebKit::AcceleratedSurfaceX11::createPixmap): Create and initialize the pixmap.
(WebKit::AcceleratedSurfaceX11::resize): Use createPixmap().
* WebProcess/WebPage/gtk/AcceleratedSurfaceX11.h:


  Commit: 16853746682fee2625e7331d642daece29d23326
      https://github.com/WebKit/WebKit/commit/16853746682fee2625e7331d642daece29d23326
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h
    M Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp

  Log Message:
  -----------
  Merge r213060 - [GTK] Flickering when leaving accelerated compositing mode
https://bugs.webkit.org/show_bug.cgi?id=168911

Reviewed by Žan Doberšek.

It doesn't always happen, and it's too fast, more noticeable in websites with a dark background, because we are
drawing a single white frame. This happens when we leave AC mode during the layer flush that schedules an update
on the compositor, which at that point only clears the area and renders nothing. However,
CoordinatedGraphicsScene::paintToCurrentGLContext() always renders a white background when no web view color has
been set. And that's the white frame we get. We could prevent that last update from happening by checking if we
still have a graphics root layer after syncDisplayState() in the layer flush, the same way we check the layer
tree host is still valid.

* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
(WebKit::CoordinatedLayerTreeHost::layerFlushTimerFired):


  Commit: fce029e26e4b29cf0064ac4a462cfe0d8a2200ba
      https://github.com/WebKit/WebKit/commit/fce029e26e4b29cf0064ac4a462cfe0d8a2200ba
  Author: Tomáš Popela <tpopela at redhat.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/editing/pasteboard/drag-drop-copy-content-expected.txt
    A LayoutTests/editing/pasteboard/drag-drop-copy-content.html
    M LayoutTests/platform/gtk/TestExpectations
    M LayoutTests/platform/mac-wk2/TestExpectations
    M Source/WebCore/ChangeLog
    M Source/WebCore/page/gtk/DragControllerGtk.cpp
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/gtk/DragAndDropHandler.cpp

  Log Message:
  -----------
  Merge r212881 - [GTK] Drag and drop is always moving the content even if copy is requested
https://bugs.webkit.org/show_bug.cgi?id=168424

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Drag and drop is always moving the content around even if the copy is
requested (i.e. by pressing the Control key).

Test: editing/pasteboard/drag-drop-copy-content.html

* page/gtk/DragControllerGtk.cpp:
(WebCore::DragController::isCopyKeyDown):

Source/WebKit2:

Drag and drop is always moving the content around even if the copy is
requested (i.e. by pressing the Control key).

* UIProcess/gtk/DragAndDropHandler.cpp:
(WebKit::DragAndDropHandler::drop):

LayoutTests:

Mark the editing/pasteboard/drag-drop-copy-content.html as failing
as WTR doesn't know how to perform drag and drop in WK2. Also the
test does not pass on the mac WK1, created a bug for it.

* platform/efl/TestExpectations:
* platform/gtk-wayland/TestExpectations:
* platform/gtk/TestExpectations:
* platform/mac-wk2/TestExpectations:
* platform/mac/TestExpectations:


  Commit: 5f09958a9729577a485b925c89c2fcafd6d0c6a5
      https://github.com/WebKit/WebKit/commit/5f09958a9729577a485b925c89c2fcafd6d0c6a5
  Author: Tomáš Popela <tpopela at redhat.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/gtk/DragAndDropHandler.cpp

  Log Message:
  -----------
  Merge r213638 - Correctly process the return value of gdk_drag_context_get_selected_action()

Reviewed by Carlos Garcia Campos.

It returns the action itself and not the bitmask.

* UIProcess/gtk/DragAndDropHandler.cpp:
(WebKit::DragAndDropHandler::drop):


  Commit: d525ea2774e042b688ae13dab72eaa4955ba00a9
      https://github.com/WebKit/WebKit/commit/d525ea2774e042b688ae13dab72eaa4955ba00a9
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h

  Log Message:
  -----------
  Merge r212889 - [GStreamer] Several layout tests trigger GStreamer-CRITICAL **: gst_bin_get_by_name: assertion 'GST_IS_BIN (bin)' failed
https://bugs.webkit.org/show_bug.cgi?id=167016

Reviewed by Xabier Rodriguez-Calvar.

This is because we create AudioSourceProviderGStreamer objects that are never loaded. In the destructor the
AudioSourceProviderGStreamer calls gst_bin_get_by_name() on its m_audioSinkBin that is nullptr. We could simply
check m_audioSinkBin in the destructor, but I think it's better to simply not create
AudioSourceProviderGStreamer for nothing. MediaPlayerPrivateGStreamer should create the AudioSourceProvider on demand.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::MediaPlayerPrivateGStreamer): Do not create the AudioSourceProvider.
(WebCore::MediaPlayerPrivateGStreamer::createAudioSink): Call ensureAudioSourceProvider() before using m_audioSourceProvider.
(WebCore::MediaPlayerPrivateGStreamer::ensureAudioSourceProvider): Create the AudioSourceProvider if needed.
(WebCore::MediaPlayerPrivateGStreamer::audioSourceProvider): Ensure and return the m_audioSourceProvider.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:


  Commit: 537f74b4cad25422446d76f4618f3219a03d1462
      https://github.com/WebKit/WebKit/commit/537f74b4cad25422446d76f4618f3219a03d1462
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp
    M Source/WebKit2/UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp
    M Source/WebKit2/UIProcess/gtk/WebPageProxyGtk.cpp
    M Source/WebKit2/WebProcess/Plugins/PluginView.cpp

  Log Message:
  -----------
  Merge r212891 - [GTK] Crash attempting to load Flash plugin in Wayland
https://bugs.webkit.org/show_bug.cgi?id=163159

Reviewed by Michael Catanzaro.

The problem is that we check if the current diplay is X11 or Wayland also in the plugin process, but with GTK2
plugins the display is always X11. We should early reject plugins requiring GTK2 in the UI process when the
current display is Wayland.

* UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp:
(WebKit::PluginInfoStore::getPluginInfo):
* UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:
(WebKit::PluginProcessProxy::scanPlugin):
* UIProcess/gtk/WebPageProxyGtk.cpp:
(WebKit::WebPageProxy::createPluginContainer): Add an assert to ensure this message is never received on a
non-X11 display.
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::createPluginContainer): Never send CreatePluginContainer message to the UI process if the
display is not X11.


  Commit: 04f72b6cb70c84adf99de612348652d9f207ff36
      https://github.com/WebKit/WebKit/commit/04f72b6cb70c84adf99de612348652d9f207ff36
  Author: Miguel Gomez <magomez at igalia.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/glx/GLContextGLX.cpp

  Log Message:
  -----------
  Merge r212968 - [GTK] WebkitWebProcess crashes on exit on nvidia if threaded compositing is enabled
https://bugs.webkit.org/show_bug.cgi?id=165522

Reviewed by Carlos Garcia Campos.

Before destrying a GLContextGLX we need to set the default framebufer to avoid a bug
in some nvidia drivers. Ensure that we set the context as current before performing
that operation, and set the appropriate current context after doing so.

No new tests.

* platform/graphics/glx/GLContextGLX.cpp:
(WebCore::GLContextGLX::~GLContextGLX):


  Commit: 12b12194a39978117a38a24144a0257a8d586d1e
      https://github.com/WebKit/WebKit/commit/12b12194a39978117a38a24144a0257a8d586d1e
  Author: Tomáš Popela <tpopela at redhat.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp

  Log Message:
  -----------
  Merge r213219 - [Cairo] Incorrectly determining height in GraphicsContext::roundToDevicePixels()
https://bugs.webkit.org/show_bug.cgi?id=169031

Reviewed by Carlos Garcia Campos.

We should compare if height is between -1 and 0 and not mixing height
and width together.

* platform/graphics/cairo/GraphicsContextCairo.cpp:
(WebCore::GraphicsContext::roundToDevicePixels):


  Commit: a18ed78e10fab290aa2aa69a57c9df80ba601e8d
      https://github.com/WebKit/WebKit/commit/a18ed78e10fab290aa2aa69a57c9df80ba601e8d
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp
    M Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp

  Log Message:
  -----------
  Merge r213224 - [GTK] fast/canvas/canvas-createPattern-video-loading.html makes its subsequent test timeout
https://bugs.webkit.org/show_bug.cgi?id=169019

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

The timeout happens normally when the media player is deleted and the pipeline state is set to NULL. The call to
gst_element_set_state() never returns because of different deadlocks with the video sink. Sometimes the deadlock
happens with the sample mutex used by VideoRenderRequestScheduler. VideoRenderRequestScheduler::requestRender()
calls webkitVideoSinkRepaintRequested() with the lock held, that ends up calling
MediaPlayerPrivateGStreamerBase::triggerRepaint(). When rendering can't be accelerated the draw timer is
scheduled and triggerRepaint blocks until the timer is fired. If the media player is destroyed before the timer
is fired, when setting the pipeline state to NULL, other VideoRenderRequestScheduler methods can be called, like
stop() that tries to get the sample mutex that is still held by requestRender(). So, first we need to make
sure that requestRender() releases the lock before calling webkitVideoSinkRepaintRequested(). But that's not
enough, we also need to ensure that the pipeline is set to NULL state after everyting has been properly
stopped. This is currently done in ~MediaPlayerPrivateGStreamer that happens before
~MediaPlayerPrivateGStreamerBase, so gst_element_set_state() is hanging before allowing the
MediaPlayerPrivateGStreamerBase to be cleaned up. We should move the call to the end of
~MediaPlayerPrivateGStreamerBase and ensure the draw timer and mutex are properly cleaned up before.

Fixes: fast/canvas/canvas-createPattern-video-loading.html

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::~MediaPlayerPrivateGStreamer): Do not reset pipeline here.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase): Stop the draw mutex and notify the
lock to ensure we unblock. Do the pipeline reset at the end.
* platform/graphics/gstreamer/VideoSinkGStreamer.cpp:
(VideoRenderRequestScheduler::requestRender): Release the mutex lock before calling webkitVideoSinkRepaintRequested().

LayoutTests:

Unskip tests previously skipped because of this timeout.

* platform/gtk/TestExpectations:


  Commit: d0c1bb60556fb3b394372d431a104f60e71ced4c
      https://github.com/WebKit/WebKit/commit/d0c1bb60556fb3b394372d431a104f60e71ced4c
  Author: Tomáš Popela <tpopela at redhat.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M Source/JavaScriptCore/ChangeLog
    M Source/JavaScriptCore/runtime/JSGlobalObject.cpp

  Log Message:
  -----------
  Merge r213275 - Incorrect RELEASE_ASSERT in JSGlobalObject::addStaticGlobals()
https://bugs.webkit.org/show_bug.cgi?id=169034

Reviewed by Mark Lam.

It should not assign to offset, but compare to offset.

* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::addStaticGlobals):


  Commit: d910a35f12b96db031c08800b3ab85811dbeed4e
      https://github.com/WebKit/WebKit/commit/d910a35f12b96db031c08800b3ab85811dbeed4e
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp

  Log Message:
  -----------
  Merge r213276 - [GTK] Crash in WebCore::CoordinatedGraphicsLayer::notifyFlushRequired
https://bugs.webkit.org/show_bug.cgi?id=166420

Reviewed by Žan Doberšek.

This is happening when closing a page that is being inspected. When CoordinatedGraphicsLayer::removeFromParent()
is called, the coordinator has already been invalidated, so all its layers were set a nullptr coordinator. I
think it's safe to simply handle m_coordinator being nullptr in notifyFlushRequired().

* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::notifyFlushRequired): Return early if the coordinator is nullptr.


  Commit: ebed7c3a9667f71b4817d7c9c38ad0e22df06a6e
      https://github.com/WebKit/WebKit/commit/ebed7c3a9667f71b4817d7c9c38ad0e22df06a6e
  Author: Fujii Hironori <Hironori.Fujii at sony.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/ShadowBlur.cpp
    M Source/WebCore/platform/graphics/ShadowBlur.h

  Log Message:
  -----------
  Merge r213522 - ShadowBlur::calculateLayerBoundingRect doesn't need to return the enclosingIntRect of layerRect
https://bugs.webkit.org/show_bug.cgi?id=168650

Patch by Fujii Hironori <Hironori.Fujii at sony.com> on 2017-03-07
Reviewed by Simon Fraser.

No new tests, no behavior change.

* platform/graphics/ShadowBlur.h: Change the type of return value
from IntRect to IntSize.
* platform/graphics/ShadowBlur.cpp:
(WebCore::ShadowBlur::calculateLayerBoundingRect): Ditto.
(WebCore::ShadowBlur::drawRectShadow): Rename a variable layerRect layerSize.
(WebCore::ShadowBlur::drawInsetShadow): Ditto.
(WebCore::ShadowBlur::drawRectShadowWithoutTiling): Ditto.
(WebCore::ShadowBlur::drawInsetShadowWithoutTiling): Ditto.
(WebCore::ShadowBlur::beginShadowLayer): Ditto.


  Commit: 7e21fa58b996e6137b5c4fccdd1f87da68dd49bb
      https://github.com/WebKit/WebKit/commit/7e21fa58b996e6137b5c4fccdd1f87da68dd49bb
  Author: Miguel Gomez <magomez at igalia.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/fast/backgrounds/background-repeat-long-scroll-expected.html
    A LayoutTests/fast/backgrounds/background-repeat-long-scroll.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/cairo/CairoUtilities.cpp

  Log Message:
  -----------
  Merge r212431 - [GTK] scroll with transparent background not repainted after scrollY >= 32768
https://bugs.webkit.org/show_bug.cgi?id=154283

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Due to a limitation of the pixman backend, which uses 16 bits to hold signed integers, cairo is
not able to draw anything when using transformation matrices with values bigger than 32768. When
drawing patterns into large pages, the matrices values can overflow those 16 bits, so cairo doesn't
draw anything in, which causes the reported transparent backgrounds.

The patch modifies the transformation matrices both from the current context and the pattern we
are painting, to avoid them to hold values that cannot stored in 16 bits.

There's still the possibility that this happens, but it would require using a pattern with a size
bigger than 32768.

Based on a previous patch by Gwang Yoon Hwang  <yoon at igalia.com>.

Test: fast/backgrounds/background-repeat-long-scroll.html

* platform/graphics/cairo/CairoUtilities.cpp:
(WebCore::drawPatternToCairoContext):

LayoutTests:

Test to ensure that the background pattern of an element is properly being drawn when it's in a position
bigger than 32768.

* fast/backgrounds/background-repeat-long-scroll-expected.html: Added.
* fast/backgrounds/background-repeat-long-scroll.html: Added.


  Commit: de173a38e34aefb95e288a7f29f55cf2cb256222
      https://github.com/WebKit/WebKit/commit/de173a38e34aefb95e288a7f29f55cf2cb256222
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/cairo/CairoUtilities.cpp
    M Source/WebCore/platform/graphics/cairo/CairoUtilities.h
    M Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp

  Log Message:
  -----------
  Merge r214100 - [Cairo] Handle the blend mode in GraphicsContext::drawPattern
https://bugs.webkit.org/show_bug.cgi?id=169746

Reviewed by Žan Doberšek.

We are not taking into account the blend mode when passing the cairo operator to drawPatternToCairoContext().
This is based on patch by Žan Doberšek, just adding the toCairoOperator changes to make it easier to handle
it. Instead of checking everywhere if blend mode is Normal to decide whether to use toCairoOperator with
CompositeOperator or BlendMode, there's no a single toCairoOperator that receives both parameters, but BlendMode
is optional and defaults to Normal.

* platform/graphics/cairo/CairoUtilities.cpp:
(WebCore::toCairoCompositeOperator):
(WebCore::toCairoOperator):
* platform/graphics/cairo/CairoUtilities.h:
* platform/graphics/cairo/GraphicsContextCairo.cpp:
(WebCore::GraphicsContext::setPlatformCompositeOperation):
(WebCore::GraphicsContext::drawPattern):


  Commit: 90e7da0b11c5ea37d68146d13c6fec70ed732d60
      https://github.com/WebKit/WebKit/commit/90e7da0b11c5ea37d68146d13c6fec70ed732d60
  Author: Emanuele Aina <emanuele.aina at collabora.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/GraphicsContext3D.h
    M Source/WebCore/platform/graphics/cairo/GraphicsContext3DCairo.cpp

  Log Message:
  -----------
  Merge r214162 - [Cairo] Ensure depth and stencil renderbuffers are created on GLESv2
https://bugs.webkit.org/show_bug.cgi?id=166643

Patch by Emanuele Aina <emanuele.aina at collabora.com> on 2017-03-20
Reviewed by Darin Adler.

If the gfx device doesn't support GL_OES_packed_depth_stencil, the
separate depth and stencil buffers are not generated.

Copy what GraphicsContext3DEfl used to do and apply it in
GraphicsContext3DCairo.

The Intel gfx driver seem to tolerate unbound renderbuffers, but
enabling debugging in Mesa yields an error:

$ MESA_DEBUG=1 \
  MESA_EXTENSION_OVERRIDE=-GL_OES_packed_depth_stencil
  ./bin/MiniBrowser http://webglsamples.org/aquarium/aquarium.html
Mesa: User error: GL_INVALID_OPERATION in glRenderbufferStorage(no renderbuffer bound)

* platform/graphics/GraphicsContext3D.h:
* platform/graphics/cairo/GraphicsContext3DCairo.cpp:
(WebCore::GraphicsContext3D::GraphicsContext3D):
Ensure separate depth and stencil renderbuffers are created.
(WebCore::GraphicsContext3D::~GraphicsContext3D):
Ensure separate depth and stencil renderbuffers are released.


  Commit: 5b9249da45bd2d040d00eb17047c1556c02e4498
      https://github.com/WebKit/WebKit/commit/5b9249da45bd2d040d00eb17047c1556c02e4498
  Author: Sergio Villar Senin <svillar at igalia.com>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M LayoutTests/ChangeLog
    A LayoutTests/http/tests/security/cookies/third-party-cookie-blocking-redirect-expected.txt
    A LayoutTests/http/tests/security/cookies/third-party-cookie-blocking-redirect.html
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp
    M Source/WebKit2/ChangeLog

  Log Message:
  -----------
  Merge r214246 - [Soup] "Only from websites I visit" cookie policy is broken
https://bugs.webkit.org/show_bug.cgi?id=168912

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Do not reset the first party for cookies on redirects. That's properly done for the main
resource in DocumentLoader::willSendRequest and, in the case of subresources, is absolutely
wrong (which is what we were doing since r143931).

The most notable effect was that subresources loaded via redirects were effectively
bypassing the "no third party" policy for cookies.

Test: http/tests/security/cookies/third-party-cookie-blocking-redirect.html

* platform/network/soup/ResourceHandleSoup.cpp:
(WebCore::doRedirect):

Source/WebKit2:

Do not reset the first party for cookies on redirects. That's properly done for the main
resource in DocumentLoader::willSendRequest and, in the case of subresources, is absolutely
wrong (which is what we were doing since r143931).

The most notable effect was that subresources loaded via redirects were effectively
bypassing the "no third party" policy for cookies.

* NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::NetworkDataTaskSoup::continueHTTPRedirection):

LayoutTests:

* http/tests/security/cookies/third-party-cookie-blocking-redirect-expected.txt: Added.
* http/tests/security/cookies/third-party-cookie-blocking-redirect.html: Added.


  Commit: f4ff429342149032f9e6a4a02e95e39a1683e8df
      https://github.com/WebKit/WebKit/commit/f4ff429342149032f9e6a4a02e95e39a1683e8df
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/PlatformGTK.cmake
    M Source/WebCore/platform/graphics/cairo/CairoUtilities.cpp
    M Source/WebCore/platform/graphics/cairo/CairoUtilities.h
    M Source/WebCore/platform/graphics/freetype/FontCacheFreeType.cpp
    M Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp
    M Source/WebCore/platform/graphics/gtk/GdkCairoUtilities.cpp
    M Source/WebCore/platform/graphics/gtk/GdkCairoUtilities.h

  Log Message:
  -----------
  Merge r214283 - [GTK] Honor GTK+ font settings
https://bugs.webkit.org/show_bug.cgi?id=82889

Reviewed by Carlos Garcia Campos.

After much discussion with Behdad and Martin (who is still not completely convinced I think
:) I want to merge cairo font options into the Fontconfig pattern used for rendering using
cairo_ft_font_options_substitute(). This is how the API was designed to be used anyway.
Fontconfig will still have final say over whether to actually respect the desktop settings
or not, so it can still choose to ignore the desktop's settings, but I don't think it makes
sense to have desktop-wide font settings and not tell Fontconfig about them, especially when
the whole point of WebKitGTK+ is desktop integration. This should also reduce complaints
that we're not following desktop settings and that we're drawing fonts differently than
Firefox.

* PlatformGTK.cmake:
* platform/graphics/cairo/CairoUtilities.cpp:
(WebCore::getDefaultCairoFontOptions):
* platform/graphics/cairo/CairoUtilities.h:
* platform/graphics/freetype/FontCacheFreeType.cpp:
(WebCore::createFontConfigPatternForCharacters):
(WebCore::strongAliasesForFamily):
(WebCore::FontCache::createFontPlatformData):
* platform/graphics/freetype/FontPlatformDataFreeType.cpp:
(WebCore::getDefaultFontconfigOptions):
(WebCore::getDefaultCairoFontOptions): Deleted.
* platform/graphics/gtk/GdkCairoUtilities.cpp:
(getDefaultCairoFontOptions):


  Commit: 7e4d77ea7f17f6e94e1a7ee3919df80fd4dfb3fb
      https://github.com/WebKit/WebKit/commit/7e4d77ea7f17f6e94e1a7ee3919df80fd4dfb3fb
  Author: Carlos Garcia Campos <carlosgc at webkit.org>
  Date:   2017-04-06 (Thu, 06 Apr 2017)

  Changed paths:
    M ChangeLog
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/gtk/NEWS
    M Source/cmake/OptionsGTK.cmake

  Log Message:
  -----------
  Unreviewed. Update OptionsGTK.cmake and NEWS for 2.14.6 release.

.:

* Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit2:

* gtk/NEWS: Add release notes for 2.14.6.


  Commit: da17462a4be81b445cefb9baa7986e3412231790
      https://github.com/WebKit/WebKit/commit/da17462a4be81b445cefb9baa7986e3412231790
  Author: Alex Christensen <achristensen at apple.com>
  Date:   2017-05-09 (Tue, 09 May 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/network/cf/SocketStreamHandleImplCFNet.cpp
    M Source/WebCore/platform/network/soup/SocketStreamHandleImplSoup.cpp

  Log Message:
  -----------
  Merge r215102 - REGRESSION(r204512): WebSocket errors with "Failed to send WebSocket frame."  if too much data is sent
https://bugs.webkit.org/show_bug.cgi?id=170463

Reviewed by Michael Catanzaro.

This only reproduces when using WebSockets to communicate with an external server.
When communicating with a local server, CFWriteStreamWrite succeeds too reliably, so
CFWriteStreamCanAcceptBytes returns true, when sometimes it doesn't when communicating
across the real internet.

* platform/network/cf/SocketStreamHandleImplCFNet.cpp:
(WebCore::SocketStreamHandleImpl::platformSendInternal):
* platform/network/soup/SocketStreamHandleImplSoup.cpp:
(WebCore::SocketStreamHandleImpl::platformSendInternal):
Returning std::nullopt means there was an error, which is not true when the socket stream
is in a state where it cannot be written to because it is actively communicating.
Returning 0 means 0 new bytes were sent, so we will try again later.


  Commit: f205e41a3a6ab74d53823e3f79b203541fefcbc2
      https://github.com/WebKit/WebKit/commit/f205e41a3a6ab74d53823e3f79b203541fefcbc2
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-05-09 (Tue, 09 May 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp

  Log Message:
  -----------
  Merge r216065 - [GTK] Crash at WebCore::ResourceHandle::clearClient() when streaming live video from dailymotion
https://bugs.webkit.org/show_bug.cgi?id=169725

Reviewed by Michael Catanzaro.

Make ResourceHandleStreamingClient refcounted and add an invalidate method to do the cleanup in the networking
thread while keeping a reference.

* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(webKitWebSrcStop): Call invalidate before reseting client pointer.
(webKitWebSrcStart): Ditto.
(ResourceHandleStreamingClient::ResourceHandleStreamingClient): Remove all cleanup code after the run loop run call.
(ResourceHandleStreamingClient::~ResourceHandleStreamingClient): Just detach the thread.
(ResourceHandleStreamingClient::invalidate): Schedule a task on the networking thread to clean up and fiish the
run loop, protecting this.
(ResourceHandleStreamingClient::setDefersLoading): Protect this.
(ResourceHandleStreamingClient::didReceiveResponse): Do nothing if client was invalidated.
(ResourceHandleStreamingClient::didReceiveBuffer): Ditto.
(ResourceHandleStreamingClient::didFinishLoading): Ditto.


  Commit: bca97a7dc77a1bcd7b1237ef929844268f86dbde
      https://github.com/WebKit/WebKit/commit/bca97a7dc77a1bcd7b1237ef929844268f86dbde
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-05-09 (Tue, 09 May 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h
    M Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp

  Log Message:
  -----------
  Merge r212349 - [GStreamer] Implement MediaPlayerPrivate::hasSingleSecurityOrigin()
https://bugs.webkit.org/show_bug.cgi?id=168322

Reviewed by Žan Doberšek.

It currently returns true unconditionally. Add resolved-location property to WebKitWebSourceGStreamer to track
the resolved url returned by the server and use that from MediaPlayerPrivate to check if there was a cross
origin redirection.

Fixes: http/tests/security/canvas-remote-read-remote-video-redirect.html

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::hasSingleSecurityOrigin):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(webKitWebSrcFinalize):
(webKitWebSrcGetProperty):
(webKitWebSrcStart):
(webKitWebSrcQueryWithParent):
(webKitWebSrcGetUri):
(webKitWebSrcSetUri):
(StreamingClient::handleResponseReceived):
(ResourceHandleStreamingClient::wasBlocked):
(ResourceHandleStreamingClient::cannotShowURL):


  Commit: f83a8ae105a7ba55aa98f6d33958e9239087d5da
      https://github.com/WebKit/WebKit/commit/f83a8ae105a7ba55aa98f6d33958e9239087d5da
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-05-09 (Tue, 09 May 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp

  Log Message:
  -----------
  Merge r216067 - [GStreamer] Dailymotion live stream videos don't play
https://bugs.webkit.org/show_bug.cgi?id=170767

Reviewed by Sergio Villar Senin.

The video shows a message saying that an error occurred and nothing is played. There are actually several
problems with dailymotion. The main issue is that URLs are redirected by the server, and GStreamer needs to
know the redirected URL. Once GStreamer knows the redirected URL the error message no longer appears, the video
starts but it always stops after a few seconds. This is because the source receives an early EOS while still
downloading the fragments. The reason of the early EOS is because dailymotion sends a wrong Content-Length header,
something that is expected to happen and we correctly handle that case when receiving the data, by updating the
size accordingly if the bytes received are longer than the expected content length. This particular case
doesn't work well with GStreamer automatic EOS handling, which is the default. At some point, GStreamer detects
that the bytes received are at least the expected ones and emits a GST_EVENT_EOS that the GstUriDownloader
handles finishing the download early. We should always disable automatic EOS, since we know when EOS actually
happens and we already call gst_app_src_end_of_stream(). This patch also emits a GST_EVENT_CUSTOM_DOWNSTREAM_STICKY
event to let GStreamer know about the HTTP headers sent and received.

* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(webkit_web_src_init): Disable automatic EOS.
(webKitWebSrcGetProperty): Return the redirected URL in case of redirection.
(webKitWebSrcStart): Pass the ResourceRequest to the stream clients.
(webKitWebSrcQueryWithParent): Set the redirected URL in the query in case of redirection.
(webKitWebSrcSetUri): Clear also the redirected URL when setting a new URI.
(StreamingClient::StreamingClient): Use GRefPtr for the source and initialize the request too.
(StreamingClient::~StreamingClient): Remove explicit unref.
(StreamingClient::createReadBuffer):
(StreamingClient::handleResponseReceived): Initialize the redirected URL in case of redirection. Create and push
the HTTP headers event.
(StreamingClient::handleDataReceived):
(StreamingClient::handleNotifyFinished):
(CachedResourceStreamingClient::CachedResourceStreamingClient):
(CachedResourceStreamingClient::responseReceived):
(CachedResourceStreamingClient::accessControlCheckFailed):
(CachedResourceStreamingClient::loadFailed):
(ResourceHandleStreamingClient::ResourceHandleStreamingClient):
(ResourceHandleStreamingClient::didFail):
(ResourceHandleStreamingClient::wasBlocked):
(ResourceHandleStreamingClient::cannotShowURL):


  Commit: 56b067b6f7bd98a8171deb32ad13d448c74d14e2
      https://github.com/WebKit/WebKit/commit/56b067b6f7bd98a8171deb32ad13d448c74d14e2
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-05-09 (Tue, 09 May 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp

  Log Message:
  -----------
  Merge r216239 - [GStreamer] Fix handling of gst errors in MediaPlayerPrivateGStreamer::handleMessage
https://bugs.webkit.org/show_bug.cgi?id=171721

Reviewed by Xabier Rodriguez-Calvar.

We are checking the GError only comparing the code, and ignoring the domain in some cases. Use g_error_matches()
in those cases instead of only checking the code.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::handleMessage):


  Commit: 1e26c7b26ec54463c5b0eac6de3b6b6158951db1
      https://github.com/WebKit/WebKit/commit/1e26c7b26ec54463c5b0eac6de3b6b6158951db1
  Author: Carlos Garcia Campos <cgarcia at igalia.com>
  Date:   2017-05-09 (Tue, 09 May 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp

  Log Message:
  -----------
  Merge r216240 - [GStreamer] Do not report more errors after the first one
https://bugs.webkit.org/show_bug.cgi?id=171722

Reviewed by Xabier Rodriguez-Calvar.

We can receive several error messages for the same error from different elements. That's not expected by the
media source selection algorithm implementation. I don't know if didn't happen with previous versions of GST,
but since the upgrade to 1.10.4 several tests are failing because of this.

Fixes: media/video-error-does-not-exist.html
       media/video-load-networkState.html
       media/video-source-error.html
       media/video-source-none-supported.html
       media/video-source-moved.html

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::handleMessage): Return early also when an error already occured.


  Commit: 1d7e079c3fe2968bb5a62018beda2a4d8750a882
      https://github.com/WebKit/WebKit/commit/1d7e079c3fe2968bb5a62018beda2a4d8750a882
  Author: Gwang Yoon Hwang <yoon at igalia.com>
  Date:   2017-05-09 (Tue, 09 May 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/graphics/GeometryUtilities.cpp
    M Source/WebCore/platform/graphics/GeometryUtilities.h
    M Source/WebCore/platform/graphics/RoundedRect.cpp
    M Source/WebCore/platform/graphics/RoundedRect.h
    M Source/WebCore/rendering/RenderBoxModelObject.cpp

  Log Message:
  -----------
  Merge r215613 - Do not paint the border of the box if the dirty region does not intersect with border area
https://bugs.webkit.org/show_bug.cgi?id=170988

Reviewed by Simon Fraser.

No new tests, since there is no change in behavior.

* platform/graphics/GeometryUtilities.cpp:
(WebCore::ellipseContainsPoint):
Checks if a point is within an ellipse.

* platform/graphics/GeometryUtilities.h:
Replace header-guards with #pragma once.

* platform/graphics/RoundedRect.cpp:
(WebCore::RoundedRect::contains):
Implemented to know the dirty rectangle intersects with rounded rectangle or not.
* platform/graphics/RoundedRect.h:
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::paintBorder):
When typing in decorated text box, the dirty rect generated only for the
inside of the text box, not for the decorations.  So we can avoid the
calculations to draw borders if the inner border totally covers the
target surface. It will optimize the rendering process since we don't
have to render border decorations whenever we type somethings in side of
the text input element.


  Commit: 32a602f84151fe69f5d064d7aabcff25b5fd2f66
      https://github.com/WebKit/WebKit/commit/32a602f84151fe69f5d064d7aabcff25b5fd2f66
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2017-05-09 (Tue, 09 May 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/gtk/UserAgentGtk.cpp
    M Tools/ChangeLog

  Log Message:
  -----------
  Merge r216139 - YouTube user agent quirk breaks new YouTube
https://bugs.webkit.org/show_bug.cgi?id=171603

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Our user agent quirk to make YouTube 360 work breaks the new YouTube UI, causing it to
attempt to use the obsolete custom elements v0 API. WebKit only supports the v1 API. We
have to remove this quirk.

Note this does not affect Safari as Apple ports don't use our user agent quirks.

* platform/UserAgentQuirks.cpp:
(WebCore::urlRequiresChromeBrowser):

Tools:

Remove the YouTube quirk test.

* TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp:
(TestWebKitAPI::TEST):


  Commit: 3296239ba92dab397af7d6c61afc249ee9870fa7
      https://github.com/WebKit/WebKit/commit/3296239ba92dab397af7d6c61afc249ee9870fa7
  Author: Michael Catanzaro <mcatanzaro at gnome.org>
  Date:   2017-05-09 (Tue, 09 May 2017)

  Changed paths:
    M Source/WebCore/ChangeLog
    M Source/WebCore/platform/gtk/UserAgentGtk.cpp

  Log Message:
  -----------
  Merge r216343 - [GTK] Cannot sign in with new Google sign-in page
https://bugs.webkit.org/show_bug.cgi?id=171770

Reviewed by Carlos Garcia Campos.

Google's new authentication page does not work with the Firefox user
agent that's required to make various Google websites work. Special-case
accounts.google.com so that it receives our standard user agent.

* platform/UserAgentQuirks.cpp:
(WebCore::isGoogle):
(WebCore::urlRequiresFirefoxBrowser):


  Commit: c647830c5cbeec0aa7082d2e5959f0e4e6068c93
      https://github.com/WebKit/WebKit/commit/c647830c5cbeec0aa7082d2e5959f0e4e6068c93
  Author: Carlos Garcia Campos <carlosgc at webkit.org>
  Date:   2017-05-09 (Tue, 09 May 2017)

  Changed paths:
    M ChangeLog
    M Source/WebKit2/ChangeLog
    M Source/WebKit2/gtk/NEWS
    M Source/cmake/OptionsGTK.cmake

  Log Message:
  -----------
  Unreviewed. Update OptionsGTK.cmake and NEWS for 2.14.7 release.

.:

* Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit2:

* gtk/NEWS: Add release notes for 2.14.7.


Compare: https://github.com/WebKit/WebKit/compare/0e3b75b0638e%5E...c647830c5cbe


More information about the webkit-changes mailing list