WebKit-https.git
2 years agoCRASH at WebCore::TrackListBase::remove
jer.noble@apple.com [Fri, 20 Jan 2017 01:09:20 +0000 (01:09 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210945 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoEnsure status server logs go to log file
aakash_jain@apple.com [Fri, 20 Jan 2017 00:56:28 +0000 (00:56 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210944 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoSource/WebCore:
aestes@apple.com [Fri, 20 Jan 2017 00:23:54 +0000 (00:23 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210943 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoSource/ThirdParty/libwebrtc:
achristensen@apple.com [Thu, 19 Jan 2017 23:43:51 +0000 (23:43 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210942 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoAdditional selection tests and interpolation fix
megan_gardner@apple.com [Thu, 19 Jan 2017 23:30:33 +0000 (23:30 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210941 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoVersioning.
jmarcell@apple.com [Thu, 19 Jan 2017 23:09:38 +0000 (23:09 +0000)]
Versioning.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210940 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoMake sure HTML validation bubble gets dismissed when its associated element's frame...
cdumez@apple.com [Thu, 19 Jan 2017 23:04:37 +0000 (23:04 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210939 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoAdd a mechanism to dispatch and listen to an action
rniwa@webkit.org [Thu, 19 Jan 2017 22:58:46 +0000 (22:58 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210938 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoSkipping three crashing pointer lock tests.
ryanhaddad@apple.com [Thu, 19 Jan 2017 21:35:10 +0000 (21:35 +0000)]
Skipping three crashing pointer lock tests.
https://bugs.webkit.org/show_bug.cgi?id=166765

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210937 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoImplement per activity state CPU usage reporting using diagnostic logging
cdumez@apple.com [Thu, 19 Jan 2017 21:33:36 +0000 (21:33 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210936 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoThe mutator needs to fire a barrier after memmoving stuff around in an object that...
fpizlo@apple.com [Thu, 19 Jan 2017 20:53:42 +0000 (20:53 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210935 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoAdd Tesla to the domain associations on the team page
timothy@hatcher.name [Thu, 19 Jan 2017 20:21:14 +0000 (20:21 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210934 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoBuild fix.
mitz@apple.com [Thu, 19 Jan 2017 19:25:56 +0000 (19:25 +0000)]
Build fix.

Rubber-stamped by Anders Carlsson.

* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::toPKPaymentAuthorizationStatus): Suppressed deprecation warnings.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210933 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[Cocoa] Variation fonts are erroneously disabled on iOS
mmaxfield@apple.com [Thu, 19 Jan 2017 19:24:12 +0000 (19:24 +0000)]
[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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210932 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoBugzilla email autocomplete does not work on third email field of advanced search...
timothy@hatcher.name [Thu, 19 Jan 2017 19:16:22 +0000 (19:16 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210931 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoWeb Inspector: Network Tab's "Clear Network Items" button should have keyboard shortcuts
commit-queue@webkit.org [Thu, 19 Jan 2017 18:31:08 +0000 (18:31 +0000)]
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 <dcrousso+webkit@gmail.com> 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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210930 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoInstall WebKit.apinotes with the public headers of WebKit framework
andersca@apple.com [Thu, 19 Jan 2017 18:20:30 +0000 (18:20 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210929 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoWeb Inspector: Dashboard's log/error/warning help tag says "click to show the Console...
commit-queue@webkit.org [Thu, 19 Jan 2017 17:59:12 +0000 (17:59 +0000)]
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 <dcrousso+webkit@gmail.com> 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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210928 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoWeb Inspector: move Mac-specific automation commands to a separate implementation...
bburg@apple.com [Thu, 19 Jan 2017 17:52:36 +0000 (17:52 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210927 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoRebaseline bindings tests after r210918.
ryanhaddad@apple.com [Thu, 19 Jan 2017 17:28:24 +0000 (17:28 +0000)]
Rebaseline bindings tests after r210918.

Unreviewed test gardening.

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

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210926 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago"this" missing after await in async arrow function
gskachkov@gmail.com [Thu, 19 Jan 2017 17:10:31 +0000 (17:10 +0000)]
"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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210925 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoScriptExecutionContext::topOrigin() should return a reference.
akling@apple.com [Thu, 19 Jan 2017 15:56:13 +0000 (15:56 +0000)]
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:]):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210923 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoUnreviewed. Fix GTK+ unit tests failing since r210531.
carlosgc@webkit.org [Thu, 19 Jan 2017 11:50:31 +0000 (11:50 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210922 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[GTK] Provide API to set proxy settings
carlosgc@webkit.org [Thu, 19 Jan 2017 09:03:25 +0000 (09:03 +0000)]
[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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210921 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[GTK] Do not update the backing store state unnecessarily when page visibility changes
carlosgc@webkit.org [Thu, 19 Jan 2017 08:59:42 +0000 (08:59 +0000)]
[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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210920 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[B3] B3 strength reduction could encounter Value without owner in PureCSE
utatane.tea@gmail.com [Thu, 19 Jan 2017 08:40:05 +0000 (08:40 +0000)]
[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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210919 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[WebIDL] Records should preserve javascript object order
achristensen@apple.com [Thu, 19 Jan 2017 08:21:37 +0000 (08:21 +0000)]
[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

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210918 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoAdd back my old email address so old commits will still match it.
timothy@apple.com [Thu, 19 Jan 2017 08:08:38 +0000 (08:08 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210917 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoRemove my old email address from contributors.json and watchlist.
timothy@apple.com [Thu, 19 Jan 2017 08:04:55 +0000 (08:04 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210916 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoImplement URLSearchParams's sort()
achristensen@apple.com [Thu, 19 Jan 2017 07:45:30 +0000 (07:45 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210915 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoAdd Link header support for preload.
yoav@yoav.ws [Thu, 19 Jan 2017 07:13:54 +0000 (07:13 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210914 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[iOS][WK2] Remove the WebView private configuration contentUpdateFrequency
commit-queue@webkit.org [Thu, 19 Jan 2017 05:26:49 +0000 (05:26 +0000)]
[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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210913 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoJSSegmentedVariableObject and its subclasses should have a sane destruction story
fpizlo@apple.com [Thu, 19 Jan 2017 05:13:21 +0000 (05:13 +0000)]
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):
* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* jsc.cpp:
(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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210912 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoWeb Inspector: split console should be allowed for Network and Timeline tabs when...
commit-queue@webkit.org [Thu, 19 Jan 2017 05:09:49 +0000 (05:09 +0000)]
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 <dcrousso+webkit@gmail.com> 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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210911 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoWeb Inspector: console.table only works for the first 5 properties
commit-queue@webkit.org [Thu, 19 Jan 2017 05:06:10 +0000 (05:06 +0000)]
Web Inspector: console.table only works for the first 5 properties
https://bugs.webkit.org/show_bug.cgi?id=167175

Patch by Joseph Pecoraro <pecoraro@apple.com> 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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210910 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago'buildbot-syncer.js' should be able to determine force build argument from a list...
dewei_zhu@apple.com [Thu, 19 Jan 2017 03:19:37 +0000 (03:19 +0000)]
'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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210909 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoMoving flaky expectation for fast/images/animated-gif-restored-from-bfcache.html...
ryanhaddad@apple.com [Thu, 19 Jan 2017 01:28:26 +0000 (01:28 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210903 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoMarking inspector/indexeddb/clearObjectStore.html as flaky on macOS debug.
ryanhaddad@apple.com [Thu, 19 Jan 2017 01:21:10 +0000 (01:21 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210902 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoMarking two fast/dom/Window/window-properties-performance-* tests as flaky.
ryanhaddad@apple.com [Thu, 19 Jan 2017 01:00:51 +0000 (01:00 +0000)]
Marking two fast/dom/Window/window-properties-performance-* tests as flaky.
https://bugs.webkit.org/show_bug.cgi?id=166911

Unreviewed test gardening.

* TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210901 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoMarking http/tests/fetch/fetching-same-resource-with-diffferent-options.html as flaky...
ryanhaddad@apple.com [Thu, 19 Jan 2017 00:51:38 +0000 (00:51 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210900 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoMarking http/tests/misc/module-script-async.html as a flaky timeout.
ryanhaddad@apple.com [Thu, 19 Jan 2017 00:45:18 +0000 (00:45 +0000)]
Marking http/tests/misc/module-script-async.html as a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=165764

Unreviewed test gardening.

* TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210899 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoMarking js/dom/Promise.html as flaky on both debug and release builds.
ryanhaddad@apple.com [Thu, 19 Jan 2017 00:32:52 +0000 (00:32 +0000)]
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.

* TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210898 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoMarking inspector/worker/debugger-pause.html as a flaky timeout.
ryanhaddad@apple.com [Thu, 19 Jan 2017 00:18:39 +0000 (00:18 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210897 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoReally fix the iOS 10 Internal SDK build after r210864.
aestes@apple.com [Thu, 19 Jan 2017 00:13:14 +0000 (00:13 +0000)]
Really fix the iOS 10 Internal SDK build after r210864.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210896 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoUnreviewed fix for the macOS build.
ryanhaddad@apple.com [Wed, 18 Jan 2017 23:57:17 +0000 (23:57 +0000)]
Unreviewed fix for the macOS build.

* Carbon/CarbonWindowAdapter.mm:
(-[CarbonWindowAdapter initWithCarbonWindowRef:takingOwnership:disableOrdering:carbon:]):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210895 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoUnreviewed, rolling out r210881.
ryanhaddad@apple.com [Wed, 18 Jan 2017 23:51:20 +0000 (23:51 +0000)]
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

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210894 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoUnreviewed, rolling out r210848.
ryanhaddad@apple.com [Wed, 18 Jan 2017 23:24:52 +0000 (23:24 +0000)]
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

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210893 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoAdd instrumentation for when we fail to receive a message
andersca@apple.com [Wed, 18 Jan 2017 23:23:06 +0000 (23:23 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210892 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoOnly delete source provider caches on full collection
antti@apple.com [Wed, 18 Jan 2017 22:53:39 +0000 (22:53 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210891 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoFix CFURLConnection build on Mac
commit-queue@webkit.org [Wed, 18 Jan 2017 22:52:17 +0000 (22:52 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210890 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoFix the iOS 10 Internal SDK build after r210864.
aestes@apple.com [Wed, 18 Jan 2017 22:48:07 +0000 (22:48 +0000)]
Fix the iOS 10 Internal SDK build after r210864.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210889 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoREGRESSION(r210531): Broke local resource loads from custom local protocols
mcatanzaro@igalia.com [Wed, 18 Jan 2017 22:44:00 +0000 (22:44 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210888 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoModernize DelayedReply IPC code
achristensen@apple.com [Wed, 18 Jan 2017 22:43:22 +0000 (22:43 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210887 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoFix CMake build.
achristensen@apple.com [Wed, 18 Jan 2017 22:13:20 +0000 (22:13 +0000)]
Fix CMake build.

* PlatformMac.cmake:
Source/WebCore:

* platform/spi/cocoa/IOSurfaceSPI.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210884 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[Cocoa] Variation fonts without variations specified are not rendered as if the defau...
mmaxfield@apple.com [Wed, 18 Jan 2017 21:40:26 +0000 (21:40 +0000)]
[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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210883 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agobackground-repeat-x doesn't work
mmaxfield@apple.com [Wed, 18 Jan 2017 21:35:30 +0000 (21:35 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210882 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoREGRESSION(r203110): LayoutTest http/tests/preload/single_download_preload_runner...
yoav@yoav.ws [Wed, 18 Jan 2017 21:26:07 +0000 (21:26 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210881 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoMake calls to render() functions async
rniwa@webkit.org [Wed, 18 Jan 2017 21:22:39 +0000 (21:22 +0000)]
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(n^2) 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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210880 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[QuickLook] Support password-protected documents
aestes@apple.com [Wed, 18 Jan 2017 20:29:26 +0000 (20:29 +0000)]
[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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210864 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoFix WinCairo build after r210845.
achristensen@apple.com [Wed, 18 Jan 2017 20:28:02 +0000 (20:28 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210863 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[Streams API] ReadableStream generic reader constructor does not need to call Readabl...
commit-queue@webkit.org [Wed, 18 Jan 2017 20:06:46 +0000 (20:06 +0000)]
[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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210862 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoIgnore Connection Assertion if we are not using connection to send messages
megan_gardner@apple.com [Wed, 18 Jan 2017 19:57:16 +0000 (19:57 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210861 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoReject fetch promise in case of ReadableStream upload
commit-queue@webkit.org [Wed, 18 Jan 2017 19:51:49 +0000 (19:51 +0000)]
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:

* TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210860 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoDocument::securityOrigin() should return a reference.
akling@apple.com [Wed, 18 Jan 2017 19:35:49 +0000 (19:35 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210859 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoJSObjectSetPrivate should not use jsCast<>
fpizlo@apple.com [Wed, 18 Jan 2017 19:30:50 +0000 (19:30 +0000)]
JSObjectSetPrivate should not use jsCast<>
rdar://problem/30069096

Reviewed by Keith Miller.

* API/JSObjectRef.cpp:
(JSObjectSetPrivate):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210858 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoRemove WEBCORE_EXPORT from newly inlined functions after r210845.
ryanhaddad@apple.com [Wed, 18 Jan 2017 19:27:48 +0000 (19:27 +0000)]
Remove WEBCORE_EXPORT from newly inlined functions after r210845.

Unreviewed build fix.

* loader/DocumentLoader.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210857 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoCrash when changing video subtitles.
pvollan@apple.com [Wed, 18 Jan 2017 18:45:59 +0000 (18:45 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210855 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[Fetch API] Update content-type in case of form data
commit-queue@webkit.org [Wed, 18 Jan 2017 18:37:30 +0000 (18:37 +0000)]
[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:

* TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210853 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoWeb Inspector: remove an unnecessary include in generated Objective-C Inspector proto...
bburg@apple.com [Wed, 18 Jan 2017 17:55:06 +0000 (17:55 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210852 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[GStreamer] media source tests crashing
gns@gnome.org [Wed, 18 Jan 2017 16:42:46 +0000 (16:42 +0000)]
[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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210851 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years ago[Win] Clipboard tests are flaky.
pvollan@apple.com [Wed, 18 Jan 2017 13:00:51 +0000 (13:00 +0000)]
[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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210850 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2 years agoFix the JSCOnly build after r210844
ossy@webkit.org [Wed, 18 Jan 2017 10:24:49 +0000 (10:24 +0000)]
Fix the JSCOnly build after r210844
https://bugs.webkit.org/show_bug.cgi?id=167155

Unreviewed buildfix.

* heap/EdenGCActivityCallback.cpp:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210849 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years ago[Modern Media Controls] Turn modern media controls on by default
graouts@webkit.org [Wed, 18 Jan 2017 09:05:37 +0000 (09:05 +0000)]
[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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210848 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years ago[GTK] [TextureMapper] [GLES2] Draw repeated patterns for NPOT textures manually
magomez@igalia.com [Wed, 18 Jan 2017 08:50:16 +0000 (08:50 +0000)]
[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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210847 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years agoRemove PassRefPtr from "loader" directory of WebCore
darin@apple.com [Wed, 18 Jan 2017 05:17:17 +0000 (05:17 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210845 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years agoMake opaque root scanning truly constraint-based
fpizlo@apple.com [Wed, 18 Jan 2017 04:22:45 +0000 (04:22 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210844 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years agoUnreviewed, rolling out r210834
mcatanzaro@igalia.com [Wed, 18 Jan 2017 04:21:15 +0000 (04:21 +0000)]
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

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210843 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years agoRemove positionOutsideContainingSpecialElement
zalan@apple.com [Wed, 18 Jan 2017 03:59:55 +0000 (03:59 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210842 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years ago[GTK][MediaStream] Update bug number for some tests after r210838.
clopez@igalia.com [Wed, 18 Jan 2017 01:46:09 +0000 (01:46 +0000)]
[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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210841 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years agoAnnotate FastMalloc functions with returns_nonnull attribute.
akling@apple.com [Wed, 18 Jan 2017 01:37:36 +0000 (01:37 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210840 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years agoUnreviewed, fix nits found after landing r210833.
cdumez@apple.com [Wed, 18 Jan 2017 01:35:46 +0000 (01:35 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210839 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years ago[GTK][MediaStream] Update list of MediaStream tests that fail.
clopez@igalia.com [Wed, 18 Jan 2017 01:32:27 +0000 (01:32 +0000)]
[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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210838 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years agoNested parenthesized regular expressions with non-zero minimum counts appear to hang...
msaboff@apple.com [Wed, 18 Jan 2017 01:27:04 +0000 (01:27 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210837 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years agoWidthCache should be off while under memory pressure.
akling@apple.com [Wed, 18 Jan 2017 01:21:16 +0000 (01:21 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210836 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years agoPersist derived data
antti@apple.com [Wed, 18 Jan 2017 01:14:33 +0000 (01:14 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210835 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years ago[Modern Media Controls] Turn modern media controls on by default
commit-queue@webkit.org [Wed, 18 Jan 2017 00:42:57 +0000 (00:42 +0000)]
[Modern Media Controls] Turn modern media controls on by default
https://bugs.webkit.org/show_bug.cgi?id=165668

Patch by Antoine Quint <graouts@apple.com> 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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210834 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years agoDocument title changed twice when setting document.title
cdumez@apple.com [Wed, 18 Jan 2017 00:14:37 +0000 (00:14 +0000)]
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:
- https://dom.spec.whatwg.org/#dom-node-textcontent

* dom/Range.cpp:
(WebCore::Range::surroundContents):
Call replaceAllChildrenWith(nullptr) as per the specification:
- https://dom.spec.whatwg.org/#dom-range-surroundcontents

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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210833 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years agoENABLE(USER_TIMING) Not Defined for Apple Windows or OS X Ports
commit-queue@webkit.org [Wed, 18 Jan 2017 00:11:30 +0000 (00:11 +0000)]
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 <pecoraro@apple.com> 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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210832 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years agoEditing nested RTL-LTR content makes the process unresponsive.
zalan@apple.com [Wed, 18 Jan 2017 00:02:42 +0000 (00:02 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210831 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years agoMarking http/tests/media/hls/hls-video-resize.html as flaky on mac.
ryanhaddad@apple.com [Tue, 17 Jan 2017 23:57:09 +0000 (23:57 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210830 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years agoJSCell::classInfo() shouldn't have a bunch of mitigations for being called during...
fpizlo@apple.com [Tue, 17 Jan 2017 23:52:55 +0000 (23:52 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210829 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years agoRemove unnecessary includes
commit-queue@webkit.org [Tue, 17 Jan 2017 23:50:49 +0000 (23:50 +0000)]
Remove unnecessary includes
https://bugs.webkit.org/show_bug.cgi?id=167114

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-01-17
Reviewed by Alex Christensen.
Source/WebKit2:

* WebProcess/WebPage/ios/WebPageIOS.mm:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210828 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years agoAn update to one gamepad's values should only change that gamepad's modified timestamp.
beidson@apple.com [Tue, 17 Jan 2017 23:33:22 +0000 (23:33 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210827 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years agoKill the presentation attribute cache.
akling@apple.com [Tue, 17 Jan 2017 23:24:46 +0000 (23:24 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210826 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years agoIt's not possible to perform a POST request with HTTPBody content in a WKWebView
andersca@apple.com [Tue, 17 Jan 2017 20:57:53 +0000 (20:57 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210825 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years agoUnreviewed, roll out http://trac.webkit.org/changeset/210821
fpizlo@apple.com [Tue, 17 Jan 2017 20:25:36 +0000 (20:25 +0000)]
Unreviewed, roll out 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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210824 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years agoLayoutTests/imported/w3c:
achristensen@apple.com [Tue, 17 Jan 2017 20:04:38 +0000 (20:04 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210823 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years agoCrash when closing tab with debugger paused
joepeck@webkit.org [Tue, 17 Jan 2017 19:24:23 +0000 (19:24 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210822 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years agoJSCell::classInfo() shouldn't have a bunch of mitigations for being called during...
fpizlo@apple.com [Tue, 17 Jan 2017 18:55:55 +0000 (18:55 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210821 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3 years ago'webkit-patch post' no longer works with moved/copied files
jbedard@apple.com [Tue, 17 Jan 2017 18:52:48 +0000 (18:52 +0000)]
'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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210820 268f45cc-cd09-0410-ab3c-d52691b4dbfc