WebKit-https.git
4 years ago[EFL] Locate color picker popup to center of window
gyuyoung.kim@webkit.org [Tue, 27 Sep 2016 11:46:41 +0000 (11:46 +0000)]
[EFL] Locate color picker popup to center of window
https://bugs.webkit.org/show_bug.cgi?id=162540

Reviewed by Michael Catanzaro.

Color picker popup hasn't located in a center of main window, because
elm_win_center() function doesn't work correctly. It looks a bug.

To fix the problem, this patch uses evas_object_geometry_set() instead.

* MiniBrowser/efl/main.c:
(_color_picker_request_cb):

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

4 years ago[GTK] Disable ACCELERATED_2D_CANVAS when using build-webkit
mcatanzaro@igalia.com [Tue, 27 Sep 2016 11:24:46 +0000 (11:24 +0000)]
[GTK] Disable ACCELERATED_2D_CANVAS when using build-webkit
https://bugs.webkit.org/show_bug.cgi?id=162600

Reviewed by Carlos Garcia Campos.

* Scripts/webkitperl/FeatureList.pm:

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

4 years ago[GTK] Unreviewed typo fix
mcatanzaro@igalia.com [Tue, 27 Sep 2016 10:49:05 +0000 (10:49 +0000)]
[GTK] Unreviewed typo fix

* UIProcess/API/gtk/WebKitWebInspector.cpp:
(webkit_web_inspector_class_init):

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

4 years ago[GTK] Mac defaults are used for key shortcuts on Linux
commit-queue@webkit.org [Tue, 27 Sep 2016 09:27:28 +0000 (09:27 +0000)]
[GTK] Mac defaults are used for key shortcuts on Linux
https://bugs.webkit.org/show_bug.cgi?id=162564

Don't set Mac's default keymap as a fallthrough for CodeMirror when we
are not on Mac.

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

* UserInterface/Test.html: Include Platform.js for the
WebInspector.Platform definition.
* UserInterface/Views/CodeMirrorAdditions.js:

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

4 years ago[GTK] Should check whether GDK can use GL before asking it to
gns@gnome.org [Tue, 27 Sep 2016 09:06:41 +0000 (09:06 +0000)]
[GTK] Should check whether GDK can use GL before asking it to
https://bugs.webkit.org/show_bug.cgi?id=162598

Reviewed by Michael Catanzaro.

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

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

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

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

4 years ago[Fetch API] Remove ReadableStreamSource firstReadCallback
commit-queue@webkit.org [Tue, 27 Sep 2016 08:47:43 +0000 (08:47 +0000)]
[Fetch API] Remove ReadableStreamSource firstReadCallback
https://bugs.webkit.org/show_bug.cgi?id=162339

Patch by Youenn Fablet <youenn@apple.com> on 2016-09-27
Reviewed by Sam Weinig.

No observable change of behavior.
Removing ReadableStreamSource firstReadCallback.
This makes the enqueuing of data to happen when the stream is created.
In the future, we may want to implement doPull() to enqueue data when stream actually needs it.

* Modules/fetch/FetchResponseSource.cpp:
(WebCore::FetchResponseSource::doPull): Introduced as we introduce pull() in ReadableStreamSource.
* Modules/fetch/FetchResponseSource.h:
* Modules/streams/ReadableStreamInternals.js:
(readFromReadableStreamDefaultReader): Removing firstReadCallback use.
* Modules/streams/ReadableStreamSource.h: Renaming m_startPromise in m_promise since m_promise may store start and pull promises.
(WebCore::ReadableStreamSource::isStarting):
(WebCore::ReadableStreamSource::start):
(WebCore::ReadableStreamSource::pull): Introduced to support ReadableStreamSource pulling.
(WebCore::ReadableStreamSource::startFinished):
(WebCore::ReadableStreamSource::pullFinished): Ditto.
(WebCore::ReadableStreamSource::clean):
* Modules/streams/ReadableStreamSource.idl: Ditto.
* bindings/js/JSReadableStreamSourceCustom.cpp: Refactoring to use callPromiseFunction
(WebCore::startReadableStream):
(WebCore::JSReadableStreamSource::start):
(WebCore::pullReadableStream): Introduced to support ReadableStreamSource pulling.
(WebCore::JSReadableStreamSource::pull): Ditto.
* bindings/js/WebCoreBuiltinNames.h: Removing firstReadCallback

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

4 years agoREGRESSION(r205883): Letterpressed text is invisible
mmaxfield@apple.com [Tue, 27 Sep 2016 08:10:34 +0000 (08:10 +0000)]
REGRESSION(r205883): Letterpressed text is invisible
https://bugs.webkit.org/show_bug.cgi?id=162590
Source/WebCore:

<rdar://problem/28141512>

Reviewed by Simon Fraser.

r205883 removed the last place where we use CGFonts directly in WebKit. However,
our letterpress code is sensitive to the current state of the CGContext.

Tests: fast/text/letterpress-different.html
       fast/text/letterpress-paint.html

* platform/graphics/cocoa/FontCascadeCocoa.mm:
(WebCore::showLetterpressedGlyphsWithAdvances):

LayoutTests:

Reviewed by Simon Fraser.

Letterpress is only implemented on iOS, so letterpress-different.html is marked
as only passing on iOS. letterpress-paint.html makes sure that letterpressed paint
is not invisible.

* TestExpectations:
* fast/text/letterpress-different-expected-mismatch.html: Added.
* fast/text/letterpress-different.html: Added.
* fast/text/letterpress-paint-expected-mismatch.html: Added.
* fast/text/letterpress-paint.html: Added.
* platform/ios-simulator/TestExpectations:

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

4 years ago[Fetch API] Refactor FetchBody to use std::experimental::variant
commit-queue@webkit.org [Tue, 27 Sep 2016 07:58:48 +0000 (07:58 +0000)]
[Fetch API] Refactor FetchBody to use std::experimental::variant
https://bugs.webkit.org/show_bug.cgi?id=162559

Patch by Youenn Fablet <youenn@apple.com> on 2016-09-27
Reviewed by Alex Christensen.

Covered by exiting tests.

Using variant to represent the variant data types.
Adding nullptr as a specific type for default empty values and to allow clean-up.
Adding FetchBody::clone as the default copy constructor is deleted with this change.

* Modules/fetch/FetchBody.cpp:
(WebCore::FetchBody::FetchBody):
(WebCore::FetchBody::json):
(WebCore::FetchBody::text):
(WebCore::FetchBody::consumeAsStream):
(WebCore::FetchBody::consumeArrayBuffer):
(WebCore::FetchBody::consumeArrayBufferView):
(WebCore::FetchBody::consumeText):
(WebCore::FetchBody::consumeBlob):
(WebCore::FetchBody::extractFromText):
(WebCore::FetchBody::bodyForInternalRequest):
(WebCore::FetchBody::clone):
* Modules/fetch/FetchBody.h:
(WebCore::FetchBody::blobBody):
(WebCore::FetchBody::formDataBody):
(WebCore::FetchBody::arrayBufferBody):
(WebCore::FetchBody::arrayBufferViewBody):
(WebCore::FetchBody::textBody):
* Modules/fetch/FetchRequest.cpp:
(WebCore::FetchRequest::clone):
* Modules/fetch/FetchResponse.cpp:
(WebCore::FetchResponse::cloneForJS):

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

4 years agoPyGIWarnings printed by webkit-patch
mcatanzaro@igalia.com [Tue, 27 Sep 2016 07:52:29 +0000 (07:52 +0000)]
PyGIWarnings printed by webkit-patch
https://bugs.webkit.org/show_bug.cgi?id=152470

Reviewed by Carlos Garcia Campos.

Update to a newer version of the keyring module, since this bug has been fixed upstream for
a while. But be careful not to update to the latest version, since it has some compatibility
breaks and requires the SecretService python module on Linux, but I couldn't figure out how
to autoinstall it successfully.

* Scripts/webkitpy/thirdparty/__init__.py:
(AutoinstallImportHook._install_keyring):

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

4 years ago[EFL] Fix debug build break since r204205. Unreviewed
jh718.park@samsung.com [Tue, 27 Sep 2016 07:07:06 +0000 (07:07 +0000)]
[EFL] Fix debug build break since r204205. Unreviewed
https://bugs.webkit.org/show_bug.cgi?id=162596

No new tests, no new behaviours.

* platform/graphics/BitmapImage.cpp:
(WebCore::BitmapImage::frameImageAtIndex):

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

4 years agoFixed compilation of WOFF2 on Windows
commit-queue@webkit.org [Tue, 27 Sep 2016 07:03:53 +0000 (07:03 +0000)]
Fixed compilation of WOFF2 on Windows
https://bugs.webkit.org/show_bug.cgi?id=162570

Patch by Konstantin Tokarev  <annulen@yandex.ru> and Vitaliy Slobodin <vitaliy.slobodin@gmail.com> on 2016-09-27
Reviewed by Alex Christensen.

* woff2/CMakeLists.txt: Avoid passing GCC-specific flags to other
compilers.
* woff2/src/port.h: Include assert.h.

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

4 years agoIf you play a youtube video from now playing after it finished in Safari, controls...
wenson_hsieh@apple.com [Tue, 27 Sep 2016 06:14:23 +0000 (06:14 +0000)]
If you play a youtube video from now playing after it finished in Safari, controls disappear
https://bugs.webkit.org/show_bug.cgi?id=162589
<rdar://problem/28484047>

Reviewed by Jer Noble.

Tweaks the main content heuristic slightly to remove the "mostly in mainframe" requirement in the case of Now
Playing. This was added in the case of the controls manager as an additional way to identify video elements that
should not show controls, since we relax audio and video constraints for showing videos in the controls manager,
so that a video element is prevented from showing controls on grounds of lacking audio only if it has never had
audio before. In the case of Now Playing, we have stricter requirements for videos, which must have audio, which
makes the mainframe heuristic not necessary.

* html/MediaElementSession.cpp:
(WebCore::MediaElementSession::canShowControlsManager):

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

4 years agoDelete some unused code from r202695
timothy_horton@apple.com [Tue, 27 Sep 2016 05:50:13 +0000 (05:50 +0000)]
Delete some unused code from r202695
https://bugs.webkit.org/show_bug.cgi?id=162595
<rdar://problem/28343784>

Reviewed by Dan Bernstein.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
(-[WKWebView _setIsBlankBeforeFirstNonEmptyLayout:]): Deleted.
(-[WKWebView _didFirstVisuallyNonEmptyLayoutForMainFrame]): Deleted.
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::didFirstVisuallyNonEmptyLayoutForMainFrame):
We didn't end up needing this mechanism.

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

4 years agoMarking css3/filters/backdrop/backdrop-filter-with-reflection* tests as flaky on...
ryanhaddad@apple.com [Tue, 27 Sep 2016 04:32:30 +0000 (04:32 +0000)]
Marking css3/filters/backdrop/backdrop-filter-with-reflection* tests as flaky on Sierra WK1.
https://bugs.webkit.org/show_bug.cgi?id=162591

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

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

4 years agoMake DFGSlowPathGenerator a bit more variadic
commit-queue@webkit.org [Tue, 27 Sep 2016 03:45:25 +0000 (03:45 +0000)]
Make DFGSlowPathGenerator a bit more variadic
https://bugs.webkit.org/show_bug.cgi?id=162378

Patch by Sam Weinig <sam@webkit.org> on 2016-09-26
Reviewed by Filip Pizlo.

Make the subclass of CallSlowPathGenerator that takes arguments variadic
so it can take any number of arguments. Also updates the slowPathCall helper
function to be variadic. I had to move the spill mode and exception check
requirement parameters to before the arguments since the variadic arguments
must be at the end. As a convenience, I added an overload of slowPathCall that
doesn't take spill mode and exception check requirement parameters.

* dfg/DFGSlowPathGenerator.h:
(JSC::DFG::CallResultAndArgumentsSlowPathGenerator::CallResultAndArgumentsSlowPathGenerator):
(JSC::DFG::CallResultAndArgumentsSlowPathGenerator::unpackAndGenerate):
(JSC::DFG::slowPathCall):
(JSC::DFG::CallResultAndNoArgumentsSlowPathGenerator::CallResultAndNoArgumentsSlowPathGenerator): Deleted.
(JSC::DFG::CallResultAndOneArgumentSlowPathGenerator::CallResultAndOneArgumentSlowPathGenerator): Deleted.
(JSC::DFG::CallResultAndTwoArgumentsSlowPathGenerator::CallResultAndTwoArgumentsSlowPathGenerator): Deleted.
(JSC::DFG::CallResultAndThreeArgumentsSlowPathGenerator::CallResultAndThreeArgumentsSlowPathGenerator): Deleted.
(JSC::DFG::CallResultAndFourArgumentsSlowPathGenerator::CallResultAndFourArgumentsSlowPathGenerator): Deleted.
(JSC::DFG::CallResultAndFourArgumentsSlowPathGenerator::generateInternal): Deleted.
(JSC::DFG::CallResultAndFiveArgumentsSlowPathGenerator::CallResultAndFiveArgumentsSlowPathGenerator): Deleted.
(JSC::DFG::CallResultAndFiveArgumentsSlowPathGenerator::generateInternal): Deleted.
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileValueToInt32):
(JSC::DFG::SpeculativeJIT::compileNotifyWrite):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::cachedGetById):

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

4 years ago-_webViewWebProcessDidBecomeUnresponsive: gets called when the Web process is stopped...
mitz@apple.com [Tue, 27 Sep 2016 03:35:01 +0000 (03:35 +0000)]
-_webViewWebProcessDidBecomeUnresponsive: gets called when the Web process is stopped in the debugger
https://bugs.webkit.org/show_bug.cgi?id=162234

Reviewed by Sam Weinig.

* UIProcess/Cocoa/WebProcessProxyCocoa.mm:
(WebKit::WebProcessProxy::platformIsBeingDebugged): Use the KERN_PROC sysctl to get the
  process flags and check for P_TRACED.

* UIProcess/ResponsivenessTimer.cpp:
(WebKit::ResponsivenessTimer::timerFired): Call the new client function
  mayBecomeUnresponsive. If it returns false, restart the timer and bail out without
  changing the responsiveness state.

* UIProcess/ResponsivenessTimer.h: Declared new client function mayBecomeUnresponsive.

* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::platformIsBeingDebugged): A generic implementation that always
  returns false.
(WebKit::WebProcessProxy::mayBecomeUnresponsive): Implement this new
  ResponsivenessTimer::Client function to return true unless the process is being debugged.
* UIProcess/WebProcessProxy.h:

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

4 years agoRemove 100ms timeout for media/media-source/media-source-delaying-load-event.html...
ryanhaddad@apple.com [Tue, 27 Sep 2016 03:06:26 +0000 (03:06 +0000)]
Remove 100ms timeout for media/media-source/media-source-delaying-load-event.html to try to fix flakiness.
https://bugs.webkit.org/show_bug.cgi?id=162566

Reviewed by Alexey Proskuryakov.

* media/media-source/media-source-delaying-load-event.html:

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

4 years agoUnreviewed, rolling out r206405.
commit-queue@webkit.org [Tue, 27 Sep 2016 02:46:19 +0000 (02:46 +0000)]
Unreviewed, rolling out r206405.
https://bugs.webkit.org/show_bug.cgi?id=162588

This change caused LayoutTest crashes. (Requested by
ryanhaddad on #webkit).

Reverted changeset:

"Add some needed CatchScopes in code that should not throw."
https://bugs.webkit.org/show_bug.cgi?id=162584
http://trac.webkit.org/changeset/206405

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

4 years agoWeb Inspector: Box Model values not updated when DOM node styles change
mattbaker@apple.com [Tue, 27 Sep 2016 00:06:55 +0000 (00:06 +0000)]
Web Inspector: Box Model values not updated when DOM node styles change
https://bugs.webkit.org/show_bug.cgi?id=162525

Reviewed by Brian Burg.

The Box Model section should refresh itself when the selected node's
computed style changes. This is necessary since the Styles sidebar
doesn't always refresh its sections on node changes.

* UserInterface/Views/BoxModelDetailsSectionRow.js:
(WebInspector.BoxModelDetailsSectionRow.prototype.set nodeStyles):
Refresh metrics whenever the computed style changes.

(WebInspector.BoxModelDetailsSectionRow.prototype._getBox):
(WebInspector.BoxModelDetailsSectionRow.prototype._getComponentSuffix):
(WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics.createValueElement):
(WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics.createBoxPartElement):
(WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics.createContentAreaElement):
(WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics):
Drive-by cleanup to make this large function easier to read.
(WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics.createElement): Deleted.
Renamed createValueElement.
(WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics.createContentAreaWidthElement): Deleted.
(WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics.createContentAreaHeightElement): Deleted.
Combined these into a single function taking a property name (width or height).

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

4 years agoAdd some needed CatchScopes in code that should not throw.
mark.lam@apple.com [Mon, 26 Sep 2016 23:56:37 +0000 (23:56 +0000)]
Add some needed CatchScopes in code that should not throw.
https://bugs.webkit.org/show_bug.cgi?id=162584

Reviewed by Keith Miller.

* API/JSObjectRef.cpp:
(JSObjectSetProperty):
- This function already handles exceptions in its own way.  We're honoring this
  contract and catching exceptions and passing it to the handler.

* interpreter/Interpreter.cpp:
(JSC::notifyDebuggerOfUnwinding):
- The debugger should not be throwing any exceptions.

* jsc.cpp:
(runJSC):
- the buck stops here.  There's no reason an exception should propagate past here.

* profiler/ProfilerDatabase.cpp:
(JSC::Profiler::Database::save):
- If an exception was thrown while saving the database, there's nothing we can
  really do about it anyway.  Just fail nicely and return false.  This is in line
  with existing error checking code in Database::save() that returns false if
  it's not able to open the file to save to.

* runtime/ExceptionHelpers.cpp:
(JSC::createError):
- If we're not able to stringify the error value, then we'll just use the
  provided message as the error string.  It doesn't make sense to have the
  Error factory throw an exception that shadows the intended exception that the
  client probably wants to throw (assuming that that's why the client is creating
  this Error object).

* runtime/JSModuleLoader.cpp:
(JSC::JSModuleLoader::finishCreation):
- The existing code already RELEASE_ASSERT that no exception was thrown.
  Hence, it's appropriate to use a CatchScope here.

* runtime/SamplingProfiler.cpp:
(JSC::SamplingProfiler::StackFrame::nameFromCallee):
- The sampling profiler is doing a VMInquiry get here.  It should never throw an
  exception.  Hence, we'll just use a CatchScope and assert accordingly.

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

4 years agoSetter on style element's textContent or cssText doesn't trigger style recalc
antti@apple.com [Mon, 26 Sep 2016 23:51:17 +0000 (23:51 +0000)]
Setter on style element's textContent or cssText doesn't trigger style recalc
https://bugs.webkit.org/show_bug.cgi?id=160331
<rdar://problem/27609715>

Reviewed by Ryosuke Niwa and Daniel Bates.

Source/WebCore:

We would not notify the parent when text node content changed in a shadow tree.

Test: fast/shadow-dom/shadow-style-text-mutation.html

* dom/AuthorStyleSheets.cpp:
(WebCore::AuthorStyleSheets::updateActiveStyleSheets):

    Invalidate shadow root children instead of the root itself when doing full invalidation.
    The invalidity bits have no meaning for non-element, non-texts.

* dom/CharacterData.cpp:
(WebCore::CharacterData::parserAppendData):
(WebCore::CharacterData::setDataAndUpdate):
(WebCore::CharacterData::notifyParentAfterChange):

    Add a helper and call it also in shadow trees.

(WebCore::CharacterData::dispatchModifiedEvent):
* dom/CharacterData.h:

LayoutTests:

* fast/shadow-dom/shadow-style-text-mutation-expected.html: Added.
* fast/shadow-dom/shadow-style-text-mutation.html: Added.

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

4 years agoInput elements don't work inside shadow tree
antti@apple.com [Mon, 26 Sep 2016 23:45:21 +0000 (23:45 +0000)]
Input elements don't work inside shadow tree
https://bugs.webkit.org/show_bug.cgi?id=160427

Reviewed by Darin Adler.

Source/WebCore:

There is a bug in ComposedTreeIterator. If the iterator is initialized with an initial state where the root
is inside a shadow tree it won't iterate into slots.

If an input element is in a shadow tree it generates narrowly scoped style updates. When RenderTreeUpdater
applies such an update the update root will be inside the shadow tree and the bug will prevent the render tree
for slotted content from updating.

Added tests for both the iterator behavior and the specific symptom with input elements.

Tests: fast/shadow-dom/composed-tree-shadow-child-subtree.html
       fast/shadow-dom/input-element-in-shadow.html

* dom/ComposedTreeIterator.cpp:
(WebCore::ComposedTreeIterator::ComposedTreeIterator):

    Check and cache if the root is inside shadow tree.

(WebCore::ComposedTreeIterator::traverseNextInShadowTree):
* dom/ComposedTreeIterator.h:
(WebCore::ComposedTreeIterator::traverseNext):

    If it is, always use the shadow traversal code path.

LayoutTests:

* fast/shadow-dom/composed-tree-shadow-child-subtree-expected.txt: Added.
* fast/shadow-dom/composed-tree-shadow-child-subtree.html: Added.
* fast/shadow-dom/input-element-in-shadow-expected.html: Added.
* fast/shadow-dom/input-element-in-shadow.html: Added.

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

4 years agoAdd Sierra to the flakiness dashboard.
ryanhaddad@apple.com [Mon, 26 Sep 2016 23:40:06 +0000 (23:40 +0000)]
Add Sierra to the flakiness dashboard.
https://bugs.webkit.org/show_bug.cgi?id=162509

Reviewed by Alexey Proskuryakov.

* TestResultServer/static-dashboards/builders.jsonp:

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

4 years agoException unwinding code should use a CatchScope instead of a ThrowScope.
mark.lam@apple.com [Mon, 26 Sep 2016 23:11:53 +0000 (23:11 +0000)]
Exception unwinding code should use a CatchScope instead of a ThrowScope.
https://bugs.webkit.org/show_bug.cgi?id=162583

Reviewed by Geoffrey Garen.

This is because the exception unwinding code does not throw an exception.
It only inspects the thrown exception and passes it to the appropriate handler.

* interpreter/Interpreter.cpp:
(JSC::Interpreter::unwind):
* jit/JITExceptions.cpp:
(JSC::genericUnwind):

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

4 years agoAdd an Option to disable the CodeCache
commit-queue@webkit.org [Mon, 26 Sep 2016 22:48:18 +0000 (22:48 +0000)]
Add an Option to disable the CodeCache
https://bugs.webkit.org/show_bug.cgi?id=162579

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-09-26
Reviewed by Geoffrey Garen.

* runtime/CodeCache.cpp:
(JSC::CodeCache::getGlobalCodeBlock):
(JSC::CodeCache::getFunctionExecutableFromGlobalCode):
Do not use the cache if the Option is disabled.

* runtime/Options.h:
New option to not use the code cache.

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

4 years agoSeeking video doesn't update seek position
wenson_hsieh@apple.com [Mon, 26 Sep 2016 22:42:19 +0000 (22:42 +0000)]
Seeking video doesn't update seek position
https://bugs.webkit.org/show_bug.cgi?id=162575
<rdar://problem/28457219>

Reviewed by Jer Noble.

On ToT, seeking in a video causes the playhead to stutter, and does not actually update media remote's seek
position. This is partly due to how we do not update media remote with new information when beginning to respond
to remote seek commands, so media remote continues to think that a playing video is still playing despite the
user attempting to seek through it.

To fix this, we introduce timer-based guards around remote seek commands, such that a seek "gesture" begins when
we receive the first seek command and ends when no seek command has been received in a set amount of time (this
is 0.5 seconds, which is approximately what other clients around the platform use).

Also, when responding to a remote seek, perform the seek with no tolerance. This prevents the playhead from
stuttering at the end of a seek from the final requested destination of the seek to the last actually seeked
time in the video.

When beginning to seek, we must pause the media. Through existing mechanisms, this causes the media session
manager to update its Now Playing information, which informs media remote that we are no longer playing and
prevents us from stuttering. However, when ending a seek, we must also trigger an additional update to again
refresh media remote's view of the current time. This prevents a flicker when playing media after seeking.

Unit tests to be added in a follow-up due to time constraints.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::HTMLMediaElement):
(WebCore::HTMLMediaElement::handleSeekToPlaybackPosition):
(WebCore::HTMLMediaElement::seekToPlaybackPositionEndedTimerFired):
(WebCore::HTMLMediaElement::didReceiveRemoteControlCommand):
* html/HTMLMediaElement.h:
* platform/audio/PlatformMediaSessionManager.h:
(WebCore::PlatformMediaSessionManager::scheduleUpdateNowPlayingInfo):
(WebCore::PlatformMediaSessionManager::sessionDidEndRemoteScrubbing):
(WebCore::PlatformMediaSessionManager::sessions): Deleted.
* platform/audio/mac/MediaSessionManagerMac.h:
* platform/audio/mac/MediaSessionManagerMac.mm:
(WebCore::PlatformMediaSessionManager::updateNowPlayingInfoIfNecessary):
(WebCore::MediaSessionManagerMac::scheduleUpdateNowPlayingInfo):
(WebCore::MediaSessionManagerMac::sessionDidEndRemoteScrubbing):
(WebCore::MediaSessionManagerMac::updateNowPlayingInfo):

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

4 years agoMarking media/media-document-audio-repaint.html as flaky on Sierra.
ryanhaddad@apple.com [Mon, 26 Sep 2016 22:22:18 +0000 (22:22 +0000)]
Marking media/media-document-audio-repaint.html as flaky on Sierra.
https://bugs.webkit.org/show_bug.cgi?id=155757

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

4 years ago[WK2] BlobDownloadClient should use asynchronous IPC to decide destination path
cdumez@apple.com [Mon, 26 Sep 2016 22:20:27 +0000 (22:20 +0000)]
[WK2] BlobDownloadClient should use asynchronous IPC to decide destination path
https://bugs.webkit.org/show_bug.cgi?id=162568

Reviewed by Alex Christensen.

Source/WebCore:

Update BlobResourceHandle to wait for continueDidReceiveResponse() to be
called after it calls the client's didReceiveResponseAsync(), before
actually reading the Blob Data.

No new tests, covered by existing tests.

* platform/network/BlobResourceHandle.cpp:
(WebCore::BlobResourceHandle::continueDidReceiveResponse):
(WebCore::BlobResourceHandle::getSizeForNext):
(WebCore::BlobResourceHandle::notifyResponseOnSuccess):
(WebCore::BlobResourceHandle::notifyResponseOnError):

Source/WebKit2:

Use DecideDestinationWithSuggestedFilenameAsync IPC to decide the destination
path in the case of Blob downloads, instead of the synchronous alternative.
To achieve this, BlobResourceHandle was updated in WebCore to properly support
asynchronous callback and BlobDownloadClient was updated to use asynchronous
callbacks. When BlobDownloadClient::didReceiveResponseAsync() is called, we
now ask the WebContent process asynchronously to decide what the destination
path should be. Then, when we later get the destination path back from the
WebContent process, we create the file on disk and call
continueDidReceiveResponse() on the BlobResourceHandle so we start getting the
blob data to write.

* NetworkProcess/Downloads/BlobDownloadClient.cpp:
(WebKit::BlobDownloadClient::didReceiveResponseAsync):
(WebKit::BlobDownloadClient::didDecideDownloadDestination):
* NetworkProcess/Downloads/BlobDownloadClient.h:
* NetworkProcess/Downloads/Download.cpp:
(WebKit::Download::decideDestinationWithSuggestedFilenameAsync):
(WebKit::Download::didDecideDownloadDestination):
(WebKit::Download::continueDidReceiveResponse):
(WebKit::Download::decideDestinationWithSuggestedFilename): Deleted.
* NetworkProcess/Downloads/Download.h:
* NetworkProcess/Downloads/DownloadManager.cpp:
(WebKit::DownloadManager::willDecidePendingDownloadDestination):
(WebKit::DownloadManager::continueDecidePendingDownloadDestination):
(WebKit::DownloadManager::convertHandleToDownload): Deleted.
* NetworkProcess/Downloads/DownloadManager.h:
* NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::continueDidReceiveResponse):
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::continueDecidePendingDownloadDestination):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* UIProcess/Downloads/DownloadProxy.cpp:
(WebKit::DownloadProxy::decideDestinationWithSuggestedFilenameAsync): Deleted.
* UIProcess/Downloads/DownloadProxy.h:
* UIProcess/Downloads/DownloadProxy.messages.in:

LayoutTests:

* fast/dom/HTMLAnchorElement/anchor-download-expected.txt:
* fast/dom/HTMLAnchorElement/anchor-nodownload-set-expected.txt:
* http/tests/security/anchor-download-allow-blob-expected.txt:
Rebaseline several Blob download tests now that the "Download started"
message always comes first (as it should).

* platform/mac-wk2/TestExpectations:
Unskip test that is no longer flaky.

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

4 years agoMark Ping{Handle, Load} as final
dbates@webkit.org [Mon, 26 Sep 2016 21:55:34 +0000 (21:55 +0000)]
Mark Ping{Handle, Load} as final
https://bugs.webkit.org/show_bug.cgi?id=162576

Reviewed by Alex Christensen.

Source/WebCore:

We should not support subclassing of a ping handle or overriding its ResourceHandleClient
callbacks because there are security/privacy implications with a ping request. We should
not encourage subclassing without careful consideration.

* platform/network/PingHandle.h:

Source/WebKit2:

We should not support subclassing of a ping handle or overriding its NetworkDataTaskClient
callbacks because there are security/privacy implications with a ping request. We should
not encourage subclassing without careful consideration.

* NetworkProcess/PingLoad.h:

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

4 years agoRename IOS_TEXT_AUTOSIZING to TEXT_AUTOSIZING
dbates@webkit.org [Mon, 26 Sep 2016 21:51:25 +0000 (21:51 +0000)]
Rename IOS_TEXT_AUTOSIZING to TEXT_AUTOSIZING
https://bugs.webkit.org/show_bug.cgi?id=162365

Reviewed by Simon Fraser.

.:

* Source/cmake/OptionsMac.cmake:
* Source/cmake/WebKitFeatures.cmake: Substitute ENABLE_TEXT_AUTOSIZING for ENABLE_IOS_TEXT_AUTOSIZING,
update the description of this feature to better describe what it does and re-order the define in the
list of defines such that it is in sorted order.

Source/JavaScriptCore:

* Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Repurpose the feature name TEXT_AUTOSIZING for the ENABLE(IOS_TEXT_AUTOSIZING)-guarded code
as this code represents WebKit's automatic text size adjustment machinery and is compiled
on both macOS and iOS.

* Configurations/FeatureDefines.xcconfig:
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::propertyValue):
* css/CSSPropertyNames.in:
* css/StyleBuilderCustom.h:
* css/StyleResolver.cpp:
(WebCore::StyleResolver::updateFont):
* css/StyleResolver.h:
* css/parser/CSSParser.cpp:
(WebCore::CSSParserContext::CSSParserContext):
(WebCore::CSSParser::parseValue):
* css/parser/CSSParser.h:
* css/parser/CSSParserMode.h:
* dom/Document.cpp:
(WebCore::Document::destroyRenderTree):
* dom/Document.h:
* editing/EditingStyle.cpp:
* page/FrameView.cpp:
(WebCore::FrameView::layout):
* page/Page.cpp:
(WebCore::Page::Page):
* page/Page.h:
* page/Settings.in:
* platform/graphics/FontCascade.h:
* platform/graphics/FontDescription.cpp:
* platform/graphics/FontDescription.h:
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::RenderBlockFlow):
* rendering/RenderBlockFlow.h:
* rendering/RenderElement.cpp:
* rendering/RenderElement.h:
* rendering/RenderObject.cpp:
* rendering/RenderObject.h:
* rendering/RenderText.cpp:
(WebCore::RenderText::RenderText):
* rendering/RenderText.h:
* rendering/TextAutoSizing.cpp:
* rendering/TextAutoSizing.h:
* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::changeRequiresLayout):
* rendering/style/RenderStyle.h:
* rendering/style/StyleInheritedData.cpp:
(WebCore::StyleInheritedData::StyleInheritedData):
(WebCore::StyleInheritedData::operator==):
* rendering/style/StyleInheritedData.h:
* rendering/style/StyleRareInheritedData.cpp:
(WebCore::StyleRareInheritedData::StyleRareInheritedData):
(WebCore::StyleRareInheritedData::operator==):
* rendering/style/StyleRareInheritedData.h:
* rendering/style/TextSizeAdjustment.h:
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setTextAutosizingEnabled):
(WebCore::InternalSettings::setTextAutosizingWindowSizeOverride):
* testing/InternalSettings.h:

Source/WebKit/mac:

* Configurations/FeatureDefines.xcconfig:
* WebView/WebFrame.mm:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):

Source/WebKit2:

* Configurations/FeatureDefines.xcconfig:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):

Source/WTF:

* wtf/FeatureDefines.h:

Tools:

* DumpRenderTree/TestRunner.h:
* TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

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

4 years ago[JSC] Shrink the Math inline caches some more
benjamin@webkit.org [Mon, 26 Sep 2016 21:11:31 +0000 (21:11 +0000)]
[JSC] Shrink the Math inline caches some more
https://bugs.webkit.org/show_bug.cgi?id=162485

Reviewed by Saam Barati.

Source/JavaScriptCore:

This patch applies some lessons learnt from op_negate
to shrink the generated asm of the previous 3 inline
caches.

In order of importance:
-We do not need to pass the pointer to ArithProfile
 on the slow path. We can just get the profile out
 of the Math IC.
 This saves us from materializing a 64bits value
 in a register before the call on the slow path.
-We can remove a bunch of mov by setting up the registers
 in the way the slow path needs them.
 The slow path makes a function calls with the input
 as second and third arguments, and return the result in
 the "return register". By using those as target when
 loading/storing from the stack, we remove 3 mov per slow path.
-When performing integer add, we can set the result directly in
 the output register if that does not trashes one of the input
 register. This removes one mov per integer add.

The inline cache average sizes on Sunspider change as follow:
-Adds: 147.573099->131.555556 (~10%)
-Muls: 186.882353->170.991597 (~8%)
-Subs: 139.127907->121.523256 (~12%)

* jit/JIT.h:
* jit/JITAddGenerator.cpp:
(JSC::JITAddGenerator::generateInline):
(JSC::JITAddGenerator::generateFastPath):
* jit/JITArithmetic.cpp:
(JSC::JIT::emitMathICFast):
(JSC::JIT::emitMathICSlow):
* jit/JITInlines.h:
(JSC::JIT::callOperation): Deleted.
* jit/JITOperations.cpp:
* jit/JITOperations.h:

Source/WTF:

* wtf/Bag.h:
Don't copy the arguments before initializing the nodes.

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

4 years agoAX: Progress: [Mac] Content in label element should be used as AXTitle or AXDescription
n_wang@apple.com [Mon, 26 Sep 2016 21:02:42 +0000 (21:02 +0000)]
AX: Progress: [Mac] Content in label element should be used as AXTitle or AXDescription
https://bugs.webkit.org/show_bug.cgi?id=162573

Reviewed by Chris Fleizach.

Source/WebCore:

Exposed the label element's text as the AXTitle of the progress indicator.

Test: accessibility/mac/progress-with-label-element.html

* accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::titleElementText):
(WebCore::AccessibilityNodeObject::title):

LayoutTests:

* accessibility/mac/progress-with-label-element-expected.txt: Added.
* accessibility/mac/progress-with-label-element.html: Added.

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

4 years agoRebaseline bindings tests after r206386.
ryanhaddad@apple.com [Mon, 26 Sep 2016 20:39:57 +0000 (20:39 +0000)]
Rebaseline bindings tests after r206386.

Unreviewed test gardening.

* bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
* bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:
* bindings/scripts/test/JS/JSTestEventConstructor.cpp:
* bindings/scripts/test/JS/JSTestGlobalObject.cpp:
* bindings/scripts/test/JS/JSTestInterface.cpp:
* bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
* bindings/scripts/test/JS/JSTestNode.cpp:
* bindings/scripts/test/JS/JSTestNondeterministic.cpp:
* bindings/scripts/test/JS/JSTestObj.cpp:
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
* bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
* bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
* bindings/scripts/test/JS/JSTestTypedefs.cpp:

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

4 years agoMarking media/media-controls-drag-timeline-set-controls-property.html as flaky on...
ryanhaddad@apple.com [Mon, 26 Sep 2016 20:39:51 +0000 (20:39 +0000)]
Marking media/media-controls-drag-timeline-set-controls-property.html as flaky on Yosemite Debug WK2.
https://bugs.webkit.org/show_bug.cgi?id=161659

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

4 years agoASSERTION FAILED: m_origin || m_type == CachedResource::MainResource
commit-queue@webkit.org [Mon, 26 Sep 2016 20:19:36 +0000 (20:19 +0000)]
ASSERTION FAILED: m_origin || m_type == CachedResource::MainResource
https://bugs.webkit.org/show_bug.cgi?id=162472
<rdar://problem/28431522>

Patch by Youenn Fablet <youenn@apple.com> on 2016-09-26
Reviewed by Chris Dumez.

Covered by existing tests.

* loader/cache/CachedImage.cpp:
(WebCore::CachedImage::CachedImage): Fixing the last CachedImage constructor.
Using CachedResource protected constructor.
* loader/cache/CachedResource.h: Small clean-up.

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

4 years ago[GTK][EFL] imported/w3c/web-platform-tests/fetch/api/basic/accept-header.html is...
commit-queue@webkit.org [Mon, 26 Sep 2016 19:55:08 +0000 (19:55 +0000)]
[GTK][EFL] imported/w3c/web-platform-tests/fetch/api/basic/accept-header.html is failing
https://bugs.webkit.org/show_bug.cgi?id=162547

Patch by Youenn Fablet <youenn@apple.com> on 2016-09-26
Reviewed by Carlos Garcia Campos.

Covered by LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.html now passing.

* platform/network/soup/SoupNetworkSession.cpp:
(WebCore::SoupNetworkSession::createTestingSession): Setting a default Accept-Language value.

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

4 years agoAdded RETURN_IF_EXCEPTION() macro and use it for exception checks.
mark.lam@apple.com [Mon, 26 Sep 2016 19:11:17 +0000 (19:11 +0000)]
Added RETURN_IF_EXCEPTION() macro and use it for exception checks.
https://bugs.webkit.org/show_bug.cgi?id=162521

Reviewed by Saam Barati.

Source/JavaScriptCore:

Also, where possible, if the return type is JSValue, changed the returned value
(on exception) to the empty JSValue (instead of sometimes jsUndefined, jsNull,
or the thrown exception value).

There are a few places where I had to continue to return the previously returned
value (instead of the empty JSValue) in order for tests to pass.  This is needed
because there are missing exception checks that will need to be added before I
can change those to return the empty JSValue too.  Identifying all the places
where those checks need to be added is beyond the scope of this patch.  I will
work on adding missing exception checks in a subsequent patch.

In this patch, there is one missing exception check in replaceUsingRegExpSearch()
that was easily identified, and is necessary so that Interpreter::execute()
functions can return JSValue.  I've added this missing check.

This patch has passed the JSC and layout tests.

* dfg/DFGOperations.cpp:
(JSC::DFG::operationPutByValInternal):
* inspector/JSInjectedScriptHost.cpp:
(Inspector::JSInjectedScriptHost::evaluateWithScopeExtension):
(Inspector::JSInjectedScriptHost::getInternalProperties):
(Inspector::JSInjectedScriptHost::weakMapEntries):
(Inspector::JSInjectedScriptHost::weakSetEntries):
(Inspector::JSInjectedScriptHost::iteratorEntries):
* inspector/JSJavaScriptCallFrame.cpp:
(Inspector::JSJavaScriptCallFrame::evaluateWithScopeExtension):
* interpreter/Interpreter.cpp:
(JSC::eval):
(JSC::sizeOfVarargs):
(JSC::Interpreter::execute):
(JSC::Interpreter::executeCall):
(JSC::Interpreter::executeConstruct):
* interpreter/ShadowChicken.cpp:
(JSC::ShadowChicken::functionsOnStack):
* jit/JITOperations.cpp:
(JSC::getByVal):
* jsc.cpp:
(WTF::ImpureGetter::getOwnPropertySlot):
(functionRun):
(functionRunString):
(functionLoad):
(functionLoadString):
(functionReadFile):
(functionCheckSyntax):
(functionSetRandomSeed):
(functionLoadModule):
(functionCreateBuiltin):
(functionCheckModuleSyntax):
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::getByVal):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
* profiler/ProfilerBytecodeSequence.cpp:
(JSC::Profiler::BytecodeSequence::addSequenceProperties):
* profiler/ProfilerCompilation.cpp:
(JSC::Profiler::Compilation::toJS):
* profiler/ProfilerDatabase.cpp:
(JSC::Profiler::Database::toJS):
* profiler/ProfilerOSRExitSite.cpp:
(JSC::Profiler::OSRExitSite::toJS):
* profiler/ProfilerOriginStack.cpp:
(JSC::Profiler::OriginStack::toJS):
* runtime/ArrayPrototype.cpp:
(JSC::speciesConstructArray):
(JSC::shift):
(JSC::unshift):
(JSC::arrayProtoFuncToString):
(JSC::arrayProtoFuncToLocaleString):
(JSC::slowJoin):
(JSC::fastJoin):
(JSC::arrayProtoFuncJoin):
(JSC::arrayProtoFuncPop):
(JSC::arrayProtoFuncPush):
(JSC::arrayProtoFuncReverse):
(JSC::arrayProtoFuncShift):
(JSC::arrayProtoFuncSlice):
(JSC::arrayProtoFuncSplice):
(JSC::arrayProtoFuncUnShift):
(JSC::arrayProtoFuncIndexOf):
(JSC::arrayProtoFuncLastIndexOf):
(JSC::moveElements):
(JSC::arrayProtoPrivateFuncConcatMemcpy):
* runtime/BooleanConstructor.cpp:
(JSC::constructWithBooleanConstructor):
* runtime/CommonSlowPaths.h:
(JSC::CommonSlowPaths::opIn):
* runtime/Completion.cpp:
(JSC::loadAndEvaluateModule):
(JSC::loadModule):
* runtime/ConsoleObject.cpp:
(JSC::consoleProtoFuncAssert):
(JSC::consoleProtoFuncProfile):
(JSC::consoleProtoFuncProfileEnd):
(JSC::consoleProtoFuncTakeHeapSnapshot):
(JSC::consoleProtoFuncTime):
(JSC::consoleProtoFuncTimeEnd):
* runtime/DateConstructor.cpp:
(JSC::constructDate):
(JSC::dateParse):
* runtime/DatePrototype.cpp:
(JSC::dateProtoFuncToPrimitiveSymbol):
(JSC::dateProtoFuncToJSON):
* runtime/ErrorConstructor.cpp:
(JSC::Interpreter::constructWithErrorConstructor):
* runtime/ErrorInstance.cpp:
(JSC::ErrorInstance::sanitizedToString):
* runtime/ErrorPrototype.cpp:
(JSC::errorProtoFuncToString):
* runtime/ExceptionScope.h:
* runtime/FunctionConstructor.cpp:
(JSC::constructFunctionSkippingEvalEnabledCheck):
* runtime/GenericArgumentsInlines.h:
(JSC::GenericArguments<Type>::copyToArguments):
* runtime/GetterSetter.cpp:
(JSC::callGetter):
* runtime/HashMapImpl.h:
(JSC::jsMapHash):
(JSC::HashMapImpl::finishCreation):
(JSC::HashMapImpl::findBucket):
(JSC::HashMapImpl::add):
(JSC::HashMapImpl::rehash):
* runtime/InspectorInstrumentationObject.cpp:
(JSC::inspectorInstrumentationObjectLog):
* runtime/InternalFunction.cpp:
(JSC::InternalFunction::createSubclassStructure):
* runtime/IntlCollator.cpp:
(JSC::IntlCollator::initializeCollator):
* runtime/IntlCollatorConstructor.cpp:
(JSC::constructIntlCollator):
(JSC::IntlCollatorConstructorFuncSupportedLocalesOf):
* runtime/IntlCollatorPrototype.cpp:
(JSC::IntlCollatorFuncCompare):
(JSC::IntlCollatorPrototypeGetterCompare):
* runtime/IntlDateTimeFormat.cpp:
(JSC::toDateTimeOptionsAnyDate):
(JSC::IntlDateTimeFormat::initializeDateTimeFormat):
* runtime/IntlDateTimeFormatConstructor.cpp:
(JSC::constructIntlDateTimeFormat):
(JSC::IntlDateTimeFormatConstructorFuncSupportedLocalesOf):
* runtime/IntlDateTimeFormatPrototype.cpp:
(JSC::IntlDateTimeFormatFuncFormatDateTime):
(JSC::IntlDateTimeFormatPrototypeGetterFormat):
* runtime/IntlNumberFormat.cpp:
(JSC::IntlNumberFormat::initializeNumberFormat):
* runtime/IntlNumberFormatConstructor.cpp:
(JSC::constructIntlNumberFormat):
(JSC::IntlNumberFormatConstructorFuncSupportedLocalesOf):
* runtime/IntlNumberFormatPrototype.cpp:
(JSC::IntlNumberFormatFuncFormatNumber):
(JSC::IntlNumberFormatPrototypeGetterFormat):
* runtime/IntlObject.cpp:
(JSC::intlBooleanOption):
(JSC::intlStringOption):
(JSC::intlNumberOption):
(JSC::canonicalizeLocaleList):
(JSC::supportedLocales):
* runtime/IntlObjectInlines.h:
(JSC::constructIntlInstanceWithWorkaroundForLegacyIntlConstructor):
* runtime/IteratorOperations.cpp:
(JSC::iteratorNext):
(JSC::iteratorStep):
(JSC::iteratorClose):
(JSC::iteratorForIterable):
* runtime/IteratorOperations.h:
(JSC::forEachInIterable):
* runtime/JSArray.cpp:
(JSC::JSArray::pop):
(JSC::JSArray::copyToArguments):
* runtime/JSArrayBufferConstructor.cpp:
(JSC::constructArrayBuffer):
* runtime/JSArrayBufferPrototype.cpp:
(JSC::arrayBufferProtoFuncSlice):
* runtime/JSArrayInlines.h:
(JSC::getLength):
(JSC::toLength):
* runtime/JSBoundFunction.cpp:
(JSC::getBoundFunctionStructure):
(JSC::JSBoundFunction::create):
* runtime/JSCJSValue.cpp:
(JSC::JSValue::putToPrimitive):
(JSC::JSValue::toStringSlowCase):
* runtime/JSCJSValueInlines.h:
(JSC::toPreferredPrimitiveType):
(JSC::JSValue::getPropertySlot):
(JSC::JSValue::equalSlowCaseInline):
* runtime/JSDataViewPrototype.cpp:
(JSC::getData):
(JSC::setData):
* runtime/JSFunction.cpp:
(JSC::JSFunction::setFunctionName):
* runtime/JSGenericTypedArrayView.h:
(JSC::JSGenericTypedArrayView::setIndex):
* runtime/JSGenericTypedArrayViewConstructorInlines.h:
(JSC::constructGenericTypedArrayViewFromIterator):
(JSC::constructGenericTypedArrayViewWithArguments):
(JSC::constructGenericTypedArrayView):
* runtime/JSGenericTypedArrayViewPrototypeFunctions.h:
(JSC::speciesConstruct):
(JSC::genericTypedArrayViewProtoFuncSet):
(JSC::genericTypedArrayViewProtoFuncCopyWithin):
(JSC::genericTypedArrayViewProtoFuncIncludes):
(JSC::genericTypedArrayViewProtoFuncIndexOf):
(JSC::genericTypedArrayViewProtoFuncJoin):
(JSC::genericTypedArrayViewProtoFuncLastIndexOf):
(JSC::genericTypedArrayViewProtoFuncSlice):
(JSC::genericTypedArrayViewPrivateFuncSubarrayCreate):
* runtime/JSGlobalObject.h:
(JSC::constructEmptyArray):
(JSC::constructArray):
(JSC::constructArrayNegativeIndexed):
* runtime/JSGlobalObjectFunctions.cpp:
(JSC::globalFuncEval):
* runtime/JSModuleRecord.cpp:
(JSC::JSModuleRecord::instantiateDeclarations):
* runtime/JSONObject.cpp:
(JSC::Stringifier::stringify):
(JSC::Stringifier::toJSON):
(JSC::Stringifier::appendStringifiedValue):
(JSC::Stringifier::Holder::appendNextProperty):
(JSC::Walker::walk):
(JSC::JSONProtoFuncParse):
* runtime/JSObject.cpp:
(JSC::ordinarySetSlow):
(JSC::JSObject::setPrototypeWithCycleCheck):
(JSC::callToPrimitiveFunction):
(JSC::JSObject::defaultHasInstance):
(JSC::JSObject::getPropertyNames):
(JSC::JSObject::toNumber):
(JSC::JSObject::toString):
(JSC::JSObject::defineOwnNonIndexProperty):
(JSC::JSObject::getGenericPropertyNames):
(JSC::JSObject::getMethod):
* runtime/JSObjectInlines.h:
(JSC::createListFromArrayLike):
(JSC::JSObject::getPropertySlot):
(JSC::JSObject::getNonIndexPropertySlot):
* runtime/JSPromiseConstructor.cpp:
(JSC::constructPromise):
* runtime/JSPromiseDeferred.cpp:
(JSC::JSPromiseDeferred::create):
* runtime/JSPropertyNameEnumerator.h:
(JSC::propertyNameEnumerator):
* runtime/JSPropertyNameIterator.cpp:
(JSC::JSPropertyNameIterator::create):
* runtime/JSScope.cpp:
(JSC::isUnscopable):
* runtime/JSString.cpp:
(JSC::JSString::equalSlowCase):
* runtime/JSStringJoiner.cpp:
(JSC::JSStringJoiner::join):
* runtime/LiteralParser.cpp:
(JSC::LiteralParser<CharType>::parse):
* runtime/MapBase.h:
(JSC::MapBase::finishCreation):
* runtime/MapConstructor.cpp:
(JSC::constructMap):
* runtime/MathObject.cpp:
(JSC::mathProtoFuncClz32):
(JSC::mathProtoFuncHypot):
(JSC::mathProtoFuncIMul):
* runtime/ModuleLoaderPrototype.cpp:
(JSC::moduleLoaderPrototypeParseModule):
(JSC::moduleLoaderPrototypeRequestedModules):
(JSC::moduleLoaderPrototypeModuleDeclarationInstantiation):
* runtime/NativeErrorConstructor.cpp:
(JSC::Interpreter::constructWithNativeErrorConstructor):
* runtime/NumberConstructor.cpp:
(JSC::constructWithNumberConstructor):
* runtime/ObjectConstructor.cpp:
(JSC::constructObject):
(JSC::objectConstructorGetPrototypeOf):
(JSC::objectConstructorSetPrototypeOf):
(JSC::objectConstructorGetOwnPropertyDescriptor):
(JSC::objectConstructorGetOwnPropertyDescriptors):
(JSC::objectConstructorGetOwnPropertyNames):
(JSC::objectConstructorGetOwnPropertySymbols):
(JSC::objectConstructorKeys):
(JSC::ownEnumerablePropertyKeys):
(JSC::toPropertyDescriptor):
(JSC::objectConstructorDefineProperty):
(JSC::defineProperties):
(JSC::objectConstructorSeal):
(JSC::objectConstructorFreeze):
(JSC::objectConstructorIsSealed):
(JSC::objectConstructorIsFrozen):
(JSC::objectConstructorIsExtensible):
(JSC::ownPropertyKeys):
* runtime/ObjectConstructor.h:
(JSC::constructObjectFromPropertyDescriptor):
* runtime/ObjectPrototype.cpp:
(JSC::objectProtoFuncHasOwnProperty):
(JSC::objectProtoFuncIsPrototypeOf):
(JSC::objectProtoFuncDefineGetter):
(JSC::objectProtoFuncDefineSetter):
(JSC::objectProtoFuncLookupGetter):
(JSC::objectProtoFuncLookupSetter):
(JSC::objectProtoFuncPropertyIsEnumerable):
(JSC::objectProtoFuncToLocaleString):
(JSC::objectProtoFuncToString):
* runtime/Operations.cpp:
(JSC::jsAddSlowCase):
* runtime/PropertyDescriptor.cpp:
(JSC::PropertyDescriptor::slowGetterSetter):
* runtime/ProxyConstructor.cpp:
(JSC::makeRevocableProxy):
* runtime/ProxyObject.cpp:
(JSC::performProxyGet):
(JSC::ProxyObject::performGet):
(JSC::ProxyObject::performInternalMethodGetOwnProperty):
(JSC::ProxyObject::performHasProperty):
(JSC::ProxyObject::performPut):
(JSC::ProxyObject::putByIndexCommon):
(JSC::performProxyCall):
(JSC::performProxyConstruct):
(JSC::ProxyObject::performDelete):
(JSC::ProxyObject::performPreventExtensions):
(JSC::ProxyObject::performIsExtensible):
(JSC::ProxyObject::performDefineOwnProperty):
(JSC::ProxyObject::performGetOwnPropertyNames):
(JSC::ProxyObject::performSetPrototype):
(JSC::ProxyObject::performGetPrototype):
* runtime/ReflectObject.cpp:
(JSC::reflectObjectConstruct):
(JSC::reflectObjectDefineProperty):
(JSC::reflectObjectGet):
(JSC::reflectObjectGetOwnPropertyDescriptor):
(JSC::reflectObjectIsExtensible):
(JSC::reflectObjectPreventExtensions):
(JSC::reflectObjectSet):
(JSC::reflectObjectSetPrototypeOf):
* runtime/RegExpConstructor.cpp:
(JSC::toFlags):
(JSC::regExpCreate):
(JSC::constructRegExp):
* runtime/RegExpConstructor.h:
(JSC::isRegExp):
* runtime/RegExpObject.cpp:
(JSC::collectMatches):
(JSC::RegExpObject::matchGlobal):
* runtime/RegExpPrototype.cpp:
(JSC::regExpProtoFuncCompile):
(JSC::flagsString):
(JSC::regExpProtoFuncToString):
(JSC::regExpProtoGetterFlags):
(JSC::regExpProtoFuncSearchFast):
(JSC::regExpProtoFuncSplitFast):
* runtime/SetConstructor.cpp:
(JSC::constructSet):
* runtime/StringConstructor.cpp:
(JSC::stringFromCodePoint):
(JSC::constructWithStringConstructor):
* runtime/StringObject.cpp:
(JSC::StringObject::defineOwnProperty):
* runtime/StringPrototype.cpp:
(JSC::replaceUsingRegExpSearch):
(JSC::operationStringProtoFuncReplaceRegExpEmptyStr):
(JSC::replaceUsingStringSearch):
(JSC::replace):
(JSC::stringProtoFuncReplaceUsingRegExp):
(JSC::stringProtoFuncReplaceUsingStringSearch):
(JSC::stringProtoFuncCodePointAt):
(JSC::stringProtoFuncSlice):
(JSC::stringProtoFuncSplitFast):
(JSC::stringProtoFuncSubstr):
(JSC::stringProtoFuncSubstring):
(JSC::stringProtoFuncLocaleCompare):
(JSC::toLocaleCase):
(JSC::stringProtoFuncBig):
(JSC::stringProtoFuncSmall):
(JSC::stringProtoFuncBlink):
(JSC::stringProtoFuncBold):
(JSC::stringProtoFuncFixed):
(JSC::stringProtoFuncItalics):
(JSC::stringProtoFuncStrike):
(JSC::stringProtoFuncSub):
(JSC::stringProtoFuncSup):
(JSC::stringProtoFuncFontcolor):
(JSC::stringProtoFuncFontsize):
(JSC::stringProtoFuncAnchor):
(JSC::stringProtoFuncLink):
(JSC::trimString):
(JSC::stringProtoFuncStartsWith):
(JSC::stringProtoFuncEndsWith):
(JSC::stringIncludesImpl):
(JSC::stringProtoFuncIncludes):
(JSC::builtinStringIncludesInternal):
(JSC::stringProtoFuncNormalize):
* runtime/SymbolConstructor.cpp:
(JSC::symbolConstructorFor):
* runtime/TemplateRegistry.cpp:
(JSC::TemplateRegistry::getTemplateObject):
* runtime/WeakMapConstructor.cpp:
(JSC::constructWeakMap):
* runtime/WeakSetConstructor.cpp:
(JSC::constructWeakSet):
* tools/JSDollarVMPrototype.cpp:
(JSC::functionPrint):

Source/WebCore:

No new tests because this patch is mostly refactoring.  The only change in
behavior is that functions that have a JSValue return type will now return the
empty JSValue when an exception is thrown.  I tested this behavior by running
the existing JSC and layout tests.

* bindings/js/ArrayValue.cpp:
(WebCore::ArrayValue::get):
* bindings/js/IDBBindingUtilities.cpp:
(WebCore::toJS):
* bindings/js/JSApplePaySessionCustom.cpp:
(WebCore::JSApplePaySession::completeShippingMethodSelection):
(WebCore::JSApplePaySession::completeShippingContactSelection):
(WebCore::JSApplePaySession::completePaymentMethodSelection):
* bindings/js/JSAudioTrackCustom.cpp:
(WebCore::JSAudioTrack::setKind):
(WebCore::JSAudioTrack::setLanguage):
* bindings/js/JSBlobCustom.cpp:
(WebCore::constructJSBlob):
* bindings/js/JSCSSStyleDeclarationCustom.cpp:
(WebCore::JSCSSStyleDeclaration::getPropertyCSSValue):
* bindings/js/JSCommandLineAPIHostCustom.cpp:
(WebCore::getJSListenerFunctions):
* bindings/js/JSCryptoAlgorithmDictionary.cpp:
(WebCore::JSCryptoAlgorithmDictionary::getAlgorithmIdentifier):
(WebCore::getHashAlgorithm):
(WebCore::createAesCbcParams):
(WebCore::createAesKeyGenParams):
(WebCore::createHmacKeyParams):
(WebCore::createRsaKeyGenParams):
(WebCore::createRsaOaepParams):
* bindings/js/JSCryptoKeySerializationJWK.cpp:
(WebCore::getStringFromJSON):
(WebCore::JSCryptoKeySerializationJWK::reconcileUsages):
(WebCore::JSCryptoKeySerializationJWK::keyDataRSAComponents):
(WebCore::buildJSONForRSAComponents):
(WebCore::addUsagesToJSON):
(WebCore::JSCryptoKeySerializationJWK::serialize):
* bindings/js/JSCustomElementInterface.cpp:
(WebCore::constructCustomElementSynchronously):
(WebCore::JSCustomElementInterface::upgradeElement):
* bindings/js/JSCustomElementRegistryCustom.cpp:
(WebCore::getCustomElementCallback):
(WebCore::JSCustomElementRegistry::define):
(WebCore::whenDefinedPromise):
* bindings/js/JSDOMBinding.cpp:
(WebCore::valueToUSVString):
(WebCore::hasIteratorMethod):
(WebCore::toSmallerInt):
(WebCore::toSmallerUInt):
(WebCore::toInt32EnforceRange):
(WebCore::toUInt32EnforceRange):
(WebCore::toInt64EnforceRange):
(WebCore::toUInt64EnforceRange):
* bindings/js/JSDOMBinding.h:
(WebCore::toJSSequence):
(WebCore::toJS):
(WebCore::jsFrozenArray):
* bindings/js/JSDOMPromise.cpp:
(WebCore::rejectPromiseWithExceptionIfAny):
* bindings/js/JSDOMStringMapCustom.cpp:
(WebCore::JSDOMStringMap::putDelegate):
* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::JSDOMWindow::setLocation):
(WebCore::JSDOMWindow::open):
(WebCore::JSDOMWindow::showModalDialog):
(WebCore::handlePostMessage):
(WebCore::JSDOMWindow::setTimeout):
(WebCore::JSDOMWindow::setInterval):
* bindings/js/JSDataCueCustom.cpp:
(WebCore::constructJSDataCue):
* bindings/js/JSDeviceMotionEventCustom.cpp:
(WebCore::readAccelerationArgument):
(WebCore::readRotationRateArgument):
(WebCore::JSDeviceMotionEvent::initDeviceMotionEvent):
* bindings/js/JSDictionary.cpp:
(WebCore::JSDictionary::tryGetProperty):
(WebCore::JSDictionary::convertValue):
* bindings/js/JSDictionary.h:
(WebCore::JSDictionary::tryGetPropertyAndResult):
* bindings/js/JSDocumentCustom.cpp:
(WebCore::JSDocument::getCSSCanvasContext):
* bindings/js/JSFileCustom.cpp:
(WebCore::constructJSFile):
* bindings/js/JSGeolocationCustom.cpp:
(WebCore::JSGeolocation::getCurrentPosition):
(WebCore::JSGeolocation::watchPosition):
* bindings/js/JSHTMLAllCollectionCustom.cpp:
(WebCore::callHTMLAllCollection):
* bindings/js/JSHTMLCanvasElementCustom.cpp:
(WebCore::JSHTMLCanvasElement::getContext):
* bindings/js/JSHTMLElementCustom.cpp:
(WebCore::constructJSHTMLElement):
* bindings/js/JSHistoryCustom.cpp:
(WebCore::JSHistory::pushState):
(WebCore::JSHistory::replaceState):
* bindings/js/JSIDBDatabaseCustom.cpp:
(WebCore::JSIDBDatabase::createObjectStore):
* bindings/js/JSMessageEventCustom.cpp:
(WebCore::handleInitMessageEvent):
* bindings/js/JSMessagePortCustom.cpp:
(WebCore::fillMessagePortArray):
* bindings/js/JSMessagePortCustom.h:
(WebCore::handlePostMessage):
* bindings/js/JSMockContentFilterSettingsCustom.cpp:
(WebCore::JSMockContentFilterSettings::setDecisionPoint):
(WebCore::toDecision):
(WebCore::JSMockContentFilterSettings::setDecision):
(WebCore::JSMockContentFilterSettings::setUnblockRequestDecision):
* bindings/js/JSNodeFilterCustom.cpp:
(WebCore::JSNodeFilter::acceptNode):
* bindings/js/JSNodeOrString.cpp:
(WebCore::toNodeOrStringVector):
* bindings/js/JSSQLTransactionCustom.cpp:
(WebCore::JSSQLTransaction::executeSql):
* bindings/js/JSSVGLengthCustom.cpp:
(WebCore::JSSVGLength::convertToSpecifiedUnits):
* bindings/js/JSStorageCustom.cpp:
(WebCore::JSStorage::getOwnPropertyNames):
* bindings/js/JSTextTrackCustom.cpp:
(WebCore::JSTextTrack::setLanguage):
* bindings/js/JSVideoTrackCustom.cpp:
(WebCore::JSVideoTrack::setKind):
(WebCore::JSVideoTrack::setLanguage):
* bindings/js/JSWebGL2RenderingContextCustom.cpp:
(WebCore::JSWebGL2RenderingContext::getIndexedParameter):
* bindings/js/JSWebGLRenderingContextBaseCustom.cpp:
(WebCore::getObjectParameter):
(WebCore::JSWebGLRenderingContextBase::getExtension):
(WebCore::JSWebGLRenderingContextBase::getFramebufferAttachmentParameter):
(WebCore::JSWebGLRenderingContextBase::getParameter):
(WebCore::JSWebGLRenderingContextBase::getProgramParameter):
(WebCore::JSWebGLRenderingContextBase::getShaderParameter):
(WebCore::toVector):
(WebCore::dataFunctionf):
(WebCore::dataFunctionMatrix):
* bindings/js/JSWebKitSubtleCryptoCustom.cpp:
(WebCore::cryptoKeyFormatFromJSValue):
(WebCore::cryptoKeyUsagesFromJSValue):
(WebCore::JSWebKitSubtleCrypto::generateKey):
(WebCore::importKey):
(WebCore::JSWebKitSubtleCrypto::importKey):
(WebCore::exportKey):
(WebCore::JSWebKitSubtleCrypto::exportKey):
(WebCore::JSWebKitSubtleCrypto::unwrapKey):
* bindings/js/JSWorkerCustom.cpp:
(WebCore::constructJSWorker):
* bindings/js/JSWorkerGlobalScopeCustom.cpp:
(WebCore::JSWorkerGlobalScope::importScripts):
(WebCore::JSWorkerGlobalScope::setTimeout):
(WebCore::JSWorkerGlobalScope::setInterval):
* bindings/js/ReadableStreamDefaultController.cpp:
(WebCore::ReadableStreamDefaultController::invoke):
* bindings/js/ScheduledAction.cpp:
(WebCore::ScheduledAction::create):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateDictionaryImplementationContent):
(GenerateImplementation):
(GenerateParametersCheck):
(GenerateImplementationFunctionCall):
(GenerateConstructorDefinition):
* html/HTMLMediaElement.cpp:
(WebCore::controllerJSValue):
(WebCore::HTMLMediaElement::updateMediaControlsAfterPresentationModeChange):
(WebCore::HTMLMediaElement::getCurrentMediaControlsStatus):

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

4 years ago-Wtautological-compare triggered in URLParser::internalValuesConsistent
mcatanzaro@igalia.com [Mon, 26 Sep 2016 19:09:03 +0000 (19:09 +0000)]
-Wtautological-compare triggered in URLParser::internalValuesConsistent
https://bugs.webkit.org/show_bug.cgi?id=162551

Reviewed by Alex Christensen.

Fix logic error.

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

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

4 years ago[cmake] Added an option to disable thin archives when they are undesirable.
annulen@yandex.ru [Mon, 26 Sep 2016 18:57:32 +0000 (18:57 +0000)]
[cmake] Added an option to disable thin archives when they are undesirable.
https://bugs.webkit.org/show_bug.cgi?id=162561

Reviewed by Michael Catanzaro.

* Source/cmake/OptionsCommon.cmake: Added USE_THIN_ARCHIVES option.

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

4 years agoAdd CairoUniquePtr and use it in FontPlatformDataFreetype.cpp
mcatanzaro@igalia.com [Mon, 26 Sep 2016 18:57:21 +0000 (18:57 +0000)]
Add CairoUniquePtr and use it in FontPlatformDataFreetype.cpp
https://bugs.webkit.org/show_bug.cgi?id=162557

Reviewed by Alex Christensen.

* platform/graphics/cairo/CairoUniquePtr.h: Added.
(WebCore::CairoPtrDeleter<cairo_font_options_t>::operator()):
* platform/graphics/freetype/FontPlatformDataFreeType.cpp:
(WebCore::getDefaultCairoFontOptions): Return a smart pointer.
(WebCore::FontPlatformData::buildScaledFont): Use smart pointer.

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

4 years ago[GTK] TestContextMenu is failing
commit-queue@webkit.org [Mon, 26 Sep 2016 18:55:57 +0000 (18:55 +0000)]
[GTK] TestContextMenu is failing
https://bugs.webkit.org/show_bug.cgi?id=162569

We cannot use the MP3 file in the TestContextMenu, as it will not work
by default on most distributions (that don't have an MP3 codecs
installed). Change the test to use OGG file instead.

Patch by Tomas Popela <tpopela@redhat.com> on 2016-09-26
Reviewed by Michael Catanzaro.

* TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp:
(testContextMenuDefaultMenu):

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

4 years agoSilence unused parameter warnings from Geoclue2Interface.c
mcatanzaro@igalia.com [Mon, 26 Sep 2016 18:41:57 +0000 (18:41 +0000)]
Silence unused parameter warnings from Geoclue2Interface.c
https://bugs.webkit.org/show_bug.cgi?id=162545

Reviewed by Carlos Garcia Campos.

* PlatformGTK.cmake:

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

4 years agoAvoid implicit conversion from iterator to pointer
commit-queue@webkit.org [Mon, 26 Sep 2016 18:17:47 +0000 (18:17 +0000)]
Avoid implicit conversion from iterator to pointer
https://bugs.webkit.org/show_bug.cgi?id=162482

Patch by Yoshiaki Jitsukawa <Yoshiaki.Jitsukawa@sony.com> on 2016-09-26
Reviewed by Geoffrey Garen.

Not every STL supporting such conversion, we should get a pointer explicitly.

* bmalloc/Chunk.h:
(bmalloc::Chunk::lines):
(bmalloc::Chunk::pages):
* bmalloc/FixedVector.h:
(bmalloc::FixedVector::begin):

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

4 years ago[JSC] Allow fixedExecutableMemoryPoolSize to be set during build
annulen@yandex.ru [Mon, 26 Sep 2016 18:09:51 +0000 (18:09 +0000)]
[JSC] Allow fixedExecutableMemoryPoolSize to be set during build
https://bugs.webkit.org/show_bug.cgi?id=162514

Patch by Don Olmstead <don.olmstead@am.sony.com> on 2016-09-26
Reviewed by Mark Lam.

* jit/ExecutableAllocator.h:

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

4 years agoUsing char16_t instead of wchar_t in TestWebKitAPI URLParser tests
utatane.tea@gmail.com [Mon, 26 Sep 2016 17:07:38 +0000 (17:07 +0000)]
Using char16_t instead of wchar_t in TestWebKitAPI URLParser tests
https://bugs.webkit.org/show_bug.cgi?id=162537

Reviewed by Alex Christensen.

Some build bot (Linux ARM GTK port) fails since we cannot select
the specific StringBuilder::append method for wchar_t.

wchar_t implementation highly depends on platforms. sizeof(wchar_t) == 2
in Windows, while sizeof(wchar_t) == 4 in Linux and OS X. So, ICU
uses wchar_t for UChar (UTF-16) in Windows while it doesn't in other
platforms.

StringBuilder::append is overloaded for UChar. In Windows, we can pass
wchar_t since UChar is wchar_t. However, we cannot do that in other platforms.

Instead of using wchar_t, we use more platform portable UTF-16 literal for
testing. Use char16_t and C++11 UTF-16 literal.

* TestWebKitAPI/Tests/WebCore/URLParser.cpp:
(TestWebKitAPI::utf16String):
(TestWebKitAPI::TEST_F):
(TestWebKitAPI::wideString): Deleted.

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

4 years agostd::unique_ptr deleter functions should not check if pointer is null
mcatanzaro@igalia.com [Mon, 26 Sep 2016 16:40:38 +0000 (16:40 +0000)]
std::unique_ptr deleter functions should not check if pointer is null
https://bugs.webkit.org/show_bug.cgi?id=162558

Reviewed by Alex Christensen.

std::unique_ptr already does this before calling the deleter.

Source/WebCore:

* platform/graphics/x11/XUniquePtr.h:
(WebCore::XPtrDeleter::operator()):
(WebCore::XPtrDeleter<XImage>::operator()):
(WebCore::XPtrDeleter<_XGC>::operator()):
(WebCore::XPtrDeleter<__GLXcontextRec>::operator()):

Source/WTF:

* wtf/efl/UniquePtrEfl.h:
* wtf/glib/GUniquePtr.h:

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

4 years agoFix -Wformat warnings in WebLoaderStrategy
mcatanzaro@igalia.com [Mon, 26 Sep 2016 15:25:01 +0000 (15:25 +0000)]
Fix -Wformat warnings in WebLoaderStrategy
https://bugs.webkit.org/show_bug.cgi?id=162553

Reviewed by Alex Christensen.

Consistently use PRIu64 to print uint64_t

* NetworkProcess/Downloads/Download.cpp:
(WebKit::Download::didReceiveResponse):
(WebKit::Download::didReceiveData):
(WebKit::Download::didFinish):
(WebKit::Download::didFail):
(WebKit::Download::didCancel):
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::start):
(WebKit::NetworkResourceLoader::startNetworkLoad):
(WebKit::NetworkResourceLoader::setDefersLoading):
(WebKit::NetworkResourceLoader::abort):
(WebKit::NetworkResourceLoader::didReceiveBuffer):
(WebKit::NetworkResourceLoader::didFinishLoading):
(WebKit::NetworkResourceLoader::didFailLoading):
(WebKit::NetworkResourceLoader::continueWillSendRequest):
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoad):
* WebProcess/Network/WebResourceLoader.cpp:
(WebKit::WebResourceLoader::willSendRequest):
(WebKit::WebResourceLoader::didReceiveResponse):
(WebKit::WebResourceLoader::didReceiveData):
(WebKit::WebResourceLoader::didFinishResourceLoad):
(WebKit::WebResourceLoader::didFailResourceLoad):
(WebKit::WebResourceLoader::didReceiveResource):

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

4 years ago[Win][Debug] Compile fix.
pvollan@apple.com [Mon, 26 Sep 2016 15:23:19 +0000 (15:23 +0000)]
[Win][Debug] Compile fix.
https://bugs.webkit.org/show_bug.cgi?id=162550

Reviewed by Alex Christensen.

Windows headers need the FragmentForwardIterator '==' operator in debug mode.

* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::FragmentForwardIterator::operator==):

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

4 years agoSkip stress/string-joining-long-strings-should-not-crash.js on memory limited devices
commit-queue@webkit.org [Mon, 26 Sep 2016 14:26:55 +0000 (14:26 +0000)]
Skip stress/string-joining-long-strings-should-not-crash.js on memory limited devices
https://bugs.webkit.org/show_bug.cgi?id=162386

Unreviewed, relanding r206317 after typo fix.

Patch by Csaba Osztrogonác <oszi@inf.u-szeged.hu> on 2016-09-26

* stress/string-joining-long-strings-should-not-crash.js:

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

4 years ago[GTK] Unnecessary extern functions in FontPlatformDataFreeType.cpp
mcatanzaro@igalia.com [Mon, 26 Sep 2016 14:17:58 +0000 (14:17 +0000)]
[GTK] Unnecessary extern functions in FontPlatformDataFreeType.cpp
https://bugs.webkit.org/show_bug.cgi?id=162555

Reviewed by Carlos Garcia Campos.

These functions should be file-static.

* platform/graphics/freetype/FontPlatformDataFreeType.cpp:
(WebCore::convertFontConfigSubpixelOrder):
(WebCore::convertFontConfigHintStyle):
(WebCore::setCairoFontOptionsFromFontConfigPattern):

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

4 years ago== Rolled over to ChangeLog-2016-09-26 ==
mcatanzaro@igalia.com [Mon, 26 Sep 2016 13:42:33 +0000 (13:42 +0000)]
== Rolled over to ChangeLog-2016-09-26 ==

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

4 years agoFix -Wformat warnings in WebLoaderStrategy
mcatanzaro@igalia.com [Mon, 26 Sep 2016 11:54:23 +0000 (11:54 +0000)]
Fix -Wformat warnings in WebLoaderStrategy
https://bugs.webkit.org/show_bug.cgi?id=162553

Unreviewed

Two of the format arguments are swapped. Fix them.

* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoad):

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

4 years agoASSERTION FAILED: m_origin || m_type == CachedResource::MainResource
commit-queue@webkit.org [Mon, 26 Sep 2016 11:46:52 +0000 (11:46 +0000)]
ASSERTION FAILED: m_origin || m_type == CachedResource::MainResource
https://bugs.webkit.org/show_bug.cgi?id=162472
<rdar://problem/28431522>

Patch by Youenn Fablet <youenn@apple.com> on 2016-09-26
Reviewed by Darin Adler.

No change of behavior.

Introducing a new CachedResource constructor for already loaded resources.
Sharing code with the other constructor in the init method.
The main difference with this new constructor is that the resource has no specified origin.
The response tainting remains Basic.

Making some additional code clean-up.

* loader/cache/CachedImage.cpp:
(WebCore::CachedImage::CachedImage): Making use of the new constructor.
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::CachedResource):
(WebCore::CachedResource::finishRequestInitialization):
* loader/cache/CachedResource.h:
(WebCore::CachedResource::type):

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

4 years ago[GStreamer] Support flipY for GPU-to-GPU copy of video textures to WebGL
commit-queue@webkit.org [Mon, 26 Sep 2016 10:20:48 +0000 (10:20 +0000)]
[GStreamer] Support flipY for GPU-to-GPU copy of video textures to WebGL
https://bugs.webkit.org/show_bug.cgi?id=162491

Patch by Olivier Blin <olivier.blin@softathome.com> on 2016-09-26
Reviewed by Philippe Normand.

GPU-GPU copy of video textures to WebGL has been added for
GStreamer in bug 159928. It did not handle textures with inverted
Y, and thus copy to such textures was not accelerated.

This occurs with THREE.js which defaults to flipY for textures.
It can be tested on http://flimshaw.github.io/Valiant360/

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

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

4 years agoRegression(r206356): Caused crashes for !NETWORK_SESSION code path
cdumez@apple.com [Mon, 26 Sep 2016 05:35:55 +0000 (05:35 +0000)]
Regression(r206356): Caused crashes for !NETWORK_SESSION code path
https://bugs.webkit.org/show_bug.cgi?id=162541

Reviewed by Alexey Proskuryakov.

After r206356, if Download is downloading a Blob instead of doing a
network load, then m_resourceHandle / m_downloadClient are used to do
the download. This broke some assumptions on Mac because the
NETWORK_SESSION code path assumed it was relying on m_download and the
!NETWORK_SESSION code path assumed it was using m_nsURLDownload /
m_delegate.

This patch refactors the code so that:
- The Download destructor now takes care of invalidating
  m_resourceHandle and m_downloadClient before calling
  platformInvalidate(). For the SOUP code path,
  platformInvalidate() no longer needs to do anything
  because SOUP uses m_resourceHandle / m_downloadClient
  only. For the Mac !NETWORK_SESSION code path, we keep
  invalidating m_nsURLDownload / m_delegate but we no
  longer assume that those are initialized (given that
  they are not when downloading a blob). Other
  platforms do nothing in platformInvalidate() at the
  moment.
- Download::cancel() now takes care of cancelling the
  download if we're downloading a blob. Otherwise, we
  call the platform specific cancelNetworkLoad(). This
  is the same pattern that is used for start() /
  startNetworkLoad().

* NetworkProcess/Downloads/BlobDownloadClient.cpp:
(WebKit::BlobDownloadClient::didCancel):
* NetworkProcess/Downloads/BlobDownloadClient.h:
* NetworkProcess/Downloads/Download.cpp:
(WebKit::Download::~Download):
(WebKit::Download::cancel):
* NetworkProcess/Downloads/Download.h:
* NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:
(WebKit::Download::cancelNetworkLoad):
(WebKit::Download::cancel): Deleted.
* NetworkProcess/Downloads/ios/DownloadIOS.mm:
(WebKit::Download::cancelNetworkLoad):
(WebKit::Download::cancel): Deleted.
* NetworkProcess/Downloads/mac/DownloadMac.mm:
(WebKit::Download::cancelNetworkLoad):
(WebKit::Download::platformInvalidate):
(WebKit::Download::cancel): Deleted.
* NetworkProcess/Downloads/soup/DownloadSoup.cpp:
(WebKit::Download::cancelNetworkLoad):
(WebKit::Download::platformInvalidate):
(WebKit::Download::cancel): Deleted.

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

4 years agoUnviewed, skip slow web-platform test in Debug builds
cdumez@apple.com [Mon, 26 Sep 2016 03:57:40 +0000 (03:57 +0000)]
Unviewed, skip slow web-platform test in Debug builds

The following test is slow and frequently times out for Debug builds:
imported/w3c/web-platform-tests/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support.htm

* TestExpectations:

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

4 years agoUnreviewed, mark fast/dom/HTMLAnchorElement/anchor-download.html as flaky on WK2.
cdumez@apple.com [Mon, 26 Sep 2016 03:22:29 +0000 (03:22 +0000)]
Unreviewed, mark fast/dom/HTMLAnchorElement/anchor-download.html as flaky on WK2.

* platform/mac-wk2/TestExpectations:

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

4 years ago[EFL] Adjust EFL indentation to EFL MiniBrowser
gyuyoung.kim@webkit.org [Mon, 26 Sep 2016 03:22:02 +0000 (03:22 +0000)]
[EFL] Adjust EFL indentation to EFL MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=162542

Unreviewed, EFL simple coding style fix.

Some functions wasn't applied EFL coding style in prefix fix.

* MiniBrowser/efl/main.c:
(_key_down_cb):
(view_focus_set):
(_mouse_down_cb):
(title_set):
(_title_changed_cb):
(_url_changed_cb):
(_back_forward_list_changed_cb):
(_progress_cb):
(_error_cb):
(_download_request_cb):
(close_file_picker):
(_filepicker_parent_deletion_cb):
(_filepicker_deletion_cb):
(_fileselector_done_cb):
(_file_chooser_request_cb):
(_download_finished_cb):
(_download_failed_cb):
(_color_changed_cb):
(_color_item_selected_cb):
(_color_picker_ok_clicked_cb):
(_color_picker_cancel_clicked_cb):
(_color_picker_dismiss_cb):
(_color_picker_request_cb):
(quit):
(has_scheme):
(url_from_user_input):
(url_load_from_user_input):
(_url_bar_activated_cb):
(_url_bar_clicked_cb):
(_search_field_aborted_cb):
(_search_field_activated_cb):
(_search_field_clicked_cb):
(_back_button_clicked_cb):
(_forward_button_clicked_cb):
(_search_backward_button_clicked_cb):
(_search_forward_button_clicked_cb):
(_search_case_option_changed):
(_search_word_start_option_changed_cb):
(_search_close_button_clicked_cb):
(_refresh_button_clicked_cb):
(_stop_button_clicked_cb):
(list_item_label_get):
(_list_item_select_cb):
(navigation_button_longpress_process):
(_forward_button_longpress_cb):
(_back_button_longpress_cb):
(quit_event_loop):
(_ok_clicked_cb):
(_file_entry_dialog_show):

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

4 years agoWeb Inspector: REGRESSION (r203437): DOM not updated when editing Box Model values...
mattbaker@apple.com [Sun, 25 Sep 2016 17:28:07 +0000 (17:28 +0000)]
Web Inspector: REGRESSION (r203437): DOM not updated when editing Box Model values (border, margin, etc)
https://bugs.webkit.org/show_bug.cgi?id=162522
<rdar://problem/28458203>

Reviewed by Brian Burg.

* UserInterface/Views/BoxModelDetailsSectionRow.js:
(WebInspector.BoxModelDetailsSectionRow.prototype._refresh):
(WebInspector.BoxModelDetailsSectionRow.prototype._highlightDOMNode):
(WebInspector.BoxModelDetailsSectionRow.prototype._editingEnded):
Drive-by style fix for `delete`. Also removed unused properties.
(WebInspector.BoxModelDetailsSectionRow.prototype._applyUserInput.resolvedNode.toggleInlineStyleProperty):
Use priority "important" instead of "!important".

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

4 years ago[GTK] German translation update
mcatanzaro@igalia.com [Sun, 25 Sep 2016 16:45:02 +0000 (16:45 +0000)]
[GTK] German translation update
https://bugs.webkit.org/show_bug.cgi?id=152228

Patch by Benedikt M. Thoma <gnome@thomba.net> on 2016-09-25
Rubber-stamped by Michael Catanzaro.

* de.po:

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

4 years agoAuthorStyleSheets shouldn't trigger synchronous style resolutions
antti@apple.com [Sun, 25 Sep 2016 13:32:24 +0000 (13:32 +0000)]
AuthorStyleSheets shouldn't trigger synchronous style resolutions
https://bugs.webkit.org/show_bug.cgi?id=162532

Reviewed by Darin Adler.

Source/WebCore:

AuthorStyleSheets::didChange() took four different enum values, two of which triggered
a synchronous style resolution. This is almost always unnecessary as any subsequent
call that requires up-to-date style or layout will perform it. In the few cases where
it is actually needed the client can just do it manually.

The patch also replaces the remaining two enum values with functions:

    void didChangeCandidatesForActiveSet();
    void didChangeContentsOrInterpretation();

The first indicates that the set of active stylesheets might have changed and needs to be recomputed.
The seconds one indicates that either the content of some stylesheet has changed or that the environment
where we interpret the sheets has somehow changed.

The existing "AsNeeded" values map to didChangeCandidatesForActiveSet() and the rest map to
didChangeContentsOrInterpretation(). This also makes it obvious that some call sites use the wrong value.
The patch doesn't address these cases.

* css/CSSStyleSheet.cpp:
(WebCore::CSSStyleSheet::didMutateRules):
(WebCore::CSSStyleSheet::didMutate):
(WebCore::CSSStyleSheet::clearOwnerNode):
* dom/AuthorStyleSheets.cpp:
(WebCore::AuthorStyleSheets::AuthorStyleSheets):
(WebCore::AuthorStyleSheets::analyzeStyleSheetChange):
(WebCore::AuthorStyleSheets::updateActiveStyleSheets):
(WebCore::AuthorStyleSheets::flushPendingChanges):
(WebCore::AuthorStyleSheets::scheduleActiveSetChange):
(WebCore::AuthorStyleSheets::didChange):
(WebCore::AuthorStyleSheets::pendingChangeTimerFired):
(WebCore::AuthorStyleSheets::flushPendingUpdates): Deleted.
(WebCore::AuthorStyleSheets::scheduleOptimizedUpdate): Deleted.
(WebCore::AuthorStyleSheets::optimizedUpdateTimerFired): Deleted.
* dom/AuthorStyleSheets.h:
(WebCore::AuthorStyleSheets::hasPendingUpdate):
* dom/Document.cpp:
(WebCore::Document::setContentLanguage):
(WebCore::Document::recalcStyle):
(WebCore::Document::updateStyleIfNeeded):
(WebCore::Document::updateLayoutIgnorePendingStylesheets):
(WebCore::Document::didRemoveAllPendingStylesheet):
(WebCore::Document::usesStyleBasedEditability):
(WebCore::Document::processHttpEquiv):
(WebCore::Document::setSelectedStylesheetSet):
* dom/ExtensionStyleSheets.cpp:
(WebCore::ExtensionStyleSheets::clearPageUserSheet):
(WebCore::ExtensionStyleSheets::updatePageUserSheet):
(WebCore::ExtensionStyleSheets::invalidateInjectedStyleSheetCache):
(WebCore::ExtensionStyleSheets::addUserStyleSheet):
(WebCore::ExtensionStyleSheets::addAuthorStyleSheetForTesting):
(WebCore::ExtensionStyleSheets::styleResolverChangedTimerFired):
* dom/InlineStyleSheetOwner.cpp:
(WebCore::InlineStyleSheetOwner::removedFromDocument):
* dom/ProcessingInstruction.cpp:
(WebCore::ProcessingInstruction::removedFrom):
* dom/ShadowRoot.cpp:
(WebCore::ShadowRoot::updateStyle):
* html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::setDisabledState):
(WebCore::HTMLLinkElement::parseAttribute):
(WebCore::HTMLLinkElement::process):
(WebCore::HTMLLinkElement::removedFrom):
(WebCore::HTMLLinkElement::removePendingSheet):
* html/HTMLStyleElement.cpp:
(WebCore::HTMLStyleElement::parseAttribute):
* inspector/InspectorCSSAgent.cpp:
(WebCore::InspectorCSSAgent::forcePseudoState):
(WebCore::InspectorCSSAgent::resetPseudoStates):
* inspector/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::setEmulatedMedia):
* page/Frame.cpp:
(WebCore::Frame::setPrinting):
* page/FrameView.cpp:
(WebCore::FrameView::layout):
(WebCore::FrameView::setPagination):
(WebCore::FrameView::setViewportSizeForCSSViewportUnits):
* page/Page.cpp:
(WebCore::Page::setViewMode):
(WebCore::Page::setNeedsRecalcStyleInAllFrames):
(WebCore::Page::invalidateInjectedStyleSheetCacheInAllFrames):
* svg/SVGFontFaceElement.cpp:
(WebCore::SVGFontFaceElement::rebuildFontFace):
(WebCore::SVGFontFaceElement::removedFrom):
* xml/XMLTreeViewer.cpp:
(WebCore::XMLTreeViewer::transformDocumentToTreeView):
* xml/parser/XMLDocumentParser.cpp:
(WebCore::XMLDocumentParser::end):
* xml/parser/XMLDocumentParserLibxml2.cpp:
(WebCore::XMLDocumentParser::doEnd):

Source/WebKit/mac:

* WebView/WebHTMLView.mm:
(-[WebHTMLView reapplyStyles]):
(-[WebHTMLView _setPrinting:minimumPageLogicalWidth:logicalHeight:originalPageWidth:originalPageHeight:maximumShrinkRatio:adjustViewSize:paginateScreenContent:]):

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

4 years agoUnreviewed, update results of DOM binding tests after r206354.
utatane.tea@gmail.com [Sun, 25 Sep 2016 07:01:35 +0000 (07:01 +0000)]
Unreviewed, update results of DOM binding tests after r206354.
https://bugs.webkit.org/show_bug.cgi?id=162503

Update results of DOM binding tests. After r206354, setDOMException takes
ThrowScope as its second argument.

* bindings/scripts/test/JS/JSTestInterface.cpp:
(WebCore::JSTestInterfaceConstructor::construct):
(WebCore::jsTestInterfacePrototypeFunctionImplementsMethod2):
(WebCore::jsTestInterfacePrototypeFunctionSupplementalMethod2):
* bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
(WebCore::JSTestNamedConstructorNamedConstructor::construct):
* bindings/scripts/test/JS/JSTestNondeterministic.cpp:
(WebCore::jsTestNondeterministicNondeterministicGetterExceptionAttr):
(WebCore::setJSTestNondeterministicNondeterministicSetterExceptionAttr):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::jsTestObjAttrWithGetterException):
(WebCore::jsTestObjAttrWithGetterExceptionWithMessage):
(WebCore::jsTestObjStringAttrWithGetterException):
(WebCore::jsTestObjWithScriptStateAttributeRaises):
(WebCore::jsTestObjWithScriptExecutionContextAttributeRaises):
(WebCore::jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaises):
(WebCore::jsTestObjNullableStringValue):
(WebCore::setJSTestObjAttrWithSetterException):
(WebCore::setJSTestObjAttrWithSetterExceptionWithMessage):
(WebCore::setJSTestObjStringAttrWithSetterException):
(WebCore::jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrows):
(WebCore::jsTestObjPrototypeFunctionMethodWithException):
(WebCore::jsTestObjPrototypeFunctionMethodWithExceptionWithMessage):
(WebCore::jsTestObjPrototypeFunctionWithScriptStateVoidException):
(WebCore::jsTestObjPrototypeFunctionWithScriptStateObjException):
(WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptStateObjException):
(WebCore::jsTestObjPrototypeFunctionStringArrayFunction):
(WebCore::jsTestObjPrototypeFunctionDomStringListFunction):
(WebCore::jsTestObjPrototypeFunctionGetSVGDocument):
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithExceptionPromise):
(WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunctionWithExceptionPromise):
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::jsTestTypedefsAttrWithGetterException):
(WebCore::jsTestTypedefsStringAttrWithGetterException):
(WebCore::setJSTestTypedefsAttrWithSetterException):
(WebCore::setJSTestTypedefsStringAttrWithSetterException):
(WebCore::jsTestTypedefsPrototypeFunctionStringSequenceFunction):
(WebCore::jsTestTypedefsPrototypeFunctionStringSequenceFunction2):
(WebCore::jsTestTypedefsPrototypeFunctionMethodWithException):

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

4 years agoREGRESSION (r206221): [USER] com.apple.WebKit.WebContent.Development at com.apple...
cdumez@apple.com [Sun, 25 Sep 2016 06:37:04 +0000 (06:37 +0000)]
REGRESSION (r206221): [USER] com.apple.WebKit.WebContent.Development at com.apple.JavaScriptCore: vmEntryToJavaScript + 299
https://bugs.webkit.org/show_bug.cgi?id=162536
<rdar://problem/28415971>

Reviewed by Gavin Barraclough.

Source/JavaScriptCore:

Drop API on PropertySlot for setting a cacheable custom getter/setter
given that this is not supported yet and will lead to crashes if used.

* runtime/PropertySlot.h:
(JSC::PropertySlot::isCacheableCustom):
(JSC::PropertySlot::isCacheableCustomAccessor): Deleted.
(JSC::PropertySlot::setCacheableCustomGetterSetter): Deleted.

Source/WebCore:

Stop marking cross-origin Window/Location objects properties as cacheable
given that we do not support yet caching of such properties. This is because
they are using the new CustomAccesstor PropertySlot type, which is not handled
yet by Repatch.cpp. Performance is anyway not critical for cross-origin
Window / Location properties.

Test: http/tests/security/cross-origin-window-property-caching-crash.html

* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::jsDOMWindowGetOwnPropertySlotRestrictedAccess):
* bindings/js/JSLocationCustom.cpp:
(WebCore::JSLocation::getOwnPropertySlotDelegate):

LayoutTests:

Add layout test coverage.

* http/tests/security/cross-origin-window-property-caching-crash-expected.txt: Added.
* http/tests/security/cross-origin-window-property-caching-crash.html: Added.

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

4 years ago[WK2] Enable support for 'download' attribute on anchor elements
cdumez@apple.com [Sun, 25 Sep 2016 05:08:56 +0000 (05:08 +0000)]
[WK2] Enable support for 'download' attribute on anchor elements
https://bugs.webkit.org/show_bug.cgi?id=162535

Reviewed by Darin Adler.

Enable support for 'download' attribute on anchor elements for WebKit2
now that:
- It works with our NETWORK_SESSION code path (Bug 162531)
- Supports Blob / Data URLs (Bug 156099)
- Requires user interaction / ignores synthetic clicks (Bug 156099)

* Shared/WebPreferencesDefinitions.h:

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

4 years agoREGRESSION (r205524): Crash under WTF::numGraphemeClusters()
cdumez@apple.com [Sun, 25 Sep 2016 03:17:21 +0000 (03:17 +0000)]
REGRESSION (r205524): Crash under WTF::numGraphemeClusters()
https://bugs.webkit.org/show_bug.cgi?id=162534
<rdar://problem/28463828>

Reviewed by David Kilzer.

Source/WebCore:

We were constructing a StringView from a temporary String and then passing it to
WTF::numGraphemeClusters().

Test: fast/dom/HTMLInputElement/handleBeforeTextInsertedEvent-crash.html

* html/TextFieldInputType.cpp:
(WebCore::TextFieldInputType::handleBeforeTextInsertedEvent):

LayoutTests:

Add layout test coverage.

* fast/dom/HTMLInputElement/handleBeforeTextInsertedEvent-crash-expected.txt: Added.
* fast/dom/HTMLInputElement/handleBeforeTextInsertedEvent-crash.html: Added.

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

4 years ago<a download> does not support Blob URLs
cdumez@apple.com [Sun, 25 Sep 2016 02:39:38 +0000 (02:39 +0000)]
<a download> does not support Blob URLs
https://bugs.webkit.org/show_bug.cgi?id=156099
<rdar://problem/25535520>

Reviewed by Darin Adler.

Source/WebCore:

Only allow trusted events to trigger downloads for <a download>, as per:
- https://html.spec.whatwg.org/#the-a-element:triggered-by-user-activation

Without this, a script could download a file to the user's disk without
any user gesture or consent, simply by calling a.click(). I have confirmed
that Firefox also ignores the click for <a download> if it is synthetic.
Chrome allows synthetic clicks to trigger downloads but I filed a bug
about it.

Test: fast/dom/HTMLAnchorElement/anchor-download-synthetic-click.html

* html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::handleClick):

Source/WebKit2:

Add support for downloading Blob URLs to WebKit2. This should work for
all WebKit2 port. This also works in combination with the download
attribute on anchor elements. Note that the download attribute is only
enabled at runtime in the context of the layout tests for now. I'll
enable the download attribute on WK2 once I have fixed Bug 162531.

* CMakeLists.txt:
* NetworkProcess/Downloads/BlobDownloadClient.cpp: Added.
(WebKit::BlobDownloadClient::BlobDownloadClient):
(WebKit::BlobDownloadClient::didReceiveResponse):
(WebKit::BlobDownloadClient::didReceiveBuffer):
(WebKit::BlobDownloadClient::didFinishLoading):
(WebKit::BlobDownloadClient::didFail):
* NetworkProcess/Downloads/BlobDownloadClient.h: Added.
* NetworkProcess/Downloads/Download.cpp:
(WebKit::Download::Download):
(WebKit::Download::start):
(WebKit::Download::didStart):
(WebKit::Download::didReceiveResponse):
(WebKit::Download::decideDestinationWithSuggestedFilename):
(WebKit::Download::~Download): Deleted.
(WebKit::Download::didReceiveData): Deleted.
(WebKit::Download::shouldDecodeSourceDataOfMIMEType): Deleted.
* NetworkProcess/Downloads/Download.h:
(WebKit::Download::Download):
(WebKit::Download::suggestedName):
(WebKit::Download::request):
* NetworkProcess/Downloads/DownloadManager.cpp:
(WebKit::DownloadManager::startDownload):
* NetworkProcess/Downloads/ios/DownloadIOS.mm:
(WebKit::Download::startNetworkLoad):
* NetworkProcess/Downloads/mac/DownloadMac.mm:
(WebKit::Download::startNetworkLoad):
* NetworkProcess/Downloads/soup/DownloadSoup.cpp:
(WebKit::Download::startNetworkLoad):
* UIProcess/Downloads/DownloadProxy.cpp:
(WebKit::DownloadProxy::decideDestinationWithSuggestedFilename):
* UIProcess/Downloads/DownloadProxy.h:
* UIProcess/Downloads/DownloadProxy.messages.in:
* WebKit2.xcodeproj/project.pbxproj:

LayoutTests:

Unskip / rebaseline existing tests now that <a download> supports Blob URLs.

* TestExpectations:
* fast/dom/HTMLAnchorElement/anchor-download-expected.txt:
* fast/dom/HTMLAnchorElement/anchor-download-synthetic-click-expected.txt: Added.
* fast/dom/HTMLAnchorElement/anchor-download-synthetic-click.html: Added.
* fast/dom/HTMLAnchorElement/anchor-nodownload-set-expected.txt:
* http/tests/security/anchor-download-allow-blob-expected.txt:
* platform/ios-simulator-wk1/TestExpectations:
* platform/mac-wk1/TestExpectations:
* platform/mac/TestExpectations:

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

4 years ago[WK2] anchor.download attribute value is ignored by NETWORK_SESSION code path
cdumez@apple.com [Sun, 25 Sep 2016 01:00:02 +0000 (01:00 +0000)]
[WK2] anchor.download attribute value is ignored by NETWORK_SESSION code path
https://bugs.webkit.org/show_bug.cgi?id=162531

Reviewed by Darin Adler.

Source/WebKit2:

Pipe the suggested filename through in the NETWORK_SESSION code path so
that it is used when deciding the destination path.

* NetworkProcess/Downloads/DownloadManager.cpp:
(WebKit::DownloadManager::startDownload):
* NetworkProcess/Downloads/PendingDownload.cpp:
(WebKit::PendingDownload::PendingDownload):
* NetworkProcess/Downloads/PendingDownload.h:
* NetworkProcess/NetworkDataTask.h:
* NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::setSuggestedFilename):
* NetworkProcess/NetworkLoad.h:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTask::suggestedFilename):
(WebKit::NetworkDataTask::setSuggestedFilename):
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:dataTask:didBecomeDownloadTask:]):

Tools:

Update decideDestinationWithSuggestedFilename() to return a actual file path
instead of nullptr. The NETWORK_SESSION code path cancels the download when
decideDestinationWithSuggestedFilename() returns an empty file path, unlike
the !NETWORK_SESSION code path that just continue downloading without
explicitely setting a destination path. This lead to different test results
for NETWORK_SESSION and !NETWORK_SESSION code paths. Returns a valid
destination path makes more sense and leads to consistent results.

* WebKitTestRunner/TestController.cpp:
(WTR::TestController::decideDestinationWithSuggestedFilename):

LayoutTests:

Unskip tests that are now passing.

* platform/mac/TestExpectations:

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

4 years ago[Binding] setDOMException should be inlined and fall to the slow path if exception...
utatane.tea@gmail.com [Sun, 25 Sep 2016 00:43:38 +0000 (00:43 +0000)]
[Binding] setDOMException should be inlined and fall to the slow path if exception occurs
https://bugs.webkit.org/show_bug.cgi?id=162503

Reviewed by Saam Barati.

Binding code emits setDOMException in critical paths. However, it is not inlined.
Since exception less frequently occurs, we should have inlined setDOMException that
early returns if it does not need to raise an exception. And it should call the exception
raising code as slow path case. This tiny optimization can offer improvement if
the DOM function is tiny and DOM binding occupies large part of it. Combined with r206338,
it offers 5% improvement in Dromaeo dom-attr getAttribute / setAttribute tests.

* bindings/js/JSDOMBinding.cpp:
(WebCore::throwDOMException): Extract the actual exception raising code.
(WebCore::setDOMExceptionSlow): Call throwDOMException and keep it not inlined.
(WebCore::setDOMException):
* bindings/js/JSDOMBinding.h:
(WebCore::setDOMException): Use ThrowScope& to check `scope.exception()`.
And it has a path for normal case that allows early returning.
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation):
(GenerateImplementationFunctionCall):
(GenerateConstructorDefinition):

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

4 years ago[JSTests] fix test262 expectations following r206333
caitp@igalia.com [Sat, 24 Sep 2016 21:53:48 +0000 (21:53 +0000)]
[JSTests] fix test262 expectations following r206333
https://bugs.webkit.org/show_bug.cgi?id=162533

Reviewed by Yusuke Suzuki.

* test262.yaml:

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

4 years agoMove stylesheet change logic from Document to AuthorStyleSheets
antti@apple.com [Sat, 24 Sep 2016 13:10:39 +0000 (13:10 +0000)]
Move stylesheet change logic from Document to AuthorStyleSheets
https://bugs.webkit.org/show_bug.cgi?id=162488

Reviewed by Andreas Kling.

* WebView/WebHTMLView.mm:
(-[WebHTMLView reapplyStyles]):
(-[WebHTMLView _setPrinting:minimumPageLogicalWidth:logicalHeight:originalPageWidth:originalPageHeight:maximumShrinkRatio:adjustViewSize:paginateScreenContent:]):

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

4 years agoMove stylesheet change logic from Document to AuthorStyleSheets
antti@apple.com [Sat, 24 Sep 2016 12:28:48 +0000 (12:28 +0000)]
Move stylesheet change logic from Document to AuthorStyleSheets
https://bugs.webkit.org/show_bug.cgi?id=162488

Reviewed by Andreas Kling.

That's where it belongs.

* WebCore.xcodeproj/project.pbxproj:
* css/CSSStyleSheet.cpp:
(WebCore::CSSStyleSheet::didMutateRules):
(WebCore::CSSStyleSheet::didMutate):
(WebCore::CSSStyleSheet::clearOwnerNode):
* dom/AuthorStyleSheets.cpp:
(WebCore::AuthorStyleSheets::AuthorStyleSheets):
(WebCore::AuthorStyleSheets::flushPendingUpdates):
(WebCore::AuthorStyleSheets::scheduleOptimizedUpdate):
(WebCore::AuthorStyleSheets::didChange):
(WebCore::AuthorStyleSheets::optimizedUpdateTimerFired):
* dom/AuthorStyleSheets.h:
(WebCore::AuthorStyleSheets::hasPendingUpdate):
(WebCore::AuthorStyleSheets::pendingUpdateType): Deleted.
(WebCore::AuthorStyleSheets::setPendingUpdateType): Deleted.
(WebCore::AuthorStyleSheets::flushPendingUpdates): Deleted.
* dom/Document.cpp:
(WebCore::Document::Document):
(WebCore::Document::setContentLanguage):
(WebCore::Document::needsStyleRecalc):
(WebCore::Document::updateStyleIfNeeded):
(WebCore::Document::updateLayoutIgnorePendingStylesheets):
(WebCore::Document::didRemoveAllPendingStylesheet):
(WebCore::Document::processHttpEquiv):
(WebCore::Document::setSelectedStylesheetSet):
(WebCore::Document::updateHoverActiveState):

    Remove StyleResolverUpdateFlag argument that was misused to indicate sync style recalc.
    Clients can call updateStyleIfNeeded() directly though none of them appears to need it.

(WebCore::Document::optimizedStyleSheetUpdateTimerFired): Deleted.
(WebCore::Document::scheduleOptimizedStyleSheetUpdate): Deleted.
(WebCore::Document::styleResolverChanged): Deleted.
* dom/Document.h:
(WebCore::Document::needsStyleRecalc): Deleted.
* dom/ExtensionStyleSheets.cpp:
(WebCore::ExtensionStyleSheets::clearPageUserSheet):
(WebCore::ExtensionStyleSheets::updatePageUserSheet):
(WebCore::ExtensionStyleSheets::invalidateInjectedStyleSheetCache):
(WebCore::ExtensionStyleSheets::addUserStyleSheet):
(WebCore::ExtensionStyleSheets::addAuthorStyleSheetForTesting):
(WebCore::ExtensionStyleSheets::styleResolverChangedTimerFired):
* dom/InlineStyleSheetOwner.cpp:
(WebCore::InlineStyleSheetOwner::removedFromDocument):
* dom/ProcessingInstruction.cpp:
(WebCore::ProcessingInstruction::removedFrom):

    Also fix a bug that prevented document from rendering if a loading processing instruction was removed from the tree.
    This is tested by fast/dom/StyleSheet/detached-style-pi-2.xhtml (after other changes in this patch).

* dom/ShadowRoot.cpp:
(WebCore::ShadowRoot::updateStyle):
* html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::setDisabledState):
(WebCore::HTMLLinkElement::parseAttribute):
(WebCore::HTMLLinkElement::process):
(WebCore::HTMLLinkElement::removedFrom):
(WebCore::HTMLLinkElement::removePendingSheet):
* html/HTMLStyleElement.cpp:
(WebCore::HTMLStyleElement::parseAttribute):
* inspector/InspectorCSSAgent.cpp:
(WebCore::InspectorCSSAgent::forcePseudoState):
(WebCore::InspectorCSSAgent::resetPseudoStates):
* inspector/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::setEmulatedMedia):
* page/Frame.cpp:
(WebCore::Frame::setPrinting):
* page/FrameView.cpp:
(WebCore::FrameView::layout):
(WebCore::FrameView::setPagination):
(WebCore::FrameView::setViewportSizeForCSSViewportUnits):
* page/Page.cpp:
(WebCore::Page::setViewMode):
(WebCore::Page::setNeedsRecalcStyleInAllFrames):
(WebCore::Page::invalidateInjectedStyleSheetCacheInAllFrames):
* svg/SVGFontFaceElement.cpp:
(WebCore::SVGFontFaceElement::rebuildFontFace):
(WebCore::SVGFontFaceElement::removedFrom):
* xml/XMLTreeViewer.cpp:
(WebCore::XMLTreeViewer::transformDocumentToTreeView):
* xml/parser/XMLDocumentParser.cpp:
(WebCore::XMLDocumentParser::end):
* xml/parser/XMLDocumentParserLibxml2.cpp:
(WebCore::XMLDocumentParser::doEnd):

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

4 years agoMedia controls playhead does not animate smoothly while playing
wenson_hsieh@apple.com [Sat, 24 Sep 2016 01:38:52 +0000 (01:38 +0000)]
Media controls playhead does not animate smoothly while playing
https://bugs.webkit.org/show_bug.cgi?id=162399
<rdar://problem/28115680>

Reviewed by Beth Dakin.

Source/WebCore:

The media controls playhead currently does not animate smoothly during playback because we don't specify a
playback rate when updating the WebPlaybackControlsManager's timing value. However, simply setting this timing
value to the current playback rate (as known to the UI process) results in the UI process receiving multiple
updates from the web process where the current time is equal (or even less than) the time at which media began
to play, which results in the playhead seeking backwards to the start time multiple times when playing or
resuming media.

To address this, in WebCore, we inform the playback session model of the media time when playback begins (i.e.
a `playing` or `play` event is fired). This message precedes both the "rate changed" and "current time changed"
messages.

Unit tests to be added in a future patch.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::notifyAboutPlaying):
(WebCore::HTMLMediaElement::setReadyState):
(WebCore::HTMLMediaElement::playInternal):
* html/HTMLMediaElement.h:
(WebCore::HTMLMediaElement::playbackStartedTime):
* platform/cocoa/WebPlaybackSessionModel.h:
(WebCore::WebPlaybackSessionModelClient::playbackStartedTimeChanged):
(WebCore::WebPlaybackSessionModelClient::bufferedTimeChanged): Deleted.
* platform/cocoa/WebPlaybackSessionModelMediaElement.h:
* platform/cocoa/WebPlaybackSessionModelMediaElement.mm:
(WebPlaybackSessionModelMediaElement::updateForEventName):
(WebPlaybackSessionModelMediaElement::playbackStartedTime):
* platform/ios/WebVideoFullscreenControllerAVKit.mm:
* platform/mac/WebPlaybackSessionInterfaceMac.h:
* platform/mac/WebPlaybackSessionInterfaceMac.mm:
(WebCore::WebPlaybackSessionInterfaceMac::currentTimeChanged):
(WebCore::WebPlaybackSessionInterfaceMac::rateChanged):
(WebCore::WebPlaybackSessionInterfaceMac::beginScrubbing):
(WebCore::WebPlaybackSessionInterfaceMac::endScrubbing):
(WebCore::WebPlaybackSessionInterfaceMac::updatePlaybackControlsManagerTiming):

Source/WebKit2:

See WebCore ChangeLog for more details.

In the UI process, we update the WebPlaybackSessionManager's timing value when the rate or current time changes.
Each AVValueTiming is generated from the current time, system anchor time, and playback rate. The behavior of
the first two properties is unaffected. However, the rate used to update the timing value is the effective
playback rate, which is equal to the playback rate unless we are (1) not playing, (2) interacting with the media
controls in such a way that the media is essentially not playing, or (3) the current time precedes the playback
start time, accounting for playback direction. In these cases, our effective playback rate is 0, which means
that we do not animate the playhead.

* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in:
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:
(WebKit::WebPlaybackSessionModelContext::beginScrubbing):
(WebKit::WebPlaybackSessionModelContext::endScrubbing):
(WebKit::WebPlaybackSessionModelContext::setPlaybackStartedTime):
(WebKit::WebPlaybackSessionModelContext::setCurrentTime):
(WebKit::WebPlaybackSessionManagerProxy::setPlaybackStartedTime):
* WebProcess/cocoa/WebPlaybackSessionManager.h:
* WebProcess/cocoa/WebPlaybackSessionManager.mm:
(WebKit::WebPlaybackSessionInterfaceContext::playbackStartedTimeChanged):
(WebKit::WebPlaybackSessionManager::playbackStartedTimeChanged):

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

4 years agoNeed a store-load fence between setting cell state and visiting the object in SlotVisitor
fpizlo@apple.com [Sat, 24 Sep 2016 00:47:30 +0000 (00:47 +0000)]
Need a store-load fence between setting cell state and visiting the object in SlotVisitor
https://bugs.webkit.org/show_bug.cgi?id=162354

Reviewed by Mark Lam.

Source/JavaScriptCore:

This was meant to be a small change, but then it became bigger as I found small
opportunities for improving this code. This adds a store-load fence and is performance-
neutral. That's probably partly due to other optimizations that I did to visitChildren().

Initially, I found that adding an mfence as a store-load fence was terribly expensive. So,
I thought that I needed to buffer up a bunch of objects, set their states, do one mfence,
and then visit all of them. This seemed like a win, so I went with it. Unfortunately, this
made no sense for two reasons:

- I shouldn't use mfence. I should use ortop (lock orl $0, (%rsp)) instead. Ortop is
  basically free, and it's what WTF now uses for storeLoadFence().

- My data saying that buffering up objects was not a slow-down was wrong. That was actually
  almost as expensive as the mfence.

But in order to implement that, I made some other improvements that I think we should stick
with:

- SlotVisitor::visitChildren() now uses a switch on type. This replaces what used to be
  some nasty ClassInfo look-ups.

- We no longer save the object's old CellState. We would do that so that we would know what
  state the object had been before we blackened it. But I believe that the more logical
  solution is to have two kinds of black - one for black-for-the-first-time objects and one
  for repeat offenders. This is a lot easier to reason about, since you can now just figure
  this out by looking at the cell directly.

The latter change meant rewiring a bunch of barriers. It didn't make them any more
expensive.

Relanding after fixing a nasty build failure in cloop and elsewhere.

* JavaScriptCore.xcodeproj/project.pbxproj:
* assembler/AbstractMacroAssembler.h:
(JSC::isARMv7IDIVSupported): Deleted.
(JSC::isARM64): Deleted.
(JSC::isX86): Deleted.
(JSC::isX86_64): Deleted.
(JSC::optimizeForARMv7IDIVSupported): Deleted.
(JSC::optimizeForARM64): Deleted.
(JSC::optimizeForX86): Deleted.
(JSC::optimizeForX86_64): Deleted.
* assembler/CPU.h: Added.
(JSC::isARMv7IDIVSupported):
(JSC::isARM64):
(JSC::isX86):
(JSC::isX86_64):
(JSC::optimizeForARMv7IDIVSupported):
(JSC::optimizeForARM64):
(JSC::optimizeForX86):
(JSC::optimizeForX86_64):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::emitStoreBarrier):
* heap/CellState.h:
(JSC::isBlack):
(JSC::blacken):
* heap/Heap.cpp:
(JSC::Heap::addToRememberedSet):
* heap/Heap.h:
* heap/HeapInlines.h:
(JSC::Heap::writeBarrier):
(JSC::Heap::reportExtraMemoryVisited):
(JSC::Heap::reportExternalMemoryVisited):
* heap/MarkStack.cpp:
* heap/MarkStack.h:
* heap/SlotVisitor.cpp:
(JSC::SlotVisitor::visitChildren):
* heap/SlotVisitor.h:
* heap/SlotVisitorInlines.h:
(JSC::SlotVisitor::reportExtraMemoryVisited):
(JSC::SlotVisitor::reportExternalMemoryVisited):
* jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::jumpIfIsRememberedOrInEden):
* llint/LLIntData.cpp:
(JSC::LLInt::Data::performAssertions):
* llint/LowLevelInterpreter.asm:
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* runtime/JSObject.h:
(JSC::isJSFinalObject):

Source/WTF:

Fix this on x86-32.

* wtf/Atomics.h:
(WTF::x86_ortop):

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

4 years agoASSERTION FAILED: !newRelayoutRoot.container() || is<RenderView>(newRelayoutRoot...
zalan@apple.com [Sat, 24 Sep 2016 00:45:48 +0000 (00:45 +0000)]
ASSERTION FAILED: !newRelayoutRoot.container() || is<RenderView>(newRelayoutRoot.container()) || !newRelayoutRoot.container()->needsLayout() while loading sohu.com
https://bugs.webkit.org/show_bug.cgi?id=162466

Reviewed by Simon Fraser.

Source/WebCore:

When we come across a out-of-flow positioned renderer during layout, we add it to a tracker map with
its containing block (calling RenderBlock::insertPositionedObject).
It ensures that a containing block can easily access to the out-of-flow positioned descendants during layout/painting/hittesting.
We do it even when the containing block - positioned renderer pair is already in this tracker map.
RenderBlock::insertPositionedObject() eagerly sets the positioned-child-needs-layout flag on the containing block
assuming it needs to layout this descendant later in the layout phase.
This patch ensure that we only flag the containing block dirty when the descendant needs layout.

Test: fast/block/positioning/subtree-assert-when-positioned-element-dirties-containing-block.html

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

LayoutTests:

* fast/block/positioning/subtree-assert-when-positioned-element-dirties-containing-block-expected.txt: Added.
* fast/block/positioning/subtree-assert-when-positioned-element-dirties-containing-block.html: Added.

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

4 years agoRemove debug flag for flaky test js/regress-139548.html.
ryanhaddad@apple.com [Sat, 24 Sep 2016 00:26:28 +0000 (00:26 +0000)]
Remove debug flag for flaky test js/regress-139548.html.
https://bugs.webkit.org/show_bug.cgi?id=160017

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

4 years agoUpdate TestExpectations to mark media/controls/inline-elements-dropoff-order.html...
ryanhaddad@apple.com [Sat, 24 Sep 2016 00:21:00 +0000 (00:21 +0000)]
Update TestExpectations to mark media/controls/inline-elements-dropoff-order.html as failing on Sierra.
https://bugs.webkit.org/show_bug.cgi?id=162494

Unreviewed test gardening.
* platform/mac/TestExpectations:

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

4 years agoMarking imported/w3c/web-platform-tests/media-source/mediasource-preload.html as...
ryanhaddad@apple.com [Sat, 24 Sep 2016 00:17:26 +0000 (00:17 +0000)]
Marking imported/w3c/web-platform-tests/media-source/mediasource-preload.html as flaky on Sierra.
https://bugs.webkit.org/show_bug.cgi?id=162523

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

4 years agoWeb Inspector: Fix typo in event name
commit-queue@webkit.org [Sat, 24 Sep 2016 00:07:03 +0000 (00:07 +0000)]
Web Inspector: Fix typo in event name
https://bugs.webkit.org/show_bug.cgi?id=162519

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-09-23
Reviewed by Matt Baker.

* UserInterface/Views/CSSStyleDeclarationTextEditor.js:

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

4 years ago[Binding] Use unchekcedArgument if argumentCount is already checked
utatane.tea@gmail.com [Fri, 23 Sep 2016 23:57:26 +0000 (23:57 +0000)]
[Binding] Use unchekcedArgument if argumentCount is already checked
https://bugs.webkit.org/show_bug.cgi?id=162502

Reviewed by Geoffrey Garen.

It is not necessary to use `exec->argument(n)` after checking the argument exists.
This patch changes `argument(n)` to `uncheckedArgument(n)` if we already proved that
the argument exists. This change drops branches generated by `exec->argument(n)`.
And it is good for small DOM operations in which DOM binding code occupies large
part of entire processing. This patch and another small patch[1] offer roughly 5%
improvement in Dromaeo dom-attr's getAttribute and setAttribute tests.

[1]: https://bugs.webkit.org/show_bug.cgi?id=162503

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateParametersCheck): GenerateParameterCheck requires GenerateArgumentsCountCheck.
As a result, existence of mandatory arguments are already checked. We can use `uncheckedArgument(n)`
for mandatory arguments.
* bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
(WebCore::jsTestActiveDOMObjectPrototypeFunctionExcitingFunction):
(WebCore::jsTestActiveDOMObjectPrototypeFunctionPostMessage):
* bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:
(WebCore::jsTestCustomNamedGetterPrototypeFunctionAnotherFunction):
* bindings/scripts/test/JS/JSTestEventTarget.cpp:
(WebCore::jsTestEventTargetPrototypeFunctionItem):
* bindings/scripts/test/JS/JSTestGlobalObject.cpp:
(WebCore::jsTestGlobalObjectInstanceFunctionRegularOperation):
(WebCore::jsTestGlobalObjectInstanceFunctionEnabledAtRuntimeOperation1):
(WebCore::jsTestGlobalObjectInstanceFunctionEnabledAtRuntimeOperation2):
* bindings/scripts/test/JS/JSTestInterface.cpp:
(WebCore::JSTestInterfaceConstructor::construct):
(WebCore::jsTestInterfacePrototypeFunctionImplementsMethod2):
(WebCore::jsTestInterfacePrototypeFunctionSupplementalMethod2):
* bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
(WebCore::jsTestMediaQueryListListenerPrototypeFunctionMethod):
* bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
(WebCore::JSTestNamedConstructorNamedConstructor::construct):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::JSTestObjConstructor::construct):
(WebCore::jsTestObjPrototypeFunctionEnabledAtRuntimeOperation1):
(WebCore::jsTestObjPrototypeFunctionEnabledAtRuntimeOperation2):
(WebCore::jsTestObjPrototypeFunctionVoidMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionByteMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionOctetMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionLongMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionObjMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionMethodWithArgTreatingNullAsEmptyString):
(WebCore::jsTestObjPrototypeFunctionMethodWithXPathNSResolverParameter):
(WebCore::jsTestObjPrototypeFunctionNullableStringSpecialMethod):
(WebCore::jsTestObjPrototypeFunctionMethodWithEnumArg):
(WebCore::jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrows):
(WebCore::jsTestObjPrototypeFunctionMethodWithUSVStringArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithNullableUSVStringArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithUSVStringArgTreatingNullAsEmptyString):
(WebCore::jsTestObjPrototypeFunctionSerializedValue):
(WebCore::jsTestObjPrototypeFunctionOptionsObject):
(WebCore::jsTestObjPrototypeFunctionPrivateMethod):
(WebCore::jsTestObjPrototypeFunctionPublicAndPrivateMethod):
(WebCore::jsTestObjPrototypeFunctionAddEventListener):
(WebCore::jsTestObjPrototypeFunctionRemoveEventListener):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndOptionalArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndTwoOptionalArgs):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackFunctionArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackFunctionArg):
(WebCore::jsTestObjConstructorFunctionStaticMethodWithCallbackArg):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod1):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod2):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod3):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod4):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod5):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod6):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod7):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod8):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod9):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod10):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod11):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter1):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter2):
(WebCore::jsTestObjConstructorFunctionOverloadedMethod11):
(WebCore::jsTestObjConstructorFunctionOverloadedMethod12):
(WebCore::jsTestObjPrototypeFunctionClassMethodWithClamp):
(WebCore::jsTestObjPrototypeFunctionClassMethodWithEnforceRange):
(WebCore::jsTestObjPrototypeFunctionMethodWithUnsignedLongSequence):
(WebCore::jsTestObjPrototypeFunctionStringArrayFunction):
(WebCore::jsTestObjPrototypeFunctionDomStringListFunction):
(WebCore::jsTestObjPrototypeFunctionMethodWithAndWithoutNullableSequence):
(WebCore::jsTestObjPrototypeFunctionGetElementById):
(WebCore::jsTestObjPrototypeFunctionConvert1):
(WebCore::jsTestObjPrototypeFunctionConvert2):
(WebCore::jsTestObjPrototypeFunctionConvert3):
(WebCore::jsTestObjPrototypeFunctionConvert4):
(WebCore::jsTestObjPrototypeFunctionVariadicStringMethod):
(WebCore::jsTestObjPrototypeFunctionVariadicDoubleMethod):
(WebCore::jsTestObjPrototypeFunctionVariadicNodeMethod):
(WebCore::jsTestObjPrototypeFunctionAny):
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithFloatArgumentPromise):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction1Promise):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction2Promise):
(WebCore::jsTestObjPrototypeFunctionConditionalOverload1):
(WebCore::jsTestObjPrototypeFunctionConditionalOverload2):
(WebCore::jsTestObjPrototypeFunctionSingleConditionalOverload1):
(WebCore::jsTestObjPrototypeFunctionSingleConditionalOverload2):
(WebCore::jsTestObjPrototypeFunctionAttachShadowRoot):
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
(WebCore::constructJSTestOverloadedConstructors1):
(WebCore::constructJSTestOverloadedConstructors2):
(WebCore::constructJSTestOverloadedConstructors3):
(WebCore::constructJSTestOverloadedConstructors4):
* bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
(WebCore::constructJSTestOverloadedConstructorsWithSequence2):
* bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
(WebCore::jsTestOverrideBuiltinsPrototypeFunctionNamedItem):
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::JSTestTypedefsConstructor::construct):
(WebCore::jsTestTypedefsPrototypeFunctionSetShadow):
(WebCore::jsTestTypedefsPrototypeFunctionMethodWithSequenceArg):
(WebCore::jsTestTypedefsPrototypeFunctionNullableSequenceArg):
(WebCore::jsTestTypedefsPrototypeFunctionFuncWithClamp):
(WebCore::jsTestTypedefsPrototypeFunctionStringSequenceFunction):
(WebCore::jsTestTypedefsPrototypeFunctionStringSequenceFunction2):
(WebCore::jsTestTypedefsPrototypeFunctionCallWithSequenceThatRequiresInclude):

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

4 years agoRefactor URLParser
achristensen@apple.com [Fri, 23 Sep 2016 23:40:46 +0000 (23:40 +0000)]
Refactor URLParser
https://bugs.webkit.org/show_bug.cgi?id=162518

Reviewed by Brady Eidson.

Use a helper function to determine the currentPosition instead of always determining position based on the
size of the buffer.  Soon there will be nothing in the buffer in the common case where there are no syntax errors.
Also make more static functions into methods.  Give IPv6Addresses and IPv4Addresses names.  Start adding syntaxError stubs.

No change in behavior.  Covered by API tests.

* platform/URLParser.cpp:
(WebCore::URLParser::incrementIteratorSkippingTabAndNewLine):
(WebCore::URLParser::isWindowsDriveLetter):
(WebCore::URLParser::appendToASCIIBuffer):
(WebCore::URLParser::syntaxError):
(WebCore::URLParser::currentPosition):
(WebCore::URLParser::URLParser):
(WebCore::URLParser::parse):
(WebCore::URLParser::parseAuthority):
(WebCore::URLParser::appendNumberToASCIIBuffer):
(WebCore::URLParser::serializeIPv4):
(WebCore::URLParser::serializeIPv6Piece):
(WebCore::URLParser::serializeIPv6):
(WebCore::URLParser::parseIPv4Host):
(WebCore::URLParser::parseIPv6Host):
(WebCore::URLParser::parsePort):
(WebCore::URLParser::parseHostAndPort):
(WebCore::append): Deleted.
(WebCore::serializeIPv4): Deleted.
(WebCore::serializeIPv6Piece): Deleted.
(WebCore::serializeIPv6): Deleted.
(WebCore::parseIPv4Host): Deleted.
(WebCore::parseIPv6Host): Deleted.
* platform/URLParser.h:

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

4 years ago[JSC] add //@ skip line for JSTests/stress/async-await-syntax.js
caitp@igalia.com [Fri, 23 Sep 2016 23:26:01 +0000 (23:26 +0000)]
[JSC] add //@ skip line for JSTests/stress/async-await-syntax.js
http://bugs.webkit.org/show_bug.cgi?id=161409

* stress/async-await-syntax.js:

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

4 years ago[mac-sierra] 2 WKWebViewCandidateTests API test failures
wenson_hsieh@apple.com [Fri, 23 Sep 2016 22:54:39 +0000 (22:54 +0000)]
[mac-sierra] 2 WKWebViewCandidateTests API test failures
https://bugs.webkit.org/show_bug.cgi?id=162470

Reviewed by Tim Horton.

VideoControlsManager, WKWebViewCandidateTests and CandidateTests should not be running on 10.12.0. Guard these
tests with an SDK check to prevent 10.12.0 bots from building them.

* TestWebKitAPI/Tests/WebKit2Cocoa/VideoControlsManager.mm:
* TestWebKitAPI/Tests/WebKit2Cocoa/WKWebViewCandidateTests.mm:
* TestWebKitAPI/Tests/mac/CandidateTests.mm:

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

4 years agoRefactor URLParser
achristensen@apple.com [Fri, 23 Sep 2016 22:32:28 +0000 (22:32 +0000)]
Refactor URLParser
https://bugs.webkit.org/show_bug.cgi?id=162516

Reviewed by Brady Eidson.

Source/WebCore:

Turn more static functions into methods, use a helper function to append characters to a buffer.

No change in behavior, but I added a new API test to cover an interesting
ipv6 address parsing case that had no coverage.

* platform/URLParser.cpp:
(WebCore::CodePointIterator::codeUnitsSince):
(WebCore::URLParser::isWindowsDriveLetter):
(WebCore::URLParser::appendToASCIIBuffer):
(WebCore::URLParser::checkWindowsDriveLetter):
(WebCore::URLParser::percentEncodeByte):
(WebCore::URLParser::utf8PercentEncode):
(WebCore::URLParser::utf8QueryEncode):
(WebCore::URLParser::encodeQuery):
(WebCore::URLParser::copyASCIIStringUntil):
(WebCore::URLParser::copyURLPartsUntil):
(WebCore::URLParser::URLParser):
(WebCore::URLParser::parse):
(WebCore::URLParser::parseAuthority):
(WebCore::URLParser::parsePort):
(WebCore::URLParser::parseHostAndPort):
(WebCore::utf8PercentEncode): Deleted.
(WebCore::utf8QueryEncode): Deleted.
(WebCore::encodeQuery): Deleted.
(WebCore::copyASCIIStringUntil): Deleted.
* platform/URLParser.h:
(WebCore::URLParser::appendToASCIIBuffer):

Tools:

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

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

4 years ago[JSC] Implement parsing of Async Functions
caitp@igalia.com [Fri, 23 Sep 2016 22:24:27 +0000 (22:24 +0000)]
[JSC] Implement parsing of Async Functions
https://bugs.webkit.org/show_bug.cgi?id=161409

Reviewed by Yusuke Suzuki.

.:

* Source/cmake/WebKitFeatures.cmake:

JSTests:

* stress/async-await-syntax.js: Added.
(testSyntax):
(testSyntaxError):
(testTopLevelAsyncAwaitSyntaxSloppyMode.testSyntax):
(testTopLevelAsyncAwaitSyntaxSloppyMode):
(testTopLevelAsyncAwaitSyntaxStrictMode):
(testTopLevelAsyncAwaitSyntaxStrictMode.testSyntax):
(testNestedAsyncAwaitSyntax.async):
(testNestedAsyncAwaitSyntax.foo):
(testTopLevelAsyncAwaitSyntaxSloppyMode.testSyntaxError):

Source/JavaScriptCore:

Introduces frontend parsing for the async function proposal soon to be
ratified in ECMA262 (https://tc39.github.io/ecmascript-asyncawait/).

* API/JSScriptRef.cpp:
(parseScript):
* Configurations/FeatureDefines.xcconfig:
* builtins/BuiltinExecutables.cpp:
(JSC::BuiltinExecutables::createExecutable):
* bytecode/EvalCodeCache.h:
(JSC::EvalCodeCache::CacheKey::CacheKey):
* bytecode/ExecutableInfo.h:
(JSC::ExecutableInfo::ExecutableInfo):
(JSC::ExecutableInfo::scriptMode):
(JSC::ExecutableInfo::commentMode): Deleted.
* bytecode/UnlinkedCodeBlock.cpp:
(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):
* bytecode/UnlinkedCodeBlock.h:
(JSC::UnlinkedCodeBlock::scriptMode):
(JSC::UnlinkedCodeBlock::commentMode): Deleted.
* bytecode/UnlinkedFunctionExecutable.cpp:
(JSC::generateUnlinkedFunctionCodeBlock):
(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):
* bytecode/UnlinkedFunctionExecutable.h:
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitNewArrowFunctionExpression):
(JSC::BytecodeGenerator::emitNewMethodDefinition):
* bytecompiler/BytecodeGenerator.h:
(JSC::BytecodeGenerator::scriptMode):
(JSC::BytecodeGenerator::makeFunction):
(JSC::BytecodeGenerator::commentMode): Deleted.
* bytecompiler/NodesCodegen.cpp:
(JSC::AwaitExprNode::emitBytecode):
* parser/ASTBuilder.h:
(JSC::ASTBuilder::createAwait):
(JSC::ASTBuilder::createAsyncFunctionBody):
* parser/Keywords.table:
* parser/Lexer.cpp:
(JSC::Lexer<T>::Lexer):
(JSC::Lexer<T>::lex):
* parser/Lexer.h:
* parser/NodeConstructors.h:
(JSC::AwaitExprNode::AwaitExprNode):
* parser/Nodes.h:
* parser/Parser.cpp:
(JSC::Parser<LexerType>::Parser):
(JSC::Parser<LexerType>::parseInner):
(JSC::Parser<LexerType>::isArrowFunctionParameters):
(JSC::Parser<LexerType>::parseAsyncFunctionSourceElements):
(JSC::Parser<LexerType>::parseStatementListItem):
(JSC::Parser<LexerType>::parseVariableDeclarationList):
(JSC::Parser<LexerType>::parseDestructuringPattern):
(JSC::Parser<LexerType>::parseStatement):
(JSC::Parser<LexerType>::parseFunctionDeclarationStatement):
(JSC::Parser<LexerType>::maybeParseAsyncFunctionDeclarationStatement):
(JSC::Parser<LexerType>::parseFormalParameters):
(JSC::stringForFunctionMode):
(JSC::Parser<LexerType>::parseFunctionParameters):
(JSC::Parser<LexerType>::parseFunctionInfo):
(JSC::Parser<LexerType>::parseAsyncFunctionDeclaration):
(JSC::Parser<LexerType>::parseClass):
(JSC::Parser<LexerType>::parseExpressionOrLabelStatement):
(JSC::Parser<LexerType>::parseImportClauseItem):
(JSC::Parser<LexerType>::parseImportDeclaration):
(JSC::Parser<LexerType>::parseExportDeclaration):
(JSC::Parser<LexerType>::parseAssignmentExpression):
(JSC::Parser<LexerType>::parseProperty): Deleted.
(JSC::Parser<LexerType>::parsePropertyMethod): Deleted.
(JSC::Parser<LexerType>::parsePrimaryExpression): Deleted.
(JSC::Parser<LexerType>::parseMemberExpression): Deleted.
(JSC::Parser<LexerType>::parseArrowFunctionExpression): Deleted.
(JSC::Parser<LexerType>::parseUnaryExpression): Deleted.
(JSC::Parser<LexerType>::printUnexpectedTokenText): Deleted.
* parser/Parser.h:
(JSC::Scope::Scope):
(JSC::Scope::setSourceParseMode):
(JSC::Scope::isAsyncFunction):
(JSC::Scope::isAsyncFunctionBoundary):
(JSC::Scope::setIsAsyncArrowFunction):
(JSC::Scope::setIsAsyncFunction):
(JSC::Scope::setIsAsyncFunctionBody):
(JSC::Scope::setIsAsyncArrowFunctionBody):
(JSC::Parser::ExpressionErrorClassifier::forceClassifyExpressionError):
(JSC::Parser::ExpressionErrorClassifier::propagateExpressionErrorClass):
(JSC::Parser::ExpressionErrorClassifier::indicatesPossibleAsyncArrowFunction):
(JSC::Parser::forceClassifyExpressionError):
(JSC::Parser::declarationTypeToVariableKind):
(JSC::Parser::upperScope):
(JSC::Parser::pushScope):
(JSC::Parser::matchSpecIdentifier):
(JSC::Parser::isDisallowedIdentifierAwait):
(JSC::Parser::disallowedIdentifierAwaitReason):
(JSC::parse):
(JSC::Scope::isGeneratorBoundary): Deleted.
(JSC::Parser::ExpressionErrorClassifier::indicatesPossiblePattern): Deleted.
* parser/ParserModes.h:
(JSC::SourceParseModeSet::SourceParseModeSet):
(JSC::SourceParseModeSet::contains):
(JSC::SourceParseModeSet::mergeSourceParseModes):
(JSC::isFunctionParseMode):
(JSC::isAsyncFunctionParseMode):
(JSC::isAsyncArrowFunctionParseMode):
(JSC::isAsyncFunctionWrapperParseMode):
(JSC::isAsyncFunctionBodyParseMode):
(JSC::isMethodParseMode):
(JSC::isModuleParseMode):
(JSC::isProgramParseMode):
(JSC::constructAbilityForParseMode):
* parser/ParserTokens.h:
* parser/SourceCodeKey.h:
(JSC::SourceCodeFlags::SourceCodeFlags):
(JSC::SourceCodeKey::SourceCodeKey):
* parser/SyntaxChecker.h:
(JSC::SyntaxChecker::createAwait):
(JSC::SyntaxChecker::createAsyncFunctionBody):
(JSC::SyntaxChecker::createYield): Deleted.
(JSC::SyntaxChecker::createFunctionExpr): Deleted.
* runtime/CodeCache.cpp:
(JSC::CodeCache::getGlobalCodeBlock):
(JSC::CodeCache::getProgramCodeBlock):
(JSC::CodeCache::getEvalCodeBlock):
(JSC::CodeCache::getModuleProgramCodeBlock):
(JSC::CodeCache::getFunctionExecutableFromGlobalCode):
* runtime/CodeCache.h:
* runtime/CommonIdentifiers.h:
* runtime/Completion.cpp:
(JSC::checkSyntax):
(JSC::checkModuleSyntax):
* runtime/Executable.cpp:
(JSC::ProgramExecutable::checkSyntax):
* runtime/Executable.h:
* runtime/ModuleLoaderPrototype.cpp:
(JSC::moduleLoaderPrototypeParseModule):

Source/WebCore:

* Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

* Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

* Configurations/FeatureDefines.xcconfig:

Source/WTF:

* wtf/FeatureDefines.h:

Tools:

* Scripts/build-jsc:
(cMakeArgsFromFeatures):
* Scripts/webkitperl/FeatureList.pm:
* TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

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

4 years agoAlign HTMLLabelElement.prototype.form with the HTML specification
cdumez@apple.com [Fri, 23 Sep 2016 21:46:27 +0000 (21:46 +0000)]
Align HTMLLabelElement.prototype.form with the HTML specification
https://bugs.webkit.org/show_bug.cgi?id=162369

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline several W3C tests now that more checks are passing.

* web-platform-tests/html/semantics/forms/form-control-infrastructure/form-expected.txt:
* web-platform-tests/html/semantics/forms/the-label-element/label-attributes-expected.txt:

Source/WebCore:

Align HTMLLabelElement.prototype.form with the HTML specification:
- https://html.spec.whatwg.org/#dom-label-form

In particular, the following behavior changes:
- We now return null if the label element has no labeled control.
- We now return the form element instead of returning null if
  the label element is outside the form but its labeled control
  is inside the form.

Firefox and Chrome match the specification.

No new tests, rebaselined existing tests.

* html/HTMLLabelElement.cpp:
(WebCore::HTMLLabelElement::form):
* html/HTMLLabelElement.h:

LayoutTests:

Update existing tests to reflect behavior change. I have verified
that Firefox and Chrome were failing those tests.

* fast/dom/HTMLLabelElement/form/test1.html:
* fast/forms/form-attribute-expected.txt:
* fast/forms/form-attribute-nonexistence-form-id-expected.txt:
* fast/forms/form-attribute-nonexistence-form-id.html:
* fast/forms/form-attribute.html:

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

4 years agoFix Mac CMake build after r206261
jbedard@apple.com [Fri, 23 Sep 2016 21:20:19 +0000 (21:20 +0000)]
Fix Mac CMake build after r206261
https://bugs.webkit.org/show_bug.cgi?id=162493

Reviewed by Alex Christensen.

* CMakeLists.txt: Exclude WebTextChecker from Mac CMake builds.
* PlatformEfl.cmake: Ditto.
* PlatformGTK.cmake: Ditto.

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

4 years agoUnreviewed, rolling out r206317.
ryanhaddad@apple.com [Fri, 23 Sep 2016 21:01:40 +0000 (21:01 +0000)]
Unreviewed, rolling out r206317.

This change caused timeouts on El Capitan Release JSC tests

Reverted changeset:

"Skip stress/string-joining-long-strings-should-not-crash.js
on memory limited devices"
https://bugs.webkit.org/show_bug.cgi?id=162386
http://trac.webkit.org/changeset/206317

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

4 years agoRefactor URLParser
achristensen@apple.com [Fri, 23 Sep 2016 20:58:03 +0000 (20:58 +0000)]
Refactor URLParser
https://bugs.webkit.org/show_bug.cgi?id=162511

Reviewed by Brady Eidson.

Source/WebCore:

Make the constructor take the parameters instead of URL::parse.
Now we don't need to copy the input string on failure.
Also, turn some static functions into methods so they will be able to access member variables.

Covered by existing and new API tests.

* platform/URL.cpp:
(WebCore::URL::URL):
(WebCore::URL::setProtocol):
(WebCore::URL::setHost):
(WebCore::URL::removePort):
(WebCore::URL::setPort):
(WebCore::URL::setHostAndPort):
(WebCore::URL::setUser):
(WebCore::URL::setPass):
(WebCore::URL::setFragmentIdentifier):
(WebCore::URL::removeFragmentIdentifier):
(WebCore::URL::setQuery):
(WebCore::URL::setPath):
* platform/URLParser.cpp:
(WebCore::URLParser::incrementIteratorSkippingTabAndNewLine):
(WebCore::URLParser::isWindowsDriveLetter):
(WebCore::URLParser::checkWindowsDriveLetter):
(WebCore::URLParser::shouldCopyFileURL):
(WebCore::URLParser::failure):
(WebCore::URLParser::URLParser):
(WebCore::URLParser::parse):
(WebCore::incrementIteratorSkippingTabAndNewLine): Deleted.
(WebCore::isWindowsDriveLetter): Deleted.
(WebCore::checkWindowsDriveLetter): Deleted.
(WebCore::shouldCopyFileURL): Deleted.
* platform/URLParser.h:
(WebCore::URLParser::URLParser):
(WebCore::URLParser::result):
(WebCore::URLParser::parse): Deleted.
* platform/cf/URLCF.cpp:
(WebCore::URL::URL):
Drive-by fix: Actually assign the URL to be the result of parsing.
* platform/mac/URLMac.mm:
(WebCore::URL::URL):

Tools:

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

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

4 years agoiOS playback user action tests fail on some machines
ap@apple.com [Fri, 23 Sep 2016 20:23:58 +0000 (20:23 +0000)]
iOS playback user action tests fail on some machines
https://bugs.webkit.org/show_bug.cgi?id=162504
rdar://problem/28013994

Reviewed by Jer Noble.

Avoid the need to have a timeout.

* TestWebKitAPI/Tests/WebKit/ios/audio-only.html:
* TestWebKitAPI/Tests/WebKit/ios/video-with-audio.html:
* TestWebKitAPI/Tests/WebKit/ios/video-without-audio.html:
* TestWebKitAPI/Tests/WebKit2Cocoa/large-video-without-audio.html:

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

4 years agoUnreviewed, rolling out r206314, r206316, and r206319.
ryanhaddad@apple.com [Fri, 23 Sep 2016 20:16:43 +0000 (20:16 +0000)]
Unreviewed, rolling out r206314, r206316, and r206319.
https://bugs.webkit.org/show_bug.cgi?id=162506

These changes broke various builds (Requested by ryanhaddad on
#webkit).

Reverted changesets:

"Need a store-load fence between setting cell state and
visiting the object in SlotVisitor"
https://bugs.webkit.org/show_bug.cgi?id=162354
http://trac.webkit.org/changeset/206314

"Unreviewed, fix cloop."
http://trac.webkit.org/changeset/206316

"Unreviewed, fix all other builds."
http://trac.webkit.org/changeset/206319

Patch by Commit Queue <commit-queue@webkit.org> on 2016-09-23

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

4 years agoRemove URLParser serialized template
achristensen@apple.com [Fri, 23 Sep 2016 19:57:57 +0000 (19:57 +0000)]
Remove URLParser serialized template
https://bugs.webkit.org/show_bug.cgi?id=162501

Reviewed by Brady Eidson.

No change in behavior.
This optimization conflicts with another optimization I'm doing.
We currently have the ParsedURLString tag, where we tell the parser to assume this URL is valid and canonicalized.
I'm going to instead make URLParser assume all URLs are valid and canonicalized until it finds that it is not,
in which case it will canonicalize it if possible.

* platform/URL.cpp:
(WebCore::URL::URL):
* platform/URLParser.cpp:
(WebCore::incrementIteratorSkippingTabAndNewLine):
(WebCore::isWindowsDriveLetter):
(WebCore::checkWindowsDriveLetter):
(WebCore::shouldCopyFileURL):
(WebCore::utf8PercentEncode):
(WebCore::utf8QueryEncode):
(WebCore::URLParser::parse):
(WebCore::URLParser::parseAuthority):
(WebCore::URLParser::parsePort):
(WebCore::URLParser::parseHostAndPort):
(WebCore::URLParser::parseSerializedURL): Deleted.
* platform/URLParser.h:
(WebCore::URLParser::parse):

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

4 years agoAllow Seeking from the now playing controls
jer.noble@apple.com [Fri, 23 Sep 2016 19:40:53 +0000 (19:40 +0000)]
Allow Seeking from the now playing controls
https://bugs.webkit.org/show_bug.cgi?id=162498

Reviewed by Beth Dakin.

We already have a handler for seek commands, we just need to register that handler
with MediaRemote.

* platform/mac/RemoteCommandListenerMac.mm:
(WebCore::RemoteCommandListenerMac::updateSupportedCommands):

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

4 years agoUnreviewed, fix all other builds.
fpizlo@apple.com [Fri, 23 Sep 2016 19:31:11 +0000 (19:31 +0000)]
Unreviewed, fix all other builds.

* assembler/AbstractMacroAssembler.h:

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

4 years agoSkip mozilla-tests.yaml/js1_5/Array/regress-157652 on memory limited devices
ossy@webkit.org [Fri, 23 Sep 2016 19:02:46 +0000 (19:02 +0000)]
Skip mozilla-tests.yaml/js1_5/Array/regress-157652 on memory limited devices
https://bugs.webkit.org/show_bug.cgi?id=162381

Reviewed by Mark Lam.

* mozilla/mozilla-tests.yaml:

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

4 years agoSkip stress/string-joining-long-strings-should-not-crash.js on memory limited devices
ossy@webkit.org [Fri, 23 Sep 2016 19:00:17 +0000 (19:00 +0000)]
Skip stress/string-joining-long-strings-should-not-crash.js on memory limited devices
https://bugs.webkit.org/show_bug.cgi?id=162386

Reviewed by Mark Lam.

* stress/string-joining-long-strings-should-not-crash.js:

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

4 years agoUnreviewed, fix cloop.
fpizlo@apple.com [Fri, 23 Sep 2016 18:47:41 +0000 (18:47 +0000)]
Unreviewed, fix cloop.

* assembler/AbstractMacroAssembler.h:
* heap/SlotVisitor.cpp:

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

4 years agoMediaSessionManagerMac::nowPlayingEligibleSession() needs to honor the main content...
wenson_hsieh@apple.com [Fri, 23 Sep 2016 18:45:53 +0000 (18:45 +0000)]
MediaSessionManagerMac::nowPlayingEligibleSession() needs to honor the main content heuristic
https://bugs.webkit.org/show_bug.cgi?id=162480
<rdar://problem/28430615>

Reviewed by Jer Noble.

Changes the implementation of nowPlayingEligibleSession to use bestMediaElementForShowingPlaybackControlsManager
and also early return nullptr if the current tab the web process is hosted in is the active tab, and the window
it is hosted in is the main window. This information is derived from the viewState flags in the Page of each
tab -- whenever the (visible && active) state changes, the Page tells the global media session manager to update
its Now Playing info. Then, when each MediaElementSession tries to determine whether it can show playback
controls for the purposes of Now Playing, each session consults its page's visible and active state. If a page
is both visible and active, no Now Playing controls are allowed for that media session.

Also adds some slight adjustments to MediaSessionManagerMac::updateNowPlayingInfo, so we reset the title, rate
and duration of the current active session when clearing out the now playing info. Likewise, when vending an
active video, if the video information matches that of the current session, we mark m_nowPlayingActive anyways.
These tweaks prevent us from getting in a bad state when switching between a tab with media and one without.

Unit tests to come in a future patch.

* html/HTMLMediaElement.cpp:
(WebCore::mediaElementSessionInfoForSession):
(WebCore::mediaSessionMayBeConfusedWithMainContent):
(WebCore::HTMLMediaElement::bestMediaElementForShowingPlaybackControlsManager):
(WebCore::HTMLMediaElement::updatePlaybackControlsManager):
(WebCore::bestMediaSessionForShowingPlaybackControlsManager): Deleted.
* html/HTMLMediaElement.h:
* html/MediaElementSession.cpp:
(WebCore::MediaElementSession::canShowControlsManager):
(WebCore::MediaElementSession::pageAllowsNowPlayingControls):
* html/MediaElementSession.h:
* page/Page.cpp:
(WebCore::Page::setViewState):
(WebCore::Page::isVisibleAndActive):
* page/Page.h:
* platform/audio/PlatformMediaSessionManager.cpp:
(WebCore::PlatformMediaSessionManager::updateNowPlayingInfoIfNecessary):
* platform/audio/PlatformMediaSessionManager.h:
* platform/audio/mac/MediaSessionManagerMac.mm:
(WebCore::PlatformMediaSessionManager::updateNowPlayingInfoIfNecessary):
(WebCore::MediaSessionManagerMac::nowPlayingEligibleSession):
(WebCore::MediaSessionManagerMac::updateNowPlayingInfo):

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

4 years agoSource/JavaScriptCore:
fpizlo@apple.com [Fri, 23 Sep 2016 18:09:44 +0000 (18:09 +0000)]
Source/JavaScriptCore:
Need a store-load fence between setting cell state and visiting the object in SlotVisitor
https://bugs.webkit.org/show_bug.cgi?id=162354

Reviewed by Mark Lam.

This was meant to be a small change, but then it became bigger as I found small
opportunities for improving this code. This adds a store-load fence and is performance-
neutral. That's probably partly due to other optimizations that I did to visitChildren().

Initially, I found that adding an mfence as a store-load fence was terribly expensive. So,
I thought that I needed to buffer up a bunch of objects, set their states, do one mfence,
and then visit all of them. This seemed like a win, so I went with it. Unfortunately, this
made no sense for two reasons:

- I shouldn't use mfence. I should use ortop (lock orl $0, (%rsp)) instead. Ortop is
  basically free, and it's what WTF now uses for storeLoadFence().

- My data saying that buffering up objects was not a slow-down was wrong. That was actually
  almost as expensive as the mfence.

But in order to implement that, I made some other improvements that I think we should stick
with:

- SlotVisitor::visitChildren() now uses a switch on type. This replaces what used to be
  some nasty ClassInfo look-ups.

- We no longer save the object's old CellState. We would do that so that we would know what
  state the object had been before we blackened it. But I believe that the more logical
  solution is to have two kinds of black - one for black-for-the-first-time objects and one
  for repeat offenders. This is a lot easier to reason about, since you can now just figure
  this out by looking at the cell directly.

The latter change meant rewiring a bunch of barriers. It didn't make them any more
expensive.

* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::emitStoreBarrier):
* heap/CellState.h:
(JSC::blacken):
* heap/Heap.cpp:
(JSC::Heap::addToRememberedSet):
* heap/Heap.h:
* heap/HeapInlines.h:
(JSC::Heap::writeBarrier):
(JSC::Heap::reportExtraMemoryVisited):
(JSC::Heap::reportExternalMemoryVisited):
* heap/MarkStack.cpp:
* heap/MarkStack.h:
* heap/SlotVisitor.cpp:
(JSC::SlotVisitor::visitChildren):
* heap/SlotVisitor.h:
* heap/SlotVisitorInlines.h:
(JSC::SlotVisitor::reportExtraMemoryVisited):
(JSC::SlotVisitor::reportExternalMemoryVisited):
* jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::jumpIfIsRememberedOrInEden):
* llint/LLIntData.cpp:
(JSC::LLInt::Data::performAssertions):
* llint/LowLevelInterpreter.asm:
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* runtime/JSObject.h:
(JSC::isJSFinalObject):

Source/WTF:
REGRESSION(r194387): Crash on github.com in IntlDateTimeFormat::resolvedOptions in C locale
https://bugs.webkit.org/show_bug.cgi?id=162139

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2016-09-23
Reviewed by Michael Catanzaro.

Handle the case of "C" or "POSIX" locale and use "en-US" as default. That matches what ICU and other ports do,
as well as what layout tests expect (some tests like js/intl-collator.html pass in the bots only because we use
en-US as system locale in those bots).

* wtf/PlatformUserPreferredLanguagesUnix.cpp:
(WTF::platformLanguage):

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

4 years agoTemporarily skipping media/media-source/media-source-duplicate-seeked.html on mac.
ryanhaddad@apple.com [Fri, 23 Sep 2016 17:49:15 +0000 (17:49 +0000)]
Temporarily skipping media/media-source/media-source-duplicate-seeked.html on mac.
https://bugs.webkit.org/show_bug.cgi?id=162496

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

4 years agoUnreviewed, rolling out r206311.
commit-queue@webkit.org [Fri, 23 Sep 2016 17:15:03 +0000 (17:15 +0000)]
Unreviewed, rolling out r206311.
https://bugs.webkit.org/show_bug.cgi?id=162495

Broke internal iOS build (Requested by anttik on #webkit).

Reverted changeset:

"Move stylesheet change logic from Document to
AuthorStyleSheets"
https://bugs.webkit.org/show_bug.cgi?id=162488
http://trac.webkit.org/changeset/206311

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