Timeline


and

09/30/16: Yesterday

20:59 Changeset [206706] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION (r203424): WebCore::ImageBuffer::createCompatibleBuffer() in ImageBufferCG.cpp over-releases CGColorSpaceRef objects
<https://webkit.org/b/162823>
<rdar://problem/27723268>

Reviewed by Joseph Pecoraro.

Code is covered by existing tests, but no crashes have been
observed in practice. May require running one test multiple
times to reproduce.

  • platform/graphics/cg/ImageBufferCG.cpp:

(WebCore::ImageBuffer::createCompatibleBuffer): Don't use
adoptCF() when the function doesn't return a +1 retained
CGColorSpaceRef.

20:49 Changeset [206705] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebKit2

Follow-up patch after r206701
https://bugs.webkit.org/show_bug.cgi?id=162818

Unreviewed.

I missed one place required to enable an experimental feature by default.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::registerUserDefaultsIfNeeded):

19:48 Changeset [206704] by jh718.park@samsung.com
  • 2 edits in trunk/Source/WebCore

[EFL] Fix build break since r206661. Unreviewed
https://bugs.webkit.org/show_bug.cgi?id=162825

No new tests, no new behaviours.

  • rendering/RenderLayer.cpp:

(WebCore::ClipRects::ClipRects):

18:28 Changeset [206703] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

Declare that our variation fonts work is in progress
https://bugs.webkit.org/show_bug.cgi?id=162816

Reviewed by Simon Fraser.

  • features.json:
18:27 Changeset [206702] by mitz@apple.com
  • 2 edits in trunk/Source/WebKit2

[iOS] Editing menu omits the Share command if the selected text is longer than 200 characters
https://bugs.webkit.org/show_bug.cgi?id=162821
<rdar://problem/28409828>

Reviewed by Tim Horton.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView canPerformAction:withSender:]): Changed to return YES for the _share:

action even if the selection is longer than 200 characters. While Define should not have
been available for longer selections, Share does not have such a limitation.

18:26 Changeset [206701] by mmaxfield@apple.com
  • 5 edits in trunk/Source

Turn variation fonts on by default
https://bugs.webkit.org/show_bug.cgi?id=162818

Reviewed by Simon Fraser.

Source/WebCore:

No new tests because there is no behavior change.

  • page/Settings.in:
  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::variationFontsEnabled):

Source/WebKit2:

  • Shared/WebPreferencesDefinitions.h:
17:59 Changeset [206700] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.2.14.1.1

New tag.

17:59 Changeset [206699] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.2.14.0.4

New tag.

17:52 Changeset [206698] by joepeck@webkit.org
  • 3 edits
    2 adds in trunk

Web Inspector: Stepping to a line with an autoContinue breakpoint should still pause
https://bugs.webkit.org/show_bug.cgi?id=161712
<rdar://problem/28193970>

Reviewed by Brian Burg.

Source/JavaScriptCore:

  • debugger/Debugger.cpp:

(JSC::Debugger::pauseIfNeeded):
If we stepped to an auto-continue breakpoint we should continue
stepping, not just continue.

LayoutTests:

  • inspector/debugger/stepping/stepping-through-autoContinue-breakpoint-expected.txt: Added.
  • inspector/debugger/stepping/stepping-through-autoContinue-breakpoint.html: Added.
17:18 Changeset [206697] by bshafiei@apple.com
  • 3 edits in branches/safari-602-branch/Source/WebCore

Merge follow up fix for rdar://problem/28567557.

17:16 Changeset [206696] by bshafiei@apple.com
  • 3 edits in branches/safari-602.2.14.1-branch/Source/WebCore

Merge follow up fix for rdar://problem/28567561.

17:12 Changeset [206695] by andersca@apple.com
  • 3 edits in branches/safari-602.2.14.0-branch/Source/WebCore

Follow up for <rdar://problem/28567561> Add CSS -webkit-appearance property for Apple Pay buttons

Reviewed by Dan Bernstein.

  • css/CSSParser.cpp:

(WebCore::isKeywordPropertyID):
Add CSSPropertyApplePayButtonStyle and CSSPropertyApplePayButtonType.

  • rendering/RenderThemeCocoa.mm:

(WebCore::RenderThemeCocoa::paintApplePayButton):
Make sure to reinitialize the text matrix.

17:08 Changeset [206694] by fpizlo@apple.com
  • 10 edits in trunk/Source/JavaScriptCore

B3 should support trapping memory accesses
https://bugs.webkit.org/show_bug.cgi?id=162689

Reviewed by Geoffrey Garen.

This adds a traps flag to B3::Kind. It also makes B3::Kind work more like Air::Kind, in the
sense that it's a bag of distinct bits - it doesn't need to be a union unless we get enough
things that it would make a difference.

The only analysis that needs to know about traps is effects. It now knows that traps implies
sideExits, which means that this turns off DCE. The only optimization that needs to know
about traps is eliminateCommonSubexpressions(), which needs to pessimize its store
elimination if the store traps.

The hard part of this change is teaching the instruction selector to faithfully carry the
traps flag down to Air. I got this to work by making ArgPromise a non-copyable object that
knows whether you've used it in an instruction. It knows when you call consume(). If you do
this then ArgPromise cannot be destructed without first passing your inst through it. This,
along with a few other hacks, means that all of the load-op and load-op-store fusions
correctly carry the trap bit: if any of the B3 loads or stores involved traps then you get
traps in Air.

This framework also sets us up to do bug 162688, since the ArgPromise::inst() hook is
powerful enough to allow wrapping the instruction with a Patch.

I added some tests to testb3 that verify that optimizations are appropriately inhibited and
that the traps flag survives until the bitter end of Air.

  • b3/B3EliminateCommonSubexpressions.cpp:
  • b3/B3Kind.cpp:

(JSC::B3::Kind::dump):

  • b3/B3Kind.h:

(JSC::B3::Kind::Kind):
(JSC::B3::Kind::hasExtraBits):
(JSC::B3::Kind::isChill):
(JSC::B3::Kind::setIsChill):
(JSC::B3::Kind::hasTraps):
(JSC::B3::Kind::traps):
(JSC::B3::Kind::setTraps):
(JSC::B3::Kind::operator==):
(JSC::B3::Kind::hash):
(JSC::B3::trapping):

  • b3/B3LowerToAir.cpp:

(JSC::B3::Air::LowerToAir::ArgPromise::swap):
(JSC::B3::Air::LowerToAir::ArgPromise::ArgPromise):
(JSC::B3::Air::LowerToAir::ArgPromise::operator=):
(JSC::B3::Air::LowerToAir::ArgPromise::~ArgPromise):
(JSC::B3::Air::LowerToAir::ArgPromise::setTraps):
(JSC::B3::Air::LowerToAir::ArgPromise::consume):
(JSC::B3::Air::LowerToAir::ArgPromise::inst):
(JSC::B3::Air::LowerToAir::trappingInst):
(JSC::B3::Air::LowerToAir::loadPromiseAnyOpcode):
(JSC::B3::Air::LowerToAir::appendUnOp):
(JSC::B3::Air::LowerToAir::appendBinOp):
(JSC::B3::Air::LowerToAir::tryAppendStoreUnOp):
(JSC::B3::Air::LowerToAir::tryAppendStoreBinOp):
(JSC::B3::Air::LowerToAir::appendStore):
(JSC::B3::Air::LowerToAir::append):
(JSC::B3::Air::LowerToAir::createGenericCompare):
(JSC::B3::Air::LowerToAir::createBranch):
(JSC::B3::Air::LowerToAir::createCompare):
(JSC::B3::Air::LowerToAir::createSelect):
(JSC::B3::Air::LowerToAir::lower):

  • b3/B3Validate.cpp:
  • b3/B3Value.cpp:

(JSC::B3::Value::effects):

  • b3/B3Value.h:
  • b3/air/AirCode.h:
  • b3/testb3.cpp:

(JSC::B3::testTrappingLoad):
(JSC::B3::testTrappingStore):
(JSC::B3::testTrappingLoadAddStore):
(JSC::B3::testTrappingLoadDCE):
(JSC::B3::testTrappingStoreElimination):
(JSC::B3::run):

16:26 Changeset [206693] by joepeck@webkit.org
  • 4 edits
    2 adds in trunk

Web Inspector: Stepping over/out of a function sometimes resumes instead of taking you to caller
https://bugs.webkit.org/show_bug.cgi?id=162802
<rdar://problem/28569982>

Reviewed by Mark Lam.

Source/JavaScriptCore:

  • debugger/Debugger.cpp:

(JSC::Debugger::stepOverStatement):
(JSC::Debugger::stepOutOfFunction):
Enable stepping mode when we start stepping.

LayoutTests:

  • inspector/debugger/resources/log-pause-location.js:

(TestPage.registerInitializer.createLocation):
(TestPage.registerInitializer.window.setBreakpointsOnLinesWithBreakpointComment):
Helper to set breakpoints everywhere in a file that has a BREAKPOINT comment.

  • inspector/debugger/stepping/stepping-pause-in-inner-step-to-parent-expected.txt: Added.
  • inspector/debugger/stepping/stepping-pause-in-inner-step-to-parent.html: Added.

Test that stepping out and over end up in the parent. Before this change
we would never have made it back into entry and the test failed.

16:12 Changeset [206692] by mmaxfield@apple.com
  • 8 edits
    10 adds in trunk

Implement rendering of font-variation-settings
https://bugs.webkit.org/show_bug.cgi?id=162782

Reviewed by Zalan Bujtas.

Source/WebCore:

Because the heavy lifting for font-variation-settings is done by CoreText,
this patch is fairly minimal. It simply hooks up the CSS property to CoreText.

There is an existing bug in CoreText where variations inside fonts do not
survive the addition of a cascade list. Therefore, FontPlatformData::ctFont()
needs to work around this (conditionally) by resupplying the variation at
the same time as the cascade list. The CoreText bug is <rdar://problem/28449441>.

Tests: fast/text/variations/duplicate.html

fast/text/variations/exist.html
fast/text/variations/inheritance.html
fast/text/variations/order.html
fast/text/variations/outofbounds.html

  • platform/graphics/FontCache.h:
  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::preparePlatformFont):
(WebCore::fontWithFamily):
(WebCore::FontCache::createFontPlatformData):
(WebCore::FontCache::systemFallbackForCharacters):

  • platform/graphics/cocoa/FontPlatformDataCocoa.mm:

(WebCore::cascadeToLastResortAttributesDictionary):
(WebCore::cascadeToLastResortAndVariationsFontDescriptor):
(WebCore::FontPlatformData::ctFont):
(WebCore::cascadeToLastResortFontDescriptor): Deleted.

  • platform/graphics/mac/FontCustomPlatformData.cpp:

(WebCore::FontCustomPlatformData::fontPlatformData):

  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::updateCachedSystemFontDescription):

LayoutTests:

  • fast/text/variations/duplicate-expected.html: Added.
  • fast/text/variations/duplicate.html: Added.
  • fast/text/variations/exist-expected-mismatch.html: Added.
  • fast/text/variations/exist.html: Added.
  • fast/text/variations/getComputedStyle.html:
  • fast/text/variations/inheritance-expected.html: Added.
  • fast/text/variations/inheritance.html: Added.
  • fast/text/variations/order-expected.html: Added.
  • fast/text/variations/order.html: Added.
  • fast/text/variations/outofbounds-expected.html: Added.
  • fast/text/variations/outofbounds.html: Added.
16:10 Changeset [206691] by weinig@apple.com
  • 9 edits
    2 adds in trunk/Source

Add initial support for IDL union conversion
https://bugs.webkit.org/show_bug.cgi?id=161576

Reviewed by Chris Dumez.

Source/WebCore:

  • WebCore.xcodeproj/project.pbxproj:

Add IDLTypes.h

  • bindings/generic/IDLTypes.h: Added.

Add a basic type hierarchy for types defined by WebIDL and their corresponding
WebCore implementation types.

  • bindings/js/JSDOMConvert.h:

(WebCore::Converter<IDLDOMString>::convert):
(WebCore::Converter<IDLUSVString>::convert):
Add Converters for IDLDOMString and IDLUSVString.

(WebCore::ConditionalConverter<typename ReturnType, typename T, bool enabled>)
Add a struct to allow conditional conversion of types based on a compile boolean
value. This allows the union code to work, by ensuring that code for types that don't
exist doesn't get compiled.

(WebCore::Converter<IDLUnion>::convert):
Add template meta programming based version of the WebIDL conversion algorithm. It uses
introspection of the typelist to conditionally execute the parts of the algorithm that
apply and relies on the compiler eliminate the dead code it produces. This initial cut
doesn't implement the full algorithm, just a subset needed to see if this method will work
out.

  • bindings/js/JSDOMWrapper.h:

(WebCore::isJSDOMWrapperType):
Add JSDOMWrapperType to the list of well known types to allow quick checking of wrappers
by the union code.

  • bindings/js/JSNodeOrString.cpp:

(WebCore::toNodeOrStringVector):
Switch to new IDLUnion based converter.

Source/WTF:

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:

Add Brigand.h

  • wtf/Brigand.h: Added.

Import a standalone copy of Edouard Alligand and Joel Falcou's
Brigand library for help with for help with list based meta programming

  • wtf/StdLibExtras.h:

Add a new three new type traits, IsTemplate, IsBaseOfTemplate and RemoveCVAndReference.

  • IsTemplate acts like std::is_class, but works with a generic base.
  • IsBaseOfTemplate acts like std::is_base_of, but works with a generic base.
  • RemoveCVAndReference combines std::remove_cv and std::remove_reference.
16:08 Changeset [206690] by mmaxfield@apple.com
  • 6 edits
    6 adds in trunk

Implement animation of font-variation-settings
https://bugs.webkit.org/show_bug.cgi?id=162783

Reviewed by Simon Fraser.

Source/WebCore:

Modify CSSPropertyAnimation to understand FontVariationSettings objects and how
to interpolate them.

If two FontVariationSettings objects are unlike (meaning they specify different
variation axes), for now the interpolation simply returns an empty object. This
might change in the future, but for now, this is a reasonable place to start.

Because CSSPropertyAnimation interacts with RenderStyles instead of
FontDescriptions, this patch adds a transparent accessor from the RenderStyle
to the inner FontDescription.

Tests: animations/font-variation-settings-order.html

animations/font-variation-settings-unlike.html
animations/font-variation-settings.html

  • page/animation/CSSPropertyAnimation.cpp:

(WebCore::blendFunc):
(WebCore::PropertyWrapperFontVariationSettings::PropertyWrapperFontVariationSettings):
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::setFontVariationSettings):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::fontVariationSettings):

LayoutTests:

Animation tests need a little infrastructure to be able to tell if two computed
values for font-variation-settings are equivalent.

  • animations/font-variation-settings-expected.html: Added.
  • animations/font-variation-settings-order-expected.html: Added.
  • animations/font-variation-settings-order.html: Added.
  • animations/font-variation-settings-unlike-expected.html: Added.
  • animations/font-variation-settings-unlike.html: Added.
  • animations/font-variation-settings.html: Added.
  • animations/resources/animation-test-helpers.js:

(compareFontVariationSettings):
(getPropertyValue):
(comparePropertyValue):

15:47 Changeset [206689] by bshafiei@apple.com
  • 6 edits in branches/safari-602.2.14.0-branch/Source/WebCore

Merge r206181. rdar://problem/28408526

15:46 Changeset [206688] by bshafiei@apple.com
  • 2 edits in branches/safari-602.2.14.0-branch/Source/WebCore

Merge r205992. rdar://problem/28567557

15:46 Changeset [206687] by bshafiei@apple.com
  • 17 edits
    2 adds in branches/safari-602.2.14.0-branch/Source/WebCore

Merge r205980. rdar://problem/28567557

15:45 Changeset [206686] by commit-queue@webkit.org
  • 2 edits
    30 adds in trunk

[Modern Media Controls] layout nodes
https://bugs.webkit.org/show_bug.cgi?id=162799
<rdar://problem/28569301>

Patch by Antoine Quint <graouts@apple.com> on 2016-09-30
Reviewed by Dean Jackson.

Source/WebCore:

Modern media controls will be using a tree of LayoutNode objects that commit to the DOM
in coordinated requestAnimationFrame() calls to ensure all layouts are done in an efficient
and coordinated manner. As a preamble, we introduced the scheduler singleton in
https://webkit.org/b/162726 which is in charge of scheduling callbacks.

A LayoutNode is created by providing an Element to its constructor, or an HTML string. Not
providing a parameter creates a simple <div>.

When we set a property on a LayoutNode, we call markDirtyProperty(propertyName) which keeps
track of dirty properties in the _dirtyProperties set. When this set is non-empty, the node
is marked as dirty and registered in the global dirtyNodes map, asking the shared scheduler
that a layout is needed. When the layout is performed, all nodes in the dirtyNodes map are
processed such that commitProperty(propertyName) is called to commit dirty properties for
a given node to the DOM, and layout() is called to allow subclasses of LayoutNode to conduct
custom layout logic that goes beyond committing a given property.

Another reason why a node may be marked as dirty is when a DOM hierarchy change is needed. A
host of DOM-like methods are exposed to allow flexible manipulations of nodes, with an extra
children property which allows wholesale change of a node's subtree with a single array
property assignment. Changes to the DOM hierarchy are performed in the same scheduler callback
as style properties.

Nodes can be marked for layout explicitly with by setting the needsLayout property.

Tests: media/modern-media-controls/layout-node/addChild.html

media/modern-media-controls/layout-node/children.html
media/modern-media-controls/layout-node/constructor.html
media/modern-media-controls/layout-node/height.html
media/modern-media-controls/layout-node/insertAfter.html
media/modern-media-controls/layout-node/insertBefore.html
media/modern-media-controls/layout-node/parent.html
media/modern-media-controls/layout-node/remove.html
media/modern-media-controls/layout-node/removeChild.html
media/modern-media-controls/layout-node/subclassing.html
media/modern-media-controls/layout-node/visible.html
media/modern-media-controls/layout-node/width.html
media/modern-media-controls/layout-node/x.html
media/modern-media-controls/layout-node/y.html

  • Modules/modern-media-controls/controls/layout-node.js: Added.

(LayoutNode):
(LayoutNode.prototype.get x):
(LayoutNode.prototype.set x):
(LayoutNode.prototype.get y):
(LayoutNode.prototype.set y):
(LayoutNode.prototype.get width):
(LayoutNode.prototype.set width):
(LayoutNode.prototype.get height):
(LayoutNode.prototype.set height):
(LayoutNode.prototype.get visible):
(LayoutNode.prototype.set visible):
(LayoutNode.prototype.get needsLayout):
(LayoutNode.prototype.set needsLayout):
(LayoutNode.prototype.get parent):
(LayoutNode.prototype.get children):
(LayoutNode.prototype.set children):
(LayoutNode.prototype.addChild):
(LayoutNode.prototype.insertBefore):
(LayoutNode.prototype.insertAfter):
(LayoutNode.prototype.removeChild):
(LayoutNode.prototype.remove):
(LayoutNode.prototype.markDirtyProperty):
(LayoutNode.prototype.commitProperty):
(LayoutNode.prototype.layout):
(LayoutNode.prototype._markNodeManipulation):
(LayoutNode.prototype._updateDirtyState):
(LayoutNode.prototype._updateChildren):
(performScheduledLayout):
(elementFromString):

LayoutTests:

Testing all public properties and methods of the LayoutNode class.

  • media/modern-media-controls/layout-node/addChild-expected.txt: Added.
  • media/modern-media-controls/layout-node/addChild.html: Added.
  • media/modern-media-controls/layout-node/children-expected.txt: Added.
  • media/modern-media-controls/layout-node/children.html: Added.
  • media/modern-media-controls/layout-node/constructor-expected.txt: Added.
  • media/modern-media-controls/layout-node/constructor.html: Added.
  • media/modern-media-controls/layout-node/height-expected.txt: Added.
  • media/modern-media-controls/layout-node/height.html: Added.
  • media/modern-media-controls/layout-node/insertAfter-expected.txt: Added.
  • media/modern-media-controls/layout-node/insertAfter.html: Added.
  • media/modern-media-controls/layout-node/insertBefore-expected.txt: Added.
  • media/modern-media-controls/layout-node/insertBefore.html: Added.
  • media/modern-media-controls/layout-node/parent-expected.txt: Added.
  • media/modern-media-controls/layout-node/parent.html: Added.
  • media/modern-media-controls/layout-node/remove-expected.txt: Added.
  • media/modern-media-controls/layout-node/remove.html: Added.
  • media/modern-media-controls/layout-node/removeChild-expected.txt: Added.
  • media/modern-media-controls/layout-node/removeChild.html: Added.
  • media/modern-media-controls/layout-node/subclassing-expected.txt: Added.
  • media/modern-media-controls/layout-node/subclassing.html: Added.
  • media/modern-media-controls/layout-node/visible-expected.txt: Added.
  • media/modern-media-controls/layout-node/visible.html: Added.
  • media/modern-media-controls/layout-node/width-expected.txt: Added.
  • media/modern-media-controls/layout-node/width.html: Added.
  • media/modern-media-controls/layout-node/x-expected.txt: Added.
  • media/modern-media-controls/layout-node/x.html: Added.
  • media/modern-media-controls/layout-node/y-expected.txt: Added.
  • media/modern-media-controls/layout-node/y.html: Added.
15:43 Changeset [206685] by bshafiei@apple.com
  • 5 edits in branches/safari-602.2.14.0-branch/Source

Versioning.

15:38 Changeset [206684] by beidson@apple.com
  • 8 edits in trunk/Source/WebKit2

REGRESSION (Safari 10 combined with WK changes): Unable to store WebCrypto keys in IndexedDB database.
<rdar://problem/28334440> and https://bugs.webkit.org/show_bug.cgi?id=162554

Reviewed by Alexey Proskuryakov.

Safari 10 has a WKPageNavigation client but does not implement the "copyWebCryptoMasterKey" callback.

WebKit just fails in this case, instead of falling back to "getDefaultWebCryptoMasterKey".
It should fall back.

Additionally there's a WKContextClient callback to get the crypto key, also, but it is completely unused.
So it should be pulled.

  • UIProcess/API/APILoaderClient.h:

(API::LoaderClient::webCryptoMasterKey): Deleted.

  • UIProcess/API/C/WKContext.h:
  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageLoaderClient):
(WKPageSetPageNavigationClient): If the client doesn't implement this method, fallback to getDefaultWebCryptoMasterKey.

  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::NavigationClient::webCryptoMasterKey): If the client doesn't implement this method,

fallback to getDefaultWebCryptoMasterKey.

  • UIProcess/WebContextClient.cpp:

(WebKit::WebContextClient::copyWebCryptoMasterKey): Deleted.

  • UIProcess/WebContextClient.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::wrapCryptoKey): Only ask the NavigationClient before falling back. Don't ask the loader client.
(WebKit::WebPageProxy::unwrapCryptoKey): Ditto.

15:30 Changeset [206683] by commit-queue@webkit.org
  • 17 edits in trunk/Source

The dragged image should be the current frame only of the animated image
https://bugs.webkit.org/show_bug.cgi?id=162109

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2016-09-30
Reviewed by Tim Horton.

Source/WebCore:

Instead of creating an NSImage with all the frames for the dragImage,
create an NSImage with the current frame only.

  • dom/DataTransferMac.mm:

(WebCore::DataTransfer::createDragImage): Call currentFrameNSImage() to create the dragImage.

  • editing/cocoa/HTMLConverter.mm:

(fileWrapperForElement): Call the Image function with its new name.

  • platform/graphics/BitmapImage.h:
  • platform/graphics/Image.h:

(WebCore::Image::nsImage): Rename getNSImage() to nsImage().
(WebCore::Image::currentFrameNSImage): Returns the NSImage of the current frame.
(WebCore::Image::tiffRepresentation): Rename getTIFFRepresentation() to tiffRepresentation().
(WebCore::Image::getNSImage): Deleted.
(WebCore::Image::getTIFFRepresentation): Deleted.

  • platform/graphics/mac/ImageMac.mm:

(WebCore::BitmapImage::tiffRepresentation): Rename getTIFFRepresentation() to tiffRepresentation().
(WebCore::BitmapImage::nsImage): Rename getNSImage() to nsImage().
(WebCore::BitmapImage::currentFrameNSImage): Returns the NSImage of the current frame.
(WebCore::BitmapImage::getTIFFRepresentation): Deleted.
(WebCore::BitmapImage::getNSImage): Deleted.

  • platform/mac/CursorMac.mm:

(WebCore::createCustomCursor): Call currentFrameNSImage() since the cursor does not animate anyway.

  • platform/mac/DragImageMac.mm:

(WebCore::createDragImageFromImage): Use currentFrameNSImage() for the dragImage.

  • platform/mac/PasteboardMac.mm:

(WebCore::Pasteboard::write): Call the Image function with its new name.

Source/WebKit/mac:

  • DOM/DOM.mm:

(-[DOMElement image]): Call the Image function with its new name.
(-[DOMElement _imageTIFFRepresentation]): Ditto.

  • Misc/WebElementDictionary.mm:

(-[WebElementDictionary _image]): Call the Image function with its new name.

  • Misc/WebIconDatabase.mm:

(-[WebIconDatabase defaultIconWithSize:]): Call currentFrameNSImage() to create the icon image.
(webGetNSImage): Call the Image function with its new name.

  • WebCoreSupport/WebContextMenuClient.mm:

(WebContextMenuClient::imageForCurrentSharingServicePickerItem): Call currentFrameNSImage() instead of nsImage()..
(WebContextMenuClient::contextMenuForEvent): Ditto.

  • WebView/WebHTMLView.mm:

(-[WebHTMLView pasteboard:provideDataForType:]): Call the Image function with its new name.

Source/WebKit2:

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::provideDataForPasteboard): Call the Image function with its new name.

15:29 Changeset [206682] by fpizlo@apple.com
  • 7 edits in trunk/Source

B3::moveConstants should be able to edit code to minimize the number of constants
https://bugs.webkit.org/show_bug.cgi?id=162764

Reviewed by Saam Barati.

Source/JavaScriptCore:

There are some interesting cases where we can reduce the number of constant materializations if
we teach moveConstants() how to edit code. The two examples that this patch supports are:

  • Loads and stores from a constant pointer. Since loads and stores get an offset for free and the instruction selector is really good at handling it, and since we can query Air to see what kinds of offsets are legal, we can sometimes avoid using a constant pointer that is specific to the absolute address of that load and instead pick some other constant that is within offset distance of ours.


  • Add and Sub by a constant (x + c, x - c). Since x + c = x - -c and x - c = x + -c, we can flip Add to Sub or vice versa if the negated constant is available.


This change makes moveConstants() pick the most dominant constant that works for an value. In
the case of memory accesses, it uses Air::Arg::isValidAddrForm() to work out what other
constants would work. In the case of Add/Sub, it simply looks for the negated constant. This
should result in something like a minimal number of constants since these rules always pick the
most dominant constant that works - so if an Add's constant is already most dominant then
nothing changes, but if the negated one is more dominant then it becomes a Sub.

This is a 0.5% speed-up on LongSpider and neutral elsewhere. It's a speed-up because the
absolute address thing reduces the number of address materializations that we have to do, while
the add/sub thing prevents us from having to materialize 0x1000000000000 to box doubles.
However, this may introduce a pathology, which I've filed a bug for: bug 162796.

  • b3/B3MoveConstants.cpp:
  • b3/B3MoveConstants.h:
  • b3/B3UseCounts.h:
  • b3/air/AirFixObviousSpills.cpp:
  • b3/testb3.cpp:

(JSC::B3::testMoveConstants):
(JSC::B3::run):

Source/WTF:

I thought it would be a good idea to document the fact that dominator traversal happens in a
particular order for a reason.

  • wtf/Dominators.h:
15:21 Changeset [206681] by cdumez@apple.com
  • 3 edits in trunk/Source/WebCore

[iOS] Allow sequence<Touch> input in TouchEvent constructor
https://bugs.webkit.org/show_bug.cgi?id=162806
<rdar://problem/28566429>

Reviewed by Ryosuke Niwa.

Allow sequence<Touch> input in TouchEvent constructor in addition to
TouchList objects. It is convenient for developers to pass arrays of
Touch objects.

No new tests, already covered by:
imported/w3c/web-platform-tests/touch-events/touch-touchevent-constructor.html

  • bindings/js/JSDOMBinding.h:

(WebCore::toRefNativeArray):
(WebCore::toRefPtrNativeArray):

  • bindings/js/JSDictionary.cpp:

(WebCore::JSDictionary::convertValue):

15:21 Changeset [206680] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Marking http/tests/media/hls/hls-video-resize.html as flaky on mac-wk1.
https://bugs.webkit.org/show_bug.cgi?id=162507

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
14:59 Changeset [206679] by mmaxfield@apple.com
  • 19 edits
    2 copies
    3 adds in trunk

Parse font-variation-settings
https://bugs.webkit.org/show_bug.cgi?id=162781

Reviewed by Simon Fraser.

Source/WebCore:

CSS Fonts level 4 [1] details the font-variation-settings property which allows variations
to be applied to fonts which accept it. The property accepts a list of key/value
pairs where the keys are four-character Ascii codes and the values are floating
point values. The implementation uses font-feature-settings as a model, but with one
big difference: font-variation-settings can be animated. The set of variation points
are animated individually.

This font variations work is being done behind a run-time switch, which is settable from
the Safari Develop menu.

Now that FontDescription is growing, I'd like to do an investigation into the possibility of
moving some of the rare pieces of it into their own class to reduce memory. However, upon
advice, this investigation will be fairly involved and should be done in its own bug.

Test: fast/text/variations/getComputedStyle.html

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • css/CSSAllInOne.cpp:
  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::propertyValue):

  • css/CSSFontVariationValue.cpp: Copied from Source/WebCore/platform/graphics/FontTaggedSettings.cpp.

(WebCore::CSSFontVariationValue::CSSFontVariationValue):
(WebCore::CSSFontVariationValue::customCSSText):
(WebCore::CSSFontVariationValue::equals):

  • css/CSSFontVariationValue.h: Copied from Source/WebCore/platform/graphics/FontTaggedSettings.cpp.
  • css/CSSPropertyNames.in:
  • css/CSSValue.cpp:

(WebCore::CSSValue::equals):
(WebCore::CSSValue::cssText):
(WebCore::CSSValue::destroy):

  • css/CSSValue.h:

(WebCore::CSSValue::isFontVariationValue):
(WebCore::CSSValue::isFontFeatureValue): Deleted.

  • css/StyleBuilderConverter.h:

(WebCore::StyleBuilderConverter::convertFontVariationSettings):

  • css/StyleBuilderCustom.h:

(WebCore::StyleBuilderCustom::applyInitialFontVariationSettings):
(WebCore::StyleBuilderCustom::applyInheritFontVariationSettings):
(WebCore::StyleBuilderCustom::applyInheritFontFeatureSettings): Deleted.

  • css/parser/CSSParser.cpp:

(WebCore::CSSParserContext::CSSParserContext):
(WebCore::operator==):
(WebCore::CSSParser::parseValue):
(WebCore::CSSParser::parseFontFeatureSettings):
(WebCore::CSSParser::parseFontVariationTag):
(WebCore::CSSParser::parseFontVariationSettings):

  • css/parser/CSSParser.h:
  • css/parser/CSSParserMode.h:
  • platform/graphics/FontCache.h:

(WebCore::FontDescriptionKey::FontDescriptionKey):
(WebCore::FontDescriptionKey::operator==):
(WebCore::FontDescriptionKey::computeHash):

  • platform/graphics/FontDescription.cpp:
  • platform/graphics/FontDescription.h:

(WebCore::FontDescription::variationSettings):
(WebCore::FontDescription::setVariationSettings):
(WebCore::FontDescription::operator==):
(WebCore::FontDescription::featureSettings): Deleted.
(WebCore::FontDescription::setFeatureSettings): Deleted.

  • platform/graphics/FontTaggedSettings.cpp:

(WebCore::FontVariationSettings::hash):
(WebCore::operator<<):

  • platform/graphics/FontTaggedSettings.h:

LayoutTests:

  • fast/text/variations/getComputedStyle-expected.txt: Added.
  • fast/text/variations/getComputedStyle.html: Added.
14:53 Changeset [206678] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Mark inspector/debugger/breakpoints tests as slow on release, skipped on debug.

Unreviewed test gardening.

14:43 Changeset [206677] by joepeck@webkit.org
  • 2 edits in trunk/LayoutTests

Rebaseline results after r206654.

Better location for unary expressions.

  • js/stack-trace-expected.txt:
14:41 Changeset [206676] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

Followup patch to r206664
https://bugs.webkit.org/show_bug.cgi?id=162774

Unreviewed.

No new tests because there is no behavior change.

  • platform/graphics/FontTaggedSettings.h:

(WebCore::FourCharacterTagHashTraits::isDeletedValue): Deleted.

14:32 Changeset [206675] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Second time going into fullscreen using silverlight, will hide the menu bar and dock for Safari
https://bugs.webkit.org/show_bug.cgi?id=162805
rdar://problem/28208495

Reviewed by Dan Bernstein.

Turns out that the WindowRef wrappers for full screen NSWindows can end up in the m_windows HashSet,
and never go away.

Fix this by storing the canonical CGWindowIDs in the hash map instead.

  • PluginProcess/mac/PluginProcessMac.mm:

(WebKit::cgWindowID):
(WebKit::windowCoversAnyScreen):
(WebKit::FullscreenWindowTracker::windowShown):
(WebKit::FullscreenWindowTracker::windowHidden):

14:31 Changeset [206674] by bshafiei@apple.com
  • 6 edits in branches/safari-602.2.14.1-branch/Source/WebCore

Merge r206181. rdar://problem/28408503

14:30 Changeset [206673] by bshafiei@apple.com
  • 2 edits in branches/safari-602.2.14.1-branch/Source/WebCore

Merge r205992. rdar://problem/28567561

14:30 Changeset [206672] by bshafiei@apple.com
  • 17 edits
    2 adds in branches/safari-602.2.14.1-branch/Source/WebCore

Merge r205980. rdar://problem/28567561

14:23 Changeset [206671] by joepeck@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

Fix modules tests after r206653 handle breakpoint locations in import/export statements
https://bugs.webkit.org/show_bug.cgi?id=162807

Reviewed by Mark Lam.

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createExportDefaultDeclaration):
(JSC::ASTBuilder::createExportLocalDeclaration):
Don't record an extra breakpoint location for the statement
within an export statement.

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseModuleSourceElements):
Record a pause location for import/export statements.

14:19 Changeset [206670] by bshafiei@apple.com
  • 6 edits in branches/safari-602-branch/Source/WebCore

Merge r206181. rdar://problem/28408526

14:19 Changeset [206669] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebCore

Merge r205992. rdar://problem/28567557

14:19 Changeset [206668] by bshafiei@apple.com
  • 17 edits
    2 adds in branches/safari-602-branch/Source/WebCore

Merge r205980. rdar://problem/28567557

14:18 Changeset [206667] by bshafiei@apple.com
  • 5 edits in branches/safari-602.2.14.1-branch/Source

Versioning.

14:17 Changeset [206666] by mmaxfield@apple.com
  • 6 edits
    1 delete in trunk

Fix fast/text/trak-optimizeLegibility.html
https://bugs.webkit.org/show_bug.cgi?id=162779

Reviewed by Simon Fraser.

Source/WebCore:

I accidentally created this test to allow an unnecessary delta
in the width comparison. This covered the fact that the fonts
were not being selected correctly in our testing code. Update the
font selection code to work with system fonts correctly and
update the test to not use a delta when performing width
comparisons.

Test: fast/text/trak-optimizeLegibility.html

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::isSystemFont):
(WebCore::platformFontLookupWithFamily):

LayoutTests:

  • fast/text/trak-optimizeLegibility.html:
  • platform/ios-simulator/fast/text/trak-optimizeLegibility-expected.txt:
  • platform/mac-elcapitan/fast/text/trak-optimizeLegibility-expected.txt: Removed.
  • platform/mac/fast/text/trak-optimizeLegibility-expected.txt:
14:16 Changeset [206665] by mmaxfield@apple.com
  • 8 edits in trunk/Source

Create runtime flag for variation font work
https://bugs.webkit.org/show_bug.cgi?id=162780

Reviewed by Alex Christensen.

Source/WebCore:

No new tests because there is no behavior change.

Variation font work should be behind a runtime flag.

  • page/Settings.in:
  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::variationFontsEnabled):
(WebCore::InternalSettings::setVariationFontsEnabled):

  • testing/InternalSettings.h:
  • testing/InternalSettings.idl:

Source/WebKit2:

  • Shared/WebPreferencesDefinitions.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

14:11 Changeset [206664] by mmaxfield@apple.com
  • 14 edits
    1 move
    1 add
    1 delete in trunk/Source/WebCore

Templatize internal FontFeatureSettings class for variation font support
https://bugs.webkit.org/show_bug.cgi?id=162774

Reviewed by Alex Christensen.

Font features and font variations are similar in that they are identified
by four-character tags and an associated value. However, the value is an
int for font features and is a float for font variations. In order to
simplify code, we can use the same class for both, and use a template
argument to distinguish between the two. Then, typedefs can be used to
name them.

No new tests because there is no behavior change.

  • WebCore.xcodeproj/project.pbxproj: Rename FontFeatureSettings.{cpp,h}

to FontTaggedSettings.{cpp,h}

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::propertyValue):

  • css/CSSFontFace.h:
  • css/CSSFontFaceSource.h:
  • css/CSSFontFeatureValue.cpp:

(WebCore::CSSFontFeatureValue::CSSFontFeatureValue):

  • css/CSSFontFeatureValue.h:
  • css/FontFace.cpp:

(WebCore::FontFace::featureSettings):

  • css/parser/CSSParser.cpp:

(WebCore::CSSParser::parseFontFeatureTag):

  • loader/cache/CachedFont.h:
  • platform/graphics/FontDescription.h:
  • platform/graphics/FontFeatureSettings.cpp:

(WebCore::FontFeature::FontFeature): Deleted.
(WebCore::FontFeature::operator==): Deleted.
(WebCore::FontFeature::operator<): Deleted.
(WebCore::FontFeatureSettings::insert): Deleted.
(WebCore::FontFeatureSettings::hash): Deleted.

  • platform/graphics/FontFeatureSettings.h: Removed.

(WebCore::fontFeatureTag): Deleted.
(WebCore::FontFeatureTagHash::hash): Deleted.
(WebCore::FontFeatureTagHash::equal): Deleted.
(WebCore::FontFeatureTagHashTraits::constructDeletedValue): Deleted.
(WebCore::FontFeatureTagHashTraits::isDeletedValue): Deleted.
(WebCore::FontFeature::operator!=): Deleted.
(WebCore::FontFeature::tag): Deleted.
(WebCore::FontFeature::value): Deleted.
(WebCore::FontFeature::enabled): Deleted.
(WebCore::FontFeatureSettings::operator==): Deleted.
(WebCore::FontFeatureSettings::operator!=): Deleted.
(WebCore::FontFeatureSettings::size): Deleted.
(WebCore::FontFeatureSettings::operator[]): Deleted.
(WebCore::FontFeatureSettings::at): Deleted.
(WebCore::FontFeatureSettings::begin): Deleted.
(WebCore::FontFeatureSettings::end): Deleted.

  • platform/graphics/FontTaggedSettings.cpp: Renamed from Source/WebCore/platform/graphics/FontFeatureSettings.cpp.

(WebCore::FontFeatureSettings::hash):

  • platform/graphics/FontTaggedSettings.h: Added.

(WebCore::fontFeatureTag):
(WebCore::FourCharacterTagHash::hash):
(WebCore::FourCharacterTagHash::equal):
(WebCore::FourCharacterTagHashTraits::constructDeletedValue):
(WebCore::FourCharacterTagHashTraits::isDeletedValue):
(WebCore::FontTaggedSetting::operator!=):
(WebCore::FontTaggedSetting::tag):
(WebCore::FontTaggedSetting::value):
(WebCore::FontTaggedSetting::enabled):
(WebCore::FontTaggedSetting<T>::FontTaggedSetting):
(WebCore::=):
(WebCore::FontTaggedSetting<T>::operator<):
(WebCore::FontTaggedSettings::operator==):
(WebCore::FontTaggedSettings::operator!=):
(WebCore::FontTaggedSettings::isEmpty):
(WebCore::FontTaggedSettings::size):
(WebCore::FontTaggedSettings::operator[]):
(WebCore::FontTaggedSettings::at):
(WebCore::FontTaggedSettings::begin):
(WebCore::FontTaggedSettings::end):
(WebCore::FontTaggedSettings<T>::insert):

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::tagEquals):
(WebCore::appendOpenTypeFeature):

  • platform/graphics/mac/FontCustomPlatformData.h:
14:03 Changeset [206663] by cdumez@apple.com
  • 4 edits in trunk

Fragment serialization should always use 'xml:' prefix for attributes in XML namespace
https://bugs.webkit.org/show_bug.cgi?id=162803

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

  • web-platform-tests/html/syntax/serializing-html-fragments/serializing-expected.txt:

Source/WebCore:

Fragment serialization should always use 'xml:' prefix for attributes in XML namespace:

"""
If the attribute is in the XML namespace
-> The attribute's serialized name is the string "xml:" followed by the attribute's local name.
"""

"""
If ns is the XML namespace, then let qualified name be the concatenation of the string "xml:"
and the value of node's localName.
"""

Firefox complies with the specification.

No new tests, rebaselined existing test.

  • editing/MarkupAccumulator.cpp:

(WebCore::MarkupAccumulator::appendAttribute):

13:58 Changeset [206662] by zalan@apple.com
  • 3 edits
    4 adds in trunk

Unreviewed, rolling out r206611.

Scroll perf did not recover.

Reverted changeset:

"Unreviewed, rolling out r206483."
https://bugs.webkit.org/show_bug.cgi?id=162750
http://trac.webkit.org/changeset/206611

13:52 Changeset [206661] by zalan@apple.com
  • 2 edits in trunk/Source/WebCore

Remove ClipRects's custom refcounting.
https://bugs.webkit.org/show_bug.cgi?id=162798

Reviewed by Simon Fraser.

It's safer to use RefCounted<>.

No change in functionality.

  • rendering/RenderLayer.cpp:

(WebCore::ClipRects::ClipRects):
(WebCore::ClipRectsCache::getClipRects):
(WebCore::ClipRectsCache::setClipRects):
(WebCore::ClipRectsCache::getIndex):
(WebCore::RenderLayer::updateClipRects):
(WebCore::ClipRects::ref): Deleted.
(WebCore::ClipRects::deref): Deleted.

13:47 Changeset [206660] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Rebaseline js/dom/stack-trace.html after r206654.

Unreviewed test gardening.

  • js/dom/stack-trace-expected.txt:
13:08 Changeset [206659] by cdumez@apple.com
  • 8 edits
    2 adds in trunk

FileSaver.js does not work in WebKit
https://bugs.webkit.org/show_bug.cgi?id=162788

Reviewed by Sam Weinig.

Source/WebCore:

FileSaver.js does not work in WebKit:

It works in Firefox and Chrome, but in WebKit, we were getting a
"Synthetic clicks on anchors that have a download attribute are
ignored." warning. We were too strict in restricting synthetic clicks.
We now allow synthetic clicks as long as they are triggered by a user
gesture.

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

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::handleClick):

LayoutTests:

Add layout test coverage.

  • fast/dom/HTMLAnchorElement/anchor-download-synthetic-click-expected.txt:
  • fast/dom/HTMLAnchorElement/anchor-download-user-triggered-synthetic-click-expected.txt: Added.
  • fast/dom/HTMLAnchorElement/anchor-download-user-triggered-synthetic-click.html: Added.
12:47 Changeset [206658] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Remove the dumping of the stack back trace in VM::verifyExceptionCheckNeedIsSatisfied().
https://bugs.webkit.org/show_bug.cgi?id=162797

Reviewed by Geoffrey Garen.

This is because the RELEASE_ASSERT() that follows immediately after will also
dump the stack back trace. Hence, the first dump will be redundant.

Also removed an extra space in the dataLog output.

  • runtime/VM.cpp:

(JSC::VM::verifyExceptionCheckNeedIsSatisfied):

12:45 Changeset [206657] by ryanhaddad@apple.com
  • 3 edits in trunk/LayoutTests

Marking fast/images/gif-loop-count.html as flaky on ios-simulator.
https://bugs.webkit.org/show_bug.cgi?id=162739

Unreviewed test gardening.

  • platform/ios-simulator-wk1/TestExpectations:
  • platform/ios-simulator/TestExpectations:
12:43 Changeset [206656] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Marking http/tests/security/cached-cross-origin-preloading-css-stylesheet.html as flaky on mac-wk1.
https://bugs.webkit.org/show_bug.cgi?id=162791

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
12:24 Changeset [206655] by joepeck@webkit.org
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Make debugger stepping highlights work in inline <script>s
https://bugs.webkit.org/show_bug.cgi?id=162753
<rdar://problem/28551332>

Reviewed by Brian Burg.

  • UserInterface/Models/TextRange.js:

(WebInspector.TextRange.prototype.contains):
Check if a given line/column falls within this range.

  • UserInterface/Views/SourceCodeTextEditor.js:

(WebInspector.SourceCodeTextEditor.prototype._getAssociatedScript):
If we are in a Document resource find the associated script at a given position.

(WebInspector.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange):
When comparing offsets to SyntaxTree offsets, the SyntaxTree's offset of 0 is the
first character of the Script, which differs from the current SourceCode's offset.
Adjust the offset by the Script's startOffset.

  • UserInterface/Views/TextEditor.js:

(WebInspector.TextEditor.prototype.currentPositionToOriginalPosition):
(WebInspector.TextEditor.prototype._updateExecutionRangeHighlight):
Pass both the original offset and original position to the delegate.

12:24 Changeset [206654] by joepeck@webkit.org
  • 11 edits in trunk

Web Inspector: Stepping through a(); b(); c(); it is unclear where we are and what is about to execute
https://bugs.webkit.org/show_bug.cgi?id=161658
<rdar://problem/28181254>

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseAssignmentExpression):
Updated pause location for unary expressions.

Source/WebInspectorUI:

  • UserInterface/Models/Script.js:

(WebInspector.Script.prototype.requestScriptSyntaxTree):
Fix first calls to requestScriptSyntaxTree. They were getting an uncaught
exception because the content argument was missing.

  • UserInterface/Models/ScriptSyntaxTree.js:

(WebInspector.ScriptSyntaxTree.prototype.containersOfOffset):
Find all AST nodes that contain a particular offset.

  • UserInterface/Views/SourceCodeTextEditor.js:

(WebInspector.SourceCodeTextEditor):
(WebInspector.SourceCodeTextEditor.prototype.close):
(WebInspector.SourceCodeTextEditor.prototype._activeCallFrameDidChange):
(WebInspector.SourceCodeTextEditor.prototype._activeCallFrameSourceCodeLocationChanged):
(WebInspector.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange):
Provide a good highlight range for a given offset. This is normally the start
of a statement/expression, inside a statement/expression, or the closing brace
of a function (leaving a function). Provide good ranges for each of these.

  • UserInterface/Views/TextEditor.js:

(WebInspector.TextEditor):
(WebInspector.TextEditor.set string.update):
(WebInspector.TextEditor.prototype.set string):
(WebInspector.TextEditor.prototype.setExecutionLineAndColumn):
(WebInspector.TextEditor.prototype.revealPosition.revealAndHighlightLine):
(WebInspector.TextEditor.prototype.revealPosition):
(WebInspector.TextEditor.prototype.currentPositionToOriginalOffset):
(WebInspector.TextEditor.prototype._updateAfterFormatting):
(WebInspector.TextEditor.prototype.set executionLineNumber): Deleted.
(WebInspector.TextEditor.prototype.set executionColumnNumber): Deleted.
(WebInspector.TextEditor.prototype._updateExecutionLine.update): Deleted.
Always set the execution line and column together, to simplify how we update highlights.

(WebInspector.TextEditor.prototype._clearMultilineExecutionLineHighlights):
(WebInspector.TextEditor.prototype._updateExecutionLine):
When updating the main highlight clear any multi-line highlights.

(WebInspector.TextEditor.prototype._updateExecutionRangeHighlight):
Ask the delegate for a specific highlight range. If provided use that range,
otherwise just highlight the end of the line. Once we know the range, if it
is multiple lines, give the extra lines the full line highlight as well.
Also make adjustments, such as not highlighting trailing whitespace.

  • UserInterface/Views/TextEditor.css:

(.text-editor > .CodeMirror .execution-line.primary .CodeMirror-linenumber::after):
(.text-editor > .CodeMirror .execution-line):
(.text-editor > .CodeMirror .execution-line .CodeMirror-matchingbracket):
(.text-editor > .CodeMirror .execution-range-highlight):
Styles for execution lines and execution range highlights.

LayoutTests:

  • inspector/debugger/stepping/stepping-loops-expected.txt:
  • inspector/debugger/stepping/stepping-misc-expected.txt:

Updated pause location for unary expressions.

12:22 Changeset [206653] by joepeck@webkit.org
  • 32 edits
    1 copy
    10 adds in trunk

Breakpoints on blank lines or comments don't break
https://bugs.webkit.org/show_bug.cgi?id=9885
<rdar://problem/6134406>

Reviewed by Mark Lam.

Source/JavaScriptCore:

This change introduces a way to perform a Debugger Parse of a script.
This debugger parse gathers a list of breakpoint locations, which
the backend uses to resolve breakpoint locations that came from the
Inspector frontend to the exact location we would actually pause.
We gather this information from the parser so that we can eagerly
get this information without requiring the code to have executed (the
real op_debugs are generated during bytecode generation when code
is actually evaluated).

If an input location was on a line with whitespace or a comment, the
resolved breakpoint location would be before the next statement that
will be executed. That may be the next line, or even later. We also
update our policy when setting breakpoints on and around function
statements to better match user expectations.

For example, when resolving breakpoints in:

  1. Comment
  2. before; 3.
  3. function foo() {
  4. inside;
  5. } 7.
  6. after;

A breakpoint on line 1, a comment, resolves to line 2 the next
statement that will execute.

A breakpoint on line 3 or 7, empty lines, resolves to line 8 the next
statement that will execute. This skips past the definition of foo,
just like stepping would have done. The creation of foo would have
been hoisted, which would have happened before execution of the
other statements.

A breakpoint on line 4, a function signature, resolves to line 5,
inside the function. Users would expect to pause inside of a function
when setting a breakpoint on that function's name or opening brace.

A breakpoint on line 6, a function's closing brace, resolves to
line 6. The debugger will pause whenever execution leaves foo due to
a return and not an exception. This matches stepping behavior. An
explicit or implicit return (the implicit return undefined) will
pause on the closing brace as we leave the function, giving users
an opportunity to inspect the final state before leaving.

--

At this point, op_debug's are still emitted at custom locations during
bytecode generation of other statements / expressions. In order to
ensure the generated op_debugs correspond to locations the Parser
determined were breakpoint locations, the Parser sets a "needs debug
hook" flag on the nodes it will use for breakpoint locations, and
we assert during bytecode generation that op_debugs are only emitted
for nodes that were marked as needing debug hooks.

This still leaves open the possibility that the Parser will mark
some nodes that get missed during bytecode generation, so we might
fail to emit some op_debugs. The next step will be eliminating the
custom emitDebugHooks spread across StatementNode and ExpressionNode
subclasses, and instead always generating op_debugs whenever we
emit a flagged node.

--

New DebuggerParseData files.

  • API/JSScriptRef.cpp:

(OpaqueJSScript::OpaqueJSScript):

  • jsc.cpp:

(functionCheckModuleSyntax):

  • parser/SourceCode.h:

(JSC::makeSource):

  • parser/SourceProvider.cpp:

(JSC::SourceProvider::SourceProvider):

  • parser/SourceProvider.h:

(JSC::SourceProvider::sourceType):
(JSC::StringSourceProvider::create):
(JSC::StringSourceProvider::StringSourceProvider):
(JSC::WebAssemblySourceProvider::WebAssemblySourceProvider):
(JSC::SourceProvider::startPosition): Deleted.
Add a new type on SourceProvider to distinguish if its script was
intended to be a Script, Module, or WebAssembly. This information
will be needed to know how to best parse this file when the
debugger decides to lazily parse.

  • runtime/Executable.cpp:

(JSC::EvalExecutable::EvalExecutable):
(JSC::ProgramExecutable::ProgramExecutable):
(JSC::ModuleProgramExecutable::ModuleProgramExecutable):
(JSC::WebAssemblyExecutable::WebAssemblyExecutable):

  • runtime/ModuleLoaderPrototype.cpp:

(JSC::moduleLoaderPrototypeParseModule):
ASSERT the SourceProvider type matches the executable type we are
creating for it.

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::breakpointLocation):

  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::operatorStackPop):
When gathering breakpoint positions, get the position from the
current node. In the SyntaxChecker, return an invalid position.

  • parser/Nodes.h:

(JSC::ExpressionNode::needsDebugHook):
(JSC::ExpressionNode::setNeedsDebugHook):
(JSC::StatementNode::needsDebugHook):
(JSC::StatementNode::setNeedsDebugHook):
When gathering breakpoint positions, mark the node as needing
a debug hook. For now we assert op_debugs generated must come
from these nodes. Later we should just generate op_debugs for
these nodes.

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::Parser):
(JSC::Parser<LexerType>::parseStatementListItem):
(JSC::Parser<LexerType>::parseDoWhileStatement):
(JSC::Parser<LexerType>::parseWhileStatement):
(JSC::Parser<LexerType>::parseArrowFunctionSingleExpressionBodySourceElements):
(JSC::Parser<LexerType>::parseForStatement):
(JSC::Parser<LexerType>::parseWithStatement):
(JSC::Parser<LexerType>::parseSwitchStatement):
(JSC::Parser<LexerType>::parseStatement):
(JSC::Parser<LexerType>::parseFunctionBody):
(JSC::Parser<LexerType>::parseFunctionInfo):
(JSC::Parser<LexerType>::parseIfStatement):
(JSC::Parser<LexerType>::parseAssignmentExpression):

  • parser/Parser.h:

(JSC::parse):
Add an optional DebuggerParseData struct to the Parser. When available
the Parser will gather debugger data, and parse all functions with the
ASTBuilder instead of SyntaxChecking inner functions.

  • debugger/DebuggerParseData.cpp: Added.

(JSC::DebuggerPausePositions::breakpointLocationForLineColumn):
(JSC::DebuggerPausePositions::sort):
(JSC::gatherDebuggerParseData):
(JSC::gatherDebuggerParseDataForSource):

  • debugger/DebuggerParseData.h: Copied from Source/JavaScriptCore/debugger/DebuggerPrimitives.h.

(JSC::DebuggerPausePositions::DebuggerPausePositions):
(JSC::DebuggerPausePositions::appendPause):
(JSC::DebuggerPausePositions::appendEntry):
(JSC::DebuggerPausePositions::appendLeave):
The DebuggerParseData struct currently only contains a list of pause positions.
Once populated it can resolve an input location to a pause position.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitCall):
(JSC::BytecodeGenerator::emitCallVarargs):
(JSC::BytecodeGenerator::emitDebugHook):
(JSC::BytecodeGenerator::emitEnumeration):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::EmptyStatementNode::emitBytecode):
(JSC::DebuggerStatementNode::emitBytecode):
(JSC::ExprStatementNode::emitBytecode):
(JSC::DeclarationStatement::emitBytecode):
(JSC::IfElseNode::emitBytecode):
(JSC::DoWhileNode::emitBytecode):
(JSC::WhileNode::emitBytecode):
(JSC::ForNode::emitBytecode):
(JSC::ForInNode::emitBytecode):
(JSC::ContinueNode::emitBytecode):
(JSC::BreakNode::emitBytecode):
(JSC::ReturnNode::emitBytecode):
(JSC::WithNode::emitBytecode):
(JSC::SwitchNode::emitBytecode):
(JSC::ThrowNode::emitBytecode):
Emit op_debugs for the nodes themselves. Assert when we do that the
Parser had marked them as needing a debug hook.

  • debugger/Breakpoint.h:

(JSC::Breakpoint::Breakpoint):
A breakpoint may be resolved or unresolved. Debugger::resolveBreakpoint
must be used to resolve the breakpoint. Most methods now require a
resolved breakpoint.

  • debugger/Debugger.h:
  • debugger/Debugger.cpp:

(JSC::Debugger::detach):
(JSC::Debugger::toggleBreakpoint):
(JSC::Debugger::debuggerParseData):
(JSC::Debugger::resolveBreakpoint):
(JSC::Debugger::setBreakpoint):
(JSC::Debugger::clearParsedData):
Provide a public method to resolve a breakpoint location in a script.
This will gather debugger parse data for the script if none is available.
Ensure clients have resolved a breakpoint before attempting to set it.
Currently we allow only a single breakpoint at a location. This may
need to change if multiple breakpoints resolve to the same location
but have different actions.

  • inspector/ScriptDebugListener.h:

ScriptDebugServer::Script is effectively duplicating most of the data from
a SourceProvider. We should eliminate this and just use SourceProvider.

  • inspector/ScriptDebugServer.cpp:

(Inspector::ScriptDebugServer::setBreakpointActions):
(Inspector::ScriptDebugServer::removeBreakpointActions):
(Inspector::ScriptDebugServer::getActionsForBreakpoint):
(Inspector::ScriptDebugServer::clearBreakpointActions):
(Inspector::ScriptDebugServer::evaluateBreakpointAction):
(Inspector::ScriptDebugServer::dispatchDidParseSource):
(Inspector::ScriptDebugServer::handleBreakpointHit):
(Inspector::ScriptDebugServer::setBreakpoint): Deleted.
(Inspector::ScriptDebugServer::removeBreakpoint): Deleted.
(Inspector::ScriptDebugServer::clearBreakpoints): Deleted.

  • inspector/ScriptDebugServer.h:

Reduce ScriptDebugServer's involvement in breakpoints to just handling
breakpoint actions. Eventually we should eliminate it alltogether and
fold breakpoint logic into Debugger or DebugAgent.

  • inspector/agents/InspectorDebuggerAgent.h:
  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::buildDebuggerLocation):
(Inspector::parseLocation):
(Inspector::InspectorDebuggerAgent::setBreakpointByUrl):
(Inspector::InspectorDebuggerAgent::setBreakpoint):
(Inspector::InspectorDebuggerAgent::didSetBreakpoint):
(Inspector::InspectorDebuggerAgent::resolveBreakpoint):
(Inspector::InspectorDebuggerAgent::removeBreakpoint):
(Inspector::InspectorDebuggerAgent::continueToLocation):
(Inspector::InspectorDebuggerAgent::didParseSource):
(Inspector::InspectorDebuggerAgent::clearDebuggerBreakpointState):
The Inspector can set breakpoints in multiple ways.
Ensure that once we have the Script that we always
resolve the breakpoint location before setting the
breakpoint. The different paths are:

  • setBreakpoint(scriptId, location)
    • Here we know the SourceProvider by its SourceID
      • resolve and set
  • setBreakpointByURL(url, location)
    • Search for existing Scripts that match the URL
      • resolve in each and set
    • When new Scripts are parsed that match the URL
      • resolve and set

Source/WebCore:

Tests: inspector/debugger/breakpoints/resolved-dump-all-pause-locations.html

inspector/debugger/breakpoints/resolved-dump-each-line.html

  • bindings/js/CachedScriptSourceProvider.h:

(WebCore::CachedScriptSourceProvider::CachedScriptSourceProvider):

LayoutTests:

  • inspector/debugger/breakpoints/resolved-dump-all-pause-locations-expected.txt: Added.
  • inspector/debugger/breakpoints/resolved-dump-all-pause-locations.html: Added.
  • inspector/debugger/breakpoints/resolved-dump-each-line-expected.txt: Added.
  • inspector/debugger/breakpoints/resolved-dump-each-line.html: Added.
  • inspector/debugger/breakpoints/resources/dump-functions.js: Added.
  • inspector/debugger/breakpoints/resources/dump-general.js: Added.

Test for resolved breakpoint locations in all kinds of different source code.

  • inspector/debugger/breakpoints/resources/dump.js: Added.

(TestPage.registerInitializer):
(TestPage.registerInitializer.window.addDumpAllPauseLocationsTestCase):
(TestPage.registerInitializer.window.addDumpEachLinePauseLocationTestCase):
Shared code to run different generalized tests for logging all resolved
breakpoint locations or the resolved breakpoint location if a breakpoint
is set on each individual line.

  • inspector/debugger/resources/log-pause-location.js:

(TestPage.registerInitializer.insertCaretIntoStringAtIndex):
(TestPage.registerInitializer.window.findScript):
(TestPage.registerInitializer.window.loadLinesFromSourceCode):
(TestPage.registerInitializer.window.loadMainPageContent):
(TestPage.registerInitializer.window.logResolvedBreakpointLinesWithContext):
(TestPage.registerInitializer.window.logLinesWithContext):
Make some more code shared and provide a way to log two locations,
used to see where a breakpoint was set and where it resolved to.

  • inspector/debugger/setBreakpoint-expected.txt:

Update error message. Should not include a period.

12:22 Changeset [206652] by joepeck@webkit.org
  • 22 edits
    30 adds in trunk

Web Inspector: Stepping out of a function finishes the line that called it.
https://bugs.webkit.org/show_bug.cgi?id=155325
<rdar://problem/25094578>

Reviewed by Mark Lam.

Source/JavaScriptCore:

Also addresses:
<https://webkit.org/b/161721> Web Inspector: Stepping all the way through program should not cause a pause on the next program that executes
<https://webkit.org/b/161716> Web Inspector: Stepping into a function / program should not require stepping to the first statement

This change introduces a new op_debug hook: WillExecuteExpression.
Currently this new hook is only used for pausing at function calls.
We may decide to add it to other places later where pausing with
finer granularity then statements (or lines) if useful.

This updates the location and behavior of some of the existing debug
hooks, to be more consistent and useful if the exact location of the
pause is displayed. For example, in control flow statements like
if and while, the pause location is the expression itself that
will be evaluated, not the location of the if or while keyword.
For example:

if (|condition)
while (|condition)

Finally, this change gets rid of some unnecessary / useless pause
locations such as on entering a function and on entering a program.
These pauses are not needed because if there is a statement, we
would pause before the statement and it is equivalent. We continue
to pause when leaving a function via stepping by uniformly jumping
to the closing brace of the function. This gives users a chance
to observe state before leaving the function.

  • bytecode/CodeBlock.cpp:

(JSC::debugHookName):

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::dumpLineColumnEntry):
Logging strings for the new debug hook.

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitCallInTailPosition):
(JSC::BytecodeGenerator::emitCallEval):
(JSC::BytecodeGenerator::emitCallVarargsInTailPosition):
(JSC::BytecodeGenerator::emitConstructVarargs):
(JSC::BytecodeGenerator::emitCallForwardArgumentsInTailPosition):
(JSC::BytecodeGenerator::emitCallDefineProperty):
(JSC::BytecodeGenerator::emitConstruct):
(JSC::BytecodeGenerator::emitGetTemplateObject):
(JSC::BytecodeGenerator::emitIteratorNext):
(JSC::BytecodeGenerator::emitIteratorNextWithValue):
(JSC::BytecodeGenerator::emitIteratorClose):
(JSC::BytecodeGenerator::emitDelegateYield):
All emitCall variants now take an enum to decide whether or not to
emit the WillExecuteExpression debug hook.

(JSC::BytecodeGenerator::emitCall):
(JSC::BytecodeGenerator::emitCallVarargs):
In the two real implementations, actually decide to emit the debug
hook or not based on the parameter.

(JSC::BytecodeGenerator::emitEnumeration):
This is shared looping code used by for..of iteration of iterables.
When used by ForOfNode, we want to emit a pause location during
iteration.

(JSC::BytecodeGenerator::emitWillLeaveCallFrameDebugHook):
This is shared call frame leave code to emit a consistent pause
location when leaving a function.

  • bytecompiler/NodesCodegen.cpp:

(JSC::EvalFunctionCallNode::emitBytecode):
(JSC::FunctionCallValueNode::emitBytecode):
(JSC::FunctionCallResolveNode::emitBytecode):
(JSC::BytecodeIntrinsicNode::emit_intrinsic_tailCallForwardArguments):
(JSC::FunctionCallBracketNode::emitBytecode):
(JSC::FunctionCallDotNode::emitBytecode):
(JSC::CallFunctionCallDotNode::emitBytecode):
(JSC::ApplyFunctionCallDotNode::emitBytecode):
(JSC::TaggedTemplateNode::emitBytecode):
(JSC::ArrayPatternNode::bindValue):
All tail position calls are the function calls that we want to emit
debug hooks for. All non-tail call calls appear to be internal
implementation details, and these should not have the debug hook.

(JSC::IfElseNode::emitBytecode):
(JSC::WhileNode::emitBytecode):
(JSC::WithNode::emitBytecode):
(JSC::SwitchNode::emitBytecode):
Make the pause location consistent at the expression.

(JSC::DoWhileNode::emitBytecode):
Make the pause location consistent at the expression.
Remove the errant pause at the do's '}' when entering the do block.

(JSC::ForNode::emitBytecode):
(JSC::ForInNode::emitMultiLoopBytecode):
(JSC::ForOfNode::emitBytecode):
Make the pause location consistent at expressions.
Also allow stepping to the traditional for loop's
update expression, which was previously not possible.

(JSC::ReturnNode::emitBytecode):
(JSC::FunctionNode::emitBytecode):
Make the pause location when leaving a function consistently be the
function's closing brace. The two cases are stepping through a return
statement, or the implicit return undefined at the end of a function.

(JSC::LabelNode::emitBytecode):
(JSC::TryNode::emitBytecode):
Remove unnecessary pauses that add no value, as they contain a
statement and we will then pause at that statement.

  • parser/Nodes.h:

(JSC::StatementNode::isFunctionNode):
(JSC::StatementNode::isForOfNode):
(JSC::EnumerationNode::lexpr):
(JSC::ForOfNode::isForOfNode):
New virtual methods to distinguish different nodes.

  • debugger/Debugger.h:

Rename m_pauseAtNextStatement to m_pauseAtNextOpportunity.
This is the finest granularity of stepping, and it can be
pausing at a location that is not a statement.
Introduce state to properly handle step out and stepping
when there are multiple expressions in a statement.

  • debugger/Debugger.cpp:

(JSC::Debugger::Debugger):
(JSC::Debugger::setPauseOnNextStatement):
(JSC::Debugger::breakProgram):
(JSC::Debugger::continueProgram):
(JSC::Debugger::stepIntoStatement):
(JSC::Debugger::exception):
(JSC::Debugger::didReachBreakpoint):

Use new variable names, and clarify if we should attempt
to pause or not.

(JSC::Debugger::stepOutOfFunction):
Set a new state to indicate a step out action.

(JSC::Debugger::updateCallFrame):
(JSC::Debugger::updateCallFrameAndPauseIfNeeded): Deleted.
(JSC::Debugger::updateCallFrameInternal):
(JSC::Debugger::pauseIfNeeded):
Allow updateCallFrame to either attempt a pause or not.

(JSC::Debugger::atStatement):
Attempt pause and reset the at first expression flag.

(JSC::Debugger::atExpression):
Attempt a pause when not stepping over. Also skip
the first expression pause, since that would be
equivalent to when we paused for the expression.

(JSC::Debugger::callEvent):
Do not pause when entering a function.

(JSC::Debugger::returnEvent):
Attempt pause when leaving a function.
If the user did a step-over and is leaving the
function, then behave like step-out.

(JSC::Debugger::unwindEvent):
Behave like return except don't change any
pausing states. If we needed to pause the
Debugger::exception will have handled it.

(JSC::Debugger::willExecuteProgram):
Do not pause when entering a program.

(JSC::Debugger::didExecuteProgram):
Attempt pause when leaving a program that has a caller.
This can be useful for exiting an eval(...) program.
Otherwise treat this like return, and step-over out
of the program should behave like step-out. We use
pause at next opportunity because there may be extra
callframes we do not know about.
When the program doesn't have a parent, clear all
our state so we don't errantly pause on the next
JavaScript microtask that gets executed.

(JSC::Debugger::clearNextPauseState):
Helper to clear all of the pause states now that
it happens in a couple places.

  • interpreter/Interpreter.cpp:

(JSC::notifyDebuggerOfUnwinding):
Treat unwinding slightly differently from returning.
We will not want to pause when unwinding callframes.

(JSC::Interpreter::debug):

  • interpreter/Interpreter.h:

New debug hook.

  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::InspectorDebuggerAgent::stepInto):
(Inspector::InspectorDebuggerAgent::didPause):

  • inspector/agents/InspectorDebuggerAgent.h:

Remove unnecessary stepInto code notification for listeners.
The listeners are never notified if the debugger resumes,
so whatever state they were setting by this is going to
get out of date.

Source/WebCore:

Tests: inspector/debugger/stepping/stepInto.html

inspector/debugger/stepping/stepOut.html
inspector/debugger/stepping/stepOver.html
inspector/debugger/stepping/stepping-arrow-functions.html
inspector/debugger/stepping/stepping-classes.html
inspector/debugger/stepping/stepping-control-flow.html
inspector/debugger/stepping/stepping-function-calls.html
inspector/debugger/stepping/stepping-function-default-parameters.html
inspector/debugger/stepping/stepping-literal-construction.html
inspector/debugger/stepping/stepping-loops.html
inspector/debugger/stepping/stepping-misc.html
inspector/debugger/stepping/stepping-switch.html
inspector/debugger/stepping/stepping-template-string.html
inspector/debugger/stepping/stepping-try-catch-finally.html

  • inspector/InspectorDOMDebuggerAgent.h:
  • inspector/InspectorDOMDebuggerAgent.cpp:

(WebCore::InspectorDOMDebuggerAgent::stepInto): Deleted.
Setting this state in step-into does not make sense since we do not
know when the debugger resumes and won't know when to clear it.

LayoutTests:

  • inspector/debugger/break-on-exception-throw-in-promise.html:

Drive-by remove debug only code that shouldn't have been checked in.

  • inspector/debugger/resources/log-pause-location.js: Added.

(TestPage.registerInitializer.String.prototype.myPadStart):
(TestPage.registerInitializer.insertCaretIntoStringAtIndex):
(TestPage.registerInitializer.logLinesWithContext):
(TestPage.registerInitializer.window.logPauseLocation):
(TestPage.registerInitializer.window.step):
(TestPage.registerInitializer.window.initializeSteppingTestSuite):
(TestPage.registerInitializer.window.addSteppingTestCase):
(TestPage.registerInitializer.window.loadMainPageContent):
Shared code for stepping tests that runs in the inspected page.

(global):
When the test page is loaded outside of the test runner,
create buttons for each of the different entry test functions.
This makes it very easy to inspect the test page and run
through an individual test.

  • inspector/debugger/stepping/stepInto-expected.txt: Added.
  • inspector/debugger/stepping/stepInto.html: Added.
  • inspector/debugger/stepping/stepOut-expected.txt: Added.
  • inspector/debugger/stepping/stepOut.html: Added.
  • inspector/debugger/stepping/stepOver-expected.txt: Added.
  • inspector/debugger/stepping/stepOver.html: Added.
  • inspector/debugger/stepping/stepping-arrow-functions-expected.txt: Added.
  • inspector/debugger/stepping/stepping-arrow-functions.html: Added.
  • inspector/debugger/stepping/stepping-classes-expected.txt: Added.
  • inspector/debugger/stepping/stepping-classes.html: Added.
  • inspector/debugger/stepping/stepping-control-flow-expected.txt: Added.
  • inspector/debugger/stepping/stepping-control-flow.html: Added.
  • inspector/debugger/stepping/stepping-function-calls-expected.txt: Added.
  • inspector/debugger/stepping/stepping-function-calls.html: Added.
  • inspector/debugger/stepping/stepping-function-default-parameters-expected.txt: Added.
  • inspector/debugger/stepping/stepping-function-default-parameters.html: Added.
  • inspector/debugger/stepping/stepping-literal-construction-expected.txt: Added.
  • inspector/debugger/stepping/stepping-literal-construction.html: Added.
  • inspector/debugger/stepping/stepping-loops-expected.txt: Added.
  • inspector/debugger/stepping/stepping-loops.html: Added.
  • inspector/debugger/stepping/stepping-misc-expected.txt: Added.
  • inspector/debugger/stepping/stepping-misc.html: Added.
  • inspector/debugger/stepping/stepping-switch-expected.txt: Added.
  • inspector/debugger/stepping/stepping-switch.html: Added.
  • inspector/debugger/stepping/stepping-template-string-expected.txt: Added.
  • inspector/debugger/stepping/stepping-template-string.html: Added.
  • inspector/debugger/stepping/stepping-try-catch-finally-expected.txt: Added.
  • inspector/debugger/stepping/stepping-try-catch-finally.html: Added.

Test stepping in different common scenarios.

  • inspector/debugger/regress-133182.html:
  • inspector/debugger/regress-133182-expected.txt:
  • inspector/debugger/tail-deleted-frames-from-vm-entry-expected.txt:
  • inspector/debugger/tail-deleted-frames-from-vm-entry.html:

Rebaseline. No need for a double step. And the second pause doesn't make any sense
in the tail deleted frames test.

12:19 Changeset [206651] by cdumez@apple.com
  • 8 edits in trunk

[WK2][iOS] Add radiusX / radiusY / rotationAngle to WebPlatformTouchPoint
https://bugs.webkit.org/show_bug.cgi?id=162787
<rdar://problem/28554292>

Reviewed by Benjamin Poulain.

Source/WebKit2:

Add radiusX / radiusY / rotationAngle to WebPlatformTouchPoint.

  • Platform/spi/ios/UIKitSPI.h:
  • Shared/WebEvent.h:

(WebKit::WebPlatformTouchPoint::setRadiusX):
(WebKit::WebPlatformTouchPoint::radiusX):
(WebKit::WebPlatformTouchPoint::setRadiusY):
(WebKit::WebPlatformTouchPoint::radiusY):
(WebKit::WebPlatformTouchPoint::setRotationAngle):
(WebKit::WebPlatformTouchPoint::rotationAngle):

  • Shared/WebEventConversion.cpp:

(WebKit::WebKit2PlatformTouchPoint::WebKit2PlatformTouchPoint):

  • Shared/ios/NativeWebTouchEventIOS.mm:

(WebKit::NativeWebTouchEvent::extractWebTouchPoint):

  • Shared/ios/WebPlatformTouchPointIOS.cpp:

(WebKit::WebPlatformTouchPoint::encode):
(WebKit::WebPlatformTouchPoint::decode):

LayoutTests:

Extend Touch constructor test coverage to cover radiusX / radiusY / rotationAngle
attributes.

  • fast/events/touch/touch-constructor.html:
11:50 Changeset [206650] by achristensen@apple.com
  • 4 edits in trunk

Fix off-by-one error in URLParser::parseIPv4Host
https://bugs.webkit.org/show_bug.cgi?id=162789

Reviewed by Tim Horton.

Source/WebCore:

The spec says "If any but the last item in numbers is greater than 255, return failure."
This means check up to size - 1, not size - 2.

Covered by a new API test.

  • platform/URLParser.cpp:

(WebCore::URLParser::parseIPv4Host):

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

11:48 Changeset [206649] by achristensen@apple.com
  • 4 edits in trunk

URLParser: parsing a URL with an empty host and a colon should fail
https://bugs.webkit.org/show_bug.cgi?id=162795

Reviewed by Tim Horton.

Source/WebCore:

Covered by new API tests.

  • platform/URLParser.cpp:

(WebCore::URLParser::parseHostAndPort):

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

11:46 Changeset [206648] by achristensen@apple.com
  • 5 edits in trunk

URLParser: handle syntax violations in non-UTF-8 encoded queries
https://bugs.webkit.org/show_bug.cgi?id=162770

Reviewed by Tim Horton.

Source/WebCore:

There is a fast path for queries of URLs that use UTF-8 encoding, which are quite common.
For non-UTF-8 encoded queries, which are less common, we put the code points in a Vector<UChar>
and encode them all at once. If there is a syntax violation in the query, we need to copy the
syntax-violation-free string up to the beginning of the query, then encode the query.

Covered by new API tests.

  • platform/URLParser.cpp:

(WebCore::URLParser::percentEncodeByte):
(WebCore::URLParser::encodeQuery):
(WebCore::URLParser::parse):

  • platform/URLParser.h:

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::checkURL):
(TestWebKitAPI::TEST_F):
Tests with emoji change behavior when we insert a tab between the surrogates, so don't do the
insert-tab-at-each-location verification that syntax violations are handled correctly.

11:44 Changeset [206647] by sbarati@apple.com
  • 8 edits in trunk

Arrow functions should not allow duplicate parameter names
https://bugs.webkit.org/show_bug.cgi?id=162741

Reviewed by Filip Pizlo.

JSTests:

  • test262.yaml:

Source/JavaScriptCore:

This patch makes parsing arrow function parameters throw
a syntax error when there are duplicate parameter names.
It also starts to make some syntax errors for arrow functions
better, however, this is trickier than it seems since we need
to choose between two parsing productions when we decide to
throw a syntax error. I'm going to work on this problem
in another patch specifically devoted to making the error
messages better for parsing arrow functions:
https://bugs.webkit.org/show_bug.cgi?id=162794

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::isArrowFunctionParameters):
(JSC::Parser<LexerType>::parseFormalParameters):
(JSC::Parser<LexerType>::parseFunctionParameters):
(JSC::Parser<LexerType>::parseAssignmentExpression):

  • parser/Parser.h:

LayoutTests:

  • js/parser-syntax-check-expected.txt:
  • js/script-tests/parser-syntax-check.js:
11:39 Changeset [206646] by sbarati@apple.com
  • 3 edits in trunk/JSTests

Make some microbenchmarks run for less time.

Rubber stamped by Filip Pizlo.

  • microbenchmarks/bound-function-construction-performance.js:

(foo):

  • microbenchmarks/getter-richards-try-catch.js:
11:39 Changeset [206645] by commit-queue@webkit.org
  • 14 edits
    2 adds in trunk

Make it possible to test web-related user-interface features
https://bugs.webkit.org/show_bug.cgi?id=162657

Patch by Megan Gardner <megan_gardner@apple.com> on 2016-09-30
Reviewed by Simon Fraser.

Source/WebKit2:

Added the ability to pull the strings from an Action Sheet and pass them to
test scripts to make sure we are giving the correct available actions for
the item we are interacting with.
Added a test for long press on an image, and used the sheet scraping functionality
to make sure that the correct actions were being displayed.
Test for previous patch, Changeset 205915; Bug 161761

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _contentsOfUserInterfaceItem:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/ios/WKActionSheetAssistant.h:
  • UIProcess/ios/WKActionSheetAssistant.mm:

(-[WKActionSheetAssistant currentAvailableActionStrings]):

  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _contentsOfUserInterfaceItem:]):

Tools:

  • DumpRenderTree/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::contentsOfUserInterfaceItem):
(WTR::UIScriptController::selectFormAccessoryPickerRow): Deleted.

  • TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
  • TestRunnerShared/UIScriptContext/UIScriptController.cpp:

(WTR::UIScriptController::contentsOfUserInterfaceItem):
(WTR::UIScriptController::selectFormAccessoryPickerRow): Deleted.

  • TestRunnerShared/UIScriptContext/UIScriptController.h:
  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::contentsOfUserInterfaceItem):
(WTR::UIScriptController::selectFormAccessoryPickerRow): Deleted.

LayoutTests:

  • fast/events/touch/ios/long-press-on-image-expected.txt: Added.
  • fast/events/touch/ios/long-press-on-image.html: Added.
11:29 Changeset [206644] by andersca@apple.com
  • 10 edits in trunk/Source

Remove a couple of unused members from PlatformKeyboardEvent
https://bugs.webkit.org/show_bug.cgi?id=162641

Reviewed by Tim Horton.

Source/WebCore:

  • platform/PlatformKeyboardEvent.h:

(WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
(WebCore::PlatformKeyboardEvent::nativeVirtualKeyCode): Deleted.
(WebCore::PlatformKeyboardEvent::macCharCode): Deleted.

  • platform/mac/PlatformEventFactoryMac.mm:

(WebCore::PlatformKeyboardEventBuilder::PlatformKeyboardEventBuilder):

  • replay/SerializationMethods.cpp:

(JSC::EncodingTraits<PlatformKeyboardEvent>::encodeValue):
(JSC::EncodingTraits<PlatformKeyboardEvent>::decodeValue):

Source/WebKit2:

  • Shared/WebEventConversion.cpp:

(WebKit::WebKit2PlatformKeyboardEvent::WebKit2PlatformKeyboardEvent):

11:15 Changeset [206643] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Use topVMEntryFrame to determine whether to skip the re-throw of a simulated throw.
https://bugs.webkit.org/show_bug.cgi?id=162793

Reviewed by Saam Barati.

Change the ThrowScope destructor to use topVMEntryFrame (instead of topCallFrame)
in the determination of whether to skip the re-throw of a simulated throw. This
is needed because the topCallFrame is not updated in operationConstructArityCheck()
(and does not need to be), whereas topVMEntryFrame is always updated properly.
Hence, we should just switch to using the more reliable topVMEntryFrame instead.

This issue was discovered by existing JSC tests when exception check validation
is enabled.

  • runtime/ThrowScope.cpp:

(JSC::ThrowScope::~ThrowScope):

10:05 BuildingGtk edited by mario@webkit.org
(diff)
10:02 Changeset [206642] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

64-bit LLInt needs to have a concurrency-aware barrier
https://bugs.webkit.org/show_bug.cgi?id=162790

Reviewed by Mark Lam.

In a concurrent GC the barrier definitely has to be after the store, not before it.

  • llint/LowLevelInterpreter64.asm:
10:00 BuildingGtk edited by mario@webkit.org
Added instructions to cross compile WebKit2GTK+ for ARM (diff)
10:00 Changeset [206641] by antti@apple.com
  • 8 edits in trunk/Source/WebCore

Remove "rem" unit optimization for document element font size changes
https://bugs.webkit.org/show_bug.cgi?id=162778

Reviewed by Alex Christensen.

We awkwardly track from the parser level if any stylesheet in a document uses any rem units. This is only used to minimally
optimize a case where document element's (<html>) font size changes dynamically.

In practice such changes are rare. Browsing around I couldn't find a single case where this optimization got used.
Even if it was used it would be of low value as a full style resolution is likely to happen anyway (as font inherits)
and the only thing really saved is that we don't need to invalidate the matched properties cache.

  • css/CSSGrammar.y.in:
  • css/StyleSheetContents.cpp:

(WebCore::StyleSheetContents::StyleSheetContents):

  • css/StyleSheetContents.h:
  • dom/AuthorStyleSheets.cpp:

(WebCore::AuthorStyleSheets::updateActiveStyleSheets):

  • dom/AuthorStyleSheets.h:

(WebCore::AuthorStyleSheets::usesRemUnits): Deleted.
(WebCore::AuthorStyleSheets::setUsesRemUnit): Deleted.

  • dom/Document.cpp:

(WebCore::Document::recalcStyle):
(WebCore::Document::updateBaseURL):

  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::resolveElement):

09:59 Changeset [206640] by fpizlo@apple.com
  • 30 edits
    2 adds in trunk

Air should have a way of expressing additional instruction flags
https://bugs.webkit.org/show_bug.cgi?id=162699

Reviewed by Mark Lam.
Source/JavaScriptCore:


This follows a similar change in B3 (r206595) and replaces Air::Opcode with Air::Kind,
which holds onto the opcode and some additional flags. Because Air is an orthogonal ISA
(the opcode tells you what the operation does but each operand is allowed to also contain
effectively instructions for what to do to read or write that operand), the flags are
meant to be orthogonal to opcode. This allows us to say things like Add32<Trap>, which
makes sense if any of the operands to the Add32 are addresses.

To demonstrate the flags facility this partly adds a trap flag to Air. B3 doesn't use it
yet, but I made sure that Air respects it. Basically that means blocking DCE when the flag
is set, by making it imply hasNonArgNonControlEffects.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • b3/B3CheckSpecial.cpp:

(JSC::B3::Air::numB3Args):
(JSC::B3::CheckSpecial::Key::Key):
(JSC::B3::CheckSpecial::Key::dump):
(JSC::B3::CheckSpecial::CheckSpecial):
(JSC::B3::CheckSpecial::hiddenBranch):
(JSC::B3::CheckSpecial::forEachArg):
(JSC::B3::CheckSpecial::generate):
(JSC::B3::CheckSpecial::dumpImpl):
(JSC::B3::CheckSpecial::deepDumpImpl):

  • b3/B3CheckSpecial.h:

(JSC::B3::CheckSpecial::Key::Key):
(JSC::B3::CheckSpecial::Key::operator==):
(JSC::B3::CheckSpecial::Key::kind):
(JSC::B3::CheckSpecial::Key::hash):
(JSC::B3::CheckSpecial::Key::opcode): Deleted.

  • b3/B3Kind.cpp:

(JSC::B3::Kind::dump):

  • b3/air/AirDumpAsJS.cpp:

(JSC::B3::Air::dumpAsJS):

  • b3/air/AirFixObviousSpills.cpp:
  • b3/air/AirFixPartialRegisterStalls.cpp:
  • b3/air/AirGenerate.cpp:

(JSC::B3::Air::generate):

  • b3/air/AirHandleCalleeSaves.cpp:

(JSC::B3::Air::handleCalleeSaves):

  • b3/air/AirInst.cpp:

(JSC::B3::Air::Inst::jsHash):
(JSC::B3::Air::Inst::dump):

  • b3/air/AirInst.h:

(JSC::B3::Air::Inst::Inst):
(JSC::B3::Air::Inst::kind):
(JSC::B3::Air::Inst::operator bool):
(JSC::B3::Air::Inst::opcode): Deleted.

  • b3/air/AirInstInlines.h:

(JSC::B3::Air::Inst::extraClobberedRegs):
(JSC::B3::Air::Inst::extraEarlyClobberedRegs):
(JSC::B3::Air::Inst::forEachDefWithExtraClobberedRegs):
(JSC::B3::Air::Inst::reportUsedRegisters):
(JSC::B3::Air::Inst::shouldTryAliasingDef):

  • b3/air/AirIteratedRegisterCoalescing.cpp:
  • b3/air/AirKind.cpp: Added.

(JSC::B3::Air::Kind::dump):

  • b3/air/AirKind.h: Added.

(JSC::B3::Air::Kind::Kind):
(JSC::B3::Air::Kind::operator==):
(JSC::B3::Air::Kind::operator!=):
(JSC::B3::Air::Kind::hash):
(JSC::B3::Air::Kind::operator bool):

  • b3/air/AirLowerAfterRegAlloc.cpp:

(JSC::B3::Air::lowerAfterRegAlloc):

  • b3/air/AirLowerEntrySwitch.cpp:

(JSC::B3::Air::lowerEntrySwitch):

  • b3/air/AirLowerMacros.cpp:

(JSC::B3::Air::lowerMacros):

  • b3/air/AirOptimizeBlockOrder.cpp:

(JSC::B3::Air::optimizeBlockOrder):

  • b3/air/AirReportUsedRegisters.cpp:

(JSC::B3::Air::reportUsedRegisters):

  • b3/air/AirSimplifyCFG.cpp:

(JSC::B3::Air::simplifyCFG):

  • b3/air/AirTmpWidth.cpp:

(JSC::B3::Air::TmpWidth::recompute):

  • b3/air/AirUseCounts.h:

(JSC::B3::Air::UseCounts::UseCounts):

  • b3/air/AirValidate.cpp:
  • b3/air/opcode_generator.rb:
  • b3/testb3.cpp:

(JSC::B3::testTernarySubInstructionSelection):
(JSC::B3::testBranchBitAndImmFusion):

Source/WTF:

  • wtf/CommaPrinter.h:

(WTF::CommaPrinter::CommaPrinter):
(WTF::CommaPrinter::dump):
(WTF::CommaPrinter::didPrint):

Websites/webkit.org:

  • docs/b3/assembly-intermediate-representation.html:
09:52 Changeset [206639] by zalan@apple.com
  • 3 edits in trunk/Source/WebCore

RenderLayer::clipRects may return nullptr.
https://bugs.webkit.org/show_bug.cgi?id=162729

Reviewed by Chris Dumez.

This patch refactors RenderLayer::updateClipRects(), parentClipRects() and backgroundClipRect()
so that we don't have to rely on this seemingly unsafe line: clipRects = *parent()->clipRects(clipRectsContext);
Now updateClipRects() returns the computed/cached clip rects as opposed to update and refetch them.
While this patch makes the code look more readable/safer, it also eliminates cached item tripple retrievals.

No change in functionality.

  • rendering/RenderLayer.cpp:

(WebCore::ClipRectsCache::getClipRects):
(WebCore::ClipRectsCache::setClipRects):
(WebCore::RenderLayer::updateClipRects):
(WebCore::RenderLayer::clipRects):
(WebCore::RenderLayer::calculateClipRects):

  • rendering/RenderLayer.h:
09:41 Changeset [206638] by commit-queue@webkit.org
  • 4 edits in trunk/Source

Add a way to go from a RefPtr<T> to Ref<const T>
https://bugs.webkit.org/show_bug.cgi?id=162683

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

Source/WebCore:

No change of behavior.

  • Modules/fetch/FetchBody.cpp:

(WebCore::FetchBody::extract):

Source/WTF:

  • wtf/RefPtr.h:

(WTF::RefPtr::releaseConstNonNull): Added.

09:18 Changeset [206637] by said@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix 32-bit build.

  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::decodedSizeChanged):

09:08 Changeset [206636] by commit-queue@webkit.org
  • 6 edits in trunk

FetchBody should use UTF8Encoding to encode text data
https://bugs.webkit.org/show_bug.cgi?id=162775

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

LayoutTests/imported/w3c:

  • web-platform-tests/fetch/api/basic/text-utf8-expected.txt:
  • web-platform-tests/fetch/api/basic/text-utf8.html:
  • web-platform-tests/fetch/api/resources/utils.js:

(encode_utf8):

Source/WebCore:

Covered by added tests.

Removing unnecesary vector allocation when extracting UTF8 bytes from a Request/Response text/URLSearchParams body.
Making use of UTF8Encoding for consistency with the upload code path.

  • Modules/fetch/FetchBody.cpp:

(WebCore::FetchBody::consumeAsStream):
(WebCore::FetchBody::consumeText):
(WebCore::extractBytesFromText): Deleted.

09:01 Changeset [206635] by said@apple.com
  • 13 edits in trunk

Change the MemoryCache and CachedResource adjustSize functions to take a long argument
https://bugs.webkit.org/show_bug.cgi?id=162708
<rdar://problem/28555702>

Reviewed by Brent Fulgham.

Source/WebCore:

Because the MemoryCache stores the size of the cached memory in unsigned,
two problems my happen when reporting a change in the size of the memory:

  1. Signed integer overflow -- which can happen because MemoryCache::adjustSize() takes a signed integer argument. If the allocated or the freed memory size is larger than the maximum of a signed integer, an overflow will happen. For the image caching code, this can be seen where the unsigned decodedSize is casted to an integer before passing it to ImageObserver::decodedSizeChanged().
  1. Unsigned integer overflow -- which can happen if the new allocated memory size plus the currentSize exceeds the maximum of unsigned. This can be seen in MemoryCache::adjustSize() where we add delta to m_liveSize or m_deadSize without checking whether this addition will overflow or not. We do not assert for overflow although we assert for underflow.


The fix for these two problems can be the following:

  1. Make all the adjustSize functions all the way till MemoryCache::adjustSize() take a signed long integer argument.


  1. Do not create a NativeImagePtr for an ImageFrame if its frameBytes plus the ImageFrameCache::decodedSize() will exceed the maximum of an unsigned integer.
  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::decodedSizeChanged): Change the argument to be long. No overflow will happen when casting the argument from unsigned to long.

  • loader/cache/CachedImage.h:
  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::setDecodedSize): Use long integer casting when calling MemoryCache::adjustSize().
(WebCore::CachedResource::setEncodedSize): Ditto.

  • loader/cache/MemoryCache.cpp:

(WebCore::MemoryCache::MemoryCache): Add as static assert to ensure sizeof(long long) can hold any unsigned or its negation.
(WebCore::MemoryCache::revalidationSucceeded): Use long integer casting when calling MemoryCache::adjustSize().
(WebCore::MemoryCache::remove): Ditto.
(WebCore::MemoryCache::adjustSize): Change the function argument to long integer. No overflow will happen when casting the argument from unsigned to long.

  • loader/cache/MemoryCache.h:
  • platform/graphics/ImageFrameCache.cpp:

(WebCore::ImageFrameCache::destroyIncompleteDecodedData): Call a function with its new name.
(WebCore::ImageFrameCache::decodedSizeChanged): Change the function argument to long integer. No overflow will happen when casting the argument from unsigned to long.
(WebCore::ImageFrameCache::decodedSizeIncreased): Use long integer casting when calling decodedSizeChanged().
(WebCore::ImageFrameCache::decodedSizeDecreased): Ditto.
(WebCore::ImageFrameCache::decodedSizeReset): Ditto.
(WebCore::ImageFrameCache::didDecodeProperties): Ditto.
(WebCore::ImageFrameCache::frameAtIndex): Do not create the NativeImage if adding its frameByes to the MemoryCache will cause numerical overflow.
(WebCore::ImageFrameCache::decodedSizeIncremented): Deleted. This function is renamed decodedSizeIncreased().
(WebCore::ImageFrameCache::decodedSizeDecremented): Deleted. This function is renamed decodedSizeDecreased().

  • platform/graphics/ImageFrameCache.h:
  • platform/graphics/ImageObserver.h:
  • platform/graphics/IntSize.h:

(WebCore::IntSize::unclampedArea): Returns the area of an IntSize in size_t.

  • platform/graphics/cg/PDFDocumentImage.cpp:

(WebCore::PDFDocumentImage::decodedSizeChanged): Use long integer casting when calling ImageObserver::decodedSizeChanged().

LayoutTests:

07:20 Changeset [206634] by cdumez@apple.com
  • 7 edits in trunk

Add support for ImageData.data attribute
https://bugs.webkit.org/show_bug.cgi?id=162767

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Rebaseline W3C test now that one more check is passing.

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

Source/WebCore:

Add support for ImageData.data attribute:

Firefox already supports it.

No new tests, updated existing tests.

  • html/ImageData.idl:

LayoutTests:

Add layout test coverage.

  • fast/canvas/canvas-imageData-expected.txt:
  • fast/canvas/script-tests/canvas-imageData.js:
01:27 Changeset [206633] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

DumpRenderTree crashed in com.apple.WebCore: WTF::Optional<WebCore::FetchBodyOwner::BlobLoader>::operator bool const + 12
https://bugs.webkit.org/show_bug.cgi?id=162483

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

Source/WebCore:

Test: fetch/closing-while-fetching-blob.html
No change of behavior.

  • Modules/fetch/FetchBodyOwner.cpp:

(WebCore::FetchBodyOwner::stop): Asserting m_blobLoader is null (meaning that unsetPendingActivity was done)
only in case FetchBodyOwner has no risk being destroyed.

LayoutTests:

  • fetch/closing-while-fetching-blob-expected.txt: Added.
  • fetch/closing-while-fetching-blob.html: Added.
01:04 Changeset [206632] by commit-queue@webkit.org
  • 19 edits
    6 adds in trunk

[Fetch API] Add support for URLSearchParams body
https://bugs.webkit.org/show_bug.cgi?id=162667

Patch by Youenn Fablet <youennf@gmail.com> on 2016-09-30
Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Adding new tests to consume, stream and upload URLSearchParams bodies.

  • web-platform-tests/fetch/api/basic/request-headers-expected.txt:
  • web-platform-tests/fetch/api/basic/request-headers-worker-expected.txt:
  • web-platform-tests/fetch/api/basic/request-headers.js:

(checkContentType):
(requestHeaders):

  • web-platform-tests/fetch/api/basic/request-upload-expected.txt: Added.
  • web-platform-tests/fetch/api/basic/request-upload-worker-expected.txt: Added.
  • web-platform-tests/fetch/api/basic/request-upload-worker.html: Added.
  • web-platform-tests/fetch/api/basic/request-upload.html: Added.
  • web-platform-tests/fetch/api/basic/request-upload.js: Added.

(testUpload):

  • web-platform-tests/fetch/api/request/request-consume-empty-expected.txt:
  • web-platform-tests/fetch/api/request/request-consume-empty.html:
  • web-platform-tests/fetch/api/request/request-init-002-expected.txt:
  • web-platform-tests/fetch/api/resources/echo-content.py: Added.

(main):

  • web-platform-tests/fetch/api/response/response-consume-empty-expected.txt:
  • web-platform-tests/fetch/api/response/response-consume-empty.html:
  • web-platform-tests/fetch/api/response/response-consume-expected.txt:
  • web-platform-tests/fetch/api/response/response-consume-stream-expected.txt:
  • web-platform-tests/fetch/api/response/response-consume-stream.html:
  • web-platform-tests/fetch/api/response/response-consume.html:
  • web-platform-tests/fetch/api/response/response-init-002-expected.txt:

Source/WebCore:

Tests: imported/w3c/web-platform-tests/fetch/api/basic/request-upload-worker.html

imported/w3c/web-platform-tests/fetch/api/basic/request-upload.html

  • Modules/fetch/FetchBody.cpp:

(WebCore::extractBytesFromText): Moving to a static function that should be moved to a String method.
(WebCore::FetchBody::FetchBody): Adding constructor for URLSearchParams.
(WebCore::FetchBody::extract): Adding URLSearchParams body initialization.
(WebCore::FetchBody::consume): Consuming URLSearchParams bodies.
(WebCore::FetchBody::consumeAsStream): Ditto.
(WebCore::FetchBody::consumeText): Updated to take a parameter to handle both text and URLSearchParams bodies.
(WebCore::FetchBody::bodyForInternalRequest): Add URLSearchParams body upload.
(WebCore::FetchBody::clone): Add URLSearchParams body cloning

  • Modules/fetch/FetchBody.h:

(WebCore::FetchBody::urlSearchParamsBody):

  • html/URLSearchParams.cpp:

(WebCore::URLSearchParams::toString):

  • html/URLSearchParams.h:

09/29/16:

23:41 Changeset [206631] by simon.fraser@apple.com
  • 27 edits in trunk/Source/WebCore

Re-order the arguments to drawPattern() functions
https://bugs.webkit.org/show_bug.cgi?id=162772

Reviewed by Zalan Bujtas.

Re-order the arguments to have the destination rect come near the front,
leaving CompositeOperator and BlendMode hanging out at the back like
other drawing functions.

No behavior change.

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::drawPattern):

  • platform/graphics/BitmapImage.h:
  • platform/graphics/CrossfadeGeneratedImage.cpp:

(WebCore::CrossfadeGeneratedImage::drawPattern):

  • platform/graphics/CrossfadeGeneratedImage.h:
  • platform/graphics/GeneratedImage.h:
  • platform/graphics/GradientImage.cpp:

(WebCore::GradientImage::drawPattern):

  • platform/graphics/GradientImage.h:
  • platform/graphics/GraphicsContext.h:
  • platform/graphics/Image.cpp:

(WebCore::Image::drawTiled):

  • platform/graphics/Image.h:
  • platform/graphics/ImageBuffer.h:
  • platform/graphics/NamedImageGeneratedImage.cpp:

(WebCore::NamedImageGeneratedImage::drawPattern):

  • platform/graphics/NamedImageGeneratedImage.h:
  • platform/graphics/cairo/GraphicsContextCairo.cpp:

(WebCore::GraphicsContext::drawPattern):

  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::ImageBuffer::drawPattern):

  • platform/graphics/cairo/ImageCairo.cpp:

(WebCore::Image::drawPattern):

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::GraphicsContext::drawPattern):

  • platform/graphics/cg/ImageBufferCG.cpp:

(WebCore::ImageBuffer::drawPattern):

  • platform/graphics/cg/ImageCG.cpp: This file can probably be removed and the code moved, since the

code is almost the same as the cairo code, and not platform-specific.
(WebCore::Image::drawPattern):

  • platform/graphics/displaylists/DisplayListItems.cpp:

(WebCore::DisplayList::DrawPattern::DrawPattern):
(WebCore::DisplayList::DrawPattern::apply):

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::DrawPattern::create):

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::drawPattern):

  • platform/graphics/displaylists/DisplayListRecorder.h:
  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::drawPatternForContainer):

  • svg/graphics/SVGImageForContainer.cpp:

(WebCore::SVGImageForContainer::drawPattern):

  • svg/graphics/SVGImageForContainer.h:
22:05 Changeset [206630] by cdumez@apple.com
  • 11 edits
    3 adds in trunk

Add support for download attribute on area elements
https://bugs.webkit.org/show_bug.cgi?id=162765

Reviewed by Brent Fulgham.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

  • web-platform-tests/html/dom/reflection-embedded-expected.txt:

Source/WebCore:

Add support for download attribute on area elements:

Because HTMLAreaElement inherits from HTMLAnchorElement on native side,
and because HTMLAnchorElement already supports the download attribute,
all that was needed was to add the download attribute to
HTMLAreaElement.idl file.

Test: http/tests/download/area-download.html

  • html/HTMLAreaElement.idl:

LayoutTests:

Add layout test coverage.

  • http/tests/download/area-download-expected.txt: Added.
  • http/tests/download/area-download.html: Added.
  • http/tests/download/resources/FAIL-notify-done.html: Added.
19:04 Changeset [206629] by rniwa@webkit.org
  • 3 edits in trunk/Source/WebCore

Editor::findStringAndScrollToVisible is unused
https://bugs.webkit.org/show_bug.cgi?id=162762

Reviewed by Simon Fraser.

Deleted the unused function.

  • editing/Editor.cpp:

(WebCore::Editor::findStringAndScrollToVisible): Deleted.

  • editing/Editor.h:
17:48 Changeset [206628] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION(r206555): It made Dromaeo/jslib-style-jquery.html crash
https://bugs.webkit.org/show_bug.cgi?id=162721

Reviewed by Keith Miller.

The put_by_id-in-put_by_val optimization had the write barrier in the wrong place and
incorrectly filtered on value instead of base.

No reduced test case. You really need to run Dromaeo/jslib to catch it. I love Dromaeo's
ability to catch GC bugs.

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emitPutByValWithCachedId):

17:47 Changeset [206627] by jiewen_tan@apple.com
  • 69 edits
    6 copies
    3 moves
    8 adds
    1 delete in trunk

Expose CryptoKey to web workers
https://bugs.webkit.org/show_bug.cgi?id=162640
<rdar://problem/28182204>

Reviewed by Brent Fulgham.

Source/WebCore:

Tests: crypto/workers/aes-postMessage-worker.html

crypto/workers/hmac-postMessage-worker.html
crypto/workers/hrsa-postMessage-worker.html
crypto/workers/multiple-postMessage-worker.html
crypto/workers/rsa-postMessage-worker.html

  • crypto/CryptoKey.idl:
  • crypto/SerializedCryptoKeyWrap.h:
  • crypto/mac/SerializedCryptoKeyWrapMac.mm:

(WebCore::deleteDefaultWebCryptoMasterKey):
Add a way to delete the default web crypto master key such that we can test
these APIs and cleanup.

  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::wrapCryptoKey):
(WebCore::WorkerGlobalScope::unwrapCryptoKey):

  • workers/WorkerGlobalScope.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/SerializedCryptoKeyWrap.mm: Added.

(TestWebKitAPI::TEST_F):
Add API tests for SerializedCryptoKeyWrap APIs.

LayoutTests:

  • crypto/resources/common.js: Renamed from LayoutTests/crypto/subtle/resources/common.js.
  • crypto/subtle/aes-cbc-192-encrypt-decrypt.html:
  • crypto/subtle/aes-cbc-256-encrypt-decrypt.html:
  • crypto/subtle/aes-cbc-encrypt-decrypt-with-padding.html:
  • crypto/subtle/aes-cbc-encrypt-decrypt.html:
  • crypto/subtle/aes-cbc-generate-key.html:
  • crypto/subtle/aes-cbc-import-jwk.html:
  • crypto/subtle/aes-cbc-invalid-length.html:
  • crypto/subtle/aes-cbc-unwrap-failure.html:
  • crypto/subtle/aes-cbc-unwrap-rsa.html:
  • crypto/subtle/aes-cbc-wrap-rsa-non-extractable.html:
  • crypto/subtle/aes-cbc-wrap-rsa.html:
  • crypto/subtle/aes-cbc-wrong-key-class.html:
  • crypto/subtle/aes-export-key.html:
  • crypto/subtle/aes-kw-key-manipulation.html:
  • crypto/subtle/aes-kw-wrap-unwrap-aes.html:
  • crypto/subtle/aes-postMessage-expected.txt:
  • crypto/subtle/aes-postMessage.html:
  • crypto/subtle/argument-conversion.html:
  • crypto/subtle/array-buffer-view-offset.html:
  • crypto/subtle/crypto-key-algorithm-gc.html:
  • crypto/subtle/crypto-key-usages-gc.html:
  • crypto/subtle/hmac-check-algorithm.html:
  • crypto/subtle/hmac-export-key.html:
  • crypto/subtle/hmac-generate-key.html:
  • crypto/subtle/hmac-import-jwk.html:
  • crypto/subtle/hmac-postMessage-expected.txt:
  • crypto/subtle/hmac-postMessage.html:
  • crypto/subtle/hmac-sign-verify-empty-key.html:
  • crypto/subtle/hmac-sign-verify.html:
  • crypto/subtle/import-jwk.html:
  • crypto/subtle/jwk-export-use-values.html:
  • crypto/subtle/jwk-import-use-values.html:
  • crypto/subtle/postMessage-worker-expected.txt: Removed.
  • crypto/subtle/rsa-export-generated-keys.html:
  • crypto/subtle/rsa-export-key.html:
  • crypto/subtle/rsa-export-private-key.html:
  • crypto/subtle/rsa-indexeddb-non-exportable-private.html:
  • crypto/subtle/rsa-indexeddb-non-exportable.html:
  • crypto/subtle/rsa-indexeddb-private.html:
  • crypto/subtle/rsa-indexeddb.html:
  • crypto/subtle/rsa-oaep-generate-non-extractable-key.html:
  • crypto/subtle/rsa-oaep-key-manipulation.html:
  • crypto/subtle/rsa-oaep-plaintext-length.html:
  • crypto/subtle/rsa-oaep-wrap-unwrap-aes.html:
  • crypto/subtle/rsa-postMessage.html:
  • crypto/subtle/rsaes-pkcs1-v1_5-decrypt.html:
  • crypto/subtle/rsaes-pkcs1-v1_5-wrap-unwrap-aes.html:
  • crypto/subtle/rsassa-pkcs1-v1_5-generate-key-with-leading-zeroes-in-exponent.html:
  • crypto/subtle/rsassa-pkcs1-v1_5-generate-key.html:
  • crypto/subtle/rsassa-pkcs1-v1_5-import-jwk-small-key.html:
  • crypto/subtle/rsassa-pkcs1-v1_5-import-jwk.html:
  • crypto/subtle/rsassa-pkcs1-v1_5-sign-verify.html:
  • crypto/subtle/sha-1.html:
  • crypto/subtle/sha-224.html:
  • crypto/subtle/sha-256.html:
  • crypto/subtle/sha-384.html:
  • crypto/subtle/sha-512.html:
  • crypto/subtle/unimplemented-unwrap-crash.html:
  • crypto/subtle/unwrapKey-check-usage.html:
  • crypto/subtle/wrapKey-check-usage.html:
  • crypto/workers/aes-postMessage-worker-expected.txt: Added.
  • crypto/workers/aes-postMessage-worker.html: Added.
  • crypto/workers/hmac-postMessage-worker-expected.txt: Added.
  • crypto/workers/hmac-postMessage-worker.html: Renamed from LayoutTests/crypto/subtle/postMessage-worker.html.
  • crypto/workers/hrsa-postMessage-worker-expected.txt: Added.
  • crypto/workers/hrsa-postMessage-worker.html: Added.
  • crypto/workers/multiple-postMessage-worker-expected.txt: Added.
  • crypto/workers/multiple-postMessage-worker.html: Added.
  • crypto/workers/resources/aes-postMessage-worker.js: Added.
  • crypto/workers/resources/hmac-postMessage-worker.js: Renamed from LayoutTests/crypto/subtle/resources/postMessage-worker.js.
  • crypto/workers/resources/hrsa-postMessage-worker.js: Added.
  • crypto/workers/resources/rsa-postMessage-worker.js: Added.
  • crypto/workers/rsa-postMessage-worker-expected.txt: Added.
  • crypto/workers/rsa-postMessage-worker.html: Added.
  • js/dom/global-constructors-attributes-dedicated-worker-expected.txt:
17:38 Changeset [206626] by n_wang@apple.com
  • 10 edits
    2 copies
    4 moves in trunk

AX: iOS: Tapping <input> in Safari zooms in a bit when page has max scale = 1
https://bugs.webkit.org/show_bug.cgi?id=162471

Reviewed by Simon Fraser.

Source/WebCore:

If the author has defined a maximum scale, we should honor that when keyboard focus moves
to a text field, instead of using the forceAlwaysUserScalableMaximumScale.

Tests: fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale.html

fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-user-scalable-no.html
fast/forms/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale.html

  • page/ViewportConfiguration.cpp:

(WebCore::ViewportConfiguration::allowsUserScaling):
(WebCore::ViewportConfiguration::allowsUserScalingIgnoringAlwaysScalable):
(WebCore::ViewportConfiguration::allowsUserScalingIgnoringForceAlwaysScaling): Deleted.

  • page/ViewportConfiguration.h:

(WebCore::ViewportConfiguration::maximumScaleIgnoringAlwaysScalable):
(WebCore::ViewportConfiguration::maximumScale): Deleted.

Source/WebKit2:

  • Shared/AssistedNodeInformation.cpp:

(WebKit::AssistedNodeInformation::encode):
(WebKit::AssistedNodeInformation::decode):

  • Shared/AssistedNodeInformation.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _displayFormNodeInputView]):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::maximumPageScaleFactorIgnoringAlwaysScalable):
(WebKit::WebPage::getAssistedNodeInformation):

LayoutTests:

Moved focus input related tests to the right place.

  • fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale-expected.txt: Added.
  • fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale.html: Added.
  • fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-user-scalable-no-expected.txt: Added.
  • fast/forms/ios/user-scalable-does-not-scale-for-keyboard-focus-with-user-scalable-no.html: Added.
  • fast/forms/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale-expected.txt: Added.
  • fast/forms/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale.html: Added.
  • fast/viewport/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale-expected.txt: Removed.
  • fast/viewport/ios/user-scalable-does-not-scale-for-keyboard-focus-with-author-defined-scale.html: Removed.
  • fast/viewport/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale-expected.txt: Removed.
  • fast/viewport/ios/user-scalable-scales-for-keyboard-focus-with-no-author-defined-scale.html: Removed.
17:15 Changeset [206625] by bshafiei@apple.com
  • 1 copy in tags/Safari-603.1.7

New tag.

16:20 Changeset [206624] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.2.14.0.3

New tag.

16:18 Changeset [206623] by bshafiei@apple.com
  • 2 edits in branches/safari-602.2.14.0-branch/Source/WebCore

Merge r206556. rdar://problem/28524440

16:15 Changeset [206622] by bshafiei@apple.com
  • 5 edits in branches/safari-602.2.14.0-branch/Source

Versioning.

16:05 Changeset [206621] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKit2

Mark NetworkLoad as final
https://bugs.webkit.org/show_bug.cgi?id=162681

Reviewed by Alex Christensen.

Mark class NetworkLoad as final as we do not have any derived classes at the moment and it
is unclear if it would make sense to subclass it. We can always unmark the class if it turns
out that it makes sense to subclass it.

  • NetworkProcess/NetworkLoad.h:
15:23 Changeset [206620] by bshafiei@apple.com
  • 5 edits in trunk/Source

Versioning.

15:16 Changeset [206619] by cdumez@apple.com
  • 2 edits in trunk/LayoutTests

[iOS] Update Touch constructor test to cover clientX / clientY attributes
https://bugs.webkit.org/show_bug.cgi?id=162757

Reviewed by Sam Weinig.

Update Touch constructor test to cover clientX / clientY attributes.

  • fast/events/touch/touch-constructor.html:
15:15 Changeset [206618] by commit-queue@webkit.org
  • 3 edits
    1 add in trunk

Web Inspector: AXI: linkified refs to #document and #text are not usually navigable nodes; consider delinkifying them
https://bugs.webkit.org/show_bug.cgi?id=130600
<rdar://problem/16391333>

Patch by Aaron Chu <aaron_chu@apple.com> on 2016-09-29
Reviewed by Brian Burg.

.:

Added a manual test to test the node links in the Accessibility Inspector
https://bugs.webkit.org/show_bug.cgi?id=130600

  • ManualTests/accessibility/delinkified-non-navigable-links.html: Added.

Source/WebInspectorUI:

Removing link style for non-navigable nodes by first
checking nodeType of the node.

  • UserInterface/Base/DOMUtilities.js:

(WebInspector.linkifyNodeReference):

15:02 Changeset [206617] by achristensen@apple.com
  • 5 edits in trunk

Fix syntax violation handling in IPv4 address parsing
https://bugs.webkit.org/show_bug.cgi?id=162756

Reviewed by Tim Horton.

Source/WebCore:

When we are parsing the up to 4 numbers in an IPv4 address, if we find a syntax violation
(the canonicalized address would be different than the input string) then wait to report
it until we have determined that this is a valid IPv4 address that will be canonicalized.
If it is not a valid IPv4 address, then we will just treat the characters as the host, and
that could be no syntax violation.

Covered by a new API test and existing API tests.

  • platform/URLParser.cpp:

(WebCore::URLParser::URLParser):
(WebCore::URLParser::parseIPv4Number):
(WebCore::URLParser::parseIPv4Host):

  • platform/URLParser.h:

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

14:28 Changeset [206616] by cdumez@apple.com
  • 10 edits in trunk/Source/WebCore

Fix post-landing nits after r206561.
https://bugs.webkit.org/show_bug.cgi?id=162659

Reviewed by Alex Christensen.

Uses more StringViews and constness.

  • dom/SecurityContext.cpp:

(WebCore::SecurityContext::isSupportedSandboxPolicy):

  • dom/SecurityContext.h:
  • html/DOMTokenList.cpp:

(WebCore::DOMTokenList::DOMTokenList):
(WebCore::DOMTokenList::supports):

  • html/DOMTokenList.h:

(WebCore::DOMTokenList::DOMTokenList):

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::relList):

  • html/HTMLIFrameElement.cpp:

(WebCore::HTMLIFrameElement::sandbox):

  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::relList):

  • html/LinkRelAttribute.cpp:

(WebCore::LinkRelAttribute::isSupported):

  • html/LinkRelAttribute.h:
14:25 Changeset [206615] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

URLParser should correctly parse ports with leading 0's
https://bugs.webkit.org/show_bug.cgi?id=162752

  • platform/URLParser.cpp:

(WebCore::URLParser::parsePort):
Followup. Remove branches based on Geoffrey's feedback.

14:20 Changeset [206614] by achristensen@apple.com
  • 4 edits in trunk

URLParser should correctly parse ports with leading 0's
https://bugs.webkit.org/show_bug.cgi?id=162752

Reviewed by Tim Horton.

Source/WebCore:

Covered by new API tests.

  • platform/URLParser.cpp:

(WebCore::URLParser::parsePort):

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

14:13 Changeset [206613] by cdumez@apple.com
  • 1 edit
    1 add in trunk/LayoutTests

[iOS] Add test for Touch constructor
https://bugs.webkit.org/show_bug.cgi?id=162736
<rdar://problem/28520007>

Reviewed by Ryosuke Niwa.

Add test for Touch constructor. There are no expected results because
the test (folder) is skipped in the open source.

  • fast/events/touch/touch-constructor.html: Added.
14:04 Changeset [206612] by adachan@apple.com
  • 3 edits in trunk/LayoutTests

Fix flaky test media/click-placeholder-not-pausing.html
https://bugs.webkit.org/show_bug.cgi?id=162661

Reviewed by Eric Carlson.

This test became flaky after r201474 when we started to delay showing
the inline placeholder until we are sure the video layer has been moved
into the video fullscreen layer. This means we can't guarantee that the
placeholder is visible right away after the video's presentation mode
changes to "picture-in-picture".

To fix this, wait for the placeholder to become visible before clicking it.

  • media/click-placeholder-not-pausing.html:
  • platform/mac-wk2/TestExpectations:
14:02 Changeset [206611] by commit-queue@webkit.org
  • 3 edits
    4 deletes in trunk

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

May have caused iOS perf regression (Requested by smfr on
#webkit).

Reverted changeset:

"REGRESSION (r204552): Yelp carousel animation is not smooth."
https://bugs.webkit.org/show_bug.cgi?id=162632
http://trac.webkit.org/changeset/206483

13:33 Changeset [206610] by joepeck@webkit.org
  • 4 edits in trunk

Arrow functions do not infer name from computed property but normal functions do
https://bugs.webkit.org/show_bug.cgi?id=162720

Reviewed by Saam Barati.

JSTests:

  • stress/inferred-names.js:

Source/JavaScriptCore:

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitSetFunctionNameIfNeeded):
Set function name on arrow functions as well.

13:21 Changeset [206609] by achristensen@apple.com
  • 4 edits in trunk

URLParser: make parsing invalid IPv4 addresses more robust and correct
https://bugs.webkit.org/show_bug.cgi?id=162746

Reviewed by Tim Horton.

Source/WebCore:

If parsing an IPv4 address fails, the characters are just treated as a regular domain.

Covered by new API tests.

  • platform/URLParser.cpp:

(WebCore::URLParser::parseIPv4Number):
(WebCore::URLParser::parseIPv4Host):

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

13:18 Changeset [206608] by achristensen@apple.com
  • 4 edits in trunk

URLParser: IPv6 addresses followed by a colon are invalid
https://bugs.webkit.org/show_bug.cgi?id=162747

Reviewed by Tim Horton.

Source/WebCore:

Covered by new API tests.

  • platform/URLParser.cpp:

(WebCore::URLParser::parseIPv6Host):

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

13:03 Changeset [206607] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Removing El Capitan modifier from flaky test media/restore-from-page-cache.html.
https://bugs.webkit.org/show_bug.cgi?id=158747

Unreviewed test gardening.

  • platform/mac/TestExpectations:
13:02 Changeset [206606] by commit-queue@webkit.org
  • 2 edits
    9 adds in trunk

[Modern Media Controls] scheduler for layout nodes
https://bugs.webkit.org/show_bug.cgi?id=162726
<rdar://problem/28543043>

Patch by Antoine Quint <graouts@apple.com> on 2016-09-29
Reviewed by Dean Jackson.

Source/WebCore:

For the work on the modern media controls we will be using a tree of LayoutNode objects that will
commit to the DOM in coordinated requestAnimationFrame() calls to ensure all layouts are done
in an efficient and coordinated manner. As a preamble, we introduce a scheduler singleton which
provides a single public method scheduleLayout(callback) to queue callbacks to be fired in the
next requestAnimationFrame() callback.

Tests: media/modern-media-controls/scheduler/not-reentrant.html

media/modern-media-controls/scheduler/single-callback-when-registered-multiple-times.html

  • Modules/modern-media-controls/controls/scheduler.js: Added.

(const.scheduler.new.prototype.scheduleLayout):
(const.scheduler.new.prototype._requestFrameIfNeeded):
(const.scheduler.new.prototype._frameDidFire):
(const.scheduler.new.prototype._layout):

LayoutTests:

Testing the basic functionality for the LayoutNode scheduler.

  • media/modern-media-controls/scheduler/not-reentrant-expected.txt: Added.
  • media/modern-media-controls/scheduler/not-reentrant.html: Added.
  • media/modern-media-controls/scheduler/single-callback-when-registered-multiple-times-expected.txt: Added.
  • media/modern-media-controls/scheduler/single-callback-when-registered-multiple-times.html: Added.
12:49 Changeset [206605] by rniwa@webkit.org
  • 5 edits
    2 adds in trunk

Text nodes assigned to a linked slot are not clickable
https://bugs.webkit.org/show_bug.cgi?id=162091
<rdar://problem/28383300>

Reviewed by Antti Koivisto.

Source/WebCore:

The bug was caused by updateMouseEventTargetNode adjusting the target to its parent element when
the original target was a text node. Fixed the bug by using the parent element in the composed tree.

Also fixed the bug that the hit testing was not finding the anchor element and keeping the cursor
in I-beam by traversing the composed tree instead.

Test: fast/shadow-dom/click-text-inside-linked-slot.html

  • dom/Node.cpp:

(WebCore::Node::enclosingLinkEventParentOrSelf): Fixed the cursor problem.

  • page/EventHandler.cpp:

(WebCore::EventHandler::updateMouseEventTargetNode): Fixed the activation problem.

LayoutTests:

Added a regression test for clicking inside a text node assigned to a slot inside a hyperlink.

Unfortunately, there is not a way to make this a W3C style test until the web platform tests
start supporting WebDriver.

  • fast/shadow-dom/click-text-inside-linked-slot-expected.txt: Added.
  • fast/shadow-dom/click-text-inside-linked-slot.html: Added.
  • platform/ios-simulator-wk2/TestExpectations:
12:48 Changeset [206604] by weinig@apple.com
  • 16 edits in trunk/Source

Allow overriding some NSURLSessionConfiguration properties on a per-NetworkProcess basis
<rdar://problem/27648683>
https://bugs.webkit.org/show_bug.cgi?id=162735

Reviewed by Dan Bernstein.

Source/WebCore:

  • platform/spi/cf/CFNetworkSPI.h:

Forward declare _sourceApplicationSecondaryIdentifier and _CTDataConnectionServiceType

Source/WebKit2:

Add SPI for overriding the following NSURLSessionConfigurations properties:

  • _sourceApplicationBundleIdentifier
  • _sourceApplicationSecondaryIdentifier
  • _CTDataConnectionServiceType
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):

  • NetworkProcess/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode):
(WebKit::NetworkProcessCreationParameters::decode):

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • NetworkProcess/NetworkSession.h:
  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::globalSourceApplicationBundleIdentifier):
(WebKit::globalSourceApplicationSecondaryIdentifier):
(WebKit::globalCTDataConnectionServiceType):
(WebKit::NetworkSession::setCustomProtocolManager):
(WebKit::NetworkSession::setSourceApplicationAuditTokenData):
(WebKit::NetworkSession::setSourceApplicationBundleIdentifier):
(WebKit::NetworkSession::setSourceApplicationSecondaryIdentifier):
(WebKit::NetworkSession::setCTDataConnectionServiceType):
(WebKit::NetworkSession::NetworkSession):

  • UIProcess/API/APIProcessPoolConfiguration.cpp:

(API::ProcessPoolConfiguration::copy):

  • UIProcess/API/APIProcessPoolConfiguration.h:
  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:

(-[_WKProcessPoolConfiguration sourceApplicationBundleIdentifier]):
(-[_WKProcessPoolConfiguration setSourceApplicationBundleIdentifier:]):
(-[_WKProcessPoolConfiguration sourceApplicationSecondaryIdentifier]):
(-[_WKProcessPoolConfiguration setSourceApplicationSecondaryIdentifier:]):
(-[_WKProcessPoolConfiguration CTDataConnectionServiceType]):
(-[_WKProcessPoolConfiguration setCTDataConnectionServiceType:]):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeNetworkProcess):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

12:36 Changeset [206603] by antti@apple.com
  • 19 edits in trunk/Source/WebCore

Remove addSubresourceStyleURLs functions
https://bugs.webkit.org/show_bug.cgi?id=162731

Reviewed by Ryosuke Niwa.

Use the generic std::function taking traverseSubresources instead. This prevents bugs caused by the code paths
not being in sync.

These functions are only used by the legacy webarchive code to gather URLs to locate CachedResources from the memory cache.
This can be improved further by returning the cached resources themselves instead of the URLs.

  • css/CSSFontFaceSrcValue.cpp:

(WebCore::CSSFontFaceSrcValue::addSubresourceStyleURLs): Deleted.

  • css/CSSFontFaceSrcValue.h:
  • css/CSSPrimitiveValue.cpp:

(WebCore::CSSPrimitiveValue::addSubresourceStyleURLs): Deleted.

  • css/CSSPrimitiveValue.h:
  • css/CSSReflectValue.cpp:

(WebCore::CSSReflectValue::addSubresourceStyleURLs): Deleted.

  • css/CSSReflectValue.h:
  • css/CSSValue.cpp:

(WebCore::CSSValue::addSubresourceStyleURLs): Deleted.

  • css/CSSValue.h:
  • css/CSSValueList.cpp:

(WebCore::CSSValueList::addSubresourceStyleURLs): Deleted.

  • css/CSSValueList.h:
  • css/StyleProperties.cpp:

(WebCore::StyleProperties::addSubresourceStyleURLs): Deleted.

  • css/StyleProperties.h:
  • css/StyleRuleImport.h:
  • css/StyleSheetContents.cpp:

(WebCore::StyleSheetContents::traverseSubresources):

Fix a bug where this would miss @import rules in @imported stylesheets.
Include the CachedResource for the imported stylesheet itself.

Tested by the test cases under LayoutTests/webarchive

(WebCore::StyleSheetContents::addSubresourceStyleURLs): Deleted.

  • css/StyleSheetContents.h:
  • dom/StyledElement.cpp:

(WebCore::StyledElement::addSubresourceAttributeURLs):

  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::addSubresourceAttributeURLs):

  • html/HTMLStyleElement.cpp:

(WebCore::HTMLStyleElement::addSubresourceAttributeURLs):

12:22 Changeset [206602] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Marking fast/images/load-img-with-empty-src.html as crashing.
https://bugs.webkit.org/show_bug.cgi?id=162696

Unreviewed test gardening.

12:17 Changeset [206601] by mark.lam@apple.com
  • 2 edits in trunk/Source/WTF

Re-enable StringView life-cycle checking.
https://bugs.webkit.org/show_bug.cgi?id=160384
<rdar://problem/28479434>

Reviewed by Saam Barati.

Re-landing after slow running tests have been resolved.

  • wtf/text/StringView.h:
12:11 Changeset [206600] by mark.lam@apple.com
  • 1 edit
    7 moves
    15 adds in trunk/JSTests

Break some slow running tests into smaller bits so they don't time out.
https://bugs.webkit.org/show_bug.cgi?id=162743

Reviewed by Keith Miller.

The following tests have shown to be slow running:

op_div.js
op_lshift.js
op_mod.js
op_mul.js
op_rshift.js
op_sub.js
op_urshift

These tests auto-generate permutations of values to apply to binary operations.
They also test the operations with 3 permutations of value types:

  1. VarVar - both operands variables
  2. VarConst - variable operand 1, constant / literal operand 2
  3. ConstVar - constant / literal operand 1, variable operand 2

We can prevent these tests from timing out by breaking each up to only run 1 of
the 3 permutations of value types.

  • stress/op_div-ConstVar.js: Added.
  • stress/op_div-VarConst.js: Added.
  • stress/op_div-VarVar.js: Copied from JSTests/stress/op_div.js.

(o1.valueOf): Deleted.

  • stress/op_div.js: Removed.
  • stress/op_lshift-ConstVar.js: Added.
  • stress/op_lshift-VarConst.js: Added.
  • stress/op_lshift-VarVar.js: Copied from JSTests/stress/op_lshift.js.

(o1.valueOf): Deleted.

  • stress/op_lshift.js: Removed.
  • stress/op_mod-ConstVar.js: Added.
  • stress/op_mod-VarConst.js: Added.
  • stress/op_mod-VarVar.js: Copied from JSTests/stress/op_mod.js.

(o1.valueOf): Deleted.

  • stress/op_mod.js: Removed.
  • stress/op_mul-ConstVar.js: Added.
  • stress/op_mul-VarConst.js: Added.
  • stress/op_mul-VarVar.js: Copied from JSTests/stress/op_mul.js.

(o1.valueOf): Deleted.

  • stress/op_mul.js: Removed.
  • stress/op_rshift-ConstVar.js: Added.
  • stress/op_rshift-VarConst.js: Added.
  • stress/op_rshift-VarVar.js: Copied from JSTests/stress/op_rshift.js.

(o1.valueOf): Deleted.

  • stress/op_rshift.js: Removed.
  • stress/op_sub-ConstVar.js: Added.
  • stress/op_sub-VarConst.js: Added.
  • stress/op_sub-VarVar.js: Copied from JSTests/stress/op_sub.js.

(o1.valueOf): Deleted.

  • stress/op_sub.js: Removed.
  • stress/op_urshift-ConstVar.js: Added.
  • stress/op_urshift-VarConst.js: Added.
  • stress/op_urshift-VarVar.js: Copied from JSTests/stress/op_urshift.js.

(o1.valueOf): Deleted.

  • stress/op_urshift.js: Removed.
  • stress/resources/binary-op-values.js: Added.

(o1.valueOf):

12:01 Changeset [206599] by commit-queue@webkit.org
  • 5 edits
    2 adds in trunk

test262: class and function names should be inferred in assignment
https://bugs.webkit.org/show_bug.cgi?id=146262

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-09-29
Reviewed by Saam Barati.

JSTests:

  • stress/arrowfunction-name.js: Added.

Quick tests for arrow function names.

  • stress/inferred-names.js: Added.

General test for inferred function names.

  • test262.yaml:

Pass many tests checking inferred function names.

Source/JavaScriptCore:

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::appendParameter):
(JSC::ASTBuilder::appendArrayPatternEntry):
(JSC::ASTBuilder::appendObjectPatternEntry):
(JSC::ASTBuilder::tryInferFunctionNameInPattern):
Assign names to default value functions and classes in destructuring.

(JSC::ASTBuilder::createAssignResolve):
(JSC::ASTBuilder::createProperty):
(JSC::ASTBuilder::makeAssignNode):
Assign names to both normal and arrow functions.

  • parser/Nodes.h:

(JSC::ExpressionNode::isBaseFuncExprNode):
Both functions and arrow functions infer name, they both extend
this base so give the base an is check.

11:59 Changeset [206598] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Marking fast/images/pdf-as-image-with-annotations.html as crashing.
https://bugs.webkit.org/show_bug.cgi?id=162696

Unreviewed test gardening.

11:45 Changeset [206597] by bfulgham@apple.com
  • 15 edits
    6 adds in trunk/Source/WebCore

[Win][Direct2D] Add D2D Font handling code
https://bugs.webkit.org/show_bug.cgi?id=162712

Reviewed by Brent Fulgham.

This patch lands a set of new files that implement

No new tests until complete backend lands.

  • platform/graphics/Font.h:
  • platform/graphics/FontCascade.h:

(WebCore::FontCascade::syntheticObliqueAngle): Added helper function.

  • platform/graphics/FontPlatformData.h:

(WebCore::FontPlatformData::dwFont): Added.
(WebCore::FontPlatformData::dwFontFace): Ditto.

  • platform/graphics/GlyphBuffer.h:
  • platform/graphics/cocoa/FontCascadeCocoa.mm:

(WebCore::FontCascade::drawGlyphs): Use helper function.

  • platform/graphics/win/FontCGWin.cpp:

(WebCore::FontCascade::drawGlyphs): Ditto.

  • platform/graphics/win/FontCacheWin.cpp:

(WebCore::FontCache::createFontPlatformData): Add case for Direct2D.

  • platform/graphics/win/FontCascadeDirect2D.cpp: Added.
  • platform/graphics/win/FontCustomPlatformData.cpp:

(WebCore::FontCustomPlatformData::~FontCustomPlatformData): Fix whitespace.
(WebCore::FontCustomPlatformData::fontPlatformData): Add Direct2D case.

  • platform/graphics/win/FontPlatformDataCGWin.cpp:

(WebCore::FontPlatformData::FontPlatformData): Clean up C++ initializers.

  • platform/graphics/win/FontPlatformDataCairoWin.cpp:

(WebCore::FontPlatformData::FontPlatformData): Ditto.

  • platform/graphics/win/FontPlatformDataDirect2D.cpp: Added.
  • platform/graphics/win/FontPlatformDataWin.cpp:

(WebCore::FontPlatformData::FontPlatformData): Clean up C++ initializers.

  • platform/graphics/win/GlyphPageTreeNodeDirect2D.cpp: Added.
  • platform/graphics/win/SimpleFontDataDirect2D.cpp: Added.
  • platform/graphics/win/TextAnalyzerHelper.cpp: Added.
  • platform/graphics/win/TextAnalyzerHelper.h: Added.
11:44 Changeset [206596] by ap@apple.com
  • 5 edits in trunk/Tools

Make WKTR short timeout dynamic
https://bugs.webkit.org/show_bug.cgi?id=162733

Reviewed by Alex Christensen.

WebKitTestRunner has a hardcoded value for how long to wait for IPC responses,
which is 5 seconds, or 10 seconds under ASan. But some of the operations can be
fairly time consuming - e.g. launching Networking process on demand.
These may take longer under load, especially with GuardMalloc.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetStateToConsistentValues):
(WTR::TestController::reattachPageToWebProcess):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::shortTimeout):
(WTR::TestInvocation::invoke):
(WTR::TestInvocation::dumpResults):

  • WebKitTestRunner/TestInvocation.h:

(WTR::TestInvocation::customTimeout): Deleted, this function was unused.

11:44 Changeset [206595] by fpizlo@apple.com
  • 37 edits
    2 adds in trunk

B3 opcodes should leave room for flags
https://bugs.webkit.org/show_bug.cgi?id=162692

Reviewed by Keith Miller.
Source/JavaScriptCore:

It used to be that the main thing that determined what a Value did was the opcode. The
Opcode was how you knew what subclass of Value you had. The opcode told you what the Value
actually did. This change replaces Opcode with Kind, which is a tuple of opcode and other
stuff.

Opcodes are great, and that's how most compilers work. But opcodes are one-dimensional. Here
is how this manifests. Say you have an opcode, like Load. You will be happy if your IR has
one Load opcode. But then, you might add Load8S/Load8Z/Load16S/Load16Z opcodes, as we have
done in B3. B3 has one dimension of Load opcodes, which determines something like the C type
of the load. But in the very near future, we will want to add two more dimensions to Loads:

  • A flag to say if the load traps.
  • A flag to say if the load has acquire semantics.


Mapping these three dimensions (type, trap, acquire) onto the one-dimensional Opcode space
would create mayham: Load8S, Load8STrap, Load8SAcquire, Load8STrapAcquire, Load8Z,
Load8ZTrap, etc.

This happens in other parts of the IR. For example, we have a dimension of arithmetic
operations: add, sub, mul, div, mod, etc. Then we have the chill flag. But since opcodes
are one-dimensional, that means having ChillDiv and ChillMod, and tons of places in the
compiler that case on both Div and ChillDiv, or case on both Mod and ChillMod, since they
are only interested in the kind of arithmetic being done and not the chillness.

Though the examples all involve bits (chill or not, trapping or not, etc), I can imagine
other properties that behave more like small enums, like if we fill out more memory ordering
modes other than just "acquire? yes/no". There will eventually have to be something like a
std::memory_order associated with memory accesses.

One approach to this problem is to have a Value subclass that contains fields with the meta
data. I don't like this for two reasons:

  • In bug 162688, I want to make trapping memory accesses have stackmaps. This means that a trapping memory access would have a different Value subclass than a non-trapping memory access. So, this meta-data needs to channel into ValueType::accepts(). Currently that takes Opcode and nothing else.


  • Compiler IRs are all about making common tasks easy. If it becomes commonplace for opcodes to require a custom Value subclass just for a bit then that's not very easy.


This change addresses this problem by making the compiler pass around Kinds rather than
Opcodes. A Kind contains an Opcode as well as any number of opcode-specific bits. This
change demonstrates how Kind should be used by converting chillness to it. Kind has
hasIsChill(), isChill(), and setIsChill() methods. hasIsChill() is true only for Div and
Mod. setIsChill() asserts if !hasIsChill(). If you want to create a Chill Div, you say
chill(Div). IR dumps will print it like this:

Int32 @38 = Div<Chill>(@36, @37, DFG:@24, ControlDependent)


Where "Div<Chill>" is how a Kind that hasExtraBits() dumps itself. If a Kind does not
hasExtraBits() (the normal case) then it dumps like a normal Opcode (without the "<>").

I replaced many uses of Opcode with Kind. New code has to be mindful that Opcode may not be
the right way to summarize what a value does, and so in many cases it's better to carry
around a Kind instead - especially if you will use it to stamp out new Values. Opcode is no
longer sufficient to perform a dynamic Value cast, since that code now uses Kind. ValueKey
now wants a Kind instead of an Opcode. All Value constructors now take Kind instead of
Opcode. But most opcodes don't get any extra Kind bits, and so the code that operates on
those opcodes is largely unchanged.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • b3/B3ArgumentRegValue.h:
  • b3/B3CCallValue.h:
  • b3/B3CheckValue.cpp:

(JSC::B3::CheckValue::convertToAdd):
(JSC::B3::CheckValue::CheckValue):

  • b3/B3CheckValue.h:

(JSC::B3::CheckValue::accepts):

  • b3/B3Const32Value.h:
  • b3/B3Const64Value.h:
  • b3/B3ConstDoubleValue.h:
  • b3/B3ConstFloatValue.h:
  • b3/B3FenceValue.h:
  • b3/B3Kind.cpp: Added.

(JSC::B3::Kind::dump):

  • b3/B3Kind.h: Added.

(JSC::B3::Kind::Kind):
(JSC::B3::Kind::opcode):
(JSC::B3::Kind::setOpcode):
(JSC::B3::Kind::hasExtraBits):
(JSC::B3::Kind::hasIsChill):
(JSC::B3::Kind::isChill):
(JSC::B3::Kind::setIsChill):
(JSC::B3::Kind::operator==):
(JSC::B3::Kind::operator!=):
(JSC::B3::Kind::hash):
(JSC::B3::Kind::isHashTableDeletedValue):
(JSC::B3::chill):
(JSC::B3::KindHash::hash):
(JSC::B3::KindHash::equal):

  • b3/B3LowerMacros.cpp:
  • b3/B3LowerToAir.cpp:

(JSC::B3::Air::LowerToAir::lower):

  • b3/B3MemoryValue.h:
  • b3/B3Opcode.cpp:

(WTF::printInternal):

  • b3/B3Opcode.h:
  • b3/B3PatchpointValue.h:

(JSC::B3::PatchpointValue::accepts):

  • b3/B3ReduceStrength.cpp:
  • b3/B3SlotBaseValue.h:
  • b3/B3StackmapValue.cpp:

(JSC::B3::StackmapValue::StackmapValue):

  • b3/B3StackmapValue.h:
  • b3/B3SwitchValue.h:

(JSC::B3::SwitchValue::accepts):

  • b3/B3UpsilonValue.h:
  • b3/B3Validate.cpp:
  • b3/B3Value.cpp:

(JSC::B3::Value::dump):
(JSC::B3::Value::deepDump):
(JSC::B3::Value::invertedCompare):
(JSC::B3::Value::effects):
(JSC::B3::Value::key):
(JSC::B3::Value::typeFor):
(JSC::B3::Value::badKind):
(JSC::B3::Value::badOpcode): Deleted.

  • b3/B3Value.h:
  • b3/B3ValueInlines.h:

(JSC::B3::Value::as):

  • b3/B3ValueKey.cpp:

(JSC::B3::ValueKey::dump):
(JSC::B3::ValueKey::materialize):

  • b3/B3ValueKey.h:

(JSC::B3::ValueKey::ValueKey):
(JSC::B3::ValueKey::kind):
(JSC::B3::ValueKey::opcode):
(JSC::B3::ValueKey::operator==):
(JSC::B3::ValueKey::hash):

  • b3/B3ValueKeyInlines.h:

(JSC::B3::ValueKey::ValueKey):

  • b3/B3VariableValue.cpp:

(JSC::B3::VariableValue::VariableValue):

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

(JSC::B3::testChillDiv):
(JSC::B3::testChillDivTwice):
(JSC::B3::testChillDiv64):
(JSC::B3::testChillModArg):
(JSC::B3::testChillModArgs):
(JSC::B3::testChillModImms):
(JSC::B3::testChillModArg32):
(JSC::B3::testChillModArgs32):
(JSC::B3::testChillModImms32):
(JSC::B3::testSwitchChillDiv):
(JSC::B3::testEntrySwitchWithCommonPaths):
(JSC::B3::testEntrySwitchWithCommonPathsAndNonTrivialEntrypoint):

  • ftl/FTLOutput.cpp:

(JSC::FTL::Output::chillDiv):
(JSC::FTL::Output::chillMod):

Websites/webkit.org:


Updated the documentation to talk about Kind and the isChill bit, and to remove
ChillDiv/ChillMod.

  • docs/b3/intermediate-representation.html:
11:44 Changeset [206594] by sbarati@apple.com
  • 3 edits in trunk/LayoutTests

parser-syntax-check should display the output of syntax errors
https://bugs.webkit.org/show_bug.cgi?id=162738

Reviewed by Joseph Pecoraro.

It's good to have this test display the syntax error messages
when we're expecting a syntax error because it will both allow
us to track changes in error messages and verify that we get
the expected error message when writing new tests.

  • js/parser-syntax-check-expected.txt:
  • js/script-tests/parser-syntax-check.js:

(runTest):

11:19 Changeset [206593] by achristensen@apple.com
  • 4 edits in trunk

URLParser should fail to parse unclosed IPv6 addresses
https://bugs.webkit.org/show_bug.cgi?id=162715

Reviewed by Tim Horton.

Source/WebCore:

Covered by new API tests.

  • platform/URLParser.cpp:

(WebCore::URLParser::parseHostAndPort):

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

11:18 Changeset [206592] by achristensen@apple.com
  • 5 edits in trunk

URLParser should ignore tabs at all possible locations
https://bugs.webkit.org/show_bug.cgi?id=162711

Reviewed by Tim Horton.

Source/WebCore:

The URL spec says to remove all tabs and newlines before parsing a URL.
To reduce passes on the URL and copies of data, I chose to just ignore them every time I increment the iterator.
This is fragile, but faster. It can be completely tested, though. That is what this patch does.

Covered by an addition to the API tests that tries inserting one tab at each location of each test.

  • platform/URLParser.cpp:

(WebCore::URLParser::advance):
(WebCore::URLParser::isWindowsDriveLetter):
(WebCore::URLParser::appendWindowsDriveLetter):
(WebCore::URLParser::isPercentEncodedDot):
(WebCore::URLParser::isSingleDotPathSegment):
(WebCore::URLParser::isDoubleDotPathSegment):
(WebCore::URLParser::consumeSingleDotPathSegment):
(WebCore::URLParser::consumeDoubleDotPathSegment):
(WebCore::URLParser::checkLocalhostCodePoint):
(WebCore::URLParser::isAtLocalhost):
(WebCore::URLParser::isLocalhost):
(WebCore::URLParser::URLParser):
(WebCore::URLParser::parse):
(WebCore::isPercentEncodedDot): Deleted.
(WebCore::isSingleDotPathSegment): Deleted.
(WebCore::isDoubleDotPathSegment): Deleted.
(WebCore::consumeSingleDotPathSegment): Deleted.
(WebCore::consumeDoubleDotPathSegment): Deleted.

  • platform/URLParser.h:

(WebCore::URLParser::advance):

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::ExpectedParts::isInvalid):
(TestWebKitAPI::checkURL):
(TestWebKitAPI::TEST_F):

11:09 Changeset [206591] by simon.fraser@apple.com
  • 3 edits
    2 adds in trunk

Fix hit testing on display:block <svg> elements
https://bugs.webkit.org/show_bug.cgi?id=162717
rdar://problem/23261130

Reviewed by Zalan Bujtas.
Source/WebCore:

RenderSVGRoot::nodeAtPoint() needs to test for both the HitTestBlockBackground and
HitTestChildBlockBackground phases, since we only get the HitTestChildBlockBackground
phase when the <svg> is a block. This is similar to code in RenderTable::nodeAtPoint(),
and matches Blink code.

This fixes the point dragging on http://anthonydugois.com/svg-path-builder/.

Test: svg/hittest/block-svg.html

  • rendering/svg/RenderSVGRoot.cpp:

(WebCore::RenderSVGRoot::nodeAtPoint):

LayoutTests:

Test hit testing on inline and block <svg> elements.

  • svg/hittest/block-svg-expected.txt: Added.
  • svg/hittest/block-svg.html: Added.
11:03 Changeset [206590] by sbarati@apple.com
  • 7 edits in trunk

We don't properly propagate non-simple-parameter-list when parsing a setter
https://bugs.webkit.org/show_bug.cgi?id=160483

Reviewed by Joseph Pecoraro.

JSTests:

  • test262.yaml:

Source/JavaScriptCore:

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseFunctionParameters):

LayoutTests:

  • js/parser-syntax-check-expected.txt:
  • js/script-tests/parser-syntax-check.js:
10:53 Changeset [206589] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebCore

Merge r206556. rdar://problem/28524440

10:41 Changeset [206588] by cdumez@apple.com
  • 4 edits
    2 adds in trunk

Assigning non-numeric to input.minlength should set minlength to 0
https://bugs.webkit.org/show_bug.cgi?id=162727

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Import test coverage.

  • web-platform-tests/html/semantics/forms/the-input-element/minlength-expected.txt: Added.
  • web-platform-tests/html/semantics/forms/the-input-element/minlength.html: Added.

Source/WebCore:

There was a typo when we were updating the m_minLength member from the 'min'
content attribute instead of the 'minlength' one.

Test: imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/minlength.html.

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::parseAttribute):

10:18 Changeset [206587] by cdumez@apple.com
  • 4 edits in trunk/Source/WebCore

[Web IDL] Fix overload resolution when the distinguishing argument is a Window
https://bugs.webkit.org/show_bug.cgi?id=162728

Reviewed by Ryosuke Niwa.

Fix overload resolution when the distinguishing argument is a Window.
Window is special because we could have a window or a proxy to the
Window (JSDOMWindowShell).

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateOverloadedFunctionOrConstructor):

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

(WebCore::jsTestObjPrototypeFunctionOverloadedMethod9):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod10):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod11):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod12):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod13):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod):

  • bindings/scripts/test/TestObj.idl:
10:08 Changeset [206586] by annulen@yandex.ru
  • 2 edits in trunk/Source/WebKit/win

Fixed compilation of PluginView when NETSCAPE_PLUGIN_API is disabled
https://bugs.webkit.org/show_bug.cgi?id=162725

Reviewed by Alex Christensen.

Fix for r206460, streamDidFinishLoading() does not override anything
when NETSCAPE_PLUGIN_API is disabled because PlugivView does not
inherit PluginStreamClient in this case.

  • Plugins/PluginView.h:
10:08 Changeset [206585] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

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

Caused stress/op_*.js.ftl-no-cjit tests to time out (Requested
by ryanhaddad on #webkit).

Reverted changeset:

"Re-enable StringView life-cycle checking."
https://bugs.webkit.org/show_bug.cgi?id=160384
http://trac.webkit.org/changeset/206563

08:47 Changeset [206584] by pvollan@apple.com
  • 2 edits in trunk/Source/WebCore

[Win] Compile fix.
https://bugs.webkit.org/show_bug.cgi?id=162262

Reviewed by Anders Carlsson.

If CoreText.h is included, we will get redefinition compile errors on some older SDK
versions.

  • platform/spi/win/CoreTextSPIWin.h:
08:30 Changeset [206583] by carlosgc@webkit.org
  • 18 edits in trunk/Source/WebKit2

NetworkSession: HTTP authentication doesn't work if PROTECTION_SPACE_AUTH_CALLBACK is not enabled
https://bugs.webkit.org/show_bug.cgi?id=162724

Reviewed by Alex Christensen.

NetworkLoad always expects continueCanAuthenticateAgainstProtectionSpace() to be called to complete the
authentication challenge, which is only defined when PROTECTION_SPACE_AUTH_CALLBACK is enabled.
I've added missing #ifdefs for PROTECTION_SPACE_AUTH_CALLBACK.

  • NetworkProcess/Downloads/DownloadManager.cpp:

(WebKit::DownloadManager::continueCanAuthenticateAgainstProtectionSpace):

  • NetworkProcess/Downloads/DownloadManager.h:
  • NetworkProcess/Downloads/PendingDownload.cpp:

(WebKit::PendingDownload::continueCanAuthenticateAgainstProtectionSpace):

  • NetworkProcess/Downloads/PendingDownload.h:
  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::~NetworkLoad):
(WebKit::NetworkLoad::didReceiveChallenge): Call completeAuthenticationChallenge() instead of
canAuthenticateAgainstProtectionSpaceAsync() when PROTECTION_SPACE_AUTH_CALLBACK is not enabled.
(WebKit::NetworkLoad::completeAuthenticationChallenge): Moved common code to complete the authentication
challenge from continueCanAuthenticateAgainstProtectionSpace().
(WebKit::NetworkLoad::continueCanAuthenticateAgainstProtectionSpace): Call completeAuthenticationChallenge().
(WebKit::NetworkLoad::canAuthenticateAgainstProtectionSpaceAsync):

  • NetworkProcess/NetworkLoad.h:
  • NetworkProcess/NetworkLoadClient.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::continueCanAuthenticateAgainstProtectionSpaceDownload):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::canAuthenticateAgainstProtectionSpaceAsync):
(WebKit::NetworkResourceLoader::continueCanAuthenticateAgainstProtectionSpace):

  • NetworkProcess/NetworkResourceLoader.h:
  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:
  • Shared/Authentication/AuthenticationManager.h:
  • UIProcess/Downloads/DownloadProxy.cpp:

(WebKit::DownloadProxy::canAuthenticateAgainstProtectionSpace):

  • UIProcess/Downloads/DownloadProxy.h:
  • UIProcess/Downloads/DownloadProxy.messages.in:
08:28 Changeset [206582] by carlosgc@webkit.org
  • 2 edits in trunk/Source/WebCore

[SOUP] Remove WebCoreSynchronousLoader from ResourceHandleSoup
https://bugs.webkit.org/show_bug.cgi?id=162723

Reviewed by Sergio Villar Senin.

Since all soup based ports switched to NetworkProcess this is dead code.

  • platform/network/soup/ResourceHandleSoup.cpp:

(WebCore::ResourceHandle::platformLoadResourceSynchronously):

08:13 Changeset [206581] by n_wang@apple.com
  • 7 edits
    2 adds in trunk

AX: Meter: [Mac] Content in label element should be used as AXTitle or AXDescription
https://bugs.webkit.org/show_bug.cgi?id=162586

Reviewed by Chris Fleizach.

Source/WebCore:

Exposed the label element's text as AXDescription for meter elements.
Also refactored the code for fetching the label element's text and taken care of
the case where aria-label and aria-labelledby attributes are used on label elements.

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

  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::isLabelable):
(WebCore::AccessibilityNodeObject::textForLabelElement):
(WebCore::AccessibilityNodeObject::titleElementText):
(WebCore::AccessibilityNodeObject::title):
(WebCore::AccessibilityNodeObject::usesAltTagForTextComputation): Deleted.

  • accessibility/AccessibilityNodeObject.h:
  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::exposesTitleUIElement):

LayoutTests:

  • accessibility/mac/aria-label-on-label-element-expected.txt:
  • accessibility/mac/aria-label-on-label-element.html:
  • accessibility/mac/meter-with-label-element-expected.txt: Added.
  • accessibility/mac/meter-with-label-element.html: Added.
08:12 Changeset [206580] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

Clang 3.9 reports a compilation warning about ENABLE_EXCEPTION_SCOPE_VERIFICATION
https://bugs.webkit.org/show_bug.cgi?id=162718

Patch by Fujii Hironori <Hironori.Fujii@sony.com> on 2016-09-29
Reviewed by Alex Christensen.

Clang 3.9 reports a following compilation warning:

Source/JavaScriptCore/runtime/VM.h:656:5: warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]

  • wtf/Platform.h: Changed the definition of ENABLE_EXCEPTION_SCOPE_VERIFICATION not to use 'defined'.
05:48 Changeset [206579] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

[Streams API] Improve ReadableStreamDefaultController.h/cpp
https://bugs.webkit.org/show_bug.cgi?id=160293

Patch by Romain Bellessort <romain.bellessort@crf.canon.fr> on 2016-09-29
Reviewed by Youenn Fablet.

Various small improvements in ReadableStreamDefaultController code (helper methods and asserts).

No change in behaviour.

  • bindings/js/ReadableStreamDefaultController.cpp:

(WebCore::ReadableStreamDefaultController::isControlledReadableStreamLocked): Added an assert and updated based
on new helper methods.

  • bindings/js/ReadableStreamDefaultController.h:

(WebCore::ReadableStreamDefaultController::close): Updated based on new helper methods.
(WebCore::ReadableStreamDefaultController::error): Updated based on new helper methods.
(WebCore::ReadableStreamDefaultController::enqueue): Added an assert and updated based on new helper methods.
(WebCore::ReadableStreamDefaultController::jsController): New helper method.
(WebCore::ReadableStreamDefaultController::globalObject): Return reference instead of pointer.
(WebCore::ReadableStreamDefaultController::globalExec): New helper; return reference after performing an assert.
(WebCore::ReadableStreamDefaultController::error<String>): Added an assert and updated based on new helper methods.

03:28 Changeset [206578] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[EFL] Add search button to url bar in MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=162716

Patch by Gyuyoung Kim <gyuyoung.kim@navercorp.com> on 2016-09-29
Reviewed by Michael Catanzaro.

As a bug title, it would be good to add a search button to URL bar.
Additionally this patch changes color of button to recognize the buttons.

  • MiniBrowser/efl/main.c:

(_search_button_clicked_cb):
(_create_toolbar_button):
(window_create):
(create_toolbar_button): Deleted.

02:52 Changeset [206577] by jond@apple.com
  • 2 edits in trunk/Source/WebCore

Added Beacon API to the Feature Status page.
https://bugs.webkit.org/show_bug.cgi?id=162630

Reviewed by Alex Christensen.

  • features.json:
02:31 WebKitGTK/2.14.x edited by berto@igalia.com
(diff)

09/28/16:

21:44 Changeset [206576] by cdumez@apple.com
  • 5 edits
    9 adds in trunk/LayoutTests

Import touch-events web-platform-tests
https://bugs.webkit.org/show_bug.cgi?id=162713

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Import touch-events web-platform-tests.

  • web-platform-tests/touch-events/OWNERS: Added.
  • web-platform-tests/touch-events/create-touch-touchlist.html: Added.
  • web-platform-tests/touch-events/historical.html: Added.
  • web-platform-tests/touch-events/multi-touch-interactions.js: Added.

(debug_print):
(check_list_subset_of_two_targetlists):
(is_at_least_one_item_in_targetlist):
(check_no_item_in_targetlist):
(check_targets):
(run.):
(run):

  • web-platform-tests/touch-events/touch-globaleventhandler-interface.html: Added.
  • web-platform-tests/touch-events/touch-support.js: Added.

(check_Touch_object):
(check_TouchEvent):

  • web-platform-tests/touch-events/touch-touchevent-constructor.html: Added.
  • web-platform-tests/touch-events/w3c-import.log: Added.

LayoutTests:

Skip on all platforms that do not have Touch enabled.

  • platform/ios-simulator/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/win/TestExpectations:
20:58 Changeset [206575] by cdumez@apple.com
  • 6 edits in trunk/Source/WebCore

Drop first 'state' parameter to JSDOMWindow::toWrapped() / JSEventTarget::toWrapped()
https://bugs.webkit.org/show_bug.cgi?id=162709

Reviewed by Alex Christensen.

Drop first 'state' parameter to JSDOMWindow::toWrapped() / JSEventTarget::toWrapped()
as it is unused. This is the quickest way to allow DOMWindow / EventTarget members
in IDL dictionaries. This is because the generated bindings code relies on
convertWrapperType() in JSDOMConvert.h which calls toWrapped() with a single
parameter. Right now, the only type that requires an ExecState for its toWrapped()
is XPathNSResolver (which should likely be a callback interface rather than a
regular interface).

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::toWrapped):

  • bindings/js/JSDictionary.cpp:

(WebCore::JSDictionary::convertValue):

  • bindings/js/JSEventTargetCustom.cpp:

(WebCore::JSEventTarget::toWrapped):

  • bindings/js/JSMessageEventCustom.cpp:

(WebCore::handleInitMessageEvent):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader):
(JSValueToNative):

18:36 Changeset [206574] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Marking fast/images/object-image.html as crashing.
https://bugs.webkit.org/show_bug.cgi?id=162696

Unreviewed test gardening.

18:29 Changeset [206573] by sbarati@apple.com
  • 4 edits
    1 add in trunk

stringProtoFuncRepeatCharacter will return null when it should not
https://bugs.webkit.org/show_bug.cgi?id=161944

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/pad-start-calls-repeat-character-with-double.js: Added.

(logLinesWithContext):

Source/JavaScriptCore:

stringProtoFuncRepeatCharacter was expecting its second argument
to always be a boxed integer. This is not correct. The DFG may decide
to represent a particular value as a double instead of integer. This
function needs to have correct behavior when its second argument is
a boxed double. I also added an assertion stating that the second argument
is always a number. We can guarantee this since it's only called from
builtins.

  • runtime/StringPrototype.cpp:

(JSC::stringProtoFuncRepeatCharacter):

18:14 Changeset [206572] by timothy_horton@apple.com
  • 2 edits in trunk/Tools

API test WebKit2.AutoLayoutIntegration is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=160284

Reviewed by Dan Bernstein.

  • TestWebKitAPI/Tests/WebKit2Cocoa/AutoLayoutIntegration.mm:

(-[AutoLayoutWKWebView load:withWidth:expectingContentSize:resettingWidth:]):
(-[AutoLayoutWKWebView beginLayoutAtMinimumWidth:andExpectContentSizeChange:]):
(-[AutoLayoutWKWebView waitForContentSizeChangeResettingWidth:]):
(-[AutoLayoutWKWebView layoutAtMinimumWidth:andExpectContentSizeChange:resettingWidth:]):
(-[AutoLayoutWKWebView invalidateIntrinsicContentSize]):
(TEST):
Make the autolayout tests a bit more flexible regarding the ordering of
invalidateIntrinsicContentSize, to avoid a race between the load
completing and the invalidation.

Also, move the newly added test to use its own WKWebView, since once in a
while we get a first layout notification from the previous page, causing the test to fail.

Un-disable the tests, which now run without any flakes for me with quite a few iterations.

17:58 Changeset [206571] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.2.14.0.2

New tag.

17:54 Changeset [206570] by bshafiei@apple.com
  • 4 edits in branches/safari-602.2.14.0-branch/Source/WebCore

Merge r206551. rdar://problem/28526639

17:54 Changeset [206569] by bshafiei@apple.com
  • 24 edits
    2 adds in branches/safari-602.2.14.0-branch

Merge r206527. rdar://problem/28499358

17:54 Changeset [206568] by bshafiei@apple.com
  • 2 edits in branches/safari-602.2.14.0-branch/Source/WebCore

Merge r206520. rdar://problem/28412512

17:54 Changeset [206567] by bshafiei@apple.com
  • 11 edits
    2 adds in branches/safari-602.2.14.0-branch

Merge r206518. rdar://problem/28505032

17:54 Changeset [206566] by bshafiei@apple.com
  • 4 edits in branches/safari-602.2.14.0-branch/Tools

Merge r206335. rdar://problem/28499358

17:54 Changeset [206565] by bshafiei@apple.com
  • 9 edits
    2 adds in branches/safari-602.2.14.0-branch

Merge r206135. rdar://problem/28499358

17:37 Changeset [206564] by bshafiei@apple.com
  • 5 edits in branches/safari-602.2.14.0-branch/Source

Versioning.

17:03 Changeset [206563] by mark.lam@apple.com
  • 2 edits in trunk/Source/WTF

Re-enable StringView life-cycle checking.
https://bugs.webkit.org/show_bug.cgi?id=160384
<rdar://problem/28479434>

Reviewed by Saam Barati.

  • wtf/text/StringView.h:
16:51 Changeset [206562] by cdumez@apple.com
  • 5 edits in trunk

Log console messages when the anchor download attribute is ignored
https://bugs.webkit.org/show_bug.cgi?id=162703

Reviewed by Alex Christensen.

Log console messages when the anchor download attribute is ignored so
that the developer can better understand what's happening.

Source/WebCore:

No new tests, rebaselined existing tests.

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::handleClick):

LayoutTests:

  • fast/dom/HTMLAnchorElement/anchor-download-synthetic-click-expected.txt:
  • http/tests/security/anchor-download-block-crossorigin-expected.txt:
16:49 Changeset [206561] by cdumez@apple.com
  • 18 edits
    2 adds in trunk

Add support for DOMTokenList.supports()
https://bugs.webkit.org/show_bug.cgi?id=162659

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C tests now that more checks are passing.

  • web-platform-tests/dom/interfaces-expected.txt:
  • web-platform-tests/html/semantics/document-metadata/the-link-element/link-rellist-expected.txt:

Source/WebCore:

Add support for DOMTokenList.supports():

Firefox and Chrome already recently implemented it (Chrome since
version 50 and Firefox since version 49).

Test: fast/dom/DOMTokenList-supports.html

  • dom/SecurityContext.cpp:

(WebCore::SecurityContext::isSupportedSandboxPolicy):
(WebCore::SecurityContext::enforceSandboxFlags): Deleted.

  • dom/SecurityContext.h:
  • html/DOMTokenList.cpp:

(WebCore::DOMTokenList::DOMTokenList):
(WebCore::DOMTokenList::supports):
(WebCore::DOMTokenList::replace): Deleted.

  • html/DOMTokenList.h:

(WebCore::DOMTokenList::DOMTokenList):

  • html/DOMTokenList.idl:
  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::parseAttribute):
(WebCore::HTMLAnchorElement::relList):

  • html/HTMLAnchorElement.idl:
  • html/HTMLAreaElement.idl:
  • html/HTMLIFrameElement.cpp:

(WebCore::HTMLIFrameElement::sandbox):

  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::relList):

  • html/HTMLTableCellElement.idl:
  • html/LinkRelAttribute.cpp:

(WebCore::LinkRelAttribute::isSupported):
(WebCore::LinkRelAttribute::LinkRelAttribute): Deleted.

  • html/LinkRelAttribute.h:

LayoutTests:

Add layout test coverage. Our pass rate is identical to Firefox 49,
everything passes except HTMLElement.dropzone. Chrome 53's pass rate
is lower because relList is not a DOMTokenList on anchor / area,
they do not support HTMLElement.dropzone and their
DOMTokenList.supports() is case-sensitive.

  • fast/dom/DOMTokenList-supports-expected.txt: Added.
  • fast/dom/DOMTokenList-supports.html: Added.
16:34 Changeset [206560] by rniwa@webkit.org
  • 16 edits in trunk

DOMTokenList’s value and stringifier should not return parsed tokens
https://bugs.webkit.org/show_bug.cgi?id=161076

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

Rebaselined tests that are now passing.

  • web-platform-tests/dom/lists/DOMTokenList-stringifier-expected.txt:
  • web-platform-tests/dom/lists/DOMTokenList-value-expected.txt:
  • web-platform-tests/dom/nodes/Element-classlist-expected.txt:

Source/WebCore:

Updated our implementation of DOMTokenList.prototype.value and its toString function
to match the latest DOM specification: https://dom.spec.whatwg.org/#interface-domtokenlist

"value" attribute, on getting, runs its serialize steps, which simply gets the attribute value.
On setting, it sets the attribute value with the given value.

The stringification behavior returns the same serialize steps as "value" attribute on getting.

This change simplifies our implementation of DOMTokenList and removes the need for m_cachedValue,
which has been removed in this patch.

No new tests since existing tests cover this.

  • html/DOMTokenList.cpp:

(WebCore::DOMTokenList::value): Just call getAttribute.
(WebCore::DOMTokenList::setValue): Just call setAttribute.
(WebCore::DOMTokenList::updateTokensFromAttributeValue):
(WebCore::DOMTokenList::associatedAttributeValueChanged):
(WebCore::DOMTokenList::updateAssociatedAttributeFromTokens): Moved the code to update the tokens
from from the attribute value. This is the "update steps".

  • html/DOMTokenList.h:

LayoutTests:

Added more test cases and rebaselined tests. Most of changes are due to the change that DOMTokenList's value
and stringifier now returns the original attribute value with extra whitespaces.

  • fast/dom/HTMLLinkElement/sizes-setter-expected.txt:
  • fast/dom/HTMLLinkElement/sizes-setter.html:
  • fast/dom/HTMLOutputElement/dom-settable-token-list-expected.txt:
  • fast/dom/HTMLOutputElement/htmloutputelement-expected.txt:
  • fast/dom/HTMLOutputElement/htmloutputelement.html:
  • fast/dom/HTMLOutputElement/script-tests/dom-settable-token-list.js:
  • fast/frames/sandbox-attribute-expected.txt:
  • fast/frames/sandbox-attribute.html:
16:22 Changeset [206559] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Marking fast/images/animated-gif-restored-from-bfcache.html as flaky on mac-wk2 debug.
https://bugs.webkit.org/show_bug.cgi?id=162510

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
16:17 Changeset [206558] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Mark fast/images/pdf-as-image-too-big.html as crashing.
https://bugs.webkit.org/show_bug.cgi?id=162696

Unreviewed test gardening.

15:32 Changeset [206557] by bshafiei@apple.com
  • 4 edits in branches/safari-602-branch/Source/WebCore

Merge r206551. rdar://problem/28526639

15:13 Changeset [206556] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

CRASH at WebCore::CDMSessionAVStreamSession::update + 950
https://bugs.webkit.org/show_bug.cgi?id=162701

Reviewed by Beth Dakin.

If the SourceBuffer backing a <video> element is removed before CDMSessionAVStreamSession::update() gets
a chance to run, the protectedSourceBuffer will be null. Just bail early and indicate an error.

  • platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm:

(WebCore::CDMSessionAVStreamSession::update):

14:55 Changeset [206555] by fpizlo@apple.com
  • 60 edits
    4 adds in trunk/Source

The write barrier should be down with TSO
https://bugs.webkit.org/show_bug.cgi?id=162316

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

This makes our write barrier behave correctly when it races with the collector. The
collector wants to do this when visiting:

object->cellState = black
visit(object)


The mutator wants to do this when storing:

object->property = newValue
if (object->cellState == black)

remember(object)


Prior to this change, this didn't work right because the compiler would sometimes place
barriers before the store to the property and because the mutator did not have adequate
fences.

Prior to this change, the DFG and FTL would emit this:

if (object->cellState == black)

remember(object)

object->property = newValue


Which is wrong, because the object could start being scanned just after the cellState
check, at which point the store would be lost. We need to confirm that the state was not
black *after* the store! This change was harder than you'd expect: placing the barrier
after the store broke B3's ability to do its super crazy ninja CSE on some store-load
redundancies. Because the B3 CSE has some moves that the DFG CSE lacks, the DFG CSE's
ability to ignore barriers didn't help. I fixed this by having the FTL convey precise
heap ranges for the patchpoint corresponding to the barrier slow path. It reads the world
(because of the store-load fence) and it writes only cellState (because the B3 heap ranges
don't have any way to represent any of the GC's other state, which means that B3 does not
have to worry about aliasing with any of that).

The collector already uses a store-load fence on x86 just after setting the cellState and
before visiting the object. The mutator needs to do the same. But we cannot put a
store-load fence of any kind before store barriers, because that causes enormous slow
downs. In the worst case, Octane/richards slowed down by 90%! That's crazy! However, the
overall slow downs were small enough (0-15% on benchmark suite aggregates) that it would be
reasonable if the slow down only happened while the GC was running. Then, the concurrent GC
would lift throughput-while-collecting from 0% of peak to 85% of peak. This changes the
barrier so that it looks like this:

if (object->cellState <= heap.sneakyBlackThreshold)

slowPath(object)


Where sneakyBlackThreshold is the normal blackThreshold when we're not collecting, or a
tautoligical threshold (that makes everything look black) when we are collecting. This
turns out to not be any more expensive than the barrier in tip of tree when the GC is not
running, or a 0-15% slow-down when it is "running". (Of course we don't run the GC
concurrently yet. I still have more work to do.) The slowPath() does some extra work to
check if we are concurrently collecting; if so, it does a fence and rechecks if the object
really did need that barrier.

This also reintroduces elimination of redundant store barriers, which was lost in the last
store barrier change. We can only do it when there is no possibility of GC, exit, or
exceptions between the two store barriers. We could remove the exit/exception limitation if
we taught OSR exit how to buffer store barriers, which is an insane thing to do considering
that I've never been able to detect a win from redundant store barrier elimination. I just
want us to have it for stupidly obvious situations, like a tight sequence of stores to the
same object. This same optimization also sometimes strength-reduces the store barrier so
that it uses a constant black threshold rather than the sneaky one, thereby saving one
load.

Even with all of those optimizations, I still had problems with barrier cost. I found that one
of the benchmarks that was being hit particularly hard was JetStream/regexp-2010. Fortunately
that benchmark does most of its barriers in a tight C++ loop in RegExpMatchesArray.h. When we
know what we're doing, we can defer GC around a bunch of object initializations and then remove
all of the barriers between any of the objects allocated within the deferral. Unfortunately,
our GC deferral mechanism isn't really performant enough to make this be a worthwhile
optimization. The most efficient version of such an optimization that I could come up with was
to have a DeferralContext object that houses a boolean that is false by default, but the GC
writes true into it if it would have wanted to GC. You thread a pointer to the deferralContext
through all of your allocations. This kind of mechanism has the overhead of a zero
initialization on the stack on entry and a zero check on exit. This is probably even efficient
enough that we could start thinking about having the DFG use it, for example if we found a
bounded-time section of code with a lot of barriers and entry/exit sites that aren't totally
wacky. This optimization took this patch from 0.68% JetStream regressed to neutral, according
to my latest data.

Finally, an earlier version of this change put the store-load fence in B3 IR, so I ended up
adding FTLOutput support for it and AbstractHeapRepository magic for decorating the heaps.
I think we might as well keep that, it'll be useful.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/MacroAssembler.h:

(JSC::MacroAssembler::branch32):

  • assembler/MacroAssemblerX86_64.h:

(JSC::MacroAssemblerX86_64::branch32):
(JSC::MacroAssemblerX86_64::branch64): Deleted.

  • bytecode/PolymorphicAccess.cpp:

(JSC::AccessCase::generateImpl):

  • dfg/DFGAbstractHeap.h:
  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGClobbersExitState.cpp:

(JSC::DFG::clobbersExitState):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGMayExit.cpp:
  • dfg/DFGNode.h:

(JSC::DFG::Node::isStoreBarrier):

  • dfg/DFGNodeType.h:
  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::compileInThreadImpl):

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

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileStoreBarrier):
(JSC::DFG::SpeculativeJIT::storeToWriteBarrierBuffer): Deleted.
(JSC::DFG::SpeculativeJIT::writeBarrier): Deleted.

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::compileBaseValueStoreBarrier): Deleted.
(JSC::DFG::SpeculativeJIT::writeBarrier): Deleted.

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::compileBaseValueStoreBarrier): Deleted.
(JSC::DFG::SpeculativeJIT::writeBarrier): Deleted.

  • dfg/DFGStoreBarrierClusteringPhase.cpp: Added.

(JSC::DFG::performStoreBarrierClustering):

  • dfg/DFGStoreBarrierClusteringPhase.h: Added.
  • dfg/DFGStoreBarrierInsertionPhase.cpp:
  • dfg/DFGStoreBarrierInsertionPhase.h:
  • ftl/FTLAbstractHeap.h:

(JSC::FTL::AbsoluteAbstractHeap::at):
(JSC::FTL::AbsoluteAbstractHeap::operator[]):

  • ftl/FTLAbstractHeapRepository.cpp:

(JSC::FTL::AbstractHeapRepository::decorateFenceRead):
(JSC::FTL::AbstractHeapRepository::decorateFenceWrite):
(JSC::FTL::AbstractHeapRepository::computeRangesAndDecorateInstructions):

  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileStoreBarrier):
(JSC::FTL::DFG::LowerDFGToB3::storageForTransition):
(JSC::FTL::DFG::LowerDFGToB3::lazySlowPath):
(JSC::FTL::DFG::LowerDFGToB3::emitStoreBarrier):

  • ftl/FTLOutput.cpp:

(JSC::FTL::Output::fence):
(JSC::FTL::Output::absolute):

  • ftl/FTLOutput.h:
  • heap/CellState.h:

(JSC::isWithinThreshold):
(JSC::isBlack):

  • heap/Heap.cpp:

(JSC::Heap::writeBarrierSlowPath):

  • heap/Heap.h:

(JSC::Heap::barrierShouldBeFenced):
(JSC::Heap::addressOfBarrierShouldBeFenced):
(JSC::Heap::sneakyBlackThreshold):
(JSC::Heap::addressOfSneakyBlackThreshold):

  • heap/HeapInlines.h:

(JSC::Heap::writeBarrier):
(JSC::Heap::writeBarrierWithoutFence):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::jumpIfIsRememberedOrInEdenWithoutFence):
(JSC::AssemblyHelpers::sneakyJumpIfIsRememberedOrInEden):
(JSC::AssemblyHelpers::jumpIfIsRememberedOrInEden):
(JSC::AssemblyHelpers::storeBarrierStoreLoadFence):
(JSC::AssemblyHelpers::jumpIfStoreBarrierStoreLoadFenceNotNeeded):

  • jit/JITOperations.cpp:
  • jit/JITOperations.h:
  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_put_by_id):
(JSC::JIT::emitWriteBarrier):
(JSC::JIT::privateCompilePutByVal):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_put_by_id):

  • llint/LowLevelInterpreter.asm:
  • offlineasm/x86.rb:
  • runtime/Options.h:

Source/WTF:

Added clearRange(), which quickly clears a range of bits. This turned out to be useful for
a DFG optimization pass.

  • wtf/FastBitVector.cpp:

(WTF::FastBitVector::clearRange):

  • wtf/FastBitVector.h:
14:53 Changeset [206554] by achristensen@apple.com
  • 4 edits in trunk

URLParser should properly handle unexpected periods and overflows in IPv4 addresses
https://bugs.webkit.org/show_bug.cgi?id=162655

Reviewed by Geoffrey Garen.

Source/WebCore:

Covered by new API tests.

  • platform/URLParser.cpp:

(WebCore::URLParser::parseIPv4Number):
(WebCore::URLParser::parseIPv4Host):

  • platform/URLParser.h:

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

14:42 Changeset [206553] by ryanhaddad@apple.com
  • 2 edits in trunk/Tools

Disable flaky API test WebKit2.AutoLayoutIntegration.
https://bugs.webkit.org/show_bug.cgi?id=160284

Unreviewed test gardening.

  • TestWebKitAPI/Tests/WebKit2Cocoa/AutoLayoutIntegration.mm:

(TEST):

14:30 Changeset [206552] by mark.lam@apple.com
  • 2 edits in trunk/Source/WTF

Fix race condition in StringView's UnderlyingString lifecycle management.
https://bugs.webkit.org/show_bug.cgi?id=162702

Reviewed by Geoffrey Garen.

There 2 relevant functions at play:

void StringView::setUnderlyingString(const StringImpl* string)
{

UnderlyingString* underlyingString;
if (!string)

underlyingString = nullptr;

else {

std::lock_guard<StaticLock> lock(underlyingStringsMutex);
auto result = underlyingStrings().add(string, nullptr);
if (result.isNewEntry)

result.iterator->value = new UnderlyingString(*string);

else

++result.iterator->value->refCount;

underlyingString = result.iterator->value; Point P2.

}
adoptUnderlyingString(underlyingString); Point P5.

}

... and ...

void StringView::adoptUnderlyingString(UnderlyingString* underlyingString)
{

if (m_underlyingString) {

Point P0.
if (!--m_underlyingString->refCount) {

if (m_underlyingString->isValid) { Point P1.

std::lock_guard<StaticLock> lock(underlyingStringsMutex);
underlyingStrings().remove(&m_underlyingString->string); Point P3.

}
delete m_underlyingString; Point P4.

}

}
m_underlyingString = underlyingString;

}

Imagine the following scenario:

  1. Thread T1 has been using an UnderlyingString U1, and is now done with it. T1 runs up to point P1 in adoptUnderlyingString(), and is blocked waiting for the underlyingStringsMutex (which is currently being held by Thread T2).
  2. Context switch to Thread T2. T2 wants to use UnderlyingString U1, and runs up to point P2 in setUnderlyingString() and releases the underlyingStringsMutex. Note: T2 thinks it has successfully refCounted U1, and therefore U1 is safe to use.
  3. Context switch to Thread T1. T1 acquires the underlyingStringsMutex, and proceeds to remove it from the underlyingStrings() map (see Point P3). It thinks it has successfully done so and proceeds to delete U1 (see Point P4).
  4. Context switch to Thread T2. T2 proceeds to use U1 (see Point P5 in setUnderlyingString()). Note: U1 has already been freed. This is a use after free.

The fix is to acquire the underlyingStringsMutex at Point P0 in adoptUnderlyingString()
instead of after P1. This ensures that the decrementing of the UnderlyingString
refCount and its removal from the underlyingStrings() map is done as an atomic unit.

Note: If you look in StringView.cpp, you see another setUnderlyingString() which
takes a StringView otherString. This version of setUnderlyingString() can only
be called from within the same thread that created the other StringView. As a
result, here, we are guaranteed that the UnderlyingString refCount is never zero,
and there's no other threat of another thread trying to delete the UnderlyingString
while we adopt it. Hence, we don't need to acquire the underlyingStringsMutex
here.

This race condition was found when running layout tests fetch/fetch-worker-crash.html
and storage/indexeddb/modern/opendatabase-versions.html when CHECK_STRINGVIEW_LIFETIME
is enabled. This issue resulted in those tests crashing due to a use-after-free.

  • wtf/text/StringView.cpp:

(WTF::StringView::adoptUnderlyingString):
(WTF::StringView::setUnderlyingString):

14:27 Changeset [206551] by wenson_hsieh@apple.com
  • 4 edits in trunk/Source/WebCore

Some media tests are crashing due to soft-linking failures
https://bugs.webkit.org/show_bug.cgi?id=162698

Reviewed by Jer Noble.

We should be handling soft-linking failures for MRMediaRemoteSetNowPlayingVisibility gracefully. Guards these
calls with canLoad_MediaRemote_MRMediaRemoteSetParentApplication and also use the
SOFT_LINK_FUNCTION_MAY_FAIL_FOR_HEADER macro when soft linking.

  • platform/audio/mac/MediaSessionManagerMac.mm:

(WebCore::MediaSessionManagerMac::updateNowPlayingInfo):

  • platform/mac/MediaRemoteSoftLink.cpp:
  • platform/mac/MediaRemoteSoftLink.h:
14:23 Changeset [206550] by joepeck@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Improve useCodeCache Option description string.

  • runtime/Options.h:

Address late review comments and clarify description.

14:16 Changeset [206549] by achristensen@apple.com
  • 4 edits in trunk

URLParser should ignore tabs in authority
https://bugs.webkit.org/show_bug.cgi?id=162694

Reviewed by Geoffrey Garen.

Source/WebCore:

Covered by new API tests.

  • platform/URLParser.cpp:

(WebCore::URLParser::parseAuthority):

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

14:14 Changeset [206548] by achristensen@apple.com
  • 4 edits in trunk

URLParser should ignore extra slashes after scheme:// and handle a missing slash after the port
https://bugs.webkit.org/show_bug.cgi?id=162690

Reviewed by Geoffrey Garen.

Source/WebCore:

Covered by new API tests.

  • platform/URLParser.cpp:

(WebCore::URLParser::parse):

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

14:12 Changeset [206547] by achristensen@apple.com
  • 4 edits in trunk

URLParser should correctly canonicalize uppercase IPv6 addresses
https://bugs.webkit.org/show_bug.cgi?id=162680

Reviewed by Tim Horton.

Source/WebCore:

Covered by a new API test.

  • platform/URLParser.cpp:

(WebCore::URLParser::parseIPv6Host):
If there is an uppercase character in the IPv6 address part, then it is a syntax violation
because the canonicalized IPv6 address differs from the input String.

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

14:08 Changeset [206546] by cdumez@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix iOS build.

  • bindings/js/ios/TouchConstructors.cpp:
13:48 Changeset [206545] by bshafiei@apple.com
  • 24 edits
    2 adds in branches/safari-602-branch

Merge r206527. rdar://problem/28499358

13:48 Changeset [206544] by bshafiei@apple.com
  • 4 edits in branches/safari-602-branch/Tools

Merge r206335. rdar://problem/28499358

13:48 Changeset [206543] by bshafiei@apple.com
  • 9 edits
    2 adds in branches/safari-602-branch

Merge r206135. rdar://problem/28499358

13:41 Changeset [206542] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Update TestExpectations for more crashing fast/images tests.
https://bugs.webkit.org/show_bug.cgi?id=162696

Unreviewed test gardening.

13:36 Changeset [206541] by cdumez@apple.com
  • 3 edits
    2 adds in trunk

It should be possible to dispatch events on template documents
https://bugs.webkit.org/show_bug.cgi?id=162687

Reviewed by Ryosuke Niwa.

Source/WebCore:

It should be possible to dispatch events on template documents. Firefox
supports this. Chrome does not but this is likely not intentional as
Chrome generally supports dispatching events on frameless documents.

Test: fast/dom/template-document-dispatchEvent.html

  • dom/Document.cpp:

(WebCore::Document::ensureTemplateDocument):

LayoutTests:

Add layout test coverage.

  • fast/dom/template-document-dispatchEvent-expected.txt: Added.
  • fast/dom/template-document-dispatchEvent.html: Added.
13:35 Changeset [206540] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit2

WKSharedAPICast should not warn about acceptable custom context menu tag values
https://bugs.webkit.org/show_bug.cgi?id=162597
<rdar://problem/28487627>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-09-28
Reviewed by Tim Horton.

  • Shared/API/c/WKSharedAPICast.h:

(WebKit::toAPI):
(WebKit::toImpl):
Don't log an error when casting ContextMenu types if it is within
the Custom ContextMenu tag range.

13:30 Changeset [206539] by fpizlo@apple.com
  • 10 edits in trunk/Source/JavaScriptCore

Optimize B3->Air lowering of Fence on ARM
https://bugs.webkit.org/show_bug.cgi?id=162342

Reviewed by Geoffrey Garen.

This gives us comprehensive support for standalone fences on x86 and ARM. The changes are as
follows:

  • Sets in stone the rule that the heaps of a B3::Fence tell you what the fence protects. If the fence reads, it protects motion of stores. If the fence writes, it protects motion of loads. This allows us to express for example load-load fences in a portable way: on x86 they will just block B3 optimizations and emit no code, while on ARM you will get some fence.
  • Adds comprehensive support for WTF-style fences in the ARM assembler. I simplified it just a bit to match what B3, the main client, knows. There are three fences: MemoryFence, StoreFence, and LoadFence. On x86, MemoryFence is ortop while StoreFence and LoadFence emit no code. On ARM64, MemoryFence and LoadFence are dmb ish while StoreFence is dmb ishst.
  • Tests! To test this, I needed to teach the disassembler how to disassemble dmb ish and dmb ishst. I think that the canonical way to do it would be to create a group for dmb and then teach that group how to decode the operands. But I don't actually know what are all of the ways of encoding dmb, so I'd rather that unrecognized encodings fall through to the ".long blah" bailout. So, this creates explicit matching rules for "dmb ish" and "dmb ishst", which is the most conservative thing we can do.
  • assembler/ARM64Assembler.h:

(JSC::ARM64Assembler::dmbISH):
(JSC::ARM64Assembler::dmbISHST):
(JSC::ARM64Assembler::dmbSY): Deleted.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::memoryFence):
(JSC::MacroAssemblerARM64::storeFence):
(JSC::MacroAssemblerARM64::loadFence):

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::storeFence):
(JSC::MacroAssemblerX86Common::loadFence):

  • b3/B3FenceValue.h:
  • b3/B3LowerToAir.cpp:

(JSC::B3::Air::LowerToAir::lower):

  • b3/air/AirOpcode.opcodes:
  • b3/testb3.cpp:

(JSC::B3::testMemoryFence):
(JSC::B3::testStoreFence):
(JSC::B3::testLoadFence):
(JSC::B3::run):
(JSC::B3::testX86MFence): Deleted.
(JSC::B3::testX86CompilerFence): Deleted.

  • disassembler/ARM64/A64DOpcode.cpp:

(JSC::ARM64Disassembler::A64DOpcodeDmbIsh::format):
(JSC::ARM64Disassembler::A64DOpcodeDmbIshSt::format):

  • disassembler/ARM64/A64DOpcode.h:

(JSC::ARM64Disassembler::A64DOpcodeDmbIsh::opName):
(JSC::ARM64Disassembler::A64DOpcodeDmbIshSt::opName):

13:19 Changeset [206538] by dino@apple.com
  • 44 edits in trunk/Source/WebCore

Use Color references where possible
https://bugs.webkit.org/show_bug.cgi?id=162643
<rdar://problem/28506550>

Reviewed by Simon Fraser.

There were a bunch of places where we pass or use
Colors by value. As the Color class gets a bit more
complicated, it would be nice to avoid copying, so
use references where possible.

  • css/CSSGradientValue.cpp:

(WebCore::interpolate):

  • css/StyleColor.h:

(WebCore::StyleColor::getColor):
(WebCore::StyleColor::resolve):

  • css/StyleResolver.h:

(WebCore::StyleResolver::State::backgroundColor):

  • dom/Document.h:

(WebCore::Document::textColor):

  • editing/FrameSelection.cpp:

(WebCore::disappearsIntoBackground):

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::setShadow):

  • html/canvas/CanvasRenderingContext2D.h:
  • html/track/TextTrackCueGeneric.h:
  • page/PageOverlay.cpp:

(WebCore::PageOverlay::setBackgroundColor):

  • page/PageOverlay.h:
  • page/animation/CSSPropertyAnimation.cpp:

(WebCore::PropertyWrapperColor::PropertyWrapperColor):
(WebCore::PropertyWrapperMaybeInvalidColor::PropertyWrapperMaybeInvalidColor):
(WebCore::PropertyWrapperVisitedAffectedColor::PropertyWrapperVisitedAffectedColor):

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::fillRectWithRoundedHole):

  • platform/graphics/GraphicsContext.h:

(WebCore::GraphicsContext::strokeColor):
(WebCore::GraphicsContext::fillColor):

  • platform/graphics/InbandTextTrackPrivateClient.h:

(WebCore::GenericCueData::foregroundColor):
(WebCore::GenericCueData::setForegroundColor):
(WebCore::GenericCueData::backgroundColor):
(WebCore::GenericCueData::setBackgroundColor):
(WebCore::GenericCueData::highlightColor):
(WebCore::GenericCueData::setHighlightColor):

  • platform/graphics/ca/TileController.h:
  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::GraphicsContext::drawRect):
(WebCore::GraphicsContext::fillRect):
(WebCore::GraphicsContext::platformFillRoundedRect):
(WebCore::GraphicsContext::fillRectWithRoundedHole):

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::DrawFocusRingPath::color):
(WebCore::DisplayList::DrawFocusRingRects::color):
(WebCore::DisplayList::FillRectWithColor::color):
(WebCore::DisplayList::FillCompositedRect::color):
(WebCore::DisplayList::FillRoundedRect::color):
(WebCore::DisplayList::FillRectWithRoundedHole::color):

  • platform/graphics/filters/FEDiffuseLighting.cpp:

(WebCore::FEDiffuseLighting::lightingColor):

  • platform/graphics/filters/FEDiffuseLighting.h:
  • platform/graphics/filters/FEDropShadow.h:

(WebCore::FEDropShadow::shadowColor):

  • platform/graphics/filters/FEFlood.cpp:

(WebCore::FEFlood::floodColor):
(WebCore::FEFlood::platformApplySoftware):

  • platform/graphics/filters/FEFlood.h:
  • platform/graphics/filters/FESpecularLighting.cpp:

(WebCore::FESpecularLighting::lightingColor):

  • platform/graphics/filters/FESpecularLighting.h:
  • platform/graphics/filters/FilterOperation.h:
  • rendering/BorderEdge.h:

(WebCore::BorderEdge::color):

  • rendering/InlineFlowBox.cpp:

(WebCore::InlineFlowBox::paintBoxDecorations):

  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::paintSelection):

  • rendering/InlineTextBox.h:
  • rendering/RenderFrameSet.cpp:

(WebCore::borderStartEdgeColor):
(WebCore::borderEndEdgeColor):
(WebCore::borderFillColor):

  • rendering/RenderInline.cpp:

(WebCore::RenderInline::paintOutlineForLine):

  • rendering/RenderInline.h:
  • rendering/RenderLayerCompositor.h:
  • rendering/RenderView.cpp:

(WebCore::RenderView::paintBoxDecorations):

  • rendering/TextDecorationPainter.cpp:

(WebCore::TextDecorationPainter::paintTextDecoration):

  • rendering/TextPainter.cpp:

(WebCore::TextPainter::paintTextWithShadows):

  • rendering/style/BorderValue.h:

(WebCore::BorderValue::color):

  • rendering/style/CollapsedBorderValue.h:

(WebCore::CollapsedBorderValue::color):

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::color):
(WebCore::RenderStyle::visitedLinkColor):
(WebCore::RenderStyle::setColor):
(WebCore::RenderStyle::setVisitedLinkColor):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::borderLeftColor):
(WebCore::RenderStyle::borderRightColor):
(WebCore::RenderStyle::borderTopColor):
(WebCore::RenderStyle::borderBottomColor):
(WebCore::RenderStyle::backgroundColor):
(WebCore::RenderStyle::columnRuleColor):
(WebCore::RenderStyle::outlineColor):
(WebCore::RenderStyle::textEmphasisColor):
(WebCore::RenderStyle::textFillColor):
(WebCore::RenderStyle::textStrokeColor):
(WebCore::RenderStyle::visitedLinkBackgroundColor):
(WebCore::RenderStyle::visitedLinkBorderLeftColor):
(WebCore::RenderStyle::visitedLinkBorderRightColor):
(WebCore::RenderStyle::visitedLinkBorderBottomColor):
(WebCore::RenderStyle::visitedLinkBorderTopColor):
(WebCore::RenderStyle::visitedLinkOutlineColor):
(WebCore::RenderStyle::visitedLinkColumnRuleColor):
(WebCore::RenderStyle::textDecorationColor):
(WebCore::RenderStyle::visitedLinkTextDecorationColor):
(WebCore::RenderStyle::visitedLinkTextEmphasisColor):
(WebCore::RenderStyle::visitedLinkTextFillColor):
(WebCore::RenderStyle::visitedLinkTextStrokeColor):
(WebCore::RenderStyle::stopColor):
(WebCore::RenderStyle::floodColor):
(WebCore::RenderStyle::lightingColor):

  • svg/SVGFEDiffuseLightingElement.cpp:

(WebCore::SVGFEDiffuseLightingElement::build):

  • svg/SVGFEDropShadowElement.cpp:

(WebCore::SVGFEDropShadowElement::build):

  • svg/SVGFEFloodElement.cpp:

(WebCore::SVGFEFloodElement::build):

  • svg/SVGFESpecularLightingElement.cpp:

(WebCore::SVGFESpecularLightingElement::build):

  • svg/SVGGradientElement.cpp:

(WebCore::SVGGradientElement::buildStops):

12:56 Changeset [206537] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Update TestExpectations for crashing fast/images tests.
https://bugs.webkit.org/show_bug.cgi?id=162696

Unreviewed test gardening.

12:56 Changeset [206536] by ryanhaddad@apple.com
  • 3 edits in trunk/LayoutTests

Marking http/tests/cache/disk-cache/disk-cache-redirect.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=162524

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
12:48 Changeset [206535] by annulen@yandex.ru
  • 2 edits in trunk/Source/ThirdParty

Unreviewed, woff2 upgrade introduces compiler warnings
https://bugs.webkit.org/show_bug.cgi?id=162678

  • woff2/CMakeLists.txt:
12:37 Changeset [206534] by rniwa@webkit.org
  • 5 edits in trunk

assignedNodes should include fallback contents when flattened option is set
https://bugs.webkit.org/show_bug.cgi?id=162656

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Rebaselined the tests now that all the test cases are passing.

  • web-platform-tests/shadow-dom/slots-expected.txt:
  • web-platform-tests/shadow-dom/slots-fallback-expected.txt:

Source/WebCore:

Fixed the bug by traversing through fallback contents when there are no assigned nodes.

Tests: imported/w3c/web-platform-tests/shadow-dom/slots.html

imported/w3c/web-platform-tests/shadow-dom/slots-fallback.html

  • html/HTMLSlotElement.cpp:

(WebCore::flattenAssignedNodes):
(WebCore::HTMLSlotElement::assignedNodes):

12:34 Changeset [206533] by commit-queue@webkit.org
  • 19 edits
    1 delete in trunk/Source/JavaScriptCore

Adopt #pragma once in some generated resources
https://bugs.webkit.org/show_bug.cgi?id=162666

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-09-28
Reviewed by Alex Christensen.

  • Scripts/builtins/builtins_generate_combined_header.py:
  • Scripts/builtins/builtins_generate_internals_wrapper_header.py:
  • Scripts/builtins/builtins_generate_internals_wrapper_implementation.py:
  • Scripts/builtins/builtins_generate_separate_header.py:
  • Scripts/builtins/builtins_generate_wrapper_header.py:
  • Scripts/builtins/builtins_generate_wrapper_implementation.py:

Remove headerGuard attribute unused by templates.

  • Scripts/tests/builtins/expected/JavaScriptCore-Operations.Promise-Combined.js-result: Removed.

No such test exists. It was likely renamed.

  • generate-bytecode-files:

Simplify header guard output.

  • inspector/scripts/codegen/generate_objc_backend_dispatcher_header.py:

(ObjCBackendDispatcherHeaderGenerator.generate_output):

  • replay/scripts/CodeGeneratorReplayInputs.py:

(Generator.generate_header):

  • replay/scripts/CodeGeneratorReplayInputsTemplates.py:

Simplify header guard output.

  • replay/scripts/tests/expected/generate-enum-encoding-helpers-with-guarded-values.json-TestReplayInputs.h:
  • replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.h:
  • replay/scripts/tests/expected/generate-enum-with-guard.json-TestReplayInputs.h:
  • replay/scripts/tests/expected/generate-enums-with-same-base-name.json-TestReplayInputs.h:
  • replay/scripts/tests/expected/generate-input-with-guard.json-TestReplayInputs.h:
  • replay/scripts/tests/expected/generate-input-with-vector-members.json-TestReplayInputs.h:
  • replay/scripts/tests/expected/generate-inputs-with-flags.json-TestReplayInputs.h:
  • replay/scripts/tests/expected/generate-memoized-type-modes.json-TestReplayInputs.h:

Rebaseline.

12:32 Changeset [206532] by mcatanzaro@igalia.com
  • 2 edits in trunk/Source/ThirdParty

woff2 upgrade introduces compiler warnings
https://bugs.webkit.org/show_bug.cgi?id=162678

Reviewed by Alex Christensen.

  • woff2/CMakeLists.txt:
12:21 Changeset [206531] by mitz@apple.com
  • 8 copies
    1 add in releases/Apple/Safari Technology Preview 14

Added a tag for Safari Technology Preview release 14.

12:11 Changeset [206530] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Store-load fences should be a lot cheaper on ARM
https://bugs.webkit.org/show_bug.cgi?id=162461

Rubber stamped by Keith Miller.

It turns out that they are already cheap enough, so this change just make us use them.

  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::visitChildren):

11:26 Changeset [206529] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebCore

Merge r206520. rdar://problem/28412512

11:26 Changeset [206528] by bshafiei@apple.com
  • 11 edits
    2 adds in branches/safari-602-branch

Merge r206518. rdar://problem/28505032

11:17 Changeset [206527] by wenson_hsieh@apple.com
  • 24 edits
    2 adds in trunk

Adopt MediaRemote SPI to achieve desired Now Playing behavior
https://bugs.webkit.org/show_bug.cgi?id=162658
<rdar://problem/28499358>

Reviewed by Jer Noble.

Source/WebCore:

Restores the changes previously rolled out in r206444, and adopts new MediaRemote SPI to achieve the desired
behavior for media in background tabs without breaking other features.

Introduces 2 new unit tests in NowPlayingControlsTests.

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::pageAllowsNowPlayingControls):

  • page/Page.cpp:

(WebCore::Page::setViewState):

  • platform/audio/PlatformMediaSessionManager.h:

(WebCore::PlatformMediaSessionManager::hasActiveNowPlayingSession):

  • platform/audio/mac/MediaSessionManagerMac.h:
  • platform/audio/mac/MediaSessionManagerMac.mm:

(WebCore::MediaSessionManagerMac::updateNowPlayingInfo):

  • platform/mac/MediaRemoteSoftLink.cpp:
  • platform/mac/MediaRemoteSoftLink.h:
  • platform/spi/mac/MediaRemoteSPI.h:

Source/WebKit2:

Plumbs Now Playing session information (for now, this is just a flag indicating whether or not there is an
active session) across from the web process to the UI process for testing in the form of asynchronous request/
handle-response messages on the WebPage and its proxy in the UI process.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _requestActiveNowPlayingSessionInfo]):
(-[WKWebView _handleActiveNowPlayingSessionInfoResponse:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestActiveNowPlayingSessionInfo):
(WebKit::WebPageProxy::handleActiveNowPlayingSessionInfoResponse):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/mac/PageClientImpl.h:
  • UIProcess/mac/PageClientImpl.mm:

(WebKit::PageClientImpl::handleActiveNowPlayingSessionInfoResponse):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::requestActiveNowPlayingSessionInfo):

Tools:

Introduces 2 unit tests in the new NowPlayingControlsTests test suite. Also provides some basic support for
mocking key window status for TestWKWebViews.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/NowPlayingControlsTests.mm: Added.

(-[NowPlayingTestWebView hasActiveNowPlayingSession]):
(-[NowPlayingTestWebView expectHasActiveNowPlayingSession:]):
(-[NowPlayingTestWebView _handleActiveNowPlayingSessionInfoResponse:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit2Cocoa/large-video-test-now-playing.html: Added.
  • TestWebKitAPI/mac/TestWKWebViewMac.mm:

(-[TestWKWebViewHostWindow isKeyWindow]):
(-[TestWKWebViewHostWindow makeKeyWindow]):
(-[TestWKWebViewHostWindow resignKeyWindow]):

10:33 Changeset [206526] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

REGRESSION(r206481): ASSERTION FAILED: isDecoderAvailable()
https://bugs.webkit.org/show_bug.cgi?id=162665

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2016-09-28
Reviewed by Simon Fraser.

Remove a wrong assertion from ImageSource::destroyDecodedData(). Before
r206481, the original function BitmapImage::destroyDecodedData() did not
have this assertion. Destroying the decoded ImageFrames can happen after
releasing the ImageDecoder. And it can happen also if decoding the image
fails and BitmapImage::isNull() is true. See CachedImage::finishLoading().

  • platform/graphics/ImageSource.cpp:

(WebCore::ImageSource::destroyDecodedData):

10:08 Changeset [206525] by ryanhaddad@apple.com
  • 1002 edits in trunk/Source/JavaScriptCore

Unreviewed, rolling out r206522.

Roll r206506 back in since the build fix landed in r206521

Reverted changeset:

"Unreviewed, rolling out r206506."
https://bugs.webkit.org/show_bug.cgi?id=162682
http://trac.webkit.org/changeset/206522

09:37 Changeset [206524] by commit-queue@webkit.org
  • 6 edits
    2 adds in trunk

WebCore::ResourceErrorBase::setType is crashing
https://bugs.webkit.org/show_bug.cgi?id=162484
<rdar://problem/28390828>

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

Source/WebCore:

Test: http/tests/xmlhttprequest/on-network-timeout-error-during-preflight.html

Behavior is slightly changed as we are no longer casting Timeout preflight errors as AccessControl errors.
This is more inline with fetch spec which prescribes to send back any error received by preflight as response error for fetch.

Ideally, we should not need to change errors received during preflight loads but the error type is important for some clients:

  • EventSource may try to reconnect if error is not AccessControl
  • XMLHttpRequest will send abort events in case of Cancellation errors and timeout events in case of Timeout errors
  • loader/CrossOriginPreflightChecker.cpp:

(WebCore::CrossOriginPreflightChecker::notifyFinished): Setting error type to AccessControl except in case of Timeout.
(WebCore::CrossOriginPreflightChecker::doPreflight): Ditto.

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::preflightFailure): Removing ASSERT since Timeout errors may be returned.

  • platform/network/ResourceErrorBase.h:

(WebCore::ResourceErrorBase::isGeneral): New getter.

LayoutTests:

  • http/tests/xmlhttprequest/on-network-timeout-error-during-preflight-expected.txt: Added.
  • http/tests/xmlhttprequest/on-network-timeout-error-during-preflight.html: Added.
  • tests-options.json: Marking test as slow.
09:34 Changeset [206523] by bfulgham@apple.com
  • 2 edits in trunk/Source/WTF

Correct 'safeCast' implementation
https://bugs.webkit.org/show_bug.cgi?id=162679
<rdar://problem/28518189>

Reviewed by Zalan Bujtas.

  • wtf/StdLibExtras.h:

(WTF::safeCast): Use a RELEASE_ASSERT.

09:33 Changeset [206522] by commit-queue@webkit.org
  • 1002 edits in trunk/Source/JavaScriptCore

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

Broke the Windows and WinCairo builds. (Requested by
ryanhaddad on #webkit).

Reverted changeset:

"Adopt #pragma once in JavaScriptCore"
https://bugs.webkit.org/show_bug.cgi?id=162664
http://trac.webkit.org/changeset/206506

09:30 Changeset [206521] by pvollan@apple.com
  • 2 edits in trunk/Tools

[Win] Compile fix.
https://bugs.webkit.org/show_bug.cgi?id=162670

Reviewed by Brent Fulgham.

Make sure we include JavaScriptCore files from the forwarding headers folder.
Otherwise we might get multiple definitions if a JSC file is included both
from the forwarding headers folder and the JSC source folder, since
#pragma once is used in the header files.

  • DumpRenderTree/TestRunner.cpp:
09:26 Changeset [206520] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

PiP shows incorrect state of play button.
https://bugs.webkit.org/show_bug.cgi?id=162652

Reviewed by Eric Carlson.

After getting a new WebPlaybackSessionModel, the first thing WebVideoFullscreenInterfaceMac
should do is query for it's playbackRate() and isPlaying() properties.

  • platform/mac/WebVideoFullscreenInterfaceMac.mm:

(WebCore::WebVideoFullscreenInterfaceMac::WebVideoFullscreenInterfaceMac):

08:34 Changeset [206519] by mcatanzaro@igalia.com
  • 4 edits in trunk

[GTK] Add Chrome UA quirk
https://bugs.webkit.org/show_bug.cgi?id=162617

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Add Chrome UA quirk and use it on typekit.net, typekit.com, youtube.com, slack.com, and
any domain that begins with "google".

  • platform/gtk/UserAgentGtk.cpp:

(WebCore::buildUserAgentString):
(WebCore::urlRequiresChromeBrowser):
(WebCore::standardUserAgentForURL):

Tools:

Update test. This portion of the commit was actually unreviewed.

  • TestWebKitAPI/Tests/WebCore/gtk/UserAgentQuirks.cpp:

(TestWebKitAPI::TEST):

07:52 Changeset [206518] by jer.noble@apple.com
  • 11 edits
    2 adds in trunk

[MSE][Mac] In SourceBufferPrivateAVFObjC::abort(), support reseting parser to the last appended initialization segment.
https://bugs.webkit.org/show_bug.cgi?id=135164

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/media-source/media-source-abort-resets-parser.html

Use the -[AVStreamDataParser appendStreamData:withFlags:] to implement "resetting" the parser. In this case,
the parser isn't explicitly reset during resetParserState(), but rather a flag is set so that the next append
signals a data discontinuity, and the parser is reset at that point.

Because a previous append operation may be in-flight during this abort(), care must be taken to invalidate any
operations which may have already started on a background thread. So SourceBufferPrivateAVFObjC will use a
separate WeakPtrFactory for its append operations, will invalidate any outstanding WeakPtrs during an abort(),
and will block until the previous append() operation completes.

This will require the WebAVStreamDataParserListener object to occasionally have it's WeakPtr pointing back to the
SourceBufferPrivateAVFObjC to be reset after an abort(), so make that ivar an @property. Rather than passing a
RetainPtr to itself in all the callbacks it handles, the WebAVStreamDataParserListener can just pass in a copy
of its own WeakPtr (which may be invalidated during an abort()).

Break the distinct operations of "abort()" and "resetParserState()" into their own methods in SourceBufferPrivate
and all its subclasses.

  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::resetParserState):
(WebCore::SourceBuffer::abortIfUpdating):

  • platform/graphics/SourceBufferPrivate.h:
  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:

(-[WebAVStreamDataParserListener streamDataParser:didParseStreamDataAsAsset:]):
(-[WebAVStreamDataParserListener streamDataParser:didParseStreamDataAsAsset:withDiscontinuity:]):
(-[WebAVStreamDataParserListener streamDataParser:didFailToParseStreamDataWithError:]):
(-[WebAVStreamDataParserListener streamDataParser:didProvideMediaData:forTrackID:mediaType:flags:]):
(-[WebAVStreamDataParserListener streamDataParser:didReachEndOfTrackWithTrackID:mediaType:]):
(-[WebAVStreamDataParserListener streamDataParserWillProvideContentKeyRequestInitializationData:forTrackID:]):
(-[WebAVStreamDataParserListener streamDataParser:didProvideContentKeyRequestInitializationData:forTrackID:]):
(WebCore::SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC):
(WebCore::SourceBufferPrivateAVFObjC::append):
(WebCore::SourceBufferPrivateAVFObjC::abort):
(WebCore::SourceBufferPrivateAVFObjC::resetParserState):
(-[WebAVStreamDataParserListener initWithParser:parent:]): Deleted.

  • platform/graphics/gstreamer/SourceBufferPrivateGStreamer.cpp:

(WebCore::SourceBufferPrivateGStreamer::resetParserState):

  • platform/graphics/gstreamer/SourceBufferPrivateGStreamer.h:
  • platform/mock/mediasource/MockSourceBufferPrivate.cpp:

(WebCore::MockSourceBufferPrivate::resetParserState):

  • platform/mock/mediasource/MockSourceBufferPrivate.h:
  • platform/spi/mac/AVFoundationSPI.h:

LayoutTests:

  • media/media-source/media-source-abort-resets-parser-expected.txt: Added.
  • media/media-source/media-source-abort-resets-parser.html: Added.
07:49 Changeset [206517] by mcatanzaro@igalia.com
  • 2 edits in trunk/Source/WebCore

[GTK] User agent should always claim to be Intel
https://bugs.webkit.org/show_bug.cgi?id=162610

Reviewed by Carlos Garcia Campos.

We should always claim to be running on Intel regardless of actual CPU type. See discussion
in bug #162548 for details. In particular, we can never advertise ARM because it causes dumb
websites to send mobile pages.

  • platform/gtk/UserAgentGtk.cpp:

(WebCore::platformVersionForUAString):
(WebCore::buildUserAgentString):
(WebCore::cpuDescriptionForUAString): Deleted.

07:45 Changeset [206516] by mcatanzaro@igalia.com
  • 1 edit in trunk/Tools/ChangeLog

[GTK] Adjust OS X UA quirks list
https://bugs.webkit.org/show_bug.cgi?id=162616

"Reviewed" by Carlos Garcia Campos.

Update test. This portion of the commit was actually unreviewed.

  • TestWebKitAPI/Tests/WebCore/gtk/UserAgentQuirks.cpp:

(TestWebKitAPI::TEST):

07:40 Changeset [206515] by mcatanzaro@igalia.com
  • 3 edits in trunk

[GTK] Adjust OS X UA quirks list
https://bugs.webkit.org/show_bug.cgi?id=162616

Reviewed by Carlos Garcia Campos.

Remove the OS X quirk for yahoo.com as it's no longer needed. Add quirks for taobao.com and
whatsapp.com.

  • platform/gtk/UserAgentGtk.cpp:

(WebCore::urlRequiresMacintoshPlatform):
(WebCore::standardUserAgentForURL):

06:18 Changeset [206514] by commit-queue@webkit.org
  • 14 edits in trunk

Add WebIDL special operation support: serializer
https://bugs.webkit.org/show_bug.cgi?id=156293

Patch by Alejandro G. Castro <alex@igalia.com> on 2016-09-28
Reviewed by Youenn Fablet.

Source/WebCore:

Added support for the serializer special operation for WebIDLs,
current implementation adds support for:

  • just the keyword: serializer; It will return all the attributes of in an object.
  • map of entries with the attributes: serializer = {attribute1, attribute2, ...}

It creates a toJSON method that returns the serialized value
converted into an ECMAScript value. For more information check the
definition of the operation:

http://heycam.github.io/webidl/#idl-serializers

We have created a new function in the API of the objects
that are marked as serializer.

Used the support to add new API for RTCIceCandidate and
RTCSessionDescription.

Updated the tests expectations of the bindings.

Tests: bindings/scripts/test/TestNode.idl

bindings/scripts/test/TestObj.idl
fast/mediastream/RTCIceCandidate.html
fast/mediastream/RTCSessionDescription.html

  • Modules/mediastream/RTCIceCandidate.idl: Added the serializer

operation.

  • Modules/mediastream/RTCSessionDescription.idl: Added the

serializer operation.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation): Added the calls to the serializer
code generator.
(GenerateSerializerFunction): Added, generates the toJSON function
adding all the serializable->attributes value to an object as
defined in the spec.

  • bindings/scripts/IDLParser.pm: Modified the serializer parser

that was unused to support the WebIDL spec parts. Added a new
domSerializable type to store the list of attributes in the
possible map.
(parseSerializer): Modified the function to follow the
semicolon rule in the spec, now the serializer line must have a
semicolon like any other line.
(parseSerializerRest): The function now has to get the attributes
list from the pattern parsing function and add them to the
domSerializable item.
(parseSerializationPattern): Now this function returns the list of
attributes in the serializable map or list if we have one.
(parseSerializationAttributes): Added, this function replaces the
Map and List functions, the currently supported parts are similar
for both situations.
(applyMemberList): Added the serializable item to the interface
variable and populate the serializable in case there is not a
defined map.
(parseSerializationPatternMap): Replaced with
parseSerializationAttributes.
(parseSerializationPatternList): Ditto.

  • bindings/scripts/test/JS/JSTestNode.cpp: Modified the expected result.

(WebCore::jsTestNodePrototypeFunctionToJSON):

  • bindings/scripts/test/JS/JSTestObj.cpp: Modified the expected result.

(WebCore::jsTestObjPrototypeFunctionToJSON):

  • bindings/scripts/test/TestNode.idl: Added the serializer test.
  • bindings/scripts/test/TestObj.idl: Added serializer map test.

LayoutTests:

Verify the new API of the objects and check what happens when user
modifies the values and types of the attributes, or adds a null value.

  • fast/mediastream/RTCIceCandidate-expected.txt:
  • fast/mediastream/RTCIceCandidate.html:
  • fast/mediastream/RTCSessionDescription-expected.txt:
  • fast/mediastream/RTCSessionDescription.html:
05:54 Changeset [206513] by mcatanzaro@igalia.com
  • 2 edits in trunk/Source/WebCore

[GTK] Simplify platformForUAString
https://bugs.webkit.org/show_bug.cgi?id=162614

Reviewed by Carlos Garcia Campos.

Note in particular that the previous PLATFORM(MAC) check was wrong here, as that is never
true for GTK; this patch risks changing it to OS(MAC_OS_X), on the hope that advertising Mac
when running on Mac might not break anything. If it does, then we should remove it and just
always pretend to be on X11.

  • platform/gtk/UserAgentGtk.cpp:

(WebCore::platformForUAString):

05:54 Changeset [206512] by mcatanzaro@igalia.com
  • 2 edits in trunk/Source/WebCore

[GTK] Bump fake Safari version in UA
https://bugs.webkit.org/show_bug.cgi?id=162615

Reviewed by Carlos Garcia Campos.

Pretend to be Safari 10.0 to fix sites that don't work when we pretend to be Safari 8.0.

  • platform/gtk/UserAgentGtk.cpp:

(WebCore::buildUserAgentString):

05:46 Changeset [206511] by fred.wang@free.fr
  • 21 edits
    6 adds in trunk

Source/ThirdParty:
Update woff2 to latest revision
https://bugs.webkit.org/show_bug.cgi?id=162608

Patch by Khaled Hosny <khaledhosny@eglug.org> on 2016-09-28
Reviewed by Michael Catanzaro.

  • woff2/CMakeLists.txt:
  • woff2/README.webkit:
  • woff2/src/file.h:

(woff2::GetFileContent):
(woff2::SetFileContents):

  • woff2/src/font.cc:
  • woff2/src/font.h:
  • woff2/src/glyph.cc:
  • woff2/src/store_bytes.h:

(woff2::Store16):

  • woff2/src/transform.cc:
  • woff2/src/woff2_common.cc:
  • woff2/src/woff2_compress.cc:
  • woff2/src/woff2_dec.cc:
  • woff2/src/woff2_dec.h:
  • woff2/src/woff2_decompress.cc:
  • woff2/src/woff2_enc.cc:
  • woff2/src/woff2_out.cc: Added.
  • woff2/src/woff2_out.h: Added.

(woff2::WOFF2Out::~WOFF2Out):
(woff2::WOFF2StringOut::MaxSize):

Source/WebCore:
Use new woff2 API
https://bugs.webkit.org/show_bug.cgi?id=162608

Patch by Khaled Hosny <khaledhosny@eglug.org> on 2016-09-28
Reviewed by Michael Catanzaro.

Test: fast/text/woff2-totalsfntsize.html

  • platform/graphics/WOFFFileFormat.cpp:

(WebCore::WOFF2VectorOut::WOFF2VectorOut):
(WebCore::WOFF2VectorOut::Write):
(WebCore::WOFF2VectorOut::Size):
(WebCore::convertWOFFToSfnt):

LayoutTests:
Use new woff2 API
https://bugs.webkit.org/show_bug.cgi?id=162608

Patch by Khaled Hosny <khaledhosny@eglug.org> on 2016-09-28
Reviewed by Michael Catanzaro.

  • fast/text/resources/header-totalsfntsize-001.ttf: Added.
  • fast/text/resources/header-totalsfntsize-001.woff2: Added.
  • fast/text/woff2-totalsfntsize-expected.html: Added.
  • fast/text/woff2-totalsfntsize.html: Added.
  • platform/ios-simulator/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/win/TestExpectations:
05:34 WebKitGTK/Releasing edited by mcatanzaro@igalia.com
Need to update Chrome string too (diff)
04:11 Changeset [206510] by mcatanzaro@igalia.com
  • 2 edits in trunk/Source/WebCore

[GTK] Add warning comment in UserAgentGtk.cpp
https://bugs.webkit.org/show_bug.cgi?id=162618

Reviewed by Carlos Garcia Campos.

  • platform/gtk/UserAgentGtk.cpp:
03:00 Changeset [206509] by annulen@yandex.ru
  • 3 edits in trunk/Source/ThirdParty

[cmake] Suppress Clang warnings in brotli and woff2
https://bugs.webkit.org/show_bug.cgi?id=162663

Reviewed by Michael Catanzaro.

  • brotli/CMakeLists.txt:
  • woff2/CMakeLists.txt:
02:17 Changeset [206508] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

[Streams API] Align cancelReadableStream() with spec
https://bugs.webkit.org/show_bug.cgi?id=162556

Patch by Romain Bellessort <romain.bellessort@crf.canon.fr> on 2016-09-28
Reviewed by Xabier Rodriguez-Calvar.

Aligned cancelReadableStream() with Streams API. In particular, private cancel() method
was added to ReadableStreamDefaultController and function name was replaced by readableStreamCancel().
Implementation of cancel() (as well as pull()) is actually made in ReadableStreamInternals.js to
avoid creating new function for each controller.

No change in behaviour.

  • Modules/streams/ReadableStream.js:

(cancel): Updated with reference to readableStreamCancel().

  • Modules/streams/ReadableStreamDefaultReader.js:

(cancel): Updated with reference to readableStreamCancel().

  • Modules/streams/ReadableStreamInternals.js:

(privateInitializeReadableStreamDefaultController): Refer to external functions (cancel/pull) to avoid
creating new functions.
(teeReadableStreamBranch2CancelFunction): Updated with reference to readableStreamCancel().
(readableStreamCancel): New name for cancelReadableStream(), behaviour aligned with spec.
(readableStreamDefaultControllerCancel): Added to avoid creating new function for each controller.
(readableStreamDefaultControllerPull): Added to avoid creating new function for each controller.
(readFromReadableStreamDefaultReader): Updated call to pull method to pass controller.

  • bindings/js/WebCoreBuiltinNames.h: Added "cancel".
01:17 Changeset [206507] by mcatanzaro@igalia.com
  • 2 edits in trunk

[GTK] Remove obsolete comment from OptionsGTK.cmake
https://bugs.webkit.org/show_bug.cgi?id=162622

Reviewed by Alex Christensen.

  • Source/cmake/OptionsGTK.cmake:
01:10 Changeset [206506] by commit-queue@webkit.org
  • 1002 edits in trunk/Source/JavaScriptCore

Adopt #pragma once in JavaScriptCore
https://bugs.webkit.org/show_bug.cgi?id=162664

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-09-28
Reviewed by Saam Barati.

  • /.h:

Adopt pragma once in all but API headers and generated headers.
Include some namespace closing comments for consistency.

00:49 Changeset [206505] by carlosgc@webkit.org
  • 7 edits in trunk

[GTK] Switch to use GMenu internally in the context menu implementation
https://bugs.webkit.org/show_bug.cgi?id=162603

Reviewed by Michael Catanzaro.

Source/WebKit2:

Switch to use GAction instead of GtkAction internally, but still keeping a GtkAction associated to the GAction,
because our API depends on GtkAction.

  • Shared/gtk/WebContextMenuItemGtk.cpp:

(WebKit::WebContextMenuItemGtk::WebContextMenuItemGtk):
(WebKit::WebContextMenuItemGtk::createActionIfNeeded): Create the GAction and the associated GtkAction. Ensure a
unique name for the GAction, since the name now matters.

  • Shared/gtk/WebContextMenuItemGtk.h:

(WebKit::WebContextMenuItemGtk::gtkAction):
(WebKit::WebContextMenuItemGtk::gAction):
(WebKit::WebContextMenuItemGtk::submenuItems): Deleted.

  • UIProcess/gtk/WebContextMenuProxyGtk.cpp:

(WebKit::contextMenuItemActivatedCallback): Use the GAction.
(WebKit::WebContextMenuProxyGtk::append): Create a new GMenuItem for the GAction.
(WebKit::WebContextMenuProxyGtk::buildMenu): Build a GMenu for the given items.
(WebKit::WebContextMenuProxyGtk::populate): Create a GMenu and bind it ot the GtkMenu.
(WebKit::WebContextMenuProxyGtk::WebContextMenuProxyGtk): Create the GActionGroup for the menu.
(WebKit::WebContextMenuProxyGtk::~WebContextMenuProxyGtk): Remove the action group from the GtkMenu.

  • UIProcess/gtk/WebContextMenuProxyGtk.h:

Tools:

Remove smart separators test, since that's now done automatically by GTK+.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp:

(beforeAll):
(testContextMenuWebExtensionMenu): Deleted.

00:22 Changeset [206504] by bshafiei@apple.com
  • 1 copy in branches/safari-602.2.14.1-branch

New Branch.

00:17 Changeset [206503] by utatane.tea@gmail.com
  • 4 edits in trunk

Unreviewed, build fix for several CMake ports after r206440

  • Source/cmake/OptionsEfl.cmake:
  • Source/cmake/OptionsMac.cmake:
  • Source/cmake/WebKitFeatures.cmake:

09/27/16:

23:45 Changeset [206502] by jh718.park@samsung.com
  • 2 edits in trunk/Source/WebCore

[EFL] Fix debug build break since r206481. Unreviewed
https://bugs.webkit.org/show_bug.cgi?id=162662

No new tests, no new behaviours.

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::draw):

23:26 Changeset [206501] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.2.15.1

New tag.

23:24 Changeset [206500] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebCore

Merge r206234. rdar://problem/28503781

23:22 Changeset [206499] by bshafiei@apple.com
  • 2 edits in branches/safari-602.2.15-branch/Source/WebCore

Merge r206234. rdar://problem/28503781

23:17 Changeset [206498] by bshafiei@apple.com
  • 5 edits in branches/safari-602.2.15-branch/Source

Versioning.

23:12 Changeset [206497] by bshafiei@apple.com
  • 1 copy in branches/safari-602.2.15-branch

New Branch.

21:52 Changeset [206496] by commit-queue@webkit.org
  • 6 edits in trunk

[CMake] Add HAVE_LOCALTIME_R definition
https://bugs.webkit.org/show_bug.cgi?id=162636

Patch by Don Olmstead <don.olmstead@am.sony.com> on 2016-09-27
Reviewed by Alex Christensen.

.:

  • Source/cmake/OptionsCommon.cmake:

Source/WTF:

  • wtf/DateMath.cpp:

(WTF::getLocalTime):

  • wtf/GregorianDateTime.cpp:

(WTF::GregorianDateTime::setToCurrentLocalTime):

  • wtf/Platform.h:
21:35 Changeset [206495] by commit-queue@webkit.org
  • 2 edits in trunk/Websites/webkit.org

Update style guide for #pragma once
https://bugs.webkit.org/show_bug.cgi?id=162633

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-09-27
Reviewed by Dan Bernstein.

  • code-style.md:

Update style guide for #pragma once as discussed on webkit-dev.

21:09 Changeset [206494] by n_wang@apple.com
  • 3 edits
    2 adds in trunk

AX: CrashTracer: com.apple.WebKit.WebContent at WebCore::AXObjectCache::localCaretRectForCharacterOffset(WebCore::RenderObject*&, WebCore::CharacterOffset const&) + 116
https://bugs.webkit.org/show_bug.cgi?id=162654

Reviewed by Chris Fleizach.

Source/WebCore:

rangeForUnorderedCharacterOffsets() can return a null Range but we failed to
do a null check in localCaretRectForCharacterOffset() before dereferencing it.

Test: accessibility/mac/bounds-for-range-crash.html

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::localCaretRectForCharacterOffset):

LayoutTests:

  • accessibility/mac/bounds-for-range-crash-expected.txt: Added.
  • accessibility/mac/bounds-for-range-crash.html: Added.
20:03 Changeset [206493] by rniwa@webkit.org
  • 1 edit
    2 adds in trunk/LayoutTests

Toggling display: none on a parent element of a slot which shares style with its parent doesn't update the slot's visibility
https://bugs.webkit.org/show_bug.cgi?id=158421

Reviewed by Darin Adler.

Add a regression test now that the bug has been fixed by r206403.

  • fast/shadow-dom/shadow-layout-after-toggling-display-slot-parent-expected.html: Added.
  • fast/shadow-dom/shadow-layout-after-toggling-display-slot-parent.html: Added.
18:58 Changeset [206492] by cdumez@apple.com
  • 4 edits in trunk/LayoutTests

[iOS] Fix several Touch-related layout tests
https://bugs.webkit.org/show_bug.cgi?id=162651

Reviewed by Darin Adler.

Fix several Touch-related layout tests. The first parameter to our Touch
constructor must be a Window but several of our tests were passing in a
Document.

  • platform/ios-simulator/ios/touch/construct-Touch-expected.txt:
  • platform/ios-simulator/ios/touch/resources/construct-Touch.js:
  • platform/ios-simulator/ios/touch/resources/construct-TouchList.js:
18:39 Changeset [206491] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.2.14.0.1

New tag.

18:39 Changeset [206490] by bshafiei@apple.com
  • 4 edits in branches/safari-602.2.14.0-branch/Source/WebCore

Merge r206454. rdar://problem/28484193

18:39 Changeset [206489] by bshafiei@apple.com
  • 3 edits in branches/safari-602.2.14.0-branch/Source/WebCore

Merge r206444. rdar://problem/28496755

18:39 Changeset [206488] by bshafiei@apple.com
  • 2 edits in branches/safari-602.2.14.0-branch/Source/WebCore

Merge r206415. rdar://problem/28484047

18:38 Changeset [206487] by bshafiei@apple.com
  • 6 edits in branches/safari-602.2.14.0-branch/Source/WebCore

Merge r206399. rdar://problem/28457219

18:31 Changeset [206486] by bshafiei@apple.com
  • 5 edits in branches/safari-602.2.14.0-branch/Source

Versioning.

18:23 Changeset [206485] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Inline critical functions in URLParser
https://bugs.webkit.org/show_bug.cgi?id=162653

Reviewed by Myles C. Maxfield.

This gives me about a 15% speed improvement.

  • platform/URLParser.cpp:

(WebCore::CodePointIterator::CodePointIterator):
(WebCore::CodePointIterator::operator==):
(WebCore::CodePointIterator::operator!=):
(WebCore::CodePointIterator::operator=):
(WebCore::CodePointIterator::atEnd):
(WebCore::CodePointIterator::codeUnitsSince):
(WebCore::CodePointIterator<LChar>::operator):
(WebCore::CodePointIterator<UChar>::operator):
(WebCore::appendCodePoint):
(WebCore::isC0Control):
(WebCore::isC0ControlOrSpace):
(WebCore::isTabOrNewline):
(WebCore::isInSimpleEncodeSet):
(WebCore::isInDefaultEncodeSet):
(WebCore::isInUserInfoEncodeSet):
(WebCore::isInvalidDomainCharacter):
(WebCore::isPercentOrNonASCII):
(WebCore::isSlashQuestionOrHash):
(WebCore::isValidSchemeCharacter):
(WebCore::URLParser::advance):
(WebCore::URLParser::isWindowsDriveLetter):
(WebCore::URLParser::appendToASCIIBuffer):
(WebCore::percentEncodeByte):
(WebCore::URLParser::utf8PercentEncode):
(WebCore::URLParser::utf8QueryEncode):
(WebCore::isDefaultPort):
(WebCore::isSpecialScheme):
(WebCore::isPercentEncodedDot):
(WebCore::isSingleDotPathSegment):
(WebCore::isDoubleDotPathSegment):
(WebCore::consumeSingleDotPathSegment):
(WebCore::consumeDoubleDotPathSegment):
(WebCore::URLParser::popPath):
(WebCore::URLParser::parsedDataView):
(WebCore::URLParser::currentPosition):
(WebCore::zeroSequenceLength):
(WebCore::findLongestZeroSequence):
(WebCore::pow256):
(WebCore::percentDecode):
(WebCore::containsOnlyASCII):
(WebCore::domainToASCII):
(WebCore::hasInvalidDomainCharacter):
(WebCore::formURLDecode):
(WebCore::serializeURLEncodedForm):

18:17 Changeset [206484] by bshafiei@apple.com
  • 1 copy in branches/safari-602.2.14.0-branch

New Branch.

18:17 Changeset [206483] by zalan@apple.com
  • 3 edits
    4 adds in trunk

REGRESSION (r204552): Yelp carousel animation is not smooth.
https://bugs.webkit.org/show_bug.cgi?id=162632

Reviewed by Simon Fraser.

Source/WebCore:

For composited state changes when the layers don't need rebuilding, the updateGeometry() traversal
is post-order (see webkit.org/162634), so we can't rely on the offsetfromRenderer() value when
computing the graphics layer position on the descendants. We need this workaround until after webkit.org/162634
gets fixed.

Tests: compositing/hidpi-composited-container-and-graphics-layer-gap-changes.html

compositing/hidpi-negative-composited-bounds-on-device-pixel.html

  • rendering/RenderLayerBacking.cpp:

(WebCore::computeOffsetFromAncestorGraphicsLayer):
(WebCore::ComputedOffsets::ComputedOffsets):
(WebCore::ComputedOffsets::fromAncestorGraphicsLayer):
(WebCore::RenderLayerBacking::computeParentGraphicsLayerRect):

LayoutTests:

  • compositing/hidpi-composited-container-and-graphics-layer-gap-changes-expected.html: Added.
  • compositing/hidpi-composited-container-and-graphics-layer-gap-changes.html: Added.
  • compositing/hidpi-negative-composited-bounds-on-device-pixel-expected.html: Added.
  • compositing/hidpi-negative-composited-bounds-on-device-pixel.html: Added.
18:11 Changeset [206482] by jfbastien@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Missing Atomics.h include in MarkedBlock.h
https://bugs.webkit.org/show_bug.cgi?id=162648

Missing include from my previous patch.

Reviewed by Yusuke Suzuki.

  • heap/MarkedBlock.h:
18:06 Changeset [206481] by commit-queue@webkit.org
  • 36 edits
    2 adds in trunk/Source/WebCore

Move caching the ImageFrame from BitmapImage to ImageSource
https://bugs.webkit.org/show_bug.cgi?id=155498

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2016-09-27
Reviewed by Simon Fraser.

BitmapImage has two modes of operation regarding its image decoding state.
The first mode happens when a remote image is loaded as encoded data and
which requires an ImageDecoder to generate the image metadata and the
the ImageFrames. The second mode happens when a BitmapImage is created
with a NativeImagePtr. In this case, no ImageDecoder is needed.

To remove this burden from the BitmapImage the member 'm_frames' is removed
from BitmapImage. A new member named 'm_frameCache' of type ImageFrameCache
is added to ImageSource. This class handles caching and recaching the image
metadata and the ImageFrames if the image needs decoding. When the BitmapImage
is initialized with a memory image, the ImageFrameCache initializes its
metadata and ImageFrames directly from the NativeImagePtr.

The plan for ImageFrameCache is to be extended for the asynchronous image
decoding and also to be used by the non CG image decoders which cache
other copies of the ImageFrames. This double caching should be removed.

When the BitmapImage is replying to the ImageFrame queries, it will ask the
ImageSource which will pass the query the ImageFrameCache. ImageFrameCache
will ensure the requested ImageFrame is cached and is valid for the requested
SubSamplingLevel before accessing the data members of this ImageFrame.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:

Add and ImageFrameCache.cpp to the WebCore project.

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::BitmapImage): Move initializing the image metadata to
ImageSource. Add initializers for the remaining members in the class declaration.

(WebCore::BitmapImage::destroyDecodedData): Move most of the logic of this
function to ImageFrameCache::destroyDecodedData(). The only part which can't
be moved is the call invalidatePlatformData().

(WebCore::BitmapImage::destroyDecodedDataIfNecessary): Move the logic of this
function to ImageFrameCache::destroyDecodedDataIfNecessary().

(WebCore::BitmapImage::dataChanged): Move the logic of this function to
ImageSource::dataChanged().

(WebCore::BitmapImage::frameImageAtIndex): Move most of the logic of this
function to ImageFrameCache::frameImageAtIndex(). The only part which can't
be moved is the call invalidatePlatformData() if the required subsampling
level is different from the subsampling level for the cached frame image.

(WebCore::BitmapImage::draw): Replace the BitmapImage cached metadata with
the corresponding ImageSource cached metadata.
(WebCore::BitmapImage::drawPattern): Ditto.
(WebCore::BitmapImage::shouldAnimate): Ditto.
(WebCore::BitmapImage::startAnimation): Ditto.
(WebCore::BitmapImage::internalAdvanceAnimation): Ditto.

(WebCore::BitmapImage::dump): Call ImageSource::dump() to dump the image
cached metadata.

(WebCore::BitmapImage::haveFrameImageAtIndex): Deleted.
(WebCore::BitmapImage::destroyMetadataAndNotify): Deleted.
(WebCore::BitmapImage::cacheFrame): Deleted.
(WebCore::BitmapImage::didDecodeProperties): Deleted.
(WebCore::BitmapImage::updateSize): Deleted.
(WebCore::BitmapImage::size): Deleted.
(WebCore::BitmapImage::sizeRespectingOrientation): Deleted.
(WebCore::BitmapImage::hotSpot): Deleted.
(WebCore::BitmapImage::frameCount): Deleted.
(WebCore::BitmapImage::isSizeAvailable): Deleted.
(WebCore::BitmapImage::ensureFrameAtIndexIsCached): Deleted.
(WebCore::BitmapImage::frameIsCompleteAtIndex): Deleted.
(WebCore::BitmapImage::frameDurationAtIndex): Deleted.
(WebCore::BitmapImage::frameHasAlphaAtIndex): Deleted.
(WebCore::BitmapImage::currentFrameKnownToBeOpaque): Deleted.
(WebCore::BitmapImage::frameOrientationAtIndex): Deleted.
(WebCore::BitmapImage::singlePixelSolidColor): Deleted.
(WebCore::BitmapImage::repetitionCount): Deleted.

  • platform/graphics/BitmapImage.h:

Managing the ImageFrames caching is moved to ImageFrameCache. Caching the
image metadata is now moved to the ImageSource.

  • platform/graphics/GeneratedImage.h:
  • platform/graphics/Image.h:

(WebCore::Image::orientationForCurrentFrame):
(WebCore::Image::singlePixelSolidColor):
Change currentFrameKnownToBeOpaque(), orientationForCurrentFrame() and
singlePixelSolidColor() to be const.

  • platform/graphics/ImageFrame.cpp:

(WebCore::ImageFrame::defaultFrame): Returns an empty ImageFrame to get the default ImageFrame metadata.
(WebCore::ImageFrame::fillMetadata): Deleted. Moved to ImageFrameCache.
(WebCore::ImageFrame::initialize): Deleted. Ditto.

  • platform/graphics/ImageFrame.h:

(WebCore::ImageFrame::setDuration): Change the type of the argument to float instead of unsigned.
(WebCore::ImageFrame::hasAlpha): Protect the unset m_hasAlpha by checking hasMetadata() first.

  • platform/graphics/ImageFrameCache.cpp: Added.

(WebCore::ImageFrameCache::ImageFrameCache): Two constructors similar to what we do for ImageSource and BitmapImage.
(WebCore::ImageFrameCache::destroyDecodedData): Moved from BitmapImage.cpp.
(WebCore::ImageFrameCache::destroyDecodedDataIfNecessary): Ditto.
(WebCore::ImageFrameCache::destroyIncompleteDecodedData): Ditto.
(WebCore::ImageFrameCache::decodedSizeChanged): Ditto.
(WebCore::ImageFrameCache::decodedSizeIncremented): Ditto.
(WebCore::ImageFrameCache::decodedSizeDecremented): Ditto.
(WebCore::ImageFrameCache::decodedSizeReset): Ditto.
(WebCore::ImageFrameCache::didDecodeProperties): Ditto.
(WebCore::ImageFrameCache::growFrames): Grows the size of m_frames if necessary.
(WebCore::ImageFrameCache::setNativeImage): Initializes the ImageFrame metadata directly from the NativeImagePtr.
(WebCore::ImageFrameCache::setFrameNativeImage): Initializes the ImageFrame image and the metadata.
(WebCore::ImageFrameCache::setFrameMetadata): Initializes the ImageFrame metadata from the ImageDecoder.
(WebCore::ImageFrameCache::frameAtIndex): Returns an ImageFrame given its index. Cache or recache the requested ImageFrame if necessary.
(WebCore::ImageFrameCache::clearMetadata): Invalidates the cached image metadata.
(WebCore::ImageFrameCache::metadata): A template function which returns an image metadata property.
(WebCore::ImageFrameCache::frameMetadataAtIndex): A template function which returns an ImageFrame metadata property.
(WebCore::ImageFrameCache::isSizeAvailable): An image metadata property.
(WebCore::ImageFrameCache::frameCount): Ditto.
(WebCore::ImageFrameCache::repetitionCount): Ditto.
(WebCore::ImageFrameCache::filenameExtension): Ditto.
(WebCore::ImageFrameCache::hotSpot): Ditto.
(WebCore::ImageFrameCache::size): An image metadata property but we get it from the first ImageFrame.
(WebCore::ImageFrameCache::sizeRespectingOrientation): Ditto.
(WebCore::ImageFrameCache::singlePixelSolidColor): Ditto.
(WebCore::ImageFrameCache::frameIsCompleteAtIndex): An ImageFrame metadata property.
(WebCore::ImageFrameCache::frameHasAlphaAtIndex): Ditto.
(WebCore::ImageFrameCache::frameHasImageAtIndex): Ditto.
(WebCore::ImageFrameCache::frameHasInvalidNativeImageAtIndex): Ditto.
(WebCore::ImageFrameCache::frameSubsamplingLevelAtIndex): Ditto.
(WebCore::ImageFrameCache::frameSizeAtIndex): Ditto.
(WebCore::ImageFrameCache::frameBytesAtIndex): Ditto.
(WebCore::ImageFrameCache::frameDurationAtIndex): Ditto.
(WebCore::ImageFrameCache::frameOrientationAtIndex): Ditto.
(WebCore::ImageFrameCache::frameImageAtIndex): Ditto.

  • platform/graphics/ImageFrameCache.h: Added.

(WebCore::ImageFrameCache::setDecoder): Sets the current ImageDecoder which is owned by the ImageSource.
(WebCore::ImageFrameCache::decodedSize): Returns the size of the cached NativeImages.
(WebCore::ImageFrameCache::isDecoderAvailable): Returns whether an ImageDecoder is available.

  • platform/graphics/ImageSource.cpp:

(WebCore::ImageSource::ImageSource): Initializes the ImageFrameCache based on the image decoding state.
(WebCore::ImageSource::clearFrameBufferCache): Replace initialized() with isDecoderAvailable().
(WebCore::ImageSource::clear): Clears the ImageDecoder of the ImageFrameCache.
(WebCore::ImageSource::destroyDecodedData): Moved from BitmapImage.cpp.
(WebCore::ImageSource::destroyDecodedDataIfNecessary): Ditto.
(WebCore::ImageSource::ensureDecoderAvailable): Creates an ImageDecoder if necessary and sets it in ImageFrameCache.
(WebCore::ImageSource::setData):
(WebCore::ImageSource::dataChanged): Moved from BitmapImage.cpp.
(WebCore::ImageSource::isAllDataReceived):
(WebCore::ImageSource::maximumSubsamplingLevel): Rename calculateMaximumSubsamplingLevel() to maximumSubsamplingLevel().
(WebCore::ImageSource::subsamplingLevelForScale):
(WebCore::ImageSource::createFrameImageAtIndex):
(WebCore::ImageSource::dump):
(WebCore::ImageSource::calculateMaximumSubsamplingLevel): Deleted. Renamed to maximumSubsamplingLevel().
(WebCore::ImageSource::updateMetadata): Deleted. Not needed. Caching the image metadata is the responsibility of ImageFrameCache.
(WebCore::ImageSource::bytesDecodedToDetermineProperties): Deleted. Not needed.
(WebCore::ImageSource::isSizeAvailable): Deleted. Moved to ImageSource.h.
(WebCore::ImageSource::size): Deleted. Ditto.
(WebCore::ImageSource::sizeRespectingOrientation): Deleted. Ditto.
(WebCore::ImageSource::frameCount): Deleted. Ditto.
(WebCore::ImageSource::repetitionCount): Deleted. Ditto.
(WebCore::ImageSource::filenameExtension): Deleted. Ditto.
(WebCore::ImageSource::hotSpot): Deleted. Ditto.
(WebCore::ImageSource::frameIsCompleteAtIndex): Deleted. Ditto.
(WebCore::ImageSource::frameHasAlphaAtIndex): Deleted. Ditto.
(WebCore::ImageSource::frameAllowSubsamplingAtIndex): Deleted. Ditto.
(WebCore::ImageSource::frameSizeAtIndex): Deleted. Ditto.
(WebCore::ImageSource::frameBytesAtIndex): Deleted. Ditto.
(WebCore::ImageSource::frameDurationAtIndex): Deleted. Ditto.
(WebCore::ImageSource::frameOrientationAtIndex): Deleted. Ditto.

  • platform/graphics/ImageSource.h:

(WebCore::ImageSource::isDecoderAvailable): initialized() was renamed to isDecoderAvailable().
(WebCore::ImageSource::decodedSize): Send the query to ImageFrameCache.
(WebCore::ImageSource::isSizeAvailable): Ditto.
(WebCore::ImageSource::frameCount): Ditto.
(WebCore::ImageSource::repetitionCount): Ditto.
(WebCore::ImageSource::filenameExtension): Ditto.
(WebCore::ImageSource::hotSpot): Ditto.
(WebCore::ImageSource::size): Ditto.
(WebCore::ImageSource::sizeRespectingOrientation): Ditto.
(WebCore::ImageSource::singlePixelSolidColor): Ditto.
(WebCore::ImageSource::frameIsCompleteAtIndex): Ditto.
(WebCore::ImageSource::frameHasAlphaAtIndex): Ditto.
(WebCore::ImageSource::frameHasImageAtIndex): Ditto.
(WebCore::ImageSource::frameHasInvalidNativeImageAtIndex): Ditto.
(WebCore::ImageSource::frameSubsamplingLevelAtIndex): Ditto.
(WebCore::ImageSource::frameSizeAtIndex): Ditto.
(WebCore::ImageSource::frameBytesAtIndex): Ditto.
(WebCore::ImageSource::frameDurationAtIndex): Ditto.
(WebCore::ImageSource::frameOrientationAtIndex): Ditto.
(WebCore::ImageSource::frameImageAtIndex): Ditto.
(WebCore::ImageSource::decoder): Deleted. Not needed.
(WebCore::ImageSource::initialized): Deleted. Was renamed to isDecoderAvailable().
(WebCore::ImageSource::setNeedsUpdateMetadata): Deleted. Not needed.

  • platform/graphics/cairo/GraphicsContext3DCairo.cpp:

(WebCore::GraphicsContext3D::ImageExtractor::extractImage): AlphaOption and GammaAndColorProfileOption are moved out of ImageSource.

  • platform/graphics/cg/GraphicsContext3DCG.cpp:

(WebCore::GraphicsContext3D::ImageExtractor::extractImage): Ditto.

  • platform/graphics/cg/ImageDecoderCG.cpp:

(WebCore::ImageDecoder::ImageDecoder): Make the constructor of ImageDecoder be the same for all ports.
(WebCore::ImageDecoder::setData): Removed unused overloaded function.
(WebCore::ImageDecoder::size): Deleted. Removed unused function.

  • platform/graphics/cg/ImageDecoderCG.h:

(WebCore::ImageDecoder::create): Make the constructor of CG ImageDecoder be like the other ports.
(WebCore::ImageDecoder::isAllDataReceived): Make this property owned by ImageDecoder.

  • platform/graphics/cg/PDFDocumentImage.h: Change currentFrameKnownToBeOpaque() to be const.
  • platform/graphics/efl/GraphicsContext3DEfl.cpp:

(WebCore::GraphicsContext3D::ImageExtractor::extractImage): AlphaOption and GammaAndColorProfileOption are moved out of ImageSource.

  • platform/graphics/mac/ImageMac.mm:

(WebCore::BitmapImage::invalidatePlatformData): m_frames is owned by ImageFrameCache. ImageFrameCache::frameCount() has to
be equal to ImageFrame::m_frames.size().

  • platform/image-decoders/ImageDecoder.cpp:

(WebCore::ImageDecoder::create): AlphaOption and GammaAndColorProfileOption are moved out of ImageSource.

  • platform/image-decoders/ImageDecoder.h:

(WebCore::ImageDecoder::ImageDecoder): Ditto.
(WebCore::ImageDecoder::frameCount): Make frameCount const so it can be passed to the template function ImageFrameCache::metadata().

  • platform/image-decoders/bmp/BMPImageDecoder.cpp:

(WebCore::BMPImageDecoder::BMPImageDecoder): AlphaOption and GammaAndColorProfileOption are moved out of ImageSource.

  • platform/image-decoders/bmp/BMPImageDecoder.h:
  • platform/image-decoders/gif/GIFImageDecoder.cpp:

(WebCore::GIFImageDecoder::GIFImageDecoder): AlphaOption and GammaAndColorProfileOption are moved out of ImageSource.
(WebCore::GIFImageDecoder::frameCount): Make frameCount const so it can be passed to the template function ImageFrameCache::metadata().

  • platform/image-decoders/gif/GIFImageDecoder.h:
  • platform/image-decoders/gif/GIFImageReader.cpp:
  • platform/image-decoders/gif/GIFImageReader.h:
  • platform/image-decoders/ico/ICOImageDecoder.cpp:

(WebCore::ICOImageDecoder::ICOImageDecoder):
(WebCore::ICOImageDecoder::frameCount): Make frameCount const so it can be passed to the template function ImageFrameCache::metadata().
(WebCore::ICOImageDecoder::decode): Move resizing the m_frameBufferCache from ICOImageDecoder::frameCount() to ICOImageDecoder::decode().
(WebCore::ICOImageDecoder::decodeAtIndex): AlphaOption and GammaAndColorProfileOption are moved out of ImageSource.

  • platform/image-decoders/ico/ICOImageDecoder.h:
  • platform/image-decoders/jpeg/JPEGImageDecoder.cpp:

(WebCore::JPEGImageDecoder::JPEGImageDecoder): AlphaOption and GammaAndColorProfileOption are moved out of ImageSource.

  • platform/image-decoders/jpeg/JPEGImageDecoder.h:
  • platform/image-decoders/png/PNGImageDecoder.cpp:

(WebCore::PNGImageDecoder::PNGImageDecoder): AlphaOption and GammaAndColorProfileOption are moved out of ImageSource.

  • platform/image-decoders/png/PNGImageDecoder.h:

(WebCore::PNGImageDecoder::frameCount): Make frameCount const so it can be passed to the template function ImageFrameCache::metadata().

  • platform/image-decoders/webp/WEBPImageDecoder.cpp:

(WebCore::WEBPImageDecoder::WEBPImageDecoder):

  • platform/image-decoders/webp/WEBPImageDecoder.h:
  • svg/graphics/SVGImage.h: Make currentFrameKnownToBeOpaque() be const.
  • svg/graphics/SVGImageForContainer.h: Ditto.
18:02 Changeset [206480] by achristensen@apple.com
  • 4 edits in trunk

Correctly parse URLs with the first tab in the fragment
https://bugs.webkit.org/show_bug.cgi?id=162650

Reviewed by Saam Barati.

Source/WebCore:

Covered by a new API test.

  • platform/URLParser.cpp:

(WebCore::URLParser::fragmentSyntaxViolation):

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

18:01 Changeset [206479] by dbates@webkit.org
  • 3 edits in trunk/Source/WebKit2

NetworkLoad and PingLoad should use private inheritance
https://bugs.webkit.org/show_bug.cgi?id=162649

Reviewed by Alex Christensen.

Make NetworkLoad privately inherit from NetworkDataTaskClient and ResourceHandleClient,
and make the client callbacks from these interfaces private as this class implements
these interfaces.

Similarly, make PingLoad privately inherit from ResourceHandleClient.

  • NetworkProcess/NetworkLoad.h:
  • NetworkProcess/PingLoad.h:
17:37 Changeset [206478] by cdumez@apple.com
  • 6 edits
    1 add in trunk

<a download> does not honor the same-origin requirement
https://bugs.webkit.org/show_bug.cgi?id=156100

Reviewed by Alex Christensen.

Source/WebCore:

We now completely ignore the "download" attribute on anchors if the
href URL is cross-origin. We therefore navigate to the URL instead
of forcefully downloading it in this case and leave it up to the server
to give us the right headers if it should be downloaded. This is
conservative and matches Firefox.

Chrome and the HTML specification ignore only the suggested filename
if the URL is cross-origin but still download the file.

No new tests, updated existing test.

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::handleClick):

LayoutTests:

Update existing cross origin test as it expected the suggested filename to
be ignored but the file to still be downloaded (Chrome behavior) instead
of the download attribute to be completely ignored and therefore navigate
(Firefox behavior).

  • TestExpectations:
  • http/tests/resources/pass-notify-done.html: Added.
  • http/tests/security/anchor-download-block-crossorigin-expected.txt:
  • http/tests/security/anchor-download-block-crossorigin.html:
17:31 Changeset [206477] by achristensen@apple.com
  • 5 edits in trunk

URLParser: Handle windows drive letters after two slashes in relative URLs according to spec
https://bugs.webkit.org/show_bug.cgi?id=162646

Reviewed by Saam Barati.

Source/WebCore:

Covered by new API tests.

  • platform/URLParser.cpp:

(WebCore::CodePointIterator::codeUnitsSince):
(WebCore::URLParser::appendWindowsDriveLetter):
(WebCore::URLParser::parse):
(WebCore::isWindowsDriveLetter): Deleted.
(WebCore::URLParser::checkWindowsDriveLetter): Deleted.

  • platform/URLParser.h:

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

17:26 Changeset [206476] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

createError() and JSObject::calculatedClassName() should not throw any exceptions.
https://bugs.webkit.org/show_bug.cgi?id=162637

Reviewed by Geoffrey Garen.

  • runtime/ExceptionHelpers.cpp:

(JSC::createError):

  • assert that errorDescriptionForValue() did not throw an exception.
  • runtime/JSObject.cpp:

(JSC::JSObject::calculatedClassName):

  • the code already ensures that we always return a non-null String. Just need to make sure that it catches its own exceptions.
17:25 Changeset [206475] by achristensen@apple.com
  • 4 edits in trunk

URLs with @ in the user should only search for the last @ until the end of the authority and host
https://bugs.webkit.org/show_bug.cgi?id=162635

Reviewed by Geoffrey Garen.

Source/WebCore:

Covered by new API tests.

  • platform/URLParser.cpp:

(WebCore::URLParser::parse):

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

17:19 Changeset [206474] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Marking http/tests/xmlhttprequest/onabort-response-getters.html as failing on Sierra.
https://bugs.webkit.org/show_bug.cgi?id=162647

Unreviewed test gardening.

  • platform/mac/TestExpectations:
17:15 Changeset [206473] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Marking imported/w3c/web-platform-tests/shadow-dom/scroll-to-the-fragment-in-shadow-tree.html as failing on ios-simulator-wk2.
https://bugs.webkit.org/show_bug.cgi?id=162645

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
16:54 Changeset [206472] by fpizlo@apple.com
  • 3 edits
    1 add in trunk

B3::lowerMacros forgets to before->updatePredecessorsAfter() when lowering ChillMod on ARM64
https://bugs.webkit.org/show_bug.cgi?id=162644

Reviewed by Keith Miller.

JSTests:

  • stress/chill-mod-chill-mod.js: Added.

(foo):

Source/JavaScriptCore:

If you forget to update the predecessors of your successors, then bad things will happen if you
do something that requires accurate predecessors for correctness. lowerMacros() uses
BlockInsertionSet, which relies on accurate predecessors.

  • b3/B3LowerMacros.cpp:
16:41 Changeset [206471] by ryanhaddad@apple.com
  • 2 edits in branches/safari-602-branch/LayoutTests

Rebaseline fast/text/system-font-weight.html for ios-simulator.

Unreviewed test gardening.

  • platform/ios-simulator/fast/text/system-font-weight-expected.txt:
16:41 Changeset [206470] by jfbastien@apple.com
  • 7 edits
    1 add in trunk

Speed up Heap::isMarkedConcurrently
https://bugs.webkit.org/show_bug.cgi?id=162095

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

Speed up isMarkedConcurrently by using WTF::consumeLoad.

  • heap/MarkedBlock.h:

(JSC::MarkedBlock::areMarksStale):
(JSC::MarkedBlock::areMarksStaleWithDependency):
(JSC::MarkedBlock::isMarkedConcurrently): do away with the load-load fence

Source/WTF:

Heap::isMarkedConcurrently had a load-load fence which is expensive on weak memory ISAs such as ARM.

This patch is fairly perf-neutral overall, but the GC's instrumentation reports:

GC:Eden is 93% average runtime after change
GC:Full is 76% average runtime after change

The fence was there because:

  1. If the read of m_markingVersion in MarkedBlock::areMarksStale isn't what's expected then;
  2. The read of m_marks in MarkedBlock::isMarked needs to observe the value that was stored *before* m_markingVersion was stored.

This ordering isn't guaranteed on ARM, which has a weak memory model.

There are 3 ways to guarantee this ordering:

  1. Use a barrier instruction.
  2. Use a load-acquire (new in ARMv8).
  3. use ARM's address dependency rule, which C++ calls memory_order_consume.

In general:

  1. is slow but orders all of memory in an intuitive manner.
  2. is faster-ish and has the same property-ish.
  3. should be faster still, but *only orders dependent loads*. This last part is critical! Consume isn't an all-out replacement for acquire (acquire is rather a superset of consume).

ARM explains the address dependency rule in their document "barrier litmus tests and cookbook":

*Resolving by the use of barriers and address dependency*

There is a rule within the ARM architecture that:
Where the value returned by a read is used to compute the virtual address of a subsequent read or write (this is known as an address dependency), then these two memory accesses will be observed in program order. An address dependency exists even if the value read by the first read has no effect in changing the virtual address (as might be the case if the value returned is masked off before it is used, or if it had no effect on changing a predicted address value).
This restriction applies only when the data value returned from one read is used as a data value to calculate the address of a subsequent read or write. This does not apply if the data value returned from one read is used to determine the condition code flags, and the values of the flags are used for condition code evaluation to determine the address of a subsequent reads, either through conditional execution or the evaluation of a branch. This is known as a control dependency.
Where both a control and address dependency exist, the ordering behaviour is consistent with the address dependency.

C++'s memory_order_consume is unfortunately unimplemented by C++ compilers, and maybe unimplementable as spec'd. I'm working with interested folks in the committee to fix this situation: http://wg21.link/p0190r2

  • wtf/Atomics.h:

(WTF::zeroWithConsumeDependency): a 0 which carries a dependency
(WTF::consumeLoad): pixie magic

Tools:

  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WTF/Consume.cpp: Added.

(testConsume):
(TestWebKitAPI::TEST):

16:33 Changeset [206469] by cdumez@apple.com
  • 5 edits
    2 adds in trunk

It should be possible to dispatch events on documents created using DOMParser
https://bugs.webkit.org/show_bug.cgi?id=26147

Reviewed by Ryosuke Niwa.

Source/WebCore:

It should be possible to dispatch events on documents created using
DOMParser. It did not work because we were not setting the context
document on the newly created document in DOMParser::parseFromString().

Firefox and Chrome both already support this.

Test: fast/dom/parsed-document-dispatchEvent.html

  • xml/DOMParser.cpp:

(WebCore::DOMParser::DOMParser):
(WebCore::DOMParser::parseFromString):

  • xml/DOMParser.h:

(WebCore::DOMParser::create):

  • xml/DOMParser.idl:

LayoutTests:

Add layout test coverage.

  • fast/dom/parsed-document-dispatchEvent-expected.txt: Added.
  • fast/dom/parsed-document-dispatchEvent.html: Added.
16:20 Changeset [206468] by jfbastien@apple.com
  • 2 edits in trunk/Source/WTF

Atomics.h on Windows: remove seq_cst hack
https://bugs.webkit.org/show_bug.cgi?id=162022

Reviewed by Mark Lam.

No need to force access to seq_cst, always inlining fixes the MSVC warning.

  • wtf/Atomics.h:

(WTF::Atomic::compareExchangeWeak): remove seq_cst hack
(WTF::Atomic::compareExchangeStrong): remove seq_cst hack
(WTF::Atomic::exchangeAndAdd): remove seq_cst hack
(WTF::Atomic::exchange): remove seq_cst hack

15:17 Changeset [206467] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Marking fast/scrolling/rtl-scrollbars-alternate-iframe-body-dir-attr-does-not-update-scrollbar-placement.html as flaky on Sierra.
https://bugs.webkit.org/show_bug.cgi?id=162638

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
14:58 Changeset [206466] by mmaxfield@apple.com
  • 5 edits in trunk/Source/WebCore

[Cocoa] Improve performance of complex text codepath
https://bugs.webkit.org/show_bug.cgi?id=161936

Reviewed by Simon Fraser.

CoreText exposes a bit on the CTRunStatus which represents whether
the run actually uses the glyph origins concept introduced in
r205396. If this bit is not set, we can use the (slightly faster)
call to CTRunGetAdvances() instead of
CTRunGetBaseAdvancesAndOrigins(). In addition, if none of the runs
have this bit set, we don't need to allocate storage for the vector
of origins at all, thereby using less memory.

No new tests because there is no behavior change.

  • platform/graphics/mac/ComplexTextController.cpp:

(WebCore::ComplexTextController::advance):
(WebCore::ComplexTextController::adjustGlyphsAndAdvances):

  • platform/graphics/mac/ComplexTextController.h:

(WebCore::ComplexTextController::ComplexTextRun::glyphOrigins):
(WebCore::ComplexTextController::glyphOrigin):

  • platform/graphics/mac/ComplexTextControllerCoreText.mm:

(WebCore::ComplexTextController::ComplexTextRun::ComplexTextRun):

  • platform/spi/cocoa/CoreTextSPI.h:
14:54 Changeset [206465] by dewei_zhu@apple.com
  • 5 edits in trunk/Websites/perf.webkit.org

Extend perf dashboard to support multiple summary pages.
https://bugs.webkit.org/show_bug.cgi?id=162594

Reviewed by Ryosuke Niwa.

Start support multiple summary pages instead of one.
Specify 'summaryPages' as key that map to a list of summaries which follows
current 'summary' format in 'config.json' but with 2 more properties:

'name': specifying the name shows on perf dashboard,
'route': specifying the path to this page.

  • public/include/manifest.php:
  • public/v3/main.js:

(main):
(main.): Deleted.

  • public/v3/models/manifest.js:

(Manifest._didFetchManifest):
(Manifest):

  • public/v3/pages/summary-page.js:

(SummaryPage):
(SummaryPage.prototype.routeName):

14:05 Changeset [206464] by mattbaker@apple.com
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Refreshing while in Timelines-tab causes negative timestamps in Network-tab
https://bugs.webkit.org/show_bug.cgi?id=160051
<rdar://problem/27480122>

Reviewed by Brian Burg.

  • UserInterface/Views/NetworkGridContentView.js:

(WebInspector.NetworkGridContentView.prototype.get startTime):
(WebInspector.NetworkGridContentView.prototype.get zeroTime):
Use the cached start time for graph data source properties instead of
relying on the ruler, which requires a layout in order to be updated
for the first time.

14:04 Changeset [206463] by rniwa@webkit.org
  • 4 edits
    29 moves
    32 adds
    2 deletes in trunk

Import w3c shadow DOM tests and fix one assertion
https://bugs.webkit.org/show_bug.cgi?id=162629

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

Import shadow DOM tests in web-platform-tests as of 7163d6eeed81e9e020545fbe0c4b11fc2c5963cd
except untriaged tests for v0 API, which we obviously don't implement.

Most of these tests are the ones we upstreamed from fast/shadow-dom/.

  • web-platform-tests/shadow-dom/Document-prototype-adoptNode-expected.txt: Renamed from LayoutTests/fast/shadow-dom/Document-prototype-adoptNode-expected.txt.
  • web-platform-tests/shadow-dom/Document-prototype-adoptNode.html: Renamed from LayoutTests/fast/shadow-dom/Document-prototype-adoptNode.html.
  • web-platform-tests/shadow-dom/Document-prototype-currentScript-expected.txt: Renamed from LayoutTests/fast/shadow-dom/Document-prototype-currentScript-expected.txt.
  • web-platform-tests/shadow-dom/Document-prototype-currentScript.html: Renamed from LayoutTests/fast/shadow-dom/Document-prototype-currentScript.html.
  • web-platform-tests/shadow-dom/Document-prototype-importNode-expected.txt: Renamed from LayoutTests/fast/shadow-dom/Document-prototype-importNode-expected.txt.
  • web-platform-tests/shadow-dom/Document-prototype-importNode.html: Renamed from LayoutTests/fast/shadow-dom/Document-prototype-importNode.html.
  • web-platform-tests/shadow-dom/Element-interface-attachShadow-expected.txt: Added.
  • web-platform-tests/shadow-dom/Element-interface-attachShadow.html: Renamed from LayoutTests/fast/shadow-dom/Element-interface-attachShadow.html.
  • web-platform-tests/shadow-dom/Element-interface-shadowRoot-attribute-expected.txt: Renamed from LayoutTests/fast/shadow-dom/Element-interface-shadowRoot-attribute-expected.txt.
  • web-platform-tests/shadow-dom/Element-interface-shadowRoot-attribute.html: Renamed from LayoutTests/fast/shadow-dom/Element-interface-shadowRoot-attribute.html.
  • web-platform-tests/shadow-dom/Extensions-to-Event-Interface-expected.txt: Renamed from LayoutTests/fast/shadow-dom/Extensions-to-Event-Interface-expected.txt.
  • web-platform-tests/shadow-dom/Extensions-to-Event-Interface.html: Renamed from LayoutTests/fast/shadow-dom/Extensions-to-Event-Interface.html.
  • web-platform-tests/shadow-dom/HTMLSlotElement-interface-expected.txt: Renamed from LayoutTests/fast/shadow-dom/HTMLSlotElement-interface-expected.txt.
  • web-platform-tests/shadow-dom/HTMLSlotElement-interface.html: Renamed from LayoutTests/fast/shadow-dom/HTMLSlotElement-interface.html.
  • web-platform-tests/shadow-dom/MouseEvent-prototype-offsetX-offsetY-expected.txt: Renamed from LayoutTests/fast/shadow-dom/MouseEvent-prototype-offsetX-offsetY-expected.txt.
  • web-platform-tests/shadow-dom/MouseEvent-prototype-offsetX-offsetY.html: Renamed from LayoutTests/fast/shadow-dom/MouseEvent-prototype-offsetX-offsetY.html.
  • web-platform-tests/shadow-dom/Node-prototype-cloneNode-expected.txt: Added.
  • web-platform-tests/shadow-dom/Node-prototype-cloneNode.html: Renamed from LayoutTests/fast/shadow-dom/Node-prototype-cloneNode.html.
  • web-platform-tests/shadow-dom/OWNERS: Added.
  • web-platform-tests/shadow-dom/ShadowRoot-interface-expected.txt: Renamed from LayoutTests/fast/shadow-dom/ShadowRoot-interface-expected.txt.
  • web-platform-tests/shadow-dom/ShadowRoot-interface.html: Renamed from LayoutTests/fast/shadow-dom/ShadowRoot-interface.html.
  • web-platform-tests/shadow-dom/Slotable-interface-expected.txt: Renamed from LayoutTests/fast/shadow-dom/Slotable-interface-assignedSlot-expected.txt.
  • web-platform-tests/shadow-dom/Slotable-interface.html: Renamed from LayoutTests/fast/shadow-dom/Slotable-interface-assignedSlot.html.
  • web-platform-tests/shadow-dom/event-composed-expected.txt: Added.
  • web-platform-tests/shadow-dom/event-composed-path-expected.txt: Added.
  • web-platform-tests/shadow-dom/event-composed-path-with-related-target-expected.txt: Added.
  • web-platform-tests/shadow-dom/event-composed-path-with-related-target.html: Added.
  • web-platform-tests/shadow-dom/event-composed-path.html: Added.
  • web-platform-tests/shadow-dom/event-composed.html: Added.
  • web-platform-tests/shadow-dom/event-inside-shadow-tree-expected.txt: Renamed from LayoutTests/fast/shadow-dom/event-inside-shadow-tree-expected.txt.
  • web-platform-tests/shadow-dom/event-inside-shadow-tree.html: Renamed from LayoutTests/fast/shadow-dom/event-inside-shadow-tree.html.
  • web-platform-tests/shadow-dom/event-inside-slotted-node-expected.txt: Renamed from LayoutTests/fast/shadow-dom/event-inside-slotted-node-expected.txt.
  • web-platform-tests/shadow-dom/event-inside-slotted-node.html: Renamed from LayoutTests/fast/shadow-dom/event-inside-slotted-node.html.
  • web-platform-tests/shadow-dom/event-with-related-target-expected.txt: Renamed from LayoutTests/fast/shadow-dom/event-with-related-target-expected.txt.
  • web-platform-tests/shadow-dom/event-with-related-target.html: Renamed from LayoutTests/fast/shadow-dom/event-with-related-target.html.
  • web-platform-tests/shadow-dom/leaktests/get-elements-expected.txt: Added.
  • web-platform-tests/shadow-dom/leaktests/get-elements.html: Added.
  • web-platform-tests/shadow-dom/leaktests/html-collection-expected.txt: Added.
  • web-platform-tests/shadow-dom/leaktests/html-collection.html: Added.
  • web-platform-tests/shadow-dom/leaktests/w3c-import.log: Added.
  • web-platform-tests/shadow-dom/leaktests/window-frames-expected.txt: Added.
  • web-platform-tests/shadow-dom/leaktests/window-frames.html: Added.
  • web-platform-tests/shadow-dom/resources/Document-prototype-currentScript-helper.js: Renamed from LayoutTests/fast/shadow-dom/resources/Document-prototype-currentScript-helper.js.
  • web-platform-tests/shadow-dom/resources/event-path-test-helpers.js: Added.
  • web-platform-tests/shadow-dom/resources/shadow-dom-utils.js: Added.
  • web-platform-tests/shadow-dom/resources/shadow-dom.js: Added.
  • web-platform-tests/shadow-dom/resources/w3c-import.log: Added.
  • web-platform-tests/shadow-dom/scroll-to-the-fragment-in-shadow-tree-expected.txt: Added.
  • web-platform-tests/shadow-dom/scroll-to-the-fragment-in-shadow-tree.html: Added.
  • web-platform-tests/shadow-dom/slotchange-event-expected.txt: Renamed from LayoutTests/fast/shadow-dom/slotchange-event-expected.txt.
  • web-platform-tests/shadow-dom/slotchange-event.html: Renamed from LayoutTests/fast/shadow-dom/slotchange-event.html.
  • web-platform-tests/shadow-dom/slotchange-expected.txt: Added.
  • web-platform-tests/shadow-dom/slotchange.html: Added.
  • web-platform-tests/shadow-dom/slots-expected.txt: Added.
  • web-platform-tests/shadow-dom/slots-fallback-expected.txt: Added.
  • web-platform-tests/shadow-dom/slots-fallback.html: Added.
  • web-platform-tests/shadow-dom/slots.html: Added.
  • web-platform-tests/shadow-dom/w3c-import.log: Added.

Source/WebCore:

The assertion failure was caused by RelatedNodeRetargeter's constructor mixing up the ancestor tree scopes
for the target and the related target. Fixed the bug by reversing the two.

Tests: imported/w3c/web-platform-tests/shadow-dom/event-composed-path-with-related-target.html

  • dom/EventPath.cpp:

(WebCore::RelatedNodeRetargeter::RelatedNodeRetargeter): i and m_ancestorTreeScopes are for the related target
and j and targetTreeScopeAncestors are for the target.

LayoutTests:

Deleted the duplicated copies of tests in fast/shadow/ since this patch re-imports them via web-platform-tests.

  • fast/shadow-dom/Element-interface-attachShadow-expected.txt: Removed.
  • fast/shadow-dom/Node-prototype-cloneNode-expected.txt: Removed.
13:55 Changeset [206462] by cdumez@apple.com
  • 11 edits
    2 adds in trunk

It should be possible to dispatch events on documents that do not have a browsing context
https://bugs.webkit.org/show_bug.cgi?id=162620

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

  • web-platform-tests/dom/events/Event-dispatch-bubbles-false-expected.txt:
  • web-platform-tests/dom/events/Event-dispatch-bubbles-true-expected.txt:

Rebaseline several W3C tests now that more checks are passing.

  • web-platform-tests/dom/events/Event-dispatch-other-document-expected.txt: Added.
  • web-platform-tests/dom/events/Event-dispatch-other-document.html: Added.
  • web-platform-tests/dom/events/w3c-import.log:

Import more test coverage from W3C.

Source/WebCore:

It should be possible to dispatch events on documents that do not have a browsing
context (e.g. Documents created using DOMImplementation.createHTMLDocument()).
Gecko and Blink both allow this but WebKit did not.

The approach chosen to support this is similar to the one in Blink. When constructing
a new document (e.g. using DOMImplementation.createHTMLDocument()) we now keep track
of the context document. When requesting the scriptExecutionContext(), we now return
the context document if the document has one instead of the document itself.

Test: imported/w3c/web-platform-tests/dom/events/Event-dispatch-other-document.html

  • bindings/js/JSDocumentCustom.cpp:

(WebCore::JSDocument::visitAdditionalChildren):

  • dom/DOMImplementation.cpp:

(WebCore::DOMImplementation::createDocument):
(WebCore::DOMImplementation::createHTMLDocument):

  • dom/Document.cpp:

(WebCore::Document::create):
(WebCore::Document::cloneDataFromDocument):
(WebCore::Document::contextDocument):
(WebCore::Document::takeDOMWindowFrom): Deleted.

  • dom/Document.h:

(WebCore::Document::setContextDocument):
(WebCore::Node::scriptExecutionContext):
(WebCore::Node::isDocumentNode): Deleted.

  • dom/Document.idl:
  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::responseXML):

13:47 Changeset [206461] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Marking imported/w3c/web-platform-tests/media-source/mediasource-liveseekable.html as flaky on mac.
https://bugs.webkit.org/show_bug.cgi?id=162626

Unreviewed test gardening.

  • platform/mac/TestExpectations:
13:45 Changeset [206460] by annulen@yandex.ru
  • 2 edits in trunk/Source/WebKit/win

Use override specifiers in PluginView
https://bugs.webkit.org/show_bug.cgi?id=162628

Reviewed by Alex Christensen.

  • Plugins/PluginView.h:
13:32 Changeset [206459] by mark.lam@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

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

Reviewed by Keith Miller.

Re-landing minus the jsc.cpp and ExceptionHelpers.cpp changes. I'll address
those in a subsequent patch if the need manifests again in my testing.

  • API/JSObjectRef.cpp:

(JSObjectSetProperty):

  • This function already handles exceptions in its own way. We're honoring this contract and catching exceptions and passing it to the handler.
  • interpreter/Interpreter.cpp:

(JSC::notifyDebuggerOfUnwinding):

  • The debugger should not be throwing any exceptions.
  • profiler/ProfilerDatabase.cpp:

(JSC::Profiler::Database::save):

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

(JSC::JSModuleLoader::finishCreation):

  • The existing code already RELEASE_ASSERT that no exception was thrown. Hence, it's appropriate to use a CatchScope here.
  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::StackFrame::nameFromCallee):

  • The sampling profiler is doing a VMInquiry get here. It should never throw an exception. Hence, we'll just use a CatchScope and assert accordingly.
13:30 Changeset [206458] by commit-queue@webkit.org
  • 4 edits in trunk

[CMake] Use CMake to determine HAVE_* defines
https://bugs.webkit.org/show_bug.cgi?id=162368

Patch by Don Olmstead <don.olmstead@am.sony.com> on 2016-09-27
Reviewed by Alex Christensen.

.:

  • Source/cmake/OptionsCommon.cmake:

Source/WTF:

  • wtf/Platform.h:
13:07 Changeset [206457] by achristensen@apple.com
  • 7 edits in trunk

Implement URLParser::syntaxViolation
https://bugs.webkit.org/show_bug.cgi?id=162593

Reviewed by Geoffrey Garen.

Source/WebCore:

Most of the time when parsing URLs, we just look at the URL, find offsets of the host, path, query, etc.,
and the String can be used untouched. When this happens, we do not want to allocate and copy the String.
We want to just add a reference to an existing String.

Sometimes we need to canonicalize the String because there has been a syntaxViolation,
defined as any String that is different than its canonicalized URL String. In such cases we need to
allocate a new String and fill it with the canonicalized URL String. When a syntaxViolation happens for the
first time, we know that everything in the input String up to that point is equal to what it would have been
if we had canonicalized the beginning of the URL, copy it into a buffer, and continue parsing in a mode where
instead of just looking at the input URL String, we canonicalize each code point into the buffer.

Changes to behavior involve additional spec compliance with tabs and newlines in different places in URLs,
as well as additional spec compliance when parsing empty and null URLs relative to other URLs.
Both are covered by new API tests. Existing behavior covered by existing API tests.

This is about a 15% speed improvement on my URL parsing benchmark.

  • platform/URL.cpp:

(WebCore::assertProtocolIsGood):
(WebCore::URL::protocolIs):
(WebCore::protocolIs):

  • platform/URL.h:
  • platform/URLParser.cpp:

(WebCore::isTabOrNewline):
(WebCore::URLParser::incrementIteratorSkippingTabsAndNewlines):
(WebCore::URLParser::isWindowsDriveLetter):
(WebCore::URLParser::appendToASCIIBuffer):
(WebCore::URLParser::checkWindowsDriveLetter):
(WebCore::URLParser::shouldCopyFileURL):
(WebCore::URLParser::utf8PercentEncode):
(WebCore::URLParser::utf8QueryEncode):
(WebCore::URLParser::copyURLPartsUntil):
(WebCore::URLParser::syntaxViolation):
(WebCore::URLParser::fragmentSyntaxViolation):
(WebCore::URLParser::parsedDataView):
(WebCore::URLParser::currentPosition):
(WebCore::URLParser::URLParser):
(WebCore::URLParser::parse):
(WebCore::URLParser::parseAuthority):
(WebCore::URLParser::parseIPv4Number):
(WebCore::URLParser::parseIPv4Host):
(WebCore::URLParser::parseIPv6Host):
(WebCore::URLParser::parsePort):
(WebCore::URLParser::parseHostAndPort):
(WebCore::serializeURLEncodedForm):
(WebCore::URLParser::allValuesEqual):
(WebCore::URLParser::internalValuesConsistent):
(WebCore::URLParser::incrementIteratorSkippingTabAndNewLine): Deleted.
(WebCore::URLParser::syntaxError): Deleted.
(WebCore::parseIPv4Number): Deleted.

  • platform/URLParser.h:

(WebCore::URLParser::incrementIteratorSkippingTabsAndNewlines):

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

12:49 Changeset [206456] by bshafiei@apple.com
  • 4 edits in branches/safari-602-branch/Source/WebCore

Merge r206454. rdar://problem/28484193

12:49 Changeset [206455] by bshafiei@apple.com
  • 3 edits in branches/safari-602-branch/Source/WebCore

Merge r206444. rdar://problem/28496755

12:39 Changeset [206454] by wenson_hsieh@apple.com
  • 4 edits in trunk/Source/WebCore

Related videos on YouTube (and YouTube playlists) cause media controls to disappear
https://bugs.webkit.org/show_bug.cgi?id=162621
<rdar://problem/28484193>

Reviewed by Jer Noble.

Tweaks the main content media heuristic for better Now Playing behavior on YouTube by making the following
changes:

  • Remove the strict requirement for audio to be actively playing for the session to be able to show controls for the purpose of Now Playing, making it the same as our policy for the controls manager.
  • Make playback requirement restrictions apply only for the controls manager. Videos that do not autoplay will still have the correct behavior with respect to Now Playing, since we will bail in the hasEverNotifiedAboutPlaying() check.
  • Only consider the main content heuristic as preventing media controls from showing up for the purposes of the controls manager. Now Playing should instead account for this by preferring elements large enough for main content after collecting all of the candidate sessions.
  • html/HTMLMediaElement.cpp:

(WebCore::mediaElementSessionInfoForSession):
(WebCore::preferMediaControlsForCandidateSessionOverOtherCandidateSession):
(WebCore::HTMLMediaElement::updatePlayState):

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::canShowControlsManager):

  • platform/audio/mac/MediaSessionManagerMac.mm:

(WebCore::MediaSessionManagerMac::sessionWillBeginPlayback):

12:35 Changeset [206453] by cdumez@apple.com
  • 6 edits in trunk

Second parameter to MutationObserver.observe() should be optional
https://bugs.webkit.org/show_bug.cgi?id=162627

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C test now that one more check is passing.

  • web-platform-tests/dom/interfaces-expected.txt:

Source/WebCore:

Second parameter to MutationObserver.observe() should be optional:

Firefox agrees with the specification. There is no real behavior change
except that MutationObserver.prototype.observe.length is now 1 instead
of 2. Passing only one parameter will still throw a TypeError because
the Dictionary is empty. However, this parameter needs to be marked as
optional because Web IDL requires the last parameter to be optional if
it is a Dictionary.

No new tests, rebaselined existing test.

  • dom/MutationObserver.idl:

LayoutTests:

Rebaseline existing test now that the exception messages are slightly
different.

  • fast/dom/MutationObserver/observe-exceptions-expected.txt:
12:32 Changeset [206452] by andersca@apple.com
  • 3 edits in trunk/Tools

Turns out OptionSet.cpp wasn't added to the right target. Add it and fix the build for real.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WTF/OptionSet.cpp:

(TestWebKitAPI::TEST):

12:26 Changeset [206451] by andersca@apple.com
  • 2 edits in trunk/Tools

Try to fix the GTK+ build.

  • TestWebKitAPI/Tests/WTF/OptionSet.cpp:

(TestWebKitAPI::TEST):

12:08 Changeset [206450] by andersca@apple.com
  • 23 edits in trunk

PlatformEvent::m_modifiers should be an OptionSet
https://bugs.webkit.org/show_bug.cgi?id=162326

Reviewed by Daniel Bates.

Source/WebCore:

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleAccessKey):

  • page/EventHandler.h:
  • page/mac/EventHandlerMac.mm:

(WebCore::EventHandler::accessKeyModifiers):

  • platform/PlatformEvent.h:

(WebCore::PlatformEvent::shiftKey):
(WebCore::PlatformEvent::ctrlKey):
(WebCore::PlatformEvent::altKey):
(WebCore::PlatformEvent::metaKey):
(WebCore::PlatformEvent::modifiers):
(WebCore::PlatformEvent::PlatformEvent):

  • platform/PlatformKeyboardEvent.h:

(WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):

  • platform/mac/PlatformEventFactoryMac.mm:

(WebCore::modifiersForEvent):
(WebCore::typeForEvent):

  • replay/SerializationMethods.cpp:

(JSC::EncodingTraits<PlatformKeyboardEvent>::encodeValue):
(JSC::EncodingTraits<PlatformKeyboardEvent>::decodeValue):

  • replay/WebInputs.json:

Source/WebKit2:

  • Shared/WebEventConversion.cpp:

(WebKit::WebKit2PlatformMouseEvent::WebKit2PlatformMouseEvent):
(WebKit::WebKit2PlatformWheelEvent::WebKit2PlatformWheelEvent):
(WebKit::WebKit2PlatformKeyboardEvent::WebKit2PlatformKeyboardEvent):
(WebKit::WebKit2PlatformGestureEvent::WebKit2PlatformGestureEvent):

Source/WTF:

  • wtf/OptionSet.h:

(WTF::OptionSet::operator!=):
(WTF::OptionSet::operator-):

11:31 Changeset [206449] by mitz@apple.com
  • 18 edits
    2 adds in trunk

[iOS] REGRESSION (r182126): Selection highlight and handles aren’t visible with WKSelectionGranularityCharacter
https://bugs.webkit.org/show_bug.cgi?id=162577
<rdar://problem/28481984>

Reviewed by Simon Fraser.

Source/WebKit2:

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _uiTextSelectionRectViews]): Added this method in the WKTesting category, which

uses UIKit internals to get the views used for the selection highlight.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _selectionClipRect]): When selection is not confined to a form control or

content-editable element, return the null rect to indicate no clipping, rather than
clipping to the empty rect at the origin.

Tools:

  • DumpRenderTree/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::selectionRangeViewRects): Returns null.

  • TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl: Declared new selectionRangeViewRects attribute.
  • TestRunnerShared/UIScriptContext/UIScriptContext.h:

(WTR::UIScriptContext::jsContext): Added this public accessor.

  • TestRunnerShared/UIScriptContext/UIScriptController.cpp:

(WTR::selectionRangeViewRects): Generic implementation that returns null.

  • TestRunnerShared/UIScriptContext/UIScriptController.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::updateTestOptionsFromTestHeader): Parse the new useCharacterSelectionGranularity

option.

  • WebKitTestRunner/TestOptions.h: Added new useCharacterSelectionGranularity option.
  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::TestController::platformCreateWebView): Set the configuration’s selectionGranularity

property based on the new option.

  • WebKitTestRunner/ios/PlatformWebViewIOS.mm:

(WTR::PlatformWebView::viewSupportsOptions): Compare selection granularity option values.

  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::selectionRangeViewRects): iOS-specific implementation that calls

the new -[WKWebView _uiTextSelectionRectViews] and returns an array of view frame
dictionaries.

LayoutTests:

  • TestExpectations:
  • editing/selection/character-granularity-rect-expected.txt: Added.
  • editing/selection/character-granularity-rect.html: Added.
  • platform/ios-simulator-wk2/TestExpectations:
11:10 Changeset [206448] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebCore

Merge r206415. rdar://problem/28484047

11:10 Changeset [206447] by bshafiei@apple.com
  • 6 edits in branches/safari-602-branch/Source/WebCore

Merge r206399. rdar://problem/28457219

11:03 Changeset [206446] by gns@gnome.org
  • 2 edits in trunk/Source/WebCore

[GTK] Handle Wayland & X11 correctly for GST_GL
https://bugs.webkit.org/show_bug.cgi?id=162619

Reviewed by Carlos Garcia Campos.

The checks for GST_GL consider X11 and Wayland are exclusive alternatives, but it
turns out we can enable both! We need to check them independently and also include
a runtime check.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::ensureGstGLContext): fix checks for X11 and
Wayland to handle the case where both are enabled. Includes a runtime check.

10:58 Changeset [206445] by eric.carlson@apple.com
  • 14 edits in trunk/Source/WebCore

[MediaStream] Restructure MediaConstraints classes
https://bugs.webkit.org/show_bug.cgi?id=162571

Reviewed by Jer Noble.

No new tests, no functional changes.

  • Modules/mediastream/MediaConstraintsImpl.cpp:

(WebCore::MediaConstraintsImpl::initialize): Deleted, no longer used.

  • Modules/mediastream/MediaConstraintsImpl.h:
  • bindings/js/JSMediaDevicesCustom.cpp:

(WebCore::createStringConstraint): Return Optional<> instead of RefPtr<>.
(WebCore::createBooleanConstraint): Ditto.
(WebCore::createDoubleConstraint): Ditto.
(WebCore::createIntConstraint): Ditto.
(WebCore::parseMediaTrackConstraintSetForKey): Deal with above change.

  • platform/mediastream/CaptureDeviceManager.cpp:

(CaptureDeviceManager::verifyConstraintsForMediaType): Use constraints.mandatoryConstraints.filter

instead of direct enumeration.

(CaptureDeviceManager::sessionSupportsConstraint): Use downcast<>.
(CaptureDeviceManager::isSupportedFrameRate): Ditto.

  • platform/mediastream/MediaConstraints.cpp:

(WebCore::StringConstraint::find): Lose the ConstraintType parameter.
(WebCore::StringConstraint::merge): Use downcast<>.
(WebCore::FlattenedConstraint::set): Use ConstraintHolder.
(WebCore::FlattenedConstraint::merge): Ditto.
(WebCore::MediaTrackConstraintSetMap::forEach): New.
(WebCore::MediaTrackConstraintSetMap::filter): Ditto.
(WebCore::MediaTrackConstraintSetMap::isEmpty): Ditto.
(WebCore::MediaTrackConstraintSetMap::set): Ditto.
(WebCore::MediaConstraint::copy): Deleted.
(WebCore::IntConstraint::copy): Deleted.
(WebCore::DoubleConstraint::copy): Deleted.
(WebCore::BooleanConstraint::copy): Deleted.
(WebCore::StringConstraint::copy): Deleted.

  • platform/mediastream/MediaConstraints.h:

(WebCore::MediaConstraint::MediaConstraint):
(WebCore::MediaConstraint::isEmpty):
(WebCore::MediaConstraint::isMandatory):
(WebCore::MediaConstraint::merge):
(WebCore::MediaConstraint::isInt):
(WebCore::MediaConstraint::isDouble):
(WebCore::MediaConstraint::isBoolean):
(WebCore::MediaConstraint::isString):
(WebCore::MediaConstraint::dataType):
(WebCore::MediaConstraint::constraintType):
(WebCore::NumericConstraint::getMin):
(WebCore::NumericConstraint::getMax):
(WebCore::NumericConstraint::getExact):
(WebCore::NumericConstraint::getIdeal):
(WebCore::NumericConstraint::fitnessDistance):
(WebCore::NumericConstraint::validForRange):
(WebCore::NumericConstraint::find):
(WebCore::NumericConstraint::NumericConstraint):
(WebCore::NumericConstraint::innerMerge):
(WebCore::FlattenedConstraint::isEmpty):
(WebCore::FlattenedConstraint::iterator::iterator):
(WebCore::FlattenedConstraint::iterator::operator*):
(WebCore::FlattenedConstraint::iterator::operator++):
(WebCore::FlattenedConstraint::iterator::operator==):
(WebCore::FlattenedConstraint::iterator::operator!=):
(WebCore::FlattenedConstraint::begin):
(WebCore::FlattenedConstraint::end):
(WebCore::FlattenedConstraint::ConstraintHolder::create):
(WebCore::FlattenedConstraint::ConstraintHolder::~ConstraintHolder):
(WebCore::FlattenedConstraint::ConstraintHolder::constraint):
(WebCore::FlattenedConstraint::ConstraintHolder::dataType):
(WebCore::FlattenedConstraint::ConstraintHolder::constraintType):
(WebCore::FlattenedConstraint::ConstraintHolder::ConstraintHolder):
(WebCore::MediaConstraint::getMin): Deleted.
(WebCore::MediaConstraint::getMax): Deleted.
(WebCore::MediaConstraint::getExact): Deleted.
(WebCore::MediaConstraint::getIdeal): Deleted.
(WebCore::MediaConstraint::validForRange): Deleted.
(WebCore::MediaConstraint::find): Deleted.
(WebCore::MediaConstraint::fitnessDistance): Deleted.
(WebCore::MediaConstraint::type): Deleted.

  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::fitnessDistance): Use downcast<>.
(WebCore::applyNumericConstraint):
(WebCore::RealtimeMediaSource::applyConstraint): Ditto.
(WebCore::RealtimeMediaSource::selectSettings): Ditto. Use constraints.mandatoryConstraints.filter

instead of direct enumeration.

(WebCore::RealtimeMediaSource::applyConstraints):
(WebCore::RealtimeMediaSource::setSampleRate): Sample rate is an int, not a double.
(WebCore::RealtimeMediaSource::setSampleSize): Sample size is also an int.

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

(WebCore::AVCaptureDeviceManager::sessionSupportsConstraint): Use downcast<>.

  • platform/mock/MediaConstraintsMock.cpp:

(WebCore::isIntMediaConstraintSatisfiable): Use downcast<>.
(WebCore::isDoubleMediaConstraintSatisfiable): Ditto.
(WebCore::isBooleanMediaConstraintSatisfiable): Ditto.
(WebCore::isStringMediaConstraintSatisfiable):
(WebCore::isSatisfiable):
(WebCore::MediaConstraintsMock::verifyConstraints): Use constraints.mandatoryConstraints.filter

instead of direct enumeration.

  • platform/mock/MediaConstraintsMock.h:
  • platform/mock/MockRealtimeAudioSource.h:
  • platform/mock/MockRealtimeMediaSourceCenter.cpp:

(WebCore::MockRealtimeMediaSourceCenter::createMediaStream):

10:54 Changeset [206444] by wenson_hsieh@apple.com
  • 3 edits in trunk/Source/WebCore

Some Now Playing behavior is broken after r206315
https://bugs.webkit.org/show_bug.cgi?id=162625
<rdar://problem/28496755>

Reviewed by Jer Noble.

Reverts the part of our heuristic that disables Now Playing in active tabs in the main window.

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::pageAllowsNowPlayingControls):

  • page/Page.cpp:

(WebCore::Page::setViewState):

10:33 Changeset [206443] by ryanhaddad@apple.com
  • 2 edits in trunk/Source/WebCore

Remove an unneeded assert in InspectorOverlay.cpp
https://bugs.webkit.org/show_bug.cgi?id=162581

Reviewed by Alexey Proskuryakov.

This assertion was added to catch unknown issues, but it is firing frequently enough on certain Inspector
tests that it is causing more harm than good.

  • inspector/InspectorOverlay.cpp:

(WebCore::buildQuadObjectForCSSRegionContentClip):
(WebCore::evaluateCommandInOverlay):

10:25 Changeset [206442] by mattbaker@apple.com
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Unfocusing / Focusing inspector window should not change ContentView
https://bugs.webkit.org/show_bug.cgi?id=162572
<rdar://problem/28479562>

Reviewed by Brian Burg.

Improve NavigationSidebarPanel logic for coordinating selection between trees.
When tree selection changes, the most recent selection should be restored
the next time the tree is focused.

The sidebar should also handle focusing a tree for the first time, in
which no previous selection exists, and focusing a tree that has had its
previous selection filtered out (hidden).

  • UserInterface/Views/NavigationSidebarPanel.js:

(WebInspector.NavigationSidebarPanel.prototype._contentTreeOutlineDidFocus):
(WebInspector.NavigationSidebarPanel.prototype._contentTreeOutlineTreeSelectionDidChange):
Restoring the last deselected element, instead of the last selected element
only works when the selection is moving from one tree to another. When
the elements belong to the same tree the newly selected element won't
be saved until the next selection change. If the window loses and regains
the focus before then, the tree will restore the previous selection,
effectively reverting the last selection change.

10:18 Changeset [206441] by dbates@webkit.org
  • 2 edits in trunk/Tools

Cannot run dump-class-layout; dies with "global name 'lldb' is not defined"
https://bugs.webkit.org/show_bug.cgi?id=162585

Reviewed by Simon Fraser.

Import the lldb module into the global namespace.

Currently dump-class-layout imports the lldb Python module using the import statement
from the helper function import_lldb. The import statement imports the names of the
specified module into the scope of import_lldb(); => the names imported from this
module cannot be accessed outside the scope of import_lldb(). Other functions in
this script assume that the lldb module was imported into the global scope. We should
import the module lldb into the global scope, if it exists, so that these functions
can find it. Otherwise, we should emit a human readable error message that explains
that we failed to import the lldb module.

Also remove some unnecessary semicolon characters.

  • Scripts/dump-class-layout:

(import_lldb):

10:14 Changeset [206440] by jer.noble@apple.com
  • 42 edits
    10 deletes in trunk

Remove deprecated ENCRYPTED_MEDIA implementation.
https://bugs.webkit.org/show_bug.cgi?id=161010

Source/JavaScriptCore:

Reviewed by Eric Carlson.

Remove ENABLE_ENCRYPTED_MEDIA.

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Reviewed by Eric Carlson.

Remove all references to the deprecated ENABLE_ENCRYPTED_MEDIA (leaving in place
the soon-to-be deprecated ENABLE_ENCRYPTED_MEDIA_V2).

  • CMakeLists.txt:
  • Configurations/FeatureDefines.xcconfig:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/objc/DOMHTMLMediaElement.h:
  • bindings/objc/DOMHTMLMediaElement.mm:

(-[DOMHTMLMediaElement canPlayType:]):
(-[DOMHTMLMediaElement canPlayType:keySystem:]): Deleted.

  • bindings/js/JSDictionary.cpp:
  • bindings/js/JSDictionary.h:
  • dom/Element.idl:
  • dom/EventNames.in:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::selectNextSourceChild):
(WebCore::exceptionCodeForMediaKeyException): Deleted.
(WebCore::HTMLMediaElement::canPlayType): Deleted.
(WebCore::HTMLMediaElement::mediaPlayerKeyAdded): Deleted.
(WebCore::HTMLMediaElement::mediaPlayerKeyError): Deleted.
(WebCore::HTMLMediaElement::mediaPlayerKeyMessage): Deleted.
(WebCore::HTMLMediaElement::mediaPlayerKeyNeeded): Deleted.

  • html/HTMLMediaElement.h:
  • html/HTMLMediaElement.idl:
  • html/MediaError.h:
  • html/MediaError.idl:
  • html/MediaKeyError.h:
  • html/MediaKeyError.idl:
  • html/MediaKeyEvent.cpp: Removed.

(WebCore::MediaKeyEvent::MediaKeyEvent): Deleted.
(WebCore::MediaKeyEvent::~MediaKeyEvent): Deleted.
(WebCore::MediaKeyEvent::eventInterface): Deleted.

  • html/MediaKeyEvent.h: Removed.
  • html/MediaKeyEvent.idl: Removed.
  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::nextBestMediaEngine):
(WebCore::MediaPlayer::generateKeyRequest): Deleted.
(WebCore::MediaPlayer::addKey): Deleted.
(WebCore::MediaPlayer::cancelKeyRequest): Deleted.
(WebCore::MediaPlayer::keyAdded): Deleted.
(WebCore::MediaPlayer::keyError): Deleted.
(WebCore::MediaPlayer::keyMessage): Deleted.
(WebCore::MediaPlayer::keyNeeded): Deleted.

  • platform/graphics/MediaPlayer.h:

(WebCore::MediaPlayerClient::mediaPlayerKeyAdded): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerKeyError): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerKeyMessage): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerKeyNeeded): Deleted.

  • platform/graphics/MediaPlayerPrivate.h:

(WebCore::MediaPlayerPrivateInterface::addKey): Deleted.
(WebCore::MediaPlayerPrivateInterface::generateKeyRequest): Deleted.
(WebCore::MediaPlayerPrivateInterface::cancelKeyRequest): Deleted.

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
  • platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm:

(WebCore::CDMSessionAVContentKeySession::update):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::supportsKeySystem):
(WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource):
(WebCore::MediaPlayerPrivateAVFoundationObjC::supportsType): Deleted.
(WebCore::MediaPlayerPrivateAVFoundationObjC::generateKeyRequest): Deleted.
(WebCore::MediaPlayerPrivateAVFoundationObjC::addKey): Deleted.
(WebCore::MediaPlayerPrivateAVFoundationObjC::cancelKeyRequest): Deleted.

  • platform/graphics/mac/MediaPlayerPrivateQTKit.mm:

(WebCore::MediaPlayerPrivateQTKit::supportsType): Deleted.

  • testing/MockCDM.h:

Source/WebKit/mac:

Remove ENABLE_ENCRYPTED_MEDIA.

Reviewed by Eric Carlson.

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

Reviewed by Eric Carlson.

Remove ENABLE_ENCRYPTED_MEDIA.

  • Configurations/FeatureDefines.xcconfig:

Source/WTF:

Reviewed by Eric Carlson.

Remove ENABLE_ENCRYPTED_MEDIA.

  • wtf/FeatureDefines.h:

Tools:

Reviewed by Eric Carlson.

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

LayoutTests:

Reviewed by Eric Carlson.

  • fast/events/constructors/media-key-event-constructor-expected.txt: Removed.
  • fast/events/constructors/media-key-event-constructor.html: Removed.
  • media/encrypted-media/encrypted-media-can-play-type-expected.txt: Removed.
  • media/encrypted-media/encrypted-media-can-play-type-webm-expected.txt: Removed.
  • media/encrypted-media/encrypted-media-can-play-type-webm.html: Removed.
  • media/encrypted-media/encrypted-media-can-play-type.html: Removed.
  • platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac/fast/events/constructors/media-key-event-constructor-expected.txt: Removed.
  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
09:58 Changeset [206439] by cdumez@apple.com
  • 17 edits
    1 add in trunk

[WK2] Navigating to a Blob URL does not trigger a download
https://bugs.webkit.org/show_bug.cgi?id=162574

Reviewed by Darin Adler.

Source/WebKit2:

Add support for converting Blob URL loads into downloads.

  • NetworkProcess/Downloads/BlobDownloadClient.cpp:

(WebKit::BlobDownloadClient::didReceiveResponseAsync):
Make sure we return a valid suggested filename because the client side (Safari)
does not deal with empty suggested filenames. Use "unknown" by default to
match the default suggested filename of non-Blob downloads.

  • NetworkProcess/Downloads/Download.cpp:

(WebKit::Download::startWithHandle):

  • NetworkProcess/Downloads/Download.h:
  • NetworkProcess/Downloads/DownloadManager.cpp:

(WebKit::DownloadManager::convertHandleToDownload):

  • NetworkProcess/Downloads/DownloadManager.h:
  • NetworkProcess/Downloads/ios/DownloadIOS.mm:

(WebKit::Download::startNetworkLoadWithHandle):

  • NetworkProcess/Downloads/mac/DownloadMac.mm:

(WebKit::Download::startNetworkLoadWithHandle):

  • NetworkProcess/Downloads/soup/DownloadSoup.cpp:

(WebKit::Download::startNetworkLoadWithHandle):

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::convertMainResourceLoadToDownload):

  • NetworkProcess/NetworkLoad.h:

(WebKit::NetworkLoad::handle):

Tools:

Add API that tests navigating to a Blob URL and checks that that the load
properly gets converted into a download.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/Download.mm:

(-[BlobDownloadDelegate _downloadDidStart:]):
(-[BlobDownloadDelegate _download:didReceiveResponse:]):
(-[BlobDownloadDelegate _download:didReceiveData:]):
(-[BlobDownloadDelegate _download:decideDestinationWithSuggestedFilename:allowOverwrite:]):
(-[BlobDownloadDelegate _downloadDidFinish:]):
(-[DownloadBlobURLNavigationDelegate webView:decidePolicyForNavigationAction:decisionHandler:]):
(TEST):

  • TestWebKitAPI/Tests/WebKit2Cocoa/DownloadRequestBlobURL.html: Added.

LayoutTests:

Rebaseline now that the suggested download name is "unknown" by default
for blob downloads as well.

  • fast/dom/HTMLAnchorElement/anchor-download-expected.txt:
  • fast/dom/HTMLAnchorElement/anchor-nodownload-set-expected.txt:
09:47 Changeset [206438] by commit-queue@webkit.org
  • 9 edits in trunk/Source

[Fetch API] Use Ref<const T> in FetchBody::m_data variant
https://bugs.webkit.org/show_bug.cgi?id=162599

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

Source/WebCore:

Covered by existing tests.

Using Ref<const T> for all variants of m_data except for FormData since FetchBody is actually creating it and may modifiy it.
Updating blob loading code path to use a const Blob& instead of a Blob&.

  • Modules/fetch/FetchBody.cpp:

(WebCore::FetchBody::FetchBody):
(WebCore::FetchBody::extract):
(WebCore::FetchBody::clone):

  • Modules/fetch/FetchBody.h:

(WebCore::FetchBody::blobBody):
(WebCore::FetchBody::arrayBufferBody):
(WebCore::FetchBody::arrayBufferViewBody):

  • Modules/fetch/FetchBodyOwner.cpp:

(WebCore::FetchBodyOwner::loadBlob):

  • Modules/fetch/FetchBodyOwner.h:
  • Modules/fetch/FetchLoader.cpp:

(WebCore::FetchLoader::start):

  • Modules/fetch/FetchLoader.h:

Source/WTF:

Enabling to use DeferrableRefCounted<const T> by making m_refCount mutable.

  • wtf/DeferrableRefCounted.h:

(WTF::DeferrableRefCountedBase::ref):
(WTF::DeferrableRefCountedBase::derefBase):
(WTF::DeferrableRefCounted::deref):

09:33 WebKitGTK/Releasing edited by mcatanzaro@igalia.com
Add item to update UA versions (diff)
09:02 Changeset [206437] by annulen@yandex.ru
  • 7 edits in trunk

[cmake] Simplify Clang checks and prepare for compiler ID split
https://bugs.webkit.org/show_bug.cgi?id=162609

Reviewed by Michael Catanzaro.

CMake 3.x introduces separate compiler id for AppleClang, making condition
(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") inappropriate as check for
any clang version. Introduce COMPILER_IS_CLANG instead, which is also
shorter that CMAKE_CXX_COMPILER_ID comparison.

  • CMakeLists.txt:
  • Source/cmake/OptionsCommon.cmake:
  • Source/cmake/WebKitHelpers.cmake:
  • Source/cmake/OptionsEfl.cmake: Use CMAKE_COMPILER_IS_GNUCXX instead of

!Clang check because this is what was really meant here.

08:42 Changeset [206436] by mcatanzaro@igalia.com
  • 2 edits in trunk/Source/WebCore

Unreviewed typo fix

  • platform/gtk/UserAgentGtk.cpp:

(WebCore::standardUserAgent):

07:32 Changeset [206435] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

Clean-up CachedImage constructor
https://bugs.webkit.org/show_bug.cgi?id=162601

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

No change of behavior.
Removing an unused constructor.
Specializing one constructor for manually cached images.
Cleaning initialization of some CachedImage fields.

  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::CachedImage):

  • loader/cache/CachedImage.h:
  • loader/cache/MemoryCache.cpp:

(WebCore::MemoryCache::addImageToCache):

06:50 Changeset [206434] by mcatanzaro@igalia.com
  • 4 edits in trunk

[GTK] Install binaries to pkglibexecdir rather than bindir
https://bugs.webkit.org/show_bug.cgi?id=162602

Reviewed by Carlos Garcia Campos.

Source/JavaScriptCore:

Install jsc shell to LIBEXEC_INSTALL_DIR rather than EXEC_INSTALL_DIR.

Note these locations are the same on non-GTK ports.

  • shell/CMakeLists.txt:

Tools:

Install MiniBrowser to LIBEXEC_INSTALL_DIR rather than EXEC_INSTALL_DIR.

  • MiniBrowser/gtk/CMakeLists.txt:
06:40 Changeset [206433] by mcatanzaro@igalia.com
  • 2 edits in trunk/Source/WebCore

[FreeType] Add comment further justifying use of FT_LOAD_FORCE_AUTOHINT
https://bugs.webkit.org/show_bug.cgi?id=162607

Reviewed by Martin Robinson.

  • platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp:

(WebCore::FontCustomPlatformData::FontCustomPlatformData):

06:20 Changeset [206432] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Build fails for X11+EGL due to missing gst_gl_display_x11_new_with_display()
https://bugs.webkit.org/show_bug.cgi?id=162606

Patch by Mario Sanchez Prada <mario@endlessm.com> on 2016-09-27
Reviewed by Gustavo Noronha Silva.

Use the right check to retrieve the right instance of GstGLDisplay
depending on whether we're using GLX or EGL, not X11 or Wayland.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::ensureGstGLContext):

06:11 Changeset [206431] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[GTK][EFL] imported/w3c/web-platform-tests/fetch/api/basic/accept-header.html is failing
https://bugs.webkit.org/show_bug.cgi?id=162547

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

Covered by existing tests.

  • platform/network/soup/SoupNetworkSession.cpp:

(WebCore::SoupNetworkSession::createTestingSession): Setting the underlying soupSession.

05:31 Changeset [206430] by annulen@yandex.ru
  • 4 edits in trunk

[cmake] Added COMPILER_IS_GCC_OR_CLANG variable to simplify conditions.
https://bugs.webkit.org/show_bug.cgi?id=162605

Reviewed by Michael Catanzaro.

  • CMakeLists.txt:
  • Source/cmake/OptionsCommon.cmake:
  • Source/cmake/WebKitHelpers.cmake:
04:46 Changeset [206429] by gyuyoung.kim@webkit.org
  • 2 edits in trunk/Tools

[EFL] Locate color picker popup to center of window
https://bugs.webkit.org/show_bug.cgi?id=162540

Reviewed by Michael Catanzaro.

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

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

  • MiniBrowser/efl/main.c:

(_color_picker_request_cb):

04:24 Changeset [206428] by mcatanzaro@igalia.com
  • 2 edits in trunk/Tools

[GTK] Disable ACCELERATED_2D_CANVAS when using build-webkit
https://bugs.webkit.org/show_bug.cgi?id=162600

Reviewed by Carlos Garcia Campos.

  • Scripts/webkitperl/FeatureList.pm:
03:49 Changeset [206427] by mcatanzaro@igalia.com
  • 2 edits in trunk/Source/WebKit2

[GTK] Unreviewed typo fix

  • UIProcess/API/gtk/WebKitWebInspector.cpp:

(webkit_web_inspector_class_init):

02:27 Changeset [206426] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

[GTK] Mac defaults are used for key shortcuts on Linux
https://bugs.webkit.org/show_bug.cgi?id=162564

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

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

  • UserInterface/Test.html: Include Platform.js for the

WebInspector.Platform definition.

  • UserInterface/Views/CodeMirrorAdditions.js:
02:10 Changeset [206425] by gns@gnome.org
  • 3 edits in releases/WebKitGTK/webkit-2.14/Source/WebKit2

Merge 206424 - [GTK] Should check whether GDK can use GL before asking it to
https://bugs.webkit.org/show_bug.cgi?id=162598

Reviewed by Michael Catanzaro.

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

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

  • UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:

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

  • UIProcess/gtk/AcceleratedBackingStoreWayland.h:
02:06 Changeset [206424] by gns@gnome.org
  • 3 edits in trunk/Source/WebKit2

[GTK] Should check whether GDK can use GL before asking it to
https://bugs.webkit.org/show_bug.cgi?id=162598

Reviewed by Michael Catanzaro.

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

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

  • UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:

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

  • UIProcess/gtk/AcceleratedBackingStoreWayland.h:
01:47 Changeset [206423] by commit-queue@webkit.org
  • 8 edits in trunk/Source/WebCore

[Fetch API] Remove ReadableStreamSource firstReadCallback
https://bugs.webkit.org/show_bug.cgi?id=162339

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

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

  • Modules/fetch/FetchResponseSource.cpp:

(WebCore::FetchResponseSource::doPull): Introduced as we introduce pull() in ReadableStreamSource.

  • Modules/fetch/FetchResponseSource.h:
  • Modules/streams/ReadableStreamInternals.js:

(readFromReadableStreamDefaultReader): Removing firstReadCallback use.

  • Modules/streams/ReadableStreamSource.h: Renaming m_startPromise in m_promise since m_promise may store start and pull promises.

(WebCore::ReadableStreamSource::isStarting):
(WebCore::ReadableStreamSource::start):
(WebCore::ReadableStreamSource::pull): Introduced to support ReadableStreamSource pulling.
(WebCore::ReadableStreamSource::startFinished):
(WebCore::ReadableStreamSource::pullFinished): Ditto.
(WebCore::ReadableStreamSource::clean):

  • Modules/streams/ReadableStreamSource.idl: Ditto.
  • bindings/js/JSReadableStreamSourceCustom.cpp: Refactoring to use callPromiseFunction

(WebCore::startReadableStream):
(WebCore::JSReadableStreamSource::start):
(WebCore::pullReadableStream): Introduced to support ReadableStreamSource pulling.
(WebCore::JSReadableStreamSource::pull): Ditto.

  • bindings/js/WebCoreBuiltinNames.h: Removing firstReadCallback
01:10 Changeset [206422] by mmaxfield@apple.com
  • 5 edits
    4 adds in trunk

REGRESSION(r205883): Letterpressed text is invisible
https://bugs.webkit.org/show_bug.cgi?id=162590
Source/WebCore:

<rdar://problem/28141512>

Reviewed by Simon Fraser.

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

Tests: fast/text/letterpress-different.html

fast/text/letterpress-paint.html

  • platform/graphics/cocoa/FontCascadeCocoa.mm:

(WebCore::showLetterpressedGlyphsWithAdvances):

LayoutTests:

Reviewed by Simon Fraser.

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

  • TestExpectations:
  • fast/text/letterpress-different-expected-mismatch.html: Added.
  • fast/text/letterpress-different.html: Added.
  • fast/text/letterpress-paint-expected-mismatch.html: Added.
  • fast/text/letterpress-paint.html: Added.
  • platform/ios-simulator/TestExpectations:
00:58 Changeset [206421] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

[Fetch API] Refactor FetchBody to use std::experimental::variant
https://bugs.webkit.org/show_bug.cgi?id=162559

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

Covered by exiting tests.

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

  • Modules/fetch/FetchBody.cpp:

(WebCore::FetchBody::FetchBody):
(WebCore::FetchBody::json):
(WebCore::FetchBody::text):
(WebCore::FetchBody::consumeAsStream):
(WebCore::FetchBody::consumeArrayBuffer):
(WebCore::FetchBody::consumeArrayBufferView):
(WebCore::FetchBody::consumeText):
(WebCore::FetchBody::consumeBlob):
(WebCore::FetchBody::extractFromText):
(WebCore::FetchBody::bodyForInternalRequest):
(WebCore::FetchBody::clone):

  • Modules/fetch/FetchBody.h:

(WebCore::FetchBody::blobBody):
(WebCore::FetchBody::formDataBody):
(WebCore::FetchBody::arrayBufferBody):
(WebCore::FetchBody::arrayBufferViewBody):
(WebCore::FetchBody::textBody):

  • Modules/fetch/FetchRequest.cpp:

(WebCore::FetchRequest::clone):

  • Modules/fetch/FetchResponse.cpp:

(WebCore::FetchResponse::cloneForJS):

00:52 Changeset [206420] by mcatanzaro@igalia.com
  • 2 edits in trunk/Tools

PyGIWarnings printed by webkit-patch
https://bugs.webkit.org/show_bug.cgi?id=152470

Reviewed by Carlos Garcia Campos.

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

  • Scripts/webkitpy/thirdparty/init.py:

(AutoinstallImportHook._install_keyring):

00:07 Changeset [206419] by jh718.park@samsung.com
  • 2 edits in trunk/Source/WebCore

[EFL] Fix debug build break since r204205. Unreviewed
https://bugs.webkit.org/show_bug.cgi?id=162596

No new tests, no new behaviours.

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::frameImageAtIndex):

00:03 Changeset [206418] by commit-queue@webkit.org
  • 3 edits in trunk/Source/ThirdParty

Fixed compilation of WOFF2 on Windows
https://bugs.webkit.org/show_bug.cgi?id=162570

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

  • woff2/CMakeLists.txt: Avoid passing GCC-specific flags to other

compilers.

  • woff2/src/port.h: Include assert.h.
Note: See TracTimeline for information about the timeline view.