Timeline



Jan 20, 2017:

11:52 PM Changeset in webkit [211013] by commit-queue@webkit.org
  • 20 edits in trunk/Source

Remove never changing IndexedDB RuntimeEnabledFeature
https://bugs.webkit.org/show_bug.cgi?id=167278

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-20
Reviewed by Darin Adler.

Source/WebCore:

This RuntimeEnabledFeature flag is always true and there are
no existing ways to change it. So lets just remove it.

  • Modules/indexeddb/DOMWindowIndexedDatabase.idl:
  • Modules/indexeddb/IDBCursor.idl:
  • Modules/indexeddb/IDBCursorWithValue.idl:
  • Modules/indexeddb/IDBDatabase.idl:
  • Modules/indexeddb/IDBFactory.idl:
  • Modules/indexeddb/IDBIndex.idl:
  • Modules/indexeddb/IDBKeyRange.idl:
  • Modules/indexeddb/IDBObjectStore.idl:
  • Modules/indexeddb/IDBOpenDBRequest.idl:
  • Modules/indexeddb/IDBRequest.idl:
  • Modules/indexeddb/IDBTransaction.idl:
  • Modules/indexeddb/IDBVersionChangeEvent.idl:
  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::setIndexedDBEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::indexedDBEnabled): Deleted.

Source/WebKit/mac:

  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

Source/WebKit/win:

  • WebView.cpp:

(WebView::notifyPreferencesChanged):

Source/WebKit2:

  • WebProcess/WebProcess.cpp:

(WebKit::m_resourceLoadStatisticsStorage):

11:40 PM Changeset in webkit [211012] by Carlos Garcia Campos
  • 5 edits in trunk/Source

[SOUP] Custom protocols don't work in private browsing mode
https://bugs.webkit.org/show_bug.cgi?id=167236

Reviewed by Sergio Villar Senin.

Source/WebCore:

Add static method to set the global custom protocols request type and setup method to add the feature to the session.

  • platform/network/soup/SoupNetworkSession.cpp:

(WebCore::SoupNetworkSession::SoupNetworkSession):
(WebCore::SoupNetworkSession::setCustomProtocolRequestType):
(WebCore::SoupNetworkSession::setupCustomProtocols):

  • platform/network/soup/SoupNetworkSession.h:

Source/WebKit2:

We only register them in the default session.

  • NetworkProcess/CustomProtocols/soup/CustomProtocolManagerSoup.cpp:

(WebKit::CustomProtocolManager::registerProtocolClass): Set the WEBKIT_TYPE_SOUP_REQUEST_GENERIC as type for
custom protocols, and setup custom protocols in all existing sessions.
(WebKit::CustomProtocolManager::registerScheme): Use g_type_class_peek instead of g_type_class_ref since we know
the class was already created in registerProtocolClass().

10:36 PM Changeset in webkit [211011] by Chris Dumez
  • 2 edits in trunk/LayoutTests/imported/w3c

Unreviewed, rebaseline html/dom/interfaces.html.

  • web-platform-tests/html/dom/interfaces-expected.txt:
8:51 PM Changeset in webkit [211010] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Search Tab should display search results immediately when closing and reopening Inspector
https://bugs.webkit.org/show_bug.cgi?id=167073

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

  • UserInterface/Views/SearchSidebarPanel.js:

(WebInspector.SearchSidebarPanel.prototype.focusSearchField):
Add parameter that will trigger a search with the current input value when true.

  • UserInterface/Views/SearchTabContentView.js:

(WebInspector.SearchTabContentView):
(WebInspector.SearchTabContentView.prototype.focusSearchField):
(WebInspector.SearchTabContentView.prototype.initialLayout):

6:36 PM Changeset in webkit [211009] by commit-queue@webkit.org
  • 4 edits in trunk

[WebRTC] Update build system to make G711 optional in libwebrtc
https://bugs.webkit.org/show_bug.cgi?id=167256

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

Source/ThirdParty/libwebrtc:

  • CMakeLists.txt: Updating to add compilation of generic pcm encoder functions.

Tools:

  • Scripts/webkitpy/libwebrtc/generate_cmake.py:

(CMakeGenerator.remove_webrtc_g711): Adding a missing file to the build system as this file includes generic pcm encoder functions.

6:31 PM Changeset in webkit [211008] by commit-queue@webkit.org
  • 6 edits
    1 add in trunk/Source/WebCore

Record whether a media element was prevented from playing without user interaction
https://bugs.webkit.org/show_bug.cgi?id=167214

Patch by Matt Rajca <mrajca@apple.com> on 2017-01-20
Reviewed by Eric Carlson.

This state will be used to notify clients when a user explicitly starts playback
of a media element that was prevented from autoplaying.

Tests will be added after a WebKit callback API is added.

  • WebCore.xcodeproj/project.pbxproj:
  • dom/SuccessOr.h: Added.

(WebCore::SuccessOr::SuccessOr):
(WebCore::SuccessOr::operator bool):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::canTransitionFromAutoplayToPlay):
(WebCore::HTMLMediaElement::setReadyState):
(WebCore::HTMLMediaElement::play):
(WebCore::HTMLMediaElement::playInternal):

  • html/HTMLMediaElement.h:
  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::playbackPermitted):

  • html/MediaElementSession.h:
6:24 PM Changeset in webkit [211007] by beidson@apple.com
  • 27 edits
    2 adds in trunk

Require a button press on a gamepad for them to be exposed to the DOM.
<rdar://problem/28620919> and https://bugs.webkit.org/show_bug.cgi?id=167272

Reviewed by Alex Christensen.

Source/WebCore:

Test: gamepad/gamepad-visibility-1.html

  • Modules/gamepad/GamepadManager.cpp:

(WebCore::GamepadManager::platformGamepadInputActivity):

  • Modules/gamepad/GamepadManager.h:
  • platform/gamepad/GamepadProvider.cpp:

(WebCore::GamepadProvider::dispatchPlatformGamepadInputActivity):

  • platform/gamepad/GamepadProvider.h:

(WebCore::GamepadProvider::~GamepadProvider): Deleted.
(WebCore::GamepadProvider::isMockGamepadProvider): Deleted.

  • platform/gamepad/GamepadProviderClient.h:
  • platform/gamepad/cocoa/GameControllerGamepad.h:
  • platform/gamepad/cocoa/GameControllerGamepad.mm:

(WebCore::GameControllerGamepad::setupAsExtendedGamepad):
(WebCore::GameControllerGamepad::setupAsGamepad):

  • platform/gamepad/cocoa/GameControllerGamepadProvider.h:
  • platform/gamepad/cocoa/GameControllerGamepadProvider.mm:

(WebCore::GameControllerGamepadProvider::gamepadHadInput):
(WebCore::GameControllerGamepadProvider::inputNotificationTimerFired):

  • platform/gamepad/mac/HIDGamepad.cpp:

(WebCore::HIDGamepad::valueChanged):

  • platform/gamepad/mac/HIDGamepad.h:
  • platform/gamepad/mac/HIDGamepadProvider.cpp:

(WebCore::HIDGamepadProvider::valuesChanged):
(WebCore::HIDGamepadProvider::inputNotificationTimerFired):

  • platform/gamepad/mac/HIDGamepadProvider.h:
  • testing/MockGamepadProvider.cpp:

(WebCore::MockGamepadProvider::setMockGamepadButtonValue):
(WebCore::MockGamepadProvider::gamepadInputActivity):

  • testing/MockGamepadProvider.h:

Source/WebKit2:

  • UIProcess/Gamepad/UIGamepadProvider.cpp:

(WebKit::UIGamepadProvider::gamepadSyncTimerFired):
(WebKit::UIGamepadProvider::platformGamepadInputActivity):

  • UIProcess/Gamepad/UIGamepadProvider.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::gamepadActivity):

  • UIProcess/WebPageProxy.h:
  • WebProcess/Gamepad/WebGamepadProvider.cpp:

(WebKit::WebGamepadProvider::gamepadActivity):

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

(WebKit::WebPage::gamepadActivity):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

LayoutTests:

  • gamepad/gamepad-visibility-1-expected.txt: Added.
  • gamepad/gamepad-visibility-1.html: Added.
6:23 PM Changeset in webkit [211006] by Joseph Pecoraro
  • 75 edits
    1 delete in trunk

Cleanup RuntimeEnabledFeatures
https://bugs.webkit.org/show_bug.cgi?id=167228

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/resource-timing/resource_cached-expected.txt:
  • web-platform-tests/resource-timing/resource_connection_reuse-expected.txt:
  • web-platform-tests/resource-timing/resource_dynamic_insertion-expected.txt:

The previous internals API didn't appear to be working. Making it work
improved these results.

Source/WebCore:

RuntimeEnabledFeatures::reset() is bad for tests. It was getting called
after the TestRunners had set up all the Settings and RuntimeEnabledFeatures
they expected, so it was clearing the "consistent state" set by TestRunners.

Cleanup within RuntimeEnabledFeatures:

  • Initialize all members.
  • Remove unused features.
  • Remove reset() no longer used.
  • Document features that do not change (potentially removable).
  • Document features that are not used but have APIs (use or remove later).
  • Drop webkit prefix for these internal only apis.
  • Move things around a bit to make it more readable.
  • Enable the Fetch API by default (WebKit levels all were enabling it).

Cleanup within Internals:

  • Move all RuntimeEnabledFeature toggling to InternalSettings
  • Save and restore these RuntimeEnabledFeatures in InternalSettings
  • Modules/mediastream/MediaStreamEvent.idl:
  • Modules/mediastream/NavigatorMediaDevices.idl:
  • Modules/mediastream/NavigatorUserMedia.idl:
  • Modules/mediastream/RTCDTMFToneChangeEvent.idl:
  • Modules/mediastream/RTCIceCandidate.idl:
  • Modules/mediastream/RTCPeerConnection.idl:
  • Modules/mediastream/RTCRtpReceiver.idl:
  • Modules/mediastream/RTCRtpSender.idl:
  • Modules/mediastream/RTCRtpTransceiver.idl:
  • Modules/mediastream/RTCSessionDescription.idl:
  • Modules/mediastream/RTCTrackEvent.idl:

Canonical usage is to start with a capital letter.

  • dom/EventNames.in:

No port has API/SPI to disable this feature at runtime and the default is
to have the feature enabled, so this is no different from the runtime flag.

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::addEventListener):
These features were always enabled and not toggleable. So drop the runtime
feature check.

  • page/csp/ContentSecurityPolicy.h:
  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::experimentalFeaturesEnabled): Deleted.
Nobody calls this method. Drop it.

  • page/RuntimeEnabledFeatures.cpp:

(WebCore::RuntimeEnabledFeatures::RuntimeEnabledFeatures):
(WebCore::RuntimeEnabledFeatures::reset):
(WebCore::RuntimeEnabledFeatures::javaScriptI18NAPIEnabled): Deleted.

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::langAttributeAwareFormControlUIEnabled):
(WebCore::RuntimeEnabledFeatures::setLangAttributeAwareFormControlUIEnabled):
(WebCore::RuntimeEnabledFeatures::setLinkPreloadEnabled):
(WebCore::RuntimeEnabledFeatures::linkPreloadEnabled):
(WebCore::RuntimeEnabledFeatures::setResourceTimingEnabled):
(WebCore::RuntimeEnabledFeatures::resourceTimingEnabled):
(WebCore::RuntimeEnabledFeatures::setShadowDOMEnabled):
(WebCore::RuntimeEnabledFeatures::shadowDOMEnabled):
(WebCore::RuntimeEnabledFeatures::setInputEventsEnabled):
(WebCore::RuntimeEnabledFeatures::inputEventsEnabled):
(WebCore::RuntimeEnabledFeatures::setInteractiveFormValidationEnabled):
(WebCore::RuntimeEnabledFeatures::interactiveFormValidationEnabled):
(WebCore::RuntimeEnabledFeatures::setCustomElementsEnabled):
(WebCore::RuntimeEnabledFeatures::customElementsEnabled):
(WebCore::RuntimeEnabledFeatures::setModernMediaControlsEnabled):
(WebCore::RuntimeEnabledFeatures::modernMediaControlsEnabled):
(WebCore::RuntimeEnabledFeatures::setIndexedDBEnabled):
(WebCore::RuntimeEnabledFeatures::fontLoadEventsEnabled):
(WebCore::RuntimeEnabledFeatures::setMediaStreamEnabled):
(WebCore::RuntimeEnabledFeatures::setPeerConnectionEnabled):
(WebCore::RuntimeEnabledFeatures::setLocalStorageEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::localStorageEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::setSessionStorageEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::sessionStorageEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::setWebkitNotificationsEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::webkitNotificationsEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::setApplicationCacheEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::applicationCacheEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::setDataTransferItemsEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::dataTransferItemsEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::setWebkitIndexedDBEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::webkitIndexedDBEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::touchEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::setTouchEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::setDeviceMotionEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::deviceMotionEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::deviceMotionEventEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::ondevicemotionEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::setDeviceOrientationEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::deviceOrientationEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::deviceOrientationEventEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::ondeviceorientationEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::setJavaScriptI18NAPIEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::webkitGetUserMediaEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::webkitMediaStreamEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::webkitRTCPeerConnectionEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::experimentalContentSecurityPolicyFeaturesEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::setExperimentalContentSecurityPolicyFeaturesEnabled): Deleted.

  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setLangAttributeAwareFormControlUIEnabled):
(WebCore::InternalSettings::setResourceTimingEnabled):
(WebCore::InternalSettings::setLinkPreloadEnabled):
(WebCore::InternalSettings::setCSSGridLayoutEnabled):
(WebCore::InternalSettings::setWebGL2Enabled):

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

(WebCore::Internals::Internals):
(WebCore::Internals::setLinkPreloadSupport): Deleted.
(WebCore::Internals::setCSSGridLayoutEnabled): Deleted.
(WebCore::Internals::webGL2Enabled): Deleted.
(WebCore::Internals::setWebGL2Enabled): Deleted.
(WebCore::Internals::setResourceTimingSupport): Deleted.

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

Move toggling of RuntimeEnabledFeatures to InternalSettings and
properly remember to save and restore them in Internals.

Source/WebKit/mac:

  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

Source/WebKit/win:

  • WebView.cpp:

(WebView::notifyPreferencesChanged):

Source/WebKit2:

  • WebProcess/WebProcess.cpp:

(WebKit::m_resourceLoadStatisticsStorage):

Tools:

  • DumpRenderTree/mac/DumpRenderTree.mm:

(enableExperimentalFeatures):
(resetWebPreferencesToConsistentValues):
(setWebPreferencesForTestOptions):
(resetWebViewToConsistentStateBeforeTesting):

  • DumpRenderTree/win/DumpRenderTree.cpp:

(enableExperimentalFeatures):
(resetWebPreferencesToConsistentValues):
More closely match WebKitTestRunner initialization of preferences
for experimental features.

LayoutTests:

Update tests that toggle runtime enabled features to use
consistently named internals.settings.setFooEnabled setters.

  • css3/flexbox/flexbox-lines-must-be-stretched-by-default.html:
  • css3/flexbox/new-alignment-values-invalid-if-grid-not-enabled.html:
  • fast/canvas/webgl/bufferData-offset-length.html:
  • fast/canvas/webgl/copyBufferSubData.html:
  • fast/canvas/webgl/getBufferSubData-webgl1.html:
  • fast/canvas/webgl/webgl2-buffer-targets.html:
  • fast/canvas/webgl/webgl2-buffers.html:
  • fast/canvas/webgl/webgl2-context-creation.html:
  • fast/canvas/webgl/webgl2-runtime-flag.html:
  • fast/canvas/webgl/webgl2-texStorage.html:
  • fast/canvas/webgl/webgl2-texture-upload-enums.html:
  • fast/css-grid-layout/grid-disable.html:
  • fast/css/ensure-flexbox-compatibility-with-initial-values.html:
  • fast/dom/Window/window-properties-performance-resource-timing.html:
  • http/tests/fetch/redirectmode-and-preload.html:
  • http/tests/misc/resource-timing-resolution.html:
  • http/tests/performance/performance-resource-timing-cached-entries.html:
  • http/tests/performance/performance-resource-timing-entries-iterable.html:
  • http/tests/performance/performance-resource-timing-entries.html:
  • http/tests/performance/performance-resource-timing-initiator-css.html:
  • http/tests/performance/performance-resource-timing-initiator-no-override.html:
  • http/tests/performance/performance-resource-timing-xhr-single-entry.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.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.html:
  • http/tests/preload/not_delaying_window_onload_before_discovery.html:
  • http/tests/preload/onerror_event.html:
  • 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_runner.html:
  • http/tests/security/cached-cross-origin-preloading-css-stylesheet.html:
  • resources/testharnessreport.js:
5:46 PM Changeset in webkit [211005] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603-branch/Source

Versioning.

5:21 PM Changeset in webkit [211004] by commit-queue@webkit.org
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

[WebRTC] Update libwertc AudioRtpSender::SetAudioSend
https://bugs.webkit.org/show_bug.cgi?id=167243

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

Introducing WEBRTC_WEBKIT_BUILD macro to match existing WEBRTC_CHROMIUM_BUILD.
WEBRTC_WEBKIT_BUILD is defined by current WebKit libwebrtc build system.

  • Source/webrtc/api/rtpsender.cc:
5:08 PM Changeset in webkit [211003] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.1.21

New tag.

5:05 PM Changeset in webkit [211002] by Megan Gardner
  • 2 edits in trunk/LayoutTests

REGRESSION (r210941): LayoutTest scrollingcoordinator/ios/sync-layer-positions-after-scroll.html failing
https://bugs.webkit.org/show_bug.cgi?id=167262

Updating Tests to comply with change in bug 167171.
Change is correct, but causes the results for this test to be different.

Unreviewed test gardening.

  • scrollingcoordinator/ios/sync-layer-positions-after-scroll-expected.txt:
4:44 PM Changeset in webkit [211001] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Add debugging code to compare URLParser with URL::parse
https://bugs.webkit.org/show_bug.cgi?id=167267

Reviewed by Brady Eidson.

  • platform/URLParser.cpp:

(WebCore::URLParser::URLParser):
(WebCore::URLParser::parse):

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

Marking media/modern-media-controls/media-controller/media-controller-auto-hide-mouse-enter-over-controls-bar.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=167266

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
4:30 PM Changeset in webkit [210999] by jmarcell@apple.com
  • 5 edits in tags/Safari-604.1.4.1/Source

Versioning.

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

Marking inspector/network/client-blocked-load.html as a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=167265

Unreviewed test gardening.

  • platform/mac/TestExpectations:
4:21 PM Changeset in webkit [210997] by Ryan Haddad
  • 7 edits in trunk/Source/WebCore

Unreviewed, rolling out r210778.

This change caused multiple LayoutTests to crash.

Reverted changeset:

"[Cocoa] Unify FontPlatformData's hashing and equality
operators"
https://bugs.webkit.org/show_bug.cgi?id=167061
http://trac.webkit.org/changeset/210778

4:17 PM Changeset in webkit [210996] by jmarcell@apple.com
  • 1 copy in tags/Safari-604.1.4.1

New tag.

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

Marking media/modern-media-controls/pip-support/pip-support-enabled.html as crashing on macOS WK1.
https://bugs.webkit.org/show_bug.cgi?id=164336

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
4:00 PM Changeset in webkit [210994] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

More media test gardening.

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
  • platform/mac/TestExpectations:
3:33 PM Changeset in webkit [210993] by achristensen@apple.com
  • 6 edits in trunk

Build Fix for Windows DumpRenderTree after r210976
https://bugs.webkit.org/show_bug.cgi?id=167115

Source/WebKit/win:

  • WebPreferences.h:

Remove extra space.

  • IWebPreferencesPrivate.idl:

Add new interface functions.

  • WebView.cpp:

We use new functions that are only in IWebPreferencesPrivate4,
so instantiate that COM object instead of version 3.

Tools:

  • DumpRenderTree/win/DumpRenderTree.cpp:

(resetWebPreferencesToConsistentValues):

3:23 PM Changeset in webkit [210992] by commit-queue@webkit.org
  • 27 edits in trunk

Remove outdated ENABLE(CSP_NEXT) build flag
https://bugs.webkit.org/show_bug.cgi?id=167252

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-20
Reviewed by Brent Fulgham.

.:

  • Source/cmake/OptionsMac.cmake:
  • Source/cmake/OptionsWin.cmake:
  • Source/cmake/WebKitFeatures.cmake:
  • Source/cmake/tools/vsprops/FeatureDefines.props:
  • Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

  • Configurations/FeatureDefines.xcconfig:
  • dom/Document.idl:
  • page/RuntimeEnabledFeatures.cpp:

(WebCore::RuntimeEnabledFeatures::reset):

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::experimentalContentSecurityPolicyFeaturesEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::setExperimentalContentSecurityPolicyFeaturesEnabled): Deleted.

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::experimentalFeaturesEnabled): Deleted.

  • page/csp/ContentSecurityPolicy.h:

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

  • Configurations/FeatureDefines.xcconfig:

Source/WTF:

  • wtf/FeatureDefines.h:

Tools:

  • Scripts/webkitperl/FeatureList.pm:
  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

LayoutTests:

  • fast/dom/event-handler-attributes.html:
  • http/tests/security/contentSecurityPolicy/1.1/securitypolicyviolation-basics.html:
2:54 PM Changeset in webkit [210991] by Joseph Pecoraro
  • 7 edits in trunk

Build Fix for Windows DumpRenderTree after r210976

Source/WebKit/win:

  • WebPreferenceKeysPrivate.h:
  • WebPreferences.cpp:

(WebPreferences::initializeDefaultSettings):
(WebPreferences::setWebAnimationsEnabled):
(WebPreferences::webAnimationsEnabled):

  • WebPreferences.h:
  • WebView.cpp:

Add toggle APIs for WebAnimations.

Tools:

  • DumpRenderTree/win/DumpRenderTree.cpp:

(resetWebPreferencesToConsistentValues):

2:53 PM Changeset in webkit [210990] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Cleaning up TestExpectations for inspector/css/pseudo-element-matches.html.

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
  • platform/mac/TestExpectations:
2:48 PM Changeset in webkit [210989] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking media/modern-media-controls/audio/audio-controls-metrics.html as failing on iOS.
https://bugs.webkit.org/show_bug.cgi?id=167258

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
2:40 PM Changeset in webkit [210988] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Build fix after r210783. Didn't mean to require custom elements API.

  • public/v3/main.js:

(main):

2:30 PM Changeset in webkit [210987] by commit-queue@webkit.org
  • 16 edits in trunk/Source/ThirdParty/libwebrtc

[WebRTC] libwebrtc headers are incompatible with WebKit compilation flags
https://bugs.webkit.org/show_bug.cgi?id=167242

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

WebKit is enforcing -Wunused-parameter and -Wunused-variable which conflict with some included libwertc headers.
Removed unused parameter names for inlined functions.

  • Source/webrtc/api/jsep.h:

(webrtc::SessionDescriptionInterface::RemoveCandidates):

  • Source/webrtc/api/mediastreaminterface.h:

(webrtc::AudioSourceInterface::SetVolume):
(webrtc::AudioSourceInterface::RegisterAudioObserver):
(webrtc::AudioSourceInterface::UnregisterAudioObserver):
(webrtc::AudioSourceInterface::AddSink):
(webrtc::AudioSourceInterface::RemoveSink):
(webrtc::AudioTrackInterface::GetSignalLevel):

  • Source/webrtc/api/peerconnectionfactory.h:
  • Source/webrtc/api/peerconnectioninterface.h:

(webrtc::MetricsObserverInterface::IncrementEnumCounter):
(webrtc::PeerConnectionInterface::AddTrack):
(webrtc::PeerConnectionInterface::RemoveTrack):
(webrtc::PeerConnectionInterface::CreateSender):
(webrtc::PeerConnectionInterface::GetStats):
(webrtc::PeerConnectionInterface::CreateOffer):
(webrtc::PeerConnectionInterface::CreateAnswer):
(webrtc::PeerConnectionInterface::UpdateIce):
(webrtc::PeerConnectionInterface::SetConfiguration):
(webrtc::PeerConnectionInterface::RemoveIceCandidates):
(webrtc::PeerConnectionInterface::StartRtcEventLog):
(webrtc::PeerConnectionObserver::OnAddStream):
(webrtc::PeerConnectionObserver::OnRemoveStream):
(webrtc::PeerConnectionObserver::OnDataChannel):
(webrtc::PeerConnectionObserver::OnIceCandidatesRemoved):
(webrtc::PeerConnectionObserver::OnIceConnectionReceivingChange):

  • Source/webrtc/api/rtpsender.cc:
  • Source/webrtc/base/messagehandler.h:

(rtc::FunctorMessageHandler::OnMessage):

  • Source/webrtc/base/sanitizer.h:

(rtc_AsanPoison):
(rtc_AsanUnpoison):
(rtc_MsanMarkUninitialized):
(rtc_MsanCheckInitialized):

  • Source/webrtc/base/stream.h:

(rtc::StreamInterface::ConsumeReadData):
(rtc::StreamInterface::ConsumeWriteBuffer):

  • Source/webrtc/media/base/mediachannel.h:

(cricket::DataMediaChannel::GetStats):
(cricket::DataMediaChannel::OnNetworkRouteChanged):

  • Source/webrtc/media/engine/webrtcvideodecoderfactory.h:

(cricket::WebRtcVideoDecoderFactory::CreateVideoDecoderWithParams):

  • Source/webrtc/media/engine/webrtcvideoencoderfactory.h:

(cricket::WebRtcVideoEncoderFactory::VideoCodec::VideoCodec):
(cricket::WebRtcVideoEncoderFactory::EncoderTypeHasInternalSource):

  • Source/webrtc/media/engine/webrtcvideoengine2.cc:
  • Source/webrtc/modules/include/module.h:

(webrtc::Module::ProcessThreadAttached):

  • Source/webrtc/modules/video_coding/codecs/vp9/vp9_noop.cc:
  • Source/webrtc/p2p/base/port.h:

(cricket::Port::HandleIncomingPacket):
(cricket::Port::HandleConnectionDestroyed):
(cricket::Connection::set_receiving_timeout):

  • Source/webrtc/p2p/base/stun.h:

(cricket::StunAttribute::SetOwner):

  • Source/webrtc/p2p/base/stunrequest.h:

(cricket::StunRequest::Prepare):
(cricket::StunRequest::OnResponse):
(cricket::StunRequest::OnErrorResponse):

  • Source/webrtc/p2p/base/transport.h:

(cricket::Transport::SetLocalCertificate):
(cricket::Transport::GetLocalCertificate):
(cricket::Transport::GetSslRole):
(cricket::Transport::SetSslMaxProtocolVersion):

  • Source/webrtc/sdk/objc/Framework/Classes/videotoolboxvideocodecfactory.cc:
  • Source/webrtc/typedefs.h:
2:19 PM Changeset in webkit [210986] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking media/modern-media-controls/media-controller/media-controller-auto-hide-mouse-leave-after-play.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=167254

Unreviewed test gardening.

  • platform/mac/TestExpectations:
2:12 PM Changeset in webkit [210985] by Alan Bujtas
  • 6 edits in trunk

Simple line layout: Add support for non-breaking space character.
https://bugs.webkit.org/show_bug.cgi?id=167250
<rdar://problem/30119638>

Reviewed by Antti Koivisto.
Source/WebCore:

Do not bail out on noBreakSpace character.
The line breaking logic already takes noBreakSpace characters into account.
(except the peculiar "-webkit-nbsp-mode: space" mode)

Covered by existing test cases.

  • rendering/SimpleLineLayout.cpp:

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

LayoutTests:

These are output progressions (they do not reflect changes in functionality).

  • fast/block/float/br-with-clear-2-expected.txt:
  • platform/mac/css1/text_properties/text_transform-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug4427-expected.txt:
2:07 PM Changeset in webkit [210984] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-containers-styles.html as flaky on mac-wk1.
https://bugs.webkit.org/show_bug.cgi?id=167253

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
2:07 PM Changeset in webkit [210983] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking inspector/css/pseudo-element-matches.html as a timeout on macOS.
https://bugs.webkit.org/show_bug.cgi?id=167246

Unreviewed test gardening.

  • platform/mac/TestExpectations:
2:04 PM Changeset in webkit [210982] by rniwa@webkit.org
  • 3 edits in trunk/Websites/perf.webkit.org

Make sync-commits.py robust against missing Subversion authors and missing parent Git commits
https://bugs.webkit.org/show_bug.cgi?id=167231

Reviewed by Antti Koivisto.

Fixed a bug that a subversion commit that's missing author name (anonymous commit) results in an out of bound
exception, and a bug that syncing a git repository starts failing once there was a merge commit which pulled
in a commit data earlier than that of the last reported commit.

For the latter fix, added --max-ancestor-fetch-count to specify the number of maximum commits to look back.

  • tools/sync-commits.py:

(main): Added --max-ancestor-fetch-count.
(Repository.fetch_commits_and_submit): If submit_commits fails with FailedToFindParentCommit, fetch the parent
commit's information until we've resolved them all.
(Repository.fetch_next_commit): Renamed from fetch_commit.
(SVNRepository.fetch_next_commit): Renamed from fetch_commit. Don't try to get the author name if it's missing
due to an anonymous commit. It's important to never include the "author" field in the JSON submitted to
a dashboard since it rejects when "author" field is not an array (e.g. null).
(GitRepository.fetch_next_commit): Renamed from fetch_commit.
(GitRepository.fetch_commit): Added. Fetches the commit information for a given git hash. Used to retrieve
missing parent commits.
(GitRepository._revision_from_tokens): Extracted from fetch_commit.

  • tools/util.py:

(submit_commits): Optionally takes status_to_accept to avoid throwing in the case of FailedToFindParentCommit
and returns the response JSON.

2:02 PM Changeset in webkit [210981] by rniwa@webkit.org
  • 3 edits
    1 add in trunk/Websites/perf.webkit.org

REGRESSION(r198234): /api/commits/%revision% always fails
https://bugs.webkit.org/show_bug.cgi?id=167235

Reviewed by Antti Koivisto.

The bug was caused by a typo in CommitLogFetcher::fetch_revision, which was calling commit_for_revision on
$this->db instead of $this. This had been monkey-patched in the internal dashboard so it was working there.

Also fixed a bug that /latest wasn't doing what it claimed to do, and a bug that /oldest /latest,
and /last-reported would return a commit with all values set to null instead of an empty list.

Finally, added server API tests for /api/commits.

  • public/api/commits.php:

(main): Add a comment for APIs that only exist for v2 UI.

  • public/include/commit-log-fetcher.php:

(CommitLogFetcher::fetch_latest): Fixed the bug that this function was returning the oldest commit, not the
the latest commit as desired.
(CommitLogFetcher::fetch_revision): Fixed the bug that this function would always encounter an exception
because commit_for_revision is defined on $this, not $this->db.
(CommitLogFetcher::format_single_commit): Return an empty list instead of an array with a single commit with
all values set to null.

  • server-tests/api-commits.js: Added. Added tests for the JSON API at /api/commits.

(.assertCommitIsSameAsOneSubmitted): Added. A helper function to compare a commit returned by /api/commits
to one sent to /api/report-commits.

1:50 PM Changeset in webkit [210980] by achristensen@apple.com
  • 3 edits in trunk/Source/WebKit2

Fix Mac CMake build.

  • CMakeLists.txt:
  • PlatformMac.cmake:
1:35 PM Changeset in webkit [210979] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking media/modern-media-controls/placard-support/placard-support-airplay.html as flaky on macOS.
https://bugs.webkit.org/show_bug.cgi?id=164298

Unreviewed test gardening.

  • platform/mac/TestExpectations:
1:35 PM Changeset in webkit [210978] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking media/modern-media-controls/tracks-panel/tracks-panel-hide-click-outside.html as flaky on macOS.
https://bugs.webkit.org/show_bug.cgi?id=165290

Unreviewed test gardening.

  • platform/mac/TestExpectations:
1:25 PM Changeset in webkit [210977] by commit-queue@webkit.org
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

[WebRTC] Update libwertc AudioRtpSender::SetAudioSend
https://bugs.webkit.org/show_bug.cgi?id=167243

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

Introducing WEBRTC_WEBKIT_BUILD macro to match existing WEBRTC_CHROMIUM_BUILD.
WEBRTC_WEBKIT_BUILD is defined by current WebKit libwebrtc build system.

  • Source/webrtc/api/rtpsender.cc:
1:04 PM Changeset in webkit [210976] by commit-queue@webkit.org
  • 19 edits in trunk

Web Animations should be off by default and enabled as an experimental feature
https://bugs.webkit.org/show_bug.cgi?id=167115
<rdar://problem/30048963>

Patch by Antoine Quint <Antoine Quint> on 2017-01-20
Reviewed by Joseph Pecoraro.

Source/WebCore:

Conditionalize the existing parts of the Web Animations API so that they may be
toggled at runtime.

  • animation/Animatable.idl:
  • animation/AnimationEffect.idl:
  • animation/AnimationTimeline.idl:
  • animation/DocumentAnimation.idl:
  • animation/DocumentTimeline.idl:
  • animation/KeyframeEffect.idl:
  • animation/WebAnimation.idl:
  • page/RuntimeEnabledFeatures.cpp:

(WebCore::RuntimeEnabledFeatures::reset):

  • page/RuntimeEnabledFeatures.h:

Source/WebKit2:

Promote, or relegate depending on how you see things, the Web Animations preference
to an experimental feature.

  • Shared/WebPreferencesDefinitions.h:

Tools:

Turn Web Animations on in DRT.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebPreferencesToConsistentValues):

  • DumpRenderTree/win/DumpRenderTree.cpp:

(resetWebPreferencesToConsistentValues):

Websites/webkit.org:

Add a test for Web Animations feature detection.

  • experimental-features.html:

LayoutTests:

No need for an explicit preference anymore.

  • webanimations/script-tests/Document.js:
12:44 PM Changeset in webkit [210975] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skipping pointer-lock tests on macOS WK2.
https://bugs.webkit.org/show_bug.cgi?id=167246

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
11:41 AM Changeset in webkit [210974] by commit-queue@webkit.org
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

[WebRTC] libwebrtc H.264 codec is using VTB only for IOS
https://bugs.webkit.org/show_bug.cgi?id=167245

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

  • Source/webrtc/sdk/objc/Framework/Classes/videotoolboxvideocodecfactory.cc: Removing WEBRTC_IOS flag.
10:43 AM Changeset in webkit [210973] by commit-queue@webkit.org
  • 4 edits
    11 adds in trunk

[WebRTC] Add libwebrtc build infrastructure
https://bugs.webkit.org/show_bug.cgi?id=167207

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

.:

  • WebKit.xcworkspace/contents.xcworkspacedata:

Source/ThirdParty:

Checking-in files used for building libwebrtc.
The principle is the following:

  • Select a revision of libwebrtc
  • Ask libwebrtc build system to generate the project.json (something like gn gen --ide json ...)
  • Copy project.json here and the libwebrtc selected revision in a libwebrtc/libwebrtc folder.
  • Call Tools/Scripts/generate-libwebrtc-cmake which will update CMakeLists.txt
  • Build libwebrtc with CMake
  • libwebrtc/CMakeLists.txt: Added (Generated by Tools/Scripts/generate-libwebrtc-cmake using project.json as input).
  • libwebrtc/Makefile: Added.
  • libwebrtc/WebKit/project.json: Added (Generated by libwebrtc build system).
  • libwebrtc/WebKit/rtc_sdk_framework_objc_info_plist.plist: Added.
  • libwebrtc/libwebrtc.xcodeproj/project.pbxproj: Added.

Tools:

Adding a script doing the libwebrtc project json to CMake file conversion.

  • Scripts/generate-libwebrtc-cmake: Added.
  • Scripts/webkitpy/libwebrtc/init.py: Added.
  • Scripts/webkitpy/libwebrtc/generate_cmake.py: Added.
10:21 AM Changeset in webkit [210972] by Chris Dumez
  • 2 edits in trunk/LayoutTests/imported/w3c

Unreviewed, unskip innerText/ folder in ImportExpectations

This is needed so that the tests in this folder gets re-sync'ed
from upstream next time.

  • resources/ImportExpectations:
10:10 AM Changeset in webkit [210971] by sbarati@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

We should flash a safepoint before each DFG/FTL phase
https://bugs.webkit.org/show_bug.cgi?id=167234

Reviewed by Filip Pizlo.

The recent GC changes caused us to regress Kraken because of a
longstanding issue that happened to be hit with higher frequency because
of a change in timing between when a particular GC was happening and
when a particular FTL compilation was happening. The regression is caused
by the GC was waiting for a large function to make it through the DFG portion
of an FTL compilation. This was taking 20ms-30ms and started happened during a
particular test with much higher frequency.

This means that anytime the GC waits for this compilation, the test ran at least
~20ms slower because the GC waits for the compiler threads the mutator is stopped.

It's good that we have such an easily reproducible case of this performance
issue because it will effect many real JS programs, especially ones with
large functions that get hot.

The most straight forward solution to fix this is to flash a safepoint before
each phase, allowing the GC to suspend the compiler if needed. In my testing,
this progresses Kraken in the browser, and doesn't regress anything else. This
solution also makes the most sense. I did some analysis on the compilation time
of this function that took ~20-30ms to pass through the DFG phases, and
the phase times were mostly evenly distributed. Some took longer than others,
but no phase was longer than 3ms. Most were in the 0.25ms to 1.5ms range.

  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::compileInThreadImpl):

  • dfg/DFGSafepoint.cpp:

(JSC::DFG::Safepoint::begin):

  • runtime/Options.h:
10:09 AM Changeset in webkit [210970] by matthew_hanson@apple.com
  • 3 edits
    4 adds in branches/safari-603-branch

Merge r210951. rdar://problem/29562247

10:09 AM Changeset in webkit [210969] by matthew_hanson@apple.com
  • 29 edits in branches/safari-603-branch

Merge r210949. rdar://problem/30108531

10:09 AM Changeset in webkit [210968] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603-branch/Source/JavaScriptCore

Merge r210947. rdar://problem/30108809

10:09 AM Changeset in webkit [210967] by matthew_hanson@apple.com
  • 3 edits
    2 adds in branches/safari-603-branch

Merge r210945. rdar://problem/28745101

9:59 AM Changeset in webkit [210966] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Mini Browser: Show tooltip for Experimental Features
https://bugs.webkit.org/show_bug.cgi?id=167225

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-20
Reviewed by Alex Christensen.

  • MiniBrowser/mac/SettingsController.m:

(-[SettingsController _populateMenu]):
Include the full details string as a tooltip.

9:50 AM Changeset in webkit [210965] by pvollan@apple.com
  • 2 edits in trunk/Tools

[Win] Test output results should not be written twice.
https://bugs.webkit.org/show_bug.cgi?id=167197

Reviewed by Brent Fulgham.

Prevent test output from being written twice by returning early from
the dump() function, if it already has been called.
This patch also adds a missing newline to a test output line.

  • DumpRenderTree/win/DumpRenderTree.cpp:

(dump):

8:56 AM Changeset in webkit [210964] by matthew_hanson@apple.com
  • 19 edits
    2 copies
    2 adds in branches/safari-603-branch/Source

Merge r210936. rdar://problem/30058349

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

Merge r210473. rdar://problem/29204422

8:25 AM Changeset in webkit [210962] by matthew_hanson@apple.com
  • 7 edits in branches/safari-603-branch/Source/WebKit2

Merge r210913. rdar://problem/30086738

8:25 AM Changeset in webkit [210961] by matthew_hanson@apple.com
  • 10 edits
    5 adds in branches/safari-603-branch

Merge r210939. rdar://problem/29885052

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

Merge r210935. rdar://problem/30101860

4:17 AM Changeset in webkit [210959] by graouts@webkit.org
  • 220 edits
    4 copies
    10 adds in trunk

[Modern Media Controls] Turn modern media controls on by default
https://bugs.webkit.org/show_bug.cgi?id=165668

Reviewed by Dean Jackson.

Source/WebCore:

Tests: media/modern-media-controls/fullscreen-support/ipad/fullscreen-support-tap.html

media/modern-media-controls/pip-support/ipad/pip-support-enabled.html
media/modern-media-controls/pip-support/ipad/pip-support-tap.html
media/modern-media-controls/placard-support/ipad/placard-support-pip.html
media/modern-media-controls/scrubber-support/ipad/scrubber-support-drag.html

Fix an error which may be triggered prior to Sierra where we would assume the presentation
mode API was avaiable when it might not be, which caused a few tests to fail.

We also ensure that we always inject the UA styles for legacy media controls as otherwise
toggling from modern media controls to legacy media controls would not inject those styles.
To facilitate this we add a dedicated method for modern media controls styles in RenderTheme
that is only used in the case of modern media controls when the shadow root asks for the styles
to inject in the shadow root.

  • Modules/mediacontrols/MediaControlsHost.cpp:

(WebCore::MediaControlsHost::shadowRootCSSText):

  • Modules/modern-media-controls/media/pip-support.js:

(PiPSupport.prototype.syncControl):
(PiPSupport):

  • css/CSSDefaultStyleSheets.cpp:

(WebCore::CSSDefaultStyleSheets::ensureDefaultStyleSheetsForElement):

  • rendering/RenderTheme.h:

(WebCore::RenderTheme::modernMediaControlsStyleSheet):

  • rendering/RenderThemeIOS.h:
  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::mediaControlsStyleSheet):
(WebCore::RenderThemeIOS::modernMediaControlsStyleSheet):

  • rendering/RenderThemeMac.h:
  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::mediaControlsStyleSheet):
(WebCore::RenderThemeMac::modernMediaControlsStyleSheet):

Source/WebKit/mac:

Enabled modern media controls by default in WK1.

  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):

Source/WebKit2:

Use DEFAULT_EXPERIMENTAL_FEATURES_ENABLED as the default value for modern media controls, which is true.

  • Shared/WebPreferencesDefinitions.h:

Tools:

Enabled modern media controls by default in test runners.

  • DumpRenderTree/TestOptions.h:
  • WebKitTestRunner/TestOptions.h:

LayoutTests:

Turn modern media controls off for a majority of pre-existing tests that made assumptions on the implementation
of media controls.

For tests designed for modern media controls, we don't need to opt out since modern media controls are now on
by default, and we turn them back on since they were skipped. But we make these tests more resilient by:

  1. adding iPad-specific tests
  2. adding platform-agnostic ways to press an element, using either eventSender or uiController
  3. checking that elements that are sized asynchronously are indeed sized before making assumptions to that effect
  4. ensuring that we don't have additional scheduler.frameDidFire callbacks after we no longer need them
  • TestExpectations:
  • accessibility/mac/video-tag-hit-test.html:
  • accessibility/mac/video-volume-slider-accessibility.html:
  • accessibility/media-element.html:
  • accessibility/media-emits-object-replacement.html:
  • compositing/video/poster-expected.html:
  • compositing/video/poster.html:
  • fast/hidpi/video-controls-in-hidpi.html:
  • fast/layers/video-layer.html:
  • fullscreen/video-controls-drag.html:
  • fullscreen/video-controls-override.html:
  • fullscreen/video-controls-rtl.html:
  • fullscreen/video-controls-timeline.html:
  • http/tests/media/hls/video-controls-live-stream.html:
  • http/tests/media/hls/video-duration-accessibility.html:
  • http/tests/security/contentSecurityPolicy/userAgentShadowDOM/default-src-object-data-url-allowed.html:
  • http/tests/security/contentSecurityPolicy/userAgentShadowDOM/default-src-object-data-url-blocked.html:
  • http/tests/security/contentSecurityPolicy/userAgentShadowDOM/default-src-object-data-url-blocked2.html:
  • http/tests/security/contentSecurityPolicy/userAgentShadowDOM/video-controls-allowed.html:
  • media/accessibility-closed-captions-has-aria-owns.html:
  • media/adopt-node-crash.html:
  • media/airplay-autoplay.html:
  • media/audio-as-video-fullscreen.html:
  • media/audio-controls-do-not-fade-out.html:
  • media/audio-controls-rendering.html:
  • media/audio-controls-timeline-in-media-document.html:
  • media/audio-delete-while-slider-thumb-clicked.html:
  • media/audio-repaint.html:
  • media/click-placeholder-not-pausing.html:
  • media/click-volume-bar-not-pausing.html:
  • media/controls-after-reload.html:
  • media/controls-drag-timebar.html:
  • media/controls-right-click-on-timebar.html:
  • media/controls-strict.html:
  • media/controls-styling.html:
  • media/controls-without-preload.html:
  • media/controls/airplay-controls.html:
  • media/controls/airplay-picker.html:
  • media/controls/basic.html:
  • media/controls/elementOrder.html:
  • media/controls/forced-tracks-only.html:
  • media/controls/fullscreen-button-inline-layout.html:
  • media/controls/inline-elements-dropoff-order.html:
  • media/controls/picture-in-picture.html:
  • media/controls/pip-placeholder-without-video-controls.html:
  • media/controls/showControlsButton.html:
  • media/controls/statusDisplay.html:
  • media/controls/statusDisplayBad.html:
  • media/controls/track-menu.html:
  • media/mac/controls-panel-not-clipped-out-expected.html:
  • media/mac/controls-panel-not-clipped-out.html:
  • media/media-captions-no-controls.html:
  • media/media-controller-drag-crash.html:
  • media/media-controls-accessibility.html:
  • media/media-controls-cancel-events.html:
  • media/media-controls-clone.html:
  • media/media-controls-drag-timeline-set-controls-property.html:
  • media/media-controls-timeline-updates-after-playing.html:
  • media/media-controls-timeline-updates-when-hovered.html:
  • media/media-controls-timeline-updates.html:
  • media/media-document-audio-controls-visible.html:
  • media/media-document-audio-repaint.html:
  • media/media-fullscreen-return-to-inline.html:
  • media/modern-media-controls/airplay-button/airplay-button-on.html:
  • media/modern-media-controls/airplay-button/airplay-button.html:
  • media/modern-media-controls/airplay-placard/airplay-placard-text-section.html:
  • media/modern-media-controls/audio/audio-controls-buttons-expected.txt:
  • media/modern-media-controls/audio/audio-controls-buttons.html:
  • media/modern-media-controls/audio/audio-controls-metrics.html:
  • media/modern-media-controls/button/button.html:
  • media/modern-media-controls/buttons-container/buttons-container-buttons-property.html:
  • media/modern-media-controls/forward-button/forward-button.html:
  • media/modern-media-controls/fullscreen-button/fullscreen-button.html:
  • media/modern-media-controls/fullscreen-support/fullscreen-support-click.html:
  • media/modern-media-controls/fullscreen-support/ipad/fullscreen-support-tap-expected.txt: Added.
  • media/modern-media-controls/fullscreen-support/ipad/fullscreen-support-tap.html: Added.
  • media/modern-media-controls/icon-button/icon-button-active-state.html:
  • media/modern-media-controls/icon-button/icon-button-on.html:
  • media/modern-media-controls/icon-button/icon-button.html:
  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-buttons-styles.html:
  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-controls-bar-styles.html:
  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-layout.html:
  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-time-control-styles.html:
  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-dropping-controls.html:
  • media/modern-media-controls/layout-node/addChild.html:
  • media/modern-media-controls/layout-node/children.html:
  • media/modern-media-controls/layout-node/height.html:
  • media/modern-media-controls/layout-node/insertAfter.html:
  • media/modern-media-controls/layout-node/insertBefore.html:
  • media/modern-media-controls/layout-node/node-made-dirty-during-layout.html:
  • media/modern-media-controls/layout-node/remove.html:
  • media/modern-media-controls/layout-node/removeChild.html:
  • media/modern-media-controls/layout-node/subclassing.html:
  • media/modern-media-controls/layout-node/visible.html:
  • media/modern-media-controls/layout-node/width.html:
  • media/modern-media-controls/layout-node/x.html:
  • media/modern-media-controls/layout-node/y.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-containers-styles.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-styles.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-controls-bar-styles.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-right-container-margin.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-time-control-styles.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-volume-styles.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-buttons-styles.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-controls-bar-styles.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-layout.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-status-label.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-time-control-styles.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-volume-styles.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-dropping-controls.html:
  • media/modern-media-controls/media-controller/media-controller-auto-hide-mouse-enter-and-mouse-leave.html:
  • media/modern-media-controls/media-controller/media-controller-auto-hide-mouse-enter-over-controls-bar.html:
  • 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:
  • media/modern-media-controls/media-controller/media-controller-auto-hide-rewind-with-mouse-enter.html:
  • media/modern-media-controls/media-controller/media-controller-auto-hide.html:
  • media/modern-media-controls/media-controller/media-controller-fade-controls-when-entering-fullscreen.html:
  • media/modern-media-controls/media-controller/media-controller-fullscreen-ltr.html:
  • media/modern-media-controls/media-controller/media-controller-inline-to-fullscreen-to-inline.html:
  • media/modern-media-controls/media-controller/media-controller-inline-to-fullscreen-to-pip-to-inline.html:
  • media/modern-media-controls/media-controller/media-controller-resize.html:
  • media/modern-media-controls/media-controller/media-controller-scale-factor.html:
  • media/modern-media-controls/media-controller/media-controller-single-container.html:
  • media/modern-media-controls/mute-button/mute-button.html:
  • media/modern-media-controls/pip-button/pip-button.html:
  • media/modern-media-controls/pip-placard/pip-placard-text-section.html:
  • media/modern-media-controls/pip-support/ipad/pip-support-enabled-expected.txt: Added.
  • media/modern-media-controls/pip-support/ipad/pip-support-enabled.html: Copied from LayoutTests/media/modern-media-controls/pip-support/pip-support-enabled.html.
  • media/modern-media-controls/pip-support/ipad/pip-support-tap-expected.txt: Added.
  • media/modern-media-controls/pip-support/ipad/pip-support-tap.html: Copied from LayoutTests/media/modern-media-controls/pip-support/pip-support-click.html.
  • media/modern-media-controls/pip-support/pip-support-click.html:
  • media/modern-media-controls/pip-support/pip-support-enabled.html:
  • media/modern-media-controls/placard-support/ipad/placard-support-pip-expected.txt: Copied from LayoutTests/media/modern-media-controls/placard-support/placard-support-airplay-expected.txt.
  • media/modern-media-controls/placard-support/ipad/placard-support-pip.html: Added.
  • media/modern-media-controls/placard-support/placard-support-airplay-expected.txt:
  • media/modern-media-controls/play-pause-button/play-pause-button.html:
  • media/modern-media-controls/playback-support/playback-support-button-click-expected.txt:
  • media/modern-media-controls/playback-support/playback-support-button-click.html:
  • media/modern-media-controls/resources/media-controls-utils.js:

(pressOnElement):
(finishMediaControlsTest):

  • media/modern-media-controls/rewind-button/rewind-button.html:
  • media/modern-media-controls/scheduler/not-reentrant.html:
  • media/modern-media-controls/scheduler/single-callback-when-registered-multiple-times.html:
  • media/modern-media-controls/scrubber-support/ipad/scrubber-support-drag-expected.txt: Copied from LayoutTests/media/modern-media-controls/scrubber-support/scrubber-support-drag-expected.txt.
  • media/modern-media-controls/scrubber-support/ipad/scrubber-support-drag.html: Added.
  • media/modern-media-controls/scrubber-support/scrubber-support-click.html:
  • media/modern-media-controls/scrubber-support/scrubber-support-drag-expected.txt:
  • media/modern-media-controls/scrubber-support/scrubber-support-drag.html:
  • media/modern-media-controls/seek-backward-support/seek-backward-support.html:
  • media/modern-media-controls/seek-forward-support/seek-forward-support.html:
  • media/modern-media-controls/skip-back-button/skip-back-button.html:
  • media/modern-media-controls/slider/slider-fill.html:
  • media/modern-media-controls/slider/slider-styles.html:
  • media/modern-media-controls/start-support/start-support-click-to-start-expected.txt:
  • media/modern-media-controls/start-support/start-support-click-to-start.html:
  • media/modern-media-controls/status-label/status-label-font.html:
  • media/modern-media-controls/status-label/status-label-text-selection.html:
  • media/modern-media-controls/status-label/status-label.html:
  • media/modern-media-controls/time-label/time-label.html:
  • media/modern-media-controls/tracks-button/tracks-button.html:
  • media/modern-media-controls/tracks-panel/tracks-panel-right-x.html:
  • media/modern-media-controls/tracks-panel/tracks-panel-select-track-with-keyboard.html:
  • media/modern-media-controls/tracks-support/tracks-support-click-track-in-panel.html:
  • media/modern-media-controls/tracks-support/tracks-support-show-and-populate-panel.html:
  • media/modern-media-controls/tracks-support/tracks-support-show-panel-after-dragging-controls-expected.txt:
  • media/modern-media-controls/tracks-support/tracks-support-show-panel-after-dragging-controls.html:
  • media/modern-media-controls/tracks-support/tracks-support-show-panel-fullscreen.html:
  • media/modern-media-controls/volume-slider/volume-slider-value.html:
  • media/modern-media-controls/volume-support/volume-support-click.html:
  • media/modern-media-controls/volume-support/volume-support-drag.html:
  • media/nodesFromRect-shadowContent.html:
  • media/progress-events-generated-correctly.html:
  • media/require-user-gesture-to-load-video.html:
  • media/tab-focus-inside-media-elements.html:
  • media/track/track-cue-rendering-horizontal.html:
  • media/track/track-cue-rendering-vertical.html:
  • media/track/track-cues-cuechange.html:
  • media/track/track-cues-enter-exit.html:
  • media/track/track-in-band-duplicate-tracks-when-source-changes.html:
  • media/track/track-manual-mode.html:
  • media/video-controls-audiotracks-trackmenu.html:
  • media/video-controls-captions-trackmenu-localized.html:
  • media/video-controls-captions-trackmenu-only-captions-descriptions-and-subtitles.html:
  • media/video-controls-captions-trackmenu-sorted.html:
  • media/video-controls-captions-trackmenu.html:
  • media/video-controls-drop-and-restore-timeline.html:
  • media/video-controls-in-media-document.html:
  • media/video-controls-no-display-with-text-track.html:
  • media/video-controls-rendering.html:
  • media/video-controls-show-on-kb-or-ax-event.html:
  • media/video-controls-toggling.html:
  • media/video-controls-transformed.html:
  • media/video-controls-visible-audio-only.html:
  • media/video-controls-visible-exiting-fullscreen.html:
  • media/video-controls-zoomed.html:
  • media/video-display-toggle.html:
  • media/video-empty-source.html:
  • media/video-fullscreeen-only-controls.html:
  • media/video-fullscreeen-only-playback.html:
  • media/video-initially-hidden-volume-slider-up.html:
  • media/video-no-audio.html:
  • media/video-play-audio-require-user-gesture.html:
  • media/video-play-require-user-gesture.html:
  • media/video-trackmenu-selection.html:
  • media/video-volume-slider-drag.html:
  • media/video-volume-slider.html:
  • media/video-zoom-controls.html:
  • media/volume-bar-empty-when-muted.html:
  • platform/gtk/TestExpectations:
  • platform/ios-simulator/TestExpectations:
  • platform/ios-simulator/media/video-play-glyph-composited-outside-overflow-scrolling-touch-container.html:
  • platform/mac-wk1/TestExpectations:
  • platform/mac/TestExpectations:
3:43 AM Changeset in webkit [210958] by gskachkov@gmail.com
  • 8 edits in trunk

Super property access in base class constructor doesn't work
https://bugs.webkit.org/show_bug.cgi?id=166665

Reviewed by Ryosuke Niwa.

Source/JavaScriptCore:

Allow to use super inside of the constructor for classes
without parent class.
Parser checks if super used within the constructor and
add this information to function metedata, and later it is used
during byte code generation.

  • bytecompiler/NodesCodegen.cpp:

(JSC::ClassExprNode::emitBytecode):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseFunctionBody):
(JSC::Parser<LexerType>::parseFunctionInfo):

  • parser/Parser.h:

(JSC::Scope::usesEval):
(JSC::Scope::fillParametersForSourceProviderCache):
(JSC::Scope::restoreFromSourceProviderCache):
(JSC::Parser::adjustSuperBindingForBaseConstructor):

  • parser/SourceProviderCacheItem.h:

(JSC::SourceProviderCacheItem::SourceProviderCacheItem):

LayoutTests:

  • js/class-syntax-super-expected.txt:
  • js/script-tests/class-syntax-super.js:
1:28 AM Changeset in webkit [210957] by Chris Dumez
  • 4 edits in trunk/LayoutTests/imported/w3c

Re-sync innerText web-platform-tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=167229

Reviewed by Alex Christensen.

Re-sync innerText web-platform-tests from upstream 1a36aa52.

  • web-platform-tests/innerText/setter-expected.txt:
  • web-platform-tests/innerText/setter-tests.js:
  • web-platform-tests/innerText/setter.html:
12:11 AM Changeset in webkit [210956] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.15.3

WebKitGTK+ 2.15.3

12:09 AM Changeset in webkit [210955] by Carlos Garcia Campos
  • 4 edits in trunk

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.15.3 release.

.:

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

Source/WebKit2:

  • gtk/NEWS: Add release notes for 2.15.3.

Jan 19, 2017:

10:55 PM Changeset in webkit [210954] by Carlos Garcia Campos
  • 6 edits in trunk/Source/WebKit2

[Threaded Compositor] Initialize the threaded compositor with the current size
https://bugs.webkit.org/show_bug.cgi?id=167196

Reviewed by Žan Doberšek.

We are always creating the threaded compositor with an empty size and then a sizeDidChange always happen when
the backing store state changes. This is always happening because the threaded compositor is created before the
first backing store state, but if we wanted to create it later, for example to enter/leave AC mode on demand,
the threaded compositor will not have the viewport size unless the window is resized, or sizeDidChange is called
manually when entering AC mode. Creating the threaded compositor is sync and changing the size too, so it's
better to do both things at the same time using the same sync operation.

  • Shared/CoordinatedGraphics/SimpleViewportController.cpp:

(WebKit::SimpleViewportController::SimpleViewportController): Pass an initial size to the constructor.

  • Shared/CoordinatedGraphics/SimpleViewportController.h:
  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:

(WebKit::ThreadedCompositor::create): Add viewportSize and scaleFactor construction parameters,
(WebKit::ThreadedCompositor::ThreadedCompositor): Ditto. Also mark as needs resize if the given size is not empty.

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
  • WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:

(WebKit::ThreadedCoordinatedLayerTreeHost::ThreadedCoordinatedLayerTreeHost): Initialize the threaded compositor
with an initial viewport size and scale factor.

10:42 PM Changeset in webkit [210953] by rniwa@webkit.org
  • 3 edits in trunk/Websites/perf.webkit.org

measurement-sets API can incorrectly order points with OS version without commit time
https://bugs.webkit.org/show_bug.cgi?id=167227

Reviewed by Chris Dumez.

Ignore revision_order for the purpose of ordering data points in /api/measurement-sets.

These orderings are used in some UI (e.g A/B testing) to order OS build numbers which do not have a timestamp
associated with each "revision".

The baseline measurements made in our internal dashboard were using these ordering numbers before ordering
results with build time. Because those data points don't have an associated Webkit revisions, all data points
were ordered first by macOS's revision_order, then build time. Because v3 UI completely ignores revision_order
for the purpose of plotting data points, this resulted in some data points being plotted in a wrong order
with some lines going backwards in time.

This patch addresses this discrepancy by stop ordering data points with revision_order in the JSON API.

  • public/api/measurement-set.php:

(MeasurementSetFetcher::execute_query): Fixed the bug.

  • server-tests/api-measurement-set-tests.js: Added a test.
9:11 PM Changeset in webkit [210952] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Build fix after r210626. We need to clear Triggerable's static map in each iteration.

  • tools/sync-buildbot.js:

(syncLoop):

7:56 PM Changeset in webkit [210951] by commit-queue@webkit.org
  • 3 edits
    4 adds in trunk

REGRESSION(r206156): Animated images are repeated one extra iteration than the value which is saved in the image file
https://bugs.webkit.org/show_bug.cgi?id=167174

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-01-19
Reviewed by Simon Fraser.

Source/WebCore:

Before r206156, BitmapImage::repetitionCount() used to return zero for
the case loopCount = 1, -1 for loopCount = Infinity and loopCount for
all other cases. Having repetitionCount() return zero for loopCount = 1
makes the condition if (++m_repetitionsComplete > repetitionCount())
break the animation loop after one iteration. But it was wrong for all
loopCount > 1. It was causing an extra iteration to be played for the
animated image. After r206156, BitmapImage::repetitionCount() returns
loopCount for all cases loopCount != Infinity. Keeping the same condition
causes the extra iteration to be played even for loopCount = 1.

Test: fast/images/animated-image-loop-count.html

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::internalStartAnimation):

LayoutTests:

  • fast/images/animated-image-loop-count-expected.html: Added.
  • fast/images/animated-image-loop-count.html: Added.
  • fast/images/resources/animated-red-green-blue-repeat-1.gif: Added.
  • fast/images/resources/animated-red-green-blue-repeat-2.gif: Added.

Ensure the animated image stops animating after loopCount iterations.

7:49 PM Changeset in webkit [210950] by commit-queue@webkit.org
  • 2 edits in trunk/Websites/webkit.org

Include SubtleCrypto test on experimental-features test page
https://bugs.webkit.org/show_bug.cgi?id=167226

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-19
Reviewed by Yusuke Suzuki.

  • experimental-features.html:

Add a test for SubtleCrypto and make the test resilient against exceptions.

7:23 PM Changeset in webkit [210949] by Chris Dumez
  • 29 edits in trunk

iterable<> should be enabled on WK1
https://bugs.webkit.org/show_bug.cgi?id=167221
<rdar://problem/30108531>

Reviewed by Youenn Fablet.

Source/JavaScriptCore:

  • runtime/CommonIdentifiers.h:

Source/WebCore:

  • Modules/fetch/FetchHeaders.idl:
  • bindings/scripts/test/JS/JSTestNode.cpp:

(WebCore::JSTestNodePrototype::finishCreation):

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

(WebCore::JSTestObjPrototype::finishCreation):

  • bindings/scripts/test/TestNode.idl:
  • bindings/scripts/test/TestObj.idl:
  • css/FontFaceSet.idl:
  • dom/NodeList.idl:

Source/WebKit/mac:

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

(-[WebPreferences setCustomElementsEnabled:]):
(-[WebPreferences DOMIteratorEnabled]): Deleted.
(-[WebPreferences setDOMIteratorEnabled:]): Deleted.

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

(-[WebView _preferencesChanged:]):

Source/WebKit/win:

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

(WebPreferences::setDOMIteratorEnabled): Deleted.
(WebPreferences::domIteratorEnabled): Deleted.

  • WebPreferences.h:
  • WebView.cpp:

(WebView::notifyPreferencesChanged):

Source/WebKit2:

  • Shared/WebPreferencesDefinitions.h:
  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Tools:

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebPreferencesToConsistentValues):

  • DumpRenderTree/win/DumpRenderTree.cpp:

(resetWebPreferencesToConsistentValues):

  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::beginTesting):

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setDOMIteratorEnabled): Deleted.

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
6:52 PM Changeset in webkit [210948] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Simple line layout: Extend coverage for justified content.
https://bugs.webkit.org/show_bug.cgi?id=167219
<rdar://problem/30108391>

Reviewed by Antti Koivisto.

Source/WebCore:

Add support for general punctuation characters (0x2010, 0x2027) and latin characters including Extended-B.

Test: fast/text/simple-line-layout-with-justified-punctuation.html

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseForText):
(WebCore::SimpleLineLayout::canUseForFontAndText):

LayoutTests:

  • fast/text/simple-line-layout-with-justified-punctuation-expected.html: Added.
  • fast/text/simple-line-layout-with-justified-punctuation.html: Added.
6:38 PM Changeset in webkit [210947] by fpizlo@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

Structure::pin() needs to be called while holding a lock
https://bugs.webkit.org/show_bug.cgi?id=167220

Reviewed by Saam Barati.

Imagine this race: the mutator calls pin() and the collector calls visitChildren(),
on the same Structure at the same time. In trunk pin() does not require a lock to be
held and it doesn't grab any locks. Meanwhile visitChildren() grabs the lock, checks
if the structure is pinned, and if not, it removes it by overwriting with zero. Now
imagine how this plays out when pin() runs. Since pin() grabs no locks, it is
irrelevant that visitChildren() grabs any locks. So, visitChildren() might check if
the table is pinned before pin() pins it, and then clear the table after it was
already pinned.

The problem here is that pin() should be holding a lock. We could either make pin()
grab that lock by itself, or what this patch does is makes the caller grab the lock.
This is great because it means that sometimes we don't have to introduce any new
locking.

This fixes a materializePropertyTable() checkOffsetConsistency() crash that happens
very rarely, but I was able to get it to reproduce with run-webkit-tests and
aggressive GC settings.

  • runtime/ConcurrentJSLock.h:
  • runtime/Structure.cpp:

(JSC::Structure::materializePropertyTable):
(JSC::Structure::changePrototypeTransition):
(JSC::Structure::attributeChangeTransition):
(JSC::Structure::toDictionaryTransition):
(JSC::Structure::nonPropertyTransition):
(JSC::Structure::pin):
(JSC::Structure::pinForCaching):
(JSC::Structure::add):

  • runtime/Structure.h:
  • runtime/StructureInlines.h:

(JSC::Structure::checkOffsetConsistency):
(JSC::Structure::add):
(JSC::Structure::addPropertyWithoutTransition):

5:35 PM Changeset in webkit [210946] by achristensen@apple.com
  • 10 edits in trunk

Construct URLSearchParams from array or object
https://bugs.webkit.org/show_bug.cgi?id=166973

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

  • web-platform-tests/url/urlsearchparams-constructor-expected.txt:

Source/WebCore:

Covered by newly passing web platform tests.

  • html/URLSearchParams.cpp:

(WebCore::URLSearchParams::URLSearchParams):
(WebCore::URLSearchParams::create):
(WebCore::URLSearchParams::get):
(WebCore::URLSearchParams::has):
(WebCore::URLSearchParams::sort):
(WebCore::URLSearchParams::set):
(WebCore::URLSearchParams::getAll):
(WebCore::URLSearchParams::remove):
(WebCore::URLSearchParams::Iterator::next):

  • html/URLSearchParams.h:

(WebCore::URLSearchParams::create):
(WebCore::URLSearchParams::pairs):
(WebCore::URLSearchParams::operator const Vector<std::pair<String, String>>&): Deleted.

  • html/URLSearchParams.idl:
  • platform/URLParser.cpp:

(WebCore::URLParser::serialize):

  • platform/URLParser.h:

Source/WebKit2:

  • NetworkProcess/capture/NetworkCaptureManager.cpp:

(WebKit::NetworkCapture::Manager::fuzzyMatchURLs):
Change std::pair's first/second to WTF::KeyValuePair's key/value.

5:09 PM Changeset in webkit [210945] by jer.noble@apple.com
  • 3 edits
    2 adds in trunk

CRASH at WebCore::TrackListBase::remove
https://bugs.webkit.org/show_bug.cgi?id=167217

Reviewed by Brent Fulgham.

Source/WebCore:

Test: media/media-source/media-source-error-crash.html

In very specific conditions, a HTMLMediaElement backed by a MediaSource can try to remove
the same track from its track list twice. If there are two SourceBuffers attached to a
HTMLMediaElement, and one has not yet been initialized, when the second fails to parse an
appended buffer after receiving an initialization segment, the HTMLMediaElement will remove
all its tracks in mediaLoadingFailed(), then MediaSource object itself will attempt remove
the same track in removeSourceBuffer().

Solving this the safest way possible: bail early from TrackListBase if asked to remove a
track which the list does not contain.

  • html/track/TrackListBase.cpp:

(TrackListBase::remove):

LayoutTests:

  • media/media-source/media-source-error-crash-expected.txt: Added.
  • media/media-source/media-source-error-crash.html: Added.
4:56 PM Changeset in webkit [210944] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Ensure status server logs go to log file
https://bugs.webkit.org/show_bug.cgi?id=167210

Reviewed by Alexey Proskuryakov.

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

(StatusServer.next_work_item): Change log level from debug to info in
order to facilitate deubgging issues.
(StatusServer.update_work_items): Same.

4:23 PM Changeset in webkit [210943] by aestes@apple.com
  • 6 edits
    1 copy
    1 add in trunk/Source

Source/WebCore:
[iOS] Move the PDF password view into its own class for reuse
https://bugs.webkit.org/show_bug.cgi?id=167192

Reviewed by Tim Horton.

  • English.lproj/Localizable.strings: Updated the failure alert strings to not be specific to PDFs.

Source/WebKit2:
[iOS] Move the PDF password view into its own class for possible reuse
https://bugs.webkit.org/show_bug.cgi?id=167192

Reviewed by Tim Horton.

  • UIProcess/ios/WKPDFView.h: Stopped conforming to UIDocumentPasswordViewDelegate.
  • UIProcess/ios/WKPDFView.mm: Changed _passwordView to a WKPasswordView.

(-[WKPDFView _passwordViewFrame]): Returns the frame to set on _passwordView.
(-[WKPDFView _updatePasswordEntryField]): Removed.
(-[WKPDFView _showPasswordEntryField]): Created a WKPasswordView, set a lambda on its
userDidEnterPassword property to do the work previously done in -_tryToUnlockWithPassword:,
and showed the password view.
(-[WKPDFView _keyboardDidShow:]): Moved to WKPasswordView.
(-[WKPDFView _hidePasswordEntryField]): Deleted. The userDidEnterPassword lambda now calls
-[WKPasswordView hide] when the document is unlocked.
(-[WKPDFView userDidEnterPassword:forPasswordView:]): Moved to WKPasswordView.
(-[WKPDFView didBeginEditingPassword:inView:]): Ditto.
(-[WKPDFView didEndEditingPassword:inView:]): Ditto.
(-[WKPDFView _didFailToUnlock]): Ditto.
(-[WKPDFView _tryToUnlockWithPassword:]): Moved into _passwordView's userDidEnterPassword lambda.

  • UIProcess/ios/WKPasswordView.h: Added.
  • UIProcess/ios/WKPasswordView.mm: Added.

(-[WKPasswordView initWithFrame:documentName:]): Created a UIDocumentPasswordView with
documentName, set self as its passwordDelegate, and added it as a subview.
(-[WKPasswordView layoutSubviews]): Updated _scrollView's contentSize if we are displaying
the view.
(-[WKPasswordView displayInContentView:]): Saved the scroll view's previous minimum/maximum
zoom scale and color, set new values for minimum/maximum zoom scale and color, and added
self as a subview of contentView.
(-[WKPasswordView hide]): Restored the saved minimum/maximum zoom scale and color on the
scroll view and removed self from its superview.
(-[WKPasswordView displayPasswordFailureAlert]): Displayed the alert previously shown by
-[WKPDFView _didFailToUnlock].
(-[WKPasswordView _keyboardDidShow:]): Moved from WKPDFView.
(-[WKPasswordView userDidEnterPassword:forPasswordView:]): Retained self and called the
_userDidEnterPassword block with the password.
(-[WKPasswordView didBeginEditingPassword:inView:]): Moved from WKPDFView.
(-[WKPasswordView didEndEditingPassword:inView:]): Ditto.

  • WebKit2.xcodeproj/project.pbxproj:
3:43 PM Changeset in webkit [210942] by achristensen@apple.com
  • 11208 adds in trunk/Source/ThirdParty/libwebrtc

Source/ThirdParty/libwebrtc:
[WebRTC] Upload libwebrtc code base
https://bugs.webkit.org/show_bug.cgi?id=167205

Patch by Youenn Fablet <youenn@apple.com> on 2017-01-19
Reviewed by Alex Christensen and Jon Lee.

Add initial libwebrtc source from branch 56. Here's how to get what we committed:
git clone https://chromium.googlesource.com/external/webrtc.git && cd webrtc && git checkout 7bf536976366443ea59153ff3d22da0ec32badc1

Source/ThirdParty/libwebrtc/Source/third_party/opus/src:

3:30 PM Changeset in webkit [210941] by Megan Gardner
  • 3 edits
    6 adds in trunk

Additional selection tests and interpolation fix
https://bugs.webkit.org/show_bug.cgi?id=167171

Reviewed by Simon Fraser.

Tools:

We weren't adding the final event when interpolating event streams.

  • WebKitTestRunner/ios/HIDEventGenerator.mm:

(-[HIDEventGenerator interpolatedEvents:]):

LayoutTests:

Selections tests for dragging left and right.
Factored out common functions used across tests.

  • fast/events/touch/ios/long-press-then-drag-left-to-change-selected-text-expected.txt: Added.
  • fast/events/touch/ios/long-press-then-drag-left-to-change-selected-text.html: Added.
  • fast/events/touch/ios/long-press-then-drag-right-to-change-selected-text-expected.txt: Added.
  • fast/events/touch/ios/long-press-then-drag-right-to-change-selected-text.html: Added.
  • fast/events/touch/ios/resources: Added.
  • fast/events/touch/ios/resources/basic-gestures.js: Added.

(pressAtPoint):
(dragFromPointToPoint):

3:09 PM Changeset in webkit [210940] by jmarcell@apple.com
  • 5 edits in trunk/Source

Versioning.

3:04 PM Changeset in webkit [210939] by Chris Dumez
  • 10 edits
    5 adds in trunk

Make sure HTML validation bubble gets dismissed when its associated element's frame gets detached
https://bugs.webkit.org/show_bug.cgi?id=167215
<rdar://problem/29885052>

Reviewed by Andreas Kling.

Source/WebCore:

Make sure HTML validation bubble gets dismissed when its associated
element's frame gets detached and that we do not crash.

Tests: fast/forms/validation-message-detached-iframe.html

fast/forms/validation-message-detached-iframe2.html

  • dom/Document.cpp:

(WebCore::Document::prepareForDestruction):

  • page/ValidationMessageClient.h:

Source/WebKit/mac:

Make sure HTML validation bubble gets dismissed when its associated
element's frame gets detached and that we do not crash.

  • WebCoreSupport/WebValidationMessageClient.h:
  • WebCoreSupport/WebValidationMessageClient.mm:

(WebValidationMessageClient::documentDetached):

Source/WebKit2:

Make sure HTML validation bubble gets dismissed when its associated
element's frame gets detached and that we do not crash.

  • WebProcess/WebCoreSupport/WebValidationMessageClient.cpp:

(WebKit::WebValidationMessageClient::documentDetached):

  • WebProcess/WebCoreSupport/WebValidationMessageClient.h:

LayoutTests:

Add layout test coverage.

  • fast/forms/resources/form-validation-iframe.html: Added.
  • fast/forms/validation-message-detached-iframe-expected.txt: Added.
  • fast/forms/validation-message-detached-iframe.html: Added.
  • fast/forms/validation-message-detached-iframe2-expected.txt: Added.
  • fast/forms/validation-message-detached-iframe2.html: Added.
2:58 PM Changeset in webkit [210938] by rniwa@webkit.org
  • 6 edits
    1 add in trunk/Websites/perf.webkit.org

Add a mechanism to dispatch and listen to an action
https://bugs.webkit.org/show_bug.cgi?id=167191

Reviewed by Antti Koivisto.

Added the notion of an action to components. Like DOM events, it can be dispatched or listen to.

Also added ComponentBase.prototype.part which finds a sub-component inside a component's shadow tree,
and made ComponentBase.prototype.content take an id to find an element that matches it.

  • browser-tests/close-button-tests.js: Added. Tests for CloseButton.
  • browser-tests/component-base-tests.js: Added tests for ComponentBase's part(~), content(id), dispatchEvent.
  • browser-tests/index.html:
  • public/v3/components/base.js:

(ComponentBase): Added this._actionCallbacks, which is a map of an action name to a callback to be invoked.
(ComponentBase.prototype.content): Return an element of the given id if one is specified.
(ComponentBase.prototype.part): Find a component whose element has the matching id.
(ComponentBase.prototype.dispatchAction): Added.
(ComponentBase.prototype.listenToAction): Added.
(ComponentBase.prototype._ensureShadowTree): Call didConstructShadowTree.
(ComponentBase.prototype.didConstructShadowTree): Added.
(ComponentBase.prototype._recursivelyReplaceUnknownElementsByComponents): Copy attributes when instantiating
an element for a component when the browser doesn't support custom elements API.
(ComponentBase.createLink):
(ComponentBase.prototype.createEventHandler): Added.
(ComponentBase.createEventHandler): Renamed from createActionHandler.

  • public/v3/components/button-base.js:

(ButtonBase.prototype.didConstructShadowTree): Added. Dispatch "activate" action when the button is clicked.
(ButtonBase.prototype.setCallback): Deleted.
(ButtonBase.htmlTemplate): Use id instead of class so that this.content() can find it.
(ButtonBase.cssTemplate): Updated style rules.

  • public/v3/pages/chart-pane.js:

(ChartPane):
(ChartPane.prototype.didConstructShadowTree): Added. Listen to "activate" action on the close button.
(ChartPane.prototype.render): Fixed a bug that we were never calling enqueueToRender on the close button.
(ChartPane.htmlTemplate): Add the id on the close button.

1:35 PM Changeset in webkit [210937] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skipping three crashing pointer lock tests.
https://bugs.webkit.org/show_bug.cgi?id=166765

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
1:33 PM Changeset in webkit [210936] by Chris Dumez
  • 19 edits
    2 copies
    2 adds in trunk/Source

Implement per activity state CPU usage reporting using diagnostic logging
https://bugs.webkit.org/show_bug.cgi?id=167163
<rdar://problem/30058349>

Reviewed by Andreas Kling.

Implement per activity state CPU usage reporting using diagnostic logging.

Source/WebCore:

  • WebCore.xcodeproj/project.pbxproj:
  • page/ActivityState.h:
  • page/ChromeClient.h:
  • page/DiagnosticLoggingKeys.cpp:

(WebCore::DiagnosticLoggingKeys::nonVisibleStateKey):
(WebCore::DiagnosticLoggingKeys::visibleNonActiveStateKey):
(WebCore::DiagnosticLoggingKeys::visibleAndActiveStateKey):
(WebCore::DiagnosticLoggingKeys::foregroundCPUUsageToDiagnosticLogginKey):
(WebCore::DiagnosticLoggingKeys::backgroundCPUUsageToDiagnosticLogginKey):

  • page/DiagnosticLoggingKeys.h:
  • page/Page.cpp:

(WebCore::isUtilityPageChromeClient):
(WebCore::Page::Page):
(WebCore::Page::~Page):
(WebCore::Page::didStartProvisionalLoad):
(WebCore::Page::didFinishLoad):
(WebCore::Page::isUtilityPage):
(WebCore::Page::setActivityState):
(WebCore::Page::setIsVisibleInternal):

  • page/Page.h:

(WebCore::Page::activityState):
(WebCore::Page::isUtilityPage):

  • page/PerformanceMonitor.cpp: Added.

(WebCore::activityStateForCPUSampling):
(WebCore::PerformanceMonitor::PerformanceMonitor):
(WebCore::PerformanceMonitor::didStartProvisionalLoad):
(WebCore::PerformanceMonitor::didFinishLoad):
(WebCore::PerformanceMonitor::activityStateChanged):
(WebCore::PerformanceMonitor::measurePostLoadCPUUsage):
(WebCore::PerformanceMonitor::measurePostBackgroundingCPUUsage):
(WebCore::PerformanceMonitor::measurePerActivityStateCPUUsage):
(WebCore::stringForCPUSamplingActivityState):
(WebCore::PerformanceMonitor::measureCPUUsageInActivityState):

  • page/PerformanceMonitor.h: Copied from Source/WebCore/page/ActivityState.h.
  • page/Settings.cpp:
  • page/Settings.h:

(WebCore::Settings::isPostLoadCPUUsageMeasurementEnabled):
(WebCore::Settings::isPostBackgroundingCPUUsageMeasurementEnabled):
(WebCore::Settings::isPerActivityStateCPUUsageMeasurementEnabled):

Source/WebKit2:

  • Platform/Logging.h:
  • UIProcess/PerActivityStateCPUUsageSampler.cpp: Added.

(WebKit::PerActivityStateCPUUsageSampler::PerActivityStateCPUUsageSampler):
(WebKit::PerActivityStateCPUUsageSampler::~PerActivityStateCPUUsageSampler):
(WebKit::PerActivityStateCPUUsageSampler::reportWebContentCPUTime):
(WebKit::loggingKeyForActivityState):
(WebKit::loggingKeyForCPUUsage):
(WebKit::PerActivityStateCPUUsageSampler::loggingTimerFired):
(WebKit::PerActivityStateCPUUsageSampler::pageForLogging):

  • UIProcess/PerActivityStateCPUUsageSampler.h: Copied from Source/WebCore/page/ActivityState.h.
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::WebProcessPool):
(WebKit::WebProcessPool::reportWebContentCPUTime):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessPool.messages.in:
  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::reportProcessCPUTime):

  • WebProcess/WebCoreSupport/WebChromeClient.h:
12:53 PM Changeset in webkit [210935] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

The mutator needs to fire a barrier after memmoving stuff around in an object that the GC scans
https://bugs.webkit.org/show_bug.cgi?id=167208

Reviewed by Saam Barati.

It used to be that if you moved a value from one place to another in the same object
then there is no need for a barrier because the generational GC would have no need to
know that some old object still continues to refer to the same other old object.

But the concurrent GC might scan that object as the mutator moves pointers around in
it. If the ordering is right, this could mean that the collector never sees some of
those pointers. This can be fixed by adding a barrier.

This fixes the most obvious cases I found. There may be more and I'll continue to
audit. Most of the other memmove users seem to already use some kind of synchronization
to prevent this. For example, this can also be fixed by just holding the cell lock
around the memmove since we're dealing with indexing storage and the GC reads that
under the cell lock.

  • runtime/JSArray.cpp:

(JSC::JSArray::shiftCountWithAnyIndexingType):
(JSC::JSArray::unshiftCountWithAnyIndexingType):

12:21 PM Changeset in webkit [210934] by timothy@hatcher.name
  • 2 edits in trunk/Websites/webkit.org

Add Tesla to the domain associations on the team page
https://bugs.webkit.org/show_bug.cgi?id=167202

Reviewed by Brian Burg.

  • wp-content/themes/webkit/team.php:
11:25 AM Changeset in webkit [210933] by mitz@apple.com
  • 2 edits in trunk/Source/WebKit2

Build fix.

Rubber-stamped by Anders Carlsson.

  • UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:

(WebKit::toPKPaymentAuthorizationStatus): Suppressed deprecation warnings.

11:24 AM Changeset in webkit [210932] by mmaxfield@apple.com
  • 10 edits in trunk

[Cocoa] Variation fonts are erroneously disabled on iOS
https://bugs.webkit.org/show_bug.cgi?id=167172

Reviewed by Simon Fraser.

OpenSource builders don't seem to understand sdk=embedded*.

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

  • Configurations/FeatureDefines.xcconfig:

Tools:

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
11:16 AM Changeset in webkit [210931] by timothy@hatcher.name
  • 2 edits in trunk/Websites/bugs.webkit.org

Bugzilla email autocomplete does not work on third email field of advanced search page
https://bugs.webkit.org/show_bug.cgi?id=167204

Reviewed by Alexey Proskuryakov.

  • committers-autocomplete.js: Added email3 to SINGLE_EMAIL_INPUTS list.
10:31 AM Changeset in webkit [210930] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebInspectorUI

Web Inspector: Network Tab's "Clear Network Items" button should have keyboard shortcuts
https://bugs.webkit.org/show_bug.cgi?id=166943

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

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Base/Main.js:

(WebInspector.contentLoaded):
(WebInspector._clear):
Move clear keyboard shortcut to main object and call _handleClearShortcut on the visible
content view if able.

  • UserInterface/Controllers/JavaScriptLogViewController.js:

(WebInspector.JavaScriptLogViewController):
(WebInspector.JavaScriptLogViewController.prototype.requestClearMessages):
(WebInspector.JavaScriptLogViewController.prototype._handleClearShortcut): Deleted.

  • UserInterface/Views/LogContentView.js:

(WebInspector.LogContentView):
(WebInspector.LogContentView.prototype.handleClearShortcut):
Move logic for requesting to clear messages from the LogManager to a better named function.

  • UserInterface/Views/NetworkGridContentView.js:

(WebInspector.NetworkGridContentView):
(WebInspector.NetworkGridContentView.prototype.handleClearShortcut):

10:20 AM Changeset in webkit [210929] by andersca@apple.com
  • 2 edits
    1 add in trunk/Source/WebKit2

Install WebKit.apinotes with the public headers of WebKit framework
https://bugs.webkit.org/show_bug.cgi?id=167182
rdar://problem/29008989

Reviewed by Sam Weinig.

  • Shared/API/Cocoa/WebKit.apinotes: Added.
  • WebKit2.xcodeproj/project.pbxproj:
9:59 AM Changeset in webkit [210928] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Dashboard's log/error/warning help tag says "click to show the Console" even when clicking does nothing
https://bugs.webkit.org/show_bug.cgi?id=167102

Patch by Devin Rousso <Devin Rousso> on 2017-01-19
Reviewed by Brian Burg.

  • UserInterface/Base/Main.js:

(WebInspector.showConsoleTab):
Don't revert to the All scopes if the requested scope is already selected.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Views/DefaultDashboardView.js:

(WebInspector.DefaultDashboardView):
(WebInspector.DefaultDashboardView.prototype._appendElementForNamedItem):
(WebInspector.DefaultDashboardView.prototype._setItemEnabled):
Only apply a title to the element when it is enabled.

9:52 AM Changeset in webkit [210927] by BJ Burg
  • 6 edits
    1 move
    4 adds in trunk/Source/WebKit2

Web Inspector: move Mac-specific automation commands to a separate implementation file
https://bugs.webkit.org/show_bug.cgi?id=163297
<rdar://problem/28718990>

Reviewed by Timothy Hatcher.

Not all Automation commands are available on all platforms. Start splitting out
command declarations and implementations based on the target platform.

  • DerivedSources.make:

Set an appropriate --platform so the correct backend interface is generated.

  • UIProcess/Automation/Automation.json:

Guard commands that should not be available on iOS:

  • resizeWindowOfBrowsingContext
  • moveWindowOfBrowsingContext
  • inspectBrowsingContext
  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::platformSimulateKeySequence): Deleted.

  • Move shared convenience macros to header file.
  • Move out Cocoa-only or Mac-only command implementations.
  • UIProcess/Automation/WebAutomationSession.h:

Rearrange some declarations and switch from USE(APPKIT) to PLATFORM(MAC).

  • UIProcess/Automation/WebAutomationSessionMacros.h: Added.
  • UIProcess/Automation/cocoa/WebAutomationSessionCocoa.mm: Added.

(WebKit::WebAutomationSession::platformGetBase64EncodedPNGData):
Moved from WebAutomationSessionCocoa.mm. Add iOS-specific header includes.

  • UIProcess/Automation/mac/WebAutomationSessionMac.mm: Renamed from Source/WebKit2/UIProcess/Cocoa/WebAutomationSessionCocoa.mm.

(WebKit::WebAutomationSession::resizeWindowOfBrowsingContext):
(WebKit::WebAutomationSession::moveWindowOfBrowsingContext):
(WebKit::WebAutomationSession::inspectBrowsingContext):
Move macOS platform command implementations to here. If other desktop ports want
to use these commands, we can move them somewhere else later.

(WebKit::WebAutomationSession::sendSynthesizedEventsToPage):
(WebKit::WebAutomationSession::markEventAsSynthesizedForAutomation):
(WebKit::WebAutomationSession::wasEventSynthesizedForAutomation):
Move out AppKit-specific event simulation code to here.

(WebKit::WebAutomationSession::platformSimulateMouseInteraction):
(WebKit::WebAutomationSession::platformSimulateKeyStroke):
(WebKit::WebAutomationSession::platformSimulateKeySequence):
Move out Mac platformFoo implementations to here.

  • WebKit2.xcodeproj/project.pbxproj:
  • Added UIProcess/Automation/{mac,cocoa} groups.
  • Add new platform-specific implementation files.
9:28 AM Changeset in webkit [210926] by Ryan Haddad
  • 2 edits in trunk/Source/WebCore

Rebaseline bindings tests after r210918.

Unreviewed test gardening.

  • bindings/scripts/test/JS/JSTestObj.cpp:
9:10 AM Changeset in webkit [210925] by gskachkov@gmail.com
  • 5 edits in trunk

"this" missing after await in async arrow function
https://bugs.webkit.org/show_bug.cgi?id=166919

Reviewed by Saam Barati.

Source/JavaScriptCore:

This patch fixed issue in async arrow function. Issue appears because in arrow
function _this_ is loaded from arrow function virtual scope.
Async arrow function can be suspended and when resuming should be used _this_ from
virtual scope, to allow this we load _this_ from virtual scope before store it to
generator.generatorThis property

  • bytecompiler/NodesCodegen.cpp:

(JSC::FunctionNode::emitBytecode):

JSTests:

  • stress/async-arrow-functions-lexical-binding-in-class.js:

(ChildClass.prototype.asyncThisPropWithAwaitBody):
(ChildClass.prototype.asyncThisPropInEvalWithAwaitBody):
(ChildClass.prototype.asyncThisValueBodyWithAwait):
(ChildClass.prototype.asyncThisValueInEvalWithAwaitBody):
(ChildClass):
(ChildClass3):
(ChildClass3.prototype.classValue):
(ChildClass3.prototype.get classProperty):

  • stress/async-arrow-functions-lexical-new.target-binding.js:

(C2WithAwait):

8:56 AM Changeset in webkit [210924] by jmarcell@apple.com
  • 1 copy in tags/Safari-604.1.4

New tag.

7:56 AM Changeset in webkit [210923] by akling@apple.com
  • 28 edits in trunk/Source

ScriptExecutionContext::topOrigin() should return a reference.
<https://webkit.org/b/167190>

Reviewed by Sam Weinig.

Source/WebCore:

There is always a topOrigin() SecurityOrigin, so make it return a reference
and remove some unnecessary null-checks exposed by this change.

  • Modules/applepay/ApplePaySession.cpp:

(WebCore::canCallApplePaySessionAPIs):

  • Modules/encryptedmedia/CDM.cpp:

(WebCore::CDM::getSupportedConfiguration):
(WebCore::CDM::getConsentStatus):

  • Modules/indexeddb/IDBFactory.cpp:

(WebCore::IDBFactory::openInternal):
(WebCore::IDBFactory::deleteDatabase):

  • Modules/mediastream/MediaDevicesEnumerationRequest.cpp:

(WebCore::MediaDevicesEnumerationRequest::topLevelDocumentOrigin):

  • Modules/mediastream/UserMediaRequest.cpp:

(WebCore::UserMediaRequest::topLevelDocumentOrigin):
(WebCore::canCallGetUserMedia):

  • dom/Document.h:
  • dom/ScriptExecutionContext.h:
  • html/DOMURL.cpp:

(WebCore::DOMURL::revokeObjectURL):

  • inspector/InspectorIndexedDBAgent.cpp:

(WebCore::InspectorIndexedDBAgent::requestDatabaseNames):

  • inspector/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::cachedResource):

  • loader/appcache/ApplicationCacheGroup.cpp:

(WebCore::ApplicationCacheGroup::selectCache):
(WebCore::ApplicationCacheGroup::selectCacheWithoutManifestURL):
(WebCore::ApplicationCacheGroup::update):

  • loader/archive/cf/LegacyWebArchive.cpp:

(WebCore::LegacyWebArchive::create):

  • loader/cache/CachedResourceRequest.cpp:

(WebCore::CachedResourceRequest::setDomainForCachePartition):

  • page/SecurityOrigin.h:

(WebCore::SecurityOrigin::canAccessDatabase):
(WebCore::SecurityOrigin::canAccessSessionStorage):
(WebCore::SecurityOrigin::canAccessPluginStorage):
(WebCore::SecurityOrigin::canAccessApplicationCache):

  • storage/StorageNamespaceProvider.cpp:

(WebCore::StorageNamespaceProvider::localStorageArea):

  • testing/Internals.cpp:

(WebCore::Internals::isLoadingFromMemoryCache):

  • workers/DedicatedWorkerGlobalScope.cpp:

(WebCore::DedicatedWorkerGlobalScope::create):
(WebCore::DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope):

  • workers/DedicatedWorkerGlobalScope.h:
  • workers/DedicatedWorkerThread.cpp:

(WebCore::DedicatedWorkerThread::DedicatedWorkerThread):
(WebCore::DedicatedWorkerThread::createWorkerGlobalScope):

  • workers/DedicatedWorkerThread.h:
  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::WorkerGlobalScope):

  • workers/WorkerGlobalScope.h:
  • workers/WorkerThread.cpp:

(WebCore::WorkerThreadStartupData::WorkerThreadStartupData):
(WebCore::WorkerThread::WorkerThread):

  • workers/WorkerThread.h:

Source/WebKit/mac:

  • Misc/WebCache.mm:

(+[WebCache addImageToCache:forURL:forFrame:]):
(+[WebCache removeImageFromCacheForURL:forFrame:]):

3:50 AM Changeset in webkit [210922] by Carlos Garcia Campos
  • 3 edits
    3 adds in trunk/Tools

Unreviewed. Fix GTK+ unit tests failing since r210531.

Avoid using paths to files that don't actually exist.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestConsoleMessage.cpp:

(testWebKitConsoleMessageNetworkError):

  • TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp:

(testContextMenuDefaultMenu):

  • TestWebKitAPI/Tests/WebKit2Gtk/resources/silence.mpg: Added.
  • TestWebKitAPI/Tests/WebKit2Gtk/resources/simple.json: Added.
  • TestWebKitAPI/Tests/WebKit2Gtk/resources/tracks.ogg: Added.
1:03 AM Changeset in webkit [210921] by Carlos Garcia Campos
  • 30 edits
    1 copy
    3 adds in trunk

[GTK] Provide API to set proxy settings
https://bugs.webkit.org/show_bug.cgi?id=128674

Reviewed by Michael Catanzaro.

Source/WebCore:

Add SoupNetworkProxySettings struct to store proxy settings.

  • platform/network/soup/SoupNetworkProxySettings.h: Added.

(WebCore::SoupNetworkProxySettings::SoupNetworkProxySettings):
(WebCore::SoupNetworkProxySettings::operator=):
(WebCore::SoupNetworkProxySettings::isEmpty):

  • platform/network/soup/SoupNetworkSession.cpp:

(WebCore::SoupNetworkSession::SoupNetworkSession): Setup the proxy if user provided proxy settings.
(WebCore::SoupNetworkSession::setupProxy): Set the proxy-resolver property of the SoupSession according to the
global SoupNetworkProxySettings.
(WebCore::SoupNetworkSession::setProxySettingsFromEnvironment): Update the global SoupNetworkProxySettings with
values from environment.
(WebCore::SoupNetworkSession::setProxySettings): Set the global SoupNetworkProxySettings.

  • platform/network/soup/SoupNetworkSession.h:

Source/WebKit2:

Add new method webkit_web_context_set_network_proxy_settings() that allows to set proxy settings in a
WebKitWebContext. It receives an enum WebKitNetworkProxyMode with modes Default, NoProxy and Custom, and an
optional WebKitNetworkProxySettings that is used when mode is Custom. WebKitNetworkProxySettings is a simple
boxed type that user can create to set proxy settins with a similar API to GSimpleProxyResolver.

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in: Add SetNetworkProxySettings message.
  • NetworkProcess/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode): Encode proxy settings.
(WebKit::NetworkProcessCreationParameters::decode): Decode proxy settings.

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • NetworkProcess/efl/NetworkProcessMainEfl.cpp: Use SoupNetworkSession::setProxySettingsFromEnvironment().
  • NetworkProcess/soup/NetworkProcessSoup.cpp:

(WebKit::NetworkProcess::platformInitializeNetworkProcess): Set proxy settings if provided by the user.
(WebKit::NetworkProcess::setNetworkProxySettings): Set global proxy settings and setup the proxy for all
existing contexts.

  • PlatformGTK.cmake: Add new files to compilation.
  • Shared/WebCoreArgumentCoders.h:
  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode): Encode proxy settings.
(WebKit::WebProcessCreationParameters::decode): Decode proxy settings.

  • Shared/WebProcessCreationParameters.h:
  • Shared/soup/WebCoreArgumentCodersSoup.cpp:

(IPC::ArgumentCoder<SoupNetworkProxySettings>::encode): Add encoder implementation for SoupNetworkProxySettings.
(IPC::ArgumentCoder<SoupNetworkProxySettings>::decode): add decoder implementation for SoupNetworkProxySettings.

  • UIProcess/API/gtk/WebKitNetworkProxySettings.cpp: Added.

(_WebKitNetworkProxySettings::_WebKitNetworkProxySettings):
(webkitNetworkProxySettingsGetNetworkProxySettings):
(webkit_network_proxy_settings_new): Create a new WebKitNetworkProxySettings with optional default proxy uri and
ignore hosts list.
(webkit_network_proxy_settings_copy):
(webkit_network_proxy_settings_free):
(webkit_network_proxy_settings_add_proxy): Add a proxy uri for a given uri scheme.

  • UIProcess/API/gtk/WebKitNetworkProxySettings.h: Added.
  • UIProcess/API/gtk/WebKitNetworkProxySettingsPrivate.h: Added.
  • UIProcess/API/gtk/WebKitWebContext.cpp:

(webkit_web_context_set_network_proxy_settings): Set proxy settings.

  • UIProcess/API/gtk/WebKitWebContext.h:
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: Add new symbols to the documentation.
  • UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add new section for WebKitNetworkProxySettings.
  • UIProcess/API/gtk/webkit2.h: Include WebKitNetworkProxySettings.h.
  • UIProcess/WebProcessPool.h: Add m_networkProxySettings and a setter for soup.
  • UIProcess/efl/WebProcessPoolEfl.cpp:

(WebKit::WebProcessPool::platformInitializeWebProcess): Set m_networkProxySettings to parameters.

  • UIProcess/gtk/WebProcessPoolGtk.cpp:

(WebKit::WebProcessPool::platformInitializeWebProcess): Ditto.

  • UIProcess/soup/WebProcessPoolSoup.cpp:

(WebKit::WebProcessPool::platformInitializeNetworkProcess): Ditto.
(WebKit::WebProcessPool::setNetworkProxySettings): Update m_networkProxySettings and notify all processes.

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in: Add SetNetworkProxySettings message.
  • WebProcess/efl/WebProcessMainEfl.cpp: Use SoupNetworkSession::setProxySettingsFromEnvironment().
  • WebProcess/soup/WebProcessSoup.cpp:

(WebKit::WebProcess::platformSetCacheModel): Remove comment that is no longer true.
(WebKit::WebProcess::platformInitializeWebProcess): Set proxy settings if provided by the user.
(WebKit::WebProcess::setNetworkProxySettings): Set global proxy settings and setup the proxy for all
existing contexts.

Tools:

Add tests for new proxy settings API.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp:

(serverCallback):
(ProxyTest::ProxyTest):
(ProxyTest::~ProxyTest):
(ProxyTest::loadURIAndGetMainResourceData):
(ProxyTest::proxyServerPortAsString):
(testWebContextProxySettings):
(beforeAll):

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

[GTK] Do not update the backing store state unnecessarily when page visibility changes
https://bugs.webkit.org/show_bug.cgi?id=167195

Reviewed by Sergio Villar Senin.

I've noticed that we are receiving UpdateBackingStoreState messages in the web process even when size and scale
factor didn't change. That's quite unfortunate because we do a lot of work unnecessarily and we tell the
threaded compositor that the size changed. This is not only a problem because it's not true, but also because
changing the size is a sync operation in the threaded compositor, so we block the compositing thread for
nothing. This is happening because the WebPageProxy notifies the drawing area that the backing store is
discardable when the page is not visible, and that always produces a new backing store state. In accelerating
compositing mode we don't even have a backing store to discard, so we should check we have something to discard
and also make sure we only generate a new backing store state if we really discarded the backing store.

  • UIProcess/DrawingAreaProxyImpl.cpp:

(WebKit::DrawingAreaProxyImpl::discardBackingStoreSoon):
(WebKit::DrawingAreaProxyImpl::discardBackingStore):

12:40 AM Changeset in webkit [210919] by Yusuke Suzuki
  • 3 edits in trunk/Source/JavaScriptCore

[B3] B3 strength reduction could encounter Value without owner in PureCSE
https://bugs.webkit.org/show_bug.cgi?id=167161

Reviewed by Filip Pizlo.

PureCSE relies on the fact that all the stored Values have owner member.
This assumption is broken when you execute specializeSelect in B3ReduceStrength phase.
It clears owner of Values which are in between Select and Check to clone them to then/else
blocks. If these cleared Values are already stored in PureCSE map, this map poses a Value
with nullptr owner in PureCSE.

This patch changes PureCSE to ignore stored Values tha have nullptr owner. This even means
that a client of PureCSE could deliberately null the owner if they wanted to signal the
Value should be ignored.

While PureCSE ignores chance for optimization if Value's owner is nullptr, in the current
strength reduction algorithm, this does not hurt optimization because CSE will be eventually
applied since the strength reduction phase want to reach fixed point. But even without
this iterations, our result itself is valid since PureCSE is allowed to be conservative.

  • b3/B3PureCSE.cpp:

(JSC::B3::PureCSE::findMatch):
(JSC::B3::PureCSE::process):

  • b3/testb3.cpp:

(JSC::B3::testCheckSelectAndCSE):
(JSC::B3::run):

12:21 AM Changeset in webkit [210918] by achristensen@apple.com
  • 11 edits in trunk

[WebIDL] Records should preserve javascript object order
https://bugs.webkit.org/show_bug.cgi?id=167189

Patch by Sam Weinig <sam@webkit.org> on 2017-01-18
Reviewed by Alex Christensen.

Source/WebCore:

Instead of modeling IDL records as HashMaps, use a Vector
of KeyValuePairs, to all preserving the iteration order.

  • Modules/webdatabase/SQLResultSetRowList.cpp:

(WebCore::SQLResultSetRowList::item):

  • Modules/webdatabase/SQLResultSetRowList.h:

Return a Vector rather than a HashMap.

  • bindings/IDLTypes.h:

Change underlying type to be a Vector<KeyValuePair<K, V>>.

  • bindings/js/JSDOMConvert.h:

Update conversion for new implementation type. For conversion
to JSValue, allow any type that can has an iterator of keyValuePairs.

  • testing/TypeConversions.h:

(WebCore::TypeConversions::testLongRecord):
(WebCore::TypeConversions::setTestLongRecord):
(WebCore::TypeConversions::testNodeRecord):
(WebCore::TypeConversions::setTestNodeRecord):
(WebCore::TypeConversions::testSequenceRecord):
(WebCore::TypeConversions::setTestSequenceRecord):

  • testing/TypeConversions.idl:

Update test IDL to use functions, since the spec mandates that
records can't be used with attributes.

LayoutTests:

  • js/dom/webidl-type-mapping-expected.txt:
  • js/dom/webidl-type-mapping.html:

Update test to reflect changes to TypeConversions.idl

12:08 AM Changeset in webkit [210917] by timothy@apple.com
  • 2 edits in trunk/Tools

Add back my old email address so old commits will still match it.

Patch by Timothy Hatcher <timothy@hatcher.name> on 2017-01-19

  • Scripts/webkitpy/common/config/contributors.json:
12:04 AM Changeset in webkit [210916] by timothy@apple.com
  • 4 edits in trunk/Tools

Remove my old email address from contributors.json and watchlist.

Patch by Timothy Hatcher <timothy@hatcher.name> on 2017-01-19

  • Scripts/validate-committer-lists:

(CommitterListFromGit): Change the mapping to the correct email.

  • Scripts/webkitpy/common/config/contributors.json:
  • Scripts/webkitpy/common/config/watchlist:

Jan 18, 2017:

11:45 PM Changeset in webkit [210915] by achristensen@apple.com
  • 5 edits
    2 adds in trunk

Implement URLSearchParams's sort()
https://bugs.webkit.org/show_bug.cgi?id=167154

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

  • web-platform-tests/url/urlsearchparams-sort-expected.txt: Added.
  • web-platform-tests/url/urlsearchparams-sort.html: Added.

Source/WebCore:

Test: imported/w3c/web-platform-tests/url/urlsearchparams-sort.html

  • html/URLSearchParams.cpp:

(WebCore::URLSearchParams::sort):

  • html/URLSearchParams.h:
  • html/URLSearchParams.idl:
11:13 PM Changeset in webkit [210914] by yoav@yoav.ws
  • 8 edits
    8 adds in trunk

Add Link header support for preload.
https://bugs.webkit.org/show_bug.cgi?id=165521

Reviewed by Alex Christensen.

Source/WebCore:

This patch adds Link header support for preload, by adding a Link
header parser, and calling it from FrameLoader::receivedFirstData.

Test: http/tests/preload/download_resources_from_header.php

  • CMakeLists.txt: Add LinkHeader files.
  • WebCore.xcodeproj/project.pbxproj: Add LinkHeader files.
  • loader/FrameLoader.cpp:

(WebCore::receivedFirstData): Trigger Link based preloading by calling loadLinksFromHeader.

  • loader/LinkHeader.cpp: Added.

(WebCore::isWhitespace):
(WebCore::isValidURLChar):
(WebCore::isValidParameterNameChar):
(WebCore::isValidParameterValueEnd):
(WebCore::isValidParameterValueChar):
(WebCore::isExtensionParameter):
(WebCore::parseURL):
(WebCore::invalidParameterDelimiter):
(WebCore::validFieldEnd):
(WebCore::parseParameterDelimiter):
(WebCore::paramterNameFromString):
(WebCore::parseParameterName):
(WebCore::skipQuotesIfNeeded):
(WebCore::parseParameterValue):
(WebCore::LinkHeader::setValue):
(WebCore::findNextHeader):
(WebCore::LinkHeader::LinkHeader):
(WebCore::LinkHeaderSet::LinkHeaderSet):
(WebCore::LinkHeaderSet::init):

  • loader/LinkHeader.h: Added.

(WebCore::LinkHeader::url):
(WebCore::LinkHeader::rel):
(WebCore::LinkHeader::as):
(WebCore::LinkHeader::mimeType):
(WebCore::LinkHeader::media):
(WebCore::LinkHeader::crossOrigin):
(WebCore::LinkHeader::valid):
(WebCore::LinkHeaderSet::begin):
(WebCore::LinkHeaderSet::end):
(WebCore::LinkHeaderSet::operator[]):
(WebCore::LinkHeaderSet::size):

  • loader/LinkLoader.cpp:

(WebCore::LinkLoader::loadLinksFromHeader): Loads link preload directives that arrive from Link headers.
(WebCore::LinkLoader::preloadIfNeeded): Add return value.

  • loader/LinkLoader.h:
  • platform/network/HTTPHeaderNames.in: Add "Link" as a header name.

LayoutTests:

  • http/tests/preload/download_resources_from_header_iframe-expected.txt: Added
  • http/tests/preload/download_resources_from_header_iframe.html: Added
  • http/tests/preload/download_resources_from_invalid_headers-expected: Added
  • http/tests/preload/download_resources_from_invalid_headers.html: Added
  • http/tests/preload/resources/download_resources_from_header.php: Added.
  • http/tests/preload/resources/invalid_resources_from_header.php: Added.
9:26 PM Changeset in webkit [210913] by commit-queue@webkit.org
  • 7 edits in trunk/Source/WebKit2

[iOS][WK2] Remove the WebView private configuration contentUpdateFrequency
https://bugs.webkit.org/show_bug.cgi?id=167188

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-01-18
Reviewed by Simon Fraser.

This patch reverts r209294. This configuration is not needed anymore.
The CADisplayLink::preferredFramesPerSecond for WK2 will be set to the
default value always.

  • UIProcess/API/APIPageConfiguration.h:

(API::PageConfiguration::setAlwaysRunsAtForegroundPriority):
(API::PageConfiguration::contentUpdateFrequency): Deleted.
(API::PageConfiguration::setContentUpdateFrequency): Deleted.
(): Deleted.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _setAllowsInlineMediaPlaybackAfterFullscreen:]):
(-[WKWebViewConfiguration _contentUpdateFrequency]): Deleted.
(-[WKWebViewConfiguration _setContentUpdateFrequency:]): Deleted.

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h:
  • UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:

(-[WKOneShotDisplayLinkHandler initWithDrawingAreaProxy:]):
(WebKit::RemoteLayerTreeDrawingAreaProxy::contentUpdateFrequency): Deleted.

9:13 PM Changeset in webkit [210912] by fpizlo@apple.com
  • 17 edits
    2 adds in trunk/Source

JSSegmentedVariableObject and its subclasses should have a sane destruction story
https://bugs.webkit.org/show_bug.cgi?id=167193

Reviewed by Saam Barati.
Source/JavaScriptCore:


Prior to this change, JSSegmentedVariableObjects' subclasses install finalizers that call
destroy. They did this in random ways, which sometimes resulted in
JSSegmentedVariableObject::~JSSegmentedVariableObject executing more than once (which worked
because of the way that ~SegmentedVector is written). Maybe this works now, but it's a disaster
waiting to happen.

Fortunately we can now just give those things their own Subspace and teach it its own protocol of
destruction. This change introduces JSSegmentedVariableObjectSubspace and stashes a m_classInfo
in JSSegmentedVariableObject. Now, subclasses of JSSegmentedVariableObject are destructible in
much the same way as JSDestructibleObject without having to be subclasses of
JSDestructibleObject.

  • API/JSCallbackObject.cpp:

(JSC::JSCallbackObject<JSGlobalObject>::create):

(GlobalObject::create):

  • runtime/JSGlobalLexicalEnvironment.h:

(JSC::JSGlobalLexicalEnvironment::create):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::create):
(JSC::JSGlobalObject::finishCreation):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::create): Deleted.
(JSC::JSGlobalObject::finishCreation): Deleted.

  • runtime/JSSegmentedVariableObject.cpp:

(JSC::JSSegmentedVariableObject::destroy):
(JSC::JSSegmentedVariableObject::JSSegmentedVariableObject):
(JSC::JSSegmentedVariableObject::~JSSegmentedVariableObject):
(JSC::JSSegmentedVariableObject::finishCreation):

  • runtime/JSSegmentedVariableObject.h:

(JSC::JSSegmentedVariableObject::subspaceFor):
(JSC::JSSegmentedVariableObject::classInfo):
(JSC::JSSegmentedVariableObject::JSSegmentedVariableObject): Deleted.
(JSC::JSSegmentedVariableObject::finishCreation): Deleted.

  • runtime/JSSegmentedVariableObjectSubspace.cpp: Added.

(JSC::JSSegmentedVariableObjectSubspace::JSSegmentedVariableObjectSubspace):
(JSC::JSSegmentedVariableObjectSubspace::~JSSegmentedVariableObjectSubspace):
(JSC::JSSegmentedVariableObjectSubspace::finishSweep):
(JSC::JSSegmentedVariableObjectSubspace::destroy):

  • runtime/JSSegmentedVariableObjectSubspace.h: Added.
  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
  • testRegExp.cpp:

(GlobalObject::create):

Source/WebCore:

No new tests because no new behavior.

JSSegmentedVariableObjects now get to have a sane destruction story. This means switching
subspace types for the DOM's global object subspace.

  • bindings/js/WebCoreJSClientData.cpp:

(WebCore::JSVMClientData::JSVMClientData):

  • bindings/js/WebCoreJSClientData.h:
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader):

9:09 PM Changeset in webkit [210911] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebInspectorUI

Web Inspector: split console should be allowed for Network and Timeline tabs when Inspector is not docked
https://bugs.webkit.org/show_bug.cgi?id=167075

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

  • UserInterface/Base/Main.js:

(WebInspector.dockedConfigurationSupportsSplitContentBrowser):
Helper function to determine if the current docked state supports having the content view
and split console at the same time. Currently set to be true if not docked bottom.

  • UserInterface/Views/ClusterContentView.js:

(WebInspector.ClusterContentView.prototype.get supportsSplitContentBrowser):

  • UserInterface/Views/ContentView.js:

(WebInspector.ContentView.prototype.get supportsSplitContentBrowser):

  • UserInterface/Views/NetworkTabContentView.js:

(WebInspector.NetworkTabContentView.prototype.get supportsSplitContentBrowser):

  • UserInterface/Views/TimelineTabContentView.js:

(WebInspector.TimelineTabContentView.prototype.get supportsSplitContentBrowser): Deleted.
Update supportsSplitContentBrowser functions to only be true/false based on the return value
of WebInspector.dockedConfigurationSupportsSplitContentBrowser.

9:06 PM Changeset in webkit [210910] by commit-queue@webkit.org
  • 7 edits in trunk

Web Inspector: console.table only works for the first 5 properties
https://bugs.webkit.org/show_bug.cgi?id=167175

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-18
Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

  • inspector/InjectedScriptSource.js:

(InjectedScript.prototype.wrapTable):
(InjectedScript.RemoteObject.createObjectPreviewForValue):
(InjectedScript.RemoteObject.prototype._appendPropertyPreviews):
Pass through secondLevelKeys. Though the keys are themselves ignored, the
existence is a signal that we should send more than the first 5 properties.

Source/WebInspectorUI:

  • UserInterface/Views/ConsoleMessageView.js:

(WebInspector.ConsoleMessageView.prototype._formatParameterAsTable):
Allow a max of 15 columns instead of 10.

LayoutTests:

  • inspector/console/console-table-expected.txt:
  • inspector/console/console-table.html:

Include a test that we get values beyond the first 5 properties.

7:19 PM Changeset in webkit [210909] by Dewei Zhu
  • 4 edits in trunk/Websites/perf.webkit.org

'buildbot-syncer.js' should be able to determine force build argument from a list of possible repositories.
https://bugs.webkit.org/show_bug.cgi?id=167152

Reviewed by Ryosuke Niwa.

Add 'rootOptions' key which maps to a list of possible repositories.
For a build request, only one of the repositories in the list is valid.

  • tools/js/buildbot-syncer.js:

(BuildbotSyncer.prototype._propertiesForBuildRequest):
(BuildbotSyncer._validateAndMergeProperties):
(BuildbotSyncer):

  • unit-tests/buildbot-syncer-tests.js:

(sampleiOSConfig):
(sampleiOSConfigWithExpansions):
(createSampleBuildRequest):
(Promise.resolve.then):

  • unit-tests/resources/mock-v3-models.js:

(MockModels.inject):

7:07 PM Changeset in webkit [210908] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebCore

Merge r210888. rdar://problem/30068195

7:07 PM Changeset in webkit [210907] by matthew_hanson@apple.com
  • 3 edits
    2 adds in branches/safari-603-branch

Merge r210862. rdar://problem/30055009

7:07 PM Changeset in webkit [210906] by matthew_hanson@apple.com
  • 3 edits in branches/safari-603-branch/Source/WebKit2

Merge r210861. rdar://problem/30015304

7:07 PM Changeset in webkit [210905] by matthew_hanson@apple.com
  • 9 edits in branches/safari-603-branch

Merge r210860. rdar://problem/30080035

7:06 PM Changeset in webkit [210904] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/JavaScriptCore

Merge r210858. rdar://problem/30069096

5:28 PM Changeset in webkit [210903] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Moving flaky expectation for fast/images/animated-gif-restored-from-bfcache.html to mac TestExpectations file.
https://bugs.webkit.org/show_bug.cgi?id=162510

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
  • platform/mac/TestExpectations:
5:21 PM Changeset in webkit [210902] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking inspector/indexeddb/clearObjectStore.html as flaky on macOS debug.
https://bugs.webkit.org/show_bug.cgi?id=167184

Unreviewed test gardening.

  • platform/mac/TestExpectations:
5:00 PM Changeset in webkit [210901] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking two fast/dom/Window/window-properties-performance-* tests as flaky.
https://bugs.webkit.org/show_bug.cgi?id=166911

Unreviewed test gardening.

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

Marking http/tests/fetch/fetching-same-resource-with-diffferent-options.html as flaky on ios-simulator-wk2.
https://bugs.webkit.org/show_bug.cgi?id=166025

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
4:45 PM Changeset in webkit [210899] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking http/tests/misc/module-script-async.html as a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=165764

Unreviewed test gardening.

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

Marking js/dom/Promise.html as flaky on both debug and release builds.
https://bugs.webkit.org/show_bug.cgi?id=140043

Unreviewed test gardening.

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

Marking inspector/worker/debugger-pause.html as a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=164833

Unreviewed test gardening.

  • platform/mac/TestExpectations:
4:13 PM Changeset in webkit [210896] by aestes@apple.com
  • 1 edit in trunk/Source/WebCore/platform/spi/ios/QuickLookSPI.h

Really fix the iOS 10 Internal SDK build after r210864.

3:57 PM Changeset in webkit [210895] by Ryan Haddad
  • 2 edits in trunk/Source/WebKit/mac

Unreviewed fix for the macOS build.

  • Carbon/CarbonWindowAdapter.mm:

(-[CarbonWindowAdapter initWithCarbonWindowRef:takingOwnership:disableOrdering:carbon:]):

3:51 PM Changeset in webkit [210894] by Ryan Haddad
  • 3 edits
    1 move
    3 adds
    3 deletes in trunk/LayoutTests

Unreviewed, rolling out r210881.

This test is failing on macOS.

Reverted changeset:

"REGRESSION(r203110): LayoutTest
http/tests/preload/single_download_preload_runner.html timing
out"
https://bugs.webkit.org/show_bug.cgi?id=159678
http://trac.webkit.org/changeset/210881

3:24 PM Changeset in webkit [210893] by Ryan Haddad
  • 213 edits
    4 deletes in trunk

Unreviewed, rolling out r210848.

This change introduced media-related LayoutTest failures and
crashes on macOS.

Reverted changeset:

"[Modern Media Controls] Turn modern media controls on by
default"
https://bugs.webkit.org/show_bug.cgi?id=165668
http://trac.webkit.org/changeset/210848

3:23 PM Changeset in webkit [210892] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Add instrumentation for when we fail to receive a message
https://bugs.webkit.org/show_bug.cgi?id=167179

Reviewed by Alexey Proskuryakov.

This will help us diagnose what the error from mach_msg is.

  • Platform/IPC/mac/ConnectionMac.mm:

(IPC::readFromMachPort):

2:53 PM Changeset in webkit [210891] by Antti Koivisto
  • 2 edits in trunk/Source/JavaScriptCore

Only delete source provider caches on full collection
https://bugs.webkit.org/show_bug.cgi?id=167173

Reviewed by Andreas Kling.

They are currently often wiped and recreated during page loading due to eden collections.

It is not clear that tying the lifetime of these caches to gc makes sense at all but this
should at least help some.

  • heap/Heap.cpp:

(JSC::Heap::deleteSourceProviderCaches):

2:52 PM Changeset in webkit [210890] by commit-queue@webkit.org
  • 12 edits in trunk/Source

Fix CFURLConnection build on Mac
https://bugs.webkit.org/show_bug.cgi?id=167168

Patch by Alex Christensen <achristensen@webkit.org> on 2017-01-18
Reviewed by Andy Estes.

Source/WebCore:

This is old code, and it hurts to do this, but I need this working to compare with Windows
to get the ResourceHandleCFURLConnectionDelegateWithOperationQueue working so we can make
loading asynchronous in WebCore.

  • page/mac/PageMac.mm:

(WebCore::Page::platformInitialize):

  • platform/network/cf/AuthenticationCF.cpp:
  • platform/network/cf/ResourceHandleCFNet.cpp:

(WebCore::ResourceHandle::createCFURLConnection):

  • platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp:

(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::setupRequest):
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::canRespondToProtectionSpace):

  • platform/network/cocoa/ResourceRequestCocoa.mm:

(WebCore::ResourceRequest::clearOrUpdateNSURLRequest):
Moved from iOS-specific file. It's needed on Mac using CFURLConnection, too.

  • platform/network/ios/ResourceRequestIOS.mm:

(WebCore::ResourceRequest::clearOrUpdateNSURLRequest): Deleted.

Source/WebKit2:

  • NetworkProcess/Downloads/mac/DownloadMac.mm:

(WebKit::Download::resume):
(WebKit::Download::platformDidFinish):
(WebKit::Download::platformCancelNetworkLoad):
(WebKit::Download::startNetworkLoadWithHandle):
(WebKit::Download::startNetworkLoad):
(WebKit::Download::platformInvalidate):

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::allowsSpecificHTTPSCertificateForHost):
(WebKit::serverTrustCredential):

  • Shared/Authentication/mac/AuthenticationManager.mac.mm:

(WebKit::AuthenticationManager::tryUseCertificateInfoForChallenge):

  • config.h:
2:48 PM Changeset in webkit [210889] by aestes@apple.com
  • 1 edit in trunk/Source/WebCore/platform/spi/ios/QuickLookSPI.h

Fix the iOS 10 Internal SDK build after r210864.

2:44 PM Changeset in webkit [210888] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

REGRESSION(r210531): Broke local resource loads from custom local protocols
https://bugs.webkit.org/show_bug.cgi?id=167058

Reviewed by Brent Fulgham.

Allow local protocols to access resources on different volumes unless the protocol is
"file".

  • page/SecurityOrigin.cpp:

(WebCore::SecurityOrigin::canDisplay):

2:43 PM Changeset in webkit [210887] by achristensen@apple.com
  • 19 edits in trunk/Source/WebKit2

Modernize DelayedReply IPC code
https://bugs.webkit.org/show_bug.cgi?id=167176

Reviewed by Brady Eidson.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::performSynchronousLoad):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • Platform/IPC/HandleMessage.h:

(IPC::callMemberFunctionImpl):
(IPC::callMemberFunction):
(IPC::handleMessageDelayed):

  • Scripts/webkit/messages.py:

(message_to_struct_declaration):
(generate_message_handler):

  • UIProcess/Databases/DatabaseProcessProxy.cpp:

(WebKit::DatabaseProcessProxy::getDatabaseProcessConnection):

  • UIProcess/Databases/DatabaseProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::getNetworkProcessConnection):
(WebKit::NetworkProcessProxy::networkProcessCrashedOrFailedToLaunch):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Plugins/PluginProcessManager.cpp:

(WebKit::PluginProcessManager::getPluginProcessConnection):

  • UIProcess/Plugins/PluginProcessManager.h:
  • UIProcess/Plugins/PluginProcessProxy.cpp:

(WebKit::PluginProcessProxy::getPluginProcessConnection):

  • UIProcess/Plugins/PluginProcessProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::runJavaScriptAlert):
(WebKit::WebPageProxy::runJavaScriptConfirm):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::getNetworkProcessConnection):
(WebKit::WebProcessPool::getDatabaseProcessConnection):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::getPluginProcessConnection):
(WebKit::WebProcessProxy::getNetworkProcessConnection):
(WebKit::WebProcessProxy::getDatabaseProcessConnection):

  • UIProcess/WebProcessProxy.h:
2:29 PM Changeset in webkit [210886] by matthew_hanson@apple.com
  • 5 edits in tags/Safari-603.1.20.1/Source

Versioning.

2:25 PM Changeset in webkit [210885] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.1.20.1

New tag.

2:13 PM Changeset in webkit [210884] by achristensen@apple.com
  • 5 edits in trunk/Source

Fix CMake build.

  • PlatformMac.cmake:

Source/WebCore:

  • platform/spi/cocoa/IOSurfaceSPI.h:
1:40 PM Changeset in webkit [210883] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

[Cocoa] Variation fonts without variations specified are not rendered as if the default variations were specified
https://bugs.webkit.org/show_bug.cgi?id=166672
<rdar://problem/29779119>
<rdar://problem/29848883>

Reviewed by Simon Fraser.

CoreText has a bug (<rdar://problem/29859207>) where variation fonts without
a specified variation value are rendered as if the minimum value is specified,
rather than the default value. The solution is to apply default values where
they are omitted.

Test: fast/text/variations/advances.html

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::defaultVariationValues):
(WebCore::fontIsSystemFont):
(WebCore::preparePlatformFont):

1:35 PM Changeset in webkit [210882] by mmaxfield@apple.com
  • 3 edits
    4 adds in trunk

background-repeat-x doesn't work
https://bugs.webkit.org/show_bug.cgi?id=166997

Reviewed by Simon Fraser.

Source/WebCore:

During the creation of the new CSS parser, we accidentally forgot
to hook up background-repeat-x and background-repeat-y.

Tests: fast/backgrounds/background-repeat-x-y-parse.html

fast/backgrounds/background-repeat-x-y.html

  • css/parser/CSSParserFastPaths.cpp:

(WebCore::CSSParserFastPaths::isKeywordPropertyID):

LayoutTests:

  • fast/backgrounds/background-repeat-x-y-expected.html: Added.
  • fast/backgrounds/background-repeat-x-y-parse-expected.txt: Added.
  • fast/backgrounds/background-repeat-x-y-parse.html: Added.
  • fast/backgrounds/background-repeat-x-y.html: Added.
1:26 PM Changeset in webkit [210881] by yoav@yoav.ws
  • 3 edits
    1 move
    3 adds
    2 deletes in trunk/LayoutTests

REGRESSION(r203110): LayoutTest http/tests/preload/single_download_preload_runner.html timing out
https://bugs.webkit.org/show_bug.cgi?id=159678

Move the single_download_preload test to be in a single document rather than a frame, as the frame based version was timing out.
I suspect that recent changes to handling of feature flags resulted in feature flags turned off for frames, which caused this test
to fail. As the frame doesn't seem required in this case, we can fold the entire test to a single document.
On top of that, I added per resource verification for the number of requests, which makes the test clearer.

Reviewed by Alex Christensen.

  • TestExpectations: Removed the timeout expectation for the test.
  • http/tests/preload/single_download_preload-expected.txt: Renamed from LayoutTests/http/tests/preload/single_download_preload_runner-expected.txt.
  • http/tests/preload/single_download_preload.html: Renamed from LayoutTests/http/tests/preload/resources/single_download_preload.html as well as fixed.
  • http/tests/preload/single_download_preload_runner.html: Removed.
  • http/tests/resources/dummy.xml: Added.
  • http/tests/resources/test.oga: Added.
  • platform/mac/TestExpectations: Removed the timeout expectation for the test.
1:22 PM Changeset in webkit [210880] by rniwa@webkit.org
  • 27 edits in trunk/Websites/perf.webkit.org

Make calls to render() functions async
https://bugs.webkit.org/show_bug.cgi?id=167151

Reviewed by Andreas Kling.

Make calls to render() async by coalescing calls inside enqueueToRender(), which has been renamed from
updateRendering(). We now queue up all the components and wait until the next animation frame to invoke
render() on all those components.

This reduces render() calls in the summary page of our internal dashboard by 15x from ~9400 to ~600 by
eliminating pathological O(n2) behavior between render() calls.

Consolidated TimeSeriesChart's enqueueRender into this newly added feature of ComponentBase along with
the support to call render() on a resize event. New implementation makes use of connectedCallback and
disconnectedCallback to avoid the work when the component is not in a document tree.

The rest of the patch concerns with renaming updateRendering to enqueueToRender and fixing a few minor bugs
that I encountered while working on this patch.

  • browser-tests/component-base-tests.js: Added tests for ComponentBase.enqueueToRender().
  • browser-tests/index.html:

(BrowserContext.prototype.importScripts): Renamed from importScript; Now supports loading multiple scripts.
(BrowserContext.prototype.importScript): Added.
(BrowserContext): Removed the unused createWithScripts.

  • public/v3/components/analysis-results-viewer.js:

(AnalysisResultsViewer.prototype._expandBetween):

  • public/v3/components/bar-graph-group.js:

(BarGraphGroup.prototype.updateGroupRendering):

  • public/v3/components/base.js:

(ComponentBase): When the browser doesn't support custom elements and
(ComponentBase.prototype.enqueueToRender): Renamed from updateRendering. Queues up the component to call
render() instead of immediately invoking it.
(ComponentBase.renderingTimerDidFire): Call render(). Since render() function often calls enqueueToRender
on child components, go ahead and invoke render() on any components enqueued during render() calls.
(ComponentBase._connectedComponentToRenderOnResize): Added.
(ComponentBase._disconnectedComponentToRenderOnResize): Added.
(ComponentBase.defineElement.elementClass.prototype.connectedCallback): Added. This is an optimization to
avoid the work when the component is not in the document; e.g. because the entire page component has been
detached from the document. The old implementation in TimeSeriesChart was not doing this.
(ComponentBase.defineElement.elementClass.prototype.disconnectedCallback): Added.
(ComponentBase): Replaced unused static variables with _componentsToRender and _componentsToRenderOnResize.

  • public/v3/components/chart-pane-base.js:

(ChartPaneBase.prototype.fetchAnalysisTasks):
(ChartPaneBase.prototype.didUpdateAnnotations): Added. Addresses the bug that the annotation bars in the
charts shown an an analysis task doesn't update its color when the state is updated in the UI.
(ChartPaneBase.prototype._mainSelectionDidZoom):
(ChartPaneBase.prototype._updateStatus):
(ChartPaneBase.prototype._requestOpeningCommitViewer):
(ChartPaneBase.prototype._keyup):
(ChartPaneBase.prototype.render):

  • public/v3/components/commit-log-viewer.js:
  • public/v3/components/customizable-test-group-form.js:

(CustomizableTestGroupForm):
(CustomizableTestGroupForm.prototype._customize):

  • public/v3/components/editable-text.js:

(EditableText.prototype._didUpdate):

  • public/v3/components/interactive-time-series-chart.js:
  • public/v3/components/pane-selector.js:

(PaneSelector.prototype._selectedItem):

  • public/v3/components/time-series-chart.js:

(TimeSeriesChart): Removed the logic to update upon resize. See _connectedComponentToRenderOnResize above.
(TimeSeriesChart.prototype.get enqueueToRenderOnResize): Added. Returns true.
(TimeSeriesChart.prototype.enqueueToRender): Deleted.
(TimeSeriesChart._renderEnqueuedCharts): Deleted.
(TimeSeriesChart): Call ComponentBase.defineElement to make this a proper component so that the logic in
connectedCallback to update upon resize event would work.

  • public/v3/instrumentation.js:

(Instrumentation.dumpStatistics): Sort results by the key names.

  • public/v3/models/time-series.js:

(TimeSeries.prototype.values): Added. This method was never ported to v3 in r198462, and broke the feature
to show moving averages, etc... on the charts page.

  • public/v3/pages/analysis-category-page.js:

(AnalysisCategoryPage.prototype.open):
(AnalysisCategoryPage.prototype.updateFromSerializedState):
(AnalysisCategoryPage.prototype.filterDidChange):
(AnalysisCategoryPage.prototype.render):

  • public/v3/pages/analysis-task-page.js:

(AnalysisTaskChartPane.prototype._updateStatus):
(AnalysisTaskPage.prototype.updateFromSerializedState):
(AnalysisTaskPage.prototype._didFetchTask):
(AnalysisTaskPage.prototype._didFetchRelatedAnalysisTasks):
(AnalysisTaskPage.prototype._didFetchMeasurement):
(AnalysisTaskPage.prototype._didFetchTestGroups):
(AnalysisTaskPage.prototype._showAllTestGroups):
(AnalysisTaskPage.prototype._didFetchAnalysisResults):
(AnalysisTaskPage.prototype.render):
(AnalysisTaskPage.prototype._renderTestGroupList.):
(AnalysisTaskPage.prototype._renderTestGroupList):
(AnalysisTaskPage.prototype._createTestGroupListItem):
(AnalysisTaskPage.prototype._showTestGroup):
(AnalysisTaskPage.prototype._didStartEditingTaskName):
(AnalysisTaskPage.prototype._updateTaskName):
(AnalysisTaskPage.prototype._updateTestGroupName):
(AnalysisTaskPage.prototype._hideCurrentTestGroup):
(AnalysisTaskPage.prototype._updateChangeType): Fixed the bug that we were never updating annotation bars
in the main chart by calling didUpdateAnnotations.
(AnalysisTaskPage.prototype._associateBug):
(AnalysisTaskPage.prototype._dissociateBug):
(AnalysisTaskPage.prototype._associateCommit):
(AnalysisTaskPage.prototype._dissociateCommit):
(AnalysisTaskPage.prototype._chartSelectionDidChange):
(AnalysisTaskPage.prototype._selectedRowInAnalysisResultsViewer):

  • public/v3/pages/build-request-queue-page.js:

(BuildRequestQueuePage.prototype.open.):
(BuildRequestQueuePage.prototype.open):

  • public/v3/pages/chart-pane.js:

(ChartPane.prototype.setOpenRepository):
(ChartPane.prototype._renderTrendLinePopover): Fixed a race condition. Insert a select element as needed
before trying to assign the current value on it.
(ChartPane.prototype._trendLineTypeDidChange):
(ChartPane.prototype._updateTrendLine):

  • public/v3/pages/charts-page.js:

(ChartsPage.prototype.updateFromSerializedState):
(ChartsPage.prototype._updateDomainsFromSerializedState):
(ChartsPage.prototype.setNumberOfDaysFromToolbar):
(ChartsPage.prototype._didMutatePaneList):
(ChartsPage.prototype.render):

  • public/v3/pages/charts-toolbar.js:

(ChartsToolbar.prototype.render):

  • public/v3/pages/create-analysis-task-page.js:

(CreateAnalysisTaskPage.prototype.updateFromSerializedState):

  • public/v3/pages/dashboard-page.js:

(DashboardPage.prototype.updateFromSerializedState):
(DashboardPage.prototype._fetchedData):

  • public/v3/pages/heading.js:

(Heading.prototype.render):

  • public/v3/pages/page-with-heading.js:

(PageWithHeading.prototype.render):

  • public/v3/pages/page.js:

(Page.prototype.open):

  • public/v3/pages/summary-page.js:

(SummaryPage.prototype.open):
(SummaryPage.prototype.this._renderQueue.push):
(SummaryPage):
(SummaryPage.prototype._renderCell):

12:43 PM Changeset in webkit [210879] by matthew_hanson@apple.com
  • 7 edits in branches/safari-603-branch/Source/WebCore

Merge r210774. rdar://problem/30019773

12:43 PM Changeset in webkit [210878] by matthew_hanson@apple.com
  • 10 edits
    3 adds in branches/safari-603-branch/Source/WebCore

Merge r210733. rdar://problem/30014496

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

Merge r210762. rdar://problem/29883469

12:43 PM Changeset in webkit [210876] by matthew_hanson@apple.com
  • 19 edits
    3 copies
    1 add in branches/safari-603-branch/Source

Merge r210753. rdar://problem/29883469

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

Merge r210748. rdar://problem/27745030

12:43 PM Changeset in webkit [210874] by matthew_hanson@apple.com
  • 3 edits
    2 adds in branches/safari-603-branch

Merge r210831. rdar://problem/29057611

12:43 PM Changeset in webkit [210873] by matthew_hanson@apple.com
  • 8 edits in branches/safari-603-branch

Merge r210827. rdar://problem/28620865

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

Merge r210795. rdar://problem/24457632

12:43 PM Changeset in webkit [210871] by matthew_hanson@apple.com
  • 4 edits in branches/safari-603-branch/Source/WebKit2

Merge r210761. rdar://problem/29544024

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

Merge r210750. rdar://problem/29995070

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

Merge r210727. rdar://problem/29668223

12:43 PM Changeset in webkit [210868] by matthew_hanson@apple.com
  • 69 edits
    4 copies
    12 adds in branches/safari-603-branch

Merge r210844. rdar://problem/29993906

12:42 PM Changeset in webkit [210867] by matthew_hanson@apple.com
  • 60 edits in branches/safari-603-branch/Source

Merge r210829. rdar://problem/30044439

12:42 PM Changeset in webkit [210866] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603-branch/Source/JavaScriptCore

Merge r210745. rdar://problem/30019309

12:42 PM Changeset in webkit [210865] by matthew_hanson@apple.com
  • 25 edits
    4 adds in branches/safari-603-branch

Merge r210695. rdar://problem/29913445

12:29 PM Changeset in webkit [210864] by aestes@apple.com
  • 14 edits
    2 copies
    3 adds in trunk

[QuickLook] Support password-protected documents
https://bugs.webkit.org/show_bug.cgi?id=167153
<rdar://problem/28544527>

Reviewed by Alex Christensen.

Source/WebCore:

Added support for previewing password-protected documents. If a document is
password-protected, QLPreviewConverter will call -connection:didFailWithError: with an error
code of kQLReturnPasswordProtected. When this happens, QuickLookHandle will ask the client
for a password, create a new QLPreviewConverter with the password specified in an options
dictionary, and replay the buffered input data into the converter. QLPreviewConverter will
then send the converted document data to its delegate as usual.

Password entry UI will be added later; this patch implements the necessary QuickLookHandle
logic and adds support for testing.

Test: quicklook/password-protected.html

  • PlatformMac.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • loader/ios/QuickLook.h: Declared setClientForTesting().
  • loader/ios/QuickLook.mm:

(testingClient): Created a static RefPtr to hold the testing client.
(testingOrEmptyClient): Returns the testing client if it's set, otherwise returns the empty client.
(-[WebPreviewConverter initWithResourceLoader:resourceResponse:quickLookHandle:]):
Initialized _client to testingOrEmptyClient(), stored the ResourceResponse's nsURLResponse()
in _originalResponse, and initialized _bufferedDataArray.
(-[WebPreviewConverter setClient:]): Ignore the new client if there is already a testing client.
(-[WebPreviewConverter appendDataArray:]): Stored the data array in _bufferedDataArray.
(-[WebPreviewConverter _sendDidReceiveResponseIfNecessary]): Cleared _bufferedDataArray.
(-[WebPreviewConverter connection:didReceiveData:lengthReceived:]): Changed the
UNUSED_PARAM() to an ASSERT_UNUSED().
(-[WebPreviewConverter connectionDidFinishLoading:]): Ditto.
(-[WebPreviewConverter connection:didFailWithError:]): If the error code is
kQLReturnPasswordProtected and the domain is QuickLookErrorDomain, request a password from
the client then create a new QLPreviewConverter with the password specified in the options dictionary.
(WebCore::QuickLookHandle::setClientForTesting): Set testingClient() to the specified client.

  • platform/ios/QuickLookSoftLink.h: Soft-linked kQLPreviewOptionPasswordKey.
  • platform/ios/QuickLookSoftLink.mm: Ditto.
  • platform/network/ios/QuickLookHandleClient.h:

(WebCore::QuickLookHandleClient::supportsPasswordEntry): Added. Tells QuickLookHandle
whether the client supports password entry.
(WebCore::QuickLookHandleClient::didRequestPassword): Added. Asks the client to specify a
password in the completionHandler lambda.

  • platform/spi/ios/QuickLookSPI.h: Declared kQLReturnPasswordProtected for the public SDK

and asserted that its value is 4.

  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState): Reset the MockQuickLookHandleClient password
to the empty string and uninstalled the testing client.
(WebCore::Internals::setQuickLookPassword): Installed the testing client and set a password
on the MockQuickLookHandleClient.

  • testing/Internals.h:
  • testing/Internals.idl: Defined Internals.setQuickLookPassword().
  • testing/MockQuickLookHandleClient.cpp: Added.

(WebCore::MockQuickLookHandleClient::singleton): Returned a shared MockQuickLookHandleClient.
(WebCore::MockQuickLookHandleClient::didRequestPassword): Dispatched a lambda on the
main-or-Web-thread run loop to call the completionHandler with the specified password.
This simulates the delay that would happen when prompting the user for a password.

  • testing/MockQuickLookHandleClient.h: Added.

LayoutTests:

  • platform/ios-simulator/TestExpectations: Temporarily skipped the new test until the

necessary support is available in QuickLook.framework.

  • quicklook/password-protected-expected.html: Added.
  • quicklook/password-protected.html: Added.
  • quicklook/resources/password-protected.pages: Added.
12:28 PM Changeset in webkit [210863] by achristensen@apple.com
  • 3 edits in trunk/Source/WebKit/win

Fix WinCairo build after r210845.
https://bugs.webkit.org/show_bug.cgi?id=167055

  • WebCoreSupport/WebFrameLoaderClient.cpp:
  • WebCoreSupport/WebFrameLoaderClient.h:

shouldCacheResponse isn't used when loading with libcurl.
It was dead code before Darin added "override".
WebCore/FrameLoaderClient.h has this inside of USE(CFURLCONNECTION) macros, now we have them here, too.

12:06 PM Changeset in webkit [210862] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

[Streams API] ReadableStream generic reader constructor does not need to call ReadableStream getReader
https://bugs.webkit.org/show_bug.cgi?id=167137

Patch by Youenn Fablet <youenn@apple.com> on 2017-01-18
Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

Test: streams/shadowing-getReader.html

  • bindings/js/JSReadableStreamPrivateConstructors.cpp:

(WebCore::constructJSReadableStreamDefaultReader): Using private constructor instead of getReader.

LayoutTests:

  • streams/shadowing-getReader-expected.txt: Added.
  • streams/shadowing-getReader.html: Added.
11:57 AM Changeset in webkit [210861] by Megan Gardner
  • 3 edits in trunk/Source/WebKit2

Ignore Connection Assertion if we are not using connection to send messages
https://bugs.webkit.org/show_bug.cgi?id=167022
<rdar://problem/30015304>

Reviewed by Darin Adler.

Ask the process about a particular connection rather that getting it and making the
comparison ourselves.

  • UIProcess/ChildProcessProxy.h:

(WebKit::ChildProcessProxy::hasConnection):
Check to see the the ProcessProxy has this particular connection. This get around the assert
that we would run into when just requesting the connection directly.

  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:

(WebKit::WebPasteboardProxy::setPasteboardPathnamesForType):
Use the new check instead of getting the raw connection.

11:51 AM Changeset in webkit [210860] by commit-queue@webkit.org
  • 10 edits in trunk

Reject fetch promise in case of ReadableStream upload
https://bugs.webkit.org/show_bug.cgi?id=167145

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

LayoutTests/imported/w3c:

  • web-platform-tests/fetch/api/basic/request-upload-expected.txt:
  • web-platform-tests/fetch/api/basic/request-upload-worker-expected.txt:

Source/WebCore:

Covered by rebased tests.

  • Modules/fetch/FetchBody.cpp:

(WebCore::FetchBody::extract): Storing the fact that body data is represented as a ReadableStream.

  • Modules/fetch/FetchBody.h:

(WebCore::FetchBody::isReadableStream):

  • Modules/fetch/FetchRequest.h:
  • Modules/fetch/FetchResponse.cpp:

(WebCore::FetchResponse::fetch): Rejecting if request body data is a ReadableStream.

LayoutTests:

11:35 AM Changeset in webkit [210859] by akling@apple.com
  • 99 edits in trunk

Document::securityOrigin() should return a reference.
<https://webkit.org/b/167124>

Reviewed by Sam Weinig.

Source/WebCore:

The security origin is always initialized by the Document constructor
through Document::initSecurityContext(), so it's effectively always present.
Make it return a reference and remove unnecessary null checks exposed by this.

  • Modules/applepay/ApplePaySession.cpp:

(WebCore::canCallApplePaySessionAPIs):

  • Modules/encryptedmedia/CDM.cpp:

(WebCore::CDM::getSupportedConfiguration):
(WebCore::CDM::getConsentStatus):

  • Modules/encryptedmedia/legacy/WebKitMediaKeySession.cpp:

(WebCore::WebKitMediaKeySession::mediaKeysStorageDirectory):

  • Modules/mediastream/UserMediaRequest.cpp:

(WebCore::canCallGetUserMedia):

  • Modules/webdatabase/DOMWindowWebDatabase.cpp:

(WebCore::DOMWindowWebDatabase::openDatabase):

  • Modules/webdatabase/DatabaseContext.cpp:

(WebCore::DatabaseContext::allowDatabaseAccess):

  • Modules/websockets/WebSocketHandshake.cpp:

(WebCore::WebSocketHandshake::clientOrigin):

  • bindings/js/JSDOMBinding.cpp:

(WebCore::canAccessDocument):

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::collectIsolatedContexts):

  • css/CSSStyleSheet.cpp:

(WebCore::CSSStyleSheet::canAccessRules):

  • css/RuleSet.cpp:

(WebCore::RuleSet::addRulesFromSheet):

  • css/StyleRuleImport.cpp:

(WebCore::StyleRuleImport::setCSSStyleSheet):

  • dom/Document.cpp:

(WebCore::canAccessAncestor):
(WebCore::Document::findUnsafeParentScrollPropagationBoundary):
(WebCore::Document::cookie):
(WebCore::Document::setCookie):
(WebCore::Document::origin):
(WebCore::Document::domain):
(WebCore::Document::setDomain):
(WebCore::Document::storageBlockingStateDidChange):
(WebCore::Document::initSecurityContext):
(WebCore::Document::initDNSPrefetch):
(WebCore::Document::topOrigin):

  • dom/Document.h:

(WebCore::Document::securityOrigin):

  • dom/SecurityContext.cpp:

(WebCore::SecurityContext::isSecureTransitionTo):

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::handleClick):

  • html/HTMLAppletElement.cpp:

(WebCore::HTMLAppletElement::canEmbedJava):

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::securityOrigin):

  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::setCSSStyleSheet):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::isSafeToLoadURL):
(WebCore::HTMLMediaElement::mediaPlayerMediaKeysStorageDirectory):

  • html/HTMLPlugInImageElement.cpp:

(WebCore::HTMLPlugInImageElement::allowedToLoadFrameURL):

  • inspector/InspectorDOMStorageAgent.cpp:

(WebCore::InspectorDOMStorageAgent::storageId):
(WebCore::InspectorDOMStorageAgent::findStorageArea):

  • inspector/InspectorIndexedDBAgent.cpp:

(WebCore::InspectorIndexedDBAgent::requestDatabaseNames):
(WebCore::InspectorIndexedDBAgent::requestDatabase):
(WebCore::InspectorIndexedDBAgent::requestData):
(WebCore::InspectorIndexedDBAgent::clearObjectStore):

  • inspector/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::findFrameWithSecurityOrigin):
(WebCore::InspectorPageAgent::buildObjectForFrame):

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::commitData):

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::loadRequest):
(WebCore::DocumentThreadableLoader::securityOrigin):

  • loader/DocumentWriter.cpp:

(WebCore::canReferToParentFrameEncoding):

  • loader/EmptyClients.cpp:
  • loader/FrameLoadRequest.cpp:

(WebCore::FrameLoadRequest::FrameLoadRequest):

  • loader/FrameLoadRequest.h:

(WebCore::FrameLoadRequest::FrameLoadRequest):

  • loader/FrameLoader.cpp:

(WebCore::shouldClearWindowName):
(WebCore::FrameLoader::outgoingOrigin):
(WebCore::FrameLoader::loadURL):
(WebCore::FrameLoader::dispatchBeforeUnloadEvent):

  • loader/FrameLoaderClient.h:
  • loader/MixedContentChecker.cpp:

(WebCore::MixedContentChecker::isMixedContent):
(WebCore::MixedContentChecker::canDisplayInsecureContent):
(WebCore::MixedContentChecker::canRunInsecureContent):
(WebCore::MixedContentChecker::checkFormForMixedContent):

  • loader/MixedContentChecker.h:
  • loader/NavigationScheduler.cpp:

(WebCore::NavigationScheduler::scheduleRedirect):
(WebCore::NavigationScheduler::scheduleLocationChange):
(WebCore::NavigationScheduler::scheduleRefresh):

  • loader/NavigationScheduler.h:
  • loader/PingLoader.cpp:

(WebCore::PingLoader::loadImage):
(WebCore::PingLoader::sendPing):
(WebCore::PingLoader::sendViolationReport):

  • loader/ResourceLoadInfo.cpp:

(WebCore::ResourceLoadInfo::isThirdParty):

  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::init):
(WebCore::ResourceLoader::isAllowedToAskUserForCredentials):

  • loader/SubframeLoader.cpp:

(WebCore::SubframeLoader::pluginIsLoadable):
(WebCore::SubframeLoader::createJavaAppletWidget):
(WebCore::SubframeLoader::loadSubframe):

  • loader/appcache/ApplicationCacheGroup.cpp:

(WebCore::ApplicationCacheGroup::selectCache):
(WebCore::ApplicationCacheGroup::selectCacheWithoutManifestURL):
(WebCore::ApplicationCacheGroup::update):

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::canRequest):
(WebCore::CachedResourceLoader::canRequestAfterRedirection):
(WebCore::CachedResourceLoader::canRequestInContentDispositionAttachmentSandbox):

  • loader/cache/CachedResourceRequest.cpp:

(WebCore::CachedResourceRequest::setAsPotentiallyCrossOrigin):
(WebCore::CachedResourceRequest::updateForAccessControl):

  • loader/cache/CachedResourceRequest.h:

(WebCore::CachedResourceRequest::setOrigin):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::sessionStorage):
(WebCore::DOMWindow::localStorage):
(WebCore::DOMWindow::postMessage):
(WebCore::DOMWindow::dispatchMessageEventWithOriginCheck):
(WebCore::DOMWindow::isSameSecurityOriginAsMainFrame):
(WebCore::DOMWindow::crossDomainAccessErrorMessage):
(WebCore::DOMWindow::isInsecureScriptAccess):

  • page/DragController.cpp:

(WebCore::DragController::dragExited):
(WebCore::DragController::tryDocumentDrag):
(WebCore::DragController::tryDHTMLDrag):
(WebCore::DragController::startDrag):

  • page/History.cpp:

(WebCore::History::stateObjectAdded):

  • page/Location.cpp:

(WebCore::Location::ancestorOrigins):
(WebCore::Location::reload):

  • page/Navigator.cpp:

(WebCore::Navigator::javaEnabled):

  • page/Page.cpp:

(WebCore::Page::showAllPlugins):

  • page/PerformanceResourceTiming.cpp:

(WebCore::passesTimingAllowCheck):

  • page/SecurityOrigin.cpp:

(WebCore::SecurityOrigin::canAccess):
(WebCore::SecurityOrigin::canRequest):
(WebCore::SecurityOrigin::canReceiveDragData):
(WebCore::SecurityOrigin::canAccessStorage):
(WebCore::SecurityOrigin::isSameOriginAs):
(WebCore::SecurityOrigin::equal):
(WebCore::SecurityOrigin::isSameSchemeHostPort):

  • page/SecurityOrigin.h:
  • page/SecurityOriginData.cpp:

(WebCore::SecurityOriginData::fromFrame):

  • page/SecurityOriginHash.h:

(WebCore::SecurityOriginHash::equal):

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::stripURLForUseInReport):

  • platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:

(WebCore::MediaPlayerPrivateAVFoundationCF::hasSingleSecurityOrigin):

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::hasSingleSecurityOrigin):

  • platform/graphics/mac/MediaPlayerPrivateQTKit.mm:

(WebCore::MediaPlayerPrivateQTKit::hasSingleSecurityOrigin):

  • rendering/shapes/ShapeOutsideInfo.cpp:

(WebCore::checkShapeImageOrigin):

  • replay/ReplayInputCreationMethods.cpp:

(WebCore::InitialNavigation::createFromPage):

  • replay/ReplayInputDispatchMethods.cpp:

(WebCore::InitialNavigation::dispatch):

  • storage/Storage.cpp:

(WebCore::Storage::isDisabledByPrivateBrowsing):

  • storage/StorageEventDispatcher.cpp:

(WebCore::StorageEventDispatcher::dispatchSessionStorageEvents):
(WebCore::StorageEventDispatcher::dispatchLocalStorageEvents):

  • storage/StorageNamespaceProvider.cpp:

(WebCore::StorageNamespaceProvider::localStorageArea):

  • testing/Internals.cpp:

(WebCore::Internals::setApplicationCacheOriginQuota):

  • xml/XSLTProcessorLibxslt.cpp:

(WebCore::docLoaderFunc):

  • xml/parser/XMLDocumentParserLibxml2.cpp:

(WebCore::shouldAllowExternalLoad):

Source/WebKit/mac:

  • Plugins/Hosted/NetscapePluginInstanceProxy.mm:

(WebKit::NetscapePluginInstanceProxy::loadRequest):

  • Plugins/WebNetscapePluginStream.mm:

(WebNetscapePluginStream::WebNetscapePluginStream):

  • Plugins/WebNetscapePluginView.mm:

(-[WebNetscapePluginView loadRequest:inTarget:withNotifyData:sendNotification:]):

  • Plugins/WebPluginContainerCheck.mm:

(-[WebPluginContainerCheck _isForbiddenFileLoad]):

  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::exceededDatabaseQuota):

  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::didRunInsecureContent):

  • WebCoreSupport/WebGeolocationClient.mm:

(WebGeolocationClient::requestPermission):
(-[WebGeolocationProviderInitializationListener initializationAllowedWebView:]):

  • WebView/WebFrame.mm:

(-[WebFrame _allowsFollowingLink:]):

Source/WebKit/win:

  • Plugins/PluginView.cpp:

(WebCore::PluginView::load):

  • WebCoreSupport/WebChromeClient.cpp:

(WebChromeClient::exceededDatabaseQuota):

  • WebCoreSupport/WebFrameLoaderClient.cpp:

(WebFrameLoaderClient::didRunInsecureContent):

  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebCoreSupport/WebGeolocationClient.cpp:

(WebGeolocationClient::requestPermission):

  • WebFrame.cpp:

(WebFrame::allowsFollowingLink):

Source/WebKit2:

  • UIProcess/Storage/StorageManager.cpp:

(WebKit::StorageManager::createTransientLocalStorageMap):

  • WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp:

(WebKit::GeolocationPermissionRequestManager::startRequestForGeolocation):

  • WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:

(WKBundleFrameCopySecurityOrigin):

  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::storageBlockingStateChanged):
(WebKit::PluginView::performFrameLoadURLRequest):
(WebKit::PluginView::isPrivateBrowsingEnabled):

  • WebProcess/Plugins/WebPluginInfoProvider.cpp:

(WebKit::WebPluginInfoProvider::getWebVisiblePluginInfo):

  • WebProcess/Storage/StorageAreaMap.cpp:

(WebKit::StorageAreaMap::dispatchSessionStorageEvent):
(WebKit::StorageAreaMap::dispatchLocalStorageEvent):

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::exceededDatabaseQuota):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::didRunInsecureContent):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::allowsFollowingLink):

Tools:

  • TestWebKitAPI/Tests/WebCore/SecurityOrigin.cpp:

(TestWebKitAPI::TEST_F):

11:30 AM Changeset in webkit [210858] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

JSObjectSetPrivate should not use jsCast<>
rdar://problem/30069096

Reviewed by Keith Miller.

  • API/JSObjectRef.cpp:

(JSObjectSetPrivate):

11:27 AM Changeset in webkit [210857] by Ryan Haddad
  • 2 edits in trunk/Source/WebCore

Remove WEBCORE_EXPORT from newly inlined functions after r210845.

Unreviewed build fix.

  • loader/DocumentLoader.h:
11:09 AM Changeset in webkit [210856] by matthew_hanson@apple.com
  • 10 edits in branches/safari-603-branch/Source

Merge r210822. rdar://problem/15607819

10:45 AM Changeset in webkit [210855] by pvollan@apple.com
  • 2 edits in trunk/Source/WebCore

Crash when changing video subtitles.
https://bugs.webkit.org/show_bug.cgi?id=167159

Reviewed by Xabier Rodriguez-Calvar.

Add null pointer check.

  • html/track/VTTCue.cpp:

(WebCore::VTTCue::removeDisplayTree):

10:45 AM Changeset in webkit [210854] by matthew_hanson@apple.com
  • 7 edits
    1 add in branches/safari-603-branch

Merge r210837. rdar://problem/29432371

10:37 AM Changeset in webkit [210853] by commit-queue@webkit.org
  • 6 edits in trunk

[Fetch API] Update content-type in case of form data
https://bugs.webkit.org/show_bug.cgi?id=167143

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

LayoutTests/imported/w3c:

  • web-platform-tests/fetch/api/basic/request-headers-expected.txt:

Source/WebCore:

Covered by rebased test.

  • Modules/fetch/FetchBody.cpp:

(WebCore::FetchBody::extract): Adding a space to the content-type in case of form data.

LayoutTests:

9:55 AM Changeset in webkit [210852] by BJ Burg
  • 19 edits in trunk/Source/JavaScriptCore

Web Inspector: remove an unnecessary include in generated Objective-C Inspector protocol code
https://bugs.webkit.org/show_bug.cgi?id=167156

Rubber-stamped by Geoffrey Garen.

  • inspector/scripts/codegen/objc_generator_templates.py:

This include of config.h doesn't make sense when using the code generator
outside of JavaScriptCore/WebKit. It is not necessary either, so remove it.

  • inspector/scripts/tests/all/expected/definitions-with-mac-platform.json-result:
  • inspector/scripts/tests/generic/expected/commands-with-async-attribute.json-result:
  • inspector/scripts/tests/generic/expected/commands-with-optional-call-return-parameters.json-result:
  • inspector/scripts/tests/generic/expected/definitions-with-mac-platform.json-result:
  • inspector/scripts/tests/generic/expected/domains-with-varying-command-sizes.json-result:
  • inspector/scripts/tests/generic/expected/enum-values.json-result:
  • inspector/scripts/tests/generic/expected/events-with-optional-parameters.json-result:
  • inspector/scripts/tests/generic/expected/generate-domains-with-feature-guards.json-result:
  • inspector/scripts/tests/generic/expected/same-type-id-different-domain.json-result:
  • inspector/scripts/tests/generic/expected/shadowed-optional-type-setters.json-result:
  • inspector/scripts/tests/generic/expected/type-declaration-aliased-primitive-type.json-result:
  • inspector/scripts/tests/generic/expected/type-declaration-array-type.json-result:
  • inspector/scripts/tests/generic/expected/type-declaration-enum-type.json-result:
  • inspector/scripts/tests/generic/expected/type-declaration-object-type.json-result:
  • inspector/scripts/tests/generic/expected/type-requiring-runtime-casts.json-result:
  • inspector/scripts/tests/ios/expected/definitions-with-mac-platform.json-result:
  • inspector/scripts/tests/mac/expected/definitions-with-mac-platform.json-result:

Rebaseline test results.

8:42 AM Changeset in webkit [210851] by Gustavo Noronha Silva
  • 2 edits in trunk/Source/WebCore

[GStreamer] media source tests crashing
https://bugs.webkit.org/show_bug.cgi?id=167158

Reviewed by Carlos Garcia Campos.

This fixes several media source tests which are asserting on debug builds,
such as:

  • fast/history/page-cache-removed-source-buffer.html
  • imported/w3c/web-platform-tests/media-source/
  • platform/graphics/gstreamer/mse/AppendPipeline.cpp:

(WebCore::AppendPipeline::AppendPipeline): do not adopt the GStPipeline
upon creation. A regular assignment will do the right thing, sinking the
floating ref.

5:00 AM Changeset in webkit [210850] by pvollan@apple.com
  • 2 edits in trunk/Tools

[Win] Clipboard tests are flaky.
https://bugs.webkit.org/show_bug.cgi?id=167088

Reviewed by Brent Fulgham.

Tests involving the clipboard are flaky when running with multiple DRTs, since the clipboard is global.
We can fix this by assigning each DRT a separate window station (each window station has its own clipboard).

  • DumpRenderTree/win/DumpRenderTree.cpp:

(main):

2:24 AM Changeset in webkit [210849] by Csaba Osztrogonác
  • 2 edits in trunk/Source/JavaScriptCore

Fix the JSCOnly build after r210844
https://bugs.webkit.org/show_bug.cgi?id=167155

Unreviewed buildfix.

  • heap/EdenGCActivityCallback.cpp:
1:05 AM Changeset in webkit [210848] by graouts@webkit.org
  • 213 edits
    4 copies
    10 adds in trunk

[Modern Media Controls] Turn modern media controls on by default
https://bugs.webkit.org/show_bug.cgi?id=165668

Reviewed by Dean Jackson.

Source/WebCore:

Tests: media/modern-media-controls/fullscreen-support/ipad/fullscreen-support-tap.html

media/modern-media-controls/pip-support/ipad/pip-support-enabled.html
media/modern-media-controls/pip-support/ipad/pip-support-tap.html
media/modern-media-controls/placard-support/ipad/placard-support-pip.html
media/modern-media-controls/scrubber-support/ipad/scrubber-support-drag.html

Fix an error which may be triggered prior to Sierra where we would assume the presentation
mode API was avaiable when it might not be, which caused a few tests to fail.

  • Modules/modern-media-controls/media/pip-support.js:

(PiPSupport.prototype.syncControl):
(PiPSupport):

Source/WebKit/mac:

Enabled modern media controls by default in WK1.

  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):

Source/WebKit2:

Use DEFAULT_EXPERIMENTAL_FEATURES_ENABLED as the default value for modern media controls, which is true.

  • Shared/WebPreferencesDefinitions.h:

Tools:

Enabled modern media controls by default in test runners.

  • DumpRenderTree/TestOptions.h:
  • WebKitTestRunner/TestOptions.h:

LayoutTests:

Turn modern media controls off for a majority of pre-existing tests that made assumptions on the implementation
of media controls.

For tests designed for modern media controls, we don't need to opt out since modern media controls are now on
by default, and we turn them back on since they were skipped. But we make these tests more resilient by:

  1. adding iPad-specific tests
  2. adding platform-agnostic ways to press an element, using either eventSender or uiController
  3. checking that elements that are sized asynchronously are indeed sized before making assumptions to that effect
  4. ensuring that we don't have additional scheduler.frameDidFire callbacks after we no longer need them
  • TestExpectations:
  • accessibility/mac/video-tag-hit-test.html:
  • accessibility/mac/video-volume-slider-accessibility.html:
  • accessibility/media-element.html:
  • accessibility/media-emits-object-replacement.html:
  • compositing/video/poster-expected.html:
  • compositing/video/poster.html:
  • fast/hidpi/video-controls-in-hidpi.html:
  • fast/layers/video-layer.html:
  • fullscreen/video-controls-drag.html:
  • fullscreen/video-controls-override.html:
  • fullscreen/video-controls-rtl.html:
  • fullscreen/video-controls-timeline.html:
  • http/tests/media/hls/video-controls-live-stream.html:
  • http/tests/media/hls/video-duration-accessibility.html:
  • http/tests/security/contentSecurityPolicy/userAgentShadowDOM/default-src-object-data-url-allowed.html:
  • http/tests/security/contentSecurityPolicy/userAgentShadowDOM/default-src-object-data-url-blocked.html:
  • http/tests/security/contentSecurityPolicy/userAgentShadowDOM/default-src-object-data-url-blocked2.html:
  • http/tests/security/contentSecurityPolicy/userAgentShadowDOM/video-controls-allowed.html:
  • media/accessibility-closed-captions-has-aria-owns.html:
  • media/adopt-node-crash.html:
  • media/airplay-autoplay.html:
  • media/audio-as-video-fullscreen.html:
  • media/audio-controls-do-not-fade-out.html:
  • media/audio-controls-rendering.html:
  • media/audio-controls-timeline-in-media-document.html:
  • media/audio-delete-while-slider-thumb-clicked.html:
  • media/audio-repaint.html:
  • media/click-placeholder-not-pausing.html:
  • media/click-volume-bar-not-pausing.html:
  • media/controls-after-reload.html:
  • media/controls-drag-timebar.html:
  • media/controls-right-click-on-timebar.html:
  • media/controls-strict.html:
  • media/controls-styling.html:
  • media/controls-without-preload.html:
  • media/controls/airplay-controls.html:
  • media/controls/airplay-picker.html:
  • media/controls/basic.html:
  • media/controls/elementOrder.html:
  • media/controls/forced-tracks-only.html:
  • media/controls/fullscreen-button-inline-layout.html:
  • media/controls/inline-elements-dropoff-order.html:
  • media/controls/picture-in-picture.html:
  • media/controls/pip-placeholder-without-video-controls.html:
  • media/controls/showControlsButton.html:
  • media/controls/statusDisplay.html:
  • media/controls/statusDisplayBad.html:
  • media/controls/track-menu.html:
  • media/mac/controls-panel-not-clipped-out-expected.html:
  • media/mac/controls-panel-not-clipped-out.html:
  • media/media-captions-no-controls.html:
  • media/media-controller-drag-crash.html:
  • media/media-controls-accessibility.html:
  • media/media-controls-cancel-events.html:
  • media/media-controls-clone.html:
  • media/media-controls-drag-timeline-set-controls-property.html:
  • media/media-controls-timeline-updates-after-playing.html:
  • media/media-controls-timeline-updates-when-hovered.html:
  • media/media-controls-timeline-updates.html:
  • media/media-document-audio-controls-visible.html:
  • media/media-document-audio-repaint.html:
  • media/media-fullscreen-return-to-inline.html:
  • media/modern-media-controls/airplay-button/airplay-button-on.html:
  • media/modern-media-controls/airplay-button/airplay-button.html:
  • media/modern-media-controls/airplay-placard/airplay-placard-text-section.html:
  • media/modern-media-controls/audio/audio-controls-buttons-expected.txt:
  • media/modern-media-controls/audio/audio-controls-buttons.html:
  • media/modern-media-controls/audio/audio-controls-metrics.html:
  • media/modern-media-controls/button/button.html:
  • media/modern-media-controls/buttons-container/buttons-container-buttons-property.html:
  • media/modern-media-controls/forward-button/forward-button.html:
  • media/modern-media-controls/fullscreen-button/fullscreen-button.html:
  • media/modern-media-controls/fullscreen-support/fullscreen-support-click.html:
  • media/modern-media-controls/fullscreen-support/ipad/fullscreen-support-tap-expected.txt: Added.
  • media/modern-media-controls/fullscreen-support/ipad/fullscreen-support-tap.html: Added.
  • media/modern-media-controls/icon-button/icon-button-active-state.html:
  • media/modern-media-controls/icon-button/icon-button-on.html:
  • media/modern-media-controls/icon-button/icon-button.html:
  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-buttons-styles.html:
  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-controls-bar-styles.html:
  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-layout.html:
  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-time-control-styles.html:
  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-dropping-controls.html:
  • media/modern-media-controls/layout-node/addChild.html:
  • media/modern-media-controls/layout-node/children.html:
  • media/modern-media-controls/layout-node/height.html:
  • media/modern-media-controls/layout-node/insertAfter.html:
  • media/modern-media-controls/layout-node/insertBefore.html:
  • media/modern-media-controls/layout-node/node-made-dirty-during-layout.html:
  • media/modern-media-controls/layout-node/remove.html:
  • media/modern-media-controls/layout-node/removeChild.html:
  • media/modern-media-controls/layout-node/subclassing.html:
  • media/modern-media-controls/layout-node/visible.html:
  • media/modern-media-controls/layout-node/width.html:
  • media/modern-media-controls/layout-node/x.html:
  • media/modern-media-controls/layout-node/y.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-containers-styles.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-styles.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-controls-bar-styles.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-right-container-margin.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-time-control-styles.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-volume-styles.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-buttons-styles.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-controls-bar-styles.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-layout.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-status-label.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-time-control-styles.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-volume-styles.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-dropping-controls.html:
  • media/modern-media-controls/media-controller/media-controller-auto-hide-mouse-enter-and-mouse-leave.html:
  • media/modern-media-controls/media-controller/media-controller-auto-hide-mouse-enter-over-controls-bar.html:
  • 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:
  • media/modern-media-controls/media-controller/media-controller-auto-hide-rewind-with-mouse-enter.html:
  • media/modern-media-controls/media-controller/media-controller-auto-hide.html:
  • media/modern-media-controls/media-controller/media-controller-fade-controls-when-entering-fullscreen.html:
  • media/modern-media-controls/media-controller/media-controller-fullscreen-ltr.html:
  • media/modern-media-controls/media-controller/media-controller-inline-to-fullscreen-to-inline.html:
  • media/modern-media-controls/media-controller/media-controller-inline-to-fullscreen-to-pip-to-inline.html:
  • media/modern-media-controls/media-controller/media-controller-resize.html:
  • media/modern-media-controls/media-controller/media-controller-scale-factor.html:
  • media/modern-media-controls/media-controller/media-controller-single-container.html:
  • media/modern-media-controls/mute-button/mute-button.html:
  • media/modern-media-controls/pip-button/pip-button.html:
  • media/modern-media-controls/pip-placard/pip-placard-text-section.html:
  • media/modern-media-controls/pip-support/ipad/pip-support-enabled-expected.txt: Added.
  • media/modern-media-controls/pip-support/ipad/pip-support-enabled.html: Copied from LayoutTests/media/modern-media-controls/pip-support/pip-support-enabled.html.
  • media/modern-media-controls/pip-support/ipad/pip-support-tap-expected.txt: Added.
  • media/modern-media-controls/pip-support/ipad/pip-support-tap.html: Copied from LayoutTests/media/modern-media-controls/pip-support/pip-support-click.html.
  • media/modern-media-controls/pip-support/pip-support-click.html:
  • media/modern-media-controls/pip-support/pip-support-enabled.html:
  • media/modern-media-controls/placard-support/ipad/placard-support-pip-expected.txt: Copied from LayoutTests/media/modern-media-controls/placard-support/placard-support-airplay-expected.txt.
  • media/modern-media-controls/placard-support/ipad/placard-support-pip.html: Added.
  • media/modern-media-controls/placard-support/placard-support-airplay-expected.txt:
  • media/modern-media-controls/play-pause-button/play-pause-button.html:
  • media/modern-media-controls/playback-support/playback-support-button-click-expected.txt:
  • media/modern-media-controls/playback-support/playback-support-button-click.html:
  • media/modern-media-controls/resources/media-controls-utils.js:

(pressOnElement):
(finishMediaControlsTest):

  • media/modern-media-controls/rewind-button/rewind-button.html:
  • media/modern-media-controls/scheduler/not-reentrant.html:
  • media/modern-media-controls/scheduler/single-callback-when-registered-multiple-times.html:
  • media/modern-media-controls/scrubber-support/ipad/scrubber-support-drag-expected.txt: Copied from LayoutTests/media/modern-media-controls/scrubber-support/scrubber-support-drag-expected.txt.
  • media/modern-media-controls/scrubber-support/ipad/scrubber-support-drag.html: Added.
  • media/modern-media-controls/scrubber-support/scrubber-support-click.html:
  • media/modern-media-controls/scrubber-support/scrubber-support-drag-expected.txt:
  • media/modern-media-controls/scrubber-support/scrubber-support-drag.html:
  • media/modern-media-controls/seek-backward-support/seek-backward-support.html:
  • media/modern-media-controls/seek-forward-support/seek-forward-support.html:
  • media/modern-media-controls/skip-back-button/skip-back-button.html:
  • media/modern-media-controls/slider/slider-fill.html:
  • media/modern-media-controls/slider/slider-styles.html:
  • media/modern-media-controls/start-support/start-support-click-to-start-expected.txt:
  • media/modern-media-controls/start-support/start-support-click-to-start.html:
  • media/modern-media-controls/status-label/status-label-font.html:
  • media/modern-media-controls/status-label/status-label-text-selection.html:
  • media/modern-media-controls/status-label/status-label.html:
  • media/modern-media-controls/time-label/time-label.html:
  • media/modern-media-controls/tracks-button/tracks-button.html:
  • media/modern-media-controls/tracks-panel/tracks-panel-right-x.html:
  • media/modern-media-controls/tracks-panel/tracks-panel-select-track-with-keyboard.html:
  • media/modern-media-controls/tracks-support/tracks-support-click-track-in-panel.html:
  • media/modern-media-controls/tracks-support/tracks-support-show-and-populate-panel.html:
  • media/modern-media-controls/tracks-support/tracks-support-show-panel-after-dragging-controls-expected.txt:
  • media/modern-media-controls/tracks-support/tracks-support-show-panel-after-dragging-controls.html:
  • media/modern-media-controls/tracks-support/tracks-support-show-panel-fullscreen.html:
  • media/modern-media-controls/volume-slider/volume-slider-value.html:
  • media/modern-media-controls/volume-support/volume-support-click.html:
  • media/modern-media-controls/volume-support/volume-support-drag.html:
  • media/nodesFromRect-shadowContent.html:
  • media/progress-events-generated-correctly.html:
  • media/require-user-gesture-to-load-video.html:
  • media/tab-focus-inside-media-elements.html:
  • media/track/track-cue-rendering-horizontal.html:
  • media/track/track-cue-rendering-vertical.html:
  • media/track/track-cues-cuechange.html:
  • media/track/track-cues-enter-exit.html:
  • media/track/track-in-band-duplicate-tracks-when-source-changes.html:
  • media/track/track-manual-mode.html:
  • media/video-controls-audiotracks-trackmenu.html:
  • media/video-controls-captions-trackmenu-localized.html:
  • media/video-controls-captions-trackmenu-only-captions-descriptions-and-subtitles.html:
  • media/video-controls-captions-trackmenu-sorted.html:
  • media/video-controls-captions-trackmenu.html:
  • media/video-controls-drop-and-restore-timeline.html:
  • media/video-controls-in-media-document.html:
  • media/video-controls-no-display-with-text-track.html:
  • media/video-controls-rendering.html:
  • media/video-controls-show-on-kb-or-ax-event.html:
  • media/video-controls-toggling.html:
  • media/video-controls-transformed.html:
  • media/video-controls-visible-audio-only.html:
  • media/video-controls-visible-exiting-fullscreen.html:
  • media/video-controls-zoomed.html:
  • media/video-display-toggle.html:
  • media/video-empty-source.html:
  • media/video-fullscreeen-only-controls.html:
  • media/video-fullscreeen-only-playback.html:
  • media/video-initially-hidden-volume-slider-up.html:
  • media/video-no-audio.html:
  • media/video-play-audio-require-user-gesture.html:
  • media/video-play-require-user-gesture.html:
  • media/video-trackmenu-selection.html:
  • media/video-volume-slider-drag.html:
  • media/video-volume-slider.html:
  • media/video-zoom-controls.html:
  • media/volume-bar-empty-when-muted.html:
  • platform/gtk/TestExpectations:
  • platform/ios-simulator/TestExpectations:
  • platform/ios-simulator/media/video-play-glyph-composited-outside-overflow-scrolling-touch-container.html:
  • platform/mac-wk1/TestExpectations:
  • platform/mac/TestExpectations:
12:50 AM Changeset in webkit [210847] by magomez@igalia.com
  • 4 edits in trunk/Source/WebCore

[GTK] [TextureMapper] [GLES2] Draw repeated patterns for NPOT textures manually
https://bugs.webkit.org/show_bug.cgi?id=167118

Reviewed by Žan Doberšek.

When using GLES2 without the GL_OES_texture_npot extension, some implementations fail to properly
draw repeated patters from a texture (using GL_REPEAT). For those cases, perform the repetition
manually using the shader.

Covered by existent tests.

  • platform/graphics/texmap/TextureMapperGL.cpp:

(WebCore::driverSupportsNPOTTextures):
(WebCore::TextureMapperGL::drawTexture):
(WebCore::TextureMapperGL::drawTexturedQuadWithProgram):

  • platform/graphics/texmap/TextureMapperShaderProgram.cpp:

(WebCore::TextureMapperShaderProgram::create):

  • platform/graphics/texmap/TextureMapperShaderProgram.h:

Jan 17, 2017:

11:07 PM Changeset in webkit [210846] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14/Source/WebCore/platform/gtk/po

Revert "Merge r210214 - [GTK] German translation update"

This reverts commit r210817.

9:17 PM Changeset in webkit [210845] by Darin Adler
  • 141 edits
    1 delete in trunk/Source

Remove PassRefPtr from "loader" directory of WebCore
https://bugs.webkit.org/show_bug.cgi?id=167055

Reviewed by Alex Christensen.

Source/WebCore:

  • dom/Document.cpp:

(WebCore::Document::processHttpEquiv): Pass a reference.

  • editing/CompositeEditCommand.cpp:

(WebCore::EditCommandComposition::unapply): Ditto.
(WebCore::EditCommandComposition::reapply): Ditto.
(WebCore::CompositeEditCommand::ensureComposition): Return a reference.
(WebCore::CompositeEditCommand::applyCommandToComposite): Use a reference.

  • editing/CompositeEditCommand.h: Updated for above changes.
  • editing/Editor.cpp:

(WebCore::Editor::unappliedEditing): Take a reference instead of a PassRefPtr.
(WebCore::Editor::reappliedEditing): Ditto.

  • editing/Editor.h: Updated for above changes. Also changed the

FragmentAndResources resources vector to hold Ref instead of RefPtr.

  • editing/cocoa/EditorCocoa.mm:

(WebCore::Editor::createFragmentAndAddResources): Updated for change to
FragmentAndResources.

  • editing/ios/EditorIOS.mm:

(WebCore::Editor::WebContentReader::readWebArchive): Pass a reference.

  • editing/mac/EditorMac.mm:

(WebCore::Editor::WebContentReader::readWebArchive): Pass a reference.

  • history/PageCache.cpp:

(WebCore::canCacheFrame): Use a reference.

  • html/FileInputType.cpp:

(WebCore::FileInputType::handleDOMActivateEvent): Pass references.

  • html/HTMLFormControlElement.cpp:

(WebCore::HTMLFormControlElement::formMethod): Use auto.

  • html/HTMLFormElement.cpp:

(WebCore::HTMLFormElement::prepareForSubmission): Updated to use a return
values for textFieldValues intsead of an out argument with getTextFieldValues.
(WebCore::HTMLFormElement::textFieldValues): Renamed from getTextFieldValues
and changed to use a return value instead of an out argument.
(WebCore::HTMLFormElement::submit): Pass a reference.
(WebCore::HTMLFormElement::requestAutocomplete): Pass a Ref&&.

  • html/HTMLFormElement.h: Updated for above changes.
  • html/HTMLHtmlElement.cpp:

(WebCore::HTMLHtmlElement::insertedByParser): Use a reference.

  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::process): Pass a reference.
(WebCore::HTMLLinkElement::setCSSStyleSheet): Use auto.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::loadResource): Use a reference.

  • inspector/InspectorApplicationCacheAgent.cpp:

(WebCore::InspectorApplicationCacheAgent::updateApplicationCacheStatus): Use a reference,
also update for struct-style member names withou m_ prefix.
(WebCore::InspectorApplicationCacheAgent::getFramesWithManifests): Ditto.
(WebCore::InspectorApplicationCacheAgent::getManifestForFrame): Ditto.
(WebCore::InspectorApplicationCacheAgent::getApplicationCacheForFrame): Ditto.
(WebCore::InspectorApplicationCacheAgent::buildObjectForApplicationCache): Ditto.
(WebCore::InspectorApplicationCacheAgent::buildArrayForApplicationCacheResources): Ditto.
(WebCore::InspectorApplicationCacheAgent::buildObjectForApplicationCacheResource): Ditto.

  • inspector/InspectorApplicationCacheAgent.h: Updated for above changes.
  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::updateApplicationCacheStatusImpl): Take a reference.

  • inspector/InspectorInstrumentation.h: Updated for the above.
  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::DocumentLoader): Move much initialization to class definition.
(WebCore::DocumentLoader::originalRequest): Moved to header to make it inline.
(WebCore::DocumentLoader::originalRequestCopy): Ditto.
(WebCore::DocumentLoader::request): Ditto.
(WebCore::DocumentLoader::url): Ditto.
(WebCore::DocumentLoader::stopLoading): Pass a reference.
(WebCore::DocumentLoader::willSendRequest): Updated to take a raw pointer instead of a
PassRefPtr.
(WebCore::DocumentLoader::commitData): Call shouldUseMainResourceEncoding instead of
special casing WebArchive.
(WebCore::DocumentLoader::maybeCreateArchive): Pass references.
(WebCore::DocumentLoader::setArchive): Take Ref&& instead of PassRefPtr.
(WebCore::DocumentLoader::addAllArchiveResources): Take a reference instead
of a pointer.
(WebCore::DocumentLoader::popArchiveForSubframe): Return RefPtr instead of
PassRefPtr.
(WebCore::DocumentLoader::subresource): Ditto.
(WebCore::DocumentLoader::subresources): Return a Vector<Ref> instead of a
Vector<RefPtr>.
(WebCore::DocumentLoader::substituteResourceDeliveryTimerFired): Use move
instead of swap.
(WebCore::DocumentLoader::scheduleArchiveLoad): Use shouldLoadFromArchiveOnly
instead of a special case for each type of archive.
(WebCore::DocumentLoader::originalURL): Moved to header to make it inline.
(WebCore::DocumentLoader::responseURL): Ditto.
(WebCore::DocumentLoader::documentURL): Call shouldUseMainResourceURL instead of
special casing WebArchive.
(WebCore::DocumentLoader::responseMIMEType): Moved to header to make it inline.
(WebCore::DocumentLoader::currentContentType): Ditto.
(WebCore::DocumentLoader::contentFilter): Ditto.
(WebCore::DocumentLoader::getIconLoadDecisionForIconURL): Pass a reference.
(WebCore::DocumentLoader::getIconDataForIconURL): Ditto.
(WebCore::DocumentLoader::dispatchOnloadEvents): Use a reference.
(WebCore::DocumentLoader::unreachableURL): Moved to header to make it inline.

  • loader/DocumentLoader.h: Updated for the above.
  • loader/EmptyClients.cpp: Updated for changes to client interfaces.
  • loader/EmptyClients.h: Ditto.
  • loader/FormState.cpp:

(WebCore::FormState::FormState): Take references instead of PassRefPtr, also
take Vector&& instead of Vector& when we want to take ownership and use move
instead of swap to do that.
(WebCore::FormState::create): Ditto.

  • loader/FormState.h: Updated for the above. Also changed return values to be

references instead of pointers and members to be Ref instead of RefPtr.

  • loader/FormSubmission.cpp:

(WebCore::FormSubmission::Attributes::parseMethodType): Updated for change
to the Method enumeration.
(WebCore::FormSubmission::Attributes::copyFrom): Deleted.
(WebCore::FormSubmission::FormSubmission): Use Ref&& instead of PassRefPtr.
(WebCore::FormSubmission::create): Use reference instead of pointer and
raw pointer instead of PassRefPtr. Also copy attributes using copy constructor
instead of an explicit copyFrom function.
(WebCore::FormSubmission::requestURL): Updated for change to the Method
enumeration.
(WebCore::FormSubmission::populateFrameLoadRequest): Ditto.

  • loader/FormSubmission.h: Updated for the above changes. Made the Attributes

class copyable, since we copy it. Changed some functions to return references
instead of pointers and use Ref instead of RefPtr for data members.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::submitForm): Updated for changes to FormSubmission
and FormState.
(WebCore::FrameLoader::receivedFirstData): Ditto.
(WebCore::FrameLoader::loadFrameRequest): Ditto.
(WebCore::FrameLoader::loadResourceSynchronously): Ditto.
(WebCore::FrameLoader::continueLoadAfterNavigationPolicy): Ditto.

  • loader/FrameLoaderClient.h: Use references, pointers, RefPtr, and Ref

instead of PassRefPtr. Removed unused empty dispatchDidFailToStartPlugin.

  • loader/HistoryController.cpp:

(WebCore::HistoryController::pushState): Take RefPtr&& instead of PassRefPtr.
(WebCore::HistoryController::replaceState): Ditto.

  • loader/HistoryController.h: Updated for the above.
  • loader/ImageLoader.cpp:

(WebCore::ImageLoader::updateFromElement): Pass a reference.

  • loader/NavigationScheduler.cpp: Use refernces and Ref&& instead of

pointers and PassRefPtr.
(WebCore::ScheduledNavigation::ScheduledNavigation): Added an overload
that sests m_shouldOpenExternalURLsPolicy.

  • loader/NavigationScheduler.h: Updated for the above.
  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::start): Use and pass references.
(WebCore::ResourceLoader::willSendRequest): Ditto.
(WebCore::ResourceLoader::didReceiveResponse): Ditto.
(WebCore::ResourceLoader::didFail): Ditto.

  • loader/SubframeLoader.cpp:

(WebCore::SubframeLoader::createJavaAppletWidget): Return RefPtr instead
of PassRefPtr. Pass references instead of pointers.
(WebCore::SubframeLoader::loadOrRedirectSubframe): Ditto.
(WebCore::SubframeLoader::loadSubframe): Ditto.
(WebCore::SubframeLoader::document): Deleted. This was never really the
correct idiom for getting the appropriate document; hiding the dependency
on m_frame wasn't paing off.
(WebCore::SubframeLoader::loadPlugin): Pass reference instead of pointer.
(WebCore::SubframeLoader::shouldConvertInvalidURLsToBlank): Eliminated
unneeded null checking and complexity due to going through the document
instead of the frame for this check.

  • loader/SubframeLoader.h: Updated for the above.
  • loader/appcache/ApplicationCache.cpp:

(WebCore::ApplicationCache::ApplicationCache): Moved data member
initialization to the class definition.
(WebCore::ApplicationCache::~ApplicationCache): Pass a reference instead
of a pointer.
(WebCore::ApplicationCache::isComplete): Ditto.
(WebCore::ApplicationCache::setManifestResource): Take Ref&& instead of
PassRefPtr.
(WebCore::ApplicationCache::addResource): Ditto.
(WebCore::ApplicationCache::removeResource): Deleted. Was unused.

  • loader/appcache/ApplicationCache.h: Updated for above changes.
  • loader/appcache/ApplicationCacheGroup.cpp:

(WebCore::ApplicationCacheGroup::ApplicationCacheGroup): Moved most
member initialization to the class definition.
(WebCore::ApplicationCacheGroup::~ApplicationCacheGroup): Pass a reference.
(WebCore::ApplicationCacheGroup::cacheForMainRequest): Removed
unnecessary preflight for removeFragmentIdentifier, which efficiently
does nothing if there is no identifier. Use early return.
(WebCore::ApplicationCacheGroup::fallbackCacheForMainRequest): More of
the same.
(WebCore::ApplicationCacheGroup::selectCache): Ditto, also take a reference,
and use event names instead of a special enumeration to poast events.
(WebCore::ApplicationCacheGroup::selectCacheWithoutManifestURL): Ditto.
(WebCore::ApplicationCacheGroup::finishedLoadingMainResource): Ditto.
(WebCore::ApplicationCacheGroup::failedLoadingMainResource): Ditto.
(WebCore::ApplicationCacheGroup::disassociateDocumentLoader): Ditto.
(WebCore::ApplicationCacheGroup::cacheDestroyed): Ditto.
(WebCore::ApplicationCacheGroup::stopLoadingInFrame): Ditto.
(WebCore::ApplicationCacheGroup::setNewestCache): Use Ref&& instead of
PassRefPtr.
(WebCore::ApplicationCacheGroup::makeObsolete): More of the same.
(WebCore::ApplicationCacheGroup::update): Ditto.
(WebCore::ApplicationCacheGroup::abort): Ditto.
(WebCore::ApplicationCacheGroup::didReceiveResponse): Ditto.
(WebCore::ApplicationCacheGroup::didFinishLoading): Ditto.
(WebCore::ApplicationCacheGroup::didFail): Ditto.
(WebCore::ApplicationCacheGroup::didFinishLoadingManifest): Ditto.
(WebCore::ApplicationCacheGroup::manifestNotFound): Ditto.
(WebCore::ApplicationCacheGroup::checkIfLoadIsComplete): Ditto.
(WebCore::ApplicationCacheGroup::startLoadingEntry): Ditto.
(WebCore::ApplicationCacheGroup::deliverDelayedMainResources): Use a modern
for loop.
(WebCore::ApplicationCacheGroup::addEntry): Use auto and simplify logic
for adding.
(WebCore::ApplicationCacheGroup::associateDocumentLoaderWithCache): Update since
function result is a reference.
(WebCore::ApplicationCacheGroup::scheduleReachedMaxAppCacheSizeCallback):
Use auto.
(WebCore::ApplicationCacheGroup::postListenerTask): Take event type instead of
taking a special enumeration.

  • loader/appcache/ApplicationCacheGroup.h: Updated for the above.
  • loader/appcache/ApplicationCacheHost.cpp:

(WebCore::ApplicationCacheHost::ApplicationCacheHost): Move most member
initialization to the class definition.
(WebCore::ApplicationCacheHost::~ApplicationCacheHost): Use reference.
(WebCore::ApplicationCacheHost::selectCacheWithoutManifest): Ditto.
(WebCore::ApplicationCacheHost::selectCacheWithManifest): Ditto.
(WebCore::ApplicationCacheHost::mainResourceDataReceived): Ditto.
(WebCore::ApplicationCacheHost::failedLoadingMainResource): Ditto.
(WebCore::ApplicationCacheHost::finishedLoadingMainResource): Ditto.
(WebCore::ApplicationCacheHost::maybeLoadFallbackForRedirect): Ditto.
(WebCore::ApplicationCacheHost::maybeLoadFallbackForResponse): Ditto.
(WebCore::ApplicationCacheHost::createFileURL): Ditto.
(WebCore::ApplicationCacheHost::maybeLoadSynchronously): Ditto.
(WebCore::ApplicationCacheHost::notifyDOMApplicationCache): Take event
type instead of special enumeration.
(WebCore::ApplicationCacheHost::stopLoadingInFrame): Use reference.
(WebCore::ApplicationCacheHost::stopDeferringEvents): Updated to use
event types instead of special enumeration and also repaired possible
edge case where code in event handler somehow triggers additional events.
(WebCore::ApplicationCacheHost::resourceList): Renamed from fillResourceList
and changed to return a vector instead of populating one.
(WebCore::ApplicationCacheHost::applicationCacheInfo): Tweak coding style a bit.
(WebCore::createApplicationCacheEvent): Factored this helper out of
dispatchDOMEvent so we can use Ref instead of RefPtr.
(WebCore::ApplicationCacheHost::dispatchDOMEvent): Updated to recent event type
rather than receiving an event id and mapping it to a type.
(WebCore::ApplicationCacheHost::setApplicationCache): Take RefPtr&& instead of
PassRefPtr.
(WebCore::ApplicationCacheHost::update): Pass a reference.
(WebCore::ApplicationCacheHost::swapCache): Ditto.
(WebCore::ApplicationCacheHost::abort): Ditto.

  • loader/appcache/ApplicationCacheHost.h: Updated for the above.
  • loader/appcache/ApplicationCacheStorage.cpp:

(WebCore::ApplicationCacheStorage::loadCacheGroup): Pass a Ref instead of RefPtr.
(WebCore::ApplicationCacheStorage::cacheGroupForURL): Ditto.
(WebCore::ApplicationCacheStorage::fallbackCacheGroupForURL): Ditto.
(WebCore::ApplicationCacheStorage::cacheGroupDestroyed): Take a reference.
(WebCore::ApplicationCacheStorage::cacheGroupMadeObsolete): Ditto.
(WebCore::ApplicationCacheStorage::storeNewestCache): Ditto.
(WebCore::ApplicationCacheStorage::loadCache): Return RefPtr instead of PassRefPtr.
(WebCore::ApplicationCacheStorage::deleteCacheGroup): Pass a reference.

  • loader/appcache/ApplicationCacheStorage.h: Updated for the above.
  • loader/appcache/DOMApplicationCache.cpp:

(WebCore::DOMApplicationCache::DOMApplicationCache): Take a reference.
(WebCore::DOMApplicationCache::toEventType): Deleted.

  • loader/appcache/DOMApplicationCache.h: Updated for the above. Made most

members private.

  • loader/archive/Archive.cpp:

(WebCore::Archive::clearAllSubframeArchives): Use a set for the logic that
prevents us from walking the same archive more than once, rather than using
a vector. Left it recursive, though.

  • loader/archive/Archive.h: Git rid of the type function, replacing it with

three functions for the four different policies we currently have about the
different archive types. Changed functions to take Ref&& instead of PassRefPtr
and return const Vector<Ref>& instead of const Vector<RefPtr>&, changing the
data members to match.

  • loader/archive/ArchiveFactory.cpp:

(WebCore::createArchiveMIMETypesMap): Factored this out of the archiveMIMETypes
function so we don't need a boolean. Also use ASCIILiteral.
(WebCore::archiveMIMETypes): Updated to se the above.

  • loader/archive/ArchiveResourceCollection.cpp:

(WebCore::ArchiveResourceCollection::addAllResources): Take a reference.
(WebCore::ArchiveResourceCollection::popSubframeArchive): Return RefPtr instead
of PassRefPtr.

  • loader/archive/ArchiveResourceCollection.h: Updated for the above.
  • loader/archive/cf/LegacyWebArchive.cpp:

(WebCore::LegacyWebArchive::createPropertyListRepresentation): Use auto and
fewer local variables, more references for argument types and return values.
(WebCore::LegacyWebArchive::createResourceResponseFromPropertyListData): Ditto.
(WebCore::LegacyWebArchive::createResource): Ditto.
(WebCore::LegacyWebArchive::create): Ditto.
(WebCore::LegacyWebArchive::extract): Ditto.
(WebCore::LegacyWebArchive::type): Deleted.
(WebCore::LegacyWebArchive::rawDataRepresentation): More of the same.
(WebCore::LegacyWebArchive::createFromSelection): Ditto.

  • loader/archive/cf/LegacyWebArchive.h: Updated for the above. Also marked the

class final and added overrides for the four new policy member functions.

  • loader/archive/mhtml/MHTMLArchive.cpp:

(WebCore::MHTMLArchive::create): Pass references.
(WebCore::MHTMLArchive::generateMHTMLData): Return RefPtr instead of
PassRefPtr.

  • loader/archive/mhtml/MHTMLArchive.h: Updated for the above. Also marked the

class final and added overrides for the four new policy member functions.

  • loader/archive/mhtml/MHTMLParser.cpp:

(WebCore::MHTMLParser::parseArchiveWithHeader): Pass Ref instead of RefPtr
to setMainResource and addSubframeArchive.
(WebCore::MHTMLParser::addResourceToArchive): Ditto.

  • loader/cache/CachedCSSStyleSheet.cpp:

(WebCore::CachedCSSStyleSheet::restoreParsedStyleSheet): Return RefPtr instead
of PassRefPtr.

  • loader/cache/CachedCSSStyleSheet.h: Updated for the above.
  • loader/cache/CachedResourceRequest.cpp:

(WebCore::CachedResourceRequest::setInitiator): Take a reference instead of a
PassRefPtr.

  • loader/cache/CachedResourceRequest.h: Updated for the above.
  • loader/cocoa/DiskCacheMonitor.h: Removed. This is a duplicate, unused copy

of DiskCacheMonitorCocoa.h.

  • loader/cocoa/DiskCacheMonitorCocoa.h: Removed unneeded exporting and virtual

member functions, made more things private, and changed return type to RefPtr
instead of PassRefPtr.

  • loader/cocoa/DiskCacheMonitorCocoa.mm:

(WebCore::DiskCacheMonitor::tryGetFileBackedSharedBufferFromCFURLCachedResponse):
Changed return type to RefPtr instead of PassRefPtr.

  • loader/icon/IconDatabase.cpp:

(WebCore::IconDatabase::setIconDataForIconURL): Take raw pointer instead of
PassRefPtr.
(WebCore::IconDatabase::getOrCreateIconRecord): Return Ref instead of PassRefPtr.
(WebCore::IconDatabase::getImageDataForIconURLFromSQLDatabase): Return RefPtr
instead of PassRefPtr.

  • loader/icon/IconDatabase.h: Updated for the above. Also marked functions final

instead of override.

  • loader/icon/IconDatabaseBase.h: Ditto.
  • loader/icon/PageURLRecord.cpp:

(WebCore::PageURLRecord::PageURLRecord): Moved initialization to the header.
(WebCore::PageURLRecord::~PageURLRecord): Wrote code here instead of calling
setIconRecord(nullptr).
(WebCore::PageURLRecord::setIconRecord): Take RefPtr&& instead of PassRefPtr.

  • loader/icon/PageURLRecord.h: Updatd for the above.
  • page/Chrome.cpp:

(WebCore::Chrome::runOpenPanel): Updated to take two references.

  • page/Chrome.h: Ditto.
  • page/ChromeClient.h: ditto.
  • page/DOMWindow.cpp:

(WebCore::DOMWindow::applicationCache): Pass a reference.
(WebCore::DOMWindow::setLocation): Ditto.
(WebCore::DOMWindow::createWindow): Ditto.
(WebCore::DOMWindow::open): Ditto.

  • page/EditorClient.h: Changed arguments to references instead of PassRefPtr.
  • page/History.cpp:

(WebCore::History::stateObjectAdded): Pass an rvalue reference.

  • page/Location.cpp:

(WebCore::Location::reload): Pass reference instead of pointer.
(WebCore::Location::setLocation): Ditto.

  • platform/URL.cpp:

(WebCore::URL::setFragmentIdentifier): Take a StringView rather than
a String, which is more flexible for callers. Also eliminated an unneeded
string allocation when the old string had a fragment that is being replaced.

  • platform/URL.h: Updated for the above.
  • replay/ReplayInputDispatchMethods.cpp:

(WebCore::InitialNavigation::dispatch): Pass reference.

  • svg/SVGFEImageElement.cpp:

(WebCore::SVGFEImageElement::requestImageResource): Ditto.

  • svg/SVGFontFaceUriElement.cpp:

(WebCore::SVGFontFaceUriElement::loadFont): Ditto.

  • svg/SVGUseElement.cpp:

(WebCore::SVGUseElement::updateExternalDocument): Ditto.

Source/WebKit/ios:

  • WebCoreSupport/WebChromeClientIOS.h: Updated runOpenPanel to take references.

Made class final and most functions private and final.

  • WebCoreSupport/WebChromeClientIOS.mm:

(WebChromeClientIOS::runOpenPanel): Updated to take references.

Source/WebKit/mac:

  • WebCoreSupport/WebChromeClient.h: Updated for changes to ChromeClient.

Also made class final and most functions private and final.

  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::runOpenPanel): Updated to take references.

  • WebCoreSupport/WebEditorClient.h: Updated for changes to EditorClient.
  • WebCoreSupport/WebEditorClient.mm:

(-[WebUndoStep initWithUndoStep:]): Take reference instead of PassRefPtr.
(+[WebUndoStep stepWithUndoStep:]): Ditto.
(-[WebUndoStep step]): Return reference instead of pointer.
(-[WebEditorUndoTarget undoEditing:]): Updated for the above.
(-[WebEditorUndoTarget redoEditing:]): Ditto.
(WebEditorClient::registerUndoOrRedoStep): Take reference instead of
PassRefPtr.
(WebEditorClient::registerUndoStep): Ditto.
(WebEditorClient::registerRedoStep): Ditto.

  • WebCoreSupport/WebFrameLoaderClient.h: Updated for changes to

FrameLoaderClient, marked functions final instead of override.

  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction): Take
pointer instead of PassRefPtr.
(WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): Ditto.
(makeFormFieldValuesDictionary): Take a reference.
(WebFrameLoaderClient::dispatchWillSendSubmitEvent): Take Ref&& instead
of PassRefPtr.
(WebFrameLoaderClient::dispatchWillSubmitForm): Take a reference instead
of PassRefPtr.
(WebFrameLoaderClient::actionDictionary): Take a pointer instead of PassRePtr.
(WebFrameLoaderClient::createFrame): Take a reference instead of a pointer.
(WebFrameLoaderClient::createPlugin): Ditto.
(WebFrameLoaderClient::createJavaAppletWidget): Ditto.
(WebFrameLoaderClient::createNetworkingContext): Ditto.
(WebFrameLoaderClient::didCreateQuickLookHandle): Pass a reference.

  • WebCoreSupport/WebFrameNetworkingContext.h: Use Ref instead of PassRefPtr.
  • WebCoreSupport/WebFrameNetworkingContext.mm: Tweak style a bit.
  • WebCoreSupport/WebOpenPanelResultListener.h: Take a reference instead of

PassRefPtr. Use RefPtr for class field.

  • WebCoreSupport/WebOpenPanelResultListener.mm:

(-[WebOpenPanelResultListener dealloc]): Deleted. Compiler will now do it
correctly without us declaring anything explicitly.
(-[WebOpenPanelResultListener cancel]): Get rid of hand-written deref code,
and let RefPtr do the work.
(-[WebOpenPanelResultListener chooseFilename:]): Ditto.
(-[WebOpenPanelResultListener chooseFilenames:]): Ditto.
(-[WebOpenPanelResultListener chooseFilenames:displayString:iconImage:]):
Rewrote to use a modern Objective-C for loop, reserveInitialCapacity,
and uncheckedAppend.

  • WebView/WebArchive.mm:

(-[WebArchive initWithMainResource:subresources:subframeArchives:]):
Updated for changes to LegacyWebArchive.
(-[WebArchive mainResource]): Ditto.
(-[WebArchive subresources]): Ditto.
(-[WebArchive subframeArchives]): Ditto.

  • WebView/WebDataSource.mm:

(-[WebDataSource _addSubframeArchives:]): Use a modern Objective-C for loop
instead of NSEnumerator.
(-[WebDataSource _fileWrapperForURL:]): Use auto.
(-[WebDataSource _documentFragmentWithArchive:]): Pass a reference.
(-[WebDataSource mainResource]): Ditto.
(-[WebDataSource subresources]): Ditto.
(-[WebDataSource subresourceForURL:]): Ditto.
(-[WebDataSource addSubresource:]): Ditto.

  • WebView/WebResource.mm:

(-[WebResourcePrivate initWithCoreResource:]): Take Ref&& instead of PassRefPtr.
(-[WebResourcePrivate dealloc]): Remove explicit deref since RefPtr will now take
care of it
(-[WebResource initWithCoder:]): Pass a reference.
(-[WebResource encodeWithCoder:]): Updated since coreResource is now RefPtr.
(-[WebResource _initWithCoreResource:]): Take Ref&& instead of PassRefPtr.
(-[WebResource _coreResource]): Return reference rather than pointer.
(-[WebResource _initWithData:URL:MIMEType:textEncodingName:frameName:response:copyData:]):
Added code to handle the null case and pass a reference rather than a pointer.

  • WebView/WebResourceInternal.h: Updated for the above.

Source/WebKit/win:

  • Plugins/PluginView.cpp:

(WebCore::PluginView::mediaCanStart): Fix call to dispatchDidFailToStartPlugin
by calling it directly on WebFrameLoaderClient. If my theory is correct, the old
call has been broken and doing nothing since r177941, two years ago, which made
the argument types different between FrameLoaderClient and WebFrameLoaderClient,
leaving WebFrameLoaderClient::dispatchDidFailToStartPlugin as dead code.

  • WebCoreSupport/WebChromeClient.cpp:

(WebChromeClient::runOpenPanel): Updated for change to ChromeClient.

  • WebCoreSupport/WebChromeClient.h: Ditto.
  • WebCoreSupport/WebEditorClient.cpp:

(WebEditorUndoCommand::WebEditorUndoCommand): Take a reference instead of
a PassRefPtr. Also use Ref instead of RefPtr.
(WebEditorClient::shouldChangeTypingStyle): Deleted. Empty function that was
never called.
(WebEditorClient::webViewDidChangeTypingStyle): Ditto.
(WebEditorClient::webViewDidChangeSelection): Ditto.
(WebEditorClient::registerUndoStep): Take reference instead of PassRefPtr.
(WebEditorClient::registerRedoStep): Ditto.

  • WebCoreSupport/WebEditorClient.h: Updated for the above. Also marked the

class and member functions final and made them all private, which will
help us catch if there are any that don't correctly match WebCore.

  • WebCoreSupport/WebFrameLoaderClient.cpp:

(WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction): Updated
for change to ChromeClient.
(WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): Ditto.
(WebFrameLoaderClient::dispatchWillSendSubmitEvent): Ditto.
(WebFrameLoaderClient::dispatchWillSubmitForm): Ditto.
(WebFrameLoaderClient::createFrame): Ditto. Also merged two functions into
one because one was private and only called by the other.
(WebFrameLoaderClient::createPlugin): Ditto.
(WebFrameLoaderClient::createJavaAppletWidget): Ditto.
(WebFrameLoaderClient::createNetworkingContext): Ditto.

  • WebCoreSupport/WebFrameLoaderClient.h: Ditto.
  • WebCoreSupport/WebFrameNetworkingContext.h:

(WebFrameNetworkingContext::create): Return a Ref instead of a PassRefPtr.

Source/WebKit2:

  • Shared/APIWebArchive.h: Use RefPtr&& instead of PassRefPtr.
  • Shared/APIWebArchive.mm:

(API::WebArchive::create): Ditto.
(API::WebArchive::WebArchive): Ditto.
(API::WebArchive::subresources): Ditto.
(API::WebArchive::subframeArchives): Ditto.

  • Shared/TextCheckerState.h: Initialize data members so classes

using this won't have to explicitly initalize them.

  • UIProcess/WebIconDatabase.cpp:

(WebKit::WebIconDatabase::setIconDataForIconURL): Pass a raw
pointer to WebCore.

  • UIProcess/WebPageProxy.h: Removed forward declaration of

StringPairVector, not needed here.

  • WebProcess/IconDatabase/WebIconDatabaseProxy.cpp:

(WebKit::WebIconDatabaseProxy::WebIconDatabaseProxy): Take a reference.
(WebKit::WebIconDatabaseProxy::retainIconForPageURL): Updated for reference.
(WebKit::WebIconDatabaseProxy::releaseIconForPageURL): Ditto.
(WebKit::WebIconDatabaseProxy::synchronousIconForPageURL): Ditto.
(WebKit::WebIconDatabaseProxy::loadDecisionForIconURL): Ditto.
(WebKit::WebIconDatabaseProxy::receivedIconLoadDecision): Ditto.
(WebKit::WebIconDatabaseProxy::iconDataForIconURL): Ditto.
(WebKit::WebIconDatabaseProxy::setIconURLForPageURL): Ditto.
(WebKit::WebIconDatabaseProxy::setIconDataForIconURL): Ditto.

  • WebProcess/IconDatabase/WebIconDatabaseProxy.h: Updated for the above.

Marked the class final, made most functions private and final.

  • WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:

(WebKit::InjectedBundleNavigationAction::InjectedBundleNavigationAction):
Removed assertion that a pointer is non-null since that pointer is now a
reference. Left use of PassRefPtr here for now.z

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::scheduleLoad): Updated since application cache
host is now a reference rather thna a pointer.

  • WebProcess/Network/WebResourceLoader.cpp:

(WebKit::WebResourceLoader::willSendRequest): Ditto.
(WebKit::WebResourceLoader::didReceiveResponse): Ditto.
(WebKit::WebResourceLoader::didFailResourceLoad): Ditto.

  • WebProcess/Plugins/PluginView.cpp:

(WebKit::buildHTTPHeaders): Got rid of unneeded use of String::format.
(WebKit::PluginView::create): Take a reference instead of PassRefPtr.
(WebKit::PluginView::PluginView): Ditto. Also moved much of the data
member initialization to the class definition.
(WebKit::PluginView::recreateAndInitialize): Take Ref&& instead of PassRefPtr.
(WebKit::PluginView::manualLoadDidReceiveResponse): Updated for change to
ManualStreamState enumeration.
(WebKit::PluginView::manualLoadDidReceiveData): Ditto.
(WebKit::PluginView::manualLoadDidFinishLoading Ditto.):
(WebKit::PluginView::manualLoadDidFail): Ditto.
(WebKit::PluginView::liveResourceData): Return RefPtr insead of PassRefPtr.
(WebKit::PluginView::redeliverManualStream): Updated for ManualStreamState.

  • WebProcess/Plugins/PluginView.h: Updated for the above. Also changed

ManualStreamState into an enum class.

  • WebProcess/WebCoreSupport/WebChromeClient.cpp: Changed m_page to a reference.

(WebKit::WebChromeClient::runOpenPanel): Take both arguments as references.

  • WebProcess/WebCoreSupport/WebChromeClient.h: Updated for the above.
  • WebProcess/WebCoreSupport/WebEditorClient.cpp:

(WebKit::WebEditorClient::registerUndoStep): Take reference instead of PassRefPtr.
(WebKit::WebEditorClient::registerRedoStep): Ditto.

  • WebProcess/WebCoreSupport/WebEditorClient.h: Updated for the above
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
Updated for change to FrameLoaderClient.
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): Ditto.
(WebKit::WebFrameLoaderClient::dispatchWillSendSubmitEvent): Ditto.
(WebKit::WebFrameLoaderClient::dispatchWillSubmitForm): Ditto.
(WebKit::WebFrameLoaderClient::createFrame): Ditto.
(WebKit::WebFrameLoaderClient::createPlugin): Ditto.
(WebKit::WebFrameLoaderClient::recreatePlugin): Ditto.
(WebKit::WebFrameLoaderClient::createJavaAppletWidget): Ditto.
(WebKit::WebFrameLoaderClient::createNetworkingContext): Ditto.
(WebKit::WebFrameLoaderClient::didRequestAutocomplete): Ditto.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h: Updated for the above.
  • WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:

(WebKit::WebChromeClient::didReceiveMobileDocType): Updated since m_page is a
reference now.
(WebKit::WebChromeClient::observedContentChange): Ditto.
(WebKit::WebChromeClient::notifyRevealedSelectionByScrollingFrame): Ditto.
(WebKit::WebChromeClient::didLayout): Ditto.
(WebKit::WebChromeClient::didStartOverflowScroll): Ditto.
(WebKit::WebChromeClient::didEndOverflowScroll): Ditto.
(WebKit::WebChromeClient::hasStablePageScaleFactor): Ditto.
(WebKit::WebChromeClient::showPlaybackTargetPicker): Ditto.
(WebKit::WebChromeClient::eventThrottlingDelay): Ditto.
(WebKit::WebChromeClient::deviceOrientation): Ditto.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::WebPage): Pass reference.
(WebKit::WebPage::createPlugin): Return RefPtr instead of PassRefPtr.
(WebKit::WebPage::fromCorePage): Updated for change to WebChromeClient.
(WebKit::WebPage::setHeaderPageBanner): Take pointer instead of PassRefPtr.
(WebKit::WebPage::setFooterPageBanner): Ditto.
(WebKit::WebPage::setActiveOpenPanelResultListener): Take Ref&& instead of
PassRefPtr.
(WebKit::WebPage::currentSelectionAsRange): Return RefPtr instead of PassRefPtr.
(WebKit::WebPage::rangeFromEditingRange): Ditto.

  • WebProcess/WebPage/WebPage.h: Updated for the above.
  • WebProcess/WebPage/efl/WebPageEfl.cpp:

(WebKit::WebPage::cachedResponseDataForURL): Return RefPtr instead of PassRefPtr.

  • WebProcess/WebPage/gtk/WebPageGtk.cpp:

(WebKit::WebPage::cachedResponseDataForURL): Ditto.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::cachedResponseDataForURL): Ditto.

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::cachedResponseDataForURL): Ditto.
(WebKit::WebPage::setTopOverhangImage): Take raw pointer instead of PassRefPtr.
(WebKit::WebPage::setBottomOverhangImage): Ditto.

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::WebProcess): Pass a reference. Move most initialization to
the class definition.

  • WebProcess/WebProcess.h: Updaed for the above.
8:22 PM Changeset in webkit [210844] by fpizlo@apple.com
  • 69 edits
    16 adds in trunk

Make opaque root scanning truly constraint-based
https://bugs.webkit.org/show_bug.cgi?id=165760

Reviewed by Geoffrey Garen.
JSTests:


Added this test, which demonstrates the benefit of having a dedicated string subspace.

  • microbenchmarks/stringalloc.js: Added.

Source/JavaScriptCore:

We have bugs when visitChildren() changes its mind about what opaque root to add, since
we don't have barriers on opaque roots. This supposedly once worked for generational GC,
and I started adding more barriers to support concurrent GC. But I think that the real
bug here is that we want the JSObject->OpaqueRoot to be evaluated as a constraint that
participates in the fixpoint. I like to think of this as an *output* constraint, because it
is concerned with outgoing edges in the heap from the object that registered the constraint.
An *input* constraint is like what Weak<> does when deciding whether the thing it points to
should be live.

Whether or not an object has output constraints depends on its type. So, we want the GC to
have a feature where we rapidly call some function on all marked objects of some type.

It's easy to rapidly scan all marked objects in a MarkedBlock. So, we want to allocate all
objects that have output constraints in their own MarkedBlocks and we want to track the set
of MarkedBlocks with output constraints.

This patch makes it easy to have clients of JSC's internal C++ APIs create a Subspace - like
what we used to call MarkedSpace::Subspace but now it's in the JSC namespace - which is
a collection of objects that you can easily scan during GC from a MarkingConstraint. It's
now possible for internal C++ API clients to register their own MarkingConstraints. The DOM
now uses this to create two Subspaces (more on why two below) and it calls
JSCell::visitOutputConstraints() on all of the marked objects in those subspaces using a new
MarkingConstraint. That MarkingConstraint uses a new style of volatility, called
SeldomGreyed, which is like GreyedByExecution except it is opportunistically not executed
as roots in the hopes that their sole execution will be the snapshot-at-the-end. I also
converted the CodeBlock rescan constraint to SeldomGreyed, since that's also an output
constraint.

This patch also uses Subspace for something pretty obvious: knowing how to call the
destructor. Subspaces can specialize the sweep for their way of invoking destructors. We
have the following subspaces:

  • auxiliary
  • cell
  • destructibleCell - for JSCell subclasses that have destructors and StructureIsImmortal
  • stringSpace - inlines ~JSString into the sweep, making string allocation 7% faster
  • destructibleObjectSpace - for JSDestructibleObject subclasses


And WebCore adds:

  • outputConstraint - for JSDOMObjects that have a visitAdditionalChildren
  • globalObjectOutputConstraint - for JSDOMGlobalObjects that have a visitAdditionalChildren, since JSDOMGlobalObjects are not JSDestructibleObjects


The Subspace for a type is selected by saying JSC::subspaceFor<Type>(vm). This calls
Type::subspaceFor<Type>(vm). This allows cell classes to override subspaceFor<> and it
allows any subspaceFor<> implementation to query static flags in the type. This is how
JSCell::subspaceFor<> can select either cellSpace or destructibleCellSpace.

This patch is mostly about:

  • Moving MarkedSpace::Subspace out of MarkedSpace and making it a nice class with a nice API. Almost all of its functionality is just taken out of MarkedSpace.
  • Converting users of the old API for allocating objects and getting MarkedAllocators, like heap.allocatorForObjectWithoutDestructor() and its friends. That would now say vm.cellSpace.allocatorFor().


Altogether, this means that we only have a small regression on Dromaeo. The regression is
due to the fact that we scan output constraints. Before the Subspace optimizations (see
r209766, which was rolled out in r209812), this regression on Dromaeo/jslib was 2x but after
the optimizations in this patch it's only 1.12x. Note that Dromaeo/jslib creats gigabytes of
DOM nodes. Compared to web pages, this is a very extreme synthetic microbenchmark. Still, we
like optimizing these because we don't want to presume what web pages will look like.

The use of Subspaces to specialize destructors happened not because it's super necessary but
because I wanted to introduce a single unified way of communicating to the GC how to treat
different types. Any Subspace feature that allowed us to collect some types together would
have to be mindful of the destructorness of objects. I could have turned this into a
liability where each Subspace has two subsubspaces - one for destructor objects and one for
non-destructor objects, which would have allowed me to keep the old sweep specialization
code. Just days prior, mlam wanted to do something that was hard because of that old sweep
specializer, so I decided to take the opportunity to fix the sweep specializer while also
making Subspace be the one true way of teaching the GC about types. To validate that this
actually does things, I added a JSStringSubspace and a test that shows that this is a 7%
string allocation progression.

In bug 167066, I'm getting rid of the rest of the code in JSC that would special-case for
JSDestructibleObject vs StructureIsImmortal by using the GC's DestructionMode. After that,
Subspace will be only mechanism by which JSC uses the GC to encode types.

Prior to this change, having multiple MarkedSpace::Subspaces would have been expensive
because they create a bunch of MarkedAllocators upfront. We now have the ability to create
MarkedAllocators lazily. We create them on the first allocation from that size class or when
a JIT asks for the MarkedAllocator. The concurrent JITs can ask for MarkedAllocators because
their creation is under a lock.

On my machine, this might be a 1.1% JetStream speed-up with 87% confidence and it might be
a 0.4% PLT3 slow-down with 92% confidence. Note that 0.4% on PLT3 is the level of systematic
error on PLT3 on my computer: I've seen definite 0.4% speed-ups and slow-downs that were not
confirmed by any bot. Let's see what the bots say.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/ObjectAllocationProfile.h:

(JSC::ObjectAllocationProfile::initialize):

  • bytecode/PolymorphicAccess.cpp:

(JSC::AccessCase::generateImpl):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::emitAllocateRawObject):
(JSC::DFG::SpeculativeJIT::compileMakeRope):
(JSC::DFG::SpeculativeJIT::compileAllocatePropertyStorage):
(JSC::DFG::SpeculativeJIT::compileReallocatePropertyStorage):
(JSC::DFG::SpeculativeJIT::compileNewTypedArray):
(JSC::DFG::SpeculativeJIT::emitAllocateButterfly):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNewTypedArray):
(JSC::FTL::DFG::LowerDFGToB3::compileMakeRope):
(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeNewObject):
(JSC::FTL::DFG::LowerDFGToB3::allocatePropertyStorageWithSizeImpl):
(JSC::FTL::DFG::LowerDFGToB3::allocateObject):
(JSC::FTL::DFG::LowerDFGToB3::allocatorForSize):
(JSC::FTL::DFG::LowerDFGToB3::allocateVariableSizedObject):
(JSC::FTL::DFG::LowerDFGToB3::allocateVariableSizedCell):
(JSC::FTL::DFG::LowerDFGToB3::allocateJSArray):

  • heap/AllocatorAttributes.h:

(JSC::AllocatorAttributes::AllocatorAttributes):

  • heap/ConstraintVolatility.h: Added.

(WTF::printInternal):

  • heap/GCActivityCallback.cpp:
  • heap/Heap.cpp:

(JSC::Heap::Heap):
(JSC::Heap::lastChanceToFinalize):
(JSC::Heap::markToFixpoint):
(JSC::Heap::updateObjectCounts):
(JSC::Heap::collectAllGarbage):
(JSC::Heap::collectInThread):
(JSC::Heap::stopTheWorld):
(JSC::Heap::updateAllocationLimits):
(JSC::Heap::bytesVisited):
(JSC::Heap::addCoreConstraints):
(JSC::Heap::addMarkingConstraint):
(JSC::Heap::notifyIsSafeToCollect):
(JSC::Heap::preventCollection):
(JSC::Heap::allowCollection):
(JSC::Heap::setMutatorShouldBeFenced):
(JSC::Heap::buildConstraintSet): Deleted.
(JSC::Heap::writeBarrierOpaqueRootSlow): Deleted.
(JSC::Heap::addMutatorShouldBeFencedCache): Deleted.

  • heap/Heap.h:

(JSC::Heap::mutatorExecutionVersion):
(JSC::Heap::numOpaqueRoots):
(JSC::Heap::vm): Deleted.
(JSC::Heap::subspaceForObjectWithoutDestructor): Deleted.
(JSC::Heap::subspaceForObjectDestructor): Deleted.
(JSC::Heap::subspaceForAuxiliaryData): Deleted.
(JSC::Heap::allocatorForObjectWithoutDestructor): Deleted.
(JSC::Heap::allocatorForObjectWithDestructor): Deleted.
(JSC::Heap::allocatorForAuxiliaryData): Deleted.

  • heap/HeapInlines.h:

(JSC::Heap::vm):
(JSC::Heap::allocateWithDestructor): Deleted.
(JSC::Heap::allocateWithoutDestructor): Deleted.
(JSC::Heap::allocateObjectOfType): Deleted.
(JSC::Heap::subspaceForObjectOfType): Deleted.
(JSC::Heap::allocatorForObjectOfType): Deleted.
(JSC::Heap::allocateAuxiliary): Deleted.
(JSC::Heap::tryAllocateAuxiliary): Deleted.
(JSC::Heap::tryReallocateAuxiliary): Deleted.
(JSC::Heap::ascribeOwner): Deleted.
(JSC::Heap::writeBarrierOpaqueRoot): Deleted.

  • heap/LargeAllocation.cpp:

(JSC::LargeAllocation::tryCreate):
(JSC::LargeAllocation::LargeAllocation):
(JSC::LargeAllocation::~LargeAllocation):
(JSC::LargeAllocation::sweep):

  • heap/LargeAllocation.h:
  • heap/MarkedAllocator.cpp:

(JSC::MarkedAllocator::MarkedAllocator):
(JSC::MarkedAllocator::tryAllocateWithoutCollecting):
(JSC::MarkedAllocator::tryAllocateIn):
(JSC::MarkedAllocator::allocateSlowCaseImpl):
(JSC::MarkedAllocator::tryAllocateBlock):
(JSC::MarkedAllocator::shrink):
(JSC::MarkedAllocator::markedSpace):

  • heap/MarkedAllocator.h:

(JSC::MarkedAllocator::nextAllocatorInSubspace):
(JSC::MarkedAllocator::setNextAllocatorInSubspace):
(JSC::MarkedAllocator::subspace):
(JSC::MarkedAllocator::tryAllocate): Deleted.
(JSC::MarkedAllocator::allocate): Deleted.
(JSC::MarkedAllocator::forEachBlock): Deleted.

  • heap/MarkedAllocatorInlines.h: Added.

(JSC::MarkedAllocator::tryAllocate):
(JSC::MarkedAllocator::allocate):
(JSC::MarkedAllocator::forEachBlock):
(JSC::MarkedAllocator::forEachNotEmptyBlock):

  • heap/MarkedBlock.cpp:

(JSC::MarkedBlock::Handle::subspace):
(JSC::MarkedBlock::Handle::sweep):
(JSC::MarkedBlock::Handle::specializedSweep): Deleted.
(JSC::MarkedBlock::Handle::sweepHelperSelectScribbleMode): Deleted.
(JSC::MarkedBlock::Handle::sweepHelperSelectEmptyMode): Deleted.
(JSC::MarkedBlock::Handle::sweepHelperSelectHasNewlyAllocated): Deleted.
(JSC::MarkedBlock::Handle::sweepHelperSelectSweepMode): Deleted.
(JSC::MarkedBlock::Handle::sweepHelperSelectMarksMode): Deleted.

  • heap/MarkedBlock.h:

(JSC::MarkedBlock::Handle::visitWeakSet):

  • heap/MarkedBlockInlines.h:

(JSC::MarkedBlock::Handle::isNewlyAllocatedStale):
(JSC::MarkedBlock::Handle::hasAnyNewlyAllocated):
(JSC::MarkedBlock::heap):
(JSC::MarkedBlock::space):
(JSC::MarkedBlock::Handle::space):
(JSC::MarkedBlock::Handle::specializedSweep):
(JSC::MarkedBlock::Handle::finishSweepKnowingSubspace):
(JSC::MarkedBlock::Handle::sweepDestructionMode):
(JSC::MarkedBlock::Handle::emptyMode):
(JSC::MarkedBlock::Handle::scribbleMode):
(JSC::MarkedBlock::Handle::newlyAllocatedMode):
(JSC::MarkedBlock::Handle::marksMode):
(JSC::MarkedBlock::Handle::forEachMarkedCell):

  • heap/MarkedSpace.cpp:

(JSC::MarkedSpace::initializeSizeClassForStepSize):
(JSC::MarkedSpace::MarkedSpace):
(JSC::MarkedSpace::lastChanceToFinalize):
(JSC::MarkedSpace::addMarkedAllocator):
(JSC::MarkedSpace::allocate): Deleted.
(JSC::MarkedSpace::tryAllocate): Deleted.
(JSC::MarkedSpace::allocateLarge): Deleted.
(JSC::MarkedSpace::tryAllocateLarge): Deleted.

  • heap/MarkedSpace.h:

(JSC::MarkedSpace::heap):
(JSC::MarkedSpace::allocatorLock):
(JSC::MarkedSpace::subspaceForObjectsWithDestructor): Deleted.
(JSC::MarkedSpace::subspaceForObjectsWithoutDestructor): Deleted.
(JSC::MarkedSpace::subspaceForAuxiliaryData): Deleted.
(JSC::MarkedSpace::allocatorFor): Deleted.
(JSC::MarkedSpace::destructorAllocatorFor): Deleted.
(JSC::MarkedSpace::auxiliaryAllocatorFor): Deleted.
(JSC::MarkedSpace::allocateWithoutDestructor): Deleted.
(JSC::MarkedSpace::allocateWithDestructor): Deleted.
(JSC::MarkedSpace::allocateAuxiliary): Deleted.
(JSC::MarkedSpace::tryAllocateAuxiliary): Deleted.
(JSC::MarkedSpace::forEachSubspace): Deleted.

  • heap/MarkingConstraint.cpp:

(JSC::MarkingConstraint::MarkingConstraint):

  • heap/MarkingConstraint.h:

(JSC::MarkingConstraint::volatility):

  • heap/MarkingConstraintSet.cpp:

(JSC::MarkingConstraintSet::resetStats):
(JSC::MarkingConstraintSet::add):
(JSC::MarkingConstraintSet::executeConvergenceImpl):

  • heap/MarkingConstraintSet.h:
  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::visitChildren):
(JSC::SlotVisitor::visitAsConstraint):
(JSC::SlotVisitor::drain):
(JSC::SlotVisitor::addOpaqueRoot):
(JSC::SlotVisitor::mergeIfNecessary):
(JSC::SlotVisitor::mergeOpaqueRootsIfNecessary): Deleted.

  • heap/SlotVisitor.h:

(JSC::SlotVisitor::setIgnoreNewOpaqueRoots):

  • heap/SlotVisitorInlines.h:

(JSC::SlotVisitor::reportExtraMemoryVisited):
(JSC::SlotVisitor::reportExternalMemoryVisited):

  • heap/Subspace.cpp: Added.

(JSC::Subspace::Subspace):
(JSC::Subspace::~Subspace):
(JSC::Subspace::finishSweep):
(JSC::Subspace::destroy):
(JSC::Subspace::allocate):
(JSC::Subspace::tryAllocate):
(JSC::Subspace::allocatorForSlow):
(JSC::Subspace::allocateSlow):
(JSC::Subspace::tryAllocateSlow):

  • heap/Subspace.h: Added.

(JSC::Subspace::tryAllocatorFor):
(JSC::Subspace::allocatorFor):

  • heap/SubspaceInlines.h: Added.

(JSC::Subspace::forEachMarkedBlock):
(JSC::Subspace::forEachNotEmptyMarkedBlock):
(JSC::Subspace::forEachLargeAllocation):
(JSC::Subspace::forEachMarkedCell):

  • heap/WeakBlock.cpp:

(JSC::WeakBlock::specializedVisit):

  • heap/WeakBlock.h:
  • heap/WeakSet.h:

(JSC::WeakSet::visit):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::emitAllocateJSObjectWithKnownSize):
(JSC::AssemblyHelpers::emitAllocateVariableSized):
(JSC::AssemblyHelpers::emitAllocateVariableSizedCell):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_new_object):

  • jsc.cpp:
  • runtime/ButterflyInlines.h:

(JSC::Butterfly::createUninitialized):
(JSC::Butterfly::growArrayRight):

  • runtime/ClassInfo.h:
  • runtime/ClonedArguments.cpp:

(JSC::ClonedArguments::createEmpty):

  • runtime/DirectArguments.cpp:

(JSC::DirectArguments::overrideThings):

  • runtime/GenericArgumentsInlines.h:

(JSC::GenericArguments<Type>::initModifiedArgumentsDescriptor):

  • runtime/HashMapImpl.h:

(JSC::HashMapBuffer::create):

  • runtime/JSArray.cpp:

(JSC::JSArray::tryCreateUninitialized):
(JSC::JSArray::unshiftCountSlowCase):

  • runtime/JSArrayBufferView.cpp:

(JSC::JSArrayBufferView::ConstructionContext::ConstructionContext):

  • runtime/JSCell.h:

(JSC::subspaceFor):

  • runtime/JSCellInlines.h:

(JSC::JSCell::visitOutputConstraints):
(JSC::JSCell::subspaceFor):
(JSC::allocateCell):

  • runtime/JSDestructibleObject.h:

(JSC::JSDestructibleObject::subspaceFor):

  • runtime/JSDestructibleObjectSubspace.cpp: Added.

(JSC::JSDestructibleObjectSubspace::JSDestructibleObjectSubspace):
(JSC::JSDestructibleObjectSubspace::~JSDestructibleObjectSubspace):
(JSC::JSDestructibleObjectSubspace::finishSweep):
(JSC::JSDestructibleObjectSubspace::destroy):

  • runtime/JSDestructibleObjectSubspace.h: Added.
  • runtime/JSObject.h:

(JSC::JSObject::JSObject):

  • runtime/JSObjectInlines.h:
  • runtime/JSSegmentedVariableObject.h:
  • runtime/JSString.h:

(JSC::JSString::subspaceFor):

  • runtime/JSStringSubspace.cpp: Added.

(JSC::JSStringSubspace::JSStringSubspace):
(JSC::JSStringSubspace::~JSStringSubspace):
(JSC::JSStringSubspace::finishSweep):
(JSC::JSStringSubspace::destroy):

  • runtime/JSStringSubspace.h: Added.
  • runtime/RegExpMatchesArray.h:

(JSC::tryCreateUninitializedRegExpMatchesArray):

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:

Source/WebCore:

No new tests yet. I think that writing tests for this is a big investigation:
https://bugs.webkit.org/show_bug.cgi?id=165808

Remove the previous advancing wavefront DOM write barrier. I don't think this will scale
very well. It's super confusing.

This change makes it so that visitAdditionalChildren can become a GC constraint that
executes as part of the fixpoint. This changes all WebCore visitAdditionalChildren into
output constraints by using new JSC API for Subspaces and MarkingConstraints.

  • ForwardingHeaders/heap/MarkedAllocatorInlines.h: Added.
  • ForwardingHeaders/heap/MarkedBlockInlines.h: Added.
  • ForwardingHeaders/heap/MarkingConstraint.h: Added.
  • ForwardingHeaders/heap/SubspaceInlines.h: Added.
  • ForwardingHeaders/heap/VisitingTimeout.h: Added.
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/CommonVM.cpp:

(WebCore::commonVMSlow):
(WebCore::writeBarrierOpaqueRootSlow): Deleted.

  • bindings/js/CommonVM.h:

(WebCore::writeBarrierOpaqueRoot): Deleted.

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSDOMGlobalObject::finishCreation):
(WebCore::JSDOMGlobalObject::scriptExecutionContext):

  • bindings/js/JSDOMWrapper.cpp:

(WebCore::outputConstraintSubspaceFor):
(WebCore::globalObjectOutputConstraintSubspaceFor):

  • bindings/js/JSDOMWrapper.h:
  • bindings/js/WebCoreJSClientData.cpp: Added.

(WebCore::JSVMClientData::JSVMClientData):
(WebCore::JSVMClientData::~JSVMClientData):
(WebCore::JSVMClientData::getAllWorlds):
(WebCore::initNormalWorldClientData):

  • bindings/js/WebCoreJSClientData.h:

(WebCore::JSVMClientData::outputConstraintSpace):
(WebCore::JSVMClientData::globalObjectOutputConstraintSpace):
(WebCore::JSVMClientData::forEachOutputConstraintSpace):
(WebCore::JSVMClientData::JSVMClientData): Deleted.
(WebCore::JSVMClientData::~JSVMClientData): Deleted.
(WebCore::JSVMClientData::getAllWorlds): Deleted.
(WebCore::initNormalWorldClientData): Deleted.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader):
(GenerateImplementation):

  • dom/ContainerNodeAlgorithms.cpp:

(WebCore::notifyChildNodeInserted):
(WebCore::notifyChildNodeRemoved):

8:21 PM Changeset in webkit [210843] by Michael Catanzaro
  • 213 edits
    4 deletes in trunk

Unreviewed, rolling out r210834
https://bugs.webkit.org/show_bug.cgi?id=165668

It introduced dozens of test timeouts.

Reverted changeset:
"[Modern Media Controls] Turn modern media controls on by default"
https://bugs.webkit.org/show_bug.cgi?id=165668
http://trac.webkit.org/changeset/210834

7:59 PM Changeset in webkit [210842] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

Remove positionOutsideContainingSpecialElement
https://bugs.webkit.org/show_bug.cgi?id=167150

Reviewed by Antti Koivisto.

It is not used anymore.

No change in functionality.

  • editing/htmlediting.cpp:

(WebCore::isFirstVisiblePositionInSpecialElement): Deleted.
(WebCore::isLastVisiblePositionInSpecialElement): Deleted.
(WebCore::positionOutsideContainingSpecialElement): Deleted.

  • editing/htmlediting.h:
5:46 PM Changeset in webkit [210841] by clopez@igalia.com
  • 2 edits in trunk/LayoutTests

[GTK][MediaStream] Update bug number for some tests after r210838.

Fix the bug number for tests fast/mediastream/MediaStream-add-ended-tracks.html
and fast/mediastream/MediaStream-add-remove-tracks.html that I wrongly updated
in r210838.

Unreviewed gardening.

  • platform/gtk/TestExpectations:
5:37 PM Changeset in webkit [210840] by akling@apple.com
  • 3 edits in trunk/Source/WTF

Annotate FastMalloc functions with returns_nonnull attribute.
<https://webkit.org/b/167144>

Reviewed by Antti Koivisto.

Decorate fastMalloc() and friends with attribute((returns_nonnull)) for supporting
compilers that can do useful things with that information.

  • wtf/Compiler.h:
  • wtf/FastMalloc.h:
5:35 PM Changeset in webkit [210839] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Unreviewed, fix nits found after landing r210833.
https://bugs.webkit.org/show_bug.cgi?id=167065

  • dom/ContainerNode.cpp:

(WebCore::ContainerNode::replaceAllChildren):

  • dom/ContainerNode.h:
5:32 PM Changeset in webkit [210838] by clopez@igalia.com
  • 2 edits in trunk/LayoutTests

[GTK][MediaStream] Update list of MediaStream tests that fail.

Unskip all the MediaStream tests and instead mark them as failing or timing out.

Unreviewed gardening.

  • platform/gtk/TestExpectations:
5:27 PM Changeset in webkit [210837] by msaboff@apple.com
  • 7 edits
    1 add in trunk

Nested parenthesized regular expressions with non-zero minimum counts appear to hang and use lots of memory
https://bugs.webkit.org/show_bug.cgi?id=167125

Reviewed by Filip Pizlo.

JSTests:

  • microbenchmarks/regexp-nested-nonzero-min-counted-parens.js: Added.

New test with limits that run slow and take a reasonable amount of memory
before the change and run fast, using little memory with the change.

Source/JavaScriptCore:

Changed Yarr to handle nested parenthesized subexpressions where the minimum count is
not 0 directly in the Yarr interpreter. Previously we'd factor an expression like
(a|b)+ into (a|b)(a|b)* with special handling for captures. This factoring was done
using a deep copy that doubled the size of the resulting expresion for each nested
parenthesized subexpression. Now the Yarr interpreter can directly process a regexp
like (a|b){2,42}.

The parser will allow one level of nested, non-zero minimum, counted parenthesis using
the old copy method. After one level, it will generate parenthesis terms with a non-zero
minimum. Such an expression wasn't handled by the Yarr JIT before the change, so this
change isn't a performance regression.

Added a minimum count to the YarrPattern and ByteTerm classes, and then factored that
minimum into the interpreter. A non-zero minimum is only handled by the Yarr interpreter.
If the Yarr JIT see such a term, it punts back to the interpreter.

  • yarr/YarrInterpreter.cpp:

(JSC::Yarr::Interpreter::backtrackPatternCharacter):
(JSC::Yarr::Interpreter::backtrackPatternCasedCharacter):
(JSC::Yarr::Interpreter::matchCharacterClass):
(JSC::Yarr::Interpreter::backtrackCharacterClass):
(JSC::Yarr::Interpreter::matchBackReference):
(JSC::Yarr::Interpreter::backtrackBackReference):
(JSC::Yarr::Interpreter::matchParenthesesOnceBegin):
(JSC::Yarr::Interpreter::matchParenthesesOnceEnd):
(JSC::Yarr::Interpreter::backtrackParenthesesOnceBegin):
(JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd):
(JSC::Yarr::Interpreter::matchParenthesesTerminalBegin):
(JSC::Yarr::Interpreter::backtrackParenthesesTerminalBegin):
(JSC::Yarr::Interpreter::matchParentheticalAssertionBegin):
(JSC::Yarr::Interpreter::matchParentheticalAssertionEnd):
(JSC::Yarr::Interpreter::backtrackParentheticalAssertionBegin):
(JSC::Yarr::Interpreter::backtrackParentheticalAssertionEnd):
(JSC::Yarr::Interpreter::matchParentheses):
(JSC::Yarr::Interpreter::backtrackParentheses):
(JSC::Yarr::Interpreter::matchDisjunction):
(JSC::Yarr::ByteCompiler::atomPatternCharacter):
(JSC::Yarr::ByteCompiler::atomCharacterClass):
(JSC::Yarr::ByteCompiler::atomBackReference):
(JSC::Yarr::ByteCompiler::atomParentheticalAssertionEnd):
(JSC::Yarr::ByteCompiler::atomParenthesesSubpatternEnd):
(JSC::Yarr::ByteCompiler::atomParenthesesOnceEnd):
(JSC::Yarr::ByteCompiler::atomParenthesesTerminalEnd):
(JSC::Yarr::ByteCompiler::emitDisjunction):

  • yarr/YarrInterpreter.h:

(JSC::Yarr::ByteTerm::ByteTerm):

  • yarr/YarrJIT.cpp:

(JSC::Yarr::YarrGenerator::generatePatternCharacterOnce):
(JSC::Yarr::YarrGenerator::generatePatternCharacterFixed):
(JSC::Yarr::YarrGenerator::generatePatternCharacterGreedy):
(JSC::Yarr::YarrGenerator::backtrackPatternCharacterNonGreedy):
(JSC::Yarr::YarrGenerator::generateCharacterClassFixed):
(JSC::Yarr::YarrGenerator::generateCharacterClassGreedy):
(JSC::Yarr::YarrGenerator::backtrackCharacterClassNonGreedy):
(JSC::Yarr::YarrGenerator::generateTerm):
(JSC::Yarr::YarrGenerator::backtrackTerm):
(JSC::Yarr::YarrGenerator::generate):
(JSC::Yarr::YarrGenerator::backtrack):
(JSC::Yarr::YarrGenerator::opCompileParenthesesSubpattern):

  • yarr/YarrPattern.cpp:

(JSC::Yarr::YarrPatternConstructor::copyTerm):
(JSC::Yarr::YarrPatternConstructor::quantifyAtom):
(JSC::Yarr::YarrPatternConstructor::checkForTerminalParentheses):
(JSC::Yarr::YarrPattern::YarrPattern):

  • yarr/YarrPattern.h:

(JSC::Yarr::PatternTerm::PatternTerm):
(JSC::Yarr::PatternTerm::quantify):
(JSC::Yarr::YarrPattern::reset):

5:21 PM Changeset in webkit [210836] by akling@apple.com
  • 2 edits in trunk/Source/WebCore

WidthCache should be off while under memory pressure.
<https://webkit.org/b/167141>

Reviewed by Antti Koivisto.

Since we empty all the WidthCaches when we come under memory pressure, we shouldn't
repopulate them until the pressure has gone away.

  • platform/graphics/WidthCache.h:

(WebCore::WidthCache::add):

5:14 PM Changeset in webkit [210835] by Antti Koivisto
  • 35 edits in trunk/Source

Persist derived data
https://bugs.webkit.org/show_bug.cgi?id=167136

Reviewed by Andreas Kling.

Source/WebCore:

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

(WebCore::ResourceLoader::didRetrieveDerivedDataFromCache):

  • loader/ResourceLoader.h:

(WebCore::ResourceLoader::options):

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

(WebCore::SubresourceLoader::didRetrieveDerivedDataFromCache):

  • loader/SubresourceLoader.h:
  • loader/cache/CachedResource.h:

(WebCore::CachedResource::didRetrieveDerivedDataFromCache):

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::defaultCachedResourceOptions):

  • platform/network/ResourceResponseBase.h:

(WebCore::ResourceResponseBase::cacheBodyKey):
(WebCore::ResourceResponseBase::setCacheBodyKey):
(WebCore::ResourceResponseBase::encode):
(WebCore::ResourceResponseBase::decode):

Source/WebKit:

  • WebCoreSupport/WebResourceLoadScheduler.h:

Source/WebKit2:

Add a mechanism for storing arbitrary data into disk cache.

From WebCore level data can be stored using

loaderStrategy()->storeDerivedDataToCache(key, partition, type, data);

The data is keyed with the body hash of a network resource. It can be retrieved along
with the resource by specifying the type in ResourceLoaderOptions. If a related data
blob is found it will be deliver via CachedResource::didRetrieveDerivedDataFromCache()
callback.

This patch adds the mechanism but doesn't yet use it for anything.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::storeDerivedDataToCache):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • NetworkProcess/NetworkResourceLoadParameters.cpp:

(WebKit::NetworkResourceLoadParameters::encode):
(WebKit::NetworkResourceLoadParameters::decode):

  • NetworkProcess/NetworkResourceLoadParameters.h:
  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::didRetrieveCacheEntry):

Look for related resources to return if needed.

(WebKit::NetworkResourceLoader::sendResultForCacheEntry):

  • NetworkProcess/NetworkResourceLoader.h:
  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::resourceType):

(WebKit::NetworkCache::Cache::retrieveData):

(WebKit::NetworkCache::Cache::storeData):
(WebKit::NetworkCache::Cache::makeCacheKey): Deleted.

  • NetworkProcess/cache/NetworkCache.h:
  • NetworkProcess/cache/NetworkCacheEntry.cpp:

(WebKit::NetworkCache::Entry::encodeAsStorageRecord):
(WebKit::NetworkCache::Entry::decodeStorageRecord):

  • NetworkProcess/cache/NetworkCacheKey.cpp:

(WebKit::NetworkCache::Key::Key):

  • NetworkProcess/cache/NetworkCacheKey.h:

(WebKit::NetworkCache::DataKey::encode):
(WebKit::NetworkCache::DataKey::decode):

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::Storage::readRecord):
(WebKit::NetworkCache::Storage::traverse):

  • NetworkProcess/cache/NetworkCacheStorage.h:

Return body hash with the Record.

  • NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp:

(WebKit::NetworkCache::SubresourcesEntry::encodeAsStorageRecord):

  • Platform/IPC/ArgumentCoders.cpp:

(IPC::ArgumentCoder<SHA1::Digest>::encode):
(IPC::ArgumentCoder<SHA1::Digest>::decode):

  • Platform/IPC/ArgumentCoders.h:
  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::scheduleLoad):
(WebKit::WebLoaderStrategy::storeDerivedDataToCache):

  • WebProcess/Network/WebLoaderStrategy.h:
  • WebProcess/Network/WebResourceLoader.cpp:

(WebKit::WebResourceLoader::didRetrieveDerivedData):

  • WebProcess/Network/WebResourceLoader.h:
  • WebProcess/Network/WebResourceLoader.messages.in:
4:42 PM Changeset in webkit [210834] by commit-queue@webkit.org
  • 213 edits
    4 copies
    10 adds in trunk

[Modern Media Controls] Turn modern media controls on by default
https://bugs.webkit.org/show_bug.cgi?id=165668

Patch by Antoine Quint <Antoine Quint> on 2017-01-17
Reviewed by Dean Jackson.

Source/WebCore:

Tests: media/modern-media-controls/fullscreen-support/ipad/fullscreen-support-tap.html

media/modern-media-controls/pip-support/ipad/pip-support-enabled.html
media/modern-media-controls/pip-support/ipad/pip-support-tap.html
media/modern-media-controls/placard-support/ipad/placard-support-pip.html
media/modern-media-controls/scrubber-support/ipad/scrubber-support-drag.html

Fix an error which may be triggered prior to Sierra where we would assume the presentation
mode API was avaiable when it might not be, which caused a few tests to fail.

  • Modules/modern-media-controls/media/pip-support.js:

(PiPSupport.prototype.syncControl):
(PiPSupport):

Source/WebKit/mac:

Enabled modern media controls by default in WK1.

  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):

Source/WebKit2:

Use DEFAULT_EXPERIMENTAL_FEATURES_ENABLED as the default value for modern media controls, which is true.

  • Shared/WebPreferencesDefinitions.h:

Tools:

Enabled modern media controls by default in test runners.

  • DumpRenderTree/TestOptions.h:
  • WebKitTestRunner/TestOptions.h:

LayoutTests:

Turn modern media controls off for a majority of pre-existing tests that made assumptions on the implementation
of media controls.

For tests designed for modern media controls, we don't need to opt out since modern media controls are now on
by default, and we turn them back on since they were skipped. But we make these tests more resilient by:

  1. adding iPad-specific tests
  2. adding platform-agnostic ways to press an element, using either eventSender or uiController
  3. checking that elements that are sized asynchronously are indeed sized before making assumptions to that effect
  4. ensuring that we don't have additional scheduler.frameDidFire callbacks after we no longer need them
  • TestExpectations:
  • accessibility/mac/video-tag-hit-test.html:
  • accessibility/mac/video-volume-slider-accessibility.html:
  • accessibility/media-element.html:
  • accessibility/media-emits-object-replacement.html:
  • compositing/video/poster-expected.html:
  • compositing/video/poster.html:
  • fast/hidpi/video-controls-in-hidpi.html:
  • fast/layers/video-layer.html:
  • fullscreen/video-controls-drag.html:
  • fullscreen/video-controls-override.html:
  • fullscreen/video-controls-rtl.html:
  • fullscreen/video-controls-timeline.html:
  • http/tests/media/hls/video-controls-live-stream.html:
  • http/tests/media/hls/video-duration-accessibility.html:
  • http/tests/security/contentSecurityPolicy/userAgentShadowDOM/default-src-object-data-url-allowed.html:
  • http/tests/security/contentSecurityPolicy/userAgentShadowDOM/default-src-object-data-url-blocked.html:
  • http/tests/security/contentSecurityPolicy/userAgentShadowDOM/default-src-object-data-url-blocked2.html:
  • http/tests/security/contentSecurityPolicy/userAgentShadowDOM/video-controls-allowed.html:
  • media/accessibility-closed-captions-has-aria-owns.html:
  • media/adopt-node-crash.html:
  • media/airplay-autoplay.html:
  • media/audio-as-video-fullscreen.html:
  • media/audio-controls-do-not-fade-out.html:
  • media/audio-controls-rendering.html:
  • media/audio-controls-timeline-in-media-document.html:
  • media/audio-delete-while-slider-thumb-clicked.html:
  • media/audio-repaint.html:
  • media/click-placeholder-not-pausing.html:
  • media/click-volume-bar-not-pausing.html:
  • media/controls-after-reload.html:
  • media/controls-drag-timebar.html:
  • media/controls-right-click-on-timebar.html:
  • media/controls-strict.html:
  • media/controls-styling.html:
  • media/controls-without-preload.html:
  • media/controls/airplay-controls.html:
  • media/controls/airplay-picker.html:
  • media/controls/basic.html:
  • media/controls/elementOrder.html:
  • media/controls/forced-tracks-only.html:
  • media/controls/fullscreen-button-inline-layout.html:
  • media/controls/inline-elements-dropoff-order.html:
  • media/controls/picture-in-picture.html:
  • media/controls/pip-placeholder-without-video-controls.html:
  • media/controls/showControlsButton.html:
  • media/controls/statusDisplay.html:
  • media/controls/statusDisplayBad.html:
  • media/controls/track-menu.html:
  • media/mac/controls-panel-not-clipped-out-expected.html:
  • media/mac/controls-panel-not-clipped-out.html:
  • media/media-captions-no-controls.html:
  • media/media-controller-drag-crash.html:
  • media/media-controls-accessibility.html:
  • media/media-controls-cancel-events.html:
  • media/media-controls-clone.html:
  • media/media-controls-drag-timeline-set-controls-property.html:
  • media/media-controls-timeline-updates-after-playing.html:
  • media/media-controls-timeline-updates-when-hovered.html:
  • media/media-controls-timeline-updates.html:
  • media/media-document-audio-controls-visible.html:
  • media/media-document-audio-repaint.html:
  • media/media-fullscreen-return-to-inline.html:
  • media/modern-media-controls/airplay-button/airplay-button-on.html:
  • media/modern-media-controls/airplay-button/airplay-button.html:
  • media/modern-media-controls/airplay-placard/airplay-placard-text-section.html:
  • media/modern-media-controls/audio/audio-controls-buttons-expected.txt:
  • media/modern-media-controls/audio/audio-controls-buttons.html:
  • media/modern-media-controls/audio/audio-controls-metrics.html:
  • media/modern-media-controls/button/button.html:
  • media/modern-media-controls/buttons-container/buttons-container-buttons-property.html:
  • media/modern-media-controls/forward-button/forward-button.html:
  • media/modern-media-controls/fullscreen-button/fullscreen-button.html:
  • media/modern-media-controls/fullscreen-support/fullscreen-support-click.html:
  • media/modern-media-controls/fullscreen-support/ipad/fullscreen-support-tap-expected.txt: Added.
  • media/modern-media-controls/fullscreen-support/ipad/fullscreen-support-tap.html: Added.
  • media/modern-media-controls/icon-button/icon-button-active-state.html:
  • media/modern-media-controls/icon-button/icon-button-on.html:
  • media/modern-media-controls/icon-button/icon-button.html:
  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-buttons-styles.html:
  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-controls-bar-styles.html:
  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-layout.html:
  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-time-control-styles.html:
  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-dropping-controls.html:
  • media/modern-media-controls/layout-node/addChild.html:
  • media/modern-media-controls/layout-node/children.html:
  • media/modern-media-controls/layout-node/height.html:
  • media/modern-media-controls/layout-node/insertAfter.html:
  • media/modern-media-controls/layout-node/insertBefore.html:
  • media/modern-media-controls/layout-node/node-made-dirty-during-layout.html:
  • media/modern-media-controls/layout-node/remove.html:
  • media/modern-media-controls/layout-node/removeChild.html:
  • media/modern-media-controls/layout-node/subclassing.html:
  • media/modern-media-controls/layout-node/visible.html:
  • media/modern-media-controls/layout-node/width.html:
  • media/modern-media-controls/layout-node/x.html:
  • media/modern-media-controls/layout-node/y.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-containers-styles.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-styles.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-controls-bar-styles.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-right-container-margin.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-time-control-styles.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-volume-styles.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-buttons-styles.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-controls-bar-styles.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-layout.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-status-label.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-time-control-styles.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-volume-styles.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-dropping-controls.html:
  • media/modern-media-controls/media-controller/media-controller-auto-hide-mouse-enter-and-mouse-leave.html:
  • media/modern-media-controls/media-controller/media-controller-auto-hide-mouse-enter-over-controls-bar.html:
  • 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:
  • media/modern-media-controls/media-controller/media-controller-auto-hide-rewind-with-mouse-enter.html:
  • media/modern-media-controls/media-controller/media-controller-auto-hide.html:
  • media/modern-media-controls/media-controller/media-controller-fade-controls-when-entering-fullscreen.html:
  • media/modern-media-controls/media-controller/media-controller-fullscreen-ltr.html:
  • media/modern-media-controls/media-controller/media-controller-inline-to-fullscreen-to-inline.html:
  • media/modern-media-controls/media-controller/media-controller-inline-to-fullscreen-to-pip-to-inline.html:
  • media/modern-media-controls/media-controller/media-controller-resize.html:
  • media/modern-media-controls/media-controller/media-controller-scale-factor.html:
  • media/modern-media-controls/media-controller/media-controller-single-container.html:
  • media/modern-media-controls/mute-button/mute-button.html:
  • media/modern-media-controls/pip-button/pip-button.html:
  • media/modern-media-controls/pip-placard/pip-placard-text-section.html:
  • media/modern-media-controls/pip-support/ipad/pip-support-enabled-expected.txt: Added.
  • media/modern-media-controls/pip-support/ipad/pip-support-enabled.html: Copied from LayoutTests/media/modern-media-controls/pip-support/pip-support-enabled.html.
  • media/modern-media-controls/pip-support/ipad/pip-support-tap-expected.txt: Added.
  • media/modern-media-controls/pip-support/ipad/pip-support-tap.html: Copied from LayoutTests/media/modern-media-controls/pip-support/pip-support-click.html.
  • media/modern-media-controls/pip-support/pip-support-click.html:
  • media/modern-media-controls/pip-support/pip-support-enabled.html:
  • media/modern-media-controls/placard-support/ipad/placard-support-pip-expected.txt: Copied from LayoutTests/media/modern-media-controls/placard-support/placard-support-airplay-expected.txt.
  • media/modern-media-controls/placard-support/ipad/placard-support-pip.html: Added.
  • media/modern-media-controls/placard-support/placard-support-airplay-expected.txt:
  • media/modern-media-controls/play-pause-button/play-pause-button.html:
  • media/modern-media-controls/playback-support/playback-support-button-click-expected.txt:
  • media/modern-media-controls/playback-support/playback-support-button-click.html:
  • media/modern-media-controls/resources/media-controls-utils.js:

(pressOnElement):
(finishMediaControlsTest):

  • media/modern-media-controls/rewind-button/rewind-button.html:
  • media/modern-media-controls/scheduler/not-reentrant.html:
  • media/modern-media-controls/scheduler/single-callback-when-registered-multiple-times.html:
  • media/modern-media-controls/scrubber-support/ipad/scrubber-support-drag-expected.txt: Copied from LayoutTests/media/modern-media-controls/scrubber-support/scrubber-support-drag-expected.txt.
  • media/modern-media-controls/scrubber-support/ipad/scrubber-support-drag.html: Added.
  • media/modern-media-controls/scrubber-support/scrubber-support-click.html:
  • media/modern-media-controls/scrubber-support/scrubber-support-drag-expected.txt:
  • media/modern-media-controls/scrubber-support/scrubber-support-drag.html:
  • media/modern-media-controls/seek-backward-support/seek-backward-support.html:
  • media/modern-media-controls/seek-forward-support/seek-forward-support.html:
  • media/modern-media-controls/skip-back-button/skip-back-button.html:
  • media/modern-media-controls/slider/slider-fill.html:
  • media/modern-media-controls/slider/slider-styles.html:
  • media/modern-media-controls/start-support/start-support-click-to-start-expected.txt:
  • media/modern-media-controls/start-support/start-support-click-to-start.html:
  • media/modern-media-controls/status-label/status-label-font.html:
  • media/modern-media-controls/status-label/status-label-text-selection.html:
  • media/modern-media-controls/status-label/status-label.html:
  • media/modern-media-controls/time-label/time-label.html:
  • media/modern-media-controls/tracks-button/tracks-button.html:
  • media/modern-media-controls/tracks-panel/tracks-panel-right-x.html:
  • media/modern-media-controls/tracks-panel/tracks-panel-select-track-with-keyboard.html:
  • media/modern-media-controls/tracks-support/tracks-support-click-track-in-panel.html:
  • media/modern-media-controls/tracks-support/tracks-support-show-and-populate-panel.html:
  • media/modern-media-controls/tracks-support/tracks-support-show-panel-after-dragging-controls-expected.txt:
  • media/modern-media-controls/tracks-support/tracks-support-show-panel-after-dragging-controls.html:
  • media/modern-media-controls/tracks-support/tracks-support-show-panel-fullscreen.html:
  • media/modern-media-controls/volume-slider/volume-slider-value.html:
  • media/modern-media-controls/volume-support/volume-support-click.html:
  • media/modern-media-controls/volume-support/volume-support-drag.html:
  • media/nodesFromRect-shadowContent.html:
  • media/progress-events-generated-correctly.html:
  • media/require-user-gesture-to-load-video.html:
  • media/tab-focus-inside-media-elements.html:
  • media/track/track-cue-rendering-horizontal.html:
  • media/track/track-cue-rendering-vertical.html:
  • media/track/track-cues-cuechange.html:
  • media/track/track-cues-enter-exit.html:
  • media/track/track-in-band-duplicate-tracks-when-source-changes.html:
  • media/track/track-manual-mode.html:
  • media/video-controls-audiotracks-trackmenu.html:
  • media/video-controls-captions-trackmenu-localized.html:
  • media/video-controls-captions-trackmenu-only-captions-descriptions-and-subtitles.html:
  • media/video-controls-captions-trackmenu-sorted.html:
  • media/video-controls-captions-trackmenu.html:
  • media/video-controls-drop-and-restore-timeline.html:
  • media/video-controls-in-media-document.html:
  • media/video-controls-no-display-with-text-track.html:
  • media/video-controls-rendering.html:
  • media/video-controls-show-on-kb-or-ax-event.html:
  • media/video-controls-toggling.html:
  • media/video-controls-transformed.html:
  • media/video-controls-visible-audio-only.html:
  • media/video-controls-visible-exiting-fullscreen.html:
  • media/video-controls-zoomed.html:
  • media/video-display-toggle.html:
  • media/video-empty-source.html:
  • media/video-fullscreeen-only-controls.html:
  • media/video-fullscreeen-only-playback.html:
  • media/video-initially-hidden-volume-slider-up.html:
  • media/video-no-audio.html:
  • media/video-play-audio-require-user-gesture.html:
  • media/video-play-require-user-gesture.html:
  • media/video-trackmenu-selection.html:
  • media/video-volume-slider-drag.html:
  • media/video-volume-slider.html:
  • media/video-zoom-controls.html:
  • media/volume-bar-empty-when-muted.html:
  • platform/gtk/TestExpectations:
  • platform/ios-simulator/TestExpectations:
  • platform/ios-simulator/media/video-play-glyph-composited-outside-overflow-scrolling-touch-container.html:
  • platform/mac-wk1/TestExpectations:
  • platform/mac/TestExpectations:
4:14 PM Changeset in webkit [210833] by Chris Dumez
  • 13 edits
    2 adds in trunk

Document title changed twice when setting document.title
https://bugs.webkit.org/show_bug.cgi?id=167065

Reviewed by Darin Adler.

Source/WebCore:

Setting document.title would call the document title to be set twice
first to the empty string and then to the new title. This is because
setting document.title is equivalent to setting title.textContent [1],
which first removes all children and then inserts the new one [2], and
we call updateTitle() for each step. This is because
HTMLTitleElement::childrenChanged() is called twice (once for the
removal of the existing children, and a second time when the new child
is inserted), and childrenChanged() calls document::titleElementTextChanged().

Since no JS event is fired between those 2 mutations, it is safe (i.e. non
observable from JS) to update the title only once after both mutations have
taken place. To achieve this, add a new replaceAllChildren() function
which implements [3]. This replaceAllChildren() has the benefit of
calling ContainerNode::childrenChanged() only once, after both mutations
have taken place, thus avoiding unnecessary work. This fixes the issue
when setting the title and should be performance-positive in general.

[1] https://html.spec.whatwg.org/#document.title
[2] https://dom.spec.whatwg.org/#dom-node-textcontent
[3] https://dom.spec.whatwg.org/#concept-node-replace-all

Test: fast/dom/Node/textContent-mutationEvents.html

  • dom/ContainerNode.cpp:

(WebCore::ContainerNode::notifyChildInserted):
(WebCore::ContainerNode::removeChild):
(WebCore::ContainerNode::replaceAllChildren):
(WebCore::ContainerNode::rebuildSVGExtensionsElementsIfNecessary):
(WebCore::ContainerNode::removeChildren):
(WebCore::ContainerNode::updateTreeAfterInsertion):

  • dom/ContainerNode.h:

Add new replaceAllChildrenWith() function which implements [3]
in a way that calls ContainerNode::childrenChanged() only once.

  • dom/Element.cpp:

(WebCore::Element::childrenChanged):
Deal with new AllChildrenReplaced ChildChange type.

  • dom/Node.cpp:

(WebCore::Node::setTextContent):
Call replaceAllChildrenWith() as per the specification:

  • dom/Range.cpp:

(WebCore::Range::surroundContents):
Call replaceAllChildrenWith(nullptr) as per the specification:

Tools:

Add WebKit2GTK API test that was written by Michael Catanzaro.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp:

(testWebViewTitleChange):
(beforeAll):

LayoutTests:

  • fast/dom/Node/textContent-mutationEvents-expected.txt: Added.
  • fast/dom/Node/textContent-mutationEvents.html: Added.

Add layout test to make sure that the mutation events are properly
fired when setting Node.textContent.

  • fast/dom/title-text-property-2-expected.txt:
  • fast/dom/title-text-property-2.html:
  • fast/dom/title-text-property-expected.txt:
  • http/tests/globalhistory/history-delegate-basic-title-expected.txt:

Update / rebaseline existing tests now that we no longer temporarily
reset document.title to the empty string when overriding the title.

4:11 PM Changeset in webkit [210832] by commit-queue@webkit.org
  • 19 edits in trunk

ENABLE(USER_TIMING) Not Defined for Apple Windows or OS X Ports
https://bugs.webkit.org/show_bug.cgi?id=116551
<rdar://problem/13949830>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-17
Reviewed by Alex Christensen.

.:

  • Source/cmake/OptionsEfl.cmake:
  • Source/cmake/OptionsWin.cmake:
  • Source/cmake/WebKitFeatures.cmake:
  • Source/cmake/tools/vsprops/FeatureDefines.props:
  • Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

  • Configurations/FeatureDefines.xcconfig:

Source/WTF:

  • wtf/FeatureDefines.h:

Tools:

  • Scripts/webkitperl/FeatureList.pm:

Remove stale RESOURCE_TIMING references which are now a runtime enabled feature
that is part of the existing WEB_TIMING feature.

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
4:02 PM Changeset in webkit [210831] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Editing nested RTL-LTR content makes the process unresponsive.
https://bugs.webkit.org/show_bug.cgi?id=167140
rdar://problem/29057611

Reviewed by Ryosuke Niwa.

Source/WebCore:

Break out of the loop if we keep coming back to the same position.
This is a workaround for the underlying editing/position bug -> webkit.org/b/167138.

Test: editing/rtl-to-ltr-editing-word-move-spin.html

  • editing/VisibleUnits.cpp:

(WebCore::visualWordPosition):

LayoutTests:

  • editing/rtl-to-ltr-editing-word-move-spin-expected.txt: Added.
  • editing/rtl-to-ltr-editing-word-move-spin.html: Added.
3:57 PM Changeset in webkit [210830] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Marking http/tests/media/hls/hls-video-resize.html as flaky on mac.
https://bugs.webkit.org/show_bug.cgi?id=162507

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
  • platform/mac/TestExpectations:
3:52 PM Changeset in webkit [210829] by fpizlo@apple.com
  • 60 edits in trunk/Source

JSCell::classInfo() shouldn't have a bunch of mitigations for being called during destruction
https://bugs.webkit.org/show_bug.cgi?id=167066

Reviewed by Keith Miller and Michael Saboff.
Source/JavaScriptCore:


This reduces the size of JSCell::classInfo() by half and removes some checks that
this function previously had to do in case it was called from destructors.

I changed all of the destructors so that they don't call JSCell::classInfo() and I
added an assertion to JSCell::classInfo() to catch cases where someone called it
from a destructor accidentally.

This means that we only have one place in destruction that needs to know the class:
the sweeper's call to the destructor.

One of the trickiest outcomes of this is the need to support inherits() tests in
JSObjectGetPrivate(), when it is called from the destructor callback on the object
being destructed. JSObjectGetPrivate() is undefined behavior anyway if you use it
on any dead-but-not-destructed object other than the one being destructed right
now. The purpose of the inherits() tests is to distinguish between different kinds
of CallbackObjects, which may have different kinds of base classes. I think that
this was always subtly wrong - for example, if the object being destructed is a
JSGlobalObject then it's not a DestructibleObject, is not in a destructor block,
but does not have an immortal Structure - so classInfo() is not valid. This fixes
the issue by having ~JSCallbackObject know its classInfo. It now stashes its
classInfo in VM so that JSObjectGetPrivate can use that classInfo if it detects
that it's being used on a currently-destructing object.

That was the only really weird part of this patch. The rest is mostly removing
illegal uses of jsCast<> in destructors. There were a few other genuine uses of
classInfo() but they were in code that already knew how to get its classInfo()
using other means:

  • You can still say structure()->classInfo(), and I use this form in code that knows that its StructureIsImmortal.


  • You can use this->classInfo() if it's overridden, like in subclasses of JSDestructibleObject.


Rolling this back in because I think I fixed the crashes.

  • API/JSAPIWrapperObject.mm:

(JSAPIWrapperObjectHandleOwner::finalize):

  • API/JSCallbackObject.h:
  • API/JSCallbackObjectFunctions.h:

(JSC::JSCallbackObject<Parent>::~JSCallbackObject):
(JSC::JSCallbackObject<Parent>::init):

  • API/JSObjectRef.cpp:

(classInfoPrivate):
(JSObjectGetPrivate):
(JSObjectSetPrivate):

  • bytecode/EvalCodeBlock.cpp:

(JSC::EvalCodeBlock::destroy):

  • bytecode/FunctionCodeBlock.cpp:

(JSC::FunctionCodeBlock::destroy):

  • bytecode/ModuleProgramCodeBlock.cpp:

(JSC::ModuleProgramCodeBlock::destroy):

  • bytecode/ProgramCodeBlock.cpp:

(JSC::ProgramCodeBlock::destroy):

  • bytecode/UnlinkedEvalCodeBlock.cpp:

(JSC::UnlinkedEvalCodeBlock::destroy):

  • bytecode/UnlinkedFunctionCodeBlock.cpp:

(JSC::UnlinkedFunctionCodeBlock::destroy):

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::UnlinkedFunctionExecutable::destroy):

  • bytecode/UnlinkedModuleProgramCodeBlock.cpp:

(JSC::UnlinkedModuleProgramCodeBlock::destroy):

  • bytecode/UnlinkedProgramCodeBlock.cpp:

(JSC::UnlinkedProgramCodeBlock::destroy):

  • heap/CodeBlockSet.cpp:

(JSC::CodeBlockSet::lastChanceToFinalize):
(JSC::CodeBlockSet::deleteUnmarkedAndUnreferenced):

  • heap/MarkedAllocator.cpp:

(JSC::MarkedAllocator::allocateSlowCaseImpl):

  • heap/MarkedBlock.cpp:

(JSC::MarkedBlock::Handle::sweep):

  • jit/JITThunks.cpp:

(JSC::JITThunks::finalize):

  • runtime/AbstractModuleRecord.cpp:

(JSC::AbstractModuleRecord::destroy):

  • runtime/ExecutableBase.cpp:

(JSC::ExecutableBase::clearCode):

  • runtime/JSCellInlines.h:

(JSC::JSCell::classInfo):
(JSC::JSCell::callDestructor):

  • runtime/JSLock.h:

(JSC::JSLock::ownerThread):

  • runtime/JSModuleNamespaceObject.cpp:

(JSC::JSModuleNamespaceObject::destroy):

  • runtime/JSModuleRecord.cpp:

(JSC::JSModuleRecord::destroy):

  • runtime/JSPropertyNameEnumerator.cpp:

(JSC::JSPropertyNameEnumerator::destroy):

  • runtime/JSSegmentedVariableObject.h:
  • runtime/SymbolTable.cpp:

(JSC::SymbolTable::destroy):

  • runtime/VM.h:
  • wasm/js/JSWebAssemblyCallee.cpp:

(JSC::JSWebAssemblyCallee::destroy):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::destroy):

  • wasm/js/WebAssemblyToJSCallee.cpp:

(JSC::WebAssemblyToJSCallee::WebAssemblyToJSCallee):
(JSC::WebAssemblyToJSCallee::destroy):

Source/WebCore:

No new tests because no new behavior.

It's now necessary to avoid jsCast in destructors and finalizers. This was an easy
rule to introduce because this used to always be the rule.

  • bindings/js/JSCSSValueCustom.cpp:

(WebCore::JSDeprecatedCSSOMValueOwner::finalize):

  • bindings/js/JSDOMIterator.h:

(WebCore::IteratorTraits>::destroy):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):

Source/WebKit2:


Just remove now-erroneous use of jsCast<>.

  • WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:

(WebKit::NPRuntimeObjectMap::finalize):

3:50 PM Changeset in webkit [210828] by commit-queue@webkit.org
  • 170 edits in trunk/Source

Remove unnecessary includes
https://bugs.webkit.org/show_bug.cgi?id=167114

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-17
Reviewed by Alex Christensen.
Source/WebKit2:

  • WebProcess/WebPage/ios/WebPageIOS.mm:
3:33 PM Changeset in webkit [210827] by beidson@apple.com
  • 8 edits in trunk

An update to one gamepad's values should only change that gamepad's modified timestamp.
<rdar://problem/28620865> and https://bugs.webkit.org/show_bug.cgi?id=167139

Reviewed by Andy Estes.

Source/WebKit2:

Track the lastModifiedTime for a gamepad in the UI process, and pass it along to web processes.

  • Shared/Gamepad/GamepadData.cpp:

(WebKit::GamepadData::GamepadData):
(WebKit::GamepadData::encode):
(WebKit::GamepadData::decode):

  • Shared/Gamepad/GamepadData.h:

(WebKit::GamepadData::lastUpdateTime):

  • UIProcess/Gamepad/UIGamepad.cpp:

(WebKit::UIGamepad::UIGamepad):
(WebKit::UIGamepad::updateFromPlatformGamepad):
(WebKit::UIGamepad::condensedGamepadData):
(WebKit::UIGamepad::fullGamepadData):

  • UIProcess/Gamepad/UIGamepad.h:
  • WebProcess/Gamepad/WebGamepad.cpp:

(WebKit::WebGamepad::updateValues):

LayoutTests:

  • gamepad/gamepad-timestamp.html:
3:24 PM Changeset in webkit [210826] by akling@apple.com
  • 4 edits in trunk/Source/WebCore

Kill the presentation attribute cache.
<https://webkit.org/b/119542>

Reviewed by Antti Koivisto.

This cache was added to placate some old page cycler test that was measuring load times
on pages captured in 2000. That content is not super relevant anymore, and I think
we can live without this cache.

  • dom/StyledElement.cpp:

(WebCore::StyledElement::rebuildPresentationAttributeStyle):
(WebCore::presentationAttributeCache): Deleted.
(WebCore::PresentationAttributeCacheCleaner::PresentationAttributeCacheCleaner): Deleted.
(WebCore::PresentationAttributeCacheCleaner::didHitPresentationAttributeCache): Deleted.
(WebCore::PresentationAttributeCacheCleaner::cleanCache): Deleted.
(WebCore::presentationAttributeCacheCleaner): Deleted.
(WebCore::StyledElement::clearPresentationAttributeCache): Deleted.
(WebCore::attributeNameSort): Deleted.
(WebCore::StyledElement::makePresentationAttributeCacheKey): Deleted.
(WebCore::computePresentationAttributeCacheHash): Deleted.

  • dom/StyledElement.h:
  • page/MemoryRelease.cpp:

(WebCore::releaseNoncriticalMemory):

12:57 PM Changeset in webkit [210825] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

It's not possible to perform a POST request with HTTPBody content in a WKWebView
https://bugs.webkit.org/show_bug.cgi?id=167131
rdar://problem/20464240

Reviewed by Beth Dakin.

Encode/decode the form data if necessary.

  • Shared/LoadParameters.cpp:

(WebKit::LoadParameters::encode):
(WebKit::LoadParameters::decode):

12:25 PM Changeset in webkit [210824] by fpizlo@apple.com
  • 35 edits in trunk/Source

Unreviewed, roll out http://trac.webkit.org/changeset/210821
It was causing crashes.

Source/JavaScriptCore:

  • API/JSAPIWrapperObject.mm:

(JSAPIWrapperObjectHandleOwner::finalize):

  • API/JSCallbackObject.h:
  • API/JSCallbackObjectFunctions.h:

(JSC::JSCallbackObject<Parent>::~JSCallbackObject):
(JSC::JSCallbackObject<Parent>::init):

  • API/JSObjectRef.cpp:

(JSObjectGetPrivate):
(JSObjectSetPrivate):
(classInfoPrivate): Deleted.

  • bytecode/EvalCodeBlock.cpp:

(JSC::EvalCodeBlock::destroy):

  • bytecode/FunctionCodeBlock.cpp:

(JSC::FunctionCodeBlock::destroy):

  • bytecode/ModuleProgramCodeBlock.cpp:

(JSC::ModuleProgramCodeBlock::destroy):

  • bytecode/ProgramCodeBlock.cpp:

(JSC::ProgramCodeBlock::destroy):

  • bytecode/UnlinkedEvalCodeBlock.cpp:

(JSC::UnlinkedEvalCodeBlock::destroy):

  • bytecode/UnlinkedFunctionCodeBlock.cpp:

(JSC::UnlinkedFunctionCodeBlock::destroy):

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::UnlinkedFunctionExecutable::destroy):

  • bytecode/UnlinkedModuleProgramCodeBlock.cpp:

(JSC::UnlinkedModuleProgramCodeBlock::destroy):

  • bytecode/UnlinkedProgramCodeBlock.cpp:

(JSC::UnlinkedProgramCodeBlock::destroy):

  • heap/CodeBlockSet.cpp:

(JSC::CodeBlockSet::lastChanceToFinalize):
(JSC::CodeBlockSet::deleteUnmarkedAndUnreferenced):

  • heap/MarkedAllocator.cpp:

(JSC::MarkedAllocator::allocateSlowCaseImpl):

  • heap/MarkedBlock.cpp:

(JSC::MarkedBlock::Handle::sweep):

  • jit/JITThunks.cpp:

(JSC::JITThunks::finalize):

  • runtime/AbstractModuleRecord.cpp:

(JSC::AbstractModuleRecord::destroy):

  • runtime/ExecutableBase.cpp:

(JSC::ExecutableBase::clearCode):

  • runtime/JSCellInlines.h:

(JSC::JSCell::classInfo):
(JSC::JSCell::callDestructor):

  • runtime/JSLock.h:

(JSC::JSLock::exclusiveThread):
(JSC::JSLock::ownerThread): Deleted.

  • runtime/JSModuleNamespaceObject.cpp:

(JSC::JSModuleNamespaceObject::destroy):

  • runtime/JSModuleRecord.cpp:

(JSC::JSModuleRecord::destroy):

  • runtime/JSPropertyNameEnumerator.cpp:

(JSC::JSPropertyNameEnumerator::destroy):

  • runtime/JSSegmentedVariableObject.h:
  • runtime/SymbolTable.cpp:

(JSC::SymbolTable::destroy):

  • runtime/VM.h:
  • wasm/js/JSWebAssemblyCallee.cpp:

(JSC::JSWebAssemblyCallee::destroy):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::destroy):

  • wasm/js/WebAssemblyToJSCallee.cpp:

(JSC::WebAssemblyToJSCallee::WebAssemblyToJSCallee):
(JSC::WebAssemblyToJSCallee::destroy):

Source/WebCore:

  • bindings/js/JSCSSValueCustom.cpp:

(WebCore::JSDeprecatedCSSOMValueOwner::finalize):

  • bindings/js/JSDOMIterator.h:

(WebCore::IteratorTraits>::destroy):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):

12:04 PM Changeset in webkit [210823] by achristensen@apple.com
  • 208 edits
    104 adds in trunk/LayoutTests

LayoutTests/imported/w3c:

Refresh WPT tests up to 73f4ad361ca56d890b5f46d62c3bc84371a77e10

https://bugs.webkit.org/show_bug.cgi?id=167105

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

Refreshing tests but not WPT dependencies.

  • resources/ImportExpectations:
  • resources/TestRepositories:
  • resources/resource-files.json:
  • web-platform-tests/IndexedDB/idbindex-rename-abort.html:
  • web-platform-tests/IndexedDB/idbindex-rename-errors.html:
  • web-platform-tests/IndexedDB/idbindex-rename.html:
  • web-platform-tests/IndexedDB/idbkeyrange-expected.txt:
  • web-platform-tests/IndexedDB/idbkeyrange.htm:
  • web-platform-tests/IndexedDB/idbobjectstore-rename-abort.html:
  • web-platform-tests/IndexedDB/idbobjectstore-rename-errors.html:
  • web-platform-tests/IndexedDB/idbobjectstore-rename-store.html:
  • web-platform-tests/IndexedDB/idbrequest_error-expected.txt: Added.
  • web-platform-tests/IndexedDB/idbrequest_error.html: Added.
  • web-platform-tests/IndexedDB/idbrequest_result-expected.txt: Added.
  • web-platform-tests/IndexedDB/idbrequest_result.html: Added.
  • web-platform-tests/IndexedDB/name-scopes.html:
  • web-platform-tests/IndexedDB/support-promises.js:

(databaseName):
(requestWatcher):
(migrateDatabase):
(migrateNamedDatabase):
(createNamedDatabase):
(openNamedDatabase):
(const.createBooksStore):
(createNotBooksStore):
(checkStoreIndexes):
(checkStoreGenerator):

  • web-platform-tests/IndexedDB/transaction-abort-generator-revert.html:
  • web-platform-tests/IndexedDB/transaction-abort-index-metadata-revert.html:
  • web-platform-tests/IndexedDB/transaction-abort-multiple-metadata-revert.html:
  • web-platform-tests/IndexedDB/transaction-abort-object-store-metadata-revert.html:
  • web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-backend-aborted-expected.txt: Added.
  • web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-backend-aborted.html: Added.
  • web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-committed-expected.txt: Added.
  • web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-committed.html: Added.
  • web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-user-aborted-expected.txt: Added.
  • web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-user-aborted.html: Added.
  • web-platform-tests/IndexedDB/w3c-import.log:
  • web-platform-tests/LICENSE.md: Added.
  • web-platform-tests/README.md:
  • web-platform-tests/XMLHttpRequest/OWNERS:
  • web-platform-tests/XMLHttpRequest/open-url-multi-window-6.htm:
  • web-platform-tests/XMLHttpRequest/resources/xmlhttprequest-event-order.js:

(getNextEvent):
(global.assert_xhr_event_order_matches):

  • web-platform-tests/check_stability.py:

(GitHub.init):
(GitHub.patch):
(GitHub.post_comment):
(Firefox.install):
(Firefox._latest_geckodriver_version):
(call):
(setup_github_logging):
(get_sha1):
(get_affected_testfiles):
(write_inconsistent):
(write_results):
(main):

  • web-platform-tests/ci_built_diff.sh: Added.
  • web-platform-tests/common/redirect-opt-in.py: Added.

(main):

  • web-platform-tests/common/w3c-import.log:
  • web-platform-tests/custom-elements/parser/parser-uses-constructed-element-expected.txt:
  • web-platform-tests/custom-elements/parser/parser-uses-constructed-element.html:
  • web-platform-tests/dom/OWNERS:
  • web-platform-tests/dom/events/w3c-import.log:
  • web-platform-tests/dom/historical-expected.txt:
  • web-platform-tests/dom/historical.html:
  • web-platform-tests/dom/nodes/Node-cloneNode-expected.txt:
  • web-platform-tests/dom/nodes/Node-cloneNode.html:
  • web-platform-tests/domparsing/w3c-import.log:
  • web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys.html:
  • web-platform-tests/encrypted-media/clearkey-not-callable-after-createsession.html:
  • web-platform-tests/encrypted-media/content/video_512x288_h264-360k_multikey_key1_dashinit.mp4: Added.
  • web-platform-tests/encrypted-media/drm-events.html:
  • web-platform-tests/encrypted-media/drm-expiration.html:
  • web-platform-tests/encrypted-media/drm-keystatuses-multiple-sessions.html:
  • web-platform-tests/encrypted-media/drm-keystatuses.html:
  • web-platform-tests/encrypted-media/drm-mp4-playback-destroy-persistent-license.html:
  • web-platform-tests/encrypted-media/drm-mp4-playback-persistent-license-events.html:
  • web-platform-tests/encrypted-media/drm-mp4-playback-persistent-license.html:
  • web-platform-tests/encrypted-media/drm-mp4-playback-persistent-usage-record-events.html:
  • web-platform-tests/encrypted-media/drm-mp4-playback-retrieve-persistent-usage-record.html:
  • web-platform-tests/encrypted-media/drm-mp4-playback-temporary-clear-encrypted.html:
  • web-platform-tests/encrypted-media/drm-mp4-playback-temporary-encrypted-clear.html:
  • web-platform-tests/encrypted-media/drm-mp4-playback-temporary-multikey.html:
  • web-platform-tests/encrypted-media/drm-mp4-playback-temporary-multisession.html:
  • web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-src.html:
  • web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-update.html:
  • web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-immediately.html:
  • web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-onencrypted.html:
  • web-platform-tests/encrypted-media/drm-mp4-playback-temporary-two-videos.html:
  • web-platform-tests/encrypted-media/drm-mp4-playback-temporary-waitingforkey.html:
  • web-platform-tests/encrypted-media/drm-mp4-playback-temporary.html:
  • web-platform-tests/encrypted-media/drm-mp4-requestmediakeysystemaccess.html:
  • web-platform-tests/encrypted-media/drm-mp4-setmediakeys-again-after-playback.html:
  • web-platform-tests/encrypted-media/drm-mp4-setmediakeys-again-after-resetting-src.html:
  • web-platform-tests/encrypted-media/drm-mp4-setmediakeys-at-same-time.html:
  • web-platform-tests/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-different-mediakeys.html:
  • web-platform-tests/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-the-same-mediakeys.html:
  • web-platform-tests/encrypted-media/drm-mp4-setmediakeys-to-multiple-video-elements.html:
  • web-platform-tests/encrypted-media/drm-mp4-setmediakeys.html:
  • web-platform-tests/encrypted-media/drm-mp4-waiting-for-a-key.html:
  • web-platform-tests/encrypted-media/drm-not-callable-after-createsession.html:
  • web-platform-tests/encrypted-media/drm-temporary-license-type.html:
  • web-platform-tests/fetch/api/basic/request-headers-expected.txt:
  • web-platform-tests/fetch/api/basic/request-headers-worker-expected.txt:
  • web-platform-tests/fetch/api/basic/request-headers.js:

(checkContentType):
(requestOriginHeader):

  • web-platform-tests/fetch/api/basic/request-upload-expected.txt:
  • web-platform-tests/fetch/api/basic/request-upload-worker-expected.txt:
  • web-platform-tests/fetch/api/basic/request-upload.js:
  • web-platform-tests/fetch/api/headers/headers-basic-expected.txt:
  • web-platform-tests/fetch/api/headers/headers-basic.html:
  • web-platform-tests/fetch/api/headers/headers-idl.html:
  • web-platform-tests/fetch/api/redirect/redirect-count-worker.html:
  • web-platform-tests/fetch/api/redirect/redirect-count.html:
  • web-platform-tests/fetch/api/redirect/redirect-count.js:

(redirectCount):

  • web-platform-tests/fetch/api/redirect/redirect-referrer-expected.txt: Added.
  • web-platform-tests/fetch/api/redirect/redirect-referrer-worker-expected.txt: Added.
  • web-platform-tests/fetch/api/redirect/redirect-referrer-worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count-worker.html.
  • web-platform-tests/fetch/api/redirect/redirect-referrer.html: Copied from LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count.html.
  • web-platform-tests/fetch/api/redirect/redirect-referrer.js: Added.

(testReferrerAfterRedirection):

  • web-platform-tests/fetch/api/redirect/w3c-import.log:
  • web-platform-tests/fetch/api/request/multi-globals/current/current.html:
  • web-platform-tests/fetch/api/request/multi-globals/incumbent/incumbent.html:
  • web-platform-tests/fetch/api/request/multi-globals/url-parsing.html:
  • web-platform-tests/fetch/api/request/request-bad-port-expected.txt: Added.
  • web-platform-tests/fetch/api/request/request-bad-port.html: Added.
  • web-platform-tests/fetch/api/request/request-idl.html:
  • web-platform-tests/fetch/api/request/request-init-001.sub-expected.txt:
  • web-platform-tests/fetch/api/request/request-init-001.sub.html:
  • web-platform-tests/fetch/api/request/w3c-import.log:
  • web-platform-tests/fetch/api/resources/redirect.py:

(main):

  • web-platform-tests/fetch/api/response/multi-globals/current/current.html:
  • web-platform-tests/fetch/api/response/multi-globals/incumbent/incumbent.html:
  • web-platform-tests/fetch/api/response/multi-globals/url-parsing.html:
  • web-platform-tests/fetch/api/response/response-consume-expected.txt:
  • web-platform-tests/fetch/api/response/response-consume.html:
  • web-platform-tests/fetch/nosniff/image-expected.txt:
  • web-platform-tests/fetch/nosniff/image.html:
  • web-platform-tests/html/OWNERS:
  • web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resources/post_name_on_load.html: Added.
  • web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resources/w3c-import.log:
  • web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resume-timer-on-history-back-expected.txt: Added.
  • web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resume-timer-on-history-back.html: Added.
  • web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/w3c-import.log:
  • web-platform-tests/html/browsers/browsing-the-web/history-traversal/resources/a.html: Added.
  • web-platform-tests/html/browsers/browsing-the-web/history-traversal/resources/b.html: Added.
  • web-platform-tests/html/browsers/browsing-the-web/history-traversal/resources/c.html: Added.
  • web-platform-tests/html/browsers/browsing-the-web/history-traversal/resources/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resources/w3c-import.log.
  • web-platform-tests/html/browsers/browsing-the-web/history-traversal/w3c-import.log:
  • web-platform-tests/html/browsers/history/the-location-interface/location-pathname-setter-question-mark-expected.txt: Added.
  • web-platform-tests/html/browsers/history/the-location-interface/location-pathname-setter-question-mark.html: Added.
  • web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-expected.txt: Added.
  • web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-expected.txt: Added.
  • web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-weird-expected.txt: Added.
  • web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-weird.html: Added.
  • web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html: Added.
  • web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter.html: Added.
  • web-platform-tests/html/browsers/history/the-location-interface/w3c-import.log:
  • web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt.
  • web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions.html: Copied from LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.
  • web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt:
  • web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window-expected.txt:
  • web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html:
  • web-platform-tests/html/browsers/origin/cross-origin-objects/frame.html:
  • web-platform-tests/html/browsers/origin/cross-origin-objects/w3c-import.log:
  • web-platform-tests/html/browsers/origin/cross-origin-objects/win-documentdomain.sub.html:
  • web-platform-tests/html/dom/elements-embedded.js:
  • web-platform-tests/html/dom/elements-metadata.js:
  • web-platform-tests/html/dom/elements-misc.js:
  • web-platform-tests/html/dom/elements-text.js:
  • web-platform-tests/html/dom/elements/elements-in-the-dom/historical-expected.txt: Added.
  • web-platform-tests/html/dom/elements/elements-in-the-dom/historical.html: Added.
  • web-platform-tests/html/dom/elements/elements-in-the-dom/w3c-import.log:
  • web-platform-tests/html/dom/interfaces.html:
  • web-platform-tests/html/dom/reflection-embedded-expected.txt:
  • web-platform-tests/html/dom/reflection-metadata-expected.txt:
  • web-platform-tests/html/dom/reflection-misc-expected.txt:
  • web-platform-tests/html/dom/reflection-text-expected.txt:
  • web-platform-tests/html/resources/common.js:
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1-expected.txt: Added.
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html: Added.
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-2-expected.txt: Added.
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-2.html: Added.
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/dynamic-append-expected.txt: Added.
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/dynamic-append.html: Added.
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/moving-documents-expected.txt: Added.
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/moving-documents.html: Added.
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/not-in-shadow-tree-expected.txt: Added.
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/not-in-shadow-tree.html: Added.
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/w3c-import.log:
  • web-platform-tests/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.whitespace.html:
  • web-platform-tests/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.whitespace.html:
  • web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.nocontext.html:
  • web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.png.complexcolours.png:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/image.png: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-src-complete-expected.txt: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-src-complete.html: Added.
  • web-platform-tests/html/semantics/embedded-content/the-img-element/w3c-import.log:
  • web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate-expected.txt:
  • web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate.html:
  • web-platform-tests/html/semantics/forms/form-control-infrastructure/form-expected.txt:
  • web-platform-tests/html/semantics/forms/form-control-infrastructure/form.html:
  • web-platform-tests/html/semantics/forms/form-submission-0/submit-entity-body.html:
  • web-platform-tests/html/semantics/forms/form-submission-0/url-encoded-expected.txt:
  • web-platform-tests/html/semantics/forms/form-submission-0/url-encoded.html:
  • web-platform-tests/html/semantics/forms/resetting-a-form/reset-form.html:
  • web-platform-tests/html/semantics/forms/the-form-element/form-nameditem-expected.txt:
  • web-platform-tests/html/semantics/forms/the-form-element/form-nameditem.html:
  • web-platform-tests/html/semantics/forms/the-input-element/clone-expected.txt: Added.
  • web-platform-tests/html/semantics/forms/the-input-element/clone.html: Added.
  • web-platform-tests/html/semantics/forms/the-input-element/radio-expected.txt:
  • web-platform-tests/html/semantics/forms/the-input-element/radio.html:
  • web-platform-tests/html/semantics/forms/the-input-element/w3c-import.log:
  • web-platform-tests/html/semantics/forms/the-label-element/labelable-elements-expected.txt:
  • web-platform-tests/html/semantics/forms/the-label-element/labelable-elements.html:
  • web-platform-tests/html/semantics/forms/the-select-element/select-validity-expected.txt: Added.
  • web-platform-tests/html/semantics/forms/the-select-element/select-validity.html: Added.
  • web-platform-tests/html/semantics/forms/the-select-element/select-value-expected.txt: Added.
  • web-platform-tests/html/semantics/forms/the-select-element/select-value.html: Added.
  • web-platform-tests/html/semantics/forms/the-select-element/w3c-import.log:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html:
  • web-platform-tests/html/semantics/interfaces-expected.txt:
  • web-platform-tests/html/semantics/interfaces.js:
  • web-platform-tests/html/semantics/scripting-1/the-template-element/template-element/template-as-a-descendant-expected.txt:
  • web-platform-tests/html/semantics/scripting-1/the-template-element/template-element/template-as-a-descendant.html:
  • web-platform-tests/html/syntax/parsing/html5lib_entities01-expected.txt:
  • web-platform-tests/html/syntax/parsing/html5lib_entities01.html:
  • web-platform-tests/html/syntax/parsing/html5lib_entities02-expected.txt:
  • web-platform-tests/html/syntax/parsing/html5lib_entities02.html:
  • web-platform-tests/html/syntax/parsing/html5lib_innerHTML_adoption01-expected.txt: Added.
  • web-platform-tests/html/syntax/parsing/html5lib_innerHTML_adoption01.html: Added.
  • web-platform-tests/html/syntax/parsing/html5lib_innerHTML_foreign-fragment-expected.txt: Added.
  • web-platform-tests/html/syntax/parsing/html5lib_innerHTML_foreign-fragment.html: Added.
  • web-platform-tests/html/syntax/parsing/html5lib_innerHTML_math-expected.txt: Added.
  • web-platform-tests/html/syntax/parsing/html5lib_innerHTML_math.html: Added.
  • web-platform-tests/html/syntax/parsing/html5lib_innerHTML_webkit02-expected.txt: Added.
  • web-platform-tests/html/syntax/parsing/html5lib_innerHTML_webkit02.html: Added.
  • web-platform-tests/html/syntax/parsing/html5lib_isindex-expected.txt:
  • web-platform-tests/html/syntax/parsing/html5lib_isindex.html:
  • web-platform-tests/html/syntax/parsing/html5lib_menuitem-element-expected.txt: Added.
  • web-platform-tests/html/syntax/parsing/html5lib_menuitem-element.html: Added.
  • web-platform-tests/html/syntax/parsing/html5lib_namespace-sensitivity-expected.txt: Added.
  • web-platform-tests/html/syntax/parsing/html5lib_namespace-sensitivity.html: Added.
  • web-platform-tests/html/syntax/parsing/html5lib_ruby-expected.txt: Added.
  • web-platform-tests/html/syntax/parsing/html5lib_ruby.html: Added.
  • web-platform-tests/html/syntax/parsing/html5lib_template-expected.txt:
  • web-platform-tests/html/syntax/parsing/html5lib_template.html:
  • web-platform-tests/html/syntax/parsing/html5lib_tests11-expected.txt:
  • web-platform-tests/html/syntax/parsing/html5lib_tests11.html:
  • web-platform-tests/html/syntax/parsing/html5lib_tests19-expected.txt:
  • web-platform-tests/html/syntax/parsing/html5lib_tests19.html:
  • web-platform-tests/html/syntax/parsing/html5lib_tests2-expected.txt:
  • web-platform-tests/html/syntax/parsing/html5lib_tests2.html:
  • web-platform-tests/html/syntax/parsing/html5lib_tests20-expected.txt:
  • web-platform-tests/html/syntax/parsing/html5lib_tests20.html:
  • web-platform-tests/html/syntax/parsing/html5lib_tests25-expected.txt:
  • web-platform-tests/html/syntax/parsing/html5lib_tests25.html:
  • web-platform-tests/html/syntax/parsing/html5lib_tests7-expected.txt:
  • web-platform-tests/html/syntax/parsing/html5lib_tests7.html:
  • web-platform-tests/html/syntax/parsing/html5lib_webkit01-expected.txt:
  • web-platform-tests/html/syntax/parsing/html5lib_webkit01.html:
  • web-platform-tests/html/syntax/parsing/html5lib_webkit02-expected.txt:
  • web-platform-tests/html/syntax/parsing/html5lib_webkit02.html:
  • web-platform-tests/html/syntax/parsing/test.js:

(test_serializer):

  • web-platform-tests/html/syntax/parsing/w3c-import.log:
  • web-platform-tests/html/webappapis/scripting/events/event-handler-onauxclick-expected.txt: Added.
  • web-platform-tests/html/webappapis/scripting/events/event-handler-onauxclick.html: Added.
  • web-platform-tests/html/webappapis/scripting/events/w3c-import.log:
  • web-platform-tests/html/webappapis/scripting/processing-model-2/compile-error-same-origin-with-hash-expected.txt: Added.
  • web-platform-tests/html/webappapis/scripting/processing-model-2/compile-error-same-origin-with-hash.html: Added.
  • web-platform-tests/html/webappapis/scripting/processing-model-2/runtime-error-same-origin-with-hash-expected.txt: Added.
  • web-platform-tests/html/webappapis/scripting/processing-model-2/runtime-error-same-origin-with-hash.html: Added.
  • web-platform-tests/html/webappapis/scripting/processing-model-2/w3c-import.log:
  • web-platform-tests/media-source/mediasource-errors.html:
  • web-platform-tests/resource-timing/resource_cached-expected.txt: Added.
  • web-platform-tests/resource-timing/resource_cached.htm: Added.
  • web-platform-tests/resource-timing/resource_connection_reuse-expected.txt: Added.
  • web-platform-tests/resource-timing/resource_connection_reuse.html: Added.
  • web-platform-tests/resource-timing/resource_dynamic_insertion-expected.txt: Added.
  • web-platform-tests/resource-timing/resource_dynamic_insertion.html: Added.
  • web-platform-tests/resource-timing/resources/fake_responses.html: Added.
  • web-platform-tests/resource-timing/resources/fake_responses.py: Added.

(main):

  • web-platform-tests/resource-timing/resources/inject_resource_test.html: Added.
  • web-platform-tests/resource-timing/resources/w3c-import.log:
  • web-platform-tests/resource-timing/resources/webperftestharnessextension.js: Added.

(test_method_exists):
(test_noless_than):
(test_resource_entries):
(performance_entrylist_checker.entry_check):
(performance_entrylist_checker.entrylist_order_check):
(performance_entrylist_checker.entrylist_check):
(performance_entrylist_checker):
(PerformanceContext):
(PerformanceContext.prototype.initialMeasures):
(PerformanceContext.prototype.mark):
(PerformanceContext.prototype.measure):
(PerformanceContext.prototype.clearMarks):
(PerformanceContext.prototype.clearMeasures):
(PerformanceContext.prototype.getEntries):
(PerformanceContext.prototype.getEntriesByType):
(PerformanceContext.prototype.getEntriesByName):
(PerformanceContext.prototype.setResourceTimingBufferSize):
(PerformanceContext.prototype.registerResourceTimingBufferFullCallback):
(PerformanceContext.prototype.clearResourceTimings):

  • web-platform-tests/resource-timing/w3c-import.log:
  • web-platform-tests/shadow-dom/slotchange-event-expected.txt:
  • web-platform-tests/shadow-dom/slotchange-event.html:
  • web-platform-tests/update-built-tests.sh: Added.
  • web-platform-tests/url/OWNERS:
  • web-platform-tests/url/a-element-expected.txt:
  • web-platform-tests/url/a-element-origin-expected.txt:
  • web-platform-tests/url/a-element-origin-xhtml-expected.txt:
  • web-platform-tests/url/a-element-origin-xhtml.xhtml:
  • web-platform-tests/url/a-element-origin.html:
  • web-platform-tests/url/a-element-xhtml-expected.txt:
  • web-platform-tests/url/a-element-xhtml.xhtml:
  • web-platform-tests/url/a-element.html:
  • web-platform-tests/url/setters_tests.json:
  • web-platform-tests/url/url-constructor-expected.txt:
  • web-platform-tests/url/url-origin-expected.txt:
  • web-platform-tests/url/url-setters-expected.txt:
  • web-platform-tests/url/urlsearchparams-append.html:
  • web-platform-tests/url/urlsearchparams-constructor-expected.txt:
  • web-platform-tests/url/urlsearchparams-constructor.html:
  • web-platform-tests/url/urlsearchparams-delete.html:
  • web-platform-tests/url/urlsearchparams-get.html:
  • web-platform-tests/url/urlsearchparams-getall.html:
  • web-platform-tests/url/urlsearchparams-has.html:
  • web-platform-tests/url/urlsearchparams-set.html:
  • web-platform-tests/url/urlsearchparams-stringifier.html:
  • web-platform-tests/url/urltestdata.json:
  • web-platform-tests/w3c-import.log:
  • web-platform-tests/webrtc/RTCDataChannelEvent-constructor-expected.txt: Added.
  • web-platform-tests/webrtc/RTCDataChannelEvent-constructor.html: Added.
  • web-platform-tests/webrtc/RTCPeerConnectionIceEvent-constructor-expected.txt: Added.
  • web-platform-tests/webrtc/RTCPeerConnectionIceEvent-constructor.html: Added.
  • web-platform-tests/webrtc/datachannel-emptystring.html:
  • web-platform-tests/webrtc/simplecall.html:
  • web-platform-tests/webrtc/w3c-import.log:

LayoutTests:
Refresh WPT tests up to 73f4ad361ca56d890b5f46d62c3bc84371a77e10
https://bugs.webkit.org/show_bug.cgi?id=167105

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

Skipping two fetch tests as they reach an ASSERT on debug builds (missing implemented feature).

  • TestExpectations:
  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-expected.txt: Added.
  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/dom/reflection-embedded-expected.txt:
  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate-expected.txt:
  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/form-control-infrastructure/form-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-control-infrastructure/form-expected.txt.
  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-label-element/labelable-elements-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-label-element/labelable-elements-expected.txt.
  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-select-element/select-validity-expected.txt: Added.
  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/interfaces-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/interfaces-expected.txt.
  • tests-options.json:
11:24 AM Changeset in webkit [210822] by Joseph Pecoraro
  • 10 edits in trunk/Source

Crash when closing tab with debugger paused
https://bugs.webkit.org/show_bug.cgi?id=161746
<rdar://problem/15607819>

Reviewed by Brian Burg and Brent Fulgham.

Source/WebCore:

  • page/Page.h:

(WebCore::Page::incrementNestedRunLoopCount):
(WebCore::Page::decrementNestedRunLoopCount):
(WebCore::Page::insideNestedRunLoop):
Keep track of whether or not this Page is inside of a nested run loop.
Currently the only nested run loop we know about is EventLoop used
by Web Inspector when debugging JavaScript.

(WebCore::Page::whenUnnested):
Callback that can be called when we are no longer inside of a nested
run loop.

(WebCore::Page::~Page):
Ensure we are not in a known nested run loop when destructing, since
that could be unsafe.

  • inspector/PageScriptDebugServer.cpp:

(WebCore::PageScriptDebugServer::runEventLoopWhilePausedInternal):
Increment and decrement as we go into or leave the nested runloop.

  • inspector/InspectorController.cpp:

(WebCore::InspectorController::inspectedPageDestroyed):
(WebCore::InspectorController::disconnectAllFrontends):
Rework destruction to allow disconnectAllFrontends to happen earlier
if necessary. WebKit clients may use this to disconnect remote
frontends when closing a Page.

Source/WebKit/mac:

  • WebView/WebView.mm:

(WebKit::DeferredPageDestructor::createDeferredPageDestructor):
(WebKit::DeferredPageDestructor::DeferredPageDestructor):
(WebKit::DeferredPageDestructor::tryDestruction):
(-[WebView _close]):
Defer destruction of the Page if we are in a nested runloop.

Source/WebKit2:

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::DeferredPageDestructor::createDeferredPageDestructor):
(WebKit::DeferredPageDestructor::DeferredPageDestructor):
(WebKit::DeferredPageDestructor::tryDestruction):
(WebKit::WebPage::close):
Defer destruction of the Page and WebPage if we are in a nested runloop.
Also, proactively close all inspector frontends, including remote frontends.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::handleSyntheticClick):
(WebKit::WebPage::completeSyntheticClick):
Return early in some cases where a nested run loop may have closed
the WebPage on us while handling JavaScript events.

10:55 AM Changeset in webkit [210821] by fpizlo@apple.com
  • 35 edits in trunk/Source

JSCell::classInfo() shouldn't have a bunch of mitigations for being called during destruction
https://bugs.webkit.org/show_bug.cgi?id=167066

Reviewed by Keith Miller and Michael Saboff.
Source/JavaScriptCore:


This reduces the size of JSCell::classInfo() by half and removes some checks that
this function previously had to do in case it was called from destructors.

I changed all of the destructors so that they don't call JSCell::classInfo() and I
added an assertion to JSCell::classInfo() to catch cases where someone called it
from a destructor accidentally.

This means that we only have one place in destruction that needs to know the class:
the sweeper's call to the destructor.

One of the trickiest outcomes of this is the need to support inherits() tests in
JSObjectGetPrivate(), when it is called from the destructor callback on the object
being destructed. JSObjectGetPrivate() is undefined behavior anyway if you use it
on any dead-but-not-destructed object other than the one being destructed right
now. The purpose of the inherits() tests is to distinguish between different kinds
of CallbackObjects, which may have different kinds of base classes. I think that
this was always subtly wrong - for example, if the object being destructed is a
JSGlobalObject then it's not a DestructibleObject, is not in a destructor block,
but does not have an immortal Structure - so classInfo() is not valid. This fixes
the issue by having ~JSCallbackObject know its classInfo. It now stashes its
classInfo in VM so that JSObjectGetPrivate can use that classInfo if it detects
that it's being used on a currently-destructing object.

That was the only really weird part of this patch. The rest is mostly removing
illegal uses of jsCast<> in destructors. There were a few other genuine uses of
classInfo() but they were in code that already knew how to get its classInfo()
using other means:

  • You can still say structure()->classInfo(), and I use this form in code that knows that its StructureIsImmortal.


  • You can use this->classInfo() if it's overridden, like in subclasses of JSDestructibleObject.
  • API/JSAPIWrapperObject.mm:

(JSAPIWrapperObjectHandleOwner::finalize):

  • API/JSCallbackObject.h:
  • API/JSCallbackObjectFunctions.h:

(JSC::JSCallbackObject<Parent>::~JSCallbackObject):
(JSC::JSCallbackObject<Parent>::init):

  • API/JSObjectRef.cpp:

(classInfoPrivate):
(JSObjectGetPrivate):
(JSObjectSetPrivate):

  • bytecode/EvalCodeBlock.cpp:

(JSC::EvalCodeBlock::destroy):

  • bytecode/FunctionCodeBlock.cpp:

(JSC::FunctionCodeBlock::destroy):

  • bytecode/ModuleProgramCodeBlock.cpp:

(JSC::ModuleProgramCodeBlock::destroy):

  • bytecode/ProgramCodeBlock.cpp:

(JSC::ProgramCodeBlock::destroy):

  • bytecode/UnlinkedEvalCodeBlock.cpp:

(JSC::UnlinkedEvalCodeBlock::destroy):

  • bytecode/UnlinkedFunctionCodeBlock.cpp:

(JSC::UnlinkedFunctionCodeBlock::destroy):

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::UnlinkedFunctionExecutable::destroy):

  • bytecode/UnlinkedModuleProgramCodeBlock.cpp:

(JSC::UnlinkedModuleProgramCodeBlock::destroy):

  • bytecode/UnlinkedProgramCodeBlock.cpp:

(JSC::UnlinkedProgramCodeBlock::destroy):

  • heap/CodeBlockSet.cpp:

(JSC::CodeBlockSet::lastChanceToFinalize):
(JSC::CodeBlockSet::deleteUnmarkedAndUnreferenced):

  • heap/MarkedAllocator.cpp:

(JSC::MarkedAllocator::allocateSlowCaseImpl):

  • heap/MarkedBlock.cpp:

(JSC::MarkedBlock::Handle::sweep):

  • jit/JITThunks.cpp:

(JSC::JITThunks::finalize):

  • runtime/AbstractModuleRecord.cpp:

(JSC::AbstractModuleRecord::destroy):

  • runtime/ExecutableBase.cpp:

(JSC::ExecutableBase::clearCode):

  • runtime/JSCellInlines.h:

(JSC::JSCell::classInfo):
(JSC::JSCell::callDestructor):

  • runtime/JSLock.h:

(JSC::JSLock::ownerThread):

  • runtime/JSModuleNamespaceObject.cpp:

(JSC::JSModuleNamespaceObject::destroy):

  • runtime/JSModuleRecord.cpp:

(JSC::JSModuleRecord::destroy):

  • runtime/JSPropertyNameEnumerator.cpp:

(JSC::JSPropertyNameEnumerator::destroy):

  • runtime/JSSegmentedVariableObject.h:
  • runtime/SymbolTable.cpp:

(JSC::SymbolTable::destroy):

  • runtime/VM.h:
  • wasm/js/JSWebAssemblyCallee.cpp:

(JSC::JSWebAssemblyCallee::destroy):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::destroy):

  • wasm/js/WebAssemblyToJSCallee.cpp:

(JSC::WebAssemblyToJSCallee::WebAssemblyToJSCallee):
(JSC::WebAssemblyToJSCallee::destroy):

Source/WebCore:

No new tests because no new behavior.

It's now necessary to avoid jsCast in destructors and finalizers. This was an easy
rule to introduce because this used to always be the rule.

  • bindings/js/JSCSSValueCustom.cpp:

(WebCore::JSDeprecatedCSSOMValueOwner::finalize):

  • bindings/js/JSDOMIterator.h:

(WebCore::IteratorTraits>::destroy):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):

10:52 AM Changeset in webkit [210820] by Jonathan Bedard
  • 2 edits in trunk/Tools

'webkit-patch post' no longer works with moved/copied files
https://bugs.webkit.org/show_bug.cgi?id=166914
<rdar://problem/29979707>

Reviewed by Daniel Bates.

SVN 1.9 has a bug where when a file has been moved or copied, the svn diff of the new
file outputs only the "Index:" line with an empty body. This workaround
ignores such output from svn diff. A issue has been filed with SVN, a link to the
public email list tracking this bug is below.
http://mail-archives.apache.org/mod_mbox/subversion-users/201701.mbox/%3cCF9BDE0A-7454-4405-8259-1120C6B76A03@apple.com%3e

  • Scripts/svn-create-patch:

(generateDiff): Ignore an "Index:" line with an empty body.

7:14 AM Changeset in webkit [210819] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.14.3

WebKitGTK+ 2.14.3

7:12 AM Changeset in webkit [210818] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.14

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.14.3 release.

.:

  • Source/cmake/OptionsGTK.cmake:

Source/WebKit2:

  • gtk/NEWS: Add release notes for 2.14.3.
5:49 AM Changeset in webkit [210817] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14/Source/WebCore/platform/gtk/po

Merge r210214 - [GTK] German translation update
https://bugs.webkit.org/show_bug.cgi?id=152228

Patch by Bernd Homuth <dev@hmt.im> on 2016-12-30
Rubber-stamped by Michael Catanzaro.

  • de.po:
5:47 AM Changeset in webkit [210816] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.14/Source/WebKit2

Merge r210545 - ThreadedCoordinatedLayerTreeHost::renderNextFrame() should short-cut to layer flushing
https://bugs.webkit.org/show_bug.cgi?id=157614

Reviewed by Carlos Garcia Campos.

CoordinatedLayerTreeHost prevents any layer flushes while a previously-commited scene
state is still being rendered on the composition thread. renderNextFrame() is called
once that is complete, and a new layer flush is scheduled.

This change improves the whole ordeal by immediately performing the layer flush only if
it was requested during the time we were waiting on the renderer (i.e. when the latest
scene state was being composited), instead of scheduling it unconditionally.
m_scheduledWhileWaitingForRenderer member variable is added to track that occurrence.

  • WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:

(WebKit::CoordinatedLayerTreeHost::scheduleLayerFlush):
(WebKit::CoordinatedLayerTreeHost::renderNextFrame):

  • WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
5:47 AM Changeset in webkit [210815] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.14/Source/WebCore

Merge r210543 - [CoordinatedGraphics] TextureMapperPlatformLayerProxy is constantly getting activated
https://bugs.webkit.org/show_bug.cgi?id=166856

Reviewed by Michael Catanzaro.

When CoordinatedGraphicsLayer::setContentsNeedsDisplay() is called, currently with
the threaded CoordinatedGraphics mode the platform layer is marked for synchronizing.
This means that at flush-time this layer swaps the buffer of the wrapped platform
layer and updates the layer state to indicate that the underlying
TextureMapperPlatformLayerProxy object has to be activated on the composition thread.

This current logic results in the TextureMapperPlatformLayerProxy object being
reactivated for every display request that arrives via setContentsNeedsDisplay().
This is pretty wasteful since this activation heap-allocates a RunLoop::Timer object
which internally also locks up the GLib main context to attach a new source, and
that's only after the source on the previous RunLoop::Timer was detached before
that RunLoop::Timer was destroyed.

To avoid this, CoordinatedGraphicsLayer::setContentsNeedsDisplay() sets a new flag,
m_shouldUpdatePlatformLayer. During flush, this flag is checked in
CoordinatedGraphicsLayer::updatePlatformLayer(), with the buffer swap performed in
case it's set. CoordinatedGraphicsLayer::syncPlatformLayer() now only sets the
platform layer proxy object for that layer's state.

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer):
(WebCore::CoordinatedGraphicsLayer::setContentsNeedsDisplay):
(WebCore::CoordinatedGraphicsLayer::syncPlatformLayer):
(WebCore::CoordinatedGraphicsLayer::updatePlatformLayer):
(WebCore::CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly):

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
5:47 AM Changeset in webkit [210814] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.14/Source/WebCore

Merge r210542 - [TexMap] Use WTF::Function in TextureMapperPlatformLayerProxy
https://bugs.webkit.org/show_bug.cgi?id=166853

Reviewed by Michael Catanzaro.

Use WTF::Function in the TextureMapperPlatformLayerProxy, instead of
the std::function bloat.

  • platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:

(WebCore::TextureMapperPlatformLayerProxy::scheduleUpdateOnCompositorThread):
(WebCore::TextureMapperPlatformLayerProxy::compositorThreadUpdateTimerFired):

  • platform/graphics/texmap/TextureMapperPlatformLayerProxy.h:
5:47 AM Changeset in webkit [210813] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14/Source/WebCore

Merge r210541 - [TextureMapper] TextureMapperPlatformLayerProxy::swapBuffers() should hold the lock throughout invocation
https://bugs.webkit.org/show_bug.cgi?id=166852

Reviewed by Michael Catanzaro.

  • platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:

(WebCore::TextureMapperPlatformLayerProxy::swapBuffer): Append to previous buffer
to the m_usedBuffers Vector while the object's lock is held. Everywhere else the
m_usedBuffers Vector is used under the lock, no reason to not do the same here.

5:40 AM Changeset in webkit [210812] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14/Source/WebCore

Merge r208975 - MemoryPressureHandler should only trigger synchronous GC on iOS
<https://webkit.org/b/165043>
<rdar://problem/29312684>

Reviewed by Sam Weinig.

On iOS we know that there is really only one web process in play at a time,
so it's okay to do a synchronous GC immediately in response to high memory pressure.

On other platforms, we may have tens or hundreds of web processes, and if they
all start doing full GCs at the same time, it can easily bring a system to its knees
if it's already under pressure.

Fix this by using garbageCollectSoon() on non-iOS platforms.

  • page/MemoryRelease.cpp:

(WebCore::releaseCriticalMemory):

5:38 AM WebKitGTK/2.14.x edited by Carlos Garcia Campos
(diff)
5:36 AM Changeset in webkit [210811] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14/Source/WebCore

Merge r210223 - [GTK] Since the memory pressure relief has been activated, my disk has a high usage and the desktop stalls
https://bugs.webkit.org/show_bug.cgi?id=164052

Reviewed by Michael Catanzaro.

Check how much memory is freed by the memory pressure handler and wait for a long time if we didn't free that
much.

  • platform/linux/MemoryPressureHandlerLinux.cpp:

(WebCore::MemoryPressureHandler::EventFDPoller::EventFDPoller):

5:36 AM Changeset in webkit [210810] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.14/Source/WebCore

Merge r208536 - [Linux] Memory values shown by memory pressure handler logger are not useful
https://bugs.webkit.org/show_bug.cgi?id=164589

Reviewed by Michael Catanzaro.

We are currently using the VmSize field from /proc/self/status which is the virtual memory size of the process
and doesn't normally change even when the memory pressure handler manages to release memory. So, most of the
time we see that there's no changes in memory usage in the logs.
We should use the actual memory used by the process, memory that the process can release and then it's relevant
for the memory pressure handler. Using other fields from /proc/self/status we could do something like VmRSS -
(RssFile + RssShme), but there's also /proc/self/statm that provides the same information in a single. The main
different is that statm provides both resident and shared memory directly, but in number of pages, so we need to
multiply by the size of the page.
This patch adds a method to parse /proc/self/statm in its given file, because I plan to use this for the linux
memory sampler that is incorrectly parsing /proc/self/statm.

  • platform/Linux.cmake: Add new files to compilation.
  • platform/linux/CurrentProcessMemoryStatus.cpp: Added.

(WebCore::systemPageSize): Return the page size.
(WebCore::currentProcessMemoryStatus): Parse /proc/self/statm and fill the given ProcessMemoryStatus.

  • platform/linux/CurrentProcessMemoryStatus.h: Added.
  • platform/linux/MemoryPressureHandlerLinux.cpp:

(WebCore::MemoryPressureHandler::processMemoryUsage(): Helper function to return the memory used by the process
in bytes.
(WebCore::MemoryPressureHandler::ReliefLogger::platformMemoryUsage): Use processMemoryUsage().

5:34 AM WebKitGTK/2.14.x edited by Carlos Garcia Campos
(diff)
5:25 AM Changeset in webkit [210809] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14/Tools

Merge r210233 - REGRESSION(r173753): [GTK] Source/WebKit is distributed in tarballs
https://bugs.webkit.org/show_bug.cgi?id=165797

Reviewed by Michael Catanzaro.

Move directory ruleset after all exclude rules of Source rulset.

  • gtk/manifest.txt.in:
5:24 AM Changeset in webkit [210808] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14/Source/WebCore

Merge r210583 - Unreviewed, rolling out r182947.
https://bugs.webkit.org/show_bug.cgi?id=166922

Caused huge memory leak see https://webkit.org/b/166884
(Requested by KaL on #webkit).

Reverted changeset:

"[GStreamer] Silent WebAudio buffers support"
https://bugs.webkit.org/show_bug.cgi?id=143869
http://trac.webkit.org/changeset/182947

5:21 AM Changeset in webkit [210807] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14/Source/WebCore

REGRESSION(r203047): [GTK][Stable] "notify::title" signal unreliably triggered multiple times
https://bugs.webkit.org/show_bug.cgi?id=165073

Patch by Michael Catanzaro <Michael Catanzaro> on 2017-01-17
Reviewed by Carlos Garcia Campos.

  • dom/Document.cpp:

(WebCore::Document::setTitle):

5:21 AM WebKitGTK/2.14.x edited by Carlos Garcia Campos
(diff)
5:16 AM Changeset in webkit [210806] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.14

Merge r210271 - WorkQueueGeneric's platformInvalidate() can deadlock when called on the RunLoop's thread
https://bugs.webkit.org/show_bug.cgi?id=166645

Reviewed by Carlos Garcia Campos.

Source/WTF:

WorkQueue can be destroyed on its invoking thread itself.
The scenario is the following.

  1. Create WorkQueue (in thread A).
  2. Dispatch a task (in thread A, dispatching a task to thread B).
  3. Deref in thread A.
  4. The task is executed in thread B.
  5. Deref in thread B.
  6. The WorkQueue is destroyed, calling platformInvalidate in thread B.

In that case, if platformInvalidate waits thread B's termination, it causes deadlock.
We do not need to wait the thread termination.

  • wtf/WorkQueue.h:
  • wtf/generic/WorkQueueGeneric.cpp:

(WorkQueue::platformInitialize):
(WorkQueue::platformInvalidate):

Tools:

  • TestWebKitAPI/Tests/WTF/WorkQueue.cpp:

(TestWebKitAPI::TEST):

5:10 AM Changeset in webkit [210805] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14/Source/WebCore

Merge r210670 - [GTK] WebKitWebProcess at 100% CPU loading hyphenation dictionaries
https://bugs.webkit.org/show_bug.cgi?id=165601

Reviewed by Carlos Garcia Campos.

In HyphenationLibHyphen, retrieve the canonicalized absolute pathname of the dictionary file
in order to avoid storing symbolic links as the target files for specific locales. libhyphen
distributes its dictionary files by linking a set of similar locales files to a single file.
Not resolving those symbolic links means we'll be opening a single file via multiple
HyphenationDictionary objects, which is far from optimal.

To add insult to injury, these HyphenationDictionary objects were stored in a TinyLRUCache
with a slim capacity of 4. This meant that while already loading one single file through
multiple symlinks, because of continuous eviciton from this LRU cache the same symlinks
continued to be processed, in some cases resulting in opening the same dictionary file
hundreds or thousands of times. The capacity of this TinyLRUCache is increased to 32
to keep the amount of open libhyphen dictionaries capped at some reasonable number.

  • platform/text/hyphen/HyphenationLibHyphen.cpp:

(WebCore::scanDirectoryForDicionaries):

5:09 AM Changeset in webkit [210804] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.14/Source/WebCore

Merge r210357 - [SOUP] AddressSanitizer: heap-use-after-free under WTF::String::fromUTF8()
https://bugs.webkit.org/show_bug.cgi?id=166722

Patch by Milan Crha <mcrha@redhat.com> on 2017-01-05
Reviewed by Alex Christensen.

  • platform/soup/PublicSuffixSoup.cpp:

(WebCore::topPrivatelyControlledDomain):
Use a variable to hold UTF-8 version of the domain, because
the soup_tld_get_base_domain() returns a pointer into the passed-in
string, which could be freed due to the temporary object being freed.

4:27 AM Changeset in webkit [210803] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.14

Merge r209821 - CSP: Allow HTTPS URL to match HTTP source expression
https://bugs.webkit.org/show_bug.cgi?id=159520
<rdar://problem/27287177>

Reviewed by Brent Fulgham.

Source/WebCore:

Test: http/tests/security/contentSecurityPolicy/script-src-parsing-implicit-and-explicit-port-number.html

  • page/csp/ContentSecurityPolicySource.cpp:

(WebCore::ContentSecurityPolicySource::schemeMatches):
(WebCore::ContentSecurityPolicySource::portMatches):

LayoutTests:

  • http/tests/security/contentSecurityPolicy/script-src-parsing-implicit-and-explicit-port-number-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/script-src-parsing-implicit-and-explicit-port-number.html: Added.
  • platform/wk2/TestExpectations: Skip the test on WebKit2 because it makes use of Internals.registerDefaultPortForProtocol(),

which does not work with NetworkProcess.

4:18 AM Changeset in webkit [210802] by Carlos Garcia Campos
  • 3 edits
    8 adds in releases/WebKitGTK/webkit-2.14

Merge r209789 - CSP: ws: and wss: blocked with connect-src *
https://bugs.webkit.org/show_bug.cgi?id=165804
<rdar://problem/28563643>

Reviewed by David Kilzer.

Source/WebCore:

Allow * to match ws: and wss:. This will make our behavior of * more closely conform
the behavior of * in the Content Security Policy Level 3 spec.,
<https://w3c.github.io/webappsec-csp/#match-url-to-source-expression> (Editor's Draft, 2 December 2016).

Tests: http/tests/security/contentSecurityPolicy/connect-src-star-secure-websocket-allowed.html

http/tests/security/contentSecurityPolicy/connect-src-star-websocket-allowed.html
http/tests/security/contentSecurityPolicy/default-src-star-secure-websocket-allowed.html
http/tests/security/contentSecurityPolicy/default-src-star-websocket-allowed.html

  • page/csp/ContentSecurityPolicySourceList.cpp:

(WebCore::ContentSecurityPolicySourceList::isProtocolAllowedByStar):

LayoutTests:

Add tests to ensure that * matches ws: and wss:.

  • http/tests/security/contentSecurityPolicy/connect-src-star-secure-websocket-allowed-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/connect-src-star-secure-websocket-allowed.html: Added.
  • http/tests/security/contentSecurityPolicy/connect-src-star-websocket-allowed-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/connect-src-star-websocket-allowed.html: Added.
  • http/tests/security/contentSecurityPolicy/default-src-star-secure-websocket-allowed-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/default-src-star-secure-websocket-allowed.html: Added.
  • http/tests/security/contentSecurityPolicy/default-src-star-websocket-allowed-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/default-src-star-websocket-allowed.html: Added.
4:16 AM Changeset in webkit [210801] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.14/Source/WebCore

Merge r210800 - REGRESSION(r208997): [GLX] Google maps labels broken when using glXCreateContextAttribsARB
https://bugs.webkit.org/show_bug.cgi?id=166489

Reviewed by Žan Doberšek.

The format GL_ALPHA that can be used in WebGL's texImage2D and texSubImage2D functions is deprecated
in the OpenGL layer when using a core profile. Due to this, when using core, we need to transform
that parameter into something supported by OpenGL.

What we do is to use a texture with just GL_RED format (that allows a single color component) to
store the alpha values, and then configure the texture to swizzle red and alpha when accessing the
pixel components.

No new tests added.

  • platform/graphics/GraphicsContext3D.h:
  • platform/graphics/cairo/GraphicsContext3DCairo.cpp:

(WebCore::GraphicsContext3D::GraphicsContext3D):

  • platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:

(WebCore::GraphicsContext3D::texImage2D):

  • platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:

(WebCore::GraphicsContext3D::texSubImage2D):

3:08 AM Changeset in webkit [210800] by magomez@igalia.com
  • 5 edits in trunk/Source/WebCore

REGRESSION(r208997): [GLX] Google maps labels broken when using glXCreateContextAttribsARB
https://bugs.webkit.org/show_bug.cgi?id=166489

Reviewed by Žan Doberšek.

The format GL_ALPHA that can be used in WebGL's texImage2D and texSubImage2D functions is deprecated
in the OpenGL layer when using a core profile. Due to this, when using core, we need to transform
that parameter into something supported by OpenGL.

What we do is to use a texture with just GL_RED format (that allows a single color component) to
store the alpha values, and then configure the texture to swizzle red and alpha when accessing the
pixel components.

No new tests added.

  • platform/graphics/GraphicsContext3D.h:
  • platform/graphics/cairo/GraphicsContext3DCairo.cpp:

(WebCore::GraphicsContext3D::GraphicsContext3D):

  • platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:

(WebCore::GraphicsContext3D::texImage2D):

  • platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:

(WebCore::GraphicsContext3D::texSubImage2D):

2:24 AM Changeset in webkit [210799] by tpopela@redhat.com
  • 3 edits in trunk/Source/WebCore

Unreviewed build fix for the Release build with enabled logging

  • html/MediaElementSession.cpp:
  • html/track/InbandGenericTextTrack.cpp:
2:11 AM Changeset in webkit [210798] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebCore

MediaKeySession: use existing 'message' event name
https://bugs.webkit.org/show_bug.cgi?id=167095

Reviewed by Sam Weinig.

When dispatching the 'message' event in MediaKeySession::enqueueMessage(),
use the messageEvent member that's provided by the EventNames object. This
removes the need for a custom static AtomicString object.

  • Modules/encryptedmedia/MediaKeySession.cpp:

(WebCore::MediaKeySession::enqueueMessage):
(WebCore::messageEventName): Deleted.

Jan 16, 2017:

10:20 PM Changeset in webkit [210797] by commit-queue@webkit.org
  • 46 edits in trunk

Remove the REQUEST_ANIMATION_FRAME flag
https://bugs.webkit.org/show_bug.cgi?id=156980
<rdar://problem/25906849>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-01-16
Reviewed by Simon Fraser.

.:

  • Source/cmake/OptionsEfl.cmake:
  • Source/cmake/OptionsWin.cmake:
  • Source/cmake/WebKitFeatures.cmake:
  • Source/cmake/tools/vsprops/FeatureDefines.props:
  • Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

  • Configurations/FeatureDefines.xcconfig:
  • dom/Document.cpp:
  • dom/Document.h:
  • dom/RequestAnimationFrameCallback.idl:
  • dom/ScriptedAnimationController.cpp:
  • dom/ScriptedAnimationController.h:
  • loader/EmptyClients.h:
  • page/Chrome.cpp:
  • page/Chrome.h:
  • page/ChromeClient.h:
  • page/DOMWindow.cpp:
  • page/DOMWindow.h:
  • page/DOMWindow.idl:
  • page/FrameView.cpp:
  • page/FrameView.h:
  • page/animation/AnimationController.cpp:
  • page/animation/AnimationController.h:
  • page/animation/AnimationControllerPrivate.h:
  • platform/HostWindow.h:
  • platform/ScrollAnimationSmooth.h:
  • testing/Internals.cpp:

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

  • Configurations/FeatureDefines.xcconfig:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:
  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:

(WebKit::CompositingCoordinator::syncDisplayState):
(WebKit::CompositingCoordinator::nextAnimationServiceTime):

  • WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
  • WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:

(WebKit::CoordinatedLayerTreeHost::scheduleAnimation):

  • WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
  • WebProcess/WebPage/LayerTreeHost.h:

Source/WTF:

  • wtf/FeatureDefines.h:

Tools:

  • Scripts/webkitperl/FeatureList.pm:
  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
7:53 PM Changeset in webkit [210796] by aestes@apple.com
  • 3 edits in trunk/Source/WebCore

[QuickLook] QLPreviewConverter should be owned by its delegate
https://bugs.webkit.org/show_bug.cgi?id=167104

Reviewed by Andreas Kling.

Instead of having QuickLookHandle own both the QLPreviewConverter and its delegate, have it
just own the delegate and have the delegate own the QLPreviewConverter.

No change in behavior. Covered by existing tests.

  • loader/ios/QuickLook.h:

(WebCore::QuickLookHandle::converter): Moved out-of-line.

  • loader/ios/QuickLook.mm: Renamed WebPreviewConverterDelegate to WebPreviewConverter, and

gave it ownership of the QLPreviewConverter, QuickLookHandleClient, and preview response.
(-[WebPreviewConverter initWithResourceLoader:resourceResponse:quickLookHandle:]):
Added a ResourceResponse parameter.
(-[WebPreviewConverter setClient:]): Moved from QuickLookHandle::setClient().
(-[WebPreviewConverter appendDataArray:]): Moved from QuickLookHandle::didReceiveDataArray().
(-[WebPreviewConverter finishedAppending]): Moved from QuickLookHandle::didFinishLoading().
(-[WebPreviewConverter failed]): Moved from QuickLookHandle::didFail().
(-[WebPreviewConverter platformConverter]): Added to return the QLPreviewConverter.
(-[WebPreviewConverter _sendDidReceiveResponseIfNecessary]): Used _previewResponse directly.
(WebCore::QuickLookHandle::~QuickLookHandle): Removed unneeded logging.
(WebCore::QuickLookHandle::didReceiveData): Called -[WebPreviewConverter appendDataArray:].
(WebCore::QuickLookHandle::didReceiveBuffer): Ditto.
(WebCore::QuickLookHandle::didFinishLoading): Called -[WebPreviewConverter finishedAppending].
(WebCore::QuickLookHandle::didFail): Called -[WebPreviewConverter failed].
(WebCore::QuickLookHandle::setClient): Called -[WebPreviewConverter setClient:].
(WebCore::QuickLookHandle::previewFileName): Retrieved the QLPreviewConverter via
-[WebPreviewConverter platformConverter].
(WebCore::QuickLookHandle::previewUTI): Ditto.
(WebCore::QuickLookHandle::previewRequestURL): Ditto.
(WebCore::QuickLookHandle::converter): Ditto.
(WebCore::QuickLookHandle::didReceiveDataArray): Deleted.
(WebCore::QuickLookHandle::previewResponse): Deleted.

7:47 PM Changeset in webkit [210795] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

CrashTracer: com.apple.WebKit.WebContent at JavaScriptCore: WTF::StringImpl::containsOnlyWhitespace
https://bugs.webkit.org/show_bug.cgi?id=167106
<rdar://problem/24457632>

Reviewed by Tim Horton.

Speculative fix.

  • editing/cocoa/DataDetection.mm:

(WebCore::DataDetection::detectContentInRange):

Test before casting to Text.

7:42 PM Changeset in webkit [210794] by clopez@igalia.com
  • 2 edits
    2 adds in trunk/LayoutTests

[GTK][MSE] Update list of media-source tests that fail.

Unskip imported/w3c/web-platform-tests/media-source tests for WebKitGTK+
Report the list of those tests that fail.
Rebase imported/w3c/web-platform-tests/media-source/mediasource-removesourcebuffer.html.

Unreviewed gardening.

  • platform/gtk/TestExpectations:
  • platform/gtk/imported/w3c/web-platform-tests/media-source/mediasource-removesourcebuffer-expected.txt: Added. Rebased.
4:04 PM Changeset in webkit [210793] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebInspectorUI

Web Inspector: add "Persist Logs on Navigation" to settings screen
https://bugs.webkit.org/show_bug.cgi?id=166992

Patch by Devin Rousso <Devin Rousso> on 2017-01-16
Reviewed by Brian Burg.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Base/Setting.js:
  • UserInterface/Controllers/LogManager.js:

(WebInspector.LogManager):
(WebInspector.LogManager.prototype._delayedMessagesCleared):

  • UserInterface/Views/LogContentView.js:

(WebInspector.LogContentView.prototype._sessionStarted):
(WebInspector.LogContentView.prototype._handleContextMenuEvent):
(WebInspector.LogContentView.prototype._toggleClearLogOnNavigateSetting):
Move setting and UI toggle for "Keep Log on Navigation" to the global settings dictionary
and content view.

  • UserInterface/Views/SettingsTabContentView.js:

(WebInspector.SettingsTabContentView.prototype.initialLayout):
(WebInspector.SettingsTabContentView):
Add checkbox for new setting and spacer between text settings and log settings.

3:15 PM Changeset in webkit [210792] by jfernandez@igalia.com
  • 6 edits
    6 adds in trunk

[css-grid] Implementing baseline positioning for grid containers
https://bugs.webkit.org/show_bug.cgi?id=165063

Reviewed by Darin Adler and Sergio Villar Senin.

Source/WebCore:

Implementation of the 'first-line' baseline for Grid containers,
according to the CSS Grid Layout spec.
https://drafts.csswg.org/css-grid/#grid-baselines

The self-baseline and content-baseline alignment logic is still
not implemented, hence some cases will be implemented in
future patches.

Tests: fast/css-grid-layout/grid-baseline-margins.html

fast/css-grid-layout/grid-baseline-must-respect-grid-order.html
fast/css-grid-layout/grid-baseline.html

  • rendering/RenderGrid.cpp:

(WebCore::synthesizedBaselineFromBorderBox):
(WebCore::RenderGrid::isInlineBaselineAlignedChild):
(WebCore::RenderGrid::baselinePosition):
(WebCore::RenderGrid::firstLineBaseline):
(WebCore::RenderGrid::inlineBlockBaseline):

  • rendering/RenderGrid.h:

LayoutTests:

Tests to verify the baseline positioning of grid and inline-grid blocks.
Note that two of these new tests are expected to fail because of a Flexbox
bug, since we use Flexbox as reference test.

  • TestExpectations:
  • fast/css-grid-layout/grid-baseline-expected.html: Added.
  • fast/css-grid-layout/grid-baseline-margins-expected.html: Added.
  • fast/css-grid-layout/grid-baseline-margins.html: Added.
  • fast/css-grid-layout/grid-baseline-must-respect-grid-order-expected.txt: Added.
  • fast/css-grid-layout/grid-baseline-must-respect-grid-order.html: Added.
  • fast/css-grid-layout/grid-baseline.html: Added.
  • fast/css-grid-layout/resources/grid-alignment.css:

(.alignSelfBaseline):
(.selfBaseline):

3:04 PM Changeset in webkit [210791] by aestes@apple.com
  • 1 edit in trunk/Source/WebCore/ChangeLog

Fix a ChangeLog typo.

2:23 PM Changeset in webkit [210790] by weinig@apple.com
  • 8 edits
    2 adds in trunk

Add the ability to use numbers in makeString()
https://bugs.webkit.org/show_bug.cgi?id=167087

Reviewed by Darin Adler.

Source/WTF:

Allow numbers to be easily used in makeString() and tryMakeString().

For instance, you can now write:

int amount = 7;
auto foo = makeString("There are ", amount, " apples in the cart");

  • WTF.xcodeproj/project.pbxproj:

Add new file.

  • wtf/text/IntegerToStringConversion.h:

(WTF::writeNumberToBufferImpl):
(WTF::writeNumberToBufferSigned):
(WTF::writeNumberToBufferUnsigned):
(WTF::lengthOfNumberAsStringImpl):
(WTF::lengthOfNumberAsStringSigned):
(WTF::lengthOfNumberAsStringUnsigned):
Add variants of integer writing code that compute the length of the string
that would be produced and writes the string to an existing buffer.

(WTF::IntegerToStringConversionTrait<AtomicString>::flush): Deleted.
(WTF::IntegerToStringConversionTrait<String>::flush): Deleted.
(WTF::IntegerToStringConversionTrait<StringBuilder>::flush): Deleted.
Move these traits to their respective classes.

  • wtf/text/AtomicString.h:

(WTF::IntegerToStringConversionTrait<AtomicString>::flush):

  • wtf/text/StringBuilder.h:

(WTF::IntegerToStringConversionTrait<StringBuilder>::flush):

  • wtf/text/WTFString.h:

(WTF::IntegerToStringConversionTrait<String>::flush):
Traits moved here from IntegerToStringConversion.h

  • wtf/text/StringConcatenateNumbers.h: Added.

(WTF::StringTypeAdapter<int>::StringTypeAdapter<int>):
(WTF::StringTypeAdapter<int>::length):
(WTF::StringTypeAdapter<int>::is8Bit):
(WTF::StringTypeAdapter<int>::writeTo):
(WTF::StringTypeAdapter<int>::toString):
(WTF::StringTypeAdapter<unsigned>::StringTypeAdapter<unsigned>):
(WTF::StringTypeAdapter<unsigned>::length):
(WTF::StringTypeAdapter<unsigned>::is8Bit):
(WTF::StringTypeAdapter<unsigned>::writeTo):
(WTF::StringTypeAdapter<unsigned>::toString):
(WTF::StringTypeAdapter<float>::StringTypeAdapter<float>):
(WTF::StringTypeAdapter<float>::length):
(WTF::StringTypeAdapter<float>::is8Bit):
(WTF::StringTypeAdapter<float>::writeTo):
(WTF::StringTypeAdapter<float>::toString):
(WTF::StringTypeAdapter<double>::StringTypeAdapter<double>):
(WTF::StringTypeAdapter<double>::length):
(WTF::StringTypeAdapter<double>::is8Bit):
(WTF::StringTypeAdapter<double>::writeTo):
(WTF::StringTypeAdapter<double>::toString):
Add basic adaptors for int, unsigned, float, and double.

(WTF::FormattedNumber::fixedPrecision):
(WTF::FormattedNumber::fixedWidth):
(WTF::FormattedNumber::length):
(WTF::FormattedNumber::buffer):
(WTF::FormattedNumber::stringView):
(WTF::StringTypeAdapter<FormattedNumber>::StringTypeAdapter<FormattedNumber>):
(WTF::StringTypeAdapter<FormattedNumber>::length):
(WTF::StringTypeAdapter<FormattedNumber>::is8Bit):
(WTF::StringTypeAdapter<FormattedNumber>::writeTo):
(WTF::StringTypeAdapter<FormattedNumber>::toString):
Add a special class, FormattedNumber, and an adaptor for it, allowing for
fixedPrecision and fixedWidth representation of doubles.

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WTF/StringConcatenate.cpp: Added.

Add tests for StringConcatenate, focusing on new numeric additions.

2:14 PM Changeset in webkit [210789] by aestes@apple.com
  • 5 edits in trunk/Source

[QuickLook] Do some cleanup in QuickLookHandle
https://bugs.webkit.org/show_bug.cgi?id=166864

Reviewed by Darin Adler.

Source/WebCore:

  • loader/ios/QuickLook.h: Stopped including QuickLookHandleClient.h and forward-declared

instead; changed setClient() to take a Ref<QuickLookHandleClient>&&; renamed nsResponse() to
previewResponse(); changed QuickLookHandle() to take a ResourceLoader& and const
ResourceResponse&; gave m_delegate a stronger type; removed unused m_quicklookFileHandle;
initialized m_finishedLoadingDataIntoConverter to false.
(WebCore::QuickLookHandle::firstRequestURL): Stopped exporting.
(WebCore::QuickLookHandle::setClient): Moved definition out-of-line.

  • loader/ios/QuickLook.mm: Renamed WebResourceLoaderQuickLookDelegate to

WebPreviewConverterDelegate and stopped conforming to NSURLConnectionDelegate and
WebCoreResourceLoaderDelegate; removed @property quickLookHandle and initialized
_quickLookHandle in the initializer instead.
(-[WebPreviewConverter initWithResourceLoader:quickLookHandle:]): Changed to take references
to resourceLoader and quickLookHandle.
(-[WebPreviewConverter _sendDidReceiveResponseIfNecessary]): Stoped checking for a nil
_quickLookHandle, since it is never nil.
(-[WebResourceLoaderQuickLookDelegate connection:didReceiveDataArray:]): Deleted.
QLPreviewConverter never calls this method.
(-[WebPreviewConverter connection:didReceiveData:lengthReceived:]): Stopped checking for a
nil _resourceLoader, since it is never nil.
(-[WebPreviewConverter connectionDidFinishLoading:]): Ditto.
(-[WebPreviewConverter connection:didFailWithError:]): Ditto.
(WebCore::emptyClient): Changed to return a reference.
(WebCore::QuickLookHandle::QuickLookHandle): Moved creation of the delegate,
firstRequestURL, and response to here from QuickLookHandle::create(). Called
ResourceLoader::didCreateQuickLookHandle() here instead of in QuickLookHandle::create().
(WebCore::QuickLookHandle::create): Used std::make_unique to create the QuickLookHandle.
(WebCore::QuickLookHandle::didFinishLoading): Set m_finishedLoadingDataIntoConverter to true
instead of YES.
(WebCore::QuickLookHandle::setClient): Moved the client rvalue reference into m_client.
(WebCore::QuickLookHandle::~QuickLookHandle): Stopped clearing m_converter and calling
-detachHandle.
(WebCore::QuickLookHandle::previewRequestURL): Used dot syntax.
(WebCore::QuickLookHandle::previewResponse): Renamed from nsResponse().

Source/WebKit/mac:

  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::didCreateQuickLookHandle): Changed to pass a
Ref<QuickLookHandleClient>&& to QuickLookHandle::setClient().

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

Web Inspector: add UI Zoom level to Settings screen
https://bugs.webkit.org/show_bug.cgi?id=166991

Patch by Devin Rousso <Devin Rousso> on 2017-01-16
Reviewed by Brian Burg.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Base/Main.js:

(WebInspector.loaded):
(WebInspector._dockedResizerMouseDown):
(WebInspector._increaseZoom):
(WebInspector._decreaseZoom):
(WebInspector._resetZoom):
(WebInspector.getZoomFactor): Renamed from _zoomFactor.
(WebInspector.setZoomFactor): Renamed from _setZoomFactor.

  • UserInterface/Base/Setting.js:

(WebInspector.settings):
Moved zoomFactor setting to global dictionary.

  • UserInterface/Views/SettingsTabContentView.css:

(.content-view.settings > .setting-container > .setting-value-controller input[type="number"]):

  • UserInterface/Views/SettingsTabContentView.js:

(WebInspector.SettingsTabContentView.prototype.initialLayout):
Add UI input for changing zoomFactor.

9:45 AM Changeset in webkit [210787] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Remove CSSPropertyNames.in from the project. It's not used any more,
now that we generate files from CSSProperties.json.

  • WebCore.xcodeproj/project.pbxproj:
3:49 AM Changeset in webkit [210786] by Carlos Garcia Campos
  • 12 edits in trunk/Source

[SOUP] Accept-language could be set twice in a row for the default context
https://bugs.webkit.org/show_bug.cgi?id=167089

Reviewed by Žan Doberšek.

Source/WebCore:

If NetworkStorageSession doesn't have a SoupNetworkSession yet, we are creating it only to set the
languages. Since we already set the global value, the languages will be set when the SoupNetworkSession is
created later. This is not a big deal for the language property, but it will be for proxies after bug #128674.
Since NetworkStorageSession::soupNetworkSession() it's actually getting or creating the SoupNetworkSession, this
patch renames it as NetworkStorageSession::getOrCreateSoupNetworkSession() and now
NetworkStorageSession::soupNetworkSession() returns a pointer without creating the SoupNetworkSession, so it can
be nullptr. This can now be used to only use the default SoupNetworkSession when it has already been created.

  • platform/network/NetworkStorageSession.h:

(WebCore::NetworkStorageSession::soupNetworkSession): Use NetworkStorageSession::getOrCreateSoupNetworkSession().

  • platform/network/soup/DNSSoup.cpp:

(WebCore::DNSResolveQueue::updateIsUsingProxy): Ditto.
(WebCore::DNSResolveQueue::platformResolve): Ditto.

  • platform/network/soup/NetworkStorageSessionSoup.cpp:

(WebCore::NetworkStorageSession::getOrCreateSoupNetworkSession): This is the old soupNetworkSession(), now renamed.
(WebCore::NetworkStorageSession::soupNetworkSession): Return a pointer with the current value of m_session that
now can be nullptr.

  • platform/network/soup/ResourceHandleSoup.cpp:

(WebCore::sessionFromContext): Use NetworkStorageSession::getOrCreateSoupNetworkSession().

Source/WebKit2:

  • NetworkProcess/CustomProtocols/soup/CustomProtocolManagerSoup.cpp:

(WebKit::CustomProtocolManager::registerScheme): Use NetworkStorageSession::getOrCreateSoupNetworkSession().

  • NetworkProcess/efl/NetworkProcessMainEfl.cpp:
  • NetworkProcess/soup/NetworkProcessSoup.cpp:

(WebKit::NetworkProcess::userPreferredLanguagesChanged): Only set the languages if NetworkStorageSession has a
SoupNetworkSession.

  • NetworkProcess/soup/NetworkSessionSoup.cpp:

(WebKit::NetworkSessionSoup::soupSession): Use NetworkStorageSession::getOrCreateSoupNetworkSession().

  • WebProcess/Cookies/soup/WebCookieManagerSoup.cpp:

(WebKit::WebCookieManager::setCookiePersistentStorage): Ditto.

  • WebProcess/efl/WebProcessMainEfl.cpp:
3:24 AM Changeset in webkit [210785] by Carlos Garcia Campos
  • 6 edits in trunk/Source

[SOUP] Fix handling of accept language property
https://bugs.webkit.org/show_bug.cgi?id=166969

Reviewed by Michael Catanzaro.

Source/WebCore:

Add SoupNetworkSession::setInitialAcceptLanguages() static method and update setAcceptLanguages to receive the
string already built from the languages vector. Now the SoupNetworkSession saves that value globally that
is always used when creating new sessions.

  • platform/network/soup/NetworkStorageSessionSoup.cpp:

(WebCore::NetworkStorageSession::switchToNewTestingSession): Remove workaround.

  • platform/network/soup/SoupNetworkSession.cpp:

(WebCore::SoupNetworkSession::SoupNetworkSession): If initial accept languages were set, apply them to the newly created context.
(WebCore::SoupNetworkSession::setInitialAcceptLanguages): Just save the given value globally.
(WebCore::SoupNetworkSession::setAcceptLanguages): It receives now the string, so just set it to the session.

  • platform/network/soup/SoupNetworkSession.h:

Source/WebKit2:

  • NetworkProcess/soup/NetworkProcessSoup.cpp:

(WebKit::buildAcceptLanguages): Moved from WebCore.
(WebKit::NetworkProcess::userPreferredLanguagesChanged): Build the accept language string from the vector and
pass set it to SoupNetworkSession to be used for new sessions, and also to all other existing sessions.

Note: See TracTimeline for information about the timeline view.