WebKit-https.git
4 years ago[JSC] Do not allocate unnecessary UTF-8 string for encodeXXX functions
utatane.tea@gmail.com [Tue, 7 Jun 2016 17:23:11 +0000 (17:23 +0000)]
[JSC] Do not allocate unnecessary UTF-8 string for encodeXXX functions
https://bugs.webkit.org/show_bug.cgi?id=158416

Reviewed by Darin Adler and Geoffrey Garen.

Source/JavaScriptCore:

Previously, encodeXXX functions first allocate new UTF-8 string, and generate (& allocate) the results from this UTF-8 string.
It is costly since this UTF-8 string is always wasted. In this patch, we generate the results without this UTF-8 string.
We precisely implement ECMA262's Encode abstract operation[1].

This optimized encodeXXX functions provide great improvement in kraken stanford-crypto-sha256-iterative since it frequently calls
these functions. We can see 6 - 7% improvements.

                                              baseline                  patched

stanford-crypto-sha256-iterative           37.952+-0.155      ^      35.484+-0.265         ^ definitely 1.0695x faster

[1]: https://tc39.github.io/ecma262/#sec-encode

* runtime/JSGlobalObjectFunctions.cpp:
(JSC::toSafeView):
Use this helper function to retrieve JSString::SafeView.

(JSC::makeCharacterBitmap):
(JSC::encode):
In encode, we reserve N length buffer at first. This is important when the length of the given string is long enough,
preventing frequent unnecessary buffer reallocations. This reserving contributes to 1% kraken stanford-crypto-sha256-iterative progression.

(JSC::decode):
Previously, Bitmap accidentally includes \0. And instead of removing this \0, we checked character != 0.
This patch fixes it for the Bitmap not to include \0.

(JSC::globalFuncParseInt):
(JSC::globalFuncEscape):
(JSC::globalFuncUnescape):
* tests/stress/encode-decode-ascii.js: Added.
(shouldBe):
* tests/stress/encode-decode-unicode.js: Added.
(shouldBe):
(isLowSurrogate):
(isHighSurrogate):
(isSurrogate):
* tests/stress/encode-decode-uri-component-surrogates.js: Added.
(shouldBe):
(toHighSurrogate):
(toLowSurrogate):
* tests/stress/encode-decode-uri-surrogates.js: Added.
(shouldBe):
(toHighSurrogate):
(toLowSurrogate):
* tests/stress/encode-decode-zero.js: Added.
(shouldBe):
* tests/stress/escape-unescape-surrogates.js: Added.
(shouldBe):
(toHighSurrogate):
(toLowSurrogate):

Source/WTF:

* wtf/Bitmap.h:
(WTF::Bitmap::size):
(WTF::WordType>::Bitmap):
(WTF::WordType>::get):
(WTF::WordType>::set):
(WTF::WordType>::testAndSet):
(WTF::WordType>::testAndClear):
(WTF::WordType>::concurrentTestAndSet):
(WTF::WordType>::concurrentTestAndClear):
(WTF::WordType>::clear):
(WTF::WordType>::clearAll):
(WTF::WordType>::nextPossiblyUnset):
(WTF::WordType>::findRunOfZeros):
(WTF::WordType>::count):
(WTF::WordType>::isEmpty):
(WTF::WordType>::isFull):

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

4 years ago[GTK] Include locale.h before using LC_ALL
commit-queue@webkit.org [Tue, 7 Jun 2016 16:37:13 +0000 (16:37 +0000)]
[GTK] Include locale.h before using LC_ALL
https://bugs.webkit.org/show_bug.cgi?id=158470

Patch by Ting-Wei Lan <lantw44@gmail.com> on 2016-06-07
Reviewed by Darin Adler.

* jsc.cpp:

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

4 years agoUnskip generator related stress tests
commit-queue@webkit.org [Tue, 7 Jun 2016 16:19:59 +0000 (16:19 +0000)]
Unskip generator related stress tests
https://bugs.webkit.org/show_bug.cgi?id=158461

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-06-07
Reviewed by Darin Adler.

* tests/stress/generator-methods.js:
* tests/stress/generator-syntax.js:
* tests/stress/yield-and-line-terminator.js:
* tests/stress/yield-label-generator.js:
* tests/stress/yield-named-accessors-generator.js:
* tests/stress/yield-named-variable-generator.js:
* tests/stress/yield-out-of-generator.js:

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

4 years agoCSP: Content Security Policy directive, upgrade-insecure-requests (UIR)
bfulgham@apple.com [Tue, 7 Jun 2016 15:47:30 +0000 (15:47 +0000)]
CSP: Content Security Policy directive, upgrade-insecure-requests (UIR)
https://bugs.webkit.org/show_bug.cgi?id=143653
<rdar://problem/23032067>

Reviewed by Andy Estes.

Source/WebCore:

Modify our loading logic so that we recognize and upgrade insecure requests to secure
requests if the Content Security Policy directive 'upgrade-insecure-requests' is
present.

Add a static helper function to ContentSecurityPolicy to upgrade insecure URLs so
that we don't have to sprinkle the same code all over the loader system.

Tests: http/tests/security/contentSecurityPolicy/report-only-upgrade-insecure.php
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/basic-upgrade-cors.https.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/basic-upgrade.https.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/form-upgrade.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/https-header-auxiliary.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/https-header-nested.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/https-header-subresource.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/https-header-top-level.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/iframe-upgrade.https.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/proper-nested-upgrades.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/proper-open-window-upgrades.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-audio-video-in-main-frame.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-css-in-iframe.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-image-in-main-frame.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-simple-ws.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-xhr-in-main-frame.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-redirect-http-to-https-script-in-iframe.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-redirect-https-to-http-script-in-iframe.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrades-mixed-content.html
       http/tests/ssl/iframe-upgrade.https.html
       http/tests/ssl/upgrade-origin-usage.html
       http/tests/websocket/tests/hybi/upgrade-simple-ws.html

* Modules/websockets/WebSocket.cpp:
(WebCore::WebSocket::connect): Upgrade insecure requests if the CSP
indicates we should.
* dom/Document.cpp:
(WebCore::Document::initSecurityContext): Populate new document CSP with sets of upgrade host and port combinations.
* dom/ScriptElement.cpp:
(WebCore::ScriptElement::requestScript): Upgrade insecure requests if
the CSP indicates we should.
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::loadResource): Ditto.
* loader/DocumentWriter.cpp:
(WebCore::DocumentWriter::begin): Ditto.
* loader/FormSubmission.cpp:
(WebCore::FormSubmission::create): Ditto.
(WebCore::FormSubmission::populateFrameLoadRequest): Add "Upgrade-Insecure-Requests"
header to frame load requests.
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::addExtraFieldsToMainResourceRequest): Add the
'Update-Insecure-Requests' header field if necessary.
(WebCore::FrameLoader::addHTTPUpgradeInsecureRequestsIfNeeded): Added helper function.
(WebCore::FrameLoader::loadPostRequest): Upgrade insecure requests if the CSP
indicates we should.
(WebCore::FrameLoader::loadResourceSynchronously): Ditto.
(WebCore::FrameLoader::loadDifferentDocumentItem): If loading a form, add the
'Update-Insecure-Requests' header field if necessary.
(WebCore::createWindow): Upgrade insecure requests if the CSP
indicates we should.
* loader/FrameLoader.h:
* loader/PingLoader.cpp:
(WebCore::PingLoader::loadImage): Upgrade insecure requests if the CSP
indicates we should.
(WebCore::PingLoader::sendPing): Ditto.
(WebCore::PingLoader::sendViolationReport): Ditto.
* loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::willSendRequestInternal): Ditto.
* loader/SubframeLoader.cpp:
(WebCore::SubframeLoader::requestFrame): Ditto.
(WebCore::SubframeLoader::requestObject): Ditto.
* loader/appcache/ApplicationCacheHost.cpp:
(WebCore::ApplicationCacheHost::shouldLoadResourceFromApplicationCache): Ditto.
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::requestImage): Ditto.
(WebCore::CachedResourceLoader::requestResource): Ditto.
* page/DOMWindow.cpp:
(WebCore::DOMWindow::createWindow): Add the 'Update-Insecure-Requests' header
field if necessary.
* page/csp/ContentSecurityPolicy.cpp:
(WebCore::ContentSecurityPolicy::copyStateFrom): Populate upgraded resource set
from other context.
(WebCore::ContentSecurityPolicy::upgradeInsecureRequestIfNeeded): Added helper function
to upgrade requests when the upgrade-insecure-requests CSP policy is present, or if
the host and port combination have previously been upgraded.
(WebCore::ContentSecurityPolicy::upgradeInsecureNavigationRequestIfNeeded): Added
helper function to upgrade requests that have been previously upgraded. Cross-site
navigations only get upgraded when they have been previously upgraded.
(WebCore::ContentSecurityPolicy::addInsecureNavigationRequestsToUpgrade): Added.
(WebCore::ContentSecurityPolicy::populateInsecureNavigationRequestsToUpgradeFromOther): Added.
* page/csp/ContentSecurityPolicy.h:
(WebCore::ContentSecurityPolicy::setUpgradeInsecureRequests): Added.
(WebCore::ContentSecurityPolicy::upgradeInsecureRequests): Added.
* page/csp/ContentSecurityPolicyDirectiveList.cpp:
(WebCore::ContentSecurityPolicyDirectiveList::ContentSecurityPolicyDirectiveList): Use
more C++11 initializations.
(WebCore::ContentSecurityPolicyDirectiveList::setUpgradeInsecureRequests): Added.
(WebCore::ContentSecurityPolicyDirectiveList::addDirective): Teach this function to
recognize the new directive.
* page/csp/ContentSecurityPolicyDirectiveList.h:
* page/csp/ContentSecurityPolicyDirectiveNames.cpp:
* page/csp/ContentSecurityPolicyDirectiveNames.h:
* platform/network/HTTPHeaderNames.in: Add new 'Upgrade-Insecure-Requests' header field.
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::open): Upgrade insecure requests if the CSP if needed.

LayoutTests:

Some of these tests are based on a set of Blink patches by Mike West <mkwst@chromium.org>.
<https://src.chromium.org/viewvc/blink?revision=192607&view=revision>,
<https://codereview.chromium.org/1178093002>, <https://codereview.chromium.org/1964303003>

The rest of them are based on our own mixedContent tests, revised for upgraded requests.

Note that WebSockets are not part of this testing at present due to https://bugs.webkit.org/show_bug.cgi?id=157884.

* http/tests/security/contentSecurityPolicy/report-only-upgrade-insecure.php: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/basic-upgrade-cors.https-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/basic-upgrade-cors.https.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/basic-upgrade.https-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/basic-upgrade.https.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/form-upgrade-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/form-upgrade.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/https-header-auxiliary-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/https-header-auxiliary.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/https-header-nested-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/https-header-nested.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/https-header-subresource-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/https-header-subresource.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/https-header-top-level-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/https-header-top-level.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/iframe-upgrade.https-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/iframe-upgrade.https.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/proper-nested-upgrades-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/proper-nested-upgrades.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/proper-open-window-upgrades-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/proper-open-window-upgrades.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/resources: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/resources/basic-upgrade-cors.https.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/resources/check-https-header.pl: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/resources/echo-https-header.pl: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/resources/frame-with-insecure-audio-video.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/resources/frame-with-insecure-css.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/resources/frame-with-insecure-image.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/resources/frame-with-redirect-http-to-https-script.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/resources/frame-with-redirect-https-to-http-script.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/resources/insecure-xhr-in-main-frame-window.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/resources/mixed-content-with-upgrade.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/resources/post-https-header.pl: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-audio-video-in-main-frame-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-audio-video-in-main-frame.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-css-in-iframe-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-css-in-iframe.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-image-in-main-frame-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-image-in-main-frame.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-xhr-in-main-frame-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-xhr-in-main-frame.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-redirect-http-to-https-script-in-iframe-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-redirect-http-to-https-script-in-iframe.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-redirect-https-to-http-script-in-iframe-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-redirect-https-to-http-script-in-iframe.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrades-mixed-content-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrades-mixed-content.html: Added.
* http/tests/security/resources/post-origin-to-parent.html: Added.
* http/tests/ssl/iframe-upgrade.https-expected.txt: Added.
* http/tests/ssl/iframe-upgrade.https.html: Added.
* http/tests/ssl/upgrade-origin-usage-expected.txt: Added.
* http/tests/ssl/upgrade-origin-usage.html: Added.
* http/tests/ssl/resources/origin-usage-iframe-1.html: Added.
* http/tests/ssl/resources/origin-usage-iframe-1.manifest: Added.
* http/tests/ssl/resources/origin-usage-iframe-2.html: Added.
* http/tests/ssl/resources/origin-usage-iframe-2.manifest: Added.
* http/tests/websocket/tests/hybi/upgrade-simple-ws-expected.txt: Added.
* http/tests/websocket/tests/hybi/upgrade-simple-ws.html: Added.
* TestExpectations: Skip http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-simple-ws.html since the
WebSocket server does not currently support wss sockets.

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

4 years agoVideo elements are painted twice, in PaintPhaseForeground and PaintPhaseSelfOutline
commit-queue@webkit.org [Tue, 7 Jun 2016 15:03:40 +0000 (15:03 +0000)]
Video elements are painted twice, in PaintPhaseForeground and PaintPhaseSelfOutline
https://bugs.webkit.org/show_bug.cgi?id=158247

Patch by Fujii Hironori <Hironori.Fujii@sony.com> on 2016-06-07
Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/replaced/outline-replaced-elements-offset.html

In <http://trac.webkit.org/changeset/105247>,
RenderReplaced::paint was changed to call
RenderReplaced::paintReplaced in PaintPhaseOutline and
PaintPhaseSelfOutline to paint outline of SVG.

As the result, RenderVideo::paintReplaced paints twice,
in forground and outline phase.

It was changed to paint outline of SVG in PaintPhaseForeground
since <http://trac.webkit.org/changeset/168645>.  No need to call
RenderReplaced::paintReplaced in outline phases anymore.

* rendering/RenderReplaced.cpp:
(WebCore::RenderReplaced::paint): Return early if
PaintPhaseOutline or PaintPhaseSelfOutline.
Return early unless PaintPhaseForeground nor PaintPhaseSelection,
even if canHaveChildren().

LayoutTests:

* fast/replaced/outline-replaced-elements-offset-expected.html: Added.
* fast/replaced/outline-replaced-elements-offset.html: Added.

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

4 years ago[GTK] Mark fast/text/international/system-language/han-quotes.html as flaky
mcatanzaro@igalia.com [Tue, 7 Jun 2016 14:32:24 +0000 (14:32 +0000)]
[GTK] Mark fast/text/international/system-language/han-quotes.html as flaky

Unreviewed gardening

* platform/gtk/TestExpectations:

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

4 years ago[Mac][cmake] Unreviewed trivial buildfix after r201689. Just for fun.
ossy@webkit.org [Tue, 7 Jun 2016 14:22:53 +0000 (14:22 +0000)]
[Mac][cmake] Unreviewed trivial buildfix after r201689. Just for fun.

* PlatformMac.cmake:

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

4 years ago[GTK] Hide GTK+ 2 plugins if GTK+ 2 plugin process was built but is not installed
mcatanzaro@igalia.com [Tue, 7 Jun 2016 14:12:54 +0000 (14:12 +0000)]
[GTK] Hide GTK+ 2 plugins if GTK+ 2 plugin process was built but is not installed
https://bugs.webkit.org/show_bug.cgi?id=158419

Reviewed by Carlos Garcia Campos.

* UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp:
(WebKit::PluginInfoStore::getPluginInfo):
* UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:
(WebKit::PluginProcessProxy::scanPlugin):

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

4 years ago[Win][IndexedDB] Crash when running worker test.
peavo@outlook.com [Tue, 7 Jun 2016 12:43:21 +0000 (12:43 +0000)]
[Win][IndexedDB] Crash when running worker test.
https://bugs.webkit.org/show_bug.cgi?id=158434

Reviewed by Alex Christensen.

Initialize main runloop, otherwise RunLoop::main() will return nullptr.

* WebView.cpp:
(WebView::WebView):

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

4 years agoCreating a TouchList with non Touch items should throw an exception
nael.ouedraogo@crf.canon.fr [Tue, 7 Jun 2016 10:06:53 +0000 (10:06 +0000)]
Creating a TouchList with non Touch items should throw an exception
https://bugs.webkit.org/show_bug.cgi?id=158302

Reviewed by Youenn Fablet.

Source/WebCore:

Only Touch items should be passed to CreateTouchList function as per specification
(https://w3c.github.io/touch-events/#extensions-to-the-document-interface).
CreateTouchList function behavior is modified. An exception is thrown when non Touch items
are passed as parameters instead of adding null items in the TouchList.

Tests have been modified to check whether behavior of CreateTouchList is correct.

* bindings/js/JSDocumentCustom.cpp:
(WebCore::JSDocument::createTouchList):
* dom/Document.idl:

LayoutTests:

Only Touch items should be passed to CreateTouchList function as
per specification (https://w3c.github.io/touch-events/#extensions-to-the-document-interface).

Tests have been modified to check whether behavior of CreateTouchList is correct.

* fast/events/touch/document-create-touch-list-crash-expected.txt:
* fast/events/touch/document-create-touch-list-expected.txt:
* fast/events/touch/script-tests/document-create-touch-list-crash.js:
* fast/events/touch/script-tests/document-create-touch-list.js:

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

4 years agoUnskip js/script-tests/class-syntax-scoping.js
commit-queue@webkit.org [Tue, 7 Jun 2016 08:33:32 +0000 (08:33 +0000)]
Unskip js/script-tests/class-syntax-scoping.js
https://bugs.webkit.org/show_bug.cgi?id=158458

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-06-07
Reviewed by Ryosuke Niwa.

* js/script-tests/class-syntax-scoping.js:

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

4 years agoFix typo in test name trailing-comma-in-function-paramters.js
commit-queue@webkit.org [Tue, 7 Jun 2016 06:33:30 +0000 (06:33 +0000)]
Fix typo in test name trailing-comma-in-function-paramters.js
https://bugs.webkit.org/show_bug.cgi?id=158462

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-06-06
Reviewed by Mark Lam.

* tests/stress/trailing-comma-in-function-parameters.js: Renamed from Source/JavaScriptCore/tests/stress/trailing-comma-in-function-paramters.js.

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

4 years agoASSERTION failed in get-by-pname.js when run with JSC_useLLINT=false and 2 other...
commit-queue@webkit.org [Tue, 7 Jun 2016 06:32:32 +0000 (06:32 +0000)]
ASSERTION failed in get-by-pname.js when run with JSC_useLLINT=false and 2 other configurations
https://bugs.webkit.org/show_bug.cgi?id=138497
<rdar://problem/18909792>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-06-06
Reviewed by Mark Lam.

* js/script-tests/get-by-pname.js:
Test is no longer failing. Lets unskip.

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

4 years agoUnreviewed, rolling out r201735.
commit-queue@webkit.org [Tue, 7 Jun 2016 06:06:26 +0000 (06:06 +0000)]
Unreviewed, rolling out r201735.
https://bugs.webkit.org/show_bug.cgi?id=158465

fast/events/AddEventListenerOptions-once-recursive.html fails
on all bots (Requested by ap on #webkit).

Reverted changeset:

"Implement EventListenerOptions argument to addEventListener"
https://bugs.webkit.org/show_bug.cgi?id=149466
http://trac.webkit.org/changeset/201735

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

4 years agoUnreviewed, rolling out r201679.
commit-queue@webkit.org [Tue, 7 Jun 2016 06:05:03 +0000 (06:05 +0000)]
Unreviewed, rolling out r201679.
https://bugs.webkit.org/show_bug.cgi?id=158464

http/tests/websocket/tests/hybi/upgrade-simple-ws.html is
flaky (Requested by ap on #webkit).

Reverted changeset:

"CSP: Content Security Policy directive, upgrade-insecure-
requests (UIR)"
https://bugs.webkit.org/show_bug.cgi?id=143653
http://trac.webkit.org/changeset/201679

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

4 years agoREGRESSION(r197595): 2% JSBench regression on iPhone 5.
akling@apple.com [Tue, 7 Jun 2016 05:54:11 +0000 (05:54 +0000)]
REGRESSION(r197595): 2% JSBench regression on iPhone 5.
<https://webkit.org/b/158459>

Unreviewed rollout.

* runtime/VM.cpp:
(JSC::VM::deleteAllRegExpCode): Deleted.
* runtime/VM.h:

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

4 years agoURLs containing tabs or newlines are parsed incorrectly
jiewen_tan@apple.com [Tue, 7 Jun 2016 05:46:44 +0000 (05:46 +0000)]
URLs containing tabs or newlines are parsed incorrectly
https://bugs.webkit.org/show_bug.cgi?id=143381
<rdar://problem/26567214>

Reviewed by Brent Fulgham.

Source/WebCore:

1. Strip any tabs and newlines in the URL input.
2. Replace the original stripping URL leading and trailing white spaces logic with WTFString's
builtin, and move this logic to the very begining of the URL parser.
3. Enhance the protocolIs method to ignore any leading whitespace/control characters, and
tabs/newlines of the examining url.

Test: fast/url/tab-and-newline-stripping.html

* platform/URL.cpp:
(WebCore::isTabNewline):
(WebCore::shouldTrimFromURL):
(WebCore::URL::init):
(WebCore::protocolIs):

LayoutTests:

* fast/dom/DOMURL/set-href-attribute-host-expected.txt:
* fast/dom/DOMURL/set-href-attribute-host.html:
* fast/dom/HTMLAnchorElement/script-tests/set-href-attribute-host.js:
* fast/dom/HTMLAnchorElement/set-href-attribute-host-expected.txt:
* fast/url/segments-expected.txt:
* fast/url/segments-from-data-url-expected.txt:
* fast/url/segments-from-data-url.html:
* fast/url/segments.html:
* fast/url/tab-and-newline-stripping-expected.txt: Added.
* fast/url/tab-and-newline-stripping.html: Added.
* http/tests/security/javascriptURL/javascriptURL-execution-context-frame-location-htmldom-expected.txt:
* http/tests/security/javascriptURL/javascriptURL-execution-context-frame-src-getAttribute-value-expected.txt:
* http/tests/security/javascriptURL/javascriptURL-execution-context-frame-src-htmldom-expected.txt:
* http/tests/security/javascriptURL/javascriptURL-execution-context-frame-src-setAttribute-expected.txt:
* http/tests/security/javascriptURL/javascriptURL-execution-context-frame-src-setAttributeNS-expected.txt:
* http/tests/security/javascriptURL/javascriptURL-execution-context-frame-src-setAttributeNode-expected.txt:
* http/tests/security/javascriptURL/javascriptURL-execution-context-frame-src-setAttributeNodeNS-expected.txt:
* http/tests/security/javascriptURL/javascriptURL-execution-context-iframe-src-getAttribute-value-expected.txt:
* http/tests/security/javascriptURL/javascriptURL-execution-context-iframe-src-htmldom-expected.txt:
* http/tests/security/javascriptURL/javascriptURL-execution-context-iframe-src-setAttribute-expected.txt:
* http/tests/security/javascriptURL/javascriptURL-execution-context-iframe-src-setAttributeNS-expected.txt:
* http/tests/security/javascriptURL/javascriptURL-execution-context-iframe-src-setAttributeNode-expected.txt:
* http/tests/security/javascriptURL/javascriptURL-execution-context-iframe-src-setAttributeNodeNS-expected.txt:
* http/tests/security/xssAuditor/javascript-link-control-char2-expected.txt:

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

4 years agoUpdate the list of elements attachShadow is allowed
rniwa@webkit.org [Tue, 7 Jun 2016 04:02:11 +0000 (04:02 +0000)]
Update the list of elements attachShadow is allowed
https://bugs.webkit.org/show_bug.cgi?id=157706

Reviewed by Darin Adler.

Source/WebCore:

Update the list of elements on which attachShadow is allowed per the latest shadow DOM spec:
http://www.w3.org/TR/shadow-dom/#widl-Element-attachShadow-ShadowRoot-ShadowRootInit-shadowRootInitDict
which now only allows attachShadow on the following elements and custom elements:
button, details, input, marquee, meter, progress, select, textarea, keygen

In order to check that a given HTML element's local name is a valid custom element name,
this patch moves CustomElementDefinitions::checkName to Document::validateCustomElementName so that
it could be used when either SHADOW_DOM or CUSTOM_ELEMENTS build flag is turned on.

Also removed Element::canHaveUserAgentShadowRoot since it was only used in Element::attachShadow.

Test: fast/shadow-dom/Element-interface-attachShadow.html

* bindings/js/JSDocumentCustom.cpp:
(WebCore::JSDocument::defineElement):
* dom/CustomElementDefinitions.cpp:
(WebCore::CustomElementDefinitions::checkName): Moved to Document::validateCustomElementName.
* dom/CustomElementDefinitions.h:
* dom/Document.cpp:
(WebCore::createHTMLElementWithNameValidation):
(WebCore::createFallbackHTMLElement):
(WebCore::Document::validateCustomElementName): Moved from CustomElementDefinitions::checkName.
* dom/Document.h:
* dom/Element.cpp:
(WebCore::canAttachAuthorShadowRoot): Added.
(WebCore::Element::attachShadow):
* dom/Element.h:
* html/HTMLButtonElement.h:
* html/HTMLDetailsElement.h:
* html/HTMLInputElement.h:
* html/HTMLKeygenElement.h:
* html/HTMLMarqueeElement.h:
* html/HTMLMediaElement.h:
* html/HTMLMeterElement.h:
* html/HTMLPlugInElement.h:
* html/HTMLProgressElement.h:
* html/HTMLQuoteElement.h:
* html/HTMLSelectElement.h:
* html/HTMLSummaryElement.h:
* html/HTMLTagNames.in:
* html/HTMLTextAreaElement.h:
* html/HTMLUnknownElement.h:
* html/parser/HTMLConstructionSite.cpp:
(WebCore::HTMLConstructionSite::createHTMLElementOrFindCustomElementInterface):

LayoutTests:

Added more test cases for validating elements on which attachShadow is allowed and disallowed.

* fast/shadow-dom/Element-interface-attachShadow-expected.txt:
* fast/shadow-dom/Element-interface-attachShadow.html:

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

4 years agoequal(StringView, StringView) for strings should have a fast path for pointer equality
sbarati@apple.com [Tue, 7 Jun 2016 03:24:54 +0000 (03:24 +0000)]
equal(StringView, StringView) for strings should have a fast path for pointer equality
https://bugs.webkit.org/show_bug.cgi?id=158452

Reviewed by Andreas Kling.

JSBench does a lot of StringView::operator== on StringViews that have
the same underlying characters pointer. This becomes hot inside JSBench
because JSBench heavily stresses JSC's UnlinkedCodeCache with a high
hit rate. This means that when we get a hit in the cache, we used to
do the long form of string compare. However, we were often comparing
two StringViews that had the same underlying buffer and length.
This patch speeds this case up to run in constant time instead of
linear time.

* wtf/text/StringCommon.h:
(WTF::equalCommon):
* wtf/text/StringImpl.h:
(WTF::StringImpl::StringImpl):
(WTF::StringImpl::data):
* wtf/text/StringView.h:
(WTF::StringView::data):

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

4 years agooctal and binary parsing is wrong for some programs
msaboff@apple.com [Tue, 7 Jun 2016 03:02:06 +0000 (03:02 +0000)]
octal and binary parsing is wrong for some programs
https://bugs.webkit.org/show_bug.cgi?id=158437

Reviewed by Saam Barati.

When there is an error parsing an binary or octal literal, we need to clear the returnValue
of any residual value.  This is because the processing of returnValue happens before the
syntax check for the extra character.  Without clearing returnValue, we end trying to
categorize the value as an INTEGER or DOUBLE token.  If the value happens to be an
impure NaN, we ASSERT.

* parser/Lexer.cpp:
(JSC::Lexer<T>::parseBinary):
(JSC::Lexer<T>::parseOctal):
* tests/stress/regress-158437.js: New test.

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

4 years agoCrash inside moveOutOfAllShadowRoots
rniwa@webkit.org [Tue, 7 Jun 2016 02:40:10 +0000 (02:40 +0000)]
Crash inside moveOutOfAllShadowRoots
https://bugs.webkit.org/show_bug.cgi?id=158378

Reviewed by Antti Koivisto.

Source/WebCore:

The bug was caused by InShadowTreeFlag not being cleared when a shadow host or its ancestor was removed
due to addChildNodesToDeletionQueue not invoking notifyChildNodeRemoved when a node was in a shadow tree
but not in a document.

Fixed the bug by invoking notifyChildNodeRemoved when the removed node is either in a shadow tree
or it's in a shadow tree. Also fixed a bug in VTTCue::~VTTCue that it was trying to remove the display
tree even when the owner document was being destroyed. This results in various assertions to be hit.

Test: fast/shadow-dom/shadow-host-removal-crash.html

* dom/ContainerNodeAlgorithms.cpp:
(WebCore::addChildNodesToDeletionQueue):
* html/track/VTTCue.cpp:
(WebCore::VTTCue::~VTTCue):

LayoutTests:

Added a regression test that reproduced the crash reliably at least on my machine.

* fast/shadow-dom/shadow-host-removal-crash-expected.txt: Added.
* fast/shadow-dom/shadow-host-removal-crash.html: Added.
* platform/ios-simulator/TestExpectations:

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

4 years agoImplement EventListenerOptions argument to addEventListener
cdumez@apple.com [Tue, 7 Jun 2016 02:35:39 +0000 (02:35 +0000)]
Implement EventListenerOptions argument to addEventListener
https://bugs.webkit.org/show_bug.cgi?id=149466
<rdar://problem/22802031>

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Import new test from W3C that covers EventListenerOptions.

* web-platform-tests/dom/events/EventListenerOptions-capture-expected.txt: Added.
* web-platform-tests/dom/events/EventListenerOptions-capture.html: Added.

Source/WebCore:

Implement AddEventListenerOptions dictionary argument to addEventListener()
and EventListenerOptions dictionary argument to removeEventListener(), as
per the latest DOM specification:
- https://dom.spec.whatwg.org/#interface-eventtarget

Firefox and Chrome already support this.

Support for AddEventListenerOptions in this patch is as follows:
- 'capture': fully supported.
- 'once': fully supported.
- 'passive': supported in the sense that preventDefault() will be ignored
             for passive event listeners. There are however currently no
             performance benefits from passing this flag. Those optimizations
             will be implemented in follow-up patches (in particular for
             Touch and Scroll events).

Tests: fast/events/AddEventListenerOptions-once-recursive.html
       fast/events/AddEventListenerOptions-once.html
       fast/events/AddEventListenerOptions-passive.html
       fast/events/removeEventListener-EventListenerOptions-capture.html
       imported/w3c/web-platform-tests/dom/events/EventListenerOptions-capture.html

* Modules/webaudio/AudioScheduledSourceNode.cpp:
(WebCore::AudioScheduledSourceNode::addEventListener):
(WebCore::AudioScheduledSourceNode::removeEventListener):
* Modules/webaudio/AudioScheduledSourceNode.h:
* Modules/webaudio/ScriptProcessorNode.cpp:
(WebCore::ScriptProcessorNode::addEventListener):
(WebCore::ScriptProcessorNode::removeEventListener):
* Modules/webaudio/ScriptProcessorNode.h:
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateParametersCheckExpression):
* dom/Event.h:
(WebCore::Event::preventDefault):
(WebCore::Event::setInPassiveListener):
* dom/EventListenerMap.cpp:
(WebCore::addListenerToVector):
(WebCore::EventListenerMap::add):
* dom/EventListenerMap.h:
* dom/EventTarget.cpp:
(WebCore::EventTarget::addEventListener):
(WebCore::EventTarget::addEventListenerForBindings):
(WebCore::EventTarget::removeEventListenerForBindings):
(WebCore::EventTarget::removeEventListener):
(WebCore::EventTarget::setAttributeEventListener):
(WebCore::EventTarget::fireEventListeners):
* dom/EventTarget.h:
(WebCore::EventTarget::ListenerOptions::ListenerOptions):
(WebCore::EventTarget::AddEventListenerOptions::AddEventListenerOptions):
(WebCore::EventTarget::addEventListener):
(WebCore::EventTarget::addEventListenerForBindings):
(WebCore::EventTarget::removeEventListenerForBindings):
* dom/EventTarget.idl:
* dom/MessagePort.cpp:
(WebCore::MessagePort::addEventListener):
* dom/MessagePort.h:
* dom/Node.cpp:
(WebCore::tryAddEventListener):
(WebCore::Node::addEventListener):
(WebCore::tryRemoveEventListener):
(WebCore::Node::removeEventListener):
* dom/Node.h:
* dom/RegisteredEventListener.h:
(WebCore::RegisteredEventListener::Options::Options):
(WebCore::RegisteredEventListener::RegisteredEventListener):
(WebCore::operator==):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::addEventListener):
(WebCore::HTMLMediaElement::removeEventListener):
* html/HTMLMediaElement.h:
* page/DOMWindow.cpp:
(WebCore::DOMWindow::addEventListener):
(WebCore::DOMWindow::removeEventListener):
* page/DOMWindow.h:
* svg/SVGElement.cpp:
(WebCore::SVGElement::addEventListener):
(WebCore::SVGElement::removeEventListener):
* svg/SVGElement.h:

LayoutTests:

* fast/events/AddEventListenerOptions-once-expected.txt: Added.
* fast/events/AddEventListenerOptions-once-recursive-expected.txt: Added.
* fast/events/AddEventListenerOptions-once-recursive.html: Added.
* fast/events/AddEventListenerOptions-once.html: Added.
* fast/events/AddEventListenerOptions-passive-expected.txt: Added.
* fast/events/AddEventListenerOptions-passive.html: Added.
* fast/events/removeEventListener-EventListenerOptions-capture-expected.txt: Added.
* fast/events/removeEventListener-EventListenerOptions-capture.html: Added.

Add layout testing coverage for various aspects of the functionality.

* imported/blink/fast/events/eventlisteneroptions/capture_default-expected.txt: Added.
* imported/blink/fast/events/eventlisteneroptions/capture_default.html: Added.
* imported/blink/fast/events/eventlisteneroptions/capture_equality-expected.txt: Added.
* imported/blink/fast/events/eventlisteneroptions/capture_equality.html: Added.
* imported/blink/fast/events/eventlisteneroptions/capture_query-expected.txt: Added.
* imported/blink/fast/events/eventlisteneroptions/capture_query.html: Added.
* imported/blink/fast/events/eventlisteneroptions/passive_dispatch-expected.txt: Added.
* imported/blink/fast/events/eventlisteneroptions/passive_dispatch.html: Added.
* imported/blink/fast/events/eventlisteneroptions/passive_inequality-expected.txt: Added.
* imported/blink/fast/events/eventlisteneroptions/passive_inequality.html: Added.
* imported/blink/fast/events/eventlisteneroptions/passive_query-expected.txt: Added.
* imported/blink/fast/events/eventlisteneroptions/passive_query.html: Added.

Import blink tests for this functionality.

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

4 years agoUnreviewed, rolling out r201730.
ryanhaddad@apple.com [Tue, 7 Jun 2016 00:36:45 +0000 (00:36 +0000)]
Unreviewed, rolling out r201730.
https://bugs.webkit.org/show_bug.cgi?id=158453

This change caused existing LayoutTests to crash (Requested by
ryanhaddad on #webkit).

Reverted changeset:

"Implement EventListenerOptions argument to addEventListener"
https://bugs.webkit.org/show_bug.cgi?id=149466
http://trac.webkit.org/changeset/201730

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

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

4 years ago32-bit JSC stress test failing: stress/recursive-try-catch.js.ftl-no-cjit-validate...
mark.lam@apple.com [Tue, 7 Jun 2016 00:00:55 +0000 (00:00 +0000)]
32-bit JSC stress test failing: stress/recursive-try-catch.js.ftl-no-cjit-validate-sampling-profiler
https://bugs.webkit.org/show_bug.cgi?id=158362

Reviewed by Michael Saboff.

The test does infinite recursion until it overflows the stack.  That means the
sampling profiler will have to capture excessively large samples, which in turn
makes it run very slowly.  This is what causes the test time out.

The fix is to not run the test with the sampling profiler.

* tests/stress/recursive-try-catch.js:

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

4 years agoDon't reportAbandonedObjectGraph() after throwing out linked code or RegExps.
akling@apple.com [Mon, 6 Jun 2016 23:38:48 +0000 (23:38 +0000)]
Don't reportAbandonedObjectGraph() after throwing out linked code or RegExps.
<https://webkit.org/b/158444>

Unreviewed.

This is a speculative change for iOS performance bots. The calls to reportAbandonedObjectGraph
were basically redundant, since mainframe navigation will cause GC acceleration anyway via
ScriptController.

This appears successful at recovering the ~0.7% regression I could reproduce locally on newer
hardware but it's a bit too noisy to say for sure.

* runtime/VM.cpp:
(JSC::VM::deleteAllLinkedCode):
(JSC::VM::deleteAllRegExpCode):

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

4 years agoMarking http/tests/misc/slow-loading-animated-image.html as flaky on ios-simulator
ryanhaddad@apple.com [Mon, 6 Jun 2016 22:33:44 +0000 (22:33 +0000)]
Marking http/tests/misc/slow-loading-animated-image.html as flaky on ios-simulator
https://bugs.webkit.org/show_bug.cgi?id=157916

Unreviewed test gardening.

* platform/ios-simulator/TestExpectations:

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

4 years agoImplement EventListenerOptions argument to addEventListener
cdumez@apple.com [Mon, 6 Jun 2016 22:28:25 +0000 (22:28 +0000)]
Implement EventListenerOptions argument to addEventListener
https://bugs.webkit.org/show_bug.cgi?id=149466
<rdar://problem/22802031>

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Import new test from W3C that covers EventListenerOptions.

* web-platform-tests/dom/events/EventListenerOptions-capture-expected.txt: Added.
* web-platform-tests/dom/events/EventListenerOptions-capture.html: Added.

Source/WebCore:

Implement AddEventListenerOptions dictionary argument to addEventListener()
and EventListenerOptions dictionary argument to removeEventListener(), as
per the latest DOM specification:
- https://dom.spec.whatwg.org/#interface-eventtarget

Firefox and Chrome already support this.

Support for AddEventListenerOptions in this patch is as follows:
- 'capture': fully supported.
- 'once': fully supported.
- 'passive': supported in the sense that preventDefault() will be ignored
             for passive event listeners. There are however currently no
             performance benefits from passing this flag. Those optimizations
             will be implemented in follow-up patches (in particular for
             Touch and Scroll events).

Tests: fast/events/AddEventListenerOptions-once-recursive.html
       fast/events/AddEventListenerOptions-once.html
       fast/events/AddEventListenerOptions-passive.html
       fast/events/removeEventListener-EventListenerOptions-capture.html
       imported/w3c/web-platform-tests/dom/events/EventListenerOptions-capture.html

* Modules/webaudio/AudioScheduledSourceNode.cpp:
(WebCore::AudioScheduledSourceNode::addEventListener):
(WebCore::AudioScheduledSourceNode::removeEventListener):
* Modules/webaudio/AudioScheduledSourceNode.h:
* Modules/webaudio/ScriptProcessorNode.cpp:
(WebCore::ScriptProcessorNode::addEventListener):
(WebCore::ScriptProcessorNode::removeEventListener):
* Modules/webaudio/ScriptProcessorNode.h:
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateParametersCheckExpression):
* dom/Event.h:
(WebCore::Event::preventDefault):
(WebCore::Event::setInPassiveListener):
* dom/EventListenerMap.cpp:
(WebCore::addListenerToVector):
(WebCore::EventListenerMap::add):
* dom/EventListenerMap.h:
* dom/EventTarget.cpp:
(WebCore::EventTarget::addEventListener):
(WebCore::EventTarget::addEventListenerForBindings):
(WebCore::EventTarget::removeEventListenerForBindings):
(WebCore::EventTarget::removeEventListener):
(WebCore::EventTarget::setAttributeEventListener):
(WebCore::EventTarget::fireEventListeners):
* dom/EventTarget.h:
(WebCore::EventTarget::ListenerOptions::ListenerOptions):
(WebCore::EventTarget::AddEventListenerOptions::AddEventListenerOptions):
(WebCore::EventTarget::addEventListener):
(WebCore::EventTarget::addEventListenerForBindings):
(WebCore::EventTarget::removeEventListenerForBindings):
* dom/EventTarget.idl:
* dom/MessagePort.cpp:
(WebCore::MessagePort::addEventListener):
* dom/MessagePort.h:
* dom/Node.cpp:
(WebCore::tryAddEventListener):
(WebCore::Node::addEventListener):
(WebCore::tryRemoveEventListener):
(WebCore::Node::removeEventListener):
* dom/Node.h:
* dom/RegisteredEventListener.h:
(WebCore::RegisteredEventListener::Options::Options):
(WebCore::RegisteredEventListener::RegisteredEventListener):
(WebCore::operator==):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::addEventListener):
(WebCore::HTMLMediaElement::removeEventListener):
* html/HTMLMediaElement.h:
* page/DOMWindow.cpp:
(WebCore::DOMWindow::addEventListener):
(WebCore::DOMWindow::removeEventListener):
* page/DOMWindow.h:
* svg/SVGElement.cpp:
(WebCore::SVGElement::addEventListener):
(WebCore::SVGElement::removeEventListener):
* svg/SVGElement.h:

LayoutTests:

* fast/events/AddEventListenerOptions-once-expected.txt: Added.
* fast/events/AddEventListenerOptions-once-recursive-expected.txt: Added.
* fast/events/AddEventListenerOptions-once-recursive.html: Added.
* fast/events/AddEventListenerOptions-once.html: Added.
* fast/events/AddEventListenerOptions-passive-expected.txt: Added.
* fast/events/AddEventListenerOptions-passive.html: Added.
* fast/events/removeEventListener-EventListenerOptions-capture-expected.txt: Added.
* fast/events/removeEventListener-EventListenerOptions-capture.html: Added.

Add layout testing coverage for various aspects of the functionality.

* imported/blink/fast/events/eventlisteneroptions/capture_default-expected.txt: Added.
* imported/blink/fast/events/eventlisteneroptions/capture_default.html: Added.
* imported/blink/fast/events/eventlisteneroptions/capture_equality-expected.txt: Added.
* imported/blink/fast/events/eventlisteneroptions/capture_equality.html: Added.
* imported/blink/fast/events/eventlisteneroptions/capture_query-expected.txt: Added.
* imported/blink/fast/events/eventlisteneroptions/capture_query.html: Added.
* imported/blink/fast/events/eventlisteneroptions/passive_dispatch-expected.txt: Added.
* imported/blink/fast/events/eventlisteneroptions/passive_dispatch.html: Added.
* imported/blink/fast/events/eventlisteneroptions/passive_inequality-expected.txt: Added.
* imported/blink/fast/events/eventlisteneroptions/passive_inequality.html: Added.
* imported/blink/fast/events/eventlisteneroptions/passive_query-expected.txt: Added.
* imported/blink/fast/events/eventlisteneroptions/passive_query.html: Added.

Import blink tests for this functionality.

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

4 years agoMedia elements should only be allowed to control controls manager during a user gesture.
jer.noble@apple.com [Mon, 6 Jun 2016 21:47:05 +0000 (21:47 +0000)]
Media elements should only be allowed to control controls manager during a user gesture.
https://bugs.webkit.org/show_bug.cgi?id=158432

Reviewed by Eric Carlson.

Add a new MediaElementSession behavior restriction for the controls manager
which is cleared on the first user gesture. Since canControlControlsManager()
may be called before the first layout, call updatePlaybackControlsManager()
since the main content check requires the laid-out size of the media element.

(WebCore::HTMLMediaElement::HTMLMediaElement):
(WebCore::HTMLMediaElement::layoutSizeChanged):
(WebCore::HTMLMediaElement::removeBehaviorsRestrictionsAfterFirstUserGesture):
* html/HTMLMediaElement.h:
* html/MediaElementSession.cpp:
(WebCore::MediaElementSession::canControlControlsManager):
* html/MediaElementSession.h:

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

4 years agoWebRTC: Update MediaEndpointPeerConnection::createOffer() to use the transceiver set
adam.bergkvist@ericsson.com [Mon, 6 Jun 2016 21:40:58 +0000 (21:40 +0000)]
WebRTC: Update MediaEndpointPeerConnection::createOffer() to use the transceiver set
https://bugs.webkit.org/show_bug.cgi?id=158203

Reviewed by Eric Carlson.

Source/WebCore:

Create an SDP offer based on the RTCPeerConnection object's set of RTCRtpTransceiver objects
(instead of RTCRtpSender objects).

Updated existing test: fast/mediastream/RTCPeerConnection-inspect-offer.html

* Modules/mediastream/MediaEndpointPeerConnection.cpp:
(WebCore::matchTransceiver):
(WebCore::matchTransceiverByMid):
(WebCore::MediaEndpointPeerConnection::createOfferTask):
* Modules/mediastream/MediaEndpointPeerConnection.h:
* Modules/mediastream/PeerConnectionBackend.h:
Remove getSenders() which is replaced by getTransceivers().
* Modules/mediastream/RTCPeerConnection.h:
* Modules/mediastream/SDPProcessor.cpp:
(WebCore::configurationFromJSON):
(WebCore::configurationToJSON):
* Modules/mediastream/sdp.js:
(SDP.parse):
(SDP.generate):
Add support for mid attribute.
* platform/mediastream/PeerMediaDescription.h:
(WebCore::PeerMediaDescription::mid):
(WebCore::PeerMediaDescription::setMid):
(WebCore::PeerMediaDescription::clone):

LayoutTests:

Updated existing test.

* fast/mediastream/RTCPeerConnection-inspect-offer-expected.txt:
* fast/mediastream/RTCPeerConnection-inspect-offer.html:
Add verification of mid attribute [1] (corresponds to the RTCRtpTransceiver mid attribute).
[1] https://tools.ietf.org/html/rfc5888
* fast/mediastream/resources/sdp-utils.js: Added.
(printComparableSessionDescription):
(verified):
(match):
Move the printComparableSessionDescription function to a separate file
to make it usable in other (future) tests.

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

4 years agoPosition of WebGL <canvas> on iOS is incorrect with CSS borders
commit-queue@webkit.org [Mon, 6 Jun 2016 20:58:19 +0000 (20:58 +0000)]
Position of WebGL <canvas> on iOS is incorrect with CSS borders
https://bugs.webkit.org/show_bug.cgi?id=156790

Patch by Antoine Quint <graouts@apple.com> on 2016-06-06
Reviewed by Simon Fraser.

Source/WebKit2:

WebGL layers on iOS are hosted by a WKRemoteView, which applies a transform scaling
its content by the inverse of the device pixel ratio, which affects how positions are
applied to the WebGL layer. The container layer of the layer hosted by a WKRemoteView
then has an inverse transform applied to it in the PlatformCALayerRemoteCustom
constructor. However, the position of a CALayer is not affected by its transform.

The fix for <rdar://problem/18316542> should be specific to video, so we only apply the
scaling in the case of a LayerTypeAVPlayerLayer.

* UIProcess/ios/RemoteLayerTreeHostIOS.mm:
(-[WKRemoteView initWithFrame:contextID:]):
(WebKit::RemoteLayerTreeHost::createLayer):
(-[WKRemoteView initWithFrame:contextID:hostingDeviceScaleFactor:]): Deleted.
* WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.mm:
(WebKit::PlatformCALayerRemoteCustom::PlatformCALayerRemoteCustom):

LayoutTests:

Adding new tests checking that CSS border, box-shadow and padding properties used on a
WebGL <canvas> element correctly affect the position of the WebGL content.

* webgl/webgl-border-expected.html: Added.
* webgl/webgl-border.html: Added.
* webgl/webgl-box-shadow-expected.html: Added.
* webgl/webgl-box-shadow.html: Added.
* webgl/webgl-padding-expected.html: Added.
* webgl/webgl-padding.html: Added.

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

4 years agoREGRESSION(r201449) [GTK] ARMv7 build fails with libicudata.so.55: cannot open shared...
clopez@igalia.com [Mon, 6 Jun 2016 20:34:07 +0000 (20:34 +0000)]
REGRESSION(r201449) [GTK] ARMv7 build fails with libicudata.so.55: cannot open shared object file on gtkdoc-scangobj step.
https://bugs.webkit.org/show_bug.cgi?id=158417

Reviewed by Michael Catanzaro.

The toolchain on armhf (ARMv7) seems unable to properly handle
a shared library that doesn't link with anything.

And libicudata is built by default in this way because it only
contains static data.

That makes icu unusable on armhf because the linker will be
unable to resolve the libicudata dependencies.

Most (if not all) distributions workaround this by linking
libicudata with libc6, which is already a needed dependency for
any of the other icu shared libraries.

So import here the Debian patch fixing this issue. For further
details check https://bugs.debian.org/653457

* gtk/jhbuild.modules:
* gtk/patches/icudata-stdlibs.patch: Added.

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

4 years agoSource/JavaScriptCore:
gskachkov@gmail.com [Mon, 6 Jun 2016 20:33:39 +0000 (20:33 +0000)]
Source/JavaScriptCore:
[ESNext] Trailing commas in function parameters.
https://bugs.webkit.org/show_bug.cgi?id=158020

Reviewed by Keith Miller.

ESNext allow to add trailing commas in function parameters and function arguments.
Link to spec - https://jeffmo.github.io/es-trailing-function-commas
Example of using - (function (a, b,) { return a + b; })(1,2,);

* parser/Parser.cpp:
(JSC::Parser<LexerType>::parseFormalParameters):
(JSC::Parser<LexerType>::parseArguments):
* tests/stress/trailing-comma-in-function-paramters.js: Added.

LayoutTests:
[ESNext] Support trailing commas in function param lists
https://bugs.webkit.org/show_bug.cgi?id=158020

Reviewed by Keith Miller.

* js/parser-syntax-check-expected.txt:
* js/script-tests/parser-syntax-check.js:
* sputnik/Conformance/13_Function_Definition/S13_A5.html:

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

4 years agoSupport createPattern(HTMLVideoElement, const String& repetitionType)
commit-queue@webkit.org [Mon, 6 Jun 2016 20:30:05 +0000 (20:30 +0000)]
Support createPattern(HTMLVideoElement, const String& repetitionType)
https://bugs.webkit.org/show_bug.cgi?id=149984
<rdar://problem/23058823>

Patch by George Ruan <gruan@apple.com> on 2016-06-06
Reviewed by Dean Jackson.

Source/WebCore:

Support functionality for HTMLVideoElement argument for
CanvasRenderingContext2D::createPattern*()

Tests: fast/canvas/canvas-createPattern-video-invalid.html
       fast/canvas/canvas-createPattern-video-loading.html
       fast/canvas/canvas-createPattern-video-modify.html
       http/tests/security/canvas-remote-read-remote-video-allowed-anonymous.html
       http/tests/security/canvas-remote-read-remote-video-allowed-with-credentials.html
       http/tests/security/canvas-remote-read-remote-video-blocked-no-crossorigin.html
       http/tests/security/canvas-remote-read-remote-video-localhost.html
       http/tests/security/canvas-remote-read-remote-video-redirect.html
       media/video-canvas-createPattern.html

* html/canvas/CanvasRenderingContext2D.cpp:
(WebCore::CanvasRenderingContext2D::createPattern): Implement
functionality of description
* html/canvas/CanvasRenderingContext2D.h:
* html/canvas/CanvasRenderingContext2D.idl:

LayoutTests:

* fast/canvas/canvas-createPattern-video-invalid-expected.txt: Added.
* fast/canvas/canvas-createPattern-video-invalid.html: Added. Test
behavior when given invalid arguments.
* fast/canvas/canvas-createPattern-video-loading-expected.txt: Added.
* fast/canvas/canvas-createPattern-video-loading.html: Added. Tests
behavior before video loaded, right after it's loaded, and after being
played.
* fast/canvas/canvas-createPattern-video-modify-expected.txt: Added.
* fast/canvas/canvas-createPattern-video-modify.html: Added. Tests
that modifying the video after calling the createPattern() function
does not affect the pattern rendered or to be rendered.
*
http/tests/security/canvas-remote-read-remote-image-allowed-expected.txt:
Fix typo.
*
http/tests/security/canvas-remote-read-remote-image-allowed-with-credentials-expected.txt:
Fix typo.
*
http/tests/security/canvas-remote-read-remote-image-allowed-with-credentials.html:
Fix typo.
* http/tests/security/canvas-remote-read-remote-image-allowed.html:
Fix typo.
*
http/tests/security/canvas-remote-read-remote-image-blocked-no-crossorigin-expected.txt:
Fix typo.
*
http/tests/security/canvas-remote-read-remote-image-blocked-no-crossorigin.html:
Fix typo.
* http/tests/security/canvas-remote-read-remote-video-allowed-anonymous-expected.txt: Added.
*
http/tests/security/canvas-remote-read-remote-video-allowed-anonymous.html:
Added. This test will fail as CORS is not implemented for media yet.
Tests that data can be retrieved from canvas even when tainted if CORS
is enabled with anonymous.
* http/tests/security/canvas-remote-read-remote-video-allowed-with-credentials-expected.txt: Added.
*
http/tests/security/canvas-remote-read-remote-video-allowed-with-credentials.html:
Added. This test will fail as CORS is not implemented for media yet.
Tests that data can be retrieved from canvas even when tainted if CORS
is enabled with credentials.
* http/tests/security/canvas-remote-read-remote-video-blocked-no-crossorigin-expected.txt: Added.
*
http/tests/security/canvas-remote-read-remote-video-blocked-no-crossorigin.html:
Added. Ensures that data cannot be retrieved from a tainted canvas if
no cross origin is enabled.
* http/tests/security/canvas-remote-read-remote-video-localhost-expected.txt: Added.
* http/tests/security/canvas-remote-read-remote-video-localhost.html:
Added. Ensures that localhost is blocked like http.
* http/tests/security/canvas-remote-read-remote-video-redirect-expected.txt: Added.
* http/tests/security/canvas-remote-read-remote-video-redirect.html:
Added. Ensures that redirects are blocked.
* http/tests/security/resources/canvas-video-crossorigin.js: Added.
Includes common functions used to test the CORS of canvas for video.
*
http/tests/security/resources/video-cross-origin-allow-credentials.php:
Added. Script that serves test video for
canvas-remote-read-remote-video-allowed-with-credentials.html.
* media/video-canvas-createPattern-expected.txt: Added.
* media/video-canvas-createPattern.html: Added. Naive test that
ensures functionality of createPattern() with HTMLVideoElement
argument.
* platform/ios-simulator-wk1/TestExpectations: Added
canvas-remote-read-remote-video-allowed-anonymous.html and
canvas-remote-read-remote-video-allowed-with-credentials.html.
* platform/ios-simulator-wk2/TestExpectations: Same as wk1.
* platform/mac/TestExpectations: Same as wk1.
* platform/mac/media/video-canvas-createPattern-expected.png: Added.
* platform/win/TestExpectations: Same as wk1.
* platform/wk2/TestExpectations: Same as wk1.

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

4 years agoFix the !ENABLE(SHADOW_DOM) && !ENABLE(DETAILS_ELEMENT) build
ossy@webkit.org [Mon, 6 Jun 2016 20:19:35 +0000 (20:19 +0000)]
Fix the !ENABLE(SHADOW_DOM) && !ENABLE(DETAILS_ELEMENT) build
https://bugs.webkit.org/show_bug.cgi?id=158347

Reviewed by Chris Dumez.

* dom/ContainerNode.cpp:
(WebCore::destroyRenderTreeIfNeeded):

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

4 years agoFix build after r201717
beidson@apple.com [Mon, 6 Jun 2016 20:11:29 +0000 (20:11 +0000)]
Fix build after r201717

Unreviewed.

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles):

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::grantSandboxExtensionsToDatabaseProcessForBlobs):
* NetworkProcess/NetworkProcess.h:

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

4 years agoRemove unused ResourceResponse::platformResponseIsUpToDate
achristensen@apple.com [Mon, 6 Jun 2016 19:23:29 +0000 (19:23 +0000)]
Remove unused ResourceResponse::platformResponseIsUpToDate
https://bugs.webkit.org/show_bug.cgi?id=158424

Reviewed by Brady Eidson.

No change in behavior, just removing unused code that was introduced in r145007.

* platform/network/cf/ResourceResponse.h:
(WebCore::ResourceResponse::ResourceResponse):
(WebCore::ResourceResponse::platformResponseIsUpToDate): Deleted.
* platform/network/cocoa/ResourceResponseCocoa.mm:
(WebCore::ResourceResponse::ResourceResponse):
* platform/network/curl/ResourceResponse.h:
(WebCore::ResourceResponse::cfURLResponse):
(WebCore::ResourceResponse::platformResponseIsUpToDate): Deleted.
* platform/network/soup/ResourceResponse.h:
(WebCore::ResourceResponse::soupMessageTLSErrors):
(WebCore::ResourceResponse::setSoupMessageTLSErrors):
(WebCore::ResourceResponse::decode):
(WebCore::ResourceResponse::platformResponseIsUpToDate): Deleted.

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

4 years agoREGRESSION (r104174): 500+ tests failing on Windows
peavo@outlook.com [Mon, 6 Jun 2016 19:16:20 +0000 (19:16 +0000)]
REGRESSION (r104174): 500+ tests failing on Windows
https://bugs.webkit.org/show_bug.cgi?id=75965

Reviewed by Michael Catanzaro.

Reset WebView scale factors before running next test.

* DumpRenderTree/win/DumpRenderTree.cpp:
(resetWebViewToConsistentStateBeforeTesting):

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

4 years agoDeprecate remaining uses of Lookup getStatic*, use HasStaticPropertyTable instead.
barraclough@apple.com [Mon, 6 Jun 2016 19:11:17 +0000 (19:11 +0000)]
Deprecate remaining uses of Lookup getStatic*, use HasStaticPropertyTable instead.
https://bugs.webkit.org/show_bug.cgi?id=158178

Reviewed by Darin Adler.

As of bug #158059 most JSC static table property access no longer requires getOwnPropertySlot to be
overridden. Port remaining calls to the getStatic* functions in Lookup.h over to the new mechanism.

Source/JavaScriptCore:

Deprecate getStatic* functions in Lookup.h

* runtime/Lookup.h:
(JSC::getStaticPropertySlot): Deleted.
(JSC::getStaticFunctionSlot): Deleted.
(JSC::getStaticValueSlot): Deleted.
    - No longer required. Static table access now via JSObject.

Source/WebCore:

Switch WebCore DOM instance bindings to use HasStaticPropertyTable.

* bindings/js/JSPluginElementFunctions.h:
(WebCore::pluginElementCustomGetOwnPropertySlot):
    - Switch call from getStaticValueSlot to Type::getOwnPropertySlot.
      For any element where Type::hasStaticPropertyTable is true the HasStaticPropertyTable
      structure flag will also be set, so Type::getOwnPropertySlot will do the same thing.
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateGetOwnPropertySlotBody):
    - If we override getOwnPropertySlot, Base::getOwnPropertySlot will handle property storage & static property lookup.
(InstanceOverridesGetOwnPropertySlot):
    - Instances only override getOwnPropertySlot if the really need to, not just for static property lookup.
(GenerateHeader):
    - Set HasStaticPropertyTable in instance structureFlags, where appropriate.
(GenerateImplementation):
    - GenerateGetOwnPropertySlotBody no longer needs to know if there are static properties.
* bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
* bindings/scripts/test/JS/JSTestActiveDOMObject.h:
* bindings/scripts/test/JS/JSTestException.cpp:
* bindings/scripts/test/JS/JSTestException.h:
* bindings/scripts/test/JS/JSTestObj.cpp:
* bindings/scripts/test/JS/JSTestObj.h:
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
* bindings/scripts/test/JS/JSTestTypedefs.h:
* bindings/scripts/test/JS/JSattribute.cpp:
* bindings/scripts/test/JS/JSattribute.h:
    - Updating bindings test results.

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

4 years agosync-buildbot.js should update the list of tests and platforms associated with a...
rniwa@webkit.org [Mon, 6 Jun 2016 18:51:23 +0000 (18:51 +0000)]
sync-buildbot.js should update the list of tests and platforms associated with a triggerable
https://bugs.webkit.org/show_bug.cgi?id=158406
<rdar://problem/26185737>

Reviewed by Darin Adler.

Added /api/update-triggerable to update the list of configurations (platform and test pairs)
associated with a given triggerable, and make sync-buildbot.js use this JSON API before each
syncing cycle so that the association gets updated automatically by simply updating the JSON.

* server-tests/api-manifest.js: Use const for imported modules.
* server-tests/api-report-commits-tests.js: Removed unnecessary importing of crypto.
* server-tests/resources/mock-data.js:
(MockData.someTestId): Added.
(MockData.somePlatformId): Added.
(MockData.addMockData):
* server-tests/tools-buildbot-triggerable-tests.js: Use const for imported modules. Also added
a test for BuildbotTriggerable's updateTriggerable.
* tools/js/buildbot-triggerable.js:
(BuildbotTriggerable.prototype.updateTriggerable): Added. Find the list of all configurations
associated with this triggeerable and post it to /api/update-triggerable.
* tools/js/database.js: Added triggerable_configurations to the list of tables.
* tools/js/remote.js:
(RemoteAPI.prototype.postJSON): Print the whole response when JSON parsing fails for debugging.
* tools/sync-buildbot.js:
(syncLoop): Call BuildbotTriggerable's updateTriggerable before syncing.

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

4 years agoModern IDB: Crash seen in IDBConnectionProxy::putOrAdd on GuardMalloc bot
beidson@apple.com [Mon, 6 Jun 2016 18:38:34 +0000 (18:38 +0000)]
Modern IDB: Crash seen in IDBConnectionProxy::putOrAdd on GuardMalloc bot
https://bugs.webkit.org/show_bug.cgi?id=158124

Reviewed by Darin Adler.
Source/WebCore:

No new tests (Covered by existing test configurations).

* Modules/indexeddb/IDBTransaction.cpp:
(WebCore::IDBTransaction::putOrAddOnServer):

* Modules/indexeddb/client/IDBConnectionProxy.cpp:
(WebCore::IDBClient::IDBConnectionProxy::putOrAdd):

* Modules/indexeddb/client/IDBConnectionProxy.h:
(WebCore::IDBClient::IDBConnectionProxy::callConnectionOnMainThread):

* bindings/js/SerializedScriptValue.cpp:
(WebCore::SerializedScriptValue::writeBlobsToDiskForIndexedDB):
* bindings/js/SerializedScriptValue.h:

* platform/network/BlobRegistry.h:
* platform/network/BlobRegistryImpl.cpp:
(WebCore::BlobRegistryImpl::writeBlobsToTemporaryFiles):
* platform/network/BlobRegistryImpl.h:

Source/WebKit2:

* NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
(WebKit::NetworkBlobRegistry::writeBlobsToTemporaryFiles):
* NetworkProcess/FileAPI/NetworkBlobRegistry.h:

* WebProcess/FileAPI/BlobRegistryProxy.cpp:
(WebKit::BlobRegistryProxy::writeBlobsToTemporaryFiles):
* WebProcess/FileAPI/BlobRegistryProxy.h:

* WebProcess/Network/NetworkProcessConnection.cpp:
(WebKit::NetworkProcessConnection::didClose):
(WebKit::NetworkProcessConnection::writeBlobsToTemporaryFiles):
* WebProcess/Network/NetworkProcessConnection.h:

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

4 years ago[jsc][mips] Implement absDouble()
commit-queue@webkit.org [Mon, 6 Jun 2016 18:09:20 +0000 (18:09 +0000)]
[jsc][mips] Implement absDouble()
https://bugs.webkit.org/show_bug.cgi?id=158206

Patch by Guillaume Emont <guijemont@igalia.com> on 2016-06-06
Reviewed by Mark Lam.

Implement absDouble() for MIPS. This is needed because Math.pow() uses
it since r200208.

* assembler/MIPSAssembler.h:
(JSC::MIPSAssembler::absd):
* assembler/MacroAssemblerMIPS.h:
(JSC::MacroAssemblerMIPS::absDouble):

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

4 years agoUnreviewed, rolling out r201706.
ryanhaddad@apple.com [Mon, 6 Jun 2016 17:56:33 +0000 (17:56 +0000)]
Unreviewed, rolling out r201706.
https://bugs.webkit.org/show_bug.cgi?id=158427

This change broke the Yosemite build and its LayoutTest is
failing on Mac and iOS testers (Requested by ryanhaddad on
#webkit).

Reverted changeset:

"Add experimental support for spring based CSS animations"
https://bugs.webkit.org/show_bug.cgi?id=158403
http://trac.webkit.org/changeset/201706

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

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

4 years agoRegExp unicode parsing reads an extra character before failing
oliver@apple.com [Mon, 6 Jun 2016 17:31:28 +0000 (17:31 +0000)]
RegExp unicode parsing reads an extra character before failing
https://bugs.webkit.org/show_bug.cgi?id=158376

Reviewed by Saam Barati.

Source/JavaScriptCore:

This was a probably harmless bug, but keeps triggering assertions
for me locally. Essentially we'd see a parse error, set the error
type, but then carry on parsing. In debug builds this asserts, in
release builds you are pretty safe unless you're exceptionally
unlucky with where the error occurs.

* yarr/YarrParser.h:
(JSC::Yarr::Parser::parseEscape):

LayoutTests:

Add a couple of tests.

* js/script-tests/regexp-unicode.js:

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

4 years ago[jsc][mips] fix JIT::emit_op_log_shadow_chicken_prologue/_tail
commit-queue@webkit.org [Mon, 6 Jun 2016 17:22:23 +0000 (17:22 +0000)]
[jsc][mips] fix JIT::emit_op_log_shadow_chicken_prologue/_tail
https://bugs.webkit.org/show_bug.cgi?id=158209

Patch by Guillaume Emont <guijemont@igalia.com> on 2016-06-06
Reviewed by Mark Lam.

On MIPS, changes GPRInfo::nonArgGPR0 to be regT4 instead of regT0,
since the code of JIT::emit_op_log_shadow_chicken_prologue/_tail()
expects nonArgGPR0 to be a different register from regT0 and regT2.

* jit/GPRInfo.h:

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

4 years agoCrash under JSObject::getOwnPropertyDescriptor()
cdumez@apple.com [Mon, 6 Jun 2016 16:40:02 +0000 (16:40 +0000)]
Crash under JSObject::getOwnPropertyDescriptor()
https://bugs.webkit.org/show_bug.cgi?id=158382
<rdar://problem/26605004>

Reviewed by Mark Lam.

Source/JavaScriptCore:

* runtime/JSObject.h:
(JSC::JSObject::putDirectInternal):
We were crashing under getOwnPropertyDescriptor() because the
CustomAccessor was not properly reset on window.statusbar when
setting it to false (which is allowed because the property is
marked as [Replaceable] in the IDL). We now property reset the
CustomAccessor flag in putDirectInternal() when needed. This
fixes the crash.

LayoutTests:

Add layout test to cover the crash in JSObject::getOwnPropertyDescriptor().

* js/dom/getOwnPropertyDescriptor-crash-expected.txt: Added.
* js/dom/getOwnPropertyDescriptor-crash.html: Added.

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

4 years ago[EFL] Move efl include paths to JavaScriptCore_SYSTEM_INCLUDE_DIRECTORIES
gyuyoung.kim@webkit.org [Mon, 6 Jun 2016 14:31:19 +0000 (14:31 +0000)]
[EFL] Move efl include paths to JavaScriptCore_SYSTEM_INCLUDE_DIRECTORIES
https://bugs.webkit.org/show_bug.cgi?id=158418

Reviewed by Csaba Osztrogon√°c.

In Source/JavaScriptCore/PlatformEfl.cmake, we don't use JavaScriptCore_SYSTEM_INCLUDE_DIRECTORIES
for efl include paths.

* PlatformEfl.cmake:

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

4 years ago[EFL] Update ewebkit minor version
gyuyoung.kim@webkit.org [Mon, 6 Jun 2016 13:00:52 +0000 (13:00 +0000)]
[EFL] Update ewebkit minor version
https://bugs.webkit.org/show_bug.cgi?id=158409

Reviewed by Csaba Osztrogon√°c.

EWebKit has used efl 1.17 version though, it still is stopped at version 1.14.

* Source/cmake/OptionsEfl.cmake: Bump minor version to 1.17.

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

4 years ago[css-grid] Horizontal scroll must account for grid container's height
jfernandez@igalia.com [Mon, 6 Jun 2016 12:11:22 +0000 (12:11 +0000)]
[css-grid] Horizontal scroll must account for grid container's height
https://bugs.webkit.org/show_bug.cgi?id=157971

Reviewed by Darin Adler.

Source/WebCore:

We don't consider the scrollbar when computing the grid container's
logical height at the beginning of the 'layoutBlock' logic. We must
do it because otherwise, contentLogicalHeight may return a negative
value.

Test: fast/css-grid-layout/grid-container-scroll-accounts-for-sizing.html

* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::layoutBlock):

LayoutTests:

Test to verify we account horizontal scrollbar's size for grid container's
height computation.

* fast/css-grid-layout/grid-container-scroll-accounts-for-sizing-expected.html: Added.
* fast/css-grid-layout/grid-container-scroll-accounts-for-sizing.html: Added.

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

4 years agoReduce ResourceRequest copying in loading code
commit-queue@webkit.org [Mon, 6 Jun 2016 08:25:16 +0000 (08:25 +0000)]
Reduce ResourceRequest copying in loading code
https://bugs.webkit.org/show_bug.cgi?id=158251

Patch by Alex Christensen <achristensen@webkit.org> on 2016-06-06
Reviewed by Darin Adler.

Source/WebCore:

No new tests. There should be no change in behavior except fewer unnecessary copies.
Before, we would pass a const ResourceRequest& around, and if we needed to modify it
we would copy the whole thing, modify the copy, and pass the copy along.  This can be
accomplished with move semantics without the now-unnecessary copy.

The biggest conceptual change is that the synchronous ResourceHandleClient::willSendRequest
used to take a non-const ResourceRequest& and modify it, but now it returns a modified
ResourceRequest instead.

* loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::cannotShowURLError):
(WebCore::ResourceLoader::willSendRequest):
(WebCore::ResourceLoader::didSendData):
* loader/ResourceLoader.h:
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(ResourceHandleStreamingClient::getOrCreateReadBuffer):
(ResourceHandleStreamingClient::willSendRequest):
(ResourceHandleStreamingClient::didReceiveResponse):
* platform/network/ResourceHandle.h:
* platform/network/ResourceHandleClient.cpp:
(WebCore::ResourceHandleClient::~ResourceHandleClient):
(WebCore::ResourceHandleClient::willSendRequest):
(WebCore::ResourceHandleClient::willSendRequestAsync):
(WebCore::ResourceHandleClient::didReceiveResponseAsync):
* platform/network/ResourceHandleClient.h:
(WebCore::ResourceHandleClient::didSendData):
(WebCore::ResourceHandleClient::didReceiveResponse):
(WebCore::ResourceHandleClient::loadingSynchronousXHR):
(WebCore::ResourceHandleClient::willSendRequest): Deleted.
* platform/network/SynchronousLoaderClient.cpp:
(WebCore::SynchronousLoaderClient::~SynchronousLoaderClient):
(WebCore::SynchronousLoaderClient::willSendRequest):
(WebCore::SynchronousLoaderClient::shouldUseCredentialStorage):
* platform/network/SynchronousLoaderClient.h:
* platform/network/cf/ResourceHandleCFNet.cpp:
(WebCore::ResourceHandle::cancel):
(WebCore::ResourceHandle::willSendRequest):
* platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp:
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::willSendRequest):
* platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp:
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::willSendRequest):
* platform/network/mac/ResourceHandleMac.mm:
(WebCore::ResourceHandle::platformLoadResourceSynchronously):
(WebCore::ResourceHandle::willSendRequest):
(WebCore::ResourceHandle::continueWillSendRequest):
* platform/network/mac/WebCoreResourceHandleAsDelegate.mm:
(-[WebCoreResourceHandleAsDelegate connection:willSendRequest:redirectResponse:]):
(-[WebCoreResourceHandleAsDelegate connectionShouldUseCredentialStorage:]):
* platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:willSendRequest:redirectResponse:]):
* platform/network/soup/ResourceHandleSoup.cpp:
(WebCore::shouldRedirectAsGET):
(WebCore::continueAfterWillSendRequest):
(WebCore::readCallback):
(WebCore::ResourceHandle::continueWillSendRequest):
(WebCore::ResourceHandle::continueDidReceiveResponse):

Source/WebKit2:

* NetworkProcess/Downloads/DownloadManager.cpp:
(WebKit::DownloadManager::continueCanAuthenticateAgainstProtectionSpace):
(WebKit::DownloadManager::continueWillSendRequest):
(WebKit::DownloadManager::willDecidePendingDownloadDestination):
* NetworkProcess/Downloads/DownloadManager.h:
* NetworkProcess/Downloads/PendingDownload.cpp:
(WebKit::PendingDownload::PendingDownload):
(WebKit::PendingDownload::willSendRedirectedRequest):
(WebKit::PendingDownload::continueWillSendRequest):
(WebKit::PendingDownload::canAuthenticateAgainstProtectionSpaceAsync):
* NetworkProcess/Downloads/PendingDownload.h:
* NetworkProcess/NetworkDataTask.h:
(WebKit::NetworkDataTask::firstRequest):
* NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::cancel):
(WebKit::NetworkLoad::continueWillSendRequest):
(WebKit::NetworkLoad::sharedDidReceiveResponse):
(WebKit::NetworkLoad::sharedWillSendRedirectedRequest):
(WebKit::NetworkLoad::setPendingDownload):
(WebKit::NetworkLoad::willPerformHTTPRedirection):
(WebKit::NetworkLoad::didReceiveChallenge):
(WebKit::NetworkLoad::didFail):
(WebKit::NetworkLoad::willSendRequestAsync):
* NetworkProcess/NetworkLoad.h:
(WebKit::NetworkLoad::currentRequest):
(WebKit::NetworkLoad::clearCurrentRequest):
(WebKit::NetworkLoad::pendingDownloadID):
* NetworkProcess/NetworkLoadClient.h:
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::continueCanAuthenticateAgainstProtectionSpace):
(WebKit::NetworkProcess::continueWillSendRequest):
(WebKit::NetworkProcess::pendingDownloadCanceled):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::didFailLoading):
(WebKit::NetworkResourceLoader::willSendRedirectedRequest):
(WebKit::NetworkResourceLoader::continueWillSendRequest):
(WebKit::NetworkResourceLoader::continueDidReceiveResponse):
* NetworkProcess/NetworkResourceLoader.h:
* NetworkProcess/PingLoad.h:
(WebKit::PingLoad::PingLoad):
* NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
(WebKit::NetworkCache::SpeculativeLoad::~SpeculativeLoad):
(WebKit::NetworkCache::SpeculativeLoad::willSendRedirectedRequest):
* NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTask::didBecomeDownload):
(WebKit::NetworkDataTask::willPerformHTTPRedirection):
* WebProcess/Network/WebResourceLoader.cpp:
(WebKit::WebResourceLoader::detachFromCoreLoader):
(WebKit::WebResourceLoader::willSendRequest):
* WebProcess/Network/WebResourceLoader.h:

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

4 years ago[EFL] Sync EFL features with featureList.pm
gyuyoung.kim@webkit.org [Mon, 6 Jun 2016 05:09:51 +0000 (05:09 +0000)]
[EFL] Sync EFL features with featureList.pm
https://bugs.webkit.org/show_bug.cgi?id=158410

Reviewed by Antonio Gomes.

In OptionsEfl, some features on/off status are different with
featureList.pm definitions. Sync with it.

* Source/cmake/OptionsEfl.cmake:

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

4 years agoAdd experimental support for spring based CSS animations
commit-queue@webkit.org [Mon, 6 Jun 2016 04:56:38 +0000 (04:56 +0000)]
Add experimental support for spring based CSS animations
https://bugs.webkit.org/show_bug.cgi?id=158403

Patch by Sam Weinig <sam@webkit.org> on 2016-06-05
Reviewed by Dean Jackson.

Source/WebCore:

Adds experimental support for a new CSS animation timing function that uses
spring to model the time function. To use it you replace your normal timing
function, be it cubic-bezier or steps, with a new function called spring().
For instance, for a transition you would write:

    transition-timing-function: spring(1 100 10 0);

The parameters are, in order:
    - Mass
    - Stiffness
    - Damping
    - Initial Velocity

Tests: animations/spring-computed-style.html
       animations/spring-function.html
       animations/spring-parsing.html

* WebCore.xcodeproj/project.pbxproj:
Add new file.

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::createTimingFunctionValue):
Modernize and add support for the spring function.

* css/CSSParser.cpp:
(WebCore::CSSParserContext::CSSParserContext):
(WebCore::operator==):
(WebCore::CSSParser::CSSParser):
(WebCore::CSSParser::parseTransformOriginShorthand):
(WebCore::CSSParser::isSpringTimingFunctionEnabled):
(WebCore::CSSParser::parseCubicBezierTimingFunctionValue):
(WebCore::CSSParser::parseSpringTimingFunctionValue):
(WebCore::CSSParser::parseAnimationTimingFunction):
* css/CSSParser.h:
* css/CSSParserMode.h:
Add parsing support for the spring() function.

* css/CSSTimingFunctionValue.cpp:
(WebCore::CSSCubicBezierTimingFunctionValue::customCSSText):
(WebCore::CSSCubicBezierTimingFunctionValue::equals):
(WebCore::CSSStepsTimingFunctionValue::customCSSText):
(WebCore::CSSStepsTimingFunctionValue::equals):
(WebCore::CSSSpringTimingFunctionValue::customCSSText):
(WebCore::CSSSpringTimingFunctionValue::equals):
* css/CSSTimingFunctionValue.h:
(WebCore::CSSSpringTimingFunctionValue::create):
(WebCore::CSSSpringTimingFunctionValue::mass):
(WebCore::CSSSpringTimingFunctionValue::stiffness):
(WebCore::CSSSpringTimingFunctionValue::damping):
(WebCore::CSSSpringTimingFunctionValue::initialVelocity):
(WebCore::CSSSpringTimingFunctionValue::CSSSpringTimingFunctionValue):
Modernize and add support for the spring function.

* css/CSSToStyleMap.cpp:
(WebCore::CSSToStyleMap::mapAnimationTimingFunction):
Pipe the spring function into the animation.

* css/CSSValue.cpp:
(WebCore::CSSValue::equals):
(WebCore::CSSValue::cssText):
(WebCore::CSSValue::destroy):
* css/CSSValue.h:
(WebCore::CSSValue::isSpringTimingFunctionValue):
Add support for the spring function.

* page/Settings.in:
Add a setting to control if the spring function is enabled.

* page/animation/AnimationBase.cpp:
(WebCore::solveSpringFunction):
(WebCore::AnimationBase::progress):
Add support for solving the spring function. Since the spring requires time to be absolute,
get the real time by multiplying the ratio t, to the total duration.

* platform/animation/TimingFunction.cpp:
(WebCore::operator<<):
* platform/animation/TimingFunction.h:
(WebCore::TimingFunction::~TimingFunction):
(WebCore::TimingFunction::isSpringTimingFunction):
Add support for the spring timing function.

* platform/graphics/SpringSolver.h: Added.
(WebCore::SpringSolver::SpringSolver):
(WebCore::SpringSolver::solve):
Add a Spring solver that matches the one in CoreAnimation.

* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::createAnimationFromKeyframes):
(WebCore::GraphicsLayerCA::appendToUncommittedAnimations):
(WebCore::GraphicsLayerCA::createBasicAnimation):
(WebCore::GraphicsLayerCA::createSpringAnimation):
(WebCore::GraphicsLayerCA::setupAnimation):
* platform/graphics/ca/GraphicsLayerCA.h:
Map animations with spring timing functions to CASpringAnimations.

* platform/graphics/ca/PlatformCAAnimation.cpp:
(WebCore::operator<<):
(WebCore::PlatformCAAnimation::isBasicAnimation):
* platform/graphics/ca/PlatformCAAnimation.h:
(WebCore::PlatformCAAnimation::setActualStartTimeIfNeeded):
(WebCore::PlatformCAAnimation::PlatformCAAnimation):
* platform/graphics/ca/cocoa/PlatformCAAnimationCocoa.mm:
(WebCore::toCAMediaTimingFunction):
(PlatformCAAnimationCocoa::PlatformCAAnimationCocoa):
(PlatformCAAnimationCocoa::setTimingFunction):
(PlatformCAAnimationCocoa::copyTimingFunctionFrom):
(PlatformCAAnimationCocoa::setFromValue):
(PlatformCAAnimationCocoa::copyFromValueFrom):
(PlatformCAAnimationCocoa::setToValue):
(PlatformCAAnimationCocoa::copyToValueFrom):
Add a new type of PlatformCAAnimation, Spring, which is a sub-type of Basic.

Source/WebKit2:

* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<StepsTimingFunction>::decode):
(IPC::ArgumentCoder<SpringTimingFunction>::encode):
(IPC::ArgumentCoder<SpringTimingFunction>::decode):
(IPC::ArgumentCoder<FloatPoint>::encode):
* Shared/WebCoreArgumentCoders.h:
* Shared/WebPreferencesDefinitions.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
* WebProcess/WebPage/mac/PlatformCAAnimationRemote.mm:
(WebKit::PlatformCAAnimationRemote::Properties::encode):
(WebKit::PlatformCAAnimationRemote::Properties::decode):
(WebKit::addAnimationToLayer):
Pipe through support for the Spring animation.

LayoutTests:

* animations/script-tests/spring-computed-style.js: Added.
* animations/script-tests/spring-parsing.js: Added.
* animations/spring-computed-style-expected.txt: Added.
* animations/spring-computed-style.html: Added.
* animations/spring-function-expected.txt: Added.
* animations/spring-function.html: Added.
* animations/spring-parsing-expected.txt: Added.
* animations/spring-parsing.html: Added.
Add tests for the spring timing function.

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

4 years agoUnreviewed EFL gardening on June 6. Unskip passing tests and mark failing tests.
gyuyoung.kim@webkit.org [Mon, 6 Jun 2016 03:59:46 +0000 (03:59 +0000)]
Unreviewed EFL gardening on June 6. Unskip passing tests and mark failing tests.
New bug is filed for new failing tests.

* platform/efl/TestExpectations:

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

4 years agoAddressing post-review comments on r201635.
zalan@apple.com [Mon, 6 Jun 2016 03:19:21 +0000 (03:19 +0000)]
Addressing post-review comments on r201635.

Reviewed by Chris Dumez.

* rendering/RenderInline.h:
(WebCore::RenderInline::computeRectForRepaint):
* rendering/RenderObject.h:
(WebCore::RenderObject::RepaintContext::RepaintContext):
(WebCore::RenderObject::computeRectForRepaint):
* rendering/RenderTableCell.h:
* rendering/RenderView.h:
* rendering/svg/RenderSVGForeignObject.h:
* rendering/svg/RenderSVGText.h:

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

4 years agoChange ProxyObject.[[Get]] not to use custom accessor
utatane.tea@gmail.com [Mon, 6 Jun 2016 01:56:11 +0000 (01:56 +0000)]
Change ProxyObject.[[Get]] not to use custom accessor
https://bugs.webkit.org/show_bug.cgi?id=157080

Reviewed by Darin Adler.

Source/JavaScriptCore:

This patch focuses on introducing the second part of the followings.
But to do so, first and third parts are necessary.

1. Insert missing exception checks for getPropertySlot.

    While getPropertySlot can perform user-observable behavior if the slot is not VMInquiry,
    several places miss exeption checks. For example, ProxyObject's hasProperty already can
    throw any errors. Looking through the code, we found several missing error checks after
    hasProperty, but this will be fixed in the separated patch[1].

2. Do not use custom accessor to implement ProxyObject's [[Get]].

    The caller already allows getOwnPropertySlot to throw an exception if the type
    is not VMInquiry. So instead of using custom accessor, we simply implement it
    directly in the ProxyObject's method.

3. Strip slotBase from custom accessor.

    The custom accessor should not be bound to the specific slot base[2], since it
    is just an accessor. There is an alternative design: makeing this custom accessor
    to custom value accessor and accept both the slot base and the receiver instead
    of allowing throwing an error from getOwnPropertySlot. But we take the first design
    that allows getPropertySlot to throw an error, since hasProperty (that does not call
    getValue of the custom getters) can already throw any errors.

    To query the property with the non-user-observable way, we already provided the way for that:
    use VMInquiry and isTaintedByProxy() instead.

Tests just ensure that the current semantics works correctly after this patch.
And this patch is performance neutral.

Later, we will attempt to rename "thisValue" to "receiver"[3].

[1]: https://bugs.webkit.org/show_bug.cgi?id=158398
[2]: https://bugs.webkit.org/show_bug.cgi?id=157978
[3]: https://bugs.webkit.org/show_bug.cgi?id=158397

* API/JSCallbackObject.h:
* API/JSCallbackObjectFunctions.h:
(JSC::JSCallbackObject<Parent>::staticFunctionGetter):
(JSC::JSCallbackObject<Parent>::callbackGetter):
* bytecode/PolymorphicAccess.cpp:
(JSC::AccessCase::generateImpl):
* dfg/DFGOperations.cpp:
* interpreter/Interpreter.cpp:
(JSC::Interpreter::execute):
* jit/JITOperations.cpp:
* jsc.cpp:
(WTF::ImpureGetter::getOwnPropertySlot):
(WTF::CustomGetter::customGetter):
(WTF::RuntimeArray::lengthGetter):
(GlobalObject::finishCreation):
(GlobalObject::moduleLoaderFetch):
(functionGetGetterSetter):
(functionRun):
(functionLoad):
(functionLoadString):
(functionReadFile):
(functionCheckSyntax):
(functionLoadWebAssembly):
(functionLoadModule):
(functionCreateBuiltin):
(functionCheckModuleSyntax):
(dumpException):
(runWithScripts):
(runInteractive):
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
* runtime/CommonSlowPaths.cpp:
(JSC::SLOW_PATH_DECL):
* runtime/JSBoundSlotBaseFunction.cpp:
(JSC::boundSlotBaseFunctionCall):
* runtime/JSCJSValue.h:
* runtime/JSCJSValueInlines.h:
(JSC::JSValue::getPropertySlot):
* runtime/JSCellInlines.h:
(JSC::ExecState::vm):
This change is super important for performance. We add several `exec->hadException()` calls into the super hot path, like JSC::operationGetByIdOptimize.
Without this change, we call ExecState::vm() and it is not inlined. This causes 1 - 2% performance regression in Octane PDFJS.

* runtime/JSFunction.cpp:
(JSC::JSFunction::argumentsGetter):
(JSC::JSFunction::callerGetter):
* runtime/JSFunction.h:
* runtime/JSGenericTypedArrayViewConstructorInlines.h:
(JSC::constructGenericTypedArrayViewWithArguments):
* runtime/JSModuleNamespaceObject.cpp:
(JSC::callbackGetter):
* runtime/JSONObject.cpp:
(JSC::Stringifier::Holder::appendNextProperty):
Here's UNLIKELY is important for Kraken's json-stringify-tinderbox. Without it, we can observe 0.5% regression.

(JSC::Walker::walk):
* runtime/JSObject.h:
(JSC::JSObject::getPropertySlot):
* runtime/ObjectPrototype.cpp:
(JSC::objectProtoFuncToString):
* runtime/PropertySlot.cpp:
(JSC::PropertySlot::customGetter):
* runtime/PropertySlot.h:
(JSC::PropertySlot::thisValue):
* runtime/ProxyObject.cpp:
(JSC::performProxyGet):
(JSC::ProxyObject::performGet):
(JSC::ProxyObject::getOwnPropertySlotCommon):
* runtime/ProxyObject.h:
* runtime/RegExpConstructor.cpp:
(JSC::regExpConstructorDollar):
(JSC::regExpConstructorInput):
(JSC::regExpConstructorMultiline):
(JSC::regExpConstructorLastMatch):
(JSC::regExpConstructorLastParen):
(JSC::regExpConstructorLeftContext):
(JSC::regExpConstructorRightContext):
* tests/stress/get-from-scope-dynamic-onto-proxy.js: Added.
(shouldBe):
(shouldThrow.handler.has):
(handler.has):
(try.handler.has):
* tests/stress/operation-in-throw-error.js: Added.
(testCase.handler.has):
(testCase):
* tests/stress/proxy-and-json-stringify.js: Added.
(shouldThrow):
* tests/stress/proxy-and-typed-array.js: Added.
* tests/stress/proxy-json-path.js: Added.
* tests/stress/proxy-with-statement.js: Added.

Source/WebCore:

* bindings/js/JSCryptoAlgorithmDictionary.cpp:
(WebCore::getProperty):
* bindings/js/JSDOMBinding.h:
(WebCore::nonCachingStaticFunctionGetter):
* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::jsDOMWindowWebKit):
* bindings/js/JSDictionary.cpp:
(WebCore::JSDictionary::tryGetProperty):
* bindings/js/JSPluginElementFunctions.cpp:
(WebCore::pluginElementPropertyGetter):
* bindings/js/JSPluginElementFunctions.h:
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateHeader):
(GenerateImplementation):
* bindings/scripts/test/JS/JSInterfaceName.cpp:
(WebCore::jsInterfaceNameConstructor):
* bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
(WebCore::jsTestActiveDOMObjectExcitingAttr):
(WebCore::jsTestActiveDOMObjectConstructor):
* bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
(WebCore::jsTestClassWithJSBuiltinConstructorConstructor):
* bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:
(WebCore::jsTestCustomConstructorWithNoInterfaceObjectConstructor):
* bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:
(WebCore::jsTestCustomNamedGetterConstructor):
* bindings/scripts/test/JS/JSTestEventConstructor.cpp:
(WebCore::jsTestEventConstructorAttr1):
(WebCore::jsTestEventConstructorAttr2):
(WebCore::jsTestEventConstructorAttr3):
(WebCore::jsTestEventConstructorConstructor):
* bindings/scripts/test/JS/JSTestEventTarget.cpp:
(WebCore::jsTestEventTargetConstructor):
* bindings/scripts/test/JS/JSTestException.cpp:
(WebCore::jsTestExceptionName):
(WebCore::jsTestExceptionConstructor):
* bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
(WebCore::jsTestGenerateIsReachableConstructor):
* bindings/scripts/test/JS/JSTestGlobalObject.cpp:
(WebCore::jsTestGlobalObjectRegularAttribute):
(WebCore::jsTestGlobalObjectEnabledAtRuntimeAttribute):
(WebCore::jsTestGlobalObjectConstructor):
* bindings/scripts/test/JS/JSTestInterface.cpp:
(WebCore::jsTestInterfaceConstructorImplementsStaticReadOnlyAttr):
(WebCore::jsTestInterfaceConstructorImplementsStaticAttr):
(WebCore::jsTestInterfaceImplementsStr1):
(WebCore::jsTestInterfaceImplementsStr2):
(WebCore::jsTestInterfaceImplementsStr3):
(WebCore::jsTestInterfaceImplementsNode):
(WebCore::jsTestInterfaceConstructorSupplementalStaticReadOnlyAttr):
(WebCore::jsTestInterfaceConstructorSupplementalStaticAttr):
(WebCore::jsTestInterfaceSupplementalStr1):
(WebCore::jsTestInterfaceSupplementalStr2):
(WebCore::jsTestInterfaceSupplementalStr3):
(WebCore::jsTestInterfaceSupplementalNode):
(WebCore::jsTestInterfaceConstructor):
* bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
(WebCore::jsTestJSBuiltinConstructorTestAttributeCustom):
(WebCore::jsTestJSBuiltinConstructorTestAttributeRWCustom):
(WebCore::jsTestJSBuiltinConstructorConstructor):
* bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
(WebCore::jsTestMediaQueryListListenerConstructor):
* bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
(WebCore::jsTestNamedConstructorConstructor):
* bindings/scripts/test/JS/JSTestNode.cpp:
(WebCore::jsTestNodeName):
(WebCore::jsTestNodeConstructor):
* bindings/scripts/test/JS/JSTestNondeterministic.cpp:
(WebCore::jsTestNondeterministicNondeterministicReadonlyAttr):
(WebCore::jsTestNondeterministicNondeterministicWriteableAttr):
(WebCore::jsTestNondeterministicNondeterministicExceptionAttr):
(WebCore::jsTestNondeterministicNondeterministicGetterExceptionAttr):
(WebCore::jsTestNondeterministicNondeterministicSetterExceptionAttr):
(WebCore::jsTestNondeterministicConstructor):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::jsTestObjReadOnlyLongAttr):
(WebCore::jsTestObjReadOnlyStringAttr):
(WebCore::jsTestObjReadOnlyTestObjAttr):
(WebCore::jsTestObjConstructorStaticReadOnlyLongAttr):
(WebCore::jsTestObjConstructorStaticStringAttr):
(WebCore::jsTestObjConstructorTestSubObj):
(WebCore::jsTestObjTestSubObjEnabledBySettingConstructor):
(WebCore::jsTestObjEnumAttr):
(WebCore::jsTestObjByteAttr):
(WebCore::jsTestObjOctetAttr):
(WebCore::jsTestObjShortAttr):
(WebCore::jsTestObjClampedShortAttr):
(WebCore::jsTestObjEnforceRangeShortAttr):
(WebCore::jsTestObjUnsignedShortAttr):
(WebCore::jsTestObjLongAttr):
(WebCore::jsTestObjLongLongAttr):
(WebCore::jsTestObjUnsignedLongLongAttr):
(WebCore::jsTestObjStringAttr):
(WebCore::jsTestObjTestObjAttr):
(WebCore::jsTestObjTestNullableObjAttr):
(WebCore::jsTestObjLenientTestObjAttr):
(WebCore::jsTestObjUnforgeableAttr):
(WebCore::jsTestObjStringAttrTreatingNullAsEmptyString):
(WebCore::jsTestObjXMLObjAttr):
(WebCore::jsTestObjCreate):
(WebCore::jsTestObjReflectedStringAttr):
(WebCore::jsTestObjReflectedIntegralAttr):
(WebCore::jsTestObjReflectedUnsignedIntegralAttr):
(WebCore::jsTestObjReflectedBooleanAttr):
(WebCore::jsTestObjReflectedURLAttr):
(WebCore::jsTestObjReflectedCustomIntegralAttr):
(WebCore::jsTestObjReflectedCustomBooleanAttr):
(WebCore::jsTestObjReflectedCustomURLAttr):
(WebCore::jsTestObjEnabledAtRuntimeAttribute):
(WebCore::jsTestObjTypedArrayAttr):
(WebCore::jsTestObjAttrWithGetterException):
(WebCore::jsTestObjAttrWithGetterExceptionWithMessage):
(WebCore::jsTestObjAttrWithSetterException):
(WebCore::jsTestObjAttrWithSetterExceptionWithMessage):
(WebCore::jsTestObjStringAttrWithGetterException):
(WebCore::jsTestObjStringAttrWithSetterException):
(WebCore::jsTestObjStrictTypeCheckingAttribute):
(WebCore::jsTestObjCustomAttr):
(WebCore::jsTestObjOnfoo):
(WebCore::jsTestObjOnwebkitfoo):
(WebCore::jsTestObjWithScriptStateAttribute):
(WebCore::jsTestObjWithCallWithAndSetterCallWithAttribute):
(WebCore::jsTestObjWithScriptExecutionContextAttribute):
(WebCore::jsTestObjWithScriptStateAttributeRaises):
(WebCore::jsTestObjWithScriptExecutionContextAttributeRaises):
(WebCore::jsTestObjWithScriptExecutionContextAndScriptStateAttribute):
(WebCore::jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaises):
(WebCore::jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute):
(WebCore::jsTestObjWithScriptArgumentsAndCallStackAttribute):
(WebCore::jsTestObjConditionalAttr1):
(WebCore::jsTestObjConditionalAttr2):
(WebCore::jsTestObjConditionalAttr3):
(WebCore::jsTestObjConditionalAttr4Constructor):
(WebCore::jsTestObjConditionalAttr5Constructor):
(WebCore::jsTestObjConditionalAttr6Constructor):
(WebCore::jsTestObjCachedAttribute1):
(WebCore::jsTestObjCachedAttribute2):
(WebCore::jsTestObjAnyAttribute):
(WebCore::jsTestObjContentDocument):
(WebCore::jsTestObjMutablePoint):
(WebCore::jsTestObjImmutablePoint):
(WebCore::jsTestObjStrawberry):
(WebCore::jsTestObjStrictFloat):
(WebCore::jsTestObjDescription):
(WebCore::jsTestObjId):
(WebCore::jsTestObjHash):
(WebCore::jsTestObjReplaceableAttribute):
(WebCore::jsTestObjNullableDoubleAttribute):
(WebCore::jsTestObjNullableLongAttribute):
(WebCore::jsTestObjNullableBooleanAttribute):
(WebCore::jsTestObjNullableStringAttribute):
(WebCore::jsTestObjNullableLongSettableAttribute):
(WebCore::jsTestObjNullableStringSettableAttribute):
(WebCore::jsTestObjNullableStringValue):
(WebCore::jsTestObjAttribute):
(WebCore::jsTestObjAttributeWithReservedEnumType):
(WebCore::jsTestObjPutForwardsAttribute):
(WebCore::jsTestObjPutForwardsNullableAttribute):
(WebCore::jsTestObjConstructor):
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
(WebCore::jsTestOverloadedConstructorsConstructor):
* bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
(WebCore::jsTestOverrideBuiltinsConstructor):
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
(WebCore::jsTestSerializedScriptValueInterfaceValue):
(WebCore::jsTestSerializedScriptValueInterfaceReadonlyValue):
(WebCore::jsTestSerializedScriptValueInterfaceCachedValue):
(WebCore::jsTestSerializedScriptValueInterfacePorts):
(WebCore::jsTestSerializedScriptValueInterfaceCachedReadonlyValue):
(WebCore::jsTestSerializedScriptValueInterfaceConstructor):
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::jsTestTypedefsUnsignedLongLongAttr):
(WebCore::jsTestTypedefsImmutableSerializedScriptValue):
(WebCore::jsTestTypedefsConstructorTestSubObj):
(WebCore::jsTestTypedefsAttrWithGetterException):
(WebCore::jsTestTypedefsAttrWithSetterException):
(WebCore::jsTestTypedefsStringAttrWithGetterException):
(WebCore::jsTestTypedefsStringAttrWithSetterException):
(WebCore::jsTestTypedefsConstructor):
* bindings/scripts/test/JS/JSattribute.cpp:
(WebCore::jsattributeReadonly):
(WebCore::jsattributeConstructor):
* bindings/scripts/test/JS/JSreadonly.cpp:
(WebCore::jsreadonlyConstructor):
* bridge/runtime_array.cpp:
(JSC::RuntimeArray::lengthGetter):
* bridge/runtime_array.h:
* bridge/runtime_method.cpp:
(JSC::RuntimeMethod::lengthGetter):
* bridge/runtime_method.h:
* bridge/runtime_object.cpp:
(JSC::Bindings::RuntimeObject::fallbackObjectGetter):
(JSC::Bindings::RuntimeObject::fieldGetter):
(JSC::Bindings::RuntimeObject::methodGetter):
* bridge/runtime_object.h:

Source/WebKit2:

* WebProcess/Plugins/Netscape/JSNPObject.cpp:
(WebKit::JSNPObject::propertyGetter):
(WebKit::JSNPObject::methodGetter):
* WebProcess/Plugins/Netscape/JSNPObject.h:

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

4 years agoDeprecate remaining uses of Lookup getStatic*, use HasStaticPropertyTable instead.
barraclough@apple.com [Mon, 6 Jun 2016 00:59:33 +0000 (00:59 +0000)]
Deprecate remaining uses of Lookup getStatic*, use HasStaticPropertyTable instead.
https://bugs.webkit.org/show_bug.cgi?id=158178

Reviewed by Darin Adler.

As of bug #158059 most JSC static table property access no longer requires getOwnPropertySlot to be
overridden. Port remaining calls to the getStatic* functions in Lookup.h over to the new mechanism.

Source/JavaScriptCore:

Part 1: Switch JSGlobalObject & JSDOMWindow to use HasStaticPropertyTable.

* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::getOwnPropertySlot):
    - Override is still required for symbol table,
      but regular property access is now via Base::getOwnPropertySlot.
* runtime/JSGlobalObject.h:
    - add HasStaticPropertyTable to structureFlags.

Source/WebCore:

Part 1: Switch JSGlobalObject & JSDOMWindow to use HasStaticPropertyTable.

* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::JSDOMWindow::getOwnPropertySlot):
    - getStaticPropertySlot -> Base::getOwnPropertySlot.
* bindings/js/JSPluginElementFunctions.h:
(WebCore::pluginElementCustomGetOwnPropertySlot):
    - Switch call from getStaticValueSlot to Type::getOwnPropertySlot.
      For any element where Type::hasStaticPropertyTable is true the HasStaticPropertyTable
      structure flag will also be set, so Type::getOwnPropertySlot will do the same thing.
* bindings/scripts/CodeGeneratorJS.pm:
(PrototypeHasStaticPropertyTable):
    - Was PrototypeOverridesGetOwnPropertySlot; prototypes now never need override getOwnPropertySlot so renaming accordingly.
(GenerateImplementation):
    - Removed generation of getOwnPropertySlot body for DOMGlobalObjects.
(GeneratePrototypeDeclaration):
    - For DOMGlobalObjects, set HasStaticPropertyTable instead of OverridesGetOwnPropertySlot & removed getOwnPropertySlot declaration.
(PrototypeOverridesGetOwnPropertySlot): Deleted.
    Renamed to PrototypeHasStaticPropertyTable.
* bindings/scripts/test/JS/JSTestGlobalObject.cpp:
* bindings/scripts/test/JS/JSTestGlobalObject.h:
    - Updating bindings test results.

LayoutTests:

Switch JSGlobalObject & WebCore DOM instance bindings to use HasStaticPropertyTable.

* fast/dom/unforgeable-attributes-expected.txt:
    - Progression, similar to the getOwnPropertyDescriptor test below. Previously we
      were reporting an error with a message appropriate to a disallowed value->value
      redefinition. This is actually a disallowed accessor->value reconfiguration, now
      reporting the correct error message for this.
* http/tests/security/cross-origin-window-property-access-expected.txt:
    - Newly reporting previously missing CORS error.
* js/dom/getOwnPropertyDescriptor-expected.txt:
* js/resources/getOwnPropertyDescriptor.js:
    - This test was previously incorrect - was expecting window.window property to
      reflect as a value decriptor. This now reflect as an accesor descriptor. New
      behaviour is correct per spec & matches Firefox.

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

4 years agoSource/WebCore:
antti@apple.com [Sun, 5 Jun 2016 19:48:26 +0000 (19:48 +0000)]
Source/WebCore:
Find on page finds too many matches
https://bugs.webkit.org/show_bug.cgi?id=158395
rdar://problem/7440637

Reviewed by Dan Bernstein and Darin Adler.

There is a long standing bug where in some cases WebKit may find non-visible text matches when doing find on page.
For example searching patch review view in bugs.webkit.org returns twice as many matches as there actually are
on the page. This happens because the text content is replicated in an invisible subframe.

Fix by making TextIterator ignore content in non-visible subframes in findPlainText.

Test: editing/text-iterator/count-matches-in-frames.html

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

    Remove support for an uninteresting assertion.

(WebCore::fullyClipsContents):

    Elements without renderer clip their content (except for display:contents).
    Test the content rect instead of the size rect for emptiness.

(WebCore::ignoresContainerClip):
(WebCore::pushFullyClippedState):
(WebCore::setUpFullyClippedStack):
(WebCore::isClippedByFrameAncestor):

    Test if the frame owner element is clipped in any of the parent frames.

(WebCore::TextIterator::TextIterator):

    If the frame is clipped by its ancestors the iterator is initialized to end state.
    Clipped frame never renders anything so there is no need to maintain clip stack and traverse.

(WebCore::findPlainText):

    Use TextIteratorClipsToFrameAncestors behavior. There might be other places where
    this behavior should be used (or perhaps it should be used always?) but limit this to
    text search for now.

(WebCore::depthCrossingShadowBoundaries): Deleted.
* editing/TextIterator.h:
* editing/TextIteratorBehavior.h:

    Add TextIteratorClipsToFrameAncestors behavior.

* testing/Internals.cpp:
(WebCore::Internals::countMatchesForText):
(WebCore::Internals::countFindMatches):
(WebCore::Internals::numberOfLiveNodes):
* testing/Internals.h:
* testing/Internals.idl:

    Testing support

LayoutTests:
TextIterator should ignore non-visible frames in findPlainText
https://bugs.webkit.org/show_bug.cgi?id=158395

Reviewed by Dan Bernstein and Darin Adler.

* editing/text-iterator/count-matches-in-frames-expected.txt: Added.
* editing/text-iterator/count-matches-in-frames.html: Added.
* imported/blink/fast/shapes/shape-outside-floats/shape-outside-negative-height-crash-width.html: Non-rendered whitespace change.

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

4 years agoDo not construct temporary copy of String from AtomicString.
annulen@yandex.ru [Sun, 5 Jun 2016 19:38:57 +0000 (19:38 +0000)]
Do not construct temporary copy of String from AtomicString.
https://bugs.webkit.org/show_bug.cgi?id=158400

Reviewed by Darin Adler.

No new tests needed.

* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::ariaReadOnlyValue):

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

4 years agoAttempt to fix plug-in hangs by adding back empty slots for the removed messages.
andersca@apple.com [Sun, 5 Jun 2016 16:35:43 +0000 (16:35 +0000)]
Attempt to fix plug-in hangs by adding back empty slots for the removed messages.

* Plugins/Hosted/WebKitPluginClient.defs:
* Plugins/Hosted/WebKitPluginHost.defs:

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

4 years agoREGRESSION (r201686): Web Inspector: Fix typo causing an internal error
mattbaker@apple.com [Sun, 5 Jun 2016 15:23:05 +0000 (15:23 +0000)]
REGRESSION (r201686): Web Inspector: Fix typo causing an internal error
https://bugs.webkit.org/show_bug.cgi?id=158392
<rdar://problem/26640467>

Reviewed by Joseph Pecoraro.

* UserInterface/Views/HeapAllocationsTimelineOverviewGraph.js:
Fixed typo.

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

4 years agoGive RuleFeatures::classesMatchingAncestors some inline capacity.
akling@apple.com [Sun, 5 Jun 2016 15:20:06 +0000 (15:20 +0000)]
Give RuleFeatures::classesMatchingAncestors some inline capacity.
<https://webkit.org/b/158356>

Reviewed by Darin Adler.

Avoid 362'000 heap allocations on PLUM (1.3% of all transient fastMallocs) by giving
RuleFeatures::classesMatchingAncestors some inline capacity (32).
This class is only ever allocated on the stack anyway.

* css/RuleFeature.h:

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

4 years agoUnreviewed, rolling out r201693.
beidson@apple.com [Sun, 5 Jun 2016 14:54:36 +0000 (14:54 +0000)]
Unreviewed, rolling out r201693.

Can't fix right now

Reverted changeset:

"Modern IDB: Crash seen in IDBConnectionProxy::putOrAdd on
GuardMalloc bot"
https://bugs.webkit.org/show_bug.cgi?id=158124
http://trac.webkit.org/changeset/201693

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

4 years agoUnreviewed, rolling out r201694.
beidson@apple.com [Sun, 5 Jun 2016 14:53:28 +0000 (14:53 +0000)]
Unreviewed, rolling out r201694.

201693

Reverted changeset:

"Fix the build after r201693."
https://bugs.webkit.org/show_bug.cgi?id=158394
http://trac.webkit.org/changeset/201694

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

4 years agoFix the build after r201693.
beidson@apple.com [Sun, 5 Jun 2016 14:45:52 +0000 (14:45 +0000)]
Fix the build after r201693.
https://bugs.webkit.org/show_bug.cgi?id=158394

Reviewed by NOBODY (Build fix).

r201693 landed without the Source/WebKit2 changes, and I didn't have EWS/CQ available to check myself. *sigh*

* NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
(WebKit::NetworkBlobRegistry::writeBlobsToTemporaryFiles):
* NetworkProcess/FileAPI/NetworkBlobRegistry.h:

* WebProcess/FileAPI/BlobRegistryProxy.cpp:
(WebKit::BlobRegistryProxy::writeBlobsToTemporaryFiles):
* WebProcess/FileAPI/BlobRegistryProxy.h:

* WebProcess/Network/NetworkProcessConnection.cpp:
(WebKit::NetworkProcessConnection::didClose):
(WebKit::NetworkProcessConnection::writeBlobsToTemporaryFiles):
* WebProcess/Network/NetworkProcessConnection.h:

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

4 years agoModern IDB: Crash seen in IDBConnectionProxy::putOrAdd on GuardMalloc bot
beidson@apple.com [Sun, 5 Jun 2016 03:46:42 +0000 (03:46 +0000)]
Modern IDB: Crash seen in IDBConnectionProxy::putOrAdd on GuardMalloc bot
https://bugs.webkit.org/show_bug.cgi?id=158124

Reviewed by Darin Adler.

No new tests (Covered by existing test configurations).

* Modules/indexeddb/IDBTransaction.cpp:
(WebCore::IDBTransaction::putOrAddOnServer):

* Modules/indexeddb/client/IDBConnectionProxy.cpp:
(WebCore::IDBClient::IDBConnectionProxy::putOrAdd):

* Modules/indexeddb/client/IDBConnectionProxy.h:
(WebCore::IDBClient::IDBConnectionProxy::callConnectionOnMainThread):

* bindings/js/SerializedScriptValue.cpp:
(WebCore::SerializedScriptValue::writeBlobsToDiskForIndexedDB):
* bindings/js/SerializedScriptValue.h:

* platform/network/BlobRegistry.h:
* platform/network/BlobRegistryImpl.cpp:
(WebCore::BlobRegistryImpl::writeBlobsToTemporaryFiles):
* platform/network/BlobRegistryImpl.h:

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

4 years agoWeb Inspector: add a keyboard shortcut to open the new tab tab
bburg@apple.com [Sun, 5 Jun 2016 00:59:40 +0000 (00:59 +0000)]
Web Inspector: add a keyboard shortcut to open the new tab tab
https://bugs.webkit.org/show_bug.cgi?id=158365
<rdar://problem/26631897>

Reviewed by Timothy Hatcher.

Make Cmd-t show the new tab tab if it's not already open and
there is at least one tab type that's not currently in the tab bar.

* UserInterface/Base/Main.js:
(WebInspector.contentLoaded):
(WebInspector._updateNewTabButtonState):
(WebInspector.showNewTabTab):
(WebInspector.isNewTabWithTypeAllowed):
Clean up the code that decides whether we can show the new tab tab.
It is now a special case inside WebInspector.isNewTabWithTypeAllowed.

* UserInterface/Views/NewTabContentView.js:
(WebInspector.NewTabContentView.prototype._updateShownTabs):
Use Array.from.

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

4 years agoREGRESSION (r201474): Should set overflow: hidden on -webkit-media-controls when...
adachan@apple.com [Sun, 5 Jun 2016 00:36:55 +0000 (00:36 +0000)]
REGRESSION (r201474): Should set overflow: hidden on -webkit-media-controls when placeholder is showing
https://bugs.webkit.org/show_bug.cgi?id=158377

Reviewed by Darin Adler.

In r201474, we defer removing the hidden class from inlinePlaybackPlaceholder until
showInlinePlaybackPlaceholderWhenSafe(). We also need to move the code that adds the
placeholder-showing class to -webkit-media-controls to that method.

* Modules/mediacontrols/mediaControlsApple.js:
(Controller.prototype.showInlinePlaybackPlaceholderWhenSafe):
Add the "placeholder-showing" class to -webkit-media-controls when we show the placeholder.
(Controller.prototype.handlePresentationModeChange):
Remove the "placeholder-showing" class from -webkit-media-controls when we hide the
placeholder. Remove the old code that adds and removes that class.

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

4 years agoleaks seen in fast/css/variables tests
darin@apple.com [Sat, 4 Jun 2016 23:02:48 +0000 (23:02 +0000)]
leaks seen in fast/css/variables tests
https://bugs.webkit.org/show_bug.cgi?id=150728

Reviewed by Anders Carlsson.

Fixes leaks seen running fast/css/variables tests with leak checking turned on.

* css/CSSPrimitiveValue.cpp:
(WebCore::isStringType): Added. For debugging purposes so we catch cases where we
are not treating strings consistently between construction and destruction.
(WebCore::CSSPrimitiveValue::CSSPrimitiveValue): Assert isStringType returns true.
(WebCore::CSSPrimitiveValue::cleanup): Added CSS_DIMENSION and CSS_PARSER_IDENTIFIER
to the list of types that have to decrement the reference count of the string we own.
Both types are passed to the string constructor above.

* css/CSSValueList.cpp:
(WebCore::CSSValueList::buildParserValueListSubstitutingVariables): Restructured the
code so we destroy any CSSParserValue that we don't use. This is needed because of the
peculiar requirements of CSSParserValue: it has a be a struct without a destructor so
it can be used in the CSS grammar, so we have to destroy it explicitly. Ideally we would
minimize any use of it outside the CSSParser itself, but as long as we are using it, we
need to do this explicit destruction.

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

4 years agoRemove NPSPI that is no longer used
andersca@apple.com [Sat, 4 Jun 2016 22:48:07 +0000 (22:48 +0000)]
Remove NPSPI that is no longer used
https://bugs.webkit.org/show_bug.cgi?id=158384

Reviewed by Sam Weinig.

Source/WebKit:

* WebKit.xcodeproj/project.pbxproj:

Source/WebKit/mac:

* Configurations/WebKitLegacy.xcconfig:
* Plugins/Hosted/NetscapePluginHostProxy.mm:
(WKPCCheckIfAllowedToLoadURL): Deleted.
(WKPCCancelCheckIfAllowedToLoadURL): Deleted.
(WKPCResolveURL): Deleted.
* Plugins/Hosted/NetscapePluginInstanceProxy.h:
* Plugins/Hosted/NetscapePluginInstanceProxy.mm:
(WebKit::NetscapePluginInstanceProxy::NetscapePluginInstanceProxy): Deleted.
(WebKit::NetscapePluginInstanceProxy::checkIfAllowedToLoadURL): Deleted.
(WebKit::NetscapePluginInstanceProxy::cancelCheckIfAllowedToLoadURL): Deleted.
(WebKit::NetscapePluginInstanceProxy::checkIfAllowedToLoadURLResult): Deleted.
(WebKit::NetscapePluginInstanceProxy::resolveURL): Deleted.
* Plugins/Hosted/WebHostedNetscapePluginView.h:
* Plugins/Hosted/WebHostedNetscapePluginView.mm:
(-[WebHostedNetscapePluginView _webPluginContainerCancelCheckIfAllowedToLoadRequest:]): Deleted.
(-[WebHostedNetscapePluginView _containerCheckResult:contextInfo:]): Deleted.
* Plugins/Hosted/WebKitPluginClient.defs:
* Plugins/WebBaseNetscapePluginView.h:
* Plugins/WebBaseNetscapePluginView.mm:
(-[WebBaseNetscapePluginView resolvedURLStringForURL:target:]): Deleted.
* Plugins/WebNetscapeContainerCheckContextInfo.h: Removed.
* Plugins/WebNetscapeContainerCheckContextInfo.mm: Removed.
(-[WebNetscapeContainerCheckContextInfo initWithCheckRequestID:callbackFunc:context:]): Deleted.
(-[WebNetscapeContainerCheckContextInfo checkRequestID]): Deleted.
(-[WebNetscapeContainerCheckContextInfo callback]): Deleted.
(-[WebNetscapeContainerCheckContextInfo context]): Deleted.
* Plugins/WebNetscapeContainerCheckPrivate.h: Removed.
* Plugins/WebNetscapeContainerCheckPrivate.mm: Removed.
(browserContainerCheckFuncs): Deleted.
* Plugins/WebNetscapePluginView.h:
* Plugins/WebNetscapePluginView.mm:
(-[WebNetscapePluginView checkIfAllowedToLoadURL:frame:callbackFunc:context:]): Deleted.
(-[WebNetscapePluginView _containerCheckResult:contextInfo:]): Deleted.
(-[WebNetscapePluginView cancelCheckIfAllowedToLoadURL:]): Deleted.
(-[WebNetscapePluginView _webPluginContainerCancelCheckIfAllowedToLoadRequest:]): Deleted.
(-[WebNetscapePluginView fini]): Deleted.
(-[WebNetscapePluginView getVariable:value:]): Deleted.
(-[WebNetscapePluginView resolveURL:forTarget:]): Deleted.
* Plugins/npapi.mm:
(WKN_CheckIfAllowedToLoadURL): Deleted.
(WKN_CancelCheckIfAllowedToLoadURL): Deleted.
(WKN_ResolveURL): Deleted.

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

4 years agoTemporary build fix. (This function is going away).
andersca@apple.com [Sat, 4 Jun 2016 22:34:15 +0000 (22:34 +0000)]
Temporary build fix. (This function is going away).

* Plugins/Hosted/NetscapePluginInstanceProxy.mm:
(WebKit::NetscapePluginInstanceProxy::checkIfAllowedToLoadURLResult): Deleted.
* Plugins/Hosted/WebKitPluginHost.defs:

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

4 years ago32-bit build fix
andersca@apple.com [Sat, 4 Jun 2016 21:28:06 +0000 (21:28 +0000)]
32-bit build fix
https://bugs.webkit.org/show_bug.cgi?id=158383
rdar://problem/26628125

Reviewed by Dan Bernstein.

Synthesize the webPlaybackSessionInterfaceMac property.

* platform/mac/WebPlaybackControlsManager.mm:

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

4 years agoWeb Inspector: discontinuous recordings should have discontinuities in the timeline...
mattbaker@apple.com [Sat, 4 Jun 2016 21:09:55 +0000 (21:09 +0000)]
Web Inspector: discontinuous recordings should have discontinuities in the timeline memory graph
https://bugs.webkit.org/show_bug.cgi?id=158052
<rdar://problem/26516695>

Reviewed by Joseph Pecoraro.

Add gaps to the overview and category line charts where discontinuities
exist in the timeline recording.

* UserInterface/Models/Timeline.js:
(WebInspector.Timeline.prototype.recordsInTimeRange):
Replaces `_visibleRecords` methods found in various views.

* UserInterface/Models/TimelineRecording.js:
(WebInspector.TimelineRecording.prototype.reset):
(WebInspector.TimelineRecording.prototype.addDiscontinuity):
(WebInspector.TimelineRecording.prototype.discontinuitiesInTimeRange):
Allow discontinuities to be added to the recording, and have a means to
look up gaps within a time range.

* UserInterface/Views/HeapAllocationsTimelineOverviewGraph.js:
(WebInspector.HeapAllocationsTimelineOverviewGraph.prototype._visibleRecords): Deleted.
Replaced by Timeline helper method.

* UserInterface/Views/MemoryTimelineOverviewGraph.js:
(WebInspector.MemoryTimelineOverviewGraph.prototype.layout.insertDiscontinuity):
(WebInspector.MemoryTimelineOverviewGraph.prototype.layout):
Insert zero-points into the chart at discontinuity boundaries to create
gaps. Data points for records immediately before or after a gap are extended
to the edge of the discontinuity.

(WebInspector.MemoryTimelineOverviewGraph.prototype._visibleRecords): Deleted.
Replaced by Timeline helper method.

* UserInterface/Views/MemoryTimelineView.js:
(WebInspector.MemoryTimelineView.prototype.layout):
Insert zero-points into each category chart at discontinuity boundaries
to create gaps.

Insert zero-points into the chart to create gaps.
(WebInspector.MemoryTimelineView.prototype._visibleRecords): Deleted.
Replaced by Timeline helper method.

* UserInterface/Views/TimelineOverview.js:
(WebInspector.TimelineOverview.prototype.discontinuitiesInTimeRange):
Forward to the TimelineRecording, which isn't exposed to clients.

* UserInterface/Views/TimelineRecordingContentView.js:
(WebInspector.TimelineRecordingContentView):
(WebInspector.TimelineRecordingContentView.prototype._capturingStarted):
(WebInspector.TimelineRecordingContentView.prototype._capturingStopped):
(WebInspector.TimelineRecordingContentView.prototype._recordingReset):
Track discontinuities (recording stop followed by a start) and add them
to the current recording.

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

4 years agoModern IDB: Add -private.html variants of crypto/subtle IndexedDB tests.
beidson@apple.com [Sat, 4 Jun 2016 20:59:57 +0000 (20:59 +0000)]
Modern IDB: Add -private.html variants of crypto/subtle IndexedDB tests.
https://bugs.webkit.org/show_bug.cgi?id=153323

Reviewed by Darin Adler.

* crypto/subtle/resources/rsa-indexeddb-non-exportable.js: Copied from LayoutTests/crypto/subtle/rsa-indexeddb-non-exportable.html.
* crypto/subtle/resources/rsa-indexeddb.js: Copied from LayoutTests/crypto/subtle/rsa-indexeddb.html.

* crypto/subtle/rsa-indexeddb-non-exportable-private-expected.txt: Added.
* crypto/subtle/rsa-indexeddb-non-exportable-private.html: Added.
* crypto/subtle/rsa-indexeddb-non-exportable.html:
* crypto/subtle/rsa-indexeddb-private-expected.txt: Added.
* crypto/subtle/rsa-indexeddb-private.html: Added.
* crypto/subtle/rsa-indexeddb.html:

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

4 years agoGet rid of WorkItemWin
andersca@apple.com [Sat, 4 Jun 2016 20:53:25 +0000 (20:53 +0000)]
Get rid of WorkItemWin
https://bugs.webkit.org/show_bug.cgi?id=158381

Reviewed by Sam Weinig.

* wtf/PlatformWin.cmake:
* wtf/WorkQueue.h:
* wtf/win/WorkItemWin.cpp: Removed.
(WTF::WorkItemWin::WorkItemWin): Deleted.
(WTF::WorkItemWin::create): Deleted.
(WTF::WorkItemWin::~WorkItemWin): Deleted.
* wtf/win/WorkItemWin.h: Removed.
(WTF::WorkItemWin::function): Deleted.
(WTF::WorkItemWin::queue): Deleted.
* wtf/win/WorkQueueWin.cpp:
(WTF::WorkQueue::performWorkOnRegisteredWorkThread):
(WTF::WorkQueue::dispatch):

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

4 years agoGet rid of HANDLE registration code in WorkQueueWin
andersca@apple.com [Sat, 4 Jun 2016 19:26:24 +0000 (19:26 +0000)]
Get rid of HANDLE registration code in WorkQueueWin
https://bugs.webkit.org/show_bug.cgi?id=158375

Reviewed by Darin Adler.

* wtf/WorkQueue.h:
* wtf/win/WorkItemWin.cpp:
(WTF::HandleWorkItem::HandleWorkItem): Deleted.
(WTF::HandleWorkItem::createByAdoptingHandle): Deleted.
(WTF::HandleWorkItem::~HandleWorkItem): Deleted.
* wtf/win/WorkItemWin.h:
(WTF::HandleWorkItem::setWaitHandle): Deleted.
(WTF::HandleWorkItem::waitHandle): Deleted.
* wtf/win/WorkQueueWin.cpp:
(WTF::WorkQueue::handleCallback): Deleted.
(WTF::WorkQueue::platformInvalidate): Deleted.
(WTF::WorkQueue::unregisterWaitAndDestroyItemSoon): Deleted.
(WTF::WorkQueue::unregisterWaitAndDestroyItemCallback): Deleted.

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

4 years agoREGRESSION (r201263): Some tests have become flaky timeouts.
ap@apple.com [Sat, 4 Jun 2016 19:11:17 +0000 (19:11 +0000)]
REGRESSION (r201263): Some tests have become flaky timeouts.
https://bugs.webkit.org/show_bug.cgi?id=157990

Reviewed by Darin Adler.

Tools:

* WebKitTestRunner/TestInvocation.cpp: (WTR::TestInvocation::invoke):
It is somewhat legitimate for WebContent to not respond to messages after the test
is done; it can be e.g. re-doing a costly repaint. So, we should restart is silently,
without making the current test fail.

LayoutTests:

* platform/mac-wk2/TestExpectations:
* platform/mac/TestExpectations:

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

4 years agoAvoid redundant isUndefined() check for parameters that are both optional and nullabl...
cdumez@apple.com [Sat, 4 Jun 2016 19:10:24 +0000 (19:10 +0000)]
Avoid redundant isUndefined() check for parameters that are both optional and nullable in overloads
https://bugs.webkit.org/show_bug.cgi?id=158380

Reviewed by Brady Eidson.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateParametersCheckExpression):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter):

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

4 years agoAdd better basic isNaN test coverage
commit-queue@webkit.org [Sat, 4 Jun 2016 18:58:08 +0000 (18:58 +0000)]
Add better basic isNaN test coverage
https://bugs.webkit.org/show_bug.cgi?id=158379

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-06-04
Reviewed by Benjamin Poulain.

* js/Number-isNaN-expected.txt: Added.
* js/Number-isNaN.html: Added.
* js/global-isNaN-expected.txt: Added.
* js/global-isNaN.html: Added.
* js/script-tests/Number-isNaN.js: Added.
(objectWithNumberValueOf.valueOf):
(objectWithNaNValueOf.valueOf):
(objectRecordConversionCalls.toString):
(objectRecordConversionCalls.valueOf):
* js/script-tests/global-isNaN.js: Added.
(objectConvertToString.toString):
(objectRecordToStringCall.toString):
(objectThrowOnToString.toString):
(objectWithValueOf.valueOf):
(objectThrowOnValueOf.valueOf):
(objectThrowOnValueOf.toString):
(objectRecordValueOfCall.valueOf):
(objectRecordConversionCalls.toString):
(objectRecordConversionCalls.valueOf):
* js/script-tests/math-clz32.js:

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

4 years agoCSP: Content Security Policy directive, upgrade-insecure-requests (UIR)
bfulgham@apple.com [Sat, 4 Jun 2016 07:20:17 +0000 (07:20 +0000)]
CSP: Content Security Policy directive, upgrade-insecure-requests (UIR)
https://bugs.webkit.org/show_bug.cgi?id=143653
<rdar://problem/23032067>

Reviewed by Andy Estes.

Source/WebCore:

Modify our loading logic so that we recognize and upgrade insecure requests to secure
requests if the Content Security Policy directive 'upgrade-insecure-requests' is
present.

Add a static helper function to ContentSecurityPolicy to upgrade insecure URLs so
that we don't have to sprinkle the same code all over the loader system.

Tests: http/tests/security/contentSecurityPolicy/report-only-upgrade-insecure.php
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/basic-upgrade-cors.https.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/basic-upgrade.https.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/form-upgrade.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/https-header-auxiliary.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/https-header-nested.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/https-header-subresource.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/https-header-top-level.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/iframe-upgrade.https.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/proper-nested-upgrades.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/proper-open-window-upgrades.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-audio-video-in-main-frame.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-css-in-iframe.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-image-in-main-frame.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-simple-ws.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-xhr-in-main-frame.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-redirect-http-to-https-script-in-iframe.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-redirect-https-to-http-script-in-iframe.html
       http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrades-mixed-content.html
       http/tests/ssl/iframe-upgrade.https.html
       http/tests/ssl/upgrade-origin-usage.html
       http/tests/websocket/tests/hybi/upgrade-simple-ws.html

* Modules/websockets/WebSocket.cpp:
(WebCore::WebSocket::connect): Upgrade insecure requests if the CSP
indicates we should.
* dom/Document.cpp:
(WebCore::Document::initSecurityContext): Populate new document CSP with sets of upgrade host and port combinations.
* dom/ScriptElement.cpp:
(WebCore::ScriptElement::requestScript): Upgrade insecure requests if
the CSP indicates we should.
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::loadResource): Ditto.
* loader/DocumentWriter.cpp:
(WebCore::DocumentWriter::begin): Ditto.
* loader/FormSubmission.cpp:
(WebCore::FormSubmission::create): Ditto.
(WebCore::FormSubmission::populateFrameLoadRequest): Add "Upgrade-Insecure-Requests"
header to frame load requests.
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::addExtraFieldsToMainResourceRequest): Add the
'Update-Insecure-Requests' header field if necessary.
(WebCore::FrameLoader::addHTTPUpgradeInsecureRequestsIfNeeded): Added helper function.
(WebCore::FrameLoader::loadPostRequest): Upgrade insecure requests if the CSP
indicates we should.
(WebCore::FrameLoader::loadResourceSynchronously): Ditto.
(WebCore::FrameLoader::loadDifferentDocumentItem): If loading a form, add the
'Update-Insecure-Requests' header field if necessary.
(WebCore::createWindow): Upgrade insecure requests if the CSP
indicates we should.
* loader/FrameLoader.h:
* loader/PingLoader.cpp:
(WebCore::PingLoader::loadImage): Upgrade insecure requests if the CSP
indicates we should.
(WebCore::PingLoader::sendPing): Ditto.
(WebCore::PingLoader::sendViolationReport): Ditto.
* loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::willSendRequestInternal): Ditto.
* loader/SubframeLoader.cpp:
(WebCore::SubframeLoader::requestFrame): Ditto.
(WebCore::SubframeLoader::requestObject): Ditto.
* loader/appcache/ApplicationCacheHost.cpp:
(WebCore::ApplicationCacheHost::shouldLoadResourceFromApplicationCache): Ditto.
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::requestImage): Ditto.
(WebCore::CachedResourceLoader::requestResource): Ditto.
* page/DOMWindow.cpp:
(WebCore::DOMWindow::createWindow): Add the 'Update-Insecure-Requests' header
field if necessary.
* page/csp/ContentSecurityPolicy.cpp:
(WebCore::ContentSecurityPolicy::copyStateFrom): Populate upgraded resource set
from other context.
(WebCore::ContentSecurityPolicy::upgradeInsecureRequestIfNeeded): Added helper function
to upgrade requests when the upgrade-insecure-requests CSP policy is present, or if
the host and port combination have previously been upgraded.
(WebCore::ContentSecurityPolicy::upgradeInsecureNavigationRequestIfNeeded): Added
helper function to upgrade requests that have been previously upgraded. Cross-site
navigations only get upgraded when they have been previously upgraded.
(WebCore::ContentSecurityPolicy::addInsecureNavigationRequestsToUpgrade): Added.
(WebCore::ContentSecurityPolicy::populateInsecureNavigationRequestsToUpgradeFromOther): Added.
* page/csp/ContentSecurityPolicy.h:
(WebCore::ContentSecurityPolicy::setUpgradeInsecureRequests): Added.
(WebCore::ContentSecurityPolicy::upgradeInsecureRequests): Added.
* page/csp/ContentSecurityPolicyDirectiveList.cpp:
(WebCore::ContentSecurityPolicyDirectiveList::ContentSecurityPolicyDirectiveList): Use
more C++11 initializations.
(WebCore::ContentSecurityPolicyDirectiveList::setUpgradeInsecureRequests): Added.
(WebCore::ContentSecurityPolicyDirectiveList::addDirective): Teach this function to
recognize the new directive.
* page/csp/ContentSecurityPolicyDirectiveList.h:
* page/csp/ContentSecurityPolicyDirectiveNames.cpp:
* page/csp/ContentSecurityPolicyDirectiveNames.h:
* platform/network/HTTPHeaderNames.in: Add new 'Upgrade-Insecure-Requests' header field.
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::open): Upgrade insecure requests if the CSP if needed.

LayoutTests:

Some of these tests are based on a set of Blink patches by Mike West <mkwst@chromium.org>.
<https://src.chromium.org/viewvc/blink?revision=192607&view=revision>,
<https://codereview.chromium.org/1178093002>, <https://codereview.chromium.org/1964303003>

The rest of them are based on our own mixedContent tests, revised for upgraded requests.

Note that WebSockets are not part of this testing at present due to https://bugs.webkit.org/show_bug.cgi?id=157884.

* http/tests/security/contentSecurityPolicy/report-only-upgrade-insecure.php: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/basic-upgrade-cors.https-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/basic-upgrade-cors.https.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/basic-upgrade.https-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/basic-upgrade.https.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/form-upgrade-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/form-upgrade.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/https-header-auxiliary-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/https-header-auxiliary.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/https-header-nested-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/https-header-nested.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/https-header-subresource-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/https-header-subresource.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/https-header-top-level-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/https-header-top-level.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/iframe-upgrade.https-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/iframe-upgrade.https.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/proper-nested-upgrades-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/proper-nested-upgrades.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/proper-open-window-upgrades-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/proper-open-window-upgrades.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/resources: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/resources/basic-upgrade-cors.https.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/resources/check-https-header.pl: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/resources/echo-https-header.pl: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/resources/frame-with-insecure-audio-video.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/resources/frame-with-insecure-css.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/resources/frame-with-insecure-image.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/resources/frame-with-redirect-http-to-https-script.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/resources/frame-with-redirect-https-to-http-script.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/resources/insecure-xhr-in-main-frame-window.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/resources/mixed-content-with-upgrade.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/resources/post-https-header.pl: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-audio-video-in-main-frame-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-audio-video-in-main-frame.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-css-in-iframe-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-css-in-iframe.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-image-in-main-frame-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-image-in-main-frame.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-xhr-in-main-frame-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-xhr-in-main-frame.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-redirect-http-to-https-script-in-iframe-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-redirect-http-to-https-script-in-iframe.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-redirect-https-to-http-script-in-iframe-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-redirect-https-to-http-script-in-iframe.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrades-mixed-content-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrades-mixed-content.html: Added.
* http/tests/security/resources/post-origin-to-parent.html: Added.
* http/tests/ssl/iframe-upgrade.https-expected.txt: Added.
* http/tests/ssl/iframe-upgrade.https.html: Added.
* http/tests/ssl/upgrade-origin-usage-expected.txt: Added.
* http/tests/ssl/upgrade-origin-usage.html: Added.
* http/tests/ssl/resources/origin-usage-iframe-1.html: Added.
* http/tests/ssl/resources/origin-usage-iframe-1.manifest: Added.
* http/tests/ssl/resources/origin-usage-iframe-2.html: Added.
* http/tests/ssl/resources/origin-usage-iframe-2.manifest: Added.
* http/tests/websocket/tests/hybi/upgrade-simple-ws-expected.txt: Added.
* http/tests/websocket/tests/hybi/upgrade-simple-ws.html: Added.
* TestExpectations: Skip http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-simple-ws.html since the
WebSocket server does not currently support wss sockets.

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

4 years agoEager FTL failure for strict comparison of NaN with number check
commit-queue@webkit.org [Sat, 4 Jun 2016 03:28:57 +0000 (03:28 +0000)]
Eager FTL failure for strict comparison of NaN with number check
https://bugs.webkit.org/show_bug.cgi?id=158368

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-06-03
Reviewed by Darin Adler.

DoupleRep with a RealNumberUse starts by handling double
then falls back to Int32 if the unboxed double is NaN.

Before handling integers, the code is checking if the input
is indeed an int32. The problem was that this check failed
to account for NaN as an original input of the DoubleRep.

The call to isNotInt32() filter the doubles checks because
that was handled by the previous block.
The problem is the previous block handles any double except NaN.
If the original input was NaN, the masking by "~SpecFullDouble"
filter that possibility and isNotInt32() fails to test that case.

This patch fixes the issue by changing the filter to SpecDoubleReal.
The type SpecDoubleReal does not include the NaN types.

* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileDoubleRep):
* tests/stress/double-rep-real-number-use-on-nan.js: Added.
To ensure the isNotInt32() does not test anything, we want
proven numbers as input. The (+value) are there to enforce
a ToNumber() which in turn give us a proven Number type.

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

4 years agoBopomofo ruby in Dictionary.app is written horizontally (when it should be written...
mmaxfield@apple.com [Sat, 4 Jun 2016 02:04:58 +0000 (02:04 +0000)]
Bopomofo ruby in Dictionary.app is written horizontally (when it should be written vertically)
https://bugs.webkit.org/show_bug.cgi?id=158245
<rdar://problem/25675318>

Reviewed by Darin Adler.

Source/WebCore:

With orthogonal flows, the inner element gets a logical width that is computed from two values:
- The containing block's available logical height
- The FrameView's visibleHeight

In Dictionary.app, the FrameView's height changes, but this element doesn't get relaid out.
This is because of our optimization where normal-flow elements don't get relaid out if their
parent's width doesn't change (which is the case here).

Therefore, this orthogonal writing mode element should be relaid out when the FrameView changes
size. Luckily, we already have machinery for doing this: percentage heights. In quirks mode, a
div with a percentage height may walk arbitrarily far up the DOM tree in order to determine which
element the percentage should be resolved against. Therefore, we have a map of percentage-sizing-
ancestors to percentage-sizing-descendants which speeds up this search. If a percentage-sizing-
ancestor gets relaid out, all the relevant percentage-sizing-descendants get relaid out too.

Therefore, we can simply mark the FrameView as a percentage-sizing-ancestor and the orthogonal
flow element as a percentage-sizing-descendant. The lifetime of this relationship is already
managed correctly - it gets reset when style changes and when the renderer is destroyed, and
is created during layout.

Unfortunately, this same treatment should also be done to the element which dictates the
containing block's logical height (which caused https://bugs.webkit.org/show_bug.cgi?id=158286).
Implementing this would require giving RenderBox::availableLogicalHeight() a second result
of the necessary element which dictates the return. In an effort to keep this patch small and
focused, I'll do this secondary (much larger) work in a patch on that bug. This patch,
therefore, is kept small and focused.

Test: fast/text/orthogonal-writing-mode-containing-block-frameView-resize-relayout.html

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

LayoutTests:

Rebaselined fast/table/border-collapsing/004-vertical.html to show a progression.

* fast/text/orthogonal-writing-mode-containing-block-frameView-resize-relayout-expected.html: Added.
* fast/text/orthogonal-writing-mode-containing-block-frameView-resize-relayout.html: Added.
* platform/mac/fast/table/border-collapsing/004-vertical-expected.png: Rebased
* platform/mac/fast/table/border-collapsing/004-vertical-expected.txt: Rebased

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

4 years agoText not visible while external font downloading
mmaxfield@apple.com [Sat, 4 Jun 2016 02:00:50 +0000 (02:00 +0000)]
Text not visible while external font downloading
https://bugs.webkit.org/show_bug.cgi?id=25207
<rdar://problem/15167413>

Reviewed by Dean Jackson.

Source/WebCore:

I already laid the groundwork for this when implementing the CSS Font Loading API.
We only have to create a timer and correctly respond to it timing out (by setting
state).

This patch also adds a new internal setting which puts us in a mode where font
loads never complete and the timeout occurs immediately. This is so we can test
the fallback behavior.

Test: fast/text/web-font-load-fallback-during-loading.html

* css/CSSFontFace.cpp:
(WebCore::CSSFontFace::CSSFontFace):
(WebCore::CSSFontFace::fontLoadEventOccurred):
(WebCore::CSSFontFace::timeoutFired):
(WebCore::CSSFontFace::setStatus):
(WebCore::CSSFontFace::fontLoaded):
(WebCore::CSSFontFace::webFontsShouldAlwaysFallBack):
(WebCore::CSSFontFace::pump):
(WebCore::CSSFontFace::font):
* css/CSSFontFace.h:
* css/CSSFontFaceSource.cpp:
(WebCore::CSSFontFaceSource::fontLoaded):
* css/FontFace.cpp:
(WebCore::FontFace::fontStateChanged):
* page/Settings.cpp:
(WebCore::Settings::Settings):
(WebCore::Settings::setWebFontsAlwaysFallBack):
* page/Settings.h:
(WebCore::Settings::webFontsAlwaysFallBack):
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setWebFontsAlwaysFallBack):
* testing/InternalSettings.h:
* testing/InternalSettings.idl:

LayoutTests:

* fast/text/web-font-load-fallback-during-loading-no-multiple-expected.txt: Added.
* fast/text/web-font-load-fallback-during-loading-no-multiple.html: Added.
* fast/text/web-font-load-fallback-during-loading-expected.html: Added.
* fast/text/web-font-load-fallback-during-loading.html: Added.

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

4 years agoModernize a few more lambda captures
cdumez@apple.com [Sat, 4 Jun 2016 01:31:47 +0000 (01:31 +0000)]
Modernize a few more lambda captures
https://bugs.webkit.org/show_bug.cgi?id=158370

Reviewed by Brady Eidson.

Source/WebCore:

* workers/DedicatedWorkerGlobalScope.cpp:
(WebCore::DedicatedWorkerGlobalScope::postMessage):
* workers/DedicatedWorkerGlobalScope.h:
* workers/Worker.cpp:
(WebCore::Worker::postMessage):
* workers/Worker.h:
* workers/WorkerEventQueue.cpp:
(WebCore::WorkerEventQueue::enqueueEvent):
* workers/WorkerGlobalScopeProxy.h:
* workers/WorkerMessagingProxy.cpp:
(WebCore::WorkerMessagingProxy::postMessageToWorkerObject):
(WebCore::WorkerMessagingProxy::postMessageToWorkerGlobalScope):
* workers/WorkerMessagingProxy.h:
* workers/WorkerObjectProxy.h:

Source/WebKit:

* Storage/StorageTracker.cpp:
(WebCore::StorageTracker::deleteOrigin):

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

4 years agoJSON.stringify replacer function calls with numeric array indices
commit-queue@webkit.org [Sat, 4 Jun 2016 01:08:27 +0000 (01:08 +0000)]
JSON.stringify replacer function calls with numeric array indices
https://bugs.webkit.org/show_bug.cgi?id=158262
Source/JavaScriptCore:

rdar://problem/26613876

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-06-03
Reviewed by Saam Barati.

The spec of SerializeJSONArray is pretty clear that the index
should be transformed into a string before calling SerializeJSONProperty.
See http://www.ecma-international.org/ecma-262/6.0/#sec-serializejsonarray

* runtime/JSONObject.cpp:
(JSC::PropertyNameForFunctionCall::value):

LayoutTests:

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-06-03
Reviewed by Saam Barati.

* js/JSON-stringify-exposes-array-indices-as-strings-expected.txt: Added.
* js/JSON-stringify-exposes-array-indices-as-strings.html: Added.
* js/script-tests/JSON-stringify-exposes-array-indices-as-strings.js: Added.
(replacer):
(testObject.toJSON):
(toJSONArrayHelper):
* js/resources/JSON-stringify.js:
* js/dom/JSON-stringify-expected.txt:
Update the test results for the native implementation.

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

4 years agoUnreviewed, rolling out r201663.
commit-queue@webkit.org [Sat, 4 Jun 2016 00:56:57 +0000 (00:56 +0000)]
Unreviewed, rolling out r201663.
https://bugs.webkit.org/show_bug.cgi?id=158374

Broke the Windows build (Requested by andersca on #webkit).

Reverted changeset:

"Rename NoncopyableFunction to Function"
https://bugs.webkit.org/show_bug.cgi?id=158354
http://trac.webkit.org/changeset/201663

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

4 years agoProxy.ownKeys should no longer throw an exception when duplicate keys are returned...
sbarati@apple.com [Sat, 4 Jun 2016 00:34:27 +0000 (00:34 +0000)]
Proxy.ownKeys should no longer throw an exception when duplicate keys are returned and the target is non-extensible
https://bugs.webkit.org/show_bug.cgi?id=158350
<rdar://problem/26626211>

Reviewed by Michael Saboff.

The spec was recently changes in Proxy [[OwnPropertyKeys]]
to allow for duplicate property names under certain circumstances.
This patch fixes our implementation to match the spec.
See: https://github.com/tc39/ecma262/pull/594

* runtime/ProxyObject.cpp:
(JSC::ProxyObject::performGetOwnPropertyNames):
* tests/stress/proxy-own-keys.js:
(i.catch):
(ownKeys):
(assert):

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

4 years agoWeb Inspector: add a keyboard shortcut to close the current tab bar item
bburg@apple.com [Sat, 4 Jun 2016 00:04:52 +0000 (00:04 +0000)]
Web Inspector: add a keyboard shortcut to close the current tab bar item
https://bugs.webkit.org/show_bug.cgi?id=158363
<rdar://problem/22677254>

Reviewed by Timothy Hatcher.

Make Cmd-w close the current tab. This matches Safari's keyboard shortcut.

* UserInterface/Views/TabBrowser.js:
(WebInspector.TabBrowser):
Don't do anything if the New Tab tab is the only tab bar item besides the
pinned "new tab" button.

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

4 years agoSome shadow chicken code is wrong when run on a big endian CPU
sbarati@apple.com [Fri, 3 Jun 2016 23:51:25 +0000 (23:51 +0000)]
Some shadow chicken code is wrong when run on a big endian CPU
https://bugs.webkit.org/show_bug.cgi?id=158361

Reviewed by Mark Lam.

This code was wrong on a big endian CPU, and it was
also an anti-pattern in the file. The code was harmless
on a little endian CPU, but it's better to remove it.

* llint/LowLevelInterpreter64.asm:

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

4 years agoWeb Inspector: setter for debugging flag InspectorBackend.dumpInspectorTimeStats...
bburg@apple.com [Fri, 3 Jun 2016 23:27:11 +0000 (23:27 +0000)]
Web Inspector: setter for debugging flag InspectorBackend.dumpInspectorTimeStats does not work
https://bugs.webkit.org/show_bug.cgi?id=158366

Reviewed by Timothy Hatcher.

* UserInterface/Protocol/InspectorBackend.js:
(InspectorBackendClass.prototype.set dumpInspectorTimeStats):
Actually update the backing member when the setter is called.

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

4 years agoAdd argument_count bytecode for concat
keith_miller@apple.com [Fri, 3 Jun 2016 23:06:39 +0000 (23:06 +0000)]
Add argument_count bytecode for concat
https://bugs.webkit.org/show_bug.cgi?id=158358

Reviewed by Geoffrey Garen.

This patch adds a new argument count bytecode. Normally, we would
just make sure that the argument.length bytecode was fast enough
that we shouldn't need such an bytecode.  However, for the case of
Array.prototype.concat the overhead of the arguments object
allocation in the LLInt was too high and caused regressions.

* bytecode/BytecodeIntrinsicRegistry.h:
* bytecode/BytecodeList.json:
* bytecode/BytecodeUseDef.h:
(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dumpBytecode):
* bytecompiler/NodesCodegen.cpp:
(JSC::BytecodeIntrinsicNode::emit_intrinsic_argumentCount):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::getArgumentCount):
(JSC::DFG::ByteCodeParser::parseBlock):
* dfg/DFGCapabilities.cpp:
(JSC::DFG::capabilityLevel):
* jit/JIT.cpp:
(JSC::JIT::privateCompileMainPass):
* jit/JIT.h:
* jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_argument_count):
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* tests/stress/argument-count-bytecode.js: Added.
(inlineCount):
(inlineCount1):
(inlineCount2):
(inlineCountVarArgs):
(assert):

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

4 years agoCrash under VisibleSelection::firstRange()
rniwa@webkit.org [Fri, 3 Jun 2016 23:01:49 +0000 (23:01 +0000)]
Crash under VisibleSelection::firstRange()
https://bugs.webkit.org/show_bug.cgi?id=158241

Reviewed by Enrica Casucci.

Source/WebCore:

The crash was commonly caused by parentAnchoredEquivalent returning null when the anchored node was a shadow root.
Fixed it by returning a shadow root in parentAnchoredEquivalent.

Also guard against other kinds of crashes by adding a null check in VisibleSelection::firstRange() since we've seen
a crash in the same code path outside of a shadow tree.

This patch also fixes other Position methods to stop using nonShadowBoundaryParentNode in place of parentNode as
that would cause a similar crash and/or a bug elsewhere.

Test: fast/shadow-dom/selection-at-shadow-root-crash.html

* accessibility/AXObjectCache.cpp:
(AXObjectCache::startCharacterOffsetOfParagraph): Fixed a bug uncovered by the assertion fix in Position::Position.
This code was sometimes creating a position inside a BR, which is wrong.
(AXObjectCache::endCharacterOffsetOfParagraph): Ditto.
* dom/Position.cpp:
(WebCore::Position::Position): Fixed an assertion which was checking that this constructor wasn't being called
with m_anchorNode set to an element editing ignores content of. ||ing it with isShadowRoot() made this assertion
useless because it's true whenever m_anchorNode is not a shadow root.
(WebCore::Position::containerNode): Use parentNode() instead of findParent() which calls nonShadowBoundaryParentNode
since Position should
(WebCore::Position::parentAnchoredEquivalent): Fixed the bug by letting this function return a shadow root.
(WebCore::Position::previous): Use parentNode() instead of findParent().
(WebCore::Position::next): Ditto.
(WebCore::Position::atStartOfTree): Ditto.
(WebCore::Position::atEndOfTree): Ditto.
(WebCore::Position::findParent): Deleted.
* dom/Position.h:
* editing/VisibleSelection.cpp:
(VisibleSelection::firstRange): Added a null check.

LayoutTests:

Added a regression test.

* fast/shadow-dom/selection-at-shadow-root-crash-expected.txt: Added.
* fast/shadow-dom/selection-at-shadow-root-crash.html: Added.

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

4 years agoIncorrect rendering on boostmobile FAQ page
zalan@apple.com [Fri, 3 Jun 2016 22:47:17 +0000 (22:47 +0000)]
Incorrect rendering on boostmobile FAQ page
https://bugs.webkit.org/show_bug.cgi?id=158303
<rdar://problem/26603462>

Reviewed by Chris Dumez.

Initial value for background-color is 'transparent'. see https://drafts.csswg.org/css-backgrounds-3/#background-color

Source/WebCore:

Test: fast/selectors/non-visited-link-backround-color.html

* css/CSSPropertyNames.in:

LayoutTests:

* fast/selectors/non-visited-link-backround-color-expected.html: Added.
* fast/selectors/non-visited-link-backround-color.html: Added.

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

4 years agoMore miscellaneous IDBBindingUtilities cleanup.
beidson@apple.com [Fri, 3 Jun 2016 22:31:02 +0000 (22:31 +0000)]
More miscellaneous IDBBindingUtilities cleanup.
https://bugs.webkit.org/show_bug.cgi?id=158359

Reviewed by Tim Horton.

No new tests (Straight refactor, yo).

Replace more ScriptExecutionContext&s with ExecState&s.
Combine more unnecessarily separate functions.
Remove some cruft.

* Modules/indexeddb/IDBCursor.cpp:
(WebCore::IDBCursor::setGetResult):

* Modules/indexeddb/IDBRequest.cpp:
(WebCore::IDBRequest::setResult):
(WebCore::IDBRequest::setResultToStructuredClone):

* Modules/indexeddb/server/MemoryObjectStore.cpp:
(WebCore::IDBServer::MemoryObjectStore::updateIndexesForPutRecord):
(WebCore::IDBServer::MemoryObjectStore::populateIndexWithExistingRecords):

* Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
(WebCore::IDBServer::SQLiteIDBBackingStore::updateOneIndexForAddRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::updateAllIndexesForAddRecord):

* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::performPutOrAdd):

* bindings/js/IDBBindingUtilities.cpp:
(WebCore::deserializeIDBValueToJSValue):
(WebCore::idbKeyDataToScriptValue):
(WebCore::deserializeIDBValueDataToJSValue): Deleted.
* bindings/js/IDBBindingUtilities.h:

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

4 years agoCanvasRenderingContext2D.createPattern() / putImageData() throw wrong exception type
cdumez@apple.com [Fri, 3 Jun 2016 22:26:50 +0000 (22:26 +0000)]
CanvasRenderingContext2D.createPattern() / putImageData() throw wrong exception type
https://bugs.webkit.org/show_bug.cgi?id=158322

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline test now that it is passing.

* canvas/2d.pattern.image.undefined-expected.txt:

Source/WebCore:

CanvasRenderingContext2D.createPattern() / putImageData() were throwing the wrong
exception type when the first parameter was null. It should throw a TypeError
but it was throwing a legacy TYPE_MISMATCH_ERR:
- http://www.w3.org/TR/2dcontext/#canvasrenderingcontext2d
- http://www.w3.org/TR/2dcontext/#canvasimagesource

This patch aligns our behavior with the specification.

No new tests, covered by existing tests.

* html/canvas/CanvasRenderingContext2D.cpp:
(WebCore::CanvasRenderingContext2D::createPattern):
(WebCore::CanvasRenderingContext2D::putImageData):
(WebCore::CanvasRenderingContext2D::webkitPutImageDataHD):
(WebCore::CanvasRenderingContext2D::didDraw): Deleted.
(WebCore::CanvasRenderingContext2D::drawFocusIfNeeded): Deleted.
(WebCore::CanvasRenderingContext2D::drawFocusIfNeededInternal): Deleted.
(WebCore::CanvasRenderingContext2D::font): Deleted.
* html/canvas/CanvasRenderingContext2D.h:
* html/canvas/CanvasRenderingContext2D.idl:

LayoutTests:

Update several outdated layout tests.

* canvas/philip/tests/2d.imageData.put.null.html:
* canvas/philip/tests/2d.pattern.image.null.html:
* canvas/philip/tests/2d.pattern.image.undefined.html:

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

4 years agoRename NoncopyableFunction to Function
andersca@apple.com [Fri, 3 Jun 2016 22:24:06 +0000 (22:24 +0000)]
Rename NoncopyableFunction to Function
https://bugs.webkit.org/show_bug.cgi?id=158354

Reviewed by Chris Dumez.

Source/WebCore:

* Modules/mediastream/MediaEndpointPeerConnection.cpp:
(WebCore::MediaEndpointPeerConnection::runTask):
* Modules/mediastream/MediaEndpointPeerConnection.h:
* Modules/webaudio/AudioDestinationNode.h:
(WebCore::AudioDestinationNode::resume):
(WebCore::AudioDestinationNode::suspend):
(WebCore::AudioDestinationNode::close):
* Modules/webaudio/DefaultAudioDestinationNode.cpp:
(WebCore::DefaultAudioDestinationNode::resume):
(WebCore::DefaultAudioDestinationNode::suspend):
(WebCore::DefaultAudioDestinationNode::close):
* Modules/webaudio/DefaultAudioDestinationNode.h:
* dom/ActiveDOMCallbackMicrotask.cpp:
(WebCore::ActiveDOMCallbackMicrotask::ActiveDOMCallbackMicrotask):
* dom/ActiveDOMCallbackMicrotask.h:
* dom/ScriptExecutionContext.h:
(WebCore::ScriptExecutionContext::Task::Task):
* fileapi/AsyncFileStream.cpp:
(WebCore::callOnFileThread):
(WebCore::AsyncFileStream::perform):
* fileapi/AsyncFileStream.h:
* page/FrameView.cpp:
(WebCore::FrameView::queuePostLayoutCallback):
(WebCore::FrameView::flushPostLayoutTasksQueue):
* page/FrameView.h:
* page/scrolling/ScrollingThread.cpp:
(WebCore::ScrollingThread::dispatch):
(WebCore::ScrollingThread::dispatchBarrier):
(WebCore::ScrollingThread::dispatchFunctionsFromScrollingThread):
* page/scrolling/ScrollingThread.h:
* platform/GenericTaskQueue.cpp:
(WebCore::TaskDispatcher<Timer>::postTask):
* platform/GenericTaskQueue.h:
(WebCore::TaskDispatcher::postTask):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::scheduleDeferredTask):
* platform/mediastream/MediaStreamPrivate.cpp:
(WebCore::MediaStreamPrivate::scheduleDeferredTask):
* platform/mediastream/MediaStreamPrivate.h:
* platform/mediastream/mac/AVMediaCaptureSource.h:
* platform/mediastream/mac/AVMediaCaptureSource.mm:
(WebCore::AVMediaCaptureSource::scheduleDeferredTask):
* style/StyleTreeResolver.cpp:
(WebCore::Style::postResolutionCallbackQueue):
(WebCore::Style::queuePostResolutionCallback):
* style/StyleTreeResolver.h:

Source/WebKit:

* Storage/StorageSyncManager.cpp:
(WebCore::StorageSyncManager::dispatch):
* Storage/StorageSyncManager.h:
* Storage/StorageThread.cpp:
(WebCore::StorageThread::dispatch):
(WebCore::StorageThread::terminate):
* Storage/StorageThread.h:

Source/WebKit2:

* NetworkProcess/NetworkProcess.cpp:
(WebKit::fetchDiskCacheEntries):
(WebKit::NetworkProcess::fetchWebsiteData):
(WebKit::clearDiskCacheEntries):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::Cache::traverse):
* NetworkProcess/cache/NetworkCache.h:
* NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:
(WebKit::NetworkCache::runTaskInQueue):
* NetworkProcess/cache/NetworkCacheStorage.h:

Source/WTF:

* WTF.xcodeproj/project.pbxproj:
* wtf/CrossThreadTask.h:
(WTF::CrossThreadTask::CrossThreadTask):
* wtf/Function.h: Renamed from Source/WTF/wtf/NoncopyableFunction.h.
* wtf/FunctionDispatcher.h:
* wtf/MainThread.cpp:
(WTF::functionQueue):
(WTF::dispatchFunctionsFromMainThread):
(WTF::callOnMainThread):
* wtf/MainThread.h:
* wtf/RunLoop.cpp:
(WTF::RunLoop::performWork):
(WTF::RunLoop::dispatch):
* wtf/RunLoop.h:
* wtf/WorkQueue.h:
* wtf/cocoa/WorkQueueCocoa.cpp:
(WTF::WorkQueue::dispatch):
(WTF::WorkQueue::dispatchAfter):
* wtf/efl/DispatchQueueWorkItemEfl.h:
(WorkItem::WorkItem):
(TimerWorkItem::create):
(TimerWorkItem::TimerWorkItem):
* wtf/efl/WorkQueueEfl.cpp:
(WTF::WorkQueue::dispatch):
(WTF::WorkQueue::dispatchAfter):
* wtf/generic/RunLoopGeneric.cpp:
(WTF::RunLoop::TimerBase::ScheduledTask::create):
(WTF::RunLoop::TimerBase::ScheduledTask::ScheduledTask):
(WTF::RunLoop::dispatchAfter):
* wtf/generic/WorkQueueGeneric.cpp:
(WorkQueue::dispatch):
(WorkQueue::dispatchAfter):
* wtf/glib/RunLoopGLib.cpp:
(WTF::DispatchAfterContext::DispatchAfterContext):
(WTF::RunLoop::dispatchAfter):
* wtf/win/WorkItemWin.cpp:
(WTF::WorkItemWin::WorkItemWin):
(WTF::WorkItemWin::create):
(WTF::HandleWorkItem::HandleWorkItem):
(WTF::HandleWorkItem::createByAdoptingHandle):
* wtf/win/WorkItemWin.h:
(WTF::WorkItemWin::function):
* wtf/win/WorkQueueWin.cpp:
(WTF::WorkQueue::dispatch):
(WTF::WorkQueue::dispatchAfter):

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

4 years agoMarking fast/scrolling/scroll-container-horizontally.html as flaky on mac-wk2 and...
ryanhaddad@apple.com [Fri, 3 Jun 2016 22:05:33 +0000 (22:05 +0000)]
Marking fast/scrolling/scroll-container-horizontally.html as flaky on mac-wk2 and ios-simulator-wk1
https://bugs.webkit.org/show_bug.cgi?id=158237

Unreviewed test gardening.

* platform/ios-simulator-wk1/TestExpectations:
* platform/mac-wk2/TestExpectations:

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

4 years agoREGRESSION(r201474): Subtitles are not resizing in other fullscreen modes
adachan@apple.com [Fri, 3 Jun 2016 21:59:07 +0000 (21:59 +0000)]
REGRESSION(r201474): Subtitles are not resizing in other fullscreen modes
https://bugs.webkit.org/show_bug.cgi?id=158355

Reviewed by Eric Carlson.

* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::syncTextTrackBounds):
Set the text track representation layer's frame based on the active video layer.

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

4 years agoMiscellaneous IDBBindingUtilities cleanup.
beidson@apple.com [Fri, 3 Jun 2016 21:42:03 +0000 (21:42 +0000)]
Miscellaneous IDBBindingUtilities cleanup.
https://bugs.webkit.org/show_bug.cgi?id=158353

Reviewed by Tim Horton.

No new tests (Straight refactor, yo).

Starting with removing a single form of scriptValueToIDBKey(), and making the return value be
Ref<IDBKey> instead of RefPtr<IDBKey>, update a whole bunch of code to understand that the ExecState
is non-null and the resulting key is non-null.

* Modules/indexeddb/IDBCursor.cpp:
(WebCore::IDBCursor::continueFunction):

* Modules/indexeddb/IDBFactory.cpp:
(WebCore::IDBFactory::cmp):

* Modules/indexeddb/IDBIndex.cpp:
(WebCore::IDBIndex::count):
(WebCore::IDBIndex::get):
(WebCore::IDBIndex::getKey):

* Modules/indexeddb/IDBKey.cpp:
(WebCore::IDBKey::compare):
(WebCore::IDBKey::isLessThan):
(WebCore::IDBKey::isEqual):
* Modules/indexeddb/IDBKey.h:
(WebCore::IDBKey::createMultiEntryArray):

* Modules/indexeddb/IDBKeyRange.cpp:
(WebCore::IDBKeyRange::only):
(WebCore::IDBKeyRange::lowerBound):
(WebCore::IDBKeyRange::upperBound):
(WebCore::IDBKeyRange::bound):
(WebCore::IDBKeyRange::isOnlyKey):

* Modules/indexeddb/IDBObjectStore.cpp:
(WebCore::IDBObjectStore::get):
(WebCore::IDBObjectStore::modernDelete):
(WebCore::IDBObjectStore::count):

* bindings/js/IDBBindingUtilities.cpp:
(WebCore::get):
(WebCore::set):
(WebCore::createIDBKeyFromValue):
(WebCore::getNthValueOnKeyPath):
(WebCore::internalCreateIDBKeyFromScriptValueAndKeyPath):
(WebCore::ensureNthValueOnKeyPath):
(WebCore::canInjectNthValueOnKeyPath):
(WebCore::injectIDBKeyIntoScriptValue):
(WebCore::maybeCreateIDBKeyFromScriptValueAndKeyPath):
(WebCore::canInjectIDBKeyIntoScriptValue):
(WebCore::deserializeIDBValueToJSValue):
(WebCore::scriptValueToIDBKey):
(WebCore::createKeyPathArray):
* bindings/js/IDBBindingUtilities.h:

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

4 years agoRename CheckedRadioButtons into RadioButtonGroups
benjamin@webkit.org [Fri, 3 Jun 2016 21:36:51 +0000 (21:36 +0000)]
Rename CheckedRadioButtons into RadioButtonGroups
https://bugs.webkit.org/show_bug.cgi?id=158326

Reviewed by Alex Christensen.

CheckedRadioButtons handles the set of all the Radio Button Groups
for a particular form or document.
The name is wrong and apparently comes from former uses of this class
(see the comment above the class declaration).

This patch renames "CheckedRadioButtons" to "RadioButtonGroups" to reflect that it handles
all the Radio Button Group from a given context (form or document).
Internally it has a set of RadioButtonGroup but that is never explicitely
exposed.

* CMakeLists.txt:
* WebCore.xcodeproj/project.pbxproj:
* dom/CheckedRadioButtons.cpp:
(WebCore::RadioButtonGroup::isEmpty): Deleted.
(WebCore::RadioButtonGroup::isRequired): Deleted.
(WebCore::RadioButtonGroup::checkedButton): Deleted.
(WebCore::RadioButtonGroup::RadioButtonGroup): Deleted.
(WebCore::RadioButtonGroup::isValid): Deleted.
(WebCore::RadioButtonGroup::members): Deleted.
(WebCore::RadioButtonGroup::setCheckedButton): Deleted.
(WebCore::RadioButtonGroup::add): Deleted.
(WebCore::RadioButtonGroup::updateCheckedState): Deleted.
(WebCore::RadioButtonGroup::requiredAttributeChanged): Deleted.
(WebCore::RadioButtonGroup::remove): Deleted.
(WebCore::RadioButtonGroup::updateValidityForAllButtons): Deleted.
(WebCore::RadioButtonGroup::contains): Deleted.
(WebCore::CheckedRadioButtons::CheckedRadioButtons): Deleted.
(WebCore::CheckedRadioButtons::~CheckedRadioButtons): Deleted.
(WebCore::CheckedRadioButtons::addButton): Deleted.
(WebCore::CheckedRadioButtons::groupMembers): Deleted.
(WebCore::CheckedRadioButtons::updateCheckedState): Deleted.
(WebCore::CheckedRadioButtons::requiredAttributeChanged): Deleted.
(WebCore::CheckedRadioButtons::checkedButtonForGroup): Deleted.
(WebCore::CheckedRadioButtons::isInRequiredGroup): Deleted.
(WebCore::CheckedRadioButtons::removeButton): Deleted.
* dom/RadioButtonGroups.cpp: Renamed from Source/WebCore/dom/CheckedRadioButtons.cpp.
(WebCore::RadioButtonGroup::isEmpty):
(WebCore::RadioButtonGroup::isRequired):
(WebCore::RadioButtonGroup::checkedButton):
(WebCore::RadioButtonGroup::RadioButtonGroup):
(WebCore::RadioButtonGroup::isValid):
(WebCore::RadioButtonGroup::members):
(WebCore::RadioButtonGroup::setCheckedButton):
(WebCore::RadioButtonGroup::add):
(WebCore::RadioButtonGroup::updateCheckedState):
(WebCore::RadioButtonGroup::requiredAttributeChanged):
(WebCore::RadioButtonGroup::remove):
(WebCore::RadioButtonGroup::updateValidityForAllButtons):
(WebCore::RadioButtonGroup::contains):
(WebCore::RadioButtonGroups::RadioButtonGroups):
(WebCore::RadioButtonGroups::~RadioButtonGroups):
(WebCore::RadioButtonGroups::addButton):
(WebCore::RadioButtonGroups::groupMembers):
(WebCore::RadioButtonGroups::updateCheckedState):
(WebCore::RadioButtonGroups::requiredAttributeChanged):
(WebCore::RadioButtonGroups::checkedButtonForGroup):
(WebCore::RadioButtonGroups::isInRequiredGroup):
(WebCore::RadioButtonGroups::removeButton):
* dom/RadioButtonGroups.h: Renamed from Source/WebCore/dom/CheckedRadioButtons.h.
* html/FormController.h:
(WebCore::FormController::radioButtonGroups):
(WebCore::FormController::checkedRadioButtons): Deleted.
* html/HTMLFormElement.h:
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::~HTMLInputElement):
(WebCore::HTMLInputElement::setChecked):
(WebCore::HTMLInputElement::didMoveToNewDocument):
(WebCore::HTMLInputElement::requiredAttributeChanged):
(WebCore::HTMLInputElement::isInRequiredRadioButtonGroup):
(WebCore::HTMLInputElement::radioButtonGroup):
(WebCore::HTMLInputElement::checkedRadioButtonForGroup):
(WebCore::HTMLInputElement::radioButtonGroups):
(WebCore::HTMLInputElement::addToRadioButtonGroup):
(WebCore::HTMLInputElement::removeFromRadioButtonGroup):
(WebCore::HTMLInputElement::checkedRadioButtons): Deleted.
* html/HTMLInputElement.h:

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

4 years agoWeb Inspector: Remove unused WebInspector.CSSCompletions methods
nvasilyev@apple.com [Fri, 3 Jun 2016 21:35:06 +0000 (21:35 +0000)]
Web Inspector: Remove unused WebInspector.CSSCompletions methods
https://bugs.webkit.org/show_bug.cgi?id=158352

Reviewed by Joseph Pecoraro.

* UserInterface/Models/CSSCompletions.js:
(WebInspector.CSSCompletions.prototype.firstStartsWith): Deleted.
(WebInspector.CSSCompletions.prototype.isLonghandPropertyName): Deleted.
(WebInspector.CSSCompletions.prototype.longhandsForShorthand): Deleted.

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

4 years agoClients of PolymorphicAccess::addCases shouldn't have to malloc
ggaren@apple.com [Fri, 3 Jun 2016 21:26:52 +0000 (21:26 +0000)]
Clients of PolymorphicAccess::addCases shouldn't have to malloc
https://bugs.webkit.org/show_bug.cgi?id=158357

Reviewed by Keith Miller.

We only ever have 1 or 2 cases, so we can use inline Vector capacity.

This shows up a little in the JSBench profile.

* bytecode/PolymorphicAccess.cpp:
(JSC::PolymorphicAccess::addCases):
(JSC::PolymorphicAccess::addCase):
* bytecode/PolymorphicAccess.h:
* bytecode/StructureStubInfo.cpp:
(JSC::StructureStubInfo::addAccessCase):

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