⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Timeline



Dec 2, 2015:

9:42 PM Changeset in webkit [192993] by mark.lam@apple.com
  • 19 edits
    3 adds in trunk

Polymorphic operand types for DFG and FTL mul.
https://bugs.webkit.org/show_bug.cgi?id=151746

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

Perf on benchmarks is neutral except for the newly added JSRegress ftl-object-mul
test which shows a 2.16x speed up on x86_64 FTL, 1.27x speed up on x86_64 DFG,
and 1.56x on x86 DFG.

The speed up comes not from the mul operator itself, but from the fact that the
polymorphic operand types support now allow the test function to run without OSR
exiting, thereby realizing the DFG and FTL's speed up on other work that the test
function does.

This patch has passed the layout tests on x86_64 with a debug build.
It passed the JSC tests with x86 and x86_64 debug builds.

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGPredictionPropagationPhase.cpp:

(JSC::DFG::PredictionPropagationPhase::propagate):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileArithMul):

  • ftl/FTLCompile.cpp:
  • Changed to call generateBinaryOpFastPath() instead now, and let it dispatch to the appropriate snippet generator.
  • ftl/FTLCompileBinaryOp.cpp:

(JSC::FTL::generateBinaryArithOpFastPath):
(JSC::FTL::generateBinaryOpFastPath):
(JSC::FTL::generateArithSubFastPath): Deleted.
(JSC::FTL::generateValueAddFastPath): Deleted.

  • Refactored these functions to eliminate the need for copy-pasting every time we add support for another binary arithmetic snippet.
  • ftl/FTLCompileBinaryOp.h:
  • ftl/FTLInlineCacheDescriptor.h:
  • ftl/FTLInlineCacheDescriptorInlines.h:

(JSC::FTL::ArithMulDescriptor::ArithMulDescriptor):
(JSC::FTL::ArithMulDescriptor::icSize):

  • ftl/FTLInlineCacheSize.cpp:

(JSC::FTL::sizeOfArithMul):

  • ftl/FTLInlineCacheSize.h:
  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::DFG::LowerDFGToLLVM::lower):
(JSC::FTL::DFG::LowerDFGToLLVM::compileArithMul):

  • jit/JITMulGenerator.h:

(JSC::JITMulGenerator::JITMulGenerator):

  • tests/stress/op_mul.js:
  • Updated a test value: the interesting value for imminent overflow from an int32 is 0x7fffffff, not 0x7ffffff.

LayoutTests:

  • js/regress/ftl-object-mul-expected.txt: Added.
  • js/regress/ftl-object-mul.html: Added.
  • js/regress/script-tests/ftl-object-mul.js: Added.

(o1.valueOf):
(foo):

8:08 PM Changeset in webkit [192992] by mmaxfield@apple.com
  • 31 edits
    2 adds in trunk

Unify font-variant-* with font-variant shorthand
https://bugs.webkit.org/show_bug.cgi?id=149773

Reviewed by Darin Adler.

Source/WebCore:

This patch makes font-variant a shorthand for the following properties:
font-variant-ligatures
font-variant-position
font-variant-caps
font-variant-numeric
font-variant-alternates
font-variant-east-asian

This is consistent with the CSS Fonts Level 3 spec.

This patch also migrates the "font" longhand to use the font-variant-caps
property.

Test: fast/text/font-variant-shorthand.html

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::fontVariantEastAsianPropertyValue): Rename FontVariantEastAsian values.
(WebCore::fontVariantFromStyle): We must consult with the longhand properties to determine
font-variant computed style.
(WebCore::ComputedStyleExtractor::propertyValue): Don't put any-old font-variant-caps inside
the font shorthand.

  • css/CSSFontSelector.cpp:

(WebCore::CSSFontSelector::addFontFaceRule): Guard against incorrect downcasts (due to inherit
of the new shorthand property).

  • css/CSSParser.cpp: Parse font-variant as a shorthand. Also implement its "normal" and "none" values.

(WebCore::CSSParser::parseValue):
(WebCore::CSSParser::parseFont):
(WebCore::CSSParser::parseSystemFont):
(WebCore::CSSParser::parseFontVariantLigatures):
(WebCore::CSSParser::parseFontVariantNumeric):
(WebCore::CSSParser::parseFontVariantEastAsian):
(WebCore::CSSParser::parseFontVariant):
(WebCore::isValidKeywordPropertyAndValue): Deleted.
(WebCore::isKeywordPropertyID): Deleted.

  • css/CSSParser.h:
  • css/CSSPropertyNames.in: Turn font-variant into a shorthand property.
  • css/FontVariantBuilder.h: Guard against incorrect downcasts. Also update for renamed

FontVariantEastAsian type.
(WebCore::applyValueFontVariantLigatures):
(WebCore::applyValueFontVariantNumeric):
(WebCore::applyValueFontVariantEastAsian):

  • css/StyleProperties.cpp: Update to use the more specific property.

(WebCore::StyleProperties::appendFontLonghandValueIfExplicit):
(WebCore::StyleProperties::fontValue):
(WebCore::StyleProperties::asText):

  • css/StyleResolver.cpp: Ditto.

(WebCore::StyleResolver::isValidCueStyleProperty):

  • editing/EditingStyle.cpp: Ditto.
  • editing/cocoa/HTMLConverter.mm: Ditto.

(HTMLConverterCaches::propertyValueForNode):
(HTMLConverter::computedAttributesForElement):

  • editing/ios/EditorIOS.mm: Ditto.

(WebCore::Editor::removeUnchangeableStyles):

  • html/canvas/CanvasRenderingContext2D.cpp: Ditto.

(WebCore::CanvasRenderingContext2D::font):
(WebCore::CanvasRenderingContext2D::setFont):

  • platform/graphics/FontCache.h: Removing duplicate cache key value.

(WebCore::FontDescriptionKey::makeFlagsKey):

  • platform/graphics/FontCascade.cpp: Migrate to the new font-variant-caps from the old member variable.

(WebCore::FontCascade::glyphDataForCharacter):

  • platform/graphics/FontCascade.h: Ditto.

(WebCore::FontCascade::isSmallCaps):

  • platform/graphics/FontDescription.cpp: Ditto.

(WebCore::FontDescription::FontDescription):

  • platform/graphics/FontDescription.h: Ditto.

(WebCore::FontCascadeDescription::equalForTextAutoSizing):
(WebCore::FontDescription::smallCaps): Deleted.
(WebCore::FontDescription::setSmallCaps): Deleted.
(WebCore::FontDescription::setIsSmallCaps): Deleted.
(WebCore::FontDescription::operator==): Deleted.

  • platform/graphics/cocoa/FontCacheCoreText.cpp: Rename FontVariantEastAsianWidth.

(WebCore::computeFeatureSettingsFromVariants):

  • platform/text/TextFlags.h: Ditto.

(WebCore::FontVariantSettings::operator==):

  • rendering/RenderText.cpp: Migrage to the new font-variant-caps from the old member variable.

(WebCore::RenderText::widthFromCache):

LayoutTests:

Update tests. Also temporarily skip existing font-features tests until
https://bugs.webkit.org/show_bug.cgi?id=149774 is fixed.

  • css3/font-variant-parsing-expected.txt:
  • css3/font-variant-parsing.html:
  • fast/css/font-property-priority-expected.txt:
  • fast/css/font-shorthand-expected.txt:
  • fast/css/parsing-font-variant-ligatures-expected.txt:
  • fast/css/parsing-font-variant-ligatures.html:
  • fast/inspector-support/style-expected.txt:
  • fast/text/font-variant-shorthand-expected.txt: Added.
  • fast/text/font-variant-shorthand.html: Added.
  • platform/mac/TestExpectations:
  • platform/mac/fast/writing-mode/broken-ideograph-small-caps-expected.txt:
8:05 PM Changeset in webkit [192991] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION(r192753): Remote Web Inspector: Applications and Debuggables not showing up in debuggers
https://bugs.webkit.org/show_bug.cgi?id=151787

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-12-02
Reviewed by Brian Burg.

  • inspector/remote/RemoteInspector.mm:

(Inspector::RemoteInspector::receivedIndicateMessage):
Removed lock that was unnecessarily added in r192753. It was
protecting nothing.

7:44 PM Changeset in webkit [192990] by Yusuke Suzuki
  • 2 edits in trunk/Tools

Allow nil for unspecified benchmark pathes
https://bugs.webkit.org/show_bug.cgi?id=151784

Reviewed by Filip Pizlo.

Pathname.new(nil) will raise an error.
Only generate Pathname if the benchmark path is specified.

  • Scripts/run-jsc-benchmarks:
7:29 PM Changeset in webkit [192989] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Reduce size of ScriptElement
https://bugs.webkit.org/show_bug.cgi?id=151786

Patch by Alex Christensen <achristensen@webkit.org> on 2015-12-02
Reviewed by Andreas Kling.

  • dom/ScriptElement.cpp:

(WebCore::ScriptElement::ScriptElement):
(WebCore::ScriptElement::requestScript):

  • dom/ScriptElement.h:

Use callOnMainThread instead of a Timer to save memory on a timer that is rarely used.
Use bit fields for the boolean values to save another 8 bytes per ScriptElement.
This reduces sizeof(ScriptElement) from 168 to 48 bytes.

7:17 PM Changeset in webkit [192988] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Insert a FIXME comment FTLLazySlowPath.h to remind us to remove/refactor the ScratchRegisterAllocator field.

Rubber-stamped by Filip Pizlo.

  • ftl/FTLLazySlowPath.h:
6:00 PM Changeset in webkit [192987] by benjamin@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Remove insertElement() from FTLB3Output
https://bugs.webkit.org/show_bug.cgi?id=151781

Reviewed by Sam Weinig.

  • ftl/FTLB3Output.h:

(JSC::FTL::Output::insertElement): Deleted.
That's a LLVM concept.

5:46 PM Changeset in webkit [192986] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Rebaselining fast/dom/adopt-attribute-crash-expected for win
https://bugs.webkit.org/show_bug.cgi?id=151762

Reviewed by Darin Adler.

  • platform/win/fast/dom/adopt-attribute-crash-expected.txt:
4:32 PM Changeset in webkit [192985] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Remove stuffs related to alloca from FTLB3Output
https://bugs.webkit.org/show_bug.cgi?id=151780

Patch by Benjamin Poulain <bpoulain@apple.com> on 2015-12-02
Reviewed by Mark Lam.

We can use the Phis directly with B3 :)

  • ftl/FTLB3Output.h:

(JSC::FTL::Output::alloca): Deleted.
(JSC::FTL::Output::get): Deleted.
(JSC::FTL::Output::set): Deleted.

4:21 PM Changeset in webkit [192984] by benjamin@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Add sin(), cos(), pow() and log() to B3
https://bugs.webkit.org/show_bug.cgi?id=151778

Reviewed by Geoffrey Garen.

  • ftl/FTLB3Output.h:

(JSC::FTL::Output::doubleSin):
(JSC::FTL::Output::doubleCos):
(JSC::FTL::Output::doublePow):
(JSC::FTL::Output::doubleLog):
(JSC::FTL::Output::callWithoutSideEffects):

3:55 PM Changeset in webkit [192983] by commit-queue@webkit.org
  • 8 edits
    3 adds in trunk

Asynchronously call onerror when a content blocker blocks ascript element's load
https://bugs.webkit.org/show_bug.cgi?id=151649

Patch by Alex Christensen <achristensen@webkit.org> on 2015-12-02
Reviewed by Brady Eidson.

Source/WebCore:

Test: http/tests/contentextensions/script-onerror.html

  • dom/ScriptElement.cpp:

(WebCore::ScriptElement::ScriptElement):
(WebCore::ScriptElement::requestScript):

  • dom/ScriptElement.h:

LayoutTests:

  • http/tests/contentextensions/script-onerror-expected.txt: Added.
  • http/tests/contentextensions/script-onerror.html: Added.
  • http/tests/contentextensions/script-onerror.html.json: Added.
  • http/tests/misc/unloadable-script-expected.txt:
  • http/tests/misc/unloadable-script.html:
  • http/tests/security/local-JavaScript-from-remote-expected.txt:
  • http/tests/security/local-JavaScript-from-remote.html:

Added testRunner.waitUntilDone and testRunner.notifyDone to reflect the fact that onerror is no longer called synchronously.

3:51 PM Changeset in webkit [192982] by achristensen@apple.com
  • 5 edits in trunk/Source/WebKit2

Fix authentication requests with NetworkSession and canHandleHTTPSServerTrustEvaluation true
https://bugs.webkit.org/show_bug.cgi?id=151775
rdar://problem/23586265

Reviewed by Chris Dumez.

In https://bugs.webkit.org/show_bug.cgi?id=150968 I copied functionality from
NetworkLoad::canAuthenticateAgainstProtectionSpaceAsync into NetworkLoad::didReceiveChallenge
but I overlooked the call to m_client.canAuthenticateAgainstProtectionSpaceAsync which is needed
if canHandleHTTPSServerTrustEvaluation is true. This adds that call and moves what should happen
after that to NetworkLoad::continueCanAuthenticateAgainstProtectionSpace.

  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::didReceiveChallenge):
(WebKit::NetworkLoad::didReceiveResponse):
(WebKit::NetworkLoad::continueCanAuthenticateAgainstProtectionSpace):

  • NetworkProcess/NetworkLoad.h:
  • NetworkProcess/NetworkSession.h:
  • Shared/Authentication/AuthenticationManager.h:
3:41 PM Changeset in webkit [192981] by fpizlo@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

Add a few obvious strength-reductions to Air
https://bugs.webkit.org/show_bug.cgi?id=151777

Reviewed by Mark Lam.

The absence of these optimizations was obnoxious.

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::add32): lea 1(reg), reg -> add 1, reg.

  • b3/air/AirGenerate.cpp:

(JSC::B3::Air::generate): Emit simpler prologue/epilogue if !frameSize.

  • b3/air/AirOpcode.opcodes: We have matching for BranchMul32 with immediate, but we forgot to add the instruction form.
  • jit/AssemblyHelpers.h: Support for the prologue/epilogue optimizations.

(JSC::AssemblyHelpers::emitFunctionPrologue):
(JSC::AssemblyHelpers::emitFunctionEpilogueWithEmptyFrame):
(JSC::AssemblyHelpers::emitFunctionEpilogue):

3:04 PM Changeset in webkit [192980] by eric.carlson@apple.com
  • 2 edits in trunk/LayoutTests

Fix flaky test added with r192954.

Unreviewed.

  • fast/mediastream/MediaStreamTrack-getSettings.html:
3:04 PM Changeset in webkit [192979] by matthew_hanson@apple.com
  • 8 edits
    3 adds in branches/safari-601.1.46-branch

Merge r192432. rdar://problem/23558672

3:04 PM Changeset in webkit [192978] by matthew_hanson@apple.com
  • 4 edits in branches/safari-601.1.46-branch/Source/WebCore

Merge r192259. rdar://problem/23189749

3:04 PM Changeset in webkit [192977] by matthew_hanson@apple.com
  • 2 edits in branches/safari-601.1.46-branch/Source/WebCore

Merge r192368. rdar://problem/23189763

3:04 PM Changeset in webkit [192976] by matthew_hanson@apple.com
  • 3 edits
    2 adds in branches/safari-601.1.46-branch

Merge r192169. rdar://problem/23189763

3:04 PM Changeset in webkit [192975] by matthew_hanson@apple.com
  • 5 edits
    2 adds in branches/safari-601.1.46-branch

Merge r190383. rdar://problem/23432383

3:04 PM Changeset in webkit [192974] by matthew_hanson@apple.com
  • 10 edits in branches/safari-601.1.46-branch

Merge r188194. rdar://problem/23432383

3:04 PM Changeset in webkit [192973] by matthew_hanson@apple.com
  • 3 edits in branches/safari-601.1.46-branch/Source/WebCore

Merge r189427. rdar://problem/23432383

3:04 PM Changeset in webkit [192972] by matthew_hanson@apple.com
  • 7 edits in branches/safari-601.1.46-branch/Source

Merge r187544. rdar://problem/23395970

3:01 PM Changeset in webkit [192971] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

[iOS] Abrupt transition between Fullscreen -> PiP
https://bugs.webkit.org/show_bug.cgi?id=151719

Reviewed by Eric Carlson.

Follow-up to r192922: When moving from inline -> PiP, don't forget to hide the fullscreen
window once the PiP transition completes.

  • platform/ios/WebVideoFullscreenInterfaceAVKit.mm:

(WebVideoFullscreenInterfaceAVKit::didStartPictureInPicture):

2:52 PM Changeset in webkit [192970] by commit-queue@webkit.org
  • 68 edits
    3 deletes in trunk

Unreviewed, rolling out r192955.
https://bugs.webkit.org/show_bug.cgi?id=151776

A large number of the tests added with this change are failing
on Windows (Requested by ryanhaddad on #webkit).

Reverted changeset:

"[css border] border-image doesn't honor border-style"
https://bugs.webkit.org/show_bug.cgi?id=99922
http://trac.webkit.org/changeset/192955

2:41 PM Changeset in webkit [192969] by yoav@yoav.ws
  • 3 edits
    2 adds in trunk

Fix preloader issue with srcdoc documents.
https://bugs.webkit.org/show_bug.cgi?id=151744

Reviewed by Ryosuke Niwa.

Source/WebCore:

Make sure that PreloadRequest is resolving URLs based on the document's
baseURL() rather than using url() as the base URL, which is not how URLs
are resolved by the parser, and fails when document->url() diverges from
the document's base URL (e.g. in the case of srcdoc based documents).

Test: fast/preloader/iframe-srcdoc.html

  • html/parser/HTMLResourcePreloader.cpp:

(WebCore::PreloadRequest::completeURL):

LayoutTests:

Added a test that makes sure that srcdoc based subresources are properly preloaded.

  • fast/preloader/iframe-srcdoc-expected.txt: Added.
  • fast/preloader/iframe-srcdoc.html: Added.
2:35 PM Changeset in webkit [192968] by benjamin@webkit.org
  • 4 edits in trunk/Source/JavaScriptCore

Update the interface added in r192967

Patch by Benjamin Poulain <bpoulain@apple.com> on 2015-12-02

  • b3/B3CCallValue.h:

Filip prefers explicit effects.

  • b3/testb3.cpp:

(JSC::B3::testCallSimplePure):

2:12 PM Changeset in webkit [192967] by benjamin@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] Add a function attribute for Pure functions in B3
https://bugs.webkit.org/show_bug.cgi?id=151741

Patch by Benjamin Poulain <bpoulain@apple.com> on 2015-12-02
Reviewed by Geoffrey Garen.

We have plenty of functions without side effects
when lowering DFG.
This patch adds the "PureCall" flag to B3's CCall
to make sure those functions do not prevent optimizations.

  • b3/B3CCallValue.h:
  • b3/testb3.cpp:

(JSC::B3::testCallSimplePure):
(JSC::B3::run):

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

Add a setting and restriction which will pause invisible autoplaying video
https://bugs.webkit.org/show_bug.cgi?id=151412

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/video-restricted-invisible-autoplay-not-allowed.html

Drive-by fix: m_autoplaying is reset in many places by calling pause() or play(), where those
calls did not originate from an explicit request to pause or play, e.g., during an interruption.
This causes m_autoplaying to be set to false, thus breaking resumption of autoplaying when the
interruption ends. Update PlatformMediaSession to remember its client's "autoplaying" state and
restore it when an interruption ends.

Add a means to register for viewport visibility notifications to FrameView, RenderView,
and RenderElement. Elements who wish to recieve these notifications must do so through their
renderer, and thus will have to re-register whenever a new renderer is attached.

Add a restriction to HTMLMediaElement which will pause autoplaying video when that video scrolls
out of the viewport, or is hidden with CSS.

Add a setting which controls whether that new restriction is set.

  • dom/Element.h:

(WebCore::Element::isVisibleInViewportChanged): Add default empty virtual method.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::HTMLMediaElement):
(WebCore::HTMLMediaElement::didMoveToNewDocument):
(WebCore::HTMLMediaElement::documentDidResumeFromPageCache):
(WebCore::HTMLMediaElement::removeBehaviorsRestrictionsAfterFirstUserGesture):
(WebCore::HTMLMediaElement::resumeAutoplaying):
(WebCore::mediaElementIsAllowedToAutoplay):
(WebCore::HTMLMediaElement::isVisibleInViewportChanged):
(WebCore::HTMLMediaElement::updateShouldAutoplay):
(WebCore::HTMLMediaElement::HTMLMediaElement): Set the new restriction based on the current Settings.
(WebCore::HTMLMediaElement::resumeAutoplaying): Continue autoplay, or begin playback.
(WebCore::HTMLMediaElement::didMoveToNewDocument): Update our autoplay state.
(WebCore::HTMLMediaElement::documentDidResumeFromPageCache): Ditto.
(WebCore::HTMLMediaElement::removedFrom): Ditto.
(WebCore::HTMLMediaElement::didAttachRenderers): Ditto.
(WebCore::HTMLMediaElement::didDetachRenderers): Ditto.
(WebCore::HTMLMediaElement::visibilityDidChange): Ditto.
(WebCore::HTMLMediaElement::willDetachRenderers): Unregister for visibility callbacks.
(WebCore::HTMLMediaElement::removeBehaviorsRestrictionsAfterFirstUserGesture): Clear new restriction.
(WebCore::mediaElementIsAllowedToAutoplay): Check for autoplay requirements.
(WebCore::HTMLMediaElement::isVisibleInViewportChanged): Added, update our autoplay state.
(WebCore::HTMLMediaElement::updateShouldAutoplay): Set interruption if necessary, clear otherwise.

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

(WebCore::restrictionName): Added support for new restriction.

  • html/MediaElementSession.h:
  • page/FrameView.cpp:

(WebCore::FrameView::viewportContentsChanged): Update clients of viewport visibility.

  • page/Settings.in:
  • platform/audio/PlatformMediaSession.cpp:

(WebCore::stateName): Add new "Autoplay" state.
(WebCore::interruptionName): Added new interruption type.
(WebCore::PlatformMediaSession::beginInterruption): Set the m_interruptionType.
(WebCore::PlatformMediaSession::clientWillBeginAutoplaying): Set the m_state to Autoplaying.

  • platform/audio/PlatformMediaSession.h:

(WebCore::PlatformMediaSession::interruptionType): Added getter.
(WebCore::PlatformMediaSessionClient::resumeAutoplaying): Added default.

  • platform/audio/PlatformMediaSessionManager.cpp:

(WebCore::PlatformMediaSessionManager::sessionWillBeginPlayback): Only pause session if its state is playing.

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::RenderElement): Set new ivars.
(WebCore::RenderElement::~RenderElement): Unregister for callbacks if necessary.
(WebCore::RenderElement::registerForVisibleInViewportCallback): Register for callbacks from RenderView.
(WebCore::RenderElement::unregisterForVisibleInViewportCallback): Unregister from same.
(WebCore::RenderElement::visibleInViewportStateChanged): Notify Element if value has changed.

  • rendering/RenderElement.h:
  • rendering/RenderView.cpp:

(WebCore::RenderView::registerForVisibleInViewportCallback): Add renderer to list of callbacks.
(WebCore::RenderView::unregisterForVisibleInViewportCallback): Remove renderer from same.
(WebCore::RenderView::updateVisibleViewportRect): Walk renderers setting their visiblility based on the viewport visible rect.

  • rendering/RenderView.h:
  • testing/Internals.cpp:

(WebCore::Internals::setMediaElementRestrictions): Support new restriction.

LayoutTests:

  • media/video-restricted-invisible-autoplay-not-allowed-expected.txt: Added.
  • media/video-restricted-invisible-autoplay-not-allowed.html: Added.
2:09 PM Changeset in webkit [192965] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Perf dashboard should avoid overflow during geometric mean computation
https://bugs.webkit.org/show_bug.cgi?id=151773

Reviewed by Chris Dumez.

  • public/include/report-processor.php:
2:04 PM Changeset in webkit [192964] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Rebaseline fast/parser/xml-declaration-missing-ending-mark.html, fast/parser/xml-colon-entity.html for Win
https://bugs.webkit.org/show_bug.cgi?id=151763

Reviewed by Brent Fulgham.

  • platform/win/fast/parser/xml-colon-entity-expected.txt:
  • platform/win/fast/parser/xml-declaration-missing-ending-mark-expected.txt:
1:47 PM Changeset in webkit [192963] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Rebaseline fast/dynamic/text-combine.html on win
https://bugs.webkit.org/show_bug.cgi?id=151761

Unreviewed test gardening.

  • platform/win/fast/dynamic/text-combine-expected.png:
  • platform/win/fast/dynamic/text-combine-expected.txt:
1:41 PM Changeset in webkit [192962] by Ryan Haddad
  • 2 edits in trunk/LayoutTests/imported/w3c

Rebaseline imported/w3c/web-platform-tests/html/dom/interfaces.html after r192953
https://bugs.webkit.org/show_bug.cgi?id=116963

Unreviewed test gardening.

  • web-platform-tests/html/dom/interfaces-expected.txt:
1:37 PM Changeset in webkit [192961] by bshafiei@apple.com
  • 5 edits in branches/safari-601-branch/Source

Versioning.

1:33 PM Changeset in webkit [192960] by beidson@apple.com
  • 10 edits
    3 deletes in trunk/LayoutTests

Modern IDB: Remove all traces of IDBObjectStore::openKeyCursor from tests.
https://bugs.webkit.org/show_bug.cgi?id=151772

Reviewed by Alex Christensen.

IDBObjectStore::openKeyCursor no longer exists, so testing it is inherently bogus.

  • platform/mac-wk1/TestExpectations: Two tests now pass with small expectations changes.
  • storage/indexeddb/cursor-basics-expected.txt:
  • storage/indexeddb/cursor-overloads-expected.txt:
  • storage/indexeddb/cursor-overloads.html:
  • storage/indexeddb/optional-arguments.html:
  • storage/indexeddb/resources/cursor-basics.js:
  • storage/indexeddb/resources/deleted-objects.js:
  • storage/indexeddb/resources/exceptions.js:
  • storage/indexeddb/resources/objectstore-basics.js:
  • storage/indexeddb/objectstore-keycursor-expected.txt: Removed.
  • storage/indexeddb/objectstore-keycursor.html: Removed.
  • storage/indexeddb/resources/objectstore-keycursor.js: Removed.
12:57 PM Changeset in webkit [192959] by hyatt@apple.com
  • 1 edit
    4 adds in trunk/LayoutTests

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.

Add some more picture element layout tests
https://bugs.webkit.org/show_bug.cgi?id=151769

Reviewed by Dean Jackson.

  • fast/picture/image-picture-invalid-expected.txt: Added.
  • fast/picture/image-picture-invalid.html: Added.
  • fast/picture/image-picture-nested-expected.txt: Added.
  • fast/picture/image-picture-nested.html: Added.
12:53 PM Changeset in webkit [192958] by beidson@apple.com
  • 3 edits in trunk/LayoutTests

Modern IDB: Enable a couple more passing tests.
https://bugs.webkit.org/show_bug.cgi?id=151766

Reviewed by Beth Dakin.

  • platform/mac-wk1/TestExpectations:
  • storage/indexeddb/create-object-store-options-expected.txt:
12:50 PM Changeset in webkit [192957] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skipping tests on Win that fail due to unimplemented showModalDialog function.
https://bugs.webkit.org/show_bug.cgi?id=151506

Unreviewed test gardening.

  • platform/win/TestExpectations:
12:32 PM Changeset in webkit [192956] by beidson@apple.com
  • 12 edits in trunk

Modern IDB: IDBTransaction::error is not exposed.
https://bugs.webkit.org/show_bug.cgi?id=151752

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (At least 3 failing tests now pass, plus changes to other faulty tests).

  • Modules/indexeddb/client/IDBRequestImpl.cpp:

(WebCore::IDBClient::IDBRequest::dispatchEvent):
(WebCore::IDBClient::IDBRequest::uncaughtExceptionInEventHandler):

  • Modules/indexeddb/client/IDBRequestImpl.h:
  • Modules/indexeddb/client/IDBTransactionImpl.cpp:

(WebCore::IDBClient::IDBTransaction::error):
(WebCore::IDBClient::IDBTransaction::abortDueToFailedRequest):
(WebCore::IDBClient::IDBTransaction::abort):
(WebCore::IDBClient::IDBTransaction::didCreateIndexOnServer):

  • Modules/indexeddb/client/IDBTransactionImpl.h:

LayoutTests:

  • platform/mac-wk1/TestExpectations:
  • storage/indexeddb/modern/basic-add.html:
  • storage/indexeddb/modern/double-abort-expected.txt:
  • storage/indexeddb/modern/index-3.html:
  • storage/indexeddb/resources/transaction-error.js:
  • storage/indexeddb/transaction-error-expected.txt:
12:25 PM Changeset in webkit [192955] by cavalcantii@gmail.com
  • 68 edits
    3 adds in trunk

[css border] border-image doesn't honor border-style
https://bugs.webkit.org/show_bug.cgi?id=99922

Reviewed by Simon Fraser.

Source/WebCore:

Ensure that WebKit will be compliant to css-backgrounds spec where a
border with an image will only be rendered if there is a style defined.

Quote: "None: No border. Color and width are ignored (i.e., the border has width 0)".
Reference: http://www.w3.org/TR/css3-background/#border-style

From W3C discussion: "The fact that these properties set the style of the border is
normative". Reference: https://lists.w3.org/Archives/Public/www-style/2015Nov/0260.html

Test: fast/borders/border-image-should-not-display.html

  • rendering/style/BorderData.h:

(WebCore::BorderData::hasBorder):
(WebCore::BorderData::borderLeftWidth):
(WebCore::BorderData::borderRightWidth):
(WebCore::BorderData::borderTopWidth):
(WebCore::BorderData::borderBottomWidth):

  • rendering/style/BorderValue.h:

(WebCore::BorderValue::nonZero):
(WebCore::BorderValue::isVisible):

LayoutTests:

Ensure that WebKit will be compliant to css-backgrounds spec where
a border with an image will only be rendered if there is a style defined.

Previous border image tests had to be edited (i.e. define border-style)
to ensure that a decorated border would be rendered.

  • fast/borders/border-image-01.html:
  • fast/borders/border-image-border-radius.html:
  • fast/borders/border-image-fill-no-intrinsic-size.html:
  • fast/borders/border-image-longhand.html:
  • fast/borders/border-image-massive-scale.html:
  • fast/borders/border-image-omit-right-slice.html:
  • fast/borders/border-image-outset-in-shorthand.html:
  • fast/borders/border-image-outset-split-inline-expected.txt:
  • fast/borders/border-image-outset-split-inline-vertical-lr-expected.txt:
  • fast/borders/border-image-outset-split-inline-vertical-lr.html:
  • fast/borders/border-image-outset-split-inline.html:
  • fast/borders/border-image-outset.html:
  • fast/borders/border-image-repeat.html:
  • fast/borders/border-image-rotate-transform.html:
  • fast/borders/border-image-scale-transform.html:
  • fast/borders/border-image-scaled.html:
  • fast/borders/border-image-scrambled.html:
  • fast/borders/border-image-should-not-display-expected.html: Added.
  • fast/borders/border-image-should-not-display.html: Added.
  • fast/borders/border-image-side-reduction.html:
  • fast/borders/border-image-slice-constrained.html:
  • fast/borders/border-image-slice-missing-right.html:
  • fast/borders/border-image-slices.html:
  • fast/borders/border-image-source.html:
  • fast/borders/border-image-trumps-radius-expected.txt:
  • fast/borders/border-image-trumps-radius.html:
  • fast/borders/hidpi-border-image-gradient-on-subpixels.html:
  • fast/borders/resources/red.png: Added.
  • fast/borders/scaled-border-image.html:
  • fast/gradients/border-image-gradient-expected.txt:
  • fast/gradients/border-image-gradient.html:
  • fast/hidpi/image-set-border-image-comparison.html:
  • fast/hidpi/image-set-border-image-dynamic.html:
  • fast/hidpi/image-set-border-image-simple.html:
  • fast/writing-mode/border-image-horizontal-bt.html:
  • fast/writing-mode/border-image-vertical-lr.html:
  • fast/writing-mode/border-image-vertical-rl.html:
  • platform/mac/fast/borders/border-image-01-expected.txt:
  • platform/mac/fast/borders/border-image-border-radius-expected.txt:
  • platform/mac/fast/borders/border-image-longhand-expected.txt:
  • platform/mac/fast/borders/border-image-massive-scale-expected.txt:
  • platform/mac/fast/borders/border-image-omit-right-slice-expected.txt:
  • platform/mac/fast/borders/border-image-outset-expected.txt:
  • platform/mac/fast/borders/border-image-outset-in-shorthand-expected.txt:
  • platform/mac/fast/borders/border-image-repeat-expected.txt:
  • platform/mac/fast/borders/border-image-rotate-transform-expected.txt:
  • platform/mac/fast/borders/border-image-scale-transform-expected.txt:
  • platform/mac/fast/borders/border-image-scaled-expected.txt:
  • platform/mac/fast/borders/border-image-scrambled-expected.txt:
  • platform/mac/fast/borders/border-image-side-reduction-expected.txt:
  • platform/mac/fast/borders/border-image-slice-constrained-expected.txt:
  • platform/mac/fast/borders/border-image-slices-expected.txt:
  • platform/mac/fast/borders/border-image-source-expected.txt:
  • platform/mac/fast/borders/scaled-border-image-expected.txt:
  • platform/mac/fast/hidpi/image-set-border-image-comparison-expected.txt:
  • platform/mac/fast/hidpi/image-set-border-image-dynamic-expected.txt:
  • platform/mac/fast/hidpi/image-set-border-image-simple-expected.txt:
  • platform/mac/fast/writing-mode/border-image-horizontal-bt-expected.txt:
  • platform/mac/fast/writing-mode/border-image-vertical-lr-expected.txt:
  • platform/mac/fast/writing-mode/border-image-vertical-rl-expected.txt:
12:20 PM Changeset in webkit [192954] by eric.carlson@apple.com
  • 43 edits
    4 moves
    3 adds
    2 deletes in trunk

[MediaStream] Implement MediaStreamTrack.getSettings()
https://bugs.webkit.org/show_bug.cgi?id=151727

Reviewed by Jer Noble.

Source/WebCore:

MediaStreamTrack.getStates has been replaced by MediaStreamTrack.getSettings.

Test: fast/mediastream/MediaStreamTrack-getSettings.html

  • CMakeLists.txt: MediaSourceStates.* -> MediaSourceSettings.*.
  • DerivedSources.make: No more MediaSourceStates.idl.
  • Modules/mediastream/CapabilityRange.cpp: MediaSourceStates.* -> MediaSourceSettings.*.
  • Modules/mediastream/MediaSourceSettings.cpp: Copied from Source/WebCore/Modules/mediastream/MediaSourceStates.cpp.

(WebCore::MediaSourceSettings::create):
(WebCore::MediaSourceSettings::MediaSourceSettings):
(WebCore::MediaSourceSettings::facingMode):
(WebCore::MediaSourceStates::create): Deleted.
(WebCore::MediaSourceStates::MediaSourceStates): Deleted.
(WebCore::MediaSourceStates::sourceType): Deleted.
(WebCore::MediaSourceStates::facingMode): Deleted.

  • Modules/mediastream/MediaSourceSettings.h: Copied from Source/WebCore/Modules/mediastream/MediaSourceStates.h.

MediaSourceStates.* renamed to MediaSourceSettings.* and updated to new API.

  • Modules/mediastream/MediaSourceStates.cpp: Removed.
  • Modules/mediastream/MediaSourceStates.h: Removed.
  • Modules/mediastream/MediaSourceStates.idl: Removed.
  • Modules/mediastream/MediaStreamCapabilities.cpp:

(WebCore::MediaStreamCapabilities::sourceType): Return an empty vector for now, will be fixed

by the changes for https://bugs.webkit.org/show_bug.cgi?id=151728.

(WebCore::MediaStreamCapabilities::sourceId): RealtimeMediaSourceStates -> MediaSourceSettings.
(WebCore::MediaStreamCapabilities::facingMode): Ditto.

  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::MediaStreamTrack::getSettings): New.
(WebCore::MediaStreamTrack::getCapabilities): Don't modify states, just pass through whatever

private track returns.

(WebCore::MediaStreamTrack::trackSettingsChanged):
(WebCore::MediaStreamTrack::states): Deleted.
(WebCore::MediaStreamTrack::trackStatesChanged): Deleted.

  • Modules/mediastream/MediaStreamTrack.h:
  • Modules/mediastream/MediaStreamTrack.idl: MediaSourceStates -> MediaSourceSettings.
  • Modules/webaudio/MediaStreamAudioSource.cpp:

(WebCore::MediaStreamAudioSource::settings):
(WebCore::MediaStreamAudioSource::states): Deleted.

  • Modules/webaudio/MediaStreamAudioSource.h: MediaSourceStates -> MediaSourceSettings.
  • WebCore.xcodeproj/project.pbxproj: MediaSourceStates.* -> MediaSourceSettings.*.
  • bindings/js/JSMediaSourceStatesCustom.cpp: Removed.
  • bindings/js/JSMediaStreamTrackCustom.cpp: Added.

(WebCore::JSMediaStreamTrack::getSettings): MediaSourceSettings is a generic dictionary so

it has to be generated manually.

  • platform/mediastream/MediaStreamPrivate.cpp:

(WebCore::MediaStreamPrivate::intrinsicSize): states -> settings.
(WebCore::MediaStreamPrivate::trackStatesChanged): Deleted.

  • platform/mediastream/MediaStreamPrivate.h:
  • platform/mediastream/MediaStreamTrackPrivate.cpp:

(WebCore::MediaStreamTrackPrivate::settings):
(WebCore::MediaStreamTrackPrivate::sourceSettingsChanged):
(WebCore::MediaStreamTrackPrivate::states): Deleted.
(WebCore::MediaStreamTrackPrivate::sourceStatesChanged): Deleted.

  • platform/mediastream/MediaStreamTrackPrivate.h:
  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::settingsDidChanged):
(WebCore::RealtimeMediaSource::statesDidChanged): Deleted.

  • platform/mediastream/RealtimeMediaSource.h:
  • platform/mediastream/RealtimeMediaSourceCapabilities.h:

(WebCore::RealtimeMediaSourceCapabilities::facingModes): States -> Settings.
(WebCore::RealtimeMediaSourceCapabilities::addFacingMode): Ditto.
(WebCore::RealtimeMediaSourceCapabilities::sourceTypes): Deleted.
(WebCore::RealtimeMediaSourceCapabilities::setSourceType): Deleted.
(WebCore::RealtimeMediaSourceCapabilities::addSourceType): Deleted.

  • platform/mediastream/RealtimeMediaSourceCenter.h: States -> Settings.
  • platform/mediastream/RealtimeMediaSourceSettings.cpp: Copied from Source/WebCore/platform/mediastream/RealtimeMediaSourceStates.cpp.

(WebCore::RealtimeMediaSourceSettings::facingMode):
(WebCore::RealtimeMediaSourceStates::facingMode): Deleted.
(WebCore::RealtimeMediaSourceStates::sourceType): Deleted.

  • platform/mediastream/RealtimeMediaSourceSettings.h: Copied from Source/WebCore/platform/mediastream/RealtimeMediaSourceStates.h.
  • platform/mediastream/RealtimeMediaSourceStates.cpp: Removed.
  • platform/mediastream/RealtimeMediaSourceStates.h: Removed.
  • platform/mediastream/mac/AVAudioCaptureSource.h:
  • platform/mediastream/mac/AVAudioCaptureSource.mm:

(WebCore::AVAudioCaptureSource::updateStates): Deleted.

  • platform/mediastream/mac/AVCaptureDeviceManager.h:
  • platform/mediastream/mac/AVCaptureDeviceManager.mm:
  • platform/mediastream/mac/AVMediaCaptureSource.h:
  • platform/mediastream/mac/AVMediaCaptureSource.mm:

(WebCore::AVMediaCaptureSource::states): Deleted.

  • platform/mediastream/mac/AVVideoCaptureSource.h:
  • platform/mediastream/mac/AVVideoCaptureSource.mm:

(WebCore::AVVideoCaptureSource::updateStates): Deleted.

  • platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
  • platform/mediastream/openwebrtc/RealtimeMediaSourceOwr.h:
  • platform/mock/MockRealtimeAudioSource.cpp:

(WebCore::MockRealtimeAudioSource::initializeSupportedConstraints):
(WebCore::MockRealtimeAudioSource::updateStates): Deleted.

  • platform/mock/MockRealtimeAudioSource.h:
  • platform/mock/MockRealtimeMediaSource.cpp:

(WebCore::MockRealtimeMediaSource::capabilities): Minor cleanup.
(WebCore::MockRealtimeMediaSource::settings):
(WebCore::MockRealtimeMediaSource::supportedConstraints):
(WebCore::MockRealtimeMediaSource::states): Deleted.

  • platform/mock/MockRealtimeMediaSource.h:

(WebCore::MockRealtimeMediaSource::constraints):
(WebCore::MockRealtimeMediaSource::currentStates): Deleted.

  • platform/mock/MockRealtimeVideoSource.cpp:

(WebCore::MockRealtimeVideoSource::updateSettings):
(WebCore::MockRealtimeVideoSource::initializeCapabilities):
(WebCore::MockRealtimeVideoSource::initializeSupportedConstraints):
(WebCore::MockRealtimeVideoSource::setFrameRate): states -> settings.
(WebCore::MockRealtimeVideoSource::setSize): Ditto.
(WebCore::MockRealtimeVideoSource::drawAnimation): Ditto.
(WebCore::MockRealtimeVideoSource::drawText): Ditto.
(WebCore::MockRealtimeVideoSource::updateStates): Deleted.
(WebCore::MockRealtimeVideoSource::setFacingMode): Deleted.

  • platform/mock/MockRealtimeVideoSource.h:

LayoutTests:

  • fast/mediastream/MediaStream-video-element-expected.txt:
  • fast/mediastream/MediaStream-video-element-track-stop-expected.txt:
  • fast/mediastream/MediaStream-video-element-track-stop.html:
  • fast/mediastream/MediaStream-video-element.html:
  • fast/mediastream/MediaStreamTrack-getSettings-expected.txt: Added.
  • fast/mediastream/MediaStreamTrack-getSettings.html: Added.
12:13 PM Changeset in webkit [192953] by hyatt@apple.com
  • 20 edits
    10 adds in trunk

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.

Implement the picture element.
https://bugs.webkit.org/show_bug.cgi?id=116963

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/srcset/select-an-image-source-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set-expected.txt:

Source/WebCore:

Added fast/picture tests.

  • WebCore.xcodeproj/project.pbxproj:

Add HTMLPictureElement.* to the project.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setBestFitURLAndDPRFromImageCandidate):
Remove the CURRENT_SRC ifdef.

(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
New helper function that checks the <source> elements of a <picture> parent
for the best match.

(WebCore::HTMLImageElement::selectImageSource):
Pull out the process of image selection into its own function so that this can
be called from many places (to ensure that dynamic changes are reflected as elements
get changed, added or removed).

(WebCore::HTMLImageElement::parseAttribute):
Call selectImageSource when attributes change.

(WebCore::HTMLImageElement::insertedInto):
If inserted into a picture element, make sure to update the source.

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::currentSrc):
Remove the CURRENT_SRC ifdef.

  • html/HTMLImageElement.idl:

Remove the CURRENT_SRC ifdef.

  • html/HTMLPictureElement.cpp: Added.

(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):

  • html/HTMLPictureElement.h: Added.

The new picture element. Has a sourcesChanged() function that is invoked whenever anything
about the <source> elements changes.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
(WebCore::HTMLSourceElement::parseAttribute):
Make sure to call sourcesChanged when new sources come and go or when attributes on
source elements change.

  • html/HTMLSourceElement.h:

Added parseAttribute function so we can see when attributes change that force us to
do a dynamic update.

  • html/HTMLTagNames.in:

Add the picture element.

  • html/parser/HTMLSrcsetParser.h:

(WebCore::ImageCandidate::srcOrigin):
(WebCore::ImageCandidate::isEmpty):
Some helpers for picture parsing.

LayoutTests:

  • fast/picture: Added.
  • fast/picture/image-picture-1x-expected.txt: Added.
  • fast/picture/image-picture-1x.html: Added.
  • fast/picture/resources: Added.
  • fast/picture/resources/blue_rect.jpg: Added.
  • fast/picture/resources/currentSrcHelper.js: Added.

(fileName):
(currentSrcFileName):
(currentSrcFileNameNoParams):

  • fast/picture/resources/image-set-4x.png: Added.
12:10 PM Changeset in webkit [192952] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Removed unnecessary #if USE(JSVALUE64).
https://bugs.webkit.org/show_bug.cgi?id=151733

Not reviewed.

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

11:46 AM Changeset in webkit [192951] by peavo@outlook.com
  • 2 edits in trunk/Source/WebCore

[WinCairo][MediaFoundation] Video is not rendered correctly on some graphics cards.
https://bugs.webkit.org/show_bug.cgi?id=151757

Reviewed by Alex Christensen.

We need to make sure we use the same bitmap format as in the Direct3D surface
in video memory when copying surface data and rendering with Cairo.

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:

(WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::presentSample):
(WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::paintCurrentFrame):

11:20 AM Changeset in webkit [192950] by mark.lam@apple.com
  • 9 edits in trunk/Source/JavaScriptCore

Use the JITAddGenerator snippet in the FTL.
https://bugs.webkit.org/show_bug.cgi?id=151519

Reviewed by Geoffrey Garen.

One detail about how we choosing to handle operands to the binary snippets that
may be constant: the slow path call to a C++ function still needs the constant
operand loaded in a register. To simplify things, we're choosing to always tell
LLVM to load the operands into registers even if they may be constant. However,
even though a constant operand is preloaded in a register, the snippet generator
will not be made aware of it. It will continue to load the constant as an
immediate.

  • ftl/FTLCompile.cpp:
  • ftl/FTLCompileBinaryOp.cpp:

(JSC::FTL::generateArithSubFastPath):
(JSC::FTL::generateValueAddFastPath):

  • generateValueAddFastPath() currently is an exact copy of generateArithSubFastPath() except that it uses JITAddGenerator instead of JITSubGenerator. When we add support for JITMulGenerator later, the code will start to vary. We'll refactor these functions then when we have more insight into what needs to vary between the implementations.
  • ftl/FTLCompileBinaryOp.h:
  • ftl/FTLInlineCacheDescriptor.h:
  • ftl/FTLInlineCacheDescriptorInlines.h:

(JSC::FTL::ValueAddDescriptor::ValueAddDescriptor):
(JSC::FTL::ValueAddDescriptor::icSize):

  • ftl/FTLInlineCacheSize.cpp:

(JSC::FTL::sizeOfValueAdd):

  • ftl/FTLInlineCacheSize.h:
  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::DFG::LowerDFGToLLVM::lower):
(JSC::FTL::DFG::LowerDFGToLLVM::compileValueAdd):

11:15 AM Changeset in webkit [192949] by mark.lam@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Teach DFG that ArithSub can now clobber the heap (and other things).
https://bugs.webkit.org/show_bug.cgi?id=151733

Reviewed by Geoffrey Garen.

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGPredictionPropagationPhase.cpp:

(JSC::DFG::PredictionPropagationPhase::propagate):

11:13 AM Changeset in webkit [192948] by beidson@apple.com
  • 12 edits in trunk/Source/WebCore

Modern IDB: Get rid of IDBExceptionCode.
https://bugs.webkit.org/show_bug.cgi?id=151753

Reviewed by Alex Christensen.

No new tests (No change in behavior).

  • Modules/indexeddb/client/IDBIndexImpl.cpp:

(WebCore::IDBClient::IDBIndex::count):
(WebCore::IDBClient::IDBIndex::doCount):
(WebCore::IDBClient::IDBIndex::get):
(WebCore::IDBClient::IDBIndex::doGet):
(WebCore::IDBClient::IDBIndex::getKey):
(WebCore::IDBClient::IDBIndex::doGetKey):

  • Modules/indexeddb/client/IDBObjectStoreImpl.cpp:

(WebCore::IDBClient::IDBObjectStore::get):
(WebCore::IDBClient::IDBObjectStore::deleteFunction):
(WebCore::IDBClient::IDBObjectStore::clear):
(WebCore::IDBClient::IDBObjectStore::createIndex):
(WebCore::IDBClient::IDBObjectStore::index):
(WebCore::IDBClient::IDBObjectStore::deleteIndex):
(WebCore::IDBClient::IDBObjectStore::count):
(WebCore::IDBClient::IDBObjectStore::doCount):

  • Modules/indexeddb/client/IDBOpenDBRequestImpl.cpp:

(WebCore::IDBClient::IDBOpenDBRequest::fireErrorAfterVersionChangeAbort):

  • Modules/indexeddb/client/IDBTransactionImpl.cpp:

(WebCore::IDBClient::IDBTransaction::abortOnServerAndCancelRequests):

  • Modules/indexeddb/server/IndexValueStore.cpp:

(WebCore::IDBServer::IndexValueStore::addRecord):

  • Modules/indexeddb/server/MemoryIDBBackingStore.cpp:

(WebCore::IDBServer::MemoryIDBBackingStore::beginTransaction):
(WebCore::IDBServer::MemoryIDBBackingStore::abortTransaction):
(WebCore::IDBServer::MemoryIDBBackingStore::commitTransaction):
(WebCore::IDBServer::MemoryIDBBackingStore::createObjectStore):
(WebCore::IDBServer::MemoryIDBBackingStore::deleteObjectStore):
(WebCore::IDBServer::MemoryIDBBackingStore::clearObjectStore):
(WebCore::IDBServer::MemoryIDBBackingStore::createIndex):
(WebCore::IDBServer::MemoryIDBBackingStore::deleteIndex):
(WebCore::IDBServer::MemoryIDBBackingStore::deleteRange):
(WebCore::IDBServer::MemoryIDBBackingStore::addRecord):
(WebCore::IDBServer::MemoryIDBBackingStore::getRecord):
(WebCore::IDBServer::MemoryIDBBackingStore::getIndexRecord):
(WebCore::IDBServer::MemoryIDBBackingStore::getCount):
(WebCore::IDBServer::MemoryIDBBackingStore::openCursor):
(WebCore::IDBServer::MemoryIDBBackingStore::iterateCursor):

  • Modules/indexeddb/server/MemoryIndex.cpp:

(WebCore::IDBServer::MemoryIndex::putIndexKey):

  • Modules/indexeddb/server/MemoryObjectStore.cpp:

(WebCore::IDBServer::MemoryObjectStore::createIndex):
(WebCore::IDBServer::MemoryObjectStore::deleteIndex):

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::handleOpenDatabaseOperations):
(WebCore::IDBServer::UniqueIDBDatabase::performPutOrAdd):

  • Modules/indexeddb/shared/IDBError.cpp:

(WebCore::IDBError::IDBError):
(WebCore::IDBError::name):
(WebCore::IDBError::message):
(WebCore::idbErrorName): Deleted.
(WebCore::idbErrorDescription): Deleted.

  • Modules/indexeddb/shared/IDBError.h:

(WebCore::IDBError::code):
(WebCore::IDBError::isNull):

11:04 AM Changeset in webkit [192947] by jiewen_tan@apple.com
  • 3 edits
    2 adds in trunk

Null dereference loading Blink layout test fast/loader/unload-mutation-crash.html
https://bugs.webkit.org/show_bug.cgi?id=149305
<rdar://problem/22747892>

Reviewed by Brent Fulgham.

Source/WebCore:

Add an extra guard to replaceDocument() against rude JS in unload event handlers.

Test: fast/loader/unload-mutation-crash.html

  • loader/DocumentWriter.cpp:

(WebCore::DocumentWriter::replaceDocument):
(WebCore::DocumentWriter::begin):

LayoutTests:

This test case is from Blink r180918:
https://codereview.chromium.org/495743003

  • fast/loader/unload-mutation-crash-expected.txt: Added.
  • fast/loader/unload-mutation-crash.html: Added.
10:49 AM Changeset in webkit [192946] by commit-queue@webkit.org
  • 7 edits
    2 adds in trunk/Source/JavaScriptCore

[JSC] Handle x86 partial register stalls in Air
https://bugs.webkit.org/show_bug.cgi?id=151735

Patch by Benjamin Poulain <bpoulain@apple.com> on 2015-12-02
Reviewed by Filip Pizlo.

This patch adds a primitive false-dependency breaking
algorithm to Air. We look for redefinition of the same
variable that is too close to a partial definition.

There is not explicit dependency tracking going on,
but it is pretty fast and the extra xorps added on false-positives
are cheap anyway.

Typically, partial register stalls appear from instructions
interfering with themselves in small loops. Something like:

Label0:

cvtsi2sdq %eax, %xmm0
...
jmp Label0

Those are correctly detected by propagating the local distance
information from block to block until no unsafe chain is found.

The test testInt32ToDoublePartialRegisterStall() checks the kind
of cases we typically find from JavaScript.
The execution time is 20% faster with a register reset (which is
astounding since the very next instruction has a real dependency).

Future tweaks will be needed when we can run more JavaScript:
-Handle function calls differently.
-Anything with a special can have hidden instructions.

We need to take them into account.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::moveZeroToDouble):

  • assembler/X86Assembler.h:

(JSC::X86Assembler::xorps_rr):
(JSC::X86Assembler::xorpd_rr):
According to the documentation, starting with Sandy Bridge,
registers reset can be done in the frontend with xorps.

  • b3/B3IndexSet.h:

(JSC::B3::IndexSet::remove):

  • b3/air/AirFixPartialRegisterStalls.cpp: Added.

(JSC::B3::Air::fixPartialRegisterStalls):

  • b3/air/AirFixPartialRegisterStalls.h: Added.
  • b3/air/AirGenerate.cpp:

(JSC::B3::Air::prepareForGeneration):

  • b3/testb3.cpp:

(JSC::B3::testInt32ToDoublePartialRegisterStall):
(JSC::B3::run):

  • jit/FPRInfo.h:
9:27 AM Changeset in webkit [192945] by commit-queue@webkit.org
  • 6 edits in trunk

Web Inspector: Handle YieldExpressions in the ScriptSyntaxTree
https://bugs.webkit.org/show_bug.cgi?id=151730

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-12-02
Reviewed by Brian Burg.

Source/WebInspectorUI:

  • UserInterface/Models/NativeFunctionParameters.js:

Add the Generator API.

  • UserInterface/Models/ScriptSyntaxTree.js:

(WebInspector.ScriptSyntaxTree.prototype._recurse):
(WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
Handle YieldExpressions.

LayoutTests:

  • inspector/model/parse-script-syntax-tree-expected.txt:
  • inspector/model/parse-script-syntax-tree.html:
8:53 AM Changeset in webkit [192944] by Brent Fulgham
  • 25 edits in trunk/Tools

[Win] Run non-http tests without Cygwin
https://bugs.webkit.org/show_bug.cgi?id=151721

Reviewed by Andy Estes.

Support native 32-bit and 64-bit Python (and Perl) builds
for running tests:

  1. Use "startswith('win')", rather than "== 'win32'" to support

various Windows build types.

  1. Supply full path for some native Windows utilities, since the

path environment does not always have the specified, and they are
guaranteed to exist in those specific locations.

  1. Make sure native Windows Python test runs pass proper environment

variables to run programs.

  1. Append 'exe' suffix when running Windows executables.
  2. Use the _winreg Python module on Windows, since the Cygwin 'regtool'

command doesn't exist.

  • Scripts/update-webkit: Use Perl $X command to refer to the path of

the current Perl executable, rather than requiring a new path search.

  • Scripts/webkitpy/common/find_files_unittest.py:

(TestWinNormalize.test_win): Use startswith('win').

  • Scripts/webkitpy/common/prettypatch_unittest.py:

(test_pretty_diff_encodings): Ditto.

  • Scripts/webkitpy/common/system/executive.py:

(Executive._should_close_fds): Ditto.
(Executive.shell_command_for_script): Use startswith('win').
(Executive.kill_process): Use full path to killall executable.
(Executive.check_running_pid): Use startswith('win').
(Executive.running_pids): Ditto.
(Executive.kill_all): Ditto. Also use path to 'killall' executable when
running under native Windows Python.
(Executive._child_process_encoding): Use startswith('win').
(Executive._should_encode_child_process_arguments): Ditto.
(Executive.popen): Recognize proper script engine on Windows, since it
does not support the shebang syntax.
(Executive.run_in_parallel): Use startswith('win').

  • Scripts/webkitpy/common/system/executive_unittest.py:

(never_ending_command): Ditto.
(ExecutiveTest.test_run_command_with_unicode): Ditto.
(ExecutiveTest.serial_test_kill_process): Ditto.
(ExecutiveTest.serial_test_kill_all): Ditto.
(ExecutiveTest.serial_test_check_running_pid): Ditto.
(ExecutiveTest.serial_test_run_in_parallel): Ditto.
(main): Ditto.

  • Scripts/webkitpy/common/system/file_lock.py:

(FileLock._create_lock): Ditto.
(FileLock._remove_lock): Ditto.

  • Scripts/webkitpy/common/system/filesystem_unittest.py:

(RealFileSystemTest.test_chdir): Ditto.
(RealFileSystemTest.test_chdirnotexists): Ditto.
(RealFileSystemTest.test_maybe_make_directory
failure): Ditto.

  • Scripts/webkitpy/common/system/path_unittest.py:

(AbspathTest.test_abspath_to_uri_win): Ditto.

  • Scripts/webkitpy/common/system/platforminfo.py:

(PlatformInfo._determine_os_name): Ditto.

  • Scripts/webkitpy/common/system/user.py: Ditto.
  • Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:

(ManagerTest.integration_test_needs_servers): Ditto.

  • Scripts/webkitpy/layout_tests/servers/apache_http_server.py:

(LayoutTestApacheHttpd.init): Handle upper and lower-case
driver letters.
(LayoutTestApacheHttpd._get_apache_config_file_path): Ditto.

  • Scripts/webkitpy/layout_tests/servers/apache_http_server_unittest.py:

(TestLayoutTestApacheHttpd.test_start_cmd): Ditto.

  • Scripts/webkitpy/layout_tests/servers/http_server_base.py:

(HttpServerBase._check_that_all_ports_are_available): Ditto.

  • Scripts/webkitpy/layout_tests/servers/http_server_unittest.py:

(TestHttpServer.test_start_cmd): Ditto.

  • Scripts/webkitpy/port/base.py:

(Port.to.setup_environ_for_server): Include 'COMSPEC', 'SYSTEMDRIVE',
and 'SYSTEMROOT' in environment passed to test runners.
(Port._apache_config_file_name_for_platform): Use startswith('win').
(Port._build_path): Ditto.
(Port._path_to_driver): Include 'exe' suffix when running under native
Windows.

  • Scripts/webkitpy/port/driver.py:

(Driver._setup_environ_for_driver): Explicitly make some environment
variables strings.

  • Scripts/webkitpy/port/server_process.py:

(ServerProcess.init): Use startswith('win').

  • Scripts/webkitpy/port/win.py:

(WinPort): Use the win32 registry utilities on Windows, and appropriate
registry key formats.
(WinPort._ntsd_location): Revise tool search paths for Windows 10.
(WinPort.read_registry_value): Revise to use _winreg library on Windows,
and regtool on Cygwin.
(WinPort.write_registry_value): Ditto.
(WinPort.setup_crash_log_saving): Ditto.
(WinPort.restore_crash_log_saving): Ditto.
(WinPort.prevent_error_dialogs): Ditto.
(WinPort.allow_error_dialogs): Ditto.
(WinPort.find_system_pid): Revise to use Windows management
infrastructure on native Windows, continue using 'ps' on Cygwin.
(WinPort.read_registry_string): Deleted.
(WinPort.write_registry_string): Deleted.

  • Scripts/webkitpy/test/main.py:

(main): Use startswith('win').
(Tester._parse_args): Ditto.

4:08 AM Changeset in webkit [192943] by peavo@outlook.com
  • 2 edits in trunk/Source/WebCore

[WinCairo] Compile error.
https://bugs.webkit.org/show_bug.cgi?id=151742

Reviewed by Csaba Osztrogonác.

System font flag has moved from Font class to FontData class.

  • platform/graphics/win/SimpleFontDataCairoWin.cpp:

(WebCore::Font::platformInit):

Dec 1, 2015:

11:49 PM Changeset in webkit [192942] by bshafiei@apple.com
  • 5 edits in trunk/Source

Versioning.

11:48 PM Changeset in webkit [192941] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.13

New tag.

7:55 PM Changeset in webkit [192940] by mmaxfield@apple.com
  • 3 edits in trunk/LayoutTests

[Win] Test gardening after r192895

Unreviewed.

  • fast/text/emoji-overlap-expected.html:
  • fast/text/emoji-overlap.html:
7:38 PM Changeset in webkit [192939] by Hunseop Jeong
  • 2 edits in trunk/Source/WebKit2

Unreviewed, fix build after r192931.

  • CMakeLists.txt: Remove the WKOriginDataManager in CMakeLists.txt.
7:23 PM Changeset in webkit [192938] by commit-queue@webkit.org
  • 3 edits
    3 deletes in trunk

Unreviewed, rolling out r192894 and r192904.
https://bugs.webkit.org/show_bug.cgi?id=151738

Crashes sometimes on Windows (Requested by litherum on
#webkit).

Reverted changesets:

"[Win] Web fonts with small caps have excess whitespace with
the complex text codepath"
https://bugs.webkit.org/show_bug.cgi?id=151698
http://trac.webkit.org/changeset/192894

"Test gardening after r192894"
http://trac.webkit.org/changeset/192904

7:16 PM Changeset in webkit [192937] by Yusuke Suzuki
  • 90 edits
    2 copies
    28 adds in trunk

[ES6] Implement LLInt/Baseline Support for ES6 Generators and enable this feature
https://bugs.webkit.org/show_bug.cgi?id=150792

Reviewed by Saam Barati.

.:

  • Source/cmake/OptionsWin.cmake:
  • Source/cmake/WebKitFeatures.cmake:

Source/JavaScriptCore:

This patch implements basic functionality of ES6 Generators in LLInt and Baseline tiers.
While the implementation has some inefficient part, the implementation covers edge cases.
Later, we will make this efficient.

https://bugs.webkit.org/show_bug.cgi?id=151545
https://bugs.webkit.org/show_bug.cgi?id=151546
https://bugs.webkit.org/show_bug.cgi?id=151547
https://bugs.webkit.org/show_bug.cgi?id=151552
https://bugs.webkit.org/show_bug.cgi?id=151560
https://bugs.webkit.org/show_bug.cgi?id=151586

To encourage DFG / FTL later, we take the following design.

  1. Use switch_imm to jump to the save/resume points.

Instead of saving / restoring instruction pointer to resume from it, we use switch_imm to jump to the resume point.
This limits one entry point to a given generator function. This design makes inlining easy.
The generated code becomes the following.

function @generatorNext(@generator, @generatorState, @generatorValue, @generatorResumeMode)
{

switch (@generatorState) {
case Initial:

...
initial sequence.
...

op_save(Yield_0); op_save contains *virtual* jump to Yield_0.

CFG shows a jump edge to Yield_0 point, but it won't be actually used.

return ...;

case Yield_0:

op_resume();
if (@generatorResumeMode == Throw)

...

else if (@generatorResumeMode == Return)

...

...
sentValue is a value sent from a caller by generator.next(sentValue).
sentValue = @generatorValue;
...
op_save(Yield_1);
return ...;

case Yield_1:

op_resume();
if (@generatorResumeMode == Throw)

...

else if (@generatorResumeMode == Return)

...

...
sentValue = @generatorValue;
...

...
}

}

Resume sequence should not be emitted per yield.
This should be done in https://bugs.webkit.org/show_bug.cgi?id=151552.

  1. Store live frame registers to GeneratorFrame

To save and resume generator's state, we save all the live registers in GeneratorFrame.
And when resuming, we refill registers with saved ones.
Since saved register contains scope register, |this| etc., the environment including the scope chain will be recovered automatically.
While saving and resuming callee registers, we don't save parameter registers.
These registers will be used to control generator's resume behavior.

We perform BytecodeLivenessAnalysis in CodeBlock to determine actually *def*ined registers at that resume point.

  1. GeneratorFunction will evaluate parameters before generating Generator

Generator's parameter should be evaluated before entering Generator's body. For example,

function hello() { ... }
function *gen(a, b = hello())
{

yield b;

}
let g = gen(20); Now, hello should be called.

To enable this, we evaluate parameters in GeneratorFunction, and after that, we create a Generator and return it.
This can be explained by the following pseudo code.

function *gen(a, b = hello())
{

This is generator.
return {

@generatorNext: function (@generator, @generatorState, @generatorValue, @generatorResumeMode)
{

...

}

}

}

  1. op_save seems similar to conditional jump

We won't jump to elsewhere from op_save actually. But we add a *virtual* jump edge (flow) from op_save to the point so called *merge point*.
We construct the CFG as follows,

(global generator switch) -> (initial sequence) -> (op_save) ----+-> (merge point) -> (next sequence)*

| | |
| v |
| (op_ret) |
| |
+------------------------------------------->(op_resume)--+

By constructing such a graph,

  1. Since we have a flow from (op_save) to (merge point), at merge point, we can *use* locals that are defined before (op_save)
  2. op_save should claim that it does not define anything. And claim that it *use*s locals that are used in (merge point).
  3. at op_resume, we see *use*d locals at merge point and define all of them.

We can do the above things in use-def analysis because use-def analysis is backward analysis.
And after analyzing use-def chains, in op_save / op_resume, we only save / resume live registers at the head of merge point.

  • API/JSScriptRef.cpp:

(parseScript):

  • CMakeLists.txt:
  • Configurations/FeatureDefines.xcconfig:
  • DerivedSources.make:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • builtins/BuiltinExecutables.cpp:

(JSC::createExecutableInternal):

  • builtins/GeneratorPrototype.js: Added.

(generatorResume):
(next):
(return):
(throw):

  • bytecode/BytecodeBasicBlock.cpp:

(JSC::isBranch):

  • bytecode/BytecodeList.json:
  • bytecode/BytecodeLivenessAnalysis.cpp:

(JSC::stepOverInstruction):
(JSC::computeLocalLivenessForBytecodeOffset):
(JSC::BytecodeLivenessAnalysis::runLivenessFixpoint):
(JSC::BytecodeLivenessAnalysis::computeFullLiveness):
(JSC::BytecodeLivenessAnalysis::computeKills):

  • bytecode/BytecodeUseDef.h:

(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpBytecode):
(JSC::CodeBlock::CodeBlock):
(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::shrinkToFit):
(JSC::CodeBlock::validate):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::numCalleeLocals):
(JSC::CodeBlock::liveCalleeLocalsAtYield):

  • bytecode/EvalCodeCache.h:

(JSC::EvalCodeCache::tryGet):
(JSC::EvalCodeCache::getSlow):
(JSC::EvalCodeCache::isCacheable):

  • bytecode/ExecutableInfo.h:

(JSC::ExecutableInfo::ExecutableInfo):
(JSC::ExecutableInfo::generatorThisMode):
(JSC::ExecutableInfo::superBinding):
(JSC::ExecutableInfo::parseMode):
(JSC::ExecutableInfo::isArrowFunction): Deleted.

  • bytecode/PreciseJumpTargets.cpp:

(JSC::getJumpTargetsForBytecodeOffset):

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::parseMode):
(JSC::UnlinkedCodeBlock::generatorThisMode):
(JSC::UnlinkedCodeBlock::superBinding):
(JSC::UnlinkedCodeBlock::isArrowFunction): Deleted.

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::generateUnlinkedFunctionCodeBlock):
(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):
(JSC::UnlinkedFunctionExecutable::unlinkedCodeBlockFor):

  • bytecode/UnlinkedFunctionExecutable.h:
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::initializeParameters):
(JSC::BytecodeGenerator::newRegister):
(JSC::BytecodeGenerator::reclaimFreeRegisters):
(JSC::BytecodeGenerator::createVariable):
(JSC::BytecodeGenerator::emitCreateThis):
(JSC::BytecodeGenerator::emitNewFunctionExpressionCommon):
(JSC::BytecodeGenerator::emitNewFunctionExpression):
(JSC::BytecodeGenerator::emitNewArrowFunctionExpression):
(JSC::BytecodeGenerator::emitNewFunction):
(JSC::BytecodeGenerator::emitIteratorNextWithValue):
(JSC::BytecodeGenerator::emitYieldPoint):
(JSC::BytecodeGenerator::emitSave):
(JSC::BytecodeGenerator::emitResume):
(JSC::BytecodeGenerator::emitYield):
(JSC::BytecodeGenerator::emitDelegateYield):
(JSC::BytecodeGenerator::emitGeneratorStateChange):
(JSC::BytecodeGenerator::emitGeneratorStateLabel):
(JSC::BytecodeGenerator::beginGenerator):
(JSC::BytecodeGenerator::endGenerator):
(JSC::BytecodeGenerator::emitNewFunctionInternal): Deleted.
(JSC::BytecodeGenerator::emitNewFunctionCommon): Deleted.

  • bytecompiler/BytecodeGenerator.h:

(JSC::BytecodeGenerator::generatorThisMode):
(JSC::BytecodeGenerator::superBinding):
(JSC::BytecodeGenerator::generatorRegister):
(JSC::BytecodeGenerator::generatorStateRegister):
(JSC::BytecodeGenerator::generatorValueRegister):
(JSC::BytecodeGenerator::generatorResumeModeRegister):
(JSC::BytecodeGenerator::parseMode):
(JSC::BytecodeGenerator::registerFor):
(JSC::BytecodeGenerator::makeFunction):

  • bytecompiler/NodesCodegen.cpp:

(JSC::ThisNode::emitBytecode):
(JSC::emitHomeObjectForCallee):
(JSC::emitSuperBaseForCallee):
(JSC::ReturnNode::emitBytecode):
(JSC::FunctionNode::emitBytecode):
(JSC::YieldExprNode::emitBytecode):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::ByteCodeParser):
(JSC::DFG::ByteCodeParser::inlineCall):
(JSC::DFG::ByteCodeParser::handleGetById):
(JSC::DFG::ByteCodeParser::handlePutById):

  • dfg/DFGForAllKills.h:

(JSC::DFG::forAllKilledOperands):

  • dfg/DFGGraph.h:

(JSC::DFG::Graph::forAllLocalsLiveInBytecode):

  • dfg/DFGOSREntrypointCreationPhase.cpp:

(JSC::DFG::OSREntrypointCreationPhase::run):

  • dfg/DFGVariableEventStream.cpp:

(JSC::DFG::VariableEventStream::reconstruct):

  • ftl/FTLForOSREntryJITCode.cpp:

(JSC::FTL::ForOSREntryJITCode::initializeEntryBuffer):

  • ftl/FTLForOSREntryJITCode.h:
  • ftl/FTLOSREntry.cpp:

(JSC::FTL::prepareOSREntry):

  • ftl/FTLState.cpp:

(JSC::FTL::State::State):

  • heap/MarkedBlock.h:

(JSC::MarkedBlock::isAtom):
(JSC::MarkedBlock::isLiveCell):

  • interpreter/Interpreter.cpp:

(JSC::eval):
(JSC::Interpreter::dumpRegisters):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):
(JSC::JIT::frameRegisterCountFor):

  • jit/JIT.h:
  • jit/JITOpcodes.cpp:

(JSC::JIT::emitNewFuncCommon):
(JSC::JIT::emit_op_new_func):
(JSC::JIT::emit_op_new_generator_func):
(JSC::JIT::emitNewFuncExprCommon):
(JSC::JIT::emit_op_new_func_exp):
(JSC::JIT::emit_op_new_generator_func_exp):
(JSC::JIT::emit_op_save):
(JSC::JIT::emit_op_resume):

  • jit/JITOperations.cpp:

(JSC::operationNewFunctionCommon):

  • jit/JITOperations.h:
  • llint/LLIntEntrypoint.cpp:

(JSC::LLInt::frameRegisterCountFor):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::traceFunctionPrologue):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LLIntSlowPaths.h:
  • llint/LowLevelInterpreter.asm:
  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createYield):
(JSC::ASTBuilder::createFunctionMetadata):
(JSC::ASTBuilder::propagateArgumentsUse):

  • parser/Nodes.cpp:

(JSC::FunctionMetadataNode::FunctionMetadataNode):

  • parser/Nodes.h:
  • parser/Parser.cpp:

(JSC::Parser<LexerType>::Parser):
(JSC::Parser<LexerType>::parseInner):
(JSC::Parser<LexerType>::parseGeneratorFunctionSourceElements):
(JSC::Parser<LexerType>::parseFunctionBody):
(JSC::stringForFunctionMode):
(JSC::Parser<LexerType>::createGeneratorParameters):
(JSC::Parser<LexerType>::parseFunctionInfo):
(JSC::Parser<LexerType>::parseFunctionDeclaration):
(JSC::Parser<LexerType>::parseClass):
(JSC::Parser<LexerType>::parseAssignmentExpression):
(JSC::Parser<LexerType>::parseYieldExpression):
(JSC::Parser<LexerType>::parsePropertyMethod):
(JSC::Parser<LexerType>::parseFunctionExpression):

  • parser/Parser.h:

(JSC::Scope::Scope):
(JSC::Scope::setSourceParseMode):
(JSC::Scope::hasArguments):
(JSC::Scope::collectFreeVariables):
(JSC::Scope::setIsFunction):
(JSC::Scope::setIsGeneratorFunction):
(JSC::Scope::setIsGenerator):
(JSC::parse):

  • parser/ParserModes.h:

(JSC::isFunctionParseMode):
(JSC::isModuleParseMode):
(JSC::isProgramParseMode):

  • parser/SourceCodeKey.h: Added.

(JSC::SourceCodeKey::SourceCodeKey):
(JSC::SourceCodeKey::isHashTableDeletedValue):
(JSC::SourceCodeKey::hash):
(JSC::SourceCodeKey::length):
(JSC::SourceCodeKey::isNull):
(JSC::SourceCodeKey::string):
(JSC::SourceCodeKey::operator==):
(JSC::SourceCodeKeyHash::hash):
(JSC::SourceCodeKeyHash::equal):
(JSC::SourceCodeKeyHashTraits::isEmptyValue):

  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::createYield):
(JSC::SyntaxChecker::createFunctionMetadata):
(JSC::SyntaxChecker::operatorStackPop):

  • runtime/CodeCache.cpp:

(JSC::CodeCache::getGlobalCodeBlock):
(JSC::CodeCache::getFunctionExecutableFromGlobalCode):

  • runtime/CodeCache.h:

(JSC::SourceCodeKey::SourceCodeKey): Deleted.
(JSC::SourceCodeKey::isHashTableDeletedValue): Deleted.
(JSC::SourceCodeKey::hash): Deleted.
(JSC::SourceCodeKey::length): Deleted.
(JSC::SourceCodeKey::isNull): Deleted.
(JSC::SourceCodeKey::string): Deleted.
(JSC::SourceCodeKey::operator==): Deleted.
(JSC::SourceCodeKeyHash::hash): Deleted.
(JSC::SourceCodeKeyHash::equal): Deleted.
(JSC::SourceCodeKeyHashTraits::isEmptyValue): Deleted.

  • runtime/CommonIdentifiers.h:
  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/CommonSlowPaths.h:
  • runtime/Completion.cpp:

(JSC::checkSyntax):
(JSC::checkModuleSyntax):

  • runtime/Executable.cpp:

(JSC::ScriptExecutable::newCodeBlockFor):
(JSC::ProgramExecutable::checkSyntax):

  • runtime/Executable.h:
  • runtime/FunctionConstructor.cpp:

(JSC::constructFunction):
(JSC::constructFunctionSkippingEvalEnabledCheck):

  • runtime/FunctionConstructor.h:
  • runtime/GeneratorFrame.cpp: Added.

(JSC::GeneratorFrame::GeneratorFrame):
(JSC::GeneratorFrame::finishCreation):
(JSC::GeneratorFrame::createStructure):
(JSC::GeneratorFrame::create):
(JSC::GeneratorFrame::save):
(JSC::GeneratorFrame::resume):
(JSC::GeneratorFrame::visitChildren):

  • runtime/GeneratorFrame.h: Added.

(JSC::GeneratorFrame::locals):
(JSC::GeneratorFrame::localAt):
(JSC::GeneratorFrame::offsetOfLocals):
(JSC::GeneratorFrame::allocationSizeForLocals):

  • runtime/GeneratorFunctionConstructor.cpp: Added.

(JSC::GeneratorFunctionConstructor::GeneratorFunctionConstructor):
(JSC::GeneratorFunctionConstructor::finishCreation):
(JSC::callGeneratorFunctionConstructor):
(JSC::constructGeneratorFunctionConstructor):
(JSC::GeneratorFunctionConstructor::getCallData):
(JSC::GeneratorFunctionConstructor::getConstructData):

  • runtime/GeneratorFunctionConstructor.h: Added.

(JSC::GeneratorFunctionConstructor::create):
(JSC::GeneratorFunctionConstructor::createStructure):

  • runtime/GeneratorFunctionPrototype.cpp: Added.

(JSC::GeneratorFunctionPrototype::GeneratorFunctionPrototype):
(JSC::GeneratorFunctionPrototype::finishCreation):

  • runtime/GeneratorFunctionPrototype.h: Added.

(JSC::GeneratorFunctionPrototype::create):
(JSC::GeneratorFunctionPrototype::createStructure):

  • runtime/GeneratorPrototype.cpp: Copied from Source/JavaScriptCore/ftl/FTLForOSREntryJITCode.cpp.

(JSC::GeneratorPrototype::finishCreation):
(JSC::GeneratorPrototype::getOwnPropertySlot):

  • runtime/GeneratorPrototype.h: Copied from Source/JavaScriptCore/ftl/FTLForOSREntryJITCode.cpp.

(JSC::GeneratorPrototype::create):
(JSC::GeneratorPrototype::createStructure):
(JSC::GeneratorPrototype::GeneratorPrototype):

  • runtime/GeneratorThisMode.h: Added.
  • runtime/JSFunction.cpp:

(JSC::JSFunction::getOwnPropertySlot):

  • runtime/JSGeneratorFunction.cpp: Added.

(JSC::JSGeneratorFunction::JSGeneratorFunction):
(JSC::JSGeneratorFunction::createImpl):
(JSC::JSGeneratorFunction::create):
(JSC::JSGeneratorFunction::createWithInvalidatedReallocationWatchpoint):

  • runtime/JSGeneratorFunction.h: Added.

(JSC::JSGeneratorFunction::allocationSize):
(JSC::JSGeneratorFunction::createStructure):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::generatorFunctionPrototype):
(JSC::JSGlobalObject::generatorPrototype):
(JSC::JSGlobalObject::generatorFunctionStructure):

  • runtime/ModuleLoaderObject.cpp:

(JSC::moduleLoaderObjectParseModule):

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
  • tests/es6.yaml:
  • tests/es6/generators_yield_star_generic_iterables.js:

(iterator.next):
(iterable.Symbol.iterator):
(createIterableObject):

  • tests/es6/generators_yield_star_instances_of_iterables.js:

(iterator.next):
(iterable.Symbol.iterator):
(createIterableObject):

  • tests/es6/generators_yield_star_iterator_closing.js:

(iterator.next):
(iterable.Symbol.iterator):
(createIterableObject):

  • tests/es6/generators_yield_star_iterator_closing_via_throw.js:

(iterator.next):
(iterable.Symbol.iterator):
(createIterableObject):

  • tests/stress/generator-arguments-from-function.js: Added.

(shouldBe):
(test):

  • tests/stress/generator-arguments.js: Added.

(shouldBe):
(g1):

  • tests/stress/generator-class-methods-syntax.js: Added.

(testSyntax):
(testSyntaxError):
(testSyntaxError.Cocoa):
(testSyntax.Cocoa.prototype.ok):
(testSyntax.Cocoa):
(testSyntax.Cocoa.ok):

  • tests/stress/generator-class-methods.js: Added.

(shouldBe):
(prototype.gen):
(staticGen):
(shouldBe.g.next):

  • tests/stress/generator-eval-this.js: Added.

(shouldBe):
(shouldThrow):
(B):
(A):
(C.prototype.generator):
(C):
(TypeError):

  • tests/stress/generator-function-constructor.js: Added.

(shouldBe):
(generatorFunctionConstructor):

  • tests/stress/generator-function-name.js: Added.

(shouldBe):
(ok):

  • tests/stress/generator-methods-with-non-generator.js: Added.

(shouldThrow):

  • tests/stress/generator-relations.js: Added.

(shouldBe):
(generatorFunction):

  • tests/stress/generator-return-before-first-call.js: Added.

(shouldBe):
(shouldBeIteratorResult):

  • tests/stress/generator-return.js: Added.

(shouldBe):
(shouldBeIteratorResult):

  • tests/stress/generator-this.js: Added.

(shouldBe):
(shouldThrow):
(gen):
(shouldBe.g.next):

  • tests/stress/generator-throw-before-first-call.js: Added.

(unreachable):
(gen):
(catch):

  • tests/stress/generator-throw.js: Added.

(shouldBe):
(shouldBeIteratorResult):

  • tests/stress/generator-with-new-target.js: Added.

(shouldBe):
(gen):

  • tests/stress/generator-with-super.js: Added.

(shouldThrow):
(test):
(B.prototype.gen):
(B):
(A.prototype.gen):
(A):

  • tests/stress/generator-yield-star.js: Added.

(shouldBe):
(shouldThrow):
(prototype.call):
(Arrays):
(Arrays.prototype.Symbol.iterator):
(Iterator.prototype.next):
(Iterator.prototype.string_appeared_here):
(Iterator.prototype.Symbol.iterator):
(Iterator):
(gen):

Source/WebCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

  • Configurations/FeatureDefines.xcconfig:

Source/WTF:

  • wtf/FastBitVector.h:

(WTF::FastBitVector::forEachSetBit):

  • wtf/FeatureDefines.h:

Tools:

  • Scripts/webkitperl/FeatureList.pm:

WebKitLibraries:

  • win/tools/vsprops/FeatureDefines.props:
  • win/tools/vsprops/FeatureDefinesCairo.props:
5:37 PM Changeset in webkit [192936] by Matt Baker
  • 14 edits in trunk/Source/WebInspectorUI

Web Inspector: TreeOutline should just dispatch events via WebInspector.Object
https://bugs.webkit.org/show_bug.cgi?id=148067

Reviewed by Timothy Hatcher.

TreeOutline now dispatches most events via WebInspector.Object. The onselect and
ondeselect callbacks are replaced by a SelectionDidChange event, which includes
both the selected and deselected elements in its event data. The onexpand and oncollapse
callbacks are replaced by an ElementDisclosureDidChange event. This is consistent with the
behavior of onhidden, which had no corresponding onvisible callback.

Alas, TimelineView and TreeOutlineDataGridSynchronizer depended on the order in which
TreeOutline.onselect callbacks were chained together. The synchronizer added its
callback after the timeline view, which ensured that the tree and grid were in sync
before the view handled onselect and dispatched a SelectionPathComponentsDidChange.
The change notification causes the view's path components to be read, and timeline
views need the grid selection to be in a valid state to build path components.

This is addressed by having timeline views dispatch SelectionPathComponentsDidChange
events when the grid selection changes, instead of the tree selection. The change
required that the synchronizer no longer suppress notifications when selecting grid nodes.

  • UserInterface/Views/DebuggerSidebarPanel.js:

(WebInspector.DebuggerSidebarPanel):
(WebInspector.DebuggerSidebarPanel.prototype._treeSelectionDidChange):
(WebInspector.DebuggerSidebarPanel.prototype._updatePauseReasonSection):

  • UserInterface/Views/NavigationSidebarPanel.js:

(WebInspector.NavigationSidebarPanel.prototype.createContentTreeOutline):
(WebInspector.NavigationSidebarPanel.prototype._treeElementAddedOrChanged):

  • UserInterface/Views/NetworkGridContentView.js:

(WebInspector.NetworkGridContentView):
(WebInspector.NetworkGridContentView.prototype._treeSelectionDidChange):

  • UserInterface/Views/ResourceSidebarPanel.js:

(WebInspector.ResourceSidebarPanel):
(WebInspector.ResourceSidebarPanel.prototype._treeSelectionDidChange):
(WebInspector.ResourceSidebarPanel.prototype._treeElementSelected): Deleted.

  • UserInterface/Views/ScopeChainDetailsSidebarPanel.js:

(WebInspector.ScopeChainDetailsSidebarPanel.prototype._generateCallFramesSection):
(WebInspector.ScopeChainDetailsSidebarPanel.prototype._generateWatchExpressionsSection):
(WebInspector.ScopeChainDetailsSidebarPanel.prototype._treeElementAdded):
(WebInspector.ScopeChainDetailsSidebarPanel.prototype._treeElementDisclosureDidChange):
(WebInspector.ScopeChainDetailsSidebarPanel.prototype._objectTreeExpandHandler): Deleted.
(WebInspector.ScopeChainDetailsSidebarPanel.prototype._objectTreeCollapseHandler): Deleted.

  • UserInterface/Views/SearchSidebarPanel.js:

(WebInspector.SearchSidebarPanel):
(WebInspector.SearchSidebarPanel.prototype._treeSelectionDidChange):
(WebInspector.SearchSidebarPanel.prototype._treeElementSelected): Deleted.

  • UserInterface/Views/StorageSidebarPanel.js:

(WebInspector.StorageSidebarPanel):
(WebInspector.StorageSidebarPanel._treeSelectionDidChange):

  • UserInterface/Views/TimelineDataGrid.js:

(WebInspector.TimelineDataGrid.prototype._createPopoverContent):
(WebInspector.TimelineDataGrid.prototype._popoverCallStackTreeSelectionDidChange):
(WebInspector.TimelineDataGrid):

  • UserInterface/Views/TimelineSidebarPanel.js:

(WebInspector.TimelineSidebarPanel):
(WebInspector.TimelineSidebarPanel.prototype._recordingsTreeSelectionDidChange):
(WebInspector.TimelineSidebarPanel.prototype._timelinesTreeSelectionDidChange):
(WebInspector.TimelineSidebarPanel.prototype._timelinesTreeElementSelected): Deleted.

  • UserInterface/Views/TimelineView.js:

(WebInspector.TimelineView):
(WebInspector.TimelineView.prototype._treeSelectionDidChange):
(WebInspector.TimelineView.prototype.treeElementSelected):
Don't dispatch SelectionPathComponentsDidChange. Timeline views already do this
in response to grid selection events.

  • UserInterface/Views/TreeOutline.js:

(WebInspector.TreeOutline.prototype.appendChild):
(WebInspector.TreeOutline.prototype.insertChild):
(WebInspector.TreeOutline.prototype.removeChildAtIndex):
(WebInspector.TreeOutline.prototype.removeChildren):
(WebInspector.TreeOutline.prototype.removeChildrenRecursive):
(WebInspector.TreeOutline.prototype._treeElementDidChange):
(WebInspector.TreeElement.prototype.set hidden):
(WebInspector.TreeElement.prototype.collapse):
(WebInspector.TreeElement.prototype.expand):
(WebInspector.TreeElement.prototype.select):
(WebInspector.TreeElement.prototype.deselect):
(WebInspector.TreeElement.prototype.get childrenListElement): Deleted.
Removed dead code.

  • UserInterface/Views/TreeOutlineDataGridSynchronizer.js:

(WebInspector.TreeOutlineDataGridSynchronizer):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeSelectionDidChange):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementAdded):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementRemoved):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementDisclosureDidChange):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementVisibilityDidChange):
(WebInspector.TreeOutlineDataGridSynchronizer.treeOutline.onadd): Deleted.
(WebInspector.TreeOutlineDataGridSynchronizer.treeOutline.onremove): Deleted.
(WebInspector.TreeOutlineDataGridSynchronizer.treeOutline.onexpand): Deleted.
(WebInspector.TreeOutlineDataGridSynchronizer.treeOutline.oncollapse): Deleted.
(WebInspector.TreeOutlineDataGridSynchronizer.treeOutline.onhidden): Deleted.
(WebInspector.TreeOutlineDataGridSynchronizer.treeOutline.onselect): Deleted.
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementSelected): Deleted.
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementExpanded): Deleted.
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementCollapsed): Deleted.
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementHiddenChanged): Deleted.

  • UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:

(WebInspector.VisualStyleCommaSeparatedKeywordEditor):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._treeSelectionDidChange):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._treeElementSelected): Deleted.

5:37 PM Changeset in webkit [192935] by commit-queue@webkit.org
  • 90 edits
    30 deletes in trunk

Unreviewed, rolling out r192914.
https://bugs.webkit.org/show_bug.cgi?id=151734

JSC tests for this change are failing on 32 and 64-bit bots
(Requested by ryanhaddad on #webkit).

Reverted changeset:

"[ES6] Implement LLInt/Baseline Support for ES6 Generators and
enable this feature"
https://bugs.webkit.org/show_bug.cgi?id=150792
http://trac.webkit.org/changeset/192914

5:33 PM Changeset in webkit [192934] by bshafiei@apple.com
  • 5 edits in branches/safari-601.1.46-branch/Source

Versioning.

5:25 PM Changeset in webkit [192933] by ddkilzer@apple.com
  • 2 edits in trunk/Tools

EventSenderProxy::swipeGestureWithWheelAndMomentumPhases() leaks an EventSenderSyntheticEvent
<http://webkit.org/b/151726>

Reviewed by Simon Fraser.

  • WebKitTestRunner/mac/EventSenderProxy.mm:

(WTR::EventSenderProxy::swipeGestureWithWheelAndMomentumPhases):
Deploy RetainPtr<EventSenderSyntheticEvent> to fix leak.

5:24 PM Changeset in webkit [192932] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.1.46.82

New tag.

5:10 PM Changeset in webkit [192931] by andersca@apple.com
  • 6 edits
    2 deletes in trunk/Source/WebKit2

Remove WKOriginDataManager
https://bugs.webkit.org/show_bug.cgi?id=151723

Reviewed by Andy Estes.

  • UIProcess/API/C/WKOriginDataManager.cpp: Removed.

(WKOriginDataManagerGetTypeID): Deleted.
(WKOriginDataManagerGetOrigins): Deleted.
(WKOriginDataManagerDeleteEntriesForOrigin): Deleted.
(WKOriginDataManagerDeleteEntriesModifiedBetweenDates): Deleted.
(WKOriginDataManagerDeleteAllEntries): Deleted.

  • UIProcess/API/C/WKOriginDataManager.h: Removed.
  • WebKit2.xcodeproj/project.pbxproj:
4:57 PM Changeset in webkit [192930] by mmaxfield@apple.com
  • 23 edits in trunk

[SVG -> OTF Converter] Force UnitsPerEm to 1000
https://bugs.webkit.org/show_bug.cgi?id=151650

Reviewed by Antti Koivisto.

Source/WebCore:

According to the Adobe Type 1 Font Format:

"Type 1 font programs generally use a 1000 to 1 scaling matrix
for the definition of the relationship of character space unites
to user space units."

Windows actually disregards the "unitsPerEm" value in the "head"
table for some calculations, and hardcodes 1000 instead. In order
to have consistent renderings on Windows and OS X, this patch
forces all generated fonts to have a unitsPerEm of 1000, and
appropriately scales all necessary values.

Test: svg/W3C-SVG-1.1/fonts-elem-03-b.svg

  • svg/SVGToOTFFontConversion.cpp:

(WebCore::SVGToOTFFontConverter::scaleUnitsPerEm):
(WebCore::SVGToOTFFontConverter::appendHEADTable):
(WebCore::SVGToOTFFontConverter::appendOS2Table):
(WebCore::SVGToOTFFontConverter::appendVORGTable):
(WebCore::SVGToOTFFontConverter::appendVHEATable):
(WebCore::SVGToOTFFontConverter::appendVMTXTable):
(WebCore::SVGToOTFFontConverter::addKerningPair):
(WebCore::CFFBuilder::CFFBuilder):
(WebCore::CFFBuilder::boundingBox):
(WebCore::CFFBuilder::updateBoundingBox):
(WebCore::CFFBuilder::unscaledLineTo):
(WebCore::SVGToOTFFontConverter::transcodeGlyphPaths):
(WebCore::SVGToOTFFontConverter::processGlyphElement):
(WebCore::SVGToOTFFontConverter::appendLigatureGlyphs):
(WebCore::SVGToOTFFontConverter::SVGToOTFFontConverter):

LayoutTests:

Some tests have quantization differences.

  • fast/ruby/ruby-expansion-cjk-2-expected.html:
  • fast/ruby/ruby-expansion-cjk-3-expected.html:
  • fast/ruby/ruby-expansion-cjk-4-expected.html:
  • fast/ruby/ruby-expansion-cjk-5-expected.html:
  • fast/ruby/ruby-expansion-cjk-expected.html:
  • platform/mac-wk2/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/fonts-elem-01-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/fonts-elem-02-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/text-intro-01-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/text-intro-02-b-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/text-intro-03-b-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/text-intro-04-t-expected.txt:
  • platform/mac/svg/batik/text/textEffect3-expected.txt:
  • platform/mac/svg/batik/text/textPosition2-expected.txt:
  • platform/mac/svg/wicd/test-rightsizing-b-expected.txt:
  • svg/custom/acid3-test-77-expected.txt:
4:50 PM Changeset in webkit [192929] by beidson@apple.com
  • 2 edits in trunk/LayoutTests

Add updated test result missing from http://trac.webkit.org/changeset/192924
https://bugs.webkit.org/show_bug.cgi?id=151725

  • storage/indexeddb/modern/opendatabase-request-event-expected.txt:
4:38 PM Changeset in webkit [192928] by Jon Davis
  • 2 edits in trunk/Websites/webkit.org

Updated favicon.ico with the new logo.

  • favicon.ico:
4:38 PM Changeset in webkit [192927] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking http/tests/xmlhttprequest/methods-async.html as flaky on Yosemite WK2
https://bugs.webkit.org/show_bug.cgi?id=151729

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
4:37 PM Changeset in webkit [192926] by Jon Davis
  • 2 edits in trunk/Websites/webkit.org

Improved accessibility handling for the small drop-down menu.

  • wp-content/themes/webkit/scripts/global.js:
4:35 PM Changeset in webkit [192925] by Jon Davis
  • 5 edits in trunk/Websites/webkit.org

Fixed font rendering. Fixed SVG rendering for Firefox.

  • wp-content/themes/webkit/images/icons.svg:
  • wp-content/themes/webkit/images/inspector.svg:
  • wp-content/themes/webkit/images/twitter.svg:
  • wp-content/themes/webkit/style.css:

(code):
(a[name]):
(.screen-reader-text:focus):
(.page-width):
(.tile.category-web-inspector .background-image):
(.tile.category-performance .background-image):
(.tile.category-javascript .background-image):
(.tile.category-css .background-image):
(.tile.category-standards .background-image):
(.tile.category-contributing .background-image):
(.tile.category-storage .background-image):
(.tile.category-layout .background-image):
(.tile.tag-timeline .background-image):
(.tile.tag-console .background-image):
(.tile.tag-debugger .background-image):
(.tile.tag-shortcuts .background-image):
(.tile .background-image.loaded):
(body, input, textarea, select, button): Deleted.

4:20 PM Changeset in webkit [192924] by beidson@apple.com
  • 7 edits in trunk

Give a more detailed message for TypeErrors that result from EnforceRange.
https://bugs.webkit.org/show_bug.cgi?id=151725

Reviewed by Tim Horton.

Source/WebCore:

No new tests (Covered by changes to existing tests).

  • bindings/js/JSDOMBinding.cpp:

(WebCore::rangeErrorString):
(WebCore::enforceRange):

LayoutTests:

  • crypto/subtle/aes-cbc-generate-key-expected.txt:
  • js/dom/webidl-type-mapping-expected.txt:
  • storage/indexeddb/intversion-bad-parameters-expected.txt:
  • storage/indexeddb/version-change-event-basic-expected.txt:
4:13 PM Changeset in webkit [192923] by dburkart@apple.com
  • 4 edits in branches/safari-601-branch/Source/WebCore

Merge r192758. rdar://problem/23581476

3:53 PM Changeset in webkit [192922] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

[iOS] Abrupt transition between Fullscreen -> PiP
https://bugs.webkit.org/show_bug.cgi?id=151719

Reviewed by Eric Carlson.

Rather than abruptly hiding the fullscreen window, explicitly exit fullscreen mode upon entering PiP.

  • platform/ios/WebVideoFullscreenInterfaceAVKit.mm:

(WebVideoFullscreenInterfaceAVKit::didStartPictureInPicture):

3:46 PM Changeset in webkit [192921] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Timestamp in Tooltip of Event Markers is incorrect
https://bugs.webkit.org/show_bug.cgi?id=151722

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-12-01
Reviewed by Timothy Hatcher.

  • UserInterface/Views/TimelineRuler.js:

(WebInspector.TimelineRuler.prototype.addMarker):
Convert the marker's time, to be relative to the start of the recording.

3:30 PM Changeset in webkit [192920] by mmaxfield@apple.com
  • 8 edits in trunk

Give String and AtomicString an existingHash() function
https://bugs.webkit.org/show_bug.cgi?id=151717

Reviewed by Andreas Kling.

Source/WebCore:

No new tests because there is no behavior change.

  • platform/graphics/Font.cpp:

(WebCore::CharacterFallbackMapKeyHash::hash):

Source/WTF:

Test: WTF.AtomicStringExistingHash

WTF.StringExistingHash

  • wtf/text/AtomicString.h:

(WTF::AtomicString::existingHash):

  • wtf/text/WTFString.h:

(WTF::String::existingHash):

Tools:

  • TestWebKitAPI/Tests/WTF/AtomicString.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WTF/WTFString.cpp:

(TestWebKitAPI::TEST):

2:47 PM Changeset in webkit [192919] by commit-queue@webkit.org
  • 4 edits
    1 add in trunk/Source/JavaScriptCore

[JSC] support CoverInitializedName in nested AssignmentPatterns
https://bugs.webkit.org/show_bug.cgi?id=151595

Patch by Caitlin Potter <caitpotter88@gmail.com> on 2015-12-01
Reviewed by Geoffrey Garen.

A regression introduced in bug https://bugs.webkit.org/show_bug.cgi?id=151026
causes the parser to fail when attempting to parse nested
ObjectAssignmentPatterns with CoverInitializedName destructuring targets.

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseAssignmentExpressionOrPropagateErrorClass):
(JSC::Parser<LexerType>::parseAssignmentExpression):
(JSC::Parser<LexerType>::parseProperty):
(JSC::Parser<LexerType>::parseArrayLiteral):

  • parser/Parser.h:

(JSC::Parser::ExpressionErrorClassifier::propagateExpressionErrorClass):

  • tests/es6.yaml:
  • tests/es6/destructuring_assignment_nested_cover_initialized_name.js: Added.

(test1):
(test2):

2:46 PM Changeset in webkit [192918] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Add new library dependency for LLVMForJavaScriptCore dylib
https://bugs.webkit.org/show_bug.cgi?id=151687

Changes on open source LLVM added a new dependency to libLLVMInstrumentation.a.
Adding this dependency should be backwards compatible, since LLVM has built and
shipped this library even before the creation of FTL.

Patch by Juergen Ributzka <juergen@apple.com> on 2015-12-01
Reviewed by Geoffrey Garen.

  • Configurations/LLVMForJSC.xcconfig:
2:43 PM Changeset in webkit [192917] by mmaxfield@apple.com
  • 3 edits in trunk/Source/WebCore

[Win] Build fix after r192895

Unreviewed.

  • platform/graphics/FontPlatformData.h:

(WebCore::FontPlatformData::isSystemFont):
(WebCore::FontPlatformData::setIsSystemFont):

  • platform/graphics/win/SimpleFontDataCGWin.cpp:

(WebCore::Font::platformInit):
(WebCore::Font::platformWidthForGlyph):

2:33 PM Changeset in webkit [192916] by Jon Davis
  • 2 edits in trunk/Websites/webkit.org

Removed escpaes to correctly pass query string arguments.

  • .htaccess:
2:27 PM Changeset in webkit [192915] by ap@apple.com
  • 2 edits in trunk/Source/WebCore

Update bindings test results after r192903.

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

(WebCore::JSTestEventConstructorConstructor::construct):

2:23 PM Changeset in webkit [192914] by Yusuke Suzuki
  • 90 edits
    2 copies
    28 adds in trunk

[ES6] Implement LLInt/Baseline Support for ES6 Generators and enable this feature
https://bugs.webkit.org/show_bug.cgi?id=150792

Reviewed by Saam Barati.

.:

  • Source/cmake/OptionsWin.cmake:
  • Source/cmake/WebKitFeatures.cmake:

Source/JavaScriptCore:

This patch implements basic functionality of ES6 Generators in LLInt and Baseline tiers.
While the implementation has some inefficient part, the implementation covers edge cases.
Later, we will make this efficient.

https://bugs.webkit.org/show_bug.cgi?id=151545
https://bugs.webkit.org/show_bug.cgi?id=151546
https://bugs.webkit.org/show_bug.cgi?id=151547
https://bugs.webkit.org/show_bug.cgi?id=151552
https://bugs.webkit.org/show_bug.cgi?id=151560
https://bugs.webkit.org/show_bug.cgi?id=151586

To encourage DFG / FTL later, we take the following design.

  1. Use switch_imm to jump to the save/resume points.

Instead of saving / restoring instruction pointer to resume from it, we use switch_imm to jump to the resume point.
This limits one entry point to a given generator function. This design makes inlining easy.
The generated code becomes the following.

function @generatorNext(@generator, @generatorState, @generatorValue, @generatorResumeMode)
{

switch (@generatorState) {
case Initial:

...
initial sequence.
...

op_save(Yield_0); op_save contains *virtual* jump to Yield_0.

CFG shows a jump edge to Yield_0 point, but it won't be actually used.

return ...;

case Yield_0:

op_resume();
if (@generatorResumeMode == Throw)

...

else if (@generatorResumeMode == Return)

...

...
sentValue is a value sent from a caller by generator.next(sentValue).
sentValue = @generatorValue;
...
op_save(Yield_1);
return ...;

case Yield_1:

op_resume();
if (@generatorResumeMode == Throw)

...

else if (@generatorResumeMode == Return)

...

...
sentValue = @generatorValue;
...

...
}

}

Resume sequence should not be emitted per yield.
This should be done in https://bugs.webkit.org/show_bug.cgi?id=151552.

  1. Store live frame registers to GeneratorFrame

To save and resume generator's state, we save all the live registers in GeneratorFrame.
And when resuming, we refill registers with saved ones.
Since saved register contains scope register, |this| etc., the environment including the scope chain will be recovered automatically.
While saving and resuming callee registers, we don't save parameter registers.
These registers will be used to control generator's resume behavior.

We perform BytecodeLivenessAnalysis in CodeBlock to determine actually *def*ined registers at that resume point.

  1. GeneratorFunction will evaluate parameters before generating Generator

Generator's parameter should be evaluated before entering Generator's body. For example,

function hello() { ... }
function *gen(a, b = hello())
{

yield b;

}
let g = gen(20); Now, hello should be called.

To enable this, we evaluate parameters in GeneratorFunction, and after that, we create a Generator and return it.
This can be explained by the following pseudo code.

function *gen(a, b = hello())
{

This is generator.
return {

@generatorNext: function (@generator, @generatorState, @generatorValue, @generatorResumeMode)
{

...

}

}

}

  1. op_save seems similar to conditional jump

We won't jump to elsewhere from op_save actually. But we add a *virtual* jump edge (flow) from op_save to the point so called *merge point*.
We construct the CFG as follows,

(global generator switch) -> (initial sequence) -> (op_save) ----+-> (merge point) -> (next sequence)*

| | |
| v |
| (op_ret) |
| |
+------------------------------------------->(op_resume)--+

By constructing such a graph,

  1. Since we have a flow from (op_save) to (merge point), at merge point, we can *use* locals that are defined before (op_save)
  2. op_save should claim that it does not define anything. And claim that it *use*s locals that are used in (merge point).
  3. at op_resume, we see *use*d locals at merge point and define all of them.

We can do the above things in use-def analysis because use-def analysis is backward analysis.
And after analyzing use-def chains, in op_save / op_resume, we only save / resume live registers at the head of merge point.

  • API/JSScriptRef.cpp:

(parseScript):

  • CMakeLists.txt:
  • Configurations/FeatureDefines.xcconfig:
  • DerivedSources.make:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • builtins/BuiltinExecutables.cpp:

(JSC::createExecutableInternal):

  • builtins/GeneratorPrototype.js: Added.

(generatorResume):
(next):
(return):
(throw):

  • bytecode/BytecodeBasicBlock.cpp:

(JSC::isBranch):

  • bytecode/BytecodeList.json:
  • bytecode/BytecodeLivenessAnalysis.cpp:

(JSC::stepOverInstruction):
(JSC::computeLocalLivenessForBytecodeOffset):
(JSC::BytecodeLivenessAnalysis::runLivenessFixpoint):
(JSC::BytecodeLivenessAnalysis::computeFullLiveness):
(JSC::BytecodeLivenessAnalysis::computeKills):

  • bytecode/BytecodeUseDef.h:

(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpBytecode):
(JSC::CodeBlock::CodeBlock):
(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::shrinkToFit):
(JSC::CodeBlock::validate):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::numCalleeLocals):
(JSC::CodeBlock::liveCalleeLocalsAtYield):

  • bytecode/EvalCodeCache.h:

(JSC::EvalCodeCache::tryGet):
(JSC::EvalCodeCache::getSlow):
(JSC::EvalCodeCache::isCacheable):

  • bytecode/ExecutableInfo.h:

(JSC::ExecutableInfo::ExecutableInfo):
(JSC::ExecutableInfo::generatorThisMode):
(JSC::ExecutableInfo::superBinding):
(JSC::ExecutableInfo::parseMode):
(JSC::ExecutableInfo::isArrowFunction): Deleted.

  • bytecode/PreciseJumpTargets.cpp:

(JSC::getJumpTargetsForBytecodeOffset):

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::parseMode):
(JSC::UnlinkedCodeBlock::generatorThisMode):
(JSC::UnlinkedCodeBlock::superBinding):
(JSC::UnlinkedCodeBlock::isArrowFunction): Deleted.

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::generateUnlinkedFunctionCodeBlock):
(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):
(JSC::UnlinkedFunctionExecutable::unlinkedCodeBlockFor):

  • bytecode/UnlinkedFunctionExecutable.h:
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::initializeParameters):
(JSC::BytecodeGenerator::newRegister):
(JSC::BytecodeGenerator::reclaimFreeRegisters):
(JSC::BytecodeGenerator::createVariable):
(JSC::BytecodeGenerator::emitCreateThis):
(JSC::BytecodeGenerator::emitNewFunctionExpressionCommon):
(JSC::BytecodeGenerator::emitNewFunctionExpression):
(JSC::BytecodeGenerator::emitNewArrowFunctionExpression):
(JSC::BytecodeGenerator::emitNewFunction):
(JSC::BytecodeGenerator::emitIteratorNextWithValue):
(JSC::BytecodeGenerator::emitYieldPoint):
(JSC::BytecodeGenerator::emitSave):
(JSC::BytecodeGenerator::emitResume):
(JSC::BytecodeGenerator::emitYield):
(JSC::BytecodeGenerator::emitDelegateYield):
(JSC::BytecodeGenerator::emitGeneratorStateChange):
(JSC::BytecodeGenerator::emitGeneratorStateLabel):
(JSC::BytecodeGenerator::beginGenerator):
(JSC::BytecodeGenerator::endGenerator):
(JSC::BytecodeGenerator::emitNewFunctionInternal): Deleted.
(JSC::BytecodeGenerator::emitNewFunctionCommon): Deleted.

  • bytecompiler/BytecodeGenerator.h:

(JSC::BytecodeGenerator::generatorThisMode):
(JSC::BytecodeGenerator::superBinding):
(JSC::BytecodeGenerator::generatorRegister):
(JSC::BytecodeGenerator::generatorStateRegister):
(JSC::BytecodeGenerator::generatorValueRegister):
(JSC::BytecodeGenerator::generatorResumeModeRegister):
(JSC::BytecodeGenerator::parseMode):
(JSC::BytecodeGenerator::registerFor):
(JSC::BytecodeGenerator::makeFunction):

  • bytecompiler/NodesCodegen.cpp:

(JSC::ThisNode::emitBytecode):
(JSC::emitHomeObjectForCallee):
(JSC::emitSuperBaseForCallee):
(JSC::ReturnNode::emitBytecode):
(JSC::FunctionNode::emitBytecode):
(JSC::YieldExprNode::emitBytecode):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::ByteCodeParser):
(JSC::DFG::ByteCodeParser::inlineCall):
(JSC::DFG::ByteCodeParser::handleGetById):
(JSC::DFG::ByteCodeParser::handlePutById):

  • dfg/DFGForAllKills.h:

(JSC::DFG::forAllKilledOperands):

  • dfg/DFGGraph.h:

(JSC::DFG::Graph::forAllLocalsLiveInBytecode):

  • dfg/DFGOSREntrypointCreationPhase.cpp:

(JSC::DFG::OSREntrypointCreationPhase::run):

  • dfg/DFGVariableEventStream.cpp:

(JSC::DFG::VariableEventStream::reconstruct):

  • ftl/FTLForOSREntryJITCode.cpp:

(JSC::FTL::ForOSREntryJITCode::initializeEntryBuffer):

  • ftl/FTLForOSREntryJITCode.h:
  • ftl/FTLOSREntry.cpp:

(JSC::FTL::prepareOSREntry):

  • ftl/FTLState.cpp:

(JSC::FTL::State::State):

  • heap/MarkedBlock.h:

(JSC::MarkedBlock::isAtom):
(JSC::MarkedBlock::isLiveCell):

  • interpreter/Interpreter.cpp:

(JSC::eval):
(JSC::Interpreter::dumpRegisters):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):
(JSC::JIT::frameRegisterCountFor):

  • jit/JIT.h:
  • jit/JITOpcodes.cpp:

(JSC::JIT::emitNewFuncCommon):
(JSC::JIT::emit_op_new_func):
(JSC::JIT::emit_op_new_generator_func):
(JSC::JIT::emitNewFuncExprCommon):
(JSC::JIT::emit_op_new_func_exp):
(JSC::JIT::emit_op_new_generator_func_exp):
(JSC::JIT::emit_op_save):
(JSC::JIT::emit_op_resume):

  • jit/JITOperations.cpp:

(JSC::operationNewFunctionCommon):

  • jit/JITOperations.h:
  • llint/LLIntEntrypoint.cpp:

(JSC::LLInt::frameRegisterCountFor):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::traceFunctionPrologue):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LLIntSlowPaths.h:
  • llint/LowLevelInterpreter.asm:
  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createYield):
(JSC::ASTBuilder::createFunctionMetadata):
(JSC::ASTBuilder::propagateArgumentsUse):

  • parser/Nodes.cpp:

(JSC::FunctionMetadataNode::FunctionMetadataNode):

  • parser/Nodes.h:
  • parser/Parser.cpp:

(JSC::Parser<LexerType>::Parser):
(JSC::Parser<LexerType>::parseInner):
(JSC::Parser<LexerType>::parseGeneratorFunctionSourceElements):
(JSC::Parser<LexerType>::parseFunctionBody):
(JSC::stringForFunctionMode):
(JSC::Parser<LexerType>::createGeneratorParameters):
(JSC::Parser<LexerType>::parseFunctionInfo):
(JSC::Parser<LexerType>::parseFunctionDeclaration):
(JSC::Parser<LexerType>::parseClass):
(JSC::Parser<LexerType>::parseAssignmentExpression):
(JSC::Parser<LexerType>::parseYieldExpression):
(JSC::Parser<LexerType>::parsePropertyMethod):
(JSC::Parser<LexerType>::parseFunctionExpression):

  • parser/Parser.h:

(JSC::Scope::Scope):
(JSC::Scope::setSourceParseMode):
(JSC::Scope::hasArguments):
(JSC::Scope::collectFreeVariables):
(JSC::Scope::setIsFunction):
(JSC::Scope::setIsGeneratorFunction):
(JSC::Scope::setIsGenerator):
(JSC::parse):

  • parser/ParserModes.h:

(JSC::isFunctionParseMode):
(JSC::isModuleParseMode):
(JSC::isProgramParseMode):

  • parser/SourceCodeKey.h: Added.

(JSC::SourceCodeKey::SourceCodeKey):
(JSC::SourceCodeKey::isHashTableDeletedValue):
(JSC::SourceCodeKey::hash):
(JSC::SourceCodeKey::length):
(JSC::SourceCodeKey::isNull):
(JSC::SourceCodeKey::string):
(JSC::SourceCodeKey::operator==):
(JSC::SourceCodeKeyHash::hash):
(JSC::SourceCodeKeyHash::equal):
(JSC::SourceCodeKeyHashTraits::isEmptyValue):

  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::createYield):
(JSC::SyntaxChecker::createFunctionMetadata):
(JSC::SyntaxChecker::operatorStackPop):

  • runtime/CodeCache.cpp:

(JSC::CodeCache::getGlobalCodeBlock):
(JSC::CodeCache::getFunctionExecutableFromGlobalCode):

  • runtime/CodeCache.h:

(JSC::SourceCodeKey::SourceCodeKey): Deleted.
(JSC::SourceCodeKey::isHashTableDeletedValue): Deleted.
(JSC::SourceCodeKey::hash): Deleted.
(JSC::SourceCodeKey::length): Deleted.
(JSC::SourceCodeKey::isNull): Deleted.
(JSC::SourceCodeKey::string): Deleted.
(JSC::SourceCodeKey::operator==): Deleted.
(JSC::SourceCodeKeyHash::hash): Deleted.
(JSC::SourceCodeKeyHash::equal): Deleted.
(JSC::SourceCodeKeyHashTraits::isEmptyValue): Deleted.

  • runtime/CommonIdentifiers.h:
  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/CommonSlowPaths.h:
  • runtime/Completion.cpp:

(JSC::checkSyntax):
(JSC::checkModuleSyntax):

  • runtime/Executable.cpp:

(JSC::ScriptExecutable::newCodeBlockFor):
(JSC::ProgramExecutable::checkSyntax):

  • runtime/Executable.h:
  • runtime/FunctionConstructor.cpp:

(JSC::constructFunction):
(JSC::constructFunctionSkippingEvalEnabledCheck):

  • runtime/FunctionConstructor.h:
  • runtime/GeneratorFrame.cpp: Added.

(JSC::GeneratorFrame::GeneratorFrame):
(JSC::GeneratorFrame::finishCreation):
(JSC::GeneratorFrame::createStructure):
(JSC::GeneratorFrame::create):
(JSC::GeneratorFrame::save):
(JSC::GeneratorFrame::resume):
(JSC::GeneratorFrame::visitChildren):

  • runtime/GeneratorFrame.h: Added.

(JSC::GeneratorFrame::locals):
(JSC::GeneratorFrame::localAt):
(JSC::GeneratorFrame::offsetOfLocals):
(JSC::GeneratorFrame::allocationSizeForLocals):

  • runtime/GeneratorFunctionConstructor.cpp: Added.

(JSC::GeneratorFunctionConstructor::GeneratorFunctionConstructor):
(JSC::GeneratorFunctionConstructor::finishCreation):
(JSC::callGeneratorFunctionConstructor):
(JSC::constructGeneratorFunctionConstructor):
(JSC::GeneratorFunctionConstructor::getCallData):
(JSC::GeneratorFunctionConstructor::getConstructData):

  • runtime/GeneratorFunctionConstructor.h: Added.

(JSC::GeneratorFunctionConstructor::create):
(JSC::GeneratorFunctionConstructor::createStructure):

  • runtime/GeneratorFunctionPrototype.cpp: Added.

(JSC::GeneratorFunctionPrototype::GeneratorFunctionPrototype):
(JSC::GeneratorFunctionPrototype::finishCreation):

  • runtime/GeneratorFunctionPrototype.h: Added.

(JSC::GeneratorFunctionPrototype::create):
(JSC::GeneratorFunctionPrototype::createStructure):

  • runtime/GeneratorPrototype.cpp: Copied from Source/JavaScriptCore/ftl/FTLForOSREntryJITCode.cpp.

(JSC::GeneratorPrototype::finishCreation):
(JSC::GeneratorPrototype::getOwnPropertySlot):

  • runtime/GeneratorPrototype.h: Copied from Source/JavaScriptCore/ftl/FTLForOSREntryJITCode.cpp.

(JSC::GeneratorPrototype::create):
(JSC::GeneratorPrototype::createStructure):
(JSC::GeneratorPrototype::GeneratorPrototype):

  • runtime/GeneratorThisMode.h: Added.
  • runtime/JSFunction.cpp:

(JSC::JSFunction::getOwnPropertySlot):

  • runtime/JSGeneratorFunction.cpp: Added.

(JSC::JSGeneratorFunction::JSGeneratorFunction):
(JSC::JSGeneratorFunction::createImpl):
(JSC::JSGeneratorFunction::create):
(JSC::JSGeneratorFunction::createWithInvalidatedReallocationWatchpoint):

  • runtime/JSGeneratorFunction.h: Added.

(JSC::JSGeneratorFunction::allocationSize):
(JSC::JSGeneratorFunction::createStructure):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::generatorFunctionPrototype):
(JSC::JSGlobalObject::generatorPrototype):
(JSC::JSGlobalObject::generatorFunctionStructure):

  • runtime/ModuleLoaderObject.cpp:

(JSC::moduleLoaderObjectParseModule):

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
  • tests/es6.yaml:
  • tests/es6/generators_yield_star_generic_iterables.js:

(iterator.next):
(iterable.Symbol.iterator):
(createIterableObject):

  • tests/es6/generators_yield_star_instances_of_iterables.js:

(iterator.next):
(iterable.Symbol.iterator):
(createIterableObject):

  • tests/es6/generators_yield_star_iterator_closing.js:

(iterator.next):
(iterable.Symbol.iterator):
(createIterableObject):

  • tests/es6/generators_yield_star_iterator_closing_via_throw.js:

(iterator.next):
(iterable.Symbol.iterator):
(createIterableObject):

  • tests/stress/generator-arguments-from-function.js: Added.

(shouldBe):
(test):

  • tests/stress/generator-arguments.js: Added.

(shouldBe):
(g1):

  • tests/stress/generator-class-methods-syntax.js: Added.

(testSyntax):
(testSyntaxError):
(testSyntaxError.Cocoa):
(testSyntax.Cocoa.prototype.ok):
(testSyntax.Cocoa):
(testSyntax.Cocoa.ok):

  • tests/stress/generator-class-methods.js: Added.

(shouldBe):
(prototype.gen):
(staticGen):
(shouldBe.g.next):

  • tests/stress/generator-eval-this.js: Added.

(shouldBe):
(shouldThrow):
(B):
(A):
(C.prototype.generator):
(C):
(TypeError):

  • tests/stress/generator-function-constructor.js: Added.

(shouldBe):
(generatorFunctionConstructor):

  • tests/stress/generator-function-name.js: Added.

(shouldBe):
(ok):

  • tests/stress/generator-methods-with-non-generator.js: Added.

(shouldThrow):

  • tests/stress/generator-relations.js: Added.

(shouldBe):
(generatorFunction):

  • tests/stress/generator-return-before-first-call.js: Added.

(shouldBe):
(shouldBeIteratorResult):

  • tests/stress/generator-return.js: Added.

(shouldBe):
(shouldBeIteratorResult):

  • tests/stress/generator-this.js: Added.

(shouldBe):
(shouldThrow):
(gen):
(shouldBe.g.next):

  • tests/stress/generator-throw-before-first-call.js: Added.

(unreachable):
(gen):
(catch):

  • tests/stress/generator-throw.js: Added.

(shouldBe):
(shouldBeIteratorResult):

  • tests/stress/generator-with-new-target.js: Added.

(shouldBe):
(gen):

  • tests/stress/generator-with-super.js: Added.

(shouldThrow):
(test):
(B.prototype.gen):
(B):
(A.prototype.gen):
(A):

  • tests/stress/generator-yield-star.js: Added.

(shouldBe):
(shouldThrow):
(prototype.call):
(Arrays):
(Arrays.prototype.Symbol.iterator):
(Iterator.prototype.next):
(Iterator.prototype.string_appeared_here):
(Iterator.prototype.Symbol.iterator):
(Iterator):
(gen):

Source/WebCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

  • Configurations/FeatureDefines.xcconfig:

Source/WTF:

  • wtf/FastBitVector.h:

(WTF::FastBitVector::forEachSetBit):

  • wtf/FeatureDefines.h:

Tools:

  • Scripts/webkitperl/FeatureList.pm:

WebKitLibraries:

  • win/tools/vsprops/FeatureDefines.props:
  • win/tools/vsprops/FeatureDefinesCairo.props:
2:16 PM Changeset in webkit [192913] by Jon Davis
  • 2 edits in trunk/Websites/webkit.org

Corrected rewrite rules to restore convenience paths.

  • .htaccess:
2:12 PM Changeset in webkit [192912] by fpizlo@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Remove repetitive cruft from FTL OSR exit code in LowerDFGToLLVM
https://bugs.webkit.org/show_bug.cgi?id=151718

Reviewed by Geoffrey Garen.

  • b3/B3StackmapValue.h:
  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::DFG::LowerDFGToLLVM::compileInvalidationPoint):
(JSC::FTL::DFG::LowerDFGToLLVM::appendOSRExitArgumentsForPatchpointIfWillCatchException):
(JSC::FTL::DFG::LowerDFGToLLVM::lowBlock):
(JSC::FTL::DFG::LowerDFGToLLVM::appendOSRExitDescriptor):
(JSC::FTL::DFG::LowerDFGToLLVM::appendOSRExit):
(JSC::FTL::DFG::LowerDFGToLLVM::blessSpeculation):
(JSC::FTL::DFG::LowerDFGToLLVM::emitOSRExitCall):
(JSC::FTL::DFG::LowerDFGToLLVM::buildExitArguments):
(JSC::FTL::DFG::LowerDFGToLLVM::callStackmap):

2:09 PM Changeset in webkit [192911] by weinig@apple.com
  • 7 edits in trunk

Need completionHandler-based WebKit C SPI for alert, confirm, and prompt
<rdar://problem/23320863>
https://bugs.webkit.org/show_bug.cgi?id=151708

Reviewed by Anders Carlsson.

Source/WebKit2:

Add listener based versions of alert, confirm and prompt.

  • Shared/API/APIObject.h:
  • Shared/API/c/WKBase.h:
  • UIProcess/API/C/WKPage.cpp:

(WebKit::RunJavaScriptAlertResultListener::create):
(WebKit::RunJavaScriptAlertResultListener::~RunJavaScriptAlertResultListener):
(WebKit::RunJavaScriptAlertResultListener::call):
(WebKit::RunJavaScriptAlertResultListener::RunJavaScriptAlertResultListener):
(WebKit::RunJavaScriptConfirmResultListener::create):
(WebKit::RunJavaScriptConfirmResultListener::~RunJavaScriptConfirmResultListener):
(WebKit::RunJavaScriptConfirmResultListener::call):
(WebKit::RunJavaScriptConfirmResultListener::RunJavaScriptConfirmResultListener):
(WebKit::RunJavaScriptPromptResultListener::create):
(WebKit::RunJavaScriptPromptResultListener::~RunJavaScriptPromptResultListener):
(WebKit::RunJavaScriptPromptResultListener::call):
(WebKit::RunJavaScriptPromptResultListener::RunJavaScriptPromptResultListener):
(WKPageSetPageUIClient):

  • UIProcess/API/C/WKPageUIClient.h:

Tools:

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::createOtherPage):
(WTR::TestController::createWebViewWithOptions):
Update for new WKPageUIClient.

1:57 PM Changeset in webkit [192910] by andersca@apple.com
  • 10 edits
    5 deletes in trunk

Remove WebKit2.framework
https://bugs.webkit.org/show_bug.cgi?id=151715

Reviewed by Dan Bernstein.

Source/WebKit2:

  • Configurations/WebKit2.xcconfig: Removed.
  • UIProcess/API/Cocoa/WebKit2.h: Removed.
  • WebKit2.xcodeproj/project.pbxproj:
  • mac/Info-WebKit2.plist: Removed.
  • mac/MigrateHeadersToWebKit2.make: Removed.
  • mac/WebKit2.m: Removed.

Tools:

  • TestWebKitAPI/Tests/WebKit2/StopLoadingDuringDidFailProvisionalLoad.cpp:
  • TestWebKitAPI/Tests/WebKit2/StopLoadingDuringDidFailProvisionalLoad_bundle.cpp:
  • TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsInvalidScheme.mm:
  • TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsTest.mm:
  • TestWebKitAPI/Tests/WebKit2ObjC/PreventImageLoadWithAutoResizing.mm:
  • TestWebKitAPI/Tests/WebKit2ObjC/UserContentTest.mm:
  • TestWebKitAPI/mac/TestBrowsingContextLoadDelegate.h:
1:51 PM Changeset in webkit [192909] by Joseph Pecoraro
  • 4 edits in trunk

Unreviewed common typo fix "occurance" => "occurrence".

Source/WebInspectorUI:

  • Scripts/combine-resources.pl:

(concatenateFiles):

Tools:

  • Scripts/webkitpy/tool/commands/queries.py:

(FindFlakyTests._print_statistics):

1:51 PM Changeset in webkit [192908] by Joseph Pecoraro
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Spacebar to toggle Timeline recording doesn't work in Timeline tab after reloading the page
https://bugs.webkit.org/show_bug.cgi?id=151530

Reviewed by Timothy Hatcher.

If reloading the page caused the console to clear, that was triggering
the console prompt to be focused. When the console prompt is focused,
keyboard input like Spacebar, was just inputing characters instead of
triggering the keyboard shortcut that was expected.

This also means that console.clear() in the inspected page would cause
the inspector to focus the console. That is unexpected as well.

Focusing the console prompt whenever the console log is cleared
is not ideal. If we do want to focus the prompt the caller should
make that determination, not clear.

  • UserInterface/Controllers/JavaScriptLogViewController.js:

(WebInspector.JavaScriptLogViewController.prototype.clear):

1:51 PM Changeset in webkit [192907] by Joseph Pecoraro
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Update Timeline UI based on the Instruments in the Active Recording
https://bugs.webkit.org/show_bug.cgi?id=151374

Reviewed by Brian Burg.

  • UserInterface/Views/TimelineRecordingContentView.js:

(WebInspector.TimelineRecordingContentView.prototype._updateTimelineOverviewHeight):
Modernize as I was in this code while looking into this patch.

  • UserInterface/Views/TimelineSidebarPanel.css:

(.sidebar > .panel.navigation.timeline > .title-bar.timeline-events): Deleted.
(.sidebar > .panel.navigation.timeline > .timelines-content): Deleted.
These defaults are no longer necessary, the UI overrides them anyways.

  • UserInterface/Views/TimelineSidebarPanel.js:

(WebInspector.TimelineSidebarPanel):
Include both the basic and rendering frames toolbars. They will be
mutually exclusive based on if the FPSIntrument is available.

(WebInspector.TimelineSidebarPanel.prototype._recordingSelected):
(WebInspector.TimelineSidebarPanel.prototype._clearInstruments):
When loading a new Recording clear the UI.

(WebInspector.TimelineSidebarPanel.prototype._instrumentAdded):
(WebInspector.TimelineSidebarPanel.prototype._instrumentRemoved):
(WebInspector.TimelineSidebarPanel.prototype._addedFPSInstrument):
(WebInspector.TimelineSidebarPanel.prototype._removedFPSInstrument):
Handle toggling the toolbars when the FPS instrument is added/removed.

(WebInspector.TimelineSidebarPanel.prototype._timelineCountChanged):
(WebInspector.TimelineSidebarPanel.prototype._updateTimelineOverviewHeight):
(WebInspector.TimelineSidebarPanel.prototype._changeViewMode):
Properly update the sidebar's understanding of the TimelineOverview size.

1:51 PM Changeset in webkit [192906] by Joseph Pecoraro
  • 9 edits
    5 adds in trunk/Source/WebInspectorUI

Web Inspector: Initial support for variable timelines
https://bugs.webkit.org/show_bug.cgi?id=151372

Reviewed by NOBODY (OOPS!).

  • UserInterface/Controllers/TimelineManager.js:

(WebInspector.TimelineManager.defaultInstruments):
(WebInspector.TimelineManager.prototype._loadNewRecording):
Keep the status quo which is the same set of instruments for each recording.

(WebInspector.TimelineManager.prototype.startCapturing):
(WebInspector.TimelineManager.prototype.stopCapturing):
Push responsibility of capturing to the Recording, which has a specific set
of instruments that know what they need to turn on an off from the backend.

  • UserInterface/Main.html:
  • UserInterface/Models/Instrument.js: Added.

(WebInspector.Instrument):
(WebInspector.Instrument.startLegacyTimelineAgent):
(WebInspector.Instrument.stopLegacyTimelineAgent):
(WebInspector.Instrument.prototype.get timelineRecordType):
(WebInspector.Instrument.prototype.startInstrumentation):
(WebInspector.Instrument.prototype.stopInstrumentation):
New class representing something that can be turned on and off
from the backend and produces a set of Timeline record types.
Currently instruments are 1-to-1 to a Timeline type.

  • UserInterface/Models/LayoutInstrument.js: Added.

(WebInspector.LayoutInstrument.prototype.get timelineRecordType):
(WebInspector.LayoutInstrument):

  • UserInterface/Models/NetworkInstrument.js: Added.

(WebInspector.NetworkInstrument.prototype.get timelineRecordType):
(WebInspector.NetworkInstrument.prototype.startInstrumentation):
(WebInspector.NetworkInstrument.prototype.stopInstrumentation):
(WebInspector.NetworkInstrument):

  • UserInterface/Models/ScriptInstrument.js: Added.

(WebInspector.ScriptInstrument.prototype.get timelineRecordType):
(WebInspector.ScriptInstrument):
The default set of instruments. Currently they all enable the TimelineAgent,
so they share code to enable/disable in the base class to avoid duplication.

  • UserInterface/Models/FPSInstrument.js: Added.

(WebInspector.FPSInstrument):
(WebInspector.FPSInstrument.supported):
(WebInspector.FPSInstrument.prototype.get timelineRecordType):
Provide a "supported" static method and simplify other code that
checks whether or not RenderingFrames is available or not.

  • UserInterface/Models/Timeline.js:

(WebInspector.Timeline.prototype.get displayName): Deleted.
(WebInspector.Timeline.prototype.get iconClassName): Deleted.
Move these to a View class, as this is primarily View logic.

  • UserInterface/Models/TimelineRecording.js:

(WebInspector.TimelineRecording):
(WebInspector.TimelineRecording.prototype.get instruments):
(WebInspector.TimelineRecording.prototype.start):
(WebInspector.TimelineRecording.prototype.stop):
(WebInspector.TimelineRecording.prototype.timelineForInstrument):
(WebInspector.TimelineRecording.prototype.addInstrument):
(WebInspector.TimelineRecording.prototype.removeInstrument):
(WebInspector.TimelineRecording.prototype.addEventMarker):
(WebInspector.TimelineRecording.prototype.addTimeline): Deleted.
(WebInspector.TimelineRecording.prototype.removeTimeline): Deleted.
A recording now has a set of Instruments and its own start/stop
which starts/stops its set of Instruments! Treat Instruments as
the variable property of a Recording instead of Timelines.

  • UserInterface/Views/TimelineOverview.js:

(WebInspector.TimelineOverview):
(WebInspector.TimelineOverview.prototype._instrumentAdded):
(WebInspector.TimelineOverview.prototype._instrumentRemoved):
(WebInspector.TimelineOverview.prototype._timelineAdded): Deleted.
(WebInspector.TimelineOverview.prototype._timelineRemoved): Deleted.

  • UserInterface/Views/TimelineRecordingContentView.js:

(WebInspector.TimelineRecordingContentView):
(WebInspector.TimelineRecordingContentView.prototype._instrumentAdded):
(WebInspector.TimelineRecordingContentView.prototype._instrumentRemoved):
(WebInspector.TimelineRecordingContentView.prototype._timelineAdded): Deleted.
(WebInspector.TimelineRecordingContentView.prototype._timelineRemoved): Deleted.

  • UserInterface/Views/TimelineSidebarPanel.js:

(WebInspector.TimelineSidebarPanel):
(WebInspector.TimelineSidebarPanel.displayNameForTimeline):
(WebInspector.TimelineSidebarPanel.iconClassNameForTimeline):
(WebInspector.TimelineSidebarPanel.prototype.updateFrameSelection):
(WebInspector.TimelineSidebarPanel.prototype.restoreStateFromCookie):
(WebInspector.TimelineSidebarPanel.prototype._recordingSelected):
(WebInspector.TimelineSidebarPanel.prototype._instrumentAdded):
(WebInspector.TimelineSidebarPanel.prototype._instrumentRemoved):
(WebInspector.TimelineSidebarPanel.prototype._changeViewMode):
(WebInspector.TimelineSidebarPanel.prototype._timelineAdded): Deleted.
(WebInspector.TimelineSidebarPanel.prototype._timelineRemoved): Deleted.
Update all TimelineAdded/TimelineRemoved clients to instead check
InstrumentAdded/InstrumentRemoved. Immediately convert from an Instrument
to a Timeline to keep the patch simple.

1:46 PM Changeset in webkit [192905] by beidson@apple.com
  • 8 edits in trunk/Source/WebCore

Add "RaisesExceptionWithMessage" IDL attribute.
https://bugs.webkit.org/show_bug.cgi?id=151720

Reviewed by Alex Christensen.

No new tests (Covered by changes to existing bindings tests).

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):
(GenerateParametersCheck):
(GenerateReturnParameters):
(GenerateImplementationFunctionCall):
(GenerateConstructorDefinition):

  • bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:

(webkit_dom_test_obj_method_with_exception_with_message):

  • bindings/scripts/test/GObject/WebKitDOMTestObj.h:
  • bindings/scripts/test/JS/JSTestObj.cpp:

(WebCore::jsTestObjPrototypeFunctionMethodWithExceptionWithMessage):

  • bindings/scripts/test/ObjC/DOMTestObj.h:
  • bindings/scripts/test/ObjC/DOMTestObj.mm:

(-[DOMTestObj methodWithExceptionWithMessage]):

  • bindings/scripts/test/TestObj.idl:
1:43 PM Changeset in webkit [192904] by mmaxfield@apple.com
  • 3 edits in trunk/LayoutTests

Test gardening after r192894

Unreviewed.

  • fast/text/small-caps-complex-expected.html:
  • fast/text/small-caps-complex.html:
1:14 PM Changeset in webkit [192903] by Darin Adler
  • 10 edits in trunk/Source

Fix anomaly where isMouseEvent returns false for wheel events
https://bugs.webkit.org/show_bug.cgi?id=151685

Reviewed by Alexey Proskuryakov.

Source/WebCore:

Back three years ago when we made WheelEvent inherit from MouseEvent,
someone decided that isMouseEvent should return false for the wheel events.
An audit of all the callers of isMouseEvent indicated that in almost every
case, it's better to return true, so this patch does that.

All the other call sites that were checking isMouseEvent, here and in the
higher levels of WebKit, benefit from getting true even for wheel events.

  • bindings/objc/DOMEvents.mm:

(kitClass): Use eventInterface instead of isMouseEvent to create the appropriate
wrapper class.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateConstructorDefinition): Eliminated a peculiar search and replace
mistake; "stateution" instead of "execution".

  • dom/Node.cpp:

(WebCore::Node::handleLocalEvents): Add an isWheelEvent check here so that we
will not ignore wheel events. This preserves behavior. A FIXME questions whether
that is the behavior we want.

  • dom/WheelEvent.cpp:

(WebCore::WheelEvent::isMouseEvent): Deleted. No need to override and return false.

  • dom/WheelEvent.h: Ditto.
  • html/HTMLTextAreaElement.cpp:

(WebCore::HTMLTextAreaElement::defaultEventHandler): Removed unneeded checks for
drag events and wheel events; both are types of mouse event, and so a single
isMouseEvent check takes care of all three of these.

  • html/TextFieldInputType.cpp:

(WebCore::TextFieldInputType::forwardEvent): Ditto.

Source/WebKit/win:

  • DOMEventsClasses.cpp:

(DOMEvent::createInstance): Use eventInterface instead of isMouseEvent to create the appropriate
wrapper class.

1:11 PM Changeset in webkit [192902] by Joseph Pecoraro
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Broken Inspector when resources are minified
https://bugs.webkit.org/show_bug.cgi?id=151711

Reviewed by Timothy Hatcher.

  • Scripts/combine-resources.pl:

(concatenateFiles):
Provide a way to just strip resources matches a pattern.

  • Scripts/copy-user-interface-resources.pl:

Strip "Debug/" resources before combining / minifying others.

  • UserInterface/Views/View.js:

(WebInspector.View.prototype.makeRootView):
(WebInspector.View.prototype.didDetach):
Address warnings from the console.assert stripping phase
for console.assert statements lacking a trailing semicolon.

12:53 PM Changeset in webkit [192901] by Jon Davis
  • 2 edits in trunk/Websites/webkit.org

Fixed static reference PHP syntax for compatibility with the server environment.

  • wp-content/plugins/table-of-contents.php:
12:26 PM Changeset in webkit [192900] by commit-queue@webkit.org
  • 36 edits in trunk/Source

Use Optional for matrix inverses
https://bugs.webkit.org/show_bug.cgi?id=151575

Patch by Alex Christensen <achristensen@webkit.org> on 2015-12-01
Reviewed by Myles C. Maxfield.

Source/WebCore:

This patch should have no change in behavior. Some unnecessary checks are removed.
There are a few places where we are no longer multiplying by the identity matrix.
This should remind future coders that not all matrices are invertible.

  • css/WebKitCSSMatrix.cpp:

(WebCore::WebKitCSSMatrix::inverse):
(WebCore::WebKitCSSMatrix::translate):

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::restore):
(WebCore::CanvasRenderingContext2D::scale):
(WebCore::CanvasRenderingContext2D::rotate):
(WebCore::CanvasRenderingContext2D::translate):
(WebCore::CanvasRenderingContext2D::transform):
(WebCore::CanvasRenderingContext2D::setTransform):
(WebCore::CanvasRenderingContext2D::isPointInPathInternal):
(WebCore::CanvasRenderingContext2D::isPointInStrokeInternal):

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::computeLineBoundsAndAntialiasingModeForText):

  • platform/graphics/ShadowBlur.cpp:

(WebCore::ShadowBlur::calculateLayerBoundingRect):

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::paintWithVideoOutput):

  • platform/graphics/cg/ImageBufferCG.cpp:

(WebCore::ImageBuffer::putByteArray):

  • platform/graphics/filters/Filter.h:

(WebCore::Filter::setFilterScale):
(WebCore::Filter::absoluteTransform):
(WebCore::Filter::mapAbsolutePointToLocalPoint):
(WebCore::Filter::renderingMode):
(WebCore::Filter::setRenderingMode):

  • platform/graphics/texmap/TextureMapperLayer.cpp:

(WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica):
(WebCore::TextureMapperLayer::replicaTransform):
(WebCore::TextureMapperLayer::setAnimatedFilters):
(WebCore::TextureMapperLayer::mapScrollOffset):

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::transformedVisibleRect):
(WebCore::CoordinatedGraphicsLayer::computeTransformedVisibleRect):

  • platform/graphics/transforms/AffineTransform.cpp:

(WebCore::AffineTransform::yScale):
(WebCore::det):
(WebCore::AffineTransform::isInvertible):
(WebCore::AffineTransform::inverse):
(WebCore::AffineTransform::det): Deleted.

  • platform/graphics/transforms/AffineTransform.h:
  • platform/graphics/transforms/TransformState.cpp:

(WebCore::TransformState::mappedPoint):
(WebCore::TransformState::mappedQuad):
(WebCore::TransformState::mapQuad):
(WebCore::TransformState::flattenWithTransform):

  • platform/graphics/transforms/TransformationMatrix.cpp:

(WebCore::TransformationMatrix::isInvertible):
(WebCore::TransformationMatrix::inverse):

  • platform/graphics/transforms/TransformationMatrix.h:
  • rendering/HitTestingTransformState.cpp:

(WebCore::HitTestingTransformState::flattenWithTransform):
(WebCore::HitTestingTransformState::mappedPoint):
(WebCore::HitTestingTransformState::mappedQuad):
(WebCore::HitTestingTransformState::mappedArea):
(WebCore::HitTestingTransformState::boundsOfMappedArea):

  • rendering/PaintInfo.h:

(WebCore::PaintInfo::applyTransform):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::paintLayerByApplyingTransform):
(WebCore::RenderLayer::hitTestLayer):

  • rendering/svg/RenderSVGContainer.cpp:

(WebCore::RenderSVGContainer::nodeAtFloatPoint):

  • rendering/svg/RenderSVGForeignObject.cpp:

(WebCore::RenderSVGForeignObject::nodeAtFloatPoint):

  • rendering/svg/RenderSVGImage.cpp:

(WebCore::RenderSVGImage::nodeAtFloatPoint):

  • rendering/svg/RenderSVGResourceClipper.cpp:

(WebCore::RenderSVGResourceClipper::hitTestClipContent):

  • rendering/svg/RenderSVGResourceFilter.cpp:

(WebCore::RenderSVGResourceFilter::postApplyResource):

  • rendering/svg/RenderSVGRoot.cpp:

(WebCore::RenderSVGRoot::nodeAtPoint):

  • rendering/svg/RenderSVGShape.cpp:

(WebCore::RenderSVGShape::setupNonScalingStrokeContext):
(WebCore::RenderSVGShape::nodeAtFloatPoint):
(WebCore::RenderSVGShape::calculateStrokeBoundingBox):

  • rendering/svg/RenderSVGText.cpp:

(WebCore::RenderSVGText::nodeAtFloatPoint):

  • rendering/svg/SVGRenderSupport.cpp:

(WebCore::SVGRenderSupport::intersectRepaintRectWithShadows):

  • rendering/svg/SVGRenderingContext.cpp:

(WebCore::SVGRenderingContext::clipToImageBuffer):

  • svg/SVGLocatable.cpp:

(WebCore::SVGLocatable::getTransformToElement):

  • svg/SVGMatrix.h:

(WebCore::SVGMatrix::inverse):
(WebCore::SVGMatrix::rotateFromVector):

Source/WebKit2:

  • WebProcess/Plugins/Netscape/NetscapePlugin.cpp:

(WebKit::NetscapePlugin::convertFromRootView):

  • WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:

(WebKit::NetscapePlugin::convertPoint):

  • WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm:

(WebKit::PDFPlugin::convertFromPDFViewToRootView):
(WebKit::PDFPlugin::convertFromPDFViewToScreen):
(WebKit::PDFPlugin::boundsOnScreen):
(WebKit::PDFPlugin::geometryDidChange):

  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::geometryDidChange):

12:11 PM Changeset in webkit [192899] by commit-queue@webkit.org
  • 4 edits
    1 add in trunk/Source/JavaScriptCore

[JSC] add missing RequireObjectCoercible() step in destructuring
https://bugs.webkit.org/show_bug.cgi?id=151596

Patch by Caitlin Potter <caitp@igalia.com> on 2015-12-01
Reviewed by Darin Adler.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitRequireObjectCoercible):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::ObjectPatternNode::bindValue):

  • tests/stress/destructuring-assignment-require-object-coercible.js: Added.

(testTypeError):
(testOK):

11:57 AM Changeset in webkit [192898] by timothy_horton@apple.com
  • 23 edits in trunk/Source

Remove swipe snapshot before main document load if scroll position is already restored
https://bugs.webkit.org/show_bug.cgi?id=151224

Reviewed by Darin Adler.

  • UIProcess/Cocoa/WebViewImpl.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::didRestoreScrollPosition):

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

(WebKit::WebPageProxy::didRestoreScrollPosition):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/mac/PageClientImpl.h:
  • UIProcess/mac/PageClientImpl.mm:

(WebKit::PageClientImpl::didRestoreScrollPosition):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::didRestoreScrollPosition):

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

(WebKit::WebPage::didRestoreScrollPosition):

  • WebProcess/WebPage/WebPage.h:

Plumb didRestoreScrollPosition through to ViewGestureController (yikes!).

  • UIProcess/ViewGestureController.cpp:

(WebKit::ViewGestureController::didFirstVisuallyNonEmptyLayoutForMainFrame):
Cancel waiting for any more loads if we get to firstVisuallyNonEmptyLayout.

(WebKit::ViewGestureController::didReachMainFrameLoadTerminalState):
Cancel waiting for scroll position restoration if we make it to main frame load,
because there is a chance we won't be able to restore the old scroll position, and
by main frame load time we've tried as hard as we're going to to restore it.

  • UIProcess/mac/ViewGestureControllerMac.mm:

(WebKit::ViewGestureController::endSwipeGesture):
Make some legacy-style-only code clearer that it's legacy-style-only.
Wait for scroll position restoration.

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

(WebCore::HistoryController::restoreScrollPositionAndViewState):
Each time we try to restore the scroll position, see if the requested
scroll position is something we can scroll to by going through ScrollView's
scroll position constraint logic. If we can scroll there, tell our client
(and eventually ViewGestureController) that we successfully restored the
scroll position!

11:44 AM Changeset in webkit [192897] by Jon Davis
  • 4 edits in trunk/Websites/webkit.org

Fixed PHP syntax for compatibility with the server environment.

  • wp-content/plugins/social-meta.php:
  • wp-content/themes/webkit/functions.php:
  • wp-content/themes/webkit/widgets/twitter.php:
11:31 AM Changeset in webkit [192896] by mark.lam@apple.com
  • 11 edits
    3 adds in trunk/Source/JavaScriptCore

Refactor FTL sub snippet code to support general binary op snippets.
https://bugs.webkit.org/show_bug.cgi?id=151706

Reviewed by Geoffrey Garen.

  • ftl/FTLCompile.cpp:
  • Moved the BinarySnippetRegisterContext to FTLCompileBinaryOp.cpp verbatim.
  • Generalize generateArithSubICFastPath() to generateBinaryOpICFastPath(). It now uses snippet specific helpers in FTLCompileBinaryOp.cpp to generate the fast paths.
  • ftl/FTLCompileBinaryOp.cpp: Added.

(JSC::FTL::BinarySnippetRegisterContext::BinarySnippetRegisterContext):
(JSC::FTL::BinarySnippetRegisterContext::initializeRegisters):
(JSC::FTL::BinarySnippetRegisterContext::restoreRegisters):

  • Moved here without changed from FTLCompile.cpp.

(JSC::FTL::generateArithSubFastPath):

  • ftl/FTLCompileBinaryOp.h: Added.
  • ftl/FTLInlineCacheDescriptor.h:

(JSC::FTL::BinaryOpDescriptor::nodeType):
(JSC::FTL::BinaryOpDescriptor::size):
(JSC::FTL::BinaryOpDescriptor::name):
(JSC::FTL::BinaryOpDescriptor::fastPathICName):
(JSC::FTL::BinaryOpDescriptor::slowPathFunction):
(JSC::FTL::BinaryOpDescriptor::leftOperand):
(JSC::FTL::BinaryOpDescriptor::rightOperand):
(JSC::FTL::BinaryOpDescriptor::BinaryOpDescriptor):
(JSC::FTL::ArithSubDescriptor::ArithSubDescriptor): Deleted.
(JSC::FTL::ArithSubDescriptor::leftType): Deleted.
(JSC::FTL::ArithSubDescriptor::rightType): Deleted.

  • Refactor ArithSubDescriptor into BinaryOpDescriptor, and re-add a sub-class ArithSubDescriptor as specializations of BinaryOpDescriptor.
  • ftl/FTLInlineCacheDescriptorInlines.h: Added.

(JSC::FTL::ArithSubDescriptor::ArithSubDescriptor):
(JSC::FTL::ArithSubDescriptor::icSize):

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::DFG::LowerDFGToLLVM::compileArithAddOrSub):

  • ftl/FTLOSRExit.cpp:

(JSC::FTL::OSRExit::willArriveAtExitFromIndirectExceptionCheck):
(JSC::FTL::OSRExit::willArriveAtOSRExitFromCallOperation):

  • ftl/FTLOSRExit.h:
  • ftl/FTLState.h:
11:24 AM Changeset in webkit [192895] by mmaxfield@apple.com
  • 15 edits
    2 adds in trunk

[iOS] Adjacent emoji overlap each other
https://bugs.webkit.org/show_bug.cgi?id=151690
<rdar://problem/23430453>

Reviewed by Simon Fraser.

Source/WebCore:

This is a partial revert of r188737. It turns out that only CoreText gives correct
glyph advances for emoji. In r188737, I reverted the special iOS emoji processing,
but also removed the logic of using CoreText for emoji advances. This patch adds
the m_isEmoji boolean back, so we can tell if we need to force
platformWidthForGlyph() to use CoreText.

This patch also performs a little bit of cleanup by moving Font's m_isSystemFont
to FontPlatformData where it belongs.

Test: fast/text/emoji-overlap.html

  • platform/graphics/Font.cpp:

(WebCore::fillGlyphPage): Removed unnecessary argument.
(WebCore::Font::Font): Deleted.

  • platform/graphics/Font.h: Moved getters and booleans to FontPlatformData.

(WebCore::Font::hasCustomTracking): Deleted.
(WebCore::Font::isSystemFont): Deleted.

  • platform/graphics/FontPlatformData.cpp:

(WebCore::FontPlatformData::FontPlatformData): Initialize new booleans.
(WebCore::FontPlatformData::operator=): Ditto.

  • platform/graphics/FontPlatformData.h: Getters for new booleans.

(WebCore::FontPlatformData::isSystemFont):
(WebCore::FontPlatformData::hasCustomTracking):
(WebCore::FontPlatformData::isEmoji):

  • platform/graphics/GlyphPage.h: Remove unnecessary argument.
  • platform/graphics/cocoa/FontCocoa.mm:

(WebCore::advanceForColorBitmapFont): Return an Optional instead of using an out
argument.
(WebCore::canUseFastGlyphAdvanceGetter): Make sure that we use CoreText if we are
using the Emoji font.
(WebCore::Font::platformWidthForGlyph):
(WebCore::Font::platformInit): Deleted.

  • platform/graphics/cocoa/FontPlatformDataCocoa.mm: Deal with the new booleans.

(WebCore::FontPlatformData::FontPlatformData):
(WebCore::FontPlatformData::platformDataInit):
(WebCore::FontPlatformData::platformDataAssign):
(WebCore::FontPlatformData::setFont):

  • platform/graphics/freetype/GlyphPageTreeNodeFreeType.cpp:

(WebCore::GlyphPage::fill): Removed unnecessary argument.

  • platform/graphics/mac/GlyphPageMac.cpp:

(WebCore::shouldUseCoreText): Use a reference instead of a pointer.
(WebCore::GlyphPage::fill): Removed unnecessary argument.

  • platform/graphics/win/FontCGWin.cpp:

(WebCore::FontCascade::drawGlyphs): Update for new location of booleans.

  • platform/graphics/win/GlyphPageTreeNodeCGWin.cpp:

(WebCore::GlyphPage::fill): Removed unnecessary argument.

  • platform/graphics/win/GlyphPageTreeNodeCairoWin.cpp:

(WebCore::GlyphPage::fill): Removed unnecessary argument.

  • platform/graphics/win/UniscribeController.cpp:

(WebCore::UniscribeController::shapeAndPlaceItem): Update for new location of
booleans.

LayoutTests:

  • fast/text/emoji-overlap-expected.html: Added.
  • fast/text/emoji-overlap.html: Added.
11:10 AM Changeset in webkit [192894] by mmaxfield@apple.com
  • 3 edits
    3 adds in trunk

[Win] Web fonts with small caps have excess whitespace with the complex text codepath
https://bugs.webkit.org/show_bug.cgi?id=151698

Reviewed by Darin Adler.

Source/WebCore:

When performing small-caps on OS X, we bake in the smaller font size into the platform's native font
object. On Windows, we currently don't do that; instead, we just change some ancillary data inside
the FontPlatformData, and our advance & drawing calculations are sensitive to this ancillary data.
However, in the complex text codepath, Uniscribe only takes the native font object as input, and
therefore operates with the wrong font size.

The solution is to bake the smaller font size into the native platform font on Windows, similar to
OS X. It isn't clear why we didn't do this previously, but it seems like we weren't sure that
Windows would select the correct font when we provide new selection criteria. However, for web fonts,
we already use the same mechanism (CreateFontIndirect()) when we create the font in the first place;
therefore, this scaled font request will always work as well.

Test: fast/text/small-caps-complex.html

  • platform/graphics/win/SimpleFontDataWin.cpp:

(WebCore::Font::platformCreateScaledFont): Deleted.

LayoutTests:

  • fast/text/resources/tinyfont.svg: Added.
  • fast/text/small-caps-complex-expected.html: Added.
  • fast/text/small-caps-complex.html: Added.
11:08 AM Changeset in webkit [192893] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking http/tests/xmlhttprequest/workers/methods.html as flaky on Yosemite WK2
https://bugs.webkit.org/show_bug.cgi?id=151709

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
10:50 AM Changeset in webkit [192892] by beidson@apple.com
  • 2 edits in trunk/LayoutTests

Skip some specific IDB tests in preparation for enabling the entire directory.

Reviewed in person by Sam Weinig.

  • platform/mac-wk1/TestExpectations:
10:30 AM Changeset in webkit [192891] by beidson@apple.com
  • 5 edits in trunk

Modern IDB: storage/indexeddb/create-and-remove-object-store.html fails.
https://bugs.webkit.org/show_bug.cgi?id=151704

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (At least one previously failing test now passes).

  • Modules/indexeddb/client/IDBDatabaseImpl.cpp:

(WebCore::IDBClient::IDBDatabase::deleteObjectStore):

LayoutTests:

  • platform/mac-wk1/TestExpectations:
  • storage/indexeddb/modern/idbdatabase-deleteobjectstore-failures-expected.txt:
10:29 AM Changeset in webkit [192890] by beidson@apple.com
  • 11 edits in trunk

Modern IDB: storage/indexeddb/basics.html fails.
https://bugs.webkit.org/show_bug.cgi?id=151694

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (At least one failing test now passes, and covered by changes to 3 previously incorrect tests).

  • Modules/indexeddb/client/IDBOpenDBRequestImpl.cpp:

(WebCore::IDBClient::IDBOpenDBRequest::versionChangeTransactionWillFinish): Set the flag determining whether

or not the request's transaction should be exposed to the DOM.

  • Modules/indexeddb/client/IDBOpenDBRequestImpl.h:
  • Modules/indexeddb/client/IDBRequestImpl.cpp:

(WebCore::IDBClient::IDBRequest::result): Throw an exception if the request is not done.
(WebCore::IDBClient::IDBRequest::error): Ditto.
(WebCore::IDBClient::IDBRequest::transaction): Only return the transaction to the DOM if the flag says so.

  • Modules/indexeddb/client/IDBRequestImpl.h:
  • Modules/indexeddb/client/IDBTransactionImpl.cpp:

(WebCore::IDBClient::IDBTransaction::abort):
(WebCore::IDBClient::IDBTransaction::commit):

LayoutTests:

  • platform/mac-wk1/TestExpectations:
  • storage/indexeddb/modern/deletedatabase-1.html:
  • storage/indexeddb/modern/opendatabase-versions.html:
  • storage/indexeddb/modern/versionchange-event.html:
10:26 AM Changeset in webkit [192889] by dburkart@apple.com
  • 2 edits in trunk/Source/ThirdParty

Remove Mountain Lion support from gtest
https://bugs.webkit.org/show_bug.cgi?id=151705

Reviewed by Darin Adler.

  • gtest/xcode/Config/General.xcconfig:
9:40 AM Changeset in webkit [192888] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

REGRESSION(r192834): [GTK] Test /webkit2/WebKitWebView/editor-state/typing-attributes times out after r192834
https://bugs.webkit.org/show_bug.cgi?id=151699

Reviewed by Tim Horton.

In r192834 the code to send EditorStateChanged message to the UI
process from WebPage::didChangeSelection was removed for non-mac
ports.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didChangeSelection): Send EditorStateChanged
message to the UI process also for non-mac ports, as before r192834.

9:39 AM Changeset in webkit [192887] by Jon Davis
  • 3 edits
    1 add in trunk/Websites/webkit.org

Updated webkit.org to use the new theme and WordPress deployment.

  • .htaccess:
  • blog/.htaccess:
  • index.php: Added.
9:39 AM Changeset in webkit [192886] by ggaren@apple.com
  • 1 edit in trunk/Source/WTF/ChangeLog

Fixed a typo that Anders noticed.

9:35 AM Changeset in webkit [192885] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

Unreviewed. Fix timeouts in several HTTP layout tests in GTK+ after r192796.

In r192796, the initialization of m_ignoreTLSErrors in
WebProcessPool was removed by mistake, making all HTTP tests that use
HTTPS fail due to invalid certificate errors.

  • UIProcess/WebProcessPool.h: Bring back m_ignoreTLSErrors initialization.
9:34 AM Changeset in webkit [192884] by Jon Davis
  • 2 edits in trunk/Websites/webkit.org

Fixed data return format for tweets when updating cache.

  • wp-content/themes/webkit/widgets/twitter.php:
9:31 AM Changeset in webkit [192883] by Jon Davis
  • 2 edits
    1 add in trunk/Websites/webkit.org

Theme update to tidy styles and add a theme screenshot.

  • wp-content/themes/webkit/screenshot.png: Added.
  • wp-content/themes/webkit/style.css:

(.featured-tile):
(.tile .background-image):

6:39 AM Changeset in webkit [192882] by Carlos Garcia Campos
  • 63 edits
    1 add
    13 deletes in trunk

Unreviewed, rolling out r192876.

It broke a lot of JSC and layout tests for GTK and EFL

Reverted changeset:

"[ES6] "super" and "this" should be lexically bound inside an
arrow function and should live in a JSLexicalEnvironment"
https://bugs.webkit.org/show_bug.cgi?id=149338
http://trac.webkit.org/changeset/192876

5:57 AM Changeset in webkit [192881] by Carlos Garcia Campos
  • 4 edits in trunk/Source/WebKit2
REGRESSION(r192247): [GTK] ASSERTION FAILED: type == WebCore::ActionType
type == WebCore::CheckableActionType type == WebCore::SeparatorType

https://bugs.webkit.org/show_bug.cgi?id=151513

Reviewed by Martin Robinson.

This happens because we are using our own WebContextMenuItemGtk
derived from WebContextMenuItemData, but using our own submenu
items handling. We are using the non-submenu
WebContextMenuItemData constructor to create our submenu items
too, because WebContextMenuItemData always expect the submenu
items to be passed to the constructor, but we have a set_submenu
method in the public API. So we consider that a
WebContextMenuItemGtk is SubmenuType if it has submenu items, but
we use the action type internally. When converting a
WebContextMenuItemGtk to a generic WebContextMenuItemData, we
correctly set the type and pass the submenu items to the
approriate constructor.

  • Shared/gtk/WebContextMenuItemGtk.cpp:

(WebKit::WebContextMenuItemGtk::WebContextMenuItemGtk): When
constructing from a WebContextMenuItemData, set the type as
ActionType when it's a submenu type.

  • Shared/gtk/WebContextMenuItemGtk.h:

(WebKit::WebContextMenuItemGtk::type): Return SubmenuType if
submenu items vector is not empty, otherwise use the parent method.

  • UIProcess/API/gtk/WebKitContextMenuItem.cpp:

(webkit_context_menu_item_new_with_submenu): Create the
WebContextMenuItemGtk as ActionType.

4:23 AM Changeset in webkit [192880] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

[GTK] ASSERTION FAILED: m_table running /webkit2/BackForwardList/navigation in Debug build
https://bugs.webkit.org/show_bug.cgi?id=151700

Reviewed by Martin Robinson.

This happens when the frame notifies its observers that the page
will be detached. The m_table that asserts is the
FrameDestructionObserver HashSet. It happens when clearing the
GObject DOM cache wrappers during frame destruction, and there's a
Document object wrapped whose last reference is held by the DOM
wrapper. In that case, the Document object is destroyed while the
frame is being destroyed. Deleting the wrapper objects after the
frame destruction fixes the crash.

  • bindings/gobject/DOMObjectCache.cpp:
3:02 AM Changeset in webkit [192879] by youenn.fablet@crf.canon.fr
  • 5 edits in trunk

[Streams API] pull function of tee should call readFromReadableStreamReader directly
https://bugs.webkit.org/show_bug.cgi?id=151497

Source/WebCore:

Reviewed by Darin Adler.

Covered by added test.

  • Modules/streams/ReadableStreamInternals.js:

(teeReadableStreamPullFunction): directly calling readFromReadableStreamReader.

LayoutTests:

Unreviewed.

Adding non regression test.

  • streams/streams-promises-expected.txt:
  • streams/streams-promises.html:
2:46 AM Changeset in webkit [192878] by youenn.fablet@crf.canon.fr
  • 4 edits in trunk/Source/WebCore

[Streams API] Clean-up JS built-in code using arrow functions
https://bugs.webkit.org/show_bug.cgi?id=151489

Reviewed by Darin Adler.

Using arrow functions to remove need for _this.
Made errorWritableStream take two parameters to simplify code and align it with the spec.

No change in behavior.

  • Modules/streams/ReadableStream.js:

(initializeReadableStream):

  • Modules/streams/WritableStream.js:

(initializeWritableStream):
(abort):
(write):

  • Modules/streams/WritableStreamInternals.js:

(errorWritableStream):
(writableStreamAdvanceQueue):
(closeWritableStream):

2:14 AM Changeset in webkit [192877] by youenn.fablet@crf.canon.fr
  • 5 edits in trunk

[Streams API] teeReadableStream should not directly use stream.getReader()
https://bugs.webkit.org/show_bug.cgi?id=151487

Reviewed by Darin Adler.

Source/WebCore:

Covered by added test.

  • Modules/streams/ReadableStreamInternals.js:

(teeReadableStream): Create a @ReadableStreamReader instead of calling getReader() which may be disrupted by user scripts.

LayoutTests:

Adding non-regression test.

  • streams/streams-promises-expected.txt:
  • streams/streams-promises.html:
1:46 AM Changeset in webkit [192876] by commit-queue@webkit.org
  • 63 edits
    13 adds
    1 delete in trunk

[ES6] "super" and "this" should be lexically bound inside an arrow function and should live in a JSLexicalEnvironment
https://bugs.webkit.org/show_bug.cgi?id=149338

Source/JavaScriptCore:

Patch by Aleksandr Skachkov <gskachkov@gmail.com> on 2015-12-01
Reviewed by Saam Barati.

Implemented new version of the lexically bound 'this' in arrow function. In current version
'this' is stored inside of the lexical environment of the function. To store and load we use
op_get_from_scope and op_put_to_scope operations. Also new implementation prevent raising TDZ
error for arrow functions that are declared before super() but invoke after.

  • builtins/BuiltinExecutables.cpp:

(JSC::createExecutableInternal):

  • bytecode/BytecodeList.json:
  • bytecode/BytecodeUseDef.h:
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpBytecode):

  • bytecode/EvalCodeCache.h:

(JSC::EvalCodeCache::getSlow):

  • bytecode/ExecutableInfo.h:

(JSC::ExecutableInfo::ExecutableInfo):
(JSC::ExecutableInfo::isDerivedConstructorContext):
(JSC::ExecutableInfo::isArrowFunctionContext):

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::isDerivedConstructorContext):
(JSC::UnlinkedCodeBlock::isArrowFunctionContext):

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::generateUnlinkedFunctionCodeBlock):
(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):

  • bytecode/UnlinkedFunctionExecutable.h:
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::initializeArrowFunctionContextScopeIfNeeded):
(JSC::BytecodeGenerator::variable):
(JSC::BytecodeGenerator::emitLoadArrowFunctionLexicalEnvironment):
(JSC::BytecodeGenerator::emitLoadThisFromArrowFunctionLexicalEnvironment):
(JSC::BytecodeGenerator::emitLoadNewTargetFromArrowFunctionLexicalEnvironment):
(JSC::BytecodeGenerator::emitLoadDerivedConstructorFromArrowFunctionLexicalEnvironment):
(JSC::BytecodeGenerator::emitPutNewTargetToArrowFunctionContextScope):
(JSC::BytecodeGenerator::emitPutDerivedConstructorToArrowFunctionContextScope):
(JSC::BytecodeGenerator::emitPutThisToArrowFunctionContextScope):

  • bytecompiler/BytecodeGenerator.h:

(JSC::BytecodeGenerator::isDerivedConstructorContext):
(JSC::BytecodeGenerator::usesArrowFunction):
(JSC::BytecodeGenerator::needsToUpdateArrowFunctionContext):
(JSC::BytecodeGenerator::usesEval):
(JSC::BytecodeGenerator::usesThis):
(JSC::BytecodeGenerator::newTarget):
(JSC::BytecodeGenerator::makeFunction):

  • bytecompiler/NodesCodegen.cpp:

(JSC::ThisNode::emitBytecode):
(JSC::SuperNode::emitBytecode):
(JSC::EvalFunctionCallNode::emitBytecode):
(JSC::FunctionCallValueNode::emitBytecode):
(JSC::FunctionNode::emitBytecode):

  • debugger/DebuggerCallFrame.cpp:

(JSC::DebuggerCallFrame::evaluate):

  • dfg/DFGAbstractInterpreterInlines.h:
  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGCapabilities.cpp:
  • dfg/DFGClobberize.h:
  • dfg/DFGDoesGC.cpp:
  • dfg/DFGFixupPhase.cpp:
  • dfg/DFGNodeType.h:
  • dfg/DFGObjectAllocationSinkingPhase.cpp:
  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGPromotedHeapLocation.cpp:
  • dfg/DFGPromotedHeapLocation.h:
  • dfg/DFGSafeToExecute.h:
  • dfg/DFGSpeculativeJIT.cpp:
  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:
  • dfg/DFGSpeculativeJIT64.cpp:
  • ftl/FTLCapabilities.cpp:
  • ftl/FTLLowerDFGToLLVM.cpp:
  • ftl/FTLOperations.cpp:

(JSC::FTL::operationMaterializeObjectInOSR):

  • interpreter/Interpreter.cpp:

(JSC::eval):

  • jit/JIT.cpp:
  • jit/JIT.h:
  • jit/JITOpcodes.cpp:

(JSC::JIT::emitNewFuncExprCommon):

  • jit/JITOpcodes32_64.cpp:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createArrowFunctionExpr):
(JSC::ASTBuilder::usesArrowFunction):

  • parser/Nodes.h:

(JSC::ScopeNode::usesArrowFunction):

  • parser/Parser.cpp:

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

  • parser/ParserModes.h:
  • runtime/CodeCache.cpp:

(JSC::CodeCache::getGlobalCodeBlock):
(JSC::CodeCache::getProgramCodeBlock):
(JSC::CodeCache::getEvalCodeBlock):
(JSC::CodeCache::getModuleProgramCodeBlock):
(JSC::CodeCache::getFunctionExecutableFromGlobalCode):

  • runtime/CodeCache.h:
  • runtime/CommonIdentifiers.h:
  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/Executable.cpp:

(JSC::ScriptExecutable::ScriptExecutable):
(JSC::EvalExecutable::create):
(JSC::EvalExecutable::EvalExecutable):
(JSC::ProgramExecutable::ProgramExecutable):
(JSC::ModuleProgramExecutable::ModuleProgramExecutable):
(JSC::FunctionExecutable::FunctionExecutable):

  • runtime/Executable.h:

(JSC::ScriptExecutable::isArrowFunctionContext):
(JSC::ScriptExecutable::isDerivedConstructorContext):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::createEvalCodeBlock):

  • runtime/JSGlobalObject.h:
  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::globalFuncEval):

  • tests/es6.yaml:
  • tests/stress/arrowfunction-activation-sink-osrexit.js:
  • tests/stress/arrowfunction-activation-sink.js:
  • tests/stress/arrowfunction-lexical-bind-newtarget.js: Added.
  • tests/stress/arrowfunction-lexical-bind-supercall-1.js: Added.
  • tests/stress/arrowfunction-lexical-bind-supercall-2.js: Added.
  • tests/stress/arrowfunction-lexical-bind-supercall-3.js: Added.
  • tests/stress/arrowfunction-lexical-bind-supercall-4.js: Added.
  • tests/stress/arrowfunction-lexical-bind-this-1.js:
  • tests/stress/arrowfunction-lexical-bind-this-7.js: Added.
  • tests/stress/arrowfunction-tdz-1.js: Added.
  • tests/stress/arrowfunction-tdz-2.js: Added.
  • tests/stress/arrowfunction-tdz-3.js: Added.
  • tests/stress/arrowfunction-tdz-4.js: Added.
  • tests/stress/arrowfunction-tdz.js: Removed.

LayoutTests:

Patch by Skachkov Oleksandr <gskachkov@gmail.com> on 2015-12-01
Reviewed by Saam Barati.

  • js/arrowfunction-supercall-expected.txt: Added.
  • js/arrowfunction-supercall.html: Added.
  • js/arrowfunction-tdz-expected.txt: Added new expectation.
  • js/script-tests/arrowfunction-supercall.js: Added.
  • js/script-tests/arrowfunction-tdz.js: Added new cases.
1:24 AM Changeset in webkit [192875] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

Unreviewed. Add missing inspector files to the GTK+ build.

  • PlatformGTK.cmake: Add also Debug css files.
1:06 AM Changeset in webkit [192874] by youenn.fablet@crf.canon.fr
  • 9 edits in trunk

[Streams API] streams should not directly use Number and related methods
https://bugs.webkit.org/show_bug.cgi?id=151499

Reviewed by Darin Adler.

Source/JavaScriptCore:

  • runtime/CommonIdentifiers.h: Adding isNaN as private symbol.
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init): Adding @isNaN function.

Source/WebCore:

Covered by updated test.

Using @Number, @isFinite and @isNaN in place of Number, Number.isFinite and Number.isNaN.

  • Modules/streams/ReadableStreamInternals.js:

(enqueueInReadableStream):

  • Modules/streams/StreamInternals.js:

(validateAndNormalizeQueuingStrategy):
(enqueueValueWithSize):

LayoutTests:

Added a non-regression test.

  • streams/streams-promises-expected.txt:
  • streams/streams-promises.html:
1:05 AM Changeset in webkit [192873] by Csaba Osztrogonác
  • 2 edits in trunk/Source/JavaScriptCore

Don't hide the argument name inside for block in AirIteratedRegisterCoalescing.cpp
https://bugs.webkit.org/show_bug.cgi?id=151622

Reviewed by Darin Adler.

  • b3/air/AirIteratedRegisterCoalescing.cpp:

(JSC::B3::Air::IteratedRegisterCoalescingAllocator::addEdges):

1:04 AM Changeset in webkit [192872] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebCore

Unreviewed. Fix GTK+ build after r192849.

  • bindings/scripts/CodeGeneratorGObject.pm:

(GenerateFunction):

  • bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:

(webkit_dom_test_interface_supplemental_method1):
(webkit_dom_test_interface_supplemental_method2):
(webkit_dom_test_interface_set_supplemental_str2):
(webkit_dom_test_interface_get_supplemental_node):
(webkit_dom_test_interface_set_supplemental_node):

12:29 AM Changeset in webkit [192871] by bshafiei@apple.com
  • 2 edits in branches/safari-601.1.46-branch/Source/WebKit2

Merged r192742. rdar://problem/23693587

12:28 AM Changeset in webkit [192870] by bshafiei@apple.com
  • 2 edits in branches/safari-601.1.46-branch/Source/WebCore

Merged r192709. rdar://problem/23693587

12:27 AM Changeset in webkit [192869] by bshafiei@apple.com
  • 7 edits in branches/safari-601.1.46-branch/Source

Merged r192701. rdar://problem/23693587

12:24 AM Changeset in webkit [192868] by bshafiei@apple.com
  • 5 edits in branches/safari-601.1.46-branch/Source

Merged r192689. rdar://problem/23691644

12:18 AM Changeset in webkit [192867] by bshafiei@apple.com
  • 3 edits in branches/safari-601.1.46-branch/Source/WebCore

Merged r190894. rdar://problem/23691644

12:16 AM Changeset in webkit [192866] by bshafiei@apple.com
  • 4 edits in branches/safari-601.1.46-branch/Source/WebCore

Merged r190587. rdar://problem/23694043

12:15 AM Changeset in webkit [192865] by youenn.fablet@crf.canon.fr
  • 7 edits in trunk

[Streams API] Remove use of @catch for exposed promises
https://bugs.webkit.org/show_bug.cgi?id=151625

Reviewed by Darin Adler.

Source/JavaScriptCore:

  • runtime/JSPromisePrototype.cpp:

(JSC::JSPromisePrototype::addOwnInternalSlots): Removing @catch from the prototype as it is not safe.

Source/WebCore:

Promise @catch is calling "then" which may be controlled by user scripts.
This patch simply replaces @catch by calling @then directly.

Covered by modified tests.

  • Modules/streams/ReadableStream.js:

(pipeTo):

  • Modules/streams/ReadableStreamInternals.js:

(teeReadableStream):

LayoutTests:

  • streams/streams-promises.html: beefing up the catch test by also overwritting Promise.prototype.then.
12:07 AM Changeset in webkit [192864] by bshafiei@apple.com
  • 2 edits in branches/safari-601.1.46-branch/Source/WebCore

Merged r190576. rdar://problem/23694043

Note: See TracTimeline for information about the timeline view.