WebKit-https.git
4 years agoREGRESSION(r202992): JSC varargs tests are broken
utatane.tea@gmail.com [Mon, 11 Jul 2016 09:28:54 +0000 (09:28 +0000)]
REGRESSION(r202992): JSC varargs tests are broken
https://bugs.webkit.org/show_bug.cgi?id=159616

Reviewed by Csaba Osztrogonác.

The substitution miss in r202992 causes varargs tests failures in GTK port.

* jit/SetupVarargsFrame.cpp:
(JSC::emitSetupVarargsFrameFastCase):

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

4 years ago[ES6] Promise.{all,race} no longer use @@species
utatane.tea@gmail.com [Mon, 11 Jul 2016 07:26:34 +0000 (07:26 +0000)]
[ES6] Promise.{all,race} no longer use @@species
https://bugs.webkit.org/show_bug.cgi?id=159615

Reviewed by Keith Miller.

As per the latest ES draft, Promise.{all,race} no longer use @@species.
So, this patch drops FIXMEs.

* builtins/PromiseConstructor.js:
(all):
(race):
* tests/stress/ignore-promise-species.js: Added.
(shouldBe):
(DerivedPromise.prototype.get Symbol):
(DerivedPromise):

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

4 years agoSetting document.title reuses <title>'s textnode child
cdumez@apple.com [Mon, 11 Jul 2016 05:06:24 +0000 (05:06 +0000)]
Setting document.title reuses <title>'s textnode child
https://bugs.webkit.org/show_bug.cgi?id=28864
<rdar://problem/7186473>

Reviewed by Benjamin Poulain.

Source/WebCore:

Setting document.title should be equivalent to setting the 'textContent'
IDL attribute of the <title> element:
- https://html.spec.whatwg.org/multipage/dom.html#document.title

In particular, this means we should always create a new Text node and
replace all the <title>'s children with this new Node, as per:
- https://dom.spec.whatwg.org/#dom-node-textcontent

Previously, WebKit would in some cases reuse the existing <title>'s
Text node and merely update its data.

Firefox and Chrome behave as per the specification so this aligns our
behavior with other major browsers as well.

Test: fast/dom/title-setter-new-text-node.html

* dom/Document.cpp:
(WebCore::Document::setTitle):
- Call Node::setTextContent() instead of HTMLTitleElement::setText(),
  as per the specification.
- Take an ExceptionCode parameter and pass it to Node::setTextContent()
  as it may throw.

* dom/Document.h:
* dom/Document.idl:

* html/HTMLTitleElement.cpp:
(WebCore::HTMLTitleElement::setText):
Update implementation of HTMLTitleElement::setText() to call
setTextContent() as per the specification:
- https://html.spec.whatwg.org/multipage/semantics.html#dom-title-text

* html/HTMLTitleElement.h:
* html/HTMLTitleElement.idl:

* html/ImageDocument.cpp:
(WebCore::ImageDocument::finishedParsing):

* svg/SVGTitleElement.cpp:
* svg/SVGTitleElement.h:
Drop setText() setter which was duplicated from HTMLTitleElement::setText()
now that Document::setTitle() calls SVGTitleElement::setTextContent()
instead.

LayoutTests:

* fast/dom/title-setter-new-text-node-expected.txt: Added.
* fast/dom/title-setter-new-text-node.html: Added.
Add test coverage.

* fast/dom/title-text-property-2-expected.txt:
* fast/dom/title-text-property-expected.txt:
* http/tests/globalhistory/history-delegate-basic-title-expected.txt:
Rebaseline a few tests now that we do not reuse the <title>'s text
node child.

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

4 years agoUnreviewed, rolling out r203037.
commit-queue@webkit.org [Mon, 11 Jul 2016 04:28:03 +0000 (04:28 +0000)]
Unreviewed, rolling out r203037.
https://bugs.webkit.org/show_bug.cgi?id=159614

The JSC tests are breaking in elcapitan-debug-tests-jsc and
elcapitan-release-tests-jsc (Requested by caiolima on
#webkit).

Reverted changeset:

"ECMAScript 2016: %TypedArray%.prototype.includes
implementation"
https://bugs.webkit.org/show_bug.cgi?id=159385
http://trac.webkit.org/changeset/203037

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

4 years agoFix LogicalSelectionOffsetCaches to work with detached render tree.
zalan@apple.com [Mon, 11 Jul 2016 03:58:49 +0000 (03:58 +0000)]
Fix LogicalSelectionOffsetCaches to work with detached render tree.
https://bugs.webkit.org/show_bug.cgi?id=159605
<rdar://problem/27248845>

Reviewed by Brent Fulgham.

Source/WebCore:

When the renderer that is being destroyed is on a selection boundary,
we need to ensure that all its cached pointers across the selection code (e.g. SelectionSubtreeData)
are getting reset. In order to do that, we call clearSelection() on the RenderView.
One of the last steps of clearing selection is to collect the selection gaps. Selection gaps uses this
LogicalSelectionOffsetCaches helper class to collect selection information across blocks.
LogicalSelectionOffsetCaches normally operates on rooted renderers. However we need to ensure sure that
it can also handle renderers that are no longer part of the render tree.

Test: fast/text/selection-on-a-detached-tree.html

* rendering/LogicalSelectionOffsetCaches.h:
(WebCore::LogicalSelectionOffsetCaches::ContainingBlockInfo::setBlock):
(WebCore::LogicalSelectionOffsetCaches::ContainingBlockInfo::logicalLeftSelectionOffset):
(WebCore::LogicalSelectionOffsetCaches::ContainingBlockInfo::logicalRightSelectionOffset):
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::logicalLeftSelectionOffset):
(WebCore::RenderBlock::logicalRightSelectionOffset):

LayoutTests:

* fast/text/selection-on-a-detached-tree-expected.txt: Added.
* fast/text/selection-on-a-detached-tree.html: Added.

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

4 years agoUpdate mediaIcon.pdf
bdakin@apple.com [Mon, 11 Jul 2016 02:52:07 +0000 (02:52 +0000)]
Update mediaIcon.pdf
https://bugs.webkit.org/show_bug.cgi?id=159613
-and corresponding-
rdar://problem/27268111

Reviewed by Sam Weinig.

* Resources/mediaIcon.pdf: Replaced.

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

4 years agoadoptNode() changes css class to lowercase for document loaded with XHR responseType...
cdumez@apple.com [Sun, 10 Jul 2016 23:28:06 +0000 (23:28 +0000)]
adoptNode() changes css class to lowercase for document loaded with XHR responseType = "document"
https://bugs.webkit.org/show_bug.cgi?id=159555
<rdar://problem/27252541>

Reviewed by Benjamin Poulain.

Source/WebCore:

Follow-up on r203018 which was incomplete. We need to update ElementData's
m_classNames / m_idForStyleResolution when the source document is in strict
mode and the destination document is in quirks mode as well.

Test: fast/dom/Document/adoptNode-quirks-mismatch2.html

* dom/Element.cpp:
(WebCore::Element::didMoveToNewDocument):

LayoutTests:

Add test coverage.

* fast/dom/Document/adoptNode-quirks-mismatch2-expected.txt: Added.
* fast/dom/Document/adoptNode-quirks-mismatch2.html: Added.
* fast/dom/Document/resources/document-noquirks-class.html: Added.
* fast/dom/Document/resources/document-noquirks-id.html: Added.

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

4 years agoRename isEmojiModifier to isEmojiFitzpatrickModifier to better capture its function
weinig@apple.com [Sun, 10 Jul 2016 21:46:34 +0000 (21:46 +0000)]
Rename isEmojiModifier to isEmojiFitzpatrickModifier to better capture its function
https://bugs.webkit.org/show_bug.cgi?id=159610

Reviewed by Dan Bernstein.

* platform/graphics/FontCascade.cpp:
(WebCore::FontCascade::characterRangeCodePath):
* platform/graphics/mac/ComplexTextController.cpp:
(WebCore::advanceByCombiningCharacterSequence):
Update for rename.

* platform/text/CharacterProperties.h:
(WebCore::isEmojiGroupCandidate):
(WebCore::isEmojiFitzpatrickModifier):
(WebCore::isVariationSelector):
Rename isEmojiModifier -> isEmojiFitzpatrickModifier. Also add some comments
explaining what the characters these predicate act on to demystify them a bit.

* rendering/RenderText.cpp:
(WebCore::RenderText::previousOffsetForBackwardDeletion):
Update for rename and rename a related variable.

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

4 years agoAdd self to WebKit2 Owners
commit-queue@webkit.org [Sun, 10 Jul 2016 18:50:59 +0000 (18:50 +0000)]
Add self to WebKit2 Owners
https://bugs.webkit.org/show_bug.cgi?id=159499

Patch by Alex Christensen <achristensen@webkit.org> on 2016-07-10
Reviewed by Sam Weinig.

* Owners:

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

4 years agoFix client certificate authentication after r200463
commit-queue@webkit.org [Sun, 10 Jul 2016 18:48:50 +0000 (18:48 +0000)]
Fix client certificate authentication after r200463
https://bugs.webkit.org/show_bug.cgi?id=159574
<rdar://problem/26931006>

Patch by Alex Christensen <achristensen@webkit.org> on 2016-07-10
Reviewed by Sam Weinig.

Source/WebCore:

No new tests.  We really need a test for this

* platform/network/cf/CertificateInfo.h:
(WebCore::CertificateInfo::CertificateInfo):
(WebCore::CertificateInfo::trust):
Make sure we only get the trust for Trust type CertificateInfos.
If we mix up our types, we get unexpected nullptrs, which will cause authentication to fail.

Source/WebKit2:

* Shared/Authentication/mac/AuthenticationManager.mac.mm:
(WebKit::leafCertificate):
(WebKit::chain):
Handle the different types of CertificateInfos.

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

4 years agoFix Windows build after r203038
mmaxfield@apple.com [Sun, 10 Jul 2016 17:53:50 +0000 (17:53 +0000)]
Fix Windows build after r203038

Unreviewed.

* platform/text/TextAllInOne.cpp:

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

4 years agoMove breaking iterator code to WTF
mmaxfield@apple.com [Sun, 10 Jul 2016 17:15:05 +0000 (17:15 +0000)]
Move breaking iterator code to WTF
https://bugs.webkit.org/show_bug.cgi?id=159594

Reviewed by Alex Christensen.

This is in preparation for giving StringView a GraphemeClusters iterator.
Such an interator needs to be implemented on top of our breaking iterator
code.

Source/WebCore:

No new tests because there is no behavior change.

* CMakeLists.txt:
* PlatformEfl.cmake:
* PlatformGTK.cmake:
* PlatformMac.cmake:
* PlatformWin.cmake:
* WebCore.xcodeproj/project.pbxproj:
* dom/CharacterData.cpp:
* editing/TextCheckingHelper.cpp:
* editing/TextIterator.cpp:
* editing/VisibleUnits.cpp:
* html/HTMLInputElement.cpp:
* html/HTMLTextAreaElement.cpp:
* html/InputType.cpp:
* html/TextFieldInputType.cpp:
* html/TextInputType.cpp:
* platform/LocalizedStrings.cpp:
* platform/graphics/StringTruncator.cpp:
* platform/graphics/cg/ColorCG.cpp:
(WTF::RetainPtr<CGColorRef>>::createValueForKey):
(WebCore::RetainPtr<CGColorRef>>::createValueForKey): Deleted.
* platform/graphics/mac/ComplexTextController.cpp:
* platform/text/LineBreakIteratorPoolICU.h:
(WebCore::LineBreakIteratorPool::LineBreakIteratorPool): Deleted.
(WebCore::LineBreakIteratorPool::sharedPool): Deleted.
(WebCore::LineBreakIteratorPool::makeLocaleWithBreakKeyword): Deleted.
(WebCore::LineBreakIteratorPool::take): Deleted.
(WebCore::LineBreakIteratorPool::put): Deleted.
* platform/text/TextBoundaries.cpp:
* platform/text/TextBreakIterator.cpp:
(WebCore::initializeIterator): Deleted.
(WebCore::initializeIteratorWithRules): Deleted.
(WebCore::setTextForIterator): Deleted.
(WebCore::setContextAwareTextForIterator): Deleted.
(WebCore::wordBreakIterator): Deleted.
(WebCore::sentenceBreakIterator): Deleted.
(WebCore::cursorMovementIterator): Deleted.
(WebCore::acquireLineBreakIterator): Deleted.
(WebCore::releaseLineBreakIterator): Deleted.
(WebCore::mapLineIteratorModeToRules): Deleted.
(WebCore::isCJKLocale): Deleted.
(WebCore::openLineBreakIterator): Deleted.
(WebCore::closeLineBreakIterator): Deleted.
(WebCore::compareAndSwapNonSharedCharacterBreakIterator): Deleted.
(WebCore::NonSharedCharacterBreakIterator::NonSharedCharacterBreakIterator): Deleted.
(WebCore::NonSharedCharacterBreakIterator::~NonSharedCharacterBreakIterator): Deleted.
(WebCore::textBreakFirst): Deleted.
(WebCore::textBreakLast): Deleted.
(WebCore::textBreakNext): Deleted.
(WebCore::textBreakPrevious): Deleted.
(WebCore::textBreakPreceding): Deleted.
(WebCore::textBreakFollowing): Deleted.
(WebCore::textBreakCurrent): Deleted.
(WebCore::isTextBreak): Deleted.
(WebCore::isWordTextBreak): Deleted.
(WebCore::numGraphemeClusters): Deleted.
(WebCore::numCharactersInGraphemeClusters): Deleted.
* platform/text/TextBreakIterator.h:
(WebCore::LazyLineBreakIterator::LazyLineBreakIterator): Deleted.
(WebCore::LazyLineBreakIterator::~LazyLineBreakIterator): Deleted.
(WebCore::LazyLineBreakIterator::string): Deleted.
(WebCore::LazyLineBreakIterator::isLooseCJKMode): Deleted.
(WebCore::LazyLineBreakIterator::lastCharacter): Deleted.
(WebCore::LazyLineBreakIterator::secondToLastCharacter): Deleted.
(WebCore::LazyLineBreakIterator::setPriorContext): Deleted.
(WebCore::LazyLineBreakIterator::updatePriorContext): Deleted.
(WebCore::LazyLineBreakIterator::resetPriorContext): Deleted.
(WebCore::LazyLineBreakIterator::priorContextLength): Deleted.
(WebCore::LazyLineBreakIterator::get): Deleted.
(WebCore::LazyLineBreakIterator::resetStringAndReleaseIterator): Deleted.
(WebCore::NonSharedCharacterBreakIterator::operator TextBreakIterator*): Deleted.
* platform/text/cf/HyphenationCF.cpp:
* platform/text/efl/TextBreakIteratorInternalICUEfl.cpp:
(WebCore::currentSearchLocaleID): Deleted.
(WebCore::currentTextBreakLocaleID): Deleted.
* platform/text/enchant/TextCheckerEnchant.cpp:
* platform/text/gtk/TextBreakIteratorInternalICUGtk.cpp:
(WebCore::currentSearchLocaleID): Deleted.
(WebCore::currentTextBreakLocaleID): Deleted.
* platform/text/icu/UTextProvider.cpp:
(WebCore::fixPointer): Deleted.
(WebCore::uTextCloneImpl): Deleted.
* platform/text/icu/UTextProvider.h:
(WebCore::uTextProviderContext): Deleted.
(WebCore::initializeContextAwareUTextProvider): Deleted.
(WebCore::uTextAccessPinIndex): Deleted.
(WebCore::uTextAccessInChunkOrOutOfRange): Deleted.
* platform/text/icu/UTextProviderLatin1.cpp:
(WebCore::uTextLatin1Clone): Deleted.
(WebCore::uTextLatin1NativeLength): Deleted.
(WebCore::uTextLatin1Access): Deleted.
(WebCore::uTextLatin1Extract): Deleted.
(WebCore::uTextLatin1MapOffsetToNative): Deleted.
(WebCore::uTextLatin1MapNativeIndexToUTF16): Deleted.
(WebCore::uTextLatin1Close): Deleted.
(WebCore::openLatin1UTextProvider): Deleted.
(WebCore::textLatin1ContextAwareGetCurrentContext): Deleted.
(WebCore::textLatin1ContextAwareMoveInPrimaryContext): Deleted.
(WebCore::textLatin1ContextAwareSwitchToPrimaryContext): Deleted.
(WebCore::textLatin1ContextAwareMoveInPriorContext): Deleted.
(WebCore::textLatin1ContextAwareSwitchToPriorContext): Deleted.
(WebCore::uTextLatin1ContextAwareClone): Deleted.
(WebCore::uTextLatin1ContextAwareNativeLength): Deleted.
(WebCore::uTextLatin1ContextAwareAccess): Deleted.
(WebCore::uTextLatin1ContextAwareExtract): Deleted.
(WebCore::uTextLatin1ContextAwareClose): Deleted.
(WebCore::openLatin1ContextAwareUTextProvider): Deleted.
* platform/text/icu/UTextProviderUTF16.cpp:
(WebCore::textUTF16ContextAwareGetCurrentContext): Deleted.
(WebCore::textUTF16ContextAwareMoveInPrimaryContext): Deleted.
(WebCore::textUTF16ContextAwareSwitchToPrimaryContext): Deleted.
(WebCore::textUTF16ContextAwareMoveInPriorContext): Deleted.
(WebCore::textUTF16ContextAwareSwitchToPriorContext): Deleted.
(WebCore::uTextUTF16ContextAwareClone): Deleted.
(WebCore::uTextUTF16ContextAwareNativeLength): Deleted.
(WebCore::uTextUTF16ContextAwareAccess): Deleted.
(WebCore::uTextUTF16ContextAwareExtract): Deleted.
(WebCore::uTextUTF16ContextAwareClose): Deleted.
(WebCore::openUTF16ContextAwareUTextProvider): Deleted.
* platform/text/mac/TextBoundaries.mm:
* platform/text/mac/TextBreakIteratorInternalICUMac.mm:
(WebCore::textBreakLocalePreference): Deleted.
(WebCore::topLanguagePreference): Deleted.
(WebCore::getLocale): Deleted.
(WebCore::getSearchLocale): Deleted.
(WebCore::currentSearchLocaleID): Deleted.
(WebCore::getTextBreakLocale): Deleted.
(WebCore::currentTextBreakLocaleID): Deleted.
* platform/text/win/TextBreakIteratorInternalICUWin.cpp:
(WebCore::currentSearchLocaleID): Deleted.
(WebCore::currentTextBreakLocaleID): Deleted.
* rendering/RenderBlock.cpp:
* rendering/RenderText.cpp:
* rendering/RenderText.h:
* rendering/SimpleLineLayoutTextFragmentIterator.h:
* rendering/break_lines.cpp:
* rendering/break_lines.h:
* rendering/line/LineBreaker.h:

Source/WTF:

* WTF.xcodeproj/project.pbxproj:
* icu/unicode/ubrk.h: Added.
* icu/unicode/utext.h: Renamed from Source/WebCore/icu/unicode/utext.h.
* wtf/CMakeLists.txt:
* wtf/PlatformEfl.cmake:
* wtf/PlatformGTK.cmake:
* wtf/PlatformMac.cmake:
* wtf/PlatformWin.cmake:
* wtf/TinyLRUCache.h:
* wtf/text/LineBreakIteratorPoolICU.h: Renamed from Source/WebCore/platform/text/LineBreakIteratorPoolICU.h.
(WTF::LineBreakIteratorPool::LineBreakIteratorPool):
(WTF::LineBreakIteratorPool::sharedPool):
(WTF::LineBreakIteratorPool::makeLocaleWithBreakKeyword):
(WTF::LineBreakIteratorPool::take):
(WTF::LineBreakIteratorPool::put):
* wtf/text/TextBreakIterator.cpp: Renamed from Source/WebCore/platform/text/TextBreakIterator.cpp.
(WTF::initializeIterator):
(WTF::initializeIteratorWithRules):
(WTF::setTextForIterator):
(WTF::setContextAwareTextForIterator):
(WTF::wordBreakIterator):
(WTF::sentenceBreakIterator):
(WTF::cursorMovementIterator):
(WTF::acquireLineBreakIterator):
(WTF::releaseLineBreakIterator):
(WTF::mapLineIteratorModeToRules):
(WTF::isCJKLocale):
(WTF::openLineBreakIterator):
(WTF::closeLineBreakIterator):
(WTF::compareAndSwapNonSharedCharacterBreakIterator):
(WTF::NonSharedCharacterBreakIterator::NonSharedCharacterBreakIterator):
(WTF::NonSharedCharacterBreakIterator::~NonSharedCharacterBreakIterator):
(WTF::textBreakFirst):
(WTF::textBreakLast):
(WTF::textBreakNext):
(WTF::textBreakPrevious):
(WTF::textBreakPreceding):
(WTF::textBreakFollowing):
(WTF::textBreakCurrent):
(WTF::isTextBreak):
(WTF::isWordTextBreak):
(WTF::numGraphemeClusters):
(WTF::numCharactersInGraphemeClusters):
* wtf/text/TextBreakIterator.h: Renamed from Source/WebCore/platform/text/TextBreakIterator.h.
(WTF::LazyLineBreakIterator::LazyLineBreakIterator):
(WTF::LazyLineBreakIterator::~LazyLineBreakIterator):
(WTF::LazyLineBreakIterator::string):
(WTF::LazyLineBreakIterator::isLooseCJKMode):
(WTF::LazyLineBreakIterator::lastCharacter):
(WTF::LazyLineBreakIterator::secondToLastCharacter):
(WTF::LazyLineBreakIterator::setPriorContext):
(WTF::LazyLineBreakIterator::updatePriorContext):
(WTF::LazyLineBreakIterator::resetPriorContext):
(WTF::LazyLineBreakIterator::priorContextLength):
(WTF::LazyLineBreakIterator::get):
(WTF::LazyLineBreakIterator::resetStringAndReleaseIterator):
(WTF::NonSharedCharacterBreakIterator::operator TextBreakIterator*):
* wtf/text/TextBreakIteratorInternalICU.h: Renamed from Source/WebCore/platform/text/TextBreakIteratorInternalICU.h.
* wtf/text/efl/TextBreakIteratorInternalICUEfl.cpp: Renamed from Source/WebCore/platform/text/efl/TextBreakIteratorInternalICUEfl.cpp.
(WebCore::currentSearchLocaleID):
(WebCore::currentTextBreakLocaleID):
* wtf/text/gtk/TextBreakIteratorInternalICUGtk.cpp: Renamed from Source/WebCore/platform/text/gtk/TextBreakIteratorInternalICUGtk.cpp.
(WebCore::currentSearchLocaleID):
(WebCore::currentTextBreakLocaleID):
* wtf/text/icu/UTextProvider.cpp: Renamed from Source/WebCore/platform/text/icu/UTextProvider.cpp.
(WTF::fixPointer):
(WTF::uTextCloneImpl):
* wtf/text/icu/UTextProvider.h: Renamed from Source/WebCore/platform/text/icu/UTextProvider.h.
(WTF::uTextProviderContext):
(WTF::initializeContextAwareUTextProvider):
(WTF::uTextAccessPinIndex):
(WTF::uTextAccessInChunkOrOutOfRange):
* wtf/text/icu/UTextProviderLatin1.cpp: Renamed from Source/WebCore/platform/text/icu/UTextProviderLatin1.cpp.
(WTF::uTextLatin1Clone):
(WTF::uTextLatin1NativeLength):
(WTF::uTextLatin1Access):
(WTF::uTextLatin1Extract):
(WTF::uTextLatin1MapOffsetToNative):
(WTF::uTextLatin1MapNativeIndexToUTF16):
(WTF::uTextLatin1Close):
(WTF::openLatin1UTextProvider):
(WTF::textLatin1ContextAwareGetCurrentContext):
(WTF::textLatin1ContextAwareMoveInPrimaryContext):
(WTF::textLatin1ContextAwareSwitchToPrimaryContext):
(WTF::textLatin1ContextAwareMoveInPriorContext):
(WTF::textLatin1ContextAwareSwitchToPriorContext):
(WTF::uTextLatin1ContextAwareClone):
(WTF::uTextLatin1ContextAwareNativeLength):
(WTF::uTextLatin1ContextAwareAccess):
(WTF::uTextLatin1ContextAwareExtract):
(WTF::uTextLatin1ContextAwareClose):
(WTF::openLatin1ContextAwareUTextProvider):
* wtf/text/icu/UTextProviderLatin1.h: Renamed from Source/WebCore/platform/text/icu/UTextProviderLatin1.h.
* wtf/text/icu/UTextProviderUTF16.cpp: Renamed from Source/WebCore/platform/text/icu/UTextProviderUTF16.cpp.
(WTF::textUTF16ContextAwareGetCurrentContext):
(WTF::textUTF16ContextAwareMoveInPrimaryContext):
(WTF::textUTF16ContextAwareSwitchToPrimaryContext):
(WTF::textUTF16ContextAwareMoveInPriorContext):
(WTF::textUTF16ContextAwareSwitchToPriorContext):
(WTF::uTextUTF16ContextAwareClone):
(WTF::uTextUTF16ContextAwareNativeLength):
(WTF::uTextUTF16ContextAwareAccess):
(WTF::uTextUTF16ContextAwareExtract):
(WTF::uTextUTF16ContextAwareClose):
(WTF::openUTF16ContextAwareUTextProvider):
* wtf/text/icu/UTextProviderUTF16.h: Renamed from Source/WebCore/platform/text/icu/UTextProviderUTF16.h.
* wtf/text/mac/TextBreakIteratorInternalICUMac.mm: Renamed from Source/WebCore/platform/text/mac/TextBreakIteratorInternalICUMac.mm.
(WTF::textBreakLocalePreference):
(WTF::topLanguagePreference):
(WTF::getLocale):
(WTF::getSearchLocale):
(WTF::currentSearchLocaleID):
(WTF::getTextBreakLocale):
(WTF::currentTextBreakLocaleID):
* wtf/text/win/TextBreakIteratorInternalICUWin.cpp: Renamed from Source/WebCore/platform/text/win/TextBreakIteratorInternalICUWin.cpp.
(WebCore::currentSearchLocaleID):
(WebCore::currentTextBreakLocaleID):

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

4 years agoECMAScript 2016: %TypedArray%.prototype.includes implementation
commit-queue@webkit.org [Sun, 10 Jul 2016 08:24:18 +0000 (08:24 +0000)]
ECMAScript 2016: %TypedArray%.prototype.includes implementation
https://bugs.webkit.org/show_bug.cgi?id=159385

Patch by Caio Lima <ticaiolima@gmail.com> on 2016-07-10
Reviewed by Benjamin Poulain.

Source/JavaScriptCore:

This patch implements the ECMAScript 2016:
%TypedArray%.prototype.includes
following spec 22.2.3.14
https://tc39.github.io/ecma262/2016/#sec-%typedarray%.prototype.includes

* runtime/JSGenericTypedArrayViewPrototypeFunctions.h:
(JSC::genericTypedArrayViewProtoFuncIncludes):
* runtime/JSTypedArrayViewPrototype.cpp:
(JSC::typedArrayViewProtoFuncIncludes):
(JSC::JSTypedArrayViewPrototype::finishCreation):

LayoutTests:

This patch implements test case to ECMAScript 2016:
%TypedArray%.prototype.includes implementation
following spec 22.2.3.14
https://tc39.github.io/ecma262/2016/#sec-%typedarray%.prototype.includes

* js/regress/script-tests/typed-array-includes.js: Added.
(assertProperError):
(testIntTypedArray):
(testFloatTypedArray):
* js/typed-array-includes-expected.txt: Added.
* js/typed-array-includes.html: Added.

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

4 years ago[GTK] Crash on https://diafygi.github.io/webcrypto-examples with ENABLE_SUBTLE_CRYPTO
utatane.tea@gmail.com [Sun, 10 Jul 2016 08:03:36 +0000 (08:03 +0000)]
[GTK] Crash on https://diafygi.github.io/webcrypto-examples with ENABLE_SUBTLE_CRYPTO
https://bugs.webkit.org/show_bug.cgi?id=159189

Reviewed by Michael Catanzaro.

Source/WebCore:

Currently, we explicitly release the pointers of std::unique_ptr<CryptoAlgorithm> and std::unique_ptr<CryptoAlgorithmParameters>,
and delete them in the asynchronously called lambdas. In GnuTLS version, callback function is accidentally called twice,
and it incurs the double free problem.
In SubtleCrypto code, we have the rule that we must not call failureCallback when the error code is filled in synchronous execution.
So we drop the failureCallback calling code in GnuTLS subtle crypto code.

But, rather than carefully handling un-smart-pointer-managed raw pointer's life time, we should use ref counted pointer for that.
Using the raw delete is error-prone.

This patch also changes CryptoAlgorithm and CryptoAlgorithmParameters to RefCounted. And use Ref and RefPtr instead.
The change eliminates the ad-hoc delete code. And now, the lambdas can be called multiple times since once the result of the promise
is resolved or rejected, subsequent resolve / reject calls are ignored.

And this patch also fixes the incorrect call to the lambda that is already WTFMoved.

While we can see several `return WTFMove(...)`, they are necessary since it uses implicit type conversions, like,
`Ref<A>` => `RefPtr<A>`, and `Ref<Derived>` => `Ref<Base>`.

* bindings/js/JSCryptoAlgorithmDictionary.cpp:
(WebCore::createAesCbcParams):
(WebCore::createAesKeyGenParams):
(WebCore::createHmacParams):
(WebCore::createHmacKeyParams):
(WebCore::createRsaKeyGenParams):
(WebCore::createRsaKeyParamsWithHash):
(WebCore::createRsaOaepParams):
(WebCore::createRsaSsaParams):
(WebCore::JSCryptoAlgorithmDictionary::createParametersForEncrypt):
(WebCore::JSCryptoAlgorithmDictionary::createParametersForDecrypt):
(WebCore::JSCryptoAlgorithmDictionary::createParametersForSign):
(WebCore::JSCryptoAlgorithmDictionary::createParametersForVerify):
(WebCore::JSCryptoAlgorithmDictionary::createParametersForDigest):
(WebCore::JSCryptoAlgorithmDictionary::createParametersForGenerateKey):
(WebCore::JSCryptoAlgorithmDictionary::createParametersForDeriveKey):
(WebCore::JSCryptoAlgorithmDictionary::createParametersForDeriveBits):
(WebCore::JSCryptoAlgorithmDictionary::createParametersForImportKey):
(WebCore::JSCryptoAlgorithmDictionary::createParametersForExportKey):
* bindings/js/JSCryptoAlgorithmDictionary.h:
* bindings/js/JSCryptoKeySerializationJWK.cpp:
(WebCore::createHMACParameters):
(WebCore::createRSAKeyParametersWithHash):
(WebCore::JSCryptoKeySerializationJWK::reconcileAlgorithm):
* bindings/js/JSCryptoKeySerializationJWK.h:
* bindings/js/JSSubtleCryptoCustom.cpp:
(WebCore::createAlgorithmFromJSValue):
(WebCore::importKey):
(WebCore::JSSubtleCrypto::importKey):
(WebCore::JSSubtleCrypto::wrapKey):
(WebCore::JSSubtleCrypto::unwrapKey):
* crypto/CryptoAlgorithm.h:
* crypto/CryptoAlgorithmParameters.h:
* crypto/CryptoAlgorithmRegistry.cpp:
(WebCore::CryptoAlgorithmRegistry::create):
* crypto/CryptoAlgorithmRegistry.h:
* crypto/CryptoKeySerialization.h:
* crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:
(WebCore::CryptoAlgorithmAES_CBC::create):
* crypto/algorithms/CryptoAlgorithmAES_CBC.h:
* crypto/algorithms/CryptoAlgorithmAES_KW.cpp:
(WebCore::CryptoAlgorithmAES_KW::create):
* crypto/algorithms/CryptoAlgorithmAES_KW.h:
* crypto/algorithms/CryptoAlgorithmHMAC.cpp:
(WebCore::CryptoAlgorithmHMAC::create):
* crypto/algorithms/CryptoAlgorithmHMAC.h:
* crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::create):
* crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h:
* crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:
(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::create):
* crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h:
* crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:
(WebCore::CryptoAlgorithmRSA_OAEP::create):
* crypto/algorithms/CryptoAlgorithmRSA_OAEP.h:
* crypto/algorithms/CryptoAlgorithmSHA1.cpp:
(WebCore::CryptoAlgorithmSHA1::create):
* crypto/algorithms/CryptoAlgorithmSHA1.h:
* crypto/algorithms/CryptoAlgorithmSHA224.cpp:
(WebCore::CryptoAlgorithmSHA224::create):
* crypto/algorithms/CryptoAlgorithmSHA224.h:
* crypto/algorithms/CryptoAlgorithmSHA256.cpp:
(WebCore::CryptoAlgorithmSHA256::create):
* crypto/algorithms/CryptoAlgorithmSHA256.h:
* crypto/algorithms/CryptoAlgorithmSHA384.cpp:
(WebCore::CryptoAlgorithmSHA384::create):
* crypto/algorithms/CryptoAlgorithmSHA384.h:
* crypto/algorithms/CryptoAlgorithmSHA512.cpp:
(WebCore::CryptoAlgorithmSHA512::create):
* crypto/algorithms/CryptoAlgorithmSHA512.h:
* crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:
(WebCore::CryptoAlgorithmAES_CBC::platformEncrypt):
(WebCore::CryptoAlgorithmAES_CBC::platformDecrypt):
* crypto/gnutls/CryptoAlgorithmAES_KWGnuTLS.cpp:
(WebCore::CryptoAlgorithmAES_KW::platformEncrypt):
(WebCore::CryptoAlgorithmAES_KW::platformDecrypt):
* crypto/gnutls/CryptoAlgorithmHMACGnuTLS.cpp:
(WebCore::CryptoAlgorithmHMAC::platformSign):
(WebCore::CryptoAlgorithmHMAC::platformVerify):
* crypto/gnutls/CryptoAlgorithmRSAES_PKCS1_v1_5GnuTLS.cpp:
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::platformEncrypt):
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt):
* crypto/gnutls/CryptoAlgorithmRSASSA_PKCS1_v1_5GnuTLS.cpp:
(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::platformSign):
(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::platformVerify):
* crypto/gnutls/CryptoAlgorithmRSA_OAEPGnuTLS.cpp:
(WebCore::CryptoAlgorithmRSA_OAEP::platformEncrypt):
(WebCore::CryptoAlgorithmRSA_OAEP::platformDecrypt):
* crypto/keys/CryptoKeySerializationRaw.cpp:
(WebCore::CryptoKeySerializationRaw::reconcileAlgorithm):
* crypto/keys/CryptoKeySerializationRaw.h:

LayoutTests:

If you execute the added test with subtle-crypto-enabled GTK environment without this patch, this causes the crash.

* crypto/subtle/unimplemented-unwrap-crash-expected.txt: Added.
* crypto/subtle/unimplemented-unwrap-crash.html: Added.

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

4 years agoPerf dashboard can consume 50-70% of CPU on MacBook even if user is not interacting...
rniwa@webkit.org [Sat, 9 Jul 2016 22:58:54 +0000 (22:58 +0000)]
Perf dashboard can consume 50-70% of CPU on MacBook even if user is not interacting at all
https://bugs.webkit.org/show_bug.cgi?id=159597

Reviewed by Chris Dumez.

TimeSeriesChart and InteractiveTimeSeriesChart had been relying on continually polling on requestAnimationFrame
to update itself in response to its canvas resizing. Even though there as an early exit in the case there was
nothing to update, this is still causing a significant power drain when the user is not interacting at all.

Let TimeSeriesChart use the regular top-down render path like other components with exceptions of listening to
window's resize eventas well as when new JSONs are fetched from the server. The render() call to the latter case
will be coerced into a single callback on requestAnimationFrame to avoid DOM-mutation-layout churn.

* public/v3/components/base.js:
(ComponentBase.isElementInViewport): Deleted.
* public/v3/components/chart-pane-base.js:
(ChartPaneBase.prototype.render): Enqueue charts to render.
* public/v3/components/chart-styles.js:
(ChartStyles.dashboardOptions): Removed updateOnRequestAnimationFrame which is no longer an available option.
* public/v3/components/time-series-chart.js:
(TimeSeriesChart): Replaced the code to register itself for rAF by the code to listen to resize events on window.
(TimeSeriesChart._updateOnRAF): Deleted.
(TimeSeriesChart._updateAllCharts): Added.
(TimeSeriesChart.prototype._enqueueToRender): Added.
(TimeSeriesChart._renderEnqueuedCharts): Added.
(TimeSeriesChart.prototype.fetchMeasurementSets): Avoid calling fetchBetween when the range had been fetched.
Without this change, we can incur a significant number of redundant calls to render() when adjusting the domain
in charts page by the slider. When no new JSON is fetched, simply enqueue this chart to render on rAF.
(TimeSeriesChart.prototype._didFetchMeasurementSet): Enqueue this chart to render on rAF.
(TimeSeriesChart.prototype.render): Removed the check for isElementInViewport since we no longer get render() call
when this chart moves into the viewport (as we no longer listen to every rAF or scroll event).
* public/v3/models/measurement-set.js:
(MeasurementSet.prototype.hasFetchedRange): Fixed various bugs revealed by the new use in fetchMeasurementSets.
* public/v3/pages/chart-pane-status-view.js:
(ChartPaneStatusView.prototype._updateRevisionListForNewCurrentRepository): Removed the dead code. It was probably
copied from when this code was in InteractiveTimeSeries chart. There is no this._forceRender in this component.
* public/v3/pages/dashboard-page.js:
(DashboardPage.prototype.render): Enqueue charts to render.
* public/v3/pages/heading.js:
(SummaryPage.prototype.open): Removed the call to isElementInViewport. This wasn't really doing anything useful in
this component.
* unit-tests/measurement-set-tests.js: Added tests for hasFetchedRange.
(.waitForMeasurementSet): Moved to be used in a newly added test case.

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

4 years agoREGRESSION(201900): validation failure for GetByOffset/PutByOffset in VALIDATE((node...
fpizlo@apple.com [Sat, 9 Jul 2016 21:07:45 +0000 (21:07 +0000)]
REGRESSION(201900): validation failure for GetByOffset/PutByOffset in VALIDATE((node), node->child1().node() == node->child2().node() || node->child1()->result() == NodeResultStorage)
https://bugs.webkit.org/show_bug.cgi?id=159603

Reviewed by Keith Miller.

This removes an incorrect validation rule and replaces it with a FIXME about how to make this
aspect of IR easier to validate soundly.

It's not valid to assert that two children of a node are the same. It should always be valid
to take:

Foo(@x, @x)

and turn it into:

a: ValueRep(@x)
b: ValueRep(@x)
Foo(@a, @b)

or even something like:

y: Identity(@y)
Foo(@x, @y)

That's because it should be possible to rewire any data flow edge something that produces an
equivalent value.

The validation rule that this patch removes meant that such rewirings were invalid on
GetByOffset/PutByOffset. FixupPhase did such a rewiring sometimes.

* dfg/DFGValidate.cpp:
* tests/stress/get-by-offset-double.js: Added.

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

4 years agoappendMemcpy might fail in concatAppendOne
keith_miller@apple.com [Sat, 9 Jul 2016 20:50:51 +0000 (20:50 +0000)]
appendMemcpy might fail in concatAppendOne
https://bugs.webkit.org/show_bug.cgi?id=159601
Source/JavaScriptCore:

<rdar://problem/27211300>

Reviewed by Mark Lam.

There are multiple reasons why we might fail appendMemcpy. One
reason, which I suspect was the source of the crashes, is that one
of the Array prototypes has an indexed property. This patch
consolidates the two old cases by just creating an array then
attempting to memcpy append. If that fails, we fall back to
moveElements.

* runtime/ArrayPrototype.cpp:
(JSC::concatAppendOne):
* tests/stress/concat-with-holesMustForwardToPrototype.js: Added.
(arrayEq):

LayoutTests:

Reviewed by Mark Lam.

Add new microbenchmark testing the performance of concat
when appending one new element. This patch appears to be
about a 13% progression on this test.

* js/regress/concat-append-one-expected.txt: Added.
* js/regress/concat-append-one.html: Added.
* js/regress/script-tests/concat-append-one.js: Added.
(test):

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

4 years agoGive git-add-reviewer an option to say “Rubber-stamped by” in non-interactive mode
mitz@apple.com [Sat, 9 Jul 2016 16:23:27 +0000 (16:23 +0000)]
Give git-add-reviewer an option to say “Rubber-stamped by” in non-interactive mode
https://bugs.webkit.org/show_bug.cgi?id=159600

Reviewed by Daniel Bates.

* Scripts/git-add-reviewer:
Added the -s|--rubber-stamp option.
(nonInteractive): Set the rubberstamp key in the item passed to addReviewer() based on the
  new option.

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

4 years agoREGRESSION (r202931): breaks release builds with ASSERT_WITH_SECURITY_IMPLICATION...
antti@apple.com [Sat, 9 Jul 2016 15:47:29 +0000 (15:47 +0000)]
REGRESSION (r202931): breaks release builds with ASSERT_WITH_SECURITY_IMPLICATION for fuzzing
https://bugs.webkit.org/show_bug.cgi?id=159599
rdar://problem/27248835

Reviewed by Chris Dumez.

Make RenderStyle::deletionHasBegun() available with ENABLE(SECURITY_ASSERTIONS)

* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::~RenderStyle):
* rendering/style/RenderStyle.h:
(WebCore::RenderStyle::deletionHasBegun):

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

4 years agoREGRESSION: manifest.json generation takes multiple seconds on perf dashboard
rniwa@webkit.org [Sat, 9 Jul 2016 15:39:34 +0000 (15:39 +0000)]
REGRESSION: manifest.json generation takes multiple seconds on perf dashboard
https://bugs.webkit.org/show_bug.cgi?id=159596

Reviewed by Chris Dumez.

The most of CPU time was spent looking for a duplicate entry in an array of metrics by array_search.
This patch moves to postgres by using aggregate functions in the query. Also moved the code to convert
datetime to UNIX epoch timestamp from PHP to within postgres query.

These improvements reduce total runtime of Manifest::generate from ~4s to ~350ms on my machine.

* public/include/manifest.php:
(Manifest::generate): No longer fetches test_configurations table as this is done in Manifest::platforms now.
Also moved calls to each method in the class to separate lines for easier instrumentation.
(Manifest::platforms): Group test configurations (current, baseline, target) by platform and metric.
Use the max of the last modified dates in UNIX epoch timestamps (ms to be compatible with JS's representation).
A given platform, metric pair is considered to be in the v1 dashboard if any test configuration is in.

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

4 years agoMake use of PrivateIdentifier to simplify Fetch Headers built-in checks
commit-queue@webkit.org [Sat, 9 Jul 2016 12:57:37 +0000 (12:57 +0000)]
Make use of PrivateIdentifier to simplify Fetch Headers built-in checks
https://bugs.webkit.org/show_bug.cgi?id=159554

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

Source/WebCore:

Test: fetch/header-constructor-overriden.html
Patch does not change visible behavior.

* Modules/fetch/FetchHeaders.idl: Adding PrivateIdentifier to the Headers constructor.
* Modules/fetch/FetchHeaders.js:
(initializeFetchHeaders): Checking directly with @Headers for improved clarity.
* Modules/fetch/FetchResponse.js: Using @Headers to check whether creating a Headers object or not before
passsing it to C++ FetchResponse initialize method.
(initializeFetchResponse):
* bindings/js/WebCoreBuiltinNames.h: Adding Headers private name.

LayoutTests:

* fetch/header-constructor-overriden-expected.txt: Added.
* fetch/header-constructor-overriden.html: Added.

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

4 years ago[JSC] Fix the Template Raw Value of \ (escape) + LineTerminatorSequence
commit-queue@webkit.org [Sat, 9 Jul 2016 07:33:28 +0000 (07:33 +0000)]
[JSC] Fix the Template Raw Value of \ (escape) + LineTerminatorSequence
https://bugs.webkit.org/show_bug.cgi?id=159595

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-07-09
Reviewed by Yusuke Suzuki.

The spec (https://tc39.github.io/ecma262/#sec-static-semantics-tv-and-trv)
says:
"The TRV of LineContinuation::\LineTerminatorSequence is the sequence
 consisting of the code unit value 0x005C followed by the code units
 of TRV of LineTerminatorSequence."

We were not normalizing the LineTerminatorSequence in that case, but it should
be as it is the TRV of LineTerminatorSequence.

* parser/Lexer.cpp:
(JSC::Lexer<T>::parseTemplateLiteral):
* tests/stress/tagged-templates-raw-strings.js:

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

4 years agobundle-v3-scripts.py should compress HTML/CSS templates
rniwa@webkit.org [Sat, 9 Jul 2016 03:32:00 +0000 (03:32 +0000)]
bundle-v3-scripts.py should compress HTML/CSS templates
https://bugs.webkit.org/show_bug.cgi?id=159582

Reviewed by Joseph Pecoraro.

Strip leading and trailing whitespaces from HTML and CSS templates. This is a 8% progression on the file size.

* Install.md: Updated the list of MIME types to apply deflate for newer versions of Apache.
* tools/bundle-v3-scripts.py:
(main):
(compress_template): Added.

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

4 years agoadoptNode() changes css class to lowercase for document loaded with XHR responseType...
cdumez@apple.com [Sat, 9 Jul 2016 02:24:27 +0000 (02:24 +0000)]
adoptNode() changes css class to lowercase for document loaded with XHR responseType = "document"
https://bugs.webkit.org/show_bug.cgi?id=159555
<rdar://problem/27252541>

Reviewed by Ryosuke Niwa.

Source/WebCore:

When adopting an Element from another document which has a different quirks mode,
case-sensitivity for id and class attributes differs and we need to correctly
update members such as ElementData::m_classNames or ElementData::m_idForStyleResolution.

To address the issue, have Element override didMoveToNewDocument() and call
attributeChanged() for id and class attributes.

Test: fast/dom/Document/adoptNode-quirks-mismatch.html

* dom/Element.cpp:
(WebCore::Element::didMoveToNewDocument):
* dom/Element.h:

LayoutTests:

Add test coverage for id and class attributes.

* fast/dom/Document/adoptNode-quirks-mismatch-expected.txt: Added.
* fast/dom/Document/adoptNode-quirks-mismatch.html: Added.
* fast/dom/Document/resources/document-quirks-class.html: Added.
* fast/dom/Document/resources/document-quirks-id.html: Added.

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

4 years agoWeb Inspector: Command-Shift-S in the Styles sidebar should always show the save...
nvasilyev@apple.com [Sat, 9 Jul 2016 02:24:23 +0000 (02:24 +0000)]
Web Inspector: Command-Shift-S in the Styles sidebar should always show the save dialog
https://bugs.webkit.org/show_bug.cgi?id=156858
<rdar://problem/25859098>

Reviewed by Timothy Hatcher.

* UserInterface/Views/CSSStyleDeclarationSection.js:
(WebInspector.CSSStyleDeclarationSection):

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

4 years agoCleanup: Remove use of PassRefPtr from class HTMLTableElement
dbates@webkit.org [Sat, 9 Jul 2016 02:14:43 +0000 (02:14 +0000)]
Cleanup: Remove use of PassRefPtr from class HTMLTableElement
https://bugs.webkit.org/show_bug.cgi?id=159587

Reviewed by Chris Dumez.

* html/HTMLTableElement.cpp:
(WebCore::HTMLTableElement::setCaption): Take a rvalue reference to a RefPtr instead of a PassRefPtr.
(WebCore::HTMLTableElement::setTHead): Take a rvalue reference to a RefPtr instead of a PassRefPtr. Also
fix a style nit; add curly braces around the for-loop body since its body is more than a single line.
(WebCore::HTMLTableElement::createTHead): Use Ref::copyRef() instead of Ref::ptr() to pass the instantiated
table section to better convey that we are passing a copy of the table section.
(WebCore::HTMLTableElement::createCaption): Ditto.
* html/HTMLTableElement.h:

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

4 years agoWe may add a ReadOnly property without setting the corresponding bit on Structure
sbarati@apple.com [Sat, 9 Jul 2016 01:29:55 +0000 (01:29 +0000)]
We may add a ReadOnly property without setting the corresponding bit on Structure
https://bugs.webkit.org/show_bug.cgi?id=159542
<rdar://problem/27084591>

Reviewed by Benjamin Poulain.

The reason this usually is OK is due to happenstance. Often, instances that putDirectWithoutTransition
also happen to have a static property table. Having a static property table causes the
HasReadOnlyOrGetterSetterPropertiesExcludingProto on the structure to be set. However,
there are times where an object calls putDirectWithoutTransition, and it doesn't have a
static property hash table. The fix is simple, putDirectWithTransition needs to set the
HasReadOnlyOrGetterSetterPropertiesExcludingProto if it puts a ReadOnly property.

* runtime/JSObject.h:
(JSC::JSObject::putDirectWithoutTransition):
* tests/stress/proper-property-store-with-prototype-property-that-is-not-writable.js: Added.
(assert):

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

4 years agoWhen WKWebView prepares the session state blob, we should be able to filter it.
commit-queue@webkit.org [Sat, 9 Jul 2016 00:43:16 +0000 (00:43 +0000)]
When WKWebView prepares the session state blob, we should be able to filter it.
https://bugs.webkit.org/show_bug.cgi?id=159410

Add a SPI to WKWebView so that a client can decide how to filter backforward items
when WKWebView perparing session state.

Patch by Yongjun Zhang <yongjun_zhang@apple.com> on 2016-07-08
Reviewed by Brady Eidson.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _sessionStateWithFilter:]): When preparing session state, check each
backforward item against the filter block.
* UIProcess/API/Cocoa/WKWebViewPrivate.h: Add the SPI _sessionStateWithFilter:

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

4 years agoMove shouldInheritSecurityOriginFromOwner() from URL to Document
dbates@webkit.org [Sat, 9 Jul 2016 00:28:23 +0000 (00:28 +0000)]
Move shouldInheritSecurityOriginFromOwner() from URL to Document
https://bugs.webkit.org/show_bug.cgi?id=158987

Reviewed by Alex Christensen.

The URL class should not have knowledge of the concept of an origin or the semantics of origin
inheritance as these are higher level concepts. We should make URL::shouldInheritSecurityOriginFromOwner()
a static non-member, non-friend function of Document because its implements the origin semantics
for a Document object as described in section Origin of the HTML5 spec., <https://html.spec.whatwg.org/multipage/browsers.html#origin> (8 July 2016).
These semantics only apply to Documents.

No functionality changed. So, no new tests.

* dom/Document.cpp:
(WebCore::shouldInheritSecurityOriginFromOwner): Added.
(WebCore::Document::initSecurityContext): Modified to call WebCore::shouldInheritSecurityOriginFromOwner().
(WebCore::Document::initContentSecurityPolicy): Ditto.
* platform/URL.cpp:
(WebCore::URL::shouldInheritSecurityOriginFromOwner): Deleted.
* platform/URL.h:

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

4 years agoASSERTION FAILED: Heap::isMarked(cell) in SlotVisitor::appendToMarkStack(JSC::JSCell *)
msaboff@apple.com [Sat, 9 Jul 2016 00:24:25 +0000 (00:24 +0000)]
ASSERTION FAILED: Heap::isMarked(cell) in SlotVisitor::appendToMarkStack(JSC::JSCell *)
https://bugs.webkit.org/show_bug.cgi?id=159588

Reviewed by Geoffrey Garen.

We were jettisoning a CodeBlock during GC that won't survive and its owning script
won't survive either.  We can't install any code on the owning script as that involves
a write barrier that will "pull" the script back into the remembered set.  Badness would
ensue.  Added an early return in CodeBlock::jettison() when we are garbage collecting
and the owning script isn't marked.

* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::jettison):

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

4 years agoSetting table.tFoot or calling table.createTFoot() should append HTML tfont element...
dbates@webkit.org [Sat, 9 Jul 2016 00:19:13 +0000 (00:19 +0000)]
Setting table.tFoot or calling table.createTFoot() should append HTML tfont element to the end of the table
https://bugs.webkit.org/show_bug.cgi?id=159583
<rdar://problem/27255292>

In HTMLTableElement::createTFoot() I inadvertently made use of WTFMove() to move the instantiated
HTMLTableSectionElement into the argument passed to setTFoot(). We should use Ref::copyRef() instead
because we want this function to return the instantiated table section.

* html/HTMLTableElement.cpp:
(WebCore::HTMLTableElement::createTFoot):

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

4 years agoMail messages don't start loading until scrolling completes
timothy_horton@apple.com [Sat, 9 Jul 2016 00:15:16 +0000 (00:15 +0000)]
Mail messages don't start loading until scrolling completes
https://bugs.webkit.org/show_bug.cgi?id=159585
<rdar://problem/27088405>

Reviewed by Andy Estes.

* UIProcess/Network/CustomProtocols/mac/CustomProtocolManagerProxyMac.mm:
(-[WKCustomProtocolLoader initWithCustomProtocolManagerProxy:customProtocolID:request:connection:]):
When scrolling, NSDefaultRunLoopMode isn't run, but NSRunLoopCommonModes are.
CFNetwork uses NSDefaultRunLoopMode if we tell NSURLConnection to "start immediately",
but we can instead schedule our NSURLConnection into NSRunLoopCommonModes
and start it ourselves, ensuring that it will be able to do work while scrolling is happening.

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

4 years agoSetting table.tFoot or calling table.createTFoot() should append HTML tfont element...
dbates@webkit.org [Sat, 9 Jul 2016 00:04:32 +0000 (00:04 +0000)]
Setting table.tFoot or calling table.createTFoot() should append HTML tfont element to the end of the table
https://bugs.webkit.org/show_bug.cgi?id=159583
<rdar://problem/27255292>

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

Update expected result now that we append the HTML tfoot element to the end of the table.

* web-platform-tests/html/semantics/tabular-data/the-table-element/tFoot-expected.txt:

Source/WebCore:

he HTML standard has long since been revised to describe that assignment to property table.tFoot
or invoking table.createTFoot() will append the HTML tfoot element to the end of the table. This
behavior is defined in <https://html.spec.whatwg.org/multipage/tables.html#dom-table-tfoot> (8 July 2016)
and <https://html.spec.whatwg.org/multipage/tables.html#dom-table-createtfoot> for the property
table.tFoot and table.createTFoot(), respectively. This change makes our behavior match the
behavior in Mozilla Firefox, Microsoft Edge, Microsoft Internet Explorer 8 and later.

* html/HTMLTableElement.cpp:
(WebCore::HTMLTableElement::setTFoot): Append <tfoot> to the end of the table. Use RefPtr<>&& instead of PassRefPtr.
(WebCore::HTMLTableElement::createTFoot): Use RefPtr<>&& instead of PassRefPtr.
* html/HTMLTableElement.h:

LayoutTests:

Update expected results now that we append the HTML tfoot element to the end of the table.

* platform/efl/tables/mozilla/bugs/bug30418-expected.txt:
* platform/gtk/tables/mozilla/bugs/bug30418-expected.txt:
* platform/ios-simulator/tables/mozilla/bugs/bug30418-expected.txt:
* platform/mac/tables/mozilla/bugs/bug30418-expected.txt:
* platform/win/tables/mozilla/bugs/bug30418-expected.txt:

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

4 years agoCrash in layout test /media/video-buffered-range-contains-currentTime.html
jer.noble@apple.com [Fri, 8 Jul 2016 23:49:15 +0000 (23:49 +0000)]
Crash in layout test /media/video-buffered-range-contains-currentTime.html
https://bugs.webkit.org/show_bug.cgi?id=159109
<rdar://problem/26535750>

Reviewed by Alex Christensen.

Protect against _dataTasks being mutated and accessed on multiple simultaneous threads with a Lock.

* platform/network/cocoa/WebCoreNSURLSession.h:
* platform/network/cocoa/WebCoreNSURLSession.mm:
(-[WebCoreNSURLSession dealloc]):
(-[WebCoreNSURLSession taskCompleted:]):
(-[WebCoreNSURLSession finishTasksAndInvalidate]):
(-[WebCoreNSURLSession invalidateAndCancel]):
(-[WebCoreNSURLSession getTasksWithCompletionHandler:]):
(-[WebCoreNSURLSession getAllTasksWithCompletionHandler:]):
(-[WebCoreNSURLSession dataTaskWithRequest:]):
(-[WebCoreNSURLSession dataTaskWithURL:]):

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

4 years agoMove CallFrame header info from JSStack.h to CallFrame.h
mark.lam@apple.com [Fri, 8 Jul 2016 22:58:15 +0000 (22:58 +0000)]
Move CallFrame header info from JSStack.h to CallFrame.h
https://bugs.webkit.org/show_bug.cgi?id=159549

Reviewed by Geoffrey Garen.

CallFrame.h is a much better location for CallFrame header info.

Replaced CallFrame::init() with ExecState::initGlobalExec() because normal
CallFrames are setup by a different mechanism now.  Only the globalExec is still
using it.  So, might as well change it to be specifically for the globalExec.

Removed the use of JSStack::containsAddress() in ExecState::initGlobalExec()
because it is not relevant to the globalExec.

Also removed some unused code: JSStack::gatherConservativeRoots() and
JSStack::sanitizeStack() is never called for JIT builds.

* bytecode/PolymorphicAccess.cpp:
(JSC::AccessCase::generateImpl):
* bytecode/VirtualRegister.h:
(JSC::VirtualRegister::isValid):
(JSC::VirtualRegister::isLocal):
(JSC::VirtualRegister::isArgument):
(JSC::VirtualRegister::isHeader):
(JSC::VirtualRegister::isConstant):
(JSC::VirtualRegister::toLocal):
(JSC::VirtualRegister::toArgument):
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::emitCall):
(JSC::BytecodeGenerator::emitConstruct):
* bytecompiler/BytecodeGenerator.h:
(JSC::CallArguments::thisRegister):
(JSC::CallArguments::argumentRegister):
(JSC::CallArguments::stackOffset):
(JSC::CallArguments::argumentCountIncludingThis):
(JSC::CallArguments::argumentsNode):
(JSC::BytecodeGenerator::registerFor):
* bytecompiler/NodesCodegen.cpp:
(JSC::emitHomeObjectForCallee):
(JSC::emitGetSuperFunctionForConstruct):
(JSC::CallArguments::CallArguments):
* dfg/DFGArgumentsEliminationPhase.cpp:
* dfg/DFGArgumentsUtilities.cpp:
(JSC::DFG::argumentsInvolveStackSlot):
(JSC::DFG::emitCodeToGetArgumentsArrayLength):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::get):
(JSC::DFG::ByteCodeParser::findArgumentPositionForLocal):
(JSC::DFG::ByteCodeParser::flush):
(JSC::DFG::ByteCodeParser::addCallWithoutSettingResult):
(JSC::DFG::ByteCodeParser::getArgumentCount):
(JSC::DFG::ByteCodeParser::inlineCall):
(JSC::DFG::ByteCodeParser::handleInlining):
(JSC::DFG::ByteCodeParser::handleGetById):
(JSC::DFG::ByteCodeParser::handlePutById):
(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGGraph.cpp:
(JSC::DFG::Graph::isLiveInBytecode):
* dfg/DFGGraph.h:
(JSC::DFG::Graph::forAllLocalsLiveInBytecode):
* dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::compileEntry):
(JSC::DFG::JITCompiler::compileSetupRegistersForEntry):
(JSC::DFG::JITCompiler::compileFunction):
* dfg/DFGJITCompiler.h:
(JSC::DFG::JITCompiler::emitStoreCallSiteIndex):
* dfg/DFGOSRAvailabilityAnalysisPhase.cpp:
(JSC::DFG::LocalOSRAvailabilityCalculator::executeNode):
* dfg/DFGOSREntry.cpp:
(JSC::DFG::prepareOSREntry):
* dfg/DFGOSRExitCompiler.cpp:
(JSC::DFG::OSRExitCompiler::emitRestoreArguments):
* dfg/DFGOSRExitCompilerCommon.cpp:
(JSC::DFG::reifyInlinedCallFrames):
* dfg/DFGOSRExitCompilerCommon.h:
(JSC::DFG::adjustFrameAndStackInOSRExitCompilerThunk):
* dfg/DFGPreciseLocalClobberize.h:
(JSC::DFG::PreciseLocalClobberizeAdaptor::readTop):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::emitGetLength):
(JSC::DFG::SpeculativeJIT::emitGetCallee):
(JSC::DFG::SpeculativeJIT::emitGetArgumentStart):
(JSC::DFG::SpeculativeJIT::compileCreateDirectArguments):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGStackLayoutPhase.cpp:
(JSC::DFG::StackLayoutPhase::run):
* dfg/DFGThunks.cpp:
(JSC::DFG::osrEntryThunkGenerator):
* ftl/FTLLink.cpp:
(JSC::FTL::link):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::lower):
(JSC::FTL::DFG::LowerDFGToB3::compileGetMyArgumentByVal):
(JSC::FTL::DFG::LowerDFGToB3::compileGetCallee):
(JSC::FTL::DFG::LowerDFGToB3::compileGetArgumentCountIncludingThis):
(JSC::FTL::DFG::LowerDFGToB3::compileGetScope):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstruct):
(JSC::FTL::DFG::LowerDFGToB3::compileTailCall):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargs):
(JSC::FTL::DFG::LowerDFGToB3::compileLogShadowChickenPrologue):
(JSC::FTL::DFG::LowerDFGToB3::getArgumentsLength):
(JSC::FTL::DFG::LowerDFGToB3::getCurrentCallee):
(JSC::FTL::DFG::LowerDFGToB3::getArgumentsStart):
(JSC::FTL::DFG::LowerDFGToB3::callPreflight):
* ftl/FTLOSRExitCompiler.cpp:
(JSC::FTL::compileStub):
* ftl/FTLSlowPathCall.h:
(JSC::FTL::callOperation):
* interpreter/CallFrame.cpp:
(JSC::ExecState::initGlobalExec):
(JSC::CallFrame::callSiteBitsAreBytecodeOffset):
(JSC::CallFrame::callSiteAsRawBits):
(JSC::CallFrame::unsafeCallSiteAsRawBits):
(JSC::CallFrame::callSiteIndex):
(JSC::CallFrame::setCurrentVPC):
(JSC::CallFrame::callSiteBitsAsBytecodeOffset):
* interpreter/CallFrame.h:
(JSC::CallSiteIndex::CallSiteIndex):
(JSC::ExecState::calleeAsValue):
(JSC::ExecState::callee):
(JSC::ExecState::unsafeCallee):
(JSC::ExecState::codeBlock):
(JSC::ExecState::unsafeCodeBlock):
(JSC::ExecState::scope):
(JSC::ExecState::setCallerFrame):
(JSC::ExecState::setScope):
(JSC::ExecState::argumentCount):
(JSC::ExecState::argumentCountIncludingThis):
(JSC::ExecState::argumentOffset):
(JSC::ExecState::argumentOffsetIncludingThis):
(JSC::ExecState::offsetFor):
(JSC::ExecState::noCaller):
(JSC::ExecState::setArgumentCountIncludingThis):
(JSC::ExecState::setCallee):
(JSC::ExecState::setCodeBlock):
(JSC::ExecState::setReturnPC):
(JSC::ExecState::argIndexForRegister):
(JSC::ExecState::callerFrameAndPC):
(JSC::ExecState::unsafeCallerFrameAndPC):
(JSC::ExecState::init): Deleted.
* interpreter/Interpreter.cpp:
(JSC::Interpreter::dumpRegisters):
* interpreter/Interpreter.h:
(JSC::calleeFrameForVarargs):
* interpreter/JSStack.h:
(JSC::JSStack::containsAddress):
(JSC::JSStack::gatherConservativeRoots): Deleted.
(JSC::JSStack::sanitizeStack): Deleted.
* jit/AssemblyHelpers.cpp:
(JSC::AssemblyHelpers::jitAssertArgumentCountSane):
(JSC::AssemblyHelpers::emitRandomThunk):
* jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::restoreReturnAddressBeforeReturn):
(JSC::AssemblyHelpers::emitGetFromCallFrameHeaderPtr):
(JSC::AssemblyHelpers::emitGetFromCallFrameHeader32):
(JSC::AssemblyHelpers::emitGetFromCallFrameHeader64):
(JSC::AssemblyHelpers::emitPutToCallFrameHeader):
(JSC::AssemblyHelpers::emitPutToCallFrameHeaderBeforePrologue):
(JSC::AssemblyHelpers::emitPutPayloadToCallFrameHeaderBeforePrologue):
(JSC::AssemblyHelpers::emitPutTagToCallFrameHeaderBeforePrologue):
(JSC::AssemblyHelpers::calleeFrameSlot):
* jit/CCallHelpers.cpp:
(JSC::CCallHelpers::logShadowChickenProloguePacket):
* jit/CCallHelpers.h:
(JSC::CCallHelpers::prepareForTailCallSlow):
* jit/CallFrameShuffler.cpp:
(JSC::CallFrameShuffler::CallFrameShuffler):
(JSC::CallFrameShuffler::dump):
(JSC::CallFrameShuffler::extendFrameIfNeeded):
(JSC::CallFrameShuffler::prepareForSlowPath):
(JSC::CallFrameShuffler::prepareForTailCall):
(JSC::CallFrameShuffler::prepareAny):
* jit/CallFrameShuffler.h:
(JSC::CallFrameShuffler::snapshot):
(JSC::CallFrameShuffler::setCalleeJSValueRegs):
(JSC::CallFrameShuffler::assumeCalleeIsCell):
(JSC::CallFrameShuffler::numLocals):
(JSC::CallFrameShuffler::getOld):
(JSC::CallFrameShuffler::setOld):
(JSC::CallFrameShuffler::firstOld):
(JSC::CallFrameShuffler::lastOld):
(JSC::CallFrameShuffler::isValidOld):
(JSC::CallFrameShuffler::argCount):
(JSC::CallFrameShuffler::getNew):
* jit/JIT.cpp:
(JSC::JIT::compileWithoutLinking):
* jit/JIT.h:
* jit/JITCall.cpp:
(JSC::JIT::compileSetupVarargsFrame):
(JSC::JIT::compileCallEvalSlowCase):
(JSC::JIT::compileOpCall):
* jit/JITCall32_64.cpp:
(JSC::JIT::compileSetupVarargsFrame):
(JSC::JIT::compileCallEvalSlowCase):
(JSC::JIT::compileOpCall):
* jit/JITInlines.h:
(JSC::JIT::getConstantOperand):
(JSC::JIT::emitPutIntToCallFrameHeader):
(JSC::JIT::updateTopCallFrame):
* jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_get_scope):
(JSC::JIT::emit_op_argument_count):
(JSC::JIT::emit_op_get_rest_length):
* jit/JITOpcodes32_64.cpp:
(JSC::JIT::privateCompileCTINativeCall):
(JSC::JIT::emit_op_get_scope):
* jit/JSInterfaceJIT.h:
(JSC::JSInterfaceJIT::emitJumpIfNotType):
(JSC::JSInterfaceJIT::emitGetFromCallFrameHeaderPtr):
(JSC::JSInterfaceJIT::emitPutToCallFrameHeader):
(JSC::JSInterfaceJIT::emitPutCellToCallFrameHeader):
* jit/SetupVarargsFrame.cpp:
(JSC::emitSetVarargsFrame):
(JSC::emitSetupVarargsFrameFastCase):
* jit/SpecializedThunkJIT.h:
(JSC::SpecializedThunkJIT::SpecializedThunkJIT):
* jit/ThunkGenerators.cpp:
(JSC::nativeForGenerator):
(JSC::arityFixupGenerator):
(JSC::boundThisNoArgsFunctionCallGenerator):
* llint/LLIntData.cpp:
(JSC::LLInt::Data::performAssertions):
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::genericCall):
(JSC::LLInt::varargsSetup):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
* runtime/CommonSlowPaths.h:
(JSC::CommonSlowPaths::arityCheckFor):
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
* runtime/JSGlobalObject.h:
* runtime/StackAlignment.h:
(JSC::roundArgumentCountToAlignFrame):
(JSC::roundLocalRegisterCountForFramePointerOffset):
(JSC::logStackAlignmentRegisters):
* wasm/WASMFunctionCompiler.h:
(JSC::WASMFunctionCompiler::startFunction):
(JSC::WASMFunctionCompiler::endFunction):
(JSC::WASMFunctionCompiler::boxArgumentsAndAdjustStackPointer):
(JSC::WASMFunctionCompiler::callAndUnboxResult):
* wasm/WASMFunctionSyntaxChecker.h:
(JSC::WASMFunctionSyntaxChecker::updateTempStackHeightForCall):

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

4 years agoPrevent fullscreen video dimension state from being reset after configuring.
commit-queue@webkit.org [Fri, 8 Jul 2016 21:06:33 +0000 (21:06 +0000)]
Prevent fullscreen video dimension state from being reset after configuring.
https://bugs.webkit.org/show_bug.cgi?id=159578

Patch by Jeremy Jones <jeremyj@apple.com> on 2016-07-08
Reviewed by Jer Noble.

This change moves setVideoElement() to after setMediaElement(), since setMediaElement() resets the
mediaState, undoing the configuration done by setVideoElement().

This change is fragile, but minimal. The proper, more comprehinsive fix will come later from
https://bugs.webkit.org/show_bug.cgi?id=159580.

* platform/ios/WebVideoFullscreenControllerAVKit.mm:
(WebVideoFullscreenControllerContext::setUpFullscreen):

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

4 years agoObject.defineProperty() should maintain existing getter / setter if not overridden...
cdumez@apple.com [Fri, 8 Jul 2016 20:52:15 +0000 (20:52 +0000)]
Object.defineProperty() should maintain existing getter / setter if not overridden in the new descriptor
https://bugs.webkit.org/show_bug.cgi?id=159576
<rdar://problem/27242197>

Reviewed by Mark Lam.

Source/JavaScriptCore:

Object.defineProperty() should maintain existing getter / setter if not
overridden in the new descriptor. Previously, if the property is a had
a custom getter / setter, and if the new descriptor only had a setter
(or only a getter), JSC would clear the existing getter (or setter).
This behavior did not match the EcmaScript specification or Firefox /
Chrome. This patch fixes the issue.

This fixes searching and search suggestions on www.iciba.com.

* runtime/JSObject.cpp:
(JSC::validateAndApplyPropertyDescriptor):

LayoutTests:

Add test coverage.

* js/dom/customAccessor-defineProperty-expected.txt: Added.
* js/dom/customAccessor-defineProperty.html: Added.
* js/dom/customAccessor-defineProperty_getterOnly-expected.txt: Added.
* js/dom/customAccessor-defineProperty_getterOnly.html: Added.
* js/dom/customAccessor-defineProperty_setterOnly-expected.txt: Added.
* js/dom/customAccessor-defineProperty_setterOnly.html: Added.

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

4 years ago[Content Filtering] Load blocked pages more like other error pages are loaded
aestes@apple.com [Fri, 8 Jul 2016 20:14:34 +0000 (20:14 +0000)]
[Content Filtering] Load blocked pages more like other error pages are loaded
https://bugs.webkit.org/show_bug.cgi?id=159485
<rdar://problem/26014076>

Reviewed by Brady Eidson.

Source/WebCore:

Content filter blocked pages were being loaded by cancelling the provisional load of the
page that was blocked and then scheduling a navigation to the content filter error page.
Some clients would not expect a new, Web process-initiated provisional navigation to start
after a cancellation, though, and this would put them in a bad state.

This patch changes blocked page loading to behave more like loading other error pages.
Specifically:
1. didFailProvisionalLoad is dispatched with a new, non-cancellation error code.
2. The blocked page is loaded immediately after dispatching didFailProvisionalLoad, which
   prevents FrameLoader from creating a new back-forward list item for the substitute data load.
3. A substitute data load initiated by the client for the blocked URL is ignored if
   ContentFilter will display its own error page.
4. A file: URL is used instead of a custom scheme for the base URL of the blocked page,
   since some clients expect this.

Updated existing tests to capture frame load delegate callbacks and the back forward list.
Added new API tests: ContentFiltering.LoadAlternate*.

* English.lproj/Localizable.strings: Added a WebKitErrorFrameLoadBlockedByContentFilter description.
* Resources/ContentFilterBlockedPage.html: Added.
* WebCore.xcodeproj/project.pbxproj: Added ContentFilterBlockedPage.html as a frameowrk resource.
* loader/ContentFilter.cpp:
(WebCore::ContentFilter::continueAfterWillSendRequest): Protected m_documentLoader,
since it might otherwise be deallocated inside ContentFilter::didDecide() if the load is blocked.
(WebCore::ContentFilter::stopFilteringMainResource): Only set m_state to Stopped if not
already Blocked, so that we don't forget this ContentFilter was blocked when calling
cancelMailResourceLoad() in didDecide().
(WebCore::ContentFilter::continueAfterResponseReceived): Protected m_documentLoader,
since it might otherwise be deallocated inside ContentFilter::didDecide() if the load is blocked.
(WebCore::ContentFilter::continueAfterDataReceived): Ditto.
(WebCore::ContentFilter::continueAfterNotifyFinished): Ditto.
(WebCore::ContentFilter::didDecide): Moved code from DocumentLoader::contentFilterDidBlock() to here.
Created a blockedByContentFilterError() and called cancelMainResourceLoad().
(WebCore::blockedPageURL): Returned a file: URL to ContentFilterBlockedPage.html in WebCore.framework.
(WebCore::ContentFilter::continueAfterSubstituteDataRequest): If the substitute data load
is for the same failingURL as the currently-displayed blocked page, ignore it.
(WebCore::ContentFilter::handleProvisionalLoadFailure): Load the blocked page if m_state is Blocked
and the ResourceError matches the error we used when previously calling cancelMainResourceLoad().
(WebCore::ContentFilter::unblockHandler): Deleted.
(WebCore::ContentFilter::replacementData): Deleted.
(WebCore::ContentFilter::unblockRequestDeniedScript): Deleted.
* loader/ContentFilter.h:
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::contentFilter): Returned m_contentFilter.
(WebCore::DocumentLoader::installContentFilterUnblockHandler): Deleted.
(WebCore::DocumentLoader::contentFilterDidBlock): Deleted.
* loader/DocumentLoader.h:
* loader/EmptyClients.h: Added a default implementation of blockedByContentFilterError().
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::load): If m_loadType was already RedirectWithLockedBackForwardList
and we are loading subsitute data for a failing URL, continue to use RedirectWithLockedBackForwardList.
This prevents a new back-forward list item from being created when loading a blocked page in a subframe.
(WebCore::FrameLoader::checkLoadCompleteForThisFrame):
Called ContentFilter::handleProvisionalLoadFailure() after dispatchDidFailProvisionalLoad().
(WebCore::FrameLoader::blockedByContentFilterError): Called FrameLoaderClient::blockedByContentFilterError().
* loader/FrameLoader.h:
* loader/FrameLoaderClient.h:
* loader/NavigationScheduler.cpp:
(WebCore::ScheduledSubstituteDataLoad::ScheduledSubstituteDataLoad): Deleted.
(WebCore::NavigationScheduler::scheduleSubstituteDataLoad): Deleted.
* loader/NavigationScheduler.h:
* loader/PolicyChecker.cpp:
(WebCore::PolicyChecker::checkNavigationPolicy): Ignored a substitute data load for a
failing URL if ContentFilter::continueAfterSubstituteDataRequest() returns false.

Source/WebKit/mac:

* Misc/WebKitErrors.h: Defined WebKitErrorFrameLoadBlockedByContentFilter.
* Misc/WebKitErrors.m:
(registerErrors): Registered WebKitErrorDescriptionFrameLoadBlockedByContentFilter.
* WebCoreSupport/WebFrameLoaderClient.h:
* WebCoreSupport/WebFrameLoaderClient.mm:
(WebFrameLoaderClient::blockedByContentFilterError): Returned a ResourceError for WebKitErrorFrameLoadBlockedByContentFilter.

Source/WebKit2:

* Shared/API/c/WKErrorRef.h: Defined kWKErrorCodeFrameLoadBlockedByContentFilter.
* UIProcess/Cocoa/WebProcessProxyCocoa.mm:
(WebKit::WebProcessProxy::platformPathsWithAssumedReadAccess): Added the resource directories
of WebCore.framework and WebKit.framework as paths with assumed read access.
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::hasAssumedReadAccessToURL): Checked platformPathsWithAssumedReadAccess()
as well as m_localPathsWithAssumedReadAccess.
(WebKit::WebProcessProxy::platformPathsWithAssumedReadAccess): Added a non-Cocoa implementation.
* UIProcess/WebProcessProxy.h:
* WebProcess/WebCoreSupport/WebErrors.h:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::blockedByContentFilterError): Called WebKit::blockedByContentFilterError().
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
* WebProcess/WebCoreSupport/mac/WebErrorsMac.mm:
(WebKit::blockedByContentFilterError): Returned a ResourceError for kWKErrorCodeFrameLoadBlockedByContentFilter.

Tools:

Added API tests for WebView and WKWebView to verify that alternate HTML loaded in response
to a content filtering provisional navigation failure is ignored in preference of
ContentFilter's own error page.

* TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig:
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit2Cocoa/ContentFiltering.mm:
(-[LoadAlternateNavigationDelegate webView:didFailProvisionalNavigation:withError:]):
(-[LoadAlternateNavigationDelegate webView:didFinishNavigation:]):
(loadAlternateTest):
(TEST):
* TestWebKitAPI/Tests/WebKit2Cocoa/ContentFilteringPlugIn.mm:
(-[MockContentFilterEnabler initWithCoder:]):
* TestWebKitAPI/Tests/mac/ContentFiltering.mm: Added.
(-[LoadAlternateFrameLoadDelegate webView:didFailProvisionalLoadWithError:forFrame:]):
(-[LoadAlternateFrameLoadDelegate webView:didFinishLoadForFrame:]):
(TestWebKitAPI::loadAlternateTest):
(TestWebKitAPI::TEST):

LayoutTests:

Changed allow-* and block-* tests from ref tests to text tests so that they can capture
frame load delegate callbacks and the back forward list.

* contentfiltering/allow-after-add-data-expected.html: Removed.
* contentfiltering/allow-after-add-data-expected.txt: Added.
* contentfiltering/allow-after-finished-adding-data-expected.html: Removed.
* contentfiltering/allow-after-finished-adding-data-expected.txt: Added.
* contentfiltering/allow-after-response-expected.html: Removed.
* contentfiltering/allow-after-response-expected.txt: Added.
* contentfiltering/allow-after-will-send-request-expected.html: Removed.
* contentfiltering/allow-after-will-send-request-expected.txt: Added.
* contentfiltering/allow-never-expected.html: Removed.
* contentfiltering/allow-never-expected.txt: Added.
* contentfiltering/block-after-add-data-expected.html: Removed.
* contentfiltering/block-after-add-data-expected.txt: Added.
* contentfiltering/block-after-add-data-then-allow-unblock-expected.html: Removed.
* contentfiltering/block-after-add-data-then-allow-unblock-expected.txt: Added.
* contentfiltering/block-after-add-data-then-deny-unblock-expected.html: Removed.
* contentfiltering/block-after-add-data-then-deny-unblock-expected.txt: Added.
* contentfiltering/block-after-finished-adding-data-expected.html: Removed.
* contentfiltering/block-after-finished-adding-data-expected.txt: Added.
* contentfiltering/block-after-finished-adding-data-then-allow-unblock-expected.html: Removed.
* contentfiltering/block-after-finished-adding-data-then-allow-unblock-expected.txt: Added.
* contentfiltering/block-after-finished-adding-data-then-deny-unblock-expected.html: Removed.
* contentfiltering/block-after-finished-adding-data-then-deny-unblock-expected.txt: Added.
* contentfiltering/block-after-response-expected.html: Removed.
* contentfiltering/block-after-response-expected.txt: Added.
* contentfiltering/block-after-response-then-allow-unblock-expected.html: Removed.
* contentfiltering/block-after-response-then-allow-unblock-expected.txt: Added.
* contentfiltering/block-after-response-then-deny-unblock-expected.html: Removed.
* contentfiltering/block-after-response-then-deny-unblock-expected.txt: Added.
* contentfiltering/block-after-will-send-request-expected.html: Removed.
* contentfiltering/block-after-will-send-request-expected.txt: Added.
* contentfiltering/block-after-will-send-request-then-allow-unblock-expected.html: Removed.
* contentfiltering/block-after-will-send-request-then-allow-unblock-expected.txt: Added.
* contentfiltering/block-after-will-send-request-then-deny-unblock-expected.html: Removed.
* contentfiltering/block-after-will-send-request-then-deny-unblock-expected.txt: Added.
* contentfiltering/block-never-expected.html: Removed.
* contentfiltering/block-never-expected.txt: Added.
* contentfiltering/resources/contentfiltering.js: Added testRunner calls to dump as text,
dump frame load callbacks, and dump the back forward list. Changed from loading data: URLs
to file: URLs in the test iframe.

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

4 years ago[Font Loading] The callback passed to document.fonts.ready should always be called
mmaxfield@apple.com [Fri, 8 Jul 2016 19:40:20 +0000 (19:40 +0000)]
[Font Loading] The callback passed to document.fonts.ready should always be called
https://bugs.webkit.org/show_bug.cgi?id=158884

Reviewed by Dean Jackson.

Source/WebCore:

The boolean was simply not being reset when loads start.

Test: fast/text/font-face-set-ready-fire.html

* css/FontFaceSet.cpp:
(WebCore::FontFaceSet::startedLoading):
* css/FontFaceSet.h:

LayoutTests:

* TestExpectations:
* fast/text/font-face-set-ready-fire-expected.txt: Added.
* fast/text/font-face-set-ready-fire.html: Added.

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

4 years agoFix 32-bit build.
andersca@apple.com [Fri, 8 Jul 2016 19:01:05 +0000 (19:01 +0000)]
Fix 32-bit build.

* PluginProcess/mac/PluginProcessShim.mm:

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

4 years agoDumping the object graph doesn't work with verbose GC logging
msaboff@apple.com [Fri, 8 Jul 2016 18:56:31 +0000 (18:56 +0000)]
Dumping the object graph doesn't work with verbose GC logging
https://bugs.webkit.org/show_bug.cgi?id=159569

Reviewed by Mark Lam.

The current object graph logging code tries to revisits the graph.  This doesn't work
correctly and asking around it isn't used.  The only way to dump the true object graph
is to log while we GC and that has obvious performance implications.
Therefore I eliminated GCLogging::dumpObjectGraph() and related code.

* heap/GCLogging.cpp:
(JSC::GCLogging::levelAsString):
(JSC::LoggingFunctor::LoggingFunctor): Deleted.
(JSC::LoggingFunctor::~LoggingFunctor): Deleted.
(JSC::LoggingFunctor::operator()): Deleted.
(JSC::LoggingFunctor::log): Deleted.
(JSC::LoggingFunctor::reviveCells): Deleted.
(JSC::LoggingFunctor::returnValue): Deleted.
(JSC::GCLogging::dumpObjectGraph): Deleted.
* heap/Heap.cpp:
(JSC::Heap::didFinishCollection):

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

4 years agoRebaseline fast/shadow-dom/trusted-event-scoped-flags.html for ios-simulator after...
ryanhaddad@apple.com [Fri, 8 Jul 2016 18:52:34 +0000 (18:52 +0000)]
Rebaseline fast/shadow-dom/trusted-event-scoped-flags.html for ios-simulator after r202953.

Unreviewed test gardening.

* platform/ios-simulator/fast/shadow-dom/trusted-event-scoped-flags-expected.txt:

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

4 years agoREGRESSION (r196321): Adobe Reader DC + Safari : Zoom level pulldown is not displayed...
andersca@apple.com [Fri, 8 Jul 2016 18:52:26 +0000 (18:52 +0000)]
REGRESSION (r196321): Adobe Reader DC + Safari : Zoom level pulldown is not displayed at the correct position
https://bugs.webkit.org/show_bug.cgi?id=159531
rdar://problem/26382579

Reviewed by Tim Horton.

There's code in the Adobe Acrobat framework that checks if the main bundle identifier is "com.apple.WebKit.PluginProcess"
and assumes that it's running inside the Adobe Reader app if it's something else. Since we're now using the XPC service
for all plug-ins, the bundle identifier is "com.apple.WebKit.Plugin.64", so the Acrobat framework assumes it's running in the app
and doesn't use any special tricks to show the popup menu.

Work around this by shimming CFStringCompare, and looking for the exact conditions when this can happen and return kCFCompareEqualTo
when all conditions are true.

* PluginProcess/mac/PluginProcessMac.mm:
(WebKit::isAdobeAcrobatAddress):
(WebKit::stringCompare):
(WebKit::initializeShim):
(WebKit::PluginProcess::platformInitializeProcess):
* PluginProcess/mac/PluginProcessShim.h:
* PluginProcess/mac/PluginProcessShim.mm:
(WebKit::shimCFStringCompare):

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

4 years agospeculateTypedArrayIsNotNeutered has an inverted speculation
keith_miller@apple.com [Fri, 8 Jul 2016 18:48:25 +0000 (18:48 +0000)]
speculateTypedArrayIsNotNeutered has an inverted speculation
https://bugs.webkit.org/show_bug.cgi?id=159571

Reviewed by Mark Lam.

For some confusing reason FTLLowerDFGToB3 takes the condition the
speculation wants to be false. This issue caused
typedarray-access-monomorphic-neutered.js to fail on the bots.

* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::speculateTypedArrayIsNotNeutered):

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

4 years agoUnreviewed: Fix case-sensitive filesystem build.
beidson@apple.com [Fri, 8 Jul 2016 18:34:39 +0000 (18:34 +0000)]
Unreviewed: Fix case-sensitive filesystem build.

* UIProcess/Storage/LocalStorageDatabaseTracker.cpp:

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

4 years agoUnreviewed, rolling out r202944.
commit-queue@webkit.org [Fri, 8 Jul 2016 18:22:46 +0000 (18:22 +0000)]
Unreviewed, rolling out r202944.
https://bugs.webkit.org/show_bug.cgi?id=159570

caused some tests to crash under GuardMalloc (Requested by
estes on #webkit).

Reverted changeset:

"[Content Filtering] Load blocked pages more like other error
pages are loaded"
https://bugs.webkit.org/show_bug.cgi?id=159485
http://trac.webkit.org/changeset/202944

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

4 years agoAX: Eliminate test noise from roles-computedRoleString.html
jdiggs@igalia.com [Fri, 8 Jul 2016 18:01:55 +0000 (18:01 +0000)]
AX: Eliminate test noise from roles-computedRoleString.html
https://bugs.webkit.org/show_bug.cgi?id=159563

Reviewed by Chris Fleizach.

Ensure we hide all the content, as the test intends to do.

* accessibility/roles-computedRoleString-expected.txt: Updated.
* accessibility/roles-computedRoleString.html: Updated.
* platform/gtk/accessibility/roles-computedRoleString-expected.txt: Updated.

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

4 years agoAdd always-on logging for downloads
krollin@apple.com [Fri, 8 Jul 2016 17:54:39 +0000 (17:54 +0000)]
Add always-on logging for downloads
https://bugs.webkit.org/show_bug.cgi?id=159521
<rdar://problem/26630645>

Reviewed by Alex Christensen.

Add logging statements that track when a download starts, when it
first receives data, and when the download is done (due to completion,
cancelation, or failure).

* NetworkProcess/Downloads/Download.cpp:
(WebKit::Download::Download):
(WebKit::Download::didReceiveResponse):
(WebKit::Download::didReceiveData):
(WebKit::Download::didFinish):
(WebKit::Download::didFail):
(WebKit::Download::didCancel):
(WebKit::Download::isAlwaysOnLoggingAllowed):
* NetworkProcess/Downloads/Download.h:
(WebKit::Download::Download):
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:dataTask:didBecomeDownloadTask:]):

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

4 years agoRename jsCPUStackLimit to osStackLimitWithReserve and jsEmulatedStackLimit to cloopSt...
mark.lam@apple.com [Fri, 8 Jul 2016 17:54:38 +0000 (17:54 +0000)]
Rename jsCPUStackLimit to osStackLimitWithReserve and jsEmulatedStackLimit to cloopStackLimit.
https://bugs.webkit.org/show_bug.cgi?id=159544

Reviewed by Geoffrey Garen.

This patch does the following refactoring:
1. Rename jsCPUStackLimit to osStackLimitWithReserve.
2. Rename jsEmulatedStackLimit to cloopStackLimit.
2. Remove llintStackLimit (which previously is either an alias for
   jsCPUStackLimit or jsEmulatedStackLimit depending on whether we have a JIT or
   C Loop build).  Instead, we'll change the LLINT to conditionally use the
   osStackLimitWithReserve or cloopStackLimit.

There are no semantic changes.

* dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::compile):
(JSC::DFG::JITCompiler::compileFunction):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::lower):
* interpreter/JSStack.cpp:
(JSC::JSStack::JSStack):
(JSC::JSStack::growSlowCase):
(JSC::JSStack::lowAddress):
(JSC::JSStack::highAddress):
* interpreter/JSStack.h:
* interpreter/JSStackInlines.h:
(JSC::JSStack::ensureCapacityFor):
(JSC::JSStack::shrink):
(JSC::JSStack::grow):
(JSC::JSStack::setCLoopStackLimit):
(JSC::JSStack::setJSEmulatedStackLimit): Deleted.
* jit/JIT.cpp:
(JSC::JIT::compileWithoutLinking):
* jit/SetupVarargsFrame.cpp:
(JSC::emitSetupVarargsFrameFastCase):
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
* llint/LowLevelInterpreter.asm:
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* runtime/RegExp.cpp:
(JSC::RegExp::finishCreation):
(JSC::RegExp::compile):
(JSC::RegExp::compileMatchOnly):
* runtime/VM.cpp:
(JSC::VM::updateStackLimit):
* runtime/VM.h:
(JSC::VM::reservedZoneSize):
(JSC::VM::osStackLimitWithReserve):
(JSC::VM::addressOfOSStackLimitWithReserve):
(JSC::VM::cloopStackLimit):
(JSC::VM::setCLoopStackLimit):
(JSC::VM::isSafeToRecurse):
(JSC::VM::jsCPUStackLimit): Deleted.
(JSC::VM::addressOfJSCPUStackLimit): Deleted.
(JSC::VM::jsEmulatedStackLimit): Deleted.
(JSC::VM::setJSEmulatedStackLimit): Deleted.
* wasm/WASMFunctionCompiler.h:
(JSC::WASMFunctionCompiler::startFunction):

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

4 years agoRemove mrobinson from the MathML watchlist
commit-queue@webkit.org [Fri, 8 Jul 2016 17:52:31 +0000 (17:52 +0000)]
Remove mrobinson from the MathML watchlist
https://bugs.webkit.org/show_bug.cgi?id=159559

Patch by Martin Robinson <mrobinson@igalia.com> on 2016-07-08
Reviewed by Philippe Normand.

* Scripts/webkitpy/common/config/watchlist: Remove my email from the watchlist.

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

4 years agoMarking some mathml tests as timeouts after r202983.
ryanhaddad@apple.com [Fri, 8 Jul 2016 17:42:46 +0000 (17:42 +0000)]
Marking some mathml tests as timeouts after r202983.

Unreviewed test gardening.

* TestExpectations:

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

4 years agoUnreviewed, rolling out r202799.
commit-queue@webkit.org [Fri, 8 Jul 2016 17:17:42 +0000 (17:17 +0000)]
Unreviewed, rolling out r202799.
https://bugs.webkit.org/show_bug.cgi?id=159568

Caused build failure (Requested by perarne on #webkit).

Reverted changeset:

"[Win] DLLs are missing version information."
https://bugs.webkit.org/show_bug.cgi?id=159349
http://trac.webkit.org/changeset/202799

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

4 years agoBuilt-in generator should generate files with a default copyright
commit-queue@webkit.org [Fri, 8 Jul 2016 17:15:00 +0000 (17:15 +0000)]
Built-in generator should generate files with a default copyright
https://bugs.webkit.org/show_bug.cgi?id=159561

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

* Scripts/builtins/builtins_model.py:
(BuiltinsCollection._parse_copyright_lines): Adding default copyright to the parsed copyrights.
* Scripts/builtins/builtins_templates.py:
(BuiltinsGeneratorTemplates): Adding a default copyright.
* Scripts/tests/builtins/expected/JavaScriptCore-Builtin.Promise-Combined.js-result: Rebasing with added default copyright.
* Scripts/tests/builtins/expected/JavaScriptCore-Builtin.Promise-Separate.js-result: Ditto.
* Scripts/tests/builtins/expected/JavaScriptCore-Builtin.prototype-Combined.js-result: Ditto.
* Scripts/tests/builtins/expected/JavaScriptCore-Builtin.prototype-Separate.js-result: Ditto.
* Scripts/tests/builtins/expected/JavaScriptCore-BuiltinConstructor-Combined.js-result: Ditto.
* Scripts/tests/builtins/expected/JavaScriptCore-BuiltinConstructor-Separate.js-result: Ditto.
* Scripts/tests/builtins/expected/JavaScriptCore-InternalClashingNames-Combined.js-result: Ditto.
* Scripts/tests/builtins/expected/WebCore-ArbitraryConditionalGuard-Separate.js-result: Ditto.
* Scripts/tests/builtins/expected/WebCore-GuardedBuiltin-Separate.js-result: Ditto.
* Scripts/tests/builtins/expected/WebCore-GuardedInternalBuiltin-Separate.js-result: Ditto.
* Scripts/tests/builtins/expected/WebCore-UnguardedBuiltin-Separate.js-result: Ditto.
* Scripts/tests/builtins/expected/WebCore-xmlCasingTest-Separate.js-result: Ditto.

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

4 years agoRegression(r201805): Crash with <use> resource that has Vary header
antti@apple.com [Fri, 8 Jul 2016 17:11:20 +0000 (17:11 +0000)]
Regression(r201805): Crash with <use> resource that has Vary header
https://bugs.webkit.org/show_bug.cgi?id=159560
<rdar://problem/27034208>

Reviewed by Chris Dumez.

Source/WebCore:

In some situations (SVG <use> element for example) we may try to load resources from frameless documents.
Such loads always fail. The new vary header verification code path tried to access the frame earlier without
null check.

Test: http/tests/cache/vary-frameless-document.html

* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::failBeforeStarting):
(WebCore::addAdditionalRequestHeadersToRequest):

    Null check frame.
    Also move the resource type check here so all callers get the same behavior.

(WebCore::CachedResource::addAdditionalRequestHeaders):
(WebCore::CachedResource::load):
(WebCore::CachedResource::varyHeaderValuesMatch):

LayoutTests:

* http/tests/cache/resources/svg-defs-vary.php: Added.
* http/tests/cache/vary-frameless-document-expected.txt: Added.
* http/tests/cache/vary-frameless-document.html: Added.

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

4 years agoClearing LocalStorage doesn't also delete -wal and -shm files.
beidson@apple.com [Fri, 8 Jul 2016 17:03:12 +0000 (17:03 +0000)]
Clearing LocalStorage doesn't also delete -wal and -shm files.
<rdar://problem/27206772> and https://bugs.webkit.org/show_bug.cgi?id=159566

Reviewed by Brent Fulgham.
Also helpfully picked over by Andy "Never Forgets" Estes.

Source/WebCore:

Covered by new API test.

* WebCore.xcodeproj/project.pbxproj:

* platform/sql/SQLiteFileSystem.h:

Source/WebKit2:

* UIProcess/Storage/LocalStorageDatabaseTracker.cpp:
(WebKit::LocalStorageDatabaseTracker::removeDatabaseWithOriginIdentifier):

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit2Cocoa/LocalStorageClear.html: Added.
* TestWebKitAPI/Tests/WebKit2Cocoa/LocalStorageClear.mm: Added.

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

4 years agoUnreviewed, rolling out r202945.
ryanhaddad@apple.com [Fri, 8 Jul 2016 16:42:20 +0000 (16:42 +0000)]
Unreviewed, rolling out r202945.
https://bugs.webkit.org/show_bug.cgi?id=159565

The test for this change is failing on all platforms.
(Requested by ryanhaddad on #webkit).

Reverted changeset:

"[Font Loading] The callback passed to document.fonts.ready
should always be called"
https://bugs.webkit.org/show_bug.cgi?id=158884
http://trac.webkit.org/changeset/202945

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

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

4 years agoTypedArrays need more isNeutered checks.
keith_miller@apple.com [Fri, 8 Jul 2016 16:27:35 +0000 (16:27 +0000)]
TypedArrays need more isNeutered checks.
https://bugs.webkit.org/show_bug.cgi?id=159231

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

According to the ES6 spec if a user tries to get, set, or define a
property on a neutered TypedArray we should throw an
exception. Currently, if a user tries to get an out of bounds
access on a TypedArray we will always OSR.  This makes handling
the exception easy as all we need to do is make out of bounds gets
in PolymorphicAccess go to the slow path, which will then throw
the appropriate exception. For the case of set, we need ensure we
don't OSR on each out of bounds put since, for some confusing
reason, people do this.  Thus, for GetByVal in the DFG/FTL if the
user accesses out of bounds we then need to check if the view has
been neutered. If it is neutered then we will OSR.

Additionally, this patch adds a bunch of isNeutered checks to
various prototype functions for TypedArray, which are needed for
correctness.

* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::jumpForTypedArrayIsNeuteredIfOutOfBounds):
(JSC::DFG::SpeculativeJIT::compilePutByValForIntTypedArray):
(JSC::DFG::SpeculativeJIT::compilePutByValForFloatTypedArray):
* dfg/DFGSpeculativeJIT.h:
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compilePutByVal):
(JSC::FTL::DFG::LowerDFGToB3::speculateTypedArrayIsNotNeutered):
* jit/JITPropertyAccess.cpp:
(JSC::JIT::emitIntTypedArrayPutByVal):
(JSC::JIT::emitFloatTypedArrayPutByVal):
* runtime/JSArrayBufferView.h:
* runtime/JSCJSValue.h:
(JSC::encodedJSUndefined):
(JSC::encodedJSValue):
* runtime/JSGenericTypedArrayView.h:
* runtime/JSGenericTypedArrayViewInlines.h:
(JSC::JSGenericTypedArrayView<Adaptor>::throwNeuteredTypedArrayTypeError):
(JSC::JSGenericTypedArrayView<Adaptor>::getOwnPropertySlot):
(JSC::JSGenericTypedArrayView<Adaptor>::put):
(JSC::JSGenericTypedArrayView<Adaptor>::defineOwnProperty):
(JSC::JSGenericTypedArrayView<Adaptor>::deleteProperty):
(JSC::JSGenericTypedArrayView<Adaptor>::getOwnPropertySlotByIndex):
(JSC::JSGenericTypedArrayView<Adaptor>::putByIndex):
(JSC::JSGenericTypedArrayView<Adaptor>::deletePropertyByIndex):
* runtime/JSGenericTypedArrayViewPrototypeFunctions.h:
(JSC::genericTypedArrayViewProtoFuncCopyWithin):
(JSC::genericTypedArrayViewProtoFuncFill):
(JSC::genericTypedArrayViewProtoFuncIndexOf):
(JSC::genericTypedArrayViewProtoFuncJoin):
(JSC::genericTypedArrayViewProtoFuncLastIndexOf):
(JSC::genericTypedArrayViewProtoFuncSlice):
(JSC::genericTypedArrayViewProtoFuncSubarray):
* tests/stress/fold-typed-array-properties.js:
* tests/stress/typedarray-access-monomorphic-neutered.js: Added.
(check):
(test):
(testFTL):
* tests/stress/typedarray-access-neutered.js: Added.
(check):
(test):
* tests/stress/typedarray-functions-with-neutered.js:
(defaultForArg):
(callWithArgs):
(checkArgumentsForType):
(checkArguments):
* tests/stress/typedarray-view-string-properties-neutered.js: Added.
(call):
(test):

LayoutTests:

Update tests that assert that we can access indexed properties on
a neutered TypedArray.

* fast/canvas/webgl/script-tests/arraybuffer-transfer-of-control.js:
(assertViewClosed):
* js/dom/dfg-typed-array-neuter-expected.txt:
* js/dom/script-tests/dfg-typed-array-neuter.js:

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

4 years agoExecState should be passed by reference in JS bindings generator for custom constructors
nael.ouedraogo@crf.canon.fr [Fri, 8 Jul 2016 15:52:57 +0000 (15:52 +0000)]
ExecState should be passed by reference in JS bindings generator for custom constructors
https://bugs.webkit.org/show_bug.cgi?id=159357

Reviewed by Youenn Fablet.

Pass ExecState as a reference instead of pointer in JS bindings
code for custom constructors.

* bindings/js/JSAudioContextCustom.cpp:
(WebCore::constructJSAudioContext):
* bindings/js/JSBlobCustom.cpp:
(WebCore::constructJSBlob):
* bindings/js/JSDOMFormDataCustom.cpp:
(WebCore::constructJSDOMFormData):
(WebCore::JSDOMFormData::append):
* bindings/js/JSDataCueCustom.cpp:
(WebCore::constructJSDataCue):
* bindings/js/JSFileCustom.cpp:
(WebCore::constructJSFile):
* bindings/js/JSHTMLElementCustom.cpp:
(WebCore::constructJSHTMLElement):
* bindings/js/JSMediaSessionCustom.cpp:
(WebCore::constructJSMediaSession):
* bindings/js/JSMutationObserverCustom.cpp:
(WebCore::constructJSMutationObserver):
* bindings/js/JSReadableStreamPrivateConstructors.cpp:
(WebCore::constructJSReadableStreamController):
(WebCore::constructJSReadableStreamReader):
* bindings/js/JSWebKitPointCustom.cpp:
(WebCore::constructJSWebKitPoint):
* bindings/js/JSWorkerCustom.cpp:
(WebCore::constructJSWorker):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateHeader):
(GenerateConstructorDefinition):
* bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:
(WebCore::JSTestCustomConstructorWithNoInterfaceObjectConstructor::construct):
* bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h:

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

4 years agoExpose crossOrigin attribute as a static property in HTMLMediaElement
cdumez@apple.com [Fri, 8 Jul 2016 15:48:23 +0000 (15:48 +0000)]
Expose crossOrigin attribute as a static property in HTMLMediaElement
https://bugs.webkit.org/show_bug.cgi?id=159459

Patch by Olivier Blin <olivier.blin@softathome.com> on 2016-07-08
Reviewed by Chris Dumez.

The crossOrigin attribute is already used for MediaResourceLoader
(r119742 and r175050), but it was not exposed as a static property.

This fixes VR360 support in Dailymotion, since it uses the "in"
operator to detect if crossOrigin is supported by the
HTMLVideoElement, in order to enable VR360.

No new tests, rebaselined existing tests, 150 WPT tests are fixed.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::setCrossOrigin):
(WebCore::HTMLMediaElement::crossOrigin):
* html/HTMLMediaElement.h:
* html/HTMLMediaElement.idl:

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

4 years agoUse Fraction* parameters from the OpenType MATH table
fred.wang@free.fr [Fri, 8 Jul 2016 15:30:50 +0000 (15:30 +0000)]
Use Fraction* parameters from the OpenType MATH table
https://bugs.webkit.org/show_bug.cgi?id=155639

Source/WebCore:

Patch by Frederic Wang <fwang@igalia.com> on 2016-03-20
Reviewed by Brent Fulgham.

We improve the RenderMathMLFraction so minimal vertical shifts and gaps
from the MATH table (or arbitrary fallback) are used for fractions.
We also change the interpretation of "thick" and "thin" linethickness values
to match Gecko's behavior and the one suggested in the MathML in HTML5 implementation note.

Test: imported/mathml-in-html5/mathml/presentation-markup/fractions/frac-parameters-1.html

* rendering/mathml/MathMLStyle.cpp:
(WebCore::MathMLStyle::updateStyleIfNeeded): set NeedsLayout after displaystyle change
so that dynamic MathML tests still work.
* rendering/mathml/RenderMathMLFraction.cpp:
(WebCore::RenderMathMLFraction::RenderMathMLFraction): Init LayoutUnit members to zero.
(WebCore::RenderMathMLFraction::updateFromElement):
Set new members for fraction gaps and shifts using Fraction* constants or some fallback
values. Change the interpretation of "thick" and "thin".
(WebCore::RenderMathMLFraction::layoutBlock): Use new constants affecting vertical
positions of numerator and denominator.
(WebCore::RenderMathMLFraction::paint): Use m_ascent to set the vertical position
of the fraction bar.
(WebCore::RenderMathMLFraction::firstLineBaseline): We just return m_ascent.
* rendering/mathml/RenderMathMLFraction.h: Make updateFromElement public so that
it can be used in MathMLStyle. Add LayoutUnit members for the ascent of the fraction
and for minimal shifts/gaps values.

LayoutTests:

Patch by Frederic Wang <fwang@igalia.com> on 2016-07-08
Reviewed by Brent Fulgham.

We import a test from the MathML in HTML5 test suite to verify Fraction* parameters.
We also do some small test adjustments.

* TestExpectations: We disable fractions-positions.html for now until it is replaced with a more reliable test.
* imported/mathml-in-html5/fonts/math/fraction-axisheight7000-rulethickness1000.woff: Added.
* imported/mathml-in-html5/fonts/math/fraction-denominatordisplaystylegapmin5000-rulethickness1000.woff: Added.
* imported/mathml-in-html5/fonts/math/fraction-denominatordisplaystyleshiftdown6000-rulethickness1000.woff: Added.
* imported/mathml-in-html5/fonts/math/fraction-denominatorgapmin4000-rulethickness1000.woff: Added.
* imported/mathml-in-html5/fonts/math/fraction-denominatorshiftdown3000-rulethickness1000.woff: Added.
* imported/mathml-in-html5/fonts/math/fraction-numeratordisplaystylegapmin8000-rulethickness1000.woff: Added.
* imported/mathml-in-html5/fonts/math/fraction-numeratordisplaystyleshiftup2000-rulethickness1000.woff: Added.
* imported/mathml-in-html5/fonts/math/fraction-numeratorgapmin9000-rulethickness1000.woff: Added.
* imported/mathml-in-html5/fonts/math/fraction-numeratorshiftup11000-rulethickness1000.woff: Added.
* imported/mathml-in-html5/fonts/math/fraction-rulethickness10000.woff: Added.
* imported/mathml-in-html5/mathml/presentation-markup/fractions/frac-parameters-1-expected.txt: Added.
* imported/mathml-in-html5/mathml/presentation-markup/fractions/frac-parameters-1.html: Added.
* mathml/presentation/fractions-linethickness-expected.html: Adjust the test to interpret
"thick" and "thin" as suggested the MathML in HTML5 implementation note.
* mathml/presentation/stretchy-depth-height-symmetric.html: Increase error tolerance.
* platform/gtk/mathml/presentation/roots-expected.png: Handle small rendering changes.
* platform/gtk/mathml/presentation/roots-expected.txt: Ditto.
* platform/ios-simulator/mathml/presentation/roots-expected.txt: Ditto.
* platform/mac/mathml/presentation/roots-expected.txt: Ditto.

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

4 years agoRemoved Qt leftovers from Tools.
annulen@yandex.ru [Fri, 8 Jul 2016 15:03:20 +0000 (15:03 +0000)]
Removed Qt leftovers from Tools.
https://bugs.webkit.org/show_bug.cgi?id=159557

Reviewed by Csaba Osztrogonác.

* BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
Removed 'qt' platform config.
* Scripts/webkitpy/common/net/bugzilla/bug.py:
Deleted non-functional e-mail address.

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

4 years agoUse Radical* constants from the OpenType MATH table.
fred.wang@free.fr [Fri, 8 Jul 2016 13:05:18 +0000 (13:05 +0000)]
Use Radical* constants from the OpenType MATH table.
https://bugs.webkit.org/show_bug.cgi?id=155638

Patch by Frederic Wang <fwang@igalia.com> on 2016-07-08
Reviewed by Brent Fulgham.

Source/WebCore:

Test: mathml/mathml-in-html5/root-parameters-1.html

We make the radical vertical gap depends on displaystyle.
This is the only remaining step to use all the Radical* constants from the MATH table.
We also introduce a ruleThicknessFallback function for future use.

* rendering/mathml/RenderMathMLBlock.h:
(WebCore::RenderMathMLBlock::ruleThicknessFallback): Add this helper function since that
calculation is used in several places.
* rendering/mathml/RenderMathMLRoot.cpp:
(WebCore::RenderMathMLRoot::updateStyle): Reorganize the way we set constant parameters,
add more comments and take into account the displaystyle for the vertical gap.

LayoutTests:

Import a test from the MathML in HTML5 test suite to verify all the Radical* parameters.
For test RadicalDegreeBottomRaisePercent, WebKit's drawing of one of the radical sign
is weird. This causes unexpected height of the radical and a fortiori wrong vertical
position of the index. For now, we tweak that height to make the test pass.

* imported/mathml-in-html5/fonts/radical-degreebottomraisepercent25-rulethickness1000.woff: Added.
* imported/mathml-in-html5/fonts/radical-displaystyleverticalgap7000-rulethickness1000.woff: Added.
* imported/mathml-in-html5/fonts/radical-extraascender3000-rulethickness1000.woff: Added.
* imported/mathml-in-html5/fonts/radical-kernafterdegreeminus5000-rulethickness1000.woff: Added.
* imported/mathml-in-html5/fonts/radical-kernbeforedegree4000-rulethickness1000.woff: Added.
* imported/mathml-in-html5/fonts/radical-rulethickness8000.woff: Added.
* imported/mathml-in-html5/fonts/radical-verticalgap6000-rulethickness1000.woff: Added.
* imported/mathml-in-html5/mathml/presentation-markup/radicals/root-parameters-1-expected.txt: Added.
* imported/mathml-in-html5/mathml/presentation-markup/radicals/root-parameters-1.html: Added.
* platform/gtk/mathml/radical-fallback-expected.png: Updated to take into account new rendering.
* platform/gtk/mathml/radical-fallback-expected.txt: Ditto.
* platform/mac/mathml/presentation/mo-stretch-expected.txt: Ditto.
* platform/mac/mathml/presentation/roots-expected.txt: Ditto.
* platform/mac/mathml/radical-fallback-expected.txt: Ditto.
* platform/ios-simulator/mathml/presentation/mo-stretch-expected.txt: Ditto.
* platform/ios-simulator/mathml/presentation/roots-expected.txt: Ditto.
* platform/ios-simulator/mathml/radical-fallback-expected.txt: Ditto.

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

4 years agoUnreviewed, rolling out r202967.
commit-queue@webkit.org [Fri, 8 Jul 2016 12:22:31 +0000 (12:22 +0000)]
Unreviewed, rolling out r202967.
https://bugs.webkit.org/show_bug.cgi?id=159556

This patch caused crashes in https tests on Windows (Requested
by perarne on #webkit).

Reverted changeset:

"[Win] The test http/tests/security/contentSecurityPolicy
/upgrade-insecure-requests/basic-upgrade.https.html is
failing."
https://bugs.webkit.org/show_bug.cgi?id=159510
http://trac.webkit.org/changeset/202967

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

4 years agoGenerate WebCore builtin wrapper files
commit-queue@webkit.org [Fri, 8 Jul 2016 10:42:25 +0000 (10:42 +0000)]
Generate WebCore builtin wrapper files
https://bugs.webkit.org/show_bug.cgi?id=159461

Patch by Youenn Fablet <youenn@apple.com> on 2016-07-08
Reviewed by Brian Burg.

Source/JavaScriptCore:

Updating builtin generator to generate wrapper files used in WebCore (See WebCore change log).
Rebasing builtins generator test results according generator changes by activating wrapper file generation for
WebCore builtins tests.

* CMakeLists.txt:
* DerivedSources.make:
* JavaScriptCore.xcodeproj/project.pbxproj:
* Scripts/builtins/builtins.py: Adding new generators.
* Scripts/builtins/builtins_generate_internals_wrapper_header.py: Added to generate WebCoreJSBuiltinInternals.h.
* Scripts/builtins/builtins_generate_internals_wrapper_implementation.py: Added to generate WebCoreJSBuiltinInternals.cpp.
* Scripts/builtins/builtins_generate_wrapper_header.py: Added to generate WebCoreJSBuiltins.h.
* Scripts/builtins/builtins_generate_wrapper_implementation.py: Added to generate WebCoreJSBuiltins.cpp.
* Scripts/generate-js-builtins.py: Adding new option to activate generation of the wrapper files.
(generate_bindings_for_builtins_files):
* Scripts/tests/builtins/expected/WebCore-ArbitraryConditionalGuard-Separate.js-result:
* Scripts/tests/builtins/expected/WebCore-GuardedBuiltin-Separate.js-result:
* Scripts/tests/builtins/expected/WebCore-GuardedInternalBuiltin-Separate.js-result:
* Scripts/tests/builtins/expected/WebCore-UnguardedBuiltin-Separate.js-result:
* Scripts/tests/builtins/expected/WebCore-xmlCasingTest-Separate.js-result:

Source/WebCore:

No change of behavior.

Updating build system to handle new built-in generators without modifying WebCoreJSBuiltins* files.
The generator is now passed all built-ins at once so that wrapper files can be generated.
Removing WebCoreJSBuiltins* checked-in wrapper files.

* CMakeLists.txt:
* DerivedSources.make:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSDOMGlobalObject.cpp:
(WebCore::JSDOMGlobalObject::addBuiltinGlobals):
* bindings/js/JSDOMGlobalObject.h:
* bindings/js/WebCoreJSBuiltinInternals.cpp: Removed.
* bindings/js/WebCoreJSBuiltinInternals.h: Removed.
* bindings/js/WebCoreJSBuiltins.cpp: Removed.
* bindings/js/WebCoreJSBuiltins.h: Removed.

Tools:

* Scripts/webkitpy/codegen/main.py:
(BuiltinsGeneratorTests.generate_from_js_builtins): Adding generate_wrapper option.
(BuiltinsGeneratorTests.run_tests): Using this option in WebCore test cases.

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

4 years ago[css-grid] Inline size is never indefinite during layout
rego@igalia.com [Fri, 8 Jul 2016 10:11:10 +0000 (10:11 +0000)]
[css-grid] Inline size is never indefinite during layout
https://bugs.webkit.org/show_bug.cgi?id=159253

Reviewed by Sergio Villar Senin.

Source/WebCore:

The issue is that the inline size of the grid container
is only indefinite while we're computing the intrinsic sizes.
During layout we should be able to resolve the percentage tracks
against that size. This makes Grid Layout compatible with regular blocks
regarding how inline percentages are resolved.

The patch passes the SizingOperation enum to RenderGrid::gridTrackSize().
That way we can know if we're computing the intrinsic sizes or not.

Test: fast/css-grid-layout/grid-container-percentage-columns.html

* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::computeTrackSizesForDirection):
(WebCore::RenderGrid::computeIntrinsicLogicalWidths):
(WebCore::RenderGrid::computeIntrinsicLogicalHeight):
(WebCore::RenderGrid::computeUsedBreadthOfGridTracks):
(WebCore::RenderGrid::gridTrackSize):
(WebCore::RenderGrid::minSizeForChild):
(WebCore::RenderGrid::spanningItemCrossesFlexibleSizedTracks):
(WebCore::RenderGrid::resolveContentBasedTrackSizingFunctions):
(WebCore::RenderGrid::resolveContentBasedTrackSizingFunctionsForNonSpanningItems):
(WebCore::RenderGrid::tracksAreWiderThanMinTrackBreadth):
(WebCore::RenderGrid::rawGridTrackSize): Deleted.
* rendering/RenderGrid.h:

LayoutTests:

Created a new test verifying the expected behavior. Updated the results
in a few tests too.

* fast/css-grid-layout/grid-columns-rows-get-set-expected.txt:
* fast/css-grid-layout/grid-columns-rows-get-set-multiple-expected.txt:
* fast/css-grid-layout/grid-columns-rows-get-set-multiple.html:
* fast/css-grid-layout/grid-columns-rows-get-set.html:
* fast/css-grid-layout/grid-container-percentage-columns-expected.txt: Added.
* fast/css-grid-layout/grid-container-percentage-columns.html: Added.
* fast/css-grid-layout/named-grid-line-get-set-expected.txt:
* fast/css-grid-layout/named-grid-line-get-set.html:
* fast/css-grid-layout/percent-track-breadths-regarding-container-size-expected.txt:
* fast/css-grid-layout/percent-track-breadths-regarding-container-size.html:
The results of this test now show some FAIL messages becase of a bug in
RenderBox::hasDefiniteLogicalHeight() (http://webkit.org/b/159251).
* fast/css-grid-layout/resources/grid-columns-rows-get-set-multiple.js:
* fast/css-grid-layout/resources/grid-columns-rows-get-set.js:

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

4 years agoUse OpenType MATH constant AxisHeight.
fred.wang@free.fr [Fri, 8 Jul 2016 09:37:57 +0000 (09:37 +0000)]
Use OpenType MATH constant AxisHeight.
https://bugs.webkit.org/show_bug.cgi?id=133567

Patch by Frederic Wang <fwang@igalia.com> on 2016-07-08
Reviewed by Brent Fulgham.

Source/WebCore:

We make RenderMathMLOperator and RenderMathMLTable use the OpenType MATH constant AxisHeight.
These are the only remaining cases to handle since RenderMathMLFraction already uses that constant.

Tests: imported/mathml-in-html5/mathml/presentation-markup/operators/mo-axis-height-1.html
      imported/mathml-in-html5/mathml/presentation-markup/tables/table-axis-height.html

* rendering/mathml/RenderMathMLBlock.cpp: Make RenderMathMLTable use the math axis
for its vertical alignment and update a bit the comments.
(WebCore::axisHeight): Move the code in a static function that can be called by
RenderMathMLBlock and RenderMathMLTable.
(WebCore::RenderMathMLBlock::mathAxisHeight): Use axisHeight.
(WebCore::RenderMathMLTable::firstLineBaseline): Ditto.
* rendering/mathml/RenderMathMLOperator.cpp:
(WebCore::RenderMathMLOperator::stretchTo):

LayoutTests:

Import tests from the MathML in HTML5 test suite to verify the AxisHeight parameter.

* imported/mathml-in-html5/fonts/math/axisheight5000-verticalarrow14000.woff: Added.
* imported/mathml-in-html5/mathml/presentation-markup/operators/mo-axis-height-1-expected.txt: Added.
* imported/mathml-in-html5/mathml/presentation-markup/operators/mo-axis-height-1.html: Added.
* imported/mathml-in-html5/mathml/presentation-markup/tables/table-axis-height.html: Added.
* imported/mathml-in-html5/mathml/presentation-markup/operators/mo-axis-height-expected.txt: Added.

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

4 years ago[css-grid] Disallow repeat() in grid-template shorthand
rego@igalia.com [Fri, 8 Jul 2016 08:57:50 +0000 (08:57 +0000)]
[css-grid] Disallow repeat() in grid-template shorthand
https://bugs.webkit.org/show_bug.cgi?id=159200

Reviewed by Sergio Villar Senin.

Source/WebCore:

As discussed on www-style, "repeat()" notation shouldn't be allowed
in the ASCII branch of the grid-template shorthand.
https://lists.w3.org/Archives/Public/www-style/2016May/0193.html

The patch uses an enum to invalidate "repeat()" when parsing
the grid-template shorthand.

Test: fast/css-grid-layout/grid-template-shorthand-get-set.html

* css/CSSParser.cpp:
(WebCore::CSSParser::parseGridTemplateColumns): Add enum.
(WebCore::CSSParser::parseGridTemplateRowsAndAreasAndColumns): Pass "DisallowRepeat"
when calling parseGridTemplateColumns().
(WebCore::CSSParser::parseGridTrackList): Use enum to allow/disallow repeat.
* css/CSSParser.h: Define the new enum and modify method signatures to use it,
setting it to "AllowRepeat" by default.

LayoutTests:

Modified test to follow the new behavior including new cases.

* fast/css-grid-layout/grid-template-shorthand-get-set-expected.txt:
* fast/css-grid-layout/grid-template-shorthand-get-set.html:

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

4 years agoDefine DYLD_MACOSX_VERSION_10_12
jiewen_tan@apple.com [Fri, 8 Jul 2016 07:17:17 +0000 (07:17 +0000)]
Define DYLD_MACOSX_VERSION_10_12
https://bugs.webkit.org/show_bug.cgi?id=159525
<rdar://problem/26250296>

Reviewed by Brent Fulgham.

Source/WebKit/mac:

* WebView/WebView.mm:
(shouldConvertInvalidURLsToBlank):
Replace 0x000A0C00 with DYLD_MACOSX_VERSION_10_12.

Source/WTF:

* wtf/spi/darwin/dyldSPI.h:

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

4 years agoAdd support for movablelimits.
fred.wang@free.fr [Fri, 8 Jul 2016 07:15:24 +0000 (07:15 +0000)]
Add support for movablelimits.
https://bugs.webkit.org/show_bug.cgi?id=155542

Patch by Frederic Wang <fwang@igalia.com> on 2016-07-08
Reviewed by Brent Fulgham.

Source/WebCore:

Tests: mathml/presentation/displaystyle-1.html
       mathml/presentation/displaystyle-2.html
       mathml/presentation/displaystyle-3.html
       mathml/presentation/mo-movablelimits-default.html
       mathml/presentation/mo-movablelimits-dynamic.html
       mathml/presentation/mo-movablelimits.html

* mathml/MathMLTextElement.cpp:
(WebCore::MathMLTextElement::parseAttribute): Take into account change of movablelimits.
* rendering/mathml/MathMLOperatorDictionary.h: Remove FIXME comment.
* rendering/mathml/MathMLStyle.cpp:
(WebCore::MathMLStyle::updateStyleIfNeeded): Force relayout and width computation when a
displaystyle value change.
* rendering/mathml/RenderMathMLOperator.h:
(WebCore::RenderMathMLOperator::shouldMoveLimits): Helper function to test if the operator
should have his limits moved when used as a base of munder/mover/munderover.
* rendering/mathml/RenderMathMLScripts.cpp: Allow munderover/munder/mover elements to use
this class and take the same behavior as the corresponding msubsup/msub/sup except for
the *scriptshift attributes.
(WebCore::RenderMathMLScripts::RenderMathMLScripts):
(WebCore::RenderMathMLScripts::getBaseAndScripts):
(WebCore::RenderMathMLScripts::computePreferredLogicalWidths):
(WebCore::RenderMathMLScripts::getScriptMetricsAndLayoutIfNeeded):
(WebCore::RenderMathMLScripts::layoutBlock):
* rendering/mathml/RenderMathMLScripts.h: Allow some members to be accessible/overridden
by RenderMathMLUnderOver and add munderover/munder/mover in the kind.
* rendering/mathml/RenderMathMLUnderOver.cpp:
(WebCore::RenderMathMLUnderOver::RenderMathMLUnderOver): We use the code from
RenderMathMLScripts to initialize m_kind.
(WebCore::RenderMathMLUnderOver::shouldMoveLimits): New function to determine if the base
should move its limits.
(WebCore::RenderMathMLUnderOver::computePreferredLogicalWidths): We use the code from
RenderMathMLScripts when the base should move its limits.
(WebCore::RenderMathMLUnderOver::layoutBlock): We use the code from RenderMathMLScripts when
the base should move its limits. Also improve the early return for invalid markup.
(WebCore::RenderMathMLUnderOver::unembellishedOperator): Deleted. We use the code from RenderMathMLScripts.
(WebCore::RenderMathMLUnderOver::firstLineBaseline): Deleted. We use the code from RenderMathMLScripts.
* rendering/mathml/RenderMathMLUnderOver.h: We now inherit from RenderMathMLScripts and can
just remove members that exist in the parent. We define shouldMoveLimits() to determine
when the layout should be done the same as RenderMathMLScripts. For now, we try and be
safe with the rest of the code by continuing to claim that we are not a RenderMathMLScripts.

LayoutTests:

We import some reftests from Mozilla and write more tests in order to verify the effect of
movablelimits. We also adjust one existing test due to change in how munderover handles
invalid markup.

* mathml/presentation/displaystyle-1.html: Added. Imported from Mozilla. This verifies the
inheritance of displaystyle via its effect on movablelimits.
* mathml/presentation/displaystyle-1-expected.html: Added.
* mathml/presentation/displaystyle-2.html: Added. Imported from Mozilla. Test the effect of
displaystyle on munder, mover and munderover with a movablelimits base.
* mathml/presentation/displaystyle-2-expected.html: Added.
* mathml/presentation/displaystyle-3.html: Added. Imported from Mozilla. Test dynamic change
of displaystyle via its effect on movablelimits.
* mathml/presentation/displaystyle-3-expected.html: Added.
* mathml/presentation/mo-movablelimits-default.html: Added. Test that the default
movablelimits value from the operator dictionary is correctly read.
* mathml/presentation/mo-movablelimits-default-expected.html: Added.
* mathml/presentation/mo-movablelimits-dynamic.html: Added. Imported from Mozilla.
Test dynamic change of movablelimits.
* mathml/presentation/mo-movablelimits-dynamic-expected.html: Added.
* mathml/presentation/mo-movablelimits.html: Added. Basic test to check the effect of
movablelimits on munder.
* mathml/presentation/mo-movablelimits-expected.html: Added.
* mathml/presentation/underover-scriptshifts.html: Added. This verifies that script shifts
do not have any effect on munderover/mover/munder elements when their limits are rendered
as postscripts.
* mathml/presentation/underover-scriptshifts-expected.html: Added.

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

4 years ago[EFL] Fix build when media-stream is enabled.
hs85.jeong@samsung.com [Fri, 8 Jul 2016 07:05:07 +0000 (07:05 +0000)]
[EFL] Fix build when media-stream is enabled.
https://bugs.webkit.org/show_bug.cgi?id=159206

Bump up the openwebrtc to find the correct package.

Reviewed by Gyuyoung Kim.

* efl/jhbuild.modules:
* efl/patches/openwebrtc-clang-warning-fix.patch: Removed.

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

4 years agoClean up PassRefPtr in Modules/webaudio
gyuyoung.kim@webkit.org [Fri, 8 Jul 2016 06:32:41 +0000 (06:32 +0000)]
Clean up PassRefPtr in Modules/webaudio
https://bugs.webkit.org/show_bug.cgi?id=159540

Reviewed by Alex Christensen.

Purge PassRefPtr in webaudio directory.

No new tests, no behavior changes.

* Modules/webaudio/AsyncAudioDecoder.h:
* Modules/webaudio/AudioBasicProcessorNode.h:
* Modules/webaudio/AudioBuffer.h:
* Modules/webaudio/AudioBufferSourceNode.h:
* Modules/webaudio/AudioListener.h:
* Modules/webaudio/AudioParam.h:
* Modules/webaudio/AudioParamTimeline.h:
(WebCore::AudioParamTimeline::ParamEvent::ParamEvent):
* Modules/webaudio/AudioProcessingEvent.cpp:
(WebCore::AudioProcessingEvent::AudioProcessingEvent):
* Modules/webaudio/AudioProcessingEvent.h:
(WebCore::AudioProcessingEvent::create):
* Modules/webaudio/ChannelMergerNode.h:
* Modules/webaudio/ChannelSplitterNode.h:
* Modules/webaudio/GainNode.h:
* Modules/webaudio/MediaElementAudioSourceNode.h:
* Modules/webaudio/MediaStreamAudioDestinationNode.h:
* Modules/webaudio/MediaStreamAudioSource.cpp:
(WebCore::MediaStreamAudioSource::addAudioConsumer):
* Modules/webaudio/MediaStreamAudioSource.h:
* Modules/webaudio/OfflineAudioCompletionEvent.cpp:
(WebCore::OfflineAudioCompletionEvent::create):
(WebCore::OfflineAudioCompletionEvent::OfflineAudioCompletionEvent):
* Modules/webaudio/OfflineAudioCompletionEvent.h:
* Modules/webaudio/OfflineAudioDestinationNode.h:
* Modules/webaudio/OscillatorNode.h:
* Modules/webaudio/PeriodicWave.h:
* Modules/webaudio/ScriptProcessorNode.h:

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

4 years ago[Win] The test http/tests/security/contentSecurityPolicy/upgrade-insecure-requests...
pvollan@apple.com [Fri, 8 Jul 2016 06:28:58 +0000 (06:28 +0000)]
[Win] The test http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/basic-upgrade.https.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=159510

Reviewed by Brent Fulgham.

Source/WebCore:

On Windows, validate certificate chain even when any https certificate is allowed.

* platform/network/cf/ResourceHandleCFNet.cpp:
(WebCore::ResourceHandle::createCFURLConnection):

Tools:

Allow any https certificate when running tests.

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

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

4 years agopadStart/padEnd with Infinity produces unexpected result
commit-queue@webkit.org [Fri, 8 Jul 2016 06:25:34 +0000 (06:25 +0000)]
padStart/padEnd with Infinity produces unexpected result
https://bugs.webkit.org/show_bug.cgi?id=159543

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

Source/JavaScriptCore:

* builtins/GlobalOperations.js:
(globalPrivate.toLength):
Fix style.

* builtins/StringPrototype.js:
(padStart):
(padEnd):
After all observable operations, and after empty string has been handled,
throw an out of memory error if the resulting string would be greater
than the maximum string size.

* tests/es6/Object_static_methods_Object.getOwnPropertyDescriptors-proxy.js:
(shouldThrow): Deleted.
* tests/es6/Object_static_methods_Object.getOwnPropertyDescriptors.js:
(shouldThrow):
(testMeta):
* tests/es6/String.prototype_methods_String.prototype.padEnd.js:
(shouldThrow):
(TestToLength):
(TestMemoryLimits):
(TestMeta): Deleted.
* tests/es6/String.prototype_methods_String.prototype.padStart.js:
(shouldThrow):
(TestToLength):
(TestMemoryLimits):
Replace incorrect shouldThrow(..., errorType) with explicit shouldThrow(..., errorMessage).
The old shouldThrow would incorrectly succeed if the expected error type was just "Error".
Now we explicitly check the error message.

LayoutTests:

* js/script-tests/string-padend.js: Added.
(thisObject.toString):
(lengthObject.valueOf):
(fillObject.toString):
* js/script-tests/string-padstart.js: Added.
(thisObject.toString):
(lengthObject.valueOf):
(fillObject.toString):
* js/string-padend-expected.txt: Added.
* js/string-padend.html: Added.
* js/string-padstart-expected.txt: Added.
* js/string-padstart.html: Added.
Add some basic String.prototype.padStart/padEnd test coverage
that is not just in the JavaScriptCore/tests/es6 directory.

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

4 years agoBug 155792 - Basic implementation of mpadded
fred.wang@free.fr [Fri, 8 Jul 2016 06:16:32 +0000 (06:16 +0000)]
Bug 155792 - Basic implementation of mpadded
https://bugs.webkit.org/show_bug.cgi?id=155792

Patch by Frederic Wang <fwang@igalia.com> on 2016-07-07
Reviewed by Brent Fulgham.

Source/WebCore:

We implement a basic support for the mpadded element.
We support most of the attribute values except pseudo-units or negative values.

Tests: mathml/presentation/mpadded-1-2.html
       mathml/presentation/mpadded-1.html
       mathml/presentation/mpadded-2.html
       mathml/presentation/mpadded-3.html
       mathml/presentation/mpadded-unsupported-values.html
       mathml/presentation/mpadded-dynamic.html

* CMakeLists.txt: Add RenderMathMLPadded to the build system.
* WebCore.xcodeproj/project.pbxproj: Ditto.
* mathml/MathMLInlineContainerElement.cpp:
(WebCore::MathMLInlineContainerElement::createElementRenderer): Create the renderer
for mpadded.
* mathml/mathattrs.in: Add voffset attribute.
* mathml/mathtags.in: Make mpadded use MathMLInlineContainerElement.
* rendering/RenderObject.h:
(WebCore::RenderObject::isRenderMathMLPadded): Define isRenderMathMLPadded.
* rendering/mathml/RenderMathMLPadded.cpp: Added.
We do a simple implementation by overriding the behavior of RenderMathMLRow and forcing
relayout after attribute or style change.
(WebCore::RenderMathMLPadded::RenderMathMLPadded):
(WebCore::RenderMathMLPadded::computePreferredLogicalWidths):
(WebCore::RenderMathMLPadded::layoutBlock):
(WebCore::RenderMathMLPadded::updateFromElement):
(WebCore::RenderMathMLPadded::styleDidChange):
(WebCore::RenderMathMLPadded::firstLineBaseline):
* rendering/mathml/RenderMathMLPadded.h: Added.

LayoutTests:

We import mpadded tests from Mozilla test suite.
We also add some tests for dynamic changes of mpadded attributes and to verify
that the mpadded element behaves as if it had an inferred <mrow>.
Finally, we check that fallback properly for negative and pseudo-unit values that
we do not support yet.

* mathml/presentation/inferred-mrow-baseline.html: Check baseline for mpadded.
* mathml/presentation/inferred-mrow-baseline-expected.txt: Ditto.
* mathml/presentation/inferred-mrow-stretchy.html: Check stretching of operators for mpadded.
* mathml/presentation/inferred-mrow-stretchy-expected.txt: Ditto.
* mathml/presentation/mpadded-dynamic.html: Added. Verify dynamic change of mpadded attributes.
* mathml/presentation/mpadded-dynamic-expected.html: Added. Ditto.
* mathml/presentation/mpadded-unsupported-values.html: Added. Check negative and pseudo-unit values.
* mathml/presentation/mpadded-unsupported-values-expected.html: Added.
* mathml/presentation/mpadded-1-2-expected.html: Added.
* mathml/presentation/mpadded-1-2.html: Added.
* mathml/presentation/mpadded-1-expected.html: Added.
* mathml/presentation/mpadded-1.html: Added.
* mathml/presentation/mpadded-2-expected.html: Added.
* mathml/presentation/mpadded-2.html: Added.
* mathml/presentation/mpadded-3-expected.html: Added.
* mathml/presentation/mpadded-3.html: Added.

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

4 years agoMove MathML-specific code into a separate accessibility class
fred.wang@free.fr [Fri, 8 Jul 2016 05:51:20 +0000 (05:51 +0000)]
Move MathML-specific code into a separate accessibility class
https://bugs.webkit.org/show_bug.cgi?id=159213

Patch by Frederic Wang <fwang@igalia.com> on 2016-07-07
Reviewed by Chris Fleizach.

Currently, MathML accessibility is completely handled in the generic AccessibilityRenderObject
and it's sometimes messy and unconvenient. Hence we move most of the MathML-specific code
into a separate AccessibilityMathMLElement class to facilitate future work and maintenance.

No new tests, already covered by existing tests.

* CMakeLists.txt: Add new AccessibilityMathMLElement module.
* WebCore.xcodeproj/project.pbxproj: Ditto.
* accessibility/AccessibilityAllInOne.cpp: Ditto.
* accessibility/AXObjectCache.cpp: Add MathML headers and create AccessibilityMathMLElement.
(WebCore::createFromRenderer): Create AccessibilityMathMLElement for MathML elements and
anonymous operators created by the mfenced element.
* accessibility/AccessibilityMathMLElement.cpp: Added. This class handles all the MathML
elements as well as the anonymous operators created by the mfenced element. A boolean is
passed to the constructor to indicate whether we are in the latter case.
(WebCore::AccessibilityMathMLElement::AccessibilityMathMLElement):
(WebCore::AccessibilityMathMLElement::~AccessibilityMathMLElement):
(WebCore::AccessibilityMathMLElement::create):
(WebCore::AccessibilityMathMLElement::determineAccessibilityRole): Move handling of specific
MathElementRole and DocumentMathRole here.
(WebCore::AccessibilityMathMLElement::textUnderElement): Move retrieval of text from the
anonymous operators here.
(WebCore::AccessibilityMathMLElement::stringValue): Ditto.
(WebCore::AccessibilityMathMLElement::isIgnoredElementWithinMathTree): Move the determination
of ignored math elements here.
(WebCore::AccessibilityMathMLElement::isMathFraction): Moved from AccessibilityRenderObject.
(WebCore::AccessibilityMathMLElement::isMathFenced): Ditto.
(WebCore::AccessibilityMathMLElement::isMathSubscriptSuperscript): Ditto.
(WebCore::AccessibilityMathMLElement::isMathRow): Ditto.
(WebCore::AccessibilityMathMLElement::isMathUnderOver): Ditto.
(WebCore::AccessibilityMathMLElement::isMathSquareRoot): Ditto.
(WebCore::AccessibilityMathMLElement::isMathToken): Ditto.
(WebCore::AccessibilityMathMLElement::isMathRoot): Ditto.
(WebCore::AccessibilityMathMLElement::isMathOperator): Ditto.
(WebCore::AccessibilityMathMLElement::isAnonymousMathOperator): Move the determination of
anonymous operators here. We now just return the boolean passed at creation time.
(WebCore::AccessibilityMathMLElement::isMathFenceOperator): Moved from
AccessibilityRenderObject.
(WebCore::AccessibilityMathMLElement::isMathSeparatorOperator): Ditto.
(WebCore::AccessibilityMathMLElement::isMathText): Ditto.
(WebCore::AccessibilityMathMLElement::isMathNumber): Ditto.
(WebCore::AccessibilityMathMLElement::isMathIdentifier): Ditto.
(WebCore::AccessibilityMathMLElement::isMathMultiscript): Ditto.
(WebCore::AccessibilityMathMLElement::isMathTable): Ditto.
(WebCore::AccessibilityMathMLElement::isMathTableRow): Ditto.
(WebCore::AccessibilityMathMLElement::isMathTableCell): Ditto.
(WebCore::AccessibilityMathMLElement::isMathScriptObject): Ditto.
(WebCore::AccessibilityMathMLElement::isMathMultiscriptObject): Ditto.
(WebCore::AccessibilityMathMLElement::mathRadicandObject): Ditto.
(WebCore::AccessibilityMathMLElement::mathRootIndexObject): Ditto.
(WebCore::AccessibilityMathMLElement::mathNumeratorObject): Ditto.
(WebCore::AccessibilityMathMLElement::mathDenominatorObject): Ditto.
(WebCore::AccessibilityMathMLElement::mathUnderObject): Ditto.
(WebCore::AccessibilityMathMLElement::mathOverObject): Ditto.
(WebCore::AccessibilityMathMLElement::mathBaseObject): Ditto.
(WebCore::AccessibilityMathMLElement::mathSubscriptObject): Ditto.
(WebCore::AccessibilityMathMLElement::mathSuperscriptObject): Ditto.
(WebCore::AccessibilityMathMLElement::mathFencedOpenString): Ditto.
(WebCore::AccessibilityMathMLElement::mathFencedCloseString): Ditto.
(WebCore::AccessibilityMathMLElement::mathPrescripts): Ditto.
(WebCore::AccessibilityMathMLElement::mathPostscripts): Ditto.
(WebCore::AccessibilityMathMLElement::mathLineThickness): Ditto.
* accessibility/AccessibilityMathMLElement.h: Added.
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::isIgnoredElementWithinMathTree): The cases of
AccessibilityMathMLElement objects are now handled in the derived class. We remove the case
of text node since the MathML code no longer creates anonymous text nodes after r202420.
Anonymous block inserted into RenderMathMLBlocks to honor CSS rules are not AccessibilityMathMLElements
and it does not seem safe to modify AXObjectCache::createFromRenderer to force that. Hence
we still need to be handle them here.
(WebCore::AccessibilityRenderObject::textUnderElement): This code is moved into AccessibilityMathMLElement.
(WebCore::AccessibilityRenderObject::stringValue): Ditto.
(WebCore::AccessibilityRenderObject::determineAccessibilityRole): Ditto.
(WebCore::AccessibilityRenderObject::isMathElement): Deleted.
(WebCore::AccessibilityRenderObject::isMathFraction): Deleted.
(WebCore::AccessibilityRenderObject::isMathFenced): Deleted.
(WebCore::AccessibilityRenderObject::isMathSubscriptSuperscript): Deleted.
(WebCore::AccessibilityRenderObject::isMathRow): Deleted.
(WebCore::AccessibilityRenderObject::isMathUnderOver): Deleted.
(WebCore::AccessibilityRenderObject::isMathSquareRoot): Deleted.
(WebCore::AccessibilityRenderObject::isMathToken): Deleted.
(WebCore::AccessibilityRenderObject::isMathRoot): Deleted.
(WebCore::AccessibilityRenderObject::isMathOperator): Deleted.
(WebCore::AccessibilityRenderObject::isAnonymousMathOperator): Deleted.
(WebCore::AccessibilityRenderObject::isMathFenceOperator): Deleted.
(WebCore::AccessibilityRenderObject::isMathSeparatorOperator): Deleted.
(WebCore::AccessibilityRenderObject::isMathText): Deleted.
(WebCore::AccessibilityRenderObject::isMathNumber): Deleted.
(WebCore::AccessibilityRenderObject::isMathIdentifier): Deleted.
(WebCore::AccessibilityRenderObject::isMathMultiscript): Deleted.
(WebCore::AccessibilityRenderObject::isMathTable): Deleted.
(WebCore::AccessibilityRenderObject::isMathTableRow): Deleted.
(WebCore::AccessibilityRenderObject::isMathTableCell): Deleted.
(WebCore::AccessibilityRenderObject::isMathScriptObject): Deleted.
(WebCore::AccessibilityRenderObject::isMathMultiscriptObject): Deleted.
(WebCore::AccessibilityRenderObject::mathRadicandObject): Deleted.
(WebCore::AccessibilityRenderObject::mathRootIndexObject): Deleted.
(WebCore::AccessibilityRenderObject::mathNumeratorObject): Deleted.
(WebCore::AccessibilityRenderObject::mathDenominatorObject): Deleted.
(WebCore::AccessibilityRenderObject::mathUnderObject): Deleted.
(WebCore::AccessibilityRenderObject::mathOverObject): Deleted.
(WebCore::AccessibilityRenderObject::mathBaseObject): Deleted.
(WebCore::AccessibilityRenderObject::mathSubscriptObject): Deleted.
(WebCore::AccessibilityRenderObject::mathSuperscriptObject): Deleted.
(WebCore::AccessibilityRenderObject::mathFencedOpenString): Deleted.
(WebCore::AccessibilityRenderObject::mathFencedCloseString): Deleted.
(WebCore::AccessibilityRenderObject::mathPrescripts): Deleted.
(WebCore::AccessibilityRenderObject::mathPostscripts): Deleted.
(WebCore::AccessibilityRenderObject::mathLineThickness): Deleted.
* accessibility/AccessibilityRenderObject.h: Remove declarations of functions that are now
overridden in AccessibilityMathMLElement. Make isIgnoredElementWithinMathTree virtual so that
it can be reimplemented in AccessibilityMathMLElement.

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

4 years agoImplement an internal style property for displaystyle.
fred.wang@free.fr [Fri, 8 Jul 2016 05:40:20 +0000 (05:40 +0000)]
Implement an internal style property for displaystyle.
https://bugs.webkit.org/show_bug.cgi?id=133845

Patch by Frederic Wang <fwang@igalia.com> on 2016-07-07
Reviewed by Brent Fulgham.

Source/WebCore:

Tests: mathml/opentype/large-operators-displaystyle-dynamic.html
       mathml/opentype/large-operators-displaystyle.html

This is based on a patch by Alejandro G. Castro <alex@igalia.com>

* CMakeLists.txt: Add MathMLStyle to the build system.
* WebCore.xcodeproj/project.pbxproj: ditto.
* mathml/MathMLInlineContainerElement.cpp:
(WebCore::MathMLInlineContainerElement::parseAttribute): Resolve the mathml style when the
displaystyle attribute changes on the mtable or mstyle elements.
* mathml/MathMLInlineContainerElement.h: Define parseAttribute.
* mathml/MathMLMathElement.cpp:
(WebCore::MathMLMathElement::MathMLMathElement): Indicate that we have custom style.
(WebCore::MathMLMathElement::parseAttribute): Resolve the mathml style when the display or
displaystyle attributes change on the math element.
(WebCore::MathMLMathElement::didAttachRenderers): Resolve the mathml style when one
renderer is attached.
* mathml/MathMLMathElement.h: Declare parseAttribute and didAttachRenderers.
* mathml/mathattrs.in: Declare the display and displaystyle attributes.
* rendering/mathml/MathMLStyle.cpp: Added.
(WebCore::MathMLStyle::MathMLStyle): New class to handle custom MathML style.
(WebCore::MathMLStyle::create):
(WebCore::MathMLStyle::setDisplayStyle): Helper function to take the displaystyle from
the specified rendered.
(WebCore::MathMLStyle::resolveMathMLStyleTree): Helper function to resolve the custom
MathML style in renderer subtree.
(WebCore::MathMLStyle::getMathMLParentNode): Helper function to get a MathML ancestor of
the specified renderer.
(WebCore::MathMLStyle::updateStyleIfNeeded): Helper function to update the style of the
specified renderer if needed.
(WebCore::MathMLStyle::resolveMathMLStyle): Resolve the MathML style of a given renderer.
For displaystyle, we inherit the value of the parent except for the cases mentioned in the
MathML recommendation.
* rendering/mathml/MathMLStyle.h: New class header for custom MathML style.
Only displaystyle is supported for now.
* rendering/mathml/RenderMathMLBlock.cpp: Add a member and getter for custom MathML style.
(WebCore::RenderMathMLBlock::RenderMathMLBlock):
* rendering/mathml/RenderMathMLBlock.h: ditto.
(WebCore::RenderMathMLBlock::mathMLStyle):
* rendering/mathml/RenderMathMLMath.h: Add definition to use the syntax is<RenderMathMLMath>.
* rendering/mathml/RenderMathMLOperator.h:
(WebCore::RenderMathMLOperator::isLargeOperatorInDisplayStyle): Do not rerturn true when
the operator is not in displaystyle.
* rendering/mathml/RenderMathMLRoot.h: Make updateStyle public, so that it can be called
by MathMLStyle::updateStyleIfNeeded.
* rendering/mathml/RenderMathMLUnderOver.h: Add definition to use the syntax
is<RenderMathMLUnderOver>.

LayoutTests:

This is based on a patch by Alejandro G. Castro <alex@igalia.com>

Add two new tests to verify that the displaystyle property is correctly inherited
on various MathML elements.
large-operators-displaystyle verifies that large operators are only drawn bigger when
the displaystyle is true.
large-operators-displaystyle-dynamic verifies the same displaystyle is calculated when
the display and displaystyle attributes are changed dynamically.

* mathml/opentype/large-operators-displaystyle-dynamic-expected.html: Added.
* mathml/opentype/large-operators-displaystyle-dynamic.html: Added.
* mathml/opentype/large-operators-displaystyle-expected.txt: Added.
* imported/mathml-in-html5/fonts/math/largeop-displayoperatorminheight5000.woff: Added.
* imported/mathml-in-html5/mathml/relations/css-styling/displaystyle-1.html: Added.
* imported/mathml-in-html5/mathml/relations/css-styling/displaystyle-1-expected.txt: Added.

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

4 years agoRebaseline some MathML tests on Windows after r202934
fred.wang@free.fr [Fri, 8 Jul 2016 05:20:48 +0000 (05:20 +0000)]
Rebaseline some MathML tests on Windows after r202934

Unreviewed test gardening.

Patch by Frederic Wang <fwang@igalia.com> on 2016-07-07

* platform/win/mathml/opentype/opentype-stretchy-expected.txt:
* platform/win/mathml/opentype/vertical-expected.txt:
* platform/win/mathml/presentation/mo-stretch-expected.txt:
* platform/win/mathml/presentation/roots-expected.txt:

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

4 years agoRebaseline MathML pixels tests
fred.wang@free.fr [Fri, 8 Jul 2016 05:14:16 +0000 (05:14 +0000)]
Rebaseline MathML pixels tests
https://bugs.webkit.org/show_bug.cgi?id=159348

Unreviewed test gardening.

Patch by Frederic Wang <fwang@igalia.com> on 2016-07-07

* platform/efl/mathml/opentype/opentype-stretchy-expected.txt:
* platform/efl/mathml/opentype/vertical-expected.txt:
* platform/efl/mathml/presentation/mo-stretch-expected.txt:
* platform/efl/mathml/presentation/roots-expected.txt:

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

4 years agoAPI Test DoNotLeakWebView.ViewThatLoadsEditableArea times out on macOS Sierra
bdakin@apple.com [Fri, 8 Jul 2016 05:12:14 +0000 (05:12 +0000)]
API Test DoNotLeakWebView.ViewThatLoadsEditableArea times out on macOS Sierra
https://bugs.webkit.org/show_bug.cgi?id=159532
-and corresponding-
rdar://problem/27177179

Reviewed by Tim Horton.

Source/WebKit/mac:

* WebView/WebView.mm:
(-[WebView showCandidates:forString:inRect:forSelectedRange:view:completionHandler:]):
(-[WebView forceRequestCandidatesForTesting]):
(-[WebView shouldRequestCandidates]):
* WebView/WebViewPrivate.h:

Tools:

* TestWebKitAPI/Tests/mac/ViewWithEditableAreaLeak.mm:
(-[DoNotLeakFrameLoadDelegate webView:didFinishLoadForFrame:]):

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

4 years ago[JSC] String.prototype[Symbol.iterator] needs a name
benjamin@webkit.org [Fri, 8 Jul 2016 04:10:00 +0000 (04:10 +0000)]
[JSC] String.prototype[Symbol.iterator] needs a name
https://bugs.webkit.org/show_bug.cgi?id=159541

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

A man needs a name.
Spec: https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator

* runtime/StringPrototype.cpp:
(JSC::StringPrototype::finishCreation):

LayoutTests:

* js/script-tests/string-iterator.js: Added.
* js/string-iterator-expected.txt: Added.
* js/string-iterator.html: Added.

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

4 years agoREGRESSION(184445): Need to insert a StoreBarrier when we don't know child's epoch
msaboff@apple.com [Fri, 8 Jul 2016 03:47:59 +0000 (03:47 +0000)]
REGRESSION(184445): Need to insert a StoreBarrier when we don't know child's epoch
https://bugs.webkit.org/show_bug.cgi?id=159537

Reviewed by Benjamin Poulain.

We weren't checking the case of a child node with a null epoch.  The problem surfaces
when the base node of a PutByVal variant has a non-null epoch, because it represents an
allocation in the current function, while the child of the same node has an unknown epoch.
Added a check that the child node is not null before comparing the epochs of the base and
child nodes.

The added test creates the problem circumstance by doing a full GC to place an array in
remembered space, allocating a new object followed by an eden GC.  The new object is
only referenced by the array and therefore won't be visited Without the store barrier.
The test may crash or more likely get the wrong answer with the bug.

* dfg/DFGStoreBarrierInsertionPhase.cpp:
* tests/stress/regress-159537.js: Added test.
(MyNumber):
(MyNumber.prototype.plusOne):
(bar):
(foo):
(test):

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

4 years agoUnexpected "Out of memory" error for "x".repeat(-1)
commit-queue@webkit.org [Fri, 8 Jul 2016 03:13:11 +0000 (03:13 +0000)]
Unexpected "Out of memory" error for "x".repeat(-1)
https://bugs.webkit.org/show_bug.cgi?id=159529

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

Source/JavaScriptCore:

* builtins/StringPrototype.js:
(globalPrivate.repeatSlowPath):
(repeat):
Move the @toInteger and range checking to the always path,
since the spec does say it should always happen. Also remove
the duplication of the fast path here.

* runtime/StringPrototype.cpp:
(JSC::repeatCharacter):
Remove unused function.

(JSC::stringProtoFuncRepeatCharacter):
ASSERT if given a negative number. This is a private function
only used internally.

* tests/stress/string-repeat-edge-cases.js:
(shouldThrow):
Update expected error message.

LayoutTests:

Extended test coverage for:

  - function properties
  - fast path with invalid counts
  - observable side effects for fast path which were wrong before

* js/script-tests/string-repeat.js:
* js/string-repeat-expected.txt:

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

4 years agoReplace scoped flag in Event by composed flag
rniwa@webkit.org [Fri, 8 Jul 2016 01:57:44 +0000 (01:57 +0000)]
Replace scoped flag in Event by composed flag
https://bugs.webkit.org/show_bug.cgi?id=158415

Reviewed by Chris Dumez.

Source/WebCore:

Replace `scoped` flag with `composed` flag and negate its meaning per the latest spec:
https://dom.spec.whatwg.org/#dom-event-composed
https://github.com/w3c/webcomponents/issues/513

In the old spec, every event was assumed to be "composed" (crosses shadow boundaries)
by default and there was `scoped` flag which prevented the event from crossing bondaries,
and there was a handful of events for which `scoped` was set true when dispatched by UA.

In the new spec, every event is assumed to be "scoped" and a handful of user-initiated
events set `composed` flag to true, which is also exposed in EventInit dictionary.
`relatedTargetScoped` flag has been removed. New behavior is identical to when this flag
was set to true.

No new tests since existing tests are updated to test the new flag and behavior.

* dom/CompositionEvent.cpp:
(WebCore::CompositionEvent::isCompositionEvent): Added.
* dom/CompositionEvent.h:
* dom/Event.cpp:
(WebCore::Event::Event): Initialize m_composed. Also re-ordered m_type and m_isInitialized
for better packing.
(WebCore::Event::composed): Renamed from Event::composed. We return true whenever composed
is set to true in EventInit, or the engine is dispatching an user-initiated event listed in:
https://github.com/w3c/webcomponents/issues/513#issuecomment-224183937
as well as keypress, cut, paste, and, copy as discussed in:
https://github.com/w3c/webcomponents/issues/513#issuecomment-230988170
(WebCore::Event::isCompositionEvent): Added.
* dom/Event.h:
(WebCore::Event::composed): Added.
(WebCore::Event::scoped): Deleted.
(WebCore::Event::relatedTargetScoped): Deleted.
(WebCore::Event): Reordered m_type and m_isInitialized for better packing. Added m_composed
and removed m_scoped and m_relatedTargetScoped.
* dom/Event.idl:
* dom/EventPath.cpp:
(WebCore::shouldEventCrossShadowBoundary): Returns true if the event did not originate from
a shadow tree (this event entered the current shadow tree via a slot so we need to proceed with
the normal bubble path outside the shadow tree) or composed flag is set true.
(WebCore::EventPath::EventPath): m_event no longer exists, which was only used to get the value
of relatedTargetScoped which has been removed.
(WebCore::EventPath::setRelatedTarget): Behave as if relatedTargetScoped is always set true
since the flag has been removed.
* dom/EventPath.h:
* dom/FocusEvent.cpp:
(WebCore::FocusEvent::relatedTargetScoped): Deleted.
* dom/FocusEvent.h:
* dom/MouseEvent.cpp:
(WebCore::MouseEvent::relatedTargetScoped): Deleted.
* dom/MouseEvent.h:

LayoutTests:

Updated the tests to reflect the rename of scoped to composed and the negation of its semantics.
Now every Event is assumed to be scoped / non-composed by default, and we need to explicitly set
composed to true in order for events to cross shadow boundaries.

Also, every Event behaves as if related target is assumed to be scoped in the old terminology
althoug the flag no longer exists.

* fast/shadow-dom/Extensions-to-Event-Interface-expected.txt:
* fast/shadow-dom/Extensions-to-Event-Interface.html: Removed a test case that was testing
relatedTargetScoped to false since this flag no longer exists.
* fast/shadow-dom/MouseEvent-prototype-offsetX-offsetY.html:
* fast/shadow-dom/event-inside-shadow-tree.html:
* fast/shadow-dom/event-inside-slotted-node.html:
* fast/shadow-dom/event-with-related-target.html:
* fast/shadow-dom/trusted-event-scoped-flags-expected.txt:
* fast/shadow-dom/trusted-event-scoped-flags.html:
* fast/xmlhttprequest/xmlhttprequest-get-expected.txt:
* http/tests/workers/worker-importScriptsOnError-expected.txt:
* inspector/model/remote-object-get-properties-expected.txt:

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

4 years agotdody.deleteRow(-1) and tr.deleteCell(-1) should not throw when there are no rows...
cdumez@apple.com [Fri, 8 Jul 2016 01:56:18 +0000 (01:56 +0000)]
tdody.deleteRow(-1) and tr.deleteCell(-1) should not throw when there are no rows / cells
https://bugs.webkit.org/show_bug.cgi?id=159527
<rdar://problem/27232261>

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Rebaseline now that more checks are passing.

* web-platform-tests/html/semantics/tabular-data/the-tbody-element/deleteRow-expected.txt:
* web-platform-tests/html/semantics/tabular-data/the-tr-element/deleteCell-expected.txt:

Source/WebCore:

tdody.deleteRow(-1) and tr.deleteCell(-1) should not throw when there
are no rows / cells:
- https://html.spec.whatwg.org/multipage/tables.html#dom-tbody-deleterow
- https://html.spec.whatwg.org/multipage/tables.html#dom-tr-deletecell

Firefox and Chrome do not throw but WebKit was throwing.

No new tests, rebaselined existing tests.

* html/HTMLTableRowElement.cpp:
(WebCore::HTMLTableRowElement::deleteCell):
* html/HTMLTableSectionElement.cpp:
(WebCore::HTMLTableSectionElement::deleteRow):

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

4 years agoHTMLTitleElement.text should only account for direct children Text nodes
cdumez@apple.com [Fri, 8 Jul 2016 01:15:48 +0000 (01:15 +0000)]
HTMLTitleElement.text should only account for direct children Text nodes
https://bugs.webkit.org/show_bug.cgi?id=159536

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline now that more checks are passing.

* web-platform-tests/html/semantics/document-metadata/the-title-element/title.text-01-expected.txt:
* web-platform-tests/html/semantics/document-metadata/the-title-element/title.text-02-expected.txt:

Source/WebCore:

HTMLTitleElement.text should only account for direct children Text nodes:
- https://html.spec.whatwg.org/multipage/semantics.html#dom-title-text
- https://html.spec.whatwg.org/multipage/infrastructure.html#child-text-content

Firefox and Chrome match the specification. However, WebKit accounted for all
Text nodes that are descendants, not just children. This patch aligns our
behavior with the specification and other browsers.

No new tests, rebaselined existing tests.

* html/HTMLTitleElement.cpp:
(WebCore::HTMLTitleElement::text):

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

4 years agoREGRESSION(r200769): animations are no longer overridden
dino@apple.com [Fri, 8 Jul 2016 00:20:38 +0000 (00:20 +0000)]
REGRESSION(r200769): animations are no longer overridden
https://bugs.webkit.org/show_bug.cgi?id=159450
<rdar://problem/27120570>

Reviewed by Zalan Bujtas.

Source/WebCore:

The change in r200769 removed a lot of the prefixing variant
handling, but unfortunately we can't be completely rid
of it until we alias the prefixed transitions and animations
to the non-prefixed form. For example, setting the prefixed
shorthand has to reset the non-prefixed longhands.

The fix was to explicitly call the variant forms when
parsing such longhands, and make sure that MutableStyleProperties
removes all prefixed variants when removing shorthands.

The existing test was amended to cover this case:
fast/css/shorthand-omitted-initial-value-overrides-shorthand.html

* css/CSSParser.cpp:
(WebCore::CSSParser::parseAnimationShorthand):
(WebCore::CSSParser::addPropertyWithPrefixingVariant):
(WebCore::CSSParser::parseTransitionShorthand):
* css/CSSParser.h:
* css/StyleProperties.cpp:
(WebCore::MutableStyleProperties::removeShorthandProperty):

LayoutTests:

Update an existing test to exercise a prefixed form applying
to non-prefixed longhands.

* fast/css/shorthand-omitted-initial-value-overrides-shorthand-expected.txt:
* fast/css/shorthand-omitted-initial-value-overrides-shorthand.html:

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

4 years agoFix CMake build.
achristensen@apple.com [Fri, 8 Jul 2016 00:12:39 +0000 (00:12 +0000)]
Fix CMake build.

* PlatformMac.cmake:

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

4 years agoTest gardening after r202826
mmaxfield@apple.com [Thu, 7 Jul 2016 23:58:44 +0000 (23:58 +0000)]
Test gardening after r202826
https://bugs.webkit.org/show_bug.cgi?id=159538
<rdar://problem/27197375>

Unreviewed.

* editing/style/text-indent.html:
* platform/mac-wk1/TestExpectations:

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

4 years agoFix CMake build.
achristensen@apple.com [Thu, 7 Jul 2016 23:58:38 +0000 (23:58 +0000)]
Fix CMake build.

* PlatformMac.cmake:

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

4 years ago[Font Loading] The callback passed to document.fonts.ready should always be called
fred.wang@free.fr [Thu, 7 Jul 2016 23:34:09 +0000 (23:34 +0000)]
[Font Loading] The callback passed to document.fonts.ready should always be called
https://bugs.webkit.org/show_bug.cgi?id=158884

Reviewed by Dean Jackson.

Source/WebCore:

The boolean was simply not being reset when loads start.

Test: fast/text/font-face-set-ready-fire.html

* css/FontFaceSet.cpp:
(WebCore::FontFaceSet::startedLoading):
* css/FontFaceSet.h:

LayoutTests:

* fast/text/font-face-set-ready-fire-expected.txt: Added.
* fast/text/font-face-set-ready-fire.html: Added.

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

4 years ago[Content Filtering] Load blocked pages more like other error pages are loaded
aestes@apple.com [Thu, 7 Jul 2016 23:26:28 +0000 (23:26 +0000)]
[Content Filtering] Load blocked pages more like other error pages are loaded
https://bugs.webkit.org/show_bug.cgi?id=159485
<rdar://problem/26014076>

Reviewed by Brady Eidson.

Source/WebCore:

Content filter blocked pages were being loaded by cancelling the provisional load of the
page that was blocked and then scheduling a navigation to the content filter error page.
Some clients would not expect a new, Web process-initiated provisional navigation to start
after a cancellation, though, and this would put them in a bad state.

This patch changes blocked page loading to behave more like loading other error pages.
Specifically:
1. didFailProvisionalLoad is dispatched with a new, non-cancellation error code.
2. The blocked page is loaded immediately after dispatching didFailProvisionalLoad, which
   prevents FrameLoader from creating a new back-forward list item for the substitute data load.
3. A substitute data load initiated by the client for the blocked URL is ignored if
   ContentFilter will display its own error page.
4. A file: URL is used instead of a custom scheme for the base URL of the blocked page,
   since some clients expect this.

Updated existing tests to capture frame load delegate callbacks and the back forward list.
Added new API tests: ContentFiltering.LoadAlternate*.

* English.lproj/Localizable.strings: Added a WebKitErrorFrameLoadBlockedByContentFilter description.
* Resources/ContentFilterBlockedPage.html: Added.
* WebCore.xcodeproj/project.pbxproj: Added ContentFilterBlockedPage.html as a frameowrk resource.
* loader/ContentFilter.cpp:
(WebCore::ContentFilter::stopFilteringMainResource): Only set m_state to Stopped if not
already Blocked, so that we don't forget this ContentFilter was blocked when calling
cancelMailResourceLoad() in didDecide().
(WebCore::ContentFilter::didDecide): Moved code from DocumentLoader::contentFilterDidBlock() to here.
Created a blockedByContentFilterError() and called cancelMainResourceLoad().
(WebCore::blockedPageURL): Returned a file: URL to ContentFilterBlockedPage.html in WebCore.framework.
(WebCore::ContentFilter::continueAfterSubstituteDataRequest): If the substitute data load
is for the same failingURL as the currently-displayed blocked page, ignore it.
(WebCore::ContentFilter::handleProvisionalLoadFailure): Load the blocked page if m_state is Blocked
and the ResourceError matches the error we used when previously calling cancelMainResourceLoad().
(WebCore::ContentFilter::unblockHandler): Deleted.
(WebCore::ContentFilter::replacementData): Deleted.
(WebCore::ContentFilter::unblockRequestDeniedScript): Deleted.
* loader/ContentFilter.h:
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::contentFilter): Returned m_contentFilter.
(WebCore::DocumentLoader::installContentFilterUnblockHandler): Deleted.
(WebCore::DocumentLoader::contentFilterDidBlock): Deleted.
* loader/DocumentLoader.h:
* loader/EmptyClients.h: Added a default implementation of blockedByContentFilterError().
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::load): If m_loadType was already RedirectWithLockedBackForwardList
and we are loading subsitute data for a failing URL, continue to use RedirectWithLockedBackForwardList.
This prevents a new back-forward list item from being created when loading a blocked page in a subframe.
(WebCore::FrameLoader::checkLoadCompleteForThisFrame):
Called ContentFilter::handleProvisionalLoadFailure() after dispatchDidFailProvisionalLoad().
(WebCore::FrameLoader::blockedByContentFilterError): Called FrameLoaderClient::blockedByContentFilterError().
* loader/FrameLoader.h:
* loader/FrameLoaderClient.h:
* loader/NavigationScheduler.cpp:
(WebCore::ScheduledSubstituteDataLoad::ScheduledSubstituteDataLoad): Deleted.
(WebCore::NavigationScheduler::scheduleSubstituteDataLoad): Deleted.
* loader/NavigationScheduler.h:
* loader/PolicyChecker.cpp:
(WebCore::PolicyChecker::checkNavigationPolicy): Ignored a substitute data load for a
failing URL if ContentFilter::continueAfterSubstituteDataRequest() returns false.

Source/WebKit/mac:

* Misc/WebKitErrors.h: Defined WebKitErrorFrameLoadBlockedByContentFilter.
* Misc/WebKitErrors.m:
(registerErrors): Registered WebKitErrorDescriptionFrameLoadBlockedByContentFilter.
* WebCoreSupport/WebFrameLoaderClient.h:
* WebCoreSupport/WebFrameLoaderClient.mm:
(WebFrameLoaderClient::blockedByContentFilterError): Returned a ResourceError for WebKitErrorFrameLoadBlockedByContentFilter.

Source/WebKit2:

* Shared/API/c/WKErrorRef.h: Defined kWKErrorCodeFrameLoadBlockedByContentFilter.
* UIProcess/Cocoa/WebProcessProxyCocoa.mm:
(WebKit::WebProcessProxy::platformPathsWithAssumedReadAccess): Added the resource directories
of WebCore.framework and WebKit.framework as paths with assumed read access.
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::hasAssumedReadAccessToURL): Checked platformPathsWithAssumedReadAccess()
as well as m_localPathsWithAssumedReadAccess.
(WebKit::WebProcessProxy::platformPathsWithAssumedReadAccess): Added a non-Cocoa implementation.
* UIProcess/WebProcessProxy.h:
* WebProcess/WebCoreSupport/WebErrors.h:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::blockedByContentFilterError): Called WebKit::blockedByContentFilterError().
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
* WebProcess/WebCoreSupport/mac/WebErrorsMac.mm:
(WebKit::blockedByContentFilterError): Returned a ResourceError for kWKErrorCodeFrameLoadBlockedByContentFilter.

Tools:

Added API tests for WebView and WKWebView to verify that alternate HTML loaded in response
to a content filtering provisional navigation failure is ignored in preference of
ContentFilter's own error page.

* TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig:
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit2Cocoa/ContentFiltering.mm:
(-[LoadAlternateNavigationDelegate webView:didFailProvisionalNavigation:withError:]):
(-[LoadAlternateNavigationDelegate webView:didFinishNavigation:]):
(loadAlternateTest):
(TEST):
* TestWebKitAPI/Tests/WebKit2Cocoa/ContentFilteringPlugIn.mm:
(-[MockContentFilterEnabler initWithCoder:]):
* TestWebKitAPI/Tests/mac/ContentFiltering.mm: Added.
(-[LoadAlternateFrameLoadDelegate webView:didFailProvisionalLoadWithError:forFrame:]):
(-[LoadAlternateFrameLoadDelegate webView:didFinishLoadForFrame:]):
(TestWebKitAPI::loadAlternateTest):
(TestWebKitAPI::TEST):

LayoutTests:

Changed allow-* and block-* tests from ref tests to text tests so that they can capture
frame load delegate callbacks and the back forward list.

* contentfiltering/allow-after-add-data-expected.html: Removed.
* contentfiltering/allow-after-add-data-expected.txt: Added.
* contentfiltering/allow-after-finished-adding-data-expected.html: Removed.
* contentfiltering/allow-after-finished-adding-data-expected.txt: Added.
* contentfiltering/allow-after-response-expected.html: Removed.
* contentfiltering/allow-after-response-expected.txt: Added.
* contentfiltering/allow-after-will-send-request-expected.html: Removed.
* contentfiltering/allow-after-will-send-request-expected.txt: Added.
* contentfiltering/allow-never-expected.html: Removed.
* contentfiltering/allow-never-expected.txt: Added.
* contentfiltering/block-after-add-data-expected.html: Removed.
* contentfiltering/block-after-add-data-expected.txt: Added.
* contentfiltering/block-after-add-data-then-allow-unblock-expected.html: Removed.
* contentfiltering/block-after-add-data-then-allow-unblock-expected.txt: Added.
* contentfiltering/block-after-add-data-then-deny-unblock-expected.html: Removed.
* contentfiltering/block-after-add-data-then-deny-unblock-expected.txt: Added.
* contentfiltering/block-after-finished-adding-data-expected.html: Removed.
* contentfiltering/block-after-finished-adding-data-expected.txt: Added.
* contentfiltering/block-after-finished-adding-data-then-allow-unblock-expected.html: Removed.
* contentfiltering/block-after-finished-adding-data-then-allow-unblock-expected.txt: Added.
* contentfiltering/block-after-finished-adding-data-then-deny-unblock-expected.html: Removed.
* contentfiltering/block-after-finished-adding-data-then-deny-unblock-expected.txt: Added.
* contentfiltering/block-after-response-expected.html: Removed.
* contentfiltering/block-after-response-expected.txt: Added.
* contentfiltering/block-after-response-then-allow-unblock-expected.html: Removed.
* contentfiltering/block-after-response-then-allow-unblock-expected.txt: Added.
* contentfiltering/block-after-response-then-deny-unblock-expected.html: Removed.
* contentfiltering/block-after-response-then-deny-unblock-expected.txt: Added.
* contentfiltering/block-after-will-send-request-expected.html: Removed.
* contentfiltering/block-after-will-send-request-expected.txt: Added.
* contentfiltering/block-after-will-send-request-then-allow-unblock-expected.html: Removed.
* contentfiltering/block-after-will-send-request-then-allow-unblock-expected.txt: Added.
* contentfiltering/block-after-will-send-request-then-deny-unblock-expected.html: Removed.
* contentfiltering/block-after-will-send-request-then-deny-unblock-expected.txt: Added.
* contentfiltering/block-never-expected.html: Removed.
* contentfiltering/block-never-expected.txt: Added.
* contentfiltering/resources/contentfiltering.js: Added testRunner calls to dump as text,
dump frame load callbacks, and dump the back forward list. Changed from loading data: URLs
to file: URLs in the test iframe.

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

4 years ago[JSC] Array.prototype[Symbol.unscopables] should have the "includes" property
benjamin@webkit.org [Thu, 7 Jul 2016 23:22:13 +0000 (23:22 +0000)]
[JSC] Array.prototype[Symbol.unscopables] should have the "includes" property
https://bugs.webkit.org/show_bug.cgi?id=159504

Reviewed by Keith Miller.

Source/JavaScriptCore:

The property "includes" was missing.
Spec: https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables

* runtime/ArrayPrototype.cpp:
(JSC::ArrayPrototype::finishCreation):
* tests/stress/unscopables.js:

LayoutTests:

* js/array-unscopables-properties-expected.txt: Added.
* js/array-unscopables-properties.html: Added.
* js/script-tests/array-unscopables-properties.js: Added.

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

4 years agoLand test expectations for rdar://problem/27197375.
ryanhaddad@apple.com [Thu, 7 Jul 2016 23:06:42 +0000 (23:06 +0000)]
Land test expectations for rdar://problem/27197375.

* platform/mac-wk1/TestExpectations:

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

4 years agoMarking media/video-main-content-allow-then-deny.html as failing on ElCapitan+
ryanhaddad@apple.com [Thu, 7 Jul 2016 23:01:34 +0000 (23:01 +0000)]
Marking media/video-main-content-allow-then-deny.html as failing on ElCapitan+
https://bugs.webkit.org/show_bug.cgi?id=159533

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

4 years agoFollowup to r202939.
achristensen@apple.com [Thu, 7 Jul 2016 22:59:14 +0000 (22:59 +0000)]
Followup to r202939.
https://bugs.webkit.org/show_bug.cgi?id=159526

* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::didFailLoading):
We need the correct destination id when sending a message.

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

4 years agoFix crash when sending failure message to closed WebProcess
achristensen@apple.com [Thu, 7 Jul 2016 22:42:43 +0000 (22:42 +0000)]
Fix crash when sending failure message to closed WebProcess
https://bugs.webkit.org/show_bug.cgi?id=159526
<rdar://problem/26767037>

Reviewed by Brady Eidson.

* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::didFailLoading):
Check to see if there is a connection before using it to send a message.
Sometimes it was null.
I think this could be tested if we had real network loading from TestWebKitAPI
by cancelling slow loads and closing WebProcesses around the same time, but no such infrastructure exists yet.

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

4 years agoFix Windows build after r202930.
achristensen@apple.com [Thu, 7 Jul 2016 22:37:31 +0000 (22:37 +0000)]
Fix Windows build after r202930.
https://bugs.webkit.org/show_bug.cgi?id=158776

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

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

4 years agotd / th should be exposed as HTMLTableCellElement objects
cdumez@apple.com [Thu, 7 Jul 2016 22:36:42 +0000 (22:36 +0000)]
td / th should be exposed as HTMLTableCellElement objects
https://bugs.webkit.org/show_bug.cgi?id=159518
<rdar://problem/27225436>

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C tests now that more checks are passing.

* web-platform-tests/html/dom/interfaces-expected.txt:
* web-platform-tests/html/semantics/interfaces-expected.txt:

Source/WebCore:

td / th should be exposed as HTMLTableCellElement objects:
- https://html.spec.whatwg.org/multipage/tables.html#the-td-element
- https://html.spec.whatwg.org/multipage/tables.html#the-th-element

We were using HTMLTableDataCellElement / HTMLTableHeaderCellElement
sub-types.

Firefox and Chrome match the current specification.

We actually introduced these types recently via Bug 148859 to align
with an older version of the HTML specification. However, it seems the
specification has been updated to match Firefox / Chrome in the mean
time.

Since we have not shipped those subtypes yet, the compatibility risk is
low.

No new tests, rebaselined existing tests.

* CMakeLists.txt:
* DerivedSources.cpp:
* DerivedSources.make:
* WebCore.xcodeproj/project.pbxproj:
* html/HTMLElementsAllInOne.cpp:
* html/HTMLTableCellElement.cpp:
(WebCore::HTMLTableCellElement::create):
(WebCore::HTMLTableCellElement::scope):
(WebCore::HTMLTableCellElement::setScope):
(WebCore::HTMLTableCellElement::setRowSpanForBindings): Deleted.
* html/HTMLTableCellElement.h:
* html/HTMLTableCellElement.idl:
* html/HTMLTableDataCellElement.h: Removed.
* html/HTMLTableDataCellElement.idl: Removed.
* html/HTMLTableHeaderCellElement.cpp: Removed.
* html/HTMLTableHeaderCellElement.h: Removed.
* html/HTMLTableHeaderCellElement.idl: Removed.
* html/HTMLTableRowElement.cpp:
(WebCore::HTMLTableRowElement::insertCell):
* html/HTMLTagNames.in:

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

4 years agoToThis constant folding in DFG is incorrect when the structure indicates that toThis...
sbarati@apple.com [Thu, 7 Jul 2016 22:15:04 +0000 (22:15 +0000)]
ToThis constant folding in DFG is incorrect when the structure indicates that toThis is overridden
https://bugs.webkit.org/show_bug.cgi?id=159501
<rdar://problem/27109354>

Reviewed by Mark Lam.

We *cannot* constant fold ToThis when the structure of an object
indicates that toThis() is overridden. isToThisAnIdentity() inside
AbstractInterpreterInlines accidentally wrote the opposite rule.
The rule was written as we can constant fold ToThis only when
toThis() is overridden. To fix the bug, we must write the rule
as isToThisAnIdentity() can only be true as long as the structure
set indicates that no structures override toThis().

We could probably get more clever in the future and notice
when we're dealing with a constant |this| values. For example,
a ToThis might occur on a constant JSLexicalEnvironment. We could
implement the rules of JSLexicalEnvironment's toThis() implementation
inside AI/constant folding.

* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::isToThisAnIdentity):
* tests/stress/to-this-on-constant-lexical-environment.js: Added.
(foo.bar):
(foo.inner):
(foo):

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

4 years agoModern IDB: When IDBDatabase objects are garbage collected, they don't close their...
beidson@apple.com [Thu, 7 Jul 2016 21:49:41 +0000 (21:49 +0000)]
Modern IDB: When IDBDatabase objects are garbage collected, they don't close their server connection.
<rdar://problem/25910345> and https://bugs.webkit.org/show_bug.cgi?id=159523

Reviewed by Alex Christensen.

Source/WebCore:

Tests: storage/indexeddb/modern/gc-closes-database-private.html
       storage/indexeddb/modern/gc-closes-database.html

* Modules/indexeddb/IDBDatabase.cpp:
(WebCore::IDBDatabase::IDBDatabase): New logging.
(WebCore::IDBDatabase::~IDBDatabase): Close server connection.
(WebCore::IDBDatabase::fireVersionChangeEvent): New logging.
(WebCore::IDBDatabase::dispatchEvent): New logging.

* Modules/indexeddb/client/IDBConnectionToServer.cpp:
(WebCore::IDBClient::IDBConnectionToServer::openDatabase): New logging.

LayoutTests:

* storage/indexeddb/modern/gc-closes-database-expected.txt: Added.
* storage/indexeddb/modern/gc-closes-database-private-expected.txt: Added.
* storage/indexeddb/modern/gc-closes-database-private.html: Added.
* storage/indexeddb/modern/gc-closes-database.html: Added.
* storage/indexeddb/modern/resources/gc-closes-database.js: Added.

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