Timeline


and

07/24/16: Today

06:08 Changeset [203663] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

[Coordinated Graphics] ASSERTION FAILED: !m_flushingLayers in fast/repaint/animation-after-layer-scroll.html
https://bugs.webkit.org/show_bug.cgi?id=160142

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2016-07-24
Reviewed by Michael Catanzaro.

This only happens in layout tests, because it happens when RenderLayerCompositor::layerTreeAsText() is
called. The thing is that CoordinatedGraphicsLayer::flushCompositingState() calls notifyFlushRequired() that
checks if the coordinator is flusing layers and if not it calls RenderLayerCompositor::notifyFlushRequired() and
returns early. This normally works because the coodinator is the one starting the layer flush, so that when
RenderLayerCompositor::flushPendingLayerChanges() is called the coordinator is always flusing layers. But
RenderLayerCompositor::layerTreeAsText() calls RenderLayerCompositor::flushPendingLayerChanges() directly, so at
that moment the coordinator is not flusing layers, what causes that
CoordinatedGraphicsLayer::flushCompositingState() ends up calling RenderLayerCompositor::notifyFlushRequired()
that schedules a new flush while flusing layers causing the
assertion. CoordinatedGraphicsLayer::flushCompositingState() is always called from
CompositingCoordinator::flushPendingLayerChanges() or RenderLayerCompositor::flushPendingLayerChanges() so we
never need to call RenderLayerCompositor::notifyFlushRequired() from there.

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::notifyFlushRequired): This is void now since the return value is not checked anywhere.
(WebCore::CoordinatedGraphicsLayer::flushCompositingState): Remove the call to notifyFlushRequired().

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
06:04 Changeset [203662] by mcatanzaro@igalia.com
  • 3 edits in trunk/LayoutTests

[GTK] Layout test security/contentSecurityPolicy/plugins-types-allows-quicktime-plugin-replacement.html timing out
https://bugs.webkit.org/show_bug.cgi?id=160128

Unreviewed, skip the tests.

  • platform/efl/TestExpectations:
  • platform/gtk/TestExpectations:
04:10 Changeset [203661] by darin@apple.com
  • 3 edits
    2 deletes in trunk/Source

Adding a new WebCore JavaScript built-in source file does not trigger rebuild of WebCoreJSBuiltins*
https://bugs.webkit.org/show_bug.cgi?id=160115

Reviewed by Youenn Fablet.

Source/JavaScriptCore:

  • make-generated-sources.sh: Removed. Was unused.

Source/WebCore:

  • DerivedSources.make: Added a missing dependency so the rule that builds WebCore_BUILTINS_WRAPPERS

kicks in when the list of WebCore_BUILTINS_SOURCES is modified. Also added another missing dependency
so that changes to the JavaScript built-ins Python scripts will also trigger WebCore_BUILTINS_WRAPPERS.

  • make-generated-sources.sh: Removed. Was unused.

07/23/16: Yesterday

20:11 Changeset [203660] by zalan@apple.com
  • 12 edits in trunk/Source/WebCore

Stop isEmpty() from leaking out of SVG.
https://bugs.webkit.org/show_bug.cgi?id=160121

Reviewed by Simon Fraser.

It's unclear what isEmpty() actually means and it doesn't bring any value to Render* classes.

No change in functionality.

  • editing/CompositeEditCommand.cpp:

(WebCore::CompositeEditCommand::addBlockPlaceholderIfNeeded):

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

(WebCore::RenderListItem::isEmpty): Deleted.

  • rendering/RenderListItem.h:
  • rendering/RenderObject.h:

(WebCore::RenderObject::isEmpty): Deleted.

  • rendering/RenderRubyRun.cpp:

(WebCore::RenderRubyRun::removeChild):
(WebCore::RenderRubyRun::isEmpty): Deleted.

  • rendering/RenderRubyRun.h:
  • rendering/mathml/RenderMathMLFenced.cpp:

(WebCore::RenderMathMLFenced::updateFromElement):
(WebCore::RenderMathMLFenced::addChild):

  • rendering/mathml/RenderMathMLRoot.cpp:

(WebCore::RenderMathMLRoot::paint):

  • rendering/svg/RenderSVGShape.h:
19:16 WebKitGTK/Gardening/Calendar edited by mcatanzaro@igalia.com
(diff)
19:15 Changeset [203659] by mcatanzaro@igalia.com
  • 2 edits in trunk/LayoutTests

Unreviewed GTK test expectations fixups

  • platform/gtk/TestExpectations:
19:12 WebKitGTK/Gardening/Calendar edited by mcatanzaro@igalia.com
(diff)
19:11 Changeset [203658] by mcatanzaro@igalia.com
  • 3 edits in trunk/LayoutTests

Even more unreviewed flaky GTK test gardening

18:39 Changeset [203657] by zalan@apple.com
  • 11 edits in trunk/Source/WebCore

table*BorderAdjoiningCell and borderAdjoiningCell* should take reference instead of RenderTableCell*.
https://bugs.webkit.org/show_bug.cgi?id=160123

Reviewed by Simon Fraser.

No change in functionality.

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::tableStartBorderAdjoiningCell):
(WebCore::RenderTable::tableEndBorderAdjoiningCell):

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

(WebCore::RenderTableCell::computeCollapsedStartBorder):
(WebCore::RenderTableCell::computeCollapsedEndBorder):

  • rendering/RenderTableCell.h:

(WebCore::RenderTableCell::borderAdjoiningCellBefore):
(WebCore::RenderTableCell::borderAdjoiningCellAfter):

  • rendering/RenderTableCol.cpp:

(WebCore::RenderTableCol::borderAdjoiningCellStartBorder):
(WebCore::RenderTableCol::borderAdjoiningCellEndBorder):
(WebCore::RenderTableCol::borderAdjoiningCellBefore):
(WebCore::RenderTableCol::borderAdjoiningCellAfter):

  • rendering/RenderTableCol.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::borderAdjoiningStartCell):
(WebCore::RenderTableRow::borderAdjoiningEndCell):

  • rendering/RenderTableRow.h:
  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::borderAdjoiningStartCell):
(WebCore::RenderTableSection::borderAdjoiningEndCell):

  • rendering/RenderTableSection.h:
18:38 Changeset [203656] by zalan@apple.com
  • 2 edits in trunk/Source/WebCore

Remove unused enum and stale comment from RenderObject.
https://bugs.webkit.org/show_bug.cgi?id=160122

Reviewed by Simon Fraser.

No change in functionality.

  • rendering/RenderBox.h:
16:13 WebKitGTK/Gardening/Calendar edited by mcatanzaro@igalia.com
(diff)
16:10 Changeset [203655] by mcatanzaro@igalia.com
  • 3 edits in trunk/LayoutTests

Unreviewed flaky test gardening for GTK

Mostly more fallout from threaded compositor

15:02 Changeset [203654] by mcatanzaro@igalia.com
  • 2 edits in trunk/LayoutTests

More unreviewed GTK gardening

Update expectations for tests timing out

  • platform/gtk/TestExpectations:
14:47 Changeset [203653] by mcatanzaro@igalia.com
  • 2 edits in trunk/LayoutTests

More unreviewed GTK gardening

Mark more flaky crashes after enabling threaded compositor

  • platform/gtk/TestExpectations:
14:32 Changeset [203652] by mcatanzaro@igalia.com
  • 2 edits in trunk/LayoutTests

More unreviewed GTK gardening, mark even more new passes after enabling threaded compositor

  • platform/gtk/TestExpectations:
14:09 Changeset [203651] by cdumez@apple.com
  • 2 edits in trunk/Source/WebKit/win

Unreviewed, fix Windows build after r203623.

  • DOMCoreClasses.cpp:

(DOMDocument::getComputedStyle):

11:21 WebKitGTK/Gardening/Calendar edited by mcatanzaro@igalia.com
(diff)
11:14 Changeset [203650] by mcatanzaro@igalia.com
  • 2 edits in trunk/LayoutTests

Unreviewed GTK gardening, mark many emoji gender tests passing

  • platform/gtk/TestExpectations:
11:05 Changeset [203649] by mcatanzaro@igalia.com
  • 3 edits in trunk/LayoutTests

Unreviewed test gardening

These tests are flaky now on GTK, passing about half the time.

10:51 Changeset [203648] by mcatanzaro@igalia.com
  • 2 edits in trunk/LayoutTests

Unreviewed GTK gardening new passes after enabling threaded compositor

  • platform/gtk/TestExpectations:
09:41 Changeset [203647] by mcatanzaro@igalia.com
  • 2 edits in trunk/LayoutTests

Unreviewed test expectation gardening

Skip layout test editing/deleting/delete-emoji.html

  • platform/gtk/TestExpectations:
09:31 Changeset [203646] by mcatanzaro@igalia.com
  • 2 edits in trunk/LayoutTests

Unreviewed, move some GTK expectations to more appropriate locations

  • platform/gtk/TestExpectations:
09:28 Changeset [203645] by mcatanzaro@igalia.com
  • 2 edits in trunk/LayoutTests

Unreviewed, add GTK expectations for threaded compositor regressions

  • platform/gtk/TestExpectations:
08:25 Changeset [203644] by commit-queue@webkit.org
  • 5 edits in trunk

[Coordinated Graphics] Lots of flaky tests
https://bugs.webkit.org/show_bug.cgi?id=160118

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2016-07-23
Reviewed by Michael Catanzaro.

Source/WebCore:

Since the GTK+ ported to threaded compositor (coordinated graphics) there are a lot of flaky tests in the
bots. In manu of the cases the diff shows a different size in the FrameView layer.

This happens for tests run in the same WTR after fast/fixed-layout/fixed-layout.html. This is what happens:

1.- Test fast/fixed-layout/fixed-layout.html runs and sets fixed layout to true and fixed layout size to 400x400
2.- When it finishes TestController::resetStateToConsistentValues() is called.
3.- Blank URL is loaded after state has been updated
4.- Then Reset message is handled in the web process and Internals::resetToConsistentState() resets the fixed

layout state and size.

5.- onresize happens and the handler set in fast/fixed-layout/fixed-layout.html is invoked setting the fixed

layout to true and size to 400x400 again.

6.- about_blank is then loaded with the fixed layout enabled, as well as other tests after this one.

In addition to this, coordinated graphics uses a fixedVisibleContentRect in ScrollView that is never reset.

  • platform/ScrollView.cpp:

(WebCore::ScrollView::unscaledVisibleContentSizeIncludingObscuredArea): Only use m_fixedVisibleContentRect when
fixed layout is enabled.
(WebCore::ScrollView::unscaledUnobscuredVisibleContentSize): Ditto.
(WebCore::ScrollView::visibleContentRectInternal): Ditto.

  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState): Reset also the m_fixedVisibleContentRect.

LayoutTests:

  • fast/fixed-layout/fixed-layout.html: Remove the onresize handler when the test finishes to ensure it can't be

called later affecting other tests.

08:23 Changeset [203643] by commit-queue@webkit.org
  • 4 edits in trunk

[Coordinated Graphics] Test imported/blink/svg/custom/svg-image-layers-crash.html crashes
https://bugs.webkit.org/show_bug.cgi?id=160078

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2016-07-23
Reviewed by Michael Catanzaro.

Source/WebCore:

This is a merge of Blink r155373.
https://chromiumcodereview.appspot.com/20789004

Disable accelerated compositing for SVGImage content layers. SVGImageChromeClient does not support it.

Fixes imported/blink/svg/custom/svg-image-layers-crash.html.

  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::dataChanged):

LayoutTests:

  • platform/efl/TestExpectations: Remove imported/blink/svg/custom/svg-image-layers-crash.html.
02:58 Changeset [203642] by commit-queue@webkit.org
  • 28 edits
    7 adds
    3 deletes in trunk

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

It broke make-based builds (Requested by youenn on #webkit).

Reverted changeset:

"[Fetch API] Request should be created with any HeadersInit
data"
https://bugs.webkit.org/show_bug.cgi?id=159672
http://trac.webkit.org/changeset/203641

01:55 Changeset [203641] by commit-queue@webkit.org
  • 27 edits
    3 copies
    1 delete in trunk

[Fetch API] Request should be created with any HeadersInit data
https://bugs.webkit.org/show_bug.cgi?id=159672

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

LayoutTests/imported/w3c:

  • imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic-expected.txt: Test was previously

failing due to lack of support for HeadersInit data in Request constructor.

  • platform/mac-wk1/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic-expected.txt: Removed.
  • web-platform-tests/fetch/api/request/request-headers-expected.txt:
  • web-platform-tests/fetch/api/request/request-headers.html: Adding new test.

Source/JavaScriptCore:

  • Scripts/builtins/builtins_generator.py:

(WK_lcfirst): Synchronized with CodeGenerator.pm version.

Source/WebCore:

Made Request use JSBuiltinConstructor.
This allows initializing newly created Request with a JS built-in function, initializeFetchRequest.
initializeFetchRequest can call @fillFetchHeaders internal built-in to handle any HeadersInit data.
Future effort should be made to migrate more initialization code in initializeFetchRequest.

Made window and worker fetch function as a JS built-in.
This becomes more handy as these new functions can construct the Request object.
They can then call a single private function that takes a Request object as input.
Updated DOMWindowFetch and WorkerGlobalScopeFetch code accordingly.

To enable this, the binding generator is updated to support runtime-enabled JS built-in functions and
private functions atttached to global objects.

Covered by existing and modified tests.
Binding generator test covered by updated binding tests.

  • CMakeLists.txt: Adding DOMWindowFetch.js, FetchRequest.js and WorkerGlobalScopeFetch.js built-in files.
  • DerivedSources.make: Ditto.
  • Modules/fetch/DOMWindowFetch.cpp: Removed overloaded fetch and updated according new signature.

(WebCore::DOMWindowFetch::fetch):

  • Modules/fetch/DOMWindowFetch.h: Ditto.
  • Modules/fetch/DOMWindowFetch.idl: Making fetch a JS built-in and adding a @fetchRequest private function.
  • Modules/fetch/DOMWindowFetch.js: Added.

(fetch):

  • Modules/fetch/FetchHeaders.h:

(WebCore::FetchHeaders::setGuard): Used by FetchRequest when initializing headers.

  • Modules/fetch/FetchRequest.cpp:

(WebCore::buildHeaders): Removed as implemented in JS.
(WebCore::FetchRequest::initializeOptions): Added to handle most of the dictionary initialization.
(WebCore::FetchRequest::initializeWith): Method called from built-in constructor function.
(WebCore::FetchRequest::setBody): Corresponding to @setBody private method.
(WebCore::buildBody): Deleted.

  • Modules/fetch/FetchRequest.h:
  • Modules/fetch/FetchRequest.idl:
  • Modules/fetch/FetchRequest.js: Added.

(initializeFetchRequest): Implements fetch Request(input, init) constructor.

  • Modules/fetch/FetchResponse.cpp:

(WebCore::FetchResponse::fetch): Removed the construction of FetchRequest in fetch method since it is done by JS built-in code.

  • Modules/fetch/FetchResponse.h:
  • Modules/fetch/WorkerGlobalScopeFetch.cpp: Removed overloaded fetch and updated according new signature.

(WebCore::WorkerGlobalScopeFetch::fetch):

  • Modules/fetch/WorkerGlobalScopeFetch.h: Ditto.
  • Modules/fetch/WorkerGlobalScopeFetch.idl: Making fetch a JS built-in and adding a @fetchRequest private function.
  • Modules/fetch/WorkerGlobalScopeFetch.js: Added.

(fetch):

  • bindings/js/WebCoreBuiltinNames.h: Adding fetchRequest, setBody and Request private identifiers.
  • bindings/scripts/CodeGenerator.pm:

(WK_lcfirst): Replacing dOM by dom.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation): Adding support for runtime-enabled built-in methods and private methods.

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

(WebCore::JSTestGlobalObject::finishCreation):
(WebCore::jsTestGlobalObjectInstanceFunctionTestPrivateFunction):

  • bindings/scripts/test/ObjC/DOMTestGlobalObject.mm:

(-[DOMTestGlobalObject testJSBuiltinFunction]):

  • bindings/scripts/test/TestGlobalObject.idl: Adding tests for runtime-enabled global built-in methods and private methods.
01:39 Changeset [203640] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Reset font-style on the <math> element
https://bugs.webkit.org/show_bug.cgi?id=160074

Patch by Frederic Wang <fwang@igalia.com> on 2016-07-23
Reviewed by Darin Adler.

Source/WebCore:

Mathematical formulas with italic font-style render poorly (slanted operators, mathvariant
italic etc). We align on Gecko and make the user agent stylesheet reset the font-style to
'normal' by default. This addresses the concrete use case of formula inside theorem or
proposition statements, which are often written in italic.

Test: mathml/presentation/math-font-style.html

  • css/mathml.css:

(math): Reset the font-style to normal.

LayoutTests:

  • mathml/presentation/math-font-style-expected.html: Added.
  • mathml/presentation/math-font-style.html: Added.
01:19 Changeset [203639] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

Source/WebCore:
[MathML] PaintInfo state is not properly restored after applyTransform.
https://bugs.webkit.org/show_bug.cgi?id=160077

Patch by Frederic Wang <fwang@igalia.com> on 2016-07-23
Reviewed by Simon Fraser.

PaintInfo::applyTransform modifies PaintInfo::rect and the original state is not properly
restored by GraphicsContextStateSaver. To avoid some weird rendering bugs in MathOperator
and RenderMathMLMenclose, we follow what is done in SVG renderers and make a copy of the
original PaintInfo before applying the transform.

Test: mathml/presentation/bug160077.html

  • rendering/mathml/MathOperator.cpp:

(WebCore::MathOperator::paint):

  • rendering/mathml/RenderMathMLMenclose.cpp:

(WebCore::RenderMathMLMenclose::paint):

LayoutTests:
[MathML] PaintInfo state not properly restored after applyTransform.
https://bugs.webkit.org/show_bug.cgi?id=160077

Patch by Frederic Wang <fwang@igalia.com> on 2016-07-23
Reviewed by Simon Fraser.

  • mathml/presentation/bug160077-expected-mismatch.html: Added.
  • mathml/presentation/bug160077.html: Added.
01:07 Changeset [203638] by commit-queue@webkit.org
  • 9 edits in trunk

WPT stash server should be kept running when launching wpt server
https://bugs.webkit.org/show_bug.cgi?id=160052

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

LayoutTests/imported/w3c:

  • web-platform-tests/XMLHttpRequest/send-authentication-basic-setrequestheader-and-arguments-expected.txt:
  • web-platform-tests/fetch/api/cors/cors-preflight-expected.txt:
  • web-platform-tests/fetch/api/cors/cors-preflight-referrer-expected.txt:
  • web-platform-tests/html/semantics/document-metadata/the-link-element/document-without-browsing-context-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-iframe-element/cross_origin_parentage-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-iframe-element/same_origin_parentage-expected.txt:

Tools:

  • Scripts/webkitpy/layout_tests/servers/web_platform_test_launcher.py:

(main): waiting to read stdin while stash server is started.

00:46 Changeset [203637] by commit-queue@webkit.org
  • 8 edits in trunk

[Fetch API] Fetch response stream should enqueue Uint8Array
https://bugs.webkit.org/show_bug.cgi?id=160083

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

LayoutTests/imported/w3c:

  • web-platform-tests/fetch/api/resources/utils.js:

Source/WebCore:

Covered by updated tests.

Before enqueuing, ReadableStreamController::enqueue will convert ArrayBuffer as Uint8Array.
It also returns a boolean whether the operation is successful or not.

If returned value is false, calling code will stop loading or if everything is loaded it will refrain from closing the stream.
The enqueuing should be succesful except in OutOfMemory cases. This case is not yet handled in test cases.

Updated the code to remove templated enqueuing as Fetch has no use of it.

  • Modules/fetch/FetchBody.cpp:

(WebCore::FetchBody::consumeAsStream): Do not close the stream if enqueuing failed.

  • Modules/fetch/FetchBodyOwner.cpp:

(WebCore::FetchBodyOwner::blobChunk): Stop blob loading if enqueuing failed.

  • Modules/fetch/FetchResponse.cpp:

(WebCore::FetchResponse::BodyLoader::didReceiveData): Stop resource loading if enqueuing failed.
(WebCore::FetchResponse::consumeBodyAsStream): Ditto.

  • Modules/fetch/FetchResponseSource.h:
  • bindings/js/ReadableStreamController.h:

(WebCore::ReadableStreamController::enqueue):
(WebCore::ReadableStreamController::enqueue<RefPtr<JSC::ArrayBuffer>>): Deleted.

00:17 Changeset [203636] by nvasilyev@apple.com
  • 2 edits in trunk/Source/WebInspectorUI

REGRESSION (r202876): Web Inspector: Switching away from Console tab with a lot of messages is slow
https://bugs.webkit.org/show_bug.cgi?id=160112

Reviewed by Joseph Pecoraro.

Showing NavigationSidebar before removing previous TabContentView can be very slow when
TabContentView is ConsoleTabContentView with a lot of messages. The order of operations
(show sidebar, change content view, show sidebar) caused more forced layouts. This patch
reduces the number of forced layouts by changes the order to: show content view, show sidebar,
show sidebar.

  • UserInterface/Views/TabBrowser.js:

(WebInspector.TabBrowser.prototype._tabBarItemSelected):

07/22/16:

23:15 Changeset [203635] by joepeck@webkit.org
  • 5 edits in trunk/Source/WebKit2

Web Automation: All key events should be processed before sending response
https://bugs.webkit.org/show_bug.cgi?id=160114
<rdar://problem/27505943>

Reviewed by Darin Adler.

When evaluating performKeyboardInteractions, we were sending all
NSEvents synchronously, but because WebPageProxy was doing its
own queueing and asynchronous processing of those key events, we
would receive and respond to the next Automation command before
having completed all of the key events.

This change makes performKeyboardInteractions asynchronous. It
will be notified only after WebPageProxy has exhausted its queue
of key events.

  • UIProcess/Automation/Automation.json:
  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::keyboardEventsFlushedForPage):
(WebKit::WebAutomationSession::evaluateJavaScriptFunction):
(WebKit::WebAutomationSession::performKeyboardInteractions):

  • UIProcess/Automation/WebAutomationSession.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didReceiveEvent):

23:15 Changeset [203634] by joepeck@webkit.org
  • 4 edits in trunk/Source/WebKit2

Web Automation: WebAutomationSession::deleteAllCookies never calls callback, hangs automation session
https://bugs.webkit.org/show_bug.cgi?id=160113
<rdar://problem/27308124>

Reviewed by Darin Adler.

Delete all cookies appears to be a straightforward action
where we don't need to wait for a callback. So drop the
async altogether and implicitly complete the action.

  • UIProcess/Automation/Automation.json:
  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::deleteAllCookies):

  • UIProcess/Automation/WebAutomationSession.h:
23:11 Changeset [203633] by rniwa@webkit.org
  • 5 edits in trunk/Websites/perf.webkit.org

REGRESSION(r203035): Marking points as an outlier no longer updates charts
https://bugs.webkit.org/show_bug.cgi?id=160106

Reviewed by Darin Adler.

The bug was caused by MeasurementSet's fetchBetween clearing previously registered callbacks when noCache
option is specified.

  • public/v3/components/time-series-chart.js:

(TimeSeriesChart.prototype.setSourceList): Clear this._fetchedTimeSeries when changing chart options.
e.g. need to start including or excluding outliers.
(TimeSeriesChart.prototype.fetchMeasurementSets): Don't skip the fetching when noCache is true.

  • public/v3/models/measurement-set.js:

(MeasurementSet): Added this._callbackMap as an instance variable to keep track of all callbacks on every
cluster since we may need to call each callback multiple times per cluster when noCache option is used.
(MeasurementSet.prototype.fetchBetween): Moved the code to add _primaryClusterPromise to _allFetches here
so that now this function and _ensureClusterPromise are only functions that touch _allFetches.
(MeasurementSet.prototype._ensureClusterPromise): Extracted out of fetchBetween. Queue up all callbacks
for each cluster when creating a new promise.
(MeasurementSet.prototype._fetchPrimaryCluster): Removed the code to add _primaryClusterPromise now that
it's done in fetchBetween.

  • public/v3/remote.js:

(RemoteAPI.postJSONWithStatus): Removed superfluous call to console.log.

  • unit-tests/measurement-set-tests.js: Updated the test case for noCache. The callback registered before

fetchBetween is called with noCache=true is now invoked so callCount must be 3 instead of 2.

23:01 Changeset [203632] by commit-queue@webkit.org
  • 8 edits
    1 delete in trunk/Source/WebCore

Use a private property to implement FetchResponse.body getter
https://bugs.webkit.org/show_bug.cgi?id=159808

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

Covered by existing test sets.

Previously, body was handled as a CachedAttribute.
Using a private property will allow direct use of this property from JS built-ins which will allow easier
handling of ReadableStream cloning in Response.clone.
Also, this allows removing some binding custom code.

Updated redirect and error static methods to take NewObject keyword, as this removes a search into cached wrappers.
Ditto for createReadableStreamSource.

  • CMakeLists.txt: Removing JSFetchResponseCustom.cpp.
  • Modules/fetch/FetchResponse.idl: Adding createReadableStreamSource and isDisturbed private functions.

Making body getter a JSBuiltin.

  • Modules/fetch/FetchResponse.js:

(body): Adding getter which will call createReadableStreamSource if needed.

  • WebCore.xcodeproj/project.pbxproj: Removing JSFetchResponseCustom.cpp.
  • bindings/js/JSFetchResponseCustom.cpp: Removed.
  • bindings/js/ReadableStreamController.cpp:

(WebCore::createReadableStream): Deleted.
(WebCore::getReadableStreamReader): Deleted.

  • bindings/js/ReadableStreamController.h: Removing unneeded ReadableStream helper routine now that they can be

handled within JS built-in code.

  • bindings/js/WebCoreBuiltinNames.h: Adding @createReadableStreamSource, @isDisturbed and @Response identifiers.
18:56 Changeset [203631] by zalan@apple.com
  • 7 edits in trunk/Source

Handle cases when IOSurface initialization fails.
https://bugs.webkit.org/show_bug.cgi?id=160006
<rdar://problem/27495102>

Reviewed by Tim Horton and Simon Fraser.

This is an additional fix to r203514 to check if IOSurface initialization was successful.

Unable to test.

Source/WebCore:

  • platform/graphics/cg/ImageBufferCG.cpp:

(WebCore::ImageBuffer::ImageBuffer):

  • platform/graphics/cocoa/IOSurface.h: Merge 2 c'tors.
  • platform/graphics/cocoa/IOSurface.mm: Remove redundant IOSurface::create() code.

(WebCore::IOSurface::create):
(WebCore::IOSurface::createFromImage):
(WebCore::IOSurface::IOSurface):
(WebCore::IOSurface::convertToFormat):

Source/WebKit2:

  • Shared/mac/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::encode):
(WebKit::RemoteLayerBackingStore::display):
(WebKit::RemoteLayerBackingStore::applyBackingStoreToLayer):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _takeViewSnapshot]):
(-[WKWebView _snapshotRect:intoImageOfWidth:completionHandler:]):

18:19 Changeset [203630] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit2

[iOS] Clients should be able to decide if they want secure text entry in a form field
https://bugs.webkit.org/show_bug.cgi?id=160109
rdar://problem/27504958

Patch by Chelsea Pugh <cpugh@apple.com> on 2016-07-22
Reviewed by Dan Bernstein.

  • UIProcess/API/Cocoa/_WKFormInputSession.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKFormInputSession forceSecureTextEntry]): Getter.
(-[WKFormInputSession setForceSecureTextEntry:]): Setter.
(-[WKContentView textInputTraits]): If the form input session has specified that secure text
entry is desired, we should use secure text entry.

17:47 Changeset [203629] by wenson_hsieh@apple.com
  • 4 edits in trunk

Media controls should be displayed for media in media documents
https://bugs.webkit.org/show_bug.cgi?id=160104
<rdar://problem/27438936>

Reviewed by Myles C. Maxfield.

Source/WebCore:

Make videos that would otherwise not have been large enough or have the right
aspect ratio cause media controls to appear. This is because media elements in
a media document are implied to be main content.

Added a new API test.

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::canControlControlsManager):

Tools:

Verifies that even a small video with audio in a media document gets media controls.

  • TestWebKitAPI/Tests/WebKit2Cocoa/VideoControlsManager.mm:

(TestWebKitAPI::TEST):

16:48 Changeset [203628] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.43

New tag.

16:48 Changeset [203627] by bshafiei@apple.com
  • 11 edits in branches/safari-602-branch

Merge r203626. rdar://problem/27453479

16:45 Changeset [203626] by mmaxfield@apple.com
  • 11 edits in trunk

All dancers with bunny ears are female
https://bugs.webkit.org/show_bug.cgi?id=160102
<rdar://problem/27453479>

Reviewed by Simon Fraser.

Source/WebCore:

In r203330 I added support for new emoji group candidates. I accidentally
missed one of the new emoji code points.

Tests: editing/deleting/delete-emoji.html:

fast/text/emoji-gender-2-9.html:
fast/text/emoji-gender-9.html:
fast/text/emoji-gender-fe0f-9.html:

  • platform/text/CharacterProperties.h:

(WebCore::isEmojiGroupCandidate):

LayoutTests:

  • editing/deleting/delete-emoji.html:
  • platform/mac/editing/deleting/delete-emoji-expected.txt:
  • fast/text/emoji-gender-2-9-expected.html:
  • fast/text/emoji-gender-2-9.html:
  • fast/text/emoji-gender-9-expected.html:
  • fast/text/emoji-gender-9.html:
  • fast/text/emoji-gender-fe0f-9-expected.html:
  • fast/text/emoji-gender-fe0f-9.html:
16:17 Changeset [203625] by msaboff@apple.com
  • 2 edits in trunk/Tools

REGRESSION(203616): no FTL testing was inadvertently removed
https://bugs.webkit.org/show_bug.cgi?id=160100

Rubber-stamped by Filip Pizlo.

Added runNoFTL back into the set of tests we run on FTL enabled platforms.
Renamed runLayoutTestNoFTL to runLayoutTestDefault. Restructured the test
logic for the runLayout and runNoisy variants to match the run test logic,
that is we always invoke runXXXDefault and invoke runXXXNoFTL for FTL
enabled platforms.

  • Scripts/run-jsc-stress-tests:
16:13 Changeset [203624] by cdumez@apple.com
  • 11 edits in trunk

Parameter to HTMLCollection.item() / namedItem() should be mandatory
https://bugs.webkit.org/show_bug.cgi?id=160099

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Rebaseline several W3C tests now that more checks are passing.

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

Source/WebCore:

Parameter to HTMLCollection.item() / namedItem() should be mandatory:

Firefox and Chrome agree with the specification.

No new tests, rebaselined existing tests.

  • bindings/js/JSHTMLFormControlsCollectionCustom.cpp:

(WebCore::JSHTMLFormControlsCollection::namedItem):

  • html/HTMLCollection.idl:
  • html/HTMLFormControlsCollection.idl:
  • html/HTMLOptionsCollection.idl:

LayoutTests:

Update existing test to reflect behavior change.

  • fast/dom/non-numeric-values-numeric-parameters-expected.txt:
  • fast/dom/script-tests/non-numeric-values-numeric-parameters.js:
15:56 Changeset [203623] by cdumez@apple.com
  • 12 edits
    2 adds in trunk

First parameter to Window.getComputedStyle() should be mandatory and non-nullable
https://bugs.webkit.org/show_bug.cgi?id=160097

Reviewed by Ryosuke Niwa.

Source/WebCore:

First parameter to Window.getComputedStyle() should be mandatory and
non-nullable:

Firefox and Chrome agree with the specification.

Test: fast/dom/Window/getComputedStyle-missing-parameter.html

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::ComputedStyleExtractor):
(WebCore::CSSComputedStyleDeclaration::CSSComputedStyleDeclaration):
(WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
(WebCore::CSSComputedStyleDeclaration::copyProperties):
(WebCore::CSSComputedStyleDeclaration::length):
(WebCore::CSSComputedStyleDeclaration::item):
(WebCore::CSSComputedStyleDeclaration::getPropertyValue):

  • css/CSSComputedStyleDeclaration.h:
  • dom/Document.idl:
  • inspector/InspectorCSSAgent.cpp:

(WebCore::InspectorCSSAgent::getComputedStyleForNode):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::getComputedStyle):

  • page/DOMWindow.h:
  • page/DOMWindow.idl:
  • testing/Internals.cpp:

(WebCore::Internals::computedStyleIncludingVisitedInfo):

  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

Add test coverage.

  • fast/dom/Window/getComputedStyle-missing-parameter-expected.txt: Added.
  • fast/dom/Window/getComputedStyle-missing-parameter.html: Added.
15:32 Changeset [203622] by beidson@apple.com
  • 4 edits
    2 adds in trunk

Removing IndexedDatabases that have stored blobs doesn't remove the blob files.
https://bugs.webkit.org/show_bug.cgi?id=160089

Reviewed by Darin Adler.

Source/WebCore:

Tested by API test IndexedDB.StoreBlobThenDelete.

Blob filenames exist in the IDB directory with the name "[0-9]+.blob".

That is, one or more digits, followed by ".blob".

So when we delete an IndexedDB.sqlite3 and related files, we should delete those blob files as well.

  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::removeAllDatabasesForOriginPath):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/StoreBlobThenDelete.mm: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/StoreBlobToBeDeleted.html: Added.
15:14 Changeset [203621] by fpizlo@apple.com
  • 10 edits
    4 adds in trunk/Source/JavaScriptCore

Teach MarkedSpace how to allocate auxiliary storage
https://bugs.webkit.org/show_bug.cgi?id=160053

Reviewed by Sam Weinig.

Previously, we had two kinds of subspaces in MarkedSpace: destructor and non-destructor. This
was described using "bool needsDestruction" that would get passed around. We'd iterate over
these spaces using duplicated code - one loop for destructors and one for non-destructors, or
a single loop that does one thing for destructors and one for non-destructors.

But now we want a third subspace: non-destructor non-JSCell, aka Auxiliary.

So, this changes all of the reflection and iteration over subspaces to use functors, so that
the looping is written once and reused. Most places don't even have to know that there is a
third subspace; they just know that they must do things for each subspace, for each
allocator, or for each block - and the functor magic handles it for you.

To make this somewhat nice, this change also fixes how we describe subspaces. Instead of a
bool, we now have AllocatorAttributes, which is a struct. If we ever add more subspaces, we
can add fields to AllocatorAttributes to describe how those subspaces differ. For now it just
contains two properties: a DestructionMode and a HeapCell::Kind. The DesctructionMode
replaces bool needsDestruction. I deliberately used a non-class enum to avoid tautologies.
DestructionMode has two members: NeedsDestruction and DoesNotNeedDestruction. I almost went
with DestructionMode::Needed and DestructionMode::NotNeeded, but I felt like that involves
more typing and doesn't actually avoid any kind of namespace issues.

This is intended to have no behavior change other than the addition of a totally unused
space, which should always be empty. So hopefully it doesn't cost anything.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • heap/AllocatorAttributes.cpp: Added.

(JSC::AllocatorAttributes::dump):

  • heap/AllocatorAttributes.h: Added.

(JSC::AllocatorAttributes::AllocatorAttributes):

  • heap/DestructionMode.cpp: Added.

(WTF::printInternal):

  • heap/DestructionMode.h: Added.
  • heap/Heap.h:
  • heap/MarkedAllocator.cpp:

(JSC::MarkedAllocator::allocateBlock):
(JSC::MarkedAllocator::addBlock):

  • heap/MarkedAllocator.h:

(JSC::MarkedAllocator::cellSize):
(JSC::MarkedAllocator::attributes):
(JSC::MarkedAllocator::needsDestruction):
(JSC::MarkedAllocator::destruction):
(JSC::MarkedAllocator::cellKind):
(JSC::MarkedAllocator::heap):
(JSC::MarkedAllocator::takeLastActiveBlock):
(JSC::MarkedAllocator::MarkedAllocator):
(JSC::MarkedAllocator::init):
(JSC::MarkedAllocator::allocate):

  • heap/MarkedBlock.cpp:

(JSC::MarkedBlock::create):
(JSC::MarkedBlock::destroy):
(JSC::MarkedBlock::MarkedBlock):
(JSC::MarkedBlock::callDestructor):
(JSC::MarkedBlock::sweep):
(JSC::MarkedBlock::stopAllocating):
(JSC::MarkedBlock::didRetireBlock):

  • heap/MarkedBlock.h:

(JSC::MarkedBlock::cellSize):
(JSC::MarkedBlock::attributes):
(JSC::MarkedBlock::needsDestruction):
(JSC::MarkedBlock::destruction):
(JSC::MarkedBlock::cellKind):
(JSC::MarkedBlock::size):
(JSC::MarkedBlock::forEachCell):
(JSC::MarkedBlock::forEachLiveCell):
(JSC::MarkedBlock::forEachDeadCell):

  • heap/MarkedSpace.cpp:

(JSC::MarkedSpace::MarkedSpace):
(JSC::MarkedSpace::~MarkedSpace):
(JSC::MarkedSpace::lastChanceToFinalize):
(JSC::MarkedSpace::resetAllocators):
(JSC::MarkedSpace::forEachAllocator):
(JSC::MarkedSpace::stopAllocating):
(JSC::MarkedSpace::resumeAllocating):
(JSC::MarkedSpace::isPagedOut):
(JSC::MarkedSpace::freeBlock):
(JSC::MarkedSpace::shrink):
(JSC::MarkedSpace::clearNewlyAllocated):
(JSC::clearNewlyAllocatedInBlock): Deleted.

  • heap/MarkedSpace.h:

(JSC::MarkedSpace::subspaceForObjectsWithDestructor):
(JSC::MarkedSpace::subspaceForObjectsWithoutDestructor):
(JSC::MarkedSpace::subspaceForAuxiliaryData):
(JSC::MarkedSpace::allocatorFor):
(JSC::MarkedSpace::destructorAllocatorFor):
(JSC::MarkedSpace::auxiliaryAllocatorFor):
(JSC::MarkedSpace::allocateWithoutDestructor):
(JSC::MarkedSpace::allocateWithDestructor):
(JSC::MarkedSpace::allocateAuxiliary):
(JSC::MarkedSpace::forEachBlock):
(JSC::MarkedSpace::didAddBlock):
(JSC::MarkedSpace::capacity):
(JSC::MarkedSpace::forEachSubspace):

15:14 Changeset [203620] by annulen@yandex.ru
  • 2 edits in trunk/Tools

[GTK] Improved exclusion patterns in make-dist.py manifest.
https://bugs.webkit.org/show_bug.cgi?id=160094

Reviewed by Michael Catanzaro.

  • gtk/manifest.txt.in:

Exclude Platform*.cmake files for more ports.
Removed obsolete .gyp and .pro.user patterns.
Exclude 'Configurations' and 'spi' directories.
Exclude CMakeLists.txt.user (Qt Creator IDE).

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

Marking webaudio/audionode-connect-order.html as a flaky crash on mac-wk1 debug
https://bugs.webkit.org/show_bug.cgi?id=105870

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
15:06 Changeset [203618] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Get rid of an unused API typedef
https://bugs.webkit.org/show_bug.cgi?id=160103

Reviewed by Sam Weinig.

  • Shared/API/c/WKSharedAPICast.h:
14:58 Changeset [203617] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Marking userscripts/window-onerror-for-isolated-world-3.html as a flaky failure on mac-wk1
https://bugs.webkit.org/show_bug.cgi?id=160101

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
13:53 Changeset [203616] by msaboff@apple.com
  • 2 edits in trunk/Tools

Don't run FTL related JSC stress tests on non-FTL platforms
https://bugs.webkit.org/show_bug.cgi?id=160033

Reviewed by Mark Lam.

Added check for running tests on platforms that don't enable FTL to not run FTL tests.
Refactored several of the runXXX test methods to always runXXXDefault and made those
runXXXDefault to pass FTL_OPTIONS. For platforms that don't enable the FTL, FTL_OPTIONS
doesn't cause a problem.

  • Scripts/run-jsc-stress-tests:
13:38 Changeset [203615] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION(r203537): It made many tests crash on ARMv7 Linux platforms
https://bugs.webkit.org/show_bug.cgi?id=160082

Reviewed by Keith Miller.

We were improperly linking the Jump in the link buffer.
It caused us to be linking against the executable address
which always has bit 0 set. We shouldn't be doing that.
This patch fixes this, by using the same idiom that
PolymorphicAccess uses to link a jump to out of line code.

  • jit/JITMathIC.h:

(JSC::JITMathIC::generateOutOfLine):

13:36 Changeset [203614] by mattbaker@apple.com
  • 3 edits in trunk/LayoutTests

Web Inspector: Remove unused code from Debounce layout test
https://bugs.webkit.org/show_bug.cgi?id=160049
<rdar://problem/27479713>

Reviewed by Joseph Pecoraro.

  • inspector/unit-tests/debounce-expected.txt:

Updated with new delay times.

  • inspector/unit-tests/debounce.html:

Remove unused code that was copy-pasted from other tests, and reduced
delay times from 100ms to 10ms to speed up test.

13:35 Changeset [203613] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

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

Caused CLoop tests to fail with assertions (Requested by
perarne on #webkit).

Reverted changeset:

"[Win] jsc.exe sometimes never exits."
https://bugs.webkit.org/show_bug.cgi?id=158073
http://trac.webkit.org/changeset/203603

13:34 Changeset [203612] by cdumez@apple.com
  • 6 edits in trunk

Fix default parameter values for window.alert() / prompt() / confirm()
https://bugs.webkit.org/show_bug.cgi?id=160085

Reviewed by Ryosuke Niwa.

Source/WebCore:

Fix default parameter values for window.alert() / prompt() / confirm() to
match the specification:

They should default to the empty string, not the string "undefined".

Firefox and chrome agree with the specification.

No new tests, updated existing test.

  • page/DOMWindow.h:
  • page/DOMWindow.idl:

LayoutTests:

Update existing test to reflect behavior change.

  • fast/dom/Window/alert-undefined-expected.txt:
  • fast/dom/Window/alert-undefined.html:
13:33 Changeset [203611] by dbates@webkit.org
  • 8 edits
    16 adds in trunk

CSP: object-src and plugin-types directives are not respected for plugin replacements
https://bugs.webkit.org/show_bug.cgi?id=159761
<rdar://problem/27365724>

Reviewed by Brent Fulgham.

Source/WebCore:

Apply the Content Security Policy (CSP) object-src and plugin-types directives to content that will
load with a plugin replacement.

Tests: security/contentSecurityPolicy/object-src-none-blocks-quicktime-plugin-replacement.html

security/contentSecurityPolicy/object-src-none-blocks-youtube-plugin-replacement.html
security/contentSecurityPolicy/plugins-types-allows-quicktime-plugin-replacement.html
security/contentSecurityPolicy/plugins-types-allows-youtube-plugin-replacement.html
security/contentSecurityPolicy/plugins-types-blocks-quicktime-plugin-replacement-without-mime-type.html
security/contentSecurityPolicy/plugins-types-blocks-quicktime-plugin-replacement.html
security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement-without-mime-type.html
security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement.html

  • html/HTMLPlugInImageElement.cpp:

(WebCore::HTMLPlugInImageElement::allowedToLoadPluginContent): Added.
(WebCore::HTMLPlugInImageElement::requestObject): Only request loading plugin content if we
are allowed to load such content.

  • html/HTMLPlugInImageElement.h:
  • loader/SubframeLoader.cpp:

(WebCore::SubframeLoader::pluginIsLoadable): Removed code to check CSP as we will check CSP
earlier in HTMLPlugInImageElement::requestObject().
(WebCore::SubframeLoader::requestPlugin): Ditto.
(WebCore::SubframeLoader::isPluginContentAllowedByContentSecurityPolicy): Deleted; moved implementation
to HTMLPlugInImageElement::allowedToLoadPluginContent().
(WebCore::SubframeLoader::requestObject): Deleted.

  • loader/SubframeLoader.h:
  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::upgradeInsecureRequestIfNeeded): Changed signature from a non-const
function to a const function since these functions do not modify |this|.

  • page/csp/ContentSecurityPolicy.h:

LayoutTests:

Add layout tests to ensure that we apply the CSP object-src and plugin-types directives to content
that loads with either the QuickTime plugin replacement or YouTube plugin replacement.

  • security/contentSecurityPolicy/object-src-none-blocks-quicktime-plugin-replacement-expected.txt: Added.
  • security/contentSecurityPolicy/object-src-none-blocks-quicktime-plugin-replacement.html: Added.
  • security/contentSecurityPolicy/object-src-none-blocks-youtube-plugin-replacement-expected.txt: Added.
  • security/contentSecurityPolicy/object-src-none-blocks-youtube-plugin-replacement.html: Added.
  • security/contentSecurityPolicy/plugins-types-allows-quicktime-plugin-replacement-expected.txt: Added.
  • security/contentSecurityPolicy/plugins-types-allows-quicktime-plugin-replacement.html: Added.
  • security/contentSecurityPolicy/plugins-types-allows-youtube-plugin-replacement-expected.txt: Added.
  • security/contentSecurityPolicy/plugins-types-allows-youtube-plugin-replacement.html: Added.
  • security/contentSecurityPolicy/plugins-types-blocks-quicktime-plugin-replacement-expected.txt: Added.
  • security/contentSecurityPolicy/plugins-types-blocks-quicktime-plugin-replacement-without-mime-type-expected.txt: Added.
  • security/contentSecurityPolicy/plugins-types-blocks-quicktime-plugin-replacement-without-mime-type.html: Added.
  • security/contentSecurityPolicy/plugins-types-blocks-quicktime-plugin-replacement.html: Added.
  • security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement-expected.txt: Added.
  • security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement-without-mime-type-expected.txt: Added.
  • security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement-without-mime-type.html: Added.
  • security/contentSecurityPolicy/plugins-types-blocks-youtube-plugin-replacement.html: Added.
12:54 Changeset [203610] by cdumez@apple.com
  • 11 edits in trunk

Parameters to Node.replaceChild() / insertBefore() should be mandatory
https://bugs.webkit.org/show_bug.cgi?id=160091

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline several W3C tests now that more checks are passing.

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

Source/WebCore:

Parameters to Node.replaceChild() / insertBefore() should be mandatory:

The compatibility risk should be low since Firefox and Chrome both agree
with the specification and because it does not make much sense to omit
parameters when using this API.

No new tests, rebaselined existing tests.

  • bindings/js/JSNodeCustom.cpp:

(WebCore::JSNode::insertBefore):
(WebCore::JSNode::replaceChild):

LayoutTests:

Update existing tests due to the behavior change.

  • fast/block/basic/empty-anonymous-block-remove-crash.html:
  • fast/html/details-summary-document-child.html:
  • fast/repaint/focus-ring-with-negative-offset-repaint.html:
  • svg/animations/mpath-remove-from-dependents-on-delete-crash.html:
12:34 Changeset [203609] by cdumez@apple.com
  • 5 edits in trunk

Parameter to Node.contains() should be mandatory
https://bugs.webkit.org/show_bug.cgi?id=160084

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline several W3C tests now that more checks are passing.

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

Source/WebCore:

Parameter to Node.contains() should be mandatory as per the
specification:

The compatibility risk should be low because both Firefox and Chrome
both agree with the specification. Also, it does not make much sense
to call this API without parameter.

No new tests, rebaselined existing tests.

  • dom/Node.idl:
11:58 Changeset [203608] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebCore

Merge r203606. rdar://problem/27430450

11:58 Changeset [203607] by bshafiei@apple.com
  • 10 edits
    2 adds in branches/safari-602-branch

Merge r203378. rdar://problem/25876032

11:45 Changeset [203606] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[iOS] REGRESSION(203378): PDFDocumentImage::updateCachedImageIfNeeded() uses the unscaled size when deciding whether to cache the PDF image
https://bugs.webkit.org/show_bug.cgi?id=159933

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2016-07-22
Reviewed by Simon Fraser.

We need to use the scaled size when deciding whether to cache the PDF image
or not. This is because ImageBuffer takes the display resolution into account
which gives higher resolution for the image when zooming.

  • platform/graphics/cg/PDFDocumentImage.cpp:

(WebCore::PDFDocumentImage::updateCachedImageIfNeeded):

11:39 Changeset [203605] by cdumez@apple.com
  • 7 edits
    2 adds in trunk

First parameter to getElementById() should be mandatory
https://bugs.webkit.org/show_bug.cgi?id=160087

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline several W3C tests now that more checks are passing.

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

Source/WebCore:

First parameter to getElementById() should be mandatory:

Both Firefox and Chrome agree with the specification.

Test: svg/dom/SVGSVGElement-getElementById.html

  • dom/NonElementParentNode.idl:
  • svg/SVGSVGElement.idl:

LayoutTests:

Add layout test coverage for SVGSVGElement.getElementById().

  • svg/dom/SVGSVGElement-getElementById-expected.txt: Added.
  • svg/dom/SVGSVGElement-getElementById.html: Added.
11:34 Changeset [203604] by cdumez@apple.com
  • 5 edits in trunk

Parameter to Node.lookupPrefix() / lookupNamespaceURI() / isDefaultNamespace() should be mandatory
https://bugs.webkit.org/show_bug.cgi?id=160086

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline several W3C tests now that more checks are passing.

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

Source/WebCore:

Parameter to Node.lookupPrefix() / lookupNamespaceURI() / isDefaultNamespace()
should be mandatory:

Firefox and Chrome both agree with the specification.

No new tests, rebaselined existing tests.

  • dom/Node.idl:
11:26 Changeset [203603] by pvollan@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[Win] jsc.exe sometimes never exits.
https://bugs.webkit.org/show_bug.cgi?id=158073

Reviewed by Mark Lam.

Make sure the VM is deleted after the test has finished. This will gracefully stop the sampling profiler thread,
and give the thread the opportunity to release the machine thread lock aquired in SamplingProfiler::takeSample.
If the sampling profiler thread was terminated while holding the machine thread lock, the machine thread will
not be able to grab the lock afterwards.

  • jsc.cpp:

(jscmain):

09:57 Changeset [203602] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Correct a TestExpectation by changing it from Failure to ImageOnlyFailure

Unreviewed test gardening.

  • platform/mac/TestExpectations:
09:01 Changeset [203601] by cdumez@apple.com
  • 12 edits in trunk

Parameter to Node.compareDocumentPosition() should be mandatory and non-nullable
https://bugs.webkit.org/show_bug.cgi?id=160071

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline several W3C tests now that more checks are passing.

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

Source/WebCore:

Parameter to Node.compareDocumentPosition() should be mandatory and
non-nullable:

Firefox and Chrome agree with the specification so the compatibility
risk should be low. Also, it does not make much sense to call this
operation without parameter.

No new tests, rebaselined existing tests.

  • accessibility/AccessibilityObject.cpp:

(WebCore::rangeClosestToRange):

  • dom/AuthorStyleSheets.cpp:

(WebCore::AuthorStyleSheets::addStyleSheetCandidateNode):

  • dom/Node.cpp:

(WebCore::compareDetachedElementsPosition):
(WebCore::Node::compareDocumentPosition):

  • dom/Node.h:
  • dom/Node.idl:
  • dom/Position.h:

(WebCore::operator<):

  • html/HTMLFormElement.cpp:

(WebCore::HTMLFormElement::formElementIndexWithFormAttribute):
(WebCore::HTMLFormElement::formElementIndex):

  • rendering/RenderNamedFlowThread.cpp:

(WebCore::RenderNamedFlowThread::nextRendererForElement):
(WebCore::compareRenderNamedFlowFragments):
(WebCore::RenderNamedFlowThread::registerNamedFlowContentElement):

08:55 Changeset [203600] by pvollan@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Fix the Windows 64-bit build after r203537
https://bugs.webkit.org/show_bug.cgi?id=160080

Reviewed by Csaba Osztrogonác.

Added new version of setupArgumentsWithExecState method.

  • jit/CCallHelpers.h:

(JSC::CCallHelpers::setupArgumentsWithExecState):

08:52 Changeset [203599] by annulen@yandex.ru
  • 2 edits in trunk/Source/WebCore

[cmake] Removed obsolete plugins/win directory
https://bugs.webkit.org/show_bug.cgi?id=160081

Reviewed by Per Arne Vollan.

It was removed in r178219.

No new tests needed.

  • PlatformWin.cmake:
08:11 Changeset [203598] by mitz@apple.com
  • 5 edits in trunk/Source/WebKit2

run-safari doesn't work with Safari 10 on 10.11
https://bugs.webkit.org/show_bug.cgi?id=159958
<rdar://problem/27422805>

Reviewed by Alexey Proskuryakov.

Safari’s injected bundle may depend on the newer versions of frameworks installed in a
staging location. Have the engineering builds of the Web Content service look for newer
versions in that location.

  • Configurations/BaseTarget.xcconfig: Shortened a linker flag.
  • Configurations/BaseXPCService.xcconfig: Increased Mach-O header padding in production builds to allow for more dyld environment commands to be added after the fact.
  • Configurations/DebugRelease.xcconfig: Have the new WK_WEBCONTENT_SERVICE_NEEDS_VERSIONED_FRAMEWORK_PATH_LDFLAG set to YES for macOS engineering builds.
  • Configurations/WebContentService.xcconfig: Include the versioned frameworks whenever WK_WEBCONTENT_SERVICE_NEEDS_VERSIONED_FRAMEWORK_PATH_LDFLAG is set to YES. Have the value of WK_WEBCONTENT_SERVICE_NEEDS_VERSIONED_FRAMEWORK_PATH_LDFLAG default to the value of USE_STAGING_INSTALL_PATH, while letting DebugRelease.xcconfig override it.
05:40 Changeset [203597] by pvollan@apple.com
  • 4 edits in trunk

IWebView::mainFrame crashes if called after IWebView::close
https://bugs.webkit.org/show_bug.cgi?id=32868

Reviewed by Brent Fulgham.

Source/WebKit/win:

After deleting the page in WebView::close the mainframe object may be deleted.

Test: Tools/TestWebKitAPI/Tests/WebKit/win/WebViewDestruction.cpp (CloseThenGetMainFrame).

  • WebView.cpp:

(WebView::close): set mainframe pointer member to null.

Tools:

  • TestWebKitAPI/Tests/WebKit/win/WebViewDestruction.cpp:

(TestWebKitAPI::TEST_F): Added test.

03:24 Changeset [203596] by carlosgc@webkit.org
  • 4 edits in trunk

[GTK] Enable threaded compositor by default
https://bugs.webkit.org/show_bug.cgi?id=160079

Reviewed by Žan Doberšek.

.:

  • Source/cmake/OptionsGTK.cmake:

Tools:

  • Scripts/webkitperl/FeatureList.pm:
03:00 Changeset [203595] by ossy@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[ARM] Unreviewed EABI buildfix after r203537.

  • jit/CCallHelpers.h:

(JSC::CCallHelpers::setupArgumentsWithExecState): Added.

02:50 Changeset [203594] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebCore

Merge r203548. rdar://problem/27474031

02:50 Changeset [203593] by bshafiei@apple.com
  • 3 edits in branches/safari-602-branch

Merge r203511. rdar://problem/27474031

02:38 Changeset [203592] by bshafiei@apple.com
  • 24 edits in branches/safari-602-branch

Merge r203545. rdar://problem/26964090

02:38 Changeset [203591] by bshafiei@apple.com
  • 3 edits in branches/safari-602-branch/Tools

Merge r203540. rdar://problem/26964090

02:38 Changeset [203590] by bshafiei@apple.com
  • 26 edits
    2 deletes in branches/safari-602-branch

Merge r203520. rdar://problem/26964090

02:26 Changeset [203589] by bshafiei@apple.com
  • 1 edit
    1 move
    1 add in branches/safari-602-branch/LayoutTests

Merge r203536. rdar://problem/27430111

02:26 Changeset [203588] by bshafiei@apple.com
  • 3 edits
    2 copies
    1 move
    1 add in branches/safari-602-branch

Merge r203533. rdar://problem/27430111

02:26 Changeset [203587] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebCore

Merge r203473. rdar://problem/27180657

02:26 Changeset [203586] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Tools

Merge r203468. rdar://problem/27180657

02:26 Changeset [203585] by bshafiei@apple.com
  • 5 edits
    1 add in branches/safari-602-branch

Merge r203464. rdar://problem/27180657

02:26 Changeset [203584] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebKit2

Merge r203483. rdar://problem/27455589

02:26 Changeset [203583] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebKit2

Merge r203462. rdar://problem/27453189

02:26 Changeset [203582] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Tools

Merge r203447. rdar://problem/27056844

02:26 Changeset [203581] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Tools

Merge r203436. rdar://problem/27056844

02:26 Changeset [203580] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Tools

Merge r203429. rdar://problem/27056844

02:26 Changeset [203579] by bshafiei@apple.com
  • 3 edits
    2 moves
    3 adds in branches/safari-602-branch/Tools

Merge r203426. rdar://problem/27056844

02:26 Changeset [203578] by bshafiei@apple.com
  • 5 edits in branches/safari-602-branch/Source

Merge r203392. rdar://problem/27056844

02:26 Changeset [203577] by bshafiei@apple.com
  • 3 edits
    3 adds in branches/safari-602-branch

Merge r203543. rdar://problem/27429465

02:26 Changeset [203576] by bshafiei@apple.com
  • 4 edits
    1 add in branches/safari-602-branch

Merge r203541. rdar://problem/27450825

02:25 Changeset [203575] by bshafiei@apple.com
  • 3 edits
    2 adds in branches/safari-602-branch

Merge r203538. rdar://problem/27462960

02:25 Changeset [203574] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebCore

Merge r203518. rdar://problem/21400186

02:25 Changeset [203573] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebCore

Merge r203514. rdar://problem/27208636

02:25 Changeset [203572] by bshafiei@apple.com
  • 9 edits
    1 add in branches/safari-602-branch/Source/JavaScriptCore

Merge r203488. rdar://problem/27439330

02:25 Changeset [203571] by bshafiei@apple.com
  • 3 edits in branches/safari-602-branch/Source/WebCore

Merge r203482. rdar://problem/27442806

02:25 Changeset [203570] by bshafiei@apple.com
  • 2 edits
    2 adds in branches/safari-602-branch/Tools

Merge r203478. rdar://problem/27411085

02:25 Changeset [203569] by bshafiei@apple.com
  • 4 edits in branches/safari-602-branch/Source/WebCore

Merge r203450. rdar://problem/21439264

02:25 Changeset [203568] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebKit2

Merge r203442. rdar://problem/27376446

02:25 Changeset [203567] by bshafiei@apple.com
  • 6 edits in branches/safari-602-branch

Merge r203435. rdar://problem/27438734

02:25 Changeset [203566] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebCore

Merge r203425. rdar://problem/27488703

02:25 Changeset [203565] by bshafiei@apple.com
  • 3 edits in branches/safari-602-branch/Source/WebCore

Merge r203424. rdar://problem/27391012

02:25 Changeset [203564] by bshafiei@apple.com
  • 3 edits
    2 adds in branches/safari-602-branch

Merge r203415. rdar://problem/27409483

02:25 Changeset [203563] by bshafiei@apple.com
  • 7 edits in branches/safari-602-branch/Source

Merge r203414. rdar://problem/26756701

02:25 Changeset [203562] by bshafiei@apple.com
  • 4 edits
    2 adds in branches/safari-602-branch

Merge r203412. rdar://problem/26898984

02:25 Changeset [203561] by bshafiei@apple.com
  • 3 edits
    6 adds in branches/safari-602-branch

Merge r203409. rdar://problem/27182267

02:25 Changeset [203560] by bshafiei@apple.com
  • 6 edits
    2 adds in branches/safari-602-branch

Merge r203388. rdar://problem/25740804

02:25 Changeset [203559] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebKit2

Merge r203387. rdar://problem/27018065

02:25 Changeset [203558] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebKit2

Merge r203385. rdar://problem/27192350

02:25 Changeset [203557] by bshafiei@apple.com
  • 15 edits in branches/safari-602-branch

Merge r203380. rdar://problem/27391725

02:25 Changeset [203556] by bshafiei@apple.com
  • 5 edits in branches/safari-602-branch/Source/WebKit2

Merge r203371. rdar://problem/26973202

02:24 Changeset [203555] by bshafiei@apple.com
  • 3 edits in branches/safari-602-branch/Source/WebCore

Merge r203362. rdar://problem/27371624

01:32 Changeset [203554] by commit-queue@webkit.org
  • 12 edits
    1 copy
    2 adds in trunk

run-builtins-generator-tests should be able to test WebCore builtins wrapper with more than one file
https://bugs.webkit.org/show_bug.cgi?id=159921

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

Source/JavaScriptCore:

Updated built-in generator to generate only wrapper files when passed the --wrappers-only option.
When this option is used, wrapper files are generated but no individual file is generated.
When this option is not used, individual files are generated but not wrapper file is generated.
This allows the builtin generator test runner to generate a single WebCore-Wrappers.h-result generated for all
WebCore test files, like used for real in WebCore.
Previously wrapper code was generated individually for each WebCore test file.

Added new built-in test file to cover the case of concatenating several guards in generated WebCore wrapper files.

  • Scripts/generate-js-builtins.py:

(concatenated_output_filename): Compute a decent name for wrapper files in case of test mode.
(generate_bindings_for_builtins_files): When --wrappers-only is activated, this generates only the wrapper files, not the individual files.

  • Scripts/tests/builtins/WebCore-AnotherGuardedInternalBuiltin-Separate.js: Added.
  • Scripts/tests/builtins/expected/WebCore-AnotherGuardedInternalBuiltin-Separate.js-result: Added.
  • Scripts/tests/builtins/expected/WebCore-ArbitraryConditionalGuard-Separate.js-result: Removed wrapper code.
  • Scripts/tests/builtins/expected/WebCore-GuardedBuiltin-Separate.js-result: Ditto.
  • Scripts/tests/builtins/expected/WebCore-GuardedInternalBuiltin-Separate.js-result: Ditto.
  • Scripts/tests/builtins/expected/WebCore-UnguardedBuiltin-Separate.js-result: Ditto.
  • Scripts/tests/builtins/expected/WebCore-xmlCasingTest-Separate.js-result: Removed wrapper code.
  • Scripts/tests/builtins/expected/WebCoreJSBuiltins.h-result: Added, contains wrapper code for all WebCore valid test cases.

Source/WebCore:

Covered by existing and added built-ins tests.

Updating built system according ---wrappers-only new meaning.
builtin generator is now called for each individual built-in file plus once for WebCore wrapper files.
WebCore wrapper files allow handling things like conditionally guarded features.
They also remove the need to use built-ins macros outside generated code.

  • CMakeLists.txt:
  • DerivedSources.make:

Tools:

Updated builtin generator test runner to generate WebCore wrapper files based on all WebCore valid separate files.

  • Scripts/webkitpy/codegen/main.py:

(BuiltinsGeneratorTests.generate_from_js_builtins): Passing a list of builtin files to the script.
(BuiltinsGeneratorTests):
(BuiltinsGeneratorTests.single_builtin_test): Added to handle the case of single builtin generation.
(BuiltinsGeneratorTests.wrappers_builtin_test): Added to handle the case of WebCore wrappers builtin generation.
(BuiltinsGeneratorTests.run_test): Helper routine to run a test in reset mode or normal check mode.
(BuiltinsGeneratorTests.run_tests): Updated to add WebCore wrappers builtin generation test.

07/21/16:

22:36 MathML/Early_2016_Refactoring edited by fred.wang@free.fr
(diff)
22:33 Changeset [203553] by fred.wang@free.fr
  • 19 edits
    2 copies in trunk/Source/WebCore

Move parsing of accentunder and accent attributes from renderer to element classes
https://bugs.webkit.org/show_bug.cgi?id=159625

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

We introduce a new MathMLUnderOverElement that is used for elements munder, mover and
munderover in order to create RenderMathMLUnderOver and parse and expose the values of the
accent and accentunder attributes. This is one more step toward moving MathML attribute
parsing to the DOM (bug 156536). We also do minor clean-up for this and previous renderer
classes that no longer do attribute parsing: the MathMLNames namespace is no longer necessary
and constructors can take a more accurate element type.

No new tests, already covered by existing test.

  • CMakeLists.txt: Add MathMLUnderOverElement files.
  • WebCore.xcodeproj/project.pbxproj: Ditto.
  • mathml/MathMLAllInOne.cpp: Ditto.
  • mathml/MathMLElement.cpp:

(WebCore::MathMLElement::cachedBooleanAttribute): Add parsing of boolean attributes.

  • mathml/MathMLElement.h: New type and helper functions for boolean attributes.
  • mathml/MathMLInlineContainerElement.cpp:

(WebCore::MathMLInlineContainerElement::createElementRenderer): Remove handling of
under/over/underover elements.

  • mathml/MathMLScriptsElement.cpp:

(WebCore::MathMLScriptsElement::MathMLScriptsElement): Remove inline keyword to avoid link
errors now that MathMLUnderOverElement overrides that class.

  • mathml/MathMLScriptsElement.h: Allow MathMLUnderOverElement to override this class.
  • mathml/MathMLUnderOverElement.cpp:

(WebCore::MathMLUnderOverElement::MathMLUnderOverElement):
(WebCore::MathMLUnderOverElement::create):
(WebCore::MathMLUnderOverElement::accent): Helper function to access the accent value.
(WebCore::MathMLUnderOverElement::accentUnder): Helper function to access the accentunder value.
(WebCore::MathMLUnderOverElement::parseAttribute): Make accent and accentunder dirty.
(WebCore::MathMLUnderOverElement::createElementRenderer): Create RenderMathMLUnderOver

  • mathml/MathMLUnderOverElement.h:
  • mathml/mathtags.in: Map under/over/underover to MathMLUnderOverElement.
  • rendering/mathml/RenderMathMLFraction.cpp: Remove MathMLNames and make the constructor

take a MathMLFractionElement.
(WebCore::RenderMathMLFraction::RenderMathMLFraction):

  • rendering/mathml/RenderMathMLFraction.h:
  • rendering/mathml/RenderMathMLPadded.cpp: Remove MathMLNames and make the constructor

take a MathMLPaddedElement.
(WebCore::RenderMathMLPadded::RenderMathMLPadded):

  • rendering/mathml/RenderMathMLPadded.h:
  • rendering/mathml/RenderMathMLScripts.cpp: Remove MathMLNames and make the constructor

take a MathMLScriptsElement. Also rename scriptsElement() to element().
(WebCore::RenderMathMLScripts::RenderMathMLScripts):
(WebCore::RenderMathMLScripts::element):
(WebCore::RenderMathMLScripts::getScriptMetricsAndLayoutIfNeeded):
(WebCore::RenderMathMLScripts::scriptsElement): Deleted.

  • rendering/mathml/RenderMathMLScripts.h:
  • rendering/mathml/RenderMathMLUnderOver.cpp: Remove MathMLNames and make the constructor

take a RenderMathMLUnderOver.
(WebCore::RenderMathMLUnderOver::RenderMathMLUnderOver):
(WebCore::RenderMathMLUnderOver::element):
(WebCore::RenderMathMLUnderOver::hasAccent): Use the helper functions for accent and accentunder.

  • rendering/mathml/RenderMathMLUnderOver.h:
21:51 Changeset [203552] by cdumez@apple.com
  • 5 edits in trunk

Parameter to Node.isSameNode() / isEqualNode() should be mandatory
https://bugs.webkit.org/show_bug.cgi?id=160070

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline several W3C tests now that more checks are passing.

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

Source/WebCore:

Parameter to Node.isSameNode() / isEqualNode() should be mandatory as
per the specification:

Chrome and Firefox agree with the specification (although Firefox does
not support isSameNode()).

No new tests, rebaselined existing tests.

  • dom/Node.idl:
21:45 Changeset [203551] by mitz@apple.com
  • 2 edits in trunk/Tools

[Mac] webkitdirs.pm contains unused code to support outdated OS X and Xcode versions
https://bugs.webkit.org/show_bug.cgi?id=160072

Reviewed by Andy Estes.

  • Scripts/webkitdirs.pm:

(readXcodeUserDefault): Changed to take a defaults key rather than a suffix. Removed support

for old Xcode versions.

(determineBaseProductDir): Removed support for old Xcode versions. Updated for the change

to readXcodeUserDefault.

(debugger): Deleted. This was only used for Darwin, where LLDB is now the only supported

debugger.

(determineDebugger): Ditto.
(checkRequiredSystemConfig): Updated to require at least OS X Yosemite v10.10.5 and Xcode

7.0.

(printHelpAndExitForRunAndDebugWebKitAppIfNeeded): Removed --use-gdb and --use-lldb

switches.

(execMacWebKitAppForDebugging): Removed support for GDB.

20:29 Changeset [203550] by cdumez@apple.com
  • 5 edits in trunk

Parameter to Document.createEvent() should be mandatory
https://bugs.webkit.org/show_bug.cgi?id=160065

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline several W3C tests now that more checks are passing.

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

Source/WebCore:

Parameter to Document.createEvent() should be mandatory as per the
specification:

We already throw anyway when the parameter is omitted because we use
"undefined" as event type, which is invalid. However, we throw the
wrong exception.

Firefox and Chrome agree with the specification here.

No new tests, rebaselined existing tests.

  • dom/Document.idl:
20:00 Changeset [203549] by bburg@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION(r62549): Objective-C DOM bindings sometimes fail to regenerate when CodeGenerator.pm is modified
https://bugs.webkit.org/show_bug.cgi?id=160031

Reviewed by Darin Adler.

This bug was caused by a refactoring 6 years ago. Not all uses of a variable
were renamed, so the ObjC bindings target pattern was not specifying any
build scripts as target dependencies.

  • DerivedSources.make: Standardize on {COMMON,JS,DOM}_BINDINGS_SCRIPTS.
19:43 Changeset [203548] by darin@apple.com
  • 2 edits in trunk/Source/WebCore

Remove unneeded content attribute name "playsinline"
https://bugs.webkit.org/show_bug.cgi?id=160069

Reviewed by Chris Dumez.

  • html/HTMLVideoElement.idl: Removed explicit content attribute name on Reflect

attribute since it is the same as the name that the code generator will generate.

19:42 Changeset [203547] by cdumez@apple.com
  • 6 edits in trunk

Make parameters to Element.getElementsBy*() operations mandatory
https://bugs.webkit.org/show_bug.cgi?id=160060

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline several W3C tests now that more checks are passing.

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

Source/WebCore:

Make parameters to Element.getElementsBy*() operations mandatory to
match the specification:

Firefox and Chrome agree with the specification so the compatibility
risk should be low.

It makes very little sense to call these operations without parameter,
especially considering WebKit uses the string "undefined" if the
parameter is omitted.

No new tests, rebaselined existing tests.

  • dom/Element.idl:

LayoutTests:

Drop cases that were calling the operation without parameter.

  • fast/dom/getElementsByClassName/dumpHTMLCollection-expected.txt:
  • fast/dom/getElementsByClassName/dumpHTMLCollection.html:
19:21 Changeset [203546] by cdumez@apple.com
  • 16 edits in trunk

Make parameters mandatory for attribute-related API on Element
https://bugs.webkit.org/show_bug.cgi?id=160059

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline several W3C tests now that more checks are passing.

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

Source/WebCore:

Make parameters mandatory for attribute-related API on Element to match
the specification:

Firefox and Chrome agree with the specification. Calling this API
without the parameters does not make much sense, especially considering
WebKit uses the string "undefined" when the parameter is omitted.

No new tests, rebaselined existing tests.

  • dom/Element.idl:

LayoutTests:

Update existing layout tests to reflect the behavior change.

  • fast/dom/Element/script-tests/setAttributeNS-namespace-err.js:
  • fast/dom/Element/setAttributeNS-namespace-err-expected.txt:
  • fast/dom/HTMLHrElement/hr-color-noshade-attribute.html:
  • fast/dom/attribute-downcast-right.html:
  • fast/images/style-access-during-imageChanged-style-freeze.html:
  • fast/selectors/read-only-read-write-input-basics.html:
  • fast/selectors/read-only-read-write-textarea-basics.html:
  • media/video-playsinline-expected.txt:
  • media/video-playsinline.html:
18:40 Changeset [203545] by mmaxfield@apple.com
  • 24 edits in trunk

Remove support for deprecated SPI inlineMediaPlaybackRequiresPlaysInlineAttribute
https://bugs.webkit.org/show_bug.cgi?id=160066

Reviewed by Dean Jackson.

Source/WebCore:

r203520 deprecated inlineMediaPlaybackRequiresPlaysInlineAttribute in favor of
allowsInlineMediaPlaybackWithPlaysInlineAttribute and
allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute. The old
inlineMediaPlaybackRequiresPlaysInlineAttribute is SPI and was never released
to the public. Therefore, it can be removed safely.

No new tests because there is no behavior change.

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

(WebCore::InternalSettings::Backup::Backup): Deleted.
(WebCore::InternalSettings::Backup::restoreTo): Deleted.
(WebCore::InternalSettings::setInlineMediaPlaybackRequiresPlaysInlineAttribute): Deleted.

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

Source/WebKit/mac:

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]): Deleted.
(-[WebPreferences inlineMediaPlaybackRequiresPlaysInlineAttribute]): Deleted.
(-[WebPreferences setInlineMediaPlaybackRequiresPlaysInlineAttribute:]): Deleted.

  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]): Deleted.

Source/WebKit2:

  • Shared/WebPreferencesDefinitions.h:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetInlineMediaPlaybackRequiresPlaysInlineAttribute): Deleted.
(WKPreferencesGetInlineMediaPlaybackRequiresPlaysInlineAttribute): Deleted.

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]): Deleted.

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration init]): Deleted.
(-[WKWebViewConfiguration copyWithZone:]): Deleted.
(-[WKWebViewConfiguration _inlineMediaPlaybackRequiresPlaysInlineAttribute]): Deleted.
(-[WKWebViewConfiguration _setInlineMediaPlaybackRequiresPlaysInlineAttribute:]): Deleted.

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences): Deleted.

Tools:

  • DumpRenderTree/mac/DumpRenderTree.mm:

(setDefaultsToConsistentValuesForTesting): Deleted.

  • TestWebKitAPI/Tests/WebKit2Cocoa/RequiresUserActionForPlayback.mm:

(RequiresUserActionForPlaybackTest::SetUp): Deleted.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues): Deleted.

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::initializeWebViewConfiguration): Deleted.

18:01 Changeset [203544] by sbarati@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

callOperation(.) variants in the DFG that explicitly take a tag/payload register should take a JSValueRegs instead
https://bugs.webkit.org/show_bug.cgi?id=160007

Reviewed by Filip Pizlo.

This patch is the first step in my plan to remove all callOperation(.) variants
in the various JITs and to unify them using a couple template variations.
The steps are as follows:

  1. Replace all explicit tag/payload pairs with JSValueRegs in the DFG
  2. Replace all explicit tag/payload pairs with JSValueRegs in the baseline
  3. remove callOperation(.) variants and teach setupArgumentsWithExecState about JSValueRegs.
  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileGetByValOnString):
(JSC::DFG::SpeculativeJIT::compileValueAdd):
(JSC::DFG::SpeculativeJIT::compileGetDynamicVar):
(JSC::DFG::SpeculativeJIT::compilePutDynamicVar):
(JSC::DFG::SpeculativeJIT::compilePutAccessorByVal):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::callOperation):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::cachedGetById):
(JSC::DFG::SpeculativeJIT::cachedPutById):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranch):
(JSC::DFG::CompareAndBoxBooleanSlowPathGenerator::generateInternal):
(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompare):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeStrictEq):
(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeStrictEq):
(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::compileLogicalNot):
(JSC::DFG::SpeculativeJIT::emitBranch):
(JSC::DFG::SpeculativeJIT::compile):

17:48 Changeset [203543] by dino@apple.com
  • 3 edits
    3 adds in trunk

REGRESSION (r202927): The internal size of the ImageBuffer is scaled twice by the context scaleFactor
https://bugs.webkit.org/show_bug.cgi?id=159981
<rdar://problem/27429465>

Reviewed by Myles Maxfield.

Source/WebCore:

The change to propagate color spaces through ImageBuffers created an
alternate version of createCompatibleBuffer. This version accidentally
attempted to take the display resolution (i.e. hidpi) into account
when creating the buffer, which meant it was being applied twice.

The fix is simply to remove that logic. The caller of the method
will take the resolution into account, the same way they did
with the old createCompatibleBuffer method.

Test: fast/hidpi/pdf-image-scaled.html

  • platform/graphics/cg/ImageBufferCG.cpp:

(WebCore::ImageBuffer::createCompatibleBuffer): Don't calculate
a resolution - just use the value of 1.0.

LayoutTests:

  • fast/hidpi/pdf-image-scaled-expected.html: Added.
  • fast/hidpi/pdf-image-scaled.html: Added.
  • fast/hidpi/resources/circle.pdf: Added.
17:44 Changeset [203542] by wilander@apple.com
  • 3 edits
    3 adds in trunk

Block mixed content synchronous XHR
https://bugs.webkit.org/show_bug.cgi?id=105462
<rdar://problem/13666424>

Reviewed by Brent Fulgham.

Source/WebCore:

Test: http/tests/security/mixedContent/insecure-xhr-sync-in-main-frame.html

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::loadRequest):

LayoutTests:

  • http/tests/security/mixedContent/insecure-xhr-sync-in-main-frame-expected.txt: Added.
  • http/tests/security/mixedContent/insecure-xhr-sync-in-main-frame.html: Added.
  • http/tests/security/mixedContent/resources/insecure-xhr-sync-in-main-frame-window.html: Added.
17:11 Changeset [203541] by commit-queue@webkit.org
  • 4 edits
    1 add in trunk

[iOS] Apps using WKWebView will crash if they set the scroll view's delegate and don't nil it out later
https://bugs.webkit.org/show_bug.cgi?id=159980
rdar://problem/27450825

Patch by Chelsea Pugh <cpugh@apple.com> on 2016-07-21
Reviewed by Dan Bernstein.

Source/WebKit2:

The root cause of this crash is that we are not abiding the UIScrollView API that the scroll view
delegate property should be weak. If setters of this delegate do not know that, since the WKWebView
exposes the scroll view as a UIScrollView, they may forget to nil out the delegate they set and will
then crash.

  • UIProcess/ios/WKScrollView.mm:

(-[WKScrollViewDelegateForwarder methodSignatureForSelector:]): Get a RetainPtr holding the
external delegate and use where needed.
(-[WKScrollViewDelegateForwarder respondsToSelector:]): Ditto.
(-[WKScrollViewDelegateForwarder forwardInvocation:]): Ditto.
(-[WKScrollViewDelegateForwarder forwardingTargetForSelector:]): Ditto. When returning a reference
to the external delegate, get a retained and autoreleased reference so the caller needn't release
the object when done.
(-[WKScrollView delegate]): Ditto.
(-[WKScrollView _updateDelegate]): Get a RetainPtr holding the external delegate that can be
used throughout this method. Use the RetainPtr to get the external delegate for setting super's
delegate as well as creating the delegate forwarder.
(-[WKScrollView setDelegate:]): Get a RetainPtr holding the external delegate and use its value for
comparison to the object we are setting the external delegate to.

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/ios/WKScrollViewDelegateCrash.mm: Added.

(-[TestDelegateForScrollView dealloc]): Update delegateIsDeallocated to true so that we can tell
when our delegate has hit -dealloc.
(TestWebKitAPI::TEST): Ensure that after an object has been set as the scroll view's delegate,
and has then been deallocated, that the scroll view's delegate is nil and the deallocated delegate
will not be messaged.

16:55 Changeset [203540] by mmaxfield@apple.com
  • 3 edits in trunk/Tools

Follow-up patch to r203520
https://bugs.webkit.org/show_bug.cgi?id=159967
<rdar://problem/26964090>

Unreviewed.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(setDefaultsToConsistentValuesForTesting):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):

16:52 Changeset [203539] by cdumez@apple.com
  • 8 edits in trunk

Make parameters to Document.getElementsBy*() operations mandatory
https://bugs.webkit.org/show_bug.cgi?id=160050

Reviewed by Daniel Bates.

LayoutTests/imported/w3c:

Rebaseline several W3C tests now that more checks are passing.

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

Source/WebCore:

Make parameters to Document.getElementsBy*() operations mandatory to
match the specification:

Firefox and Chrome agree with the specification so the compatibility
risk should be low.

It makes very little sense to call these operations without parameter,
especially considering WebKit uses the string "undefined" if the
parameter is omitted.

No new tests, rebaselined existing tests.

  • dom/Document.idl:

LayoutTests:

Drop cases that were calling the operation without parameter.

  • fast/dom/getElementsByClassName/dumpHTMLCollection-expected.txt:
  • fast/dom/getElementsByClassName/dumpHTMLCollection.html:
16:47 Changeset [203538] by n_wang@apple.com
  • 3 edits
    2 adds in trunk

AX: aria-label not being used correctly in accessible name calculation of heading
https://bugs.webkit.org/show_bug.cgi?id=160009

Reviewed by Chris Fleizach.

Source/WebCore:

Actually we are exposing the correct information for heading objects. On macOS,
VoiceOver should handle the logic that picks the right information to speak.
On iOS, VoiceOver is speaking the static text child instead of the heading object.
So we should set the accessibilityLabel of the static text based on the parent's
alternate label.

Test: accessibility/ios-simulator/heading-with-aria-label.html

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper _accessibilityTraitsFromAncestors]):

LayoutTests:

  • accessibility/ios-simulator/heading-with-aria-label-expected.txt: Added.
  • accessibility/ios-simulator/heading-with-aria-label.html: Added.
16:41 Changeset [203537] by sbarati@apple.com
  • 40 edits
    7 adds in trunk/Source

op_add/ValueAdd should be an IC in all JIT tiers
https://bugs.webkit.org/show_bug.cgi?id=159649

Reviewed by Benjamin Poulain.

Source/JavaScriptCore:

This patch makes Add an IC inside all JIT tiers. It does so in a
simple, but effective, way. We will try to generate an int+int add
that will repatch itself if its type checks fail. Sometimes though,
we have runtime type data saying that the add won't be int+int.
In those cases, we will just generate a full snippet that doesn't patch itself.
Other times, we may generate no inline code and defer to making a C call. A lot
of this patch is just refactoring ResultProfile into what we're now calling ArithProfile.
ArithProfile does everything ResultProfile used to do, and more. It records simple type
data about the LHS/RHS operands it sees. This allows us to determine if an op_add
has only seen int+int operands, etc. ArithProfile will also contain the ResultType
for the LHS/RHS that the parser feeds into op_add. ArithProfile now fits into 32-bits.
This means instead of having a side table like we did for ResultProfile, we just
inject the ArithProfile into the bytecode instruction stream. This makes asking
for ArithProfile faster; we no longer need to lock around this operation.

The size of an Add has gone down on average, but we can still do better.
We still generate a lot of code because we generate calls to the slow path.
I think we can make this better by moving the slow path to a shared thunk
system. This patch mostly lays the foundation for future improvements to Add,
and a framework to move all other arithmetic operations to be typed-based ICs.

Here is some data I took on the average op_add/ValueAdd size on various benchmarks:

| JetStream | Speedometer | Unity 3D |

------| -------------

Old | 189 bytes | 169 bytes | 192 bytes |

------| -------------

New | 148 bytes | 124 bytes | 143 bytes |

---------------------------------------------------

Making an arithmetic IC is now easy. The JITMathIC class will hold a snippet
generator as a member variable. To make a snippet an IC, you need to implement
a generateInline(.) method, which generates the inline IC. Then, you need to
generate the IC where you used to generate the snippet. When generating the
IC, we need to inform JITMathIC of various data like we do with StructureStubInfo.
We need to tell it about where the slow path starts, where the slow path call is, etc.
When generating a JITMathIC, it may tell you that it didn't generate any code inline.
This is a request to the user of JITMathIC to just generate a C call along the
fast path. JITMathIC may also have the snippet tell it to just generate the full
snippet instead of the int+int path along the fast path.

In subsequent patches, we can improve upon how we decide to generate int+int or
the full snippet. I tried to get clever by having double+double, double+int, int+double,
fast paths, but they didn't work out nearly as well as the int+int fast path. I ended up
generating a lot of code when I did this and ended up using more memory than just generating
the full snippet. There is probably some way we can be clever and generate specialized fast
paths that are more successful than what I tried implementing, but I think that's worth deferring
this to follow up patches once the JITMathIC foundation has landed.

This patch also fixes a bug inside the slow path lambdas in the DFG.
Before, it was not legal to emit an exception check inside them. Now,
it is. So it's now easy to define arbitrary late paths using the DFG
slow path lambda API.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/ArithProfile.cpp: Added.

(JSC::ArithProfile::emitObserveResult):
(JSC::ArithProfile::shouldEmitSetDouble):
(JSC::ArithProfile::emitSetDouble):
(JSC::ArithProfile::shouldEmitSetNonNumber):
(JSC::ArithProfile::emitSetNonNumber):
(WTF::printInternal):

  • bytecode/ArithProfile.h: Added.

(JSC::ObservedType::ObservedType):
(JSC::ObservedType::sawInt32):
(JSC::ObservedType::isOnlyInt32):
(JSC::ObservedType::sawNumber):
(JSC::ObservedType::isOnlyNumber):
(JSC::ObservedType::sawNonNumber):
(JSC::ObservedType::isOnlyNonNumber):
(JSC::ObservedType::isEmpty):
(JSC::ObservedType::bits):
(JSC::ObservedType::withInt32):
(JSC::ObservedType::withNumber):
(JSC::ObservedType::withNonNumber):
(JSC::ObservedType::withoutNonNumber):
(JSC::ObservedType::operator==):
(JSC::ArithProfile::ArithProfile):
(JSC::ArithProfile::fromInt):
(JSC::ArithProfile::lhsResultType):
(JSC::ArithProfile::rhsResultType):
(JSC::ArithProfile::lhsObservedType):
(JSC::ArithProfile::rhsObservedType):
(JSC::ArithProfile::setLhsObservedType):
(JSC::ArithProfile::setRhsObservedType):
(JSC::ArithProfile::tookSpecialFastPath):
(JSC::ArithProfile::didObserveNonInt32):
(JSC::ArithProfile::didObserveDouble):
(JSC::ArithProfile::didObserveNonNegZeroDouble):
(JSC::ArithProfile::didObserveNegZeroDouble):
(JSC::ArithProfile::didObserveNonNumber):
(JSC::ArithProfile::didObserveInt32Overflow):
(JSC::ArithProfile::didObserveInt52Overflow):
(JSC::ArithProfile::setObservedNonNegZeroDouble):
(JSC::ArithProfile::setObservedNegZeroDouble):
(JSC::ArithProfile::setObservedNonNumber):
(JSC::ArithProfile::setObservedInt32Overflow):
(JSC::ArithProfile::setObservedInt52Overflow):
(JSC::ArithProfile::addressOfBits):
(JSC::ArithProfile::observeResult):
(JSC::ArithProfile::lhsSawInt32):
(JSC::ArithProfile::lhsSawNumber):
(JSC::ArithProfile::lhsSawNonNumber):
(JSC::ArithProfile::rhsSawInt32):
(JSC::ArithProfile::rhsSawNumber):
(JSC::ArithProfile::rhsSawNonNumber):
(JSC::ArithProfile::observeLHSAndRHS):
(JSC::ArithProfile::bits):
(JSC::ArithProfile::hasBits):
(JSC::ArithProfile::setBit):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpRareCaseProfile):
(JSC::CodeBlock::dumpArithProfile):
(JSC::CodeBlock::dumpBytecode):
(JSC::CodeBlock::addStubInfo):
(JSC::CodeBlock::addJITAddIC):
(JSC::CodeBlock::findStubInfo):
(JSC::CodeBlock::resetJITData):
(JSC::CodeBlock::shrinkToFit):
(JSC::CodeBlock::dumpValueProfiles):
(JSC::CodeBlock::rareCaseProfileCountForBytecodeOffset):
(JSC::CodeBlock::arithProfileForBytecodeOffset):
(JSC::CodeBlock::arithProfileForPC):
(JSC::CodeBlock::couldTakeSpecialFastCase):
(JSC::CodeBlock::dumpResultProfile): Deleted.
(JSC::CodeBlock::resultProfileForBytecodeOffset): Deleted.
(JSC::CodeBlock::specialFastCaseProfileCountForBytecodeOffset): Deleted.
(JSC::CodeBlock::ensureResultProfile): Deleted.

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::stubInfoBegin):
(JSC::CodeBlock::stubInfoEnd):
(JSC::CodeBlock::couldTakeSlowCase):
(JSC::CodeBlock::numberOfResultProfiles): Deleted.

  • bytecode/MethodOfGettingAValueProfile.cpp:

(JSC::MethodOfGettingAValueProfile::emitReportValue):

  • bytecode/MethodOfGettingAValueProfile.h:

(JSC::MethodOfGettingAValueProfile::MethodOfGettingAValueProfile):

  • bytecode/ValueProfile.cpp:

(JSC::ResultProfile::emitDetectNumericness): Deleted.
(JSC::ResultProfile::emitSetDouble): Deleted.
(JSC::ResultProfile::emitSetNonNumber): Deleted.
(WTF::printInternal): Deleted.

  • bytecode/ValueProfile.h:

(JSC::getRareCaseProfileBytecodeOffset):
(JSC::ResultProfile::ResultProfile): Deleted.
(JSC::ResultProfile::bytecodeOffset): Deleted.
(JSC::ResultProfile::specialFastPathCount): Deleted.
(JSC::ResultProfile::didObserveNonInt32): Deleted.
(JSC::ResultProfile::didObserveDouble): Deleted.
(JSC::ResultProfile::didObserveNonNegZeroDouble): Deleted.
(JSC::ResultProfile::didObserveNegZeroDouble): Deleted.
(JSC::ResultProfile::didObserveNonNumber): Deleted.
(JSC::ResultProfile::didObserveInt32Overflow): Deleted.
(JSC::ResultProfile::didObserveInt52Overflow): Deleted.
(JSC::ResultProfile::setObservedNonNegZeroDouble): Deleted.
(JSC::ResultProfile::setObservedNegZeroDouble): Deleted.
(JSC::ResultProfile::setObservedNonNumber): Deleted.
(JSC::ResultProfile::setObservedInt32Overflow): Deleted.
(JSC::ResultProfile::setObservedInt52Overflow): Deleted.
(JSC::ResultProfile::addressOfFlags): Deleted.
(JSC::ResultProfile::addressOfSpecialFastPathCount): Deleted.
(JSC::ResultProfile::detectNumericness): Deleted.
(JSC::ResultProfile::hasBits): Deleted.
(JSC::ResultProfile::setBit): Deleted.
(JSC::getResultProfileBytecodeOffset): Deleted.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitBinaryOp):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::makeSafe):

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::methodOfGettingAValueProfileFor):

  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::exceptionCheck):

  • dfg/DFGSlowPathGenerator.h:

(JSC::DFG::SlowPathGenerator::generate):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::addSlowPathGenerator):
(JSC::DFG::SpeculativeJIT::runSlowPathGenerators):
(JSC::DFG::SpeculativeJIT::compileValueAdd):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::silentSpillAllRegistersImpl):
(JSC::DFG::SpeculativeJIT::silentSpillAllRegisters):
(JSC::DFG::SpeculativeJIT::callOperation):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileValueAdd):
(JSC::FTL::DFG::LowerDFGToB3::compileStrCat):

  • jit/CCallHelpers.h:

(JSC::CCallHelpers::setupArgumentsWithExecState):
(JSC::CCallHelpers::setupArguments):

  • jit/JIT.h:
  • jit/JITAddGenerator.cpp:

(JSC::JITAddGenerator::generateInline):
(JSC::JITAddGenerator::generateFastPath):

  • jit/JITAddGenerator.h:

(JSC::JITAddGenerator::JITAddGenerator):
(JSC::JITAddGenerator::didEmitFastPath): Deleted.
(JSC::JITAddGenerator::endJumpList): Deleted.
(JSC::JITAddGenerator::slowPathJumpList): Deleted.

  • jit/JITArithmetic.cpp:

(JSC::JIT::emit_op_jless):
(JSC::JIT::emitSlow_op_urshift):
(JSC::getOperandTypes):
(JSC::JIT::emit_op_add):
(JSC::JIT::emitSlow_op_add):
(JSC::JIT::emit_op_div):
(JSC::JIT::emit_op_mul):
(JSC::JIT::emitSlow_op_mul):
(JSC::JIT::emit_op_sub):
(JSC::JIT::emitSlow_op_sub):

  • jit/JITDivGenerator.cpp:

(JSC::JITDivGenerator::generateFastPath):

  • jit/JITDivGenerator.h:

(JSC::JITDivGenerator::JITDivGenerator):

  • jit/JITInlines.h:

(JSC::JIT::callOperation):

  • jit/JITMathIC.h: Added.

(JSC::JITMathIC::doneLocation):
(JSC::JITMathIC::slowPathStartLocation):
(JSC::JITMathIC::slowPathCallLocation):
(JSC::JITMathIC::generateInline):
(JSC::JITMathIC::generateOutOfLine):
(JSC::JITMathIC::finalizeInlineCode):

  • jit/JITMathICForwards.h: Added.
  • jit/JITMathICInlineResult.h: Added.
  • jit/JITMulGenerator.cpp:

(JSC::JITMulGenerator::generateFastPath):

  • jit/JITMulGenerator.h:

(JSC::JITMulGenerator::JITMulGenerator):

  • jit/JITOperations.cpp:
  • jit/JITOperations.h:
  • jit/JITSubGenerator.cpp:

(JSC::JITSubGenerator::generateFastPath):

  • jit/JITSubGenerator.h:

(JSC::JITSubGenerator::JITSubGenerator):

  • jit/Repatch.cpp:

(JSC::readCallTarget):
(JSC::ftlThunkAwareRepatchCall):
(JSC::tryCacheGetByID):
(JSC::repatchGetByID):
(JSC::appropriateGenericPutByIdFunction):
(JSC::tryCachePutByID):
(JSC::repatchPutByID):
(JSC::tryRepatchIn):
(JSC::repatchIn):
(JSC::linkSlowFor):
(JSC::resetGetByID):
(JSC::resetPutByID):
(JSC::repatchCall): Deleted.

  • jit/Repatch.h:
  • llint/LLIntData.cpp:

(JSC::LLInt::Data::performAssertions):

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • parser/ResultType.h:

(JSC::ResultType::ResultType):
(JSC::ResultType::isInt32):
(JSC::ResultType::definitelyIsNumber):
(JSC::ResultType::definitelyIsString):
(JSC::ResultType::definitelyIsBoolean):
(JSC::ResultType::mightBeNumber):
(JSC::ResultType::isNotNumber):
(JSC::ResultType::forBitOp):
(JSC::ResultType::bits):
(JSC::OperandTypes::OperandTypes):

  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):
(JSC::updateArithProfileForBinaryArithOp):
(JSC::updateResultProfileForBinaryArithOp): Deleted.

  • tests/stress/op-add-exceptions.js: Added.

(assert):
(f1):
(f2):
(f3):
(let.oException.valueOf):
(foo):
(ident):
(bar):

Source/WebCore:

  • ForwardingHeaders/jit/JITMathICForwards.h: Added.
16:32 Changeset [203536] by ryanhaddad@apple.com
  • 1 edit
    1 copy
    1 add
    1 delete in trunk/LayoutTests

Move expected.txt file for editing/deleting/delete-emoji.html from mac-elcapitan to mac-yosemite

Unreviewed test gardening.

  • platform/mac-yosemite/editing/deleting/delete-emoji-expected.txt: Renamed from LayoutTests/platform/mac-elcapitan/editing/deleting/delete-emoji-expected.txt.
15:56 Changeset [203535] by cdumez@apple.com
  • 18 edits in trunk

Make parameters mandatory for Document.create*() operations
https://bugs.webkit.org/show_bug.cgi?id=160047

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline several W3C tests now that more checks are passing.

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

Source/WebCore:

Make parameters mandatory for Document.create*() operations:
createTextNode(), createComment(), createCDataSection(),
createAttribute() and createProcessingInstruction().

This matches the specification:

Firefox and Chrome both agree with the specification so the
compatibility risk should be low. Also WebKit uses the string
"undefined" when the parameter is omitted, which is not very
helpful.

No new tests, rebaselined existing tests.

  • dom/Document.idl:

LayoutTests:

Update existing tests to reflect the behavior change.

  • compositing/geometry/assert-marquee-timer.html:
  • editing/style/bold-with-dom-changes.html:
  • fast/dom/MutationObserver/observe-characterdata.html:
  • fast/dom/normalize-attributes-mutation-event-crash.html:
  • fast/dom/null-chardata-crash.html:
  • fast/dom/wrapper-classes-expected.txt:
  • fast/dom/wrapper-classes.html:
  • fast/forms/basic-textareas.html:
  • fast/inspector-support/uncaught-dom1-exception-expected.txt:
  • fast/inspector-support/uncaught-dom1-exception.html:
15:49 Changeset [203534] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Marking imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.html as flaky on mac
https://bugs.webkit.org/show_bug.cgi?id=160056

Unreviewed test gardening.

  • platform/mac/TestExpectations:
15:34 Changeset [203533] by mmaxfield@apple.com
  • 3 edits
    2 copies
    1 move
    1 add in trunk

[macOS] Caret placement occurs in the middle of new emoji group candidates
https://bugs.webkit.org/show_bug.cgi?id=160008
<rdar://problem/27430111>

Reviewed by Simon Fraser.

Source/WTF:

r203330 added support for new emoji group candidates. This patch updates the rules
governing caret placement around these new emoji groups.

  • wtf/text/TextBreakIterator.cpp:

(WTF::cursorMovementIterator):

LayoutTests:

Update expected results.

The new emoji support is behind the ADDITIONAL_EMOJI_SUPPORT guard, which
means it only occurs on El Capitan and higher. Similarly, these new rules
are not used for iOS.

  • editing/deleting/delete-emoji-expected.txt: Deleted.
  • platform/mac/editing/deleting/delete-emoji-expected.txt: Added.
  • platform/mac-elcapitan/editing/deleting/delete-emoji-expected.txt: Added.
  • platform/ios-simulator/editing/deleting/delete-emoji-expected.txt: Added.
15:16 Changeset [203532] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Land test expectations for rdar://problem/27475162.

  • platform/mac/TestExpectations:
14:31 Changeset [203531] by cdumez@apple.com
  • 6 edits
    2 adds in trunk

Fix null handling of SVGAngle/SVGLength.valueAsString attribute
https://bugs.webkit.org/show_bug.cgi?id=160025

Reviewed by Ryosuke Niwa.

Source/WebCore:

Fix null handling of SVGAngle/SVGLength.valueAsString attribute
to match the specification:

In particular, this patch drops [TreatNullAs=EmptyString] IDL
extended attribute from this attribute. This is not supposed
to change behavior given that both "" and "null" are invalid
numbers and the specification says to throw a SYNTAX_ERR in
this case.

However, WebKit currently ignores assignments to "" instead
of throwing. As a result, assigning to null will now throw
instead of being ignored. The compatibility risk should be
low because both Firefox and Chrome throw when assigning
null.

I did not change the behavior when assigning to "" because
it is a bit out of scope for this patch and browsers to not
seem to agree:

  • Firefox throws
  • Chrome set value to "0"
  • WebKit ignores the assignment

The specification seems to agree with Firefox as far as I
can tell given that "" is not a valid number as per:

Test: svg/dom/valueAsString-null.html

  • svg/SVGAngle.idl:
  • svg/SVGLength.idl:

LayoutTests:

Add test coverage.

  • svg/dom/svg-element-attribute-js-null-expected.txt:
  • svg/dom/svg-element-attribute-js-null.xhtml:
  • svg/dom/valueAsString-null-expected.txt: Added.
  • svg/dom/valueAsString-null.html: Added.

There are a couple of failures in this test because WebKit ignores
assignments to "" instead of throwing. Firefox passes all the checks.

14:25 Changeset [203530] by cdumez@apple.com
  • 7 edits in trunk

Fix null handling of HTMLFontElement.color
https://bugs.webkit.org/show_bug.cgi?id=160036

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

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

Source/WebCore:

Fix null handling of HTMLFontElement.color to match the specification:

We are supposed to treat null as the empty string. Both Firefox and
Chrome agree with the specification.

No new tests, rebaselined existing tests.

  • html/HTMLFontElement.idl:

LayoutTests:

Update existing test to reflect behavior change.

  • fast/dom/element-attribute-js-null-expected.txt:
  • fast/dom/element-attribute-js-null.html:
14:25 Changeset [203529] by cdumez@apple.com
  • 7 edits in trunk

Fix null handling for several HTMLTableElement attributes
https://bugs.webkit.org/show_bug.cgi?id=160041

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

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

Source/WebCore:

Fix null handling for several HTMLTableElement attributes to match the
specification:

The attributes in question are 'bicolor', 'cellSpacing' and
'cellPadding'. We are supposed to treat null as the empty string for
these attributes.

Firefox and Chrome both agree with the specification.

No new tests, rebaselined existing tests.

  • html/HTMLTableElement.idl:

LayoutTests:

Update existing test to reflect the behavior change.

  • fast/dom/element-attribute-js-null-expected.txt:
  • fast/dom/element-attribute-js-null.html:
14:23 Changeset [203528] by cdumez@apple.com
  • 8 edits in trunk

Fix null handling for HTMLObjectElement.border
https://bugs.webkit.org/show_bug.cgi?id=160040

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

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

Source/WebCore:

Fix null handling for HTMLObjectElement.border to match the specification:

We are supposed to treat null as the empty string.

Both Firefox and Chrome agree with the specification.

No new tests, rebaselined existing tests.

  • html/HTMLObjectElement.idl:

LayoutTests:

Update existing test to reflect the behavior change.

  • fast/dom/element-attribute-js-null-expected.txt:
  • fast/dom/element-attribute-js-null.html:
14:22 Changeset [203527] by cdumez@apple.com
  • 8 edits in trunk

Fix null handling for td.bgColor / tr.bgColor
https://bugs.webkit.org/show_bug.cgi?id=160043

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

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

Source/WebCore:

Fix null handling for td.bgColor / tr.bgColor to match the
specification:

We are supposed to treat null as the empty string.

Firefox and Chrome both agree with the specification.

No new tests, rebaselined existing tests.

  • html/HTMLTableCellElement.idl:
  • html/HTMLTableRowElement.idl:

LayoutTests:

Update existing test to reflect the behavior change.

  • fast/dom/element-attribute-js-null-expected.txt:
  • fast/dom/element-attribute-js-null.html:
14:19 Changeset [203526] by dbates@webkit.org
  • 3 edits in trunk/LayoutTests

Test platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=160002

Reviewed by Alexey Proskuryakov.

The file platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe.html tests loading
plugin content from the main frame and from a subframe. Depending on timing the plugin
content loaded in the subframe may complete before plugin content loaded in the main frame.
We should test loading plugin content in a subframe after perform all main frame sub-tests
so as to ensure a well-defined sub-test order.

Add logic to ensure that an embedded YouTube flash video loaded in a subframe actually creates
a shadow DOM. Additionally, simplify the test logic by making use window.jsTestIsAsync/finishJSTest()
to mark the test as asynchronous and notify test completion instead of calling
window.testRunner.{waitUntilDone, notifyDone}(), remove the call to
testRunner.dumpAsText() (js-test-pre.js calls this for us), remove all of the DOM elements
used in the test to avoid noise in the expected results, and fix some style nits.

  • platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe-expected.txt:
  • platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe.html:
14:11 Changeset [203525] by cdumez@apple.com
  • 7 edits in trunk

Fix null handling for several HTMLBodyElement attributes
https://bugs.webkit.org/show_bug.cgi?id=160044

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

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

Source/WebCore:

Fix null handling for several HTMLBodyElement attributes to match the
specification:

The attributes in question are: 'text', 'link', 'vlink', 'alink' and
'bgcolor'.

We are supposed to treat null as the empty string for these attributes.

Firefox and Chrome both agree with the specification.

No new tests, rebaselined existing tests.

  • html/HTMLBodyElement.idl:

LayoutTests:

Update existing test to reflect the behavior change.

  • fast/dom/element-attribute-js-null-expected.txt:
  • fast/dom/element-attribute-js-null.html:
14:10 Changeset [203524] by cdumez@apple.com
  • 8 edits in trunk

Fix null handling for HTMLIFrameElement.marginWidth / marginHeight
https://bugs.webkit.org/show_bug.cgi?id=160037

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

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

Source/WebCore:

Fix null handling for HTMLIFrameElement.marginWidth / marginHeight to
match the specification:

We are supposed to treat null as the empty string. Both Firefox and
Chrome agree with the specification.

No new tests, rebaselined existing tests.

  • html/HTMLIFrameElement.idl:

LayoutTests:

Update existing test to reflect the behavior change.

  • fast/dom/element-attribute-js-null-expected.txt:
  • fast/dom/element-attribute-js-null.html:
14:09 Changeset [203523] by cdumez@apple.com
  • 8 edits in trunk

Fix null handling for HTMLImageElement.border
https://bugs.webkit.org/show_bug.cgi?id=160039

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

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

Source/WebCore:

Fix null handling for HTMLImageElement.border to match the specification:

We are supposed to treat null as the empty string.

Both Firefox and Chrome agree with the specification.

No new tests, rebaselined existing tests.

  • html/HTMLImageElement.idl:

LayoutTests:

Update existing test to reflect the behavior change.

  • fast/dom/element-attribute-js-null-expected.txt:
  • fast/dom/element-attribute-js-null.html:
14:06 Changeset [203522] by dbates@webkit.org
  • 9 edits in trunk

REGRESSION: Plugin replaced YouTube Flash videos always have the same width
https://bugs.webkit.org/show_bug.cgi?id=159998
<rdar://problem/27462285>

Reviewed by Simon Fraser.

Source/WebCore:

Fixes an issue where the width of a plugin replaced YouTube video loaded via an HTML embed
element would always have the same width regardless of value of the width attribute.

For YouTube Flash videos the YouTube plugin replacement substitutes a shadow DOM subtree
for the default renderer of an HTML embed element. The root of this shadow DOM subtree
is an HTML div element. Currently we set inline styles on this <div> when it is instantiated.
In particular, we set inline display and position to "inline-block" and "relative", respectively,
and set an invalid height and width (we specify a font weight value instead of a CSS length value

  • this causes an ASSERT_NOT_REACHED() assertion failure in StyleBuilderConverter::convertLengthSizing()

in a debug build). These styles never worked as intended and we ultimately created an inline
renderer (ignoring display "inline-block") that had auto width and height. Instead it is sufficient
to remove all these inline styles and create a RenderBlockFlow renderer for this <div> so that it
renders as a block, non-replaced element to achieve the intended illusion that the <embed> is a
single element.

  • html/shadow/YouTubeEmbedShadowElement.cpp: Remove unused header HTMLEmbedElement.h and include

header RenderBlockFlow.h. Also update copyright in license block.
(WebCore::YouTubeEmbedShadowElement::YouTubeEmbedShadowElement): Remove inline styles as these
never worked as intended.
(WebCore::YouTubeEmbedShadowElement::createElementRenderer): Override; create a block-flow
renderer for us so that we layout as a block, non-replaced element.

  • html/shadow/YouTubeEmbedShadowElement.h:

LayoutTests:

Unskip existing iOS layout tests, update tests and expected results.

  • platform/ios-simulator/TestExpectations:
  • platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe-expected.txt: Updated expected result based on the

changes to test youtube-flash-plugin-iframe.html.

  • platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe-no-height-or-width-expected.txt: Updated expected result

based on the changes to test youtube-flash-plugin-iframe-no-height-or-width.html.

  • platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe-no-height-or-width.html: Modified to check the

width of each embedded YouTube video to ensure that we respect it (if specified).

  • platform/ios-simulator/ios/plugin/youtube-flash-plugin-iframe.html: Substitute pseudo id -webkit-plugin-replacement

for -apple-youtube-shadow-iframe as the later was renamed to the former in <https://trac.webkit.org/changeset/168442>.
Fix misspelling of the word "embed" in a comment.

14:05 Changeset [203521] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Marking inspector/codemirror/prettyprinting-javascript.html as a flaky timeout on mac debug.
https://bugs.webkit.org/show_bug.cgi?id=160048

Unreviewed test gardening.

Added TestExpectation and reordered alphabetically.

  • platform/mac/TestExpectations:
13:19 Changeset [203520] by mmaxfield@apple.com
  • 26 edits
    2 deletes in trunk

[iPhone] Playing a video on tudou.com plays only sound, no video
https://bugs.webkit.org/show_bug.cgi?id=159967
<rdar://problem/26964090>

Reviewed by Jon Lee, Jeremy Jones, and Anders Carlsson.

Source/WebCore:

WebKit recently starting honoring the playsinline and webkit-playsinline
attribute on iPhones. However, because these attributes previously did
nothing, some sites (such as Todou) were setting them on their content
and expecting that they are not honored. In this specific case, the
video is absolutely positioned to be 1 pixel x 1 pixel.

Previously, with iOS 9, apps could set the allowsInlineMediaPlayback
property on their WKWebView, which would honor the webkit-playsinline
attribute. Safari on iPhones didn't do this.

In order to not break these existing apps, it's important that the
allowsInlineMediaPlayback preference still allows webkit-playsinline
videos to play inline in apps using WKWebView. However, in Safari, these
videos should play fullscreen. (Todou videos have webkit-playsinline
but not playsinline.)

Therefore, in Safari, videos with playsinline should be inline, but
videos with webkit-playsinline should be fullscreen. In apps using
WKWebViews, if the app sets allowsInlineMediaPlayback, then videos with
playsinline should be inline, and videos with webkit-playsinline should
also be inline. Videos on iPad and Mac should all be inline by default.

We can create some truth tables for the cases which need to be covered:

All apps on Mac / iPad:
Presence of playsinline | Presence of webkit-playsinline | Result
========================|================================|===========
Not present | Not present | Inline
Present | Not present | Inline
Not Present | Present | Inline
Present | Present | Inline

Safari on iPhone:
Presence of playsinline | Presence of webkit-playsinline | Result
========================|================================|===========
Not present | Not present | Fullscreen
Present | Not present | Inline
Not Present | Present | Fullscreen
Present | Present | Inline

App on iPhone which sets allowsInlineMediaPlayback:
Presence of playsinline | Presence of webkit-playsinline | Result
========================|================================|===========
Not present | Not present | Fullscreen
Present | Not present | Inline
Not Present | Present | Inline
Present | Present | Inline

The way to distinguish Safari from another app is to create an SPI
boolean preference which Safari can set. This is already how the
iPhone and iPad are differentiated using the requiresPlayInlineAttribute
which Safari sets but other apps don't. However, this preference is
no longer sufficient because Safari should now be discriminating
between the playsinline and webkit-playsinline attributes. Therefore,
this preference should be extended to two boolean preferences, which
this patch adds:

allowsInlineMediaPlaybackWithPlaysInlineAttribute
allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute

Safari on iPhone will set
allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute to true,
and allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute to
false. Other apps on iPhone will get their defaults values (because they
are SPI) which means they will both be true. On iPad and Mac, apps will
use the defaults values where both are false.

This patch adds support for these two preferences, but does not remove
the existing inlineMediaPlaybackRequiresPlaysInlineAttribute preference.
I will remove the exising preference as soon as I update Safari to migrate
off of it.

Test: media/video-playsinline.html

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::requiresFullscreenForVideoPlayback):

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

(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setAllowsInlineMediaPlaybackWithPlaysInlineAttribute):
(WebCore::InternalSettings::setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute):

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

Source/WebKit/mac:

Add the two preferences to WebPreferences.

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
(-[WebPreferences allowsInlineMediaPlaybackWithPlaysInlineAttribute]):
(-[WebPreferences setAllowsInlineMediaPlaybackWithPlaysInlineAttribute:]):
(-[WebPreferences allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute]):
(-[WebPreferences setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute:]):

  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

Source/WebKit2:

Add the two preferences to WKWebViewConfiguration and WKPreferences to cover both
the Obj-C API and the C SPI.

  • Shared/WebPreferencesDefinitions.h:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetAllowsInlineMediaPlaybackWithPlaysInlineAttribute):
(WKPreferencesGetAllowsInlineMediaPlaybackWithPlaysInlineAttribute):
(WKPreferencesSetAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute):
(WKPreferencesGetAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _allowsInlineMediaPlaybackWithPlaysInlineAttribute]):
(-[WKWebViewConfiguration _setAllowsInlineMediaPlaybackWithPlaysInlineAttribute:]):
(-[WKWebViewConfiguration _allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute]):
(-[WKWebViewConfiguration _setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute:]):

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Tools:

Migrate tests to use new SPI.

  • TestWebKitAPI/Tests/WebKit2Cocoa/RequiresUserActionForPlayback.mm:

(RequiresUserActionForPlaybackTest::SetUp):

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::initializeWebViewConfiguration):

LayoutTests:

  • media/video-playsinline.html: Updated.
  • media/video-webkit-playsinline-expected.txt: Removed.
  • media/video-webkit-playsinline.html: Removed.
13:04 Changeset [203519] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Marking accessibility/mac/value-change/value-change-user-info-contenteditable.html as flaky on El Capitan WK2
https://bugs.webkit.org/show_bug.cgi?id=160042

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
12:41 Changeset [203518] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Crash accessing null renderer inside WebCore::DeleteSelectionCommand::doApply
https://bugs.webkit.org/show_bug.cgi?id=160011

Reviewed by Chris Dumez.

Add a null pointer check for renderer() call.

Unfortunately no new tests since we don't have a reproduction.

  • editing/DeleteSelectionCommand.cpp:

(WebCore::DeleteSelectionCommand::doApply):

12:04 Changeset [203517] by cdumez@apple.com
  • 13 edits in trunk

The 2 first parameters to DOMImplementation.createDocument() should be mandatory
https://bugs.webkit.org/show_bug.cgi?id=160030

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Rebaseline several W3C tests now that more checks are passing.

  • web-platform-tests/dom/interfaces-expected.txt:
  • web-platform-tests/dom/nodes/DOMImplementation-createDocument-expected.txt:

Source/WebCore:

The 2 first parameters to DOMImplementation.createDocument() should be mandatory
as per the specification:

Firefox and Chrome both agree with the specification. However, those
parameters were marked as optional in WebKit. Calling this function
without parameters would create a document element whose tag is the
string "undefined", which does not seem helpful. This patch thus
aligns our behavior with the specification and other browsers.

No new tests, rebaselined existing tests.

  • dom/DOMImplementation.idl:

LayoutTests:

Rebaseline / update existing test to reflect the behavior change.

  • fast/css/zoom-on-unattached.html:
  • fast/dom/DOMImplementation/createDocument-namespace-err-expected.txt:
  • fast/dom/DOMImplementation/script-tests/createDocument-namespace-err.js:
  • fast/dom/HTMLLinkElement/prefetch-detached.html:
  • fast/dom/node-move-to-new-document-crash-main.html:
  • fast/forms/change-form-element-document-crash.html:
11:40 Changeset [203516] by cdumez@apple.com
  • 5 edits in trunk/Source/WebCore

Kill legacy valueToStringWithNullCheck() utility function
https://bugs.webkit.org/show_bug.cgi?id=159991

Reviewed by Sam Weinig.

Kill legacy valueToStringWithNullCheck() utility function. Treating null as
a null string is legacy behavior so drop this function so that people are
not tempted to use it. We should be using either:

  1. JSValue::toWTFString() for non-nullable DOMStrings
  2. valueToStringWithUndefinedOrNullCheck() for nullable DOMStrings
  3. valueToStringTreatingNullAsEmptyString() for strings with [TreatNullAs=EmptyString]

No new tests, no web-exposed behavior change.

  • bindings/js/JSDOMBinding.cpp:

(WebCore::valueToStringWithNullCheck): Deleted.

  • bindings/js/JSDOMBinding.h:
  • bindings/js/JSHTMLFrameElementCustom.cpp:

(WebCore::JSHTMLFrameElement::setLocation):

  • html/HTMLFrameElement.idl:
11:23 Changeset [203515] by ryanhaddad@apple.com
  • 2 edits in branches/safari-602-branch/LayoutTests

Merge r203506. rdar://problem/27353750

11:20 Changeset [203514] by zalan@apple.com
  • 2 edits in trunk/Source/WebCore

Do not keep invalid IOSurface in ImageBufferData.
https://bugs.webkit.org/show_bug.cgi?id=160005
<rdar://problem/27208636>

Reviewed by Simon Fraser.

When we fail to initialize the IOSurface for the accelerated context, we switch over to
the non-accelerated code path. Since ImageBufferData::surface is used to indicate whether
the graphics context is in accelerated mode, we need to reset it when the initialization fails.

Unable to create a test case.

  • platform/graphics/cg/ImageBufferCG.cpp:

(WebCore::ImageBuffer::ImageBuffer):

11:17 Changeset [203513] by bshafiei@apple.com
  • 4 edits
    1 add in branches/safari-602-branch

Merge r203508. rdar://problem/27392691

11:08 Changeset [203512] by ossy@webkit.org
  • 54 edits in trunk

Clarify testing mode names in run-jsc-stress-tests
https://bugs.webkit.org/show_bug.cgi?id=160021

Reviewed by Mark Lam.

Default should mean really default, not default with disabled FTL, renamed

  • runMozillaTestDefault to runMozillaTestNoFTL
  • runMozillaTestDefaultFTL to runMozillaTestDefault
  • runDefault to runNoFTL
  • runDefaultFTL to runDefault
  • runLayoutTestDefault to runLayoutTestNoFTL
  • runLayoutTestDefaultFTL to runLayoutTestDefault
  • runNoisyTestDefault to runNoisyTestNoFTL
  • runNoisyTestDefaultFTL to runNoisyTestDefault

Source/JavaScriptCore:

  • tests/mozilla/mozilla-tests.yaml:
  • tests/stress/lift-tdz-bypass-catch.js:
  • tests/stress/obscure-error-message-dont-crash.js:
  • tests/stress/shadow-chicken-disabled.js:

Tools:

  • Scripts/run-jsc-stress-tests:

LayoutTests:

  • js/regress/script-tests/DataView-custom-properties.js:
  • js/regress/script-tests/HashMap-put-get-iterate-keys.js:
  • js/regress/script-tests/HashMap-put-get-iterate.js:
  • js/regress/script-tests/HashMap-string-put-get-iterate.js:
  • js/regress/script-tests/array-nonarray-polymorhpic-access.js:
  • js/regress/script-tests/basic-set.js:
  • js/regress/script-tests/bug-153431.js:
  • js/regress/script-tests/destructuring-arguments.js:
  • js/regress/script-tests/destructuring-swap.js:
  • js/regress/script-tests/inline-arguments-local-escape.js:
  • js/regress/script-tests/method-on-number.js:
  • js/regress/script-tests/new-array-buffer-push.js:
  • js/regress/script-tests/new-array-push.js:
  • js/regress/script-tests/poly-stricteq.js:
  • js/regress/script-tests/polymorphic-array-call.js:
  • js/regress/script-tests/regexp-prototype-is-not-instance.js:
  • js/regress/script-tests/regexp-prototype-search-observable-side-effects.js:
  • js/regress/script-tests/regexp-prototype-search-observable-side-effects2.js:
  • js/regress/script-tests/regexp-prototype-split-observable-side-effects.js:
  • js/regress/script-tests/regexp-prototype-split-observable-side-effects2.js:
  • js/regress/script-tests/regexp-prototype-split-observable-side-effects3-flags.js:
  • js/regress/script-tests/regexp-prototype-split-observable-side-effects3-global.js:
  • js/regress/script-tests/regexp-prototype-split-observable-side-effects3-ignoreCase.js:
  • js/regress/script-tests/regexp-prototype-split-observable-side-effects3-multiline.js:
  • js/regress/script-tests/regexp-prototype-split-observable-side-effects3-sticky.js:
  • js/regress/script-tests/regexp-prototype-split-observable-side-effects3-unicode.js:
  • js/regress/script-tests/regexp-prototype-split-observable-side-effects4.js:
  • js/regress/script-tests/regexp-prototype-test-observable-side-effects.js:
  • js/regress/script-tests/regexp-prototype-test-observable-side-effects2.js:
  • js/regress/script-tests/string-equality.js:
  • js/regress/script-tests/string-prototype-search-observable-side-effects.js:
  • js/regress/script-tests/string-prototype-search-observable-side-effects2.js:
  • js/regress/script-tests/string-prototype-search-observable-side-effects3.js:
  • js/regress/script-tests/string-prototype-search-observable-side-effects4.js:
  • js/regress/script-tests/string-prototype-split-observable-side-effects.js:
  • js/regress/script-tests/string-prototype-split-observable-side-effects2.js:
  • js/regress/script-tests/string-prototype-split-observable-side-effects3-flags.js:
  • js/regress/script-tests/string-prototype-split-observable-side-effects3-global.js:
  • js/regress/script-tests/string-prototype-split-observable-side-effects3-ignoreCase.js:
  • js/regress/script-tests/string-prototype-split-observable-side-effects3-multiline.js:
  • js/regress/script-tests/string-prototype-split-observable-side-effects3-sticky.js:
  • js/regress/script-tests/string-prototype-split-observable-side-effects3-unicode.js:
  • js/regress/script-tests/string-prototype-split-observable-side-effects4.js:
  • js/regress/script-tests/string-repeat-arith.js:
  • js/regress/script-tests/string-sub.js:
  • js/slow-stress/script-tests/destructuring-arguments-length.js:
10:54 Changeset [203511] by cdumez@apple.com
  • 5 edits in trunk

playsInline IDL attribute has the wrong casing
https://bugs.webkit.org/show_bug.cgi?id=160029
<rdar://problem/27474031>

Reviewed by Jon Lee.

Source/WebCore:

Fix case from video.playsinline to video.playsInline in order to match
the specification:

It still reflects the "playsinline" content attribute though, as per
the specification:

No new tests, updated existing test.

  • html/HTMLVideoElement.idl:

LayoutTests:

Update test to use the correct case.

  • media/video-playsinline-expected.txt:
  • media/video-playsinline.html:
10:24 WebKitGTK/Gardening/Calendar edited by clopez@igalia.com
(diff)
10:23 WebKitGTK/Gardening/Calendar edited by clopez@igalia.com
(diff)
10:20 Changeset [203510] by cdumez@apple.com
  • 3 edits
    2 adds in trunk

Drop [TreatNullAs=EmptyString] from CanvasRenderingContext2D.globalCompositeOperation
https://bugs.webkit.org/show_bug.cgi?id=160026

Reviewed by Sam Weinig.

Source/WebCore:

Drop [TreatNullAs=EmptyString] from CanvasRenderingContext2D.globalCompositeOperation
attribute as it does not match the specification:

It does not change web-exposed behavior because assigning to "" or "null"
gets ignored as those are not valid operations.

Test: fast/canvas/context-globalCompositeOperation-null.html

  • html/canvas/CanvasRenderingContext2D.idl:

LayoutTests:

Add test coverage.

  • fast/canvas/context-globalCompositeOperation-null-expected.txt: Added.
  • fast/canvas/context-globalCompositeOperation-null.html: Added.
10:12 Changeset [203509] by clopez@igalia.com
  • 8 edits in trunk/LayoutTests

[GTK] Gardening: Layout tests expectations updates and test rebaselines.

Unreviewed.

  • TestExpectations: js/regress-139548.html is ~10x slower since r203142.
  • fast/mediastream/RTCPeerConnection-add-removeTrack-expected.txt: Rebaseline after r203333.
  • fast/mediastream/RTCPeerConnection-addIceCandidate-expected.txt: Rebaseline after r203333.
  • fast/mediastream/RTCPeerConnection-setLocalDescription-offer-expected.txt: Rebaseline after r203333.
  • fast/mediastream/RTCPeerConnection-setRemoteDescription-offer-expected.txt: Rebaseline after r203333.
  • platform/efl/TestExpectations: workers/bomb.html is slow.
  • platform/gtk/TestExpectations: workers/bomb.html is slow, media/media-source/media-source-small-gap.html timeouts and new failure on platform/gtk/scrollbars/main-frame-scrollbar-horizontal-wheel-scroll.html.
10:01 Changeset [203508] by commit-queue@webkit.org
  • 4 edits
    1 add in trunk

WebBackForwardList's currentIndex could get out of bounds when filtering items.
https://bugs.webkit.org/show_bug.cgi?id=159986

Source/WebKit2:

When generating a new BackForwardListState object, if we filter out multiple items in the list, the currentIndex could get
out of bounds.

Patch by Yongjun Zhang <yongjun_zhang@apple.com> on 2016-07-21
Reviewed by Dan Bernstein.

  • UIProcess/WebBackForwardList.cpp:

(WebKit::WebBackForwardList::backForwardListState): Make currentIndex point to the last item if it is out of bounds.

Tools:

Add a test to verify filtering out 2 items from a 3-item list will set the currentIndex
to 0.

Patch by Yongjun Zhang <yongjun_zhang@apple.com> on 2016-07-21
Reviewed by Dan Bernstein.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2/WKBackForwardList.mm: Added.

(-[WKBackForwardListTestNavigationDelegate webView:didFinishNavigation:]):
(TEST):

09:59 Changeset [203507] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit2

Web Automation: Allow JavaScript evaluation to return an InvalidElementState error
https://bugs.webkit.org/show_bug.cgi?id=160015
<rdar://problem/27434529>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-07-21
Reviewed by Brian Burg.

  • UIProcess/Automation/Automation.json:
  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction):

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

Update test expectations for rdar://problem/27353750.

  • platform/mac/TestExpectations:
09:05 Changeset [203505] by carlosgc@webkit.org
  • 3 edits in trunk/Source/WebCore

[GTK][Threaded Compositor] Overlay scrollbars shouldn't be a requirement of the threaded compositor
https://bugs.webkit.org/show_bug.cgi?id=160020

Reviewed by Michael Catanzaro.

It has been a requirement only because we didn't really know why frame scrollbars were not rendered when using
the threaded compositor. The reason is that RenderView doesn't use layers for FrameView scrollbars by default,
unless using overlay scrollbars. When using the threaded compositor we really need layers for the FrameView
scrollbars even when not using overlay scrollbars.

  • platform/gtk/ScrollbarThemeGtk.cpp:

(WebCore::ScrollbarThemeGtk::ScrollbarThemeGtk): Stop enforcing overlay scrollbars when threaded compositor is enabled.

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::shouldCompositeOverflowControls): Always use layers for scrollbars when
threaded compositor is enabled.

09:02 Changeset [203504] by carlosgc@webkit.org
  • 7 edits in trunk/Source/WebKit2

[GTK][Threaded Compositor] WTR generates fully white images for pixel tests most of the time
https://bugs.webkit.org/show_bug.cgi?id=160016

Reviewed by Žan Doberšek.

WTR sends a force repaint message to the web process before taking a snapshot of the web view. With the threaded
compositor, the UI process is notified about the force repaint callback before the contents have been actually
painted. We need to ensure that the contents are rendered before the UI process is notified.

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:

(WebKit::ThreadedCompositor::forceRepaint): Synchronously render the layer tree.

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewRenderAcceleratedCompositingResults): Always mark the redirected window surface as dirty before
rendering, since it can be modified by the web process at any time.

  • UIProcess/gtk/RedirectedXCompositeWindow.cpp:

(WebKit::XDamageNotifier::add):
(WebKit::RedirectedXCompositeWindow::RedirectedXCompositeWindow): Do not mark the surface as dirty on every
damage since the view will do it before rendering.

  • WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:

(WebKit::ThreadedCoordinatedLayerTreeHost::forceRepaint): Call ThreadedCompositor::forceRepaint().

  • WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:
09:01 Changeset [203503] by carlosgc@webkit.org
  • 2 edits in trunk/Source/WebCore

[Cairo] Fix a crash in fast/canvas/canvas-getImageData-invalid-result-buffer-crash.html
https://bugs.webkit.org/show_bug.cgi?id=160014

Reviewed by Michael Catanzaro.

In r202887 some null checks were added for JSArray::createUninitialized (and related) but not for the
ImageBuffer cairo implementation.

  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::getImageData): Return early if Uint8ClampedArray::createUninitialized() returns nullptr.

06:03 Changeset [203502] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[GTK] The GSTREAMER_GL path in MediaPlayerPrivateGStreamerBase::paintToTextureMapper() is missing a mutex lock
https://bugs.webkit.org/show_bug.cgi?id=160018

Patch by Miguel Gomez <magomez@igalia.com> on 2016-07-21
Reviewed by Philippe Normand.

Lock the video sample mutex while accessing it.

Covered by existent tests.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::paintToTextureMapper):

04:36 Changeset [203501] by jfernandez@igalia.com
  • 1 edit
    12 adds in trunk/LayoutTests

[css-grid] Handle min-content/max-content with orthogonal flows
https://bugs.webkit.org/show_bug.cgi?id=159294

Reviewed by Darin Adler.

New layout tests to evaluate basic positioning and sizing using orthogonal flows.

  • fast/css-grid-layout/grid-item-positioning-with-orthogonal-flows-expected.txt: Added.
  • fast/css-grid-layout/grid-item-positioning-with-orthogonal-flows.html: Added.
  • fast/css-grid-layout/grid-item-sizing-with-orthogonal-flows-expected.txt: Added.
  • fast/css-grid-layout/grid-item-sizing-with-orthogonal-flows.html: Added.
  • fast/css-grid-layout/grid-item-spanning-and-orthogonal-flows-expected.txt: Added.
  • fast/css-grid-layout/grid-item-spanning-and-orthogonal-flows.html: Added.
  • fast/css-grid-layout/grid-track-sizing-with-orthogonal-flows-expected.txt: Added.
  • fast/css-grid-layout/grid-track-sizing-with-orthogonal-flows.html: Added.
  • fast/css-grid-layout/grid-track-sizing-with-percentages-and-orthogonal-flows-expected.txt: Added.
  • fast/css-grid-layout/grid-track-sizing-with-percentages-and-orthogonal-flows.html: Added.
00:35 Changeset [203500] by carlosgc@webkit.org
  • 3 edits in trunk/Source/WebKit2

[GTK] White page when loaded tab is visited until it's hovered when AC mode is always on
https://bugs.webkit.org/show_bug.cgi?id=159512

Reviewed by Michael Catanzaro.

The redirected window is always mapped, but offscreen, to ensure that the web process can always render
there. When the web process renders something into the offscreen window, we receive a damage event in the UI
process and queue a redraw of the web view. However, when the web view is not mapped, even if we still receive
the damage events, the web view redraws are ignored until the view is mapped again (gtk_widget_queue_draw()
returns early when the widget is not visible). The redirected window updates its pixmap on demand when the
surface is requested, which happens when the web view draws its contents. So when the web view becames visible,
the redirected window creates a new pixmap and surface (the first time or if the web view was resized), that we
initialize to avoid artifacts when the web process hasn't render anything yet. That initialization is actually
overwriting anything rendered into the redirected window while the view was unmapped. That's why see white pages
the first time, and previous contents after a resize, and we don't see the actual contents until the web process
renders again and we reuse the existing pixmap. The white page didn't happen for tabs with accelerated content,
because in those cases the web process was rendering a new frame every 16ms, but instead there was a flickering
effect due to the current frame being overwritten when the view is mapped until the next frame.
So, instead of lazily create and initialize the redirected window pixmap and surface, we should always create
the new pixmap as soon as the window is created or resized (and not empty) This fixes the issues but also makes
resizing the window a bit smoother when AC mode is enabled.

  • UIProcess/gtk/RedirectedXCompositeWindow.cpp:

(WebKit::RedirectedXCompositeWindow::RedirectedXCompositeWindow): Create the pixmap and surface if the window is
not empty.
(WebKit::RedirectedXCompositeWindow::resize): Ditto.
(WebKit::RedirectedXCompositeWindow::createNewPixampAndPixampSurface): Create the pixmap and surface.
(WebKit::RedirectedXCompositeWindow::surface): Deleted.

  • UIProcess/gtk/RedirectedXCompositeWindow.h:

(WebKit::RedirectedXCompositeWindow::surface):

00:33 Changeset [203499] by utatane.tea@gmail.com
  • 23 edits
    2 copies
    9 adds in trunk/Source/JavaScriptCore

[ES7] Introduce exponentiation expression
https://bugs.webkit.org/show_bug.cgi?id=159969

Reviewed by Saam Barati.

This patch implements the exponentiation expression, e.g. x ** y.
The exponentiation expression is introduced in ECMA262 2016 and ECMA262 2016
is already released. So this is not the draft spec.

The exponentiation expression has 2 interesting points.

  1. Right associative

To follow the Math expression, operator is right associative.
When we execute x ** y ** z, this is handled as x ** (y ** z), not (x ** y) ** z.
This patch introduces the right associativity to the binary operator and handles it
in the operator precedence parser in Parser.cpp.

  1. LHS of the exponentiation expression is UpdateExpression

ExponentiationExpression[Yield]:

UnaryExpression?Yield
UpdateExpression?Yield ExponentiationExpression?Yield

As we can see, the left hand side of the ExponentiationExpression is UpdateExpression, not UnaryExpression.
It means that +x ** y becomes a syntax error. This is intentional. Without superscript in JS,
-x**y is confusing between -(x ** y) and (-x) ** y. So ECMA262 intentionally avoids UnaryExpression here.
If we need to use a negated value, we need to write parentheses explicitly e.g. (-x) ** y.
In this patch, we ensure that the left hand side is not an unary expression by checking an operator in
parseBinaryExpression. This works since ** has the highest operator precedence in the binary operators.

We introduce a new bytecode, op_pow. That simply works as similar as the other binary operators.
And it is converted to ArithPow in DFG and handled in DFG and FTL.
In this patch, we take the approach just introducing a new bytecode instead of calling Math.pow.
This is because we would like to execute ToNumber in the caller side, not in the callee (Math.pow) side.
And we don't want to compile into the following.

lhsNumber = to_number (lhs)
rhsNumber = to_number (rhs)
call Math.pow(lhsNumber, rhsNumber)

We ensure that this patch passes all the test262 tests related to the exponentiation expression.

The only sensitive part to the performance is the parser changes.
So we measured the code-load performance and it is neutral in my x64 Linux box (hanayamata).

Collected 30 samples per benchmark/VM, with 30 VM invocations per benchmark. Emitted a call to
gc() between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used
the jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark
execution times with 95% confidence intervals in milliseconds.

baseline patched

closure 0.60499+-0.00250 0.60180+-0.00244
jquery 7.89175+-0.02433 ? 7.91287+-0.04759 ?

<geometric> 2.18499+-0.00523 2.18207+-0.00689 might be 1.0013x faster

  • bytecode/BytecodeList.json:
  • bytecode/BytecodeUseDef.h:

(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpBytecode):

  • bytecompiler/NodesCodegen.cpp:

(JSC::emitReadModifyAssignment):

  • dfg/DFGByteCodeParser.cpp:

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

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):

  • jit/JIT.h:
  • jit/JITArithmetic.cpp:

(JSC::JIT::emit_op_pow):

  • llint/LowLevelInterpreter.asm:
  • parser/ASTBuilder.h:

(JSC::ASTBuilder::operatorStackShouldReduce):
(JSC::ASTBuilder::makePowNode):
(JSC::ASTBuilder::makeMultNode):
(JSC::ASTBuilder::makeDivNode):
(JSC::ASTBuilder::makeModNode):
(JSC::ASTBuilder::makeSubNode):
(JSC::ASTBuilder::makeBinaryNode):
(JSC::ASTBuilder::operatorStackHasHigherPrecedence): Deleted.

  • parser/Lexer.cpp:

(JSC::Lexer<T>::lex):

  • parser/NodeConstructors.h:

(JSC::PowNode::PowNode):

  • parser/Nodes.h:
  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseAssignmentExpression):
(JSC::isUnaryOpExcludingUpdateOp):
(JSC::Parser<LexerType>::parseBinaryExpression):
(JSC::isUnaryOp): Deleted.

  • parser/ParserTokens.h:

(JSC::isUpdateOp):
(JSC::isUnaryOp):

  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::operatorStackPop):

  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/CommonSlowPaths.h:
  • tests/stress/pow-basics.js: Added.

(valuesAreClose):
(mathPowDoubleDouble1):
(mathPowDoubleInt1):
(test1):
(mathPowDoubleDouble2):
(mathPowDoubleInt2):
(test2):
(mathPowDoubleDouble3):
(mathPowDoubleInt3):
(test3):
(mathPowDoubleDouble4):
(mathPowDoubleInt4):
(test4):
(mathPowDoubleDouble5):
(mathPowDoubleInt5):
(test5):
(mathPowDoubleDouble6):
(mathPowDoubleInt6):
(test6):
(mathPowDoubleDouble7):
(mathPowDoubleInt7):
(test7):
(mathPowDoubleDouble8):
(mathPowDoubleInt8):
(test8):
(mathPowDoubleDouble9):
(mathPowDoubleInt9):
(test9):
(mathPowDoubleDouble10):
(mathPowDoubleInt10):
(test10):
(mathPowDoubleDouble11):
(mathPowDoubleInt11):
(test11):

  • tests/stress/pow-coherency.js: Added.

(pow42):
(build42AsDouble.opaqueAdd):
(build42AsDouble):
(powDouble42):
(clobber):
(pow42NoConstantFolding):
(powDouble42NoConstantFolding):

  • tests/stress/pow-evaluation-order.js: Added.

(shouldBe):
(throw.new.Error):

  • tests/stress/pow-expects-update-expression-on-lhs.js: Added.

(testSyntax):
(testSyntaxError):
(throw.new.Error):
(let.token.of.tokens.testSyntax.pow):
(testSyntax.pow):

  • tests/stress/pow-integer-exponent-fastpath.js: Added.

(valuesAreClose):
(mathPowDoubleDoubleTestExponentFifty):
(mathPowDoubleIntTestExponentFifty):
(testExponentFifty):
(mathPowDoubleDoubleTestExponentTenThousands):
(mathPowDoubleIntTestExponentTenThousands):
(testExponentTenThousands):

  • tests/stress/pow-nan-behaviors.js: Added.

(testIntegerBaseWithNaNExponentStatic):
(mathPowIntegerBaseWithNaNExponentDynamic):
(testIntegerBaseWithNaNExponentDynamic):
(testFloatingPointBaseWithNaNExponentStatic):
(mathPowFloatingPointBaseWithNaNExponentDynamic):
(testFloatingPointBaseWithNaNExponentDynamic):
(testNaNBaseStatic):
(mathPowNaNBaseDynamic1):
(mathPowNaNBaseDynamic2):
(mathPowNaNBaseDynamic3):
(mathPowNaNBaseDynamic4):
(testNaNBaseDynamic):
(infiniteExponentsStatic):
(mathPowInfiniteExponentsDynamic1):
(mathPowInfiniteExponentsDynamic2):
(mathPowInfiniteExponentsDynamic3):
(mathPowInfiniteExponentsDynamic4):
(infiniteExponentsDynamic):

  • tests/stress/pow-simple.js: Added.

(shouldBe):
(throw.new.Error):

  • tests/stress/pow-stable-results.js: Added.

(opaquePow):
(isIdentical):

  • tests/stress/pow-to-number-should-be-executed-in-code-side.js: Added.

(shouldBe):
(throw.new.Error):

  • tests/stress/pow-with-constants.js: Added.

(exponentIsZero):
(testExponentIsZero):
(exponentIsOne):
(testExponentIsOne):
(powUsedAsSqrt):
(testPowUsedAsSqrt):
(powUsedAsOneOverSqrt):
(testPowUsedAsOneOverSqrt):
(powUsedAsSquare):
(testPowUsedAsSquare):
(intIntConstantsSmallNumbers):
(intIntConstantsLargeNumbers):
(intIntSmallConstants):
(intDoubleConstants):
(doubleDoubleConstants):
(doubleIntConstants):
(testBaseAndExponentConstantLiterals):
(exponentIsIntegerConstant):
(testExponentIsIntegerConstant):
(exponentIsDoubleConstant):
(testExponentIsDoubleConstant):
(exponentIsInfinityConstant):
(testExponentIsInfinityConstant):
(exponentIsNegativeInfinityConstant):
(testExponentIsNegativeInfinityConstant):

  • tests/stress/pow-with-never-NaN-exponent.js: Added.

(exponentIsNonNanDouble1):
(exponentIsNonNanDouble2):
(testExponentIsDoubleConstant):

  • tests/test262.yaml:
00:29 Changeset [203498] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebCore

[Threaded Compositor] Flickering when zooming in/out in maps.google.com
https://bugs.webkit.org/show_bug.cgi?id=154069

Patch by Miguel Gomez <magomez@igalia.com> on 2016-07-21
Reviewed by Carlos Garcia Campos.

Add a new extra buffer to GraphicsContext3D when using the Threaded Compositor,
so it doesn't have to reuse the buffers that are still waiting for composition.

Covered by existing tests.

  • platform/graphics/GraphicsContext3D.h:

Add a new texture to use for the rendering. Remove the compositor fbo we were using.

  • platform/graphics/cairo/GraphicsContext3DCairo.cpp:

(WebCore::GraphicsContext3D::GraphicsContext3D):
Initialize the new texture and remove the previous fbo related code.
(WebCore::GraphicsContext3D::~GraphicsContext3D):
Properly destroy the new texture and remove the previous fbo related code.

  • platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:

(WebCore::GraphicsContext3D::reshapeFBOs):
Allocate the new texture and remove the previous fbo allocation.

  • platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:

(WebCore::GraphicsContext3D::prepareTexture):
Use a single fbo with three textures instead of two fbos with a texture each.
Rotate the three textures usage so:

  • m_texture becomes m_compositorTexture to be pushed to the compositor.
  • m_intermediateTexture becomes m_texture to receive the next rendering.
  • m_compositorTexture becomes m_intermediateTexture.

And add a glFlush() to ensure that the gl commands are sent to the pipeline.

  • platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp:

(WebCore::GraphicsContext3D::reshapeFBOs):
Allocate the new texture.

00:25 Changeset [203497] by carlosgc@webkit.org
  • 7 edits in trunk/Source

[GTK][Threaded Compositor] Web view background colors don't work
https://bugs.webkit.org/show_bug.cgi?id=159465

Reviewed by Michael Catanzaro.

Source/WebCore:

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::createPrimaryGraphicsLayer): Initialize frame view layer opacity for platforms not
using the tiled cache layer.

Source/WebKit2:

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:

(WebKit::ThreadedCompositor::setDrawsBackground): Set m_drawsBackground in compositing thread and schedule a
layer flush.
(WebKit::ThreadedCompositor::renderLayerTree): Clear the area when not rendering backgrounds.

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
  • WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:

(WebKit::ThreadedCoordinatedLayerTreeHost::pageBackgroundTransparencyChanged): Notify the compositor.

  • WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:
00:18 Changeset [203496] by carlosgc@webkit.org
  • 7 edits in trunk

[GTK] Web view background colors don't work in accelerated compositing mode
https://bugs.webkit.org/show_bug.cgi?id=159455

Reviewed by Michael Catanzaro.

Source/WebKit2:

In non AC mode it's the drawing area backing store the one drawing the background, and the web process just
renders into a transparent bitmap. In AC mode we need to make the redirected window pixmap transparent for the
web process to render there, and let the web view fill the background color before rendering the redirected
window pixmap on top. To be able to make the redirected window surface transparent, we need to ensure the parent
window has an RGBA visual, even when setting a fully opaque background, because we still need the web process
to render on the transparent xwindow.

  • UIProcess/API/gtk/WebKitWebView.cpp: Update documentation of webkit_web_view_set_background_color() since now

it's required to set the RGBA visual even for opaque colors in case AC mode is enabled.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewRenderAcceleratedCompositingResults): When a background color has been set, fill it before
rendering the redirected window surface.

  • UIProcess/gtk/RedirectedXCompositeWindow.cpp:

(WebKit::RedirectedXCompositeWindow::RedirectedXCompositeWindow): Mark the surface as dirty after every damage
event, since the web process has modified it.
(WebKit::RedirectedXCompositeWindow::surface): Initialize the surface after creating it, to avoid flickering and
rendering artifacts when waiting for the first damage event from the web process.

  • WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp:

(WebKit::LayerTreeHostGtk::compositeLayersToContext): Use a fully transparent color to clear the context when the page
is resized or when a view background color has been set.

Tools:

Set always RGBA visual to the view widget when setting a background color.

  • MiniBrowser/gtk/BrowserWindow.c:

(browser_window_set_background_color):

00:04 Changeset [203495] by carlosgc@webkit.org
  • 4 edits in trunk/Source/WebKit2

[GTK] Avoid the redirected window resize when the view is realized in AC mode
https://bugs.webkit.org/show_bug.cgi?id=159463

Reviewed by Michael Catanzaro.

We are always creating the redirected window at 1x1 and then resizing it if we are in AC mode. When the view is
realized and AC mode is already enabled, which happens for example when AC mode is forced, or when the threaded
compositor is enabled, we could just pass the initial size to the redirected window constructor to create the
XWindow at the right size.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseResizeRedirectedWindow): We no longer need to pass the device scale factor, since the
RedirectedXCompositeWindow already knows it.
(webkitWebViewBaseRealize): Pass the WebPageProxy and an initial size to the RedirectedXCompositeWindow
constructor instead of the parent GdkWindow. If AC mode is disabled, the initial size will be empty. With the
WebPageProxy the redirected window has access to the device scale factor and view widget to get the parent
GdkWindow.
(deviceScaleFactorChanged): Resize the redirected window when device scale factor changes.

  • UIProcess/gtk/RedirectedXCompositeWindow.cpp:

(WebKit::RedirectedXCompositeWindow::create):
(WebKit::RedirectedXCompositeWindow::RedirectedXCompositeWindow):
(WebKit::RedirectedXCompositeWindow::resize):
(WebKit::RedirectedXCompositeWindow::surface):
(WebKit::RedirectedXCompositeWindow::~RedirectedXCompositeWindow):

  • UIProcess/gtk/RedirectedXCompositeWindow.h:

07/20/16:

23:51 Changeset [203494] by commit-queue@webkit.org
  • 11 edits
    1 add in trunk

[XHR] Cache response JS object in case of arraybuffer and blob response types
https://bugs.webkit.org/show_bug.cgi?id=128903

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

Source/WebCore:

Covered by existing and modified tests.

Making response getter a JS builtin that caches response in @response private slot.
Handling invalidation of cached response with @responseCacheIsValid new private method.
Handling creation of cached response with @retrieveResponse new private method which reuses most of
JSXMLHttpRequest::response previous code.

Caching of responses is activated whenever load ended without any error for blob and arraybuffer response types.

Caching of response for document is also activated in case the response getter is used but not if responseXML getter is used.

  • CMakeLists.txt: Adding XMLHttpRequest.js.
  • DerivedSources.make: Ditto.
  • bindings/js/JSXMLHttpRequestCustom.cpp:

(WebCore::JSXMLHttpRequest::retrieveResponse): Implements creation of to-be-cached response.
(WebCore::JSXMLHttpRequest::response): Deleted.

  • bindings/js/WebCoreBuiltinNames.h: Adding new private names.
  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::didCacheResponse): Renamed from didCacheResponseJSON as all response types are now cached.
(WebCore::XMLHttpRequest::didCacheResponseJSON): Deleted.

  • xml/XMLHttpRequest.h:
  • xml/XMLHttpRequest.idl:

LayoutTests:

  • http/tests/xmlhttprequest/onabort-response-getters-expected.txt:
  • http/tests/xmlhttprequest/onabort-response-getters.html:
23:41 Changeset [203493] by carlosgc@webkit.org
  • 4 edits in trunk/Source/WebKit2

[GTK][Threaded Compositor] Web Process crash when the page is closed before the web view is realized
https://bugs.webkit.org/show_bug.cgi?id=159918

Reviewed by Michael Catanzaro.

When the web view is unrealized, we send a sync message to the web process to destroy the native surface handle
for compositing, and then we actually destroy the redirected window. But if the page is closed explicitly before
the web view is unrealized, the drawing area proxy is destroyed so that when the web view is unrealized we can't
notify the web process that keeps trying to render to a now deleted window handle. That produces a BadDrawable
X error and the web process crashes.

  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::pageClosed): Call webkitWebViewBasePageClosed().

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBasePageClosed): If the web view is still realized, destroy the native surface handle and the
redirected window.

  • UIProcess/API/gtk/WebKitWebViewBasePrivate.h: Add webkitWebViewBasePageClosed().
23:38 Changeset [203492] by fred.wang@free.fr
  • 1 edit
    10 adds in trunk/Websites/webkit.org

Unreviewed, new demo files for an up-coming blog post.

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

  • demos/mathml/demo2016/LICENSE-amiri.txt: Added.
  • demos/mathml/demo2016/LICENSE-latinmodern-math.txt: Added.
  • demos/mathml/demo2016/LICENSE-libertinusmath.txt: Added.
  • demos/mathml/demo2016/README.txt: Added.
  • demos/mathml/demo2016/amiri-regular.woff: Added.
  • demos/mathml/demo2016/index.html: Added.
  • demos/mathml/demo2016/latinmodern-math.woff: Added.
  • demos/mathml/demo2016/libertinusmath-regular.woff: Added.
  • demos/mathml/demo2016/webfonts.css: Added.

(@namespace url('http://www.w3.org/1999/xhtml');):
(@font-face):
(m|math, m|mtext):
(m|math.libertinus):
(m|math.arabic):

23:23 Changeset [203491] by fpizlo@apple.com
  • 14 edits
    14 adds in trunk

Switching on symbols should be fast
https://bugs.webkit.org/show_bug.cgi?id=158892

Reviewed by Keith Miller.
Source/JavaScriptCore:


This does two things: fixes some goofs in our lowering of symbol equality and adds a new phase
to B3 to infer switch statements from linear chains of branches.

This changes how we compile equality to Symbols to constant-fold the load of the Symbol's UID.
This is necessary for making switches on Symbols inferrable. This also gives us the ability to
efficiently compile strict equality comparisons of SymbolUse and UntypedUse.

This adds a new phase to B3, which finds chains of branches that test for (in)equality on the
same value and constants, and turns them into a Switch. This can turn O(n) code into
O(log n) code, or even O(1) code if the switch cases are dense.

This can make a big difference in JS. Say you write a switch in which the case statements are
variable resolutions. The bytecode generator cannot use a bytecode switch in this case, since
we're required to evaluate the resolutions in order. But in DFG IR, we will often turn those
variable resolutions into constants, since we do that for any immutable singleton. This means
that B3 will see a chain of Branches: the else case of one Branch will point to a basic block
that does nothing but Branch on equality on the same value as the first Branch.

The inference algorithm is quite simple. The basic building block is the ability to summarize
a block's switch behavior. For a block that ends in a switch, this is just the collection of
switch cases. For a block that ends in a branch, we recognize Branch(Equal(value, const)),
Branch(NotEqual(value, const)), and Branch(value). Each of these are summarized as if they
were one-case switches. We infer a new switch if both some block and its sole predecessor
can be described as switches on the same value, nothing shady is going on (like loops), and
the block in question does no work other than this switch. In that case, the block is killed
and its cases (which we get from the summary) are added to the predecessor's switch. This
algorithm runs to fixpoint.

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

(JSC::B3::generateToAir):

  • b3/B3InferSwitches.cpp: Added.

(JSC::B3::inferSwitches):

  • b3/B3InferSwitches.h: Added.
  • b3/B3Procedure.h:

(JSC::B3::Procedure::cfg):

  • b3/B3ReduceStrength.cpp:
  • b3/B3Value.cpp:

(JSC::B3::Value::performSubstitution):
(JSC::B3::Value::isFree):
(JSC::B3::Value::dumpMeta):

  • b3/B3Value.h:
  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCheckIdent):
(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
(JSC::FTL::DFG::LowerDFGToB3::lowSymbol):
(JSC::FTL::DFG::LowerDFGToB3::lowSymbolUID):
(JSC::FTL::DFG::LowerDFGToB3::lowNonNullObject):

LayoutTests:

  • js/regress/bigswitch-indirect-expected.txt: Added.
  • js/regress/bigswitch-indirect-symbol-expected.txt: Added.
  • js/regress/bigswitch-indirect-symbol-or-undefined-expected.txt: Added.
  • js/regress/bigswitch-indirect-symbol-or-undefined.html: Added.
  • js/regress/bigswitch-indirect-symbol.html: Added.
  • js/regress/bigswitch-indirect.html: Added.
  • js/regress/implicit-bigswitch-indirect-symbol-expected.txt: Added.
  • js/regress/implicit-bigswitch-indirect-symbol.html: Added.
  • js/regress/script-tests/bigswitch-indirect-symbol-or-undefined.js: Added.

(foo):

  • js/regress/script-tests/bigswitch-indirect-symbol.js: Added.

(foo):

  • js/regress/script-tests/bigswitch-indirect.js: Added.

(foo):

  • js/regress/script-tests/implicit-bigswitch-indirect-symbol.js: Added.

(foo):

23:12 Changeset [203490] by commit-queue@webkit.org
  • 14 edits in trunk/Source/WebCore

Remove crossOriginRequestPolicy from ThreadableLoaderOptions
https://bugs.webkit.org/show_bug.cgi?id=159417

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

No observable change.

  • Modules/fetch/FetchLoader.cpp:

(WebCore::FetchLoader::start): DenyCrossOriginRequests -> FetchOptions::Mode::SameOrigin.

  • fileapi/FileReaderLoader.cpp:

(WebCore::FileReaderLoader::start): DenyCrossOriginRequests -> FetchOptions::Mode::SameOrigin.

  • inspector/InspectorNetworkAgent.cpp:

(WebCore::InspectorNetworkAgent::loadResource): AllowCrossOriginRequests -> FetchOptions::Mode::NoCors.

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::DocumentThreadableLoader): Ditto.
(WebCore::DocumentThreadableLoader::makeCrossOriginAccessRequest): UseAccessControl -> FetchOptions::Mode::Cors.
(WebCore::DocumentThreadableLoader::redirectReceived): Ditto.
(WebCore::DocumentThreadableLoader::didReceiveResponse): Ditto.
(WebCore::DocumentThreadableLoader::loadRequest): Use NoCors as option passed to ResourceLoader. This allows
desactivating ResourceLoader CORS checks as they are done in DocumentThreadableLoader right now. In the future,
these checks should be moved to ResourceLoader and DocumentThreadableLoader should directly pass the fetch mode
option.
(WebCore::DocumentThreadableLoader::isAllowedRedirect): AllowCrossOriginRequests -> FetchOptions::Mode::NoCors.

  • loader/ThreadableLoader.cpp:

(WebCore::ThreadableLoaderOptions::ThreadableLoaderOptions): Removing CrossOriginRequestPolicy.

  • loader/ThreadableLoader.h: Ditto.
  • loader/WorkerThreadableLoader.cpp:

(WebCore::LoaderTaskOptions::LoaderTaskOptions): Ditto.

  • page/EventSource.cpp:

(WebCore::EventSource::connect): UseAccessControl -> FetchOptions::Mode::Cors.

  • workers/Worker.cpp:

(WebCore::Worker::create): DenyCrossOriginRequests -> FetchOptions::Mode::SameOrigin.

  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::importScripts): AllowCrossOriginRequests -> FetchOptions::Mode::NoCors.

  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::loadSynchronously):
(WebCore::WorkerScriptLoader::loadAsynchronously):

  • workers/WorkerScriptLoader.h:
  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::createRequest):

23:09 Changeset [203489] by commit-queue@webkit.org
  • 4 edits in trunk/Tools

Bots should run built-ins generator tests
https://bugs.webkit.org/show_bug.cgi?id=159971

Patch by Youenn Fablet <youenn@apple.com> on 2016-07-20
Reviewed by Alexey Proskuryakov.

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

(RunBuiltinsTests): New step to run built-in generator tests.
(TestFactory.init): Adding an additional step for bultin generator tests.

  • BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py: Rebasing expectations.
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotIteration.js: Adding additional step for proper display.
22:24 Changeset [203488] by fpizlo@apple.com
  • 9 edits
    1 add in trunk/Source/JavaScriptCore

FTL snippet generators should be able to request a different register for output and input
https://bugs.webkit.org/show_bug.cgi?id=160010
rdar://problem/27439330

Reviewed by Saam Barati.

The BitOr and BitXor snippet generators have problems if the register for the right input is
the same as the register for the result. We could fix those generators, but I'm not convinced
that the other snippet generators don't have this bug. So, the approach that this patch takes
is to teach the FTL to request that B3 to use a different register for the result than for
any input to the snippet patchpoint.

Air already has the ability to let any instruction do an EarlyDef, which means exactly this.
But B3 did not expose this via ValueRep. This patch exposes this in ValueRep as
SomeEarlyRegister. That's most of the change.

This adds a testb3 test for SomeEarlyRegister and a regression test for this particular
problem. The regression test failed on trunk JSC before this.

  • b3/B3LowerToAir.cpp:

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

  • b3/B3PatchpointSpecial.cpp:

(JSC::B3::PatchpointSpecial::forEachArg):
(JSC::B3::PatchpointSpecial::admitsStack):

  • b3/B3StackmapSpecial.cpp:

(JSC::B3::StackmapSpecial::forEachArgImpl):
(JSC::B3::StackmapSpecial::isArgValidForRep):

  • b3/B3Validate.cpp:
  • b3/B3ValueRep.cpp:

(JSC::B3::ValueRep::addUsedRegistersTo):
(JSC::B3::ValueRep::dump):
(WTF::printInternal):

  • b3/B3ValueRep.h:

(JSC::B3::ValueRep::ValueRep):
(JSC::B3::ValueRep::reg):
(JSC::B3::ValueRep::isAny):
(JSC::B3::ValueRep::isReg):
(JSC::B3::ValueRep::isSomeRegister): Deleted.

  • b3/testb3.cpp:
  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::emitBinarySnippet):
(JSC::FTL::DFG::LowerDFGToB3::emitBinaryBitOpSnippet):
(JSC::FTL::DFG::LowerDFGToB3::emitRightShiftSnippet):

  • tests/stress/ftl-bit-xor-right-result-interference.js: Added.
20:30 Changeset [203487] by cdumez@apple.com
  • 5 edits
    2 adds in trunk

Fix null handling of several Document attributes
https://bugs.webkit.org/show_bug.cgi?id=159997

Reviewed by Ryosuke Niwa.

Source/WebCore:

Fix null handling of the following Document attributes: title, cookie
and domain.

In WebKit, they were all marked as [TreatNullAs=EmptyString], which
does not match the specification:

Details for each attribute:

  • title: null is now treated as the string "null", thus setting the document title to "null". This matches Firefox and Chrome.
  • cookie: adds a "null" cookie instead of being a no-op. This matches

both Firefox and Chrome.

  • domain: Calls setDomain(String("null")) instead of

setDomain(String()). This throws an exception because "null"
is not a suffix of the effective domain name. The behavior
is the same in Firefox and Chrome. Previously, we were
already throwing an exception since setting the domain to
the empty string throws, as per the specification.

Test: http/testsdom/document-attributes-null-handling.html

  • dom/Document.idl:

LayoutTests:

Add test coverage.

  • http/tests/dom/document-attributes-null-handling-expected.txt: Added.
  • http/tests/dom/document-attributes-null-handling.html: Added.
  • fast/dom/document-attribute-js-null-expected.txt:
  • fast/dom/document-attribute-js-null.html:
20:25 Changeset [203486] by rniwa@webkit.org
  • 5 edits in trunk/Websites/perf.webkit.org

Perf dashboard always re-generate measurement set JSON
https://bugs.webkit.org/show_bug.cgi?id=159951

Reviewed by Chris Dumez.

The bug was caused by manifest.json reporting the last modified date of a measurement set in floating point,
and a measurement set JSON reporting it as an integer. Fixed the bug by always using an integer.

  • public/api/measurement-set.php:

(main): Return 404 when the results is empty.
(MeasurementSetFetcher::execute_query): Use "extract(epoch from commit_time)" like ManifestGenerator to improve
the generation speed. This is ~10% runtime improvement.
(MeasurementSetFetcher::format_map): Updated to reflect the above change.
(MeasurementSetFetcher::parse_revisions_array): Ditto.

  • public/include/manifest.php:

(ManifestGenerator::platforms): Fixed the bug by coercing lastModified to integer (instead of float).

  • server-tests/api-measurement-set-tests.js: Added a test case for returning empty results, and a test case for

making sure lastModified dates in manifest.json and measurement sets match.

  • tools/js/remote.js:

(RemoteAPI.prototype.sendHttpRequest): Reject the promise when HTTP status code is not 200.

19:09 Changeset [203485] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Revert temporary fix r203417
https://bugs.webkit.org/show_bug.cgi?id=160001

Reviewed by Alexey Proskuryakov.

  • EWSTools/start-queue-mac.sh: Revert the temporary fix.
17:45 Changeset [203484] by commit-queue@webkit.org
  • 23 edits
    2 adds in trunk

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

many iOS-simulator tests are failing (Requested by litherum on
#webkit).

Reverted changeset:

"[iPhone] Playing a video on tudou.com plays only sound, no
video"
https://bugs.webkit.org/show_bug.cgi?id=159967
http://trac.webkit.org/changeset/203471

17:36 Changeset [203483] by simon.fraser@apple.com
  • 2 edits in trunk/Source/WebKit2

REGRESSION (r203189): Webpage snapshots are partially or fully blank when edge swiping back
https://bugs.webkit.org/show_bug.cgi?id=160000
rdar://problem/27455589

Reviewed by Zalan Bujtas.

r203189 triggered a call to -_updateContentRectsWithState: in the middle of a swipe,
during which we'd compute the visible rect of the view as having zero width, causing us
to not create tiles.

-_navigationGestureDidBegin already snapshots the visibleContentRect in _frozenVisibleContentRect,
but -_visibleContentRect then clipped that with ancestor views, causing the issue.

Fix by having -_visibleContentRect just return _frozenVisibleContentRect if we have one.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _visibleContentRect]):

17:23 Changeset [203482] by rniwa@webkit.org
  • 3 edits in trunk/Source/WebCore

iOS: Cannot paste images in RTF content
https://bugs.webkit.org/show_bug.cgi?id=159964
<rdar://problem/27442806>

Reviewed by Enrica Casucci.

The bug was caused by setDefersLoading(true) not deferring image loading for the parsed fragment.
Worked around this bug by disabling image loading while parsing the document fragment.

  • editing/ios/EditorIOS.mm:

(WebCore::Editor::createFragmentAndAddResources):

17:15 Changeset [203481] by beidson@apple.com
  • 4 edits in trunk/Source/WebCore

Address a small FIXME in IDB code.
https://bugs.webkit.org/show_bug.cgi?id=159999

Reviewed by Andy Estes.

No new tests (No behavior change).

  • Modules/indexeddb/IDBRequest.cpp:

(WebCore::IDBRequest::IDBRequest):

  • Modules/indexeddb/shared/IDBResourceIdentifier.cpp:

(WebCore::IDBResourceIdentifier::IDBResourceIdentifier): Deleted.

  • Modules/indexeddb/shared/IDBResourceIdentifier.h:
16:28 Changeset [203480] by beidson@apple.com
  • 7 edits in trunk/Source/WebCore

Remove some "modernFoo"s from IndexedDB code.
https://bugs.webkit.org/show_bug.cgi?id=159985

Reviewed by Andy Estes.

No new tests (No known behavior change).

  • Modules/indexeddb/IDBCursor.cpp:

(WebCore::IDBCursor::IDBCursor):
(WebCore::IDBCursor::~IDBCursor):
(WebCore::IDBCursor::sourcesDeleted):
(WebCore::IDBCursor::effectiveObjectStore):
(WebCore::IDBCursor::transaction):
(WebCore::IDBCursor::direction):
(WebCore::IDBCursor::update):
(WebCore::IDBCursor::advance):
(WebCore::IDBCursor::continueFunction):
(WebCore::IDBCursor::uncheckedIterateCursor):
(WebCore::IDBCursor::deleteFunction):
(WebCore::IDBCursor::setGetResult):

  • Modules/indexeddb/IDBIndex.cpp:

(WebCore::IDBIndex::IDBIndex):
(WebCore::IDBIndex::~IDBIndex):
(WebCore::IDBIndex::hasPendingActivity):
(WebCore::IDBIndex::name):
(WebCore::IDBIndex::objectStore):
(WebCore::IDBIndex::keyPath):
(WebCore::IDBIndex::unique):
(WebCore::IDBIndex::multiEntry):
(WebCore::IDBIndex::openCursor):
(WebCore::IDBIndex::doCount):
(WebCore::IDBIndex::openKeyCursor):
(WebCore::IDBIndex::doGet):
(WebCore::IDBIndex::doGetKey):
(WebCore::IDBIndex::markAsDeleted):

  • Modules/indexeddb/IDBIndex.h:
  • Modules/indexeddb/IDBObjectStore.cpp:

(WebCore::IDBObjectStore::transaction):
(WebCore::IDBObjectStore::deleteFunction): Deleted.
(WebCore::IDBObjectStore::modernDelete): Deleted.

  • Modules/indexeddb/IDBObjectStore.h:
  • bindings/js/JSIDBIndexCustom.cpp:

(WebCore::JSIDBIndex::visitAdditionalChildren):

16:28 Changeset [203479] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

REGRESSION(r148588): ews classes might get garbage collected
https://bugs.webkit.org/show_bug.cgi?id=159990

Reviewed by Ryosuke Niwa.

  • Scripts/webkitpy/tool/commands/init.py: Store the loaded ews classes

in a variable so that they do not get garbage collected.

16:24 Changeset [203478] by commit-queue@webkit.org
  • 2 edits
    2 adds in trunk/Tools

Add API test for layout constraints after exit fullscreen
https://bugs.webkit.org/show_bug.cgi?id=159900

Patch by Jeremy Jones <jeremyj@apple.com> on 2016-07-20
Reviewed by Jon Lee.

Added Fullscreen.LaytoutConstraints API test.
Tests fix from https://bugs.webkit.org/show_bug.cgi?id=159731

This test compares layout constraints on the web view before and after fullscreen to make sure
they are preserved.

  • TestWebKitAPI/Tests/WebKit2Cocoa/FullscreenLayoutConstraints.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/FullscreenLayoutConstraints.mm: Added.

(-[FullscreenStateChangeMessageHandler userContentController:didReceiveScriptMessage:]):
(TestWebKitAPI::TEST):

16:23 Changeset [203477] by ryanhaddad@apple.com
  • 2 edits in trunk/Tools

Disable two failing API tests.

Unreviewed test gardening.

  • TestWebKitAPI/Tests/mac/CandidateTests.mm:

(TestWebKitAPI::TEST):

16:14 Changeset [203476] by jiewen_tan@apple.com
  • 5 edits
    2 adds in trunk/LayoutTests

Fix timeout of imported/w3c/WebCryptoAPI/idlharness.html
https://bugs.webkit.org/show_bug.cgi?id=159979

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Add missing resources.

  • WebCryptoAPI/idlharness-expected.txt:
  • WebCryptoAPI/idlharness.html:
  • resources/WebIDLParser.js: Added.

(tokenise):
(WebIDLParseError):
(WebIDLParseError.prototype.toString):
(error):
(consume):
(ws):
(all_ws):
(integer_type):
(float_type):
(primitive_type):
(const_value):
(type_suffix):
(single_type):
(union_type):
(type):
(argument):
(argument_list):
(type_pair):
(simple_extended_attr):
(extended_attrs):
(default_):
(const_):
(inheritance):
(operation_rest):
(callback):
(attribute):
(return_type):
(operation):
(identifiers):
(serialiser):
(iterable_type):
(readonly_iterable_type):
(iterable):
(interface_):
(partial):
(dictionary):
(exception):
(enum_):
(parse):

  • resources/idlharness.js: Added.

(constValue):
(minOverloadLength):
(throwOrReject):
(awaitNCallbacks):
(return.fround):
(fround):
(self.IdlArray):
(IdlArray.prototype.add_idls):
(IdlArray.prototype.add_untested_idls):
(IdlArray.prototype.internal_add_idls):
(IdlArray.prototype.add_objects):
(IdlArray.prototype.prevent_multiple_testing):
(IdlArray.prototype.recursively_get_implements):
(exposed_in):
(IdlArray.prototype.test):
(IdlArray.prototype.assert_type_is):
(IdlObject):
(IdlObject.prototype.test):
(IdlObject.prototype.has_extended_attribute):
(IdlInterface):
(IdlInterface.prototype.is_callback):
(IdlInterface.prototype.has_constants):
(IdlInterface.prototype.is_global):
(IdlInterface.prototype.test):
(IdlInterface.prototype.test_self):
(IdlInterface.prototype.test_member_const):
(IdlInterface.prototype.test_member_attribute):
(IdlInterface.prototype.test_member_operation):
(IdlInterface.prototype.do_member_operation_asserts):
(IdlInterface.prototype.test_member_stringifier):
(IdlInterface.prototype.test_members):
(IdlInterface.prototype.test_object):
(IdlInterface.prototype.test_primary_interface_of):
(IdlInterface.prototype.test_interface_of):
(IdlInterface.prototype.has_stringifier):
(IdlInterface.prototype.do_interface_attribute_asserts):
(IdlInterfaceMember):
(create_suitable_object):
(IdlEnum):
(IdlTypedef):

LayoutTests:

Remove the skip tuple of the test.

16:07 Changeset [203475] by cdumez@apple.com
  • 3 edits
    2 adds in trunk

Stop using valueToStringWithNullCheck() in JSCSSStyleDeclaration::putDelegate()
https://bugs.webkit.org/show_bug.cgi?id=159982

Reviewed by Ryosuke Niwa.

Source/WebCore:

valueToStringWithNullCheck() treats null as the null String() which is
legacy / non standard behavior. The specification says we should treat
null as the empty string:

Therefore, we should be using valueToStringTreatingNullAsEmptyString() instead.

In practice, there is no web-exposed behavior change because
MutableStyleProperties::setProperty() removes the property wether the
value is the null String or the empty String.

This behavior is correct since the specification says that we should
remove the property if the value is the empty string:

I added test coverage to make sure we behave according to specification.
This test is passing in Firefox, Chrome and in WebKit (before and after
my change).

Test: fast/css/CSSStyleDeclaration-property-setter.html

  • bindings/js/JSCSSStyleDeclarationCustom.cpp:

(WebCore::JSCSSStyleDeclaration::putDelegate):

LayoutTests:

Add layout test coverage for JSCSSStyleDeclaration::putDelegate(),
covering cases like setting to null or the empty String, to make
sure we behave according to specification.

  • fast/css/CSSStyleDeclaration-property-setter-expected.txt: Added.
  • fast/css/CSSStyleDeclaration-property-setter.html: Added.
16:06 Changeset [203474] by cdumez@apple.com
  • 7 edits in trunk

Fix null handling of HTMLFrameElement.marginWidth / marginHeight
https://bugs.webkit.org/show_bug.cgi?id=159987

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline now that more checks are passing.

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

Source/WebCore:

Fix null handling of HTMLFrameElement.marginWidth / marginHeight:

We are supposed to treat null as the empty string but we treat it as
the string "null".

Firefox and Chrome both match the specification.

No new tests, updated existing tests.

  • html/HTMLFrameElement.idl:

LayoutTests:

Update existing test to reflect the expected behavior change.

  • fast/dom/element-attribute-js-null-expected.txt:
  • fast/dom/element-attribute-js-null.html:
15:56 Changeset [203473] by wenson_hsieh@apple.com
  • 2 edits in trunk/Source/WebCore

Pausing autoplayed media should not remove all restrictions for that media element
https://bugs.webkit.org/show_bug.cgi?id=159988

Reviewed by Jon Lee.

Localizes the removal of behavior restrictions introduced in r203464 upon pausing an
autoplaying video to just affect the hiding or showing of the media controller. This
prevents pages from using Javascript to start playing autoplaying videos that have
been paused by the user.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::pause):

15:45 Changeset [203472] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Tools

Merge follow-up patch for rdar://problem/27360961.

15:41 Changeset [203471] by mmaxfield@apple.com
  • 23 edits
    2 deletes in trunk

[iPhone] Playing a video on tudou.com plays only sound, no video
https://bugs.webkit.org/show_bug.cgi?id=159967
<rdar://problem/26964090>

Reviewed by Jon Lee.

Source/WebCore:

WebKit recently starting honoring the playsinline and webkit-playsinline
attribute on iPhones. However, because these attributes previously did
nothing, some sites (such as Todou) were setting them on their content
and expecting that they are not honored. In this specific case, the
video is absolutely positioned to be 1 pixel x 1 pixel.

Previously, with iOS 9, apps could set the allowsInlineMediaPlayback
property on their WKWebView, which would honor the webkit-playsinline
attribute. Safari on iPhones didn't do this.

In order to not break these existing apps, it's important that the
allowsInlineMediaPlayback preference still allows webkit-playsinline
videos to play inline in apps using WKWebView. However, in Safari, these
videos should play fullscreen. (Todou videos have webkit-playsinline
but not playsinline.)

Therefore, in Safari, videos with playsinline should be inline, but
videos with webkit-playsinline should be fullscreen. In apps using
WKWebViews, if the app sets allowsInlineMediaPlayback, then videos with
playsinline should be inline, and videos with webkit-playsinline should
also be inline. Videos on iPad and Mac should all be inline by default.

We can create some truth tables for the cases which need to be covered:

All apps on Mac / iPad:
Presence of playsinline | Presence of webkit-playsinline | Result
========================|================================|===========
Not present | Not present | Inline
Present | Not present | Inline
Not Present | Present | Inline
Present | Present | Inline

Safari on iPhone:
Presence of playsinline | Presence of webkit-playsinline | Result
========================|================================|===========
Not present | Not present | Fullscreen
Present | Not present | Inline
Not Present | Present | Fullscreen
Present | Present | Inline

App on iPhone which sets allowsInlineMediaPlayback:
Presence of playsinline | Presence of webkit-playsinline | Result
========================|================================|===========
Not present | Not present | Fullscreen
Present | Not present | Inline
Not Present | Present | Inline
Present | Present | Inline

The way to distinguish Safari from another app is to create an SPI
boolean preference which Safari can set. This is already how the
iPhone and iPad are differentiated using the requiresPlayInlineAttribute
which Safari sets but other apps don't. However, this preference is
no longer sufficient because Safari should now be discriminating
between the playsinline and webkit-playsinline attributes. Therefore,
this preference should be extended to two boolean preferences, which
this patch adds:

allowsInlineMediaPlaybackWithPlaysInlineAttribute
allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute

Safari on iPhone will set
allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute to true,
and allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute to
false. Other apps on iPhone will get their defaults values (because they
are SPI) which means they will both be true. On iPad and Mac, apps will
use the defaults values where both are false.

This patch adds support for these two preferences, but does not remove
the existing inlineMediaPlaybackRequiresPlaysInlineAttribute preference.
I will remove the exising preference as soon as I update Safari to migrate
off of it.

Test: media/video-playsinline.html

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::requiresFullscreenForVideoPlayback):

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

(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setAllowsInlineMediaPlaybackWithPlaysInlineAttribute):
(WebCore::InternalSettings::setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute):

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

Source/WebKit/mac:

Add the two preferences to WebPreferences.

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
(-[WebPreferences allowsInlineMediaPlaybackWithPlaysInlineAttribute]):
(-[WebPreferences setAllowsInlineMediaPlaybackWithPlaysInlineAttribute:]):
(-[WebPreferences allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute]):
(-[WebPreferences setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute:]):

  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

Source/WebKit2:

Add the two preferences to WKWebViewConfiguration and WKPreferences to cover both
the Obj-C API and the C SPI.

  • Shared/WebPreferencesDefinitions.h:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetAllowsInlineMediaPlaybackWithPlaysInlineAttribute):
(WKPreferencesGetAllowsInlineMediaPlaybackWithPlaysInlineAttribute):
(WKPreferencesSetAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute):
(WKPreferencesGetAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _allowsInlineMediaPlaybackWithPlaysInlineAttribute]):
(-[WKWebViewConfiguration _setAllowsInlineMediaPlaybackWithPlaysInlineAttribute:]):
(-[WKWebViewConfiguration _allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute]):
(-[WKWebViewConfiguration _setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute:]):

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

LayoutTests:

  • media/video-playsinline.html: Updated.
  • media/video-webkit-playsinline-expected.txt: Removed.
  • media/video-webkit-playsinline.html: Removed.
15:03 Changeset [203470] by cdumez@apple.com
  • 5 edits in trunk/Source/WebCore

Get rid of custom bindings code for XMLHttpRequest.open()
https://bugs.webkit.org/show_bug.cgi?id=159984

Reviewed by Ryosuke Niwa.

Get rid of custom bindings code for XMLHttpRequest.open() as the
bindings generator is able to generate it.

Relevant specification:

The issue is that legacy content prevents treating the 'async' argument
being undefined identical from it being omitted. However, this can be
achieved by using overloading in IDL, like in the specification.

No new tests, already covered by the following tests:

  • http/tests/xmlhttprequest/basic-auth.html
  • http/tests/xmlhttprequest/open-async-overload.html
  • bindings/js/JSXMLHttpRequestCustom.cpp:

(WebCore::SendFunctor::SendFunctor): Deleted.
(WebCore::SendFunctor::line): Deleted.
(WebCore::SendFunctor::column): Deleted.
(WebCore::SendFunctor::url): Deleted.
(WebCore::SendFunctor::operator()): Deleted.

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::open):

  • xml/XMLHttpRequest.h:
  • xml/XMLHttpRequest.idl:
14:21 Changeset [203469] by commit-queue@webkit.org
  • 83 edits in trunk/Source/WebCore

Mark overriden methods in WebCore/svg final classes as final
https://bugs.webkit.org/show_bug.cgi?id=159966

Patch by Rawinder Singh <rawinder.singh-webkit@cisra.canon.com.au> on 2016-07-20
Reviewed by Michael Catanzaro.

Update WebCore/svg classes so that overriden methods in final classes are marked final.

  • svg/SVGAElement.h:
  • svg/SVGAltGlyphDefElement.h:
  • svg/SVGAltGlyphItemElement.h:
  • svg/SVGAnimateTransformElement.h:
  • svg/SVGAnimatedColor.h:
  • svg/SVGCircleElement.h:
  • svg/SVGClipPathElement.h:
  • svg/SVGCursorElement.h:
  • svg/SVGDefsElement.h:
  • svg/SVGDescElement.h:
  • svg/SVGEllipseElement.h:
  • svg/SVGFEMergeNodeElement.h:
  • svg/SVGFilterElement.h:
  • svg/SVGFontElement.h:
  • svg/SVGFontFaceElement.h:
  • svg/SVGFontFaceFormatElement.h:
  • svg/SVGFontFaceNameElement.h:
  • svg/SVGFontFaceSrcElement.h:
  • svg/SVGFontFaceUriElement.h:
  • svg/SVGForeignObjectElement.h:
  • svg/SVGGElement.h:
  • svg/SVGGlyphElement.h:
  • svg/SVGGlyphRefElement.h:
  • svg/SVGHKernElement.h:
  • svg/SVGImageElement.h:
  • svg/SVGLineElement.h:
  • svg/SVGMPathElement.h:
  • svg/SVGMaskElement.h:
  • svg/SVGMetadataElement.h:
  • svg/SVGMissingGlyphElement.h:
  • svg/SVGPathBuilder.h:
  • svg/SVGPathByteStreamBuilder.h:
  • svg/SVGPathByteStreamSource.h:
  • svg/SVGPathElement.h:
  • svg/SVGPathSegArcAbs.h:
  • svg/SVGPathSegArcRel.h:
  • svg/SVGPathSegClosePath.h:
  • svg/SVGPathSegCurvetoCubicAbs.h:
  • svg/SVGPathSegCurvetoCubicRel.h:
  • svg/SVGPathSegCurvetoCubicSmoothAbs.h:
  • svg/SVGPathSegCurvetoCubicSmoothRel.h:
  • svg/SVGPathSegCurvetoQuadraticAbs.h:
  • svg/SVGPathSegCurvetoQuadraticRel.h:
  • svg/SVGPathSegCurvetoQuadraticSmoothAbs.h:
  • svg/SVGPathSegCurvetoQuadraticSmoothRel.h:
  • svg/SVGPathSegLinetoAbs.h:
  • svg/SVGPathSegLinetoHorizontalAbs.h:
  • svg/SVGPathSegLinetoHorizontalRel.h:
  • svg/SVGPathSegLinetoRel.h:
  • svg/SVGPathSegLinetoVerticalAbs.h:
  • svg/SVGPathSegLinetoVerticalRel.h:
  • svg/SVGPathSegListBuilder.h:
  • svg/SVGPathSegListSource.h:
  • svg/SVGPathSegMovetoAbs.h:
  • svg/SVGPathSegMovetoRel.h:
  • svg/SVGPathStringSource.h:
  • svg/SVGPathTraversalStateBuilder.h:
  • svg/SVGPatternElement.h:
  • svg/SVGRectElement.h:
  • svg/SVGScriptElement.h:
  • svg/SVGStopElement.h:
  • svg/SVGStyleElement.h:
  • svg/SVGSwitchElement.h:
  • svg/SVGTRefElement.cpp:
  • svg/SVGTitleElement.h:
  • svg/SVGToOTFFontConversion.cpp:
  • svg/SVGUnknownElement.h:
  • svg/SVGVKernElement.h:
  • svg/SVGViewElement.h:
  • svg/SVGZoomEvent.h:
  • svg/animation/SVGSMILElement.cpp:
  • svg/graphics/SVGImage.h:
  • svg/graphics/SVGImageClients.h:
  • svg/graphics/SVGImageForContainer.h:
  • svg/graphics/filters/SVGFEImage.h:
  • svg/graphics/filters/SVGFilter.h:
  • svg/properties/SVGAnimatedEnumerationPropertyTearOff.h:
  • svg/properties/SVGAnimatedPathSegListPropertyTearOff.h:
  • svg/properties/SVGAnimatedPropertyTearOff.h:
  • svg/properties/SVGAnimatedTransformListPropertyTearOff.h:
  • svg/properties/SVGMatrixTearOff.h:
  • svg/properties/SVGPathSegListPropertyTearOff.h:
13:28 Changeset [203468] by wenson_hsieh@apple.com
  • 2 edits in trunk/Tools

Fix the build after 41dade3

13:03 Changeset [203467] by changseok@webkit.org
  • 2 edits in trunk/Source/WebKit2

Fix a linking failure caused by NetworkCache::Data::~Data()
https://bugs.webkit.org/show_bug.cgi?id=159931

Linking is failed with clang 3.6. It says WebKit::NetworkCache::Data::~Data is undefined.
It is fixed by adding a destructor for NetworkCache::Data.

Reviewed by Alex Christensen.

  • NetworkProcess/cache/NetworkCacheData.h:

(WebKit::NetworkCache::Data::~Data):

13:00 Changeset [203466] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

Remove unnecessary if check from ParkingLot.cpp
https://bugs.webkit.org/show_bug.cgi?id=159961

Patch by Rajeev Misra <rajeevmisraforapple@gmail.com> on 2016-07-20
Reviewed by Alex Christensen.

A good practice is to have as less conditional statement
or special cases as possible in code. This change
simply removes a unnecessary "if" statement for
condition which was already evaluated by switch/case
and thus there was no need to evaluate again.

  • wtf/ParkingLot.cpp:
12:42 Changeset [203465] by beidson@apple.com
  • 19 edits in trunk/Source/WebCore

Transition most IDB interfaces from ScriptExecutionContext to ExecState.
https://bugs.webkit.org/show_bug.cgi?id=159975

Reviewed by Alex Christensen.

No new tests (No known behavior change).

  • Modules/indexeddb/IDBCursor.cpp:

(WebCore::IDBCursor::continueFunction):
(WebCore::IDBCursor::deleteFunction):

  • Modules/indexeddb/IDBCursor.h:
  • Modules/indexeddb/IDBCursor.idl:
  • Modules/indexeddb/IDBDatabase.idl:
  • Modules/indexeddb/IDBFactory.cpp:

(WebCore::IDBFactory::cmp):

  • Modules/indexeddb/IDBFactory.h:
  • Modules/indexeddb/IDBFactory.idl:
  • Modules/indexeddb/IDBIndex.cpp:

(WebCore::IDBIndex::openCursor):
(WebCore::IDBIndex::count):
(WebCore::IDBIndex::doCount):
(WebCore::IDBIndex::openKeyCursor):
(WebCore::IDBIndex::get):
(WebCore::IDBIndex::doGet):
(WebCore::IDBIndex::getKey):
(WebCore::IDBIndex::doGetKey):

  • Modules/indexeddb/IDBIndex.h:
  • Modules/indexeddb/IDBIndex.idl:
  • Modules/indexeddb/IDBKeyRange.cpp:

(WebCore::IDBKeyRange::only): Deleted.

  • Modules/indexeddb/IDBKeyRange.h:
  • Modules/indexeddb/IDBObjectStore.cpp:

(WebCore::IDBObjectStore::openCursor):
(WebCore::IDBObjectStore::get):
(WebCore::IDBObjectStore::putOrAdd):
(WebCore::IDBObjectStore::deleteFunction):
(WebCore::IDBObjectStore::doDelete):
(WebCore::IDBObjectStore::modernDelete):
(WebCore::IDBObjectStore::clear):
(WebCore::IDBObjectStore::createIndex):
(WebCore::IDBObjectStore::count):
(WebCore::IDBObjectStore::doCount):

  • Modules/indexeddb/IDBObjectStore.h:
  • Modules/indexeddb/IDBObjectStore.idl:
  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::requestOpenCursor):
(WebCore::IDBTransaction::doRequestOpenCursor):
(WebCore::IDBTransaction::requestGetRecord):
(WebCore::IDBTransaction::requestGetValue):
(WebCore::IDBTransaction::requestGetKey):
(WebCore::IDBTransaction::requestIndexRecord):
(WebCore::IDBTransaction::requestCount):
(WebCore::IDBTransaction::requestDeleteRecord):
(WebCore::IDBTransaction::requestClearObjectStore):
(WebCore::IDBTransaction::requestPutOrAdd):

  • Modules/indexeddb/IDBTransaction.h:
  • inspector/InspectorIndexedDBAgent.cpp:
12:25 Changeset [203464] by wenson_hsieh@apple.com
  • 5 edits
    1 add in trunk

Media controls don't appear when pausing a small autoplaying video
https://bugs.webkit.org/show_bug.cgi?id=159972
<rdar://problem/27180657>

Reviewed by Beth Dakin.

Source/WebCore:

When pausing an autoplaying video, remove behavior restrictions for the
initial user gesture and show media controls.

New WebKit API test. See VideoControlsManagerSingleSmallAutoplayingVideo.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::pause):

Tools:

Adds a new test that verifies media controls show up when pausing a small autoplayed video. Also adds mechanisms
for simulating basic user interaction in VideoControlsManager.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/VideoControlsManager.mm:

(-[WKWebView mouseDownAtPoint:]):
(-[DidPlayMessageHandler userContentController:didReceiveScriptMessage:]):
(-[OnLoadMessageHandler initWithWKWebView:handler:]):
(-[OnLoadMessageHandler userContentController:didReceiveScriptMessage:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit2Cocoa/autoplaying-video-with-audio.html: Added.
12:21 Changeset [203463] by cdumez@apple.com
  • 7 edits in trunk

Fix null handling of HTMLMediaElement.mediaGroup
https://bugs.webkit.org/show_bug.cgi?id=159974

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

Rebaseline now that more checks are passing.

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

Source/WebCore:

Fix null handling of HTMLMediaElement.mediaGroup to match the specification:

null is supposed to be treated as the String "null". This patch aligns
our behavior with the specification. I tested Firefox and Chrome but both
do not have this attribute on HTMLMediaElement.

Also remove support for [TreatNullAs=LegacyNullString] from our bindings
generator as HTMLMediaElement.mediaGroup was the last user.

No new tests, rebaselined existing test.

  • bindings/scripts/CodeGeneratorJS.pm:

(JSValueToNative):

  • bindings/scripts/IDLAttributes.txt:
  • html/HTMLMediaElement.idl:
11:59 Changeset [203462] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit2

Explain the default value of WKWebViewConfiguration's ignoresViewportScaleLimits
https://bugs.webkit.org/show_bug.cgi?id=159978
<rdar://problem/27453189>

Reviewed by Dan Bernstein.

  • UIProcess/API/Cocoa/WKWebViewConfiguration.h:

This defaults to NO.

11:10 Changeset [203461] by mitz@apple.com
  • 8 copies
    1 add in releases/Apple/Safari Technology Preview 9

Added a tag for Safari Technology Preview release 9.

11:01 Changeset [203460] by cdumez@apple.com
  • 4 edits
    2 adds in trunk

CSSStyleDeclaration.setProperty() should be able to unset "important" on a property
https://bugs.webkit.org/show_bug.cgi?id=159959

Reviewed by Alexey Proskuryakov.

Source/WebCore:

CSSStyleDeclaration.setProperty() should be able to unsert "important"
on a property as per the latest specification:

Firefox and Chrome match the specification here but WebKit was ignoring calls
to setProperty() if there is already an "important" property wit this name
and if the new property does not have the "important" flag set.

This behavior was added a long time ago via Bug 60007. However, it does not
match the latest specification or other browsers.

Test: fast/css/CSSStyleDeclaration-setProperty-unset-important.html

  • css/StyleProperties.cpp:

(WebCore::MutableStyleProperties::addParsedProperty):
Drop code that was added via Bug 60007 as this behavior no longer matches the
specification or other browsers. The layout test added in Bug 60007 fails in
other browsers and was updated in this patch to match the specification.

LayoutTests:

  • fast/css/CSSStyleDeclaration-setProperty-unset-important-expected.txt: Added.
  • fast/css/CSSStyleDeclaration-setProperty-unset-important.html: Added.

Add layout test coverage.

  • fast/css/important-js-override.html:

The test covered our 'wrong' behavior and was failing in Firefox / Chrome.
I updated the test to match the behavior in the specification. The test
now passed in Chrome and Firefox.

10:55 Changeset [203459] by ryanhaddad@apple.com
  • 13 edits
    2 deletes in trunk

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

The test for this change is failing on Mac Release WK2
(Requested by ryanhaddad on #webkit).

Reverted changeset:

"HTMLVideoElement frames do not update on iOS when src is a
MediaStream blob"
https://bugs.webkit.org/show_bug.cgi?id=159833
http://trac.webkit.org/changeset/203423

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

10:54 Changeset [203458] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Land test expectations for rdar://problem/27434307.

  • platform/mac/TestExpectations:
10:18 Changeset [203457] by pvollan@apple.com
  • 2 edits in trunk/Tools

[Win] MathML fonts are not found.
https://bugs.webkit.org/show_bug.cgi?id=159920

Reviewed by Alex Christensen.

When looking up a font in the registry, use the /v option of the Windows 'reg query' command to query
for a specific registry key value.

  • Scripts/webkitdirs.pm:

(fontExists):

09:44 WebKitGTK/2.12.x edited by clopez@igalia.com
(diff)
09:37 Changeset [203456] by cdumez@apple.com
  • 4 edits
    2 adds in trunk

Fix null handling of HTMLSelectElement.value attribute
https://bugs.webkit.org/show_bug.cgi?id=159925

Reviewed by Benjamin Poulain.

Source/WebCore:

Fix null handling of HTMLSelectElement.value attribute:

We were treating null as the null String which would end up setting
selectedIndex to -1. However, we should treat null as the String "null"
which would set the selectedIndex to the index of the <option> element
whose value is "null".

Firefox and Chrome match the specification.

Test: fast/dom/HTMLSelectElement/value-null-handling.html

  • html/HTMLSelectElement.cpp:

(WebCore::HTMLSelectElement::setValue):

  • html/HTMLSelectElement.idl:

LayoutTests:

Add layout test coverage. I have verified that this test is passing in
both Firefox and Chrome.

  • fast/dom/HTMLSelectElement/value-null-handling-expected.txt: Added.
  • fast/dom/HTMLSelectElement/value-null-handling.html: Added.
08:50 Changeset [203455] by ryanhaddad@apple.com
  • 2 edits in trunk/LayoutTests

Consolidating duplicate TestExpectations for fast/images/animated-png.html.

Unreviewed test gardening.

  • platform/mac/TestExpectations:
08:41 Changeset [203454] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Pausing when Debugger tab is closed opens tab in wrong state
https://bugs.webkit.org/show_bug.cgi?id=159946
<rdar://problem/27429886>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-07-20
Reviewed by Timothy Hatcher.

  • UserInterface/Views/DebuggerSidebarPanel.js:

(WebInspector.DebuggerSidebarPanel):
At the end of construction, update the UI to match the current state
of the world. Such as updating the UI if we are paused, or if the
Timeline is capturing and we are temporarily disabling breakpoints.

08:40 Changeset [203453] by commit-queue@webkit.org
  • 5 edits in trunk/Tools

Improve prepare-ChangeLog for @media blocks
https://bugs.webkit.org/show_bug.cgi?id=159907

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-07-20
Reviewed by Timothy Hatcher.

  • Scripts/prepare-ChangeLog:

(get_selector_line_ranges_for_css):
Get a range for @media blocks just like a selector.

Start Line = line with '{'
End line = line with '}'
Name = "@media ..."

  • Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests_warning-expected.txt:

Improved error messages for unbalanced portions.

  • Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests-expected.txt:
  • Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests.css:

(.media-query::before):
(@media only screen and (max-width: 980px)):
(.media-query a):
(@media (-webkit-min-device-pixel-ratio: 2)):
(.both a):
(.both b):
(.media-query b):
(.media-query::after):

07:50 Changeset [203452] by msaboff@apple.com
  • 6 edits
    1 add in trunk/Source/JavaScriptCore

CrashOnOverflow in JSC::Yarr::YarrPatternConstructor::setupAlternativeOffsets
https://bugs.webkit.org/show_bug.cgi?id=159954

Reviewed by Benjamin Poulain.

YarrPatternConstructor::setupAlternativeOffsets() is using the checked arithmetic class
Checked<>, for offset calculations. However the default use will just crash on
overflow. Instead we should stop processing and propagate the error up the call stack.

Consolidated explicit error string with the common RegExp parsing error logic.
Moved that logic to YarrPattern as that seems like a better common place to put it.

  • jit/JITOperations.cpp:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • tests/stress/regress-159954.js: New test.
  • yarr/YarrParser.h:

(JSC::Yarr::Parser::CharacterClassParserDelegate::CharacterClassParserDelegate):
(JSC::Yarr::Parser::CharacterClassParserDelegate::atomPatternCharacter):
(JSC::Yarr::Parser::Parser):
(JSC::Yarr::Parser::isIdentityEscapeAnError):
(JSC::Yarr::Parser::parseEscape):
(JSC::Yarr::Parser::parseCharacterClass):
(JSC::Yarr::Parser::parseParenthesesBegin):
(JSC::Yarr::Parser::parseParenthesesEnd):
(JSC::Yarr::Parser::parseQuantifier):
(JSC::Yarr::Parser::parseTokens):
(JSC::Yarr::Parser::parse):

  • yarr/YarrPattern.cpp:

(JSC::Yarr::YarrPatternConstructor::disjunction):
(JSC::Yarr::YarrPatternConstructor::setupDisjunctionOffsets):
(JSC::Yarr::YarrPatternConstructor::setupOffsets):
(JSC::Yarr::YarrPattern::errorMessage):
(JSC::Yarr::YarrPattern::compile):

  • yarr/YarrPattern.h:

(JSC::Yarr::YarrPattern::reset):

06:07 Changeset [203451] by carlosgc@webkit.org
  • 2 edits in trunk/Source/WebKit2

[Linux] MemoryPressureMonitor fallback code to get memory available in older linux kernels doesn't work
https://bugs.webkit.org/show_bug.cgi?id=159970

Reviewed by Antonio Gomes.

We are failing to detect zones when parsing /proc/zoneinfo.

  • UIProcess/linux/MemoryPressureMonitor.cpp:

(WebKit::lowWatermarkPages): Use strncmp since we want to know whether the line starts with "Node".
(WebKit::MemoryPressureMonitor::MemoryPressureMonitor): Stop the polling if we fail to get the memory available,
because that means it's not sopported in the system for whatever reason.

06:02 Changeset [203450] by cdumez@apple.com
  • 4 edits in trunk/Source/WebCore

PostResolutionCallbackDisabler can resume pending requests while a ResourceLoadSuspender is alive
https://bugs.webkit.org/show_bug.cgi?id=159962
<rdar://problem/21439264>

Reviewed by David Kilzer.

PostResolutionCallbackDisabler can resume pending requests while a ResourceLoadSuspender
is alive. We have both PostResolutionCallbackDisabler and ResourceLoadSuspender that
call LoaderStrategy::suspendPendingRequests() / LoaderStrategy::resumePendingRequests().
However, PostResolutionCallbackDisabler and ResourceLoadSuspender are not aware of each
other. It is therefore possible for a PostResolutionCallbackDisabler object to get
destroyed, causing LoaderStrategy::resumePendingRequests() to be called while a
ResourceLoadSuspender object is alive.

This leads to hard to investigate crashes where we end up re-entering WebKit and killing
the style resolver.

This patch drops ResourceLoadSuspender and uses PostResolutionCallbackDisabler instead.
There was only one user of ResourceLoadSuspender and PostResolutionCallbackDisabler
is better because it manages a resolutionNestingDepth counter internally to make sure
it only calls LoaderStrategy::resumePendingRequests() once all
PostResolutionCallbackDisabler instances are destroyed.

No new tests, there is no easy way to reproduce the crashes.

  • dom/Document.cpp:

(WebCore::Document::styleForElementIgnoringPendingStylesheets):

  • loader/LoaderStrategy.cpp:

(WebCore::ResourceLoadSuspender::ResourceLoadSuspender): Deleted.
(WebCore::ResourceLoadSuspender::~ResourceLoadSuspender): Deleted.

  • loader/LoaderStrategy.h:
05:17 Changeset [203449] by carlosgc@webkit.org
  • 5 edits in trunk/Source/WebKit2

[Threaded Compositor] Web Process crash when the layer tree host is destroyed
https://bugs.webkit.org/show_bug.cgi?id=159922

Reviewed by Sergio Villar Senin.

It happens when the layer tree host is destroyed after the didChangeVisibleRect is scheduled to be run in the
main thread, but before it's actually dispatched. In that case the threaded compositor client points to a
deleted object and crashes when trying to dereference it.

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:

(WebKit::ThreadedCompositor::~ThreadedCompositor): Add an assert to ensure invalidate is always called before
the object is deleted.
(WebKit::ThreadedCompositor::invalidate): Terminate the compositing thread and nullify the client.
(WebKit::ThreadedCompositor::didChangeVisibleRect): Return early if the client is null when the task is
dispatched in the main thread.

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h: Add invalidate().
  • WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:

(WebKit::ThreadedCoordinatedLayerTreeHost::invalidate): Invalidate the ThreadedCompositor and chain up.

  • WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:
03:55 MathML/Early_2016_Refactoring edited by fred.wang@free.fr
(diff)
01:50 Changeset [203448] by ossy@webkit.org
  • 2 edits in trunk/Tools

Fix expectedFailErrorHandler in run-jsc-stress-tests
https://bugs.webkit.org/show_bug.cgi?id=159811

Reviewed by Yusuke Suzuki.

  • Scripts/run-jsc-stress-tests:
01:49 Changeset [203447] by ossy@webkit.org
  • 2 edits in trunk/Tools

Unreviewed Mac cmake buildfix after r203426. Just for fun.

  • TestWebKitAPI/PlatformMac.cmake:
00:30 Changeset [203446] by ossy@webkit.org
  • 2 edits in trunk

JSC JIT Broken on ARMv7 Traditional (without Thumb2)
https://bugs.webkit.org/show_bug.cgi?id=159880

Reviewed by Carlos Garcia Campos.

  • Source/cmake/OptionsCommon.cmake: Use the BFD linker on ARM traditional because of a gold linker bug.
Note: See TracTimeline for information about the timeline view.