Timeline



Jan 30, 2017:

11:21 PM Changeset in webkit [211410] by Yusuke Suzuki
  • 4 edits in trunk

[JSC] Do not reject WebAssembly.compile() with Exception
https://bugs.webkit.org/show_bug.cgi?id=167585

Reviewed by Mark Lam.

JSTests:

  • wasm/js-api/Module-compile.js:

(async.testPromiseAPI):

Source/JavaScriptCore:

We accidentally reject the promise with Exception instead of Exception::value()
for the result of WebAssembly::compile().

  • wasm/JSWebAssembly.cpp:

(JSC::webAssemblyCompileFunc):

11:17 PM Changeset in webkit [211409] by Joseph Pecoraro
  • 6 edits
    2 copies
    5 adds in trunk/Source/WebCore

[WebIDL] Add support for inherit serializer attribute
https://bugs.webkit.org/show_bug.cgi?id=167274

Reviewed by Darin Adler.

Support for serializer { inherit }, which will be used by Resource Timing.
https://heycam.github.io/webidl/#idl-serializers

  • bindings/scripts/CodeGenerator.pm:

(GetInterfaceForAttribute):
(IsSerializableAttribute):
Determine if an attribute is serializable at generation time so we can
verify types. This allows us to support typedefs. We don't yet support
serializing an attribute that is itself a serializable interface.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateSerializerFunction):
(GenerateSerializerAttributesForInterface):
Generate inherited attributes first, then generate our own list.
Explicitly provided attribute names are expected to be serializable,
so produce an error if they are not.

  • bindings/scripts/IDLParser.pm:

(parseSerializationAttributes):
Update parsing of serializer attributes to allow for multiple
special strings. The spec does not precisely define where the
special "attribute" keyword is allowed.

(applyMemberList):
(isSerializableAttribute): Deleted.
Move serializable attribute checking to generation.

  • bindings/scripts/test/JS/JSTestSerialization.cpp:
  • bindings/scripts/test/JS/JSTestSerializationInherit.cpp: Added.
  • bindings/scripts/test/JS/JSTestSerializationInherit.h: Added.
  • bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp: Added.
  • bindings/scripts/test/JS/JSTestSerializationInheritFinal.h: Added.

The toJSON implementations are the most interesting.

  • bindings/scripts/test/TestSerialization.idl:

Extend this test for typedefed attributes that are serializable.
Change TestNode (a serializable Interface) to TestException (an
unserializable Interface) for expected behavior of an
unserializable attribute.

  • bindings/scripts/test/TestSerializationInherit.idl:

Test for { inherit, attribute }.

  • bindings/scripts/test/TestSerializationInheritFinal.idl:

Test for { inherit, attribute_names... }, and multi-level inherit.

11:11 PM Changeset in webkit [211408] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: "bouncy highlight" element in TextEditor/DOMTreeOutline should update or dismiss when user scrolls
https://bugs.webkit.org/show_bug.cgi?id=167146

Patch by Devin Rousso <Devin Rousso> on 2017-01-30
Reviewed by Timothy Hatcher.

  • UserInterface/Views/TextEditor.js:

(WebInspector.TextEditor.prototype._revealSearchResult.scrollHandler):
(WebInspector.TextEditor.prototype._revealSearchResult.animationEnded):
(WebInspector.TextEditor.prototype._revealSearchResult):

10:27 PM Changeset in webkit [211407] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

[GTK] HTTP authentication is not implemented for downloads
https://bugs.webkit.org/show_bug.cgi?id=167583

Reviewed by Michael Catanzaro.

When a normal load is converted to a download, the HTTP authentication happens before the load is converted, and
the download starts already authenticated. However, downloads started by DownloadManager::startDownload use the
DownloadClient API to do the authentication. We don't implement didReceiveAuthenticationChallenge() in our
download client, what makes the load to be cancelled and then fail silently. We should probably add API to
handle downloads authentication, but we can also forward the authentication to the web view for downloads having
a web view associated. That would cover most of the cases, like downloading from the context menu.

  • UIProcess/API/gtk/WebKitDownloadClient.cpp: Add didReceiveAuthenticationChallenge implementation.
10:21 PM Changeset in webkit [211406] by Joseph Pecoraro
  • 28 edits
    3 copies
    26 adds in trunk

Implement PerformanceObserver
https://bugs.webkit.org/show_bug.cgi?id=167546
<rdar://problem/30247959>

Reviewed by Ryosuke Niwa.

Source/JavaScriptCore:

  • runtime/CommonIdentifiers.h:

Source/WebCore:

This implements PerformanceObserver from Performance Timeline Level 2:
https://w3c.github.io/performance-timeline/

Tests: performance-api/performance-observer-api.html

performance-api/performance-observer-basic.html
performance-api/performance-observer-callback-mutate.html
performance-api/performance-observer-callback-task.html
performance-api/performance-observer-entry-sort.html
performance-api/performance-observer-exception.html
performance-api/performance-observer-nested.html
performance-api/performance-observer-order.html
performance-api/performance-observer-periodic.html
performance-api/performance-timeline-api.html

  • CMakeLists.txt:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:

New files.

  • page/Performance.h:
  • page/Performance.cpp:

(WebCore::Performance::mark):
(WebCore::Performance::measure):
(WebCore::Performance::registerPerformanceObserver):
(WebCore::Performance::unregisterPerformanceObserver):
(WebCore::Performance::queueEntry):
Register PerformanceObservers with the Performance object.
When new PerformanceEntries are created (Mark and Measure
right now) check them against observers.

  • page/PerformanceEntry.cpp:

(WebCore::PerformanceEntry::PerformanceEntry):
(WebCore::PerformanceEntry::typeForEntryTypeString):

  • page/PerformanceEntry.h:

(WebCore::PerformanceEntry::type):
Give PerformanceEntry a convenience enum for easy comparison
and to know if it is one of the built-in known types (which the
PerformanceObserver API takes into account).

  • page/PerformanceObserver.cpp: Added.

(WebCore::PerformanceObserver::PerformanceObserver):
(WebCore::PerformanceObserver::observe):
(WebCore::PerformanceObserver::disconnect):
(WebCore::PerformanceObserver::queueEntry):
(WebCore::PerformanceObserver::deliver):

  • page/PerformanceObserver.h:

(WebCore::PerformanceObserver::create):
(WebCore::PerformanceObserver::typeFilter):

  • TypeErrors on observe bad behavior
  • Completely replace types filter on observe
  • Handle register and unregister
  • Handle calling the callback
  • page/PerformanceObserverCallback.idl: Added.
  • page/PerformanceObserverEntryList.cpp: Added.

(WebCore::PerformanceObserverEntryList::PerformanceObserverEntryList):
(WebCore::PerformanceObserverEntryList::getEntries):
(WebCore::PerformanceObserverEntryList::getEntriesByType):
(WebCore::PerformanceObserverEntryList::getEntriesByName):

  • page/PerformanceObserverEntryList.h:

(WebCore::PerformanceObserverEntryList::create):

  • page/PerformanceObserverEntryList.idl: Added.

Implement sorting and filtering of entries.

  • page/PerformanceObserver.idl: Added.
  • page/PerformanceObserverCallback.h:

(WebCore::PerformanceObserverCallback::~PerformanceObserverCallback):
Mostly autogenerated.

  • page/PerformanceUserTiming.cpp:

(WebCore::UserTiming::mark):
(WebCore::UserTiming::measure):

  • page/PerformanceUserTiming.h:

Update these to return the entry so it can be passed on to
any interested PerformanceObservers.

Source/WebInspectorUI:

  • UserInterface/Models/NativeFunctionParameters.js:

Improve API view display of built-in performance methods.

LayoutTests:

  • performance-api/performance-observer-api-expected.txt: Added.
  • performance-api/performance-observer-api.html: Added.
  • performance-api/performance-observer-basic-expected.txt: Added.
  • performance-api/performance-observer-basic.html: Added.
  • performance-api/performance-observer-callback-mutate-expected.txt: Added.
  • performance-api/performance-observer-callback-mutate.html: Added.
  • performance-api/performance-observer-callback-task-expected.txt: Added.
  • performance-api/performance-observer-callback-task.html: Added.
  • performance-api/performance-observer-entry-sort-expected.txt: Added.
  • performance-api/performance-observer-entry-sort.html: Added.
  • performance-api/performance-observer-exception-expected.txt: Added.
  • performance-api/performance-observer-exception.html: Added.
  • performance-api/performance-observer-nested-expected.txt: Added.
  • performance-api/performance-observer-nested.html: Added.
  • performance-api/performance-observer-order-expected.txt: Added.
  • performance-api/performance-observer-order.html: Added.
  • performance-api/performance-observer-periodic-expected.txt: Added.
  • performance-api/performance-observer-periodic.html: Added.

PerformanceObserver tests.

  • performance-api/performance-timeline-api-expected.txt: Added.
  • performance-api/performance-timeline-api.html: Added.

Performance timeline tests.

  • platform/efl/js/dom/global-constructors-attributes-expected.txt:
  • platform/gtk/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
  • platform/win/js/dom/global-constructors-attributes-expected.txt:

New global constructors.

8:50 PM Changeset in webkit [211405] by Jonathan Bedard
  • 2 edits in trunk/Tools

Workaround for simctl launch bug
https://bugs.webkit.org/show_bug.cgi?id=167613

Reviewed by Daniel Bates.

simctl launch will sometimes fail because of a race condition when many
simulators are being run simultaneously. These failures will always have
an exit code of 1. This change attempts to launch an app multiple times
before reporting a failure to workaround this bug.

  • Scripts/webkitpy/xcode/simulator.py:

(Device.launch_app): Execute multiple launch attempts, better logging of failures.

8:34 PM Changeset in webkit [211404] by commit-queue@webkit.org
  • 11 edits in trunk

[WebRTC] getStats does not support legacy callback
https://bugs.webkit.org/show_bug.cgi?id=167617

Patch by Youenn Fablet <youenn@apple.com> on 2017-01-30
Reviewed by Alex Christensen.

Source/WebCore:

Covered by updated tests.

  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::getStats):
(WebCore::RTCPeerConnection::privateGetStats): Deleted.

  • Modules/mediastream/RTCPeerConnection.h:
  • Modules/mediastream/RTCPeerConnection.idl:
  • Modules/mediastream/RTCPeerConnection.js:

(addIceCandidate):
(getStats): Deleted.

LayoutTests:

  • fast/mediastream/RTCPeerConnection-js-built-ins-check-this-expected.txt:
  • fast/mediastream/RTCPeerConnection-overloaded-operations-params-expected.txt:
  • fast/mediastream/RTCPeerConnection-overloaded-operations-params.html:
  • fast/mediastream/RTCPeerConnection-stats.html:
  • fast/mediastream/RTCPeerConnection-statsSelector.html:
7:37 PM Changeset in webkit [211403] by weinig@apple.com
  • 72 edits
    8 copies
    3 deletes in trunk/Source

JSDOMBinding is too big. Split it up!
https://bugs.webkit.org/show_bug.cgi?id=167601

Reviewed by Darin Adler.

Source/WebCore:

Splits JSDOMBinding.h/cpp up a bit by splitting out:

  • JSDOMBindingCaller.h
  • JSDOMBindingSecurity.h/cpp
  • JSDOMExceptionHandling.h/cpp
  • JSDOMWrapperCache.h/cpp

Also:

  • Moves all constructor objects to JSDOMConstructor.h/cpp,
  • Moves special DOMWindow accessors to JSDOMWindowBase.
  • Deletes unused CallbackFunction.h/cpp
  • CMakeLists.txt:
  • Modules/webdatabase/Database.cpp:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/CallbackFunction.cpp: Removed.
  • bindings/js/CallbackFunction.h: Removed.
  • bindings/js/DOMConstructorWithDocument.h: Removed.
  • bindings/js/JSCryptoCustom.cpp:
  • bindings/js/JSCustomXPathNSResolver.cpp:
  • bindings/js/JSDOMBinding.cpp:
  • bindings/js/JSDOMBinding.h:
  • bindings/js/JSDOMBindingCaller.h: Copied from Source/WebCore/bindings/js/JSDOMBinding.h.
  • bindings/js/JSDOMBindingSecurity.cpp: Copied from Source/WebCore/bindings/js/JSDOMBinding.cpp.
  • bindings/js/JSDOMBindingSecurity.h: Copied from Source/WebCore/bindings/js/JSDOMBinding.h.
  • bindings/js/JSDOMConstructor.cpp: Copied from Source/WebCore/bindings/js/JSDOMBinding.cpp.
  • bindings/js/JSDOMConstructor.h:
  • bindings/js/JSDOMConvert.h:
  • bindings/js/JSDOMExceptionHandling.cpp: Copied from Source/WebCore/bindings/js/JSDOMBinding.cpp.
  • bindings/js/JSDOMExceptionHandling.h: Copied from Source/WebCore/bindings/js/JSDOMBinding.h.
  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::callerDOMWindow): Moved from JSDOMBinding.h
(WebCore::activeDOMWindow): Moved from JSDOMBinding.h
(WebCore::firstDOMWindow): Moved from JSDOMBinding.h

  • bindings/js/JSDOMWindowBase.h:
  • bindings/js/JSDOMWindowCustom.cpp:
  • bindings/js/JSDOMWindowProperties.cpp:
  • bindings/js/JSDOMWrapperCache.cpp: Copied from Source/WebCore/bindings/js/JSDOMBinding.cpp.
  • bindings/js/JSDOMWrapperCache.h: Copied from Source/WebCore/bindings/js/JSDOMBinding.h.
  • bindings/js/JSEventTargetCustom.h:
  • bindings/js/JSHTMLElementCustom.cpp:
  • bindings/js/JSLocationCustom.cpp:
  • bindings/js/JSMutationObserverCustom.cpp:
  • bindings/js/JSSQLStatementErrorCallbackCustom.cpp:
  • bindings/js/JSStorageCustom.cpp:
  • bindings/js/JSWorkerCustom.cpp:
  • bindings/js/JSXPathNSResolverCustom.cpp:
  • bindings/js/ScheduledAction.cpp:
  • bindings/js/ScriptController.cpp:
  • bindings/js/ScriptController.h:
  • bindings/js/ScriptGlobalObject.cpp:

(WebCore::ScriptGlobalObject::set):

  • bindings/js/StructuredClone.cpp:
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):
(GenerateCallWith):
(GenerateParametersCheck):
(GenerateCallbackImplementationContent):
(NativeToJSValue):

  • bridge/objc/WebScriptObject.mm:
  • html/HTMLFrameElementBase.cpp:
  • html/HTMLVideoElement.cpp:
  • inspector/InspectorController.cpp:
  • inspector/InspectorDOMAgent.cpp:
  • inspector/PageScriptDebugServer.cpp:
  • inspector/WorkerScriptDebugServer.cpp:

Source/WebKit2:

  • Shared/WebCoreArgumentCoders.cpp:

Replace include of JSDOMBinding with JSDOMExceptionHandling.

7:06 PM Changeset in webkit [211402] by aestes@apple.com
  • 13 edits in trunk/Source

[QuickLook] FrameLoaderClient should return the new QuickLookHandleClient it creates
https://bugs.webkit.org/show_bug.cgi?id=167625

Reviewed by Andreas Kling.

Source/WebCore:

QuickLookHandleClients were being created by QuickLookHandle calling
FrameLoaderClient::didCreateQuickLookHandle() then having the FrameLoaderClient create a new
QuickLookHandleClient and set it using QuickLookHandle::setClient().

Since all FrameLoaderClient::didCreateQuickLookHandle() does is create a new
QuickLookHandleClient, this patch changes the FrameLoaderClient function to return the new
QuickLookHandleClient directly and removes the API from QuickLookHandle to set a client.
This also removes previewFileName() and previewUTI() from QuickLookHandle and instead passes
these as arguments to the FrameLoaderClient.

No change in behavior. Covered by existing tests.

  • loader/EmptyClients.cpp: Added an implementation of createQuickLookHandleClient() that

returns nullptr.

  • loader/FrameLoaderClient.h: Declared createQuickLookHandleClient() and removed

didCreateQuickLookHandle().

  • loader/ios/QuickLook.h: Removed setClient(), previewFileName(), and previewUTI().
  • loader/ios/QuickLook.mm: Removed testingOrEmptyClient().

(-[WebPreviewLoader initWithResourceLoader:resourceResponse:quickLookHandle:]): Set _client
to testingClient() if it exists, otherwise set it to the client returned by
FrameLoaderClient::createQuickLookHandleClient() it non-null, otherwise set it to
emptyClient().
(testingOrEmptyClient): Deleted.
(-[WebPreviewLoader setClient:]): Deleted.
(-[WebPreviewLoader converter]): Deleted.
(WebCore::QuickLookHandle::setClient): Deleted.
(WebCore::QuickLookHandle::previewFileName): Deleted.
(WebCore::QuickLookHandle::previewUTI): Deleted.

Source/WebKit/mac:

  • WebCoreSupport/WebFrameLoaderClient.h: Declared createQuickLookHandleClient().
  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::createQuickLookHandleClient): Renamed from didCreateQuickLookHandle().
(WebFrameLoaderClient::didCreateQuickLookHandle): Renamed to createQuickLookHandleClient().

Source/WebKit2:

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h: Declared createQuickLookHandleClient().
  • WebProcess/WebCoreSupport/ios/WebFrameLoaderClientIOS.mm:

(WebKit::WebFrameLoaderClient::createQuickLookHandleClient): Renamed from didCreateQuickLookHandle().
(WebKit::WebFrameLoaderClient::didCreateQuickLookHandle): Renamed to createQuickLookHandleClient().

  • WebProcess/WebCoreSupport/ios/WebQuickLookHandleClient.cpp:

(WebKit::WebQuickLookHandleClient::WebQuickLookHandleClient): Set m_fileName and m_uti from
the constructor arguments instead of from handle.

  • WebProcess/WebCoreSupport/ios/WebQuickLookHandleClient.h:
6:38 PM Changeset in webkit [211401] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

NULL-deref crash in TextTrack::removeCue()
https://bugs.webkit.org/show_bug.cgi?id=167615

Reviewed by Eric Carlson.

It's possible for a track to be removed which was never actually added to the cue list.
Specifically, if an in-band track with a negative start or end time was parsed, it would
have been rejected by TextTrack::addCue(). When it comes time to flush those in-band cues,
TextTrack::m_cues will still be NULL. Rather than ASSERT in this case, we should revert the
behavior added in r210319 and throw an exception.

  • html/track/TextTrack.cpp:

(WebCore::TextTrack::removeCue):

6:36 PM Changeset in webkit [211400] by Chris Dumez
  • 1 edit
    2 deletes in trunk/LayoutTests

Unreviewed, remove a couple JS files that were missed in r211395.

  • dom/xhtml/level3/core/attrisid04.js: Removed.
  • dom/xhtml/level3/core/attrisid05.js: Removed.
6:12 PM Changeset in webkit [211399] by akling@apple.com
  • 2 edits in trunk/Source/WebCore

Fix CMSampleBuffer leak in MediaSampleAVFObjC::createNonDisplayingCopy().
<https://webkit.org/b/167621>

Reviewed by Andy Estes.

We were failing to adopt the CMSampleBuffer after copying it. Seen on leaks bot.

  • platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:

(WebCore::MediaSampleAVFObjC::createNonDisplayingCopy):

5:54 PM Changeset in webkit [211398] by aestes@apple.com
  • 12 edits
    2 adds in trunk/Source/WebCore

[QuickLook] QLPreviewConverter and QuickLookHandle have different lifetime requirements
https://bugs.webkit.org/show_bug.cgi?id=167609

Reviewed by Andreas Kling.

Currently, QuickLookHandles are owned by DocumentLoader so that the underlying
QLPreviewConverter stays alive to service subresource requests. However, the QuickLookHandle
itself only needs to live long enough to handle the main resource load. And in a follow-on
patch we will need to create QLPreviewConverters independent of QuickLookHandle.

This patch moves ownership of QuickLookHandle from DocumentLoader to ResourceLoader. It also
creates a C++ wrapper around QLPreviewConverter and teaches QuickLookHandle to transfer
ownership of the wrapper to DocumentLoader once the main resource conversion is complete.

No change in behavior. Covered by existing tests.

  • WebCore.xcodeproj/project.pbxproj: Added PreviewConverter.{h,mm}.
  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::setPreviewConverter): Renamed from setQuickLookHandle().
(WebCore::DocumentLoader::previewConverter): Renamed from quickLookHandle().
(WebCore::DocumentLoader::setQuickLookHandle): Renamed to setPreviewConverter().

  • loader/DocumentLoader.h:

(WebCore::DocumentLoader::quickLookHandle): Renamed to quickLookHandle().

  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::willSendRequestInternal): Changed to call PreviewConverter::safeRequest().
(WebCore::ResourceLoader::isQuickLookResource): Changed to check if m_quickLookHandle is null.
(WebCore::ResourceLoader::didCreateQuickLookHandle): Deleted.

  • loader/ResourceLoader.h:
  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::shouldCreateQuickLookHandleForResponse): Changed to access m_quickLookHandle.
(WebCore::SubresourceLoader::didReceiveResponse): Ditto.
(WebCore::SubresourceLoader::didReceiveData): Ditto.
(WebCore::SubresourceLoader::didReceiveBuffer): Ditto.
(WebCore::SubresourceLoader::didFinishLoading): Ditto.
(WebCore::SubresourceLoader::didFail): Ditto.

  • loader/cache/CachedRawResource.cpp:

(WebCore::CachedRawResource::finishLoading): Wrapped the call to ResourceLoader::isQuickLookResource() in USE(QUICK_LOOK).

  • loader/ios/QuickLook.h: Renamed m_converter to m_previewLoader.
  • loader/ios/QuickLook.mm: Renamed WebPreviewConverter to WebPreviewLoader.

(WebCore::registerQLPreviewConverterIfNeeded): Created a PreviewConverter instead of a QLPreviewConverter.
(-[WebPreviewLoader initWithResourceLoader:resourceResponse:quickLookHandle:]): Ditto.
(-[WebPreviewLoader appendDataArray:]): Accessed the QLPreviewConverter from the PreviewConverter.
(-[WebPreviewLoader finishedAppending]): Ditto.
(-[WebPreviewLoader failed]): Ditto.
(-[WebPreviewLoader converter]): Renamed from platformConverter. Returns a pointer to the PreviewConverter.
(-[WebPreviewLoader _sendDidReceiveResponseIfNecessary]): Moved _converter to DocumentLoader.
(-[WebPreviewLoader connection:didFailWithError:]): Created a PreviewConverter instead of a QLPreviewConverter.
(WebCore::QuickLookHandle::QuickLookHandle): Called FrameLoaderClient::didCreateQuickLookHandle() instead of going through FrameLoader.
(WebCore::QuickLookHandle::didReceiveData): Renamed m_converter to m_previewLoader.
(WebCore::QuickLookHandle::didReceiveBuffer): Ditto.
(WebCore::QuickLookHandle::didFinishLoading): Ditto.
(WebCore::QuickLookHandle::didFail): Ditto.
(WebCore::QuickLookHandle::setClient): Ditto.
(WebCore::QuickLookHandle::previewFileName): Ditto.
(WebCore::QuickLookHandle::previewUTI): Ditto.
(WebCore::QuickLookHandle::willSendRequest): Deleted.

  • platform/ios/QuickLookSoftLink.h: Removed soft-linking of QLPreviewConverter and kQLPreviewOptionPasswordKey.
  • platform/ios/QuickLookSoftLink.mm: Ditto.
  • platform/network/ios/PreviewConverter.h: Added.

(WebCore::PreviewConverter::platformConverter): Added. Returns the underlying QLPreviewConverter.

  • platform/network/ios/PreviewConverter.mm: Added.

(WebCore::optionsWithPassword): Creates a dictionary with the kQLPreviewOptionPasswordKey option set if password is non-null.
(WebCore::PreviewConverter::PreviewConverter): Added constructors for the delegate/response and data/uti cases.
(WebCore::PreviewConverter::safeRequest): Wraps -[QLPreviewConverter safeRequestForRequest:].
(WebCore::PreviewConverter::previewRequest): Wraps -[QLPreviewConverter previewRequest].
(WebCore::PreviewConverter::previewResponse): Wraps -[QLPreviewConverter previewResponse].
(WebCore::PreviewConverter::previewFileName): Wraps -[QLPreviewConverter previewFileName].
(WebCore::PreviewConverter::previewUTI): Wraps -[QLPreviewConverter previewUTI].

5:20 PM Changeset in webkit [211397] by ap@apple.com
  • 4 edits in trunk/Tools

Commit queue fails to look at real name aliases for the reviewer
https://bugs.webkit.org/show_bug.cgi?id=167422

Reviewed by Joseph Pecoraro.

  • Scripts/webkitpy/common/checkout/changelog_unittest.py:

(test_has_valid_reviewer): Added tests.

  • Scripts/webkitpy/common/config/committers.py:

(CommitterList._name_to_contributor_map):
Made _name_to_contributor_map include alias names.

  • Scripts/webkitpy/common/config/committers_unittest.py:

(CommittersTest.test_contributors_by_fuzzy_match):
Removed subtests that are now obsolete, as these matches are strict. It is not
obvious if distance based fuzzy matching for names is useful at all, but we can
look into that some other time.

4:54 PM Changeset in webkit [211396] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking media/modern-media-controls/buttons-container/buttons-container-buttons-property.html as flaky on macOS WK1.
https://bugs.webkit.org/show_bug.cgi?id=167371

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
4:22 PM Changeset in webkit [211395] by Chris Dumez
  • 11 edits
    6 deletes in trunk

Drop legacy Attributes.isId attribute
https://bugs.webkit.org/show_bug.cgi?id=167603

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C test now that one more check is passing.

  • web-platform-tests/dom/historical-expected.txt:

Source/WebCore:

Drop legacy Attributes.isId attribute.

This attribute is not in the specification:

Both Firefox and Chrome currently do not expose this attribute.

No new tests, rebaselined existing test.

  • dom/Attr.cpp:
  • dom/Attr.h:
  • dom/Attr.idl:

Source/WebKit/mac:

Keep Attr.isId in ObjC bindings.

  • DOM/DOMAttr.mm:

(-[DOMAttr isId]):

LayoutTests:

Drop outdated tests.

  • dom/xhtml/level3/core/attrisid04-expected.txt: Removed.
  • dom/xhtml/level3/core/attrisid04.xhtml: Removed.
  • dom/xhtml/level3/core/attrisid05-expected.txt: Removed.
  • dom/xhtml/level3/core/attrisid05.xhtml: Removed.
  • fast/dom/Attr/change-id-via-attr-node-value-expected.txt:
  • fast/dom/Attr/change-id-via-attr-node-value.html:
  • fast/dom/Element/attrisid-extra01-expected.txt: Removed.
  • fast/dom/Element/attrisid-extra01.html: Removed.
4:17 PM Changeset in webkit [211394] by Alan Bujtas
  • 7 edits
    1 add in trunk

Simple line layout: Small tweaks to improve performance.
https://bugs.webkit.org/show_bug.cgi?id=167611
<rdar://problem/30274294>

Reviewed by Simon Fraser.

PerformanceTests:

  • Layout/simple-line-layout-non-repeating-text.html: Added.

Source/WebCore:

This is ~10% progression on the attached test case (paragraphs with non-redundant content).
median: 102.08 runs/s -> median: 114.25 runs/s

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::LineState::appendFragmentAndCreateRunIfNeeded):

  • rendering/SimpleLineLayoutFlowContents.cpp:

(WebCore::SimpleLineLayout::initializeSegments):
(WebCore::SimpleLineLayout::FlowContents::FlowContents):

  • rendering/SimpleLineLayoutFlowContents.h:
  • rendering/SimpleLineLayoutTextFragmentIterator.cpp:

(WebCore::SimpleLineLayout::TextFragmentIterator::nextNonWhitespacePosition):
(WebCore::SimpleLineLayout::TextFragmentIterator::skipToNextPosition):

  • rendering/SimpleLineLayoutTextFragmentIterator.h:
4:11 PM Changeset in webkit [211393] by Chris Dumez
  • 11 edits in trunk

Drop legacy constants on Event interface
https://bugs.webkit.org/show_bug.cgi?id=167602

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

  • web-platform-tests/dom/historical-expected.txt:

Source/WebCore:

Drop legacy constants on Event interface:
MOUSEDOWN, MOUSEUP, MOUSEOVER, MOUSEOUT, MOUSEMOVE, MOUSEDRAG,
CLICK, DBLCLICK, KEYDOWN, KEYUP, KEYPRESS, DRAGDROP, FOCUS,
BLUR, SELECT, and CHANGE.

Those constants are not used for anything, they are not in the
specification and Chrome / Firefox do not have them.

No new tests, rebaselined existing test.

  • dom/Event.idl:

LayoutTests:

Update / Rebaseline existing tests to stop covering those constants.

  • fast/dom/constants-expected.txt:
  • fast/dom/constants.html:
  • fast/xmlhttprequest/xmlhttprequest-get-expected.txt:
  • http/tests/workers/worker-importScriptsOnError-expected.txt:
  • inspector/model/remote-object-get-properties-expected.txt:
4:08 PM Changeset in webkit [211392] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-604.1.5.1

New tag.

4:06 PM Changeset in webkit [211391] by commit-queue@webkit.org
  • 1 edit
    1 add in trunk/Source/ThirdParty/libwebrtc

[WebRTC] Upload a diff of WebKit libwebrtc code and original libwebrtc code
https://bugs.webkit.org/show_bug.cgi?id=167573

Patch by Youenn Fablet <youennf@gmail.com> on 2017-01-30
Reviewed by Alex Christensen.

  • WebKit/patch-libwebrtc: Added.
3:37 PM Changeset in webkit [211390] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Add some more crash reporter information to diagnose a failed mach_msg
https://bugs.webkit.org/show_bug.cgi?id=167610

Reviewed by Dean Jackson.

Include the receive port name as well.

  • Platform/IPC/mac/ConnectionMac.mm:

(IPC::readFromMachPort):

3:21 PM Changeset in webkit [211389] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

QueueStatusServer should have an explicit timeout for _fetch_url
https://bugs.webkit.org/show_bug.cgi?id=167467

Reviewed by Alexey Proskuryakov.

  • Scripts/webkitpy/common/net/statusserver.py:

(StatusServer._fetch_url): Add an explicit timeout of 300s.

3:03 PM Changeset in webkit [211388] by commit-queue@webkit.org
  • 4 edits in trunk/Tools

Add support for Trac instances that host multiple projects.
https://bugs.webkit.org/show_bug.cgi?id=167524

Patch by Kocsen Chung <Kocsen Chung> on 2017-01-30
Reviewed by Alexey Proskuryakov.

When multiple projects are hosted on a single Trac instance, the current
behavior will retrieve changesets from all tracked projects.
This patch teaches Trac.js to get project-specific changesets from Trac.
We do this by replacing the parameter changeset=on to repo-projectname=on
when querying the Trac timeline.

To tell Trac to be aware of multi-project instances we leverage the
options parameter when creating a new instance:

new Trac("https://mytrac.com/", { projectIdentifier: "tracProjectName" });

If this option is not provided, the original behaviour will prevail.
Additionally, add corresponding tests.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Trac.js:

(Trac): Reason about new optional parameter 'projectIdentifier'.
(Trac.prototype.revisionURL): Given a projectIdentifier, append it to the end of the URL.
(Trac.prototype._xmlTimelineURL): Given a projectIdentifier,
replace default parameter changeset=on with repo-projectname=on.
(Trac.prototype._convertCommitInfoElementToObject): Fix missing ';'.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/tests/resources/MockTrac.js:

(MockTrac): Add support for instantiating Trac with a projectIdentifier.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/tests/resources/tests.js:

(setup): Provide a multiple-project MockTrac instance to all test cases for testing.
Add the following tests:

test("revisionURL")
test("revisionURL with Trac Identifier")
test("_xmlTimelineURL")
test("_xmlTimelineURL with Trac Identifier")

(this.view._latestProductiveIteration): Fix missing ';'.

2:51 PM Changeset in webkit [211387] by Simon Fraser
  • 6 edits
    2 adds in trunk

[iOS] position:fixed inside touch-scrollable overflow is mispositioned
https://bugs.webkit.org/show_bug.cgi?id=167604
Source/WebCore:

rdar://problem/29500273

Reviewed by Zalan Bujtas.

For layers inside touch-scrollable overflow, RenderLayerBacking::computeParentGraphicsLayerRect() needs
to account for the offset from the ancestor compositing layer's origin, to handle scrollable elements with
box-shadow, for example.

Also make the compositing log output a little easier to read.

Test: compositing/scrolling/fixed-inside-scroll.html

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::computeParentGraphicsLayerRect):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::logLayerInfo):

Source/WebKit2:

rdar://problem/29500273

Reviewed by Zalan Bujtas.

Make sure we tell m_webPageProxy.computeCustomFixedPositionRect() when visual viewports are enabled.

  • UIProcess/ios/RemoteScrollingCoordinatorProxyIOS.mm:

(WebKit::RemoteScrollingCoordinatorProxy::customFixedPositionRect):

LayoutTests:

Reviewed by Zalan Bujtas.

  • compositing/scrolling/fixed-inside-scroll-expected.html: Added.
  • compositing/scrolling/fixed-inside-scroll.html: Added.
2:09 PM Changeset in webkit [211386] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

NULL-deref crash at PlatformMediaSession::endInterruption
https://bugs.webkit.org/show_bug.cgi?id=167595

Reviewed by Eric Carlson.

Use the same, NULL-aware forEachSession() iterator rather than iterating over m_sessions directly.

  • platform/audio/PlatformMediaSessionManager.cpp:

(WebCore::PlatformMediaSessionManager::beginInterruption):
(WebCore::PlatformMediaSessionManager::endInterruption):

2:01 PM Changeset in webkit [211385] by Matt Baker
  • 15 edits
    1 copy
    2 adds in trunk

Web Inspector: Need some limit on Async Call Stacks for async loops (rAF loops)
https://bugs.webkit.org/show_bug.cgi?id=165633
<rdar://problem/29738502>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

This patch limits the memory used by the Inspector backend to store async
stack trace data.

Asynchronous stack traces are stored as a disjoint set of parent pointer
trees. Tree nodes represent asynchronous operations, and hold a copy of
the stack trace at the time the operation was scheduled. Each tree can
be regarded as a set of stack traces, stored as singly linked lists that
share part of their structure (specifically their tails). Traces belonging
to the same tree will at least share a common root. A stack trace begins
at a leaf node and follows the chain of parent pointers to the root of
of the tree. Leaf nodes always contain pending asynchronous calls.

When an asynchronous operation is scheduled with requestAnimationFrame,
setInterval, etc, a node is created containing the current call stack and
some bookkeeping data for the operation. An unique identifier comprised
of an operation type and callback identifier is mapped to the node. If
scheduling the callback was itself the result of an asynchronous call,
the node becomes a child of the node associated with that call, otherwise
it becomes the root of a new tree.

A node is either pending, active, dispatched, or canceled. Nodes
start out as pending. After a callback for a pending node is dispatched
the node is marked as such, unless it is a repeating callback such as
setInterval, in which case it remains pending. Once a node is no longer
pending it is removed, as long as it has no children. Since nodes are
reference counted, it is a property of the stack trace tree that nodes
that are no longer pending and have no children pointing to them will be
automatically pruned from the tree.

If an async operation is canceled (e.g. cancelTimeout), the associated
node is marked as such. If the callback is not being dispatched at the
time, and has no children, it is removed.

Because async operations can be chained indefinitely, stack traces are
limited to a maximum depth. The depth of a stack trace is equal to the
sum of the depths of its nodes, with a node's depth equal to the number
of frames in its associated call stack. For any stack trace,

S = { s𝟶, s𝟷, …, s𝑘 }, with endpoints s𝟶, s𝑘
depth(S) = depth(s𝟶) + depth(s𝟷) + … + depth(s𝑘)

A stack trace is truncated when it exceeds the maximum depth. Truncation
occurs on node boundaries, not call frames, consequently the maximum depth
is more of a target than a guarantee:

d = maximum stack trace depth
for all S, depth(S) ≤ d + depth(s𝑘)

Because nodes can belong to multiple stack traces, it may be necessary
to clone the tail of a stack trace being truncated to prevent other traces
from being effected.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • inspector/AsyncStackTrace.cpp: Added.

(Inspector::AsyncStackTrace::create):
(Inspector::AsyncStackTrace::AsyncStackTrace):
(Inspector::AsyncStackTrace::~AsyncStackTrace):
(Inspector::AsyncStackTrace::isPending):
(Inspector::AsyncStackTrace::isLocked):
(Inspector::AsyncStackTrace::willDispatchAsyncCall):
(Inspector::AsyncStackTrace::didDispatchAsyncCall):
(Inspector::AsyncStackTrace::didCancelAsyncCall):
(Inspector::AsyncStackTrace::buildInspectorObject):
(Inspector::AsyncStackTrace::truncate):
(Inspector::AsyncStackTrace::remove):

  • inspector/AsyncStackTrace.h:
  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::InspectorDebuggerAgent::didScheduleAsyncCall):
(Inspector::InspectorDebuggerAgent::didCancelAsyncCall):
(Inspector::InspectorDebuggerAgent::willDispatchAsyncCall):
(Inspector::InspectorDebuggerAgent::didDispatchAsyncCall):
(Inspector::InspectorDebuggerAgent::didPause):
(Inspector::InspectorDebuggerAgent::clearAsyncStackTraceData):
(Inspector::InspectorDebuggerAgent::buildAsyncStackTrace): Deleted.
(Inspector::InspectorDebuggerAgent::refAsyncCallData): Deleted.
(Inspector::InspectorDebuggerAgent::derefAsyncCallData): Deleted.

  • inspector/agents/InspectorDebuggerAgent.h:
  • inspector/protocol/Console.json:

Source/WebInspectorUI:

  • Localizations/en.lproj/localizedStrings.js:

Text for "Truncated" marker tree element.

  • UserInterface/Models/StackTrace.js:

(WebInspector.StackTrace):
(WebInspector.StackTrace.fromPayload):
(WebInspector.StackTrace.prototype.get truncated):
Plumbing for new Console.StackTrace property truncated.

  • UserInterface/Views/ThreadTreeElement.css:

(.tree-outline > .item.thread + ol > .item.truncated-call-frames):
(.tree-outline > .item.thread + ol > .item.truncated-call-frames .icon):
Styles for "Truncated" marker tree element.

  • UserInterface/Views/ThreadTreeElement.js:

(WebInspector.ThreadTreeElement.prototype.refresh):
Append "Truncated" marker tree element if necessary.

  • Versions/Inspector-iOS-10.3.json:

LayoutTests:

Add truncation test cases and cleanup call frame logging.

  • inspector/debugger/async-stack-trace-expected.txt:
  • inspector/debugger/async-stack-trace.html:
  • inspector/debugger/resources/log-active-stack-trace.js: Added.

(TestPage.registerInitializer.window.getActiveStackTrace):
(TestPage.registerInitializer.logStackTrace.logCallFrame):
(TestPage.registerInitializer.):
(TestPage.registerInitializer.window.logActiveStackTrace):
(TestPage.registerInitializer):

1:02 PM Changeset in webkit [211384] by matthew_hanson@apple.com
  • 3 edits in branches/safari-604.1.5-branch/Source/WebKit/mac

Merge r211323. rdar://problem/30107776

1:02 PM Changeset in webkit [211383] by matthew_hanson@apple.com
  • 6 edits in branches/safari-604.1.5-branch/Source

Versioning.

12:43 PM Changeset in webkit [211382] by mmaxfield@apple.com
  • 7 edits in trunk

Correct spacing regression on inter-element complex path shaping on some fonts
https://bugs.webkit.org/show_bug.cgi?id=166013

Reviewed by Simon Fraser.

Source/WebCore:

This patch brings the implementation of ComplexTextController in-line with the
design at https://trac.webkit.org/wiki/ComplexTextController. Previously,
ComplexTextController had a few problems:

you iterated over the entire string and added up the advances

  • FontCascade::getGlyphsAndAdvancesForComplexText() tried to compensate for

the above by construing the concepts of paint advances as distinct from layout
advances

  • Initial advances were considered part of layout sometimes and part of painting

other times, depending on which function reports the information

  • For RTL runs, the wrong origin was added to the initial advance, and the origin

should have been subtracted instead of added

This patch exhaustively updates every function in ComplexTextController to be
consistent with the design linked to above. This design solves all of these
problems.

Tests: ComplexTextControllerTest.InitialAdvanceWithLeftRunInRTL

ComplexTextControllerTest.InitialAdvanceInRTL
ComplexTextControllerTest.InitialAdvanceWithLeftRunInLTR
ComplexTextControllerTest.InitialAdvanceInLTR
ComplexTextControllerTest.InitialAdvanceInRTLNoOrigins
ComplexTextControllerTest.LeadingExpansion
ComplexTextControllerTest.VerticalAdvances

  • platform/graphics/GlyphBuffer.h:

(WebCore::GlyphBuffer::setLeadingExpansion): Deleted. No longer necessary.
(WebCore::GlyphBuffer::leadingExpansion): Deleted. Ditto.

  • platform/graphics/cocoa/FontCascadeCocoa.mm:

(WebCore::FontCascade::adjustSelectionRectForComplexText): Removed use of
unnecessary leadingExpansion().
(WebCore::FontCascade::getGlyphsAndAdvancesForComplexText): This function needs
to compute paint advances, which means that it can't base this information off
of layout advances. This function uses the trick mentioned at the end of the
above link to compute the paint offset of an arbitrary glyph in the middle of
an RTL run.

  • platform/graphics/mac/ComplexTextController.cpp:

(WebCore::ComplexTextController::computeExpansionOpportunity): Refactored for
testing.
(WebCore::ComplexTextController::ComplexTextController): Ditto.
(WebCore::ComplexTextController::finishConstruction): Ditto.
(WebCore::ComplexTextController::offsetForPosition): This function operates on
layout advances, and the initial layout advance is already added into the
m_adjustedBaseAdvances vector by adjustGlyphsAndAdvances(). Therefore, there is
no need to add it again here.
(WebCore::ComplexTextController::advance): This function had completely busted
logic about the relationship between initial advances and the first origin in
each run. Because of the fortunate choice of only representing layout advances
in m_adjustedBaseAdvances, this entire block can be removed and the raw paint
initial advance can be reported to the GlyphBuffer. Later in the function, we
have to update the logic about how to compute a paint advance given a layout
advance and some origins. In particular, there are two tricky pieces here: 1.
The layout advance for the first glyph is equal to (initial advance - first
origin + first Core Text advance, so computing the paint offset must cancel out
the initial layout offset, and 2. the last paint advance in a run must actually
end up at the position of the first glyph in the next run, so the next run's
initial advance must be queried.
(WebCore::ComplexTextController::adjustGlyphsAndAdvances): Previously, we
represented an initial advance of a successive run by just adding it to the
previous run's last advance. However, this is incompatible with the new model
presented in the link above, so we remove this section. We also have to add in
the logic that the layout advance for the first glyph is equal to the formula
presented above.

  • platform/graphics/mac/ComplexTextController.h:

(WebCore::ComplexTextController::ComplexTextRun::initialAdvance): Adjust comment
to reflect reality.
(WebCore::ComplexTextController::leadingExpansion): Deleted.

Tools:

Unskip existing tests and make some new tests:

  • Testing complex text with no origins
  • Testing initial expansions
  • Testing the sign of vertical advances
  • TestWebKitAPI/Tests/WebCore/ComplexTextController.cpp:

(TestWebKitAPI::TEST_F):

12:08 PM Changeset in webkit [211381] by Ryan Haddad
  • 15 edits
    3 deletes in trunk

Unreviewed, rolling out r211345.

The LayoutTest for this change is failing an assertion.

Reverted changeset:

"Web Inspector: Need some limit on Async Call Stacks for async
loops (rAF loops)"
https://bugs.webkit.org/show_bug.cgi?id=165633
http://trac.webkit.org/changeset/211345

12:05 PM Changeset in webkit [211380] by clopez@igalia.com
  • 2 edits in trunk/Tools

[GTK][EFL] Avoid using a thin directory to create the built product on the archive-built-product step.
https://bugs.webkit.org/show_bug.cgi?id=167596

Reviewed by Daniel Bates.

We avoid needing a thin directory by invoking the zip program with
the list of directories from the build directory to be zipped,
and by using the zip feature to exclude files matching a pattern.

  • BuildSlaveSupport/built-product-archive:

(copyBuildFiles):
(createZipFromList):
(archiveBuiltProduct):

11:46 AM Changeset in webkit [211379] by Simon Fraser
  • 16 edits
    6 adds in trunk

Fixed elements should not rubber-band in WK2, nor remain at negative offsets
https://bugs.webkit.org/show_bug.cgi?id=167484
rdar://problem/29453068

Reviewed by Dean Jackson.
Source/WebCore:

There were various problems with the layout rect computation:

  1. It ignored the scrollBehaviorForFixedElements() which we use to avoid rubber-banding fixed elements in WK2, but allow in WK1, so make use of that.
  2. Sometimes layouts/paints of fixed elements would be triggered when coalesced calls to AsyncScrollingCoordinator::scheduleUpdateScrollPositionAfterAsyncScroll() failed to copy the layoutViewportOrigin to the scheduled update.
  3. The layout viewport could be left with a negative top/left after rubber-banding.

Also add a way to do unconstrained scrollTo(), so that a test can call window.scrollTo(-10, -10) to
simulate rubberbanding.

Tests: fast/visual-viewport/rubberbanding-viewport-rects-header-footer.html

fast/visual-viewport/rubberbanding-viewport-rects.html

  • page/FrameView.cpp:

(WebCore::FrameView::computeLayoutViewportOrigin): Handle ScrollBehaviorForFixedElements, incorporating it
into logic that clamps layoutViewportOrigin between min/max when rubberbanding is not allowed, or not in progress.
(WebCore::FrameView::updateLayoutViewport): Pass in scrollBehaviorForFixedElements().
(WebCore::FrameView::visibleDocumentRect): The clamping here was preventing the visible rect from
escaping the document bounds, which caused fixed elements to bounce with rubber-banding, so remove the clamping,
and fix the logic to allow rubber-banding while taking headers and footers into account.

  • page/FrameView.h:
  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::scheduleUpdateScrollPositionAfterAsyncScroll): layoutViewportOrigin has to
be pushed onto the scheduled update, just like scroll position.

  • page/scrolling/ScrollingTreeFrameScrollingNode.cpp:

(WebCore::ScrollingTreeFrameScrollingNode::layoutViewportForScrollPosition): Pass in m_behaviorForFixed.

  • platform/ScrollView.cpp:

(WebCore::ScrollView::ScrollView):
(WebCore::ScrollView::adjustScrollPositionWithinRange):
(WebCore::ScrollView::setScrollOffset):

  • platform/ScrollView.h:

(WebCore::ScrollView::setAllowsUnclampedScrollPositionForTesting):
(WebCore::ScrollView::allowsUnclampedScrollPosition):

  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::setAllowUnclampedScrollPosition):

  • testing/InternalSettings.h:
  • testing/InternalSettings.idl:

Source/WebKit2:

Pass in StickToViewportBounds as we did before visual viewports.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::computeCustomFixedPositionRect):

LayoutTests:

Add two tests that use internals.settings.setAllowUnclampedScrollPosition(true) and then
over-scroll to simulator rubber-banding, dumping viewport rects.

setAllowUnclampedScrollPosition() only works in WebKit2, so skip the tests elsewhere.

  • TestExpectations:
  • fast/visual-viewport/rubberbanding-viewport-rects-expected.txt: Added.
  • fast/visual-viewport/rubberbanding-viewport-rects-header-footer-expected.txt: Added.
  • fast/visual-viewport/rubberbanding-viewport-rects-header-footer.html: Added.
  • fast/visual-viewport/rubberbanding-viewport-rects.html: Added.
  • platform/ios-simulator-wk2/TestExpectations:
  • platform/ios-simulator-wk2/fast/visual-viewport/rubberbanding-viewport-rects-expected.txt: Added.
  • platform/ios-simulator-wk2/fast/visual-viewport/rubberbanding-viewport-rects-header-footer-expected.txt: Added.
  • platform/mac-wk2/TestExpectations:
11:40 AM Changeset in webkit [211378] by matthew_hanson@apple.com
  • 1 copy in branches/safari-604.1.5-branch

New Branch.

10:59 AM Changeset in webkit [211377] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

Web content process crashes when initiating a drag on a very large image
https://bugs.webkit.org/show_bug.cgi?id=167564

Reviewed by Beth Dakin.

If we begin dragging an image element that is too large to show the cached image for, we will show an image file
icon instead of the cached image. This may return null if createDragImageIconForCachedImageFilename is
unimplemented, so in the meantime, we should not assume that dragImage will always exist before calling into
doSystemDrag in doImageDrag and bail from the drag operation if that is the case.

  • page/DragController.cpp:

(WebCore::DragController::doImageDrag):

10:45 AM Changeset in webkit [211376] by Chris Dumez
  • 20 edits in trunk/Source

Update DiagnosticLoggingClient::logDiagnosticMessageWithValue() to take in the value as a double
https://bugs.webkit.org/show_bug.cgi?id=167536

Reviewed by Darin Adler.

Update DiagnosticLoggingClient::logDiagnosticMessageWithValue() to take in the value as a double
instead of a string. The value needs to be numeric and the current API is error-prone.

Source/WebCore:

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaPlayerEngineFailedToLoad):

  • loader/EmptyClients.cpp:
  • page/DiagnosticLoggingClient.h:

Source/WebKit2:

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::logDiagnosticMessage):
(WebKit::NetworkProcess::logDiagnosticMessageWithResult):
(WebKit::NetworkProcess::logDiagnosticMessageWithValue):

  • NetworkProcess/NetworkProcess.h:
  • Scripts/webkit/messages.py:

(headers_for_type):

  • Shared/WebCoreArgumentCoders.h:
  • UIProcess/HighPerformanceGraphicsUsageSampler.cpp:

(WebKit::HighPerformanceGraphicsUsageSampler::timerFired):

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::logDiagnosticMessage):
(WebKit::NetworkProcessProxy::logDiagnosticMessageWithResult):
(WebKit::NetworkProcessProxy::logDiagnosticMessageWithValue):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.messages.in:
  • UIProcess/PerActivityStateCPUUsageSampler.cpp:

(WebKit::PerActivityStateCPUUsageSampler::loggingTimerFired):

  • UIProcess/WebBackForwardList.cpp:

(WebKit::WebBackForwardList::goToItem):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::logDiagnosticMessage):
(WebKit::WebPageProxy::logDiagnosticMessageWithResult):
(WebKit::WebPageProxy::logDiagnosticMessageWithValue):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebDiagnosticLoggingClient.cpp:

(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessage):
(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessageWithResult):
(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessageWithValue):

  • WebProcess/WebCoreSupport/WebDiagnosticLoggingClient.h:
10:18 AM Changeset in webkit [211375] by Ryan Haddad
  • 8 edits in trunk

Unreviewed, rollout r211235 Pointer lock events should be delivered directly to the target element.

The LayoutTest for this change is frequently failing.

Source/WebCore:

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleMousePressEvent):
(WebCore::EventHandler::handleMouseDoubleClickEvent):
(WebCore::EventHandler::handleMouseMoveEvent):
(WebCore::EventHandler::handleMouseReleaseEvent):
(WebCore::EventHandler::handleMouseForceEvent):
(WebCore::EventHandler::handleWheelEvent):

  • page/PointerLockController.cpp:

(WebCore::PointerLockController::isLocked): Deleted.
(WebCore::PointerLockController::dispatchLockedWheelEvent): Deleted.

  • page/PointerLockController.h:

LayoutTests:

  • platform/mac/TestExpectations:
  • pointer-lock/mouse-event-delivery-expected.txt:
  • pointer-lock/mouse-event-delivery.html:
10:16 AM Changeset in webkit [211374] by graouts@webkit.org
  • 7 edits in trunk

LayoutTest media/modern-media-controls/media-controller/media-controller-auto-hide-mouse-leave-after-play.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=167254
<rdar://problem/30259293>

Reviewed by Dean Jackson.

Source/WebCore:

When we would identify that we need to prolong an existing auto-hide timer, when the previous
auto-hide timer was marked as non-cancelable, calling _cancelAutoHideTimer() would not actually
cancel the previous timer, which would let it fire and hide the controls bar. We now have two
methods, _cancelAutoHideTimer() which always cancels the current auto-hide timer, and
_cancelNonEnforcedAutoHideTimer() which is used from all other existing call sites, which only
cancels the current auto-hide timer if it was marked as cancelable. This, and revised timing in
the test itself, make media/modern-media-controls/media-controller/media-controller-auto-hide-
mouse-leave-after-play.html a lot more reliable.

We also make a small drive-by fix where we ensure the "autoHideDelay" property is set first so
that setting other members which may set a timer do not used an undefined value for the auto-hide
timer delay.

  • Modules/modern-media-controls/controls/controls-bar.js:

(ControlsBar.prototype.set visible):
(ControlsBar.prototype.handleEvent):
(ControlsBar.prototype._cancelNonEnforcedAutoHideTimer):
(ControlsBar.prototype._cancelAutoHideTimer):

LayoutTests:

We improve the test by setting off timers when the actual "play" and "pause" events are
triggered rather than when we call .play() or .pause() on the media element. This matches
when the auto-hide timer are set in ControlsBar and makes the test more robust. Combined
with the modern-media-controls WebCore module source changes, we can now stop marking this
test as flaky.

We apply the same change to media/modern-media-controls/media-controller/media-controller-auto-hide-pause.html
since it also sets off a timer based on the media being paused.

  • media/modern-media-controls/media-controller/media-controller-auto-hide-mouse-leave-after-play-expected.txt:
  • media/modern-media-controls/media-controller/media-controller-auto-hide-mouse-leave-after-play.html:
  • media/modern-media-controls/media-controller/media-controller-auto-hide-pause.html:
  • platform/mac/TestExpectations:
10:14 AM Changeset in webkit [211373] by dbates@webkit.org
  • 11 edits
    3 adds
    1 delete in trunk/LayoutTests

[QuickLook] Make HTTP QuickLook tests work in Apple Internal DumpRenderTree
https://bugs.webkit.org/show_bug.cgi?id=167483

Reviewed by Andy Estes.

Write QuickLook tests that tap a hyperlink in terms of UIHelper (in LayoutTests/resources/ui-helper.js)
so that we can run these tests in an Apple Internal build of DumpRenderTree.

  • http/tests/quicklook/at-import-stylesheet-blocked.html: Write in terms of UIHelper.
  • http/tests/quicklook/base-url-blocked.html: Ditto.
  • http/tests/quicklook/cross-origin-iframe-blocked.html: Ditto.
  • http/tests/quicklook/document-domain-is-empty-string.html: Ditto.
  • http/tests/quicklook/external-stylesheet-blocked.html: Ditto.
  • http/tests/quicklook/hide-referer-on-navigation.html: Ditto.
  • http/tests/quicklook/resources/tap-at-point-and-notify-done.js: Removed.
  • http/tests/quicklook/resources/tap-run-test-hyperlink.js: Added.

(runTest):

  • http/tests/quicklook/submit-form-blocked.html: Ditto.
  • http/tests/quicklook/top-navigation-blocked.html: Ditto.
  • platform/ios-simulator-wk1/TestExpectations: Unskip QuickLook tests as we can now run

them in an Apple Internal build of DumpRenderTree. Note that these test are listed in
file LayoutTests/platform/ios-simulator/TestExpectations so that they are skipped in
WebKit for iOS Simulator built with the public iOS SDK as we need to fix <https://bugs.webkit.org/show_bug.cgi?id=141906>.

  • platform/ios-simulator-wk1/http/tests/quicklook/top-navigation-blocked-expected.txt: Added.

For some reason the console message "Unsafe JavaScript attempt to initiate navigation" includes
a line number in DumpRenderTree (why?). This line number is not emitted when the test is run
in WebKitTestRunner. Add platform-specific result for now.

10:13 AM Changeset in webkit [211372] by Carlos Garcia Campos
  • 5 edits in trunk/Source/WebCore

REGRESSION(r202615?): [GStreamer] ASSERTION FAILED: isMainThread() in WebCore::BuiltinResourceHandleConstructorMap& WebCore::builtinResourceHandleConstructorMap()
https://bugs.webkit.org/show_bug.cgi?id=167003

Reviewed by Michael Catanzaro.

Add a way to create a ResourceHandle for a given SoupNetworkSession and use it in the GStreamer streaming client
to ensure both the session and the handle are created and destroyed in the secondary thread. This way we also
avoid using the default session for downloading HLS fragments.

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(ResourceHandleStreamingClient::ResourceHandleStreamingClient): Create a SoupNetworkSession and pass it to ResourceHandle::create().

  • platform/network/ResourceHandle.h: Add create and constructor to receive a SoupNetworkSession.
  • platform/network/ResourceHandleInternal.h: Add SoupNetworkSession member.
  • platform/network/soup/ResourceHandleSoup.cpp:

(WebCore::ResourceHandleInternal::soupSession): Return the SoupNetworkSession if not nullptr.
(WebCore::ResourceHandle::create): Create a ResourceHandle without trying to use any builtin constructor and
using the given SoupNetworkSession.
(WebCore::ResourceHandle::ResourceHandle): Set the SoupNetworkSession if early request validations didn't fail.

9:36 AM Changeset in webkit [211371] by commit-queue@webkit.org
  • 10 edits
    1 copy
    1 add in trunk/Source/WebCore

[WebRTC] Add support for libwebrtc data channel
https://bugs.webkit.org/show_bug.cgi?id=167489

Patch by Youenn Fablet <youennf@gmail.com> on 2017-01-30
Reviewed by Alex Christensen.

Partially covered by webrtc/datachannel/basic.html but not yet enabled on bots.

Introducing LibWebRTCDataChannelHandler as the integration layer between WebCore (RTCDataChannel)
and libwebrtc (DataChannelObserver).

  • Modules/mediastream/RTCDataChannel.cpp:

(WebCore::RTCDataChannel::create):
(WebCore::RTCDataChannel::RTCDataChannel):
(WebCore::RTCDataChannel::bufferedAmount):
(WebCore::RTCDataChannel::bufferedAmountIsDecreasing):

  • Modules/mediastream/RTCDataChannel.h:
  • Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp: Added.

(WebCore::LibWebRTCDataChannelHandler::~LibWebRTCDataChannelHandler):
(WebCore::LibWebRTCDataChannelHandler::setClient):
(WebCore::LibWebRTCDataChannelHandler::sendStringData):
(WebCore::LibWebRTCDataChannelHandler::sendRawData):
(WebCore::LibWebRTCDataChannelHandler::close):
(WebCore::LibWebRTCDataChannelHandler::OnStateChange):
(WebCore::LibWebRTCDataChannelHandler::OnMessage):

  • Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:
  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::LibWebRTCMediaEndpoint::OnRemoveStream):
(WebCore::LibWebRTCMediaEndpoint::addDataChannel):
(): Deleted.

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:

(WebCore::LibWebRTCPeerConnectionBackend::createDataChannelHandler):

  • dom/EventNames.h:
  • platform/mediastream/RTCDataChannelHandler.h:
  • platform/mediastream/RTCDataChannelHandlerClient.h:
  • platform/mock/RTCDataChannelHandlerMock.h:
9:31 AM Changeset in webkit [211370] by Jonathan Bedard
  • 10 edits
    1 add in trunk/Tools

Use simctl instead of LayoutTestRelay
https://bugs.webkit.org/show_bug.cgi?id=165927

Reviewed by Daniel Bates.

Part 1

LayoutTestRelay uses SPI, since recent versions of the iOS SDK allow for installing apps on
simulators through simctl (iOS 10 and later), use this functionality instead.

  • Scripts/webkitpy/port/base.py:

(Port.init): Added _test_runner_process_constructor.

  • Scripts/webkitpy/port/darwin.py:

(DarwinPort.app_identifier_from_bundle): Added function to extract bundle ID from plist.

  • Scripts/webkitpy/port/driver.py:

(Driver._start): Pass worker_number to server_process so we can look up the correct simulator device to use.
(IOSSimulatorDriver): Deleted.

  • Scripts/webkitpy/port/driver_unittest.py:

(DriverTest.test_stop_cleans_up_properly): Set _test_runner_process_constructor for testing.
(DriverTest.test_two_starts_cleans_up_properly): Ditto.
(DriverTest.test_start_actually_starts): Ditto.

  • Scripts/webkitpy/port/ios.py:

(IOSSimulatorPort): Remove relay_name.
(IOSSimulatorPort.init): Set _test_runner_process_constructor to SimulatorProcess for IOSSimulatorPort.
(IOSSimulatorPort._create_simulators): Formatting change.
(IOSSimulatorPort.relay_path): Deleted.
(IOSSimulatorPort._check_relay): Deleted.
(IOSSimulatorPort._check_port_build): Deleted. Use base class implementation
(IOSSimulatorPort._build_relay): Deleted.
(IOSSimulatorPort._build_driver): Deleted. Use base class implementation
(IOSSimulatorPort._driver_class): Deleted. Use base class implementation

  • Scripts/webkitpy/port/ios_unittest.py:

(iosTest.test_32bit): Update test.
(iosTest.test_64bit): Update test.

  • Scripts/webkitpy/port/server_process.py:

(ServerProcess.init): Added argument worker_number. This class does not make use of it. We will make use of this argument in SimulatorProcess to lookup the associated simulator device.
(ServerProcess._set_file_nonblocking): Added to share common code.

  • Scripts/webkitpy/port/server_process_mock.py:

(MockServerProcess.init): Added argument worker_number.

  • Scripts/webkitpy/port/simulator_process.py: Added.

(SimulatorProcess): Added.
(SimulatorProcess.Popen): Added.
(SimulatorProcess.Popen.init): Added. Initialize Popen structure with stdin, stdout, stderr and pid.
(SimulatorProcess.Popen.poll): Added. Check if the process is running.
(SimulatorProcess.Popen.wait): Added. Wait for process to close.
(SimulatorProcess.init): Added. Install app to device specified through port and worker_number.
(SimulatorProcess._reset): Added. Unlink fifos.
(SimulatorProcess._start): Added. Launch app on simulator, link fifos.
(SimulatorProcess._kill): Added. Shutdown app on simulator.

  • Scripts/webkitpy/xcode/simulator.py:

(Device.init): Accept host to run install/launch/terminate.
(Device.install_app): Install app to target Device.
(Device.launch_app): Launch app on target Device.
(Device.terminate_app): Shutdown app on target Device.
(Simulator._parse_devices): Pass host to Device.

9:09 AM Changeset in webkit [211369] by clopez@igalia.com
  • 2 edits in trunk/Tools

[GTK] pixman fails to compile on Raspberry Pi (GCC crash)
https://bugs.webkit.org/show_bug.cgi?id=167411

Reviewed by Michael Catanzaro.

Disable the ARM iwMMXt fast path for pixman, because it triggers
a GCC bug on the RPi with Raspbian/PIXEL causing a build failure.

  • gtk/jhbuild.modules:
9:04 AM Changeset in webkit [211368] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebKit2

[Mac][cmake] Fix the build after r211354.
https://bugs.webkit.org/show_bug.cgi?id=167565

Unreviewed buildfix.

  • PlatformMac.cmake:
8:53 AM Changeset in webkit [211367] by magomez@igalia.com
  • 2 edits in trunk/Source/WebKit2

[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):

8:47 AM Changeset in webkit [211366] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

Unreviewed. Fix GTK+ debug build after r211365.

Remove invalid assert.

  • WebProcess/WebPage/AcceleratedDrawingArea.cpp:

(WebKit::AcceleratedDrawingArea::exitAcceleratedCompositingModeNow):

8:42 AM Changeset in webkit [211365] by Carlos Garcia Campos
  • 7 edits in trunk/Source/WebKit2

[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.

8:35 AM Changeset in webkit [211364] by Manuel Rego Casasnovas
  • 3 edits
    2 deletes in trunk/Source/WebKit2

[GTK] Remove support to enable/disable experimental features
https://bugs.webkit.org/show_bug.cgi?id=167586

Reviewed by Michael Catanzaro.

As requested in bug #167578 we should remove the support to enable/disable
experimental features in WebKitGTK+.
One reason is that CSS Grid Layout is going to be enabled by default now,
so we don't need it to be in this file.
Another is that this support needs to be rewritten to use
the enumerable experimental features API.

  • PlatformGTK.cmake:
  • UIProcess/API/gtk/WebKitSettings.cpp:

(webKitSettingsConstructed):

  • UIProcess/gtk/ExperimentalFeatures.cpp: Removed.
  • UIProcess/gtk/ExperimentalFeatures.h: Removed.
7:38 AM EnvironmentVariables edited by Michael Catanzaro
Removed WEBKITGTK_EXPERIMENTAL_FEATURES (diff)
6:31 AM WebKitGTK/2.14.x edited by clopez@igalia.com
(diff)
5:50 AM WebKitGTK/2.14.x edited by Michael Catanzaro
(diff)
5:50 AM Changeset in webkit [211363] by Carlos Garcia Campos
  • 8 edits in trunk

[GTK] Add API to handle the accelerated compositing policy
https://bugs.webkit.org/show_bug.cgi?id=167509

Reviewed by Michael Catanzaro.

Source/WebKit2:

Now that we have brought back the on demand mode, we should allow applications to choose the policy, without
having to deal with environment variables. Settings also allows to set different policy depending on the web
view, so for example evolution could disable AC for the composer, but leave the on demand mode for the email
viewer. This patch adds a single new setting hardware-acceleration-policy to handle both
acceleratedCompositingEnabled and forceCompositingMode preferences using an enum with values
WEBKIT_HARDWARE_ACCELERATION_POLICY_ON_DEMAND, WEBKIT_HARDWARE_ACCELERATION_POLICY_ALWAYS and
WEBKIT_HARDWARE_ACCELERATION_POLICY_NEVER.

  • UIProcess/API/gtk/WebKitSettings.cpp:

(webKitSettingsSetProperty): Add setter for hardware-acceleration-policy property.
(webKitSettingsGetProperty): Add getter for hardware-acceleration-policy property.
(webkit_settings_class_init): Add hardware-acceleration-policy property.
(webkit_settings_get_hardware_acceleration_policy): Return policy according to the preferences.
(webkit_settings_set_hardware_acceleration_policy): set preferences according to the given policy.

  • UIProcess/API/gtk/WebKitSettings.h:
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: Add new symbols.
  • WebProcess/WebPage/DrawingAreaImpl.cpp:

(WebKit::DrawingAreaImpl::updatePreferences):

Tools:

Handle new setting in MiniBrowser. The settings dialog doesn't support enum settings so it needs to be handled
as a special case. Also add test cases to the get/set API.

  • MiniBrowser/gtk/BrowserSettingsDialog.c:

(hardwareAccelerationPolicyToString):
(stringToHardwareAccelerationPolicy):
(cellRendererChanged):
(browserSettingsDialogConstructed):

  • TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitSettings.cpp:

(testWebKitSettings):

4:07 AM Changeset in webkit [211362] by akling@apple.com
  • 2 edits in trunk/Source/WebKit/mac

[macOS] WebHTMLView has an internal retain cycle with its flagsChangedEventMonitor.
<https://webkit.org/b/167580>

Reviewed by Antti Koivisto.

Avoid the implicit strong capture of self by keeping it in a block variable.
Also add code to dealloc to unregister the event monitor, since it will otherwise leak.
This fixes huge WebHTMLView leaks seen on the leaks bot.

  • WebView/WebHTMLView.mm:

(-[WebHTMLViewPrivate dealloc]):
(-[WebHTMLView viewDidMoveToWindow]):

2:27 AM Changeset in webkit [211361] by Carlos Garcia Campos
  • 2 edits in trunk/LayoutTests

Unreviewed. Skip more tests timing out in GTK+ bots.

Skip two mores tests that use UIScriptController to generate events and another one expecting native
HTML form validation popover.

  • platform/gtk/TestExpectations:
2:14 AM Changeset in webkit [211360] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

Several web timing tests crash in GTK+ and AppleWin bots
https://bugs.webkit.org/show_bug.cgi?id=167577

Reviewed by Ryosuke Niwa.

The problem is that entry is used in both the key, to get name, and in the value with WTFMove. So, the name is
invalidated by the move. It could be fixed by simply copying the name, instead of using entry->name, but I think
that code could be simplified using HashMap::ensure and then we don't need any string copy, nor even the static
insertPerformanceEntry().

Fix crashes in several imported/w3c/web-platform-tests/user-timing/ tests.

  • page/PerformanceUserTiming.cpp:

(WebCore::UserTiming::mark):
(WebCore::UserTiming::measure):
(WebCore::insertPerformanceEntry): Deleted.

2:10 AM Changeset in webkit [211359] by Carlos Garcia Campos
  • 2 edits in trunk/LayoutTests

Unreviewed. Skip form validation tests timing out in GTK+ bots.

  • platform/gtk/TestExpectations:
12:47 AM Changeset in webkit [211358] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

[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.

Jan 29, 2017:

9:55 PM Changeset in webkit [211357] by Carlos Garcia Campos
  • 4 edits in trunk/Source

[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):

9:03 PM Changeset in webkit [211356] by n_wang@apple.com
  • 20 edits
    2 adds in trunk

AX: WKContentView needs to implement UITextInput methods to make speak selection highlighting work
https://bugs.webkit.org/show_bug.cgi?id=166955

Reviewed by Ryosuke Niwa.

Source/WebCore:

Created a new version of Range::collectSelectionRect() that returns rects for each
line, so that Speak Selection doesn't need to handle searching for soft line breaks.
Also added a variant of findPlainText to search for the closest matched range to the given position.

Test: editing/text-iterator/range-of-string-closest-to-position.html

  • dom/Range.cpp:

(WebCore::Range::collectSelectionRectsWithoutUnionInteriorLines):
(WebCore::Range::collectSelectionRects):

  • dom/Range.h:
  • editing/TextIterator.cpp:

(WebCore::findPlainTextMatches):
(WebCore::updateSearchBuffer):
(WebCore::findIteratorOptions):
(WebCore::rangeMatches):
(WebCore::findClosestPlainText):
(WebCore::findPlainText):
(WebCore::findPlainTextOffset): Deleted.

  • editing/TextIterator.h:
  • editing/htmlediting.h:
  • testing/Internals.cpp:

(WebCore::Internals::rangeOfStringNearLocation):

  • testing/Internals.h:
  • testing/Internals.idl:

Source/WebKit2:

Implemented methods that Speak Selection can use to retrieve the word/sentence highlighting rects.

  • Scripts/webkit/messages.py:

(headers_for_type):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView webSelectionRectsForSelectionRects:]):
(-[WKContentView webSelectionRects]):
(-[WKContentView _accessibilityRetrieveRectsEnclosingSelectionOffset:withGranularity:]):
(-[WKContentView _accessibilityRetrieveRectsAtSelectionOffset:withText:]):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::selectionRectsCallback):
(WebKit::WebPageProxy::requestRectsForGranularityWithSelectionOffset):
(WebKit::WebPageProxy::requestRectsAtSelectionOffsetWithText):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::visiblePositionForPositionWithOffset):
(WebKit::WebPage::getRectsForGranularityWithSelectionOffset):
(WebKit::rangeNearPositionMatchesText):
(WebKit::WebPage::getRectsAtSelectionOffsetWithText):

LayoutTests:

  • editing/text-iterator/range-of-string-closest-to-position-expected.txt: Added.
  • editing/text-iterator/range-of-string-closest-to-position.html: Added.
7:08 PM WebKitGTK/Debugging edited by clopez@igalia.com
(diff)
5:40 PM Changeset in webkit [211355] by aestes@apple.com
  • 15 edits in trunk

[QuickLook] Add a WebPreference to enable saving QuickLook documents in WebKitLegacy
https://bugs.webkit.org/show_bug.cgi?id=167563
<rdar://problem/30253207>

Reviewed by Andreas Kling.

Source/WebCore:

  • loader/ios/QuickLook.h: Removed unused declarations.

(WebCore::QuickLookHandle::firstRequestURL): Deleted.

  • loader/ios/QuickLook.mm:

(WebCore::removeQLPreviewConverterForURL): Stopped deleting the temporary file here; that's
now done in QuickLookDocumentWriter.
(addQLPreviewConverterWithFileForURL): Changed from an exported function to a static
function since it's now only called inside QuickLook.mm.
(WebCore::QuickLookHandle::QuickLookHandle): Stopped initializing m_firstRequestURL.
(WebCore::addQLPreviewConverterWithFileForURL): Deleted.
(WebCore::qlPreviewConverterFileNameForURL): Deleted.
(WebCore::qlPreviewConverterUTIForURL): Deleted.
(WebCore::QuickLookHandle::previewRequestURL): Deleted.
(WebCore::QuickLookHandle::converter): Deleted.

Source/WebKit/mac:

Instead of only saving QuickLook documents to a temporary file when the client is
MobileSafari, base this decision on a WebPreference that clients can choose to enable.

This also changes the SPI for accessing the temporary file path and UTI. Instead of
-[WebView quickLookContentForURL:], which requires the client to pass the response URL of
the frame that saved the QuickLook document, the content dictionary is now stored as a
property of WebDataSource.

This also removes the manual lifetime management of the QLPreviewConverter from
QuickLookDocumentWriter. The QLPreviewConverter is kept alive by DocumentLoader these days,
which ensures it lives long enough to respond to subresource requests.

New API test: QuickLook.LegacyQuickLookContent

  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::didCreateQuickLookHandle): Moved the logic of deciding whether to
write a temporary file to here from the QuickLookDocumentWriter constructor.

  • WebView/WebDataSource.mm: Declared _quickLookContent.

(-[WebDataSource _quickLookContent]):
(-[WebDataSource _setQuickLookContent:]):

  • WebView/WebDataSourceInternal.h: Overrode _quickLookContent as a read/write property.
  • WebView/WebDataSourcePrivate.h: Declared _quickLookContent as a readonly property.
  • WebView/WebPreferenceKeysPrivate.h: Defined WebKitQuickLookDocumentSavingPreferenceKey.
  • WebView/WebPreferences.mm:

(-[WebPreferences quickLookDocumentSavingEnabled]):
(-[WebPreferences setQuickLookDocumentSavingEnabled:]):

  • WebView/WebPreferencesPrivate.h: Declared property quickLookDocumentSavingEnabled.
  • WebView/WebView.mm:

(-[WebView quickLookContentForURL:]): Changed to always return nil.

  • WebView/WebViewPrivate.h: Added a comment stating that clients should use

-[WebDataSource _quickLookContent] instead.

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/QuickLook.mm:

(-[QuickLookNavigationDelegate _webView:didStartLoadForQuickLookDocumentInMainFrameWithFileName:uti:]):
(-[QuickLookNavigationDelegate _webView:didFinishLoadForQuickLookDocumentInMainFrame:]):
(runTest):
(-[QuickLookFrameLoadDelegate webView:didFinishLoadForFrame:]):
(TEST):

4:26 PM Changeset in webkit [211354] by mitz@apple.com
  • 8 edits
    5 adds in trunk

[iOS] Expose WebCore::DataDetection::detectContentInRange WKWebProcessPlugInRangeHandle
https://bugs.webkit.org/show_bug.cgi?id=167565

Reviewed by Sam Weinig.

Source/WebKit2:

Test: TestWebKitAPI/Tests/WebKit2Cocoa/BundleRangeHandle.mm

  • Shared/API/Cocoa/WKDataDetectorTypes.h: Added. Moved the enum definition from WKWebViewConfiguration.h to here.
  • Shared/API/Cocoa/WKDataDetectorTypesInternal.h: Added.

(fromWKDataDetectorTypes): Moved from WKWebView.mm.

  • UIProcess/API/Cocoa/WKWebView.mm:

(fromWKDataDetectorTypes): Moved to WKDataDetectorTypesInternal.h.

  • UIProcess/API/Cocoa/WKWebViewConfiguration.h: Moved WKDataDetectorTypes definition out to WKDataDetectorTypes.h.
  • WebKit2.xcodeproj/project.pbxproj: Added references to new files.
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandle.h:
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandle.mm:

(-[WKWebProcessPlugInRangeHandle detectDataWithTypes:context:]): Added. Calls

DataDetection::detectContentInRange.

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/BundleRangeHandle.mm: Added.

(-[BundleRangeHandleRemoteObject textFromBodyRange:]):
(-[BundleRangeHandleRemoteObject bodyInnerHTMLAfterDetectingData:]):
(TEST):

  • TestWebKitAPI/Tests/WebKit2Cocoa/BundleRangeHandlePlugIn.mm: Added.

(-[BundleRangeHandlePlugIn webProcessPlugIn:didCreateBrowserContextController:]):
(-[BundleRangeHandlePlugIn webProcessPlugInBrowserContextController:didFinishDocumentLoadForFrame:]):

  • TestWebKitAPI/Tests/WebKit2Cocoa/BundleRangeHandleProtocol.h: Added.
12:21 PM Changeset in webkit [211353] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

Simple line layout: PerformanceTests/Layout/simple-line-layout-innertext.html regressed at r211108
https://bugs.webkit.org/show_bug.cgi?id=167562

Reviewed by Antti Koivisto.

Apparently RunResolver::Run::constructStringForHyphenIfNeeded() is in a superhot codepath.
The Run should not have any additional members anyway, so let's construct the hyphenated
string on demand.
Progression on simple-line-layout-innertext.html is from ~34runs/sec back to ~50runs/sec.

Covered by existing text.

  • rendering/RenderTreeAsText.cpp:

(WebCore::writeSimpleLine):

  • rendering/SimpleLineLayoutFunctions.cpp:

(WebCore::SimpleLineLayout::paintFlow):

  • rendering/SimpleLineLayoutResolver.cpp:

(WebCore::SimpleLineLayout::RunResolver::Run::Run):
(WebCore::SimpleLineLayout::RunResolver::Run::textWithHyphen):
(WebCore::SimpleLineLayout::RunResolver::Run::text):
(WebCore::SimpleLineLayout::RunResolver::Run::constructStringForHyphenIfNeeded): Deleted.

  • rendering/SimpleLineLayoutResolver.h:
7:13 AM Changeset in webkit [211352] by yoav@yoav.ws
  • 4 edits in trunk/LayoutTests

Add invalid value tests to Link header handling.
https://bugs.webkit.org/show_bug.cgi?id=167366

Reviewed by Alex Christensen.

  • http/tests/preload/download_resources_from_invalid_headers-expected.txt:
  • http/tests/preload/resources/download_resources_from_header.php:
  • http/tests/preload/resources/invalid_resources_from_header.php:
6:30 AM Changeset in webkit [211351] by Gyuyoung Kim
  • 2 edits in trunk/LayoutTests

[EFL] Gardening on 29th Jan.

Unreviewed EFL gardening. Update flaky tests and crash tests.

  • platform/efl/TestExpectations:
2:06 AM Changeset in webkit [211350] by Carlos Garcia Campos
  • 10 edits in trunk/Source/WebKit2

[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.

Jan 28, 2017:

11:54 PM WindowsWithoutCygwin edited by mmaxfield@apple.com
(diff)
11:30 PM Changeset in webkit [211349] by ddkilzer@apple.com
  • 2 edits
    93 moves
    4 deletes in trunk/LayoutTests

Migrate 97 *-disabled tests to use TestExpectations
<https://webkit.org/b/167537>

Reviewed by Darin Adler.

  • fast/dom/HTMLDataGridElement/DataGridColumns-basic-expected.txt: Removed.
  • fast/dom/HTMLDataGridElement/DataGridColumns-basic.html-disabled: Removed.
  • fast/dom/HTMLDataGridElement/DataGridColumns-dom-attributes-expected.txt: Removed.
  • fast/dom/HTMLDataGridElement/DataGridColumns-dom-attributes.html-disabled: Removed.
  • fast/dom/HTMLDataGridElement/DataGridColumns-dom-expected.txt: Removed.
  • fast/dom/HTMLDataGridElement/DataGridColumns-dom.html-disabled: Removed.
  • fast/dom/HTMLDataGridElement/DataGridDataSource-basic-expected.txt: Removed.
  • fast/dom/HTMLDataGridElement/DataGridDataSource-basic.html-disabled: Removed.
  • Tests disabled in r52512. DataGrid feature removed in r84991.
  • http/tests/appcache/dynamic-entries-no-cache-expected.txt: Removed.
  • http/tests/appcache/dynamic-entries-no-cache.html-disabled: Removed.
  • Test disabled in r39816. AppCache dynamic entry feature removed in r95486.
  • svg/W3C-SVG-1.1/resources/filters-comptran-01-f.svg-disabled: Removed.
  • Unused. Same as LayoutTests/svg/W3C-SVG-1.1/filters-comptran-01-b.svg.
  • animations/font-size-using-ems.html: Renamed from LayoutTests/animations/font-size-using-ems.html-disabled.
  • compositing/objects/composited-object-alignment.html: Renamed from LayoutTests/compositing/objects/composited-object-alignment.html-disabled.
  • compositing/tiling/huge-layer-resize.html: Renamed from LayoutTests/compositing/tiling/huge-layer-resize.html-disabled.
  • compositing/tiling/huge-layer.html: Renamed from LayoutTests/compositing/tiling/huge-layer.html-disabled.
  • css2.1/t1202-counter-10-b.html: Renamed from LayoutTests/css2.1/t1202-counter-10-b.html-disabled.
  • css2.1/t1202-counters-10-b.html: Renamed from LayoutTests/css2.1/t1202-counters-10-b.html-disabled.
  • css2.1/t1204-increment-00-c-o.html: Renamed from LayoutTests/css2.1/t1204-increment-00-c-o.html-disabled.
  • css2.1/t1204-increment-01-c-o.html: Renamed from LayoutTests/css2.1/t1204-increment-01-c-o.html-disabled.
  • css2.1/t1204-increment-02-c-o.html: Renamed from LayoutTests/css2.1/t1204-increment-02-c-o.html-disabled.
  • css2.1/t1204-reset-00-c-o.html: Renamed from LayoutTests/css2.1/t1204-reset-00-c-o.html-disabled.
  • css2.1/t1204-reset-01-c-o.html: Renamed from LayoutTests/css2.1/t1204-reset-01-c-o.html-disabled.
  • css2.1/t1204-reset-02-c-o.html: Renamed from LayoutTests/css2.1/t1204-reset-02-c-o.html-disabled.
  • dom/xhtml/level2/html/HTMLFrameElement09.xhtml: Renamed from LayoutTests/dom/xhtml/level2/html/HTMLFrameElement09.xhtml-disabled.
  • dom/xhtml/level3/core/documentadoptnode22.xhtml: Renamed from LayoutTests/dom/xhtml/level3/core/documentadoptnode22.xhtml-disabled.
  • dom/xhtml/level3/core/documentnormalizedocument06.xhtml: Renamed from LayoutTests/dom/xhtml/level3/core/documentnormalizedocument06.xhtml-disabled.
  • dom/xhtml/level3/core/documentsetdocumenturi01.xhtml: Renamed from LayoutTests/dom/xhtml/level3/core/documentsetdocumenturi01.xhtml-disabled.
  • dom/xhtml/level3/core/documentsetdocumenturi02.xhtml: Renamed from LayoutTests/dom/xhtml/level3/core/documentsetdocumenturi02.xhtml-disabled.
  • dom/xhtml/level3/core/domimplementationregistry12.xhtml: Renamed from LayoutTests/dom/xhtml/level3/core/domimplementationregistry12.xhtml-disabled.
  • dom/xhtml/level3/core/domimplementationregistry23.xhtml: Renamed from LayoutTests/dom/xhtml/level3/core/domimplementationregistry23.xhtml-disabled.
  • dom/xhtml/level3/core/nodecomparedocumentposition14.xhtml: Renamed from LayoutTests/dom/xhtml/level3/core/nodecomparedocumentposition14.xhtml-disabled.
  • dom/xhtml/level3/core/nodecomparedocumentposition15.xhtml: Renamed from LayoutTests/dom/xhtml/level3/core/nodecomparedocumentposition15.xhtml-disabled.
  • dom/xhtml/level3/core/noderemovechild03.xhtml: Renamed from LayoutTests/dom/xhtml/level3/core/noderemovechild03.xhtml-disabled.
  • dom/xhtml/level3/core/nodereplacechild06.xhtml: Renamed from LayoutTests/dom/xhtml/level3/core/nodereplacechild06.xhtml-disabled.
  • dom/xhtml/level3/core/nodereplacechild07.xhtml: Renamed from LayoutTests/dom/xhtml/level3/core/nodereplacechild07.xhtml-disabled.
  • dom/xhtml/level3/core/nodereplacechild08.xhtml: Renamed from LayoutTests/dom/xhtml/level3/core/nodereplacechild08.xhtml-disabled.
  • editing/execCommand/create-list-1.html: Renamed from LayoutTests/editing/execCommand/create-list-1.html-disabled.
  • editing/input/attributed-substring-from-range-lines.html: Renamed from LayoutTests/editing/input/attributed-substring-from-range-lines.html-disabled.
  • editing/pasteboard/paste-empty-startcontainer.html: Renamed from LayoutTests/editing/pasteboard/paste-empty-startcontainer.html-disabled.
  • editing/selection/inconsistent-in-removeChildNode.html: Renamed from LayoutTests/editing/selection/inconsistent-in-removeChildNode.html-disabled.
  • editing/style/5091898.html: Renamed from LayoutTests/editing/style/5091898.html-disabled.
  • fast/css/css2-system-color.html: Renamed from LayoutTests/fast/css/css2-system-color.html-disabled.
  • fast/css/font-face-in-shadow-DOM.html: Renamed from LayoutTests/fast/css/font-face-in-shadow-DOM.html-disabled.
  • fast/css/limited-vendor-prefix-behavior.html: Renamed from LayoutTests/fast/css/limited-vendor-prefix-behavior.html-disabled.
  • fast/dom/Window/timeout-released-on-close.html: Renamed from LayoutTests/fast/dom/Window/timeout-released-on-close.html-disabled.
  • fast/dom/Window/window-resize-nan.html: Renamed from LayoutTests/fast/dom/Window/window-resize-nan.html-disabled.
  • fast/dom/gc-8.html: Renamed from LayoutTests/fast/dom/gc-8.html-disabled.
  • fast/dynamic/crash-paint-no-documentElement-renderer.html: Renamed from LayoutTests/fast/dynamic/crash-paint-no-documentElement-renderer.html-disabled.
  • fast/events/destroyed-atomic-string.html: Renamed from LayoutTests/fast/events/destroyed-atomic-string.html-disabled.
  • fast/events/key-events-in-frame.html: Renamed from LayoutTests/fast/events/key-events-in-frame.html-disabled.
  • fast/frames/iframe-scroll-page-up-down.html: Renamed from LayoutTests/fast/frames/iframe-scroll-page-up-down.html-disabled.
  • fast/html/marquee-alternate.html: Renamed from LayoutTests/fast/html/marquee-alternate.html-disabled.
  • fast/leaks/003.html: Renamed from LayoutTests/fast/leaks/003.html-disabled.
  • fast/loader/api-test-go-to-current-back-forward-item.html: Renamed from LayoutTests/fast/loader/api-test-go-to-current-back-forward-item.html-disabled.
  • fast/loader/api-test-new-window-data-load-base-url.html: Renamed from LayoutTests/fast/loader/api-test-new-window-data-load-base-url.html-disabled.
  • fast/loader/form-events-back-forward.html: Renamed from LayoutTests/fast/loader/form-events-back-forward.html-disabled.
  • fast/notifications/notifications-event-stop-propagation.html: Renamed from LayoutTests/fast/notifications/notifications-event-stop-propagation.html-disabled.
  • fast/notifications/notifications-multi-events.html: Renamed from LayoutTests/fast/notifications/notifications-multi-events.html-disabled.
  • fast/ruby/after-block-doesnt-crash.html: Renamed from LayoutTests/fast/ruby/after-block-doesnt-crash.html-disabled.
  • fast/ruby/after-table-doesnt-crash.html: Renamed from LayoutTests/fast/ruby/after-table-doesnt-crash.html-disabled.
  • fast/ruby/generated-after-counter-doesnt-crash.html: Renamed from LayoutTests/fast/ruby/generated-after-counter-doesnt-crash.html-disabled.
  • fast/ruby/generated-before-and-after-counter-doesnt-crash.html: Renamed from LayoutTests/fast/ruby/generated-before-and-after-counter-doesnt-crash.html-disabled.
  • fast/shadow-dom/copy-shadow-tree.html: Renamed from LayoutTests/fast/shadow-dom/copy-shadow-tree.html-disabled.
  • fast/table/double-height-table-no-tbody.html: Renamed from LayoutTests/fast/table/double-height-table-no-tbody.html-disabled.
  • fast/text/large-text-composed-char-dos.html: Renamed from LayoutTests/fast/text/large-text-composed-char-dos.html-disabled.
  • http/tests/multipart/win-boundary-crash.html: Renamed from LayoutTests/http/tests/multipart/win-boundary-crash.html-disabled.
  • http/tests/navigation/post-goback-repost-policy.html: Renamed from LayoutTests/http/tests/navigation/post-goback-repost-policy.html-disabled.
  • http/tests/navigation/success200-frames-goback.html: Renamed from LayoutTests/http/tests/navigation/success200-frames-goback.html-disabled.
  • http/tests/navigation/success200-frames-reload.html: Renamed from LayoutTests/http/tests/navigation/success200-frames-reload.html-disabled.
  • http/tests/navigation/success200-subframeload-goback.html: Renamed from LayoutTests/http/tests/navigation/success200-subframeload-goback.html-disabled.
  • java/lc3/ArrayMethods/object-001.html: Renamed from LayoutTests/java/lc3/ArrayMethods/object-001.html-disabled.
  • java/lc3/forin/array-001.html: Renamed from LayoutTests/java/lc3/forin/array-001.html-disabled.
  • jquery/effects.html: Renamed from LayoutTests/jquery/effects.html-disabled.
  • js/garbage-collect-after-string-appends.html: Renamed from LayoutTests/js/garbage-collect-after-string-appends.html-disabled.
  • js/kde/Date.html: Renamed from LayoutTests/js/kde/Date.html-disabled.
  • js/resources/garbage-collect-after-string-appends.js: Renamed from LayoutTests/js/resources/garbage-collect-after-string-appends.js-disabled.
  • js/string-concatenate-outofmemory.html: Renamed from LayoutTests/js/string-concatenate-outofmemory.html-disabled.
  • media/video-canvas.html: Renamed from LayoutTests/media/video-canvas.html-disabled.
  • platform/mac/plugins/pluginDocumentView-deallocated-dataSource.html: Renamed from LayoutTests/platform/mac/plugins/pluginDocumentView-deallocated-dataSource.html-disabled.
  • sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.3/15.1.3.1_decodeURI/S15.1.3.1_A2.5_T1.html: Renamed from LayoutTests/sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.3/15.1.3.1_decodeURI/S15.1.3.1_A2.5_T1.html-disabled.
  • sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.3/15.1.3.2_decodeURIComponent/S15.1.3.2_A2.5_T1.html: Renamed from LayoutTests/sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/15.1.3/15.1.3.2_decodeURIComponent/S15.1.3.2_A2.5_T1.html-disabled.
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.3/S15.9.3.1_A5_T1.html: Renamed from LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.3/S15.9.3.1_A5_T1.html-disabled.
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.3/S15.9.3.1_A5_T2.html: Renamed from LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.3/S15.9.3.1_A5_T2.html-disabled.
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.3/S15.9.3.1_A5_T3.html: Renamed from LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.3/S15.9.3.1_A5_T3.html-disabled.
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.3/S15.9.3.1_A5_T4.html: Renamed from LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.3/S15.9.3.1_A5_T4.html-disabled.
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.3/S15.9.3.1_A5_T5.html: Renamed from LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.3/S15.9.3.1_A5_T5.html-disabled.
  • sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.3/S15.9.3.1_A5_T6.html: Renamed from LayoutTests/sputnik/Conformance/15_Native_Objects/15.9_Date/15.9.3/S15.9.3.1_A5_T6.html-disabled.
  • sputnik/Unicode/Unicode_218/S7.6_A1.1_T5.html: Renamed from LayoutTests/sputnik/Unicode/Unicode_218/S7.6_A1.1_T5.html-disabled.
  • sputnik/Unicode/Unicode_218/S7.6_A3.1.html: Renamed from LayoutTests/sputnik/Unicode/Unicode_218/S7.6_A3.1.html-disabled.
  • sputnik/Unicode/Unicode_218/S7.6_A3.2.html: Renamed from LayoutTests/sputnik/Unicode/Unicode_218/S7.6_A3.2.html-disabled.
  • sputnik/Unicode/Unicode_218/S7.6_A5.2_T5.html: Renamed from LayoutTests/sputnik/Unicode/Unicode_218/S7.6_A5.2_T5.html-disabled.
  • sputnik/Unicode/Unicode_320/S7.6_A1.1_T5.html: Renamed from LayoutTests/sputnik/Unicode/Unicode_320/S7.6_A1.1_T5.html-disabled.
  • sputnik/Unicode/Unicode_320/S7.6_A5.2_T5.html: Renamed from LayoutTests/sputnik/Unicode/Unicode_320/S7.6_A5.2_T5.html-disabled.
  • sputnik/Unicode/Unicode_410/S7.6_A1.1_T5.html: Renamed from LayoutTests/sputnik/Unicode/Unicode_410/S7.6_A1.1_T5.html-disabled.
  • sputnik/Unicode/Unicode_410/S7.6_A5.2_T5.html: Renamed from LayoutTests/sputnik/Unicode/Unicode_410/S7.6_A5.2_T5.html-disabled.
  • sputnik/Unicode/Unicode_500/S7.6_A1.1_T5.html: Renamed from LayoutTests/sputnik/Unicode/Unicode_500/S7.6_A1.1_T5.html-disabled.
  • sputnik/Unicode/Unicode_500/S7.6_A5.2_T5.html: Renamed from LayoutTests/sputnik/Unicode/Unicode_500/S7.6_A5.2_T5.html-disabled.
  • sputnik/Unicode/Unicode_510/S7.6_A1.1_T5.html: Renamed from LayoutTests/sputnik/Unicode/Unicode_510/S7.6_A1.1_T5.html-disabled.
  • sputnik/Unicode/Unicode_510/S7.6_A5.2_T5.html: Renamed from LayoutTests/sputnik/Unicode/Unicode_510/S7.6_A5.2_T5.html-disabled.
  • svg/batik/text/textBiDi.svg: Renamed from LayoutTests/svg/batik/text/textBiDi.svg-disabled.
  • svg/custom/filter-source-alpha.svg: Renamed from LayoutTests/svg/custom/filter-source-alpha.svg-disabled.
  • svg/custom/font-face-fallback.svg: Renamed from LayoutTests/svg/custom/font-face-fallback.svg-disabled.
  • svg/custom/js-font-test.svg: Renamed from LayoutTests/svg/custom/js-font-test.svg-disabled.
  • svg/zoom/page/zoom-svg-through-object-with-text.xhtml: Renamed from LayoutTests/svg/zoom/page/zoom-svg-through-object-with-text.xhtml-disabled.
  • Renamed disabled tests now that they're skipped in TestExpectations.
11:16 PM Changeset in webkit [211348] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

[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.

11:15 PM Changeset in webkit [211347] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

[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):

11:14 PM Changeset in webkit [211346] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

[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):

5:02 PM Changeset in webkit [211345] by Matt Baker
  • 15 edits
    1 copy
    2 adds in trunk

Web Inspector: Need some limit on Async Call Stacks for async loops (rAF loops)
https://bugs.webkit.org/show_bug.cgi?id=165633
<rdar://problem/29738502>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

This patch limits the memory used by the Inspector backend to store async
stack trace data.

Asynchronous stack traces are stored as a disjoint set of parent pointer
trees. Tree nodes represent asynchronous operations, and hold a copy of
the stack trace at the time the operation was scheduled. Each tree can
be regarded as a set of stack traces, stored as singly linked lists that
share part of their structure (specifically their tails). Traces belonging
to the same tree will at least share a common root. A stack trace begins
at a leaf node and follows the chain of parent pointers to the root of
of the tree. Leaf nodes always contain pending asynchronous calls.

When an asynchronous operation is scheduled with requestAnimationFrame,
setInterval, etc, a node is created containing the current call stack and
some bookkeeping data for the operation. An unique identifier comprised
of an operation type and callback identifier is mapped to the node. If
scheduling the callback was itself the result of an asynchronous call,
the node becomes a child of the node associated with that call, otherwise
it becomes the root of a new tree.

A node is either pending, active, dispatched, or canceled. Nodes
start out as pending. After a callback for a pending node is dispatched
the node is marked as such, unless it is a repeating callback such as
setInterval, in which case it remains pending. Once a node is no longer
pending it is removed, as long as it has no children. Since nodes are
reference counted, it is a property of the stack trace tree that nodes
that are no longer pending and have no children pointing to them will be
automatically pruned from the tree.

If an async operation is canceled (e.g. cancelTimeout), the associated
node is marked as such. If the callback is not being dispatched at the
time, and has no children, it is removed.

Because async operations can be chained indefinitely, stack traces are
limited to a maximum depth. The depth of a stack trace is equal to the
sum of the depths of its nodes, with a node's depth equal to the number
of frames in its associated call stack. For any stack trace,

S = { s𝟶, s𝟷, …, s𝑘 }, with endpoints s𝟶, s𝑘
depth(S) = depth(s𝟶) + depth(s𝟷) + … + depth(s𝑘)

A stack trace is truncated when it exceeds the maximum depth. Truncation
occurs on node boundaries, not call frames, consequently the maximum depth
is more of a target than a guarantee:

d = maximum stack trace depth
for all S, depth(S) ≤ d + depth(s𝑘)

Because nodes can belong to multiple stack traces, it may be necessary
to clone the tail of a stack trace being truncated to prevent other traces
from being effected.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • inspector/AsyncStackTrace.cpp: Added.

(Inspector::AsyncStackTrace::create):
(Inspector::AsyncStackTrace::AsyncStackTrace):
(Inspector::AsyncStackTrace::~AsyncStackTrace):
(Inspector::AsyncStackTrace::isPending):
(Inspector::AsyncStackTrace::isLocked):
(Inspector::AsyncStackTrace::willDispatchAsyncCall):
(Inspector::AsyncStackTrace::didDispatchAsyncCall):
(Inspector::AsyncStackTrace::didCancelAsyncCall):
(Inspector::AsyncStackTrace::buildInspectorObject):
(Inspector::AsyncStackTrace::truncate):
(Inspector::AsyncStackTrace::remove):

  • inspector/AsyncStackTrace.h:
  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::InspectorDebuggerAgent::didScheduleAsyncCall):
(Inspector::InspectorDebuggerAgent::didCancelAsyncCall):
(Inspector::InspectorDebuggerAgent::willDispatchAsyncCall):
(Inspector::InspectorDebuggerAgent::didDispatchAsyncCall):
(Inspector::InspectorDebuggerAgent::didPause):
(Inspector::InspectorDebuggerAgent::clearAsyncStackTraceData):
(Inspector::InspectorDebuggerAgent::buildAsyncStackTrace): Deleted.
(Inspector::InspectorDebuggerAgent::refAsyncCallData): Deleted.
(Inspector::InspectorDebuggerAgent::derefAsyncCallData): Deleted.

  • inspector/agents/InspectorDebuggerAgent.h:
  • inspector/protocol/Console.json:

Source/WebInspectorUI:

  • Localizations/en.lproj/localizedStrings.js:

Text for "Truncated" marker tree element.

  • UserInterface/Models/StackTrace.js:

(WebInspector.StackTrace):
(WebInspector.StackTrace.fromPayload):
(WebInspector.StackTrace.prototype.get truncated):
Plumbing for new Console.StackTrace property truncated.

  • UserInterface/Views/ThreadTreeElement.css:

(.tree-outline > .item.thread + ol > .item.truncated-call-frames):
(.tree-outline > .item.thread + ol > .item.truncated-call-frames .icon):
Styles for "Truncated" marker tree element.

  • UserInterface/Views/ThreadTreeElement.js:

(WebInspector.ThreadTreeElement.prototype.refresh):
Append "Truncated" marker tree element if necessary.

  • Versions/Inspector-iOS-10.3.json:

LayoutTests:

Add truncation test cases and cleanup call frame logging.

  • inspector/debugger/async-stack-trace-expected.txt:
  • inspector/debugger/async-stack-trace.html:
  • inspector/debugger/resources/log-active-stack-trace.js: Added.

(TestPage.registerInitializer.window.getActiveStackTrace):
(TestPage.registerInitializer.logStackTrace.logCallFrame):
(TestPage.registerInitializer.):
(TestPage.registerInitializer.window.logActiveStackTrace):
(TestPage.registerInitializer):

4:39 PM Changeset in webkit [211344] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

Remote Inspector: Listing should be updated when a target gains or loses a debugger session
https://bugs.webkit.org/show_bug.cgi?id=167449

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-28
Reviewed by Brian Burg.

  • inspector/remote/RemoteInspector.h:
  • inspector/remote/RemoteInspector.mm:

(Inspector::RemoteInspector::setupFailed):
(Inspector::RemoteInspector::updateTargetListing):
(Inspector::RemoteInspector::receivedSetupMessage):
(Inspector::RemoteInspector::receivedDidCloseMessage):
(Inspector::RemoteInspector::receivedConnectionDiedMessage):
Whenever we add/remove a connection we should update the listing properties
for that target that corresponded to that connection. In this way group
updating active sessions, the target, and pushing listing together.

4:16 PM Changeset in webkit [211343] by timothy_horton@apple.com
  • 4 edits in trunk/Source

Don't flash a tap highlight for the entirety of an editable WKWebView
https://bugs.webkit.org/show_bug.cgi?id=167486
<rdar://problem/30193996>

Reviewed by Dan Bernstein.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::sendTapHighlightForNodeIfNecessary):
Bail from providing a tap highlight if we are about to highlight
the entire body of an editable web view.

  • dom/Document.h:

Export.

3:13 PM Changeset in webkit [211342] by Wenson Hsieh
  • 12 edits in trunk/Source

Check USE(APPLE_INTERNAL_SDK) instead of specific headers when importing from WebKitAdditions
https://bugs.webkit.org/show_bug.cgi?id=167555

Reviewed by Dan Bernstein.

Instead of guarding #import <WebKitAdditions/*> on the existence of the imported file, consult
USE(APPLE_INTERNAL_SDK) instead.

Source/WebCore:

  • page/ios/EventHandlerIOS.mm:
  • platform/ios/DragImageIOS.mm:
  • platform/ios/PasteboardIOS.mm:
  • platform/mac/DragDataMac.mm:

Source/WebKit2:

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:
  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:
  • WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:

Source/WTF:

  • wtf/Platform.h:
2:53 PM Changeset in webkit [211341] by yoav@yoav.ws
  • 46 edits in trunk

Add Link Preload as an off-by-default experimental feature menu item.
https://bugs.webkit.org/show_bug.cgi?id=167201

Reviewed by Ryosuke Niwa.

Source/WebCore:

Removed the explicit setting of the Link Preload experimental feature,
as it is now on by default for testing.

No new tests as this just removes methods from settings.

  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):

  • testing/InternalSettings.h:
  • testing/InternalSettings.idl:

Source/WebKit/mac:

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(-[WebPreferences linkPreloadEnabled]):
(-[WebPreferences setLinkPreloadEnabled:]):

  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

Source/WebKit/win:

  • WebPreferenceKeysPrivate.h:
  • WebPreferences.cpp:

(WebPreferences::initializeDefaultSettings):
(WebPreferences::valueForKey):
(WebPreferences::setLinkPreloadEnabled):
(WebPreferences::linkPreloadEnabled):

  • WebPreferences.h:
  • Interfaces/IWebPreferencesPrivate.idl:

Source/WebKit2:

  • Shared/WebPreferencesDefinitions.h:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetLinkPreloadEnabled):
(WKPreferencesGetLinkPreloadEnabled):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Tools:

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebPreferencesToConsistentValues):

  • DumpRenderTree/win/DumpRenderTree.cpp:

(resetWebPreferencesToConsistentValues):

Websites/webkit.org:

  • experimental-features.html: Added Link Preload.

LayoutTests:

Removed code explicitly enabling Link preload from the tests, as it is now
turned on by default for testing. Corrected expectation files accordingly.

  • http/tests/fetch/redirectmode-and-preload.html:
  • http/tests/preload/delaying_onload_link_preload_after_discovery.html:
  • http/tests/preload/delaying_onload_link_preload_after_discovery_image.html:
  • http/tests/preload/download_resources-expected.txt:
  • http/tests/preload/download_resources.html:
  • http/tests/preload/download_resources_from_header_iframe.html:
  • http/tests/preload/download_resources_from_invalid_headers.html:
  • http/tests/preload/dynamic_adding_preload.html:
  • http/tests/preload/dynamic_remove_preload_href-expected.txt:
  • http/tests/preload/dynamic_remove_preload_href.html:
  • http/tests/preload/not_delaying_window_onload_before_discovery.html:
  • http/tests/preload/onerror_event-expected.txt:
  • http/tests/preload/onerror_event.html:
  • http/tests/preload/onload_event-expected.txt:
  • http/tests/preload/onload_event.html:
  • http/tests/preload/resources/download_resources_from_header.php:
  • http/tests/preload/resources/invalid_resources_from_header.php:
  • http/tests/preload/single_download_preload-expected.txt:
  • http/tests/preload/single_download_preload.html:
  • http/tests/security/cached-cross-origin-preloaded-css-stylesheet.html:
  • http/tests/security/cached-cross-origin-preloading-css-stylesheet.html:
2:35 PM Changeset in webkit [211340] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Fix typo in error message
https://bugs.webkit.org/show_bug.cgi?id=167554

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-28
Reviewed by Sam Weinig.

  • bindings/scripts/CodeGenerator.pm:

(GetEnumByType):

10:16 AM Changeset in webkit [211339] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

[Modern Media Controls] REGRESSION: Video stops playing after going into Full Screen in media documents
https://bugs.webkit.org/show_bug.cgi?id=167552
<rdar://problem/29601646>

Patch by Antoine Quint <Antoine Quint> on 2017-01-28
Reviewed by Eric Carlson.

Source/WebCore:

In the case of media documents, there is a built-in behavior, implemented in MediaDocument::defaultEventHandler(),
that toggles playback when clicking or double-clicking the video. We disable this behavior by adding a "click" event
handler on the entire media shadow root and calling "preventDefault()".

Test: media/modern-media-controls/media-documents/click-on-video-should-not-pause.html

  • Modules/modern-media-controls/media/media-controller.js:

(MediaController):
(MediaController.prototype.handleEvent):
(MediaController.prototype._containerWasClicked):

LayoutTests:

Add a new test that checks that clicking on a <video> within a media document does not paused after being clicked.
Since this behavior uses click events, we use window.eventSender and skip this test on iOS.

  • media/modern-media-controls/media-documents/click-on-video-should-not-pause-expected.txt: Added.
  • media/modern-media-controls/media-documents/click-on-video-should-not-pause.html: Added.
  • platform/ios-simulator/TestExpectations:
10:05 AM Changeset in webkit [211338] by mitz@apple.com
  • 7 edits
    1 add in trunk/Source/WebCore

[Xcode] Clean up PAL and WebCore’s build settings a little
https://bugs.webkit.org/show_bug.cgi?id=167292

Reviewed by Sam Weinig.

Source/WebCore:

  • Configurations/Base.xcconfig: Simplified the definition of GCC_WARN_64_TO_32_BIT_CONVERSION, removed the unused build setting PREBINDING, removed a duplicate definition of GCC_GENERATE_DEBUGGING_SYMBOLS, and removed definitions specific to OS X versions that are no longer supported.
  • Configurations/DebugRelease.xcconfig: Removed definitions specific to OS X versions that are no longer supported.

Source/WebCore/PAL:

  • ChangeLog: Created this file.
  • Configurations/Base.xcconfig: Simplified the definition of GCC_WARN_64_TO_32_BIT_CONVERSION, removed the unused build setting PREBINDING, removed a duplicate definition of GCC_GENERATE_DEBUGGING_SYMBOLS, and removed definitions specific to OS X versions that are no longer supported.
  • Configurations/DebugRelease.xcconfig: Removed definitions specific to OS X versions that are no longer supported.
  • Configurations/PAL.xcconfig: Removed header search paths that do not exist or do not make sense. Simplified the definitions of INSTALL_PATH and SKIP_INSTALL. Removed the unusued build settings PRODUCT_BUNDLE_IDENTIFIER and WK_PREFIXED_IPHONEOS_DEPLOYMENT_TARGET. Removed the redundant definition of EXECUTABLE_PREFIX.
  • PAL.xcodeproj/project.pbxproj: Sorted the Configurations group.
8:26 AM Changeset in webkit [211337] by Alan Bujtas
  • 5 edits
    2 adds in trunk

Resolve beforeChild's render tree position before calling addChildIgnoringContinuation.
https://bugs.webkit.org/show_bug.cgi?id=167540
<rdar://problem/30126535>

Reviewed by Simon Fraser.

Source/WebCore:

Use the actual render tree position for the beforeChild when inside a flow thread.

Test: fast/multicol/assert-on-continuation-with-spanner.html

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::addChild):

  • rendering/RenderInline.cpp:

(WebCore::RenderInline::addChild):

  • rendering/RenderMultiColumnFlowThread.cpp:

(WebCore::RenderMultiColumnFlowThread::resolveMovedChild):

LayoutTests:

  • fast/multicol/assert-on-continuation-with-spanner-expected.txt: Added.
  • fast/multicol/assert-on-continuation-with-spanner.html: Added.
7:19 AM Changeset in webkit [211336] by akling@apple.com
  • 2 edits in trunk/Source/WebCore

Avoid synchronous style recalc in dispatchUnloadEvents().
<https://webkit.org/b/167551>

Reviewed by Antti Koivisto.

It shouldn't be necessary to force a synchronous style resolution in an unloading document.
This call has been here since the import of KHTMLPart.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::dispatchUnloadEvents):

4:16 AM Changeset in webkit [211335] by akling@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION(r196383): Automatic shrink-to-fit of RuleSet no longer works.
<https://webkit.org/b/167543>

Reviewed by Antti Koivisto.

Re-enable the automatic shrink-to-fit optimization in RuleSet.
This was disabled accidentally, which I discovered while investigating
the memory footprint of extension stylesheets.

  • css/RuleSet.h:
4:04 AM Changeset in webkit [211334] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Give scripts 'high' load priority
https://bugs.webkit.org/show_bug.cgi?id=167550

Reviewed by Andreas Kling.

For historical reasons it is currently 'medium', same as web fonts and some other non-parsing blocking things.

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::defaultPriorityForResourceType):

1:26 AM Changeset in webkit [211333] by Joseph Pecoraro
  • 2 edits
    34 adds in trunk/LayoutTests/imported/w3c

Import web-platform-tests/user-timing
https://bugs.webkit.org/show_bug.cgi?id=167542
<rdar://problem/22746307>

Rubber-stamped by Ryosuke Niwa.

Only failures are ones where User Timing Level 2 differs
from User Timing Level 1.

  • resources/ImportExpectations:
  • web-platform-tests/user-timing/OWNERS: Added.
  • web-platform-tests/user-timing/idlharness-expected.txt: Added.
  • web-platform-tests/user-timing/idlharness.html: Added.
  • web-platform-tests/user-timing/resources/w3c-import.log: Added.
  • web-platform-tests/user-timing/resources/webperftestharness.js: Added.
  • web-platform-tests/user-timing/resources/webperftestharnessextension.js: Added.
  • web-platform-tests/user-timing/test_user_timing_clear_marks-expected.txt: Added.
  • web-platform-tests/user-timing/test_user_timing_clear_marks.html: Added.
  • web-platform-tests/user-timing/test_user_timing_clear_measures-expected.txt: Added.
  • web-platform-tests/user-timing/test_user_timing_clear_measures.html: Added.
  • web-platform-tests/user-timing/test_user_timing_entry_type-expected.txt: Added.
  • web-platform-tests/user-timing/test_user_timing_entry_type.html: Added.
  • web-platform-tests/user-timing/test_user_timing_exists-expected.txt: Added.
  • web-platform-tests/user-timing/test_user_timing_exists.html: Added.
  • web-platform-tests/user-timing/test_user_timing_mark-expected.txt: Added.
  • web-platform-tests/user-timing/test_user_timing_mark.html: Added.
  • web-platform-tests/user-timing/test_user_timing_mark_and_measure_exception_when_invoke_with_timing_attributes-expected.txt: Added.
  • web-platform-tests/user-timing/test_user_timing_mark_and_measure_exception_when_invoke_with_timing_attributes.html: Added.
  • web-platform-tests/user-timing/test_user_timing_mark_and_measure_exception_when_invoke_with_timing_attributes.js: Added.
  • web-platform-tests/user-timing/test_user_timing_mark_and_measure_exception_when_invoke_without_parameter-expected.txt: Added.
  • web-platform-tests/user-timing/test_user_timing_mark_and_measure_exception_when_invoke_without_parameter.html: Added.
  • web-platform-tests/user-timing/test_user_timing_mark_exceptions-expected.txt: Added.
  • web-platform-tests/user-timing/test_user_timing_mark_exceptions.html: Added.
  • web-platform-tests/user-timing/test_user_timing_mark_with_name_of_navigation_timing_optional_attribute-expected.txt: Added.
  • web-platform-tests/user-timing/test_user_timing_mark_with_name_of_navigation_timing_optional_attribute.html: Added.
  • web-platform-tests/user-timing/test_user_timing_measure-expected.txt: Added.
  • web-platform-tests/user-timing/test_user_timing_measure.html: Added.
  • web-platform-tests/user-timing/test_user_timing_measure_exceptions-expected.txt: Added.
  • web-platform-tests/user-timing/test_user_timing_measure_exceptions.html: Added.
  • web-platform-tests/user-timing/test_user_timing_measure_navigation_timing-expected.txt: Added.
  • web-platform-tests/user-timing/test_user_timing_measure_navigation_timing.html: Added.
  • web-platform-tests/user-timing/w3c-import.log: Added.
1:26 AM Changeset in webkit [211332] by Joseph Pecoraro
  • 36 edits in trunk

Add User Timing Experimental Feature
https://bugs.webkit.org/show_bug.cgi?id=167542
<rdar://problem/22746307>

Reviewed by Ryosuke Niwa.

Source/WebCore:

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::performanceTimelineEnabled):

  • page/Performance.idl:
  • page/PerformanceEntry.idl:

Make a better RuntimeEnabledFeature named "PerformanceTiming" which
is enabled if either UserTiming or ResourceTiming is enabled. This
will then expose the APIs that are only useful when at least one of
the APIs are available.

  • page/PerformanceEntry.cpp:

(WebCore::PerformanceEntry::name): Deleted.
(WebCore::PerformanceEntry::entryType): Deleted.
(WebCore::PerformanceEntry::startTime): Deleted.
(WebCore::PerformanceEntry::duration): Deleted.

  • page/PerformanceEntry.h:

(WebCore::PerformanceEntry::name):
(WebCore::PerformanceEntry::entryType):
(WebCore::PerformanceEntry::startTime):
(WebCore::PerformanceEntry::duration):
Inline simple accessors.

  • page/PerformanceUserTiming.cpp:

(WebCore::UserTiming::measure):
Fix a bug introduced by ExceptionOr refactoring.

(WebCore::UserTiming::clearMarks):
(WebCore::UserTiming::clearMeasures):
(WebCore::clearPerformanceEntries):
(WebCore::clearPeformanceEntries): Deleted.
Fix method name typo.

Source/WebKit/mac:

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
(-[WebPreferences userTimingEnabled]):
(-[WebPreferences setUserTimingEnabled:]):

  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):
Add setting for User Timing runtime enabled feature.

Source/WebKit/win:

  • Interfaces/IWebPreferencesPrivate.idl:
  • WebPreferenceKeysPrivate.h:
  • WebPreferences.cpp:

(WebPreferences::initializeDefaultSettings):
(WebPreferences::setUserTimingEnabled):
(WebPreferences::userTimingEnabled):

  • WebPreferences.h:
  • WebView.cpp:

(WebView::notifyPreferencesChanged):
Add setting for User Timing runtime enabled feature.

Source/WebKit2:

  • Shared/WebPreferencesDefinitions.h:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetUserTimingEnabled):
(WKPreferencesGetUserTimingEnabled):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):
Experimental feature. Off for now while we update ResourceTiming
and NavigationTiming to be compatible with Performance Timing 2.

Tools:

  • DumpRenderTree/mac/DumpRenderTree.mm:

(enableExperimentalFeatures):
(resetWebPreferencesToConsistentValues):

  • DumpRenderTree/win/DumpRenderTree.cpp:

(enableExperimentalFeatures):

Websites/webkit.org:

  • experimental-features.html:

LayoutTests:

  • platform/efl/js/dom/global-constructors-attributes-expected.txt:
  • platform/gtk/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
  • platform/win/js/dom/global-constructors-attributes-expected.txt:

Update results now that experimental User Timing feature is enabled in tests.

1:25 AM Changeset in webkit [211331] by Joseph Pecoraro
  • 4 edits in trunk

Patch Review: EWS Bubbles wrap to multiple lines but can fit on one line
https://bugs.webkit.org/show_bug.cgi?id=167519

Reviewed by Ryosuke Niwa.

Tools:

  • QueueStatusServer/templates/statusbubble.html:

To measure the bubbleContainer's width, it must not be wrapping based
on its parent container. So when measuring the width temporarily set
the parent to a very large width so as to not artificially wrap us.
Restore the parent's width after measuring.

Websites/bugs.webkit.org:

While we do post message to determine the size, the fact that we have
constrained the iframe to a size of 450px meant its body is 450px and
the div containing the bubbles wraps at 450px. Its full size (~458px)
is not returned. Although we solve this artifical constraint problem
inside of the bubble containerMetrics measuring, up this default value
from 450 to 460 to reduce UI jitter (the current measurement on my
machine is 458px).

  • PrettyPatch/PrettyPatch.rb:
12:19 AM Changeset in webkit [211330] by bshafiei@apple.com
  • 3 edits in tags/Safari-604.1.5.0.1/Source/WebKit2

Merged r211329. rdar://problem/30247736

12:02 AM Changeset in webkit [211329] by mitz@apple.com
  • 3 edits in trunk/Source/WebKit2

<rdar://problem/30247736> WebKit2-7604.1.5 has failed to build: error: only virtual member functions can be marked 'override'

  • UIProcess/ios/PageClientImplIOS.h: Guard the declaration of requestPasswordForQuickLookDocument with USE(QUICK_LOOK) to match the base class.
  • UIProcess/ios/PageClientImplIOS.mm: Guard the implementation as well.

Jan 27, 2017:

11:08 PM Changeset in webkit [211328] by mitz@apple.com
  • 4 edits in trunk/Source

Ignore Xcode’s project.xcworkspace and userdata directories in this new project like we do
in other projects.

Source/ThirdParty/libwebrtc:

  • libwebrtc.xcodeproj: Added property svn:ignore.

Source/WebCore:

  • PAL/PAL.xcodeproj: Added property svn:ignore.
11:03 PM Changeset in webkit [211327] by bshafiei@apple.com
  • 3 edits in tags/Safari-604.1.5.0.1/Source/WebCore

Merged r211324. rdar://problem/30247500

11:02 PM Changeset in webkit [211326] by bshafiei@apple.com
  • 6 edits in tags/Safari-604.1.5.0.1/Source

Versioning.

10:57 PM Changeset in webkit [211325] by bshafiei@apple.com
  • 1 copy in tags/Safari-604.1.5.0.1

New tag.

10:49 PM Changeset in webkit [211324] by aestes@apple.com
  • 3 edits in trunk/Source/WebCore

Fix the iOS build when USE(QUICK_LOOK) is disabled.

  • testing/Internals.cpp:

(WebCore::Internals::setQuickLookPassword):

  • testing/Internals.h:
9:08 PM Changeset in webkit [211323] by Wenson Hsieh
  • 3 edits in trunk/Source/WebKit/mac

[WK1] Do not prevent the drag client from initializing on Mac
https://bugs.webkit.org/show_bug.cgi?id=167541

Reviewed by Dan Bernstein.

Fixes fallout from r211192. To ensure compability with WebKit clients, we need to ensure that WebDragClient is
initialized everywhere when creating a WebView. Stub out method implementations as no-ops for non-Mac platforms.
This caused certain clients, such as Mail, to crash when a webView closes due to null dereference.

  • WebCoreSupport/WebDragClient.mm:

(WebDragClient::WebDragClient):
(WebDragClient::actionMaskForDrag):
(WebDragClient::willPerformDragDestinationAction):
(WebDragClient::dragSourceActionMaskForPoint):
(WebDragClient::willPerformDragSourceAction):
(WebDragClient::startDrag):
(WebDragClient::declareAndWriteDragImage):
(WebDragClient::declareAndWriteAttachment):

  • WebView/WebView.mm:

(-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):

9:05 PM Changeset in webkit [211322] by aestes@apple.com
  • 2 edits
    1 add in trunk/Tools

[iOS] Add a test for _WKNSFileManagerExtras
https://bugs.webkit.org/show_bug.cgi?id=167478

Reviewed by Andreas Kling.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/NSFileManagerExtras.mm: Added.

(expectAttributes):
(TEST):

8:50 PM Changeset in webkit [211321] by mitz@apple.com
  • 5 edits in trunk/Source/WebKit2

[Cocoa] No way to get the text from a WKWebProcessPlugInRangeHandle
https://bugs.webkit.org/show_bug.cgi?id=167535

Reviewed by Sam Weinig.

Added a text property to WKWebProcessPlugInRangeHandle.

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandle.h: Declare new property.
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandle.mm:

(-[WKWebProcessPlugInRangeHandle text]): Added. Calls InjectedBundleRangeHandle::text.

  • WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:

(WebKit::InjectedBundleRangeHandle::text): Added. Calls WebCore::Range::text.

  • WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.h:
7:12 PM Changeset in webkit [211320] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.1.23

Tag Safari-603.1.23.

7:09 PM Changeset in webkit [211319] by Yusuke Suzuki
  • 21 edits
    1 add in trunk

Lift template escape sequence restrictions in tagged templates
https://bugs.webkit.org/show_bug.cgi?id=166871

Reviewed by Saam Barati.

JSTests:

Update the error messages and add new tests.

  • ChakraCore/test/es6/unicode_6_identifier_Blue524737.baseline-jsc:
  • stress/lift-template-literal.js: Added.

(dump):
(testTag.return.tag):
(testTag):

  • stress/template-literal-syntax.js:

Source/JavaScriptCore:

This patch implements stage 3 Lifting Template Literal Restriction[1].
Prior to this patch, template literal becomes syntax error if it contains
invalid escape sequences. But it is too restricted; Template literal
can have cooked and raw representations and only cooked representation
can escape sequences. So even if invalid escape sequences are included,
the raw representation can be valid.

Lifting Template Literal Restriction relaxes the above restriction.
When invalid escape sequence is included, if target template literals
are used as tagged templates, we make the result of the template including
the invalid escape sequence undefined instead of making it SyntaxError
immediately. It allows us to accept the templates including invalid
escape sequences in the raw representations in tagged templates.

On the other hand, the raw representation is only used in tagged templates.
So if invalid escape sequences are included in the usual template literals,
we just make it SyntaxError as before.

[1]: https://github.com/tc39/proposal-template-literal-revision

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitGetTemplateObject):

  • bytecompiler/NodesCodegen.cpp:

(JSC::TemplateStringNode::emitBytecode):
(JSC::TemplateLiteralNode::emitBytecode):

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createTemplateString):

  • parser/Lexer.cpp:

(JSC::Lexer<CharacterType>::parseUnicodeEscape):
(JSC::Lexer<T>::parseTemplateLiteral):
(JSC::Lexer<T>::lex):
(JSC::Lexer<T>::scanTemplateString):
(JSC::Lexer<T>::scanTrailingTemplateString): Deleted.

  • parser/Lexer.h:
  • parser/NodeConstructors.h:

(JSC::TemplateStringNode::TemplateStringNode):

  • parser/Nodes.h:

(JSC::TemplateStringNode::cooked):
(JSC::TemplateStringNode::raw):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseAssignmentElement):
(JSC::Parser<LexerType>::parseTemplateString):
(JSC::Parser<LexerType>::parseTemplateLiteral):
(JSC::Parser<LexerType>::parsePrimaryExpression):
(JSC::Parser<LexerType>::parseMemberExpression):

  • parser/ParserTokens.h:
  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::createTemplateString):

  • runtime/TemplateRegistry.cpp:

(JSC::TemplateRegistry::getTemplateObject):

  • runtime/TemplateRegistryKey.h:

(JSC::TemplateRegistryKey::cookedStrings):
(JSC::TemplateRegistryKey::create):
(JSC::TemplateRegistryKey::TemplateRegistryKey):

  • runtime/TemplateRegistryKeyTable.cpp:

(JSC::TemplateRegistryKeyTable::createKey):

  • runtime/TemplateRegistryKeyTable.h:

LayoutTests:

Update the error messages.

  • inspector/runtime/parse-expected.txt:
  • js/unicode-escape-sequences-expected.txt:
6:27 PM Changeset in webkit [211318] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: gradient editor should provide horizontal slider for 'angle' value where applicable
https://bugs.webkit.org/show_bug.cgi?id=166937

Patch by Devin Rousso <Devin Rousso> on 2017-01-27
Reviewed by Joseph Pecoraro.

  • UserInterface/Views/GradientEditor.css:

(.gradient-editor):
(.gradient-editor > .gradient-angle):
(.gradient-editor > .gradient-angle > input[type="range"]):
(.gradient-editor > .gradient-angle > input[type="number"]):
(.gradient-editor > .gradient-angle > input::-webkit-inner-spin-button):
(.gradient-editor > .gradient-angle > input): Deleted.

  • UserInterface/Views/GradientEditor.js:

(WebInspector.GradientEditor):
(WebInspector.GradientEditor.prototype.set gradient):
(WebInspector.GradientEditor.prototype.gradientSliderStopWasSelected):
(WebInspector.GradientEditor.prototype._gradientTypeChanged):
(WebInspector.GradientEditor.prototype._angleChanged):
(WebInspector.GradientEditor.prototype.dragToAdjustControllerWasAdjustedByAmount): Deleted.
(WebInspector.GradientEditor.prototype._angleInputValueDidChange): Deleted.
Remove the DragToAdjustController and replace with an <input type="range">.

5:50 PM Changeset in webkit [211317] by jmarcell@apple.com
  • 6 edits in trunk/Source

Versioning.

5:04 PM Changeset in webkit [211316] by sbarati@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

Make the CLI for the sampling profiler better for inlined call site indices
https://bugs.webkit.org/show_bug.cgi?id=167482

Reviewed by Mark Lam.

This patches changes the command line interface for the sampling
profiler to also dump the machine frame that the semantic code
origin is in if the semantic code origin is inlined. This helps
when doing performance work because it's helpful to know the
context that an inlined frame is in. Before, we used to just
say it was in the baseline JIT if it didn't have its own optimized
compile. Now, we can tell that its inlined into a DFG or FTL frame.

  • inspector/agents/InspectorScriptProfilerAgent.cpp:

(Inspector::buildSamples):

  • runtime/Options.h:
  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::processUnverifiedStackTraces):
(JSC::SamplingProfiler::reportTopFunctions):
(JSC::SamplingProfiler::reportTopBytecodes):

  • runtime/SamplingProfiler.h:

(JSC::SamplingProfiler::StackFrame::CodeLocation::hasCodeBlockHash):
(JSC::SamplingProfiler::StackFrame::CodeLocation::hasBytecodeIndex):
(JSC::SamplingProfiler::StackFrame::CodeLocation::hasExpressionInfo):
(JSC::SamplingProfiler::StackFrame::hasExpressionInfo):
(JSC::SamplingProfiler::StackFrame::lineNumber):
(JSC::SamplingProfiler::StackFrame::columnNumber):
(JSC::SamplingProfiler::StackFrame::hasBytecodeIndex): Deleted.
(JSC::SamplingProfiler::StackFrame::hasCodeBlockHash): Deleted.

4:55 PM Changeset in webkit [211315] by keith_miller@apple.com
  • 2 edits in trunk/Tools

run-benchmarks should make sure it passes the test url to the right application
https://bugs.webkit.org/show_bug.cgi?id=167533

Reviewed by Joseph Pecoraro.

This fixes an issue when trying to run-benchmark script with the
system default browser set to STP. Previously, it would run
the test in STP rather than the provided build. Now, it should run
in the provided build.

  • Scripts/webkitpy/benchmark_runner/browser_driver/osx_safari_driver.py:

(OSXSafariDriver.launch_url):

4:49 PM Changeset in webkit [211314] by Yusuke Suzuki
  • 3 edits
    4 adds in trunk

setTimeout / setInterval's string execution should inherit SourceOrigin correctly
https://bugs.webkit.org/show_bug.cgi?id=167097

Reviewed by Darin Adler.

Source/WebCore:

Tests: js/dom/modules/import-from-set-interval.html

js/dom/modules/import-from-set-timeout.html

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::executeScriptInWorld):

LayoutTests:

We set the default SourceOrigin for the ScriptController::executeScriptInWorld.
The default SourceOrigin has the document baseURL and CachedScriptFetcher.

setTimeout and setInterval use this interface. And it uses the default SourceOrigin
for the document (Realm of the setTimeout / setInterval). This is the expected
behavior in the dynamic import proposal.

  • js/dom/modules/import-from-set-interval-expected.txt: Added.
  • js/dom/modules/import-from-set-interval.html: Added.
  • js/dom/modules/import-from-set-timeout-expected.txt: Added.
  • js/dom/modules/import-from-set-timeout.html: Added.
4:47 PM Changeset in webkit [211313] by Yusuke Suzuki
  • 10 edits
    3 deletes in trunk/Source/WebCore

Merge CachedModuleScript and LoadableModuleScript
https://bugs.webkit.org/show_bug.cgi?id=167500

Reviewed by Darin Adler.

CachedModuleScript becomes duplicate with LoadableModuleScript.
And CachedModuleScript does not offer any meaningful functionality
to LoadableModuleScript.
This patch merges CachedModuleScript to LoadableModuleScript.

No behavior change.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/CachedModuleScript.cpp: Removed.
  • bindings/js/CachedModuleScript.h: Removed.
  • bindings/js/CachedModuleScriptClient.h: Removed.
  • bindings/js/JSBindingsAllInOne.cpp:
  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::loadModuleScriptInWorld):
(WebCore::ScriptController::loadModuleScript):
(WebCore::ScriptController::linkAndEvaluateModuleScriptInWorld):
(WebCore::ScriptController::linkAndEvaluateModuleScript):
(WebCore::ScriptController::setupModuleScriptHandlers):

  • bindings/js/ScriptController.h:
  • dom/LoadableModuleScript.cpp:

(WebCore::LoadableModuleScript::create):
(WebCore::LoadableModuleScript::LoadableModuleScript):
(WebCore::LoadableModuleScript::~LoadableModuleScript):
(WebCore::LoadableModuleScript::isLoaded):
(WebCore::LoadableModuleScript::error):
(WebCore::LoadableModuleScript::wasCanceled):
(WebCore::LoadableModuleScript::notifyLoadCompleted):
(WebCore::LoadableModuleScript::notifyLoadFailed):
(WebCore::LoadableModuleScript::notifyLoadWasCanceled):
(WebCore::LoadableModuleScript::execute):
(WebCore::LoadableModuleScript::load):
(WebCore::LoadableModuleScript::notifyFinished): Deleted.

  • dom/LoadableModuleScript.h:
  • dom/ScriptElement.cpp:

(WebCore::ScriptElement::executeModuleScript):

  • dom/ScriptElement.h:
4:33 PM Changeset in webkit [211312] by achristensen@apple.com
  • 8 edits in trunk/Source/WebKit2

Move smartInsertDeleteEnabled to WebPageCreationParameters
https://bugs.webkit.org/show_bug.cgi?id=167530

Reviewed by Brady Eidson.

  • Shared/WebPageCreationParameters.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::initializeWebPage):
(WebKit::WebPageProxy::creationParameters):

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::createWindow):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::create):
(WebKit::WebPage::WebPage):
(WebKit::m_userInterfaceLayoutDirection):
(WebKit::WebPage::reinitializeWebPage):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::createWebPage):

  • WebProcess/WebProcess.h:

Instead of making a WebPage then immediately sending it a message to set smartInsertDeleteEnabled,
just call setSmartInsertDeleteEnabled at the end of the WebPage creation. No change in behaviour.

4:27 PM Changeset in webkit [211311] by dino@apple.com
  • 1 edit
    2 adds in trunk/Websites/webkit.org

Add a simple demo for Touch stylus events
https://bugs.webkit.org/show_bug.cgi?id=167534

Reviewed by Simon Fraser.

  • demos/touch/stylus.html: Added.
4:10 PM Changeset in webkit [211310] by beidson@apple.com
  • 6 edits in trunk/Source/WebKit2

IconLoadingClient API doesn't work asynchronously.
<rdar://problem/30243429> and https://bugs.webkit.org/show_bug.cgi?id=167532

Reviewed by Alex Christensen.

Make a WTF::Function (inherently not compatible with ObjC blocks as they must be copyable)
into a std::function, which is copyable.

  • UIProcess/API/APIIconLoadingClient.h:

(API::IconLoadingClient::getLoadDecisionForIcon):

  • UIProcess/API/mac/WKView.mm:

(-[WKView maybeInstallIconLoadingClient]):

  • UIProcess/Cocoa/IconLoadingDelegate.h:
  • UIProcess/Cocoa/IconLoadingDelegate.mm:

(WebKit::IconLoadingDelegate::IconLoadingClient::getLoadDecisionForIcon):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::getLoadDecisionForIcon):

4:03 PM Changeset in webkit [211309] by msaboff@apple.com
  • 2 edits in trunk/Source/WebCore

JSCustomElementInterface::invokeCallback can be called with a null callback because Weak<>
https://bugs.webkit.org/show_bug.cgi?id=167522

Reviewed by Filip Pizlo.

Added all provided callbacks to the global object with a private name the same way
that the constructor was added. This will keep these callbacks from being GC'ed.

  • bindings/js/JSCustomElementRegistryCustom.cpp:

(WebCore::JSCustomElementRegistry::define):

3:56 PM Changeset in webkit [211308] by mmaxfield@apple.com
  • 6 edits in trunk

[Cocoa] Prepare ComplexTextController for unit testing
https://bugs.webkit.org/show_bug.cgi?id=167493

Reviewed by Simon Fraser.

Addressing post-review comments from Simon Fraser.

Source/WebCore:

  • platform/graphics/FontCascade.h:
  • platform/graphics/mac/ComplexTextController.h:

(WebCore::ComplexTextController::ComplexTextRun::createForTesting):

  • platform/graphics/mac/ComplexTextControllerCoreText.h:

(WebCore::ComplexTextController::ComplexTextRun::ComplexTextRun):

Tools:

  • TestWebKitAPI/Tests/WebCore/ComplexTextController.cpp:

(TestWebKitAPI::TEST_F):

3:43 PM Changeset in webkit [211307] by Simon Fraser
  • 3 edits in trunk/LayoutTests

Tweak the test to avoid one pixel of difference on some hardware.

  • css3/filters/backdrop/backdrop-filter-uneven-corner-radii-expected.html:
  • css3/filters/backdrop/backdrop-filter-uneven-corner-radii.html:
3:29 PM Changeset in webkit [211306] by Yusuke Suzuki
  • 3 edits in trunk/Source/JavaScriptCore

Extend create_hash_table to specify Intrinsic
https://bugs.webkit.org/show_bug.cgi?id=167505

Reviewed by Sam Weinig.

This patch extends create_hash_table to specify Intrinsic.
We can set Intrinsic in the static property table definition
in runtime/XXX.h.

And drop the adhoc code for String.fromCharCode in create_hash_table.

  • create_hash_table:
  • runtime/StringConstructor.cpp:
3:16 PM Changeset in webkit [211305] by Simon Fraser
  • 4 edits
    2 adds in trunk

Element with a backdrop-filter and a mask may not correctly mask the backdrop
https://bugs.webkit.org/show_bug.cgi?id=167456
rdar://problem/29320059

Reviewed by Antoine Quint.

Source/WebCore:

If a layer had a backdrop filter, but also corner radii that triggered using a mask layer,
then the call to updateClippingStrategy() in GraphicsLayerCA::updateBackdropFiltersRect() would
set the backdrop layer's mask, but GraphicsLayerCA::updateMaskLayer() would promptly then set
the mask layer back to nil.

Fix by having GraphicsLayerCA::updateMaskLayer() put the mask on the structural layer, if there
is one. We always have a structural layer with backdrops, so this will mask both the layer
and the backdrop.

Test: css3/filters/backdrop/backdrop-filter-uneven-corner-radii.html

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::updateMaskLayer):

  • platform/graphics/mac/WebLayer.mm:

(-[CALayer _descriptionWithPrefix:]): Dump the mask layer.

LayoutTests:

  • css3/filters/backdrop/backdrop-filter-uneven-corner-radii-expected.html: Added.
  • css3/filters/backdrop/backdrop-filter-uneven-corner-radii.html: Added.
3:11 PM Changeset in webkit [211304] by Chris Dumez
  • 7 edits in trunk/Source

Fix remaining bad uses of logDiagnosticMessageWithValue()
https://bugs.webkit.org/show_bug.cgi?id=167526

Reviewed by Alex Christensen.

Source/WebCore:

Drop unused keys, add new ones.

  • page/DiagnosticLoggingKeys.cpp:

(WebCore::DiagnosticLoggingKeys::networkCacheFailureReasonKey):
(WebCore::DiagnosticLoggingKeys::networkCacheUnusedReasonKey):
(WebCore::DiagnosticLoggingKeys::networkCacheReuseFailureKey):
(WebCore::DiagnosticLoggingKeys::backNavigationDeltaKey):
(WebCore::DiagnosticLoggingKeys::userZoomActionKey):
(WebCore::DiagnosticLoggingKeys::deltaKey): Deleted.
(WebCore::DiagnosticLoggingKeys::backNavigationKey): Deleted.
(WebCore::DiagnosticLoggingKeys::requestKey): Deleted.
(WebCore::DiagnosticLoggingKeys::unusableCachedEntryKey): Deleted.
(WebCore::DiagnosticLoggingKeys::userKey): Deleted.
(WebCore::DiagnosticLoggingKeys::zoomedKey): Deleted.
(WebCore::DiagnosticLoggingKeys::notInCacheKey): Deleted.

  • page/DiagnosticLoggingKeys.h:

Source/WebKit2:

Fix remaining bad uses of logDiagnosticMessageWithValue(). It can only
be called with numeric values.

  • NetworkProcess/cache/NetworkCacheStatistics.cpp:

(WebKit::NetworkCache::Statistics::recordNotUsingCacheForRequest):
(WebKit::NetworkCache::Statistics::recordRetrievalFailure):
(WebKit::NetworkCache::Statistics::recordRetrievedCachedEntry):

  • UIProcess/WebBackForwardList.cpp:

(WebKit::WebBackForwardList::goToItem):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::willStartUserTriggeredZooming):

2:39 PM Changeset in webkit [211303] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

Proclaim that we are considering font-display, rhythmic sizing, and text decoration level 4
https://bugs.webkit.org/show_bug.cgi?id=167340

Reviewed by Saam Barati.

  • features.json:
2:23 PM Changeset in webkit [211302] by jer.noble@apple.com
  • 4 edits in trunk/LayoutTests

media/track/track-in-band-style.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=167516

Reviewed by Eric Carlson.

Update the test to use 'cuechange' rather than a 200ms timer.

  • media/track/track-in-band-style-expected.txt:
  • media/track/track-in-band-style.html:
  • platform/mac/TestExpectations:
1:07 PM Changeset in webkit [211301] by Chris Dumez
  • 6 edits in trunk/Source/WebCore

Fix diagnostic logging under loader/
https://bugs.webkit.org/show_bug.cgi?id=167512

Reviewed by Alex Christensen.

Fix diagnostic logging under loader/. We should not be using logDiagnosticLoggingWithValue()
without a numeric value.

  • loader/ResourceLoader.cpp:

(WebCore::logResourceResponseSource):

  • loader/SubresourceLoader.cpp:

(WebCore::logResourceLoaded):

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::logMemoryCacheResourceRequest):
(WebCore::CachedResourceLoader::requestResource):
(WebCore::logRevalidation):

  • page/DiagnosticLoggingKeys.cpp:

(WebCore::DiagnosticLoggingKeys::memoryCacheEntryDecisionKey):
(WebCore::DiagnosticLoggingKeys::memoryCacheUsageKey):
(WebCore::DiagnosticLoggingKeys::cachedResourceRevalidationReasonKey):
(WebCore::DiagnosticLoggingKeys::resourceLoadedKey):
(WebCore::DiagnosticLoggingKeys::resourceResponseSourceKey):

  • page/DiagnosticLoggingKeys.h:
1:01 PM Changeset in webkit [211300] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

scanExternalRememberedSet needs to mergeIfNecessary
https://bugs.webkit.org/show_bug.cgi?id=167523

Reviewed by Keith Miller.

The protocol for opaque roots is that if you add to them outside of draining, then you need to call
mergeIfNecessary.

This means that every MarkingConstraint that adds opaque roots needs to mergeIfNecessary after.

scanExternalRememberedSet transitively calls addOpaqueRoot, is called from a MarkingConstraint, and
was missing a call to mergeIfNecessary. This fixes it.

  • API/JSVirtualMachine.mm:

(scanExternalRememberedSet):

12:41 PM Changeset in webkit [211299] by jmarcell@apple.com
  • 1 delete in tags/Safari-604.1.5.1

Deleting tag.

12:35 PM Changeset in webkit [211298] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

Fix diagnostic logging in media code
https://bugs.webkit.org/show_bug.cgi?id=167510

Reviewed by Alex Christensen.

Fix diagnostic logging in media code. It should not use logDiagnosticMessageWithValue()
with a non-numeric value.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::loadResource):
(WebCore::HTMLMediaElement::updatePlayState):

12:35 PM Changeset in webkit [211297] by jmarcell@apple.com
  • 1 copy in tags/Safari-604.1.5.1

New tag.

12:34 PM Changeset in webkit [211296] by jmarcell@apple.com
  • 1 copy in tags/Safari-604.1.5

New tag.

12:33 PM Changeset in webkit [211295] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

Round CPU Usage diagnostic logging to 2 significant digits
https://bugs.webkit.org/show_bug.cgi?id=167515
<rdar://problem/30236297>

Reviewed by Antti Koivisto.

Round CPU Usage diagnostic logging to 2 significant digits
as requested by diagnostic logging team.

  • UIProcess/PerActivityStateCPUUsageSampler.cpp:

(WebKit::toStringRoundingSignificantFigures):
(WebKit::PerActivityStateCPUUsageSampler::loggingTimerFired):

12:28 PM Changeset in webkit [211294] by mmaxfield@apple.com
  • 9 edits
    1 add in trunk

[Cocoa] Prepare ComplexTextController for unit testing
https://bugs.webkit.org/show_bug.cgi?id=167493

Reviewed by Dean Jackson.

Source/WebCore:

ComplexTextController has three phases:

  1. Interrogate Core Text about some text
  2. Compute layout advances and paint advances from the information retrieved from

Core Text

  1. Iterate through the layout advances or paint advances.

This patch tests phases 2 and 3 by chopping ComplexTextController between
phases 1 and 2, and injecting foreign metrics from a unit test. These metrics
have been gathered from real-world uses; however, a layout test is not appropriate
because the fonts which produced these metrics are not licensed appropriately.
The tests can enforce the correct behavior by using ComplexTextController's
public API.

This is in preparation for https://bugs.webkit.org/show_bug.cgi?id=166013.
However, the fix for that bug is quite large, so I've split out this smaller piece
to ease the reviewing burden. The tests I've added are disabled for now (because
they fail), but will be enabled by the fix to that bug.

No new tests because there is no behavior change.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/FontCascade.h:
  • platform/graphics/FontDescription.h:
  • platform/graphics/mac/ComplexTextController.cpp:

(WebCore::ComplexTextController::ComplexTextController):
(WebCore::ComplexTextController::finishConstruction):

  • platform/graphics/mac/ComplexTextController.h:

(WebCore::ComplexTextController::ComplexTextRun::createForTesting):

  • platform/graphics/mac/ComplexTextControllerCoreText.mm:

(WebCore::ComplexTextController::ComplexTextRun::ComplexTextRun):

Tools:

Create four unit tests.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/ComplexTextController.cpp: Added.

(TestWebKitAPI::ComplexTextControllerTest::SetUp):
(TestWebKitAPI::TEST_F):

11:37 AM Changeset in webkit [211293] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

LayoutTest fast/mediastream/getUserMedia-webaudio.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=167513

Unreviewed.

Patch by Youenn Fablet <youenn@apple.com> on 2017-01-27

11:24 AM Changeset in webkit [211292] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Simple line layout: Do not bail out on -webkit-line-box-contain: block glyphs unless text overflows vertically.
https://bugs.webkit.org/show_bug.cgi?id=167481
<rdar://problem/30180150>

Reviewed by Antti Koivisto.

Source/WebCore:

Since -webkit-line-box-contain: glyphs requires variable line height support, we can use simple line layout
only when each line happen to have the same height ('block' property value is set, glyphs do not overflow the block line height).

Test: fast/text/simple-line-layout-line-box-contain-glyphs.html

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseForText):
(WebCore::SimpleLineLayout::canUseForFontAndText):
(WebCore::SimpleLineLayout::canUseForStyle):
(WebCore::SimpleLineLayout::printReason):

LayoutTests:

  • fast/text/simple-line-layout-line-box-contain-glyphs-expected.html: Added.
  • fast/text/simple-line-layout-line-box-contain-glyphs.html: Added.
11:14 AM Changeset in webkit [211291] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

Fix PageCache diagnostic logging
https://bugs.webkit.org/show_bug.cgi?id=167508

Reviewed by Sam Weinig.

Fix PageCache diagnostic logging. It should not call logDiagnosticMessageWithValue()
with a non-numeric value. Use logDiagnosticMessage() instead.

  • history/PageCache.cpp:

(WebCore::logPageCacheFailureDiagnosticMessage):
(WebCore::canCacheFrame):

  • page/DiagnosticLoggingKeys.cpp:

(WebCore::DiagnosticLoggingKeys::pageCacheFailureKey):
(WebCore::DiagnosticLoggingKeys::successKey): Deleted.
(WebCore::DiagnosticLoggingKeys::failureKey): Deleted.

  • page/DiagnosticLoggingKeys.h:
11:07 AM Changeset in webkit [211290] by matthew_hanson@apple.com
  • 15 edits
    3 deletes in branches/safari-603-branch

Roll out r211224 via r211258. rdar://problem/29144126

10:58 AM Changeset in webkit [211289] by commit-queue@webkit.org
  • 5 edits
    2 adds in trunk

Styles should not show background-repeat-x/y, or -webkit-mask-repeat-x/y
https://bugs.webkit.org/show_bug.cgi?id=167255

Patch by Devin Rousso <Devin Rousso> on 2017-01-27
Reviewed by Joseph Pecoraro.

Source/WebCore:

Test: inspector/css/css-property.html

  • css/makeprop.pl:

(addProperty):
Add a generated function isInternalCSSProperty that checks the given CSSPropertyID against
a derived list of properties from CSSProperties.json with "internal-only".

  • inspector/InspectorCSSAgent.cpp:

(WebCore::InspectorCSSAgent::getSupportedCSSProperties):

  • inspector/InspectorStyleSheet.cpp:

(WebCore::InspectorStyle::styleWithProperties):
Only pass CSS property payloads to the frontend if they are not internal.

LayoutTests:

Checks that internal-only CSS properties are marked as invalid when passed to WebInspector.

  • inspector/css/css-property-expected.txt: Added.
  • inspector/css/css-property.html: Added.
10:44 AM Changeset in webkit [211288] by Antti Koivisto
  • 7 edits
    6 adds in trunk

Implement Cache-control: immutable
https://bugs.webkit.org/show_bug.cgi?id=167497

Reviewed by Chris Dumez.

Source/WebCore:

Cache-control value 'immutable' indicates that a subresource does not change and so does not need to be
revalidated on a normal reload. This can significantly speed up reloads and reduce network traffic.

It is has been implemented in Firefox and is already used by Facebook.

https://tools.ietf.org/html/draft-mcmanus-immutable-00
https://hacks.mozilla.org/2017/01/using-immutable-caching-to-speed-up-the-web/

This patch implements Cache-control: immutable for memory cache only. A disk cache implementation
doesn't seem necessary as the resource is basically always expected to be in memory cache on reload.

Immutable is only supported for https as suggested by the draft specification (and Gecko implementation).

Test: http/tests/cache/cache-control-immutable-http.html

http/tests/cache/cache-control-immutable-https.html

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::makeRevalidationDecision):

On normal reloads (CachePolicyRevalidate) of https resources check for 'Cache-control: immutable'.
If the resource is not expired don't revalidate it.

  • platform/network/CacheValidation.cpp:

(WebCore::parseCacheControlDirectives):

  • platform/network/CacheValidation.h:
  • platform/network/ResourceResponseBase.cpp:

(WebCore::ResourceResponseBase::cacheControlContainsImmutable):

  • platform/network/ResourceResponseBase.h:

LayoutTests:

  • http/tests/cache/cache-control-immutable-http-expected.txt: Added.
  • http/tests/cache/cache-control-immutable-http.html: Added.
  • http/tests/cache/cache-control-immutable-https-expected.txt: Added.
  • http/tests/cache/cache-control-immutable-https.html: Added.
  • http/tests/cache/resources/cache-control-immutable.js: Added.
  • http/tests/cache/resources/iframe-with-script.cgi: Added.
10:39 AM Changeset in webkit [211287] by Ryan Haddad
  • 4 edits in branches/safari-603-branch/Source/WebCore

Merge r211285.

10:20 AM Changeset in webkit [211286] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[WebRTC] Use MediaEndPointPeerConnection if not using libwebrtc
https://bugs.webkit.org/show_bug.cgi?id=167504

Patch by Youenn Fablet <youennf@gmail.com> on 2017-01-27
Reviewed by Alex Christensen.

No change of behavior.

  • Modules/mediastream/MediaEndpointPeerConnection.cpp: If libwebrtc, we should use libwebrtc peer connection backend.
10:06 AM WebKitGTK/Debugging edited by clopez@igalia.com
(diff)
10:04 AM WebKitGTK/Debugging edited by clopez@igalia.com
(diff)
9:29 AM Changeset in webkit [211285] by Ryan Haddad
  • 4 edits in trunk/Source/WebCore

Rebaseline bindings tests after r211238.

Unreviewed test gardening.

  • bindings/scripts/test/JS/JSTestDOMJIT.cpp:

(WebCore::JSTestDOMJIT::visitChildren):

  • bindings/scripts/test/JS/JSTestEventTarget.cpp:

(WebCore::JSTestEventTarget::visitChildren):

  • bindings/scripts/test/JS/JSTestNode.cpp:

(WebCore::JSTestNode::visitChildren):

9:29 AM Changeset in webkit [211284] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking media/modern-media-controls/layout-node/addChild.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=167461

Unreviewed test gardening.

  • platform/mac/TestExpectations:
8:28 AM Changeset in webkit [211283] by svillar@igalia.com
  • 5 edits
    2 adds in trunk/Source/WebCore

[css-grid] Move Grid class out of RenderGrid
https://bugs.webkit.org/show_bug.cgi?id=167418

Reviewed by Antti Koivisto.

The RenderGrid should be able to use different implementations of
the Grid class. The latter is big enough to be in its own file. That
would help on the effort of moving the grid track sizing algorithm
out of RenderGrid too.

No new tests required as we're just moving code.

  • CMakeLists.txt:
  • rendering/Grid.cpp: Added.

(WebCore::Grid::Grid):
(WebCore::Grid::numTracks):
(WebCore::Grid::ensureGridSize):
(WebCore::Grid::insert):
(WebCore::Grid::setSmallestTracksStart):
(WebCore::Grid::smallestTrackStart):
(WebCore::Grid::gridItemArea):
(WebCore::Grid::setGridItemArea):
(WebCore::Grid::setAutoRepeatTracks):
(WebCore::Grid::autoRepeatTracks):
(WebCore::Grid::setAutoRepeatEmptyColumns):
(WebCore::Grid::setAutoRepeatEmptyRows):
(WebCore::Grid::hasAutoRepeatEmptyTracks):
(WebCore::Grid::isEmptyAutoRepeatTrack):
(WebCore::Grid::autoRepeatEmptyTracks):
(WebCore::Grid::gridItemSpan):
(WebCore::Grid::setNeedsItemsPlacement):
(WebCore::GridIterator::GridIterator):
(WebCore::GridIterator::nextGridItem):
(WebCore::GridIterator::isEmptyAreaEnough):
(WebCore::GridIterator::nextEmptyGridArea):

  • rendering/Grid.h: Added.
  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::computeEmptyTracksForAutoRepeat):
(WebCore::RenderGrid::Grid::numTracks): Deleted.
(WebCore::RenderGrid::Grid::ensureGridSize): Deleted.
(WebCore::RenderGrid::Grid::insert): Deleted.
(WebCore::RenderGrid::Grid::setSmallestTracksStart): Deleted.
(WebCore::RenderGrid::Grid::smallestTrackStart): Deleted.
(WebCore::RenderGrid::Grid::gridItemArea): Deleted.
(WebCore::RenderGrid::Grid::setGridItemArea): Deleted.
(WebCore::RenderGrid::Grid::setAutoRepeatTracks): Deleted.
(WebCore::RenderGrid::Grid::autoRepeatTracks): Deleted.
(WebCore::RenderGrid::Grid::setAutoRepeatEmptyColumns): Deleted.
(WebCore::RenderGrid::Grid::setAutoRepeatEmptyRows): Deleted.
(WebCore::RenderGrid::Grid::hasAutoRepeatEmptyTracks): Deleted.
(WebCore::RenderGrid::Grid::isEmptyAutoRepeatTrack): Deleted.
(WebCore::RenderGrid::Grid::autoRepeatEmptyTracks): Deleted.
(WebCore::RenderGrid::Grid::gridItemSpan): Deleted.
(WebCore::RenderGrid::Grid::setNeedsItemsPlacement): Deleted.
(WebCore::RenderGrid::GridIterator::GridIterator): Deleted.
(WebCore::RenderGrid::GridIterator::nextGridItem): Deleted.
(WebCore::RenderGrid::GridIterator::isEmptyAreaEnough): Deleted.
(WebCore::RenderGrid::GridIterator::nextEmptyGridArea): Deleted.

  • rendering/RenderGrid.h:
7:58 AM Changeset in webkit [211282] by Wenson Hsieh
  • 2 edits in trunk/Websites/webkit.org

Unreviewed, update scroll snapping demos to use current Module 1 spec

  • demos/scroll-snap/index.html:

Adopt the new CSS properties scroll-snap-type and scroll-snap-align.

4:10 AM Changeset in webkit [211281] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebKit2

[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:
2:49 AM Changeset in webkit [211280] by Yusuke Suzuki
  • 41 edits
    10 copies
    70 adds in trunk

Implement dynamic-import for WebCore
https://bugs.webkit.org/show_bug.cgi?id=166926

Reviewed by Ryosuke Niwa.

Source/WebCore:

This patch introduces browser side dynamic-import implementation.
The dynamic-import is new ES feature which is now stage 3.
The JSC shell already implements it.

The dynamic-import allows us to kick module loading in a dynamic manner.
For example, you can write,

await module = import(${HOST}/hello.js);

The dynamic import operator (this is not a function) returns a promise with
module namespace object if the module loading succeeds. Otherwise, it returns
a rejected promise.

And importantly, this feature allows us to kick module loading from classic script.
Previously, module loading can be only used from <script type="module"> tag. And
all the module loading is done statically.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/CachedModuleScriptLoader.cpp:

(WebCore::CachedModuleScriptLoader::load):

  • bindings/js/CachedScriptFetcher.cpp:

(WebCore::CachedScriptFetcher::create):
(WebCore::CachedScriptFetcher::requestModuleScript):
requestModuleScript function is used only when loading a new module script.
So, LoadableClassicScript should use requestScriptWithCache to load itself.
We pass String() for cross origin mode for null cross origin attribute as
specified.

(WebCore::CachedScriptFetcher::requestScriptWithCache):

  • bindings/js/CachedScriptFetcher.h:

(WebCore::CachedScriptFetcher::CachedScriptFetcher):

  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::JSDOMWindowBase::moduleLoaderImportModule):

  • bindings/js/JSDOMWindowBase.h:
  • bindings/js/JSLazyEventListener.cpp:

(WebCore::JSLazyEventListener::initializeJSFunction):

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::executeScript):

  • bindings/js/ScriptModuleLoader.cpp:

(WebCore::resolveModuleSpecifier):
Extract the part of resolving module specifier to a static function to use
it in ScriptModuleLoader::resolve and ScriptModuleLoader::importModule.

(WebCore::ScriptModuleLoader::resolve):
(WebCore::rejectPromise):
(WebCore::ScriptModuleLoader::importModule):
New hook moduleLoaderImportModule is implemented. This hook is called when
import operator is used. This hook is responsible to

  1. resolve the module name to obtain module specifier. (like, resolve the

relative URL to get absolute URL.)

  1. kick module loading with the resolved specifier.

When resolving the module name, the referrer information is needed.
For example, "./script.js" will be resolved to "http://example.com/script.js" if
the referrer module specifier is "http://example.com/".
If import("./script.js") is executed in the classic script
src="http://example.com/test.js", it starts loading "http://example.com/script.js".
So the information of the caller of import operator is necessary here.
This appropriate referrer is propagated by SourceOrigin.

  • bindings/js/ScriptModuleLoader.h:
  • dom/InlineClassicScript.h:
  • dom/LoadableClassicScript.cpp:

(WebCore::LoadableClassicScript::load):

  • dom/LoadableClassicScript.h:
  • dom/LoadableModuleScript.h:
  • dom/LoadableScript.h:

(WebCore::LoadableScript::LoadableScript):
(WebCore::LoadableScript::isClassicScript): Deleted.
(WebCore::LoadableScript::isModuleScript): Deleted.

  • dom/ScriptElement.h:
  • dom/ScriptElementCachedScriptFetcher.cpp: Copied from Source/WebCore/dom/InlineClassicScript.h.

(WebCore::ScriptElementCachedScriptFetcher::requestModuleScript):
This requestModuleScript will be used when the script tag (or modules imported from the script tag) uses import operator.
In classic scripts, crossorigin mode always becomes "omit" while module scripts
propagate the original crossorigin value.

  • dom/ScriptElementCachedScriptFetcher.h: Copied from Source/WebCore/bindings/js/CachedScriptFetcher.h.

(WebCore::ScriptElementCachedScriptFetcher::crossOriginMode):
(WebCore::ScriptElementCachedScriptFetcher::ScriptElementCachedScriptFetcher):

LayoutTests:

  • http/tests/misc/import-absolute-url-expected.txt: Added.
  • http/tests/misc/import-absolute-url.html: Added.
  • http/tests/security/contentSecurityPolicy/1.1/import-scriptnonce-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/1.1/import-scriptnonce.html: Added.
  • http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-allowed1.js: Added.
  • http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-allowed2.js: Added.
  • http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-allowed3.js: Added.
  • http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-allowed4.js: Added.
  • http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-allowed5.js: Added.
  • http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-allowed6.js: Added.
  • http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-blocked1.js: Added.
  • http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-blocked2.js: Added.
  • http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-blocked3.js: Added.
  • http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-blocked4.js: Added.
  • http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-blocked5.js: Added.
  • http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-blocked6.js: Added.
  • http/tests/security/import-module-crossorigin-loads-error-expected.txt: Added.
  • http/tests/security/import-module-crossorigin-loads-error-src-expected.txt: Added.
  • http/tests/security/import-module-crossorigin-loads-error-src.html: Added.
  • http/tests/security/import-module-crossorigin-loads-error.html: Added.
  • http/tests/security/import-module-crossorigin-loads-expected.txt: Added.
  • http/tests/security/import-module-crossorigin-loads-src-expected.txt: Added.
  • http/tests/security/import-module-crossorigin-loads-src.html: Added.
  • http/tests/security/import-module-crossorigin-loads.html: Added.
  • http/tests/security/import-script-crossorigin-loads-error-expected.txt: Added.
  • http/tests/security/import-script-crossorigin-loads-error.html: Added.
  • http/tests/security/import-script-crossorigin-loads-omit-expected.txt: Added.
  • http/tests/security/import-script-crossorigin-loads-omit.html: Added.
  • http/tests/security/resources/cors-deny.php: Added.
  • http/tests/security/resources/import-module-crossorigin-loads-error-src.js: Added.

(import.string_appeared_here.then):

  • http/tests/security/resources/import-module-crossorigin-loads-src.js: Added.

(import.string_appeared_here.then):

  • js/dom/modules/import-execution-order-expected.txt: Added.
  • js/dom/modules/import-execution-order.html: Copied from LayoutTests/js/dom/modules/module-execution-error-inside-dependent-module-should-be-propagated-to-onerror.html.
  • js/dom/modules/import-from-handler-expected.txt: Added.
  • js/dom/modules/import-from-handler.html: Copied from LayoutTests/js/dom/modules/module-src-simple.html.
  • js/dom/modules/import-from-javascript-url-expected.txt: Added.
  • js/dom/modules/import-from-javascript-url.html: Copied from LayoutTests/js/dom/modules/module-execution-error-inside-dependent-module-should-be-propagated-to-onerror.html.
  • js/dom/modules/import-from-loaded-classic-expected.txt: Added.
  • js/dom/modules/import-from-loaded-classic.html: Copied from LayoutTests/js/dom/modules/module-src-simple.html.
  • js/dom/modules/import-from-loaded-module-expected.txt: Added.
  • js/dom/modules/import-from-loaded-module.html: Copied from LayoutTests/js/dom/modules/module-src-simple.html.
  • js/dom/modules/import-from-module-expected.txt: Added.
  • js/dom/modules/import-from-module.html: Copied from LayoutTests/js/dom/modules/module-src-simple.html.
  • js/dom/modules/import-incorrect-relative-specifier-expected.txt: Added.
  • js/dom/modules/import-incorrect-relative-specifier.html: Copied from LayoutTests/js/dom/modules/module-src-simple.html.
  • js/dom/modules/import-simple-expected.txt: Added.
  • js/dom/modules/import-simple.html: Copied from LayoutTests/js/dom/modules/module-src-simple.html.
  • js/dom/modules/module-document-write-src.html:
  • js/dom/modules/module-execution-error-inside-dependent-module-should-be-propagated-to-onerror.html:
  • js/dom/modules/module-execution-order-mixed-with-classic-scripts.html:
  • js/dom/modules/module-execution-order-mixed.html:
  • js/dom/modules/module-inline-dynamic.html:
  • js/dom/modules/module-inline-simple.html:
  • js/dom/modules/module-load-event-with-src.html:
  • js/dom/modules/module-load-same-module-from-different-entry-point-dynamic.html:
  • js/dom/modules/module-load-same-module-from-different-entry-point-in-src.html:
  • js/dom/modules/module-load-same-module-from-different-entry-point.html:
  • js/dom/modules/module-not-found-error-event-with-src-and-import.html:
  • js/dom/modules/module-src-current-script.html:
  • js/dom/modules/module-src-dynamic.html:
  • js/dom/modules/module-src-simple.html:
  • js/dom/modules/module-type-case-insensitive.html:
  • js/dom/modules/module-will-fire-beforeload.html:
  • js/dom/modules/nomodule-dynamic-classic-src.html:
  • js/dom/modules/nomodule-has-no-effect-on-module-inline.html:
  • js/dom/modules/nomodule-has-no-effect-on-module-src.html:
  • js/dom/modules/nomodule-prevents-execution-classic-script-src.html:
  • js/dom/modules/nomodule-reflect.html:
  • js/dom/modules/resources/error-classic-script.js: Renamed from LayoutTests/js/dom/modules/script-tests/error-classic-script.js.
  • js/dom/modules/resources/import-from-loaded-classic-finish.js: Added.
  • js/dom/modules/resources/import-from-loaded-classic.js: Added.
  • js/dom/modules/resources/import-from-loaded-module-finish.js: Added.
  • js/dom/modules/resources/import-from-loaded-module.js: Added.
  • js/dom/modules/resources/module-document-write-src.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-document-write-src.js.
  • js/dom/modules/resources/module-execution-error-inside-dependent-module-should-be-propagated-to-onerror-throw.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-execution-error-inside-dependent-module-should-be-propagated-to-onerror-throw.js.
  • js/dom/modules/resources/module-execution-error-inside-dependent-module-should-be-propagated-to-onerror.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-execution-error-inside-dependent-module-should-be-propagated-to-onerror.js.
  • js/dom/modules/resources/module-execution-order-mixed-2.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-execution-order-mixed-2.js.
  • js/dom/modules/resources/module-execution-order-mixed-cappuccino.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-execution-order-mixed-cappuccino.js.
  • js/dom/modules/resources/module-execution-order-mixed-cocoa.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-execution-order-mixed-cocoa.js.
  • js/dom/modules/resources/module-execution-order-mixed-matcha.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-execution-order-mixed-matcha.js.
  • js/dom/modules/resources/module-execution-order-mixed-with-classic-scripts-2.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-execution-order-mixed-with-classic-scripts-2.js.
  • js/dom/modules/resources/module-execution-order-mixed-with-classic-scripts-cappuccino.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-execution-order-mixed-with-classic-scripts-cappuccino.js.
  • js/dom/modules/resources/module-execution-order-mixed-with-classic-scripts-cocoa.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-execution-order-mixed-with-classic-scripts-cocoa.js.
  • js/dom/modules/resources/module-execution-order-mixed-with-classic-scripts-matcha.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-execution-order-mixed-with-classic-scripts-matcha.js.
  • js/dom/modules/resources/module-execution-order-mixed-with-classic-scripts.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-execution-order-mixed-with-classic-scripts.js.
  • js/dom/modules/resources/module-execution-order-mixed.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-execution-order-mixed.js.
  • js/dom/modules/resources/module-inline-dynamic.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-inline-dynamic.js.
  • js/dom/modules/resources/module-inline-simple.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-inline-simple.js.
  • js/dom/modules/resources/module-load-event-with-src.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-load-event-with-src.js.
  • js/dom/modules/resources/module-load-same-module-from-different-entry-point.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-load-same-module-from-different-entry-point.js.
  • js/dom/modules/resources/module-not-found-error-event-with-src-and-import.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-not-found-error-event-with-src-and-import.js.
  • js/dom/modules/resources/module-src-current-script.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-src-current-script.js.
  • js/dom/modules/resources/module-src-dynamic-cocoa.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-src-dynamic-cocoa.js.
  • js/dom/modules/resources/module-src-dynamic.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-src-dynamic.js.
  • js/dom/modules/resources/module-src-simple-cocoa.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-src-simple-cocoa.js.
  • js/dom/modules/resources/module-src-simple.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-src-simple.js.
  • js/dom/modules/resources/module-will-fire-beforeload.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-will-fire-beforeload.js.
1:19 AM Changeset in webkit [211279] by matthew_hanson@apple.com
  • 46 edits
    2 copies
    1 move
    1 delete in branches/safari-603-branch/Source

Merge r211237. rdar://problem/30179506

1:18 AM Changeset in webkit [211278] by matthew_hanson@apple.com
  • 3 edits
    1 add in branches/safari-603-branch

Merge r211246. rdar://problem/29916672

12:54 AM Changeset in webkit [211277] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

[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):

12:37 AM WikiStart edited by mmaxfield@apple.com
(diff)
12:26 AM Changeset in webkit [211276] by Carlos Garcia Campos
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed. Fix GTK+ debug build after r211247.

  • heap/GCAssertions.h:
12:02 AM Changeset in webkit [211275] by matthew_hanson@apple.com
  • 3 edits in branches/safari-603-branch/Source/WebCore

Merge r211244. rdar://problem/29956321

12:02 AM Changeset in webkit [211274] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebKit/mac

Merge r211243. rdar://problem/30149809

12:02 AM Changeset in webkit [211273] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebCore

Merge r211242. rdar://problem/29957753

12:02 AM Changeset in webkit [211272] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebCore

Merge r211241. rdar://problem/30099051

12:02 AM Changeset in webkit [211271] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebKit2

Merge r211239. rdar://problem/30221723

12:02 AM Changeset in webkit [211270] by matthew_hanson@apple.com
  • 8 edits in branches/safari-603-branch

Merge r211235. rdar://problem/30058933

12:02 AM Changeset in webkit [211269] by matthew_hanson@apple.com
  • 4 edits in branches/safari-603-branch

Merge r211234. rdar://problem/29899862

12:02 AM Changeset in webkit [211268] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603-branch/Source/WebCore

Merge r211233. rdar://problem/30220959

12:02 AM Changeset in webkit [211267] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebCore

Merge r211231. rdar://problem/30217518

12:02 AM Changeset in webkit [211266] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebCore

Merge r211230. rdar://problem/30009849

12:02 AM Changeset in webkit [211265] by matthew_hanson@apple.com
  • 6 edits in branches/safari-603-branch/Source

Merge r211229. rdar://problem/30216981

12:02 AM Changeset in webkit [211264] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebKit2

Merge r211223. rdar://problem/30181179

12:01 AM Changeset in webkit [211263] by matthew_hanson@apple.com
  • 3 edits in branches/safari-603-branch/Source/WebCore

Merge r211220. rdar://problem/29578619

12:01 AM Changeset in webkit [211262] by matthew_hanson@apple.com
  • 4 edits
    2 adds in branches/safari-603-branch

Merge r211201. rdar://problem/30134866

12:01 AM Changeset in webkit [211261] by matthew_hanson@apple.com
  • 3 edits
    1 add in branches/safari-603-branch

Merge r211168. rdar://problem/30154148

12:01 AM Changeset in webkit [211260] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/LayoutTests

Merge r210441. rdar://problem/29899862

12:01 AM Changeset in webkit [211259] by matthew_hanson@apple.com
  • 6 edits in branches/safari-603-branch/Source/WebCore

Merge r211238. rdar://problem/30216742

12:01 AM Changeset in webkit [211258] by matthew_hanson@apple.com
  • 15 edits
    1 copy
    2 adds in branches/safari-603-branch

Merge r211224. rdar://problem/29144126

12:01 AM Changeset in webkit [211257] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/JavaScriptCore

Merge r211167. rdar://problem/30192652

Jan 26, 2017:

11:14 PM Changeset in webkit [211256] by Chris Dumez
  • 7 edits in trunk/Source/WebCore

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):

10:09 PM Changeset in webkit [211255] by commit-queue@webkit.org
  • 2 edits
    5 adds in trunk/Source/WebCore

[WebRTC] Implement WebRTC PeerConnection backend based on libwebrtc
https://bugs.webkit.org/show_bug.cgi?id=167289

Patch by Youenn Fablet <youennf@gmail.com> on 2017-01-26
Reviewed by Alex Christensen.

Introducing an initial implementation of WebRTC peer connection backend based on LibWebRTC.
This is done behind a compilation flag which is off by default, until the implementation is ready.

The backend implements the PeerConnectionBackend API.
The implementation is split into LibWebRTCPeerConnectionBackend which contains mostly generic code and
passes the real work to LibWebRTCMediaEndpoint.
The latter class is implementing the API using LibWebRTC.

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp: Added.

(WebCore::LibWebRTCMediaEndpoint::LibWebRTCMediaEndpoint):
(WebCore::sessionDescriptionType):
(WebCore::LibWebRTCMediaEndpoint::doSetLocalDescription):
(WebCore::LibWebRTCMediaEndpoint::doSetRemoteDescription):
(WebCore::LibWebRTCMediaEndpoint::addPendingIceCandidates):
(WebCore::streamId):
(WebCore::LibWebRTCMediaEndpoint::doCreateOffer):
(WebCore::LibWebRTCMediaEndpoint::doCreateAnswer):
(WebCore::LibWebRTCMediaEndpoint::getStats):
(WebCore::LibWebRTCMediaEndpoint::StatsCollector::StatsCollector):
(WebCore::LibWebRTCMediaEndpoint::StatsCollector::OnStatsDelivered):
(WebCore::signalingState):
(WebCore::LibWebRTCMediaEndpoint::OnSignalingChange):
(WebCore::trackId):
(WebCore::createMediaStreamTrack):
(WebCore::LibWebRTCMediaEndpoint::addStream):
(WebCore::LibWebRTCMediaEndpoint::OnAddStream):
(WebCore::LibWebRTCMediaEndpoint::OnRemoveStream):
(WebCore::LibWebRTCMediaEndpoint::OnDataChannel):
(WebCore::LibWebRTCMediaEndpoint::stop):
(WebCore::LibWebRTCMediaEndpoint::OnRenegotiationNeeded):
(WebCore::iceConnectionState):
(WebCore::LibWebRTCMediaEndpoint::OnIceConnectionChange):
(WebCore::LibWebRTCMediaEndpoint::OnIceGatheringChange):
(WebCore::LibWebRTCMediaEndpoint::OnIceCandidate):
(WebCore::LibWebRTCMediaEndpoint::OnIceCandidatesRemoved):
(WebCore::LibWebRTCMediaEndpoint::createSessionDescriptionSucceeded):
(WebCore::LibWebRTCMediaEndpoint::createSessionDescriptionFailed):
(WebCore::LibWebRTCMediaEndpoint::setLocalSessionDescriptionSucceeded):
(WebCore::LibWebRTCMediaEndpoint::setLocalSessionDescriptionFailed):
(WebCore::LibWebRTCMediaEndpoint::setRemoteSessionDescriptionSucceeded):
(WebCore::LibWebRTCMediaEndpoint::setRemoteSessionDescriptionFailed):

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h: Added.
  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp: Added.

(WebCore::createLibWebRTCPeerConnectionBackend):
(WebCore::libWebRTCProvider):
(WebCore::LibWebRTCPeerConnectionBackend::LibWebRTCPeerConnectionBackend):
(WebCore::configurationFromMediaEndpointConfiguration):
(WebCore::LibWebRTCPeerConnectionBackend::setConfiguration):
(WebCore::LibWebRTCPeerConnectionBackend::getStats):
(WebCore::LibWebRTCPeerConnectionBackend::doSetLocalDescription):
(WebCore::LibWebRTCPeerConnectionBackend::doSetRemoteDescription):
(WebCore::LibWebRTCPeerConnectionBackend::doCreateOffer):
(WebCore::LibWebRTCPeerConnectionBackend::doCreateAnswer):
(WebCore::LibWebRTCPeerConnectionBackend::doStop):
(WebCore::LibWebRTCPeerConnectionBackend::doAddIceCandidate):
(WebCore::LibWebRTCPeerConnectionBackend::markAsNeedingNegotiation):
(WebCore::LibWebRTCPeerConnectionBackend::createReceiver):
(WebCore::LibWebRTCPeerConnectionBackend::createDataChannelHandler):

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h: Added.
  • WebCore.xcodeproj/project.pbxproj:
9:36 PM Changeset in webkit [211254] by Chris Dumez
  • 38 edits
    8 adds in trunk

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.

8:54 PM Changeset in webkit [211253] by commit-queue@webkit.org
  • 12 edits
    9 adds in trunk

[WebRTC] Add a LibWebRTC mock for testing
https://bugs.webkit.org/show_bug.cgi?id=167429

Patch by Youenn Fablet <youennf@gmail.com> on 2017-01-26
Reviewed by Alex Christensen.

Source/WebCore:

Covered by updated tests although feature is behind a flag, off by default.
MockLibWebRTCPeerConnection will allow us testing the code above the WebRTC implementation above LibWebRTC,
without reyling on it and controlling the way that the peer connections will behave.
Adding support for mock factory to create real peer connections in case where we want to do full testing through the local loopback.

Tests: fast/mediastream/getUserMedia-webaudio.html

webrtc/datachannel/basic.html
webrtc/video.html

  • WebCore.xcodeproj/project.pbxproj:
  • testing/Internals.cpp:

(WebCore::Internals::Internals):
(WebCore::Internals::useMockRTCPeerConnectionFactory):

  • testing/Internals.h:
  • testing/Internals.idl:
  • testing/MockLibWebRTCPeerConnection.cpp: Added.

(WebCore::useMockRTCPeerConnectionFactory):
(WebCore::MockLibWebRTCPeerConnectionForIceCandidates::MockLibWebRTCPeerConnectionForIceCandidates):
(WebCore::MockLibWebRTCPeerConnectionForIceCandidates::gotLocalDescription):
(WebCore::MockLibWebRTCPeerConnectionForIceConnectionState::MockLibWebRTCPeerConnectionForIceConnectionState):
(WebCore::MockLibWebRTCPeerConnectionForIceConnectionState::gotLocalDescription):
(WebCore::MockLibWebRTCPeerConnectionFactory::MockLibWebRTCPeerConnectionFactory):
(WebCore::MockLibWebRTCPeerConnectionFactory::CreatePeerConnection):
(WebCore::MockLibWebRTCPeerConnectionFactory::CreateLocalMediaStream):
(WebCore::MockLibWebRTCPeerConnection::SetLocalDescription):
(WebCore::MockLibWebRTCPeerConnection::SetRemoteDescription):
(WebCore::MockLibWebRTCPeerConnection::CreateDataChannel):
(WebCore::MockLibWebRTCPeerConnection::AddStream):
(WebCore::MockLibWebRTCPeerConnection::RemoveStream):
(WebCore::MockLibWebRTCPeerConnection::CreateOffer):
(WebCore::MockLibWebRTCPeerConnection::CreateAnswer):

  • testing/MockLibWebRTCPeerConnection.h: Added.

(WebCore::MockLibWebRTCPeerConnection::~MockLibWebRTCPeerConnection):
(WebCore::MockLibWebRTCPeerConnection::MockLibWebRTCPeerConnection):
(WebCore::MockLibWebRTCPeerConnection::local_streams):
(WebCore::MockLibWebRTCPeerConnection::remote_streams):
(WebCore::MockLibWebRTCPeerConnection::CreateDtmfSender):
(WebCore::MockLibWebRTCPeerConnection::GetStats):
(WebCore::MockLibWebRTCPeerConnection::local_description):
(WebCore::MockLibWebRTCPeerConnection::remote_description):
(WebCore::MockLibWebRTCPeerConnection::AddIceCandidate):
(WebCore::MockLibWebRTCPeerConnection::RegisterUMAObserver):
(WebCore::MockLibWebRTCPeerConnection::signaling_state):
(WebCore::MockLibWebRTCPeerConnection::ice_connection_state):
(WebCore::MockLibWebRTCPeerConnection::ice_gathering_state):
(WebCore::MockLibWebRTCPeerConnection::StopRtcEventLog):
(WebCore::MockLibWebRTCPeerConnection::Close):
(WebCore::MockLibWebRTCPeerConnection::gotLocalDescription):
(WebCore::MockLibWebRTCIceCandidate::MockLibWebRTCIceCandidate):
(WebCore::MockLibWebRTCAudioTrack::MockLibWebRTCAudioTrack):
(WebCore::MockLibWebRTCVideoTrack::MockLibWebRTCVideoTrack):
(WebCore::MockLibWebRTCDataChannel::MockLibWebRTCDataChannel):
(WebCore::MockLibWebRTCPeerConnectionFactory::create):

LayoutTests:

  • TestExpectations: Marking webrtc new tests as skipped for the moment.
  • fast/mediastream/RTCPeerConnection-createAnswer.html:
  • fast/mediastream/RTCPeerConnection-icecandidate-event.html:
  • fast/mediastream/RTCPeerConnection-iceconnectionstatechange-event.html:
  • webrtc/datachannel/basic.html: Added.
  • webrtc/routines.js: Added.

(createConnections):
(closeConnections):
(onCreateSessionDescriptionError):
(gotDescription1):
(gotDescription2):
(iceCallback1):
(iceCallback2):
(onAddIceCandidateSuccess):
(onAddIceCandidateError):

  • webrtc/video.html: Added.
8:29 PM Changeset in webkit [211252] by akling@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebCore

Branch-specific fix for a crash seen after merging r201777.
<rdar://problem/30209068>

Reviewed by Andy Estes.

Add null checking of the FrameView in Document::destroyRenderTree() before
calling functions on it. This is not necessary in trunk, as the FrameView
is guaranteed to be present there.

FrameView can be missing on the branch, since render trees for page cached documents
are destroyed when leaving the page cache, not when entering it (trunk behavior.)
When leaving the page cache, the FrameView is already detached, hence the bug.

  • dom/Document.cpp:

(WebCore::Document::destroyRenderTree):

8:25 PM ComplexTextController edited by mmaxfield@apple.com
(diff)
8:22 PM Changeset in webkit [211251] by Wenson Hsieh
  • 1 edit
    2 adds in trunk/Websites/webkit.org

Unreviewed, add a demo page for an input events blog post

  • demos/input-events/index.html: Added.
8:16 PM ComplexTextController edited by mmaxfield@apple.com
(diff)
8:13 PM ComplexTextController edited by mmaxfield@apple.com
(diff)
8:11 PM image1.JPG attached to ComplexTextController by mmaxfield@apple.com
Example
8:08 PM ComplexTextController created by mmaxfield@apple.com
6:52 PM Changeset in webkit [211250] by dbates@webkit.org
  • 2 edits
    3 adds in trunk/LayoutTests

[QuickLook] Add test to ensure that RTF documents have a unique origin
https://bugs.webkit.org/show_bug.cgi?id=167480

Reviewed by Andy Estes.

  • http/tests/quicklook/resources/document-domain-is-empty-string.rtf: Added.
  • http/tests/quicklook/rtf-document-domain-is-empty-string-expected.txt: Added.
  • http/tests/quicklook/rtf-document-domain-is-empty-string.html: Added.
  • platform/ios-simulator/TestExpectations: Skip the test in OpenSource as we

do not support touch events.

6:17 PM Changeset in webkit [211249] by commit-queue@webkit.org
  • 6 edits in trunk

Page should be able to request pointer lock without user gesture if it relinquished it without a user gesture
https://bugs.webkit.org/show_bug.cgi?id=167126

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-01-26
Reviewed by Jon Lee.

Source/WebCore:

Enabled pointer-lock/locked-element-removed-from-dom.html for WK2.
Not enable in WK1 because of https://bugs.webkit.org/show_bug.cgi?id=167127

This change allows a page to lock the pointer again without a user gesture if it was unlocked by
the page and not by the user. See https://www.w3.org/TR/2016/REC-pointerlock-20161027/ 5.1 Methods

  • page/PointerLockController.cpp:

When a document acquires pointer lock with a user gesture, that document is allowed to request pointer lock again
until the user takes an action to end pointer lock. We know it is a user action because user actions always
call requestPointerUnlockAndForceCursorVisible().

When the page requests a pointer unlock (via requestPointerUnlock), that document is allowed to continue to relock
the page. This continues until there is either an unlock request form the user
via requestPointerUnlockAndForceCursorVisible or a didLosePointerLock without a pointer unlock request.

(WebCore::PointerLockController::PointerLockController):
(WebCore::PointerLockController::requestPointerLock):
(WebCore::PointerLockController::requestPointerUnlock):
(WebCore::PointerLockController::requestPointerUnlockAndForceCursorVisible):
(WebCore::PointerLockController::elementRemoved):
(WebCore::PointerLockController::documentDetached):
(WebCore::PointerLockController::didAcquirePointerLock):
(WebCore::PointerLockController::didLosePointerLock):
(WebCore::PointerLockController::clearElement):

  • page/PointerLockController.h:

LayoutTests:

Enable pointer-lock/locked-element-removed-from-dom.html for WK2 by enabling for Mac and disabling for WK1.
Not enable in WK1 becuase of https://bugs.webkit.org/show_bug.cgi?id=167127

  • platform/mac-wk1/TestExpectations:
  • platform/mac/TestExpectations:
6:00 PM Changeset in webkit [211248] by aestes@apple.com
  • 6 edits
    3 adds
    3 deletes in trunk

[QuickLook] REGRESSION (WebKit2): Requests are made to invalid x-apple-ql-id: URLs
https://bugs.webkit.org/show_bug.cgi?id=167453

Reviewed by Brent Fulgham.

Source/WebCore:

Requests to x-apple-ql-id: URLs should be filtered by
-[QLPreviewConverter safeRequestForRequest:]. This method checks that the URL is one of the
ones generated for the current preview, and changes it to "about:" if it isn't.

WebCore::safeQLURLForDocumentURLAndResourceURL() was responsible for finding the
QLPreviewConverter instance to use by looking it up in an NSMutableDictionary using the
document URL as a key. In WebKit1, this dictionary was populated by the
QuickLookHandleClient when new QuickLookHandles were created, but the WebKit2
QuickLookHandleClient never did this. As a result, requests to invalid URLs were not being
rewritten.

An easy way to load a QuickLook document with invalid URLs is to create an HTML file with a
Microsoft Office extension (e.g. .xls); QuickLook, iWork, and Office support opening HTML
files with Office document extensions. In r207155 we applied a Content Security Policy to
QuickLook documents that only allows x-apple-ql-id: resources to load. This blocked
cross-origin requests from loading, but same-origin requests to URLs that weren't generated
by QLPreviewConverter were still allowed to load.

This change blocks these URLs by calling -[QLPreviewConverter safeRequestForRequest:] in a
way that works for both WebKit1 and WebKit2.

After implementing QuickLook for WebKit2, we found a bug when loading HTML-as-Office
documents (webkit.org/b/135651) that presented as a nil MIME type in the preview
NSURLResponse returned by QLPreviewConverter. Unfortunately r172159 papered over the actual
bug by failing to load previews with nil MIME types.

The real issue was that we were asking for the preview response before QuickLook had
received enough data to determine a MIME type, so this change also removes the bad fix from
r172159 and instead waits until QuickLook has converted the document to ask for its preview
response. This restores the ability to load HTML files with Office document extensions.
These two fixes are combined in a single patch because I don't know how to create an invalid
QuickLook URL for testing without loading an HTML-as-Office document.

Test: quicklook/invalid-ql-id-url.html

  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::willSendRequestInternal): Called
QuickLookHandle::willSendRequest() if m_documentLoader has a QuickLookHandle.

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::load): Removed the call to
WebCore::safeQLURLForDocumentURLAndResourceURL().

  • loader/ios/QuickLook.h: Removed safeQLURLForDocumentURLAndResourceURL() and declared

QuickLookHandle::willSendRequest().

  • loader/ios/QuickLook.mm: Removed _previewResponse and _hasFailed ivars from

WebPreviewConverter.
(-[WebPreviewConverter initWithResourceLoader:resourceResponse:quickLookHandle:]): Stopped
setting _previewResponse.
(-[WebPreviewConverter _sendDidReceiveResponseIfNecessary]): Only emptied _bufferedDataArray
if we haven't already called -_sendDidReceiveResponseIfNecessary; removed the check for a
nil _previewResponse MIME type; accessed -[QLPreviewConverter previewResponse] now that the
document has been converted and asserted its MIME type is non-nil.
(-[WebPreviewConverter connection:didReceiveData:lengthReceived:]): Removed _hasFailed check.
(-[WebPreviewConverter connectionDidFinishLoading:]): Ditto.
(isQuickLookPasswordError): Moved the check for password failure errors to here from
-connection:didFailWithError: for better readability.
(-[WebPreviewConverter connection:didFailWithError:]): Removed _hasFailed check and used
more early returns.
(WebCore::QuickLookHandle::willSendRequest): Filtered the request through
-[QLPreviewConverter safeRequestWithRequest:] if the request URL's scheme is x-apple-ql-id:.
(WebCore::safeQLURLForDocumentURLAndResourceURL): Deleted.

LayoutTests:

  • quicklook/invalid-ql-id-url-expected.txt: Added.
  • quicklook/invalid-ql-id-url.html: Added.
  • quicklook/nil-response-mime-type-expected.txt: Removed.
  • quicklook/nil-response-mime-type.html: Removed.
  • quicklook/resources/invalid-ql-id-url.xls: Added.
  • quicklook/resources/nil-response-mime-type.xls: Removed.
5:47 PM Changeset in webkit [211247] by keith_miller@apple.com
  • 339 edits in trunk

classInfo should take a VM so it is not materialized from the object on each call
https://bugs.webkit.org/show_bug.cgi?id=167424

Rubber Stamped by Michael Saboff.

Previously, classInfo() would get the VM from the target's
MarkedBlock. Most callers already have a VM on hand, so it is
wasteful to compute the VM from the marked block every time. This
patch refactors some of the most common callers of classInfo(),
jsDynamicCast and inherits to take a VM as well.

Source/JavaScriptCore:

  • API/JSCallbackConstructor.cpp:

(JSC::JSCallbackConstructor::finishCreation):

  • API/JSCallbackFunction.cpp:

(JSC::JSCallbackFunction::finishCreation):

  • API/JSCallbackObjectFunctions.h:

(JSC::JSCallbackObject<Parent>::asCallbackObject):
(JSC::JSCallbackObject<Parent>::finishCreation):

  • API/JSObjectRef.cpp:

(JSObjectSetPrototype):
(classInfoPrivate):
(JSObjectGetPrivate):
(JSObjectSetPrivate):
(JSObjectGetPrivateProperty):
(JSObjectSetPrivateProperty):
(JSObjectDeletePrivateProperty):

  • API/JSTypedArray.cpp:

(JSValueGetTypedArrayType):
(JSObjectMakeTypedArrayWithArrayBuffer):
(JSObjectMakeTypedArrayWithArrayBufferAndOffset):
(JSObjectGetTypedArrayBytesPtr):
(JSObjectGetTypedArrayLength):
(JSObjectGetTypedArrayByteLength):
(JSObjectGetTypedArrayByteOffset):
(JSObjectGetTypedArrayBuffer):
(JSObjectGetArrayBufferBytesPtr):
(JSObjectGetArrayBufferByteLength):

  • API/JSValue.mm:

(isDate):
(isArray):
(valueToObjectWithoutCopy):

  • API/JSValueRef.cpp:

(JSValueIsArray):
(JSValueIsDate):
(JSValueIsObjectOfClass):

  • API/JSWeakObjectMapRefPrivate.cpp:
  • API/JSWrapperMap.mm:

(tryUnwrapObjcObject):

  • API/ObjCCallbackFunction.h:
  • API/ObjCCallbackFunction.mm:

(tryUnwrapConstructor):

  • bindings/ScriptFunctionCall.cpp:

(Deprecated::ScriptFunctionCall::call):

  • bytecode/CallVariant.h:

(JSC::CallVariant::internalFunction):
(JSC::CallVariant::function):
(JSC::CallVariant::isClosureCall):
(JSC::CallVariant::executable):
(JSC::CallVariant::functionExecutable):
(JSC::CallVariant::nativeExecutable):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::setConstantRegisters):
(JSC::CodeBlock::replacement):
(JSC::CodeBlock::computeCapabilityLevel):
(JSC::CodeBlock::nameForRegister):

  • bytecode/ObjectAllocationProfile.h:

(JSC::ObjectAllocationProfile::possibleDefaultPropertyCount):

  • bytecode/ObjectPropertyCondition.cpp:

(JSC::ObjectPropertyCondition::attemptToMakeEquivalenceWithoutBarrier):

  • bytecode/ObjectPropertyCondition.h:

(JSC::ObjectPropertyCondition::isValidValueForPresence):

  • bytecode/PropertyCondition.cpp:

(JSC::PropertyCondition::isValidValueForAttributes):
(JSC::PropertyCondition::isValidValueForPresence):
(JSC::PropertyCondition::attemptToMakeEquivalenceWithoutBarrier):

  • bytecode/PropertyCondition.h:
  • bytecode/SpeculatedType.cpp:

(JSC::speculationFromCell):

  • debugger/Debugger.cpp:
  • debugger/DebuggerCallFrame.cpp:

(JSC::DebuggerCallFrame::functionName):
(JSC::DebuggerCallFrame::scope):
(JSC::DebuggerCallFrame::type):

  • debugger/DebuggerScope.cpp:

(JSC::DebuggerScope::name):
(JSC::DebuggerScope::location):

  • dfg/DFGAbstractInterpreter.h:
  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::AbstractInterpreter):
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::get):
(JSC::DFG::ByteCodeParser::handleIntrinsicCall):
(JSC::DFG::ByteCodeParser::planLoad):
(JSC::DFG::ByteCodeParser::checkPresenceLike):
(JSC::DFG::ByteCodeParser::load):
(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants):

  • dfg/DFGDesiredWeakReferences.cpp:

(JSC::DFG::DesiredWeakReferences::reallyAdd):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupMakeRope):

  • dfg/DFGFrozenValue.h:

(JSC::DFG::FrozenValue::FrozenValue):
(JSC::DFG::FrozenValue::dynamicCast):

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::dump):
(JSC::DFG::Graph::tryGetConstantClosureVar):
(JSC::DFG::Graph::tryGetFoldableView):
(JSC::DFG::Graph::getRegExpPrototypeProperty):
(JSC::DFG::Graph::isStringPrototypeMethodSane):
(JSC::DFG::Graph::canOptimizeStringObjectAccess):

  • dfg/DFGLazyJSValue.cpp:

(JSC::DFG::LazyJSValue::tryGetStringImpl):
(JSC::DFG::LazyJSValue::tryGetString):

  • dfg/DFGLazyJSValue.h:
  • dfg/DFGNode.cpp:

(JSC::DFG::Node::convertToPutStructureHint):

  • dfg/DFGNode.h:

(JSC::DFG::Node::dynamicCastConstant):
(JSC::DFG::Node::castConstant):

  • dfg/DFGOperations.cpp:
  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileIn):
(JSC::DFG::SpeculativeJIT::compileMaterializeNewObject):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGStrengthReductionPhase.cpp:

(JSC::DFG::StrengthReductionPhase::handleNode):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileDirectCallOrConstruct):
(JSC::FTL::DFG::LowerDFGToB3::compileIn):
(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeCreateActivation):
(JSC::FTL::DFG::LowerDFGToB3::compileStringReplace):

  • ftl/FTLOperations.cpp:

(JSC::FTL::operationMaterializeObjectInOSR):

  • heap/CodeBlockSet.cpp:

(JSC::CodeBlockSet::lastChanceToFinalize):
(JSC::CodeBlockSet::deleteUnmarkedAndUnreferenced):

  • heap/CodeBlockSet.h:
  • heap/GCAssertions.h:
  • heap/Heap.cpp:

(JSC::Heap::lastChanceToFinalize):
(JSC::Heap::protectedObjectTypeCounts):
(JSC::Heap::objectTypeCounts):
(JSC::Heap::deleteUnmarkedCompiledCode):

  • heap/HeapSnapshotBuilder.cpp:

(JSC::HeapSnapshotBuilder::json):

  • heap/SlotVisitor.cpp:

(JSC::validate):

  • inspector/InjectedScriptHost.h:
  • inspector/JSGlobalObjectInspectorController.cpp:

(Inspector::JSGlobalObjectInspectorController::reportAPIException):

  • inspector/JSInjectedScriptHost.cpp:

(Inspector::JSInjectedScriptHost::finishCreation):
(Inspector::JSInjectedScriptHost::isHTMLAllCollection):
(Inspector::JSInjectedScriptHost::subtype):
(Inspector::JSInjectedScriptHost::functionDetails):
(Inspector::JSInjectedScriptHost::getInternalProperties):
(Inspector::JSInjectedScriptHost::proxyTargetValue):
(Inspector::JSInjectedScriptHost::weakMapSize):
(Inspector::JSInjectedScriptHost::weakMapEntries):
(Inspector::JSInjectedScriptHost::weakSetSize):
(Inspector::JSInjectedScriptHost::weakSetEntries):
(Inspector::JSInjectedScriptHost::iteratorEntries):

  • inspector/JSInjectedScriptHostPrototype.cpp:

(Inspector::JSInjectedScriptHostPrototype::finishCreation):
(Inspector::jsInjectedScriptHostPrototypeAttributeEvaluate):
(Inspector::jsInjectedScriptHostPrototypeFunctionInternalConstructorName):
(Inspector::jsInjectedScriptHostPrototypeFunctionIsHTMLAllCollection):
(Inspector::jsInjectedScriptHostPrototypeFunctionProxyTargetValue):
(Inspector::jsInjectedScriptHostPrototypeFunctionWeakMapSize):
(Inspector::jsInjectedScriptHostPrototypeFunctionWeakMapEntries):
(Inspector::jsInjectedScriptHostPrototypeFunctionWeakSetSize):
(Inspector::jsInjectedScriptHostPrototypeFunctionWeakSetEntries):
(Inspector::jsInjectedScriptHostPrototypeFunctionIteratorEntries):
(Inspector::jsInjectedScriptHostPrototypeFunctionEvaluateWithScopeExtension):
(Inspector::jsInjectedScriptHostPrototypeFunctionSubtype):
(Inspector::jsInjectedScriptHostPrototypeFunctionFunctionDetails):
(Inspector::jsInjectedScriptHostPrototypeFunctionGetInternalProperties):

  • inspector/JSJavaScriptCallFrame.cpp:

(Inspector::JSJavaScriptCallFrame::finishCreation):
(Inspector::toJSJavaScriptCallFrame): Deleted.

  • inspector/JSJavaScriptCallFrame.h:
  • inspector/JSJavaScriptCallFramePrototype.cpp:

(Inspector::JSJavaScriptCallFramePrototype::finishCreation):
(Inspector::jsJavaScriptCallFramePrototypeFunctionEvaluateWithScopeExtension):
(Inspector::jsJavaScriptCallFramePrototypeFunctionScopeDescriptions):
(Inspector::jsJavaScriptCallFrameAttributeCaller):
(Inspector::jsJavaScriptCallFrameAttributeSourceID):
(Inspector::jsJavaScriptCallFrameAttributeLine):
(Inspector::jsJavaScriptCallFrameAttributeColumn):
(Inspector::jsJavaScriptCallFrameAttributeFunctionName):
(Inspector::jsJavaScriptCallFrameAttributeScopeChain):
(Inspector::jsJavaScriptCallFrameAttributeThisObject):
(Inspector::jsJavaScriptCallFrameAttributeType):
(Inspector::jsJavaScriptCallFrameIsTailDeleted):

  • inspector/ScriptArguments.cpp:

(Inspector::ScriptArguments::getFirstArgumentAsString):

  • inspector/agents/InspectorHeapAgent.cpp:

(Inspector::InspectorHeapAgent::getPreview):

  • interpreter/Interpreter.cpp:

(JSC::notifyDebuggerOfUnwinding):
(JSC::Interpreter::unwind):
(JSC::Interpreter::notifyDebuggerOfExceptionToBeThrown):
(JSC::Interpreter::execute):

  • interpreter/ShadowChicken.cpp:

(JSC::ShadowChicken::update):

  • interpreter/StackVisitor.cpp:

(JSC::StackVisitor::readFrame):
(JSC::StackVisitor::readNonInlinedFrame):
(JSC::StackVisitor::Frame::calleeSaveRegisters):

  • jit/JITCode.cpp:

(JSC::JITCode::execute):

  • jit/JITOperations.cpp:

(JSC::operationNewFunctionCommon):

  • jit/Repatch.cpp:

(JSC::tryCacheGetByID):

  • jsc.cpp:

(WTF::CustomGetter::customGetter):
(WTF::RuntimeArray::finishCreation):
(WTF::RuntimeArray::lengthGetter):
(WTF::DOMJITGetter::customGetter):
(WTF::DOMJITGetterComplex::DOMJITNodeDOMJIT::slowCall):
(WTF::DOMJITGetterComplex::functionEnableException):
(WTF::DOMJITGetterComplex::customGetter):
(WTF::DOMJITFunctionObject::safeFunction):
(functionDescribeArray):
(functionCreateElement):
(functionGetElement):
(functionSetElementRoot):
(functionGetHiddenValue):
(functionSetHiddenValue):
(functionSetImpureGetterDelegate):
(functionNoFTL):
(functionDollarEvalScript):
(functionDollarAgentBroadcast):
(functionTransferArrayBuffer):
(functionFindTypeForExpression):
(functionReturnTypeFor):
(functionHasBasicBlockExecuted):
(functionBasicBlockExecutionCount):
(functionEnsureArrayStorage):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • runtime/AbstractModuleRecord.cpp:

(JSC::AbstractModuleRecord::finishCreation):

  • runtime/ArrayBuffer.cpp:

(JSC::ArrayBuffer::transferTo):

  • runtime/ArrayBuffer.h:
  • runtime/ArrayConstructor.cpp:

(JSC::ArrayConstructor::finishCreation):
(JSC::arrayConstructorPrivateFuncIsArraySlow):
(JSC::arrayConstructorPrivateFuncIsArrayConstructor):

  • runtime/ArrayConstructor.h:

(JSC::isArrayConstructor): Deleted.

  • runtime/ArrayIteratorPrototype.cpp:

(JSC::ArrayIteratorPrototype::finishCreation):

  • runtime/ArrayPrototype.cpp:

(JSC::ArrayPrototype::finishCreation):

  • runtime/AsyncFunctionPrototype.cpp:

(JSC::AsyncFunctionPrototype::finishCreation):

  • runtime/AtomicsObject.cpp:

(JSC::AtomicsObject::finishCreation):
(JSC::atomicsFuncWait):
(JSC::atomicsFuncWake):

  • runtime/BooleanObject.cpp:

(JSC::BooleanObject::finishCreation):

  • runtime/BooleanObject.h:

(JSC::asBooleanObject):

  • runtime/BooleanPrototype.cpp:

(JSC::BooleanPrototype::finishCreation):
(JSC::booleanProtoFuncToString):
(JSC::booleanProtoFuncValueOf):

  • runtime/ConsoleObject.cpp:

(JSC::ConsoleObject::finishCreation):

  • runtime/DateConstructor.cpp:

(JSC::constructDate):

  • runtime/DateInstance.cpp:

(JSC::DateInstance::finishCreation):

  • runtime/DateInstance.h:

(JSC::asDateInstance):

  • runtime/DatePrototype.cpp:

(JSC::formateDateInstance):
(JSC::DatePrototype::finishCreation):
(JSC::dateProtoFuncToISOString):
(JSC::dateProtoFuncToLocaleString):
(JSC::dateProtoFuncToLocaleDateString):
(JSC::dateProtoFuncToLocaleTimeString):
(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):

  • runtime/ErrorInstance.cpp:

(JSC::ErrorInstance::finishCreation):

  • runtime/ErrorPrototype.cpp:

(JSC::ErrorPrototype::finishCreation):

  • runtime/ExceptionHelpers.cpp:

(JSC::isTerminatedExecutionException):

  • runtime/ExceptionHelpers.h:
  • runtime/ExecutableBase.cpp:

(JSC::ExecutableBase::clearCode):
(JSC::ExecutableBase::dump):
(JSC::ExecutableBase::hashFor):

  • runtime/FunctionPrototype.cpp:

(JSC::functionProtoFuncToString):

  • runtime/GeneratorFunctionPrototype.cpp:

(JSC::GeneratorFunctionPrototype::finishCreation):

  • runtime/GeneratorPrototype.cpp:

(JSC::GeneratorPrototype::finishCreation):

  • runtime/GetterSetter.h:
  • runtime/InspectorInstrumentationObject.cpp:

(JSC::InspectorInstrumentationObject::finishCreation):

  • runtime/InternalFunction.cpp:

(JSC::InternalFunction::finishCreation):
(JSC::InternalFunction::createSubclassStructure):

  • runtime/InternalFunction.h:

(JSC::asInternalFunction):

  • runtime/IntlCollator.cpp:

(JSC::IntlCollator::finishCreation):

  • runtime/IntlCollatorPrototype.cpp:

(JSC::IntlCollatorPrototypeGetterCompare):
(JSC::IntlCollatorPrototypeFuncResolvedOptions):

  • runtime/IntlDateTimeFormat.cpp:

(JSC::IntlDateTimeFormat::finishCreation):

  • runtime/IntlDateTimeFormatPrototype.cpp:

(JSC::IntlDateTimeFormatPrototypeGetterFormat):
(JSC::IntlDateTimeFormatPrototypeFuncResolvedOptions):

  • runtime/IntlNumberFormat.cpp:

(JSC::IntlNumberFormat::finishCreation):

  • runtime/IntlNumberFormatPrototype.cpp:

(JSC::IntlNumberFormatPrototypeGetterFormat):
(JSC::IntlNumberFormatPrototypeFuncResolvedOptions):

  • runtime/IntlObject.cpp:

(JSC::IntlObject::finishCreation):

  • runtime/IntlObjectInlines.h:

(JSC::constructIntlInstanceWithWorkaroundForLegacyIntlConstructor):

  • runtime/IteratorPrototype.cpp:

(JSC::IteratorPrototype::finishCreation):

  • runtime/JSArray.h:

(JSC::asArray):
(JSC::isJSArray):

  • runtime/JSArrayBuffer.h:

(JSC::toPossiblySharedArrayBuffer):
(JSC::toUnsharedArrayBuffer):
(JSC::JSArrayBuffer::toWrapped):

  • runtime/JSArrayBufferConstructor.cpp:

(JSC::arrayBufferFuncIsView):

  • runtime/JSArrayBufferPrototype.cpp:

(JSC::arrayBufferProtoFuncSlice):

  • runtime/JSArrayBufferView.h:
  • runtime/JSArrayBufferViewInlines.h:

(JSC::JSArrayBufferView::toWrapped):

  • runtime/JSBoundFunction.cpp:

(JSC::isBoundFunction):
(JSC::getBoundFunctionStructure):
(JSC::JSBoundFunction::finishCreation):

  • runtime/JSCJSValue.cpp:

(JSC::JSValue::dumpForBacktrace):

  • runtime/JSCJSValue.h:
  • runtime/JSCJSValueInlines.h:

(JSC::JSValue::inherits):
(JSC::JSValue::classInfoOrNull):

  • runtime/JSCallee.cpp:

(JSC::JSCallee::finishCreation):

  • runtime/JSCell.cpp:

(JSC::JSCell::dumpToStream):
(JSC::JSCell::className):
(JSC::JSCell::isAnyWasmCallee):

  • runtime/JSCell.h:

(JSC::jsCast):
(JSC::jsDynamicCast):

  • runtime/JSCellInlines.h:

(JSC::JSCell::methodTable):
(JSC::JSCell::inherits):
(JSC::JSCell::classInfo):

  • runtime/JSCustomGetterSetterFunction.cpp:

(JSC::JSCustomGetterSetterFunction::finishCreation):

  • runtime/JSDataViewPrototype.cpp:

(JSC::getData):
(JSC::setData):
(JSC::dataViewProtoGetterBuffer):
(JSC::dataViewProtoGetterByteLength):
(JSC::dataViewProtoGetterByteOffset):

  • runtime/JSFunction.cpp:

(JSC::JSFunction::finishCreation):
(JSC::JSFunction::allocateAndInitializeRareData):
(JSC::JSFunction::initializeRareData):
(JSC::RetrieveArgumentsFunctor::RetrieveArgumentsFunctor):
(JSC::RetrieveCallerFunctionFunctor::RetrieveCallerFunctionFunctor):
(JSC::RetrieveCallerFunctionFunctor::operator()):
(JSC::JSFunction::callerGetter):
(JSC::JSFunction::getOwnNonIndexPropertyNames):
(JSC::getCalculatedDisplayName):
(JSC::JSFunction::reifyBoundNameIfNeeded):

  • runtime/JSGenericTypedArrayView.h:

(JSC::toPossiblySharedNativeTypedView):
(JSC::toUnsharedNativeTypedView):
(JSC::JSGenericTypedArrayView<Adaptor>::toWrapped):

  • runtime/JSGenericTypedArrayViewConstructorInlines.h:

(JSC::constructGenericTypedArrayViewWithArguments):
(JSC::constructGenericTypedArrayView):

  • runtime/JSGenericTypedArrayViewInlines.h:

(JSC::JSGenericTypedArrayView<Adaptor>::set):

  • runtime/JSGenericTypedArrayViewPrototypeFunctions.h:

(JSC::speciesConstruct):
(JSC::genericTypedArrayViewProtoFuncSet):
(JSC::genericTypedArrayViewProtoFuncSlice):
(JSC::genericTypedArrayViewPrivateFuncSubarrayCreate):

  • runtime/JSGenericTypedArrayViewPrototypeInlines.h:

(JSC::JSGenericTypedArrayViewPrototype<ViewClass>::finishCreation):

  • runtime/JSGlobalObject.cpp:

(JSC::getTemplateObject):
(JSC::enqueueJob):
(JSC::JSGlobalObject::init):

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::globalFuncProtoGetter):
(JSC::globalFuncProtoSetter):

  • runtime/JSInternalPromiseDeferred.cpp:

(JSC::JSInternalPromiseDeferred::create):

  • runtime/JSLexicalEnvironment.h:

(JSC::asActivation):

  • runtime/JSModuleLoader.cpp:

(JSC::JSModuleLoader::finishCreation):
(JSC::JSModuleLoader::evaluate):
(JSC::JSModuleLoader::getModuleNamespaceObject):

  • runtime/JSModuleNamespaceObject.cpp:

(JSC::JSModuleNamespaceObject::finishCreation):
(JSC::moduleNamespaceObjectSymbolIterator):

  • runtime/JSModuleRecord.cpp:

(JSC::JSModuleRecord::finishCreation):

  • runtime/JSNativeStdFunction.cpp:

(JSC::JSNativeStdFunction::finishCreation):

  • runtime/JSONObject.cpp:

(JSC::JSONObject::finishCreation):
(JSC::unwrapBoxedPrimitive):
(JSC::Stringifier::Stringifier):
(JSC::Walker::walk):

  • runtime/JSObject.cpp:

(JSC::JSObject::className):
(JSC::JSObject::toStringName):
(JSC::JSObject::calculatedClassName):
(JSC::JSObject::putInlineSlow):
(JSC::JSObject::ensureInt32Slow):
(JSC::JSObject::ensureDoubleSlow):
(JSC::JSObject::ensureContiguousSlow):
(JSC::JSObject::ensureArrayStorageSlow):
(JSC::JSObject::deleteProperty):
(JSC::JSObject::getOwnStaticPropertySlot):
(JSC::JSObject::findPropertyHashEntry):
(JSC::JSObject::getOwnNonIndexPropertyNames):
(JSC::JSObject::reifyAllStaticProperties):
(JSC::JSObject::getOwnPropertyDescriptor):

  • runtime/JSObject.h:

(JSC::JSObject::finishCreation):
(JSC::JSNonFinalObject::finishCreation):
(JSC::JSFinalObject::finishCreation):

  • runtime/JSPromiseDeferred.cpp:

(JSC::JSPromiseDeferred::create):

  • runtime/JSPropertyNameIterator.cpp:

(JSC::JSPropertyNameIterator::finishCreation):
(JSC::propertyNameIteratorFuncNext):

  • runtime/JSScope.cpp:

(JSC::JSScope::symbolTable):

  • runtime/JSScope.h:
  • runtime/JSString.cpp:

(JSC::JSString::dumpToStream):

  • runtime/JSStringIterator.cpp:

(JSC::JSStringIterator::finishCreation):

  • runtime/JSTypedArrayViewPrototype.cpp:

(JSC::typedArrayViewPrivateFuncIsTypedArrayView):
(JSC::typedArrayViewPrivateFuncLength):
(JSC::typedArrayViewPrivateFuncGetOriginalConstructor):
(JSC::typedArrayViewProtoGetterFuncToStringTag):
(JSC::JSTypedArrayViewPrototype::finishCreation):

  • runtime/LazyClassStructure.cpp:

(JSC::LazyClassStructure::Initializer::setConstructor):

  • runtime/Lookup.h:

(JSC::putEntry):

  • runtime/MapConstructor.cpp:

(JSC::MapConstructor::finishCreation):

  • runtime/MapIteratorPrototype.cpp:

(JSC::MapIteratorPrototype::finishCreation):
(JSC::MapIteratorPrototypeFuncNext):

  • runtime/MapPrototype.cpp:

(JSC::MapPrototype::finishCreation):
(JSC::mapProtoFuncValues):
(JSC::mapProtoFuncEntries):
(JSC::mapProtoFuncKeys):
(JSC::privateFuncMapIterator):
(JSC::privateFuncMapIteratorNext):

  • runtime/MathObject.cpp:

(JSC::MathObject::finishCreation):

  • runtime/ModuleLoaderPrototype.cpp:

(JSC::moduleLoaderPrototypeParseModule):
(JSC::moduleLoaderPrototypeRequestedModules):
(JSC::moduleLoaderPrototypeModuleDeclarationInstantiation):
(JSC::moduleLoaderPrototypeResolve):
(JSC::moduleLoaderPrototypeFetch):
(JSC::moduleLoaderPrototypeInstantiate):
(JSC::moduleLoaderPrototypeGetModuleNamespaceObject):
(JSC::moduleLoaderPrototypeEvaluate):

  • runtime/NativeErrorConstructor.cpp:

(JSC::NativeErrorConstructor::finishCreation):

  • runtime/NumberConstructor.cpp:

(JSC::NumberConstructor::finishCreation):

  • runtime/NumberObject.cpp:

(JSC::NumberObject::finishCreation):

  • runtime/NumberPrototype.cpp:

(JSC::NumberPrototype::finishCreation):

  • runtime/ObjectConstructor.cpp:

(JSC::ObjectConstructor::finishCreation):

  • runtime/ObjectPrototype.cpp:

(JSC::ObjectPrototype::finishCreation):

  • runtime/ProxyObject.cpp:

(JSC::ProxyObject::toStringName):
(JSC::ProxyObject::finishCreation):

  • runtime/ReflectObject.cpp:

(JSC::ReflectObject::finishCreation):
(JSC::reflectObjectConstruct):

  • runtime/RegExpConstructor.cpp:

(JSC::RegExpConstructor::finishCreation):
(JSC::setRegExpConstructorInput):
(JSC::setRegExpConstructorMultiline):
(JSC::constructRegExp):

  • runtime/RegExpConstructor.h:

(JSC::asRegExpConstructor):
(JSC::isRegExp):

  • runtime/RegExpObject.cpp:

(JSC::RegExpObject::finishCreation):

  • runtime/RegExpObject.h:

(JSC::asRegExpObject):

  • runtime/RegExpPrototype.cpp:

(JSC::RegExpPrototype::finishCreation):
(JSC::regExpProtoFuncTestFast):
(JSC::regExpProtoFuncExec):
(JSC::regExpProtoFuncMatchFast):
(JSC::regExpProtoFuncCompile):
(JSC::regExpProtoGetterGlobal):
(JSC::regExpProtoGetterIgnoreCase):
(JSC::regExpProtoGetterMultiline):
(JSC::regExpProtoGetterSticky):
(JSC::regExpProtoGetterUnicode):
(JSC::regExpProtoGetterSource):

  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::processUnverifiedStackTraces):

  • runtime/ScriptExecutable.cpp:

(JSC::ScriptExecutable::newCodeBlockFor):
(JSC::ScriptExecutable::newReplacementCodeBlockFor):

  • runtime/SetConstructor.cpp:

(JSC::SetConstructor::finishCreation):

  • runtime/SetIteratorPrototype.cpp:

(JSC::SetIteratorPrototype::finishCreation):
(JSC::SetIteratorPrototypeFuncNext):

  • runtime/SetPrototype.cpp:

(JSC::SetPrototype::finishCreation):
(JSC::setProtoFuncValues):
(JSC::setProtoFuncEntries):
(JSC::privateFuncSetIterator):
(JSC::privateFuncSetIteratorNext):

  • runtime/StackFrame.cpp:

(JSC::StackFrame::sourceURL):
(JSC::StackFrame::functionName):

  • runtime/StringIteratorPrototype.cpp:

(JSC::StringIteratorPrototype::finishCreation):

  • runtime/StringObject.cpp:

(JSC::StringObject::finishCreation):

  • runtime/StringObject.h:

(JSC::asStringObject):

  • runtime/StringPrototype.cpp:

(JSC::StringPrototype::finishCreation):
(JSC::replace):
(JSC::stringProtoFuncReplaceUsingRegExp):
(JSC::stringProtoFuncToString):

  • runtime/StructureRareData.cpp:

(JSC::StructureRareData::setObjectToStringValue):

  • runtime/Symbol.cpp:

(JSC::Symbol::finishCreation):

  • runtime/SymbolConstructor.cpp:

(JSC::SymbolConstructor::finishCreation):

  • runtime/SymbolObject.cpp:

(JSC::SymbolObject::finishCreation):

  • runtime/SymbolPrototype.cpp:

(JSC::SymbolPrototype::finishCreation):
(JSC::symbolProtoFuncToString):
(JSC::symbolProtoFuncValueOf):

  • runtime/TestRunnerUtils.cpp:

(JSC::getExecutableForFunction):

  • runtime/ThrowScope.cpp:

(JSC::ThrowScope::throwException):

  • runtime/VM.cpp:

(JSC::VM::throwException):

  • runtime/WeakMapConstructor.cpp:

(JSC::WeakMapConstructor::finishCreation):

  • runtime/WeakMapPrototype.cpp:

(JSC::WeakMapPrototype::finishCreation):
(JSC::getWeakMapData):

  • runtime/WeakSetConstructor.cpp:

(JSC::WeakSetConstructor::finishCreation):

  • runtime/WeakSetPrototype.cpp:

(JSC::WeakSetPrototype::finishCreation):
(JSC::getWeakMapData):

  • tools/JSDollarVMPrototype.cpp:

(JSC::codeBlockFromArg):

  • wasm/JSWebAssembly.cpp:

(JSC::JSWebAssembly::finishCreation):

  • wasm/js/JSWebAssemblyHelpers.h:

(JSC::getWasmBufferFromValue):

  • wasm/js/JSWebAssemblyInstance.cpp:

(JSC::JSWebAssemblyInstance::finishCreation):

  • wasm/js/JSWebAssemblyMemory.cpp:

(JSC::JSWebAssemblyMemory::grow):
(JSC::JSWebAssemblyMemory::finishCreation):
(JSC::JSWebAssemblyMemory::destroy):
(JSC::JSWebAssemblyMemory::~JSWebAssemblyMemory): Deleted.

  • wasm/js/JSWebAssemblyMemory.h:
  • wasm/js/JSWebAssemblyModule.cpp:

(JSC::JSWebAssemblyModule::finishCreation):

  • wasm/js/JSWebAssemblyTable.cpp:

(JSC::JSWebAssemblyTable::finishCreation):

  • wasm/js/WebAssemblyFunction.cpp:

(JSC::callWebAssemblyFunction):
(JSC::WebAssemblyFunction::finishCreation):

  • wasm/js/WebAssemblyInstanceConstructor.cpp:

(JSC::constructJSWebAssemblyInstance):

  • wasm/js/WebAssemblyMemoryPrototype.cpp:

(JSC::getMemory):

  • wasm/js/WebAssemblyModulePrototype.cpp:

(JSC::webAssemblyModuleProtoCustomSections):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::finishCreation):

  • wasm/js/WebAssemblyTablePrototype.cpp:

(JSC::getTable):
(JSC::webAssemblyTableProtoFuncSet):

Source/WebCore:

  • Modules/fetch/FetchBody.cpp:

(WebCore::FetchBody::extract):

  • Modules/plugins/QuickTimePluginReplacement.mm:

(WebCore::QuickTimePluginReplacement::installReplacement):

  • bindings/js/IDBBindingUtilities.cpp:

(WebCore::createIDBKeyFromValue):

  • bindings/js/JSCommandLineAPIHostCustom.cpp:

(WebCore::JSCommandLineAPIHost::getEventListeners):
(WebCore::JSCommandLineAPIHost::databaseId):
(WebCore::JSCommandLineAPIHost::storageId):

  • bindings/js/JSCryptoAlgorithmDictionary.cpp:

(WebCore::JSCryptoAlgorithmDictionary::parseAlgorithmIdentifier):
(WebCore::createRsaKeyGenParams):

  • bindings/js/JSCryptoCustom.cpp:

(WebCore::JSCrypto::getRandomValues):

  • bindings/js/JSCryptoOperationData.cpp:

(WebCore::cryptoOperationDataFromJSValue):

  • bindings/js/JSCustomElementInterface.cpp:

(WebCore::constructCustomElementSynchronously):
(WebCore::JSCustomElementInterface::upgradeElement):

  • bindings/js/JSDOMBinding.cpp:

(WebCore::valueToDate):
(WebCore::reportException):
(WebCore::retrieveErrorMessage):

  • bindings/js/JSDOMBinding.h:

(WebCore::castThisValue):
(WebCore::toPossiblySharedArrayBufferView):
(WebCore::toUnsharedArrayBufferView):
(WebCore::toPossiblySharedInt8Array):
(WebCore::toPossiblySharedInt16Array):
(WebCore::toPossiblySharedInt32Array):
(WebCore::toPossiblySharedUint8Array):
(WebCore::toPossiblySharedUint8ClampedArray):
(WebCore::toPossiblySharedUint16Array):
(WebCore::toPossiblySharedUint32Array):
(WebCore::toPossiblySharedFloat32Array):
(WebCore::toPossiblySharedFloat64Array):
(WebCore::toUnsharedInt8Array):
(WebCore::toUnsharedInt16Array):
(WebCore::toUnsharedInt32Array):
(WebCore::toUnsharedUint8Array):
(WebCore::toUnsharedUint8ClampedArray):
(WebCore::toUnsharedUint16Array):
(WebCore::toUnsharedUint32Array):
(WebCore::toUnsharedFloat32Array):
(WebCore::toUnsharedFloat64Array):
(WebCore::toRefNativeArray):

  • bindings/js/JSDOMConstructor.h:

(WebCore::JSDOMConstructorNotConstructable<JSClass>::finishCreation):
(WebCore::JSDOMConstructor<JSClass>::finishCreation):
(WebCore::JSDOMNamedConstructor<JSClass>::finishCreation):
(WebCore::JSBuiltinConstructor<JSClass>::finishCreation):

  • bindings/js/JSDOMConvert.h:

(WebCore::Converter<IDLInterface<T>>::convert):
(WebCore::Converter<IDLXPathNSResolver<T>>::convert):

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSDOMGlobalObject::finishCreation):
(WebCore::JSDOMGlobalObject::scriptExecutionContext):

  • bindings/js/JSDOMIterator.h:

(WebCore::IteratorTraits>::next):
(WebCore::IteratorTraits>::finishCreation):

  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::JSDOMWindowBase::finishCreation):
(WebCore::toJSDOMWindow):

  • bindings/js/JSDOMWindowBase.h:
  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::jsDOMWindowWebKit):
(WebCore::JSDOMWindow::toWrapped):

  • bindings/js/JSDOMWindowShell.cpp:

(WebCore::JSDOMWindowShell::finishCreation):
(WebCore::JSDOMWindowShell::toWrapped):

  • bindings/js/JSDOMWindowShell.h:
  • bindings/js/JSDocumentCustom.cpp:

(WebCore::cachedDocumentWrapper):
(WebCore::JSDocument::createTouchList):

  • bindings/js/JSDynamicDowncast.h:

(WebCore::JSDynamicCastTrait::cast):
(WebCore::JSDynamicCastTrait<JSNode>::cast):
(WebCore::JSDynamicCastTrait<JSElement>::cast):
(WebCore::JSDynamicCastTrait<JSDocument>::cast):
(WebCore::JSDynamicCastTrait<JSEvent>::cast):
(WebCore::jsDynamicDowncast):

  • bindings/js/JSEventListener.cpp:

(WebCore::JSEventListener::handleEvent):

  • bindings/js/JSEventTargetCustom.cpp:

(WebCore::JSEventTarget::toWrapped):
(WebCore::jsEventTargetCast):

  • bindings/js/JSEventTargetCustom.h:

(WebCore::BindingCaller<JSEventTarget>::callOperation):

  • bindings/js/JSExceptionBase.cpp:

(WebCore::toExceptionBase):

  • bindings/js/JSExceptionBase.h:
  • bindings/js/JSInspectorFrontendHostCustom.cpp:

(WebCore::populateContextMenuItems):
(WebCore::JSInspectorFrontendHost::showContextMenu):

  • bindings/js/JSNodeCustom.cpp:

(WebCore::JSNode::insertBefore):
(WebCore::JSNode::replaceChild):
(WebCore::JSNode::removeChild):
(WebCore::JSNode::appendChild):
(WebCore::JSNode::pushEventHandlerScope):

  • bindings/js/JSPluginElementFunctions.cpp:

(WebCore::pluginElementPropertyGetter):

  • bindings/js/JSReadableStreamPrivateConstructors.cpp:

(WebCore::constructJSReadableStreamDefaultReader):

  • bindings/js/JSReadableStreamSourceCustom.cpp:

(WebCore::startReadableStream):
(WebCore::JSReadableStreamSource::start):
(WebCore::pullReadableStream):

  • bindings/js/JSSubtleCryptoCustom.cpp:

(WebCore::toCryptoKey):
(WebCore::jsSubtleCryptoFunctionEncryptPromise):
(WebCore::jsSubtleCryptoFunctionDecryptPromise):
(WebCore::jsSubtleCryptoFunctionSignPromise):
(WebCore::jsSubtleCryptoFunctionVerifyPromise):
(WebCore::jsSubtleCryptoFunctionDigestPromise):
(WebCore::jsSubtleCryptoFunctionWrapKeyPromise):
(WebCore::jsSubtleCryptoFunctionUnwrapKeyPromise):

  • bindings/js/JSTrackCustom.cpp:

(WebCore::toTrack): Deleted.

  • bindings/js/JSTrackCustom.h:
  • bindings/js/JSWebKitSubtleCryptoCustom.cpp:

(WebCore::JSWebKitSubtleCrypto::encrypt):
(WebCore::JSWebKitSubtleCrypto::decrypt):
(WebCore::JSWebKitSubtleCrypto::sign):
(WebCore::JSWebKitSubtleCrypto::verify):
(WebCore::JSWebKitSubtleCrypto::exportKey):
(WebCore::JSWebKitSubtleCrypto::wrapKey):
(WebCore::JSWebKitSubtleCrypto::unwrapKey):

  • bindings/js/JSWorkerGlobalScopeBase.cpp:

(WebCore::JSWorkerGlobalScopeBase::finishCreation):
(WebCore::toJSDedicatedWorkerGlobalScope):
(WebCore::toJSWorkerGlobalScope):

  • bindings/js/JSWorkerGlobalScopeBase.h:
  • bindings/js/JSXMLHttpRequestCustom.cpp:

(WebCore::JSXMLHttpRequest::send):

  • bindings/js/JSXPathNSResolverCustom.cpp:

(WebCore::JSXPathNSResolver::toWrapped):

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::setupModuleScriptHandlers):

  • bindings/js/ScriptModuleLoader.cpp:

(WebCore::ScriptModuleLoader::fetch):
(WebCore::ScriptModuleLoader::evaluate):

  • bindings/js/ScriptState.cpp:

(WebCore::domWindowFromExecState):
(WebCore::scriptExecutionContextFromExecState):

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneSerializer::isArray):
(WebCore::CloneSerializer::isMap):
(WebCore::CloneSerializer::isSet):
(WebCore::CloneSerializer::dumpArrayBufferView):
(WebCore::CloneSerializer::dumpIfTerminal):
(WebCore::CloneSerializer::serialize):
(WebCore::CloneDeserializer::CloneDeserializer):
(WebCore::CloneDeserializer::readArrayBufferView):
(WebCore::CloneDeserializer::readTerminal):
(WebCore::transferArrayBuffers):
(WebCore::SerializedScriptValue::create):

  • bindings/js/StructuredClone.cpp:

(WebCore::structuredCloneArrayBuffer):
(WebCore::structuredCloneArrayBufferView):

  • bindings/js/WorkerScriptController.cpp:

(WebCore::WorkerScriptController::evaluate):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader):
(GenerateOverloadedFunctionOrConstructor):
(GenerateImplementation):

  • bindings/scripts/test/JS/JSInterfaceName.cpp:

(WebCore::JSInterfaceName::finishCreation):
(WebCore::jsInterfaceNameConstructor):
(WebCore::setJSInterfaceNameConstructor):
(WebCore::JSInterfaceName::toWrapped):

  • bindings/scripts/test/JS/JSInterfaceName.h:
  • bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:

(WebCore::JSTestActiveDOMObject::finishCreation):
(WebCore::BindingCaller<JSTestActiveDOMObject>::castForAttribute):
(WebCore::BindingCaller<JSTestActiveDOMObject>::castForOperation):
(WebCore::jsTestActiveDOMObjectConstructor):
(WebCore::setJSTestActiveDOMObjectConstructor):
(WebCore::JSTestActiveDOMObject::toWrapped):

  • bindings/scripts/test/JS/JSTestActiveDOMObject.h:
  • bindings/scripts/test/JS/JSTestCEReactions.cpp:

(WebCore::JSTestCEReactions::finishCreation):
(WebCore::BindingCaller<JSTestCEReactions>::castForAttribute):
(WebCore::BindingCaller<JSTestCEReactions>::castForOperation):
(WebCore::jsTestCEReactionsConstructor):
(WebCore::setJSTestCEReactionsConstructor):
(WebCore::JSTestCEReactions::toWrapped):

  • bindings/scripts/test/JS/JSTestCEReactions.h:
  • bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:

(WebCore::JSTestCEReactionsStringifier::finishCreation):
(WebCore::BindingCaller<JSTestCEReactionsStringifier>::castForAttribute):
(WebCore::BindingCaller<JSTestCEReactionsStringifier>::castForOperation):
(WebCore::jsTestCEReactionsStringifierConstructor):
(WebCore::setJSTestCEReactionsStringifierConstructor):
(WebCore::JSTestCEReactionsStringifier::toWrapped):

  • bindings/scripts/test/JS/JSTestCEReactionsStringifier.h:
  • bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:

(WebCore::JSTestClassWithJSBuiltinConstructor::finishCreation):
(WebCore::jsTestClassWithJSBuiltinConstructorConstructor):
(WebCore::setJSTestClassWithJSBuiltinConstructorConstructor):
(WebCore::JSTestClassWithJSBuiltinConstructor::toWrapped):

  • bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h:
  • bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:

(WebCore::JSTestCustomConstructorWithNoInterfaceObject::finishCreation):
(WebCore::jsTestCustomConstructorWithNoInterfaceObjectConstructor):
(WebCore::setJSTestCustomConstructorWithNoInterfaceObjectConstructor):
(WebCore::JSTestCustomConstructorWithNoInterfaceObject::toWrapped):

  • bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h:
  • bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:

(WebCore::JSTestCustomNamedGetter::finishCreation):
(WebCore::BindingCaller<JSTestCustomNamedGetter>::castForOperation):
(WebCore::jsTestCustomNamedGetterConstructor):
(WebCore::setJSTestCustomNamedGetterConstructor):
(WebCore::JSTestCustomNamedGetter::toWrapped):

  • bindings/scripts/test/JS/JSTestCustomNamedGetter.h:
  • bindings/scripts/test/JS/JSTestDOMJIT.cpp:

(WebCore::JSTestDOMJIT::finishCreation):
(WebCore::BindingCaller<JSTestDOMJIT>::castForAttribute):
(WebCore::BindingCaller<JSTestDOMJIT>::castForOperation):
(WebCore::jsTestDOMJITConstructor):
(WebCore::setJSTestDOMJITConstructor):

  • bindings/scripts/test/JS/JSTestEventConstructor.cpp:

(WebCore::JSTestEventConstructor::finishCreation):
(WebCore::BindingCaller<JSTestEventConstructor>::castForAttribute):
(WebCore::jsTestEventConstructorConstructor):
(WebCore::setJSTestEventConstructorConstructor):

  • bindings/scripts/test/JS/JSTestEventTarget.cpp:

(WebCore::JSTestEventTarget::finishCreation):
(WebCore::BindingCaller<JSTestEventTarget>::castForOperation):
(WebCore::jsTestEventTargetConstructor):
(WebCore::setJSTestEventTargetConstructor):
(WebCore::JSTestEventTarget::toWrapped):

  • bindings/scripts/test/JS/JSTestEventTarget.h:
  • bindings/scripts/test/JS/JSTestException.cpp:

(WebCore::JSTestException::finishCreation):
(WebCore::BindingCaller<JSTestException>::castForAttribute):
(WebCore::jsTestExceptionConstructor):
(WebCore::setJSTestExceptionConstructor):
(WebCore::JSTestException::toWrapped):

  • bindings/scripts/test/JS/JSTestException.h:
  • bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:

(WebCore::JSTestGenerateIsReachable::finishCreation):
(WebCore::jsTestGenerateIsReachableConstructor):
(WebCore::setJSTestGenerateIsReachableConstructor):
(WebCore::JSTestGenerateIsReachable::toWrapped):

  • bindings/scripts/test/JS/JSTestGenerateIsReachable.h:
  • bindings/scripts/test/JS/JSTestGlobalObject.cpp:

(WebCore::JSTestGlobalObject::finishCreation):
(WebCore::BindingCaller<JSTestGlobalObject>::castForAttribute):
(WebCore::BindingCaller<JSTestGlobalObject>::castForOperation):
(WebCore::jsTestGlobalObjectConstructor):
(WebCore::setJSTestGlobalObjectConstructor):
(WebCore::JSTestGlobalObject::toWrapped):

  • bindings/scripts/test/JS/JSTestGlobalObject.h:
  • bindings/scripts/test/JS/JSTestInterface.cpp:

(WebCore::JSTestInterface::finishCreation):
(WebCore::BindingCaller<JSTestInterface>::castForAttribute):
(WebCore::BindingCaller<JSTestInterface>::castForOperation):
(WebCore::jsTestInterfaceConstructor):
(WebCore::setJSTestInterfaceConstructor):
(WebCore::JSTestInterface::toWrapped):

  • bindings/scripts/test/JS/JSTestInterface.h:
  • bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:

(WebCore::JSTestInterfaceLeadingUnderscore::finishCreation):
(WebCore::BindingCaller<JSTestInterfaceLeadingUnderscore>::castForAttribute):
(WebCore::jsTestInterfaceLeadingUnderscoreConstructor):
(WebCore::setJSTestInterfaceLeadingUnderscoreConstructor):
(WebCore::JSTestInterfaceLeadingUnderscore::toWrapped):

  • bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h:
  • bindings/scripts/test/JS/JSTestIterable.cpp:

(WebCore::JSTestIterable::finishCreation):
(WebCore::BindingCaller<JSTestIterable>::castForOperation):
(WebCore::jsTestIterableConstructor):
(WebCore::setJSTestIterableConstructor):
(WebCore::JSTestIterable::toWrapped):

  • bindings/scripts/test/JS/JSTestIterable.h:
  • bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:

(WebCore::JSTestJSBuiltinConstructor::finishCreation):
(WebCore::BindingCaller<JSTestJSBuiltinConstructor>::castForAttribute):
(WebCore::BindingCaller<JSTestJSBuiltinConstructor>::castForOperation):
(WebCore::jsTestJSBuiltinConstructorConstructor):
(WebCore::setJSTestJSBuiltinConstructorConstructor):

  • bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:

(WebCore::JSTestMediaQueryListListener::finishCreation):
(WebCore::BindingCaller<JSTestMediaQueryListListener>::castForOperation):
(WebCore::jsTestMediaQueryListListenerConstructor):
(WebCore::setJSTestMediaQueryListListenerConstructor):
(WebCore::JSTestMediaQueryListListener::toWrapped):

  • bindings/scripts/test/JS/JSTestMediaQueryListListener.h:
  • bindings/scripts/test/JS/JSTestNamedConstructor.cpp:

(WebCore::JSTestNamedConstructor::finishCreation):
(WebCore::jsTestNamedConstructorConstructor):
(WebCore::setJSTestNamedConstructorConstructor):
(WebCore::JSTestNamedConstructor::toWrapped):

  • bindings/scripts/test/JS/JSTestNamedConstructor.h:
  • bindings/scripts/test/JS/JSTestNode.cpp:

(WebCore::JSTestNode::finishCreation):
(WebCore::BindingCaller<JSTestNode>::castForAttribute):
(WebCore::BindingCaller<JSTestNode>::castForOperation):
(WebCore::jsTestNodeConstructor):
(WebCore::setJSTestNodeConstructor):

  • bindings/scripts/test/JS/JSTestObj.cpp:

(WebCore::JSTestObj::finishCreation):
(WebCore::BindingCaller<JSTestObj>::castForAttribute):
(WebCore::BindingCaller<JSTestObj>::castForOperation):
(WebCore::jsTestObjConstructor):
(WebCore::setJSTestObjConstructor):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithDistinguishingUnion):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWith2DistinguishingUnions):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithNonDistinguishingUnion):
(WebCore::jsTestObjPrototypeFunctionOverloadWithNullableUnion):
(WebCore::jsTestObjPrototypeFunctionOverloadWithNullableNonDistinguishingParameter):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction):
(WebCore::JSTestObj::toWrapped):

  • bindings/scripts/test/JS/JSTestObj.h:
  • bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:

(WebCore::JSTestOverloadedConstructorsConstructor::construct):
(WebCore::JSTestOverloadedConstructors::finishCreation):
(WebCore::jsTestOverloadedConstructorsConstructor):
(WebCore::setJSTestOverloadedConstructorsConstructor):
(WebCore::JSTestOverloadedConstructors::toWrapped):

  • bindings/scripts/test/JS/JSTestOverloadedConstructors.h:
  • bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:

(WebCore::JSTestOverloadedConstructorsWithSequence::finishCreation):
(WebCore::jsTestOverloadedConstructorsWithSequenceConstructor):
(WebCore::setJSTestOverloadedConstructorsWithSequenceConstructor):
(WebCore::JSTestOverloadedConstructorsWithSequence::toWrapped):

  • bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h:
  • bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:

(WebCore::JSTestOverrideBuiltins::finishCreation):
(WebCore::BindingCaller<JSTestOverrideBuiltins>::castForOperation):
(WebCore::jsTestOverrideBuiltinsConstructor):
(WebCore::setJSTestOverrideBuiltinsConstructor):
(WebCore::JSTestOverrideBuiltins::toWrapped):

  • bindings/scripts/test/JS/JSTestOverrideBuiltins.h:
  • bindings/scripts/test/JS/JSTestSerialization.cpp:

(WebCore::JSTestSerialization::finishCreation):
(WebCore::BindingCaller<JSTestSerialization>::castForAttribute):
(WebCore::BindingCaller<JSTestSerialization>::castForOperation):
(WebCore::jsTestSerializationConstructor):
(WebCore::setJSTestSerializationConstructor):
(WebCore::JSTestSerialization::toWrapped):

  • bindings/scripts/test/JS/JSTestSerialization.h:
  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:

(WebCore::JSTestSerializedScriptValueInterface::finishCreation):
(WebCore::BindingCaller<JSTestSerializedScriptValueInterface>::castForAttribute):
(WebCore::BindingCaller<JSTestSerializedScriptValueInterface>::castForOperation):
(WebCore::jsTestSerializedScriptValueInterfaceConstructor):
(WebCore::setJSTestSerializedScriptValueInterfaceConstructor):
(WebCore::JSTestSerializedScriptValueInterface::toWrapped):

  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h:
  • bindings/scripts/test/JS/JSTestTypedefs.cpp:

(WebCore::JSTestTypedefs::finishCreation):
(WebCore::BindingCaller<JSTestTypedefs>::castForAttribute):
(WebCore::BindingCaller<JSTestTypedefs>::castForOperation):
(WebCore::jsTestTypedefsConstructor):
(WebCore::setJSTestTypedefsConstructor):
(WebCore::JSTestTypedefs::toWrapped):

  • bindings/scripts/test/JS/JSTestTypedefs.h:
  • bridge/c/CRuntimeObject.cpp:

(JSC::Bindings::CRuntimeObject::finishCreation):

  • bridge/c/c_instance.cpp:

(JSC::Bindings::CRuntimeMethod::finishCreation):
(JSC::Bindings::CInstance::invokeMethod):

  • bridge/c/c_utility.cpp:

(JSC::Bindings::convertValueToNPVariant):

  • bridge/objc/ObjCRuntimeObject.mm:

(JSC::Bindings::ObjCRuntimeObject::finishCreation):

  • bridge/objc/WebScriptObject.mm:

(-[WebScriptObject setValue:forKey:]):
(+[WebScriptObject _convertValueToObjcValue:originRootObject:rootObject:]):

  • bridge/objc/objc_instance.mm:

(ObjCRuntimeMethod::finishCreation):
(ObjcInstance::invokeMethod):

  • bridge/objc/objc_runtime.mm:

(JSC::Bindings::ObjcFallbackObjectImp::finishCreation):
(JSC::Bindings::callObjCFallbackObject):

  • bridge/runtime_array.cpp:

(JSC::RuntimeArray::finishCreation):
(JSC::RuntimeArray::lengthGetter):

  • bridge/runtime_method.cpp:

(JSC::RuntimeMethod::finishCreation):
(JSC::RuntimeMethod::lengthGetter):
(JSC::callRuntimeMethod):

  • bridge/runtime_object.cpp:

(JSC::Bindings::RuntimeObject::finishCreation):
(JSC::Bindings::callRuntimeObject):
(JSC::Bindings::callRuntimeConstructor):

  • css/FontFace.cpp:

(WebCore::FontFace::create):

  • html/HTMLMediaElement.cpp:

(WebCore::controllerJSValue):
(WebCore::HTMLMediaElement::updateCaptionContainer):
(WebCore::HTMLMediaElement::didAddUserAgentShadowRoot):

  • inspector/InspectorController.cpp:

(WebCore::InspectorController::canAccessInspectedScriptState):

  • inspector/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::buildObjectForEventListener):
(WebCore::InspectorDOMAgent::scriptValueAsNode):

  • inspector/WebInjectedScriptHost.cpp:

(WebCore::WebInjectedScriptHost::subtype):
(WebCore::WebInjectedScriptHost::isHTMLAllCollection):

  • inspector/WebInjectedScriptHost.h:

Source/WebKit/mac:

  • DOM/DOM.mm:

(+[DOMNode _nodeFromJSWrapper:]):

  • DOM/DOMUtility.mm:

(createDOMWrapper):

  • DOM/WebDOMOperations.mm:
  • Plugins/Hosted/NetscapePluginInstanceProxy.mm:

(WebKit::getObjectID):
(WebKit::NetscapePluginInstanceProxy::retainLocalObject):
(WebKit::NetscapePluginInstanceProxy::releaseLocalObject):

  • Plugins/Hosted/ProxyInstance.mm:

(WebKit::ProxyRuntimeMethod::finishCreation):
(WebKit::ProxyInstance::invokeMethod):

  • Plugins/Hosted/ProxyRuntimeObject.mm:

(WebKit::ProxyRuntimeObject::finishCreation):

  • WebView/WebFrame.mm:

(-[WebFrame _stringByEvaluatingJavaScriptFromString:withGlobalObject:inScriptWorld:]):

  • WebView/WebView.mm:

(+[WebView _reportException:inContext:]):
(aeDescFromJSValue):
(-[WebView _notificationIDForTesting:]):

Source/WebKit/win:

  • WebFrame.cpp:

(WebFrame::stringByEvaluatingJavaScriptInScriptWorld):

  • WebView.cpp:

(WebView::elementFromJS):

Source/WebKit2:

  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::WebAutomationSessionProxy::elementForNodeHandle):

  • WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:

(WebKit::InjectedBundleNodeHandle::getOrCreate):

  • WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:

(WebKit::InjectedBundleRangeHandle::getOrCreate):

  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::reportException):
(WebKit::InjectedBundle::webNotificationID):
(WebKit::InjectedBundle::createWebDataFromUint8Array):

  • WebProcess/Plugins/Netscape/JSNPMethod.cpp:

(WebKit::JSNPMethod::finishCreation):
(WebKit::callMethod):

  • WebProcess/Plugins/Netscape/JSNPObject.cpp:

(WebKit::JSNPObject::finishCreation):
(WebKit::callNPJSObject):
(WebKit::constructWithConstructor):

  • WebProcess/Plugins/Netscape/NPJSObject.cpp:

(WebKit::NPJSObject::create):

  • WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:

(WebKit::NPRuntimeObjectMap::getOrCreateNPObject):

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::frameForContext):
(WebKit::WebFrame::counterValue):

Tools:

  • DumpRenderTree/TestRunner.cpp:

(setAudioResultCallback):

5:38 PM Changeset in webkit [211246] by mark.lam@apple.com
  • 3 edits
    1 add in trunk

Fix missing exception check in genericTypedArrayViewProtoFuncSet().
https://bugs.webkit.org/show_bug.cgi?id=166812
<rdar://problem/29916672>

Reviewed by Saam Barati.

JSTests:

  • stress/regress-166812.js: Added.

Source/JavaScriptCore:

  • runtime/JSGenericTypedArrayViewPrototypeFunctions.h:

(JSC::genericTypedArrayViewProtoFuncSet):

5:33 PM Changeset in webkit [211245] by commit-queue@webkit.org
  • 15 edits
    3 deletes in trunk

Unreviewed, rolling out r211224.
https://bugs.webkit.org/show_bug.cgi?id=167479

"It was a Kraken performance regression" (Requested by
saamyjoon on #webkit).

Reverted changeset:

"OSR entry: delay outer-loop compilation when at inner-loop"
https://bugs.webkit.org/show_bug.cgi?id=167149
http://trac.webkit.org/changeset/211224

5:14 PM Changeset in webkit [211244] by dino@apple.com
  • 3 edits in trunk/Source/WebCore

WebGL content in Safari sticks to GPU that it was started on, sometimes causing extra battery drain and difficulty interacting with UI
https://bugs.webkit.org/show_bug.cgi?id=167477
<rdar://problem/29956321>

Reviewed by Tim Horton.

We were not implementing the recommended approach to properly handle
GPU switching, causing some contexts to remain on a GPU and slow
down the machine's UI. It also could stop the discrete GPU from
turning off.

Register for CGL's display reconfiguration notification, so that we
can alert any active CGLContexts and cause them to update.

The code change here doesn't lend itself to automated testing because
it is specific to hardware with multiple GPUs, relies on some separate
tools to detect which GPU is active, and an external method of triggering
a GPU switch. It's best tested by the manual workflow in Radar.

  • platform/graphics/GraphicsContext3D.h: Add a macOS-specific update

call.

  • platform/graphics/mac/GraphicsContext3DMac.mm:

(WebCore::displayWasReconfigured): The callback for display reconfigurations.
(WebCore::addActiveContext): Helper to keep track of active contexts, so we
can register/unregister the callback when necessary.
(WebCore::removeActiveContext):
(WebCore::GraphicsContext3D::create): Use the new helpers.
(WebCore::GraphicsContext3D::~GraphicsContext3D):
(WebCore::GraphicsContext3D::updateCGLContext): Tell the CGLContextRef to update.

5:01 PM Changeset in webkit [211243] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit/mac

REGRESSION (r207483): Touch Bar: Lists and BIU Buttons Missing from Touch Bar in HTML Notes
https://bugs.webkit.org/show_bug.cgi?id=167472
<rdar://problem/30149809>

Reviewed by Beth Dakin.

Revision 207483 caused the touch bar to stop showing up in HTML Notes due to -updateTextTouchBar not
initializing the text touch bar and causing -makeTouchBar to return nil while processing a mouse click. The
purpose of bailing out of the update was to prevent the text touch bar from thrashing during a selection drag.
If the text touch bar doesn't exist yet, we don't have to worry about its appearance flickering from a different
previous state, so we should just allow the touch bar to update instead.

  • WebView/WebView.mm:

(-[WebView updateTextTouchBar]):

4:57 PM Changeset in webkit [211242] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Unreviewed, rolling out r210328.
https://bugs.webkit.org/show_bug.cgi?id=167476

Blocking bug is fixed <rdar://problem/29957753> (Requested by
keith_miller on #webkit).

Reverted changeset:

"Disable smooth playhead animation for main content media in
the Touch Bar"
https://bugs.webkit.org/show_bug.cgi?id=166715
http://trac.webkit.org/changeset/210328

4:56 PM Changeset in webkit [211241] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Web Inspector: iOS: Memory timeline shows impossible values for Page size (underflowed)
https://bugs.webkit.org/show_bug.cgi?id=167468
<rdar://problem/30099051>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-26
Reviewed by Andreas Kling.

  • page/cocoa/ResourceUsageThreadCocoa.mm:

(WebCore::vmPageSize):
This value matches the sysctl value we were attempting to access, and is
the most appropriate when dealing with mach APIs, as we are using here.

4:38 PM Changeset in webkit [211240] by jer.noble@apple.com
  • 11 edits
    1 add in trunk

Autoplay muted videos stop playback of any streaming app in the background
https://bugs.webkit.org/show_bug.cgi?id=163993
<rdar://problem/29020431>

Reviewed by Eric Carlson.

Source/WebCore:

Added test in TestWebKitAPI, WebKit1.AudioSessionCategoryIOS.

Previously, we would set the audio session category to "playback" if there was a media-
element-type media session, and if there was a session capable of playing audio. But because
this was an "or" operation, we would incorrectly set the category to "playback" if there was
a video element incapable of rendering audio (due to being muted, without an audio track,
etc.), and also a session capable of producing audio, such as WebAudio.

With this change, this turns into an "and" operation; there must be a media element capable
of rendering audio in order to switch the audio session category to "playback".

Additionally, we no longer cache the value of "canProduceAudio()"; it's queried directly
whenever updateSessionState() is called.

  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::constructCommon):

  • Modules/webaudio/AudioContext.h:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::insertedInto):
(WebCore::HTMLMediaElement::loadResource):
(WebCore::HTMLMediaElement::setMuted):
(WebCore::HTMLMediaElement::mediaPlayerCurrentPlaybackTargetIsWirelessChanged):
(WebCore::HTMLMediaElement::mediaPlayerCharacteristicChanged):
(WebCore::HTMLMediaElement::clearMediaPlayer):
(WebCore::HTMLMediaElement::mediaPlayerCurrentPlaybackTargetIsWirelessChanged):
(WebCore::HTMLMediaElement::presentationType):
(WebCore::HTMLMediaElement::characteristics):
(WebCore::HTMLMediaElement::canProduceAudio):

  • html/HTMLMediaElement.h:
  • platform/audio/PlatformMediaSession.cpp:

(WebCore::PlatformMediaSession::activeAudioSessionRequired):
(WebCore::PlatformMediaSession::canProduceAudio):
(WebCore::PlatformMediaSession::canProduceAudioChanged):
(WebCore::PlatformMediaSession::setCanProduceAudio): Deleted.

  • platform/audio/PlatformMediaSession.h:

(WebCore::PlatformMediaSessionClient::canProduceAudio):
(WebCore::PlatformMediaSession::canProduceAudio): Deleted.

  • platform/audio/cocoa/MediaSessionManagerCocoa.cpp:

(PlatformMediaSessionManager::updateSessionState):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/ios/AudioSessionCategoryIOS.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/ios/video-with-muted-audio-and-webaudio.html: Added.
4:14 PM Changeset in webkit [211239] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

Fix CPU usage diagnostic logging in PerActivityStateCPUUsageSampler
https://bugs.webkit.org/show_bug.cgi?id=167471
<rdar://problem/30221723>

Reviewed by Alex Christensen.

Fix CPU usage diagnostic logging in PerActivityStateCPUUsageSampler
to use numeric values for logDiagnosticMessageWithValue().

  • UIProcess/PerActivityStateCPUUsageSampler.cpp:

(WebKit::PerActivityStateCPUUsageSampler::loggingTimerFired):
(WebKit::loggingKeyForCPUUsage): Deleted.

4:11 PM Changeset in webkit [211238] by fpizlo@apple.com
  • 6 edits in trunk/Source/WebCore

EventTarget should visit the JSEventListeners using visitAdditionalChildren
https://bugs.webkit.org/show_bug.cgi?id=167462

Reviewed by Michael Saboff.

No new tests because this is already caught by existing testing. This would show up as ASSERTs
in debug, and we suspect it might be at fault for null deref crashes.

Previously, EventTarget would have its event listeners visited by its subclasses' visitChildren
methods. Every subclass of EventTarget would call EventTarget's visitJSEventListeners. For
example, this means that if JSFoo has seven classes between it and JSEventTarget in the JSCell
class hierarchy, then JSFoo::visitChildren would end up calling visitJSEventListeners seven extra
times.

Also, the weird way that visitJSEventListeners was called meant that it was not part of the GC's
output constraint processing. This meant that it would not be called when the GC tried to
terminate. So, if something about the event listener changes during a GC cycle, the GC would
potentially fail to mark one of the references.

Both problems can be solved by simply moving the call to visitJSEventListeners into
visitAdditionalChildren.

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::visitAdditionalChildren):

  • bindings/js/JSEventTargetCustom.cpp:

(WebCore::JSEventTarget::visitAdditionalChildren):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):

  • dom/EventTarget.idl:
3:50 PM Changeset in webkit [211237] by sbarati@apple.com
  • 46 edits
    2 copies
    1 move
    1 delete in trunk/Source

Harden how the compiler references GC objects
https://bugs.webkit.org/show_bug.cgi?id=167277
<rdar://problem/30179506>

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

Since r210971, the DFG/FTL will flash safepoints before
each phase. This means that there are more opportunities for
a GC to happen while the compiler is running. Because of this,
the compiler must keep track of all the heap pointers that are part
of the Graph data structure. To accomplish this, I've designed
a new type called RegisteredStructure that can only be constructed
after the Graph becomes aware of its underlying Structure*. I
designed this new type to have the type system in C++ help us catch
errors where we're not informing the graph/plan of a heap pointer.
I've made it a compile error to create an OpInfo with a pointer
T* where T inherits from HeapCell. This encourages an OpInfo
to be created with either a FrozenValue* or a RegisteredStructure.
I've added similar compile time assertions for TrustedImmPtr in DFG::SpeculativeJIT
and FTL::Output::constIntPtr. These static asserts don't save us from all bad
programs because there are ways to write code that's incorrect that compiles,
but the new types do help us ensure that the most obvious way of writing the
code is correct.

The reason this patch is so big is that I've strung RegisteredStructure and
RegisteredStructureSet through the entire DFG/FTL.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::determineLiveness):

  • bytecode/StructureSet.cpp:

(JSC::StructureSet::filter): Deleted.
(JSC::StructureSet::filterArrayModes): Deleted.
(JSC::StructureSet::speculationFromStructures): Deleted.
(JSC::StructureSet::arrayModesFromStructures): Deleted.
(JSC::StructureSet::validateReferences): Deleted.

  • bytecode/StructureSet.h:
  • dfg/DFGAbstractInterpreter.h:

(JSC::DFG::AbstractInterpreter::filter):

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::booleanResult):
(JSC::DFG::isToThisAnIdentity):
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
(JSC::DFG::AbstractInterpreter<AbstractStateType>::observeTransition):
(JSC::DFG::AbstractInterpreter<AbstractStateType>::filter):

  • dfg/DFGAbstractValue.cpp:

(JSC::DFG::AbstractValue::set):
(JSC::DFG::AbstractValue::setType):
(JSC::DFG::AbstractValue::mergeOSREntryValue):
(JSC::DFG::AbstractValue::filter):
(JSC::DFG::AbstractValue::changeStructure):
(JSC::DFG::AbstractValue::contains):

  • dfg/DFGAbstractValue.h:

(JSC::DFG::AbstractValue::observeTransition):
(JSC::DFG::AbstractValue::TransitionObserver::TransitionObserver):

  • dfg/DFGArgumentsEliminationPhase.cpp:
  • dfg/DFGArrayMode.cpp:

(JSC::DFG::ArrayMode::alreadyChecked):

  • dfg/DFGArrayifySlowPathGenerator.h:

(JSC::DFG::ArrayifySlowPathGenerator::ArrayifySlowPathGenerator):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleConstantInternalFunction):
(JSC::DFG::ByteCodeParser::load):
(JSC::DFG::ByteCodeParser::handleGetById):
(JSC::DFG::ByteCodeParser::handlePutById):
(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry):

  • dfg/DFGCallArrayAllocatorSlowPathGenerator.h:

(JSC::DFG::CallArrayAllocatorSlowPathGenerator::CallArrayAllocatorSlowPathGenerator):
(JSC::DFG::CallArrayAllocatorWithVariableSizeSlowPathGenerator::CallArrayAllocatorWithVariableSizeSlowPathGenerator):

  • dfg/DFGCallCreateDirectArgumentsSlowPathGenerator.h:

(JSC::DFG::CallCreateDirectArgumentsSlowPathGenerator::CallCreateDirectArgumentsSlowPathGenerator):

  • dfg/DFGCommonData.cpp:

(JSC::DFG::CommonData::notifyCompilingStructureTransition):

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants):
(JSC::DFG::ConstantFoldingPhase::emitGetByOffset):
(JSC::DFG::ConstantFoldingPhase::emitPutByOffset):
(JSC::DFG::ConstantFoldingPhase::addBaseCheck):
(JSC::DFG::ConstantFoldingPhase::addStructureTransitionCheck):

  • dfg/DFGDesiredWeakReferences.cpp:

(JSC::DFG::DesiredWeakReferences::reallyAdd):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::checkArray):

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::Graph):
(JSC::DFG::Graph::dump):
(JSC::DFG::Graph::tryGetConstantProperty):
(JSC::DFG::Graph::inferredValueForProperty):
(JSC::DFG::Graph::visitChildren):
(JSC::DFG::Graph::freeze):
(JSC::DFG::Graph::registerStructure):
(JSC::DFG::Graph::assertIsRegistered):

  • dfg/DFGGraph.h:

(JSC::DFG::Graph::registerStructure):
(JSC::DFG::Graph::addStructureSet):

  • dfg/DFGJITCompiler.h:

(JSC::DFG::JITCompiler::branchWeakStructure):

  • dfg/DFGMultiGetByOffsetData.cpp:

(JSC::DFG::MultiGetByOffsetCase::dumpInContext):

  • dfg/DFGMultiGetByOffsetData.h:

(JSC::DFG::MultiGetByOffsetCase::MultiGetByOffsetCase):
(JSC::DFG::MultiGetByOffsetCase::set):

  • dfg/DFGNode.cpp:

(JSC::DFG::Node::convertToPutStructureHint):

  • dfg/DFGNode.h:

(JSC::DFG::Node::convertToCheckStructure):
(JSC::DFG::Node::structureSet):
(JSC::DFG::Node::structure):
(JSC::DFG::Node::OpInfoWrapper::OpInfoWrapper):
(JSC::DFG::Node::OpInfoWrapper::operator=):
(JSC::DFG::Node::OpInfoWrapper::asRegisteredStructure):

  • dfg/DFGObjectAllocationSinkingPhase.cpp:
  • dfg/DFGOpInfo.h:

(JSC::DFG::OpInfo::OpInfo):

  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::compileInThreadImpl):
(JSC::DFG::Plan::finalizeWithoutNotifyingCallback):

  • dfg/DFGRegisteredStructure.h: Added.

(JSC::DFG::RegisteredStructure::get):
(JSC::DFG::RegisteredStructure::operator->):
(JSC::DFG::RegisteredStructure::operator==):
(JSC::DFG::RegisteredStructure::operator!=):
(JSC::DFG::RegisteredStructure::operator bool):
(JSC::DFG::RegisteredStructure::RegisteredStructure):
(JSC::DFG::RegisteredStructure::createPrivate):

  • dfg/DFGRegisteredStructureSet.cpp: Added.

(JSC::DFG::RegisteredStructureSet::filter):
(JSC::DFG::RegisteredStructureSet::filterArrayModes):
(JSC::DFG::RegisteredStructureSet::speculationFromStructures):
(JSC::DFG::RegisteredStructureSet::arrayModesFromStructures):
(JSC::DFG::RegisteredStructureSet::validateReferences):

  • dfg/DFGRegisteredStructureSet.h: Added.

(JSC::DFG::RegisteredStructureSet::RegisteredStructureSet):
(JSC::DFG::RegisteredStructureSet::onlyStructure):
(JSC::DFG::RegisteredStructureSet::toStructureSet):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::emitAllocateRawObject):
(JSC::DFG::SpeculativeJIT::emitGetCallee):
(JSC::DFG::SpeculativeJIT::silentFill):
(JSC::DFG::SpeculativeJIT::checkArray):
(JSC::DFG::SpeculativeJIT::compileGetByValOnString):
(JSC::DFG::SpeculativeJIT::compileFromCharCode):
(JSC::DFG::SpeculativeJIT::compileDoubleRep):
(JSC::DFG::compileClampDoubleToByte):
(JSC::DFG::SpeculativeJIT::compileMakeRope):
(JSC::DFG::SpeculativeJIT::compileArithRounding):
(JSC::DFG::SpeculativeJIT::compileNewFunctionCommon):
(JSC::DFG::SpeculativeJIT::compileNewFunction):
(JSC::DFG::SpeculativeJIT::compileCreateActivation):
(JSC::DFG::SpeculativeJIT::compileCreateDirectArguments):
(JSC::DFG::SpeculativeJIT::compileCreateScopedArguments):
(JSC::DFG::SpeculativeJIT::compileCreateClonedArguments):
(JSC::DFG::SpeculativeJIT::compileSpread):
(JSC::DFG::SpeculativeJIT::compileArraySlice):
(JSC::DFG::SpeculativeJIT::compileTypeOf):
(JSC::DFG::SpeculativeJIT::compileAllocatePropertyStorage):
(JSC::DFG::SpeculativeJIT::compileReallocatePropertyStorage):
(JSC::DFG::SpeculativeJIT::compileToStringOrCallStringConstructorOnCell):
(JSC::DFG::SpeculativeJIT::compileNewTypedArray):
(JSC::DFG::SpeculativeJIT::speculateStringOrStringObject):
(JSC::DFG::SpeculativeJIT::compileMaterializeNewObject):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::TrustedImmPtr::TrustedImmPtr):
(JSC::DFG::SpeculativeJIT::TrustedImmPtr::weakPointer):
(JSC::DFG::SpeculativeJIT::TrustedImmPtr::operator MacroAssembler::TrustedImmPtr):
(JSC::DFG::SpeculativeJIT::TrustedImmPtr::asIntptr):
(JSC::DFG::SpeculativeJIT::callOperation):
(JSC::DFG::SpeculativeJIT::emitAllocateDestructibleObject):
(JSC::DFG::SpeculativeJIT::speculateStringObjectForStructure):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNullOrUndefined):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNullOrUndefined):
(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::fillSpeculateCell):
(JSC::DFG::SpeculativeJIT::compileObjectOrOtherLogicalNot):
(JSC::DFG::SpeculativeJIT::emitObjectOrOtherBranch):
(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::compileAllocateNewArrayWithSize):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNullOrUndefined):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNullOrUndefined):
(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::compileObjectOrOtherLogicalNot):
(JSC::DFG::SpeculativeJIT::emitObjectOrOtherBranch):
(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::compileAllocateNewArrayWithSize):

  • dfg/DFGStrengthReductionPhase.cpp:

(JSC::DFG::StrengthReductionPhase::handleNode):

  • dfg/DFGStructureAbstractValue.cpp:

(JSC::DFG::StructureAbstractValue::assertIsRegistered):
(JSC::DFG::StructureAbstractValue::clobber):
(JSC::DFG::StructureAbstractValue::observeTransition):
(JSC::DFG::StructureAbstractValue::observeTransitions):
(JSC::DFG::StructureAbstractValue::add):
(JSC::DFG::StructureAbstractValue::merge):
(JSC::DFG::StructureAbstractValue::mergeNotTop):
(JSC::DFG::StructureAbstractValue::filter):
(JSC::DFG::StructureAbstractValue::filterSlow):
(JSC::DFG::StructureAbstractValue::filterClassInfoSlow):
(JSC::DFG::StructureAbstractValue::contains):
(JSC::DFG::StructureAbstractValue::isSubsetOf):
(JSC::DFG::StructureAbstractValue::isSupersetOf):
(JSC::DFG::StructureAbstractValue::overlaps):
(JSC::DFG::StructureAbstractValue::isSubClassOf):
(JSC::DFG::StructureAbstractValue::dumpInContext):

  • dfg/DFGStructureAbstractValue.h:

(JSC::DFG::StructureAbstractValue::StructureAbstractValue):
(JSC::DFG::StructureAbstractValue::operator=):
(JSC::DFG::StructureAbstractValue::set):
(JSC::DFG::StructureAbstractValue::toStructureSet):
(JSC::DFG::StructureAbstractValue::at):
(JSC::DFG::StructureAbstractValue::operator[]):
(JSC::DFG::StructureAbstractValue::onlyStructure):

  • dfg/DFGStructureRegistrationPhase.cpp:

(JSC::DFG::StructureRegistrationPhase::StructureRegistrationPhase): Deleted.
(JSC::DFG::StructureRegistrationPhase::run): Deleted.
(JSC::DFG::StructureRegistrationPhase::registerStructures): Deleted.
(JSC::DFG::StructureRegistrationPhase::registerStructure): Deleted.
(JSC::DFG::StructureRegistrationPhase::assertAreRegistered): Deleted.
(JSC::DFG::StructureRegistrationPhase::assertIsRegistered): Deleted.
(JSC::DFG::performStructureRegistration): Deleted.

  • dfg/DFGStructureRegistrationPhase.h:
  • dfg/DFGTransition.cpp:

(JSC::DFG::Transition::dumpInContext):

  • dfg/DFGTransition.h:

(JSC::DFG::Transition::Transition):

  • dfg/DFGTypeCheckHoistingPhase.cpp:

(JSC::DFG::TypeCheckHoistingPhase::noticeStructureCheck):
(JSC::DFG::TypeCheckHoistingPhase::noticeStructureCheckAccountingForArrayMode):

  • dfg/DFGValidate.cpp:
  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::lower):
(JSC::FTL::DFG::LowerDFGToB3::compileCallObjectConstructor):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckStructure):
(JSC::FTL::DFG::LowerDFGToB3::compilePutStructure):
(JSC::FTL::DFG::LowerDFGToB3::compileArraySlice):
(JSC::FTL::DFG::LowerDFGToB3::compileCreateActivation):
(JSC::FTL::DFG::LowerDFGToB3::compileNewFunction):
(JSC::FTL::DFG::LowerDFGToB3::compileCreateDirectArguments):
(JSC::FTL::DFG::LowerDFGToB3::compileCreateRest):
(JSC::FTL::DFG::LowerDFGToB3::compileNewArray):
(JSC::FTL::DFG::LowerDFGToB3::compileNewArrayWithSpread):
(JSC::FTL::DFG::LowerDFGToB3::compileNewArrayBuffer):
(JSC::FTL::DFG::LowerDFGToB3::compileNewArrayWithSize):
(JSC::FTL::DFG::LowerDFGToB3::compileNewTypedArray):
(JSC::FTL::DFG::LowerDFGToB3::compileAllocatePropertyStorage):
(JSC::FTL::DFG::LowerDFGToB3::compileReallocatePropertyStorage):
(JSC::FTL::DFG::LowerDFGToB3::compileMultiGetByOffset):
(JSC::FTL::DFG::LowerDFGToB3::compileMultiPutByOffset):
(JSC::FTL::DFG::LowerDFGToB3::compileGetMapBucket):
(JSC::FTL::DFG::LowerDFGToB3::compileOverridesHasInstance):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckStructureImmediate):
(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeNewObject):
(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeCreateActivation):
(JSC::FTL::DFG::LowerDFGToB3::compileNewRegexp):
(JSC::FTL::DFG::LowerDFGToB3::compileLogShadowChickenTail):
(JSC::FTL::DFG::LowerDFGToB3::checkStructure):
(JSC::FTL::DFG::LowerDFGToB3::checkInferredType):
(JSC::FTL::DFG::LowerDFGToB3::allocateObject):
(JSC::FTL::DFG::LowerDFGToB3::allocateVariableSizedObject):
(JSC::FTL::DFG::LowerDFGToB3::allocateJSArray):
(JSC::FTL::DFG::LowerDFGToB3::allocateUninitializedContiguousJSArray):
(JSC::FTL::DFG::LowerDFGToB3::boolify):
(JSC::FTL::DFG::LowerDFGToB3::equalNullOrUndefined):
(JSC::FTL::DFG::LowerDFGToB3::lowCell):
(JSC::FTL::DFG::LowerDFGToB3::speculateStringObjectForStructureID):
(JSC::FTL::DFG::LowerDFGToB3::weakPointer):
(JSC::FTL::DFG::LowerDFGToB3::frozenPointer):
(JSC::FTL::DFG::LowerDFGToB3::weakStructureID):
(JSC::FTL::DFG::LowerDFGToB3::weakStructure):
(JSC::FTL::DFG::LowerDFGToB3::crash):

  • ftl/FTLOutput.h:

(JSC::FTL::Output::weakPointer):
(JSC::FTL::Output::constIntPtr):

Source/WTF:

I made TinyPtrSet use bitwise_cast instead of static_cast
for its singleEntry() function so that it can work on pointer-like
types just as it can on actual pointer types.

An example of where this matters is when you have TinyPtrSet<T>
where T is defined to be a struct which wraps a pointer, e.g:

struct T {

void* m_pointer;

}

  • wtf/TinyPtrSet.h:

(WTF::TinyPtrSet::singleEntry):

3:50 PM Changeset in webkit [211236] by aestes@apple.com
  • 4 edits in trunk/Source/WebCore

[QuickLook] Create temporary files with NSFileProtectionCompleteUnlessOpen
https://bugs.webkit.org/show_bug.cgi?id=167455
<rdar://problem/12499118>

Reviewed by David Kilzer.

Add the NSFileProtectionKey attribute with value NSFileProtectionCompleteUnlessOpen to
temporary directories created for QuickLook files. Also:

  1. Stop calling -[NSFileManager _web_pathWithUniqueFilenameForPath:], since the temporary

directory is already unique and only one file will be placed inside it.

  1. Create the temporary file with -[NSFileManager _web_createFileAtPath:contents:attributes:]

instead of with -[NSFileManager _web_createFileAtPathWithIntermediateDirectories:contents:attributes:directoryAttributes:],
since the intermediate directories were already created by createTemporaryDirectory().

  1. Explicitly set the temporary directory's attributes with

-[NSFileManager setAttributes:ofItemAtPath:error:].

  1. Append the lastPathComponent of fileName to downloadDirectory to ensure fileName isn't

really a relative path.

  • loader/ios/QuickLook.h: Stopped declaring QLFileAttributes() and QLDirectoryAttributes().
  • loader/ios/QuickLook.mm:

(WebCore::temporaryFileAttributes): Renamed from QLFileAttributes().
(WebCore::temporaryDirectoryAttributes): Renamed from QLDirectoryAttributes().
(WebCore::createTemporaryFileForQuickLook):
(WebCore::QLFileAttributes): Deleted.
(WebCore::QLDirectoryAttributes): Deleted.

  • platform/spi/cocoa/NSFileManagerSPI.h: Declared -_web_createFileAtPath:contents:attributes:

and removed declarations for -_web_createFileAtPathWithIntermediateDirectories:contents:attributes:directoryAttributes:
and -_web_pathWithUniqueFilenameForPath:

3:47 PM Changeset in webkit [211235] by commit-queue@webkit.org
  • 8 edits in trunk

Pointer lock events should be delivered directly to the target element
https://bugs.webkit.org/show_bug.cgi?id=167134

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-01-26
Reviewed by Jon Lee.

Source/WebCore:

pointer-lock/mouse-event-delivery.html: Enabled for mac, added wheel event tests.

When pointer is locked on an element, route mouse events directly to the target element, instead of
doing the normal event disptach.

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleMousePressEvent):
(WebCore::EventHandler::handleMouseDoubleClickEvent):
(WebCore::EventHandler::handleMouseMoveEvent):
(WebCore::EventHandler::handleMouseReleaseEvent):
(WebCore::EventHandler::handleMouseForceEvent):
(WebCore::EventHandler::handleWheelEvent):

  • page/PointerLockController.cpp:

(WebCore::PointerLockController::isLocked): Added.
(WebCore::PointerLockController::dispatchLockedWheelEvent): Added.

  • page/PointerLockController.h:

LayoutTests:

The pointer-lock/mouse-event-delivery.html test is modified to explicitly move the mouse pointer to a valid
location before sending mouse actions. Without this, the test infrastructure doesn't know that the pointer
is over the web view and doesn't deliver events.

Added code to test for wheel events.

  • platform/mac/TestExpectations: enabled test.
  • pointer-lock/mouse-event-delivery.html:
  • pointer-lock/mouse-event-delivery-expected.txt:
3:47 PM Changeset in webkit [211234] by commit-queue@webkit.org
  • 4 edits in trunk

Request pointer unlock on navigation and re-enable pointer-lock tests for WK2.
https://bugs.webkit.org/show_bug.cgi?id=166765

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-01-26
Reviewed by Tim Horton.

Source/WebKit2:

When the main frame is load is committed, pointer lock should end.
This resets pointer lock state between tests and allows tests to succeed.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didCommitLoadForFrame):

LayoutTests:

Enabled pointer lock tests for wk2 now that pointer lock state is being reset after each test.

  • platform/mac-wk2/TestExpectations:
3:33 PM Changeset in webkit [211233] by Chris Dumez
  • 5 edits in trunk/Source/WebCore

Fix CPU / Memory diagnostic logging in PerformanceMonitor
https://bugs.webkit.org/show_bug.cgi?id=167469
<rdar://problem/30220959>

Reviewed by Alex Christensen.

Fix CPU / Memory diagnostic logging in PerformanceMonitor to use logDiagnosticMessage()
instead of logDiagnosticMessageWithValue(). logDiagnosticMessageWithValue() should only
be used with numeric values but we already take care of the bucketing on our side.

  • page/DiagnosticLoggingClient.h:
  • page/DiagnosticLoggingKeys.cpp:

(WebCore::DiagnosticLoggingKeys::postPageBackgroundingCPUUsageKey):
(WebCore::DiagnosticLoggingKeys::postPageBackgroundingMemoryUsageKey):
(WebCore::DiagnosticLoggingKeys::postPageLoadCPUUsageKey):
(WebCore::DiagnosticLoggingKeys::postPageLoadMemoryUsageKey):
(WebCore::DiagnosticLoggingKeys::foregroundCPUUsageToDiagnosticLoggingKey):
(WebCore::DiagnosticLoggingKeys::backgroundCPUUsageToDiagnosticLoggingKey):
(WebCore::DiagnosticLoggingKeys::postPageBackgroundingKey): Deleted.
(WebCore::DiagnosticLoggingKeys::postPageLoadKey): Deleted.
(WebCore::DiagnosticLoggingKeys::memoryUsageKey): Deleted.

  • page/DiagnosticLoggingKeys.h:
  • page/PerformanceMonitor.cpp:

(WebCore::PerformanceMonitor::measurePostLoadCPUUsage):
(WebCore::PerformanceMonitor::measurePostLoadMemoryUsage):
(WebCore::PerformanceMonitor::measurePostBackgroundingMemoryUsage):
(WebCore::PerformanceMonitor::measurePostBackgroundingCPUUsage):

2:34 PM Changeset in webkit [211232] by Ryan Haddad
  • 2 edits in trunk/Tools

Disable API test WebKit2.WebsitePoliciesPlayAfterPreventedAutoplay.
https://bugs.webkit.org/show_bug.cgi?id=167466

Unreviewed test gardening.

  • TestWebKitAPI/Tests/WebKit2Cocoa/WebsitePolicies.mm:

(TEST):

2:10 PM Changeset in webkit [211231] by beidson@apple.com
  • 2 edits in trunk/Source/WebCore

Gamepads: Some DPads are still not exposed in the HID backend.
rdar://problem/30217518 and https://bugs.webkit.org/show_bug.cgi?id=167465

Reviewed by Alex Christensen.

No new tests (Currently unable to test HID backend directly)

  • platform/gamepad/mac/HIDGamepad.cpp:

(WebCore::HIDGamepad::maybeAddButton): Allow GenericDesktop paged elements that are DPads to be buttons.

1:44 PM Changeset in webkit [211230] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Unreviewed, rolling out r210095.
https://bugs.webkit.org/show_bug.cgi?id=167464

broke tiling on mac (Requested by thorton on #webkit).

Reverted changeset:

"TileGrid revalidates tiles twice during flush, first with
wrong visible rect"
https://bugs.webkit.org/show_bug.cgi?id=166406
http://trac.webkit.org/changeset/210095

1:34 PM Changeset in webkit [211229] by Chris Dumez
  • 6 edits in trunk/Source

Fix WebGL diagnostic logging
https://bugs.webkit.org/show_bug.cgi?id=167463
<rdar://problem/30216981>

Reviewed by Alex Christensen.

Fix WebGL diagnostic logging so that it no longer uses logDiagnosticMessageWithValue().
This is because the value apparently needs to be numeric on Mac.

Source/WebCore:

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::checkForContextLossHandling):

  • page/DiagnosticLoggingKeys.cpp:

(WebCore::DiagnosticLoggingKeys::pageHandlesWebGLContextLossKey):
(WebCore::WebCore::DiagnosticLoggingKeys::webGLStateKey):
(WebCore::DiagnosticLoggingKeys::stateKey): Deleted.
(WebCore::DiagnosticLoggingKeys::handlesContextLossKey): Deleted.
(WebCore::WebCore::DiagnosticLoggingKeys::webGLKey): Deleted.

  • page/DiagnosticLoggingKeys.h:

Source/WebKit2:

  • UIProcess/HighPerformanceGraphicsUsageSampler.cpp:

(WebKit::HighPerformanceGraphicsUsageSampler::timerFired):

1:19 PM Changeset in webkit [211228] by Alan Bujtas
  • 6 edits
    4 adds in trunk

Simple line layout: Add support for -webkit-hyphenate-limit-lines
https://bugs.webkit.org/show_bug.cgi?id=167446
<rdar://problem/30194030>

Reviewed by Antti Koivisto.

Source/WebCore:

Now we can set the limit on the number of lines that a word can split across through hyphenation.

Tests: fast/text/simple-line-layout-hyphen-limit-lines.html

fast/text/simple-line-layout-hyphen-limit-lines2.html

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseForStyle):
(WebCore::SimpleLineLayout::splitFragmentToFitLine):
(WebCore::SimpleLineLayout::printReason):

  • rendering/SimpleLineLayoutTextFragmentIterator.cpp:

(WebCore::SimpleLineLayout::TextFragmentIterator::Style::Style):

  • rendering/SimpleLineLayoutTextFragmentIterator.h:

(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::TextFragment):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::wrappingWithHyphenCounter):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::splitWithHyphen): The right side of the split has +1 on the wrapping counter.

LayoutTests:

  • fast/text/simple-line-layout-hyphen-limit-lines-expected.html: Added.
  • fast/text/simple-line-layout-hyphen-limit-lines.html: Added.
  • fast/text/simple-line-layout-hyphen-limit-lines2-expected.html: Added.
  • fast/text/simple-line-layout-hyphen-limit-lines2.html: Added.
  • platform/mac/fast/text/hyphenate-limit-lines-expected.txt: progression
12:58 PM Changeset in webkit [211227] by Wenson Hsieh
  • 10 edits in trunk/Source

Add support for recognizing data interaction gestures in WebKit2
https://bugs.webkit.org/show_bug.cgi?id=167444

Reviewed by Beth Dakin.

Source/WebCore:

Minor tweaks to pasteboard code to support data interaction.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/PlatformPasteboard.h:
  • platform/ios/PasteboardIOS.mm:

(WebCore::Pasteboard::read):

  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::PlatformPasteboard::PlatformPasteboard):

If the pasteboard is the special data interaction type, use the shared item provider pasteboard; otherwise,
fall back to the general pasteboard.

(WebCore::PlatformPasteboard::getTypes):

Actually populate the list of available types using available pasteboardTypes.

(WebCore::PlatformPasteboard::write):

Add UTF8 plaintext type (kUTTypeUTF8PlainText) when vending data representations of rich text.

  • platform/ios/WebItemProviderPasteboard.mm:

(-[WebItemProviderPasteboard setItems:]):
(-[WebItemProviderPasteboard dataForPasteboardType:inItemSet:]):
(-[WebItemProviderPasteboard valuesForPasteboardType:inItemSet:]):

Move off of deprecated methods when retrieving and supplying data to the item provider pasteboard.

  • platform/spi/ios/UIKitSPI.h:

Source/WebKit2:

Adds a new data interaction gesture recognizer, responsible for determining when to begin data interaction. This
is a new long press gesture recognizer that fires simultaneously with the existing long press gesture
recognizers (for performing long-press actions, and for showing the tap highlight).

Also tweaks logic for determining whether selection gesture recognizers should fire to account for data
interaction -- in particular, we don't want selection gesture recognizers to cause the current selection to
change while data interaction is possible. See -hasSelectablePositionAtPoint and -pointIsInAssistedNode for
more details.

  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::didPerformDataInteractionControllerOperation):
(WebKit::PageClientImpl::startDataInteractionWithImage):

  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _createAndConfigureLongPressGestureRecognizer]):
(-[WKContentView setupInteraction]):
(-[WKContentView cleanupInteraction]):
(-[WKContentView _removeDefaultGestureRecognizers]):
(-[WKContentView _addDefaultGestureRecognizers]):
(-[WKContentView resignFirstResponder]):
(-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
(-[WKContentView gestureRecognizerShouldBegin:]):
(-[WKContentView hasSelectablePositionAtPoint:]):
(-[WKContentView pointIsInDataInteractionContent:]):
(-[WKContentView pointIsInAssistedNode:]):

12:41 PM Changeset in webkit [211226] by commit-queue@webkit.org
  • 17 edits
    3 adds in trunk

Notify clients when the user plays media otherwise prevented from autoplaying
https://bugs.webkit.org/show_bug.cgi?id=167390

Patch by Matt Rajca <mrajca@apple.com> on 2017-01-26
Reviewed by Alex Christensen.

Source/WebCore:

The API is tested.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::playInternal):

  • page/ChromeClient.h:

Source/WebKit2:

  • UIProcess/API/APIUIClient.h:

(API::UIClient::didPlayMediaPreventedFromPlayingWithoutUserGesture):

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageUIClient):

  • UIProcess/API/C/WKPageUIClient.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didPlayMediaPreventedFromPlayingWithoutUserGesture):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::didPlayMediaPreventedFromPlayingWithoutUserGesture):

  • WebProcess/WebCoreSupport/WebChromeClient.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2/autoplay-with-controls.html: Added.
  • TestWebKitAPI/Tests/WebKit2/js-play-with-controls.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/WebsitePolicies.mm:

(didPlayMediaPreventedFromPlayingWithoutUserGesture):
(TEST):

  • TestWebKitAPI/cocoa/TestWKWebView.h:
  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(-[TestWKWebViewHostWindow _mouseUpAtPoint:]):
(-[TestWKWebView waitForLoad]):
(-[TestWKWebView mouseUpAtPoint:]):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::createOtherPage):
(WTR::TestController::createWebViewWithOptions):

12:39 PM Changeset in webkit [211225] by eocanha@igalia.com
  • 2 edits in trunk/Source/WebCore

[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.

11:52 AM Changeset in webkit [211224] by jfbastien@apple.com
  • 15 edits
    1 copy
    2 adds in trunk

OSR entry: delay outer-loop compilation when at inner-loop
https://bugs.webkit.org/show_bug.cgi?id=167149

Reviewed by Filip Pizlo.

JSTests:

Try to be mean to OSR entry by using nested loops, and having
non-int32 types or truly varying types.

Mandelbrot currently never tiers up to FTL because it exits too
many times before this. That shouldn't happen because it's just
numbers and int32s. I'll file a bug to fix this.

  • microbenchmarks/mandelbrot.js: Added.

(mandelbrot):
(printable):

  • microbenchmarks/nonude.js: Added.

(Array.prototype.remove):
(const.u):
(const.load):
(const.scan):
(const.main):

Source/JavaScriptCore:

As of https://bugs.webkit.org/show_bug.cgi?id=155217 OSR
compilation can be kicked off for an entry into an outer-loop,
while executing an inner-loop. This is desirable because often the
codegen from an inner-entry isn't as good as the codegen from an
outer-entry, but execution from an inner-loop is often pretty hot
and likely to kick off compilation. This approach provided nice
speedups on Kraken because we'd select to enter to the outer-loop
very reliably, which reduces variability (the inner-loop was
selected roughly 1/5 times from my unscientific measurements).

When compilation starts we take a snapshot of the JSValues at the
current execution state using OSR's recovery mechanism. These
values are passed to the compiler and are used as way to perform
type profiling, and could be used to observe cell types as well as
to perform predictions such as through constant propagation.

It's therefore desired to enter from the outer-loop when we can,
but we need to be executing from that location to capture the
right JSValues, otherwise we're confusing the compiler and giving
it inaccurate JSValues which can lead it to predict the wrong
things, leading to suboptimal code or recompilation due to
misprediction, or in super-corner-cases a crash.

These effects are pretty hard to measure: Fil points out that
marsalis-osr-entry really needs mustHandleValues (the JSValues
from the point of execution) because right now it just happens to
correctly guess int32. I tried removing mustHandleValues entirely
and saw no slowdowns, but our benchmarks probably aren't
sufficient to reliably find issues, sometimes because we happen to
have sufficient mitigations.

DFG tier-up was added here:
https://bugs.webkit.org/show_bug.cgi?id=112838

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • dfg/DFGJITCode.h:
  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::JITCompiler):

  • dfg/DFGOSREntry.cpp:

(JSC::DFG::prepareOSREntry):

  • dfg/DFGOSREntry.h:

(JSC::DFG::prepareOSREntry):

  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGTierUpEntryTrigger.h: Copied from Source/JavaScriptCore/ftl/FTLOSREntry.h.
  • dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp:

(JSC::DFG::ToFTLForOSREntryDeferredCompilationCallback::ToFTLForOSREntryDeferredCompilationCallback):
(JSC::DFG::Ref<ToFTLForOSREntryDeferredCompilationCallback>ToFTLForOSREntryDeferredCompilationCallback::create):
(JSC::DFG::ToFTLForOSREntryDeferredCompilationCallback::compilationDidBecomeReadyAsynchronously):
(JSC::DFG::ToFTLForOSREntryDeferredCompilationCallback::compilationDidComplete):

  • dfg/DFGToFTLForOSREntryDeferredCompilationCallback.h:
  • ftl/FTLOSREntry.cpp:

(JSC::FTL::prepareOSREntry):

  • ftl/FTLOSREntry.h:
  • jit/JITOperations.cpp:
11:50 AM Changeset in webkit [211223] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Don't use _CFBundleCreateUnique on Yosemite, it's not available there
https://bugs.webkit.org/show_bug.cgi?id=167459
rdar://problem/30181179

Reviewed by Beth Dakin.

  • Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm:

(WebKit::NetscapePluginModule::getPluginInfo):

11:36 AM Changeset in webkit [211222] by Alan Bujtas
  • 6 edits
    4 adds in trunk

Simple line layout: Add support for -webkit-hyphenate-limit-after and -webkit-hyphenate-limit-before
https://bugs.webkit.org/show_bug.cgi?id=167439
<rdar://problem/30180184>

Reviewed by Antti Koivisto.

Source/WebCore:

Implement pre and post hyphen length constrains for simple line layout.

Tests: fast/text/simple-line-layout-hyphen-limit-after.html

fast/text/simple-line-layout-hyphen-limit-before.html

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseForStyle):
(WebCore::SimpleLineLayout::printReason):

  • rendering/SimpleLineLayoutTextFragmentIterator.cpp:

(WebCore::SimpleLineLayout::TextFragmentIterator::Style::Style): Same as normal line layout default values.
(WebCore::SimpleLineLayout::TextFragmentIterator::lastHyphenPosition):

  • rendering/SimpleLineLayoutTextFragmentIterator.h:

LayoutTests:

  • fast/text/simple-line-layout-hyphen-limit-after.html: Added.
  • fast/text/simple-line-layout-hyphen-limit-before-expected.html: Added.
  • fast/text/simple-line-layout-hyphen-limit-before.html: Added.
  • platform/mac/fast/text/hyphenate-limit-before-after-expected.txt: progression.
11:25 AM Changeset in webkit [211221] by commit-queue@webkit.org
  • 10 edits in trunk/Source/WebKit2

Add SPI for updating WebsitePolicies
https://bugs.webkit.org/show_bug.cgi?id=167040

Patch by Alex Christensen <achristensen@webkit.org> on 2017-01-26
Reviewed by Brady Eidson.

In r209558 we added a way to send a WebsitePolicies structure to the WebProcess during navigation.
If the UIProcess wants to update these policies on a WKWebView while a page is open, we will
need to have SPI for doing so. This adds such SPI, but it's not hooked up to change functionality yet.

  • UIProcess/API/C/WKPage.cpp:

(WKPageUpdateWebsitePolicies):

  • UIProcess/API/C/WKPage.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _updateWebsitePolicies:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::updateWebsitePolicies):

  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updateWebsitePolicies):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
11:21 AM Changeset in webkit [211220] by beidson@apple.com
  • 3 edits in trunk/Source/WebCore

Gamepad support shows wrong values for PS4 controllers (D-pad is missing).
<rdar://problem/29578619> and https://bugs.webkit.org/show_bug.cgi?id=165588

Reviewed by Alex Christensen.

No new tests (Currently unable to test HID backend directly)

DPads report their HID type as "a button", but their HID usage is "Hatswitch".
This patch adds a new element type that maps a "hatswitch" value to 4 additional buttons.

  • platform/gamepad/mac/HIDGamepad.cpp:

(WebCore::HIDGamepad::initElements):
(WebCore::HIDGamepad::initElementsFromArray):
(WebCore::HIDGamepad::maybeAddButton):
(WebCore::HIDGamepad::maybeAddDPad):
(WebCore::HIDGamepad::maybeAddAxis):
(WebCore::fillInButtonValues):
(WebCore::HIDGamepad::valueChanged):

  • platform/gamepad/mac/HIDGamepad.h:

(WebCore::HIDGamepadElement::isDPad):
(WebCore::HIDGamepadDPad::HIDGamepadDPad):
(WebCore::HIDGamepadDPad::normalizedValue):

10:55 AM Changeset in webkit [211219] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking swipe/main-frame-pinning-requirement.html as flaky on El Capitan.
https://bugs.webkit.org/show_bug.cgi?id=161887

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
10:49 AM Changeset in webkit [211218] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Marking media/modern-media-controls/tracks-support/tracks-support-click-track-in-panel.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=165319

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
  • platform/mac/TestExpectations:
10:49 AM Changeset in webkit [211217] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking inspector/heap/gc.html as slow on macOS debug.
https://bugs.webkit.org/show_bug.cgi?id=167408

Unreviewed test gardening.

  • platform/mac/TestExpectations:
8:38 AM Changeset in webkit [211216] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/JavaScriptCore

Merge r234555 via r211180. rdar://problem/30156092

8:32 AM Changeset in webkit [211215] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.1.22

New tag.

8:32 AM Changeset in webkit [211214] by matthew_hanson@apple.com
  • 1 delete in tags/Safari-603.1.22

Remove tag.

7:52 AM Changeset in webkit [211213] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603-branch/Source

Versioning.

7:52 AM Changeset in webkit [211212] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/JavaScriptCore

Roll out r234555 via r211180.

7:52 AM Changeset in webkit [211211] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603-branch/Source/WebCore

Merge r211151. rdar://problem/30171195

7:51 AM Changeset in webkit [211210] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.1.22

New tag.

6:58 AM Changeset in webkit [211209] by commit-queue@webkit.org
  • 5 edits
    2 adds in trunk

[Modern Media Controls] Hiding controls, changing their width and showing them again shows an incorrect layout
https://bugs.webkit.org/show_bug.cgi?id=167160
<rdar://problem/29612318>

Patch by Antoine Quint <Antoine Quint> on 2017-01-26
Reviewed by Dean Jackson.

Source/WebCore:

When we toggle visibility of the controls bar, we notify the hosting media controls and in the case of the
macOS inline media controls, we update the controls layout which would have failed to run last time it tried
due to the controls bar being hidden.

Test: media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-resize-with-hidden-controls-bar.html

  • Modules/modern-media-controls/controls/controls-bar.js:

(ControlsBar.prototype.set visible):

  • Modules/modern-media-controls/controls/macos-inline-media-controls.js:

(MacOSInlineMediaControls.prototype.controlsBarVisibilityDidChange):

  • Modules/modern-media-controls/controls/media-controls.js:

(MediaControls.prototype.controlsBarVisibilityDidChange):

LayoutTests:

Add a new test that creates media controls at a given width, hides the controls bar, increases the width, makes
the controls bar visible again, and checks that the layout was correctly updated as a result.

  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-resize-with-hidden-controls-bar-expected.txt: Added.
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-resize-with-hidden-controls-bar.html: Added.
2:52 AM Changeset in webkit [211208] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebCore

[Mac][cmake] Unreviewed speculative buildfix after r211161.
https://bugs.webkit.org/show_bug.cgi?id=167294

  • PlatformMac.cmake:
2:09 AM Changeset in webkit [211207] by pvollan@apple.com
  • 6 edits
    1 add in trunk

Crash when setting custom scale factor.
https://bugs.webkit.org/show_bug.cgi?id=167369

Reviewed by Sam Weinig.

Source/WebKit/mac:

Add null pointer check.

  • WebView/WebView.mm:

(-[WebView _setCustomBackingScaleFactor:]):

Source/WebKit/win:

Add null pointer check.

  • WebView.cpp:

(WebView::setCustomBackingScaleFactor):

Tools:

Added API test.

  • TestWebKitAPI/PlatformWin.cmake:
  • TestWebKitAPI/Tests/WebKit/win/ScaleWebView.cpp: Added.

(TestWebKitAPI::WebKitCreateInstance):
(TestWebKitAPI::ScaleWebView::SetUp):
(TestWebKitAPI::ScaleWebView::TearDown):
(TestWebKitAPI::TEST_F):

1:21 AM Changeset in webkit [211206] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebCore

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.

1:19 AM Changeset in webkit [211205] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

[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):

1:05 AM Changeset in webkit [211204] by magomez@igalia.com
  • 2 edits in trunk/Source/WebCore

[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):

12:55 AM Changeset in webkit [211203] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebKit2

[Mac][cmake] Fix the build after r211160
https://bugs.webkit.org/show_bug.cgi?id=167451

Unreviewed buildfix.

  • UIProcess/API/Cocoa/WKWebView.mm:
Note: See TracTimeline for information about the timeline view.