Timeline



Oct 6, 2017:

9:15 PM Changeset in webkit [223018] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

RenderTable should not hold a collection of raw pointers to RenderTableCaption
https://bugs.webkit.org/show_bug.cgi?id=178026
<rdar://problem/34863090>

Reviewed by Simon Fraser.

Similar to sections, RenderTable should not store captions as raw pointers. Their lifetimes are
not guaranteed to be sync with the RenderTable's.

Covered by existing tests.

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::addCaption):
(WebCore::RenderTable::removeCaption):
(WebCore::RenderTable::addOverflowFromChildren):

  • rendering/RenderTable.h:
  • rendering/RenderTableCaption.cpp:

(WebCore::RenderTableCaption::insertedIntoTree):
(WebCore::RenderTableCaption::willBeRemovedFromTree):

7:36 PM Changeset in webkit [223017] by Wenson Hsieh
  • 3 edits in trunk/Source/WebKit

[iOS WK2] API tests added in r222991 are failing in iOS 11 test runners
https://bugs.webkit.org/show_bug.cgi?id=178037

Reviewed by Tim Horton.

This patch carries out some minor cleanup around UIKitSPI.h in WebKit2, so that the internal SDK isn't required
to implement -[WKContentView insertTextSuggestion:].

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView insertTextSuggestion:]):

7:33 PM Changeset in webkit [223016] by commit-queue@webkit.org
  • 6 edits
    18 deletes in trunk/LayoutTests

Remove global-constructors-attributes tests
https://bugs.webkit.org/show_bug.cgi?id=178041

Patch by Sam Weinig <sam@webkit.org> on 2017-10-06
Rubber-stamped by Alexey Proskuryakov.

In discusstion with Alexey, we agreed these tests were much more trouble than they
were worth, due to testing very little, but requiring the update of up to eight
platform specific results per global constructor changed.

  • js/dom/global-constructors-attributes-dedicated-worker-expected.txt: Removed.
  • js/dom/global-constructors-attributes-dedicated-worker.html: Removed.
  • js/dom/global-constructors-attributes-expected.txt: Removed.
  • js/dom/global-constructors-attributes-idb-expected.txt: Removed.
  • js/dom/global-constructors-attributes-idb.html: Removed.
  • js/dom/global-constructors-attributes.html: Removed.
  • js/dom/script-tests/global-constructors-attributes-idb.js: Removed.
  • js/dom/script-tests/global-constructors-attributes.js: Removed.
  • platform/gtk/js/dom/global-constructors-attributes-expected.txt: Removed.
  • platform/mac-elcapitan-wk2/js/dom/global-constructors-attributes-expected.txt: Removed.
  • platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt: Removed.
  • platform/mac-sierra-wk1/js/dom/global-constructors-attributes-expected.txt: Removed.
  • platform/mac-sierra/js/dom/global-constructors-attributes-expected.txt: Removed.
  • platform/mac-wk1/js/dom/global-constructors-attributes-dedicated-worker-expected.txt: Removed.
  • platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt: Removed.
  • platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt: Removed.
  • platform/mac/js/dom/global-constructors-attributes-expected.txt: Removed.
  • platform/win/js/dom/global-constructors-attributes-expected.txt: Removed.
  • platform/wpe/js/dom/global-constructors-attributes-expected.txt: Removed.
7:29 PM Changeset in webkit [223015] by fpizlo@apple.com
  • 21 edits
    4 adds in trunk

Enable gigacage on iOS
https://bugs.webkit.org/show_bug.cgi?id=177586

Reviewed by JF Bastien.
JSTests:


Add tests for when Gigacage gets runtime disabled.

  • stress/disable-gigacage-arrays.js: Added.

(foo):

  • stress/disable-gigacage-strings.js: Added.

(foo):

  • stress/disable-gigacage-typed-arrays.js: Added.

(foo):

Source/bmalloc:


Introduce the ability to disable gigacage at runtime if allocation fails. If any step of gigacage
allocation fails, we free all of the gigacages and turn off gigacage support.

  • CMakeLists.txt:
  • bmalloc.xcodeproj/project.pbxproj:
  • bmalloc/Cache.cpp:

(bmalloc::Cache::scavenge):

  • bmalloc/Cache.h:

(bmalloc::Cache::tryAllocate):
(bmalloc::Cache::allocate):
(bmalloc::Cache::deallocate):
(bmalloc::Cache::reallocate):

  • bmalloc/Gigacage.cpp:

(Gigacage::ensureGigacage):
(Gigacage::runway):
(Gigacage::totalSize):
(Gigacage::shouldBeEnabled):
(): Deleted.
(Gigacage::Callback::Callback): Deleted.
(Gigacage::Callback::function): Deleted.
(Gigacage::PrimitiveDisableCallbacks::PrimitiveDisableCallbacks): Deleted.

  • bmalloc/Gigacage.h:

(Gigacage::wasEnabled):
(Gigacage::isEnabled):
(Gigacage::runway): Deleted.
(Gigacage::totalSize): Deleted.

  • bmalloc/HeapKind.cpp: Added.

(bmalloc::isActiveHeapKind):
(bmalloc::mapToActiveHeapKind):

  • bmalloc/HeapKind.h:

(bmalloc::isActiveHeapKindAfterEnsuringGigacage):
(bmalloc::mapToActiveHeapKindAfterEnsuringGigacage):

  • bmalloc/Scavenger.cpp:

(bmalloc::Scavenger::scavenge):

  • bmalloc/bmalloc.h:

(bmalloc::api::tryLargeMemalignVirtual):
(bmalloc::api::freeLargeVirtual):
(bmalloc::api::isEnabled):

Source/JavaScriptCore:

The hardest part of enabling Gigacage on iOS is that it requires loading global variables while
executing JS, so the LLInt needs to know how to load from global variables on all platforms that
have Gigacage. So, this teaches ARM64 how to load from global variables.

Also, this makes the code handle disabling the gigacage a bit better.

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::caged):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::cage):
(JSC::AssemblyHelpers::cageConditionally):

  • offlineasm/arm64.rb:
  • offlineasm/asm.rb:
  • offlineasm/instructions.rb:

Tools:


Add a mode to test disabling Gigacage.

  • Scripts/run-jsc-stress-tests:
  • Scripts/webkitruby/jsc-stress-test-writer-default.rb:
5:25 PM Changeset in webkit [223014] by Chris Dumez
  • 4 edits in trunk/Source

[Beacon][Cocoa] Beacon requests with BufferSource payload should not have a Content-Type HTTP header
https://bugs.webkit.org/show_bug.cgi?id=178027
<rdar://problem/34748470>

Reviewed by Youenn Fablet.

Source/WebCore/PAL:

Add new CFNetwork SPI.

  • pal/spi/cf/CFNetworkSPI.h:

Source/WebKit:

Use new NSURLSessionConfiguration._suppressedAutoAddedHTTPHeaders CFNetwork SPI to
make sure that CFNetwork never adds a Content-Type HTTP headers to our requests
when we did not add one.

This is covered by the following tests on newer OSes:

  • imported/w3c/web-platform-tests/beacon/headers/header-content-type.html
  • http/tests/blink/sendbeacon/beacon-same-origin.html
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

5:18 PM Changeset in webkit [223013] by dbates@webkit.org
  • 5 edits
    2 adds in trunk

Spelling error annotation should encompass hyphen in misspelled word that wraps across multiple lines
https://bugs.webkit.org/show_bug.cgi?id=177980
<rdar://problem/34847454>

Reviewed by Simon Fraser.

Source/WebCore:

On macOS the spelling and grammar annotations for a word or word phrase encompass
hyphenations added because the word or word phrase wraps across more than one line.
The effect tends to be more aesthetically pleasing and consistent with how these
annotations would be pointed out by a person in conversation: by identify the word
or phrase that has a spelling or grammar issue regardless of whether that word or
phrase is broken into halves due to line wrapping. The same argument applies to
other annotations on macOS, including text matches. Therefore, we should always
include any hyphens encompassed by a marker that were added due to line wrapping
when painting the marker.

Test: editing/spelling/spelling-marker-includes-hyphen.html

  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::paintDocumentMarker): Compute the text run including any
added hyphens. If a hyphen was added then the inline text box represents that text
up to the hyphen. Adjust the end position of the marker to be the length of the text
run if its greater than or equal to the length of the text box.

LayoutTests:

Add a test to ensure that a spelling error decoration encompasses the hyphen for a misspelled
word that is hyphenated because it is broken across more than one line.

  • editing/spelling/spelling-marker-includes-hyphen-expected.html: Added.
  • editing/spelling/spelling-marker-includes-hyphen.html: Added.
  • platform/ios/TestExpectations: Mark the test as WontFix as spelling and

grammar markers are not support on iOS.

5:09 PM Changeset in webkit [223012] by commit-queue@webkit.org
  • 8 edits in trunk

Source/WebKit:
[iOS] Respect the "caret-color" CSS property when editing
https://bugs.webkit.org/show_bug.cgi?id=177489
<rdar://problem/34600419>

Patch by Aishwarya Nirmal <anirmal@apple.com> on 2017-10-06
Reviewed by Tim Horton.

This change adds support for the caret-color property on iOS.

  • Shared/EditorState.cpp:

(WebKit::EditorState::PostLayoutData::encode const):
(WebKit::EditorState::PostLayoutData::decode):

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

(-[WKContentView insertionPointColor]):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::platformEditorState const):

Tools:
[iOS] Respect the "caret-color" CSS property when editing
https://bugs.webkit.org/show_bug.cgi?id=177489
<rdar://problem/34600419>

Patch by Aishwarya Nirmal <anirmal@apple.com> on 2017-10-06
Reviewed by Tim Horton.

Adds test for iOS caret color support.

  • TestWebKitAPI/Tests/WebKitCocoa/EditorStateTests.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/ios/UIKitSPI.h:
4:31 PM Changeset in webkit [223011] by Matt Baker
  • 16 edits
    2 copies
    5 adds in trunk

Web Inspector: Add Canvas tab and CanvasOverviewContentView
https://bugs.webkit.org/show_bug.cgi?id=177604
<rdar://problem/34714650>

Reviewed by Devin Rousso.

Source/WebInspectorUI:

This patch adds experimental feature support for the Canvas tab. Initially
the tab provides only an overview of the canvases in the page, and will
exist side-by-side with the existing experimental Canvas UI.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Base/Main.js:

(WI.contentLoaded):

  • UserInterface/Base/Setting.js:
  • UserInterface/Images/Canvas.svg: Added.
  • UserInterface/Images/CanvasOverview.svg: Added.
  • UserInterface/Main.html:

Add new art and canvas UI classes.

  • UserInterface/Models/Canvas.js:

(WI.Canvas.requestNode):
(WI.Canvas.prototype.requestContent):
(WI.Canvas.prototype.requestCSSCanvasClientNodes):
(WI.Canvas.prototype.requestSize.calculateSize.getAttributeValue):
(WI.Canvas.prototype.requestSize.calculateSize):
(WI.Canvas.prototype.requestSize.getPropertyValue):
(WI.Canvas.prototype.requestSize):
Use promises to retrieve canvas data asynchronously.

  • UserInterface/Models/CollectionTypes.js: Added.

(WI.CanvasCollection):
New location for concrete collection types. Having a class to type check
makes using a collection as a represented object a bit simpler.

  • UserInterface/Views/CanvasContentView.css:

(.content-view.canvas:not(.tab)):
(.content-view.canvas:not(.tab) > .preview):
(.content-view.canvas:not(.tab) > .preview > img):
(.content-view.canvas:not(.tab) > :matches(header, footer)):
(.content-view.canvas): Deleted.
(.content-view.canvas > .preview): Deleted.
(.content-view.canvas > .preview > img): Deleted.
During the transition to the new Canvas tab, CanvasContentView needs to
support being shown as a full-size content view, and as an item in a
CollectionContentView. Hide header and footer elements by default.

  • UserInterface/Views/CanvasContentView.js:

(WI.CanvasContentView):
(WI.CanvasContentView.prototype.refresh):
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype.layout):
(WI.CanvasContentView.prototype.shown):
(WI.CanvasContentView.prototype.attached):
(WI.CanvasContentView.prototype.detached):
(WI.CanvasContentView.prototype._showError):
(WI.CanvasContentView.prototype._refreshPixelSize):
(WI.CanvasContentView.prototype._showGridButtonClicked):
(WI.CanvasContentView.prototype._updateImageGrid):
(WI.CanvasContentView.prototype._updateMemoryCost):
(WI.CanvasContentView.prototype._updatePixelSize):
(WI.CanvasContentView.prototype._updateRecordNavigationItem):
(WI.CanvasContentView.prototype.hidden): Deleted.
(WI.CanvasContentView.prototype.closed): Deleted.
(WI.CanvasContentView.prototype._showPreview): Deleted.
Added new UI for display in the Canvas overview. These elements are always
created, but only appear when the canvas is viewed as a "card".

Canvas previews are no longer shown as soon as they are available from
the backend. Instead, once the canvas content is ready a layout is scheduled.
This guarantees that refreshing all canvases at once causes no flicker,
and introduces no perceptible delay.

Finally, the "Cancel recording" tooltip has been renamed "Stop recording",
to match the behavior of the command.

  • UserInterface/Views/CanvasDetailsSidebarPanel.js:

(WI.CanvasDetailsSidebarPanel.prototype._refreshSourceSection.this._canvas.requestNode.): Deleted.
Canvas.prototype.requestNode now returns a promise.

  • UserInterface/Views/CanvasOverviewContentView.css: Added.

(.content-view.canvas-overview):
(.content-view.canvas-overview .content-view.canvas):
(.content-view.canvas-overview .content-view.canvas.selected:not(.is-recording)):
(.content-view.canvas-overview .content-view.canvas > :matches(header, footer)):
(.content-view.canvas-overview .content-view.canvas > header):
(.content-view.canvas-overview .content-view.canvas.is-recording > header):
(.content-view.canvas-overview .content-view.canvas > header > .titles,):
(.content-view.canvas-overview .content-view.canvas > header > .titles > .title):
(.content-view.canvas-overview .content-view.canvas > header > .titles > .subtitle,):
(.content-view.canvas-overview .content-view.canvas > header .subtitle::before):
(.content-view.canvas-overview .content-view.canvas.is-recording > header > .titles > .title):
(.content-view.canvas-overview .content-view.canvas.is-recording > header > .titles > .subtitle):
(.content-view.canvas-overview .content-view.canvas.is-recording > header > .navigation-bar > .item):
(.content-view.canvas-overview .content-view.canvas > header > .navigation-bar):
(.content-view.canvas-overview .content-view.canvas:not(:hover, .is-recording) > header > .navigation-bar):
(.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop.disabled):
(.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop):
(.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop:not(.disabled):hover):
(.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop:not(.disabled):active):
(.content-view.canvas-overview .content-view.canvas > .preview):
(.content-view.canvas-overview .content-view.canvas > .preview > img):
(.content-view.canvas-overview .content-view.canvas > .preview > .message-text-view):
(.content-view.canvas-overview .content-view.canvas > footer):
(.content-view.canvas-overview .content-view.canvas > footer .memory-cost):
Add header, navigation bar, and footer styles to CanvasContentView when
it is being shown as an item in a CollectionContentView.

  • UserInterface/Views/CanvasOverviewContentView.js: Added.

(WI.CanvasOverviewContentView):
(WI.CanvasOverviewContentView.prototype.get navigationItems):
(WI.CanvasOverviewContentView.prototype.get selectionPathComponents):
(WI.CanvasOverviewContentView.prototype.hidden):
(WI.CanvasOverviewContentView.prototype.contentViewAdded):
(WI.CanvasOverviewContentView.prototype.contentViewRemoved):
(WI.CanvasOverviewContentView.prototype.attached):
(WI.CanvasOverviewContentView.prototype.detached):
(WI.CanvasOverviewContentView.prototype._refreshPreviews):
(WI.CanvasOverviewContentView.prototype._selectedPathComponentChanged):
(WI.CanvasOverviewContentView.prototype._showGridButtonClicked):
(WI.CanvasOverviewContentView.prototype._supplementalRepresentedObjectsDidChange.createCanvasPathComponent):
(WI.CanvasOverviewContentView.prototype._supplementalRepresentedObjectsDidChange):
(WI.CanvasOverviewContentView.prototype._updateNavigationItems):
(WI.CanvasOverviewContentView.prototype._updateShowImageGrid):
(WI.CanvasOverviewContentView.prototype._contentViewMouseEnter):
(WI.CanvasOverviewContentView.prototype._contentViewMouseLeave):
The overview extends CollectionContentView, adding buttons for global canvas actions
(refresh all and show/hide grid for all), and maintains a non-visible
outline of CanvasTreeElements to facilitate display of the hierarchical
path in the navigation bar.

  • UserInterface/Views/CanvasTabContentView.css: Added.

(.content-view.tab.canvas .navigation-bar > .item > .hierarchical-path-component > .icon):
(.content-view.tab.canvas .navigation-bar > .item > .canvas-overview > .icon):
(.content-view.tab.canvas .navigation-bar > .item .canvas .icon):

  • UserInterface/Views/CanvasTabContentView.js: Added.

(WI.CanvasTabContentView):
(WI.CanvasTabContentView.tabInfo):
(WI.CanvasTabContentView.isTabAllowed):
(WI.CanvasTabContentView.prototype.get type):
(WI.CanvasTabContentView.prototype.get supportsSplitContentBrowser):
(WI.CanvasTabContentView.prototype.canShowRepresentedObject):
(WI.CanvasTabContentView.prototype.shown):
(WI.CanvasTabContentView.prototype.treeElementForRepresentedObject):
(WI.CanvasTabContentView.prototype.restoreFromCookie):
(WI.CanvasTabContentView.prototype.saveStateToCookie):
(WI.CanvasTabContentView.prototype.attached):
(WI.CanvasTabContentView.prototype.detached):
(WI.CanvasTabContentView.prototype._canvasAdded):
(WI.CanvasTabContentView.prototype._canvasRemoved):
(WI.CanvasTabContentView.prototype._overviewPathComponentClicked):
(WI.CanvasTabContentView.prototype._mainResourceDidChange):

  • UserInterface/Views/CollectionContentView.js:

(WI.CollectionContentView):
(WI.CollectionContentView.prototype.setSelectedItem):
(WI.CollectionContentView.prototype.addContentViewForItem):
(WI.CollectionContentView.prototype.removeContentViewForItem):
(WI.CollectionContentView.prototype.initialLayout):
(WI.CollectionContentView.prototype._showContentPlaceholder):
(WI.CollectionContentView.prototype._hideContentPlaceholder):
Placeholder content should be created lazily, and shown after a slight delay
to give represented objects a chance to load. Make sure to call the
shown or hidden method after adding or removing a content view.

  • UserInterface/Views/SettingsTabContentView.js:

(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):

  • UserInterface/Views/Variables.css:

(:root):
(body.window-inactive *):

  • UserInterface/Views/View.js:

(WI.View.fromElement):

LayoutTests:

Add test for new static function View.fromElement.

  • inspector/view/basics-expected.txt:
  • inspector/view/basics.html:
4:21 PM Changeset in webkit [223010] by msaboff@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Enable RegExp JIT for match only Unicode RegExp's
https://bugs.webkit.org/show_bug.cgi?id=178033

Reviewed by JF Bastien.

I forgot to turn on JIT'ing for match-only Unicode RegExp's in r221052. Do it now.

  • runtime/RegExp.cpp:

(JSC::RegExp::compileMatchOnly):

4:15 PM Changeset in webkit [223009] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

RenderTable should not hold a collection of raw pointers to RenderTableCol
https://bugs.webkit.org/show_bug.cgi?id=178030
<rdar://problem/34865236>

Reviewed by Simon Fraser.

In addition to the m_columnRenderersValid flag, this patch ensures that
we don't dereference stale column renderers even when the flag is out of sync.

Covered by existing tests.

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::updateColumnCache const):
(WebCore::RenderTable::slowColElement const):

  • rendering/RenderTable.h:
4:06 PM Changeset in webkit [223008] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

LayoutTest http/tests/loading/resourceLoadStatistics/partitioned-cookies-with-and-without-user-interaction.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=177679

Reviewed by Alexey Proskuryakov.

Move runTest() from an inline script to a load event handler to avoid a race between parsing and navigation.

  • http/tests/loading/resourceLoadStatistics/partitioned-cookies-with-and-without-user-interaction-expected.txt:
  • http/tests/loading/resourceLoadStatistics/partitioned-cookies-with-and-without-user-interaction.html:
4:05 PM Changeset in webkit [223007] by BJ Burg
  • 3 edits in trunk/Source/WebKit

Web Inspector: clicking in Inspector webview clears the selection in the inspected page
https://bugs.webkit.org/show_bug.cgi?id=178014
<rdar://problem/12706857>

Reviewed by Timothy Hatcher.

If the Inspector is docked to the inspected view, clicking on the Inspector
webview will cause selection in the inspected view to be lost. This is because
the selection is lost when the web view resigns first responder.

Add a check in maintainsInactiveSelection to always retain selection if
Web Inspector is open. This approach seems simpler than trying to sync a client's
usage of WKPageSetMaintainsInactiveSelection with overrides that need to be applied
and unapplied when an inspector web view is shown or hidden.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::maintainsInactiveSelection const):
(WebKit::WebPageProxy::inspector const): Drive by, use nullptr.

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::maintainsInactiveSelection const): Deleted.

3:48 PM Changeset in webkit [223006] by Joseph Pecoraro
  • 14 edits
    3 copies
    1 add in trunk

Web Inspector: Network Tab - Headers Detail View
https://bugs.webkit.org/show_bug.cgi?id=177896
<rdar://problem/34071924>

Source/WebInspectorUI:

Reviewed by Devin Rousso.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Main.html:

New resources and strings.

  • UserInterface/Base/URLUtilities.js:

(parseURL):
(WI.h2Authority):
(WI.h2Path):
Utility methods to get the :authority and :path pseudo-headers from a URL.
This required adding user info (user:pass@) support to URL parsing.

  • UserInterface/Views/NetworkTabContentView.js:

(WI.NetworkTabContentView):

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView.prototype.get navigationItems):
(WI.NetworkTableContentView.prototype.get filterNavigationItems):
Move the NetworkTab's filter controls to the left. Since these are not
dynamic just vend them from the TableContentView and place them in the
navigation bar.

  • UserInterface/Models/Resource.js:

(WI.Resource.prototype.updateWithMetrics):
New event whenever metrics change. This is the first event that will allow
a client to react to a resource.protocol change.

  • UserInterface/Views/NetworkResourceDetailView.css:

(.content-view.resource-details):
Base styles for the sub detail views.

  • UserInterface/Views/NetworkResourceDetailView.js:

(WI.NetworkResourceDetailView):
(WI.NetworkResourceDetailView.prototype.headersContentViewGoToRequestData):
(WI.NetworkResourceDetailView.prototype.initialLayout):
(WI.NetworkResourceDetailView.prototype._showPreferredContentView):
(WI.NetworkResourceDetailView.prototype._showContentViewForNavigationItem):
Create a Header view and provide a way to switch to a particular view. This wil
be useful to jump from the Header's Request Data directly to the Preview's
Request ContentView.

  • UserInterface/Views/ResourceDetailsSection.css:

(.resource-details > section):
(.resource-details > section > .title):
(.resource-details > section > .details):
(.resource-details > section > .details > p):
(.resource-details > section.incomplete > .details):

  • UserInterface/Views/ResourceDetailsSection.js:

(WI.ResourceDetailsSection):
(WI.ResourceDetailsSection.prototype.get element):
(WI.ResourceDetailsSection.prototype.get titleElement):
(WI.ResourceDetailsSection.prototype.get detailsElement):
(WI.ResourceDetailsSection.prototype.toggleIncomplete):
(WI.ResourceDetailsSection.prototype.toggleError):
Simple sections with a title and details div with a border.
It may be common to have an incomplete load / error so this
provides some APIs and styles for sections marked incomplete
or with errors.

  • UserInterface/Views/ResourceHeadersContentView.css:

(.resource-headers > section > .details):
(.resource-headers > section.headers > .details):
(.resource-headers > section.error > .details):
(.resource-headers > section.error .key):
Style the left border different colors for different sections or cases.

(.resource-headers .details):
(.resource-headers .details .pair):
(.resource-headers .details .key):
(.resource-headers .value):
(.resource-headers .header > .key):
(.resource-headers .h1-status > .key):
(.resource-headers .h2-pseudo-header > .key):
Wrapped text for key/value pairs and different colors for different
sections or cases.

(.resource-headers .go-to-arrow):
Go-to arrow styles for a request data section.

  • UserInterface/Views/ResourceHeadersContentView.js: Added.

(WI.ResourceHeadersContentView):
(WI.ResourceHeadersContentView.prototype.initialLayout):
(WI.ResourceHeadersContentView.prototype.layout):
(WI.ResourceHeadersContentView.prototype._incompleteSectionWithMessage):
(WI.ResourceHeadersContentView.prototype._incompleteSectionWithLoadingIndicator):
(WI.ResourceHeadersContentView.prototype._appendKeyValuePair):
(WI.ResourceHeadersContentView.prototype._responseSourceDisplayString):
(WI.ResourceHeadersContentView.prototype._refreshSummarySection):
(WI.ResourceHeadersContentView.prototype._refreshRequestHeadersSection):
(WI.ResourceHeadersContentView.prototype._refreshResponseHeadersSection):
(WI.ResourceHeadersContentView.prototype._refreshQueryStringSection):
(WI.ResourceHeadersContentView.prototype._refreshRequestDataSection):
(WI.ResourceHeadersContentView.prototype._resourceMetricsDidChange):
(WI.ResourceHeadersContentView.prototype._resourceRequestHeadersDidChange):
(WI.ResourceHeadersContentView.prototype._resourceResponseReceived):
(WI.ResourceHeadersContentView.prototype._goToRequestDataClicked):
Summary, Request, Response, Query String, and Request Data sections.
The sections refresh as data becomes available.

  • UserInterface/Views/Table.css:

(.table):
These variables are already defined globally.

  • UserInterface/Views/Variables.css:

(:root):
New variables for the colors we use. They closely match, and are
sometimes identical to ones used in Timelines / Memory views.

Source/WebInspectorUI/../../LayoutTests:

Reviewed by NOBODY (OOPS!).

  • inspector/unit-tests/url-utilities-expected.txt:
  • inspector/unit-tests/url-utilities.html:

Tests for new utility functions.

3:38 PM Changeset in webkit [223005] by achristensen@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Build fix after r223002.

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::restoreCalleeSavesFromVMEntryFrameCalleeSavesBuffer):
(JSC::DFG::copyCalleeSavesToVMEntryFrameCalleeSavesBuffer):

3:14 PM Changeset in webkit [223004] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

RootInlineBox should not hold a collection of raw pointers to RenderBox
https://bugs.webkit.org/show_bug.cgi?id=178025
<rdar://problem/34862488>

Reviewed by Simon Fraser.

There are already some assertions in place to check if the renderers are valid.

Covered by existing test cases.

  • rendering/RenderBlockLineLayout.cpp:

(WebCore::RenderBlockFlow::reattachCleanLineFloats):
(WebCore::RenderBlockFlow::determineStartPosition):
(WebCore::RenderBlockFlow::determineEndPosition):

  • rendering/RootInlineBox.h:

(WebCore::RootInlineBox::appendFloat):
(WebCore::RootInlineBox::floatsPtr):

3:13 PM Changeset in webkit [223003] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Continuation map should not hold a raw pointer
https://bugs.webkit.org/show_bug.cgi?id=178021
<rdar://problem/34861590>

Reviewed by Simon Fraser.

This patch ensures proper lifetime management for renderers stored in the Continuation map
(currently they rely on the correctness of addChild/takeChild methods).

Covered by existing tests.

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::continuation const):
(WebCore::RenderBoxModelObject::setContinuation):

3:12 PM Changeset in webkit [223002] by Ryan Haddad
  • 100 edits
    2 moves
    13 deletes in trunk

Unreviewed, rolling out r222791 and r222873.
https://bugs.webkit.org/show_bug.cgi?id=178031

Caused crashes with workers/wasm LayoutTests (Requested by
ryanhaddad on #webkit).

Reverted changesets:

"WebAssembly: no VM / JS version of everything but Instance"
https://bugs.webkit.org/show_bug.cgi?id=177473
http://trac.webkit.org/changeset/222791

"WebAssembly: address no VM / JS follow-ups"
https://bugs.webkit.org/show_bug.cgi?id=177887
http://trac.webkit.org/changeset/222873

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

3:07 PM Changeset in webkit [223001] by achristensen@apple.com
  • 14 edits in trunk

Source/WebCore:
Add more infrastructure to apply custom header fields to same-origin requests
https://bugs.webkit.org/show_bug.cgi?id=177629

Reviewed by Ryosuke Niwa.

Covered by new API tests.

  • loader/DocumentLoader.h:

(WebCore::DocumentLoader::customHeaderFields):

  • loader/HTTPHeaderField.cpp:

(WebCore::HTTPHeaderField::create):
(WebCore::HTTPHeaderField::HTTPHeaderField): Deleted.

  • loader/HTTPHeaderField.h:

(WebCore::HTTPHeaderField::encode const):
(WebCore::HTTPHeaderField::decode):

Change HTTPHeaderField from one String containing the name and value
to a string for the name and another for value. This matches HTTPHeaderMap
and NSURLRequest more closely where names and values are treated as separate Strings.

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::requestResource):

If the DocumentLoader has custom header fields from the WebsitePolicies, apply them to any same-origin requests.

  • loader/cache/CachedResourceRequest.h:

(WebCore::CachedResourceRequest::resourceRequest):

  • platform/network/ResourceRequestBase.cpp:

(WebCore::ResourceRequestBase::setCachePolicy):
(WebCore::ResourceRequestBase::setTimeoutInterval):
(WebCore::ResourceRequestBase::setHTTPMethod):
(WebCore::ResourceRequestBase::setHTTPHeaderField):
(WebCore::ResourceRequestBase::clearHTTPAuthorization):
(WebCore::ResourceRequestBase::clearHTTPContentType):
(WebCore::ResourceRequestBase::clearHTTPReferrer):
(WebCore::ResourceRequestBase::clearHTTPOrigin):
(WebCore::ResourceRequestBase::clearHTTPUserAgent):
(WebCore::ResourceRequestBase::clearHTTPAccept):
(WebCore::ResourceRequestBase::clearHTTPAcceptEncoding):
(WebCore::ResourceRequestBase::setResponseContentDispositionEncodingFallbackArray):
(WebCore::ResourceRequestBase::setHTTPBody):
(WebCore::ResourceRequestBase::setAllowCookies):
(WebCore::ResourceRequestBase::setPriority):
(WebCore::ResourceRequestBase::addHTTPHeaderFieldIfNotPresent):
(WebCore::ResourceRequestBase::addHTTPHeaderField):
(WebCore::ResourceRequestBase::setHTTPHeaderFields):

non-HTTP/HTTPS ResourceRequests need to be updated, too, if header fields are added.
Skipping updating non-HTTP/HTTPS ResourceRequests is not a valid shortcut, and with the
growing importance of custom schemes with our new public API, we should update ResourceRequests
of custom schemes correctly.

Source/WebKit:
Add more infrastructure to apply custom headers to same-origin requests
https://bugs.webkit.org/show_bug.cgi?id=177629

Reviewed by Ryosuke Niwa.

  • UIProcess/API/C/WKWebsitePolicies.cpp:

(WKWebsitePoliciesCopyCustomHeaderFields):
(WKWebsitePoliciesSetCustomHeaderFields):

  • UIProcess/API/C/WKWebsitePolicies.h:
  • UIProcess/API/Cocoa/_WKWebsitePolicies.h:
  • UIProcess/API/Cocoa/_WKWebsitePolicies.mm:

(-[_WKWebsitePolicies customHeaderFields]):
(-[_WKWebsitePolicies setCustomHeaderFields:]):

Make the SPI for setting custom header fields take a dictionary<String, String>
instead of an array of Strings with colons. This matches NSURLRequest and other
APIs that deal with header fields.

Tools:
Add more infrastructure to apply custom header fields to same-origin requests
https://bugs.webkit.org/show_bug.cgi?id=177629

Reviewed by Ryosuke Niwa.

  • TestWebKitAPI/Tests/WebCore/HTTPHeaderField.cpp:

(canonicalizeHTTPHeader):
(shouldRemainUnchanged):
(shouldBeInvalid):
(shouldBecome):

  • TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:

(TEST):
(expectHeaders):
(-[CustomHeaderFieldsDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]):
(-[CustomHeaderFieldsDelegate webView:startURLSchemeTask:]):
(-[CustomHeaderFieldsDelegate webView:stopURLSchemeTask:]):

Test main resource requests, subresource requests, and cross-origin requests.

2:45 PM Changeset in webkit [223000] by matthew_hanson@apple.com
  • 7 edits in branches/safari-604-branch/Source

Versioning.

2:41 PM Changeset in webkit [222999] by n_wang@apple.com
  • 2 edits in trunk/LayoutTests

AX: [iOS] Layout Test accessibility/ios-simulator/video-elements-ios.html is failing
https://bugs.webkit.org/show_bug.cgi?id=177954
<rdar://problem/34838094>

The test is flaky because that the video element has triggered the canplaythrough event before
we registered the event handler. Fixed it by setting the source after registering the handler.

Reviewed by Chris Fleizach.

  • accessibility/ios-simulator/video-elements-ios.html:
2:40 PM Changeset in webkit [222998] by matthew_hanson@apple.com
  • 7 edits in trunk/Source

Versioning.

2:29 PM Changeset in webkit [222997] by commit-queue@webkit.org
  • 23 edits
    5 adds in trunk

Add basic support for getting a ImageBitmapRenderingContext
https://bugs.webkit.org/show_bug.cgi?id=177983

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

Source/WebCore:

Add initial support for ImageBitmapRenderingContext.

  • CMakeLists.txt:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:

Add new files.

  • dom/Document.cpp:
  • dom/Document.h:
  • dom/Document.idl:

Add ImageBitmapRenderingContext to RenderingContext variant so it wil be able to
be used with Document.getCSSCanvasContext.

  • html/HTMLCanvasElement.h:
  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::setHeight):
(WebCore::HTMLCanvasElement::setWidth):

Throw an exception if the context is in the placeholder mode (which we
signify via a special PlaceholderRenderingContext) as speced. This can't
currently be hit, as setting a placeholder requires offscreen canvas
support, coming soon.

(WebCore::HTMLCanvasElement::getContext):

Re-work to match the spec's matrix of options, adding in support
for 'bitmaprenderer'/ ImageBitmapRenderingContext type as well as
the placeholder mode.

(WebCore::HTMLCanvasElement::createContext2d):
(WebCore::HTMLCanvasElement::getContext2d):
(WebCore::HTMLCanvasElement::isWebGLType):
(WebCore::HTMLCanvasElement::createContextWebGL):
(WebCore::HTMLCanvasElement::getContextWebGL):
(WebCore::HTMLCanvasElement::createContextWebGPU):
(WebCore::HTMLCanvasElement::getContextWebGPU):
(WebCore::HTMLCanvasElement::isBitmapRendererType):
(WebCore::HTMLCanvasElement::createContextBitmapRenderer):
(WebCore::HTMLCanvasElement::getContextBitmapRenderer):

Split creation out of the get functions so it can be called
by getContext, where we know if the canvas is null or not.

  • html/HTMLCanvasElement.idl:

Add ImageBitmapRenderingContext to RenderingContext variant so it wil be able to
be used with HTMLCanvasElement.getContext.

  • html/canvas/CanvasRenderingContext.h:

(WebCore::CanvasRenderingContext::isBitmapRenderer const):
(WebCore::CanvasRenderingContext::isPlaceholder const):

Add predicates for ImageBitmapRenderingContext and
PlaceholderRenderingContext.

  • html/canvas/ImageBitmapRenderingContext.cpp: Added.

(WebCore::ImageBitmapRenderingContext::ImageBitmapRenderingContext):

  • html/canvas/ImageBitmapRenderingContext.h: Added.
  • html/canvas/ImageBitmapRenderingContext.idl: Added.
  • html/canvas/PlaceholderRenderingContext.cpp: Added.

(WebCore::PlaceholderRenderingContext::PlaceholderRenderingContext):

  • html/canvas/PlaceholderRenderingContext.h: Added.

Add stubbed out implementations for the new contexts.

LayoutTests:

  • js/dom/global-constructors-attributes-expected.txt:
  • platform/gtk/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-elcapitan-wk2/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-sierra-wk1/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-sierra/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
  • platform/win/js/dom/global-constructors-attributes-expected.txt:
  • platform/wpe/js/dom/global-constructors-attributes-expected.txt:

Update test results.

2:08 PM Changeset in webkit [222996] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark inspector/canvas/create-context-2d.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=178028

Unreviewed test gardening.

  • platform/mac/TestExpectations:
2:02 PM Changeset in webkit [222995] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

Netflix playback fails with S7353 error
https://bugs.webkit.org/show_bug.cgi?id=178023

Reviewed by Dean Jackson.

On certain platforms, WebCoreDecompressionSession will fail to produce CVImageBuffers when presented with
encrypted content. On those platforms, the seek() command will fail, because frames at the destination time
cannot be decoded. This occurs for Netflix because the <video> element is not in the DOM at decode time.

Only create a WebCoreDecompressionSession in MediaPlayerPrivateMediaSourceAVFObjC when we have explicitly
been asked to paint into a WebGL canvas.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::acceleratedRenderingStateChanged):

1:14 PM Changeset in webkit [222994] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Skipped http/tests/cache/disk-cache/disk-cache-validation-no-body.html on El Capitan Release.
https://bugs.webkit.org/show_bug.cgi?id=178019

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
1:10 PM Changeset in webkit [222993] by jiewen_tan@apple.com
  • 8 edits in trunk/Source/WebCore

Replace some stack raw pointers with RefPtrs within WebCore/dom
https://bugs.webkit.org/show_bug.cgi?id=177852
<rdar://problem/34804487>

Reviewed by Ryosuke Niwa.

This is an effort to reduce raw pointer usage in DOM code. In this patch,
stack raw pointers that could be freed during their lifetime because of
event dispatching, layout updating and etc are selected. All selections are
basing on code speculation.

No changes in behaviours.

  • dom/ContainerNodeAlgorithms.cpp:

(WebCore::addChildNodesToDeletionQueue):
Escalate the RefPtr to where node is first defined.

  • dom/Document.cpp:

(WebCore::Document::setVisualUpdatesAllowed):
(WebCore::Document::updateLayout):
(WebCore::Document::updateLayoutIfDimensionsOutOfDate):
Possible layout updates during their lifetime.
(WebCore::Document::implicitClose):
Possible event dispatching during its lifetime.
(WebCore::Document::nodeChildrenWillBeRemoved):
(WebCore::Document::nodeWillBeRemoved):
Possible node removal during their lifetime.
(WebCore::command):
Possible layout updates during its lifetime.

  • dom/DocumentMarkerController.cpp:

(WebCore::DocumentMarkerController::renderedRectsForMarkers):
Possible layout updates during its lifetime.

  • dom/Element.cpp:

(WebCore::Element::removedFrom):

Possible event dispatching during its lifetime.

(WebCore::checkForSiblingStyleChanges):
Possible layout updates during their lifetime.

  • dom/MouseRelatedEvent.cpp:

(WebCore::MouseRelatedEvent::computeRelativePosition):
Possible layout updates during its lifetime.

  • dom/RadioButtonGroups.cpp:

(WebCore::RadioButtonGroup::setCheckedButton):
Possible layout updates during its lifetime.

  • dom/SlotAssignment.cpp:

(WebCore::SlotAssignment::didChangeSlot):
Possible layout updates during its lifetime.

12:54 PM Changeset in webkit [222992] by Dewei Zhu
  • 2 edits in trunk/Websites/perf.webkit.org

Add try-bot button on perf analysis status page.
https://bugs.webkit.org/show_bug.cgi?id=177995

Reviewed by Ryosuke Niwa.

Add 'Create' button on analysis status top-left corner to create trybot analysis task.

  • public/v3/pages/analysis-category-toolbar.js:

(AnalysisCategoryToolbar.cssTemplate):

11:53 AM Changeset in webkit [222991] by Wenson Hsieh
  • 10 edits in trunk

[iOS] Tweak support for classifying form controls (followup to r222487)
https://bugs.webkit.org/show_bug.cgi?id=177917
<rdar://problem/34820122>

Reviewed by Dean Jackson.

Source/WebKit:

This patch follows up with <http://trac.webkit.org/r222487>. It combines the functionality of two SPI hooks
implemented on WKContentView into a single method that vends a context dictionary, and additionally addresses an
issue with the original implementation, wherein some cached state on WebPageProxy is set upon starting node
assistance, but is never unset when stopping node assistance, nor set anywhere else. See per-method comments for
more detail.

  • UIProcess/WebPageProxy.h:

Remove members m_acceptsAutofilledLoginCredentials and m_representingPageURL from WebPageProxy. This state is
retrieved from the AssistedNodeInformation struct when starting node assistance, but is never reset anywhere
else. Instead of introducing new members to remember this state, we can just use the WKContentView's current
assisted node information.

This also means that programmatically focusing forms (without user gesture) will no longer cause WKContentView
to accept autofilled login credentials, since we bail out of node assistance and don't begin an input session.

  • UIProcess/ios/WKContentView.mm:

(-[WKContentView acceptsAutofilledLoginCredentials]): Deleted.
(-[WKContentView representingPageURL]): Deleted.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _autofillContext]):

Merge functionality of the previous two SPI hooks, such that -_autofillContext will return a non-null dictionary
containing the URL of the focused element's document if and only if WKContentView accepts autofilled login
credentials, and there exists a representing page URL.

When the page stops assisting the focused node, we set the AssistedNodeInformation's element type to None, so we
additionally bail and return nil if the element type is None. As an aside, it seems a more reasonable approach to
resetting state upon stopping node assistance is to just completely reset _assistedNodeInformation to its initial
value, i.e. via _assistedNodeInformation = { }. It's not clear whether there are behaviors relying on the fact
that all members but the element type in the content view's assisted node information could be stale, so this
seems worthy of some investigation.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::startAssistingNode):
(WebKit::WebPageProxy::acceptsAutofilledLoginCredentials): Deleted.
(WebKit::WebPageProxy::representingPageURL): Deleted.

Source/WebKitLegacy/mac:

Implement _autofillContext in legacy WebKit, and remove the two previous SPI hooks.

  • DOM/DOMHTMLInputElement.mm:

(-[DOMHTMLInputElement _autofillContext]):
(-[DOMHTMLInputElement acceptsAutofilledLoginCredentials]): Deleted.
(-[DOMHTMLInputElement representingPageURL]): Deleted.

Tools:

Minor cleanup around autofill API tests added in r222487. Additionally, augments some of these API tests to
verify that after blurring the focused element, the content view no longer accepts autofill credentials (see
WebKit ChangeLog for more details). Also augments tests to verify that the URL in the autofill context matches
the document URL.

  • TestWebKitAPI/Tests/ios/WKWebViewAutofillTests.mm:

Remove the USE(APPLE_INTERNAL_SDK) guard for these API tests.

(newUIKeyboardLoginCredentialsSuggestion):

Add a stub implementation of UIKeyboardLoginCredentialsSuggestion. This allows
[UIKeyboardLoginCredentialsSuggestion new] to return a nonnull object, which allows these API tests to verify
that the credential filling codepath works as intended without any additional UIKit changes. Currently, tests
for the value of username and password fields are passing even though the fields are not being populated because
the expected string values are null, and the observed value is an empty string. We instead check the literal
string values here instead of credentialSuggestion's properties, so that tests verifying the behavior of
-insertTextSuggestion: will require username and password inputs to be populated.

(-[TestInputDelegate _webView:focusShouldStartInputSession:]):
(-[AutofillTestView initWithFrame:]):
(-[AutofillTestView _autofillInputView]):
(-[AutofillTestView textInputHasAutofillContext]):
(TestWebKitAPI::TEST):

Add an additional API test to verify that programmatic focus without user interaction (and also without testing
overrides) does not activate autofill.

(createUIKeyboardLoginCredentialsSuggestion): Deleted.
(-[WKWebView _privateTextInput]): Deleted.

  • TestWebKitAPI/ios/UIKitSPI.h:

Minor gardening to remove iOS version >= 11 guards that are now unnecessary. Additionally, add some more private
header imports (with corresponding interface definitions for building and running with the public SDK).

11:47 AM Changeset in webkit [222990] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

RootInlineBox should not hold a raw pointer to RenderObject
https://bugs.webkit.org/show_bug.cgi?id=178018
<rdar://problem/34859256>

Reviewed by Simon Fraser.

Not resetting the line break object could lead to dereferencing a stale renderer.

Covered by existing tests.

  • rendering/RootInlineBox.cpp:

(WebCore::RootInlineBox::RootInlineBox):
(WebCore::RootInlineBox::setLineBreakInfo):

  • rendering/RootInlineBox.h:

(WebCore::RootInlineBox::lineBreakObj const):

11:12 AM Changeset in webkit [222989] by commit-queue@webkit.org
  • 2 edits
    4 adds in trunk/Source/WebKit

[WinCairo] Add shared curl files
https://bugs.webkit.org/show_bug.cgi?id=177999

Patch by Yousuke Kimoto <yousuke.kimoto@sony.com> on 2017-10-06
Reviewed by Alex Christensen.

  • PlatformWin.cmake:
  • Shared/Authentication/curl/AuthenticationManagerCurl.cpp: Added.

(WebKit::AuthenticationManager::receivedCredential):
(WebKit::AuthenticationManager::receivedRequestToContinueWithoutCredential):
(WebKit::AuthenticationManager::receivedCancellation):
(WebKit::AuthenticationManager::receivedRequestToPerformDefaultHandling):
(WebKit::AuthenticationManager::receivedChallengeRejection):

  • Shared/curl/WebCoreArgumentCodersCurl.cpp: Added.

(IPC::ArgumentCoder<ResourceRequest>::encodePlatformData):
(IPC::ArgumentCoder<ResourceRequest>::decodePlatformData):
(IPC::ArgumentCoder<CertificateInfo>::encode):
(IPC::ArgumentCoder<CertificateInfo>::decode):
(IPC::ArgumentCoder<ResourceError>::encodePlatformData):
(IPC::ArgumentCoder<ResourceError>::decodePlatformData):
(IPC::ArgumentCoder<ProtectionSpace>::encodePlatformData):
(IPC::ArgumentCoder<ProtectionSpace>::decodePlatformData):
(IPC::ArgumentCoder<Credential>::encodePlatformData):
(IPC::ArgumentCoder<Credential>::decodePlatformData):

11:03 AM Changeset in webkit [222988] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Network Tab - Make selection in the table more reliable (mousedown instead of click)
https://bugs.webkit.org/show_bug.cgi?id=177990

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-10-06
Reviewed by Brian Burg.

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView.prototype.tableCellClicked): Deleted.

  • UserInterface/Views/Table.js:

(WI.Table.prototype._handleMouseDown):
(WI.Table.prototype._handleClick): Deleted.
Switch to mousedown.

10:59 AM October 2017 Meeting edited by mmaxfield@apple.com
(diff)
10:54 AM October 2017 Meeting edited by mmaxfield@apple.com
(diff)
9:59 AM Changeset in webkit [222987] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Removing some dead code in RTCPeerConnection
https://bugs.webkit.org/show_bug.cgi?id=178011

Patch by Youenn Fablet <youenn@apple.com> on 2017-10-06
Reviewed by Alejandro G. Castro.

No change of behavior.
Removing code used by non-libwebrtc WebRTC backends.

  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::addTrack):
(WebCore::RTCPeerConnection::removeTrack):
(WebCore::RTCPeerConnection::completeAddTransceiver):

9:51 AM Changeset in webkit [222986] by dino@apple.com
  • 26 edits
    3 copies
    2 adds in trunk

ImageBitmap API stubs
https://bugs.webkit.org/show_bug.cgi?id=177984
<rdar://problem/34848023>

Patch by Sam and Dean.
Reviewed by Dean and Sam.

Source/WebCore:

Add the IDL for ImageBitmap and ImageBitmapOptions, plus some
stub implementations (complete with all the algorithms from
the HTML specification as comments).

  • CMakeLists.txt: Add the new files.
  • DerivedSources.make: Create the JS bindings for ImageBitmap and ImageBitmapOptions.
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/CallTracerTypes.h:
  • html/ImageBitmap.cpp: Added.

(WebCore::ImageBitmap::create):
(WebCore::ImageBitmap::createPromise):
(WebCore::ImageBitmap::ImageBitmap):
(WebCore::ImageBitmap::~ImageBitmap):
(WebCore::ImageBitmap::width const):
(WebCore::ImageBitmap::height const):
(WebCore::ImageBitmap::close):

  • html/ImageBitmap.h: Added.

(WebCore::ImageBitmap::isDetached const):

  • html/ImageBitmap.idl: Copied from Source/WebCore/html/canvas/CanvasDrawImage.idl.
  • html/ImageBitmapOptions.h: Copied from Source/WebCore/html/canvas/CanvasDrawImage.idl.
  • html/ImageBitmapOptions.idl: Copied from Source/WebCore/html/canvas/CanvasDrawImage.idl.
  • html/canvas/CanvasDrawImage.idl:
  • html/canvas/CanvasFillStrokeStyles.idl:
  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::size):
(WebCore::CanvasRenderingContext2D::drawImage):
(WebCore::CanvasRenderingContext2D::createPattern):

  • html/canvas/CanvasRenderingContext2D.h:
  • inspector/InspectorCanvas.cpp:

(WebCore::InspectorCanvas::indexForData):
(WebCore::InspectorCanvas::buildAction):
(WebCore::InspectorCanvas::buildArrayForImageBitmap):

  • inspector/InspectorCanvas.h:
  • inspector/RecordingSwizzleTypes.h:

LayoutTests:

New global constructors, so go through the pain of updating all
the platform results :(

  • js/dom/global-constructors-attributes-expected.txt:
  • platform/gtk/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-elcapitan-wk2/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-sierra-wk2/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-sierra/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-wk2/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
  • platform/win/js/dom/global-constructors-attributes-expected.txt:
  • platform/wpe/js/dom/global-constructors-attributes-expected.txt:
9:49 AM Changeset in webkit [222985] by Ms2ger@igalia.com
  • 6 edits in trunk/Source/WebCore

Create bindings for WebGL2's versions of texImage2D.
https://bugs.webkit.org/show_bug.cgi?id=178006

Reviewed by Dean Jackson.

No new tests: not much point in adding tests now; this method doesn't
do anything anyway.

  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::texImage2D):

  • html/canvas/WebGL2RenderingContext.h:
  • html/canvas/WebGL2RenderingContext.idl:
  • html/canvas/WebGLRenderingContext.idl:
  • html/canvas/WebGLRenderingContextBase.idl:
9:40 AM Changeset in webkit [222984] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

Sandbox rules block PluginProcess using "File Open/Save" dialogs
https://bugs.webkit.org/show_bug.cgi?id=177965
<rdar://problem/33976846>

Reviewed by Alexey Proskuryakov.

Update the PluginProcess sandboxes to allow the same XPC services as
the WebContent process. Also allow access to the openAndSavePanelServices.

  • PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
9:37 AM Changeset in webkit [222983] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Improve setting the default / initial sort of a Table
https://bugs.webkit.org/show_bug.cgi?id=177989

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-10-06
Reviewed by Brian Burg.

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView.prototype.initialLayout):
Set the default / initial sort.

  • UserInterface/Views/Table.js:

(WI.Table):
(WI.Table.prototype.set sortOrder):
(WI.Table.prototype.set sortColumnIdentifier):
During setup we should always update header views.

9:34 AM Changeset in webkit [222982] by fpizlo@apple.com
  • 6 edits
    1 delete in trunk/Source/bmalloc

Use one Scavenger thread for all Heaps
https://bugs.webkit.org/show_bug.cgi?id=174973

Reviewed by JF Bastien.

This combines the scavengers from all Heap instances into a single scavenger. It also combines
the accounting for deciding when to run. Each Heap still controls what it means to scavenge
itself (it's all in Heap::scavenge) but the policy decisions are all controlled by Scavenger.
Because Scavenger is also the only thing that needs an AsyncTask, this removes AsyncTask and
moves all of AsyncTask's logic into Scavenger.

This appears to be a 1% progression on JetStream (with high statistical confidence: p = 0.0049).

  • bmalloc.xcodeproj/project.pbxproj:
  • bmalloc/AsyncTask.h: Removed.
  • bmalloc/Heap.cpp:

(bmalloc::Heap::Heap):
(bmalloc::Heap::allocateSmallChunk):
(bmalloc::Heap::allocateSmallPage):
(bmalloc::Heap::deallocateSmallLine):
(bmalloc::Heap::splitAndAllocate):
(bmalloc::Heap::tryAllocateLarge):
(bmalloc::Heap::shrinkLarge):
(bmalloc::Heap::deallocateLarge):
(bmalloc::Heap::concurrentScavenge): Deleted.
(bmalloc::Heap::scheduleScavengerIfUnderMemoryPressure): Deleted.
(bmalloc::Heap::scheduleScavenger): Deleted.

  • bmalloc/Heap.h:
  • bmalloc/Scavenger.cpp:

(bmalloc::Scavenger::Scavenger):
(bmalloc::Scavenger::run):
(bmalloc::Scavenger::runHoldingLock):
(bmalloc::Scavenger::runSoon):
(bmalloc::Scavenger::runSoonHoldingLock):
(bmalloc::Scavenger::didStartGrowing):
(bmalloc::Scavenger::scheduleIfUnderMemoryPressure):
(bmalloc::Scavenger::scheduleIfUnderMemoryPressureHoldingLock):
(bmalloc::Scavenger::schedule):
(bmalloc::Scavenger::threadEntryPoint):
(bmalloc::Scavenger::threadRunLoop):
(bmalloc::Scavenger::setSelfQOSClass):

  • bmalloc/Scavenger.h:

(bmalloc::Scavenger::willRun):
(bmalloc::Scavenger::willRunSoon):

9:33 AM Changeset in webkit [222981] by rmorisset@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Avoid integer overflow in DFGStrengthReduction.cpp
https://bugs.webkit.org/show_bug.cgi?id=177944

Reviewed by Saam Barati.

The check that we won't do integer overflow by negating INT32_MIN was itself an integer overflow.
I think that signed integer overflow is undefined behaviour in C, so I replace it by an explicit check that value != INT32_MIN instead.

  • dfg/DFGStrengthReductionPhase.cpp:

(JSC::DFG::StrengthReductionPhase::handleNode):

9:20 AM Changeset in webkit [222980] by beidson@apple.com
  • 29 edits
    1 copy in trunk

Add (entirely incorrect) fetching of ServiceWorker scripts.
https://bugs.webkit.org/show_bug.cgi?id=176179

Reviewed by Andy Estes.

Source/WebCore:

No new tests (Covered by changes to existing tests).

When the Storage process is running the "Update" algorithm and a ServiceWorker script file needs to be fetched, this patch:

  • Messages back to the WebContent process that started the register/update job
  • Executes a FetchLoad in that script context for the script
  • Sends the results back to the Storage process

We don't do anything with the results yet.

Soon.

  • WebCore.xcodeproj/project.pbxproj:
  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::didFail):

  • workers/WorkerScriptLoader.h:

(WebCore::WorkerScriptLoader::error const):

  • workers/WorkerScriptLoaderClient.h:

(WebCore::WorkerScriptLoaderClient::~WorkerScriptLoaderClient):
(WebCore::WorkerScriptLoaderClient::didReceiveResponse): Deleted.
(WebCore::WorkerScriptLoaderClient::notifyFinished): Deleted.

  • workers/service/ServiceWorkerContainer.cpp:

(WebCore::ServiceWorkerContainer::startScriptFetchForJob):
(WebCore::ServiceWorkerContainer::jobFinishedLoadingScript):
(WebCore::ServiceWorkerContainer::jobFailedLoadingScript):

  • workers/service/ServiceWorkerContainer.h:
  • workers/service/ServiceWorkerFetchResult.h: Copied from Source/WebCore/workers/service/server/SWClientConnection.h.

(WebCore::ServiceWorkerFetchResult::encode const):
(WebCore::ServiceWorkerFetchResult::decode):

  • workers/service/ServiceWorkerJob.cpp:

(WebCore::ServiceWorkerJob::startScriptFetch):
(WebCore::ServiceWorkerJob::fetchScriptWithContext):
(WebCore::ServiceWorkerJob::didReceiveResponse):
(WebCore::ServiceWorkerJob::notifyFinished):

  • workers/service/ServiceWorkerJob.h:
  • workers/service/ServiceWorkerJobClient.h:
  • workers/service/server/SWClientConnection.cpp:

(WebCore::SWClientConnection::finishedFetchingScript):
(WebCore::SWClientConnection::failedFetchingScript):
(WebCore::SWClientConnection::startScriptFetchForServer):

  • workers/service/server/SWClientConnection.h:
  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::Connection::finishFetchingScriptInServer):
(WebCore::SWServer::startScriptFetch):
(WebCore::SWServer::scriptFetchFinished):

  • workers/service/server/SWServer.h:
  • workers/service/server/SWServerRegistration.cpp:

(WebCore::SWServerRegistration::scriptFetchFinished):
(WebCore::SWServerRegistration::runUpdateJob):
(WebCore::SWServerRegistration::startScriptFetchFromMainThread):
(WebCore::SWServerRegistration::startScriptFetchForCurrentJob):

  • workers/service/server/SWServerRegistration.h:

Source/WebKit:

  • StorageProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::startScriptFetchInClient):

  • StorageProcess/ServiceWorker/WebSWServerConnection.h:
  • StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
  • WebProcess/Storage/WebSWClientConnection.cpp:

(WebKit::WebSWClientConnection::finishFetchingScriptInServer):

  • WebProcess/Storage/WebSWClientConnection.h:
  • WebProcess/Storage/WebSWClientConnection.messages.in:

LayoutTests:

  • http/tests/workers/service/basic-register-exceptions-expected.txt:
  • http/tests/workers/service/basic-register-expected.txt:
  • http/tests/workers/service/resources/basic-register-exceptions.js:
  • http/tests/workers/service/resources/basic-register.js:
  • http/tests/workers/service/resources/registration-task-queue-scheduling-1.js:
8:06 AM Changeset in webkit [222979] by Ryan Haddad
  • 4 edits in trunk/LayoutTests

Rebaseline js/dom/global-constructors-attributes.html

Unreviewed test gardening.

  • platform/mac-elcapitan-wk2/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-sierra/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
8:01 AM Changeset in webkit [222978] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skip editing/pasteboard/data-transfer-items.html on iOS.
https://bugs.webkit.org/show_bug.cgi?id=177961

Unreviewed test gardening.

  • platform/ios/TestExpectations:
6:08 AM Changeset in webkit [222977] by Antti Koivisto
  • 4 edits in trunk

Minor WeakPtr improvements
https://bugs.webkit.org/show_bug.cgi?id=177958

Reviewed by Sam Weinig.

Source/WTF:

  • wtf/WeakPtr.h:

(WTF::WeakPtr::operator bool const):

Make explicit.

(WTF::WeakPtrFactory::createWeakPtr const):
(WTF::makeWeakPtr):

Remove templating from createWeakPtr, makeWeakPtr() is now the
canonical way to make derived-type WeakPtrs.

Tools:

  • TestWebKitAPI/Tests/WTF/WeakPtr.cpp:

(TestWebKitAPI::TEST):
(TestWebKitAPI::Base::createWeakPtr): Deleted.

6:05 AM Changeset in webkit [222976] by Carlos Garcia Campos
  • 2 edits in trunk/Tools

Unreviewed. Fix parsing of GTK unit tests output in bot configuration.

  • BuildSlaveSupport/build.webkit.org-config/master.cfg:

(RunGtkAPITests.commandComplete): Remove trailing ':' from the regular expression.

4:52 AM WebKitGTK/2.18.x edited by fred.wang@free.fr
(diff)
3:44 AM Changeset in webkit [222975] by zandobersek@gmail.com
  • 5 edits in trunk/Source/WebCore

[Cairo] Create Cairo patterns from Gradient objects on-the-fly
https://bugs.webkit.org/show_bug.cgi?id=177947

Reviewed by Carlos Garcia Campos.

Stop caching cairo_pattern_t objects for a specific global alpha value
in the Gradient class. Instead, create these as required, for whatever
alpha value. This drops some efficiency benefits in exchange for better
Cairo operation isolation, while also matching the same approach that
is used in the Pattern implementation for Cairo.

Introduce the createPlatformGradient() method for Cairo, resuing the
implementation of platformGradient() that's now removed. The
Cairo-specific setPlatformGradientSpaceTransform() method is also
removed since there's no cached cairo_pattern_t object that we can
update. The Cairo-specific m_platformGradientAlpha member float is also
deleted.

Gradient::fill() and prepareCairoContextSource() are the only two places
that need to create a cairo_pattern_t object off of Gradient, so they
are updated accordingly.

No new tests -- no changes in behavior.

  • platform/graphics/Gradient.cpp:

(WebCore::Gradient::setGradientSpaceTransform):
(WebCore::Gradient::setPlatformGradientSpaceTransform): Deleted.

  • platform/graphics/Gradient.h:
  • platform/graphics/cairo/GradientCairo.cpp:

(WebCore::Gradient::platformDestroy):
(WebCore::Gradient::createPlatformGradient):
(WebCore::Gradient::fill):
(WebCore::Gradient::platformGradient): Deleted.
(WebCore::Gradient::setPlatformGradientSpaceTransform): Deleted.

  • platform/graphics/cairo/PlatformContextCairo.cpp:

(WebCore::prepareCairoContextSource):

3:22 AM Changeset in webkit [222974] by Ms2ger@igalia.com
  • 6 edits in trunk/Source/WebCore

Create bindings for WebGL2's versions of compressedTexImage2D.
https://bugs.webkit.org/show_bug.cgi?id=177481

Reviewed by Žan Doberšek.

No new tests: not much point in adding tests now; this method doesn't
do anything anyway.

  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::compressedTexImage2D):

  • html/canvas/WebGL2RenderingContext.h:
  • html/canvas/WebGL2RenderingContext.idl:
  • html/canvas/WebGLRenderingContext.idl:
  • html/canvas/WebGLRenderingContextBase.idl:
3:16 AM Changeset in webkit [222973] by tpopela@redhat.com
  • 2 edits in trunk/LayoutTests

[GTK] 2 text tests failing since r222838
https://bugs.webkit.org/show_bug.cgi?id=177938

Reviewed by Carlos Garcia Campos.

These tests are passing after r222907

  • platform/gtk/TestExpectations:
2:43 AM Changeset in webkit [222972] by eocanha@igalia.com
  • 4 edits in trunk/Source/WebCore

[GStreamer][MSE] Likely race condition causes WTF::Deque to crash on debug
https://bugs.webkit.org/show_bug.cgi?id=177410

Reviewed by Xabier Rodriguez-Calvar.

Deque keeps a chain of iterators which is updated as iterators are
created/destroyed. This can cause problems when iterators are created
from multiple threads as they are now, sometimes without proper
locking because it's not actually needed.

For instance, the lock in PlaybackPipeline::enqueueSample() is not
needed because none of the accesses are actually risky. Locking there
just to make Deque happy would only cause a performance penalty on the
readers working in other threads.

No new tests.

  • platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:

(WebCore::PlaybackPipeline::addSourceBuffer): Use Vector instead of
Deque.
(WebCore::PlaybackPipeline::removeSourceBuffer): Ditto.
(WebCore::PlaybackPipeline::enqueueSample): Remove lock and explain
why it's not needed.

  • platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:

(webKitMediaSrcFinalize): Use Vector.

  • platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamerPrivate.h:

Use Vector.

2:30 AM Changeset in webkit [222971] by zandobersek@gmail.com
  • 3 edits in trunk/Source/WebCore

Remove dead code from Pattern
https://bugs.webkit.org/show_bug.cgi?id=177945

Reviewed by Carlos Garcia Campos.

Drop the platormDestroy() and setPlatformPatternSpaceTransform() methods
from the Pattern class -- these were empty implementations, with no port
providing their own. The destructor is defaulted in the implementation
file. The m_pattern member variable is also dropped as it was unused.

No new tests -- no change in behavior.

  • platform/graphics/Pattern.cpp:

(WebCore::Pattern::setPatternSpaceTransform):
(WebCore::Pattern::~Pattern): Deleted.
(WebCore::Pattern::platformDestroy): Deleted.
(WebCore::Pattern::setPlatformPatternSpaceTransform): Deleted.

  • platform/graphics/Pattern.h:
2:01 AM Changeset in webkit [222970] by cturner@igalia.com
  • 2 edits in trunk/Tools

Disable bmalloc when running Valgrind
https://bugs.webkit.org/show_bug.cgi?id=177923

Reviewed by Carlos Alberto Lopez Perez.

  • Scripts/webkitpy/port/gtk.py:

(GtkPort.setup_environ_for_server):

1:52 AM Changeset in webkit [222969] by clopez@igalia.com
  • 2 edits in trunk/Source/WebCore

[GTK][Clang] Build fix after r222926
https://bugs.webkit.org/show_bug.cgi?id=175384

Unreviewed build fix.

  • css/CSSFontFace.cpp:

(WebCore::CSSFontFace::setStatus):

1:36 AM Changeset in webkit [222968] by zandobersek@gmail.com
  • 2 edits in trunk/Tools

Implement TestController::platformContext() for WPE, returning the
m_context pointer as the GTK+ port does. This fixes the crashes on
the WPE testers.

Rubber-stamped by Carlos Garcia Campos.

  • WebKitTestRunner/wpe/TestControllerWPE.cpp:

(WTR::TestController::platformContext):

12:47 AM Changeset in webkit [222967] by Carlos Garcia Campos
  • 16 edits in trunk

[GTK][WPE] Add API to configure and enable resource load statistics
https://bugs.webkit.org/show_bug.cgi?id=177943

Reviewed by Michael Catanzaro.

Source/WebKit:

Add new WebKitWebsiteDataManager construct only property to set the directory where the persistent stats are
stored, and methods to enable resource load statistics and query whether it's currently enabled. Also add a new
Website data type to be able to remove the persistent stats using WebKitWebsiteDataManager existing API.

  • UIProcess/API/glib/WebKitWebContext.cpp:

(websiteDataStoreConfigurationForWebProcessPoolConfiguration):
(webkitWebContextConstructed):

  • UIProcess/API/glib/WebKitWebsiteData.cpp:

(recordContainsSupportedDataTypes):
(toWebKitWebsiteDataTypes):

  • UIProcess/API/glib/WebKitWebsiteDataManager.cpp:

(webkitWebsiteDataManagerGetProperty):
(webkitWebsiteDataManagerSetProperty):
(webkitWebsiteDataManagerConstructed):
(webkit_website_data_manager_class_init):
(webkitWebsiteDataManagerGetDataStore):
(webkit_website_data_manager_get_resource_load_stats_directory):
(webkit_website_data_manager_set_resource_load_stats_enabled):
(webkit_website_data_manager_get_resource_load_stats_enabled):
(toWebsiteDataTypes):

  • UIProcess/API/gtk/WebKitWebsiteData.h:
  • UIProcess/API/gtk/WebKitWebsiteDataManager.h:
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
  • UIProcess/API/wpe/WebKitWebsiteData.h:
  • UIProcess/API/wpe/WebKitWebsiteDataManager.h:

Tools:

Add a command line option to enable intelligent tracking prevention to MiniBrowser and tests cases to check the
new API.

  • MiniBrowser/gtk/main.c:

(main):

  • TestWebKitAPI/Tests/WebKitGLib/TestWebsiteData.cpp:

(serverCallback):
(testWebsiteDataConfiguration):
(testWebsiteDataEphemeral):
(testWebsiteDataResourceLoadStats):
(beforeAll):

  • TestWebKitAPI/glib/WebKitGLib/TestMain.h:

(Test::Test):

  • TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp:

(directoryChangedCallback):
(WebViewTest::waitUntilFileExists):

  • TestWebKitAPI/glib/WebKitGLib/WebViewTest.h:
12:44 AM Changeset in webkit [222966] by eocanha@igalia.com
  • 2 edits in trunk/Source/WebCore

[MSE][GStreamer] Seek on youtube.com/tv fails after r217185
https://bugs.webkit.org/show_bug.cgi?id=177976

Reviewed by Jer Noble.

Covered by existing tests.

  • Modules/mediasource/MediaSource.cpp:

(WebCore::MediaSource::seekToTime): Only call waitForSeekCompleted()
when the time is not buffered when using GStreamer.

12:43 AM Changeset in webkit [222965] by eocanha@igalia.com
  • 2 edits in trunk/Source/WebCore

[MSE] Dead code in SourceBuffer::appendBufferTimerFired()
https://bugs.webkit.org/show_bug.cgi?id=177951

Reviewed by Jer Noble.

Covered by LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-append-buffer.html.

  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::appendBufferTimerFired): Remove redundant code.

12:30 AM Changeset in webkit [222964] by rniwa@webkit.org
  • 6 edits in trunk/Source/WebCore

Split StaticPasteboard::writeString into writeString and writeStringInCustomData
https://bugs.webkit.org/show_bug.cgi?id=177991

Reviewed by Wenson Hsieh.

Split writeString into the one that writes into the plaform pasteboard natively and the custom pasteboard data like we did
in r222680 for readString and readStringInCustomData.

  • dom/DataTransfer.cpp:

(WebCore::DataTransfer::setData):
(WebCore::DataTransfer::setDataFromItemList): Extracted out of setData.

  • dom/DataTransfer.h:
  • dom/DataTransferItemList.cpp:

(WebCore::DataTransferItemList::add):

  • platform/StaticPasteboard.cpp:

(WebCore::updateTypes): Extacted out of writeString.
(WebCore::StaticPasteboard::writeString):
(WebCore::StaticPasteboard::writeStringInCustomData):

  • platform/StaticPasteboard.h:

Oct 5, 2017:

11:52 PM Changeset in webkit [222963] by dino@apple.com
  • 3 edits in trunk

[WebGL] Safari performance is slow due to high MSAA usage
https://bugs.webkit.org/show_bug.cgi?id=177949
<rdar://problem/34835619>

Reviewed by Sam Weinig.

On some hardware, typically integrated GPUs, using MSAA with a sample
count above 4 produces bad performance. Limit the number of samples to
4 universally.

  • platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:

(WebCore::GraphicsContext3D::reshapeFBOs):

11:48 PM Changeset in webkit [222962] by Carlos Garcia Campos
  • 19 edits
    1 copy
    1 add in trunk

[GTK][WPE] All resource load statistics tests added in r212183 crash in GTK bots, timeout in GTK and WPE bots since r219049
https://bugs.webkit.org/show_bug.cgi?id=168171

Reviewed by Chris Dumez.

Source/WebCore:

Add an implementation of FileMonitor for GLib based ports.

  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
  • platform/FileMonitor.cpp:
  • platform/FileMonitor.h:
  • platform/glib/FileMonitorGLib.cpp: Added.

(WebCore::FileMonitor::FileMonitor):
(WebCore::FileMonitor::~FileMonitor):
(WebCore::FileMonitor::fileChangedCallback):
(WebCore::FileMonitor::didChange):

Source/WebKit:

Add C API to handle all resource load statistics requests made by the layout tests.

  • UIProcess/API/C/WKWebsiteDataStoreRef.cpp:

(WKWebsiteDataStoreSetStatisticsLastSeen):
(WKWebsiteDataStoreSetStatisticsPrevalentResource):
(WKWebsiteDataStoreIsStatisticsPrevalentResource):
(WKWebsiteDataStoreSetStatisticsHasHadUserInteraction):
(WKWebsiteDataStoreIsStatisticsHasHadUserInteraction):
(WKWebsiteDataStoreSetStatisticsGrandfathered):
(WKWebsiteDataStoreIsStatisticsGrandfathered):
(WKWebsiteDataStoreSetStatisticsSubframeUnderTopFrameOrigin):
(WKWebsiteDataStoreSetStatisticsSubresourceUnderTopFrameOrigin):
(WKWebsiteDataStoreSetStatisticsSubresourceUniqueRedirectTo):
(WKWebsiteDataStoreSetStatisticsTimeToLiveUserInteraction):
(WKWebsiteDataStoreSetStatisticsTimeToLiveCookiePartitionFree):
(WKWebsiteDataStoreStatisticsProcessStatisticsAndDataRecords):
(WKWebsiteDataStoreStatisticsUpdateCookiePartitioning):
(WKWebsiteDataStoreSetStatisticsShouldPartitionCookiesForHost):
(WKWebsiteDataStoreStatisticsSubmitTelemetry):
(WKWebsiteDataStoreSetStatisticsNotifyPagesWhenDataRecordsWereScanned):
(WKWebsiteDataStoreSetStatisticsShouldClassifyResourcesBeforeDataRecordsRemoval):
(WKWebsiteDataStoreSetStatisticsNotifyPagesWhenTelemetryWasCaptured):
(WKWebsiteDataStoreSetStatisticsMinimumTimeBetweenDataRecordsRemoval):
(WKWebsiteDataStoreSetStatisticsGrandfatheringTime):
(WKWebsiteDataStoreSetStatisticsMaxStatisticsEntries):
(WKWebsiteDataStoreSetStatisticsPruneEntriesDownTo):
(WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStore):
(WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours):
(WKWebsiteDataStoreStatisticsClearThroughWebsiteDataRemoval):
(WKWebsiteDataStoreStatisticsResetToConsistentState):

  • UIProcess/API/C/WKWebsiteDataStoreRef.h:

Tools:

Implement all resource load statistics functions in TestController using the C API. Also enable the FileMonitor
unit test. This test requires a platform implementation of Util::run(), so I've added UtilitiesGLib.cpp with an
iplementation common to glib based ports using WTF RunLoop abstraction.

  • TestWebKitAPI/PlatformGTK.cmake:
  • TestWebKitAPI/PlatformWPE.cmake:
  • TestWebKitAPI/Tests/WebCore/FileMonitor.cpp:
  • TestWebKitAPI/glib/UtilitiesGLib.cpp: Copied from Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.h.

(TestWebKitAPI::Util::run):
(TestWebKitAPI::Util::spinRunLoop):
(TestWebKitAPI::Util::sleep):

  • TestWebKitAPI/gtk/PlatformUtilitiesGtk.cpp:
  • TestWebKitAPI/wpe/PlatformUtilitiesWPE.cpp:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::platformAdjustContext):
(WTR::TestController::setStatisticsLastSeen):
(WTR::TestController::setStatisticsPrevalentResource):
(WTR::ResourceStatisticsCallbackContext::ResourceStatisticsCallbackContext):
(WTR::resourceStatisticsCallback):
(WTR::TestController::isStatisticsPrevalentResource):
(WTR::TestController::setStatisticsHasHadUserInteraction):
(WTR::TestController::isStatisticsHasHadUserInteraction):
(WTR::TestController::setStatisticsGrandfathered):
(WTR::TestController::isStatisticsGrandfathered):
(WTR::TestController::setStatisticsSubframeUnderTopFrameOrigin):
(WTR::TestController::setStatisticsSubresourceUnderTopFrameOrigin):
(WTR::TestController::setStatisticsSubresourceUniqueRedirectTo):
(WTR::TestController::setStatisticsTimeToLiveUserInteraction):
(WTR::TestController::setStatisticsTimeToLiveCookiePartitionFree):
(WTR::TestController::statisticsProcessStatisticsAndDataRecords):
(WTR::TestController::statisticsUpdateCookiePartitioning):
(WTR::TestController::statisticsSetShouldPartitionCookiesForHost):
(WTR::TestController::statisticsSubmitTelemetry):
(WTR::TestController::setStatisticsNotifyPagesWhenDataRecordsWereScanned):
(WTR::TestController::setStatisticsShouldClassifyResourcesBeforeDataRecordsRemoval):
(WTR::TestController::setStatisticsNotifyPagesWhenTelemetryWasCaptured):
(WTR::TestController::setStatisticsMinimumTimeBetweenDataRecordsRemoval):
(WTR::TestController::setStatisticsGrandfatheringTime):
(WTR::TestController::setStatisticsMaxStatisticsEntries):
(WTR::TestController::setStatisticsPruneEntriesDownTo):
(WTR::TestController::statisticsClearInMemoryAndPersistentStore):
(WTR::TestController::statisticsClearInMemoryAndPersistentStoreModifiedSinceHours):
(WTR::TestController::statisticsClearThroughWebsiteDataRemovalCallback):
(WTR::TestController::statisticsClearThroughWebsiteDataRemoval):
(WTR::TestController::statisticsResetToConsistentState):

  • WebKitTestRunner/TestController.h:

LayoutTests:

Unskip the tests.

  • platform/wpe/TestExpectations:
  • platform/wpe/TestExpectations:
11:37 PM Changeset in webkit [222961] by dino@apple.com
  • 11 edits in trunk

Lots of missing frames in YouTube360 when fullscreen on MacBook
https://bugs.webkit.org/show_bug.cgi?id=177903
<rdar://problem/33273300>

Reviewed by Sam Weinig.

Source/WebCore:

Our compositing path for WebGL on macOS was too slow, requiring a copy
of the framebuffer into another GL context. Replace this by having
WebGL render into a texture that is backed by an IOSurface, and then
set the WebGLLayer to use the IOSurface as contents.

Covered by the existing WebGL tests.

  • platform/graphics/GraphicsContext3D.h:

(WebCore::GraphicsContext3D::platformTexture const): We no longer use the
framebuffer object outside the class, so change this to return the GL texture
that the framebuffer is rendering in to. It was kind-of strange that it was
named this way originally.
Also make endPaint available on macOS, and add the definitions for
createIOSurfaceBackingStore and updateFramebufferTextureBackingStoreFromLayer.

  • platform/graphics/cocoa/GraphicsContext3DCocoa.mm:

(WebCore::GraphicsContext3D::GraphicsContext3D): Now that we're using an IOSurface,
we're binding to a new attachment point, GL_TEXTURE_RECTANGLE.
(WebCore::GraphicsContext3D::endPaint): This is now being called on macOS and iOS,
so add a comment that explains the extra work that iOS needs to do. At some future
point it would be nice to make this slightly cleaner, so that iOS and macOS are
more similar.
(WebCore::GraphicsContext3D::allocateIOSurfaceBackingStore): New function that calls
into the corresponding WebGLLayer function.
(WebCore::GraphicsContext3D::updateFramebufferTextureBackingStoreFromLayer): Ditto.

  • platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:

(WebCore::wipeAlphaChannelFromPixels): Both readPixels and drawing a WebGL context
into another buffer need to fill out the alpha channel if this context was
created without one, otherwise the IOSurface backing store will happily provide
what might be non-zero values.
(WebCore::GraphicsContext3D::readPixelsAndConvertToBGRAIfNecessary): Call the helper above.
(WebCore::GraphicsContext3D::reshapeFBOs): Add more code to call into the macOS-specific
function to use an IOSurface as the framebuffer texture.
(WebCore::GraphicsContext3D::readPixels): Call the helper above.

  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:

(PlatformCALayerCocoa::copyContentsFromLayer): Replace the use of the
deprecated setContentsChanged with reloadValueForKeyPath.

  • platform/graphics/cocoa/WebGLLayer.h: The macOS implementation now

inherits from CALayer directly rather than CAOpenGLLayer. It also adds
a few member variables to handle the IOSurfaces used for triple buffering.

  • platform/graphics/cocoa/WebGLLayer.mm:

(-[WebGLLayer initWithGraphicsContext3D:]): If we were created without an
alpha channel, tell CA that we're an opaque layer. Also set the layer's transform
to identity, so that it calls into the code below to flip the contents.
(-[WebGLLayer setTransform:]): Because an IOSurface is used for the layer contents,
we don't get a chance to flip the drawing the way we do via the drawInContext delegate.
Instead we have to apply a scale(1, -1) transform on top of the layer transform to
make sure the layer is rendered right-way up.
(-[WebGLLayer setAnchorPoint:]): Ditto, except we have to assume the anchor point is
at the bottom of the layer, so flip the Y value.
(-[WebGLLayer display]): Swap between the drawing buffer and the contents buffer, and
then get a new buffer ready for display.
(createAppropriateIOSurface): Helper.
(-[WebGLLayer allocateIOSurfaceBackingStoreWithSize:usingAlpha:]): Initializes the
IOSurfaces used for drawing buffers.
(-[WebGLLayer bindFramebufferToNextAvailableSurface]): Take the next available IOSurface and
make it the drawing buffer (binding in to WebGL at the same time).
(-[WebGLLayer copyCGLPixelFormatForDisplayMask:]): Deleted.
(-[WebGLLayer copyCGLContextForPixelFormat:]): Deleted.
(-[WebGLLayer drawInCGLContext:pixelFormat:forLayerTime:displayTime:]): Deleted.

  • platform/graphics/mac/WebLayer.mm: Remove the definition of reloadValueForKeyPath.

Source/WebCore/PAL:

Add reloadValueForKeyPath to replace setContentsChanged on CALayer.

  • pal/spi/cocoa/QuartzCoreSPI.h:
11:32 PM Changeset in webkit [222960] by commit-queue@webkit.org
  • 34 edits
    3 moves
    2 adds in trunk/Source

Update Source/ThirdParty/woff2 to 22c256bc457777744ba14b7325a6e8e0e7dec91c
https://bugs.webkit.org/show_bug.cgi?id=177994

Patch by Frederic Wang <fwang@igalia.com> on 2017-10-05
Reviewed by Michael Catanzaro.

Source/ThirdParty:

  • woff2/CMakeLists.txt: Also consider the directory for public headers.
  • woff2/README.webkit:
  • woff2/include/woff2/decode.h: Renamed from Source/ThirdParty/woff2/src/woff2_dec.h.
  • woff2/include/woff2/encode.h: Renamed from Source/ThirdParty/woff2/src/woff2_enc.h.

(woff2::WOFF2Params::WOFF2Params):

  • woff2/include/woff2/output.h: Renamed from Source/ThirdParty/woff2/src/woff2_out.h.

(woff2::WOFF2Out::~WOFF2Out):
(woff2::WOFF2StringOut::MaxSize):

  • woff2/src/buffer.h:
  • woff2/src/convert_woff2ttf_*.cc:
  • woff2/src/file.h:
  • woff2/src/font.cc:
  • woff2/src/font.h:
  • woff2/src/glyph.cc:
  • woff2/src/glyph.h:
  • woff2/src/normalize.cc:
  • woff2/src/normalize.h:
  • woff2/src/port.h:
  • woff2/src/round.h:
  • woff2/src/store_bytes.h:
  • woff2/src/table_tags.cc:
  • woff2/src/table_tags.h:
  • woff2/src/transform.cc:
  • woff2/src/transform.h:
  • woff2/src/variable_length.cc:
  • woff2/src/variable_length.h:
  • woff2/src/woff2_common.cc:
  • woff2/src/woff2_common.h:
  • woff2/src/woff2_compress.cc:
  • woff2/src/woff2_dec.cc:
  • woff2/src/woff2_decompress.cc:
  • woff2/src/woff2_enc.cc:
  • woff2/src/woff2_info.cc:
  • woff2/src/woff2_out.cc:
  • woff2/update.sh: Also consider directory for public headers.

Source/WebCore:

No new tests, already covered by existing tests.

  • CMakeLists.txt: Include the directory for public headers instead.
  • platform/graphics/WOFFFileFormat.cpp: Use the public header

woff2/decode.h and do not use the "wOF2" constant from private headers.
(WebCore::isWOFF):
(WebCore::convertWOFFToSfnt):

10:48 PM Changeset in webkit [222959] by Nikita Vasilyev
  • 14 edits
    1 copy
    2 adds in trunk

Web Inspector: Styles Redesign: Add support for keyboard navigation (Tab, Shift-Tab, Enter, Esc)
https://bugs.webkit.org/show_bug.cgi?id=177711

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

Enter, Tab, Shift-Tab should commit changes.
Escape should discard changes.

Tab and Enter should navigate forward (focus on the next field).
Shift-Tab should navigate backward (focus on the previous field).
Esc should not change the focus.

When navigating forward from:

  • Selector: Focus on the first property name. If it doesn’t exist, create a blank property.
  • Property name:
    • If property name is blank, discard the property and focus on the next editable field (property name or selector of the next rule).
    • If property is not blank, focus on the value.
  • Property value:
    • If the last value in the rule, create a blank property and focus on its name.
    • If not the last value in the rule, focus on the next editable field (property name or selector of the next rule).

When navigating backward from:

  • Selector: create a blank property on the previous editable rule and focus on its name.
  • Property name:
    • Focus on the rule's selector.
  • Property value:
    • Focus on the property name.
  • UserInterface/Base/Utilities.js:

(Event.prototype.stop):

  • UserInterface/Main.html:

Add new files. Keep one class per file.

  • UserInterface/Models/CSSProperty.js:

(WI.CSSProperty.prototype.remove):
(WI.CSSProperty.prototype.set name):
(WI.CSSProperty.prototype.set rawValue):
(WI.CSSProperty.prototype.get editable):
(WI.CSSProperty.prototype._updateStyleText):
(WI.CSSProperty.prototype._updateOwnerStyleText):
Update indices and ranges of properties following the edited one to prevent data corruption.

  • UserInterface/Models/CSSStyleDeclaration.js:

(WI.CSSStyleDeclaration.prototype.get selectorEditable):
(WI.CSSStyleDeclaration.prototype.set text):
(WI.CSSStyleDeclaration.prototype.newBlankProperty):
(WI.CSSStyleDeclaration.prototype.shiftPropertiesAfter):
(WI.CSSStyleDeclaration.prototype._rangeAfterPropertyAtIndex):
Implement adding new blank properties.

  • UserInterface/Models/TextRange.js:

(WI.TextRange.prototype.cloneAndModify):
Add an assert to catch negative number errors.

(WI.TextRange.prototype.collapseToEnd):
Add a utility function akin Selection.prototype.collapseToEnd.

  • UserInterface/Views/CSSStyleDeclarationTextEditor.js:

(WI.CSSStyleDeclarationTextEditor.prototype._handleShiftTabKey):
(WI.CSSStyleDeclarationTextEditor.prototype._handleTabKey):
(WI.CSSStyleDeclarationTextEditor.prototype._formattedContent):
Move PrefixWhitespace from a view to a model (WI.CSSStyleDeclaration.PrefixWhitespace),
since it's already used in the model.

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:

(.spreadsheet-style-declaration-editor :matches(.name, .value).editing):

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:

(WI.SpreadsheetCSSStyleDeclarationEditor):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.startEditingFirstProperty):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.startEditingLastProperty):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetCSSStyleDeclarationEditorFocusMoved):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyRemoved):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get _propertiesToRender):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._addBlankProperty):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._isFocused):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
Give SpreadsheetCSSStyleDeclarationEditor a delegate so that it can move focus to a CSS selector, or previous and next CSS rules.

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:

(WI.SpreadsheetCSSStyleDeclarationSection):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.get propertiesEditor):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.get editable):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.startEditingRuleSelector):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.cssStyleDeclarationTextEditorStartEditingRuleSelector):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetSelectorFieldDidChange):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.cssStyleDeclarationEditorStartEditingAdjacentRule):
Give SpreadsheetCSSStyleDeclarationSection a delegate so that it can move focus to previous and next CSS rules.

  • UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:

(WI.SpreadsheetRulesStyleDetailsPanel.prototype.refresh):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.cssStyleDeclarationSectionStartEditingNextRule):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.cssStyleDeclarationSectionStartEditingPreviousRule):
(WI.SpreadsheetRulesStyleDetailsPanel):
Implement focusing on the next and previous CSS rules.

  • UserInterface/Views/SpreadsheetSelectorField.js: Added.

(WI.SpreadsheetSelectorField):
(WI.SpreadsheetSelectorField.prototype.get editing):
(WI.SpreadsheetSelectorField.prototype.startEditing):
(WI.SpreadsheetSelectorField.prototype.stopEditing):
(WI.SpreadsheetSelectorField.prototype._selectText):
(WI.SpreadsheetSelectorField.prototype._handleClick):
(WI.SpreadsheetSelectorField.prototype._handleFocus):
(WI.SpreadsheetSelectorField.prototype._handleBlur):
(WI.SpreadsheetSelectorField.prototype._handleKeyDown):
Move SpreadsheetSelectorField into its own file.

  • UserInterface/Views/SpreadsheetStyleProperty.js: Added.

(WI.SpreadsheetStyleProperty):
(WI.SpreadsheetStyleProperty.prototype.get element):
(WI.SpreadsheetStyleProperty.prototype.get nameTextField):
(WI.SpreadsheetStyleProperty.prototype.get valueTextField):
(WI.SpreadsheetStyleProperty.prototype._remove):
(WI.SpreadsheetStyleProperty.prototype._update):
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidChange):
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidCommit):
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur):
(WI.SpreadsheetStyleProperty.prototype._handleNameChange):
(WI.SpreadsheetStyleProperty.prototype._handleValueChange):
Move SpreadsheetStyleProperty into its own file.

  • UserInterface/Views/SpreadsheetTextField.js: Added.

(WI.SpreadsheetTextField):
(WI.SpreadsheetTextField.prototype.get element):
(WI.SpreadsheetTextField.prototype.get editing):
(WI.SpreadsheetTextField.prototype.get value):
(WI.SpreadsheetTextField.prototype.set value):
(WI.SpreadsheetTextField.prototype.startEditing):
(WI.SpreadsheetTextField.prototype.stopEditing):
(WI.SpreadsheetTextField.prototype._selectText):
(WI.SpreadsheetTextField.prototype._discardChange):
(WI.SpreadsheetTextField.prototype._handleFocus):
(WI.SpreadsheetTextField.prototype._handleBlur):
(WI.SpreadsheetTextField.prototype._handleKeyDown):
(WI.SpreadsheetTextField.prototype._handleInput):
Introduce SpreadsheetTextField that is used for editing CSS property names and values.

LayoutTests:

Add tests for WI.CSSProperty.prototype.remove.

  • inspector/css/css-property-expected.txt:
  • inspector/css/css-property.html:
10:04 PM Changeset in webkit [222958] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Rebaseline fast/dom/navigator-detached-no-crash.html.
https://bugs.webkit.org/show_bug.cgi?id=177261

Unreviewed test gardening.

  • fast/dom/navigator-detached-no-crash-expected.txt:
  • platform/mac-elcapitan-wk2/fast/dom/navigator-detached-no-crash-expected.txt:
10:00 PM Changeset in webkit [222957] by Ryan Haddad
  • 10 edits in trunk/Source/WebCore

Unreviewed, rolling out r222951 and r222952.
https://bugs.webkit.org/show_bug.cgi?id=177992

"Broke the iOS build and introduced a webgl LayoutTest
failure." (Requested by ryanhaddad on #webkit).

Reverted changesets:

"Lots of missing frames in YouTube360 when fullscreen on
MacBook"
https://bugs.webkit.org/show_bug.cgi?id=177903
http://trac.webkit.org/changeset/222951

"Lots of missing frames in YouTube360 when fullscreen on
MacBook"
https://bugs.webkit.org/show_bug.cgi?id=177903
http://trac.webkit.org/changeset/222952

Patch by Commit Queue <commit-queue@webkit.org> on 2017-10-05

8:51 PM Changeset in webkit [222956] by rniwa@webkit.org
  • 7 edits
    4 adds in trunk

DataTransfer shouldn't contain text/html when performing Paste and Match Style
https://bugs.webkit.org/show_bug.cgi?id=174165
<rdar://problem/33138027>

Reviewed by Wenson Hsieh.

Source/WebCore:

When performing Paste and Match Style, only expose the plain text by creating a StaticPasteboard with plain text content.

This patch introduces ClipboardEventKind enum class to differentiate regular paste and paste and match style (internally
called as pasteAsPlainText) since both operations use "paste" event.

Tests: editing/pasteboard/data-transfer-get-data-on-paste-as-plain-text-when-custom-pasteboard-data-disabled.html

editing/pasteboard/data-transfer-get-data-on-paste-as-plain-text.html

  • dom/DataTransfer.cpp:

(WebCore::DataTransfer::createForCopyAndPaste): Made this function take Pasteboard as an argument.

  • dom/DataTransfer.h:
  • editing/Editor.cpp:

(WebCore::ClipboardEventKind): Added.
(WebCore::eventNameForClipboardEvent): Added.
(WebCore::createDataTransferForClipboardEvent): Added.
(WebCore::dispatchClipboardEvent):
(WebCore::Editor::canDHTMLCut):
(WebCore::Editor::canDHTMLCopy):
(WebCore::Editor::canDHTMLPaste):
(WebCore::Editor::tryDHTMLCopy):
(WebCore::Editor::tryDHTMLCut):
(WebCore::Editor::tryDHTMLPaste): Deleted.
(WebCore::Editor::paste):
(WebCore::Editor::pasteAsPlainText):

  • platform/ios/PasteboardIOS.mm:

(WebCore::Pasteboard::addHTMLClipboardTypesForCocoaType): Add "text/html" when public.html UTI is in the pasteboard
even when the custom pasteboard data is disabled. We continue to add public.html in the case some app dependent on
seeing "public.html" in dataTransfer.types.

LayoutTests:

Added regression tests for pasting as plain text.

  • editing/pasteboard/data-transfer-get-data-on-paste-as-plain-text-expected.txt: Added.
  • editing/pasteboard/data-transfer-get-data-on-paste-as-plain-text-when-custom-pasteboard-data-disabled-expected.txt: Added.
  • editing/pasteboard/data-transfer-get-data-on-paste-as-plain-text-when-custom-pasteboard-data-disabled.html: Added.
  • editing/pasteboard/data-transfer-get-data-on-paste-as-plain-text.html: Added.
8:06 PM Changeset in webkit [222955] by timothy_horton@apple.com
  • 3 edits in trunk/Source

Fix the Mac CMake build
https://bugs.webkit.org/show_bug.cgi?id=177985

Unreviewed build fix.

  • CMakeLists.txt:
  • PlatformMac.cmake:

After r222917, there's one more piece of WebKitSystemInterface left.
And some missing bits of PaymentRequest.

8:01 PM Changeset in webkit [222954] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

JSC generate unified sources doesn't need to run during installhdrs.
https://bugs.webkit.org/show_bug.cgi?id=177640

Reviewed by Dan Bernstein.

generate unified sources doesn't need to have a xcconfig file
since we don't have any feature defines. Also, remove the plist
because there's no plist for this...

7:41 PM Changeset in webkit [222953] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

RenderTable should not hold section raw pointers
https://bugs.webkit.org/show_bug.cgi?id=177977
<rdar://problem/34846034>

Reviewed by Simon Fraser.

This enables us to remove forced recalcSections calls.

Covered by existing tests.

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::RenderTable):
(WebCore::resetSectionPointerIfNotBefore):
(WebCore::RenderTable::addChild):
(WebCore::RenderTable::recalcSections const):
(WebCore::RenderTable::sectionAbove const):

  • rendering/RenderTable.h:

(WebCore::RenderTable::header const):
(WebCore::RenderTable::footer const):
(WebCore::RenderTable::firstBody const):
(WebCore::RenderTable::topSection const):

7:36 PM Changeset in webkit [222952] by dino@apple.com
  • 2 edits in trunk/Source/WebCore

Lots of missing frames in YouTube360 when fullscreen on MacBook
https://bugs.webkit.org/show_bug.cgi?id=177903
<rdar://problem/33273300>

iOS build fix.

  • platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:
7:31 PM Changeset in webkit [222951] by dino@apple.com
  • 10 edits in trunk/Source/WebCore

Lots of missing frames in YouTube360 when fullscreen on MacBook
https://bugs.webkit.org/show_bug.cgi?id=177903
<rdar://problem/33273300>

Reviewed by Sam Weinig.

Our compositing path for WebGL on macOS was too slow, requiring a copy
of the framebuffer into another GL context. Replace this by having
WebGL render into a texture that is backed by an IOSurface, and then
set the WebGLLayer to use the IOSurface as contents.

Covered by the existing WebGL tests.

  • platform/graphics/GraphicsContext3D.h:

(WebCore::GraphicsContext3D::platformTexture const): We no longer use the
framebuffer object outside the class, so change this to return the GL texture
that the framebuffer is rendering in to. It was kind-of strange that it was
named this way originally.
Also make endPaint available on macOS, and add the definitions for
createIOSurfaceBackingStore and updateFramebufferTextureBackingStoreFromLayer.

  • platform/graphics/cocoa/GraphicsContext3DCocoa.mm:

(WebCore::GraphicsContext3D::GraphicsContext3D): Now that we're using an IOSurface,
we're binding to a new attachment point, GL_TEXTURE_RECTANGLE.
(WebCore::GraphicsContext3D::endPaint): This is now being called on macOS and iOS,
so add a comment that explains the extra work that iOS needs to do. At some future
point it would be nice to make this slightly cleaner, so that iOS and macOS are
more similar.
(WebCore::GraphicsContext3D::allocateIOSurfaceBackingStore): New function that calls
into the corresponding WebGLLayer function.
(WebCore::GraphicsContext3D::updateFramebufferTextureBackingStoreFromLayer): Ditto.

  • platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:

(WebCore::wipeAlphaChannelFromPixels): Both readPixels and drawing a WebGL context
into another buffer need to fill out the alpha channel if this context was
created without one, otherwise the IOSurface backing store will happily provide
what might be non-zero values.
(WebCore::GraphicsContext3D::readPixelsAndConvertToBGRAIfNecessary): Call the helper above.
(WebCore::GraphicsContext3D::reshapeFBOs): Add more code to call into the macOS-specific
function to use an IOSurface as the framebuffer texture.
(WebCore::GraphicsContext3D::readPixels): Call the helper above.

  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:

(PlatformCALayerCocoa::copyContentsFromLayer): Replace the use of the
deprecated setContentsChanged with reloadValueForKeyPath.

  • platform/graphics/cocoa/WebGLLayer.h: The macOS implementation now

inherits from CALayer directly rather than CAOpenGLLayer. It also adds
a few member variables to handle the IOSurfaces used for triple buffering.

  • platform/graphics/cocoa/WebGLLayer.mm:

(-[WebGLLayer initWithGraphicsContext3D:]): If we were created without an
alpha channel, tell CA that we're an opaque layer. Also set the layer's transform
to identity, so that it calls into the code below to flip the contents.
(-[WebGLLayer setTransform:]): Because an IOSurface is used for the layer contents,
we don't get a chance to flip the drawing the way we do via the drawInContext delegate.
Instead we have to apply a scale(1, -1) transform on top of the layer transform to
make sure the layer is rendered right-way up.
(-[WebGLLayer setAnchorPoint:]): Ditto, except we have to assume the anchor point is
at the bottom of the layer, so flip the Y value.
(-[WebGLLayer display]): Swap between the drawing buffer and the contents buffer, and
then get a new buffer ready for display.
(createAppropriateIOSurface): Helper.
(-[WebGLLayer allocateIOSurfaceBackingStoreWithSize:usingAlpha:]): Initializes the
IOSurfaces used for drawing buffers.
(-[WebGLLayer bindFramebufferToNextAvailableSurface]): Take the next available IOSurface and
make it the drawing buffer (binding in to WebGL at the same time).
(-[WebGLLayer copyCGLPixelFormatForDisplayMask:]): Deleted.
(-[WebGLLayer copyCGLContextForPixelFormat:]): Deleted.
(-[WebGLLayer drawInCGLContext:pixelFormat:forLayerTime:displayTime:]): Deleted.

  • platform/graphics/mac/WebLayer.mm: Remove the definition of reloadValueForKeyPath.
6:30 PM Changeset in webkit [222950] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

REGRESSION(r222868): Web Inspector: Timeline ScopeBar Navigation Bar items too large
https://bugs.webkit.org/show_bug.cgi?id=177979

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-10-05
Reviewed by Matt Baker.

  • UserInterface/Views/ButtonNavigationItem.css:

(.navigation-bar .item.button.text-only):
Make the height of text-only items the size of the text, not 100%.

6:25 PM Changeset in webkit [222949] by mmaxfield@apple.com
  • 7 edits
    2 adds in trunk

Add "display" to FontFace Javascript object
https://bugs.webkit.org/show_bug.cgi?id=175383
<rdar://problem/33813239>

Reviewed by Simon Fraser.

Source/WebCore:

We already have all the necessary infrastructure. Just hook it up to the .idl file!

Test: fast/text/font-loading-font-display.html

  • css/CSSFontFace.h:
  • css/CSSPrimitiveValueMappings.h:
  • css/FontFace.cpp:

(WebCore::FontFace::create):
(WebCore::FontFace::setDisplay):
(WebCore::FontFace::display const):

  • css/FontFace.h:
  • css/FontFace.idl:

LayoutTests:

  • fast/text/font-loading-font-display-expected.txt: Added.
  • fast/text/font-loading-font-display.html: Added.
6:15 PM Changeset in webkit [222948] by Yusuke Suzuki
  • 2 edits in trunk/PerformanceTests

Unreviewed, use std::vector instead of variable length array
https://bugs.webkit.org/show_bug.cgi?id=177856

This is OK because originally this code uses dispatch queue, which
should have allocation inside it too.

  • MallocBench/MallocBench/message.cpp:

(benchmark_message_many):

5:36 PM Changeset in webkit [222947] by keith_miller@apple.com
  • 4 edits in trunk/Source

Unreviewed, tapi builds without optimization so we should have TAPI passes -DRELEASE_WITHOUT_OPTIMIZATIONS.

Source/WebKit:

  • Configurations/Base.xcconfig:

Source/WebKitLegacy/mac:

  • Configurations/WebKitLegacy.xcconfig:
5:13 PM Changeset in webkit [222946] by jer.noble@apple.com
  • 55 edits in trunk

[Cocoa] Enable ENABLE_ENCRYPTED_MEDIA build-time setting
https://bugs.webkit.org/show_bug.cgi?id=177261

Reviewed by Eric Carlson.

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Enable ENCRYPTED_MEDIA, and make the changes required for ENABLED_MEDIA and LEGACY_ENABLED_MEDIA
to co-exist while both enabled simultaneously.

  • Configurations/FeatureDefines.xcconfig:
  • Modules/encryptedmedia/legacy/LegacyCDM.cpp:

(WebCore::LegacyCDM::registerCDMFactory):
(WebCore::LegacyCDM::supportsKeySystem):
(WebCore::LegacyCDM::keySystemSupportsMimeType):
(WebCore::LegacyCDM::create):
(WebCore::LegacyCDM::LegacyCDM):
(WebCore::LegacyCDM::~LegacyCDM):
(WebCore::LegacyCDM::supportsMIMEType const):
(WebCore::LegacyCDM::createSession):
(WebCore::LegacyCDM::mediaPlayer const):
(WebCore::CDM::registerCDMFactory): Deleted.
(WebCore::CDM::supportsKeySystem): Deleted.
(WebCore::CDM::keySystemSupportsMimeType): Deleted.
(WebCore::CDM::create): Deleted.
(WebCore::CDM::CDM): Deleted.
(WebCore::CDM::~CDM): Deleted.
(WebCore::CDM::supportsMIMEType const): Deleted.
(WebCore::CDM::createSession): Deleted.
(WebCore::CDM::mediaPlayer const): Deleted.

  • Modules/encryptedmedia/legacy/LegacyCDM.h:

(WebCore::LegacyCDMClient::~LegacyCDMClient):
(WebCore::LegacyCDM::client const):
(WebCore::LegacyCDM::setClient):
(WebCore::CDMClient::~CDMClient): Deleted.
(WebCore::CDM::keySystem const): Deleted.
(WebCore::CDM::client const): Deleted.
(WebCore::CDM::setClient): Deleted.

  • Modules/encryptedmedia/legacy/LegacyCDMPrivate.h:
  • Modules/encryptedmedia/legacy/LegacyCDMPrivateClearKey.cpp:

(WebCore::LegacyCDMPrivateClearKey::supportsKeySystem):
(WebCore::LegacyCDMPrivateClearKey::supportsKeySystemAndMimeType):
(WebCore::LegacyCDMPrivateClearKey::supportsMIMEType):
(WebCore::LegacyCDMPrivateClearKey::createSession):
(WebCore::CDMPrivateClearKey::supportsKeySystem): Deleted.
(WebCore::CDMPrivateClearKey::supportsKeySystemAndMimeType): Deleted.
(WebCore::CDMPrivateClearKey::supportsMIMEType): Deleted.
(WebCore::CDMPrivateClearKey::createSession): Deleted.

  • Modules/encryptedmedia/legacy/LegacyCDMPrivateClearKey.h:

(WebCore::LegacyCDMPrivateClearKey::LegacyCDMPrivateClearKey):
(WebCore::LegacyCDMPrivateClearKey::~LegacyCDMPrivateClearKey):
(WebCore::CDMPrivateClearKey::CDMPrivateClearKey): Deleted.
(WebCore::CDMPrivateClearKey::~CDMPrivateClearKey): Deleted.

  • Modules/encryptedmedia/legacy/LegacyCDMPrivateMediaPlayer.cpp:

(WebCore::CDMPrivateMediaPlayer::createSession):

  • Modules/encryptedmedia/legacy/LegacyCDMPrivateMediaPlayer.h:

(WebCore::CDMPrivateMediaPlayer::CDMPrivateMediaPlayer):
(WebCore::CDMPrivateMediaPlayer::cdm const):

  • Modules/encryptedmedia/legacy/LegacyCDMSessionClearKey.cpp:

(WebCore::CDMSessionClearKey::CDMSessionClearKey):

  • Modules/encryptedmedia/legacy/LegacyCDMSessionClearKey.h:
  • Modules/encryptedmedia/legacy/WebKitMediaKeySession.h:
  • Modules/encryptedmedia/legacy/WebKitMediaKeys.cpp:

(WebCore::WebKitMediaKeys::create):
(WebCore::WebKitMediaKeys::WebKitMediaKeys):
(WebCore::WebKitMediaKeys::isTypeSupported):
(WebCore::WebKitMediaKeys::cdmMediaPlayer const):

  • Modules/encryptedmedia/legacy/WebKitMediaKeys.h:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/encryptedmedia/CDMFactory.cpp:

(WebCore::CDMFactory::platformRegisterFactories):

  • platform/encryptedmedia/clearkey/CDMClearKey.cpp:

(WebCore::ClearKeyState::singleton):
(WebCore::parseJSONObject):
(WebCore::parseLicenseFormat):
(WebCore::parseLicenseReleaseAcknowledgementFormat):
(WebCore::CDMFactoryClearKey::singleton):
(WebCore::containsPersistentLicenseType):
(WebCore::CDMInstanceClearKey::keySystem const):

  • platform/encryptedmedia/clearkey/CDMClearKey.h:
  • platform/graphics/LegacyCDMSession.h:

(WebCore::LegacyCDMSessionClient::~LegacyCDMSessionClient):
(WebCore::CDMSession::type):
(WebCore::CDMSessionClient::~CDMSessionClient): Deleted.

  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::createSession):

  • platform/graphics/MediaPlayer.h:
  • platform/graphics/MediaPlayerPrivate.h:

(WebCore::MediaPlayerPrivateInterface::createSession):

  • platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.h:

(WebCore::CDMPrivateMediaSourceAVFObjC::CDMPrivateMediaSourceAVFObjC):
(WebCore::CDMPrivateMediaSourceAVFObjC::cdm const):

  • platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.mm:

(WebCore::CDMPrivateMediaSourceAVFObjC::createSession):

  • platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:

(WebCore::MediaPlayerPrivateAVFoundationCF::createSession):

  • platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.h:
  • platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.h:
  • platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm:

(WebCore::CDMSessionAVContentKeySession::CDMSessionAVContentKeySession):
(WebCore::CDMSessionAVContentKeySession::update):

  • platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.h:
  • platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm:

(WebCore::CDMSessionAVFoundationObjC::CDMSessionAVFoundationObjC):
(WebCore::CDMSessionAVFoundationObjC::generateKeyRequest):
(WebCore::CDMSessionAVFoundationObjC::playerDidReceiveError):

  • platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.h:
  • platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm:

(WebCore::CDMSessionAVStreamSession::CDMSessionAVStreamSession):

  • platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.h:
  • platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.mm:

(WebCore::CDMSessionMediaSourceAVFObjC::CDMSessionMediaSourceAVFObjC):
(WebCore::CDMSessionMediaSourceAVFObjC::layerDidReceiveError):
(WebCore::CDMSessionMediaSourceAVFObjC::rendererDidReceiveError):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::nativeImageForCurrentTime):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createSession):

  • testing/Internals.cpp:

(WebCore::Internals::initializeMockCDM):

  • testing/LegacyMockCDM.cpp:

(WebCore::LegacyMockCDM::supportsKeySystem):
(WebCore::LegacyMockCDM::supportsKeySystemAndMimeType):
(WebCore::LegacyMockCDM::supportsMIMEType):
(WebCore::LegacyMockCDM::createSession):
(WebCore::MockCDMSession::MockCDMSession):
(WebCore::MockCDM::supportsKeySystem): Deleted.
(WebCore::MockCDM::supportsKeySystemAndMimeType): Deleted.
(WebCore::MockCDM::supportsMIMEType): Deleted.
(WebCore::MockCDM::createSession): Deleted.

  • testing/LegacyMockCDM.h:

(WebCore::LegacyMockCDM::LegacyMockCDM):
(WebCore::LegacyMockCDM::~LegacyMockCDM):
(WebCore::MockCDM::MockCDM): Deleted.
(WebCore::MockCDM::~MockCDM): Deleted.

  • testing/MockCDMFactory.cpp:

(WebCore::MockCDMInstance::keySystem const):

Source/WebCore/PAL:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKitLegacy/mac:

  • Configurations/FeatureDefines.xcconfig:

Tools:

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
4:48 PM Changeset in webkit [222945] by fpizlo@apple.com
  • 8 edits in trunk/Source

bmalloc mutex should be adaptive
https://bugs.webkit.org/show_bug.cgi?id=177839

Reviewed by Michael Saboff.

Source/bmalloc:

This pulls the WordLock algorithm into bmalloc, mostly by copy-pasting the code. We need to
copy paste because sometimes we build WTF without bmalloc, so WTF cannot rely on bmalloc for
anything other than malloc.

Reland after fixing ancient WordLock bug: the notify_one has to happen with the lock held
to ensure it doesn't run after that thread has died.

  • bmalloc/Algorithm.h:

(bmalloc::compareExchangeWeak):
(bmalloc::compareExchangeStrong):

  • bmalloc/PerThread.h:
  • bmalloc/StaticMutex.cpp:

(bmalloc::StaticMutex::lockSlow):
(bmalloc::StaticMutex::unlockSlow):
(bmalloc::StaticMutex::lockSlowCase): Deleted.

  • bmalloc/StaticMutex.h:

(bmalloc::StaticMutex::try_lock):
(bmalloc::StaticMutex::isLocked const):
(bmalloc::StaticMutex::init):
(bmalloc::StaticMutex::tryLock):
(bmalloc::StaticMutex::lock):
(bmalloc::StaticMutex::unlock):
(bmalloc::sleep): Deleted.
(bmalloc::waitUntilFalse): Deleted.

Source/WTF:

Add some comments that I thought of while copy-pasting this code.

Reland after fixing ancient WordLock bug: the notify_one has to happen with the lock held
to ensure it doesn't run after that thread has died.

  • wtf/LockAlgorithmInlines.h:
  • wtf/WordLock.cpp:
4:18 PM Changeset in webkit [222944] by achristensen@apple.com
  • 8 edits in trunk

Add ObjC equivalent of WKPageNavigationClient.didChangeBackForwardList
https://bugs.webkit.org/show_bug.cgi?id=177966
<rdar://problem/22387135>

Reviewed by Tim Horton.

Source/WebKit:

  • UIProcess/API/APINavigationClient.h:

(API::NavigationClient::didChangeBackForwardList):

  • UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
  • UIProcess/Cocoa/NavigationState.h:
  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::setNavigationDelegate):
(WebKit::NavigationState::NavigationClient::didFailToInitializePlugIn):
(WebKit::NavigationState::NavigationClient::didChangeBackForwardList):
(WebKit::NavigationState::NavigationClient::willPerformClientRedirect):
(WebKit::NavigationState::NavigationClient::didCancelClientRedirect):
(WebKit::NavigationState::NavigationClient::renderingProgressDidChange):
(WebKit::NavigationState::NavigationClient::canAuthenticateAgainstProtectionSpace):
(WebKit::NavigationState::NavigationClient::processDidTerminate):
(WebKit::NavigationState::NavigationClient::processDidBecomeResponsive):
(WebKit::NavigationState::NavigationClient::processDidBecomeUnresponsive):
(WebKit::NavigationState::NavigationClient::webCryptoMasterKey):
(WebKit::NavigationState::NavigationClient::didFinishLoadForQuickLookDocumentInMainFrame):
(WebKit::NavigationState::HistoryClient::didNavigateWithNavigationData):
(WebKit::NavigationState::HistoryClient::didPerformClientRedirect):
(WebKit::NavigationState::HistoryClient::didPerformServerRedirect):
(WebKit::NavigationState::HistoryClient::didUpdateHistoryTitle):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didChangeBackForwardList):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/Navigation.mm:

(-[ListItemDelegate _webView:backForwardListItemAdded:removed:]):
(-[ListItemDelegate webView:didFinishNavigation:]):
(TEST):

4:14 PM Changeset in webkit [222943] by bshafiei@apple.com
  • 1 copy in tags/Safari-604.3.5

Tag Safari-604.3.5.

4:14 PM Changeset in webkit [222942] by achristensen@apple.com
  • 5 edits in trunk/Source/WebKit

Add ObjC SPI with userInfo corresponding to WKPageNavigationClient's decidePolicyForNavigationAction, didStartProvisionalNavigation, and didFailNavigation
https://bugs.webkit.org/show_bug.cgi?id=177974
<rdar://problem/22888802>

Reviewed by Tim Horton.

  • UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
  • UIProcess/Cocoa/NavigationState.h:
  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::setNavigationDelegate):
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
(WebKit::NavigationState::NavigationClient::didStartProvisionalNavigation):
(WebKit::NavigationState::NavigationClient::didFailNavigationWithError):

  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::ContextMenuClient::menuFromProposedMenu):

4:05 PM Changeset in webkit [222941] by wilander@apple.com
  • 42 edits
    1 copy
    2 moves
    3 adds in trunk

Storage Access API: Web process should ask UI process for grant/deny
https://bugs.webkit.org/show_bug.cgi?id=176941
<rdar://problem/34440036>

Reviewed by Chris Dumez and Sam Weinig.

Source/WebCore:

Tests: http/tests/storageAccess/request-and-grant-storage-access-cross-origin-non-sandboxed-iframe.html

http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-user-interaction.html
http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-without-user-interaction.html

This patch changes Document::requestStorageAccess() so that it
calls the ChromeClient instead of the ResourceLoadObserver to
request storage access on behalf of the iframe.
The patch also changes how the promise is used, from returning
a boolean to either resolving or rejecting to signal grant/deny
access respectively.

  • dom/Document.cpp:

(WebCore::Document::requestStorageAccess):

  • dom/Document.idl:
  • loader/ResourceLoadObserver.cpp:

(WebCore::ResourceLoadObserver::registerStorageAccess): Deleted.

  • loader/ResourceLoadObserver.h:
  • page/ChromeClient.h:

Source/WebKit:

This patch adds infrastructure to let WebCore::Document call
WebKit::WebResourceLoadStatisticsStore and ask for storage
access on behalf of an iframe. The communication goes through
the ChromeClient since we might want to add a native prompt.
From the ChromeClient it continues to the WebPage which
messages the WebPageProxy. The WebPageProxy calls the
WebsiteDataStore which owns the WebResourceLoadStatisticsStore.
A uint64_t is used to match the right callback with the boolean
result.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestStorageAccess):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):

  • UIProcess/WebResourceLoadStatisticsStore.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::requestStorageAccess):

  • UIProcess/WebsiteData/WebsiteDataStore.h:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::requestStorageAccess):

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::nextRequestStorageAccessContextId):
(WebKit::WebPage::requestStorageAccess):
(WebKit::WebPage::storageAccessResponse):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

LayoutTests:

The iframes now communicate the results back to the top frame through postMessage.
Also, denied access results in a rejected promise which is handled in these
changed test cases.

  • http/tests/storageAccess/request-and-deny-storage-access-cross-origin-iframe-expected.txt:
  • http/tests/storageAccess/request-and-deny-storage-access-cross-origin-iframe.html:
  • http/tests/storageAccess/request-and-deny-storage-access-cross-origin-sandboxed-iframe-expected.txt:
  • http/tests/storageAccess/request-and-deny-storage-access-cross-origin-sandboxed-iframe.html:
  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-iframe-expected.txt: Removed.
  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-iframe.html: Removed.

Renamed to request-and-grant-storage-access-cross-origin-non-sandboxed-iframe.html.

  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-non-sandboxed-iframe-expected.txt: Added.
  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-non-sandboxed-iframe.html: Added.

See comment above on renaming.

  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-expected.txt:
  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-user-interaction-expected.txt: Added.
  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-user-interaction.html: Added.
  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-without-user-interaction-expected.txt: Added.
  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-without-user-interaction.html: Added.

Two new test cases added for the new logic in WebKit::WebResourceLoadStatisticsStore.

  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe.html:
  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-nested-iframe-expected.txt:
  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-nested-iframe.html:
  • http/tests/storageAccess/request-storage-access-cross-origin-sandboxed-iframe-with-unique-origin-expected.txt:
  • http/tests/storageAccess/request-storage-access-cross-origin-sandboxed-iframe-with-unique-origin.html:
  • http/tests/storageAccess/request-storage-access-cross-origin-sandboxed-iframe-without-allow-token-expected.txt:
  • http/tests/storageAccess/request-storage-access-cross-origin-sandboxed-iframe-without-allow-token.html:
  • http/tests/storageAccess/request-storage-access-same-origin-iframe-expected.txt:
  • http/tests/storageAccess/request-storage-access-same-origin-iframe.html:
  • http/tests/storageAccess/request-storage-access-same-origin-sandboxed-iframe-expected.txt:
  • http/tests/storageAccess/request-storage-access-same-origin-sandboxed-iframe-without-allow-token-expected.txt:
  • http/tests/storageAccess/request-storage-access-same-origin-sandboxed-iframe-without-allow-token.html:
  • http/tests/storageAccess/request-storage-access-same-origin-sandboxed-iframe.html:
  • http/tests/storageAccess/request-storage-access-top-frame-expected.txt:
  • http/tests/storageAccess/request-storage-access-top-frame.html:
  • http/tests/storageAccess/resources/request-storage-access-iframe.html:
  • platform/mac-wk2/TestExpectations:

Added the new tests as [ Pass ].

4:02 PM Changeset in webkit [222940] by BJ Burg
  • 2 edits in trunk/Source/WebCore

Web Inspector: EventLoop::cycle() should not send nil NSEvents
https://bugs.webkit.org/show_bug.cgi?id=177971
<rdar://problem/20387399>

Reviewed by Joseph Pecoraro.

It is possible for the next matching event to be nil.
WebKit clients don't expect to be sent a nil NSEvent, so add a null check here.

  • platform/mac/EventLoopMac.mm:

(WebCore::EventLoop::cycle):

3:52 PM Changeset in webkit [222939] by Ryan Haddad
  • 3 edits in trunk/Source/JavaScriptCore

Unreviewed, rolling out r222929.

Caused assertion failures during LayoutTests.

Reverted changeset:

"Only add prototypes to the PrototypeMap if they're not
already present"
https://bugs.webkit.org/show_bug.cgi?id=177952
http://trac.webkit.org/changeset/222929

3:43 PM Changeset in webkit [222938] by Chris Dumez
  • 21 edits in trunk/Source

Drop unused parameters for CookiesStrategy::cookiesEnabled()
https://bugs.webkit.org/show_bug.cgi?id=177957

Reviewed by Alex Christensen.

Source/WebCore:

  • loader/CookieJar.cpp:

(WebCore::cookiesEnabled):

  • platform/CookiesStrategy.h:
  • platform/network/PlatformCookieJar.h:
  • platform/network/cf/CookieJarCFNet.cpp:

(WebCore::cookiesEnabled):

  • platform/network/curl/CookieJarCurl.cpp:

(WebCore::CookieJarCurlFileSystem::cookiesEnabled):
(WebCore::cookiesEnabled):

  • platform/network/curl/CookieJarCurl.h:
  • platform/network/mac/CookieJarMac.mm:

(WebCore::cookiesEnabled):

  • platform/network/soup/CookieJarSoup.cpp:

(WebCore::cookiesEnabled):

Source/WebKit:

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::cookiesEnabled):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:

(WebKit::WebPlatformStrategies::cookiesEnabled):

  • WebProcess/WebCoreSupport/WebPlatformStrategies.h:

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebPlatformStrategies.h:
  • WebCoreSupport/WebPlatformStrategies.mm:

(WebPlatformStrategies::cookiesEnabled):

Source/WebKitLegacy/win:

  • WebCoreSupport/WebPlatformStrategies.cpp:

(WebPlatformStrategies::cookiesEnabled):

  • WebCoreSupport/WebPlatformStrategies.h:
3:41 PM Changeset in webkit [222937] by Megan Gardner
  • 3 edits in trunk/Tools

check-webkit-style erroneously requires a space between the carrot and brace in obj-c blocks.
https://bugs.webkit.org/show_bug.cgi?id=177897

Reviewed by Dan Bernstein and Jonathan Bedard.

Remove the check for a space between and {,
as this is valid and expected Obj-C. Now check to make sure there is
no space at all between
and {, and also that there is a space between
the end of an argument list and the {.

  • Scripts/webkitpy/style/checkers/cpp.py:

(regex_for_lambdas_and_blocks):

3:40 PM Changeset in webkit [222936] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

RenderListItem should not hold raw pointers to RenderListMarker.
https://bugs.webkit.org/show_bug.cgi?id=177968
<rdar://problem/34842943>

Reviewed by Antti Koivisto.

Now we don't need to unregister the marker from the list item explicitly.

Covered by existing tests.

  • rendering/RenderListItem.cpp:

(WebCore::RenderListItem::RenderListItem):
(WebCore::RenderListItem::willBeDestroyed):
(WebCore::RenderListItem::positionListMarker):

  • rendering/RenderListItem.h:
  • rendering/RenderListMarker.cpp:

(WebCore::RenderListMarker::willBeDestroyed):

  • style/RenderTreeUpdaterListItem.cpp:

(WebCore::RenderTreeUpdater::ListItem::updateMarker):

3:32 PM Changeset in webkit [222935] by Megan Gardner
  • 2 edits in trunk/Websites/webkit.org

Update Webkit Style webpage to include Obj-C blocks
https://bugs.webkit.org/show_bug.cgi?id=177906

Reviewed by Tim Horton.

  • code-style.md:
2:54 PM Changeset in webkit [222934] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

RenderSVGRoot should check the renderers inside its visualOverflowRect for hit testing if the overflow is visible
https://bugs.webkit.org/show_bug.cgi?id=177953
<rdar://problem/34788389>

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-10-05
Reviewed by Simon Fraser.

Source/WebCore:

Test: svg/hittest/svg-visual-overflow-rect.html

If an SVGElement is positioned outside the rectangle of the root element,
it can still be drawn if the root element has "overflow: visible" applied.
But since SVGElement can be drawn in this case, it should be accessible
through nodeAtPoint() which is used for hit testing.

  • rendering/svg/RenderSVGRoot.cpp:

(WebCore::RenderSVGRoot::nodeAtPoint):

LayoutTests:

  • svg/hittest/svg-visual-overflow-rect-expected.html: Added.
  • svg/hittest/svg-visual-overflow-rect.html: Added.
2:31 PM Changeset in webkit [222933] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark 4 fast/text layout tests as flaky on Windows.
https://bugs.webkit.org/show_bug.cgi?id=177964

Unreviewed test gardening.

  • platform/win/TestExpectations:
2:14 PM Changeset in webkit [222932] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

RenderButton should not hold raw pointers to its direct children.
https://bugs.webkit.org/show_bug.cgi?id=177960
<rdar://problem/34840807>

Reviewed by Antti Koivisto.

The correct way of destroying a renderer is to call ::removeFromParentAndDestroy().

Covered by existing tests.

  • rendering/RenderButton.cpp:

(WebCore::RenderButton::RenderButton):
(WebCore::RenderButton::addChild):
(WebCore::RenderButton::takeChild):
(WebCore::RenderButton::updateAnonymousChildStyle const):
(WebCore::RenderButton::setText):
(WebCore::RenderButton::text const):

  • rendering/RenderButton.h:
2:07 PM Changeset in webkit [222931] by n_wang@apple.com
  • 3 edits in trunk/LayoutTests

AX: [iOS] Layout Test accessibility/ios-simulator/video-elements-ios.html is failing
https://bugs.webkit.org/show_bug.cgi?id=177954
<rdar://problem/34838094>

We should do the isIgnored check instead of the null check.

Reviewed by Chris Fleizach.

  • accessibility/ios-simulator/video-elements-ios-expected.txt:
  • accessibility/ios-simulator/video-elements-ios.html:
1:39 PM Changeset in webkit [222930] by clopez@igalia.com
  • 6 edits in trunk

Generate a compile error if release is built without compiler optimizations
https://bugs.webkit.org/show_bug.cgi?id=177665

Reviewed by Brian Burg.

.:

Default to RelWithDebInfo if CMAKE_BUILD_TYPE is unset.

  • CMakeLists.txt:

Source/JavaScriptCore:

Pass -DRELEASE_WITHOUT_OPTIMIZATIONS to testair.cpp and testb3.cpp because
this files are compiled with -O0 for build speed reasons after r195639.

Source/WTF:

For GCC and Clang, generate an error at build time that will alert
the developer that she is trying to build Release without any compiler
optimization. A build time error is much better than an unexpected
"oh, WebKit is really slow ..." situation later.

If this was intended, then we tell the developer that she can continue
by just setting -DRELEASE_WITHOUT_OPTIMIZATIONS in the list of build
flags.

The intention of this patch is to ensure that nobody builds Release
without enabling compiler optimization by mistake.

  • wtf/Compiler.h:
12:58 PM Changeset in webkit [222929] by sbarati@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Only add prototypes to the PrototypeMap if they're not already present
https://bugs.webkit.org/show_bug.cgi?id=177952

Reviewed by Michael Saboff and JF Bastien.

With poly proto, we need to call PrototypeMap::add more frequently since we don't
know if the prototype is already in the map or not based solely on Structure.
PrototypeMap::add was calling WeakMap::set unconditionally, which would unconditionally
allocate a Weak handle. Allocating a Weak handle is expensive. It's at least 8x more
expensive than just checking if the prototype is in the map prior to adding it. This
patch makes the change to only add the prototype if it's not already in the map. To
do this, I've added a WeakMap::add API that just forwards into HashMap's add API.
This allows us to both only do a single hash table lookup and also to allocate only
a single Weak handle when necessary.

  • runtime/PrototypeMapInlines.h:

(JSC::PrototypeMap::addPrototype):

  • runtime/WeakGCMap.h:

(JSC::WeakGCMap::add):

12:12 PM Changeset in webkit [222928] by ddkilzer@apple.com
  • 4 edits in trunk/Source

Bug 177893: Disable -Wcast-qual for new clang compiler in Apple ports
<https://webkit.org/b/177893>
<rdar://problem/33667497>

Reviewed by Tim Horton.

Source/WebCore:

  • Configurations/Base.xcconfig:

(WARNING_CFLAGS): Remvoe -Wcast-qual until we can provide a safe
cast function that lets us re-enable the warning.

Source/WTF:

  • wtf/RetainPtr.h:

(WTF::RetainPtr::fromStorageType const): Disable warnings for
-Wcast-qual until we can provide a safe cast function that lets
us re-enable the warning.

12:09 PM Changeset in webkit [222927] by timothy_horton@apple.com
  • 5 edits in trunk

Make progress toward properly-formed XPC services in the Mac CMake build
https://bugs.webkit.org/show_bug.cgi?id=177918

Reviewed by Alex Christensen.

.:

  • Source/cmake/WebKitMacros.cmake:

Add a macro wrapper around 'ln'.

Source/WebKit:

  • CMakeLists.txt:
  • PlatformMac.cmake:

Turn on the storage process on Mac, and fix its build.
Move XPC services to Versions/A/XPCServices and add the toplevel
XPCServices as a symlink of that.
Run the XPC services' Info.plists through configure_file, and substitute
the important variables (most critically the bundle identifier).
Factor out the service setup so we don't keep duplicating it as it
gets more complicated.

12:02 PM Changeset in webkit [222926] by mmaxfield@apple.com
  • 18 edits
    12 adds
    6 deletes in trunk

Implement font-display loading behaviors
https://bugs.webkit.org/show_bug.cgi?id=175384
<rdar://problem/33813243>

Reviewed by Darin Adler.

Source/WebCore:

The font-display descriptors works off of the following model of font loading:

  1. When a font loads, the @font-face enters the first phase, called the "block period." Here,

text using this @font-face is rendered as invisible using a fallback font for metrics. If the
file finishes loading during this period, it is swapped in (visibly).

  1. When the first phase is over, the @font-face enters the second phase, called the "swap

period." Here, text using this @font-face is rendered visibly using a fallback font. If the
file finishes loading during this period, it is swapped in.

  1. When the second phase is over, the @font-face enters the third phase, called the "failure

period." Here, text using this @font-face is rendered visibly using a fallback font. If the
file finishes loading during this period, it is not swapped in (but it does live in the
network cache for subsequent page loads). This phase lasts forever.

The font-display descriptor changes the duration of these phases. For example, our default
font loading behavior can be achieved by making the first phase 3 seconds long and making the
second phase infinitely long (so the third phase is never reached).

Luckily, our CSSFontFace class already has states which correspond to each phase listed above:
Loading, TimedOut, and Failure. This patch migrates our existing 3-second timer to have logic
to correctly set the timeout duration based on the value of the font-display descriptor and
the current status(). This occurs inside CSSFontFace::setStatus().

This has implications for testing. Previously, our tests for the font loading behavior had a
single boolean that describes whether or not font loads should immediately jump to the "swap
period". Clearly, this is insufficient for testing all aspects of the font-display descriptor.
Instead, this patch deletes this existing infrastructure and instead creates three more fake
values of font-display (achieved in tests by using window.internals). These fake values make
fonts immediately jump into a particular state and stay there forever (so the timeout values
are, for example, [0, infinity, infinity] to test the swap period). This works because
CSSFontFace is smart enough to synchronously move between states that have a 0 timeout, so
there is no race between these timers and font loads.

We also need to test the behavior when a file downloads and when a file hasn't been loaded
yet (and the @font-face is in a particular state). Therefore, this patch adds another bool
which indicates whether the font subsystem should totally ignore font load events. This means
that a font will successfully download (and DOMContentLoaded will be fired, because that
uses the loading subsystem), but the font subsystem will plug its ears and ignore the load.
This means we can test the invisibility of text during the "block period" because DRT will
see that the page load has completed, but the font subsystem will pretend like the font is
still loading and draw invisibly.

Therefore, there are 6 tests: a test to test each of the 3 states an @font-face block may be
in, times 2 for whether or not we are ignoring font loads. These are more comprehensive than
the existing font loading tests which used internals.settings.setWebFontsAlwaysFallBack(),
so I deleted those tests in favor of these new ones.

Tests: fast/text/loading-block-finish.html

fast/text/loading-block-nofinish.html
fast/text/loading-failure-finish.html
fast/text/loading-failure-nofinish.html
fast/text/loading-swap-finish.html
fast/text/loading-swap-nofinish.html

  • css/CSSFontFace.cpp:

(WebCore::CSSFontFace::setLoadingBehavior):
(WebCore::CSSFontFace::fontLoadEventOccurred): Remove old testing infrastructure.
(WebCore::CSSFontFace::timeoutFired): Previously, the timer was only used for going
from Loading -> TimedOut. Now, we have to ask the status() to figure out which
state transition we should be performing.
(WebCore::CSSFontFace::allSourcesFailed const): A Failed state needs to return true
here, even if some of the sources successfully downloaded.
(WebCore::CSSFontFace::setStatus): The logic to figure out how long to set the timer
for. Also, if the timer value is 0, synchronously recurse to change the status instead
of setting a 0-delay timer.
(WebCore::CSSFontFace::fontLoaded): Remove old testing infrastructure.
(WebCore::CSSFontFace::fontTimeoutIndex const): Implement new testing infrastructure.
(WebCore::CSSFontFace::shouldIgnoreFontLoadCompletions const): Ditto.
(WebCore::CSSFontFace::pump): See comment. Also, we're allowed to be in the Failure
state in more scenarios now, so relax some of our ASSERT()s.
(WebCore::CSSFontFace::font): Ditto.
(WebCore::CSSFontFace::webFontsShouldAlwaysFallBack const): Deleted.

  • css/CSSFontFace.h: Migrate to new testing infrastructure.
  • css/CSSFontFaceSource.cpp:

(WebCore::CSSFontFaceSource::CSSFontFaceSource): Implement new testing infrastructure.
(WebCore::CSSFontFaceSource::shouldIgnoreFontLoadCompletions const): Ditto.
(WebCore::CSSFontFaceSource::fontLoaded): Ditto.

  • css/CSSFontFaceSource.h:
  • css/CSSFontSelector.cpp:

(WebCore::CSSFontSelector::beginLoadingFontSoon): Remove old testing infrastructure.

  • css/CSSSegmentedFontFace.cpp: It's possible to get different values out of

CSSFontFace::font() in successive calls during the same runloop. FontRanges will
include a raw pointer to one of the values, so all the values need to be kept alive.

  • page/Settings.cpp: Migrate to new testing infrastructure.

(WebCore::Settings::Settings):
(WebCore::Settings::setFontTimeoutIndex):
(WebCore::Settings::setShouldIgnoreFontLoadCompletions):
(WebCore::Settings::setWebFontsAlwaysFallBack): Deleted.

  • page/Settings.h: Ditto.

(WebCore::Settings::fontTimeoutIndex const):
(WebCore::Settings::shouldIgnoreFontLoadCompletions const):
(WebCore::Settings::webFontsAlwaysFallBack const): Deleted.

  • testing/InternalSettings.cpp: Ditto.

(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setFontTimeoutIndex):
(WebCore::InternalSettings::setShouldIgnoreFontLoadCompletions):
(WebCore::InternalSettings::setWebFontsAlwaysFallBack): Deleted.

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

LayoutTests:

Delete the tests using the old testing infrastructure and replace them
with tests that use the new testing infrastructure.

  • fast/text/font-loading-system-fallback-expected.html: Removed.
  • fast/text/font-loading-system-fallback.html: Removed.
  • fast/text/loading-block-finish-expected.html: Added.
  • fast/text/loading-block-finish.html: Added.
  • fast/text/loading-block-nofinish-expected.html: Added.
  • fast/text/loading-block-nofinish.html: Added.
  • fast/text/loading-failure-finish-expected.html: Added.
  • fast/text/loading-failure-finish.html: Added.
  • fast/text/loading-failure-nofinish-expected.html: Added.
  • fast/text/loading-failure-nofinish.html: Added.
  • fast/text/loading-swap-finish-expected.html: Added.
  • fast/text/loading-swap-finish.html: Added.
  • fast/text/loading-swap-nofinish-expected.html: Added.
  • fast/text/loading-swap-nofinish.html: Added.
  • fast/text/web-font-load-fallback-during-loading-2-expected.html: Removed.
  • fast/text/web-font-load-fallback-during-loading-2.html: Removed.
  • fast/text/web-font-load-fallback-during-loading-expected.html: Removed.
  • fast/text/web-font-load-fallback-during-loading.html: Removed.
  • platform/gtk/TestExpectations:
  • platform/ios-wk1/TestExpectations:
  • platform/win/TestExpectations:
11:59 AM Changeset in webkit [222925] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed. Disable probe OSR exit on 32-bit until it's fixed.

  • runtime/Options.cpp:

(JSC::recomputeDependentOptions):

11:57 AM Changeset in webkit [222924] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

Layout Test media/modern-media-controls/scrubber-support/scrubber-support-drag.html is flaky.
https://bugs.webkit.org/show_bug.cgi?id=174682

Patch by Antoine Quint <Antoine Quint> on 2017-10-05
Reviewed by Dean Jackson.

This test could fail since we would start it before the time control was fully sized and only
the scrubber had bounds, but not the elapsed time label. We have to wait on both being fully
sized before starting the test and only then it is reliable.

  • media/modern-media-controls/scrubber-support/scrubber-support-drag.html:
  • platform/mac/TestExpectations:
11:51 AM Changeset in webkit [222923] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

Layout Test media/modern-media-controls/scrubber-support/scrubber-support-click.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=177930

Patch by Antoine Quint <Antoine Quint> on 2017-10-05
Reviewed by Dean Jackson.

In cases where this test failed, it actually worked as expected but the "timeupdate" event would be fired
twice, most likely because it was registered twice. We now use an asynchronous expectation to run the test
which should only register the event listener once and make the test more reliable.

  • media/modern-media-controls/scrubber-support/scrubber-support-click-expected.txt:
  • media/modern-media-controls/scrubber-support/scrubber-support-click.html:
11:48 AM Changeset in webkit [222922] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

RenderMathMLFenced should not hold a raw pointer to RenderMathMLFencedOperator
https://bugs.webkit.org/show_bug.cgi?id=177950
<rdar://problem/34837002>

Reviewed by Antti Koivisto.

Even though RenderMathMLFencedOperator is a child renderer, it's lifetime is not explicitly managed by
RenderMathMLFenced.

Covered by existing test cases.

  • rendering/mathml/RenderMathMLFenced.cpp:

(WebCore::RenderMathMLFenced::RenderMathMLFenced):
(WebCore::RenderMathMLFenced::makeFences):
(WebCore::RenderMathMLFenced::addChild):

  • rendering/mathml/RenderMathMLFenced.h:
11:47 AM Changeset in webkit [222921] by aestes@apple.com
  • 19 edits
    13 copies
    1 move
    5 adds in trunk

[Payment Request] Add a payment method that supports Apple Pay
https://bugs.webkit.org/show_bug.cgi?id=177850

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • web-platform-tests/payment-request/payment-request-abort-method.https-expected.txt:
  • web-platform-tests/payment-request/payment-request-show-method.https-expected.txt:

Source/WebCore:

This patch implements a payment method dictionary and a payment handler for Apple Pay.

It reuses existing Apple Pay code by:

  1. Moving shared properties from ApplePayPaymentRequest to ApplePayRequestBase and having ApplePayPaymentRequest inherit from ApplePayRequestBase.
  2. Creating an ApplePayRequest dictionary that inherits from ApplePayRequestBase and adds PaymentRequest-specific properties (right now that's just the version property).
  3. Moving validation logic from ApplePaySession into various places that can be reused by PaymentRequest and ApplePayPaymentHandler.
  4. Storing currency values for both ApplePaySession and PaymentRequest in Strings rather than integers representing whole cents, since PaymentRequest supports high-precision currency values.

This patch does not implement any event handling for merchant validation, payment method
changes, or shipping address/option changes. That will be handled in a follow-on.

Test: http/tests/ssl/applepay/PaymentRequest.html

  • DerivedSources.make:
  • Modules/applepay/ApplePayContactField.cpp: Added.

(WebCore::convertAndValidate): Moved from ApplePaySession.cpp.

  • Modules/applepay/ApplePayContactField.h: Added.
  • Modules/applepay/ApplePayContactField.idl: Added.
  • Modules/applepay/ApplePayMerchantCapability.cpp: Added.

(WebCore::convertAndValidate): Moved from ApplePaySession.cpp.

  • Modules/applepay/ApplePayMerchantCapability.h: Added.
  • Modules/applepay/ApplePayMerchantCapability.idl: Added.
  • Modules/applepay/ApplePayPaymentRequest.h: Moved fields shared with ApplePayRequest into ApplePayRequestBase.
  • Modules/applepay/ApplePayPaymentRequest.idl: Ditto.
  • Modules/applepay/ApplePayRequestBase.cpp: Added.

(WebCore::convertAndValidate): Moved from ApplePaySession.cpp.

  • Modules/applepay/ApplePayRequestBase.h: Added.
  • Modules/applepay/ApplePayRequestBase.idl: Added.
  • Modules/applepay/ApplePaySession.cpp:

(WebCore::validateAmount): Renamed from parseAmount.
(WebCore::convertAndValidateTotal):
(WebCore::convertAndValidate):
(WebCore::parseDigit): Deleted.
(WebCore::parseAmount): Renamed to validateAmount.

  • Modules/applepay/ApplePaySessionPaymentRequest.h: Changed amount from an int64_t to a String.
  • Modules/applepay/ApplePayShippingMethodSelectedEvent.cpp:

(WebCore::convert):

  • Modules/applepay/PaymentRequestValidator.mm: Renamed from Source/WebCore/Modules/applepay/PaymentRequestValidator.cpp.

(WebCore::PaymentRequestValidator::validateTotal): Used NSDecimalNumber to validate amounts.
(WebCore::validateShippingMethod): Ditto.

  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp: Added.

(WebCore::ApplePayPaymentHandler::handlesIdentifier): Added. Returns true if identifier is a URL with host "apple.com" and path "/apple-pay".
(WebCore::ApplePayPaymentHandler::ApplePayPaymentHandler):
(WebCore::convert): Added. Converts PaymentRequest types to ApplePaySessionPaymentRequest types.
(WebCore::ApplePayPaymentHandler::convertData): Added. JSON-parses data into an ApplePayRequest,
then uses that along with the PaymentRequest to construct and validate an ApplePaySessionPaymentRequest.
(WebCore::ApplePayPaymentHandler::show): Added a FIXME.

  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.h: Added.
  • Modules/applepay/paymentrequest/ApplePayRequest.h: Added.
  • Modules/applepay/paymentrequest/ApplePayRequest.idl: Added. Inherits from ApplePayRequestBase and adds a required version property.
  • Modules/paymentrequest/PaymentHandler.cpp: Added.

(WebCore::PaymentHandler::create): Returns a PaymentHandler subclass based on the payment method identifier.
(WebCore::PaymentHandler::~PaymentHandler):

  • Modules/paymentrequest/PaymentHandler.h: Added.
  • Modules/paymentrequest/PaymentRequest.cpp:

(WebCore::convertAndValidatePaymentMethodIdentifier): Added.
(WebCore::PaymentRequest::show): Removed an unnecessary call to RunLoop::dispatch().
Created a PaymentHandler for each payment method and called show() on the first available PaymentHandler.
(WebCore::PaymentRequest::abort): Removed an unnecessary call to RunLoop::dispatch().
(WebCore::PaymentRequest::canMakePayment): Ditto.
(WebCore::PaymentRequest::finishShowing): Deleted.

  • Modules/paymentrequest/PaymentRequest.h:
  • WebCore.xcodeproj/project.pbxproj:

Source/WebKit:

  • UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:

(toShippingMethod): Converted the NSDecimalNumber amount to a string rather than an integer.
(WebKit::toDecimalNumber): used -decimalNumberWithString:locale: rather than
-initWithMantissa:exponent:isNegative: to create an NSDecimalNumber.
(WebKit::toPKPaymentSummaryItem):
(WebKit::toPKShippingMethod):

LayoutTests:

  • http/tests/ssl/applepay/PaymentRequest.https-expected.txt: Added.
  • http/tests/ssl/applepay/PaymentRequest.https.html: Added.
  • platform/mac-wk2/TestExpectations:
  • platform/ios-wk2/TestExpectations:
10:59 AM Changeset in webkit [222920] by Antti Koivisto
  • 5 edits in trunk/Source/WebCore

Move more multicolumn render tree mutation code to RenderTreeUpdater::MultiColumn
https://bugs.webkit.org/show_bug.cgi?id=177942

Reviewed by Zalan Bujtas.

  • rendering/RenderMultiColumnFlow.cpp:

(WebCore::RenderMultiColumnFlow::RenderMultiColumnFlow):

Use std::unique_ptr for the spanner map for safe owenership transfer.

(WebCore::RenderMultiColumnFlow::fragmentedFlowDescendantInserted):
(WebCore::RenderMultiColumnFlow::handleSpannerRemoval):
(WebCore::RenderMultiColumnFlow::fragmentedFlowRelativeWillBeRemoved):
(WebCore::RenderMultiColumnFlow::populate): Deleted.
(WebCore::RenderMultiColumnFlow::evacuateAndDestroy): Deleted.

This code moves to RenderTreeUpdater::MultiColumn.

  • rendering/RenderMultiColumnFlow.h:
  • style/RenderTreeUpdaterMultiColumn.cpp:

(WebCore::RenderTreeUpdater::MultiColumn::update):
(WebCore::RenderTreeUpdater::MultiColumn::createFragmentedFlow):
(WebCore::RenderTreeUpdater::MultiColumn::destroyFragmentedFlow):

Use Hyatt's preferred 'fragmented flow' terminology.

  • style/RenderTreeUpdaterMultiColumn.h:
10:58 AM Changeset in webkit [222919] by Matt Lewis
  • 8 edits in trunk/Source

Unreviewed, rolling out r222893.

This caused multiple API failures.

Reverted changeset:

"bmalloc mutex should be adaptive"
https://bugs.webkit.org/show_bug.cgi?id=177839
http://trac.webkit.org/changeset/222893

10:50 AM Changeset in webkit [222918] by Carlos Garcia Campos
  • 2 edits in trunk/Tools

Unreviewed. Run WebKit2 C API tests in GTK+ bots again after the last WebKit2 -> WebKit rename.

  • Scripts/run-gtk-tests:

(TestRunner):
(TestRunner._run_test):

10:43 AM Changeset in webkit [222917] by Darin Adler
  • 13 edits
    7 deletes in trunk

Remove additional WebKitSystemInterface remnants
https://bugs.webkit.org/show_bug.cgi?id=177948

Reviewed by Andy Estes.

Source/WebCore:

  • PlatformMac.cmake: Remove logic to select and link an appropriate

WebKitSystemInterface library.

  • html/shadow/MediaControlElementTypes.h: Remove comment about matching

WebKitSystemInterface.h, now obsolete.

  • rendering/RenderMediaControls.cpp: Wrap whole file in a single conditional

to make it clear that it's only used at all in this one particular case.
(wkHitTestMediaUIPart): Deleted.
(wkMeasureMediaUIPart): Deleted.
(wkDrawMediaUIPart): Deleted.
(wkDrawMediaSliderTrack): Deleted.
(WebCore::determineState): Deleted.
(WebCore::getUnzoomedRectAndAdjustCurrentContext): Deleted.
(WebCore::RenderMediaControls::adjustMediaSliderThumbSize): Call the
WKMeasureMediaUIPart instead of through an inline function to rename it.
(WebCore::RenderMediaControls::paintMediaControlsPart): Deleted.

  • rendering/RenderMediaControls.h: Wrap whole file in a single conditional

to make it clear that it's only used at all in this one particular case.
Removed unneeded includes, forward declarations, and function declaration.

  • rendering/RenderThemeMac.mm: Removed include of RenderMediaControls.h.

Source/WebKitLegacy:

  • PlatformMac.cmake: Removed reference to deleted file WebSystemInterface.mm.

Tools:

  • DumpRenderTree/PlatformMac.cmake: Removed code to link the

WebKitSystemInterface library. Left in code that points to
the WebKitLibraries directory, but maybe that can be removed by
someone who is more certain it's no longer needed.

  • Scripts/copy-webkitlibraries-to-product-directory: Removed code

to copy and delete WebKitSystemInterface libraries and headers.

  • WebKitTestRunner/PlatformMac.cmake: Removed code to link the

WebKitSystemInterface library. Left in code that points to
the WebKitLibraries directory, but maybe that can be removed by
someone who is more certain it's no longer needed.

WebKitLibraries:

  • libWebKitSystemInterfaceElCapitan.a: Removed.
  • libWebKitSystemInterfaceIOSDevice10.a: Removed.
  • libWebKitSystemInterfaceIOSDevice11.a: Removed.
  • libWebKitSystemInterfaceIOSSimulator10.a: Removed.
  • libWebKitSystemInterfaceIOSSimulator11.a: Removed.
  • libWebKitSystemInterfaceOSX10.12.a: Removed.
  • libWebKitSystemInterfaceOSX10.13.a: Removed.
10:40 AM Changeset in webkit [222916] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Remove redundant LayoutStateDisabler from RenderTreeUpdaterFirstLetter
https://bugs.webkit.org/show_bug.cgi?id=177946

Reviewed by Simon Fraser.

First letter is updated prior to layout.

Covered by existing tests.

  • style/RenderTreeUpdaterFirstLetter.cpp:

(WebCore::updateFirstLetterStyle):

10:31 AM Changeset in webkit [222915] by aestes@apple.com
  • 5 edits
    1 add in trunk/Source/WebCore

[Payment Request] Factor out ApplePaySession's interface to PaymentCoordinator into a base class
https://bugs.webkit.org/show_bug.cgi?id=177904

Reviewed by Daniel Bates.

In a follow-on patch, something other than ApplePaySession will need to be the
PaymentCoordinator's active session during PaymentRequest sessions.

To support this, this patch factors out the ApplePaySession functions called by
PaymentCoordinator into a new base class called PaymentSession.

  • Modules/applepay/ApplePaySession.h:
  • Modules/applepay/PaymentCoordinator.cpp:

(WebCore::PaymentCoordinator::beginPaymentSession):

  • Modules/applepay/PaymentCoordinator.h:
  • Modules/applepay/PaymentSession.h: Added.

(WebCore::PaymentSession::~PaymentSession):

  • WebCore.xcodeproj/project.pbxproj:
10:18 AM Changeset in webkit [222914] by sbarati@apple.com
  • 2 edits in trunk/Tools

Unreviewed. Try to make debug type profiler tests stop timing out.

  • Scripts/run-jsc-stress-tests:
10:11 AM Changeset in webkit [222913] by matthew_hanson@apple.com
  • 14 edits
    1 delete in branches/safari-604-branch

Revert r222431. rdar://problem/34826998

10:11 AM Changeset in webkit [222912] by matthew_hanson@apple.com
  • 2 edits in branches/safari-604-branch/Tools

Revert r222453. rdar://problem/34826998

9:09 AM WebKitGTK/2.18.x edited by Michael Catanzaro
(diff)
7:04 AM Changeset in webkit [222911] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

Move multicolumn flow clear to RenderTreeUpdater
https://bugs.webkit.org/show_bug.cgi?id=177898
<rdar://problem/34820157>

Reviewed by Antti Koivisto.

There are 2 cases when we need to clear the the multicolumn flow from its container.

  1. When the column renderer is not need anymore due to style change (evacuateAndDestroy).

During the subtree reparenting (moving back the descendants to the original position),
if we still had the multicolumn set on the RenderBlockFlow, RenderBlockFlow::addChild() would
put the children back under the column. -> Move the clear call to the RenderTreeUpdater.

  1. When the column is detached from the tree/destroyed (willBeRemoveFromTree).

Since it does not trigger reparenting, we don't need to clear the column immediately.
We call clear to avoid accessing state column renderer. -> Use WeakPtr to
manage lifetime instead.

Covered by existing tests.

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::setMultiColumnFlow):
(WebCore::RenderBlockFlow::clearMultiColumnFlow):

  • rendering/RenderBlockFlow.h:
  • rendering/RenderMultiColumnFlow.cpp:

(WebCore::RenderMultiColumnFlow::evacuateAndDestroy):
(WebCore::RenderMultiColumnFlow::willBeRemovedFromTree):

  • style/RenderTreeUpdaterMultiColumn.cpp:

(WebCore::RenderTreeUpdater::MultiColumn::update):
(WebCore::RenderTreeUpdater::MultiColumn::createFragmentedFlow):

7:00 AM Changeset in webkit [222910] by magomez@igalia.com
  • 5 edits in trunk/Source/WebCore

[GTK][WPE] GIFImageDecoder never clears decoded frames even when told to do so
https://bugs.webkit.org/show_bug.cgi?id=177864

Reviewed by Carlos Garcia Campos.

Fix GIFImageDecoder::clearFrameBufferCache() so it really deletes decoded buffers, and modify
GIFImageDecoder to be able to decode frames that are not requested in the expected order.

Covered by existent tests.

  • platform/image-decoders/gif/GIFImageDecoder.cpp:

(WebCore::GIFImageDecoder::findFirstRequiredFrameToDecode):
(WebCore::GIFImageDecoder::frameBufferAtIndex):
(WebCore::GIFImageDecoder::clearFrameBufferCache):

  • platform/image-decoders/gif/GIFImageDecoder.h:
  • platform/image-decoders/gif/GIFImageReader.cpp:

(GIFImageReader::decode):

  • platform/image-decoders/gif/GIFImageReader.h:

(GIFImageReader::frameContext const):

6:31 AM Changeset in webkit [222909] by magomez@igalia.com
  • 3 edits in trunk/LayoutTests

Unreviewed GTK+ gardening. Update expectations and rebaseline tests failing at r222905.

  • platform/gtk/TestExpectations:
  • platform/gtk/js/dom/global-constructors-attributes-expected.txt:
3:49 AM Changeset in webkit [222908] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[WinCairo] Fix build after Bug 167956
https://bugs.webkit.org/show_bug.cgi?id=177921

Patch by Fujii Hironori <Fujii Hironori> on 2017-10-05
Reviewed by Carlos Garcia Campos.

FontCascade::fontForCombiningCharacterSequence wasn't defined for
WinCairo port. It should be defined if !USE(HARFBUZZ).

No new tests because there is no behavior change.

  • platform/graphics/FontCascade.cpp: Use !USE(HARFBUZZ) instead of !USE(CAIRO).
2:32 AM Changeset in webkit [222907] by fred.wang@free.fr
  • 8 edits
    1 add
    1 delete in trunk

Remove Brotli from Source/ThirdParty
https://bugs.webkit.org/show_bug.cgi?id=177804

Patch by Frederic Wang <fwang@igalia.com> on 2017-10-03
Reviewed by Michael Catanzaro.

.:

  • Source/CMakeLists.txt: Do not build ThirdParty/brotli anymore.
  • Source/cmake/FindBrotliDec.cmake: Added. New cmake module to find Brotli via PkgConfig.
  • Source/cmake/OptionsGTK.cmake: Expose USE_WOFF2 as a public option and use find_package

to look for brotli.

Source/ThirdParty:

  • brotli/CMakeLists.txt: Removed.
  • brotli/LICENSE: Removed.
  • brotli/README.webkit: Removed.
  • brotli/common/constants.h: Removed.
  • brotli/common/dictionary.bin: Removed.
  • brotli/common/dictionary.c: Removed.
  • brotli/common/dictionary.h: Removed.
  • brotli/common/version.h: Removed.
  • brotli/dec/bit_reader.c: Removed.
  • brotli/dec/bit_reader.h: Removed.
  • brotli/dec/context.h: Removed.
  • brotli/dec/decode.c: Removed.
  • brotli/dec/huffman.c: Removed.
  • brotli/dec/huffman.h: Removed.
  • brotli/dec/port.h: Removed.
  • brotli/dec/prefix.h: Removed.
  • brotli/dec/state.c: Removed.
  • brotli/dec/state.h: Removed.
  • brotli/dec/transform.h: Removed.
  • brotli/include/brotli/decode.h: Removed.
  • brotli/include/brotli/encode.h: Removed.
  • brotli/include/brotli/port.h: Removed.
  • brotli/include/brotli/types.h: Removed.
  • brotli/update.sh: Removed.
  • woff2/CMakeLists.txt: Use Brotli's include and library paths found by CMake.

Tools:

  • gtk/jhbuild.modules: Build brotli 1.0.1 from the official github repository.
  • Scripts/webkitpy/style/checker.py: Remove brotli.
2:28 AM Changeset in webkit [222906] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebCore

Align BitmapImage::LargeAnimationCutoff to a megabyte value
https://bugs.webkit.org/show_bug.cgi?id=177924

Reviewed by Carlos Garcia Campos.

  • platform/graphics/BitmapImage.h: Fix the 1014 multiplier used to calculate

the LargeAnimationCutoff value. It was most likely a typo.

2:04 AM Changeset in webkit [222905] by zandobersek@gmail.com
  • 2 edits
    4 adds in trunk/LayoutTests

Unreviewed WPE gardening.

Enable the http/tests/ layout tests in general, but skip the directories
that contain failing tests that still have to be cataloged.

  • platform/wpe/TestExpectations:
  • platform/wpe/http: Added.
  • platform/wpe/http/wpt: Added.
  • platform/wpe/http/wpt/resource-timing: Added.
  • platform/wpe/http/wpt/resource-timing/rt-initiatorType-media-expected.txt: Added.
1:28 AM WebKitGTK/TrackingMemoryErrors edited by cturner@igalia.com
Mention that Malloc=1 is needed to succeed with Valgrind (diff)
1:24 AM WebKitGTK/Debugging edited by cturner@igalia.com
(diff)
1:06 AM Changeset in webkit [222904] by Wenson Hsieh
  • 4 edits in trunk/Source/WebCore

Address post-review feedback following r222885
https://bugs.webkit.org/show_bug.cgi?id=177853
<rdar://problem/34807346>

Reviewed by Ryosuke Niwa and Dan Bates.

  • dom/DataTransfer.cpp:

(WebCore::DataTransfer::updateFileList):
(WebCore::DataTransfer::types const):
(WebCore::DataTransfer::filesFromPasteboardAndItemList const):

  • dom/DataTransferItem.h:

(WebCore::DataTransferItem::file):
(WebCore::DataTransferItem::file const): Deleted.

  • dom/DataTransferItemList.cpp:

(WebCore::DataTransferItemList::add):
(WebCore::DataTransferItemList::remove):

When removing a data transfer item, capture it in a Ref for the scope of remove(), so that it won't be destroyed
immediately after removing from the item list.

12:55 AM WebKitGTK/2.18.x edited by Michael Catanzaro
(diff)
12:54 AM Changeset in webkit [222903] by fred.wang@free.fr
  • 28 edits
    15 adds
    5 deletes in trunk/Source/ThirdParty

Upgrade Brotli to version 1.0.1 and WOFF2 to latest upstream
https://bugs.webkit.org/show_bug.cgi?id=177768

Patch by Frederic Wang <fwang@igalia.com> on 2017-10-05
Reviewed by Michael Catanzaro.

  • brotli/CMakeLists.txt:
  • brotli/README.webkit:
  • brotli/common/constants.h: Added.
  • brotli/common/dictionary.bin: Added.
  • brotli/common/dictionary.c: Added.
  • brotli/common/dictionary.h: Added.
  • brotli/common/version.h: Added.
  • brotli/dec/Makefile: Removed.
  • brotli/dec/bit_reader.c:
  • brotli/dec/bit_reader.h:
  • brotli/dec/context.h:
  • brotli/dec/decode.c:
  • brotli/dec/decode.h: Removed.
  • brotli/dec/dictionary.c: Removed.
  • brotli/dec/dictionary.h: Removed.
  • brotli/dec/huffman.c:
  • brotli/dec/huffman.h:
  • brotli/dec/port.h:

(BrotliDump):
(BrotliRBit):

  • brotli/dec/prefix.h:
  • brotli/dec/state.c:
  • brotli/dec/state.h:
  • brotli/dec/transform.h:
  • brotli/dec/types.h: Removed.
  • brotli/include/brotli/decode.h: Added.
  • brotli/include/brotli/encode.h: Added.
  • brotli/include/brotli/port.h: Added.
  • brotli/include/brotli/types.h: Added.
  • brotli/update.sh:
  • woff2/CMakeLists.txt:
  • woff2/README.webkit:
  • woff2/src/buffer.h:

(woff2::Buffer::Buffer):
(woff2::Buffer::Read):

  • woff2/src/convert_woff2ttf_*.cc: Added.
  • woff2/src/font.cc:
  • woff2/src/glyph.cc:
  • woff2/src/normalize.cc:
  • woff2/src/port.h:
  • woff2/src/store_bytes.h:

(woff2::Store16):

  • woff2/src/variable_length.cc:
  • woff2/src/woff2_common.cc:
  • woff2/src/woff2_dec.cc:
  • woff2/src/woff2_decompress.cc:
  • woff2/src/woff2_enc.cc:
  • woff2/src/woff2_info.cc: Added.
12:44 AM Changeset in webkit [222902] by commit-queue@webkit.org
  • 10 edits
    2 copies in trunk/Source

Make LibWebRTCProvider port agnostic
https://bugs.webkit.org/show_bug.cgi?id=177747

Patch by Youenn Fablet <youenn@apple.com> on 2017-10-05
Reviewed by Alex Christensen & Alex Garcia.

Source/WebCore:

No change of behavior.

LibWebRTCProvider had some Mac/iOS specific members that are now
moved to LibWebRTCProviderCocoa.
This consists in the codec factories that are VideoToolBox specific.
Introducing LibWebRTCProvider::create to allow different port implementations of LibWebRTCProvider.

  • WebCore.xcodeproj/project.pbxproj:
  • inspector/InspectorOverlay.cpp:

(WebCore::InspectorOverlay::overlayPage):

  • platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:

(WebCore::LibWebRTCProvider::create):
(WebCore::LibWebRTCProvider::factory):
(WebCore::LibWebRTCProvider::createPeerConnectionFactory):

  • platform/mediastream/libwebrtc/LibWebRTCProvider.h:
  • platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp:

(WebCore::LibWebRTCProviderCocoa::createDecoderFactory):
(WebCore::LibWebRTCProviderCocoa::createEncoderFactory):
(WebCore::LibWebRTCProviderCocoa::setActive):

  • platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.h:
  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::dataChanged):

Source/WebKit:

  • WebProcess/Network/webrtc/LibWebRTCProvider.h: Making sure Mac/iOS provider creates the codec factories.

Source/WebKitLegacy/mac:

  • WebView/WebView.mm:

(-[WebView _commonInitializationWithFrameName:groupName:]):
(-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):

12:38 AM Changeset in webkit [222901] by sbarati@apple.com
  • 11 edits
    1 add in trunk

Make sure all prototypes under poly proto get added into the VM's prototype map
https://bugs.webkit.org/show_bug.cgi?id=177909

Reviewed by Keith Miller.

JSTests:

  • stress/poly-proto-prototype-map-having-a-bad-time.js: Added.

(assert):
(foo.C):
(foo):
(set x):

Source/JavaScriptCore:

This is an invariant of prototypes that I broke when doing poly proto. This patch fixes it.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/BytecodeList.json:
  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGOperations.cpp:
  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/JSCInlines.h:
  • runtime/PrototypeMap.cpp:

(JSC::PrototypeMap::addPrototype): Deleted.

  • runtime/PrototypeMap.h:
  • runtime/PrototypeMapInlines.h:

(JSC::PrototypeMap::isPrototype const):
(JSC::PrototypeMap::addPrototype):

12:05 AM Changeset in webkit [222900] by Yusuke Suzuki
  • 17 edits
    1 copy
    4 adds in trunk

[Linux] Port MallocBench
https://bugs.webkit.org/show_bug.cgi?id=177856

Reviewed by Filip Pizlo.

.:

  • CMakeLists.txt:

PerformanceTests:

We would like to optimize locking in bmalloc in Linux by using futex APIs. So we should have
the way to ensure this actually improves / does not regress the performance.

This patch ports MallocBench to Linux to measure/ensure the effect of bmalloc patch in Linux.

While we replace the dispatch serial queue in message.cpp, we still use libdispatch in Benchmark.cpp
since we do not have priority mechanism in C++11 threading implementation.

We also extend run-malloc-benchmarks to accept cmake style layout of build product directory.
And we also support building MallocBench in CMake environment including CMake Mac ports.
Currently, we do not support Windows yet.

Based on the measurement, we can say the following observation. glibc's malloc performance is not
so bad. While bmalloc shows 3.8x (in geomean) performance improvement, bmalloc in Linux shows 2.0x
improvement. Since both numbers in bmalloc are similar, we can think that bmalloc's optimization is
actually working in Linux too. And even though glibc's malloc perofmrnace is not so bad, bmalloc
still offers performance improvement.

  • CMakeLists.txt: Added.
  • MallocBench/CMakeLists.txt: Added.
  • MallocBench/MallocBench.xcodeproj/project.pbxproj:
  • MallocBench/MallocBench/Benchmark.cpp:

(Benchmark::Benchmark):
(Benchmark::runOnce):
(Benchmark::currentMemoryBytes): Deleted.

  • MallocBench/MallocBench/Benchmark.h:

(Benchmark::Memory::Memory): Deleted.
(Benchmark::Memory::operator-): Deleted.

  • MallocBench/MallocBench/CMakeLists.txt: Added.
  • MallocBench/MallocBench/CPUCount.cpp:

(cpuCount):

  • MallocBench/MallocBench/Interpreter.cpp:

(Interpreter::doMallocOp):

  • MallocBench/MallocBench/Memory.cpp: Added.

(currentMemoryBytes):

  • MallocBench/MallocBench/Memory.h: Copied from PerformanceTests/MallocBench/MallocBench/CPUCount.cpp.

(Memory::Memory):
(Memory::operator-):

  • MallocBench/MallocBench/balloon.cpp:

(benchmark_balloon):

  • MallocBench/MallocBench/mbmalloc.cpp:
  • MallocBench/MallocBench/message.cpp:

(WorkQueue::WorkQueue):
(WorkQueue::~WorkQueue):
(WorkQueue::dispatchAsync):
(WorkQueue::dispatchSync):
(benchmark_message_one):
(benchmark_message_many):

  • MallocBench/MallocBench/nimlang.cpp:

(benchmark_nimlang):

  • MallocBench/MallocBench/stress.cpp:

(SizeStream::next):

  • MallocBench/MallocBench/stress_aligned.cpp:
  • MallocBench/run-malloc-benchmarks:

Source/bmalloc:

  • CMakeLists.txt:

Oct 4, 2017:

11:33 PM Changeset in webkit [222899] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: When scrolled Network Table reduces the number of rows it may appear as blank
https://bugs.webkit.org/show_bug.cgi?id=177914
<rdar://problem/34827613>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-10-04
Reviewed by Matt Baker.

  • UserInterface/Views/Table.js:

(WI.Table.prototype._updateVisibleRows):
(WI.Table.prototype._updateFillerRowWithNewHeight):
Reduce the scrollTop when the table was scrolled and was then reloaded with a
smaller number of rows. This can happen in two ways. Either the number of rows
was reduced so much that we enter non-scrollable mode with a non-zero filler
row. This can always reset the scrollTop to 0. Or when a large number of rows
is reduced to a smaller number than our current scrollTop but still more than
fit on one screen. In that case we can reduce the scrollTop to whatever would
scroll the table to its max position.

11:13 PM Changeset in webkit [222898] by achristensen@apple.com
  • 65 edits
    3 deletes in trunk/Source

Remove WebCoreSystemInterface
https://bugs.webkit.org/show_bug.cgi?id=177916

Reviewed by Antti Koivisto.

Source/WebCore:

  • Configurations/WebCore.xcconfig:
  • PlatformMac.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • accessibility/mac/AXObjectCacheMac.mm:
  • accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
  • dom/Document.cpp:
  • editing/mac/DictionaryLookup.mm:
  • page/ios/FrameIOS.mm:
  • page/ios/UserAgentIOS.mm:
  • page/mac/EventHandlerMac.mm:
  • platform/cocoa/LocalizedStringsCocoa.mm:
  • platform/cocoa/ScrollController.mm:
  • platform/graphics/Font.h:
  • platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.mm:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
  • platform/graphics/ca/GraphicsLayerCA.cpp:
  • platform/graphics/cg/GraphicsContextCG.cpp:
  • platform/graphics/cg/ImageBufferCG.cpp:
  • platform/graphics/cg/PathCG.cpp:
  • platform/graphics/cg/PatternCG.cpp:
  • platform/graphics/cocoa/FontCascadeCocoa.mm:
  • platform/graphics/cocoa/FontCocoa.mm:
  • platform/graphics/cocoa/FontPlatformDataCocoa.mm:
  • platform/graphics/mac/ComplexTextControllerCoreText.mm:
  • platform/graphics/mac/FontCacheMac.mm:
  • platform/graphics/mac/GlyphPageMac.cpp:
  • platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
  • platform/ios/LegacyTileCache.mm:
  • platform/ios/PlatformScreenIOS.mm:
  • platform/ios/VideoFullscreenInterfaceAVKit.mm:
  • platform/ios/WebCoreSystemInterfaceIOS.mm: Removed.
  • platform/ios/wak/WAKWindow.mm:
  • platform/mac/CursorMac.mm:
  • platform/mac/FileSystemMac.mm:
  • platform/mac/PlatformEventFactoryMac.mm:
  • platform/mac/PlatformSpeechSynthesizerMac.mm:
  • platform/mac/ScrollAnimatorMac.mm:
  • platform/mac/ScrollbarThemeMac.mm:
  • platform/mac/ThemeMac.mm:
  • platform/mac/WebCoreNSURLExtras.mm:
  • platform/mac/WebCoreSystemInterface.h: Removed.
  • platform/mac/WebCoreSystemInterface.mm: Removed.
  • platform/mac/WebVideoFullscreenHUDWindowController.mm:
  • platform/mac/WebWindowAnimation.mm:
  • platform/network/cf/CookieStorageCFNet.cpp:
  • platform/network/cf/CredentialStorageCFNet.cpp:
  • platform/network/cf/NetworkStorageSessionCFNet.cpp:
  • platform/network/cf/ResourceHandleCFNet.cpp:
  • platform/network/cf/ResourceHandleCFURLConnectionDelegate.cpp:
  • platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp:
  • platform/network/cf/ResourceRequestCFNet.cpp:
  • platform/network/cf/ResourceResponseCFNet.cpp:
  • platform/network/cf/SocketStreamHandleImplCFNet.cpp:
  • platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp:
  • platform/network/cocoa/ResourceRequestCocoa.mm:
  • platform/network/ios/WebCoreURLResponseIOS.mm:
  • platform/network/mac/CookieJarMac.mm:
  • platform/network/mac/ResourceHandleMac.mm:
  • platform/network/mac/WebCoreURLResponse.mm:
  • platform/text/TextEncodingRegistry.cpp:
  • rendering/RenderThemeMac.mm:

Source/WebKitLegacy/ios:

  • Misc/WebUIKitSupport.mm:
10:46 PM Changeset in webkit [222897] by achristensen@apple.com
  • 18 edits in trunk

Stop linking with WebKitSystemInterface
https://bugs.webkit.org/show_bug.cgi?id=177915

Reviewed by Antti Koivisto.

Source/WebKit:

  • Configurations/DebugRelease.xcconfig:
  • WebKit.xcodeproj/project.pbxproj:

Source/WebKitLegacy:

  • WebKitLegacy.xcodeproj/project.pbxproj:

Source/WebKitLegacy/mac:

  • Configurations/DebugRelease.xcconfig:
  • Configurations/WebKitLegacy.xcconfig:

Tools:

  • DumpRenderTree/mac/Configurations/Base.xcconfig:
  • DumpRenderTree/mac/Configurations/DebugRelease.xcconfig:
  • DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig:
  • DumpRenderTree/mac/Configurations/DumpRenderTreeApp.xcconfig:
  • WebKitTestRunner/Configurations/Base.xcconfig:
  • WebKitTestRunner/Configurations/DebugRelease.xcconfig:
  • WebKitTestRunner/Configurations/InjectedBundle.xcconfig:
  • WebKitTestRunner/Configurations/WebKitTestRunner.xcconfig:
  • WebKitTestRunner/Configurations/WebKitTestRunnerApp.xcconfig:
9:30 PM Changeset in webkit [222896] by achristensen@apple.com
  • 83 edits
    4 deletes in trunk

Remove unnecessary includes of WebKitSystemInterface on Cocoa platforms
https://bugs.webkit.org/show_bug.cgi?id=177912

Reviewed by Saam Barati.

Source/WebCore:

  • WebCore.xcodeproj/project.pbxproj:

Also stop compiling RenderMediaControls.cpp on Cocoa platforms. It's not used.

Source/WebKit:

  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:
  • NetworkProcess/mac/NetworkProcessMac.mm:
  • NetworkProcess/mac/RemoteNetworkingContext.mm:
  • Platform/IPC/mac/ConnectionMac.mm:
  • Platform/mac/LayerHostingContext.mm:
  • PluginProcess/mac/PluginProcessMac.mm:
  • PluginProcess/mac/PluginProcessShim.mm:
  • Shared/ios/ChildProcessIOS.mm:
  • Shared/mac/ChildProcessMac.mm:
  • Shared/mac/SandboxExtensionMac.mm:
  • Shared/mac/WebCoreArgumentCodersMac.mm:
  • Shared/mac/WebEventFactory.mm:
  • StorageProcess/ios/StorageProcessIOS.mm:
  • StorageProcess/mac/StorageProcessMac.mm:
  • UIProcess/API/Cocoa/WKWebView.mm:
  • UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
  • UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:
  • UIProcess/Cocoa/WebViewImpl.mm:
  • UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
  • UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
  • UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
  • UIProcess/mac/PageClientImplMac.mm:
  • UIProcess/mac/WKTextInputWindowController.mm:
  • UIProcess/mac/WebContextMenuProxyMac.mm:
  • UIProcess/mac/WebPopupMenuProxyMac.mm:
  • UIProcess/mac/WindowServerConnection.mm:
  • WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
  • WebProcess/Plugins/Netscape/mac/PluginProxyMac.mm:
  • WebProcess/Plugins/PDF/PDFPlugin.mm:
  • WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
  • WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
  • WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:
  • WebProcess/WebPage/ios/WebPageIOS.mm:
  • WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:
  • WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:
  • WebProcess/WebPage/mac/WebPageMac.mm:
  • WebProcess/cocoa/WebProcessCocoa.mm:

Source/WebKitLegacy/ios:

  • Misc/WebUIKitSupport.mm:
  • WebCoreSupport/WebChromeClientIOS.mm:

Source/WebKitLegacy/mac:

  • Carbon/CarbonUtils.m:
  • Carbon/CarbonWindowAdapter.mm:
  • Carbon/HIWebView.mm:
  • DefaultDelegates/WebDefaultContextMenuDelegate.mm:
  • Misc/WebNSFileManagerExtras.mm:
  • Misc/WebNSPasteboardExtras.mm:
  • Misc/WebNSURLExtras.mm:
  • Plugins/Hosted/HostedNetscapePluginStream.mm:
  • Plugins/Hosted/NetscapePluginHostManager.mm:
  • Plugins/Hosted/NetscapePluginHostProxy.mm:
  • Plugins/Hosted/NetscapePluginInstanceProxy.mm:
  • Plugins/Hosted/WebHostedNetscapePluginView.h:
  • Plugins/Hosted/WebTextInputWindowController.m:
  • Plugins/WebBaseNetscapePluginView.mm:
  • Plugins/WebNetscapePluginEventHandlerCarbon.mm:
  • Plugins/WebNetscapePluginEventHandlerCocoa.mm:
  • Plugins/WebNetscapePluginStream.mm:
  • Plugins/WebNetscapePluginView.mm:
  • Plugins/WebPluginDatabase.mm:
  • WebCoreSupport/PopupMenuMac.mm:
  • WebCoreSupport/WebChromeClient.mm:
  • WebCoreSupport/WebFrameLoaderClient.mm:
  • WebCoreSupport/WebInspectorClient.mm:
  • WebCoreSupport/WebPlatformStrategies.mm:
  • WebCoreSupport/WebSystemInterface.mm:
  • WebView/WebDynamicScrollBarsView.mm:
  • WebView/WebFrame.mm:
  • WebView/WebFrameView.mm:
  • WebView/WebFullScreenController.mm:
  • WebView/WebHTMLView.mm:
  • WebView/WebPreferences.mm:
  • WebView/WebView.mm:

Tools:

  • DumpRenderTree/mac/DumpRenderTree.mm:
8:57 PM Changeset in webkit [222895] by Yusuke Suzuki
  • 19 edits
    4 adds in trunk

[JSC] Introduce import.meta
https://bugs.webkit.org/show_bug.cgi?id=177703

Reviewed by Filip Pizlo.

JSTests:

  • modules/import-meta-syntax.js: Added.

(shouldThrow):
(shouldNotThrow):

  • modules/import-meta.js: Added.
  • modules/import-meta/cocoa.js: Added.
  • modules/resources/assert.js:

(export.shouldNotThrow):

  • stress/import-syntax.js:

Source/JavaScriptCore:

This patch adds stage 3 import.meta[1].
We add a new hook function moduleLoaderCreateImportMetaProperties, which creates
import meta properties object to this module. And we set this object as @meta
private variable in module environments. So module code can access this by accessing
@meta private variable.

[1]: https://github.com/tc39/proposal-import-meta

  • builtins/BuiltinNames.h:
  • builtins/ModuleLoaderPrototype.js:
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):

  • jsc.cpp:

(GlobalObject::moduleLoaderCreateImportMetaProperties):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseModuleSourceElements):
(JSC::Parser<LexerType>::parseMemberExpression):

  • runtime/JSGlobalObject.cpp:
  • runtime/JSGlobalObject.h:
  • runtime/JSModuleLoader.cpp:

(JSC::JSModuleLoader::createImportMetaProperties):

  • runtime/JSModuleLoader.h:
  • runtime/JSModuleRecord.cpp:

(JSC::JSModuleRecord::link):
(JSC::JSModuleRecord::instantiateDeclarations):

  • runtime/JSModuleRecord.h:
  • runtime/ModuleLoaderPrototype.cpp:

(JSC::moduleLoaderPrototypeModuleDeclarationInstantiation):

Source/WebCore:

  • bindings/js/JSDOMWindowBase.cpp:
  • bindings/js/JSWorkerGlobalScopeBase.cpp:
8:54 PM Changeset in webkit [222894] by commit-queue@webkit.org
  • 10 edits
    1 copy
    1 add in trunk/Source/WebKit

rtc::PacketOptions should have its own IPC encoding/decoding routines
https://bugs.webkit.org/show_bug.cgi?id=177812

Patch by Youenn Fablet <youenn@apple.com> on 2017-10-04
Reviewed by Alex Christensen.

Replacing rtc::PacketOptions IPC encoding/decoding from passing the structure as individual parameters to the structure as a parameter.
Introducing WebKit::RTCPacketOptions as a wrapper around it for which encode/decode routines are added.
Updating code using rtc::PacketOptions accordingly.

  • NetworkProcess/webrtc/NetworkRTCSocket.cpp:

(WebKit::NetworkRTCSocket::sendTo):

  • NetworkProcess/webrtc/NetworkRTCSocket.h:
  • NetworkProcess/webrtc/NetworkRTCSocket.messages.in:
  • Platform/IPC/Decoder.cpp:

(IPC::Decoder::operator>>):
(IPC::Decoder::decode):

  • Platform/IPC/Decoder.h:
  • Platform/IPC/Encoder.cpp:

(IPC::Encoder::encode):

  • Platform/IPC/Encoder.h:
  • Shared/RTCPacketOptions.cpp: Added.

(WebKit::RTCPacketOptions::encode const):
(WebKit::RTCPacketOptions::decode):

  • Shared/RTCPacketOptions.h: Added.
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Network/webrtc/LibWebRTCSocket.cpp:

(WebKit::LibWebRTCSocket::SendTo):

8:05 PM Changeset in webkit [222893] by fpizlo@apple.com
  • 8 edits in trunk/Source

bmalloc mutex should be adaptive
https://bugs.webkit.org/show_bug.cgi?id=177839

Reviewed by Michael Saboff.

Source/bmalloc:

This pulls the WordLock algorithm into bmalloc, mostly by copy-pasting the code. We need to
copy paste because sometimes we build WTF without bmalloc, so WTF cannot rely on bmalloc for
anything other than malloc.

  • bmalloc/Algorithm.h:

(bmalloc::compareExchangeWeak):
(bmalloc::compareExchangeStrong):

  • bmalloc/PerThread.h:
  • bmalloc/StaticMutex.cpp:

(bmalloc::StaticMutex::lockSlow):
(bmalloc::StaticMutex::unlockSlow):
(bmalloc::StaticMutex::lockSlowCase): Deleted.

  • bmalloc/StaticMutex.h:

(bmalloc::StaticMutex::try_lock):
(bmalloc::StaticMutex::isLocked const):
(bmalloc::StaticMutex::init):
(bmalloc::StaticMutex::tryLock):
(bmalloc::StaticMutex::lock):
(bmalloc::StaticMutex::unlock):
(bmalloc::sleep): Deleted.
(bmalloc::waitUntilFalse): Deleted.

Source/WTF:

Add some comments that I thought of while copy-pasting this code.

  • wtf/LockAlgorithmInlines.h:
  • wtf/WordLock.cpp:
7:57 PM Changeset in webkit [222892] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

Link WebCore against CFNetwork in the CMake build
https://bugs.webkit.org/show_bug.cgi?id=177910

Reviewed by Ryosuke Niwa.

  • PlatformMac.cmake:

This is enough to get WebKit1 MiniBrowser running; otherwise, we
crash trying to access the public suffix list.

7:47 PM Changeset in webkit [222891] by sbarati@apple.com
  • 8 edits
    2 adds in trunk

Make pertinent AccessCases watch the poly proto watchpoint
https://bugs.webkit.org/show_bug.cgi?id=177765

Reviewed by Keith Miller.

JSTests:

  • microbenchmarks/poly-proto-and-non-poly-proto-same-ic.js: Added.

(assert):
(foo.C):
(foo):
(validate):

  • stress/poly-proto-clear-stub.js: Added.

(assert):
(foo.C):
(foo):

Source/JavaScriptCore:

This patch makes it so that stubs that encounter a structure with a
valid poly proto watchpoint will watch the poly proto watchpoint. This
ensures that if the watchpoint is fired, the stub will be cleared
and have a chance to regenerate. In an ideal world, this will lead
to the stub generating better code since it may never encounter the
non-poly proto structure again.

This patch also fixes a bug in the original poly proto code where
I accidentally had a condition inverted. The bad code caused a
stub that continually cached two structures which are structurally
equivalent but with different prototype objects to always clear itself.
The code should have been written differently. It should have only
cleared if the poly proto watchpoint *was not* fired. The code
accidentally cleared only if stub *was* fired.

  • bytecode/AccessCase.cpp:

(JSC::AccessCase::commit):

  • bytecode/PolymorphicAccess.cpp:

(JSC::PolymorphicAccess::addCases):
(WTF::printInternal):

  • bytecode/PolymorphicAccess.h:

(JSC::AccessGenerationResult::shouldResetStubAndFireWatchpoints const):
(JSC::AccessGenerationResult::addWatchpointToFire):
(JSC::AccessGenerationResult::fireWatchpoints):
(JSC::AccessGenerationResult::shouldResetStub const): Deleted.

  • bytecode/StructureStubInfo.cpp:

(JSC::StructureStubInfo::addAccessCase):
(JSC::StructureStubInfo::reset):

  • bytecode/Watchpoint.h:

(JSC::InlineWatchpointSet::inflate):

  • jit/Repatch.cpp:

(JSC::fireWatchpointsAndClearStubIfNeeded):
(JSC::tryCacheGetByID):
(JSC::repatchGetByID):
(JSC::tryCachePutByID):
(JSC::repatchPutByID):
(JSC::tryCacheIn):
(JSC::repatchIn):
(JSC::tryRepatchIn): Deleted.

5:02 PM Changeset in webkit [222890] by Megan Gardner
  • 6 edits
    2 adds in trunk/Tools

Break out new touch debugging code into seperate file
https://bugs.webkit.org/show_bug.cgi?id=177796

Reviewed by Simon Fraser.

Encapsulate the new debug touch code into it's own file.
This allows for cleaner code and a better way to show the touches
in a completely separate window, which should also be in screen
coordinates, and not subject to any transforms that get put on the
WebViews.

  • TestRunnerShared/spi/UIKitTestSPI.h:
  • WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
  • WebKitTestRunner/ios/HIDDebugTouchWindow.h: Added.
  • WebKitTestRunner/ios/HIDDebugTouchWindow.mm: Added.

(+[HIDDebugTouchWindow sharedHIDDebugTouchWindow]):
(-[HIDDebugTouchWindow init]):
(-[HIDDebugTouchWindow dealloc]):
(-[HIDDebugTouchWindow updateDebugIndicatorForTouch:withPointInWindowCoordinates:isTouching:]):
(-[HIDDebugTouchWindow initDebugViewsIfNeeded]):

  • WebKitTestRunner/ios/HIDEventGenerator.h:
  • WebKitTestRunner/ios/HIDEventGenerator.mm:

(-[HIDEventGenerator init]):
(-[HIDEventGenerator _createIOHIDEventWithInfo:]):
(-[HIDEventGenerator _createIOHIDEventType:]):
(-[HIDEventGenerator _updateTouchPoints:count:]):
(-[HIDEventGenerator touchDownAtPoints:touchCount:]):
(-[HIDEventGenerator touchDown:touchCount:]):
(-[HIDEventGenerator liftUpAtPoints:touchCount:]):
(-[HIDEventGenerator liftUp:touchCount:]):
(-[HIDEventGenerator moveToPoints:touchCount:duration:]):
(-[HIDEventGenerator initDebugViewsIfNeeded]): Deleted.
(-[HIDEventGenerator updateDebugIndicatorForTouch:withPoint:isTouching:]): Deleted.

  • WebKitTestRunner/ios/TestControllerIOS.mm:

(WTR::TestController::updatePlatformSpecificTestOptionsForTest const):

4:58 PM Changeset in webkit [222889] by dbates@webkit.org
  • 3 edits in trunk/Source/WebCore

Have TextDecorationPainter hold an OptionSet of decorations
https://bugs.webkit.org/show_bug.cgi?id=177889

Reviewed by Simon Fraser.

Currently TextDecorationPainter implicitly maintains the set of one or more TextDecoration
flags in a instance variable bitmask of type TextDecoration. Instead we should represent
this set explicitly as an OptionSet to improve readability of the code.

For now we have the TextDecorationPainter constructor and TextDecorationPainter::stylesForRenderer()
to take the set of decorations as an unsigned value to avoid the need to update callers.
We will look to apply a similar change throughout the code in <https://bugs.webkit.org/show_bug.cgi?id=176844>.

No functionality changed. So, no new tests.

  • rendering/TextDecorationPainter.cpp:

(WebCore::TextDecorationPainter::TextDecorationPainter): For now, changed data type for passed
decorations from TextDecoration to unsigned to convey that it is a bitmask.
(WebCore::TextDecorationPainter::paintTextDecoration): Renamed linesAreOpaque to areLinesOpaque
while I am here. Fixed some minor style issues.
(WebCore::collectStylesForRenderer): Modified to take the remaining decorations as an OptionSet,
and removed an unnecessary copy of these decorations by taking advantage of the fact that they
are passed by value.
(WebCore::TextDecorationPainter::stylesForRenderer): Convert the passed decorations to an OptionSet as needed to
pass to collectStylesForRenderer().

  • rendering/TextDecorationPainter.h: Change m_decoration from TextDecoration to OptionSet<TextDecoration>

and rename it to m_decorations to reflect that it is used as a set of one or more TextDecoration flags.
Also remove unnecessary initializer for m_isPrinting while I am here and group it with the other boolean,
m_isHorizontal. There is exactly one constructor for this class and it initializes m_isPrinting.

4:51 PM Changeset in webkit [222888] by Matt Baker
  • 15 edits in trunk

Web Inspector: Improve CanvasManager recording events
https://bugs.webkit.org/show_bug.cgi?id=177762

Reviewed by Devin Rousso.

Source/JavaScriptCore:

  • inspector/protocol/Canvas.json:

Renamed events for clarity and consistency; made recording data optional.

Source/WebCore:

Dispatch Canvas.recordingFinished regardless of whether any actions were
recorded. Without this extra guarantee, the frontend has to keep track
of additional state to determine whether a recording is in progress.

  • inspector/InspectorCanvasAgent.cpp:

(WebCore::InspectorCanvasAgent::startRecording):
(WebCore::InspectorCanvasAgent::stopRecording):
(WebCore::InspectorCanvasAgent::didFinishRecordingCanvasFrame):
(WebCore::InspectorCanvasAgent::requestRecording): Deleted.
(WebCore::InspectorCanvasAgent::cancelRecording): Deleted.

  • inspector/InspectorCanvasAgent.h:

Source/WebInspectorUI:

  • UserInterface/Controllers/CanvasManager.js:

(WI.CanvasManager.prototype.startRecording):
(WI.CanvasManager.prototype.stopRecording):
(WI.CanvasManager.prototype.recordingFinished):
Replace the RecordingFinished event with a pair of events. RecordingStarted
is sent when CanvasAgent.startRecording succeeds. RecordingStopped is
sent when a recordingFinished event is received from the backend, or
when a call to CanvasAgent.stopRecording fails.

  • UserInterface/Views/CanvasContentView.js:

(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype._toggleRecording):
(WI.CanvasContentView.prototype._recordingStarted):
(WI.CanvasContentView.prototype._recordingFinished): Deleted.
Update recording status when CanvasManager fires recording events,
instead of immediately after clicking the record button.

LayoutTests:

Update tests for renamed CanvasManager event.

  • inspector/canvas/recording-2d.html:
  • inspector/canvas/recording-expected.txt:
  • inspector/canvas/recording-webgl-snapshots.html:
  • inspector/canvas/recording-webgl.html:
  • inspector/canvas/recording.html:
  • inspector/canvas/resources/recording-utilities.js:

(TestPage.registerInitializer):

4:43 PM Changeset in webkit [222887] by n_wang@apple.com
  • 7 edits
    4 adds in trunk

AX: Make video objects accessible on iOS
https://bugs.webkit.org/show_bug.cgi?id=177788
<rdar://problem/34778028>

Reviewed by Chris Fleizach.

Source/WebCore:

Exposed certain <video> elements on iOS:

  1. If they have no controls attribute set and have playsinline attribute set, that means normally there are custom controls provided.
  2. Without autoplay attribute set. From iOS 10, with the motivation to improve performace by replacing GIF with <video>, elements will now honor the autoplay attribute if they have no audio. So normally those <video> elements are not interactive.

Also provided functions to let iOS users interact with the video elements:

  • Play/Pause: accessibilityActivate
  • Fast forward: accessibilityIncrement
  • Rewind: accessibilityDecrement

Test: accessibility/ios-simulator/video-elements-ios.html

  • WebCore.xcodeproj/project.pbxproj:
  • accessibility/AXObjectCache.cpp:

(WebCore::createFromRenderer):

  • accessibility/AccessibilityMediaObject.cpp: Added.

(WebCore::AccessibilityMediaObject::AccessibilityMediaObject):
(WebCore::AccessibilityMediaObject::~AccessibilityMediaObject):
(WebCore::AccessibilityMediaObject::create):
(WebCore::AccessibilityMediaObject::computeAccessibilityIsIgnored const):
(WebCore::AccessibilityMediaObject::mediaElement const):
(WebCore::AccessibilityMediaObject::stringValue const):
(WebCore::AccessibilityMediaObject::interactiveVideoDuration const):
(WebCore::AccessibilityMediaObject::mediaSeek):
(WebCore::AccessibilityMediaObject::toggleMute):
(WebCore::AccessibilityMediaObject::increment):
(WebCore::AccessibilityMediaObject::decrement):
(WebCore::AccessibilityMediaObject::press):
(WebCore::AccessibilityMediaObject::hasControlsAttributeSet const):
(WebCore::AccessibilityMediaObject::isPlaying const):
(WebCore::AccessibilityMediaObject::isMuted const):
(WebCore::AccessibilityMediaObject::isAutoplayEnabled const):
(WebCore::AccessibilityMediaObject::isPlayingInline const):
(WebCore::AccessibilityMediaObject::enterFullscreen const):

  • accessibility/AccessibilityMediaObject.h: Added.
  • accessibility/AccessibilityObject.cpp:
  • accessibility/AccessibilityObject.h:

(WebCore::AccessibilityObject::isMediaObject const):

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper accessibilityIsWebInteractiveVideo]):
(-[WebAccessibilityObjectWrapper interactiveVideoDescription]):
(-[WebAccessibilityObjectWrapper accessibilityIsMediaPlaying]):
(-[WebAccessibilityObjectWrapper accessibilityIsMediaMuted]):
(-[WebAccessibilityObjectWrapper accessibilityToggleMuteForMedia]):
(-[WebAccessibilityObjectWrapper accessibilityVideoEnterFullscreen]):
(-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]):
(-[WebAccessibilityObjectWrapper stringValueShouldBeUsedInLabel]):
(-[WebAccessibilityObjectWrapper accessibilityLabel]):

LayoutTests:

  • accessibility/ios-simulator/video-elements-ios-expected.txt: Added.
  • accessibility/ios-simulator/video-elements-ios.html: Added.
4:27 PM Changeset in webkit [222886] by don.olmstead@sony.com
  • 2 edits in trunk/Source/WebKit

Include Pasteboard.h for all in WebCoreArgumentCoders
https://bugs.webkit.org/show_bug.cgi?id=177902

Reviewed by Alex Christensen.

  • Shared/WebCoreArgumentCoders.cpp:
3:28 PM Changeset in webkit [222885] by Wenson Hsieh
  • 10 edits
    6 adds in trunk

Add basic support for the version of DataTransferItemList.add that takes a File
https://bugs.webkit.org/show_bug.cgi?id=177853
<rdar://problem/34807346>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Adds very basic support for DataTransferItemList.add(File). So far, a File added in this way can only be read
back from the same DataTransfer, during dragstart or copy. This File isn't written to the platform pasteboard
yet, so even dropping or pasting in the same page will not transfer the File, but this brings us closer to
parity with other browsers. See per-method comments for details.

Tests: editing/pasteboard/data-transfer-item-list-add-file-multiple-times.html

editing/pasteboard/data-transfer-item-list-add-file-on-copy.html
editing/pasteboard/data-transfer-item-list-add-file-on-drag.html

  • dom/DataTransfer.cpp:

(WebCore::DataTransfer::updateFileList):

Recompute the DataTransfer's FileList. This behaves the same way as destroying the FileList altogether and
building it from scratch, but we avoid that approach because the FileList object needs to maintain the same DOM
wrapper after a File-backed item is removed.

(WebCore::DataTransfer::itemListDidAddFile):

Add the newly appended DataTransferItem's File to the DataTransfer's FileList.

(WebCore::DataTransfer::types const):

Return only the "Files" type if there are file-backed items in the DataTransfer's item list.

(WebCore::DataTransfer::updatedFilesForFileList const):
(WebCore::DataTransfer::files const):

  • dom/DataTransfer.h:
  • dom/DataTransferItem.h:

(WebCore::DataTransferItem::file const):

  • dom/DataTransferItemList.cpp:

(WebCore::DataTransferItemList::add):
(WebCore::DataTransferItemList::remove):
(WebCore::DataTransferItemList::clear):

When removing a File, only clear from the DataTransfer's pasteboard if the removed item is not a File (otherwise,
clearing a File that shares the same type as some other item in the pasteboard will erroneously clear that other
item as well). Additionally, call out to the DataTransfer to update the FileList.

  • dom/DataTransferItemList.h:

(WebCore::DataTransferItemList::hasItems const):
(WebCore::DataTransferItemList::items const):

Add helpers for directly accessing an item list's items. items() should be used in conjunction with hasItems().
This route is taken to (1) avoid having to copy the vector of Files, and (2) to avoid generating m_items if it
doesn't already exist.

LayoutTests:

Add tests to verify that Files can be added to and removed from the DataTransferItemList, and also read back via
both the item list and the DataTransfer's FileList when copying and dragging. Additionally, adds a test that adds
and removes the same File to the DataTransferItemList multiple times.

  • TestExpectations:
  • editing/pasteboard/data-transfer-item-list-add-file-multiple-times-expected.txt: Added.
  • editing/pasteboard/data-transfer-item-list-add-file-multiple-times.html: Added.
  • editing/pasteboard/data-transfer-item-list-add-file-on-copy-expected.txt: Added.
  • editing/pasteboard/data-transfer-item-list-add-file-on-copy.html: Added.
  • editing/pasteboard/data-transfer-item-list-add-file-on-drag-expected.txt: Added.
  • editing/pasteboard/data-transfer-item-list-add-file-on-drag.html: Added.
  • platform/ios-simulator-wk1/TestExpectations:
  • platform/mac-wk1/TestExpectations:
3:13 PM Changeset in webkit [222884] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-605.1.9

Tag Safari-605.1.9.

3:07 PM Changeset in webkit [222883] by matthew_hanson@apple.com
  • 6 edits in branches/safari-604-branch

Revert r222779. rdar://problem/34706688

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

Revert r222786. rdar://problem/34706688

2:29 PM Changeset in webkit [222881] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

RenderMultiColumnFlow populate/evacuate should not disable layout state.
https://bugs.webkit.org/show_bug.cgi?id=177894
<rdar://problem/34818696>

Reviewed by Antti Koivisto.

Populate/evacuate methods are not called at layout time.

Covered by existing tests.

  • rendering/RenderMultiColumnFlow.cpp:

(WebCore::RenderMultiColumnFlow::populate):
(WebCore::RenderMultiColumnFlow::evacuateAndDestroy):

2:15 PM Changeset in webkit [222880] by ddkilzer@apple.com
  • 3 edits in trunk/Source/WebKit

Remove unused variables in lambdas for network process cache
<https://webkit.org/b/177878>
<rdar://problem/34038482>

Reviewed by Tim Horton.

  • NetworkProcess/cache/CacheStorageEngine.cpp:

(WebKit::CacheStorage::Engine::open):
(WebKit::CacheStorage::Engine::putRecords):
(WebKit::CacheStorage::Engine::deleteMatchingRecords):

  • NetworkProcess/cache/CacheStorageEngineConnection.cpp:

(WebKit::CacheStorageEngineConnection::reference):

  • Remove unused |this| from lambda captures.
1:55 PM Changeset in webkit [222879] by mitz@apple.com
  • 9 copies
    1 add in releases/Apple/Safari Technology Preview 41

Added a tag for Safari Technology Preview release 41.

1:54 PM Changeset in webkit [222878] by jfbastien@apple.com
  • 10 edits in trunk

WTF: Update std::expected to match current proposal
https://bugs.webkit.org/show_bug.cgi?id=177881

Reviewed by Mark Lam.

Source/JavaScriptCore:

Update API.

  • wasm/WasmB3IRGenerator.cpp:
  • wasm/WasmModule.cpp:

(JSC::Wasm::makeValidationResult):

  • wasm/WasmParser.h:
  • wasm/WasmValidate.cpp:
  • wasm/generateWasmValidateInlinesHeader.py:

(loadMacro):
(storeMacro):

Source/WTF:

The proposal is likely to be in C++20 and I've been asked to help co-champion
it. I'm therefore updating our implementation to more closely match the current
proposal, and to make sure it'll work for us if standardized.

  • Rename UnexpectedType to Unexpected to match the proposal.
  • Remove relational operators, only equality / inequality remains.
  • Fix minor type signatures.
  • Add UnexpectedType typedef.
  • Uncomment rebind implementation.
  • Add in-place construction tag, as well as explicit error construction tag.
  • Add template unexpected constructor.
  • Note that make_unexpected isn't in the proposal anymore, but we keep it because we don't have C++17 deduction guides.
  • Remove hashing, which isn't in the proposal anymore.
  • wtf/Expected.h:

(WTF::Unexpected::Unexpected):
(WTF::Unexpected::value const):
(WTF::operator==):
(WTF::operator!=):
(WTF::makeUnexpected):
(WTF::Expected::Expected):
(WTF::Expected::operator=):
(WTF::Expected::getUnexpected const):

Tools:

The proposal is likely to be in C++20 and I've been asked to help co-champion
it. I'm therefore updating our implementation to more closely match the current
proposal, and to make sure it'll work for us if standardized.

  • Rename UnexpectedType to Unexpected to match the proposal.
  • Remove relational operators, only equality / inequality remains.
  • Fix minor type signatures.
  • Add UnexpectedType typedef.
  • Uncomment rebind implementation.
  • Add in-place construction tag, as well as explicit error construction tag.
  • Add template unexpected constructor.
  • Note that make_unexpected isn't in the proposal anymore, but we keep it because we don't have C++17 deduction guides.
  • Remove hashing, which isn't in the proposal anymore.
  • TestWebKitAPI/Tests/WTF/Expected.cpp:

(WTF::operator<<):
(TestWebKitAPI::TEST):

1:51 PM Changeset in webkit [222877] by Ryan Haddad
  • 2 edits in trunk/JSTests

Remove failure expectation for async-func-decl-dstr-obj-id-put-unresolvable-no-strict.js.

Unreviewed test gardening.

  • test262.yaml:
1:46 PM Changeset in webkit [222876] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[WinCairo] add PLATFORM(WIN) configurations to config.h
https://bugs.webkit.org/show_bug.cgi?id=177846

Patch by Stephan Szabo <stephan.szabo@sony.com> on 2017-10-04
Reviewed by Alex Christensen.

  • config.h:
1:27 PM Changeset in webkit [222875] by Lucas Forschler
  • 1 edit
    2 adds in trunk/Tools

https://bugs.webkit.org/show_bug.cgi?id=177888
WebKitArchiveSupport - add API Gateway to source control
This is a swagger configuration export via AWS API Gateway console.

Rubber-stamped by Alexey Proskuryakov.

  • WebKitArchiveSupport/AWS-APIGateway: Added.
  • WebKitArchiveSupport/AWS-APIGateway/stage-v2.json: Added.
1:23 PM Changeset in webkit [222874] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

RenderMultiColumnFlow::m_beingEvacuated is redundant.
https://bugs.webkit.org/show_bug.cgi?id=177886
<rdar://problem/34815997>

Reviewed by Simon Fraser.

m_beingEvacuated was introduced to protect RenderMultiColumnFlow from triggering
remove/insert code while the column is being destroyed and the descendants are getting reparented.
However,

  1. the setMultiColumnFlow(nullptr) call already protects from triggering the remove callback
  2. When adding the children back to their original position, we should not be able to find

this column as the enclosing block anymore (simply because we are moving the children as siblings
to the multicol renderer)

Covered by existing tests.

  • rendering/RenderMultiColumnFlow.cpp:

(WebCore::RenderMultiColumnFlow::RenderMultiColumnFlow):
(WebCore::RenderMultiColumnFlow::evacuateAndDestroy):
(WebCore::RenderMultiColumnFlow::fragmentedFlowDescendantInserted):
(WebCore::RenderMultiColumnFlow::fragmentedFlowRelativeWillBeRemoved):

  • rendering/RenderMultiColumnFlow.h:
1:20 PM Changeset in webkit [222873] by jfbastien@apple.com
  • 7 edits in trunk/Source/JavaScriptCore

WebAssembly: address no VM / JS follow-ups
https://bugs.webkit.org/show_bug.cgi?id=177887

Reviewed by Saam Barati.

All minor fixes, no functional changes.

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::B3IRGenerator):
(JSC::Wasm::B3IRGenerator::restoreWebAssemblyGlobalState):
(JSC::Wasm::B3IRGenerator::addCurrentMemory):
(JSC::Wasm::B3IRGenerator::addCall):
(JSC::Wasm::B3IRGenerator::addCallIndirect):

  • wasm/WasmContext.cpp:

(JSC::Wasm::Context::store):

  • wasm/WasmMemoryMode.h:
  • wasm/WasmTable.h:
  • wasm/js/JSWebAssemblyInstance.cpp:

(JSC::JSWebAssemblyInstance::JSWebAssemblyInstance):

  • wasm/js/JSWebAssemblyTable.cpp:

(JSC::JSWebAssemblyTable::JSWebAssemblyTable):
(JSC::JSWebAssemblyTable::grow):

1:12 PM Changeset in webkit [222872] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark http/wpt/cache-storage/cache-quota.any.html as flaky on Windows.
https://bugs.webkit.org/show_bug.cgi?id=177891

Unreviewed test gardening.

  • platform/win/TestExpectations:
1:00 PM Changeset in webkit [222871] by mark.lam@apple.com
  • 28 edits
    1 add in trunk

Add support for using Probe DFG OSR Exit behind a runtime flag.
https://bugs.webkit.org/show_bug.cgi?id=177844
<rdar://problem/34801425>

Reviewed by Saam Barati.

Source/JavaScriptCore:

This is based on the code originally posted in https://bugs.webkit.org/show_bug.cgi?id=175144
(in r221774 and r221832) with some optimizations and bug fixes added. The probe
based DFG OSR Exit is only enabled if Options::useProbeOSRExit() is true. We're
landing this behind an option switch to make it easier to tune performance using
the probe based OSR exit.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/MacroAssembler.cpp:

(JSC::stdFunctionCallback):

  • assembler/MacroAssemblerPrinter.cpp:

(JSC::Printer::printCallback):

  • assembler/ProbeContext.cpp:

(JSC::Probe::executeProbe):
(JSC::Probe::flushDirtyStackPages):

  • assembler/ProbeContext.h:

(JSC::Probe::Context::Context):
(JSC::Probe::Context::arg):

  • assembler/ProbeFrame.h: Added.

(JSC::Probe::Frame::Frame):
(JSC::Probe::Frame::argument):
(JSC::Probe::Frame::operand):
(JSC::Probe::Frame::setArgument):
(JSC::Probe::Frame::setOperand):
(JSC::Probe::Frame::get):
(JSC::Probe::Frame::set):

  • assembler/ProbeStack.cpp:

(JSC::Probe::Page::lowWatermarkFromVisitingDirtyChunks):
(JSC::Probe::Stack::Stack):
(JSC::Probe::Stack::lowWatermarkFromVisitingDirtyPages):

  • assembler/ProbeStack.h:

(JSC::Probe::Stack::Stack):
(JSC::Probe::Stack::lowWatermark):
(JSC::Probe::Stack::set):
(JSC::Probe::Stack::savedStackPointer const):
(JSC::Probe::Stack::setSavedStackPointer):
(JSC::Probe::Stack::newStackPointer const): Deleted.
(JSC::Probe::Stack::setNewStackPointer): Deleted.

  • bytecode/ArrayProfile.h:

(JSC::ArrayProfile::observeArrayMode):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::updateOSRExitCounterAndCheckIfNeedToReoptimize):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::addressOfOSRExitCounter): Deleted.

  • bytecode/ExecutionCounter.h:

(JSC::ExecutionCounter::hasCrossedThreshold const):
(JSC::ExecutionCounter::setNewThresholdForOSRExit):

  • bytecode/MethodOfGettingAValueProfile.cpp:

(JSC::MethodOfGettingAValueProfile::reportValue):

  • bytecode/MethodOfGettingAValueProfile.h:
  • dfg/DFGDriver.cpp:

(JSC::DFG::compileImpl):

  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::linkOSRExits):
(JSC::DFG::JITCompiler::link):

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::jsValueFor):
(JSC::DFG::restoreCalleeSavesFor):
(JSC::DFG::saveCalleeSavesFor):
(JSC::DFG::restoreCalleeSavesFromVMEntryFrameCalleeSavesBuffer):
(JSC::DFG::copyCalleeSavesToVMEntryFrameCalleeSavesBuffer):
(JSC::DFG::saveOrCopyCalleeSavesFor):
(JSC::DFG::createDirectArgumentsDuringExit):
(JSC::DFG::createClonedArgumentsDuringExit):
(JSC::DFG::emitRestoreArguments):
(JSC::DFG::OSRExit::executeOSRExit):
(JSC::DFG::reifyInlinedCallFrames):
(JSC::DFG::adjustAndJumpToTarget):
(JSC::DFG::printOSRExit):

  • dfg/DFGOSRExit.h:

(JSC::DFG::OSRExitState::OSRExitState):

  • dfg/DFGThunks.cpp:

(JSC::DFG::osrExitThunkGenerator):

  • dfg/DFGThunks.h:
  • dfg/DFGVariableEventStream.cpp:

(JSC::DFG::tryToSetConstantRecovery):
(JSC::DFG::VariableEventStream::reconstruct const):
(JSC::DFG::VariableEventStream::tryToSetConstantRecovery const): Deleted.

  • dfg/DFGVariableEventStream.h:
  • profiler/ProfilerOSRExit.h:

(JSC::Profiler::OSRExit::incCount):

  • runtime/JSCJSValue.h:
  • runtime/JSCJSValueInlines.h:
  • runtime/Options.h:

Tools:

Enable --useProbeOSrExit=true for dfg-eager and ftl-no-cjit-validate-sampling-profiler
test configurations.

  • Scripts/run-jsc-stress-tests:
12:47 PM Changeset in webkit [222870] by Ryan Haddad
  • 6 edits in trunk

Unreviewed, rolling out r222840.

This change breaks internal builds.

Reverted changeset:

"Generate a compile error if release is built without compiler
optimizations"
https://bugs.webkit.org/show_bug.cgi?id=177665
http://trac.webkit.org/changeset/222840

12:31 PM Changeset in webkit [222869] by commit-queue@webkit.org
  • 13 edits
    3 deletes in trunk

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

Significantly increased the WebKit build time (Requested by
rniwa on #webkit).

Reverted changeset:

"Build libwebrtc unit tests executables"
https://bugs.webkit.org/show_bug.cgi?id=177211
http://trac.webkit.org/changeset/222775

12:17 PM Changeset in webkit [222868] by Joseph Pecoraro
  • 19 edits
    1 copy
    1 add in trunk/Source/WebInspectorUI

Web Inspector: Detail Views for resources in Network Tab
https://bugs.webkit.org/show_bug.cgi?id=177553

Reviewed by Devin Rousso.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Main.html:

New strings and resources.

  • UserInterface/Base/Main.js:

(WI._focusedContentBrowser):
Detect nested content browsers instead of only top level tab content browsers.

  • UserInterface/Base/Setting.js:

Add a new global setting for which Network Detail view is preferred.

  • UserInterface/Views/ContentBrowser.css:

(.content-browser > .navigation-bar .item):
(.content-browser > .navigation-bar > .item): Deleted.
Generalize a navigation item style so it works on items nested inside a group.

  • UserInterface/Views/ContentBrowser.js:

(WI.ContentBrowser.prototype._updateContentViewSelectionPathNavigationItem):
(WI.ContentBrowser.prototype._updateContentViewNavigationItems):
(WI.ContentBrowser.prototype._removeAllNavigationItems):
Give ContentBrowser a way to group all ContentView specific navigation items
inside a GroupNavigationItem. This lets the client decide what to do with
those navigation items, instead of default behavior in the navigation bar.

  • UserInterface/Views/ContentViewContainer.js:

(WI.ContentViewContainer.prototype.showContentView):
Avoid a flash when showContentView is called with the current content view.

  • UserInterface/Views/FlexibleSpaceNavigationItem.css:

(:matches(.navigation-bar, .toolbar) .item.flexible-space.align-start > .item):
(:matches(.navigation-bar, .toolbar) .item.flexible-space.align-end > .item):
When containing a navigation item decide where you want the items to align to.

  • UserInterface/Views/FlexibleSpaceNavigationItem.js:

(WI.FlexibleSpaceNavigationItem):
(WI.FlexibleSpaceNavigationItem.prototype.updateLayout):
Provide an option to embed a NavigationItem within a FlexibleSpace. Its behavior right
now is rather simple. If the embedded Item fits in the current available space it is
shown. If it doesn't fit, it is hidden and we have just a flexible space. This is used
in the network detail view's navigation bar to keep the main navigation items centered
while allowing for buttons to show up on the side without affecting the centering.

  • UserInterface/Views/NavigationBar.js:

(WI.NavigationBar):
(WI.NavigationBar.prototype._mouseDown):
(WI.NavigationBar.prototype._mouseUp):
Simplify event registration. This would also help avoid cases where we
might have registered multiple mousedown handlers.

  • UserInterface/Views/GroupNavigationItem.js:

(WI.GroupNavigationItem):
(WI.GroupNavigationItem.prototype.get navigationItems):
(WI.GroupNavigationItem.prototype.set navigationItems):
(WI.GroupNavigationItem.prototype.get width):
(WI.GroupNavigationItem.prototype.get minimumWidth):
(WI.GroupNavigationItem.prototype._updateItems):

  • UserInterface/Views/HierarchicalPathNavigationItem.js:

(WI.HierarchicalPathNavigationItem):
(WI.HierarchicalPathNavigationItem.prototype.set components):
(WI.HierarchicalPathNavigationItem.prototype.updateLayout):
(WI.HierarchicalPathNavigationItem.prototype._updateComponentsIfNeeded):
Defer DOM modifications until layout for NavigationItems container classes
that change items/components dynamically. This reduces UI flashing in the
bar when items/components change by coalescing all DOM updates at the same
time; when the NavigationBar does its next layout.

  • UserInterface/Views/NetworkResourceDetailView.css:

(.network-resource-detail):
(.network-resource-detail .navigation-bar):
(.network-resource-detail .item.close > .glyph):
(.network-resource-detail .item.close > .glyph:hover):
(.network-resource-detail .item.close > .glyph:active):
(.network .network-resource-detail .navigation-bar .item.radio.button.text-only):
(.network .network-resource-detail .navigation-bar .item.radio.button.text-only.selected):
(.network-resource-detail > .content-browser):
Styles for the detail view's navigation bar.

  • UserInterface/Views/NetworkResourceDetailView.js: Added.

(WI.NetworkResourceDetailView):
(WI.NetworkResourceDetailView.prototype.get resource):
(WI.NetworkResourceDetailView.prototype.shown):
(WI.NetworkResourceDetailView.prototype.hidden):
(WI.NetworkResourceDetailView.prototype.dispose):
(WI.NetworkResourceDetailView.prototype.initialLayout):
(WI.NetworkResourceDetailView.prototype._showPreferredContentView):
(WI.NetworkResourceDetailView.prototype._showContentViewForNavigationItem):
(WI.NetworkResourceDetailView.prototype._navigationItemSelected):
(WI.NetworkResourceDetailView.prototype._handleCloseButton):
ContentBrowser with customized navigation bar. This container has a fixed
list of ContentViews all relating to the Resource. The detail view has
a single delegate method for its close button. Since it maintains a
ContentBrowser it needs to expose shown/hidden/dispose logic to ensure
proper ContentView lifecycle events.

  • UserInterface/Views/NetworkTableContentView.css:

(.showing-detail .table .cell:not(.name)):
(.showing-detail .table .resizer:not(:first-of-type)):

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.shown):
(WI.NetworkTableContentView.prototype.hidden):
(WI.NetworkTableContentView.prototype.closed):
(WI.NetworkTableContentView.prototype.reset):
(WI.NetworkTableContentView.prototype.networkResourceDetailViewClose):
(WI.NetworkTableContentView.prototype.tableSortChanged):
(WI.NetworkTableContentView.prototype.tableCellClicked):
(WI.NetworkTableContentView.prototype.tableSelectedRowChanged):
(WI.NetworkTableContentView.prototype.layout):
(WI.NetworkTableContentView.prototype._hideResourceDetailView):
(WI.NetworkTableContentView.prototype._showResourceDetailView):
(WI.NetworkTableContentView.prototype._positionDetailView):
(WI.NetworkTableContentView.prototype._updateFilteredEntries):
(WI.NetworkTableContentView.prototype._typeFilterScopeBarSelectionChanged):
(WI.NetworkTableContentView.prototype._restoreSelectedRow):
(WI.NetworkTableContentView.prototype._tableNameColumnDidChangeWidth):
Behavior for selecting a row and showing / hiding the detail view.
The detail view is positioned beside the Network Table's "name" column
and resizes when that column resizes.

  • UserInterface/Views/Resizer.css:

(.resizer):

  • UserInterface/Views/Table.css:

(.table > .resizers):

  • UserInterface/Views/Table.js:

(WI.Table):
(WI.Table.prototype.get scrollContainer):
(WI.Table.prototype._positionResizerElements):
To let clients customize the table a bit, put resizers into their own
container and expose the scroll container.

  • UserInterface/Views/Variables.css:

(:root):
Add a new button hover color, slightly lighter than the existing button active color.

11:59 AM Changeset in webkit [222867] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Fix typo.

Unreviewed.

  • rendering/RenderView.cpp:

(WebCore::RenderView::willBeDestroyed):

11:56 AM Changeset in webkit [222866] by sbarati@apple.com
  • 4 edits in trunk/JSTests

3 poly-proto JSC tests timing out on debug after r222827
https://bugs.webkit.org/show_bug.cgi?id=177880

Rubber stamped by Mark Lam.

  • microbenchmarks/poly-proto-access.js:
  • typeProfiler/deltablue-for-of.js:
  • typeProfiler/getter-richards.js:
11:55 AM Changeset in webkit [222865] by Joseph Pecoraro
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Fix Beacon and Ping folderization issues
https://bugs.webkit.org/show_bug.cgi?id=177885

Reviewed by Matt Baker.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView.shortDisplayNameForResourceType):
Use common capitalized UIString "Ping". It gets lowercased later.

  • UserInterface/Models/ResourceCollection.js:

Add missing verifier.

11:55 AM Changeset in webkit [222864] by dbates@webkit.org
  • 3 edits in trunk/Source/WebCore

Teach TextDecorationPainter about pseudo styles
https://bugs.webkit.org/show_bug.cgi?id=177882

Reviewed by Simon Fraser.

As a step towards implementing support for CSS pseudo elements ::spelling-error and ::grammar-error
(https://bugs.webkit.org/show_bug.cgi?id=175784) teach TextDecorationPainter about pseudo styles.

  • rendering/TextDecorationPainter.cpp:

(WebCore::TextDecorationPainter::TextDecorationPainter): Modified to take an optional
pseudo style (defaults to NOPSEUDO - no pseudo style).
(WebCore::collectStylesForRenderer): Modified to take a pseudo style. Note that getCachedPseudoStyle()
is only defined on RenderText and RenderElement objects (i.e. it is not a virtual function on RenderObject).
So, we must explicitly type check the renderer and cast appropriately before calling it. We may want
to consider making it virtual in the future if we find there are more call sites that would benefit
from polymorphism.
(WebCore::TextDecorationPainter::stylesForRenderer): Modified to take an optional
pseudo style (defaults to NOPSEUDO - no pseudo style).

  • rendering/TextDecorationPainter.h:
11:52 AM Changeset in webkit [222863] by Antti Koivisto
  • 3 edits in trunk/Source/WebCore

Add assert verifying all renderers get destroyed
https://bugs.webkit.org/show_bug.cgi?id=177870

Reviewed by Zalan Bujtas.

  • rendering/RenderView.cpp:

(WebCore::RenderView::willBeDestroyed):

Add assert to verify all renderers for this tree have been destroyed before the RenderView is.

  • rendering/RenderView.h:
11:37 AM Changeset in webkit [222862] by dbates@webkit.org
  • 3 edits in trunk/Source/WebCore

TextDecorationPainter::m_wavyOffset should be a float
https://bugs.webkit.org/show_bug.cgi?id=177883

Reviewed by Simon Fraser.

In r194447 we extracted the text decoration painting code from InlineTextBox into
TextDecorationPainter and changed the data type of the wavy offset from float to int.
We use floating point numbers throughout the painting code and should store the wavy
offset as a float.

  • rendering/TextDecorationPainter.cpp:

(WebCore::TextDecorationPainter::TextDecorationPainter): Use C++ uniform initializer
syntax to initialize member fields.
(WebCore::TextDecorationPainter::paintTextDecoration): Change int to float.

  • rendering/TextDecorationPainter.h: Remove unnecessary equal initializer for m_wavyOffset

as this class has exactly one constructor and it always initializes it.

11:32 AM Changeset in webkit [222861] by Matt Baker
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Remove unused representedObject parameter from GeneralTreeElementPathComponent constructor
https://bugs.webkit.org/show_bug.cgi?id=177561

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/GeneralTreeElementPathComponent.js:

(WI.GeneralTreeElementPathComponent):
(WI.GeneralTreeElementPathComponent.prototype.get generalTreeElement):
(WI.GeneralTreeElementPathComponent.prototype.get previousSibling):
(WI.GeneralTreeElementPathComponent.prototype.get nextSibling):

11:30 AM Changeset in webkit [222860] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: After enabling the new Network Tab in experimental settings, the network tab disappears
https://bugs.webkit.org/show_bug.cgi?id=177774
<rdar://problem/34771647>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-10-04
Reviewed by Devin Rousso.

  • UserInterface/Views/SettingsTabContentView.js:

When enabling the new network tab, ensure it gets added to the list of open tabs.
Place it where the old network tab was so the UI is as consistent as possible.

10:57 AM Changeset in webkit [222859] by Joseph Pecoraro
  • 2 edits in trunk/JSTests

Unreviewed, marking tco-catch.js as a failure after test262 update
https://bugs.webkit.org/show_bug.cgi?id=177859

  • test262.yaml:
10:50 AM Changeset in webkit [222858] by commit-queue@webkit.org
  • 17 edits
    16 deletes in trunk

Remove OpenWebRTC backend
https://bugs.webkit.org/show_bug.cgi?id=177868

Patch by Youenn Fablet <youenn@apple.com> on 2017-10-04
Reviewed by Alejandro G. Castro.

Source/WebCore:

  • CMakeLists.txt:
  • DerivedSources.make:
  • Modules/mediastream/MediaEndpointPeerConnection.cpp: Removed.
  • Modules/mediastream/MediaEndpointPeerConnection.h: Removed.
  • Modules/mediastream/MediaEndpointSessionDescription.cpp: Removed.
  • Modules/mediastream/MediaEndpointSessionDescription.h: Removed.
  • Modules/mediastream/SDPProcessor.cpp: Removed.
  • Modules/mediastream/SDPProcessor.h: Removed.
  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/GStreamer.cmake:
  • platform/graphics/MediaPlayer.cpp:

(WebCore::buildMediaEnginesVector):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::supportsType):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp: Removed.
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.h: Removed.
  • platform/mediastream/MediaEndpoint.cpp: Removed.
  • platform/mediastream/MediaEndpoint.h: Removed.
  • platform/mediastream/MediaEndpointSessionConfiguration.h: Removed.
  • platform/mediastream/SDPProcessorScriptResource.cpp: Removed.
  • platform/mediastream/SDPProcessorScriptResource.h: Removed.
  • platform/mediastream/openwebrtc/MediaEndpointOwr.cpp: Removed.
  • platform/mediastream/openwebrtc/MediaEndpointOwr.h: Removed.
  • platform/mediastream/openwebrtc/OpenWebRTCUtilities.cpp: Removed.
  • platform/mediastream/openwebrtc/OpenWebRTCUtilities.h: Removed.
  • platform/mediastream/openwebrtc/RealtimeAudioSourceOwr.h: Removed.
  • platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.cpp: Removed.
  • platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.h: Removed.
  • platform/mediastream/openwebrtc/RealtimeMediaSourceOwr.cpp: Removed.
  • platform/mediastream/openwebrtc/RealtimeMediaSourceOwr.h: Removed.
  • platform/mediastream/openwebrtc/RealtimeVideoSourceOwr.h: Removed.
  • platform/mock/MockMediaEndpoint.cpp: Removed.
  • platform/mock/MockMediaEndpoint.h: Removed.
  • platform/mock/MockRealtimeMediaSource.cpp:

(WebCore::MockRealtimeMediaSource::MockRealtimeMediaSource):

  • platform/mock/MockRealtimeMediaSource.h:
  • testing/Internals.cpp:

(WebCore::Internals::Internals):
(WebCore::Internals::enableMockMediaEndpoint): Deleted.

  • testing/Internals.h:

LayoutTests:

  • platform/gtk/TestExpectations:
10:48 AM Changeset in webkit [222857] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

Remove RenderTreeInternalMutationScope
https://bugs.webkit.org/show_bug.cgi?id=177875
<rdar://problem/34813088>

Reviewed by Antti Koivisto.

RenderTree mutation is in the past now. -and we've got assertions in place.

Not testable.

  • page/FrameView.cpp:

(WebCore::FrameView::layout):

  • rendering/RenderMultiColumnFlow.cpp:

(WebCore::RenderMultiColumnFlow::populate):
(WebCore::RenderMultiColumnFlow::evacuateAndDestroy):

  • rendering/RenderQuote.cpp:

(WebCore::RenderQuote::updateTextRenderer):
(WebCore::RenderQuote::updateRenderer):

  • rendering/RenderView.h:

(WebCore::RenderTreeInternalMutationScope::RenderTreeInternalMutationScope): Deleted.
(WebCore::RenderTreeInternalMutationScope::~RenderTreeInternalMutationScope): Deleted.

10:34 AM Changeset in webkit [222856] by Jonathan Bedard
  • 2 edits in trunk/Tools

webkitpy.tool.steps.steps_unittest.StepsTest.test_runtests_api is flakey
https://bugs.webkit.org/show_bug.cgi?id=177751
<rdar://problem/34769470>

Reviewed by Daniel Bates.

Port._build_path() calls Tools/Scripts/webkit-build-directory and caches this
result. When capturing output from the MockExecutive, the first invocation of
Port._build_path() will log the running of Tools/Scripts/webkit-build-directory
but subsequent invocations will not.

  • Scripts/webkitpy/tool/steps/steps_unittest.py:

(StepsTest):
(StepsTest.setUp): Cache the build path before running tests.

10:33 AM Changeset in webkit [222855] by Adrian Perez de Castro
  • 5 edits in trunk/Source/WebKit

[GTK] WebKit2GTK+ does not handle touchmove and touchend events correctly
https://bugs.webkit.org/show_bug.cgi?id=158531

Reviewed by Carlos Alberto Lopez Perez.

Do not bypass WebCore event handling when receiving touch events.

Based on a patch by Andre Moreira Magalhaes <Andre Moreira Magalhaes>.
Thanks to Carlos Garnacho <carlosg@gnome.org> for helping out reviewing the code.

  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::doneWithTouchEvent): Make sure touchend reaches gesture controller if touchbegin evet got to it.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseTouchEvent): Do not invoke gesture controller directly by bypassing WebCore event handling.

  • UIProcess/gtk/GestureController.cpp:

(WebKit::GestureController::reset): Added.
(WebKit::GestureController::handleEvent): Reset gesture controller when touchpadupdate/end is received without touchbegin.
(WebKit::GestureController::Gesture::reset): Added.

  • UIProcess/gtk/GestureController.h:
10:14 AM Changeset in webkit [222854] by Carlos Garcia Campos
  • 2 edits in trunk/LayoutTests

Unreviewed GTK+ gardening. Remove tests from expectations passing since freetype upgrade in r221670.

  • platform/gtk/TestExpectations:
10:04 AM Changeset in webkit [222853] by Yusuke Suzuki
  • 2 edits in trunk/JSTests

Unreviewed, marking one async iterator test262 test failed
https://bugs.webkit.org/show_bug.cgi?id=177859

  • test262.yaml:
9:56 AM Changeset in webkit [222852] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Rebaseline fast/xmlhttprequest/set-dangerous-headers.html and http/tests/xmlhttprequest/set-dangerous-headers.html
https://bugs.webkit.org/show_bug.cgi?id=177829

Unreviewed test gardening.

  • fast/xmlhttprequest/set-dangerous-headers-expected.txt:
  • http/tests/xmlhttprequest/set-dangerous-headers-expected.txt:
9:54 AM October 2017 Meeting edited by Simon Fraser
(diff)
9:54 AM Changeset in webkit [222851] by clopez@igalia.com
  • 3 edits in trunk/Tools

[JHBuild][GTK][WKE] Circular dependency between harfbuzz and freetype6
https://bugs.webkit.org/show_bug.cgi?id=177865

Reviewed by Michael Catanzaro.

Build freetype6 without harfbuzz support.
This seems to be what distros like Fedora, Debian or OpenEmbedded do.
Also explicitly enable support for freetype and fontconfig on harfbuzz.

  • gtk/jhbuild.modules: Enable also support for icu.
  • wpe/jhbuild.modules:
8:18 AM Changeset in webkit [222850] by magomez@igalia.com
  • 2 edits in trunk/Source/WebCore

Unreviewed: fix GTK debug build after r222841.

  • platform/image-decoders/webp/WEBPImageDecoder.cpp:

(WebCore::WEBPImageDecoder::initFrameBuffer):

8:10 AM Changeset in webkit [222849] by zandobersek@gmail.com
  • 2 edits in trunk/LayoutTests

Unreviewed WPE gardening.

  • platform/wpe/TestExpectations: Unskip tests under http/wpt/. Manage

expectations for failures that are currently present.

7:42 AM Changeset in webkit [222848] by Yusuke Suzuki
  • 195 edits
    1 move
    33 adds in trunk

[Test262] Update Test262 to Oct 4 version
https://bugs.webkit.org/show_bug.cgi?id=177859

Reviewed by Sam Weinig.

JSTests:

Let's rebaseline test262. Since it includes the latest changes to ArrayIterator::next,
we no longer need to mark it skip/fail. Also this update includes bunch of BigInt tests.

  • test262.yaml:
  • test262/harness/promiseHelper.js: Renamed from JSTests/test262/harness/PromiseHelper.js.

(checkSequence):

  • test262/harness/typeCoercion.js:

(testCoercibleToIndexZero):
(testCoercibleToIndexOne):
(testCoercibleToIndexFromIndex):
(testNotCoercibleToIndex.testPrimitiveValue):
(testNotCoercibleToInteger):
(testCoercibleToBigIntZero.testPrimitiveValue):
(testCoercibleToBigIntZero):
(testCoercibleToBigIntOne.testPrimitiveValue):
(testCoercibleToBigIntOne):
(testPrimitiveValue):
(testCoercibleToBigIntFromBigInt):
(testNotCoercibleToBigInt.testPrimitiveValue):
(testNotCoercibleToBigInt.testStringValue):
(testNotCoercibleToBigInt):

  • test262/test/built-ins/Array/from/proto-from-ctor-realm.js:
  • test262/test/built-ins/Array/length/define-own-prop-length-overflow-realm.js:
  • test262/test/built-ins/Array/of/proto-from-ctor-realm.js:
  • test262/test/built-ins/Array/proto-from-ctor-realm.js:
  • test262/test/built-ins/Array/prototype/concat/create-proto-from-ctor-realm-array.js:
  • test262/test/built-ins/Array/prototype/concat/create-proto-from-ctor-realm-non-array.js:
  • test262/test/built-ins/Array/prototype/filter/create-proto-from-ctor-realm-array.js:
  • test262/test/built-ins/Array/prototype/filter/create-proto-from-ctor-realm-non-array.js:
  • test262/test/built-ins/Array/prototype/map/create-proto-from-ctor-realm-array.js:
  • test262/test/built-ins/Array/prototype/map/create-proto-from-ctor-realm-non-array.js:
  • test262/test/built-ins/Array/prototype/slice/create-proto-from-ctor-realm-array.js:
  • test262/test/built-ins/Array/prototype/slice/create-proto-from-ctor-realm-non-array.js:
  • test262/test/built-ins/Array/prototype/splice/create-proto-from-ctor-realm-array.js:
  • test262/test/built-ins/Array/prototype/splice/create-proto-from-ctor-realm-non-array.js:
  • test262/test/built-ins/ArrayBuffer/proto-from-ctor-realm.js:
  • test262/test/built-ins/BigInt/asIntN/bigint-tobigint.js:

(testCoercibleToBigIntZero):
(testCoercibleToBigIntOne):
(testNotCoercibleToBigInt):
(MyError): Deleted.
(valueOf): Deleted.
(toString): Deleted.
(Symbol.toPrimitive): Deleted.

  • test262/test/built-ins/BigInt/asIntN/bits-toindex.js:

(testCoercibleToIndexZero):
(testCoercibleToIndexOne):
(testNotCoercibleToIndex):
(MyError): Deleted.
(assert.sameValue.BigInt.asIntN.valueOf): Deleted.
(assert.sameValue.BigInt.asIntN.toString): Deleted.
(BigInt.asIntN.Symbol.toPrimitive): Deleted.
(BigInt.asIntN.valueOf): Deleted.
(BigInt.asIntN.toString): Deleted.

  • test262/test/built-ins/BigInt/asUintN/arithmetic.js: Added.
  • test262/test/built-ins/BigInt/asUintN/asUintN.js: Added.
  • test262/test/built-ins/BigInt/asUintN/bigint-tobigint.js: Added.

(testCoercibleToBigIntZero):
(testCoercibleToBigIntOne):
(testNotCoercibleToBigInt):

  • test262/test/built-ins/BigInt/asUintN/bits-toindex.js: Added.

(testCoercibleToIndexZero):
(testCoercibleToIndexOne):
(testNotCoercibleToIndex):

  • test262/test/built-ins/BigInt/asUintN/length.js: Added.
  • test262/test/built-ins/BigInt/asUintN/name.js: Added.
  • test262/test/built-ins/BigInt/asUintN/order-of-steps.js: Added.

(bits.valueOf):
(bigint.valueOf):

  • test262/test/built-ins/BigInt/prototype/valueOf/length.js: Added.
  • test262/test/built-ins/BigInt/prototype/valueOf/name.js: Added.
  • test262/test/built-ins/BigInt/prototype/valueOf/prop-desc.js: Added.
  • test262/test/built-ins/BigInt/prototype/valueOf/return.js: Added.
  • test262/test/built-ins/BigInt/prototype/valueOf/this-value-invalid-object-throws.js: Added.
  • test262/test/built-ins/BigInt/prototype/valueOf/this-value-invalid-primitive-throws.js: Added.
  • test262/test/built-ins/Boolean/proto-from-ctor-realm.js:
  • test262/test/built-ins/DataView/proto-from-ctor-realm-sab.js:
  • test262/test/built-ins/DataView/proto-from-ctor-realm.js:
  • test262/test/built-ins/Date/proto-from-ctor-realm-one.js:
  • test262/test/built-ins/Date/proto-from-ctor-realm-two.js:
  • test262/test/built-ins/Date/proto-from-ctor-realm-zero.js:
  • test262/test/built-ins/Error/proto-from-ctor-realm.js:
  • test262/test/built-ins/Function/call-bind-this-realm-undef.js:
  • test262/test/built-ins/Function/call-bind-this-realm-value.js:
  • test262/test/built-ins/Function/internals/Call/class-ctor-realm.js:
  • test262/test/built-ins/Function/internals/Construct/base-ctor-revoked-proxy-realm.js:
  • test262/test/built-ins/Function/internals/Construct/derived-return-val-realm.js:
  • test262/test/built-ins/Function/internals/Construct/derived-this-uninitialized-realm.js:
  • test262/test/built-ins/Function/proto-from-ctor-realm.js:
  • test262/test/built-ins/Function/prototype/bind/get-fn-realm.js:
  • test262/test/built-ins/Function/prototype/bind/proto-from-ctor-realm.js:
  • test262/test/built-ins/GeneratorFunction/proto-from-ctor-realm.js:
  • test262/test/built-ins/JSON/stringify/bigint-order.js: Added.

(replacer):
(BigInt.prototype.toJSON):

  • test262/test/built-ins/JSON/stringify/bigint-replacer.js: Added.

(replacer):

  • test262/test/built-ins/JSON/stringify/bigint-tojson.js: Added.

(BigInt.prototype.toJSON):

  • test262/test/built-ins/JSON/stringify/bigint.js:
  • test262/test/built-ins/Map/proto-from-ctor-realm.js:
  • test262/test/built-ins/Number/S9.3.1_A2_U180E.js:
  • test262/test/built-ins/Number/S9.3.1_A3_T1_U180E.js:
  • test262/test/built-ins/Number/S9.3.1_A3_T2_U180E.js:
  • test262/test/built-ins/Number/proto-from-ctor-realm.js:
  • test262/test/built-ins/Object/proto-from-ctor.js:
  • test262/test/built-ins/Promise/proto-from-ctor-realm.js:
  • test262/test/built-ins/Proxy/apply/arguments-realm.js:
  • test262/test/built-ins/Proxy/apply/trap-is-not-callable-realm.js:
  • test262/test/built-ins/Proxy/construct/arguments-realm.js:
  • test262/test/built-ins/Proxy/construct/trap-is-not-callable-realm.js:
  • test262/test/built-ins/Proxy/construct/trap-is-undefined-proto-from-ctor-realm.js:
  • test262/test/built-ins/Proxy/defineProperty/desc-realm.js:
  • test262/test/built-ins/Proxy/defineProperty/null-handler-realm.js:
  • test262/test/built-ins/Proxy/defineProperty/targetdesc-configurable-desc-not-configurable-realm.js:
  • test262/test/built-ins/Proxy/defineProperty/targetdesc-not-compatible-descriptor-not-configurable-target-realm.js:
  • test262/test/built-ins/Proxy/defineProperty/targetdesc-not-compatible-descriptor-realm.js:
  • test262/test/built-ins/Proxy/defineProperty/targetdesc-undefined-not-configurable-descriptor-realm.js:
  • test262/test/built-ins/Proxy/defineProperty/targetdesc-undefined-target-is-not-extensible-realm.js:
  • test262/test/built-ins/Proxy/defineProperty/trap-is-not-callable-realm.js:
  • test262/test/built-ins/Proxy/deleteProperty/trap-is-not-callable-realm.js:
  • test262/test/built-ins/Proxy/get-fn-realm.js:
  • test262/test/built-ins/Proxy/get/trap-is-not-callable-realm.js:
  • test262/test/built-ins/Proxy/getOwnPropertyDescriptor/result-type-is-not-object-nor-undefined-realm.js:
  • test262/test/built-ins/Proxy/getOwnPropertyDescriptor/trap-is-not-callable-realm.js:
  • test262/test/built-ins/Proxy/getPrototypeOf/trap-is-not-callable-realm.js:
  • test262/test/built-ins/Proxy/has/trap-is-not-callable-realm.js:
  • test262/test/built-ins/Proxy/isExtensible/trap-is-not-callable-realm.js:
  • test262/test/built-ins/Proxy/ownKeys/return-not-list-object-throws-realm.js:
  • test262/test/built-ins/Proxy/ownKeys/trap-is-not-callable-realm.js:
  • test262/test/built-ins/Proxy/preventExtensions/trap-is-not-callable-realm.js:
  • test262/test/built-ins/Proxy/set/trap-is-not-callable-realm.js:
  • test262/test/built-ins/Proxy/setPrototypeOf/trap-is-not-callable-realm.js:
  • test262/test/built-ins/RegExp/S15.10.2.12_A1_T1.js:

(i6.replace):
(i6b.replace):

  • test262/test/built-ins/RegExp/dotall/with-dotall-unicode.js:
  • test262/test/built-ins/RegExp/dotall/with-dotall.js:
  • test262/test/built-ins/RegExp/dotall/without-dotall-unicode.js:
  • test262/test/built-ins/RegExp/dotall/without-dotall.js:
  • test262/test/built-ins/RegExp/proto-from-ctor-realm.js:
  • test262/test/built-ins/RegExp/prototype/Symbol.split/splitter-proto-from-ctor-realm.js:
  • test262/test/built-ins/RegExp/u180e.js: Added.
  • test262/test/built-ins/Set/proto-from-ctor-realm.js:
  • test262/test/built-ins/SharedArrayBuffer/proto-from-ctor-realm.js:
  • test262/test/built-ins/String/proto-from-ctor-realm.js:
  • test262/test/built-ins/String/prototype/endsWith/String.prototype.endsWith_Fail.js:
  • test262/test/built-ins/String/prototype/endsWith/String.prototype.endsWith_Fail_2.js:
  • test262/test/built-ins/String/prototype/endsWith/String.prototype.endsWith_Success.js:
  • test262/test/built-ins/String/prototype/endsWith/String.prototype.endsWith_Success_2.js:
  • test262/test/built-ins/String/prototype/endsWith/String.prototype.endsWith_Success_3.js:
  • test262/test/built-ins/String/prototype/endsWith/String.prototype.endsWith_Success_4.js:
  • test262/test/built-ins/String/prototype/endsWith/coerced-values-of-position.js:
  • test262/test/built-ins/String/prototype/endsWith/endsWith.js:
  • test262/test/built-ins/String/prototype/endsWith/length.js:
  • test262/test/built-ins/String/prototype/endsWith/name.js:
  • test262/test/built-ins/String/prototype/endsWith/return-abrupt-from-position-as-symbol.js:
  • test262/test/built-ins/String/prototype/endsWith/return-abrupt-from-position.js:
  • test262/test/built-ins/String/prototype/endsWith/return-abrupt-from-searchstring-as-symbol.js:
  • test262/test/built-ins/String/prototype/endsWith/return-abrupt-from-searchstring-regexp-test.js:
  • test262/test/built-ins/String/prototype/endsWith/return-abrupt-from-searchstring.js:
  • test262/test/built-ins/String/prototype/endsWith/return-abrupt-from-this-as-symbol.js:
  • test262/test/built-ins/String/prototype/endsWith/return-abrupt-from-this.js:
  • test262/test/built-ins/String/prototype/endsWith/return-false-if-search-start-is-less-than-zero.js:
  • test262/test/built-ins/String/prototype/endsWith/return-true-if-searchstring-is-empty.js:
  • test262/test/built-ins/String/prototype/endsWith/searchstring-found-with-position.js:
  • test262/test/built-ins/String/prototype/endsWith/searchstring-found-without-position.js:
  • test262/test/built-ins/String/prototype/endsWith/searchstring-is-regexp-throws.js:
  • test262/test/built-ins/String/prototype/endsWith/searchstring-not-found-with-position.js:
  • test262/test/built-ins/String/prototype/endsWith/searchstring-not-found-without-position.js:
  • test262/test/built-ins/String/prototype/endsWith/this-is-null-throws.js:
  • test262/test/built-ins/String/prototype/endsWith/this-is-undefined-throws.js:
  • test262/test/built-ins/String/prototype/includes/String.prototype.includes_FailBadLocation.js:
  • test262/test/built-ins/String/prototype/includes/String.prototype.includes_FailLocation.js:
  • test262/test/built-ins/String/prototype/includes/String.prototype.includes_FailMissingLetter.js:
  • test262/test/built-ins/String/prototype/includes/String.prototype.includes_Success.js:
  • test262/test/built-ins/String/prototype/includes/String.prototype.includes_SuccessNoLocation.js:
  • test262/test/built-ins/String/prototype/includes/String.prototype.includes_lengthProp.js:
  • test262/test/built-ins/String/prototype/includes/coerced-values-of-position.js:
  • test262/test/built-ins/String/prototype/includes/includes.js:
  • test262/test/built-ins/String/prototype/includes/length.js:
  • test262/test/built-ins/String/prototype/includes/name.js:
  • test262/test/built-ins/String/prototype/includes/return-abrupt-from-position-as-symbol.js:
  • test262/test/built-ins/String/prototype/includes/return-abrupt-from-position.js:
  • test262/test/built-ins/String/prototype/includes/return-abrupt-from-searchstring-as-symbol.js:
  • test262/test/built-ins/String/prototype/includes/return-abrupt-from-searchstring-regexp-test.js:
  • test262/test/built-ins/String/prototype/includes/return-abrupt-from-searchstring.js:
  • test262/test/built-ins/String/prototype/includes/return-abrupt-from-this-as-symbol.js:
  • test262/test/built-ins/String/prototype/includes/return-abrupt-from-this.js:
  • test262/test/built-ins/String/prototype/includes/return-false-with-out-of-bounds-position.js:
  • test262/test/built-ins/String/prototype/includes/return-true-if-searchstring-is-empty.js:
  • test262/test/built-ins/String/prototype/includes/searchstring-found-with-position.js:
  • test262/test/built-ins/String/prototype/includes/searchstring-found-without-position.js:
  • test262/test/built-ins/String/prototype/includes/searchstring-is-regexp-throws.js:
  • test262/test/built-ins/String/prototype/includes/searchstring-not-found-with-position.js:
  • test262/test/built-ins/String/prototype/includes/searchstring-not-found-without-position.js:
  • test262/test/built-ins/String/prototype/includes/this-is-null-throws.js:
  • test262/test/built-ins/String/prototype/includes/this-is-undefined-throws.js:
  • test262/test/built-ins/String/prototype/toLocaleLowerCase/Final_Sigma_U180E.js:
  • test262/test/built-ins/String/prototype/toLowerCase/Final_Sigma_U180E.js:
  • test262/test/built-ins/String/prototype/trim/u180e.js:
  • test262/test/built-ins/Symbol/for/cross-realm.js:
  • test262/test/built-ins/Symbol/hasInstance/cross-realm.js:
  • test262/test/built-ins/Symbol/isConcatSpreadable/cross-realm.js:
  • test262/test/built-ins/Symbol/iterator/cross-realm.js:
  • test262/test/built-ins/Symbol/keyFor/cross-realm.js:
  • test262/test/built-ins/Symbol/match/cross-realm.js:
  • test262/test/built-ins/Symbol/replace/cross-realm.js:
  • test262/test/built-ins/Symbol/search/cross-realm.js:
  • test262/test/built-ins/Symbol/species/cross-realm.js:
  • test262/test/built-ins/Symbol/split/cross-realm.js:
  • test262/test/built-ins/Symbol/toPrimitive/cross-realm.js:
  • test262/test/built-ins/Symbol/toStringTag/cross-realm.js:
  • test262/test/built-ins/Symbol/unscopables/cross-realm.js:
  • test262/test/built-ins/ThrowTypeError/distinct-cross-realm.js:
  • test262/test/built-ins/TypedArrays/buffer-arg-proto-from-ctor-realm-sab.js:
  • test262/test/built-ins/TypedArrays/buffer-arg-proto-from-ctor-realm.js:
  • test262/test/built-ins/TypedArrays/internals/DefineOwnProperty/detached-buffer-realm.js:
  • test262/test/built-ins/TypedArrays/internals/Get/detached-buffer-realm.js:
  • test262/test/built-ins/TypedArrays/internals/GetOwnProperty/detached-buffer-realm.js:
  • test262/test/built-ins/TypedArrays/internals/HasProperty/detached-buffer-realm.js:
  • test262/test/built-ins/TypedArrays/internals/Set/detached-buffer-realm.js:
  • test262/test/built-ins/TypedArrays/length-arg-proto-from-ctor-realm.js:
  • test262/test/built-ins/TypedArrays/no-args-proto-from-ctor-realm.js:
  • test262/test/built-ins/TypedArrays/object-arg-proto-from-ctor-realm.js:
  • test262/test/built-ins/TypedArrays/typedarray-arg-other-ctor-buffer-ctor-custom-species-proto-from-ctor-realm.js:
  • test262/test/built-ins/TypedArrays/typedarray-arg-proto-from-ctor-realm.js:
  • test262/test/built-ins/TypedArrays/typedarray-arg-same-ctor-buffer-ctor-species-custom-proto-from-ctor-realm.js:
  • test262/test/built-ins/WeakMap/proto-from-ctor-realm.js:
  • test262/test/built-ins/WeakSet/proto-from-ctor-realm.js:
  • test262/test/built-ins/parseFloat/S15.1.2.3_A2_T10_U180E.js:
  • test262/test/built-ins/parseInt/S15.1.2.2_A2_T10_U180E.js:
  • test262/test/intl402/NumberFormat/prototype/formatToParts/length.js:
  • test262/test/language/comments/mongolian-vowel-separator-multi.js:
  • test262/test/language/comments/mongolian-vowel-separator-single-eval.js:
  • test262/test/language/comments/mongolian-vowel-separator-single.js:
  • test262/test/language/eval-code/indirect/realm.js:
  • test262/test/language/expressions/assignment/dstr-obj-rest-order.js: Added.

(o.get z):
(o.get a):

  • test262/test/language/expressions/call/eval-realm-indirect.js:
  • test262/test/language/expressions/generators/eval-body-proto-realm.js:
  • test262/test/language/expressions/greater-than-or-equal/bigint-and-bigint.js: Added.
  • test262/test/language/expressions/greater-than-or-equal/bigint-and-non-finite.js: Added.
  • test262/test/language/expressions/greater-than-or-equal/bigint-and-number-extremes.js: Added.
  • test262/test/language/expressions/greater-than-or-equal/bigint-and-number.js:
  • test262/test/language/expressions/greater-than/bigint-and-bigint.js: Added.
  • test262/test/language/expressions/greater-than/bigint-and-non-finite.js: Added.
  • test262/test/language/expressions/greater-than/bigint-and-number-extremes.js: Added.
  • test262/test/language/expressions/greater-than/bigint-and-number.js:
  • test262/test/language/expressions/less-than-or-equal/bigint-and-bigint.js: Added.
  • test262/test/language/expressions/less-than-or-equal/bigint-and-non-finite.js: Added.
  • test262/test/language/expressions/less-than-or-equal/bigint-and-number-extremes.js: Added.
  • test262/test/language/expressions/less-than-or-equal/bigint-and-number.js:
  • test262/test/language/expressions/less-than/bigint-and-bigint.js: Added.
  • test262/test/language/expressions/less-than/bigint-and-non-finite.js: Added.
  • test262/test/language/expressions/less-than/bigint-and-number-extremes.js: Added.
  • test262/test/language/expressions/less-than/bigint-and-number.js:
  • test262/test/language/expressions/new/non-ctor-err-realm.js:
  • test262/test/language/expressions/super/realm.js:
  • test262/test/language/expressions/tagged-template/cache-realm.js:
  • test262/test/language/expressions/template-literal/mongolian-vowel-separator-eval.js:
  • test262/test/language/expressions/template-literal/mongolian-vowel-separator.js:
  • test262/test/language/literals/regexp/mongolian-vowel-separator-eval.js:
  • test262/test/language/literals/regexp/mongolian-vowel-separator.js:
  • test262/test/language/literals/string/mongolian-vowel-separator-eval.js:
  • test262/test/language/literals/string/mongolian-vowel-separator.js:
  • test262/test/language/statements/for-of/dstr-obj-rest-order.js: Added.

(o.get z):
(o.get a):

  • test262/test/language/statements/for-of/iterator-next-reference.js:

(next):
(iterator.next): Deleted.
(x.of.iterable.): Deleted.
(x.of.iterable.get return): Deleted.
(x.of.iterable.iterator.next): Deleted.

  • test262/test/language/types/reference/get-value-prop-base-primitive-realm.js:
  • test262/test/language/types/reference/put-value-prop-base-primitive-realm.js:
  • test262/test/language/white-space/mongolian-vowel-separator-eval.js:
  • test262/test/language/white-space/mongolian-vowel-separator.js:
  • test262/test262-Revision.txt:

Tools:

  • Scripts/import-test262-tests:
7:37 AM Changeset in webkit [222847] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

RenderFragmentContainerRange should not hold raw pointers.
https://bugs.webkit.org/show_bug.cgi?id=177854
<rdar://problem/34805954>

Reviewed by Antti Koivisto.

m_startFragment and m_endFragment object's lifetimes are not tied to the lifetime of
RenderFragmentContainerRange.

Covered by existing tests.

  • rendering/RenderFragmentedFlow.cpp:

(WebCore::RenderFragmentedFlow::setFragmentRangeForBox):

  • rendering/RenderFragmentedFlow.h:
7:24 AM Changeset in webkit [222846] by Michael Catanzaro
  • 2 edits in trunk/Source/WebKit

Unreviewed WPE build fix after r222837
https://bugs.webkit.org/show_bug.cgi?id=177449

  • Shared/wpe/WebEventFactory.cpp:

(WebKit::wallTimeForEventTime):

7:14 AM Changeset in webkit [222845] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

RenderMultiColumnSpannerPlaceholder should not hold raw pointers.
https://bugs.webkit.org/show_bug.cgi?id=177840
<rdar://problem/34800109>

Reviewed by Sam Weinig.

Though we should always have a spanner as long as there's a RenderMultiColumnSpannerPlaceholder,
the spanner inject/removal logic is complicated enough to protect them with WeakPtr.

Covered by existing tests.

  • rendering/RenderMultiColumnSpannerPlaceholder.cpp:

(WebCore::RenderMultiColumnSpannerPlaceholder::RenderMultiColumnSpannerPlaceholder):

  • rendering/RenderMultiColumnSpannerPlaceholder.h:
7:07 AM Changeset in webkit [222844] by Michael Catanzaro
  • 5 edits in trunk/Source/WebCore

[GTK] GtkUtilities.h should not be included in libs not linked to GTK
https://bugs.webkit.org/show_bug.cgi?id=177860

Reviewed by Carlos Garcia Campos.

  • platform/FreeType.cmake:
  • platform/gtk/GtkUtilities.cpp:

(WebCore::topLevelPath): Deleted.
(WebCore::webkitBuildDirectory): Deleted.

  • platform/gtk/GtkUtilities.h:

(WebCore::wallTimeForEvent):

  • platform/text/hyphen/HyphenationLibHyphen.cpp:

(WebCore::topLevelPath):
(WebCore::webkitBuildDirectory):

6:51 AM Changeset in webkit [222843] by Carlos Garcia Campos
  • 98 edits
    2 adds
    2 deletes in trunk

[Harfbuzz] Implement ComplexTextController on top of HarfBuzz
https://bugs.webkit.org/show_bug.cgi?id=167956

Source/WebCore:

Reviewed by Myles C. Maxfield.

Implement ComplexTextController using HarfBuzz and remove HarfBuzzShaper.

Covered by existing tests, a rebaseline will be neeed.

  • platform/FreeType.cmake:
  • platform/graphics/ComplexTextController.cpp:

(WebCore::TextLayoutDeleter::operator() const): Enable TextLayout when using HarfBuzz.
(WebCore::FontCascade::createLayout const): Ditto.
(WebCore::FontCascade::width): Ditto.

  • platform/graphics/ComplexTextController.h:

(WebCore::ComplexTextController::ComplexTextRun::create): Add constructor that receives an hb_buffer_t.

  • platform/graphics/Font.cpp:

(WebCore::Font::variantCapsSupportsCharacterForSynthesis const): Simple implementation for non-cocoa ports.

  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::getGlyphsAndAdvancesForComplexText const): Moved from FontCascadeCocoa.mm.
(WebCore::FontCascade::floatWidthForComplexText const): Ditto.
(WebCore::FontCascade::adjustSelectionRectForComplexText const): Ditto.
(WebCore::FontCascade::offsetForPositionForComplexText const): Ditto.

  • platform/graphics/cairo/FontCairoHarfbuzzNG.cpp:

(WebCore::FontCascade::fontForCombiningCharacterSequence const): Normalize the sequence and get the font of the
base character.

  • platform/graphics/cocoa/FontCascadeCocoa.mm:
  • platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp:

(WebCore::harfBuzzPositionToFloat):
(WebCore::ComplexTextController::ComplexTextRun::ComplexTextRun):
(WebCore::fontFeatures):
(WebCore::characterScript):
(WebCore::scriptsAreCompatibleForCharacters):
(WebCore::findNextRun):
(WebCore::ComplexTextController::collectComplexTextRunsForCharacters):

  • platform/graphics/harfbuzz/HarfBuzzFaceCairo.cpp:

(WebCore::harfBuzzGetGlyph): Check here if the character is a white space and use the space or zeroWidthSpace
to ensure we get a glyph.

  • platform/graphics/harfbuzz/HarfBuzzShaper.cpp: Removed.
  • platform/graphics/harfbuzz/HarfBuzzShaper.h: Removed.
  • platform/graphics/harfbuzz/HbUniquePtr.h: Added.

(WebCore::HbPtrDeleter::operator() const):
(WebCore::HbPtrDeleter<hb_font_t>::operator() const):
(WebCore::HbPtrDeleter<hb_buffer_t>::operator() const):

  • platform/graphics/opentype/OpenTypeMathData.h: Use HbUniquePtr.

LayoutTests:

Unreviewed GTK+ gardening. Rebaseline tests.

  • platform/gtk/css1/font_properties/font-expected.png:
  • platform/gtk/css1/font_properties/font-expected.txt:
  • platform/gtk/css1/pseudo/firstline-expected.png:
  • platform/gtk/css1/pseudo/firstline-expected.txt:
  • platform/gtk/css1/pseudo/multiple_pseudo_elements-expected.png:
  • platform/gtk/css1/pseudo/multiple_pseudo_elements-expected.txt:
  • platform/gtk/css2.1/t051201-c23-first-line-00-b-expected.png:
  • platform/gtk/css2.1/t051201-c23-first-line-00-b-expected.txt:
  • platform/gtk/css2.1/t051202-c26-psudo-nest-00-c-expected.png:
  • platform/gtk/css2.1/t051202-c26-psudo-nest-00-c-expected.txt:
  • platform/gtk/css2.1/t0905-c5525-fltwidth-00-c-g-expected.png:
  • platform/gtk/css2.1/t0905-c5525-fltwidth-00-c-g-expected.txt:
  • platform/gtk/css2.1/t1508-c527-font-00-b-expected.png:
  • platform/gtk/css2.1/t1508-c527-font-00-b-expected.txt:
  • platform/gtk/css2.1/t1508-c527-font-06-b-expected.png:
  • platform/gtk/css2.1/t1508-c527-font-06-b-expected.txt:
  • platform/gtk/css2.1/t1508-c527-font-07-b-expected.png:
  • platform/gtk/css2.1/t1508-c527-font-07-b-expected.txt:
  • platform/gtk/css2.1/t1508-c527-font-10-c-expected.png:
  • platform/gtk/css2.1/t1508-c527-font-10-c-expected.txt:
  • platform/gtk/editing/selection/vertical-rl-rtl-extend-line-backward-br-expected.png:
  • platform/gtk/editing/selection/vertical-rl-rtl-extend-line-backward-br-expected.txt:
  • platform/gtk/editing/selection/vertical-rl-rtl-extend-line-backward-p-expected.png:
  • platform/gtk/editing/selection/vertical-rl-rtl-extend-line-backward-p-expected.txt:
  • platform/gtk/editing/selection/vertical-rl-rtl-extend-line-forward-br-expected.png:
  • platform/gtk/editing/selection/vertical-rl-rtl-extend-line-forward-br-expected.txt:
  • platform/gtk/editing/selection/vertical-rl-rtl-extend-line-forward-p-expected.png:
  • platform/gtk/editing/selection/vertical-rl-rtl-extend-line-forward-p-expected.txt:
  • platform/gtk/fast/css/text-overflow-ellipsis-text-align-center-expected.png:
  • platform/gtk/fast/css/text-overflow-ellipsis-text-align-center-expected.txt:
  • platform/gtk/fast/css/text-overflow-ellipsis-text-align-left-expected.png:
  • platform/gtk/fast/css/text-overflow-ellipsis-text-align-left-expected.txt:
  • platform/gtk/fast/text/atsui-negative-spacing-features-expected.png:
  • platform/gtk/fast/text/atsui-negative-spacing-features-expected.txt:
  • platform/gtk/fast/text/atsui-pointtooffset-calls-cg-expected.png:
  • platform/gtk/fast/text/atsui-pointtooffset-calls-cg-expected.txt:
  • platform/gtk/fast/text/atsui-rtl-override-selection-expected.png:
  • platform/gtk/fast/text/atsui-rtl-override-selection-expected.txt:
  • platform/gtk/fast/text/atsui-spacing-features-expected.png:
  • platform/gtk/fast/text/atsui-spacing-features-expected.txt:
  • platform/gtk/fast/text/emphasis-expected.png:
  • platform/gtk/fast/text/emphasis-expected.txt:
  • platform/gtk/fast/text/international/bold-bengali-expected.png:
  • platform/gtk/fast/text/international/bold-bengali-expected.txt:
  • platform/gtk/fast/text/international/hebrew-vowels-expected.png:
  • platform/gtk/fast/text/international/hebrew-vowels-expected.txt:
  • platform/gtk/fast/text/international/thai-baht-space-expected.png:
  • platform/gtk/fast/text/international/thai-baht-space-expected.txt:
  • platform/gtk/fast/text/international/thai-line-breaks-expected.png:
  • platform/gtk/fast/text/international/thai-line-breaks-expected.txt:
  • platform/gtk/fast/text/large-text-composed-char-dos-expected.txt: Added.
  • platform/gtk/svg/W3C-I18N/g-dirLTR-ubNone-expected.png:
  • platform/gtk/svg/W3C-I18N/g-dirLTR-ubNone-expected.txt:
  • platform/gtk/svg/W3C-I18N/g-dirLTR-ubOverride-expected.png:
  • platform/gtk/svg/W3C-I18N/g-dirLTR-ubOverride-expected.txt:
  • platform/gtk/svg/W3C-I18N/g-dirRTL-ubNone-expected.png:
  • platform/gtk/svg/W3C-I18N/g-dirRTL-ubNone-expected.txt:
  • platform/gtk/svg/W3C-I18N/g-dirRTL-ubOverride-expected.png:
  • platform/gtk/svg/W3C-I18N/g-dirRTL-ubOverride-expected.txt:
  • platform/gtk/svg/W3C-I18N/text-dirLTR-ubNone-expected.png:
  • platform/gtk/svg/W3C-I18N/text-dirLTR-ubNone-expected.txt:
  • platform/gtk/svg/W3C-I18N/text-dirLTR-ubOverride-expected.png:
  • platform/gtk/svg/W3C-I18N/text-dirLTR-ubOverride-expected.txt:
  • platform/gtk/svg/W3C-I18N/text-dirRTL-ubNone-expected.png:
  • platform/gtk/svg/W3C-I18N/text-dirRTL-ubNone-expected.txt:
  • platform/gtk/svg/W3C-I18N/text-dirRTL-ubOverride-expected.png:
  • platform/gtk/svg/W3C-I18N/text-dirRTL-ubOverride-expected.txt:
  • platform/gtk/svg/W3C-I18N/tspan-dirLTR-ubEmbed-in-rtl-context-expected.png:
  • platform/gtk/svg/W3C-I18N/tspan-dirLTR-ubEmbed-in-rtl-context-expected.txt:
  • platform/gtk/svg/W3C-I18N/tspan-dirLTR-ubNone-in-rtl-context-expected.png:
  • platform/gtk/svg/W3C-I18N/tspan-dirLTR-ubNone-in-rtl-context-expected.txt:
  • platform/gtk/svg/W3C-I18N/tspan-dirLTR-ubOverride-in-rtl-context-expected.png:
  • platform/gtk/svg/W3C-I18N/tspan-dirLTR-ubOverride-in-rtl-context-expected.txt:
  • platform/gtk/svg/W3C-I18N/tspan-dirRTL-ubOverride-in-rtl-context-expected.png:
  • platform/gtk/svg/W3C-I18N/tspan-dirRTL-ubOverride-in-rtl-context-expected.txt:
  • platform/gtk/svg/W3C-I18N/tspan-direction-rtl-expected.png:
  • platform/gtk/svg/W3C-I18N/tspan-direction-rtl-expected.txt:
  • platform/gtk/svg/text/bidi-tspans-expected.png:
  • platform/gtk/svg/text/bidi-tspans-expected.txt:
  • platform/gtk/svg/text/select-textLength-spacing-squeeze-1-expected.png:
  • platform/gtk/svg/text/select-textLength-spacing-squeeze-1-expected.txt:
  • platform/gtk/svg/text/select-textLength-spacing-squeeze-2-expected.png:
  • platform/gtk/svg/text/select-textLength-spacing-squeeze-2-expected.txt:
  • platform/gtk/svg/text/select-textLength-spacing-stretch-2-expected.png:
  • platform/gtk/svg/text/select-textLength-spacing-stretch-2-expected.txt:
  • platform/gtk/svg/text/select-textLength-spacing-stretch-3-expected.png:
  • platform/gtk/svg/text/select-textLength-spacing-stretch-3-expected.txt:
5:48 AM Changeset in webkit [222842] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix typo in function name scanDirectoryForDicionaries
https://bugs.webkit.org/show_bug.cgi?id=177866

  • platform/text/hyphen/HyphenationLibHyphen.cpp:

(WebCore::scanDirectoryForDictionaries):
(WebCore::scanTestDictionariesDirectoryIfNecessary):
(WebCore::availableLocales):
(WebCore::scanDirectoryForDicionaries): Deleted.

5:36 AM Changeset in webkit [222841] by magomez@igalia.com
  • 11 edits
    22 adds in trunk

Add animation support for WebP images
https://bugs.webkit.org/show_bug.cgi?id=113124

Reviewed by Žan Doberšek.

.:

  • Source/cmake/FindWebP.cmake:

Source/WebCore:

Implement decoding of WebP animations.

Test: fast/images/animated-webp.html

  • platform/graphics/ImageBackingStore.h:

(WebCore::ImageBackingStore::blendPixel):

  • platform/image-decoders/webp/WEBPImageDecoder.cpp:

(WebCore::WEBPImageDecoder::WEBPImageDecoder):
(WebCore::WEBPImageDecoder::~WEBPImageDecoder):
(WebCore::WEBPImageDecoder::setData):
(WebCore::WEBPImageDecoder::repetitionCount const):
(WebCore::WEBPImageDecoder::frameBufferAtIndex):
(WebCore::WEBPImageDecoder::findFirstRequiredFrameToDecode):
(WebCore::WEBPImageDecoder::decode):
(WebCore::WEBPImageDecoder::decodeFrame):
(WebCore::WEBPImageDecoder::initFrameBuffer):
(WebCore::WEBPImageDecoder::applyPostProcessing):
(WebCore::WEBPImageDecoder::parseHeader):
(WebCore::WEBPImageDecoder::clearFrameBufferCache):

  • platform/image-decoders/webp/WEBPImageDecoder.h:

LayoutTests:

Add a new test for WebP animations and skip it on ios, mac and win. Also unskip some
webp tests that are passing on gtk.

  • fast/images/animated-webp-expected.html: Added.
  • fast/images/animated-webp.html: Added.
  • fast/images/resources/awebp00-ref.webp: Added.
  • fast/images/resources/awebp00.webp: Added.
  • fast/images/resources/awebp01-ref.webp: Added.
  • fast/images/resources/awebp01.webp: Added.
  • fast/images/resources/awebp02-ref.webp: Added.
  • fast/images/resources/awebp02.webp: Added.
  • fast/images/resources/awebp03-ref.webp: Added.
  • fast/images/resources/awebp03.webp: Added.
  • fast/images/resources/awebp04-ref.webp: Added.
  • fast/images/resources/awebp04.webp: Added.
  • fast/images/resources/awebp05-ref.webp: Added.
  • fast/images/resources/awebp05.webp: Added.
  • fast/images/resources/awebp06-ref.webp: Added.
  • fast/images/resources/awebp06.webp: Added.
  • fast/images/resources/awebp07-ref.webp: Added.
  • fast/images/resources/awebp07.webp: Added.
  • fast/images/resources/awebp08-ref.webp: Added.
  • fast/images/resources/awebp08.webp: Added.
  • fast/images/resources/awebp09-ref.webp: Added.
  • fast/images/resources/awebp09.webp: Added.
  • platform/gtk/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/win/TestExpectations:
5:08 AM Changeset in webkit [222840] by clopez@igalia.com
  • 6 edits in trunk

Generate a compile error if release is built without compiler optimizations
https://bugs.webkit.org/show_bug.cgi?id=177665

Reviewed by Michael Catanzaro.

.:

Default to RelWithDebInfo if CMAKE_BUILD_TYPE is unset.

  • CMakeLists.txt:

Source/JavaScriptCore:

Pass -DRELEASE_WITHOUT_OPTIMIZATIONS to testair.cpp and testb3.cpp because
this files are compiled with -O0 for build speed reasons after r195639.

Source/WTF:

For GCC and Clang, generate an error at build time that will alert
the developer that she is trying to build Release without any compiler
optimization. A build time error is much better than an unexpected
"oh, WebKit is really slow ..." situation later.

If this was intended, then we tell the developer that she can continue
by just setting -DRELEASE_WITHOUT_OPTIMIZATIONS in the list of build
flags.

The intention of this patch is to ensure that nobody builds Release
without enabling compiler optimization by mistake.

  • wtf/Compiler.h:
4:06 AM Changeset in webkit [222839] by rniwa@webkit.org
  • 13 edits
    2 adds in trunk

Use blob URL when pasting RTFD instead of overriding DocumentLoader
https://bugs.webkit.org/show_bug.cgi?id=177801
<rdar://problem/34542270>

Reviewed by Wenson Hsieh.

Source/WebCore:

Before this patch, pasting RTFD resulted in images and other subresources in RTFD are being placed
into the document using WebKit fake URL, and DocumentLoader was overridden to return the appropriate
data upon resource requests. This is bad because there is no mechanism for websites to access its content.

Like r222119 and r208451, this patch fixes thie problem by using a blob URL instead of a WebKit fake URL.
This patch also adds a Blob::create variant which takes a SharedBuffer.

API Tests: PasteRTFD

  • editing/WebCorePasteboardFileReader.cpp:

(WebCore::WebCorePasteboardFileReader::readBuffer):

  • editing/cocoa/WebContentReaderCocoa.mm:

(WebCore::DeferredLoadingScope): Extracted out of createFragmentAndAddResources for clarity.
(WebCore::DeferredLoadingScope::DeferredLoadingScope):
(WebCore::DeferredLoadingScope::~DeferredLoadingScope):
(WebCore::createFragmentAndAddResources): Instead of adding resources to document loader, replace each
URL in the document by a blob URL.
(WebCore::WebContentReader::readImage):

  • editing/markup.cpp:

(WebCore::replaceSubresourceURLs): Added. A helper to replace each URL in the document fragment by a blob
URL created for each subresource. This won't work for iframes or srcset but that's okay for now since DOM
constructed from RTFD doesn't use either.

  • editing/markup.h:
  • fileapi/Blob.cpp:

(WebCore::Blob::Blob): Added a variant which takes a SharedBuffer.

  • fileapi/Blob.h:

(WebCore::Blob::create): Ditto.

Source/WebKit:

Fixed the assertion failure when RTFD content is empty.

  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:

(WebKit::WebPasteboardProxy::getPasteboardBufferForType):

Tools:

Added a regression test for an assertion failure when pasting an empty RTFD as well as a test for pasting
RTFD with an image, which should result in an image element with a blob URL.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/PasteImage.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/PasteRTFD.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/paste-rtfd.html:
3:09 AM WebKitGTK/2.18.x edited by Michael Catanzaro
(diff)
3:03 AM Changeset in webkit [222838] by tpopela@redhat.com
  • 2 edits in trunk/Source/WTF

Allow building without WOFF enabled

Reviewed by Michael Catanzaro.

Don't force the WOFF to be turned on, but follow what is set in cmake.

  • wtf/Platform.h:
2:49 AM Changeset in webkit [222837] by Michael Catanzaro
  • 5 edits in trunk/Source

REGRESSION(r222392): [WPE][GTK] Many forms tests are failing due to broken event timestamps
https://bugs.webkit.org/show_bug.cgi?id=177449

Reviewed by Chris Dumez.

Source/WebCore:

  • platform/gtk/GtkUtilities.cpp:

(WebCore::wallTimeForEvent):

  • platform/gtk/GtkUtilities.h:

(WebCore::wallTimeForEvent):

Source/WebKit:

  • Shared/wpe/WebEventFactory.cpp:

(WebKit::wallTimeForEventTime):

2:09 AM Changeset in webkit [222836] by magomez@igalia.com
  • 4 edits in trunk/Source/WebCore

[GTK][WPE] Fix playback of GIFs
https://bugs.webkit.org/show_bug.cgi?id=176089

Reviewed by Carlos Garcia Campos.

Allow GIFImageReader to decode again already decoded frames. Thanks to this, we don't
need to delete the GIFImageReader when GIFImageDecoder::clearFrameBufferCache() is
called, and the we don't need the lock to avoid crashes in that situation.

Covered by existent tests.

  • platform/image-decoders/gif/GIFImageDecoder.cpp:

(WebCore::GIFImageDecoder::clearFrameBufferCache):
(WebCore::GIFImageDecoder::decode):

  • platform/image-decoders/gif/GIFImageDecoder.h:
  • platform/image-decoders/gif/GIFImageReader.cpp:

(GIFImageReader::decode):

1:38 AM Changeset in webkit [222835] by gns@gnome.org
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix.

Use different enum value for the check. UP_DEVICE_LEVEL_NORMAL is only available on newer
upower.

  • platform/glib/LowPowerModeNotifierGLib.cpp:

(WebCore::LowPowerModeNotifier::updateState):

12:46 AM Changeset in webkit [222834] by gns@gnome.org
  • 9 edits
    2 adds in trunk

[GLib] Let WebCore know of low power situations
https://bugs.webkit.org/show_bug.cgi?id=177810

Reviewed by Carlos Garcia Campos.

.:

WebCore can use knowledge of low power situations to throttle timers and avoid expensive
checks, lowering power usage. We can use upower's warning level to let WebCore know we are
in such a situation.

  • Source/cmake/OptionsGTK.cmake: depend on upower-glib.
  • Source/cmake/FindUPowerGLib.cmake: Added.

Source/WebCore:

WebCore can use knowledge of low power situations to throttle timers and avoid expensive
checks, lowering power usage. We can use upower's warning level to let WebCore know we are
in such a situation.

No tests as there is no way to mock upower.

  • PlatformGTK.cmake: add new file.
  • PlatformWPE.cmake: add new file.
  • platform/LowPowerModeNotifier.cpp: use upower-glib to know about low power situations.
  • platform/LowPowerModeNotifier.h: includes upower header as UpClient and UpDevice are not forward

declaration-friendly.

  • platform/glib/LowPowerModeNotifierGLib.cpp: Added.

(WebCore::LowPowerModeNotifier::LowPowerModeNotifier):
(WebCore::LowPowerModeNotifier::updateState): update low power mode from warning-level.
(WebCore::LowPowerModeNotifier::warningLevelCallback): track upower's warning-level to know when
a low power situation occurs.
(WebCore::LowPowerModeNotifier::~LowPowerModeNotifier): stop tracking the warning-level signal.
(WebCore::LowPowerModeNotifier::isLowPowerModeEnabled const):

Tools:

  • gtk/install-dependencies: add upower-glib dev packages for Debian, Arch and Fedora.
12:33 AM Changeset in webkit [222833] by jdiggs@igalia.com
  • 3 edits
    2 adds in trunk

AX: [ATK] aria-pressed="mixed" should be exposed via ATK_STATE_INDETERMINATE
https://bugs.webkit.org/show_bug.cgi?id=177807

Reviewed by Chris Fleizach.

Source/WebCore:

Include toggle buttons in the element types for which the mixed state is checked
and exposed via ATK_STATE_INDETERMINATE if found. Also only do the role checks when
AccessibilityObject::isIndeterminate() has returned false.

Test: accessibility/gtk/aria-pressed-mixed-value.html

  • accessibility/atk/WebKitAccessibleWrapperAtk.cpp:

(setAtkStateSetFromCoreObject):

LayoutTests:

  • accessibility/gtk/aria-pressed-mixed-value-expected.txt: Added.
  • accessibility/gtk/aria-pressed-mixed-value.html: Added.
12:32 AM Changeset in webkit [222832] by jdiggs@igalia.com
  • 4 edits
    1 add in trunk

AX: [ATK] ARIA tabpanel role should be exposed as ATK_ROLE_SCROLL_PANE
https://bugs.webkit.org/show_bug.cgi?id=177815

Reviewed by Chris Fleizach.

Source/WebCore:

Change the mapping of TabPanelRole from ATK_ROLE_PANEL to ATK_ROLE_SCROLL_PANE.

No new tests because this mapping is already covered by aria-tab-roles.html and
roles-exposed.html. The platform expectations for each test have been updated.

  • accessibility/atk/WebKitAccessibleWrapperAtk.cpp:

(atkRole):

LayoutTests:

Updated expectations to reflect new mapping.

  • platform/gtk/accessibility/aria-tab-roles-expected.txt: Added.
  • platform/gtk/accessibility/roles-exposed-expected.txt: Updated.

Oct 3, 2017:

11:54 PM Changeset in webkit [222831] by Antti Koivisto
  • 5 edits in trunk/Source/WebCore

Use WeakPtr in RenderFullScreen
https://bugs.webkit.org/show_bug.cgi?id=177827

Reviewed by Zalan Bujtas.

Make Document::m_fullScreenRenderer RenderFullScreen::m_placeholder WeakPtrs
and get rid of the custom nulling code.

  • dom/Document.cpp:

(WebCore::Document::destroyRenderTree):
(WebCore::Document::webkitWillEnterFullScreenForElement):
(WebCore::Document::webkitDidExitFullScreenForElement):
(WebCore::Document::setFullScreenRenderer):
(WebCore::Document::fullScreenRendererDestroyed): Deleted.

  • dom/Document.h:

(WebCore::Document::fullScreenRenderer const):

  • rendering/RenderFullScreen.cpp:

(WebCore::RenderFullScreen::RenderFullScreen):
(WebCore::RenderFullScreen::willBeDestroyed):
(WebCore::RenderFullScreen::createPlaceholder):
(WebCore::RenderFullScreenPlaceholder::willBeDestroyed): Deleted.
(WebCore::RenderFullScreen::setPlaceholder): Deleted.

  • rendering/RenderFullScreen.h:
10:15 PM Changeset in webkit [222830] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Enable pasteboard custom data in macOS 10.12 and earlier
https://bugs.webkit.org/show_bug.cgi?id=177855

Reviewed by Wenson Hsieh.

Make customPasteboardDataEnabled return true on macOS 10.12 and earlier as long as the app is Safari.

  • page/Settings.cpp:

(WebCore::Settings::customPasteboardDataEnabled):

8:33 PM Changeset in webkit [222829] by Jon Davis
  • 4 edits in trunk/Source

Source/JavaScriptCore:
Update WebAssembly to "Supported"
https://bugs.webkit.org/show_bug.cgi?id=177831

Reviewed by Alexey Proskuryakov.

Cleaned up Async Iteration and Object rest/spread to use "In Development"
instead of "In development".

  • features.json:

Source/WebCore:
Update several features to "Supported"
https://bugs.webkit.org/show_bug.cgi?id=177831

Reviewed by Alexey Proskuryakov.

Update Media Capture and Streams, Performance Observer, Resource Timing, User Timing,
Web Cryptography, and WebRTC.

  • features.json:
8:15 PM Changeset in webkit [222828] by commit-queue@webkit.org
  • 12 edits in trunk/Source

[Curl] Reimplement CurlDownload with CurlRequest
https://bugs.webkit.org/show_bug.cgi?id=177779

Patch by Basuke Suzuki <Basuke Suzuki> on 2017-10-03
Reviewed by Alex Christensen.

Source/WebCore:

  • platform/network/curl/CurlContext.cpp:

(WebCore::CurlHandle::enableAllowedProtocols):
(WebCore::CurlHandle::enableFollowLocation): Deleted.
(WebCore::CurlHandle::getEffectiveURL): Deleted.

  • platform/network/curl/CurlContext.h:
  • platform/network/curl/CurlDownload.cpp:

(WebCore::CurlDownload::~CurlDownload):
(WebCore::CurlDownload::init):
(WebCore::CurlDownload::start):
(WebCore::CurlDownload::cancel):
(WebCore::CurlDownload::createCurlRequest):
(WebCore::CurlDownload::curlDidReceiveResponse):
(WebCore::CurlDownload::curlDidReceiveBuffer):
(WebCore::CurlDownload::curlDidComplete):
(WebCore::CurlDownload::curlDidFailWithError):
(WebCore::CurlDownload::shouldRedirectAsGET):
(WebCore::CurlDownload::willSendRequest):
(WebCore::CurlDownload::getResponse const): Deleted.
(WebCore::CurlDownload::retain): Deleted.
(WebCore::CurlDownload::release): Deleted.
(WebCore::CurlDownload::setupTransfer): Deleted.
(WebCore::CurlDownload::didCompleteTransfer): Deleted.
(WebCore::CurlDownload::didCancelTransfer): Deleted.
(WebCore::CurlDownload::closeFile): Deleted.
(WebCore::CurlDownload::moveFileToDestination): Deleted.
(WebCore::CurlDownload::writeDataToFile): Deleted.
(WebCore::CurlDownload::didReceiveHeader): Deleted.
(WebCore::CurlDownload::didReceiveData): Deleted.
(WebCore::CurlDownload::didReceiveResponse): Deleted.
(WebCore::CurlDownload::didReceiveDataOfLength): Deleted.
(WebCore::CurlDownload::didFinish): Deleted.
(WebCore::CurlDownload::didFail): Deleted.
(WebCore::CurlDownload::writeCallback): Deleted.
(WebCore::CurlDownload::headerCallback): Deleted.

  • platform/network/curl/CurlDownload.h:

(WebCore::CurlDownloadListener::didReceiveResponse):

  • platform/network/curl/CurlRequest.cpp:

(WebCore::CurlRequest::didReceiveData):
(WebCore::CurlRequest::finalizeTransfer):
(WebCore::CurlRequest::enableDownloadToFile):
(WebCore::CurlRequest::getDownloadedFilePath):
(WebCore::CurlRequest::writeDataToDownloadFileIfEnabled):
(WebCore::CurlRequest::closeDownloadFile):

  • platform/network/curl/CurlRequest.h:

(WebCore::CurlRequest::create):

  • platform/network/curl/ResourceHandleCurlDelegate.cpp:

(WebCore::ResourceHandleCurlDelegate::createCurlRequest):

  • platform/network/curl/ResourceHandleCurlDelegate.h:

Source/WebKitLegacy/win:

  • WebDownload.h:
  • WebDownloadCurl.cpp:

(WebDownload::init):
(WebDownload::didReceiveResponse):

6:53 PM Changeset in webkit [222827] by sbarati@apple.com
  • 78 edits
    18 adds in trunk

Implement polymorphic prototypes
https://bugs.webkit.org/show_bug.cgi?id=176391

Reviewed by Filip Pizlo.

JSTests:

  • microbenchmarks/poly-proto-access.js: Added.

(assert):
(foo.C):
(foo.C.prototype.get bar):
(foo):
(bar):

  • microbenchmarks/poly-proto-put-transition-speed.js: Added.

(assert):
(makePolyProtoObject.foo.C):
(makePolyProtoObject.foo):
(makePolyProtoObject):
(performSet):

  • microbenchmarks/poly-proto-setter-speed.js: Added.

(assert):
(makePolyProtoObject.foo.C):
(makePolyProtoObject.foo.C.prototype.set p):
(makePolyProtoObject.foo):
(makePolyProtoObject):
(performSet):

  • stress/constructor-with-return.js:

(i.tests.forEach.Constructor):
(i.tests.forEach):
(tests.forEach.Constructor): Deleted.
(tests.forEach): Deleted.

  • stress/dom-jit-with-poly-proto.js: Added.

(assert):
(makePolyProtoObject.foo.C):
(makePolyProtoObject.foo):
(makePolyProtoObject):
(validate):

  • stress/poly-proto-custom-value-and-accessor.js: Added.

(assert):
(makePolyProtoObject.foo.C):
(makePolyProtoObject.foo):
(makePolyProtoObject):
(items.forEach):
(set get for):

  • stress/poly-proto-intrinsic-getter-correctness.js: Added.

(assert):
(makePolyProtoObject.foo.C):
(makePolyProtoObject.foo):
(makePolyProtoObject):
(foo):

  • stress/poly-proto-miss.js: Added.

(makePolyProtoInstanceWithNullPrototype.foo.C):
(makePolyProtoInstanceWithNullPrototype.foo):
(makePolyProtoInstanceWithNullPrototype):
(assert):
(validate):

  • stress/poly-proto-op-in-caching.js: Added.

(assert):
(makePolyProtoObject.foo.C):
(makePolyProtoObject.foo):
(makePolyProtoObject):
(validate):
(validate2):

  • stress/poly-proto-put-transition.js: Added.

(assert):
(makePolyProtoObject.foo.C):
(makePolyProtoObject.foo):
(makePolyProtoObject):
(performSet):
(i.obj.proto.set p):

  • stress/poly-proto-set-prototype.js: Added.

(assert):
(let.alternateProto.get x):
(let.alternateProto2.get y):
(let.alternateProto2.get x):
(foo.C):
(foo):
(validate):

  • stress/poly-proto-setter.js: Added.

(assert):
(makePolyProtoObject.foo.C):
(makePolyProtoObject.foo.C.prototype.set p):
(makePolyProtoObject.foo.C.prototype.get p):
(makePolyProtoObject.foo):
(makePolyProtoObject):
(performSet):

  • stress/poly-proto-using-inheritance.js: Added.

(assert):
(foo.C):
(foo.C.prototype.get baz):
(foo):
(bar.C):
(bar):
(validate):

  • stress/primitive-poly-proto.js: Added.

(makePolyProtoInstance.foo.C):
(makePolyProtoInstance.foo):
(makePolyProtoInstance):
(assert):
(validate):

  • stress/prototype-is-not-js-object.js: Added.

(foo.bar):
(foo):
(assert):
(validate):

  • stress/try-get-by-id-poly-proto.js: Added.

(assert):
(makePolyProtoObject.foo.C):
(makePolyProtoObject.foo):
(makePolyProtoObject):
(tryGetByIdText):
(x.proto.get bar):
(validate):

  • typeProfiler/overflow.js:

Source/JavaScriptCore:

This patch changes JSC's object model with respect to where the prototype
of an object is stored. Previously, it was always stored as
a constant value inside Structure. So an object's structure used to
always tell you what its prototype is. Anytime an object changed
its prototype, it would do a structure transition. This enables
a large class of optimizations: just by doing a structure check,
we know what the prototype is.

However, this design falls down when you have many objects that
have the same shape, but only differ in what their prototype value
is. This arises in many JS programs. A simple, and probably common, example
is when the program has a constructor inside of a function:
`
function foo() {

class C {

constructor() { this.field1 = 42; ...; this.fieldN = 42; }
method1() { doStuffWith(this.field); }
method2() { doStuffWith(this.field); }

}
let c = new C;
do things with c;
}

repeatedly call foo() here.
`

Before this patch, in the above program, each time new C created an
object, it would create an object with a different structure. The
reason for this is that each time foo is called, there is a new
instance of C.prototype. However, each new C that was created
with have identical shape sans its prototype value. This would
cause all ICs that used c to quickly give up on any form of caching
because they would see too many structures and give up and permanently
divert control flow to the slow path.

This patch fixes this issue by expanding the notion of where the prototype
of an object is stored. There are now two notions of where the prototype
is stored. A Structure can now be in two modes:

  1. Mono proto mode. This is the same mode as we used to have. It means

the structure itself has a constant prototype value.

  1. Poly proto mode. This means the structure knows nothing about the

prototype value itself. Objects with this structure store their prototype
in normal object field storage. The structure will tell you the offset of
this prototype inside the object's storage. As of today, we only reserve
inline slots for the prototype field because poly proto only occurs
for JSFinalObject. However, this will be expanded to support out of line
offsets in a future patch when we extend poly proto to work when we inherit
from builtin types like Map and Array.

In this initial patch, we do poly proto style inline caching whenever
we see an object that is poly proto or if an object in its prototype lookup
chain is poly proto. Poly proto ICs work by verifying the lookup chain
at runtime. This essentially boils down to performing structure checks
up the prototype chain. In a future patch, we're going to extend object
property condition set to work with objects that don't have poly proto bases.

Initially, accesses that have poly proto access chains will always turn
into GetById/PutById in the DFG. In a future patch, I'm going to teach
the DFG how to inline certain accesses that have poly proto in the access
chain.

One of most interesting parts about this patch is how we decide when to go
poly proto. This patch uses a profiling based approach. An IC will inform
a watchpoint that it sees an opportunity when two Structure's are structurally
the same, sans the base object's prototype. This means that two structures
have equivalent shapes all the way up the prototype chain. To support fast
structural comparison, we compute a hash for a structure based on the properties
it has. We compute this hash as we add properties to the structure. This
computation is nearly free since we always add UniquedStringImpl*'s which
already have their hashes computed. To compare structural equivalence, we
just compare hash values all the way up the prototype chain. This means we
can get hash conflicts between two structures, but it's extremely rare. First,
it'll be rare for two structures to have the same hash. Secondly, we only
consider structures originating from the same executable.

How we set up this poly proto watchpoint is crucial to its design. When we create_this
an object originating from some executable, that executable will create a Box<InlineWatchpointSet>.
Each structure that originates from this executable will get a copy of that
Box<InlineWatchpointSet>. As that structure transitions to new structures,
they too will get a copy of that Box<InilneWatchpointSet>. Therefore, when
invalidating an arbitrary structure's poly proto watchpoint, we will know
the next time we create_this from that executable that it had been
invalidated, and that we should create an object with a poly proto
structure. We also use the pointer value of this Box<InlineWatchpointSet>
to determine if two structures originated from the same executable. This
pruning will severely limit the chances of getting a hash conflict in practice.

This patch is neutral on my MBP on traditional JS benchmarks like Octane/Kraken/Sunspider.
It may be a 1-2% ARES-6 progression.

This patch is between neutral and a 9x progression on the various tests
I added. Most of the microbenchmarks are progressed by at least 50%.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • builtins/BuiltinNames.cpp:
  • builtins/BuiltinNames.h:

(JSC::BuiltinNames::BuiltinNames):
(JSC::BuiltinNames::underscoreProtoPrivateName const):

  • bytecode/AccessCase.cpp:

(JSC::AccessCase::AccessCase):
(JSC::AccessCase::create):
(JSC::AccessCase::commit):
(JSC::AccessCase::guardedByStructureCheck const):
(JSC::AccessCase::canReplace const):
(JSC::AccessCase::dump const):
(JSC::AccessCase::visitWeak const):
(JSC::AccessCase::propagateTransitions const):
(JSC::AccessCase::generateWithGuard):
(JSC::AccessCase::generateImpl):

  • bytecode/AccessCase.h:

(JSC::AccessCase::usesPolyProto const):
(JSC::AccessCase::AccessCase):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):

  • bytecode/GetByIdStatus.cpp:

(JSC::GetByIdStatus::computeForStubInfoWithoutExitSiteFeedback):

  • bytecode/GetterSetterAccessCase.cpp:

(JSC::GetterSetterAccessCase::GetterSetterAccessCase):
(JSC::GetterSetterAccessCase::create):

  • bytecode/GetterSetterAccessCase.h:
  • bytecode/InternalFunctionAllocationProfile.h:

(JSC::InternalFunctionAllocationProfile::createAllocationStructureFromBase):

  • bytecode/IntrinsicGetterAccessCase.cpp:

(JSC::IntrinsicGetterAccessCase::IntrinsicGetterAccessCase):

  • bytecode/IntrinsicGetterAccessCase.h:
  • bytecode/ModuleNamespaceAccessCase.cpp:

(JSC::ModuleNamespaceAccessCase::ModuleNamespaceAccessCase):

  • bytecode/ObjectAllocationProfile.cpp: Added.

(JSC::ObjectAllocationProfile::initializeProfile):
(JSC::ObjectAllocationProfile::possibleDefaultPropertyCount):

  • bytecode/ObjectAllocationProfile.h:

(JSC::ObjectAllocationProfile::clear):
(JSC::ObjectAllocationProfile::initialize): Deleted.
(JSC::ObjectAllocationProfile::possibleDefaultPropertyCount): Deleted.

  • bytecode/ObjectPropertyConditionSet.cpp:
  • bytecode/PolyProtoAccessChain.cpp: Added.

(JSC::PolyProtoAccessChain::create):
(JSC::PolyProtoAccessChain::needImpurePropertyWatchpoint const):
(JSC::PolyProtoAccessChain::operator== const):
(JSC::PolyProtoAccessChain::dump const):

  • bytecode/PolyProtoAccessChain.h: Added.

(JSC::PolyProtoAccessChain::clone):
(JSC::PolyProtoAccessChain:: const):
(JSC::PolyProtoAccessChain::operator!= const):
(JSC::PolyProtoAccessChain::forEach const):

  • bytecode/PolymorphicAccess.cpp:

(JSC::PolymorphicAccess::addCases):
(JSC::PolymorphicAccess::regenerate):
(WTF::printInternal):

  • bytecode/PolymorphicAccess.h:

(JSC::AccessGenerationResult::shouldResetStub const):
(JSC::AccessGenerationState::AccessGenerationState):

  • bytecode/PropertyCondition.cpp:

(JSC::PropertyCondition::isStillValidAssumingImpurePropertyWatchpoint const):

  • bytecode/ProxyableAccessCase.cpp:

(JSC::ProxyableAccessCase::ProxyableAccessCase):
(JSC::ProxyableAccessCase::create):

  • bytecode/ProxyableAccessCase.h:
  • bytecode/PutByIdStatus.cpp:

(JSC::PutByIdStatus::computeForStubInfo):

  • bytecode/StructureStubInfo.cpp:

(JSC::StructureStubInfo::addAccessCase):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::load):
(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::canDoFastSpread):

  • dfg/DFGOperations.cpp:
  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileInstanceOfForObject):
(JSC::DFG::SpeculativeJIT::compileInstanceOf):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileInstanceOf):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_instanceof):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_instanceof):

  • jit/Repatch.cpp:

(JSC::tryCacheGetByID):
(JSC::tryCachePutByID):
(JSC::tryRepatchIn):

  • jsc.cpp:

(WTF::DOMJITGetterBaseJSObject::DOMJITGetterBaseJSObject):
(WTF::DOMJITGetterBaseJSObject::createStructure):
(WTF::DOMJITGetterBaseJSObject::create):
(WTF::DOMJITGetterBaseJSObject::DOMJITAttribute::DOMJITAttribute):
(WTF::DOMJITGetterBaseJSObject::DOMJITAttribute::slowCall):
(WTF::DOMJITGetterBaseJSObject::DOMJITAttribute::callDOMGetter):
(WTF::DOMJITGetterBaseJSObject::customGetter):
(WTF::DOMJITGetterBaseJSObject::finishCreation):
(GlobalObject::finishCreation):
(functionCreateDOMJITGetterBaseJSObject):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • runtime/ArrayPrototype.cpp:

(JSC::holesMustForwardToPrototype):
(JSC::fastJoin):
(JSC::arrayProtoFuncReverse):
(JSC::moveElements):

  • runtime/ClonedArguments.cpp:

(JSC::ClonedArguments::createEmpty):
(JSC::ClonedArguments::createWithInlineFrame):
(JSC::ClonedArguments::createWithMachineFrame):
(JSC::ClonedArguments::createByCopyingFrom):

  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/FunctionExecutable.cpp:

(JSC::FunctionExecutable::visitChildren):

  • runtime/FunctionExecutable.h:
  • runtime/FunctionRareData.cpp:

(JSC::FunctionRareData::initializeObjectAllocationProfile):

  • runtime/FunctionRareData.h:
  • runtime/InternalFunction.cpp:

(JSC::InternalFunction::createSubclassStructureSlow):

  • runtime/JSArray.cpp:

(JSC::JSArray::fastSlice):
(JSC::JSArray::shiftCountWithArrayStorage):
(JSC::JSArray::shiftCountWithAnyIndexingType):
(JSC::JSArray::isIteratorProtocolFastAndNonObservable):

  • runtime/JSArrayInlines.h:

(JSC::JSArray::canFastCopy):

  • runtime/JSCJSValue.cpp:

(JSC::JSValue::dumpInContextAssumingStructure const):

  • runtime/JSFunction.cpp:

(JSC::JSFunction::prototypeForConstruction):
(JSC::JSFunction::allocateAndInitializeRareData):
(JSC::JSFunction::initializeRareData):
(JSC::JSFunction::getOwnPropertySlot):

  • runtime/JSFunction.h:
  • runtime/JSMap.cpp:

(JSC::JSMap::isIteratorProtocolFastAndNonObservable):
(JSC::JSMap::canCloneFastAndNonObservable):

  • runtime/JSObject.cpp:

(JSC::JSObject::putInlineSlow):
(JSC::JSObject::createInitialIndexedStorage):
(JSC::JSObject::createArrayStorage):
(JSC::JSObject::convertUndecidedToArrayStorage):
(JSC::JSObject::convertInt32ToArrayStorage):
(JSC::JSObject::convertDoubleToArrayStorage):
(JSC::JSObject::convertContiguousToArrayStorage):
(JSC::JSObject::ensureInt32Slow):
(JSC::JSObject::ensureDoubleSlow):
(JSC::JSObject::ensureContiguousSlow):
(JSC::JSObject::ensureArrayStorageSlow):
(JSC::JSObject::setPrototypeDirect):
(JSC::JSObject::ordinaryToPrimitive const):
(JSC::JSObject::putByIndexBeyondVectorLength):
(JSC::JSObject::putDirectIndexSlowOrBeyondVectorLength):
(JSC::JSObject::getEnumerableLength):
(JSC::JSObject::anyObjectInChainMayInterceptIndexedAccesses const):
(JSC::JSObject::prototypeChainMayInterceptStoreTo):
(JSC::JSObject::needsSlowPutIndexing const):
(JSC::JSObject::suggestedArrayStorageTransition const):

  • runtime/JSObject.h:

(JSC::JSObject::finishCreation):
(JSC::JSObject::getPrototypeDirect const):
(JSC::JSObject::getPropertySlot):

  • runtime/JSObjectInlines.h:

(JSC::JSObject::getPropertySlot):
(JSC::JSObject::getNonIndexPropertySlot):
(JSC::JSObject::putInlineForJSObject):

  • runtime/JSPropertyNameEnumerator.h:

(JSC::propertyNameEnumerator):

  • runtime/JSSet.cpp:

(JSC::JSSet::isIteratorProtocolFastAndNonObservable):
(JSC::JSSet::canCloneFastAndNonObservable):

  • runtime/LazyClassStructure.h:

(JSC::LazyClassStructure::prototypeConcurrently const): Deleted.

  • runtime/Operations.cpp:

(JSC::normalizePrototypeChain):

  • runtime/Operations.h:
  • runtime/Options.h:
  • runtime/PrototypeMap.cpp:

(JSC::PrototypeMap::createEmptyStructure):
(JSC::PrototypeMap::emptyStructureForPrototypeFromBaseStructure):
(JSC::PrototypeMap::emptyObjectStructureForPrototype):
(JSC::PrototypeMap::clearEmptyObjectStructureForPrototype):

  • runtime/PrototypeMap.h:
  • runtime/Structure.cpp:

(JSC::Structure::Structure):
(JSC::Structure::create):
(JSC::Structure::holesMustForwardToPrototype const):
(JSC::Structure::changePrototypeTransition):
(JSC::Structure::isCheapDuringGC):
(JSC::Structure::toStructureShape):
(JSC::Structure::dump const):
(JSC::Structure::canCachePropertyNameEnumerator const):
(JSC::Structure::anyObjectInChainMayInterceptIndexedAccesses const): Deleted.
(JSC::Structure::needsSlowPutIndexing const): Deleted.
(JSC::Structure::suggestedArrayStorageTransition const): Deleted.
(JSC::Structure::prototypeForLookup const): Deleted.
(JSC::Structure::prototypeChainMayInterceptStoreTo): Deleted.
(JSC::Structure::canUseForAllocationsOf): Deleted.

  • runtime/Structure.h:
  • runtime/StructureChain.h:
  • runtime/StructureInlines.h:

(JSC::Structure::create):
(JSC::Structure::storedPrototypeObject const):
(JSC::Structure::storedPrototypeStructure const):
(JSC::Structure::storedPrototype const):
(JSC::prototypeForLookupPrimitiveImpl):
(JSC::Structure::prototypeForLookup const):
(JSC::Structure::prototypeChain const):
(JSC::Structure::isValid const):
(JSC::Structure::add):
(JSC::Structure::setPropertyTable):
(JSC::Structure::shouldConvertToPolyProto):

  • runtime/StructureRareData.h:
  • runtime/TypeProfilerLog.cpp:

(JSC::TypeProfilerLog::processLogEntries):

  • runtime/TypeSet.cpp:

(JSC::TypeSet::addTypeInformation):

  • runtime/TypeSet.h:
  • runtime/WriteBarrier.h:

(JSC::WriteBarrierBase<Unknown>::isInt32 const):

Source/WTF:

  • wtf/Box.h:

(WTF::Box::operator bool const):
(WTF::Box::operator bool): Deleted.
Make Box movable. Also ensure its operator bool doesn't do an atomic increment.

  • wtf/RefPtr.h:

(WTF::RefPtr::operator bool const):
Add explicit operator bool() for RefPtr.

Tools:

  • Scripts/run-jsc-stress-tests:
6:40 PM Changeset in webkit [222826] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit

Correct nullptr dereference during shutdown
https://bugs.webkit.org/show_bug.cgi?id=177845
<rdar://problem/33651405>

Reviewed by Chris Dumez.

It looks like the ResourceLoadStatisticsPersistentStorage destructor is calling code that attempts
to use member variables in its owning class (WebResourceLoadStatisticsStore). Since these may have
already been destroyed, they are in an invalid state when accessed.

  • UIProcess/ResourceLoadStatisticsPersistentStorage.cpp:

(WebKit::ResourceLoadStatisticsPersistentStorage::~ResourceLoadStatisticsPersistentStorage): Do not call
finishAllPendingWorkSynchronously() in the destructor, since it relies on the m_memoryStore to be
a reference to completely valid object.

  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::~WebResourceLoadStatisticsStore): Instead, call
'finishAllPendingWorkSynchronously' here, when the object is still in a known valid state.

5:53 PM Changeset in webkit [222825] by mmaxfield@apple.com
  • 1 edit
    3 adds in trunk/Tools

Create a SPIR-V assembler
https://bugs.webkit.org/show_bug.cgi?id=177726

Reviewed by Filip Pizlo.

Khronos has released a json file containing every SPIR-V opcode and operand at
https://github.com/KhronosGroup/SPIRV-Headers/blob/master/include/spirv/1.2/spirv.core.grammar.json
This patch creates a function which loads this file (via the fetch API), parses it, and creates
an object which holds two things:

  • For each opcode, a class which accepts the appropriate operands
  • For each enum type, an object which holds each enum value

The constructor for each opcode is smart enough to do some basic type-checking of the argument,
according to the types listed in Khronos's json file.

This patch also includes an example .html file which outputs a dummy SPIR-V program,
which happens to be compatible with the SPIR-V demo at
https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/master/demos/cube.cpp
If you modify this demo to use the generated SPIR-V program, you can see the result in
action.

This patch also commits a copy of Khronos's json file mentioned above. This isn't the first
Khronos file we've committed into our repository with this license, so there shouldn't be any
problems there.

  • WebGPUShadingLanguageRI/SPIR-V.js: Added.

(SPIRV.):
(SPIRVAssembler):
(SPIRVAssembler.prototype.append):
(SPIRVAssembler.prototype.get size):
(SPIRVAssembler.prototype.get storage):
(SPIRVAssembler.prototype.get result):

  • WebGPUShadingLanguageRI/SPIRV.html: Added.
  • WebGPUShadingLanguageRI/spirv.core.grammar.json: Added.
5:51 PM Changeset in webkit [222824] by achristensen@apple.com
  • 15 edits in trunk/Source/WebKit

Moderize WebKit's back forward list code
https://bugs.webkit.org/show_bug.cgi?id=177843

Reviewed by Tim Horton.

Use Ref instead of RefPtr when possible.
Use references instead of pointers when possible.
Remove unnecessary null checks.
Reduce unnecessary Vector copying.

  • Shared/SessionState.h:
  • Shared/WebBackForwardListItem.h:
  • UIProcess/API/APILoaderClient.h:

(API::LoaderClient::didChangeBackForwardList):
(API::LoaderClient::shouldKeepCurrentBackForwardListItemInList):

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageLoaderClient):

  • UIProcess/WebBackForwardList.cpp:

(WebKit::WebBackForwardList::pageClosed):
(WebKit::WebBackForwardList::addItem):
(WebKit::WebBackForwardList::goToItem):
(WebKit::WebBackForwardList::currentItem const):
(WebKit::WebBackForwardList::backItem const):
(WebKit::WebBackForwardList::forwardItem const):
(WebKit::WebBackForwardList::itemAtIndex const):
(WebKit::WebBackForwardList::backListAsAPIArrayWithLimit const):
(WebKit::WebBackForwardList::forwardListAsAPIArrayWithLimit const):
(WebKit::WebBackForwardList::removeAllItems):
(WebKit::WebBackForwardList::clear):
(WebKit::WebBackForwardList::backForwardListState const):
(WebKit::WebBackForwardList::restoreFromState):

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

(WebKit::WebPageProxy::reattachToWebProcessWithItem):
(WebKit::WebPageProxy::initializeWebPage):
(WebKit::WebPageProxy::didChangeBackForwardList):
(WebKit::WebPageProxy::shouldKeepCurrentBackForwardListItemInList):
(WebKit::WebPageProxy::backForwardGoToItem):

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

(WebKit::WebProcessProxy::registerNewWebBackForwardListItem):

  • UIProcess/WebProcessProxy.h:
  • WebProcess/WebPage/WebBackForwardListProxy.cpp:

(WebKit::WebBackForwardListProxy::itemAtIndex):

5:13 PM Changeset in webkit [222823] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

Move scroll snap point unregistration from willBeRemovedFromTree to willBeDestroyed
https://bugs.webkit.org/show_bug.cgi?id=177830
<rdar://problem/34796065>

Reviewed by Antti Koivisto.

willBeRemovedFromTree is called conditionally, relying on unregistering objects in there is highly error prone.

Covered by existing tests.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::willBeDestroyed):
(WebCore::RenderBox::willBeRemovedFromTree): Deleted.

  • rendering/RenderBox.h:
5:05 PM Changeset in webkit [222822] by jdiggs@igalia.com
  • 3 edits
    2 adds in trunk

AX: [ATK] ARIA menuitems should be exposed with ATK_ROLE_MENU_ITEM even when it's the child of group role
https://bugs.webkit.org/show_bug.cgi?id=177811

Reviewed by Chris Fleizach.

Source/WebCore:

AccessibilityNodeObject::remapAriaRoleDueToParent() remaps ARIA menuitems to the
MenuButtonRole AccessibilityRole when the menuitem's parent is an ARIA group, but
the ATK code was not handling that remapped role value. As a result, the element
was being exposed as ATK_ROLE_UNKNOWN. Add MenuButtonRole to the AccessibilityRole
types exposed as ATK_ROLE_MENU_ITEM.

Test: accessibility/gtk/menu-with-group-child-tree.html

  • accessibility/atk/WebKitAccessibleWrapperAtk.cpp:

(atkRole):

LayoutTests:

  • accessibility/gtk/menu-with-group-child-tree-expected.txt: Added.
  • accessibility/gtk/menu-with-group-child-tree.html: Added.
5:03 PM Changeset in webkit [222821] by jdiggs@igalia.com
  • 3 edits
    2 adds in trunk

AX: [ATK] aria-rowindex set on row element is not being exposed
https://bugs.webkit.org/show_bug.cgi?id=177821

Reviewed by Chris Fleizach.

Source/WebCore:

Expose the value of aria-rowindex when set on a row as an object
attribute, as we already do when it's set on a cell.

Test: accessibility/gtk/aria-rowindex-on-row.html

  • accessibility/atk/WebKitAccessibleWrapperAtk.cpp:

(webkitAccessibleGetAttributes):

LayoutTests:

  • accessibility/gtk/aria-rowindex-on-row-expected.txt: Added.
  • accessibility/gtk/aria-rowindex-on-row.html: Added.
4:59 PM Changeset in webkit [222820] by Chris Dumez
  • 11 edits
    1 add in trunk

SharedStringHashStore should support removing hashes
https://bugs.webkit.org/show_bug.cgi?id=177770

Reviewed by Alex Christensen.

Source/WebKit:

SharedStringHashStore should support removing hashes. It currently only supports adding hashes or
clearing all of them, which is sufficient for the VisitedLinkStore but will not be for Service
Worker purposes.

  • Shared/SharedStringHashStore.cpp:

(WebKit::SharedStringHashStore::SharedStringHashStore):
(WebKit::SharedStringHashStore::add):
(WebKit::SharedStringHashStore::remove):
(WebKit::SharedStringHashStore::contains):
(WebKit::SharedStringHashStore::clear):
(WebKit::SharedStringHashStore::resizeTable):
(WebKit::SharedStringHashStore::pendingOperationsTimerFired):

  • Shared/SharedStringHashStore.h:
  • Shared/SharedStringHashTable.cpp:

(WebKit::SharedStringHashTable::remove):

  • Shared/SharedStringHashTable.h:
  • UIProcess/API/Cocoa/_WKVisitedLinkStore.h:
  • UIProcess/API/Cocoa/_WKVisitedLinkStore.mm:

(-[_WKVisitedLinkStore containsVisitedLinkWithURL:]):
(-[_WKVisitedLinkStore removeVisitedLinkWithURL:]):

  • UIProcess/VisitedLinkStore.cpp:

(WebKit::VisitedLinkStore::containsVisitedLinkHash):
(WebKit::VisitedLinkStore::removeVisitedLinkHash):
(WebKit::VisitedLinkStore::didUpdateSharedStringHashes):

  • UIProcess/VisitedLinkStore.h:

Tools:

Add API test coverage.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/VisitedLinkStore.mm: Added.

(TestWebKitAPI::TEST):

4:35 PM Changeset in webkit [222819] by dbates@webkit.org
  • 6 edits in trunk/Source/WebCore

Share code to normalize an HTTP method
https://bugs.webkit.org/show_bug.cgi?id=177837

Reviewed by Andy Estes.

Currently we duplicate code in XMLHttpRequest and FetchRequest to normalize an HTTP method.
We should add a common helper function and update both classes to make use of it.

No functionality changed. So, no new tests.

  • Modules/fetch/FetchRequest.cpp:

(WebCore::setMethod): Modified to use WebCore::normalizeHTTPMethod().

  • platform/network/HTTPParsers.cpp:

(WebCore::normalizeHTTPMethod): Moved from XMLHttpRequest.cpp.

  • platform/network/HTTPParsers.h:
  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::open): Modified to use WebCore::normalizeHTTPMethod().
(WebCore::XMLHttpRequest::uppercaseKnownHTTPMethod): Deleted; moved to HTTPParsers.cpp.

  • xml/XMLHttpRequest.h:
4:17 PM Changeset in webkit [222818] by Ms2ger@igalia.com
  • 3 edits
    30 deletes in trunk/LayoutTests

Remove some duplicate w3c tests for media tracks.
https://bugs.webkit.org/show_bug.cgi?id=177819

Reviewed by Youenn Fablet.

All these tests also exist in
imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/interfaces,
where they are kept up-to-date with upstream.

  • media/track/w3c/interfaces/HTMLMediaElement/addTextTrack-expected.txt: Removed.
  • media/track/w3c/interfaces/HTMLMediaElement/addTextTrack.html: Removed.
  • media/track/w3c/interfaces/HTMLMediaElement/textTracks-expected.txt: Removed.
  • media/track/w3c/interfaces/HTMLMediaElement/textTracks.html: Removed.
  • media/track/w3c/interfaces/HTMLTrackElement/default-expected.txt: Removed.
  • media/track/w3c/interfaces/HTMLTrackElement/default.html: Removed.
  • media/track/w3c/interfaces/HTMLTrackElement/label-expected.txt: Removed.
  • media/track/w3c/interfaces/HTMLTrackElement/label.html: Removed.
  • media/track/w3c/interfaces/HTMLTrackElement/readyState-expected.txt: Removed.
  • media/track/w3c/interfaces/HTMLTrackElement/readyState.html: Removed.
  • media/track/w3c/interfaces/HTMLTrackElement/srclang-expected.txt: Removed.
  • media/track/w3c/interfaces/HTMLTrackElement/srclang.html: Removed.
  • media/track/w3c/interfaces/HTMLTrackElement/track-expected.txt: Removed.
  • media/track/w3c/interfaces/HTMLTrackElement/track.html: Removed.
  • media/track/w3c/interfaces/TextTrack/addCue-expected.txt: Removed.
  • media/track/w3c/interfaces/TextTrack/addCue.html: Removed.
  • media/track/w3c/interfaces/TextTrack/constants-expected.txt: Removed.
  • media/track/w3c/interfaces/TextTrack/constants.html: Removed.
  • media/track/w3c/interfaces/TextTrack/kind-expected.txt: Removed.
  • media/track/w3c/interfaces/TextTrack/kind.html: Removed.
  • media/track/w3c/interfaces/TextTrack/label-expected.txt: Removed.
  • media/track/w3c/interfaces/TextTrack/label.html: Removed.
  • media/track/w3c/interfaces/TextTrack/language-expected.txt: Removed.
  • media/track/w3c/interfaces/TextTrack/language.html: Removed.
  • media/track/w3c/interfaces/TextTrack/mode-expected.txt: Removed.
  • media/track/w3c/interfaces/TextTrack/mode.html: Removed.
  • media/track/w3c/interfaces/TextTrack/oncuechange-expected.txt: Removed.
  • media/track/w3c/interfaces/TextTrack/oncuechange.html: Removed.
  • media/track/w3c/interfaces/TextTrack/removeCue-expected.txt: Removed.
  • media/track/w3c/interfaces/TextTrack/removeCue.html: Removed.
  • media/track/w3c/interfaces/TextTrackCue/endTime-expected.txt: Removed.
  • media/track/w3c/interfaces/TextTrackCue/endTime.html: Removed.
  • media/track/w3c/interfaces/TextTrackCue/id-expected.txt: Removed.
  • media/track/w3c/interfaces/TextTrackCue/id.html: Removed.
  • media/track/w3c/interfaces/TextTrackCue/pauseOnExit-expected.txt: Removed.
  • media/track/w3c/interfaces/TextTrackCue/pauseOnExit.html: Removed.
  • media/track/w3c/interfaces/TextTrackCue/startTime-expected.txt: Removed.
  • media/track/w3c/interfaces/TextTrackCue/startTime.html: Removed.
  • media/track/w3c/interfaces/TextTrackCue/track-expected.txt: Removed.
  • media/track/w3c/interfaces/TextTrackCue/track.html: Removed.
  • media/track/w3c/interfaces/TextTrackCueList/getCueById-expected.txt: Removed.
  • media/track/w3c/interfaces/TextTrackCueList/getCueById.html: Removed.
  • media/track/w3c/interfaces/TextTrackCueList/length-expected.txt: Removed.
  • media/track/w3c/interfaces/TextTrackCueList/length.html: Removed.
  • media/track/w3c/interfaces/TextTrackList/length-expected.txt: Removed.
  • media/track/w3c/interfaces/TextTrackList/length.html: Removed.
  • media/track/w3c/interfaces/TextTrackList/onaddtrack-expected.txt: Removed.
  • media/track/w3c/interfaces/TextTrackList/onaddtrack.html: Removed.
  • media/track/w3c/interfaces/TextTrackList/onremovetrack-expected.txt: Removed.
  • media/track/w3c/interfaces/TextTrackList/onremovetrack.html: Removed.
  • platform/ios/TestExpectations: Removed references to removed tests.
  • platform/mac/TestExpectations: Removed references to removed tests.
4:12 PM Changeset in webkit [222817] by dbates@webkit.org
  • 9 edits in trunk/LayoutTests

XMLHttpRequest.setRequestHeader() should allow Content-Transfer-Encoding header; remove
duplicate logic to check for a forbidden XHR header field
https://bugs.webkit.org/show_bug.cgi?id=177829
<rdar://problem/34798441>

LayoutTests/imported/w3c:

Update expected result now that we match the XHR standard, <https://xhr.spec.whatwg.org> (09/08/2017).

We no longer consider Content-Transfer-Encoding and User-Agent forbidden headers as per
the standard.

  • web-platform-tests/XMLHttpRequest/setrequestheader-header-allowed-expected.txt:

LayoutTests:

Update tests and expected results now that we match the XHR standard, <https://xhr.spec.whatwg.org> (09/08/2017).

We no longer consider Content-Transfer-Encoding and User-Agent forbidden headers as per
the standard.

  • fast/xmlhttprequest/set-dangerous-headers-expected.txt:
  • fast/xmlhttprequest/set-dangerous-headers-in-dashboard.html:
  • fast/xmlhttprequest/set-dangerous-headers.html:
  • http/tests/xmlhttprequest/check-combining-headers-expected.txt:
  • http/tests/xmlhttprequest/set-dangerous-headers-expected.txt:
  • http/tests/xmlhttprequest/set-dangerous-headers.html:
4:08 PM Changeset in webkit [222816] by Dewei Zhu
  • 2 edits in trunk/Tools

Fix missing import for BenchmarkRunner.
https://bugs.webkit.org/show_bug.cgi?id=177842

Reviewed by Ryosuke Niwa.

'show_results' requires BenchmarkRunner.

  • Scripts/webkitpy/benchmark_runner/run_benchmark.py:
3:40 PM Changeset in webkit [222815] by dbates@webkit.org
  • 6 edits in trunk/Source/WebCore

Share code to determine a forbidden method
https://bugs.webkit.org/show_bug.cgi?id=177833

Reviewed by Andy Estes.

Currently we duplicate code in XMLHttpRequest and FetchRequest to determine if a method is
forbidden. We should add a common helper function and update both classes to make use of it.

No functionality changed. So, no new tests.

  • Modules/fetch/FetchRequest.cpp:

(WebCore::setMethod): Modified to use WebCore::isForbiddenMethod().

  • platform/network/HTTPParsers.cpp:

(WebCore::isForbiddenMethod): Added.

  • platform/network/HTTPParsers.h:
  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::open): Modified to use WebCore::isForbiddenMethod().
(WebCore::XMLHttpRequest::isAllowedHTTPMethod): Deleted.

  • xml/XMLHttpRequest.h:
3:39 PM Changeset in webkit [222814] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

RenderMenuList should not hold raw pointers
https://bugs.webkit.org/show_bug.cgi?id=177836

Reviewed by Antti Koivisto.

While both m_buttonText and m_innerBlock are child renderers of
the RenderMenuList, so the their lifecycles are supposed to tied
to the parent object, this patch removes some manual raw pointer managing.

Covered by existing tests.

  • rendering/RenderMenuList.cpp:

(WebCore::RenderMenuList::RenderMenuList):
(WebCore::RenderMenuList::createInnerBlock):
(RenderMenuList::takeChild):
(RenderMenuList::setText):

  • rendering/RenderMenuList.h:
3:12 PM Changeset in webkit [222813] by Megan Gardner
  • 2 edits
    2 adds in trunk/LayoutTests

Add long press and drag test
https://bugs.webkit.org/show_bug.cgi?id=177289

Reviewed by Wenson Hsieh.

Adding a test to test the long press and then drag functionality of selection.
Also add additional helper functions to basic gestures, so that this and other
tests can be written. Mostly deals with not lifting between gestures.

  • fast/events/touch/ios/long-press-then-drag-to-select-text-expected.txt: Added.
  • fast/events/touch/ios/long-press-then-drag-to-select-text.html: Added.
  • fast/events/touch/ios/resources/basic-gestures.js:

(longPressAndHoldAtPoint):
(touchAndDragFromPointToPoint):

2:56 PM Changeset in webkit [222812] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

Include a few widespread WTF headers in WebCorePrefix.h
https://bugs.webkit.org/show_bug.cgi?id=173481

  • WebCorePrefix.h:

Turn this off on Windows because it doesn't work; needs further investigation.

2:27 PM Changeset in webkit [222811] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skip imported/w3c/web-platform-tests/payment-request/rejects_if_not_active.https.html on iOS.
https://bugs.webkit.org/show_bug.cgi?id=177832

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
2:12 PM Changeset in webkit [222810] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

Include a few widespread WTF headers in WebCorePrefix.h
https://bugs.webkit.org/show_bug.cgi?id=173481

Reviewed by Alex Christensen.

  • WebCorePrefix.h:

These are four of the headers that contribute the most pre-processed
source to the WebCore build. They (and their dependents) change infrequently
enough that a world rebuild of WebCore when they change seems like an
acceptable tradeoff for the ~9% reduction in WebCore build time that I
measure from this change.

We can't do this on macOS 10.12 because of https://bugs.llvm.org/show_bug.cgi?id=33520.

2:10 PM Changeset in webkit [222809] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Fix API tests after r222794.
https://bugs.webkit.org/show_bug.cgi?id=177825

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::willGoToBackForwardListItem):
Sometimes there's no navigation client.

2:10 PM Changeset in webkit [222808] by Joseph Pecoraro
  • 3 edits in trunk/LayoutTests

Layout Test http/tests/inspector/network/beacon-type.html is flaky.
https://bugs.webkit.org/show_bug.cgi?id=177834

Unreviewed test gardening.

  • http/tests/inspector/network/beacon-type.html:
  • http/tests/inspector/network/ping-type.html:

Don't wait for the resource to finish loading if it has already finished loading.
Logs showed the resource had already finished loading earlier, before this
promise microtask started running.

1:55 PM Changeset in webkit [222807] by dbates@webkit.org
  • 9 edits in trunk

XMLHttpRequest.setRequestHeader() should allow Content-Transfer-Encoding header; remove
duplicate logic to check for a forbidden XHR header field
https://bugs.webkit.org/show_bug.cgi?id=177829

Reviewed by Alexey Proskuryakov.

Source/WebCore:

Use isForbiddenHeaderName() (defined in HTTPParsers.h) to check if the header field specified
to XMLHttpRequest.setRequestHeader() is allowed. Among other benefits this makes the behavior
of XMLHttpRequest.setRequestHeader() more closely aligned with the behavior of this method in
the XHR standard, <https://xhr.spec.whatwg.org> (8 September 2017). In particular, XMLHttpRequest.setRequestHeader()
no longer forbids setting the header Content-Transfer-Encoding. This header has not been
considered a forbidden header since <https://www.w3.org/TR/2012/WD-XMLHttpRequest-20121206/>.

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::setRequestHeader):
(WebCore::isForbiddenRequestHeader): Deleted.
(WebCore::XMLHttpRequest::isAllowedHTTPHeader): Deleted.

  • xml/XMLHttpRequest.h:

LayoutTests:

Update tests and test results now that we no longer consider Content-Transfer-Encoding a
forbidden header.

  • fast/xmlhttprequest/set-dangerous-headers-expected.txt:
  • fast/xmlhttprequest/set-dangerous-headers-in-dashboard.html:
  • fast/xmlhttprequest/set-dangerous-headers.html:
  • http/tests/xmlhttprequest/set-dangerous-headers-expected.txt:
  • http/tests/xmlhttprequest/set-dangerous-headers.html:
1:51 PM Changeset in webkit [222806] by Ryan Haddad
  • 22 edits
    1 move
    1 add
    14 deletes in trunk/Source/WebCore

Unreviewed, rolling out r222686, r222695, and r222698.
https://bugs.webkit.org/show_bug.cgi?id=177835

Caused LayoutTests to crash in
WebCore::TimerBase::setNextFireTime (Requested by ryanhaddad
on #webkit).

Reverted changesets:

"[Settings] Replace SettingsMacros.h with a generated base
class for Settings"
https://bugs.webkit.org/show_bug.cgi?id=177681
http://trac.webkit.org/changeset/222686

"[Settings] Enums should not be passed by const reference"
https://bugs.webkit.org/show_bug.cgi?id=177727
http://trac.webkit.org/changeset/222695

"[Settings] Move remaining simple settings to Settings.in"
https://bugs.webkit.org/show_bug.cgi?id=177730
http://trac.webkit.org/changeset/222698

Patch by Commit Queue <commit-queue@webkit.org> on 2017-10-03

1:36 PM Changeset in webkit [222805] by Joseph Pecoraro
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening. Add debugging to flakey test.

  • http/tests/inspector/network/beacon-type.html:

Add some debugging to try and understand why this test times out.

1:32 PM Changeset in webkit [222804] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[WPE] Bump deps to add support for xdg-shell-unstable-v6 protocol
https://bugs.webkit.org/show_bug.cgi?id=177820

Patch by Olivier Blin <Olivier Blin> on 2017-10-03
Reviewed by Žan Doberšek.

gnome-shell does not advertize the xdg-shell protocol anymore, but xdg-shell-unstable-v6 instead.
Support has been added in WPEBackend-mesa, we need to update the requirements.
wayland-1.10 is needed for wl_proxy_get_version(), used in the generated headers.

  • wpe/jhbuild.modules:
12:56 PM Changeset in webkit [222803] by jer.noble@apple.com
  • 5 edits in trunk/Source/WebCore

Implement quality-of-service tiers in WebCoreDecompressionSession
https://bugs.webkit.org/show_bug.cgi?id=177769

Reviewed by Dean Jackson.

VTDecompressionSession will suggest quality-of-service tiers to be used when decompression
can't keep up with playback speed. Use a simple exponential-moving-average heuristic to
determine when to move up and down the tiers.

Drive-by fix: When frames are so late that they miss the display deadline, mark them as
dropped rather than just delayed.

  • platform/graphics/cocoa/WebCoreDecompressionSession.h:
  • platform/graphics/cocoa/WebCoreDecompressionSession.mm:

(WebCore::WebCoreDecompressionSession::ensureDecompressionSessionForSample):
(WebCore::WebCoreDecompressionSession::decodeSample):
(WebCore::WebCoreDecompressionSession::handleDecompressionOutput):
(WebCore::WebCoreDecompressionSession::automaticDequeue):
(WebCore::WebCoreDecompressionSession::enqueueDecodedSample):
(WebCore::WebCoreDecompressionSession::resetQosTier):
(WebCore::WebCoreDecompressionSession::increaseQosTier):
(WebCore::WebCoreDecompressionSession::decreaseQosTier):
(WebCore::WebCoreDecompressionSession::updateQosWithDecodeTimeStatistics):

  • platform/cocoa/VideoToolboxSoftLink.cpp:
  • platform/cocoa/VideoToolboxSoftLink.h:
12:23 PM Changeset in webkit [222802] by achristensen@apple.com
  • 8 edits in trunk/Source/WebKit

Add ObjC equivalent of WKPageLoaderClient.pluginDidFail
https://bugs.webkit.org/show_bug.cgi?id=177787
<rdar://problem/22387633>

Reviewed by Tim Horton.

  • UIProcess/API/APILoaderClient.h:

(API::LoaderClient::didFailToInitializePlugin):

  • UIProcess/API/APINavigationClient.h:

(API::NavigationClient::canHandleDidFailToInitializePlugIn const):
(API::NavigationClient::didFailToInitializePlugIn):

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageLoaderClient):

  • UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
  • UIProcess/Cocoa/NavigationState.h:
  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::setNavigationDelegate):
(WebKit::NavigationState::NavigationClient::canHandleDidFailToInitializePlugIn const):
(WebKit::NavigationState::NavigationClient::didFailToInitializePlugIn):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didFailToInitializePlugin):

12:21 PM Changeset in webkit [222801] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Layers tab sidebar's DOM highlight should be by row hover, not row selection
https://bugs.webkit.org/show_bug.cgi?id=177690

Patch by Ross Kirsling <Ross Kirsling> on 2017-10-03
Reviewed by Devin Rousso.

  • UserInterface/Views/LayerDetailsSidebarPanel.js:

(WI.LayerDetailsSidebarPanel):
(WI.LayerDetailsSidebarPanel.prototype._buildDataGrid):
(WI.LayerDetailsSidebarPanel.prototype._dataGridSelectedNodeChanged):
(WI.LayerDetailsSidebarPanel.prototype._dataGridMouseMove):
(WI.LayerDetailsSidebarPanel.prototype._dataGridMouseLeave):
(WI.LayerDetailsSidebarPanel.prototype._hideDOMNodeHighlight):
(WI.LayerDetailsSidebarPanel.prototype._dataGridFocused): Deleted.
(WI.LayerDetailsSidebarPanel.prototype._dataGridBlurred): Deleted.
(WI.LayerDetailsSidebarPanel.prototype._highlightSelectedNode): Deleted.

12:21 PM Changeset in webkit [222800] by Adrian Perez de Castro
  • 6 edits
    2 adds in trunk

[GTK] Support the "system" CSS font family
https://bugs.webkit.org/show_bug.cgi?id=177755

Reviewed by Carlos Garcia Campos.

Obtain the system UI font from the GtkSettings::gtk-font-name property

Source/WebCore:

Test: platform/gtk/fonts/systemFont.html

  • platform/graphics/freetype/FontCacheFreeType.cpp:

(WebCore::getFamilyNameStringFromFamily): Use defaultGtkSystemFont()
to handle -webkit-system-font and -webkit-system-ui.
(WebCore::isCommonlyUsedGenericFamily): Handle -webkit-system-font and
-webkit-system-ui as generic family names.

  • platform/graphics/gtk/GtkUtilities.cpp:

(WebCore::defaultGtkSystemFont): Added.

  • platform/graphics/gtk/GtkUtilities.h: Add prototype for defaultGtkSystemFont().

LayoutTests:

  • platform/gtk/fonts/systemFont-expected.html: Added.
  • platform/gtk/fonts/systemFont.html: Added.
12:17 PM Changeset in webkit [222799] by Nikita Vasilyev
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Styles Redesign: support editing of rule selectors
https://bugs.webkit.org/show_bug.cgi?id=177012

Reviewed by Matt Baker.

Clicking or focusing (by tabbing from another field) on a CSS selector should select the text and make the selector
field editable.

Keyboard behavior while editing:

  • Enter should commit changes.
  • Escape should discard changes.
  • Tab should commit changes and navigate to the first property name.
  • Shift-Tab should commit changes and navigate to the last rule's property value, if there's one.
  • UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:

(WI.SpreadsheetStyleProperty.prototype._update):
Add tabIndex so the keyboard navigation (Tab & Shift-Tab) to and from selectors works as expected.

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:

(.spreadsheet-css-declaration .selector:focus,):
(.spreadsheet-css-declaration .selector.spreadsheet-selector-field):
(.spreadsheet-css-declaration .selector.spreadsheet-selector-field.editing):

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:

(WI.SpreadsheetCSSStyleDeclarationSection.prototype.get selectorEditable):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.layout):
Split layout into _renderOrigin and _renderSelector, so selector field can be updated separately
from everything else.

(WI.SpreadsheetCSSStyleDeclarationSection.prototype.cssStyleDeclarationTextEditorFocused):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetSelectorFieldDidChange):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetSelectorFieldDidDiscard):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._discardSelectorChange):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._renderSelector):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._renderOrigin):

(WI.SpreadsheetSelectorField):
(WI.SpreadsheetSelectorField.prototype.get editing):
(WI.SpreadsheetSelectorField.prototype.startEditing):
(WI.SpreadsheetSelectorField.prototype.stopEditing):
(WI.SpreadsheetSelectorField.prototype._handleClick):
(WI.SpreadsheetSelectorField.prototype._handleFocus):
(WI.SpreadsheetSelectorField.prototype._handleBlur):
(WI.SpreadsheetSelectorField.prototype._handleKeyDown):

12:09 PM Changeset in webkit [222798] by jmarcell@apple.com
  • 2 edits in branches/safari-604-branch/Source/WebCore

Cherry-pick r222786. rdar://problem/34706688

12:09 PM Changeset in webkit [222797] by jmarcell@apple.com
  • 6 edits in branches/safari-604-branch

Cherry-pick r222779. rdar://problem/34706688

12:02 PM Changeset in webkit [222796] by Adrian Perez de Castro
  • 2 edits in trunk/Source/WebKit

[GTK] Prefer -webkit-system-font
https://bugs.webkit.org/show_bug.cgi?id=177814

Reviewed by Carlos Garcia Campos.

Use "font-family: -webkit-system-font" instead of "font: menu".

  • UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp:

(WebKit::RemoteInspectorProtocolHandler::handleRequest): Edited HTML snippet.

11:54 AM Changeset in webkit [222795] by dbates@webkit.org
  • 5 edits
    4 adds in trunk

[XHR] Only exempt Dashboard widgets from XHR header restrictions
https://bugs.webkit.org/show_bug.cgi?id=177824
<rdar://problem/34384301>

Reviewed by Alexey Proskuryakov.

Source/WebCore:

Currently we allow file URLs to set arbitrary XHR headers. In contrast, non-file URLs are
restricted from setting some XHR headers (e.g. COOKIE). Historically the relaxation for file
URL was for backwards compatibility to allow Dashboard widgets to work. Instead we should
apply the non-file URL policy to all URLs and only relax the policy for Dashboard widgets.

Tests: fast/xmlhttprequest/set-dangerous-headers-in-dashboard.html

fast/xmlhttprequest/set-dangerous-headers.html

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::setRequestHeader):

LayoutTests:

Add tests to ensure that file URLs are forbidden from setting the same set of blacklisted
headers as non-file URLs except when running in Dashboard compatibility mode.

  • TestExpectations: Mark test fast/xmlhttprequest/set-dangerous-headers-in-dashboard.html

as WontFix on all platforms. We will selectively enable this test on Mac because it is the
only platform that supports Dashboard widgets.

  • fast/xmlhttprequest/set-dangerous-headers-expected.txt: Added.
  • fast/xmlhttprequest/set-dangerous-headers-in-dashboard-expected.txt: Added.
  • fast/xmlhttprequest/set-dangerous-headers-in-dashboard.html: Added.
  • fast/xmlhttprequest/set-dangerous-headers.html: Added. Derived from LayoutTests/http/tests/xmlhttprequest/set-dangerous-headers.html.
  • platform/mac/TestExpectations: Enable test fast/xmlhttprequest/set-dangerous-headers-in-dashboard.html

on Mac.

11:54 AM Changeset in webkit [222794] by achristensen@apple.com
  • 13 edits in trunk

Add ObjC SPI equivalent to WKPageLoaderClient.willGoToBackForwardListItem
https://bugs.webkit.org/show_bug.cgi?id=177825
<rdar://problem/22387505>

Reviewed by Tim Horton.

Source/WebKit:

  • UIProcess/API/APILoaderClient.h:

(API::LoaderClient::willGoToBackForwardListItem):

  • UIProcess/API/APINavigationClient.h:

(API::NavigationClient::canHandleWillGoToBackForwardListItem const):
(API::NavigationClient::willGoToBackForwardListItem):

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageLoaderClient):

  • UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
  • UIProcess/Cocoa/NavigationState.h:
  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::setNavigationDelegate):
(WebKit::NavigationState::NavigationClient::canHandleWillGoToBackForwardListItem const):
(WebKit::NavigationState::NavigationClient::willGoToBackForwardListItem):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::willGoToBackForwardListItem):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::shouldGoToHistoryItem const):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/Navigation.mm:

(-[BackForwardDelegate _webView:willGoToBackForwardListItem:inPageCache:]):
(-[BackForwardDelegate webView:didFinishNavigation:]):
(TEST):

11:48 AM Changeset in webkit [222793] by Antti Koivisto
  • 4 edits in trunk

Allow assigning WeakPtr<Derived> to WeakPtr<Base>
https://bugs.webkit.org/show_bug.cgi?id=177817

Reviewed by Geoff Garen.

Source/WTF:

Add templated copy/move constructors/assignment operators, similar to RefPtr.

  • wtf/WeakPtr.h:

(WTF::WeakPtrFactory::createWeakPtr const):
(WTF::weak_reference_upcast):
(WTF::weak_reference_downcast):
(WTF::WeakPtr<T>::WeakPtr):
(WTF::=):
(WTF::makeWeakPtr):

Tools:

  • TestWebKitAPI/Tests/WTF/WeakPtr.cpp:

(TestWebKitAPI::Base::weakPtrFactory):
(TestWebKitAPI::TEST):

11:39 AM Changeset in webkit [222792] by commit-queue@webkit.org
  • 5 edits in trunk

REGRESSION(r221909): Failing fast/text/international/iso-8859-8.html
https://bugs.webkit.org/show_bug.cgi?id=177364

Patch by Fujii Hironori <Fujii Hironori> on 2017-10-03
Reviewed by Carlos Garcia Campos.

Source/WebCore:

Range.getClientRects returned an incorrect rect for a last
collapsed space of RenderText in HarfBuzz port.

HarfBuzzShaper::selectionRect needs to return a valid value even
if the arguments 'from' and 'to' point to the just after the end
of the text run.

Tests: fast/text/international/iso-8859-8.html

  • platform/graphics/harfbuzz/HarfBuzzShaper.cpp:

(WebCore::HarfBuzzShaper::shape): Do not check the return value of
fillGlyphBuffer.
(WebCore::HarfBuzzShaper::fillGlyphBuffer): Change the return
value type from bool to void.
(WebCore::HarfBuzzShaper::selectionRect): Set the rightmost
position to fromX if foundFromX is false.

  • platform/graphics/harfbuzz/HarfBuzzShaper.h: Change the return

value type of fillGlyphBuffer from bool to void.

LayoutTests:

  • platform/gtk/TestExpectations: Unmark fast/text/international/iso-8859-8.html.
11:33 AM Changeset in webkit [222791] by jfbastien@apple.com
  • 100 edits
    9 copies
    2 moves
    4 adds in trunk

WebAssembly: no VM / JS version of everything but Instance
https://bugs.webkit.org/show_bug.cgi?id=177473

Reviewed by Filip Pizlo.

JSTests:

  • Exceeding max on memory growth now returns a range error as per

spec. This is a (very minor) breaking change: it used to throw OOM
error. Update the corresponding test.

  • wasm/js-api/memory-grow.js:

(assertEq):

  • wasm/js-api/table.js:

(assert.throws):

Source/JavaScriptCore:

This change entails cleaning up and splitting a bunch of code which we had
intertwined between C++ classes which represent JS objects, and pure C++
implementation objects. This specific change goes most of the way towards
allowing JSC's WebAssembly to work without VM / JS, up to but excluding
JSWebAssemblyInstance (there's Wasm::Instance, but it's not *the* thing
yet). Because of this we still have a few FIXME identifying places that need to
change. A follow-up change will go the rest of the way.

I went about this change in the simplest way possible: grep the
JavaScriptCore/wasm directory for "JS[C_]" as well as "VM" and exclude the /js/
sub-directory (which contains the JS implementation of WebAssembly).

None of this change removes the need for a JIT entitlement to be able to use
WebAssembly. We don't have an interpreter, the process therefore still needs to
be allowed to JIT to use these pure-C++ APIs.

Interesting things to note:

  • Remove VM from Plan and associated places. It can just live as a capture in the callback lambda if it's needed.
  • Wasm::Memory shouldn't require a VM. It was only used to ask the GC to collect. We now instead pass two lambdas at construction time for this purpose: one to notify of memory pressure, and the other to ask for syncrhonous memory reclamation. This allows whoever creates the memory to dictate how to react to both these cases, and for a JS embedding that's to call the GC (async or sync, respectively).
  • Move grow logic from JSWebAssemblyMemory to Wasm::Memory::grow. Use Expected there, with an enum class for failure types.
  • Exceeding max on memory growth now returns a range error as per spec. This is a (very minor) breaking change: it used to throw OOM error. Update the corresponding test.
  • When generating the grow_memory opcode, no need to get the VM. Instead, reach directly for Wasm::Memory and grow it.
  • JSWebAssemblyMemory::grow can now always throw on failure, because it's only ever called from JS (not from grow_memory as before).
  • Wasm::Memory now takes a callback for successful growth. This allows JS wrappers to register themselves when growth succeeds without Wasm::Memory knowning anything about JS. It'll also allow creating a list of callbacks for when we add thread support (we'll want to notify many wrappers, all under a lock).
  • Wasm::Memory is now back to being the source of truth about address / size, used directly by generated code instead of JSWebAssemblyMemory.
  • Move wasmToJS from the general WasmBinding header to its own header under wasm/js. It's only used by wasm/js/JSWebAssemblyCodeBlock.cpp, and uses VM, and therefore isn't general WebAssembly.
  • Make Wasm::Context an actual type (just a struct holding a JSWebAssemlyInstance for now) instead of an alias for that. Notably this doesn't add anything to the Context and doesn't change what actually gets passed around in JIT code (fast TLS or registers) because these changes potentially impact performance. The entire purpose of this change is to allow passing Wasm::Context around without having to know about VM. Since VM contains a Wasm::Context the JS embedding is effectively the same, but with this setup a non-JS embedding is much better off.
  • Move JSWebAssembly into the JS folder.
  • OMGPlan: use Wasm::CodeBlock directly instead of JSWebAssemblyCodeBlock.
  • wasm->JS stubs are now on Wasm::CodeBlock's tail as raw pointers, instead of being on JSWebAssemblyCodeBlock, and are now called wasm->Embedder stubs. The owned reference is still on JSWebAssemblyCodeBlock, and is still called wasm->JS stub. This move means that the embedder must, after creating a Wasm::CodeBlock, somehow create the stubs to call back into the embedder. This isn't adding any indirection to the generated code because the B3 IR generator now reaches for Wasm::CodeBlock instead of JSWebAssemblyCodeBlock.
  • Move more CodeBlock things. Compilation completion is now marked by its own atomic<bool> flag instead of a nullptr plan: that required using a lock, and was causing a deadlock in stack-trace.js because before my changes JSWebAssemblyCodeBlock did its own completion checking separately from Wasm::CodeBlock, without getting the lock. Now that everything points to Wasm::CodeBlock and there's no cached completion marker, the lock was being acquired in a sanity-check assertion.
  • Embedder -> Wasm wrappers are now generated through a function that's passed in at compilation time, instead of being hard-coded as a JS -> Wasm wrapper.
  • WasmMemory doens't need to know about fault handling thunks. Only the IR generator should know, and should make sure that the exception throwing thunk is generated if any memory is present (note: with signal handling not all of them generate an exception check).
  • Make exception throwing pluggable: instead of having a hard-coded JS-specific lambda we now have a regular C++ function being called from JIT code when a WebAssembly exception is thrown. This allows any embedder to get called as they wish. For now a process can only have a single of these functions (i.e. only one embedder per process) because the trap handler is a singleton. That can be fixed in in #177475.
  • Create WasmEmbedder.h where all embedder plugging will live.
  • Split up JSWebAssemblyTable into Wasm::Table which is refcounted. JSWebAssemblyTable now only contains the JS functions in the table, and Wasm::Table is what's used by the JIT code to lookup where to call and do the instance check (for context switch). Note that this creates an extra allocation for all the instances in Wasm::Table, and in exchange removes an indirection in JIT code because the instance used to be obtained off of the JS function. Also note that it's the embedder than keeps the instances alive, not Wasm::Table (which holds a dumb pointer to the instance), because doing otherwise would cause reference cycles.
  • Add WasmInstance. It doesn't do much for now, owns globals.
  • JSWebAssembly instance now doesn't just contain the imported functions as JSObjects, it also has the corresponding import's instance and wasm entrypoint. This triples the space allocated per instance's imported function, but there shouldn't be that many imports. This has two upsides: it creates smaller and faster code, and makes is easier to disassociate embedder-specific things from embedder-neutral things. The small / faster win is in two places: B3 IR generator only needs offsetOfImportFunction for the call opcode (when the called index is an import) to know whether the import is wasm->wasm or wasm->embedder (this isn't known at compile-time because it's dependent on the import object), this is now done by seeing if that import function has an associated target instance (only wasm->wasm does); the other place is wasmBinding which uses offsetOfImportFunction to figure out the wasm->wasm target instance, and then gets WebAssemblyFunction::offsetOfWasmEntrypointLoadLocation to do a tail call. The disassociation comes because the target instance can be Wasm::Instance once we change what the Context is, and WasmEntrypointLoadLocation is already embedder-independent. As a next step I can move this tail allocation from JSWebAssemblyInstance to Wasm::Instance, and leave importFunction in as an opaque pointer which is embedder-specific, and in JS will remain WriteBarrier<JSObject>.
  • Rename VMEntryFrame to EntryFrame, and in many places pass a pointer to it around instead of VM. This is a first step in allowing entry frames which aren't stored on VM, but which are instead stored in an embedder-specific location. That change won't really affect JS except through code churn, but will allow WebAssembly to use some machinery in a generic manner without having a VM.
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • bytecode/PolymorphicAccess.cpp:

(JSC::AccessGenerationState::emitExplicitExceptionHandler):

  • debugger/Debugger.cpp:

(JSC::Debugger::stepOutOfFunction):
(JSC::Debugger::returnEvent):
(JSC::Debugger::unwindEvent):
(JSC::Debugger::didExecuteProgram):

  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::compileExceptionHandlers):

  • dfg/DFGOSREntry.cpp:

(JSC::DFG::prepareOSREntry):

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::OSRExit::compileOSRExit):
(JSC::DFG::OSRExit::compileExit):

  • dfg/DFGThunks.cpp:

(JSC::DFG::osrEntryThunkGenerator):

  • ftl/FTLCompile.cpp:

(JSC::FTL::compile):

  • ftl/FTLLink.cpp:

(JSC::FTL::link):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::lower):

  • ftl/FTLOSRExitCompiler.cpp:

(JSC::FTL::compileStub):

  • interpreter/CallFrame.cpp:

(JSC::CallFrame::wasmAwareLexicalGlobalObject):
(JSC::CallFrame::callerFrame):
(JSC::CallFrame::unsafeCallerFrame):

  • interpreter/CallFrame.h:

(JSC::ExecState::callerFrame const):
(JSC::ExecState::callerFrameOrEntryFrame const):
(JSC::ExecState::unsafeCallerFrameOrEntryFrame const):

  • interpreter/FrameTracers.h:

(JSC::NativeCallFrameTracer::NativeCallFrameTracer):
(JSC::NativeCallFrameTracerWithRestore::NativeCallFrameTracerWithRestore):
(JSC::NativeCallFrameTracerWithRestore::~NativeCallFrameTracerWithRestore):

  • interpreter/Interpreter.cpp:

(JSC::UnwindFunctor::operator() const):
(JSC::UnwindFunctor::copyCalleeSavesToEntryFrameCalleeSavesBuffer const):
(JSC::Interpreter::unwind):

  • interpreter/StackVisitor.cpp:

(JSC::StackVisitor::StackVisitor):
(JSC::StackVisitor::gotoNextFrame):
(JSC::StackVisitor::readNonInlinedFrame):
(JSC::StackVisitor::Frame::dump const):

  • interpreter/StackVisitor.h:

(JSC::StackVisitor::Frame::callerIsEntryFrame const):

  • interpreter/VMEntryRecord.h:

(JSC::VMEntryRecord::prevTopEntryFrame):
(JSC::VMEntryRecord::unsafePrevTopEntryFrame):
(JSC::EntryFrame::vmEntryRecordOffset):

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::restoreCalleeSavesFromEntryFrameCalleeSavesBuffer):
(JSC::AssemblyHelpers::loadWasmContextInstance):
(JSC::AssemblyHelpers::storeWasmContextInstance):
(JSC::AssemblyHelpers::loadWasmContextInstanceNeedsMacroScratchRegister):
(JSC::AssemblyHelpers::storeWasmContextInstanceNeedsMacroScratchRegister):
(JSC::AssemblyHelpers::copyCalleeSavesToEntryFrameCalleeSavesBufferImpl):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::copyCalleeSavesToVMEntryFrameCalleeSavesBuffer):
(JSC::AssemblyHelpers::copyCalleeSavesToEntryFrameCalleeSavesBuffer):
(JSC::AssemblyHelpers::copyCalleeSavesFromFrameOrRegisterToEntryFrameCalleeSavesBuffer):

  • jit/JIT.cpp:

(JSC::JIT::emitEnterOptimizationCheck):
(JSC::JIT::privateCompileExceptionHandlers):

  • jit/JITExceptions.cpp:

(JSC::genericUnwind):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_throw):
(JSC::JIT::emit_op_catch):
(JSC::JIT::emitSlow_op_loop_hint):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_throw):
(JSC::JIT::emit_op_catch):

  • jit/JITOperations.cpp:
  • jit/ThunkGenerators.cpp:

(JSC::throwExceptionFromCallSlowPathGenerator):
(JSC::nativeForGenerator):

  • jsc.cpp:

(functionDumpCallFrame):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LLIntThunks.cpp:

(JSC::vmEntryRecord):

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/Options.cpp:

(JSC::recomputeDependentOptions):

  • runtime/Options.h:
  • runtime/SamplingProfiler.cpp:

(JSC::FrameWalker::FrameWalker):
(JSC::FrameWalker::advanceToParentFrame):
(JSC::SamplingProfiler::processUnverifiedStackTraces):

  • runtime/ThrowScope.cpp:

(JSC::ThrowScope::~ThrowScope):

  • runtime/VM.cpp:

(JSC::VM::VM):
(JSC::VM::~VM):

  • runtime/VM.h:

(JSC::VM::topEntryFrameOffset):

  • runtime/VMTraps.cpp:

(JSC::isSaneFrame):
(JSC::VMTraps::tryInstallTrapBreakpoints):
(JSC::VMTraps::invalidateCodeBlocksOnStack):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::restoreWasmContextInstance):
(JSC::Wasm::B3IRGenerator::B3IRGenerator):
(JSC::Wasm::B3IRGenerator::restoreWebAssemblyGlobalState):
(JSC::Wasm::B3IRGenerator::addGrowMemory):
(JSC::Wasm::B3IRGenerator::addCurrentMemory):
(JSC::Wasm::B3IRGenerator::addCall):
(JSC::Wasm::B3IRGenerator::addCallIndirect):
(JSC::Wasm::parseAndCompile):

  • wasm/WasmB3IRGenerator.h:
  • wasm/WasmBBQPlan.cpp:

(JSC::Wasm::BBQPlan::BBQPlan):
(JSC::Wasm::BBQPlan::compileFunctions):
(JSC::Wasm::BBQPlan::complete):

  • wasm/WasmBBQPlan.h:
  • wasm/WasmBBQPlanInlines.h:

(JSC::Wasm::BBQPlan::initializeCallees):

  • wasm/WasmBinding.cpp:

(JSC::Wasm::wasmToWasm):

  • wasm/WasmBinding.h:
  • wasm/WasmCodeBlock.cpp:

(JSC::Wasm::CodeBlock::create):
(JSC::Wasm::CodeBlock::CodeBlock):
(JSC::Wasm::CodeBlock::compileAsync):
(JSC::Wasm::CodeBlock::setCompilationFinished):

  • wasm/WasmCodeBlock.h:

(JSC::Wasm::CodeBlock::offsetOfImportStubs):
(JSC::Wasm::CodeBlock::allocationSize):
(JSC::Wasm::CodeBlock::importWasmToEmbedderStub):
(JSC::Wasm::CodeBlock::offsetOfImportWasmToEmbedderStub):
(JSC::Wasm::CodeBlock::wasmToJSCallStubForImport):
(JSC::Wasm::CodeBlock::compilationFinished):
(JSC::Wasm::CodeBlock::jsEntrypointCalleeFromFunctionIndexSpace):
(JSC::Wasm::CodeBlock::wasmEntrypointCalleeFromFunctionIndexSpace):

  • wasm/WasmContext.cpp:

(JSC::Wasm::Context::useFastTLS):
(JSC::Wasm::Context::load const):
(JSC::Wasm::Context::store):

  • wasm/WasmContext.h:
  • wasm/WasmEmbedder.h: Copied from Source/JavaScriptCore/wasm/WasmContext.h.
  • wasm/WasmFaultSignalHandler.cpp:
  • wasm/WasmFaultSignalHandler.h:
  • wasm/WasmFormat.h:
  • wasm/WasmInstance.cpp: Copied from Source/JavaScriptCore/wasm/WasmFaultSignalHandler.h.

(JSC::Wasm::Instance::Instance):
(JSC::Wasm::Instance::~Instance):
(JSC::Wasm::Instance::extraMemoryAllocated const):

  • wasm/WasmInstance.h: Added.

(JSC::Wasm::Instance::create):
(JSC::Wasm::Instance::finalizeCreation):
(JSC::Wasm::Instance::module):
(JSC::Wasm::Instance::codeBlock):
(JSC::Wasm::Instance::memory):
(JSC::Wasm::Instance::table):
(JSC::Wasm::Instance::loadI32Global const):
(JSC::Wasm::Instance::loadI64Global const):
(JSC::Wasm::Instance::loadF32Global const):
(JSC::Wasm::Instance::loadF64Global const):
(JSC::Wasm::Instance::setGlobal):
(JSC::Wasm::Instance::offsetOfCachedStackLimit):
(JSC::Wasm::Instance::cachedStackLimit const):
(JSC::Wasm::Instance::setCachedStackLimit):

  • wasm/WasmMemory.cpp:

(JSC::Wasm::Memory::Memory):
(JSC::Wasm::Memory::create):
(JSC::Wasm::Memory::~Memory):
(JSC::Wasm::Memory::grow):

  • wasm/WasmMemory.h:

(JSC::Wasm::Memory::offsetOfMemory):
(JSC::Wasm::Memory::offsetOfSize):

  • wasm/WasmMemoryInformation.cpp:

(JSC::Wasm::PinnedRegisterInfo::get):
(JSC::Wasm::PinnedRegisterInfo::PinnedRegisterInfo):

  • wasm/WasmMemoryInformation.h:

(JSC::Wasm::PinnedRegisterInfo::toSave const):

  • wasm/WasmMemoryMode.cpp: Copied from Source/JavaScriptCore/wasm/WasmFaultSignalHandler.h.

(JSC::Wasm::makeString):

  • wasm/WasmMemoryMode.h: Copied from Source/JavaScriptCore/wasm/WasmFaultSignalHandler.h.
  • wasm/WasmModule.cpp:

(JSC::Wasm::makeValidationCallback):
(JSC::Wasm::Module::validateSync):
(JSC::Wasm::Module::validateAsync):
(JSC::Wasm::Module::getOrCreateCodeBlock):
(JSC::Wasm::Module::compileSync):
(JSC::Wasm::Module::compileAsync):

  • wasm/WasmModule.h:
  • wasm/WasmModuleParser.cpp:

(JSC::Wasm::ModuleParser::parseTableHelper):

  • wasm/WasmOMGPlan.cpp:

(JSC::Wasm::OMGPlan::OMGPlan):
(JSC::Wasm::OMGPlan::runForIndex):

  • wasm/WasmOMGPlan.h:
  • wasm/WasmPageCount.h:

(JSC::Wasm::PageCount::isValid const):

  • wasm/WasmPlan.cpp:

(JSC::Wasm::Plan::Plan):
(JSC::Wasm::Plan::runCompletionTasks):
(JSC::Wasm::Plan::addCompletionTask):
(JSC::Wasm::Plan::tryRemoveContextAndCancelIfLast):

  • wasm/WasmPlan.h:

(JSC::Wasm::Plan::dontFinalize):

  • wasm/WasmSignature.cpp:
  • wasm/WasmSignature.h:
  • wasm/WasmTable.cpp: Added.

(JSC::Wasm::Table::create):
(JSC::Wasm::Table::~Table):
(JSC::Wasm::Table::Table):
(JSC::Wasm::Table::grow):
(JSC::Wasm::Table::clearFunction):
(JSC::Wasm::Table::setFunction):

  • wasm/WasmTable.h: Copied from Source/JavaScriptCore/wasm/js/JSWebAssemblyTable.h.

(JSC::Wasm::Table::maximum const):
(JSC::Wasm::Table::size const):
(JSC::Wasm::Table::offsetOfSize):
(JSC::Wasm::Table::offsetOfFunctions):
(JSC::Wasm::Table::offsetOfInstances):
(JSC::Wasm::Table::isValidSize):

  • wasm/WasmThunks.cpp:

(JSC::Wasm::throwExceptionFromWasmThunkGenerator):
(JSC::Wasm::triggerOMGTierUpThunkGenerator):
(JSC::Wasm::Thunks::setThrowWasmException):
(JSC::Wasm::Thunks::throwWasmException):

  • wasm/WasmThunks.h:
  • wasm/WasmWorklist.cpp:

(JSC::Wasm::Worklist::stopAllPlansForContext):

  • wasm/WasmWorklist.h:
  • wasm/js/JSToWasm.cpp: Added.

(JSC::Wasm::createJSToWasmWrapper):

  • wasm/js/JSToWasm.h: Copied from Source/JavaScriptCore/wasm/WasmBinding.h.
  • wasm/js/JSWebAssembly.cpp: Renamed from Source/JavaScriptCore/wasm/JSWebAssembly.cpp.
  • wasm/js/JSWebAssembly.h: Renamed from Source/JavaScriptCore/wasm/JSWebAssembly.h.
  • wasm/js/JSWebAssemblyCodeBlock.cpp:

(JSC::JSWebAssemblyCodeBlock::create):
(JSC::JSWebAssemblyCodeBlock::JSWebAssemblyCodeBlock):

  • wasm/js/JSWebAssemblyCodeBlock.h:
  • wasm/js/JSWebAssemblyInstance.cpp:

(JSC::JSWebAssemblyInstance::JSWebAssemblyInstance):
(JSC::JSWebAssemblyInstance::finishCreation):
(JSC::JSWebAssemblyInstance::visitChildren):
(JSC::JSWebAssemblyInstance::finalizeCreation):
(JSC::JSWebAssemblyInstance::create):

  • wasm/js/JSWebAssemblyInstance.h:

(JSC::JSWebAssemblyInstance::instance):
(JSC::JSWebAssemblyInstance::context const):
(JSC::JSWebAssemblyInstance::table):
(JSC::JSWebAssemblyInstance::webAssemblyToJSCallee):
(JSC::JSWebAssemblyInstance::setMemory):
(JSC::JSWebAssemblyInstance::offsetOfTail):
(JSC::JSWebAssemblyInstance::importFunctionInfo):
(JSC::JSWebAssemblyInstance::offsetOfTargetInstance):
(JSC::JSWebAssemblyInstance::offsetOfWasmEntrypoint):
(JSC::JSWebAssemblyInstance::offsetOfImportFunction):
(JSC::JSWebAssemblyInstance::importFunction):
(JSC::JSWebAssemblyInstance::internalMemory):
(JSC::JSWebAssemblyInstance::wasmCodeBlock const):
(JSC::JSWebAssemblyInstance::offsetOfWasmTable):
(JSC::JSWebAssemblyInstance::offsetOfCallee):
(JSC::JSWebAssemblyInstance::offsetOfGlobals):
(JSC::JSWebAssemblyInstance::offsetOfWasmCodeBlock):
(JSC::JSWebAssemblyInstance::offsetOfWasmMemory):
(JSC::JSWebAssemblyInstance::cachedStackLimit const):
(JSC::JSWebAssemblyInstance::setCachedStackLimit):
(JSC::JSWebAssemblyInstance::wasmMemory):
(JSC::JSWebAssemblyInstance::wasmModule):
(JSC::JSWebAssemblyInstance::allocationSize):
(JSC::JSWebAssemblyInstance::module const):

  • wasm/js/JSWebAssemblyMemory.cpp:

(JSC::JSWebAssemblyMemory::create):
(JSC::JSWebAssemblyMemory::adopt):
(JSC::JSWebAssemblyMemory::JSWebAssemblyMemory):
(JSC::JSWebAssemblyMemory::grow):
(JSC::JSWebAssemblyMemory::growSuccessCallback):

  • wasm/js/JSWebAssemblyMemory.h:
  • wasm/js/JSWebAssemblyModule.cpp:

(JSC::JSWebAssemblyModule::moduleInformation const):
(JSC::JSWebAssemblyModule::exportSymbolTable const):
(JSC::JSWebAssemblyModule::signatureIndexFromFunctionIndexSpace const):
(JSC::JSWebAssemblyModule::callee const):
(JSC::JSWebAssemblyModule::codeBlock):
(JSC::JSWebAssemblyModule::module):

  • wasm/js/JSWebAssemblyModule.h:
  • wasm/js/JSWebAssemblyTable.cpp:

(JSC::JSWebAssemblyTable::create):
(JSC::JSWebAssemblyTable::JSWebAssemblyTable):
(JSC::JSWebAssemblyTable::visitChildren):
(JSC::JSWebAssemblyTable::grow):
(JSC::JSWebAssemblyTable::getFunction):
(JSC::JSWebAssemblyTable::clearFunction):
(JSC::JSWebAssemblyTable::setFunction):

  • wasm/js/JSWebAssemblyTable.h:

(JSC::JSWebAssemblyTable::isValidSize):
(JSC::JSWebAssemblyTable::maximum const):
(JSC::JSWebAssemblyTable::size const):
(JSC::JSWebAssemblyTable::table):

  • wasm/js/WasmToJS.cpp: Copied from Source/JavaScriptCore/wasm/WasmBinding.cpp.

(JSC::Wasm::materializeImportJSCell):
(JSC::Wasm::wasmToJS):
(JSC::Wasm::wasmToJSException):

  • wasm/js/WasmToJS.h: Copied from Source/JavaScriptCore/wasm/WasmBinding.h.
  • wasm/js/WebAssemblyFunction.cpp:

(JSC::callWebAssemblyFunction):

  • wasm/js/WebAssemblyInstanceConstructor.cpp:

(JSC::constructJSWebAssemblyInstance):

  • wasm/js/WebAssemblyMemoryConstructor.cpp:

(JSC::constructJSWebAssemblyMemory):

  • wasm/js/WebAssemblyMemoryPrototype.cpp:

(JSC::webAssemblyMemoryProtoFuncGrow):

  • wasm/js/WebAssemblyModuleConstructor.cpp:

(JSC::constructJSWebAssemblyModule):
(JSC::WebAssemblyModuleConstructor::createModule):

  • wasm/js/WebAssemblyModuleConstructor.h:
  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::link):
(JSC::WebAssemblyModuleRecord::evaluate):

  • wasm/js/WebAssemblyPrototype.cpp:

(JSC::webAssemblyCompileFunc):
(JSC::instantiate):
(JSC::compileAndInstantiate):
(JSC::webAssemblyValidateFunc):

  • wasm/js/WebAssemblyTableConstructor.cpp:

(JSC::constructJSWebAssemblyTable):

  • wasm/js/WebAssemblyWrapperFunction.cpp:

(JSC::WebAssemblyWrapperFunction::create):

Source/WebCore:

  • ForwardingHeaders/wasm/WasmModule.h: Added. This used to be

included in JSWebAssemblyModule.h.

  • bindings/js/SerializedScriptValue.cpp: Update postMessage code

according to C++ API changes.

Source/WTF:

  • wtf/StdLibExtras.h:

(WTF::default_construct_at): this makes code in WasmTable much
more readable, and is generally useful for generic code

11:24 AM Changeset in webkit [222790] by Alan Bujtas
  • 4 edits in trunk

[AX] Do not trigger redundant layout on tables.
https://bugs.webkit.org/show_bug.cgi?id=177781
<rdar://problem/34777030>

Reviewed by Antti Koivisto.

Source/WebCore:

RenderTable::forceSectionsRecalc() marks the RenderTable dirty and schedules a layout.
Every time AccessibilityTable asks for the table element (including during construction),
we end up triggering a layout. This call was added (r191357) to ensure RenderTable's m_firstBody is always
up-to-date (in case of anonymous wrapper table renderer). Instead of relying on the m_firstBody,
let's just use the first child to find the table element. The first child always points to a valid
renderer (or nullptr), while m_firstBody is the result of section computation.

Covered by existing tests.

  • accessibility/AccessibilityTable.cpp:

(WebCore::AccessibilityTable::tableElement const):

LayoutTests:

11:09 AM Changeset in webkit [222789] by commit-queue@webkit.org
  • 2 edits
    4 deletes in trunk

Remove no longer needed WebRTC build infrastructure
https://bugs.webkit.org/show_bug.cgi?id=177756

Patch by Youenn Fablet <youenn@apple.com> on 2017-10-03
Reviewed by Alejandro G. Castro.

Source/ThirdParty/libwebrtc:

  • WebKit/project.json: Removed.
  • WebKit/rtc_sdk_framework_objc_info_plist.plist: Removed.

Tools:

  • Scripts/generate-libwebrtc-cmake: Removed.
  • Scripts/webkitpy/libwebrtc/init.py: Removed.
  • Scripts/webkitpy/libwebrtc/generate_cmake.py: Removed.
11:03 AM Changeset in webkit [222788] by dbates@webkit.org
  • 3 edits
    3 adds in trunk

[CSP] Check policy before opening a new window to a JavaScript URL
https://bugs.webkit.org/show_bug.cgi?id=176815
<rdar://problem/34400057>

Reviewed by Brent Fulgham.

Source/WebCore:

Ensure that the Content Security Policy of the page allows navigation to a JavaScript URL
before opening a new window to it.

Test: http/tests/security/contentSecurityPolicy/window-open-javascript-url-blocked.html

  • loader/FrameLoader.cpp:

(WebCore::createWindow):

LayoutTests:

  • http/tests/security/contentSecurityPolicy/resources/window-open-javascript-url-blocked.js: Added.
  • http/tests/security/contentSecurityPolicy/window-open-javascript-url-blocked-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/window-open-javascript-url-blocked.html: Added.
10:56 AM Changeset in webkit [222787] by jdiggs@igalia.com
  • 5 edits
    2 adds in trunk

AX: [ATK] ARIA drag-and-drop attribute values should be exposed via AtkObject attributes
https://bugs.webkit.org/show_bug.cgi?id=177763

Reviewed by Chris Fleizach.

Source/WebCore:

Expose the values of aria-grabbed and aria-dropeffect via the "grabbed" and "dropeffect"
AtkObject attributes.

Test: accessibility/gtk/aria-drag-and-drop.html

  • accessibility/atk/WebKitAccessibleWrapperAtk.cpp:

(webkitAccessibleGetAttributes):

Tools:

Implement ariaIsGrabbed() and ariaDropEffects() for ATK.

  • WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:

(WTR::AccessibilityUIElement::ariaIsGrabbed const):
(WTR::AccessibilityUIElement::ariaDropEffects const):

LayoutTests:

  • accessibility/gtk/aria-drag-and-drop-expected.txt: Added.
  • accessibility/gtk/aria-drag-and-drop.html: Added.
10:29 AM Changeset in webkit [222786] by Brent Fulgham
  • 2 edits in trunk/Source/WebCore

Unreviewed test fix after r222779.

  • testing/cocoa/WebArchiveDumpSupport.mm:

(WebCoreTestSupport::createCFURLResponseFromResponseData): Setting NSSecureCoding in this test code should be
done based on build system, just like it is in the actual WebArchive handling code.

9:28 AM WebKitGTK/Gardening/Calendar edited by cturner@igalia.com
(diff)
9:26 AM Changeset in webkit [222785] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Clean-up RealtimeIncomingVideoSource
https://bugs.webkit.org/show_bug.cgi?id=177782

Patch by Youenn Fablet <youenn@apple.com> on 2017-10-03
Reviewed by Alejandro G. Castro.

No change of behavior.
Removing code that is no longer needed.

  • platform/mediastream/mac/RealtimeIncomingVideoSource.cpp:

(WebCore::RealtimeIncomingVideoSource::create):
(WebCore::RealtimeIncomingVideoSource::RealtimeIncomingVideoSource):

  • platform/mediastream/mac/RealtimeIncomingVideoSource.h:
9:25 AM Changeset in webkit [222784] by cturner@igalia.com
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening.

  • platform/gtk/TestExpectations:
9:16 AM Changeset in webkit [222783] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Move payment-request TestExpectations to ios-wk2.

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/ios/TestExpectations:
9:12 AM Changeset in webkit [222782] by Matt Baker
  • 5 edits
    9 adds in trunk

Web Inspector: Add View layout tests, make views more testable
https://bugs.webkit.org/show_bug.cgi?id=161274
<rdar://problem/28038615>

Reviewed by Devin Rousso.

Source/WebInspectorUI:

This patch adds support for View testing. Since view layouts are scheduled
using requestAnimationFrame, FrontendTestHarness now provides a timer-based
polyfill, to allow nonintrusive testing of the frontend View hierarchy.

  • UserInterface/Test.html:

Make WI.View available to tests.

  • UserInterface/Test/FrontendTestHarness.js:

(FrontendTestHarness.prototype.redirectRequestAnimationFrame):

  • UserInterface/Views/View.js:

(WI.View.rootView):
(WI.View.prototype.replaceSubview):
(WI.View.prototype._didMoveToWindow):
(WI.View._cancelScheduledLayoutForView):
Fixed issues caught while writing tests for the expected View behavior.

LayoutTests:

Add tests for creating views, adding and removing subviews, and layout
operations. These tests rely on a mock requestAnimationFrame, which is
enabled with FrontendTestHarness.redirectRequestAnimationFrame.

  • inspector/view/asynchronous-layout-expected.txt: Added.
  • inspector/view/asynchronous-layout.html: Added.
  • inspector/view/basics-expected.txt: Added.
  • inspector/view/basics.html: Added.
  • inspector/view/synchronous-layout-expected.txt: Added.
  • inspector/view/synchronous-layout.html: Added.
  • inspector/view/resources/test-view.js: Added.

(TestPage.registerInitializer.WI.TestView):
(TestPage.registerInitializer.WI.TestView.prototype.get initialLayoutCount):
(TestPage.registerInitializer.WI.TestView.prototype.get layoutCount):
(TestPage.registerInitializer.WI.TestView.prototype.evaluateAfterLayout):
(TestPage.registerInitializer.WI.TestView.prototype.initialLayout):
(TestPage.registerInitializer.WI.TestView.prototype.layout):
(TestPage.registerInitializer):
Register an instrumentation subclass of View. TestView counts calls to
protected methods and accepts callbacks to execute when a layout completes.

9:05 AM Changeset in webkit [222781] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Update iOS TestExpectations for payment-request tests.
https://bugs.webkit.org/show_bug.cgi?id=177786

Unreviewed test gardening.

  • platform/ios/TestExpectations:
9:05 AM Changeset in webkit [222780] by Ryan Haddad
  • 2 edits in trunk/JSTests

Skip JSC test stress/regress-159779-2.js on debug.
https://bugs.webkit.org/show_bug.cgi?id=177204

Unreviewed test gardening.

  • stress/regress-159779-2.js:
9:00 AM Changeset in webkit [222779] by Brent Fulgham
  • 6 edits in trunk

[Mac] Use safer decoding practices for NSKeyedUnarchiver
https://bugs.webkit.org/show_bug.cgi?id=175887
<rdar://problem/33435281>

Reviewed by Daniel Bates.

Source/WebCore:

  • loader/archive/cf/LegacyWebArchiveMac.mm:

(WebCore::LegacyWebArchive::createResourceResponseFromMacArchivedData): Use NSSecureCoding to unarchive.
(WebCore::LegacyWebArchive::createPropertyListRepresentation): Ditto for archiving.

  • testing/cocoa/WebArchiveDumpSupport.mm:

(WebCoreTestSupport::createCFURLResponseFromResponseData): Update to use NSSecureCoding if possible.

LayoutTests:

Mark two tests as flaky for now, until the relevant CFNetwork changes are available on the test systems.

  1. webarchive/loading/cache-expired-subresource.html
  2. webarchive/loading/test-loading-archive-subresource-null-mimetype.html
  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
8:41 AM Changeset in webkit [222778] by Ms2ger@igalia.com
  • 4 edits
    77 deletes in trunk/LayoutTests

Remove some duplicated canvas toDataURL tests.
https://bugs.webkit.org/show_bug.cgi?id=177805

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

This copy of the canvas test suite was added in bug 138324 (r176144).
At that point there already was an older copy, that was added in
bug 20553 (r59954). A newer copy was added in bug 148822 (r189394) and
has been kept up-to-date with upstream since.

I have verified that the latest tests cover everything the older copies
do. There seems to be no reason to keep the older copies around.

  • canvas/resources/toDataURL.jpeg.alpha.png: Removed.
  • canvas/resources/toDataURL.jpeg.primarycolours.png: Removed.
  • canvas/resources/toDataURL.jpeg.quality.basic.png: Removed.
  • canvas/resources/toDataURL.png.complexcolours.png: Removed.
  • canvas/resources/toDataURL.png.primarycolours.png: Removed.
  • canvas/toDataURL.arguments.1-expected.txt: Removed.
  • canvas/toDataURL.arguments.1.html: Removed.
  • canvas/toDataURL.arguments.2-expected.txt: Removed.
  • canvas/toDataURL.arguments.2.html: Removed.
  • canvas/toDataURL.arguments.3-expected.txt: Removed.
  • canvas/toDataURL.arguments.3.html: Removed.
  • canvas/toDataURL.bogustype-expected.txt: Removed.
  • canvas/toDataURL.bogustype.html: Removed.
  • canvas/toDataURL.default-expected.txt: Removed.
  • canvas/toDataURL.default.html: Removed.
  • canvas/toDataURL.jpeg.alpha.html: Removed.
  • canvas/toDataURL.jpeg.primarycolours.html: Removed.
  • canvas/toDataURL.jpeg.quality.basic.html: Removed.
  • canvas/toDataURL.jpeg.quality.notnumber-expected.txt: Removed.
  • canvas/toDataURL.jpeg.quality.notnumber.html: Removed.
  • canvas/toDataURL.jpeg.quality.outsiderange-expected.txt: Removed.
  • canvas/toDataURL.jpeg.quality.outsiderange.html: Removed.
  • canvas/toDataURL.lowercase.ascii-expected.txt: Removed.
  • canvas/toDataURL.lowercase.ascii.html: Removed.
  • canvas/toDataURL.lowercase.unicode-expected.txt: Removed.
  • canvas/toDataURL.lowercase.unicode.html: Removed.
  • canvas/toDataURL.nocontext-expected.txt: Removed.
  • canvas/toDataURL.nocontext.html: Removed.
  • canvas/toDataURL.png-expected.txt: Removed.
  • canvas/toDataURL.png.complexcolours.html: Removed.
  • canvas/toDataURL.png.html: Removed.
  • canvas/toDataURL.png.primarycolours.html: Removed.
  • canvas/toDataURL.unrecognised-expected.txt: Removed.
  • canvas/toDataURL.unrecognised.html: Removed.
  • canvas/toDataURL.zerosize-expected.txt: Removed.
  • canvas/toDataURL.zerosize.html: Removed.

LayoutTests:

This copy of the canvas test suite was added in bug 20553 (r59954).
Another one-time import was done in bug 138324 (r176144). Yet another
copy was added in bug 148822 (r189394) and this one has been kept
up-to-date with upstream since.

I have verified that the latest tests cover everything the older copies
do. There seems to be no reason to keep the older copies around.

  • TestExpectations: Removed reference to removed test.
  • canvas/philip/tests/toDataURL.arguments.1-expected.txt: Removed.
  • canvas/philip/tests/toDataURL.arguments.1.html: Removed.
  • canvas/philip/tests/toDataURL.arguments.2-expected.txt: Removed.
  • canvas/philip/tests/toDataURL.arguments.2.html: Removed.
  • canvas/philip/tests/toDataURL.arguments.3-expected.txt: Removed.
  • canvas/philip/tests/toDataURL.arguments.3.html: Removed.
  • canvas/philip/tests/toDataURL.bogustype-expected.txt: Removed.
  • canvas/philip/tests/toDataURL.bogustype.html: Removed.
  • canvas/philip/tests/toDataURL.default-expected.txt: Removed.
  • canvas/philip/tests/toDataURL.default.html: Removed.
  • canvas/philip/tests/toDataURL.jpeg.alpha-expected.txt: Removed.
  • canvas/philip/tests/toDataURL.jpeg.alpha.html: Removed.
  • canvas/philip/tests/toDataURL.jpeg.alpha.png: Removed.
  • canvas/philip/tests/toDataURL.jpeg.primarycolours-expected.txt: Removed.
  • canvas/philip/tests/toDataURL.jpeg.primarycolours.html: Removed.
  • canvas/philip/tests/toDataURL.jpeg.primarycolours.png: Removed.
  • canvas/philip/tests/toDataURL.jpeg.quality.basic-expected.txt: Removed.
  • canvas/philip/tests/toDataURL.jpeg.quality.basic.html: Removed.
  • canvas/philip/tests/toDataURL.jpeg.quality.basic.png: Removed.
  • canvas/philip/tests/toDataURL.jpeg.quality.notnumber-expected.txt: Removed.
  • canvas/philip/tests/toDataURL.jpeg.quality.notnumber.html: Removed.
  • canvas/philip/tests/toDataURL.jpeg.quality.outsiderange-expected.txt: Removed.
  • canvas/philip/tests/toDataURL.jpeg.quality.outsiderange.html: Removed.
  • canvas/philip/tests/toDataURL.lowercase.ascii-expected.txt: Removed.
  • canvas/philip/tests/toDataURL.lowercase.ascii.html: Removed.
  • canvas/philip/tests/toDataURL.lowercase.unicode-expected.txt: Removed.
  • canvas/philip/tests/toDataURL.lowercase.unicode.html: Removed.
  • canvas/philip/tests/toDataURL.nocontext-expected.txt: Removed.
  • canvas/philip/tests/toDataURL.nocontext.html: Removed.
  • canvas/philip/tests/toDataURL.png-expected.txt: Removed.
  • canvas/philip/tests/toDataURL.png.complexcolours-expected.txt: Removed.
  • canvas/philip/tests/toDataURL.png.complexcolours.html: Removed.
  • canvas/philip/tests/toDataURL.png.complexcolours.png: Removed.
  • canvas/philip/tests/toDataURL.png.html: Removed.
  • canvas/philip/tests/toDataURL.png.primarycolours-expected.txt: Removed.
  • canvas/philip/tests/toDataURL.png.primarycolours.html: Removed.
  • canvas/philip/tests/toDataURL.png.primarycolours.png: Removed.
  • canvas/philip/tests/toDataURL.unrecognised-expected.txt: Removed.
  • canvas/philip/tests/toDataURL.unrecognised.html: Removed.
  • canvas/philip/tests/toDataURL.zerosize-expected.txt: Removed.
  • canvas/philip/tests/toDataURL.zerosize.html: Removed.
  • platform/ios-device/TestExpectations: Removed reference to removed test.
8:19 AM Changeset in webkit [222777] by Ryan Haddad
  • 6 edits in trunk

Unreviewed, rolling out r222760.

This change caused LayoutTest crashes.

Reverted changeset:

"[Mac] Use safer decoding practices for NSKeyedUnarchiver"
https://bugs.webkit.org/show_bug.cgi?id=175887
http://trac.webkit.org/changeset/222760

2:50 AM Changeset in webkit [222776] by Michael Catanzaro
  • 11 edits in trunk

REGRESSION(r222392): [WPE][GTK] Many forms tests are failing due to broken event timestamps
https://bugs.webkit.org/show_bug.cgi?id=177449

Reviewed by Chris Dumez.

Source/WebCore:

  • platform/gtk/GtkUtilities.cpp:

(WebCore::wallTimeForEvent):

  • platform/gtk/GtkUtilities.h:

(WebCore::wallTimeForEvent):

  • platform/gtk/PlatformKeyboardEventGtk.cpp:

(WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):

  • platform/gtk/PlatformMouseEventGtk.cpp:

(WebCore::PlatformMouseEvent::PlatformMouseEvent):

  • platform/gtk/PlatformWheelEventGtk.cpp:

(WebCore::PlatformWheelEvent::PlatformWheelEvent):

Source/WebKit:

  • Shared/gtk/WebEventFactory.cpp:

(WebKit::WebEventFactory::createWebMouseEvent):
(WebKit::WebEventFactory::createWebWheelEvent):
(WebKit::WebEventFactory::createWebKeyboardEvent):
(WebKit::WebEventFactory::createWebTouchEvent):

  • Shared/wpe/WebEventFactory.cpp:

(WebKit::wallTimeForEventTime):
(WebKit::WebEventFactory::createWebKeyboardEvent):
(WebKit::WebEventFactory::createWebMouseEvent):
(WebKit::WebEventFactory::createWebWheelEvent):
(WebKit::WebEventFactory::createWebTouchEvent):

LayoutTests:

  • platform/gtk/TestExpectations:
2:43 AM Changeset in webkit [222775] by commit-queue@webkit.org
  • 13 edits
    3 adds in trunk

Build libwebrtc unit tests executables
https://bugs.webkit.org/show_bug.cgi?id=177211

Patch by Youenn Fablet <youenn@apple.com> on 2017-10-03
Reviewed by Alex Christensen.

.:

  • WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:

Source/ThirdParty/libwebrtc:

Adding support for a new target called unittests that will be several executables.
Each executable run unit tests dedicated to a part of libwebrtc.

Adding one target/executable per unit test suite.
Adding one composite target to build all unit test targets.
Adding a target to build a static libwebrtctest library.
The static libwebrtctest library is then linked to each unit test executable which is also linked to libwebrtc dylib.

Some unit tests require a default codec (VP8) that is disabled in libwebrtc.
This ends up making some tests crashing.
An additional work should follow to execute only the meaningful subset of tests.

  • Configurations/libwebrtc-base.xcconfig: Added.
  • Configurations/libwebrtc-test-static.xcconfig: Added.
  • Configurations/rtc_pc_unittests.xcconfig: Added.
  • Source/third_party/gflags/gen/posix/include/private/config.h:
  • Source/webrtc/modules/audio_coding/neteq/tools/neteq_test.cc: Replacing FATAL by RTC_FATAL.
  • Source/webrtc/sdk/objc/Framework/Classes/Common/helpers.mm: Removing UIKit dependency.
  • Source/webrtc/test/gmock.h: Using googletest version instead of checking in testing folder.
  • Source/webrtc/test/gtest.h: Ditto.
  • Source/webrtc/test/rtp_file_reader.cc: Replacing FATAL by RTC_FATAL.
  • libwebrtc.xcodeproj/project.pbxproj:
2:35 AM Changeset in webkit [222774] by commit-queue@webkit.org
  • 7 edits in trunk/Source/WebCore

Use vector map routine in WebCore CacheStorage implementation
https://bugs.webkit.org/show_bug.cgi?id=177002

Patch by Youenn Fablet <youenn@apple.com> on 2017-10-03
Reviewed by Darin Adler.

No change of behavior.
Replacing use of reserveInitialCapacity/uncheckedAppend by use of map.

  • Modules/cache/CacheStorage.cpp:

(WebCore::copyCache):
(WebCore::CacheStorage::match):
(WebCore::CacheStorage::retrieveCaches):
(WebCore::CacheStorage::keys):
(WebCore::copyCaches): Deleted.

  • Modules/cache/DOMCache.cpp:

(WebCore::DOMCache::matchAll):
(WebCore::copyRequestRef):
(WebCore::DOMCache::keys):

  • Modules/cache/DOMCacheEngine.cpp:

(WebCore::DOMCacheEngine::isolateCacheInfo):
(WebCore::DOMCacheEngine::CacheInfos::isolatedCopy):

  • Modules/cache/WorkerCacheStorageConnection.cpp:

(WebCore::recordsDataFromRecords):
(WebCore::recordsFromRecordsData):

2:21 AM WebKitGTK/2.18.x edited by Michael Catanzaro
(diff)
1:58 AM Changeset in webkit [222773] by Carlos Garcia Campos
  • 5 edits
    19 deletes in trunk/LayoutTests/imported/w3c

W3C tests importer should not import the whole tools directory
https://bugs.webkit.org/show_bug.cgi?id=177351

Reviewed by Youenn Fablet.

Only wptserve and its dependencies are needed to run the layout tests. It seems we already tried to avoid
importing pytest for example, but the wrong path is used in import-expectations.json. Instead of skipping what
we don't want, I think it's better to skip tools and import only what we need, that way if new directories are
added upstream we won't import them. This will reduce a lot the size of the tools directory, and will avoid
duplication with the WebDriver tests importer that needs wptrunner, webdriver and pytest from tools directory.

  • resources/TestRepositories:
  • resources/import-expectations.json:
  • web-platform-tests/tools/OWNERS: Removed.
  • web-platform-tests/tools/appveyor.yml: Removed.
  • web-platform-tests/tools/browserutils: Removed.
  • web-platform-tests/tools/certs: Removed.
  • web-platform-tests/tools/ci: Removed.
  • web-platform-tests/tools/conftest.py: Removed.
  • web-platform-tests/tools/gitignore: Removed.
  • web-platform-tests/tools/html5lib: Removed.
  • web-platform-tests/tools/lint: Removed.
  • web-platform-tests/tools/py: Removed.
  • web-platform-tests/tools/pytest.ini: Removed.
  • web-platform-tests/tools/pytest: Removed.
  • web-platform-tests/tools/runner: Removed.
  • web-platform-tests/tools/scripts: Removed.
  • web-platform-tests/tools/six: Removed.
  • web-platform-tests/tools/tox.ini: Removed.
  • web-platform-tests/tools/w3c-import.log:
  • web-platform-tests/tools/webdriver: Removed.
  • web-platform-tests/tools/wpt: Removed.
  • web-platform-tests/tools/wptrunner: Removed.
1:12 AM Changeset in webkit [222772] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

[GTK][WPE] WebProcess should run cleanup on quit to release resources
https://bugs.webkit.org/show_bug.cgi?id=168126

Reviewed by Michael Catanzaro.

Do not call exit on sync message send failure for GTK and WPE ports.

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeConnection):

Oct 2, 2017:

11:42 PM Changeset in webkit [222771] by mmaxfield@apple.com
  • 8 edits
    2 moves in trunk/Source

Move LineEnding.{h,cpp} from WebCore/platform/text to wtf/text
https://bugs.webkit.org/show_bug.cgi?id=176575

Reviewed by Alex Christensen.

Source/WebCore:

No new tests because there is no behavior change.

  • WebCore.xcodeproj/project.pbxproj:
  • fileapi/BlobBuilder.cpp:
  • html/FormDataList.cpp:

Source/WTF:

As part of the PAL effort, we're trying to move everything out of WebCore/platform, one-by-one.
These LineEnding files belong in WTF.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/text/LineEnding.cpp: Renamed from Source/WebCore/platform/text/LineEnding.cpp.

(WTF::normalizeLineEndingsToCRLF):

  • wtf/text/LineEnding.h: Renamed from Source/WebCore/platform/text/LineEnding.h.
11:36 PM Changeset in webkit [222770] by mmaxfield@apple.com
  • 2 edits in trunk/Tools

Make WSL demo compatible with Microsoft Edge
https://bugs.webkit.org/show_bug.cgi?id=177643

Reviewed by Saam Barati.

This patch does two things. The first is it migrates a loop over ParentNode.children to a legacy style loop
because Microsoft Edge throws an exception when trying to use a for...of loop with it. This patch also hides
the compilation behind a setTimeout(0) so there is some indication that something is happening during a
compile.

  • Tools/WebGPUShadingLanguageRI/index.html:
10:31 PM Changeset in webkit [222769] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

Web Inspector: Rename methods ending in *Json() as *JSON()
https://bugs.webkit.org/show_bug.cgi?id=177793

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-10-02
Reviewed by Matt Baker.

  • inspector/InspectorNetworkAgent.cpp:

(WebCore::InspectorNetworkAgent::buildObjectForCachedResource):
(WebCore::InspectorNetworkAgent::willSendRequest):
(WebCore::InspectorNetworkAgent::didReceiveResponse):

  • inspector/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::resourceTypeJSON):
(WebCore::InspectorPageAgent::cachedResourceTypeJSON):
(WebCore::InspectorPageAgent::buildObjectForFrameTree):
(WebCore::InspectorPageAgent::resourceTypeJson): Deleted.
(WebCore::InspectorPageAgent::cachedResourceTypeJson): Deleted.

  • inspector/InspectorPageAgent.h:
10:10 PM Changeset in webkit [222768] by Wenson Hsieh
  • 5 edits
    2 adds in trunk

REGRESSION(r222595): Intermittent crash while accessing DataTransferItemList
https://bugs.webkit.org/show_bug.cgi?id=177791
<rdar://problem/34781456>

Reviewed by Ryosuke Niwa.

Source/WebCore:

DataTransfer::moveDragState() currently attempts to move the other DataTransfer's DataTransferItemList and
DragImageLoader as members of its own. This is incorrect, since both of these entities hold raw references of
some form to the other DataTransfer, yet they are held as unique_ptrs in the new DataTransfer. To fix this, we
(1) remove the line of code that moves the item list, since item lists will be lazily generated on the new
DataTransfer anyways, and (2) update the DataTransfer pointer on the old DataTransfer's DragImageLoader after
moving it to the new DataTransfer.

Test: editing/pasteboard/drag-end-crash-accessing-item-list.html

  • dom/DataTransfer.cpp:

(WebCore::DragImageLoader::moveToDataTransfer):
(WebCore::DataTransfer::moveDragState):

LayoutTests:

Add a new layout test that simulates the crash encountered in this bug by forcing a garbage collection sweep
right before accessing the pasteboard in a "dragend" event handler.

  • TestExpectations:
  • editing/pasteboard/drag-end-crash-accessing-item-list-expected.txt: Added.
  • editing/pasteboard/drag-end-crash-accessing-item-list.html: Added.
  • platform/mac-wk1/TestExpectations:
9:35 PM Changeset in webkit [222767] by Chris Dumez
  • 5 edits in trunk/Source/WebCore

Rename computeSharedStringHash() overload taking a URL to computedVisitedLinkHash()
https://bugs.webkit.org/show_bug.cgi?id=177776

Reviewed by Alex Christensen.

  • dom/VisitedLinkState.cpp:

(WebCore::linkHashForElement):
(WebCore::VisitedLinkState::determineLinkStateSlowCase):

  • html/HTMLAnchorElement.h:

(WebCore::HTMLAnchorElement::visitedLinkHash const):

  • platform/SharedStringHash.cpp:

(WebCore::computeVisitedLinkHash):

  • platform/SharedStringHash.h:
8:07 PM Changeset in webkit [222766] by Brent Fulgham
  • 1 edit
    6 adds in trunk/LayoutTests

Merge three Blink test cases
https://bugs.webkit.org/show_bug.cgi?id=177797
<rdar://problem/27331975>

Unreviewed merge of Blink test cases.

Merge three test cases from the following Blink change:

https://chromium.googlesource.com/chromium/blink/+/17c5b48f130e4ebb796f9db89628f887624db4ef

Relevant fixes had been made in WebKit over the years, but we did not include proper
test coverage.

  • fast/dom/assertion-on-node-removal-expected.txt: Added.
  • fast/dom/assertion-on-node-removal.html: Added.
  • fast/forms/control-detach-crash-expected.txt: Added.
  • fast/forms/control-detach-crash.html: Added.
  • svg/custom/assert-on-node-removal-expected.txt: Added.
  • svg/custom/assert-on-node-removal.html: Added.
6:02 PM Changeset in webkit [222765] by jdiggs@igalia.com
  • 5 edits
    2 adds in trunk

AX: [ATK] The value of aria-level is not exposed on non-heading roles
https://bugs.webkit.org/show_bug.cgi?id=177775

Reviewed by Chris Fleizach.

Source/WebCore:

Expose the value of aria-level via the "level" AtkObject attribute, as is currently
done for headings.

Test: accessibility/gtk/aria-level.html

  • accessibility/atk/WebKitAccessibleWrapperAtk.cpp:

(webkitAccessibleGetAttributes):

Tools:

  • WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:

(WTR::AccessibilityUIElement::hierarchicalLevel const):

LayoutTests:

  • accessibility/gtk/aria-level-expected.txt: Added.
  • accessibility/gtk/aria-level.html: Added.
5:42 PM Changeset in webkit [222764] by ggaren@apple.com
  • 4 edits in trunk

WeakPtr should have a move constructor
https://bugs.webkit.org/show_bug.cgi?id=177789

Reviewed by Chris Dumez.

Source/WTF:

  • wtf/WeakPtr.h: Now that we just have a RefPtr data member,

the default operators are sufficient.

Tools:

Chris made me write an API test. It wasn't that painful.

  • TestWebKitAPI/Tests/WTF/WeakPtr.cpp:

(TestWebKitAPI::TEST):

5:37 PM Changeset in webkit [222763] by aestes@apple.com
  • 5 edits in trunk

[Payment Request] Validate payment method identifiers
https://bugs.webkit.org/show_bug.cgi?id=177794

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

  • web-platform-tests/payment-request/payment-request-ctor-pmi-handling.https-expected.txt:

Source/WebCore:

  • Modules/paymentrequest/PaymentRequest.cpp:

(WebCore::isValidStandardizedPaymentMethodIdentifier):
(WebCore::isValidURLBasedPaymentMethodIdentifier):
(WebCore::convertAndValidatePaymentMethodIdentifier):
(WebCore::PaymentRequest::create):

  • Modules/paymentrequest/PaymentRequest.h:
5:29 PM Changeset in webkit [222762] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Escape more characters in posix string conversion
https://bugs.webkit.org/show_bug.cgi?id=177761
<rdar://problem/34506832>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-10-02
Reviewed by Brian Burg.

  • UserInterface/Models/Resource.js:

(WI.Resource.prototype.generateCURLCommand.escapeStringPosix):
Escape '!' to '\041' in posix strings ($'...') since '!' may have special behavior at times.

5:22 PM Changeset in webkit [222761] by rniwa@webkit.org
  • 10 edits in trunk/Source

Move more code into PasteboardCustomData
https://bugs.webkit.org/show_bug.cgi?id=177795

Reviewed by Wenson Hsieh.

Source/WebCore:

Moved sharedBufferFromCustomData, customDataFromSharedBuffer, and customWebKitPasteboardDataType into
PasteboardCustomData as createSharedBuffer, fromSharedBuffer, and cocoaType respectively.

  • platform/Pasteboard.cpp:

(WebCore::PasteboardCustomData::createSharedBuffer const): Renamed from sharedBufferFromCustomData.
(WebCore::PasteboardCustomData::fromSharedBuffer): Renamed from customDataFromSharedBuffer.

  • platform/Pasteboard.h:
  • platform/StaticPasteboard.cpp:

(WebCore::StaticPasteboard::commitToPasteboard): Now initializes with an empty origin string.

  • platform/cocoa/PasteboardCocoa.mm:

(WebCore::PasteboardCustomData::cocoaType): Moved here from Pasteboard.h
(WebCore::Pasteboard::readStringInCustomData):

  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::PlatformPasteboard::typesSafeForDOMToReadAndWrite const):
(WebCore::PlatformPasteboard::write):

  • platform/ios/WebItemProviderPasteboard.mm:

(-[WebItemProviderPasteboard typeIdentifiersToLoadForRegisteredTypeIdentfiers:]):

  • platform/mac/PlatformPasteboardMac.mm:

(WebCore::PlatformPasteboard::typesSafeForDOMToReadAndWrite const):
(WebCore::PlatformPasteboard::write):

Source/WebKit:

Added the support for encoding and decoding the origin string in PasteboardCustomData.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<PasteboardCustomData>::encode):
(IPC::ArgumentCoder<PasteboardCustomData>::decode):

5:13 PM Changeset in webkit [222760] by Brent Fulgham
  • 6 edits in trunk

[Mac] Use safer decoding practices for NSKeyedUnarchiver
https://bugs.webkit.org/show_bug.cgi?id=175887
<rdar://problem/33435281>

Reviewed by Daniel Bates.

Source/WebCore:

  • loader/archive/cf/LegacyWebArchiveMac.mm:

(WebCore::LegacyWebArchive::createResourceResponseFromMacArchivedData): Use NSSecureCoding to unarchive.
(WebCore::LegacyWebArchive::createPropertyListRepresentation): Ditto for archiving.

  • testing/cocoa/WebArchiveDumpSupport.mm:

(WebCoreTestSupport::createCFURLResponseFromResponseData): Update to use NSSecureCoding if possible.

LayoutTests:

Mark two tests as flaky for now, until the relevant CFNetwork changes are available on the test systems.

  1. webarchive/loading/cache-expired-subresource.html
  2. webarchive/loading/test-loading-archive-subresource-null-mimetype.html
  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
5:09 PM WebKitGTK/2.18.x edited by Adrian Perez de Castro
(diff)
4:55 PM Changeset in webkit [222759] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Selecting child layers with keyboard causes Compositing Reason popover to become misaligned
https://bugs.webkit.org/show_bug.cgi?id=150551

Patch by Ross Kirsling <Ross Kirsling> on 2017-10-02
Reviewed by Matt Baker.

content setter should only be used when NOT repositioning the popover.
presentNewContentWithFrame exists to update content and position at once.

  • UserInterface/Views/LayerDetailsSidebarPanel.js:

(WI.LayerDetailsSidebarPanel.prototype._showPopoverForSelectedNode):
(WI.LayerDetailsSidebarPanel.prototype._presentPopover):
Fix new sidebar.

  • UserInterface/Views/LayerTreeDetailsSidebarPanel.js:

(WI.LayerTreeDetailsSidebarPanel.prototype._updatePopoverForSelectedNode):
Fix legacy sidebar.

4:44 PM Changeset in webkit [222758] by dbates@webkit.org
  • 3 edits in trunk/Source/WebCore

Use InlineTextBox::lineFont() in more places
https://bugs.webkit.org/show_bug.cgi?id=177749

Reviewed by Zalan Bujtas.

Currently InlineTextBox::paint() calls InlineTextBox::lineFont() to compute the font for the
line and then passes this value to various paint helper functions. The computation is not
expensive and it is sufficient to have the individual paint helper functions compute it
directly. We should have the individual paint helper functions compute it directly. This
will help towards sharing more code throughout InlineTextBox by reducing the noise of
passing the font for the line.

No functionality changed. So, no new tests.

  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::paint):
(WebCore::InlineTextBox::paintSelection):
(WebCore::InlineTextBox::paintTextSubrangeBackground):
(WebCore::InlineTextBox::paintCompositionBackground):
(WebCore::InlineTextBox::paintTextMatchMarker):
(WebCore::InlineTextBox::paintDecoration):
(WebCore::InlineTextBox::paintDocumentMarker):
(WebCore::InlineTextBox::paintDocumentMarkers):

  • rendering/InlineTextBox.h:
4:40 PM Changeset in webkit [222757] by jmarcell@apple.com
  • 7 edits in branches/safari-604-branch/Source

Versioning.

4:34 PM Changeset in webkit [222756] by commit-queue@webkit.org
  • 8 edits in trunk/Source/WebCore

[Curl] Implement missing async method in RecourceHandle and make it actually async
https://bugs.webkit.org/show_bug.cgi?id=173964

Patch by Basuke Suzuki <Basuke Suzuki> on 2017-10-02
Reviewed by Alex Christensen.

  • platform/network/ResourceHandle.cpp:

(WebCore::ResourceHandle::continueWillSendRequest): Deleted.
(WebCore::ResourceHandle::continueDidReceiveResponse): Deleted.
(WebCore::ResourceHandle::continueCanAuthenticateAgainstProtectionSpace): Deleted.

  • platform/network/curl/CurlRequest.cpp:

(WebCore::CurlRequest::start):
(WebCore::CurlRequest::cancel):
(WebCore::CurlRequest::suspend):
(WebCore::CurlRequest::resume):
(WebCore::CurlRequest::didReceiveHeader):
(WebCore::CurlRequest::didReceiveData):
(WebCore::CurlRequest::didCompleteTransfer):
(WebCore::CurlRequest::didCancelTransfer):
(WebCore::CurlRequest::finalizeTransfer):
(WebCore::CurlRequest::invokeDidReceiveResponseForFile):
(WebCore::CurlRequest::invokeDidReceiveResponse):
(WebCore::CurlRequest::completeDidReceiveResponse):
(WebCore::CurlRequest::setRequestPaused):
(WebCore::CurlRequest::setCallbackPaused):
(WebCore::CurlRequest::pausedStatusChanged):
(WebCore::CurlRequest::setPaused): Deleted.

  • platform/network/curl/CurlRequest.h:

(WebCore::CurlRequest::needToInvokeDidReceiveResponse const):
(WebCore::CurlRequest::isPaused const):

  • platform/network/curl/ResourceHandleCurl.cpp:

(WebCore::ResourceHandle::receivedRequestToContinueWithoutCredential):
(WebCore::ResourceHandle::continueDidReceiveResponse):
(WebCore::ResourceHandle::platformContinueSynchronousDidReceiveResponse):

  • platform/network/curl/ResourceHandleCurlDelegate.cpp:

(WebCore::ResourceHandleCurlDelegate::curlDidReceiveResponse):
(WebCore::ResourceHandleCurlDelegate::continueDidReceiveResponse):
(WebCore::ResourceHandleCurlDelegate::platformContinueSynchronousDidReceiveResponse):
(WebCore::ResourceHandleCurlDelegate::continueAfterDidReceiveResponse):
(WebCore::ResourceHandleCurlDelegate::shouldRedirectAsGET):

  • platform/network/curl/ResourceHandleCurlDelegate.h:
  • platform/network/curl/ResourceResponseCurl.cpp:

(WebCore::ResourceResponse::shouldRedirect):
(WebCore::ResourceResponse::isMovedPermanently const):
(WebCore::ResourceResponse::isFound const):
(WebCore::ResourceResponse::isSeeOther const):
(WebCore::ResourceResponse::isNotModified const):
(WebCore::ResourceResponse::isUnauthorized const):

4:33 PM Changeset in webkit [222755] by jmarcell@apple.com
  • 1 copy in tags/Safari-604.3.4

Tag Safari-604.3.4.

4:04 PM Changeset in webkit [222754] by aestes@apple.com
  • 10 edits
    18 adds in trunk/LayoutTests

[Payment Request] Update payment-request imported tests
https://bugs.webkit.org/show_bug.cgi?id=177786

Reviewed by Zalan Bujtas.

LayoutTests/imported/w3c:

  • resources/import-expectations.json:
  • web-platform-tests/payment-request/PaymentAddress/attributes-and-toJSON-method-manual.https.html: Added.
  • web-platform-tests/payment-request/PaymentAddress/w3c-import.log: Added.
  • web-platform-tests/payment-request/algorithms-manual.https.html: Added.
  • web-platform-tests/payment-request/change-shipping-option-manual.https.html: Added.
  • web-platform-tests/payment-request/payment-request-canmakepayment-method.https.html:
  • web-platform-tests/payment-request/payment-request-constructor.https-expected.txt:
  • web-platform-tests/payment-request/payment-request-constructor.https.html:
  • web-platform-tests/payment-request/payment-request-ctor-pmi-handling.https.html:
  • web-platform-tests/payment-request/payment-response/complete-method-manual.https.html: Added.
  • web-platform-tests/payment-request/payment-response/helpers.js:

(async.runManualTest):

  • web-platform-tests/payment-request/payment-response/methodName-attribute-manual.https.html: Added.
  • web-platform-tests/payment-request/payment-response/payerEmail-attribute-manual.https.html: Added.
  • web-platform-tests/payment-request/payment-response/payerName-attribute-manual.https.html: Added.
  • web-platform-tests/payment-request/payment-response/payerPhone-attribute-manual.https.html: Added.
  • web-platform-tests/payment-request/payment-response/requestId-attribute-manual.https.html: Added.
  • web-platform-tests/payment-request/payment-response/shippingAddress-attribute-manual.https.html: Added.
  • web-platform-tests/payment-request/payment-response/shippingOption-attribute-manual.https.html: Added.
  • web-platform-tests/payment-request/rejects_if_not_active.https.html: Added.
  • web-platform-tests/payment-request/shipping-address-changed-manual.https.html: Added.
  • web-platform-tests/payment-request/updateWith-method-pmi-handling-manual.https.html: Added.
  • web-platform-tests/payment-request/user-abort-algorithm-manual.https.html: Added.
  • web-platform-tests/payment-request/user-accepts-payment-request-algo-manual.https.html: Added.
  • web-platform-tests/payment-request/w3c-import.log:

LayoutTests:

  • platform/mac-wk2/TestExpectations:
3:28 PM Changeset in webkit [222753] by Matt Lewis
  • 2 edits
    1 move
    2 adds
    1 delete in trunk/LayoutTests

Additional rebaselining of js/dom/global-constructors-attributes.html.

Unreviewed test gardening.

  • platform/mac-sierra-wk1/js/dom/global-constructors-attributes-expected.txt: Renamed from LayoutTests/platform/mac-sierra-wk2/js/dom/global-constructors-attributes-expected.txt.
  • platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-wk2/js/dom/global-constructors-attributes-expected.txt: Removed.
3:21 PM Changeset in webkit [222752] by ggaren@apple.com
  • 2 edits in trunk/Source/WTF

NULL WeakPtr should not malloc!
https://bugs.webkit.org/show_bug.cgi?id=177773

Reviewed by Antti Koivisto.

Translating NULL into malloc is... inefficient.

  • wtf/WeakPtr.h:

(WTF::WeakPtr::WeakPtr):
(WTF::WeakPtr::operator=):
(WTF::WeakPtr::clear): Make m_ref lazy so that a NULL m_ref can represent
a NULL pointer. Normal dereference is no slower because we can rely on
the fact that dereference of NULL should crash. operator bool() and get()
incur an extra branch. That's probably worth it to avoid malloc
for NULL.

3:10 PM Changeset in webkit [222751] by fpizlo@apple.com
  • 7 edits in trunk/Tools

WSL should be *
https://bugs.webkit.org/show_bug.cgi?id=177705

Rubber stamped by Keith Miller.

When I first wrote the prototype, I thought it would be cool to use for pointers. Nobody agrees. I've
gotten so much feedback to use *. This changes pointers to use *.

  • WebGPUShadingLanguageRI/DereferenceExpression.js:

(DereferenceExpression.prototype.toString):
(DereferenceExpression):

  • WebGPUShadingLanguageRI/Intrinsics.js:

(Intrinsics):

  • WebGPUShadingLanguageRI/Parse.js:

(parseType):
(parsePossiblePrefix):

  • WebGPUShadingLanguageRI/PtrType.js:

(PtrType.prototype.toString):
(PtrType):

  • WebGPUShadingLanguageRI/StandardLibrary.js:
  • WebGPUShadingLanguageRI/Test.js:

(tests.simpleDereference):
(tests.dereferenceStore):
(tests.simpleMakePtr):
(tests.loadNull):
(tests.storeNull):
(tests.returnNull):
(tests.dereferenceDefaultNull):
(tests.defaultInitializedNull):
(tests.passNullToPtrMonomorphic):
(tests.passNullToPtrPolymorphic):
(tests.passNullAndNotNull):
(tests.passNullAndNotNullFullPoly):
(tests.passNullAndNotNullFullPolyReverse):
(tests.chainGeneric):
(tests.chainStruct):
(tests.chainStructNewlyValid):
(tests.chainStructDevice):
(tests.paramChainStructDevice):
(tests.simpleProtocolExtends):
(tests.protocolExtendsTwo):
(tests.overrideSubscriptStruct):
(tests.overrideSubscriptStructAndDoStores):
(tests.overrideSubscriptStructAndUsePointers):
(tests.overrideSubscriptStructAndUsePointersIncorrectly):
(tests.makeArrayRefFromPointer):
(tests.nonArrayRefArrayLengthFail):
(tests.constexprIsNotLValuePtr):
(tests.genericAccessors):
(tests.nestedSubscriptLValueEmulationSimple):
(tests.nestedSubscriptLValueEmulationGeneric):
(tests.shaderTypes):
(tests.enumPtrBase):
(tests.mutuallyRecursiveStructWithPointersBroken):
(tests.mutuallyRecursiveStructWithPointers):
(tests.linkedList):
(tests.pointerToPointer):
(tests.pointerGetter):
(tests.operatorCastWithTypeVariableInferredFromReturnType):
(tests.loneSetterPointer):
(tests.anderWithNothingWrong):
(tests.anderWithWrongNumberOfArguments):
(tests.anderDoesntReturnPointer):
(tests.anderDoesntTakeReference):
(tests.anderWithArrayRef):
(tests.pointerIndexGetter):
(tests.loneIndexSetterPointer):
(tests.indexAnderWithNothingWrong):
(tests.indexAnderWithWrongNumberOfArguments):
(tests.indexAnderDoesntReturnPointer):
(tests.indexAnderDoesntTakeReference):
(tests.indexAnderWithArrayRef):
(tests.devicePtrPtr):
(tests.threadgroupPtrPtr):
(tests.constantPtrPtr):
(tests.pointerIndexGetterInProtocol):
(tests.loneIndexSetterPointerInProtocol):
(tests.indexAnderWithNothingWrongInProtocol):
(tests.indexAnderWithWrongNumberOfArgumentsInProtocol):
(tests.indexAnderDoesntReturnPointerInProtocol):
(tests.indexAnderDoesntTakeReferenceInProtocol):
(tests.indexAnderWithArrayRefInProtocol):
(tests.andReturnedArrayRef):

3:01 PM Changeset in webkit [222750] by fpizlo@apple.com
  • 8 edits in trunk/Tools

WSL should be fine with &foo()[i] if foo() returns a []
https://bugs.webkit.org/show_bug.cgi?id=177704

Reviewed by Saam Barati.

Previously, we'd determine if a property access expression (base.field or base[index]) was an lvalue by
asking if its base was an lvalue. This is right in all cases except if the base is of type []. Then, the
property access expression is an lvalue so long as there is a setter or ander.

This fixes the issue and adds a test.

Also, this makes error messages in the case that something is not an lvalue a lot better. If something
is not an lvalue because we could not find anders or setters, then we will tell you why we could not
find them.

  • WebGPUShadingLanguageRI/Checker.js:

(Checker.prototype.visitAssignment):
(Checker.prototype.visitReadModifyWriteExpression):
(Checker.prototype.visitMakePtrExpression):
(Checker.prototype._finishVisitingPropertyAccess):

  • WebGPUShadingLanguageRI/DotExpression.js:

(DotExpression.prototype.get fieldName):
(DotExpression.prototype.get isLValue): Deleted.
(DotExpression.prototype.get addressSpace): Deleted.

  • WebGPUShadingLanguageRI/IndexExpression.js:

(IndexExpression.prototype.get index):
(IndexExpression.prototype.get isLValue): Deleted.
(IndexExpression.prototype.get addressSpace): Deleted.

  • WebGPUShadingLanguageRI/PropertyAccessExpression.js:

(PropertyAccessExpression):
(PropertyAccessExpression.prototype.get isLValue):
(PropertyAccessExpression.prototype.set isLValue):

  • WebGPUShadingLanguageRI/PropertyResolver.js:

(PropertyResolver.prototype._visitRValuesWithinLValue.RValueFinder.prototype.visitMakeArrayRefExpression):
(PropertyResolver.prototype._visitRValuesWithinLValue.RValueFinder):
(PropertyResolver.prototype._visitRValuesWithinLValue):

  • WebGPUShadingLanguageRI/Test.js:

(tests.storeNullArrayRef):
(tests.andReturnedArrayRef):

3:00 PM Changeset in webkit [222749] by Adrian Perez de Castro
  • 2 edits in trunk/Source/WebKit

[GTK] Do not hardcode font family in served remote inspector HTML snippets
https://bugs.webkit.org/show_bug.cgi?id=177742

Reviewed by Carlos Garcia Campos.

Instead of hardcoding Cantarell as the font used for the HTML snippets served
by the remote inspector handler, use "font: menu" to obtain the system UI
font, plus a "font-size" rule for adjusting the size.

  • UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp:

(WebKit::RemoteInspectorProtocolHandler::handleRequest): Change the
CSS rules in the served snippet.

2:58 PM Changeset in webkit [222748] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

VMTraps shouldn't crash if it sees an exception it doesn't understand.
https://bugs.webkit.org/show_bug.cgi?id=177780

Reviewed by Mark Lam.

VMTraps could see a JIT breakpoint (SegV) for any number of
reasons it doesn't understand. e.g. a bug in JIT code, Wasm OOB,
etc. This patch makes it handle that case gracefully. It's worth
noting that this means there's no way to know if, due to a bug, we
didn't accurately track all the VMTraps we installed. I'm not sure
if there is a good solution to that problem though.

  • runtime/VMTraps.cpp:
2:46 PM Changeset in webkit [222747] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKitLegacy

[Win] Link error: cannot open file 'WebKitGUID.lib'
https://bugs.webkit.org/show_bug.cgi?id=177759

Reviewed by Alex Christensen.

For backward compatibility reasons, this library should not be renamed from
WebKitGUID.lib to WebKitLegacyGUID.lib.

  • PlatformWin.cmake:
2:44 PM Changeset in webkit [222746] by rniwa@webkit.org
  • 3 edits in trunk/Source/WebCore

PasteImage tests are failing on debug builds
https://bugs.webkit.org/show_bug.cgi?id=177778

Reviewed by Wenson Hsieh.

After r222702, PlatformPasteboard is no longer responsible for adding "Files" as a type"
as DataTransfer takes care of it now. Removed the code to do this from PlatformPasteboardIOS.mm
and PlatformPasteboardMac.mm so that we don't fail assertions in debug builds.

  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::safeTypeForDOMToReadAndWriteForPlatformType):

  • platform/mac/PlatformPasteboardMac.mm:

(WebCore::safeTypeForDOMToReadAndWriteForPlatformType):
(WebCore::PlatformPasteboard::typesSafeForDOMToReadAndWrite const):

2:42 PM Changeset in webkit [222745] by dbates@webkit.org
  • 2 edits in trunk/Source/WebCore

No need to truncate text after calling InlineTextBox::text()
https://bugs.webkit.org/show_bug.cgi?id=177748

Reviewed by Zalan Bujtas.

Following r222670 it is no longer necessary to explicitly truncate the text run length
as InlineTextBox::text() returns a text run with respect to the truncation of the text box.

No functionality changed. So, no new tests.

  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::paint):

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

Unreviewed. Add missing exception check for the custom-get-set-inline-caching-one-level-up-proto-chain.js
test that I added. It uncovered a pre-existing missing exception check.

  • runtime/JSObject.cpp:

(JSC::JSObject::putInlineSlow):

2:31 PM Changeset in webkit [222743] by Wenson Hsieh
  • 2 edits in trunk/Tools

Guard iOS webkitGetAsEntry API tests on older iOS versions

Unreviewed test gardening. After r222688, these tests require custom pasteboard data to be enabled by default,
so don't run them against shipping iOS.

  • TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
2:31 PM Changeset in webkit [222742] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Ensure popovers are not malformed on window resize.
https://bugs.webkit.org/show_bug.cgi?id=177771

Patch by Ross Kirsling <Ross Kirsling> on 2017-10-02
Reviewed by Joseph Pecoraro.

  • UserInterface/Views/Popover.js:

Ensure stale arrow-* CSS classes are removed on update, even if our content didn't change.

2:31 PM Changeset in webkit [222741] by Antti Koivisto
  • 4 edits in trunk/Source

Add makeWeakPtr variant that takes pointer
https://bugs.webkit.org/show_bug.cgi?id=177767

Reviewed by Zalan Bujtas.

Source/WebCore:

Use it.

  • rendering/SelectionRangeData.h:

(WebCore::SelectionRangeData::Context::Context):

Source/WTF:

  • wtf/WeakPtr.h:

(WTF::makeWeakPtr):

This version deals with the nullptr.

2:15 PM WebKitGTK/2.18.x edited by Adrian Perez de Castro
(diff)
2:06 PM Changeset in webkit [222740] by Antti Koivisto
  • 6 edits in trunk/Source/WebCore

Make RenderPtr a type alias of std::unique_ptr
https://bugs.webkit.org/show_bug.cgi?id=177739

Reviewed by Sam Weinig.

It just needs a custom deleter.

  • page/FrameView.h:
  • rendering/RenderElement.cpp:

(WebCore::RenderElement::insertChildInternal):

  • rendering/RenderMultiColumnFlow.cpp:

(WebCore::RenderMultiColumnFlow::fragmentedFlowDescendantInserted):
(WebCore::RenderMultiColumnFlow::handleSpannerRemoval):

  • rendering/RenderObject.cpp:

(WebCore::RenderObjectDeleter::operator() const):
(WebCore::RenderObject::willBeDestroyed):

  • rendering/RenderPtr.h:

(WebCore::createRenderer):
(WebCore::static_pointer_cast):

Make this safer with downcast.

(WebCore::RenderPtr::RenderPtr): Deleted.
(WebCore::RenderPtr::~RenderPtr): Deleted.
(WebCore::RenderPtr::get const): Deleted.
(WebCore::RenderPtr::operator* const): Deleted.
(WebCore::RenderPtr::operator-> const): Deleted.
(WebCore::RenderPtr::operator! const): Deleted.
(WebCore::RenderPtr::operator UnspecifiedBoolType const): Deleted.
(WebCore::RenderPtr::operator=): Deleted.
(WebCore::RenderPtr::swap): Deleted.
(WebCore::RenderPtr::operator==): Deleted.
(WebCore::RenderPtr::operator!=): Deleted.
(WebCore::RenderPtr<T>::clear): Deleted.
(WebCore::RenderPtr<T>::leakPtr): Deleted.
(WebCore::RenderPtr<T>::RenderPtr): Deleted.
(WebCore::=): Deleted.
(WebCore::swap): Deleted.
(WebCore::operator==): Deleted.
(WebCore::operator!=): Deleted.
(WebCore::getPtr): Deleted.
(WTF::HashTraits<WebCore::RenderPtr<T>>::emptyValue): Deleted.
(WTF::HashTraits<WebCore::RenderPtr<T>>::peek): Deleted.

We already have hash traits for std::unique_ptr.

1:24 PM Changeset in webkit [222739] by Joseph Pecoraro
  • 40 edits
    7 adds in trunk

Web Inspector: Include Beacon and Ping requests in Network tab
https://bugs.webkit.org/show_bug.cgi?id=177641
<rdar://problem/33086839>

Reviewed by Chris Dumez.

Source/JavaScriptCore:

  • inspector/protocol/Page.json:

Include new "Beacon" and "Ping" resource types.

Source/WebCore:

Tests: http/tests/inspector/network/beacon-type.html

http/tests/inspector/network/ping-type.html

  • Modules/beacon/NavigatorBeacon.cpp:

(WebCore::NavigatorBeacon::sendBeacon):
Fix a typo.

  • loader/PingLoader.cpp:

(WebCore::PingLoader::startPingLoad):

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::load):
Include InspectorInstrumentation hooks for ping network loads.

  • loader/LoaderStrategy.h:
  • platform/network/PingHandle.h:

Include an optional ResourceResponse in the ping load completion callback.
If available this will be enough for Web Inspector to include details such
as the response statusCode.

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::willSendRequestOfTypeImpl):
(WebCore::InspectorInstrumentation::continueAfterPingLoaderImpl): Deleted.

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::willSendRequestOfType):
(WebCore::InspectorInstrumentation::continueAfterPingLoader): Deleted.

  • inspector/InspectorNetworkAgent.cpp:

(WebCore::resourceTypeForCachedResource):
(WebCore::resourceTypeForLoadType):
(WebCore::InspectorNetworkAgent::willSendRequest):
(WebCore::InspectorNetworkAgent::willSendRequestOfType):

  • inspector/InspectorNetworkAgent.h:

Make a general willSendRequestOfType hook when sending a request that does
not go through normal CachedResource loading. The Ping and Beacon requests
go through this process, we may also use this path for Preflight requests.

  • inspector/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::resourceTypeJson):
(WebCore::InspectorPageAgent::cachedResourceType):

  • inspector/InspectorPageAgent.h:

Small refactoring.

Source/WebInspectorUI:

  • Localizations/en.lproj/localizedStrings.js:

New strings for Beacon/Ping.

  • UserInterface/Images/Beacon.svg: Added.
  • UserInterface/Views/ResourceIcons.css:

(.resource-icon.resource-type-ping .icon,):
(body:not(.mac-platform, .windows-platform) .resource-icon.resource-type-ping .icon,):
(body:not(.mac-platform, .windows-platform) .large .resource-icon.resource-type-ping .icon,):
New icon for Beacon/Ping. They share an icon since they are similiar in concept:
a request that is sent and the page doesn't expect a response.

  • UserInterface/Controllers/FrameResourceManager.js:

(WI.FrameResourceManager.prototype._addNewResourceToFrameOrTarget):
When a sub-resource and a main-resource have the same URL we were not
distinguishing them. Use the resource type to distinguish them better.

  • UserInterface/Models/SourceCode.js:

(WI.SourceCode.prototype._processContent):
Safer handling if the body was base64 encoded but an empty string.

  • UserInterface/Models/Resource.js:

(WI.Resource.displayNameForType):

  • UserInterface/Models/ResourceCollection.js:

(WI.ResourceCollection.verifierForType):

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView.shortDisplayNameForResourceType):

  • UserInterface/Views/ResourceClusterContentView.js:

(WI.ResourceClusterContentView.prototype.get responseContentView):
New resource types.

  • UserInterface/Views/ResourceContentView.js:

(WI.ResourceContentView.prototype.showMessage):

  • UserInterface/Views/TextResourceContentView.js:

(WI.TextResourceContentView.prototype._contentDidPopulate):
Nicer display for empty content, which may be common for these requests.

Source/WebKit:

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::loadPing):
(WebKit::NetworkConnectionToWebProcess::didFinishPingLoad):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/PingLoad.cpp:

(WebKit::PingLoad::PingLoad):
(WebKit::PingLoad::didFinish):
(WebKit::PingLoad::didReceiveResponseNetworkSession):

  • NetworkProcess/PingLoad.h:
  • WebProcess/Network/NetworkProcessConnection.cpp:

(WebKit::NetworkProcessConnection::didFinishPingLoad):

  • WebProcess/Network/NetworkProcessConnection.h:
  • WebProcess/Network/NetworkProcessConnection.messages.in:
  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::networkProcessCrashed):
(WebKit::WebLoaderStrategy::startPingLoad):
(WebKit::WebLoaderStrategy::didFinishPingLoad):

  • WebProcess/Network/WebLoaderStrategy.h:

Pass an optional ResourceResponse back to the ping completion handler.

LayoutTests:

  • http/tests/inspector/network/beacon-type-expected.txt: Added.
  • http/tests/inspector/network/beacon-type.html: Added.
  • http/tests/inspector/network/ping-type-expected.txt: Added.
  • http/tests/inspector/network/ping-type.html: Added.
  • http/tests/inspector/network/resources/beacon.php: Added.
  • http/tests/inspector/network/resources/ping.php: Added.

Test for Beacon and Ping resource loads.

  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • platform/win/TestExpectations:

Skip beacon tests where beacon is not supported.

1:06 PM Changeset in webkit [222738] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

SelectionRangeData should not hold raw RenderObject pointers
https://bugs.webkit.org/show_bug.cgi?id=177677
<rdar://problem/34763060>

Reviewed by Sam Weinig.

SelectionRangeData::Context start and end renderers' lifetime is not strictly tied
to the lifetime of SelectionRangeData.

Covered by existing tests.

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::updateAppearance):

  • platform/DragImage.cpp:

(WebCore::createDragImageForRange):

  • rendering/SelectionRangeData.cpp:

(WebCore::isValidRendererForSelection):
(WebCore::collect):
(WebCore::SelectionRangeData::set):
(WebCore::SelectionRangeData::clear):
(WebCore::SelectionRangeData::repaint const):
(WebCore::SelectionRangeData::collectBounds const):
(WebCore::SelectionRangeData::apply):

  • rendering/SelectionRangeData.h:

(WebCore::SelectionRangeData::Context::Context):
(WebCore::SelectionRangeData::Context::start const):
(WebCore::SelectionRangeData::Context::end const):
(WebCore::SelectionRangeData::Context::startPosition const):
(WebCore::SelectionRangeData::Context::endPosition const):
(WebCore::SelectionRangeData::Context::operator== const):
(WebCore::SelectionRangeData::start const):
(WebCore::SelectionRangeData::end const):
(WebCore::SelectionRangeData::startPosition const):
(WebCore::SelectionRangeData::endPosition const):

1:04 PM October 2017 Meeting edited by rniwa@webkit.org
Add clipboard API as a topic for 2017 contributor's meeting (diff)
1:00 PM Changeset in webkit [222737] by commit-queue@webkit.org
  • 4 edits in trunk

[WPE] Remove GnuTLS dependency
https://bugs.webkit.org/show_bug.cgi?id=177750

Patch by Olivier Blin <Olivier Blin> on 2017-10-02
Reviewed by Michael Catanzaro.

libgcrypt is used by default instead of GnuTLS.
See bug 163125

.:

  • Source/cmake/OptionsWPE.cmake:

Source/WebCore:

  • PlatformWPE.cmake:
12:49 PM Changeset in webkit [222736] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION: API tests WebKit.ProcessDidTerminateRequestedByClient and WebKit.ProcessDidTerminateWithReasonCrash are timing out
https://bugs.webkit.org/show_bug.cgi?id=177764

Reviewed by Chris Dumez.

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageNavigationClient):
I shouldn't have reverted the A API telling the listener to continue if there's no client function.

12:48 PM Changeset in webkit [222735] by Carlos Garcia Campos
  • 4 edits in trunk

[WPE][GTK] Crash in webkit_web_resource_get_data_finish()
https://bugs.webkit.org/show_bug.cgi?id=177107

Reviewed by Michael Catanzaro.

Source/WebKit:

Handle errors in webkit_web_resource_get_data() callback.

  • UIProcess/API/glib/WebKitWebResource.cpp:

(resourceDataCallback):
(webkit_web_resource_get_data):

Tools:

Add a test case to check we handle errors when webkit_web_resource_get_data() fails.

  • TestWebKitAPI/Tests/WebKitGLib/TestResources.cpp:

(webViewloadChanged):
(testWebResourceGetDataError):
(beforeAll):

12:40 PM Changeset in webkit [222734] by jiewen_tan@apple.com
  • 3 edits in trunk/LayoutTests

Mark imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.worker.html as slow
https://bugs.webkit.org/show_bug.cgi?id=177615

Unreviewed test gardening.

12:34 PM Changeset in webkit [222733] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Addressing post-review comments after r222621
https://bugs.webkit.org/show_bug.cgi?id=177610

Reviewed by Darin Adler.

  • rendering/RenderMenuList.cpp:

(RenderMenuList::didUpdateActiveOption):

12:23 PM Changeset in webkit [222732] by dbates@webkit.org
  • 5 edits in trunk/Source/WebCore

Remove length argument from TextPainter::paint()
https://bugs.webkit.org/show_bug.cgi?id=177758

Reviewed by Alex Christensen.

Have TextPainter.paint() use the length of the specified TextRun as opposed to
taking an explicit argument for the length of the TextRun.

Following r222670 InlineTextBox creates a TextRun with respect to the truncated
line. Prior to r222670 InlineTextBox did not do this and hence it had to pass both
the TextRun and truncated length to TextPainter.paint() to have the line painted.
Code that needs to paint a substring of a TextRun can still do so by using TextPainter.paintRange().

No functionality changed. So, no new tests.

  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::paint):

  • rendering/SimpleLineLayoutFunctions.cpp:

(WebCore::SimpleLineLayout::paintFlow):

  • rendering/TextPainter.cpp:

(WebCore::TextPainter::paint):

  • rendering/TextPainter.h:
12:20 PM Changeset in webkit [222731] by Yusuke Suzuki
  • 2 edits in trunk/Source/bmalloc

[Linux] Enable Gigacage in x64 Linux environment
https://bugs.webkit.org/show_bug.cgi?id=177745

Reviewed by Carlos Garcia Campos.

This patch enables Gigacage in x64 Linux environment.
Gigacage enforces a caged pointer to reference to the
specific memory region. This reduces the effectiveness
of some types of attacks setting a pointer to ArrayBuffer
and modifying arbitrary memory region.

  • bmalloc/Gigacage.h:
12:04 PM Changeset in webkit [222730] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[curl] Crashes in CurlRequest::setupPUT()
https://bugs.webkit.org/show_bug.cgi?id=177733

Patch by Fujii Hironori <Fujii Hironori> on 2017-10-02
Reviewed by Alex Christensen.

Tests: http/tests/xmlhttprequest/xmlhttprequest-open-method-allowed.html

  • platform/network/curl/CurlRequest.cpp:

(WebCore::CurlRequest::setupPUT): Null-check the result of request.httpBody().

12:02 PM Changeset in webkit [222729] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[WPE] Fix UIProcess build with GStreamer and without VIDEO
https://bugs.webkit.org/show_bug.cgi?id=177753

Patch by Olivier Blin <Olivier Blin> on 2017-10-02
Reviewed by Michael Catanzaro.

GStreamer builds fail when WebAudio is enabled but VIDEO disabled.
This is the WPE counterpart of bug 153135.

  • UIProcess/API/wpe/PageClientImpl.h:
12:00 PM Changeset in webkit [222728] by commit-queue@webkit.org
  • 10 edits in trunk/Source/WebCore

[CURL] Should handle redirects in WebCore
https://bugs.webkit.org/show_bug.cgi?id=21242

Patch by Basuke Suzuki <Basuke Suzuki> on 2017-10-02
Reviewed by Alex Christensen.

  • platform/network/ResourceHandle.cpp:
  • platform/network/curl/CurlContext.cpp:

(WebCore::CurlHandle::enableAutoReferer): Deleted.

  • platform/network/curl/CurlContext.h:
  • platform/network/curl/CurlRequest.cpp:

(WebCore::CurlRequest::setupTransfer):
(WebCore::CurlRequest::didReceiveHeader):
(WebCore::CurlRequest::didReceiveData):

  • platform/network/curl/ResourceHandleCurl.cpp:

(WebCore::ResourceHandle::start):
(WebCore::ResourceHandle::continueDidReceiveResponse):
(WebCore::ResourceHandle::continueWillSendRequest):

  • platform/network/curl/ResourceHandleCurlDelegate.cpp:

(WebCore::ResourceHandleCurlDelegate::curlDidReceiveResponse):
(WebCore::ResourceHandleCurlDelegate::shouldRedirectAsGET):
(WebCore::ResourceHandleCurlDelegate::willSendRequest):
(WebCore::ResourceHandleCurlDelegate::continueWillSendRequest):
(WebCore::ResourceHandleCurlDelegate::continueAfterWillSendRequest):

  • platform/network/curl/ResourceHandleCurlDelegate.h:
  • platform/network/curl/ResourceResponse.h:
  • platform/network/curl/ResourceResponseCurl.cpp:

(WebCore::ResourceResponse::shouldRedirect):
(WebCore::ResourceResponse::isMovedPermanently const):
(WebCore::ResourceResponse::isFound const):
(WebCore::ResourceResponse::isSeeOther const):
(WebCore::ResourceResponse::isRedirection const): Deleted.

11:58 AM Changeset in webkit [222727] by commit-queue@webkit.org
  • 2 edits in trunk

[WPE] Do not require XSLT if disabled
https://bugs.webkit.org/show_bug.cgi?id=177752

Patch by Olivier Blin <Olivier Blin> on 2017-10-02
Reviewed by Michael Catanzaro.

  • Source/cmake/OptionsWPE.cmake: libxslt is not a hard dep
11:29 AM Changeset in webkit [222726] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Crashes with guard malloc under RenderFullScreen::unwrapRenderer
https://bugs.webkit.org/show_bug.cgi?id=177760

Unreviewed.

  • rendering/RenderFullScreen.cpp:

(WebCore::RenderFullScreen::unwrapRenderer):

The assert accesses 'this' after it has been deleted. It is not very valuable so remove the assert.

11:17 AM Changeset in webkit [222725] by zandobersek@gmail.com
  • 3 edits in trunk/Source/WebCore

GraphicsContext: remove unused ENABLE(3D_TRANSFORMS) && USE(TEXTURE_MAPPER)
https://bugs.webkit.org/show_bug.cgi?id=177757

Reviewed by Michael Catanzaro.

Remove three methods from the GraphicsContext class that were conditioned
with the ENABLE(3D_TRANSFORMS) and USE(TEXTURE_MAPPER) guards. These aren't
used anywhere at this point, but apparently used to be in the TextureMapper
implementation.

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

(WebCore::GraphicsContext::get3DTransform const): Deleted.
(WebCore::GraphicsContext::concat3DTransform): Deleted.
(WebCore::GraphicsContext::set3DTransform): Deleted.

11:15 AM Changeset in webkit [222724] by Caio Lima
  • 4 edits in trunk

ChakraCore/test/Function/apply3.js is resulting wrong result in x86_64
https://bugs.webkit.org/show_bug.cgi?id=175642

Reviewed by Darin Adler.

JSTests:

  • ChakraCore/test/Function/apply3.baseline-jsc:

Source/JavaScriptCore:

According JS spec, the ToLength operation[1] has a range of 0..(253)

  • 1. In Interpreter.cpp::sizeFrameForVarargs, the call to

sizeOfVarargs() was being assigned to "unsigned length", forcing a
type cast that results in different value among architectures JSC supports.
For instance, in x86_64 "4294967295 + 1" results in 0, while in ARMv6 it
results 4294967295. This patch is changing "sizeOfVarargs" to clamp the
result from "toLength" to unsigned and then get desired behavior for
all supported platforms.

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

  • interpreter/Interpreter.cpp:

(JSC::sizeOfVarargs):

  • interpreter/Interpreter.h:
11:08 AM Changeset in webkit [222723] by commit-queue@webkit.org
  • 5 edits
    2 adds in trunk/Source/WebCore

[GLib] NetworkStateNotifier implementation missing
https://bugs.webkit.org/show_bug.cgi?id=177741

Patch by Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> on 2017-10-02
Reviewed by Carlos Garcia Campos.

No new tests. The DOM support is already being tested, but we would need a way
of simulating a network outage to test GNetworkMonitor.

  • PlatformGTK.cmake: add new file.
  • PlatformWPE.cmake: add new file.
  • platform/network/NetworkStateNotifier.cpp: no longer need the empty implementations, all platforms covered.
  • platform/network/NetworkStateNotifier.h:
  • platform/network/glib/NetworkStateNotifierGLib.cpp: Added.

(WebCore::NetworkStateNotifier::updateStateWithoutNotifying): update the network state using GNetworkMonitor's availability.
(WebCore::NetworkStateNotifier::networkChangedCallback): when network-changed is emitted, trigger a state update.
(WebCore::NetworkStateNotifier::startObserving): watch GNetworkMonitor's network-changed signal.

11:04 AM Changeset in webkit [222722] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Rebaseline of js/dom/global-constructors-attributes-dedicated-worker.html after r222692.

Unreviewed test gardening.

  • platform/mac-wk1/js/dom/global-constructors-attributes-dedicated-worker-expected.txt:
10:59 AM Changeset in webkit [222721] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Fix build with MathML disabled
https://bugs.webkit.org/show_bug.cgi?id=177744

Patch by Olivier Blin <Olivier Blin> on 2017-10-02
Reviewed by Michael Catanzaro.

These are regressions from r217549 (StyleResolver) and r221379 (RenderBlockFlow), which do not guard MathML usage.

  • css/StyleResolver.cpp:

(WebCore::hasEffectiveDisplayNoneForDisplayContents):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::willCreateColumns const):

10:58 AM Changeset in webkit [222720] by zandobersek@gmail.com
  • 2 edits in trunk/LayoutTests

Unreviewed WPE gardening.

  • platform/wpe/TestExpectations: Unskip some more tests, and add

failure expectations for whatever is still failing from that subset.

10:52 AM Changeset in webkit [222719] by Yusuke Suzuki
  • 3 edits in trunk/Source/WebCore

Use ThreadIdentifier instead of thread::this_thread::get_id
https://bugs.webkit.org/show_bug.cgi?id=177729

Reviewed by Sam Weinig.

We can use WTF::ThreadIdentifier instead of thread::this_thread::get_id
to make use of ThreadIdentifier consistent in WebKit. In the other places,
we use ThreadIdentifier for this debugging purpose. And this is the only
place using thread::this_thread::get_id for the exact same purpose.
Furthermore, thread::this_thread::get_id in Windows platform. So we prefer
using ThreadIdentifier than thread::this_thread::get_id.

  • Modules/webdatabase/DatabaseDetails.h:

(WebCore::DatabaseDetails::DatabaseDetails):
(WebCore::DatabaseDetails::threadID const):

  • Modules/webdatabase/DatabaseManager.cpp:

(WebCore::DatabaseManager::detailsForNameAndOrigin):

10:35 AM Changeset in webkit [222718] by achristensen@apple.com
  • 2 edits in trunk/Tools

Fix build after r222715
https://bugs.webkit.org/show_bug.cgi?id=177697

  • TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:

(TEST):
Use the public API instead of the removed SPI.

10:26 AM Changeset in webkit [222717] by Jon Davis
  • 1 edit
    1 add in trunk/Websites/webkit.org

Add a WebKit Build Archives page
https://bugs.webkit.org/show_bug.cgi?id=177654

Reviewed by Alexey Proskuryakov.

  • wp-content/themes/webkit/build-archives.php: Added.
10:22 AM Changeset in webkit [222716] by Matt Lewis
  • 4 edits in trunk/LayoutTests

Rebaseline of js/dom/global-constructors-attributes.html after r222692.

Unreviewed test gardening.

  • platform/mac-elcapitan-wk2/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-sierra/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
10:13 AM Changeset in webkit [222715] by achristensen@apple.com
  • 3 edits in trunk/Source/WebKit

Expose more WKPreferences SPI to match C SPI
https://bugs.webkit.org/show_bug.cgi?id=177697

  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _javaEnabledForLocalFiles]):
(-[WKPreferences _setPlugInsEnabled:]): Deleted.
(-[WKPreferences _plugInsEnabled]): Deleted.

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:

_javaEnabledForLocalFiles should return the correct value.
_plugInsEnabled has public API. This SPI is not needed.

10:09 AM Changeset in webkit [222714] by achristensen@apple.com
  • 15 edits
    1 add in trunk

REGRESSION(r214201): WebProcess hangs during policy decisions
https://bugs.webkit.org/show_bug.cgi?id=177590
<rdar://problem/33362929>

Reviewed by Andy Estes.

Source/WebKit:

This is like r222431 but for trunk instead of a branch.
It includes the same regression API test so I don't make the same mistake again.

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageNavigationClient):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForResponseSync):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
(WebKit::WebFrameLoaderClient::applyToDocumentLoader):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
  • WebProcess/WebPage/WebDocumentLoader.cpp:

(WebKit::WebDocumentLoader::setNavigationID):

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::setUpPolicyListener):
(WebKit::WebFrame::invalidatePolicyListener):
(WebKit::WebFrame::didReceivePolicyDecision):

  • WebProcess/WebPage/WebFrame.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didReceivePolicyDecision):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/JavaScriptDuringNavigation.mm: Added.

(-[JSNavigationDelegate webView:didFinishNavigation:]):
(-[JSNavigationDelegate webView:decidePolicyForNavigationAction:decisionHandler:]):
(-[JSNavigationDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):
(-[JSNavigationDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
(TEST):

10:09 AM Changeset in webkit [222713] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed. Fix debug assertion after r222671.

JSTestCustomGetterSetter::finishCreation needs to call its base's finishCreation implementation.

  • jsc.cpp:

(JSTestCustomGetterSetter::finishCreation):

9:54 AM Changeset in webkit [222712] by achristensen@apple.com
  • 3 edits in trunk/Source/WebKit

Remove unnecessary copy of SessionID in WebPageProxy
https://bugs.webkit.org/show_bug.cgi?id=177702

Reviewed by Darin Adler.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::sessionID const):
(WebKit::WebPageProxy::creationParameters):

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::sessionID const): Deleted.

9:50 AM Changeset in webkit [222711] by achristensen@apple.com
  • 3 edits in trunk/Source/WebKit

Expose more WKPreferences SPI to match C SPI
https://bugs.webkit.org/show_bug.cgi?id=177697
<rdar://problem/24110556>

Reviewed by Darin Adler.

  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _setJavaEnabledForLocalFiles:]):
(-[WKPreferences _javaEnabledForLocalFiles]):
(-[WKPreferences _setCanvasUsesAcceleratedDrawing:]):
(-[WKPreferences _canvasUsesAcceleratedDrawing]):
(-[WKPreferences _setAcceleratedCompositingEnabled:]):
(-[WKPreferences _acceleratedCompositingEnabled]):
(-[WKPreferences _setDefaultTextEncodingName:]):
(-[WKPreferences _defaultTextEncodingName]):
(-[WKPreferences _setNeedsSiteSpecificQuirks:]):
(-[WKPreferences _needsSiteSpecificQuirks]):
(-[WKPreferences _setAuthorAndUserStylesEnabled:]):
(-[WKPreferences _authorAndUserStylesEnabled]):
(-[WKPreferences _setDOMTimersThrottlingEnabled:]):
(-[WKPreferences _domTimersThrottlingEnabled]):
(-[WKPreferences _setWebArchiveDebugModeEnabled:]):
(-[WKPreferences _webArchiveDebugModeEnabled]):
(-[WKPreferences _setLocalFileContentSniffingEnabled:]):
(-[WKPreferences _localFileContentSniffingEnabled]):
(-[WKPreferences _setUsesPageCache:]):
(-[WKPreferences _usesPageCache]):
(-[WKPreferences _setPageCacheSupportsPlugins:]):
(-[WKPreferences _pageCacheSupportsPlugins]):
(-[WKPreferences _setShouldPrintBackgrounds:]):
(-[WKPreferences _shouldPrintBackgrounds]):
(-[WKPreferences _setWebSecurityEnabled:]):
(-[WKPreferences _webSecurityEnabled]):
(-[WKPreferences _setUniversalAccessFromFileURLsAllowed:]):
(-[WKPreferences _universalAccessFromFileURLsAllowed]):
(-[WKPreferences _setAVFoundationEnabled:]):
(-[WKPreferences _avFoundationEnabled]):
(-[WKPreferences _setSuppressesIncrementalRendering:]):
(-[WKPreferences _suppressesIncrementalRendering]):
(-[WKPreferences _setAsynchronousPluginInitializationEnabled:]):
(-[WKPreferences _asynchronousPluginInitializationEnabled]):
(-[WKPreferences _setArtificialPluginInitializationDelayEnabled:]):
(-[WKPreferences _artificialPluginInitializationDelayEnabled]):
(-[WKPreferences _setCookieEnabled:]):
(-[WKPreferences _cookieEnabled]):
(-[WKPreferences _setPlugInSnapshottingEnabled:]):
(-[WKPreferences _plugInSnapshottingEnabled]):
(-[WKPreferences _setQTKitEnabled:]):
(-[WKPreferences _qtKitEnabled]):
(-[WKPreferences _setSubpixelCSSOMElementMetricsEnabled:]):
(-[WKPreferences _subpixelCSSOMElementMetricsEnabled]):
(-[WKPreferences _setMediaSourceEnabled:]):
(-[WKPreferences _mediaSourceEnabled]):
(-[WKPreferences _setViewGestureDebuggingEnabled:]):
(-[WKPreferences _viewGestureDebuggingEnabled]):
(-[WKPreferences _setCSSAnimationTriggersEnabled:]):
(-[WKPreferences _cssAnimationTriggersEnabled]):
(-[WKPreferences _setStandardFontFamily:]):
(-[WKPreferences _standardFontFamily]):
(-[WKPreferences _setNotificationsEnabled:]):
(-[WKPreferences _notificationsEnabled]):
(-[WKPreferences _setBackspaceKeyNavigationEnabled:]):
(-[WKPreferences _backspaceKeyNavigationEnabled]):

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
9:00 AM Changeset in webkit [222710] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Fix memory leaks in RenderMultiColumnFlow
https://bugs.webkit.org/show_bug.cgi?id=177735

Reviewed by Zalan Bujtas.

  • rendering/RenderMultiColumnFlow.cpp:

(WebCore::RenderMultiColumnFlow::evacuateAndDestroy):

Switch from destroy() to removeFromParentAndDestroy() (they are currently equivalent in practice).

(WebCore::RenderMultiColumnFlow::fragmentedFlowDescendantInserted):

Destroy the placeholders instead of leaking them.

(WebCore::RenderMultiColumnFlow::handleSpannerRemoval):

Destroy the placeholder instead of leaking it.

7:59 AM Changeset in webkit [222709] by Jonathan Bedard
  • 2 edits
    1 add in trunk/Tools

Log stack-trace for run-webkit-tests when interrupted
https://bugs.webkit.org/show_bug.cgi?id=176393
<rdar://problem/34262310>

Reviewed by Darin Adler.

When run-webkit-tests is stuck, it is difficult to immediately tell
why. Saving a stack-trace when run-webkit-tests is terminated
or stopped with CNTRL-C will make such issues easier to debug.

  • Scripts/webkitpy/common/interupt_debugging.py: Added.

(log_stack_trace): Given a Python frame object, log a stack trace to
the provided file.
(log_stack_trace_on_term): Attach a listener to SIGTERM so that a
stack-trace can be logged when a program is terminated.
(log_stack_trace_on_cntrl_c): Attach a listener to SIGINT so that a
stack-trace can be logged when a program is CNTRL-Ced.

  • Scripts/webkitpy/layout_tests/run_webkit_tests.py:

(main): Set handlers to log stack trace on interruption.

7:32 AM Changeset in webkit [222708] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

[GTK][WPE] Enable interactive forms validation by default
https://bugs.webkit.org/show_bug.cgi?id=177737

Reviewed by Michael Catanzaro.

It's currently disabled for no reason.

  • Shared/WebPreferencesDefinitions.h:
6:17 AM Changeset in webkit [222707] by cturner@igalia.com
  • 2 edits in trunk/Source/WebCore

Try to play AVC codec even if H.264 decoder only advertises byte-stream profile.
https://bugs.webkit.org/show_bug.cgi?id=177550

GStreamer's element factory filters will claim they can't play videos with AVC
codec strings, but the elements really are capable of playing them when filters
like videoconvert are inserted by playbin. Videos of this variety are in the YouTube
2018 EME conformance tests.

Also replace std::array with a stack array, this saves having to count
the number of elements (the compiler does that now) and reduces braces.

Reviewed by Carlos Alberto Lopez Perez.

  • platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:

(WebCore::codecSet):

5:55 AM Changeset in webkit [222706] by tpopela@redhat.com
  • 4 edits in trunk/Source/WebCore

[SOUP] Default kerberos authentication credentials are used in ephemeral (private) mode
https://bugs.webkit.org/show_bug.cgi?id=177738

Reviewed by Carlos Garcia Campos.

If the session is ephemeral then don't enable the Negotiate support in
our SoupSession.

  • platform/network/soup/NetworkStorageSessionSoup.cpp: Pass the

session ID if it's known to the SoupNetworkSession.
(WebCore::NetworkStorageSession::ensurePrivateBrowsingSession):
(WebCore::NetworkStorageSession::getOrCreateSoupNetworkSession const):

  • platform/network/soup/SoupNetworkSession.cpp:

(WebCore::SoupNetworkSession::SoupNetworkSession): If the session is
ephemeral (based on given session ID) then don't activate the
Negotiate support in SoupSession.

  • platform/network/soup/SoupNetworkSession.h:

Change the constructor to accept the PAL::SessionID with the default
value set to PAL::SessionID::emptySessionID.

5:17 AM Changeset in webkit [222705] by jdiggs@igalia.com
  • 2 edits in trunk/Source/WebCore

REGRESSION(r222640) [GTK] Build broken with ATK 2.14
https://bugs.webkit.org/show_bug.cgi?id=177634

Reviewed by Michael Catanzaro.

Use ATK_CHECK_VERSION to prevent the build failure.

No new tests. This fixes a downstream build failure.

  • accessibility/atk/AXObjectCacheAtk.cpp:

(WebCore::AXObjectCache::postPlatformNotification):

5:05 AM Changeset in webkit [222704] by Michael Catanzaro
  • 15 edits in trunk

Remove ENABLE_CSS_REGIONS
https://bugs.webkit.org/show_bug.cgi?id=177689

Reviewed by Darin Adler.

.:

  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/OptionsMac.cmake:
  • Source/cmake/OptionsWPE.cmake:
  • Source/cmake/OptionsWin.cmake:
  • Source/cmake/WebKitFeatures.cmake:
  • Source/cmake/tools/vsprops/FeatureDefines.props:
  • Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

Source/WebKit:

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDeprecated.cpp:

(webkit_dom_element_get_webkit_region_overset):

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDeprecated.h:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp:

(webkit_dom_element_get_webkit_region_overset): Deleted.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.h:

Tools:

  • Scripts/webkitperl/FeatureList.pm:
2:09 AM Changeset in webkit [222703] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebDriver

WebDriver: HTTP status code is not correct for some of the errors
https://bugs.webkit.org/show_bug.cgi?id=177354

Reviewed by Brian Burg.

I think this changed in the spec at some point. The thing is that no such alert, frame and window and stale
element reference errors should return 404 instead of 400.

https://w3c.github.io/webdriver/webdriver-spec.html#handling-errors

  • CommandResult.cpp:

(WebDriver::CommandResult::httpStatusCode const):

1:55 AM Changeset in webkit [222702] by rniwa@webkit.org
  • 8 edits in trunk/Source/WebCore

Pasteboard shouldn't add "Files" as a type
https://bugs.webkit.org/show_bug.cgi?id=177731

Reviewed by Wenson Hsieh.

Removed the platform specific code to add "Files" when there is a file present in platform's pasteboard.
DataTransfer::types now adds "Files" automatically when Pasteboard::containsFiles returns true.

No new tests since there should be no behavioral change.

  • dom/DataTransfer.cpp:

(WebCore::DataTransfer::types const):

  • platform/gtk/PasteboardGtk.cpp:

(WebCore::Pasteboard::typesForLegacyUnsafeBindings):

  • platform/ios/PasteboardIOS.mm:

(WebCore::Pasteboard::addHTMLClipboardTypesForCocoaType):

  • platform/mac/PasteboardMac.mm:

(WebCore::Pasteboard::addHTMLClipboardTypesForCocoaType):

  • platform/win/PasteboardWin.cpp:

(WebCore::addMimeTypesForFormat): Removed the code to add "Text" and "URL" as separate types since
this is not what the rest of ports do, and this type normalization is now taken care of by DataTransfer
since r221063.

1:25 AM Changeset in webkit [222701] by rniwa@webkit.org
  • 5 edits in trunk/Source/WebCore

Another attempt to fix Windows build after r222697.

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::updateAppearance):

  • platform/DragImage.cpp:

(WebCore::createDragImageForRange):

  • rendering/SelectionRangeData.cpp:

(WebCore::SelectionRangeData::clear):

  • rendering/SelectionRangeData.h:

(WebCore::SelectionRangeData::Context::Context):

12:26 AM Changeset in webkit [222700] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Windows build fix attempt after r222697.

  • platform/DragImage.cpp:

(WebCore::createDragImageForRange):

12:03 AM Changeset in webkit [222699] by rniwa@webkit.org
  • 10 edits in trunk/Source/WebCore

Merge readFilenames() and read(PasteboardFileReader)
https://bugs.webkit.org/show_bug.cgi?id=177728
<rdar://problem/34761725>

Reviewed by Sam Weinig.

Generalized PasteboardFileReader to return multiple files instead of just one file, and replaced the use
of Pasteboard::readFilenames() with it. Because eliminates the need for finding the list of types to read
as files in addition to file names, this patch also removes Pasteboard::typesTreatedAsFiles().

Note that Pasteboard::readFilenames() continues to exist in macOS and iOS as it's internally used by
Pasteboard::read(PasteboardFileReader) in PasteboardCocoa.mm.

No new tests since there should be no behavioral change.

  • dom/DataTransfer.cpp:

(WebCore::DataTransfer::files const): Now makes a single call to Pasteboard::read(PasteboardFileReader)
instead of reading filenames and then falling back to it. Also got rid of if-def for drag drop checks
since forDrag() and forFileDrag() are always defined since r222688.
(WebCore::PasteboardFileTypeReader): Added. Gets the list of all file types.
(WebCore::PasteboardFileTypeReader::readFilename): Added. Gets the list of all file types.
(WebCore::PasteboardFileTypeReader::readBuffer): Added. Gets the list of all file types.
(WebCore::DataTransfer::hasFileOfType): Reimplemented using PasteboardFileTypeReader.

  • editing/WebCorePasteboardFileReader.cpp:

(WebCore::WebCorePasteboardFileReader::readFilename): Added.
(WebCore::WebCorePasteboardFileReader::readBuffer): Renamed from read.

  • editing/WebCorePasteboardFileReader.h:
  • platform/Pasteboard.h:

(WebCore::PasteboardFileReader): Removed the constructor since we no longer specify a specific type to
read off of pasteboard, and renamed the existing read function to readBuffer, and added a new variant
which takes a filename.

  • platform/StaticPasteboard.h:
  • platform/cocoa/PasteboardCocoa.mm:

(WebCore::imageTypeToFakeFilename): Return "image/png" for ImageType::TIFF (to do TIFF-to-PNG conversion;
see r222656 for why this is needed) now that this function is used to convert directly from image type
converted from cocoa type instead of the one reverse-converted from MIME type.
(WebCore::mimeTypeToImageType): Deleted.
(WebCore::Pasteboard::typesTreatedAsFiles): Deleted.
(WebCore::Pasteboard::typesForLegacyUnsafeBindings): Use newly added readTypesWithSecurityCheck.
(WebCore::convertTIFFToPNG): Extracted out of read(PasteboardFileReader).
(WebCore::Pasteboard::read): Generalized to add filenames as well as image buffers as files. Because now
we're concerting Cocoa types to ImageType, we no longer have to detect when TIFF-as-PNG conversion is
happening here. We just treat ImageType::TIFF as PNG and do the conversion.
(WebCore::Pasteboard::readStringInCustomData): Use newly added readBufferForTypeWithSecurityCheck.
(WebCore::Pasteboard::readTypesWithSecurityCheck): Added.
(WebCore::Pasteboard::readBufferForTypeWithSecurityCheck): Added.

  • platform/gtk/PasteboardGtk.cpp:

(WebCore::Pasteboard::read): Implemented.
(WebCore::Pasteboard::typesTreatedAsFiles): Deleted.
(WebCore::Pasteboard::containsFiles): Implemented without calling readFilenames, which has been deleted.
(WebCore::Pasteboard::readFilenames): Deleted.

  • platform/win/PasteboardWin.cpp:

(WebCore::Pasteboard::typesTreatedAsFiles): Deleted.
(WebCore::PasteboardFileCounter): Added. Used to counts the number of files in the pasteboard.
(WebCore::PasteboardFileCounter::readFilename):
(WebCore::PasteboardFileCounter::readBuffer):
(WebCore::Pasteboard::containsFiles):
(WebCore::Pasteboard::read): Moved the code to extract filenames out of readFilenames.
(WebCore::Pasteboard::readFilenames): Deleted.

  • platform/wpe/PasteboardWPE.cpp:

(WebCore::Pasteboard::typesTreatedAsFiles): Deleted.
(WebCore::Pasteboard::readFilenames): Deleted.

Note: See TracTimeline for information about the timeline view.