Timeline



Feb 21, 2017:

11:59 PM Changeset in webkit [212812] by achristensen@apple.com
  • 38 edits
    11 adds in trunk

[WebRTC][Mac] Activate libwebrtc
https://bugs.webkit.org/show_bug.cgi?id=167293
LayoutTests/imported/w3c:

<rdar://problem/30401864>

Patch by Youenn Fablet <youennf@gmail.com> on 2017-02-21
Reviewed by Alex Christensen.

  • web-platform-tests/webrtc/datachannel-emptystring-expected.txt:
  • web-platform-tests/webrtc/no-media-call-expected.txt:
  • web-platform-tests/webrtc/promises-call-expected.txt:

Source/JavaScriptCore:

<rdar://problem/30401864>

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

  • Configurations/FeatureDefines.xcconfig:

Source/ThirdParty/libwebrtc:

<rdar://problem/30401864>

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

Doing some clean-up.

  • Configurations/libwebrtc.xcconfig:
  • Source/webrtc/base/checks.h:
  • libwebrtc.xcodeproj/project.pbxproj:

Source/WebCore:

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

  • Configurations/WebCore.xcconfig:
  • Configurations/WebCoreTestSupport.xcconfig:
  • Configurations/FeatureDefines.xcconfig:

Source/WebCore/PAL:

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

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

<rdar://problem/30401864>

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

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

<rdar://problem/30401864>

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

Activating PeerConnection runtime flag based on successful loading of libwebrtc.dylib.

  • Configurations/WebKit.xcconfig:
  • Configurations/FeatureDefines.xcconfig:
  • Shared/WebPreferencesDefinitions.h:
  • UIProcess/WebPreferences.cpp:

(WebKit::checkWebRTCAvailability):

Source/WTF:

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

  • wtf/Platform.h:

Tools:

<rdar://problem/30401864>

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

Fixing paths to allow loading libwebrtc.dylib successfully.

  • Scripts/build-webkit:
  • Scripts/webkitdirs.pm:

(setupMacWebKitEnvironment):
(setupIOSWebKitEnvironment):

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

LayoutTests:

<rdar://problem/30401864>

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

  • TestExpectations:
  • fast/mediastream/RTCPeerConnection-addIceCandidate-expected.txt:
  • fast/mediastream/RTCPeerConnection-addTrack-reuse-sender-expected.txt:
  • fast/mediastream/RTCPeerConnection-icecandidate-event-expected.txt:
  • fast/mediastream/RTCPeerConnection-legacy-stream-based-api-expected.txt:
  • platform/gtk/TestExpectations:
  • platform/gtk/fast/mediastream/RTCPeerConnection-AddRemoveStream-expected.txt: Added.
  • platform/gtk/fast/mediastream/RTCPeerConnection-addIceCandidate-expected.txt: Copied from LayoutTests/fast/mediastream/RTCPeerConnection-addIceCandidate-expected.txt.
  • platform/gtk/fast/mediastream/RTCPeerConnection-addTrack-reuse-sender-expected.txt: Copied from LayoutTests/fast/mediastream/RTCPeerConnection-addTrack-reuse-sender-expected.txt.
  • platform/gtk/fast/mediastream/RTCPeerConnection-closed-state-expected.txt: Added.
  • platform/gtk/fast/mediastream/RTCPeerConnection-icecandidate-event-expected.txt: Copied from LayoutTests/fast/mediastream/RTCPeerConnection-icecandidate-event-expected.txt.
  • platform/gtk/fast/mediastream/RTCPeerConnection-iceconnectionstatechange-event-expected.txt: Added.
  • platform/gtk/fast/mediastream/RTCPeerConnection-legacy-stream-based-api-expected.txt: Copied from LayoutTests/fast/mediastream/RTCPeerConnection-legacy-stream-based-api-expected.txt.
  • platform/gtk/fast/mediastream/RTCPeerConnection-onnegotiationneeded-expected.txt: Added.
  • platform/gtk/fast/mediastream/RTCPeerConnection-overloaded-operations-params-expected.txt: Added.
  • platform/gtk/fast/mediastream/RTCRtpSender-replaceTrack-expected.txt: Added.
  • platform/gtk/fast/mediastream/no-media-call-expected.txt: Added.
  • platform/ios-simulator-wk2/TestExpectations:
  • platform/mac-wk1/TestExpectations:
11:54 PM Changeset in webkit [212811] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

Unreviewed. Fix WinCairo build after r212703.

  • platform/TextureMapper.cmake:
11:43 PM Changeset in webkit [212810] by commit-queue@webkit.org
  • 8 edits in trunk/Source/WebKit2

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

It broke GTK+ port when using single shared process model
(Requested by KaL on #webkit).

Reverted changeset:

"Refactor WebViewImpl creation in preparation for supporting
multiple WebsiteDataStores."
https://bugs.webkit.org/show_bug.cgi?id=168676
http://trac.webkit.org/changeset/212786

10:57 PM Changeset in webkit [212809] by aakash_jain@apple.com
  • 2 edits in trunk/Source/WebKit/mac

Export various NSString symbols from WebFramePrivate.h
https://bugs.webkit.org/show_bug.cgi?id=168702

Reviewed by Alexey Proskuryakov.

  • WebKit.exp:
10:55 PM Changeset in webkit [212808] by pvollan@apple.com
  • 14 edits
    4 adds in trunk

Add support for CSS properties paint-order, stroke-linecap, and stroke-linejoin in text rendering.
https://bugs.webkit.org/show_bug.cgi?id=168601
Source/WebCore:

rdar://problem/30583872

Reviewed by Simon Fraser.

Text rendering should respect the CSS properties paint-order, stroke-linecap, and stroke-linejoin,
see https://drafts.fxtf.org/paint/. The text rendering changes are mainly in the TextPainter class,
where text is painted in three phases (fill, stroke, markers), where the order follows the
paint-order property. The linecap and linejoin properties are set on the graphics context before
rendering the text.

Tests: fast/css/paint-order.html

fast/css/paint-order-shadow.html

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::paintOrder):

  • css/StyleBuilderConverter.h:

(WebCore::StyleBuilderConverter::convertPaintOrder):

  • rendering/TextPaintStyle.cpp:

(WebCore::computeTextPaintStyle):
(WebCore::updateGraphicsContext):

  • rendering/TextPaintStyle.h:
  • rendering/TextPainter.cpp:

(WebCore::TextPainter::paintTextAndEmphasisMarksIfNeeded):

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::paintTypesForPaintOrder):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::setPaintOrder):
(WebCore::RenderStyle::initialPaintOrder):

  • rendering/style/RenderStyleConstants.h:
  • rendering/style/SVGRenderStyleDefs.h:
  • rendering/style/StyleRareInheritedData.cpp:

(WebCore::StyleRareInheritedData::StyleRareInheritedData):

  • rendering/svg/RenderSVGShape.cpp:

(WebCore::RenderSVGShape::fillStrokeMarkers):

  • rendering/svg/SVGInlineTextBox.cpp:

(WebCore::SVGInlineTextBox::paint):

LayoutTests:

Reviewed by Simon Fraser.

  • fast/css/paint-order-expected.html: Added.
  • fast/css/paint-order-shadow-expected.html: Added.
  • fast/css/paint-order-shadow.html: Added.
  • fast/css/paint-order.html: Added.
10:51 PM Changeset in webkit [212807] by rniwa@webkit.org
  • 2 edits in trunk

Remove the extra `'s errornously added during the final editing.

  • ReadMe.md:
9:43 PM Changeset in webkit [212806] by commit-queue@webkit.org
  • 3 edits
    3 adds in trunk

[User Timing] Throw a SyntaxError for performance.measure if mark name is not found
https://bugs.webkit.org/show_bug.cgi?id=168707

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-02-21
Reviewed by Ryosuke Niwa.

Source/WebCore:

Test: performance-api/performance-measure-name.html

  • page/PerformanceUserTiming.cpp:

(WebCore::UserTiming::findExistingMarkStartTime):
Instead of returning zero, throw a SyntaxError. This is more in line
with User Timing Level 1 and behavior in Window. This is an issue with
the Level 2 spec: https://github.com/w3c/user-timing/issues/21

LayoutTests:

  • performance-api/performance-measure-name-expected.txt: Added.
  • performance-api/performance-measure-name.html: Added.
  • performance-api/resources/measure-name.js: Added.

Test to cover SyntaxError for missing measure start/end mark names.

9:08 PM Changeset in webkit [212805] by aakash_jain@apple.com
  • 2 edits in trunk/Source/WebKit/mac

Export various NSString symbols from WebPreferencesPrivate.h
https://bugs.webkit.org/show_bug.cgi?id=168701

Reviewed by Alexey Proskuryakov.

  • WebKit.exp:
8:42 PM Changeset in webkit [212804] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603.1.30.2-branch/Source

Versioning.

8:40 PM Changeset in webkit [212803] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603.1.30.1-branch/Source

Versioning.

8:39 PM Changeset in webkit [212802] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603.1.30.0-branch/Source

Versioning.

8:36 PM Changeset in webkit [212801] by matthew_hanson@apple.com
  • 1 edit in branches/safari-603-branch/Source/WebCore/platform/SplitTestInitializer.cpp

Merge r212764. rdar://problem/30553220

8:28 PM Changeset in webkit [212800] by wilander@apple.com
  • 2 edits in trunk/LayoutTests

Unreviewed, marking a set of test cases as skipped while we investigate.

Both the test cases and the new code are part of
https://bugs.webkit.org/show_bug.cgi?id=168347. Crashes so far only happen
on release builds on the bots. Not locally release nor debug.

  • platform/wk2/TestExpectations:
8:17 PM Changeset in webkit [212799] by sbarati@apple.com
  • 7 edits
    2 moves in trunk

Add the Briggs optimistic allocator to run on ARM64
https://bugs.webkit.org/show_bug.cgi?id=168454

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

This patch adds the Briggs allocator to Air:
http://www.cs.utexas.edu/users/mckinley/380C/lecs/briggs-thesis-1992.pdf
It uses it by default on ARM64. I was measuring an 8-10% speedup
in the phase because of this. I also wasn't able to detect a slowdown
for generated code on ARM64. There are still a few things we can do
to speed things up even further. Moving the interference graph into
a BitVector was another 10-20% speedup. We should consider doing this
in a follow up patch. This is especially important now, since making
register allocation faster has a direct impact on startup time for
Wasm modules.

I abstracted away the common bits between Briggs and IRC, and moved
them into a common super class. In a follow up to this patch, I plan
on implementing biased coloring for both Briggs and IRC (this is
described in Briggs's thesis). I was able to detect a 1% slowdown
with Briggs on Octane for x86-64. This is because the register file
for x86-64 is smaller than ARM64. When I implemented biased coloring,
I was no longer able to detect this slowdown. I still think it's a
sensible plan to run Briggs on ARM64 and IRC on x86-64.

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

(JSC::B3::Air::prepareForGeneration):

  • b3/air/AirGraphColoring.cpp: Copied from Source/JavaScriptCore/b3/air/AirIteratedRegisterCoalescing.cpp.

(JSC::B3::Air::allocateRegistersByGraphColoring):
(JSC::B3::Air::iteratedRegisterCoalescing): Deleted.

  • b3/air/AirGraphColoring.h: Copied from Source/JavaScriptCore/b3/air/AirIteratedRegisterCoalescing.h.
  • b3/air/AirIteratedRegisterCoalescing.cpp: Removed.
  • b3/air/AirIteratedRegisterCoalescing.h: Removed.
  • runtime/Options.h:

Tools:

  • Scripts/run-jsc-stress-tests:
7:58 PM Changeset in webkit [212798] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.1.30.0.2

Tag Safari-603.1.30.0.2.

7:08 PM Changeset in webkit [212797] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit/mac

Add missing WebConsoleMessage string key
https://bugs.webkit.org/show_bug.cgi?id=168690

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-02-21
Reviewed by Alexey Proskuryakov.

  • WebKit.exp:
  • WebView/WebUIDelegatePrivate.h:

This key has an implementation but was not extern / exported like the others.

6:42 PM Changeset in webkit [212796] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.1.30.2.1

Tag Safari-603.1.30.2.1.

6:42 PM Changeset in webkit [212795] by aakash_jain@apple.com
  • 2 edits in trunk/Source/WebKit

Make WebKitStatisticsPrivate.h project header
https://bugs.webkit.org/show_bug.cgi?id=168686

Reviewed by Alexey Proskuryakov.

  • WebKit.xcodeproj/project.pbxproj:
6:42 PM Changeset in webkit [212794] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.1.30.0.1

Tag Safari-603.1.30.0.1.

6:42 PM Changeset in webkit [212793] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.1.30.1.1

Tag Safari-603.1.30.1.1.

6:39 PM Changeset in webkit [212792] by aakash_jain@apple.com
  • 2 edits in trunk/Source/WebKit/mac

Export various NSString symbols from WebViewPrivate.h
https://bugs.webkit.org/show_bug.cgi?id=168689

Reviewed by Alexey Proskuryakov.

  • WebKit.exp:
6:29 PM Changeset in webkit [212791] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Add more missing exception checks detected by running marathon.js.
https://bugs.webkit.org/show_bug.cgi?id=168697

Reviewed by Saam Barati.

  • runtime/StringPrototype.cpp:

(JSC::replaceUsingRegExpSearch):
(JSC::replaceUsingStringSearch):

6:16 PM Changeset in webkit [212790] by rniwa@webkit.org
  • 1 edit
    1 add in trunk

Add ReadMe.md to WebKit
https://bugs.webkit.org/show_bug.cgi?id=168413

Reviewed by Chris Dumez.

Add a ReadMe.md to be read on https://github.com/WebKit/webkit based on webkit.org content.

  • ReadMe.md: Added.
6:04 PM Changeset in webkit [212789] by Ryan Haddad
  • 2 edits in trunk/Source/WebCore

Unreviewed attempt to fix the Windows build.

  • platform/graphics/ca/win/PlatformCALayerWin.cpp:

(PlatformCALayerWin::supportsSubpixelAntialiasedText):

5:59 PM Changeset in webkit [212788] by Ryan Haddad
  • 3 edits
    2 deletes in trunk

Unreviewed, rolling out r212737.

This change caused an existing LayoutTest to crash.

Reverted changeset:

"REGRESSION(r207669): Crash after mutating selector text"
https://bugs.webkit.org/show_bug.cgi?id=168655
http://trac.webkit.org/changeset/212737

5:58 PM Changeset in webkit [212787] by commit-queue@webkit.org
  • 8 edits
    2 adds in trunk/Source/WebKit

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

Rolling out since this would break other projects. (Requested
by aakashjain on #webkit).

Reverted changeset:

"[iOS] Remove old WebKit1 MemoryMeasure helper."
https://bugs.webkit.org/show_bug.cgi?id=168675
http://trac.webkit.org/changeset/212768

5:35 PM Changeset in webkit [212786] by beidson@apple.com
  • 8 edits in trunk/Source/WebKit2

Refactor WebViewImpl creation in preparation for supporting multiple WebsiteDataStores.
https://bugs.webkit.org/show_bug.cgi?id=168676

Reviewed by Alex Christensen.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]): Allow for WebViewImpl creation to fail.

  • UIProcess/API/mac/WKView.mm:

(-[WKView initWithFrame:processPool:configuration:]): Ditto.

  • UIProcess/Cocoa/WebViewImpl.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::maybeCreate):
(WebKit::WebViewImpl::WebViewImpl):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::reattachToWebProcess): New WebProcess creation might fail. Handle it.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::createNewWebProcess):
(WebKit::WebProcessPool::warmInitialProcess):
(WebKit::WebProcessPool::maybeCreateNewWebProcessRespectingProcessCountLimit): This can now fail

if the process will have a non-default WebsiteDataStore but we've already reached the process cap.

(WebKit::WebProcessPool::createWebPage):
(WebKit::WebProcessPool::createNewWebProcessRespectingProcessCountLimit): Deleted.

  • UIProcess/WebProcessPool.h:
5:20 PM Changeset in webkit [212785] by matthew_hanson@apple.com
  • 13 edits
    1 add in branches/safari-603.1.30.2-branch/Source

Merge r212692. rdar://problem/30635854

5:19 PM Changeset in webkit [212784] by Chris Dumez
  • 4 edits
    8 adds in trunk

REGRESSION (r207720): /more/conformance/conformance/quickCheckAPI-S_V.html test fails
https://bugs.webkit.org/show_bug.cgi?id=168632
<rdar://problem/30620129>

Reviewed by Darin Adler.

Source/WebCore:

After r207720, the following WebGL conformance tests started failing:

  • /more/conformance/conformance/quickCheckAPI-S_V.html
  • /context/context-lost.html

We started throwing security errors in case where we did not before.
Chrome and Firefox are both passing these tests so our new behavior was not interoperable.

This patch reverts part of r207720 to restore our previous behavior.

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::texSubImage2D):
(WebCore::WebGLRenderingContextBase::texImage2D):
(WebCore::WebGLRenderingContextBase::validateHTMLImageElement):
(WebCore::WebGLRenderingContextBase::validateHTMLCanvasElement):
(WebCore::WebGLRenderingContextBase::validateHTMLVideoElement):

  • html/canvas/WebGLRenderingContextBase.h:

LayoutTests:

Import layout test coverage.

  • http/tests/webgl/1.0.2/resources/webgl_test_files/conformance/context/context-lost-expected.txt: Added.
  • http/tests/webgl/1.0.2/resources/webgl_test_files/conformance/context/context-lost.html: Added.
  • http/tests/webgl/1.0.2/resources/webgl_test_files/conformance/more/conformance/argGenerators-S_V.js: Added.
  • http/tests/webgl/1.0.2/resources/webgl_test_files/conformance/more/conformance/quickCheckAPI-S_V-expected.txt: Added.
  • http/tests/webgl/1.0.2/resources/webgl_test_files/conformance/more/conformance/quickCheckAPI-S_V.html: Added.
  • http/tests/webgl/1.0.2/resources/webgl_test_files/conformance/more/conformance/quickCheckAPI.js: Added.
5:18 PM Changeset in webkit [212783] by dino@apple.com
  • 2 edits in trunk/Source/WebCore

No need for static attributes when creating a pixel format
https://bugs.webkit.org/show_bug.cgi?id=168688
<rdar://problem/30642256>

Reviewed by Myles Maxfield.

Just create the attributes when needed.

  • platform/graphics/mac/GraphicsContext3DMac.mm:

(WebCore::GraphicsContext3DManager::updateHighPerformanceState):

5:16 PM Changeset in webkit [212782] by jfbastien@apple.com
  • 7 edits
    2 adds in trunk/Source/JavaScriptCore

FullCodeOrigin for CodeBlock+CodeOrigin printing
https://bugs.webkit.org/show_bug.cgi?id=168673

Reviewed by Filip Pizlo.

WebAssembly doesn't have a CodeBlock, so printing it isn't
valid. This patch adds FullCodeOrigin to handle the
CodeBlock+CodeOrigin printing pattern, and uses it through all the
places I could find, including Repatch.cpp where it's relevant for
WebAssembly.

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

(JSC::CodeBlock::noticeIncomingCall):

  • bytecode/FullCodeOrigin.cpp: Added.

(JSC::FullCodeOrigin::dump):
(JSC::FullCodeOrigin::dumpInContext):

  • bytecode/FullCodeOrigin.h: Added.

(JSC::FullCodeOrigin::FullCodeOrigin):

  • bytecode/PolymorphicAccess.cpp:

(JSC::PolymorphicAccess::regenerate):

  • jit/PolymorphicCallStubRoutine.cpp:

(JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine):

  • jit/Repatch.cpp:

(JSC::linkFor):
(JSC::linkDirectFor):
(JSC::linkVirtualFor):

5:07 PM Changeset in webkit [212781] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit2

[WebRTC] WebKit2 should assert that libwebrtc transmitted IP addresses family is IP4 or IP6
https://bugs.webkit.org/show_bug.cgi?id=168691

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

Adding some asserts that family is IPv4 or IPv6.

  • Shared/RTCNetwork.cpp:

(WebKit::RTCNetwork::IPAddress::decode):
(WebKit::RTCNetwork::IPAddress::encode):

5:05 PM Changeset in webkit [212780] by fpizlo@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Unreviewed, fix cloop. I managed to have my local patch for relanding be the one without the cloop
fix. I keep forgetting about cloop!

  • heap/Heap.cpp:

(JSC::Heap::stopThePeriphery):

  • runtime/JSLock.cpp:
5:01 PM Changeset in webkit [212779] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Add missing exception checks detected by running marathon.js.
https://bugs.webkit.org/show_bug.cgi?id=168687

Reviewed by Saam Barati.

When running the marathon.js test from https://bugs.webkit.org/show_bug.cgi?id=168580,
we get some crashes due to missing exception checks. This patch adds those
missing exception checks.

  • runtime/JSCJSValueInlines.h:

(JSC::JSValue::toPropertyKey):

  • runtime/JSObject.cpp:

(JSC::JSObject::getPrimitiveNumber):

4:58 PM Changeset in webkit [212778] by fpizlo@apple.com
  • 41 edits
    14 adds
    3 deletes in trunk

The collector thread should only start when the mutator doesn't have heap access
https://bugs.webkit.org/show_bug.cgi?id=167737

Reviewed by Keith Miller.
JSTests:


Add versions of splay that flash heap access, to simulate what might happen if a third-party app
was running concurrent GC. In this case, we might actually start the collector thread.

  • stress/splay-flash-access-1ms.js: Added.

(performance.now):
(this.Setup.setup.setup):
(this.TearDown.tearDown.tearDown):
(Benchmark):
(BenchmarkResult):
(BenchmarkResult.prototype.valueOf):
(BenchmarkSuite):
(alert):
(Math.random):
(BenchmarkSuite.ResetRNG):
(RunStep):
(BenchmarkSuite.RunSuites):
(BenchmarkSuite.CountBenchmarks):
(BenchmarkSuite.GeometricMean):
(BenchmarkSuite.GeometricMeanTime):
(BenchmarkSuite.AverageAbovePercentile):
(BenchmarkSuite.GeometricMeanLatency):
(BenchmarkSuite.FormatScore):
(BenchmarkSuite.prototype.NotifyStep):
(BenchmarkSuite.prototype.NotifyResult):
(BenchmarkSuite.prototype.NotifyError):
(BenchmarkSuite.prototype.RunSingleBenchmark):
(RunNextSetup):
(RunNextBenchmark):
(RunNextTearDown):
(BenchmarkSuite.prototype.RunStep):
(GeneratePayloadTree):
(GenerateKey):
(SplayUpdateStats):
(InsertNewNode):
(SplaySetup):
(SplayTearDown):
(SplayRun):
(SplayTree):
(SplayTree.prototype.isEmpty):
(SplayTree.prototype.insert):
(SplayTree.prototype.remove):
(SplayTree.prototype.find):
(SplayTree.prototype.findMax):
(SplayTree.prototype.findGreatestLessThan):
(SplayTree.prototype.exportKeys):
(SplayTree.prototype.splay_):
(SplayTree.Node):
(SplayTree.Node.prototype.traverse_):
(jscSetUp):
(jscTearDown):
(jscRun):
(averageAbovePercentile):
(printPercentile):

  • stress/splay-flash-access.js: Added.

(performance.now):
(this.Setup.setup.setup):
(this.TearDown.tearDown.tearDown):
(Benchmark):
(BenchmarkResult):
(BenchmarkResult.prototype.valueOf):
(BenchmarkSuite):
(alert):
(Math.random):
(BenchmarkSuite.ResetRNG):
(RunStep):
(BenchmarkSuite.RunSuites):
(BenchmarkSuite.CountBenchmarks):
(BenchmarkSuite.GeometricMean):
(BenchmarkSuite.GeometricMeanTime):
(BenchmarkSuite.AverageAbovePercentile):
(BenchmarkSuite.GeometricMeanLatency):
(BenchmarkSuite.FormatScore):
(BenchmarkSuite.prototype.NotifyStep):
(BenchmarkSuite.prototype.NotifyResult):
(BenchmarkSuite.prototype.NotifyError):
(BenchmarkSuite.prototype.RunSingleBenchmark):
(RunNextSetup):
(RunNextBenchmark):
(RunNextTearDown):
(BenchmarkSuite.prototype.RunStep):
(GeneratePayloadTree):
(GenerateKey):
(SplayUpdateStats):
(InsertNewNode):
(SplaySetup):
(SplayTearDown):
(SplayRun):
(SplayTree):
(SplayTree.prototype.isEmpty):
(SplayTree.prototype.insert):
(SplayTree.prototype.remove):
(SplayTree.prototype.find):
(SplayTree.prototype.findMax):
(SplayTree.prototype.findGreatestLessThan):
(SplayTree.prototype.exportKeys):
(SplayTree.prototype.splay_):
(SplayTree.Node):
(SplayTree.Node.prototype.traverse_):
(jscSetUp):
(jscTearDown):
(jscRun):
(averageAbovePercentile):
(printPercentile):

Source/JavaScriptCore:


This turns the collector thread's workflow into a state machine, so that the mutator thread can
run it directly. This reduces the amount of synchronization we do with the collector thread, and
means that most apps will never start the collector thread. The collector thread will still start
when we need to finish collecting and we don't have heap access.

In this new world, "stopping the world" means relinquishing control of collection to the mutator.
This means tracking who is conducting collection. I use the GCConductor enum to say who is
conducting. It's either GCConductor::Mutator or GCConductor::Collector. I use the term "conn" to
refer to the concept of conducting (having the conn, relinquishing the conn, taking the conn).
So, stopping the world means giving the mutator the conn. Releasing heap access means giving the
collector the conn.

This meant bringing back the conservative scan of the calling thread. It turns out that this
scan was too slow to be called on each GC increment because apparently setjmp() now does system
calls. So, I wrote our own callee save register saving for the GC. Then I had doubts about
whether or not it was correct, so I also made it so that the GC only rarely asks for the register
state. I think we still want to use my register saving code instead of setjmp because setjmp
seems to save things we don't need, and that could make us overly conservative.

It turns out that this new scheduling discipline makes the old space-time scheduler perform
better than the new stochastic space-time scheduler on systems with fewer than 4 cores. This is
because the mutator having the conn enables us to time the mutator<->collector context switches
by polling. The OS is never involved. So, we can use super precise timing. This allows the old
space-time schduler to shine like it hadn't before.

The splay results imply that this is all a good thing. On 2-core systems, this reduces pause
times by 40% and it increases throughput about 5%. On 1-core systems, this reduces pause times by
half and reduces throughput by 8%. On 4-or-more-core systems, this doesn't seem to have much
effect.

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

(JSC::CodeBlock::visitChildren):

  • dfg/DFGWorklist.cpp:

(JSC::DFG::Worklist::ThreadBody::ThreadBody):
(JSC::DFG::Worklist::dump):
(JSC::DFG::numberOfWorklists):
(JSC::DFG::ensureWorklistForIndex):
(JSC::DFG::existingWorklistForIndexOrNull):
(JSC::DFG::existingWorklistForIndex):

  • dfg/DFGWorklist.h:

(JSC::DFG::numberOfWorklists): Deleted.
(JSC::DFG::ensureWorklistForIndex): Deleted.
(JSC::DFG::existingWorklistForIndexOrNull): Deleted.
(JSC::DFG::existingWorklistForIndex): Deleted.

  • heap/CollectingScope.h: Added.

(JSC::CollectingScope::CollectingScope):
(JSC::CollectingScope::~CollectingScope):

  • heap/CollectorPhase.cpp: Added.

(JSC::worldShouldBeSuspended):
(WTF::printInternal):

  • heap/CollectorPhase.h: Added.
  • heap/EdenGCActivityCallback.cpp:

(JSC::EdenGCActivityCallback::lastGCLength):

  • heap/FullGCActivityCallback.cpp:

(JSC::FullGCActivityCallback::doCollection):
(JSC::FullGCActivityCallback::lastGCLength):

  • heap/GCConductor.cpp: Added.

(JSC::gcConductorShortName):
(WTF::printInternal):

  • heap/GCConductor.h: Added.
  • heap/GCFinalizationCallback.cpp: Added.

(JSC::GCFinalizationCallback::GCFinalizationCallback):
(JSC::GCFinalizationCallback::~GCFinalizationCallback):

  • heap/GCFinalizationCallback.h: Added.

(JSC::GCFinalizationCallbackFuncAdaptor::GCFinalizationCallbackFuncAdaptor):
(JSC::createGCFinalizationCallback):

  • heap/Heap.cpp:

(JSC::Heap::Thread::Thread):
(JSC::Heap::Heap):
(JSC::Heap::lastChanceToFinalize):
(JSC::Heap::gatherStackRoots):
(JSC::Heap::updateObjectCounts):
(JSC::Heap::sweepSynchronously):
(JSC::Heap::collectAllGarbage):
(JSC::Heap::collectAsync):
(JSC::Heap::collectSync):
(JSC::Heap::shouldCollectInCollectorThread):
(JSC::Heap::collectInCollectorThread):
(JSC::Heap::checkConn):
(JSC::Heap::runNotRunningPhase):
(JSC::Heap::runBeginPhase):
(JSC::Heap::runFixpointPhase):
(JSC::Heap::runConcurrentPhase):
(JSC::Heap::runReloopPhase):
(JSC::Heap::runEndPhase):
(JSC::Heap::changePhase):
(JSC::Heap::finishChangingPhase):
(JSC::Heap::stopThePeriphery):
(JSC::Heap::resumeThePeriphery):
(JSC::Heap::stopTheMutator):
(JSC::Heap::resumeTheMutator):
(JSC::Heap::stopIfNecessarySlow):
(JSC::Heap::collectInMutatorThread):
(JSC::Heap::waitForCollector):
(JSC::Heap::acquireAccessSlow):
(JSC::Heap::releaseAccessSlow):
(JSC::Heap::relinquishConn):
(JSC::Heap::finishRelinquishingConn):
(JSC::Heap::handleNeedFinalize):
(JSC::Heap::notifyThreadStopping):
(JSC::Heap::finalize):
(JSC::Heap::addFinalizationCallback):
(JSC::Heap::requestCollection):
(JSC::Heap::waitForCollection):
(JSC::Heap::updateAllocationLimits):
(JSC::Heap::didFinishCollection):
(JSC::Heap::collectIfNecessaryOrDefer):
(JSC::Heap::notifyIsSafeToCollect):
(JSC::Heap::preventCollection):
(JSC::Heap::performIncrement):
(JSC::Heap::markToFixpoint): Deleted.
(JSC::Heap::shouldCollectInThread): Deleted.
(JSC::Heap::collectInThread): Deleted.
(JSC::Heap::stopTheWorld): Deleted.
(JSC::Heap::resumeTheWorld): Deleted.

  • heap/Heap.h:

(JSC::Heap::machineThreads):
(JSC::Heap::lastFullGCLength):
(JSC::Heap::lastEdenGCLength):
(JSC::Heap::increaseLastFullGCLength):

  • heap/HeapInlines.h:

(JSC::Heap::mutatorIsStopped): Deleted.

  • heap/HeapStatistics.cpp: Removed.
  • heap/HeapStatistics.h: Removed.
  • heap/HelpingGCScope.h: Removed.
  • heap/IncrementalSweeper.cpp:

(JSC::IncrementalSweeper::stopSweeping):
(JSC::IncrementalSweeper::willFinishSweeping): Deleted.

  • heap/IncrementalSweeper.h:
  • heap/MachineStackMarker.cpp:

(JSC::MachineThreads::gatherFromCurrentThread):
(JSC::MachineThreads::gatherConservativeRoots):
(JSC::callWithCurrentThreadState):

  • heap/MachineStackMarker.h:
  • heap/MarkedAllocator.cpp:

(JSC::MarkedAllocator::allocateSlowCaseImpl):

  • heap/MarkedBlock.cpp:

(JSC::MarkedBlock::Handle::sweep):

  • heap/MarkedSpace.cpp:

(JSC::MarkedSpace::sweep):

  • heap/MutatorState.cpp:

(WTF::printInternal):

  • heap/MutatorState.h:
  • heap/RegisterState.h: Added.
  • heap/RunningScope.h: Added.

(JSC::RunningScope::RunningScope):
(JSC::RunningScope::~RunningScope):

  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::SlotVisitor):
(JSC::SlotVisitor::drain):
(JSC::SlotVisitor::drainFromShared):
(JSC::SlotVisitor::drainInParallelPassively):
(JSC::SlotVisitor::donateAll):
(JSC::SlotVisitor::donate):

  • heap/SlotVisitor.h:

(JSC::SlotVisitor::codeName):

  • heap/StochasticSpaceTimeMutatorScheduler.cpp:

(JSC::StochasticSpaceTimeMutatorScheduler::beginCollection):
(JSC::StochasticSpaceTimeMutatorScheduler::synchronousDrainingDidStall):
(JSC::StochasticSpaceTimeMutatorScheduler::timeToStop):

  • heap/SweepingScope.h: Added.

(JSC::SweepingScope::SweepingScope):
(JSC::SweepingScope::~SweepingScope):

  • jit/JITWorklist.cpp:

(JSC::JITWorklist::Thread::Thread):

  • jsc.cpp:

(GlobalObject::finishCreation):
(functionFlashHeapAccess):

  • runtime/InitializeThreading.cpp:

(JSC::initializeThreading):

  • runtime/JSCellInlines.h:

(JSC::JSCell::classInfo):

  • runtime/Options.cpp:

(JSC::overrideDefaults):

  • runtime/Options.h:
  • runtime/TestRunnerUtils.cpp:

(JSC::finalizeStatsAtEndOfTesting):

Source/WebCore:

Added new tests in JSTests.

The WebCore changes involve:

  • Refactoring around new header discipline.


  • Adding crazy GC APIs to window.internals to enable us to test the GC's runloop discipline.
  • ForwardingHeaders/heap/GCFinalizationCallback.h: Added.
  • ForwardingHeaders/heap/IncrementalSweeper.h: Added.
  • ForwardingHeaders/heap/MachineStackMarker.h: Added.
  • ForwardingHeaders/heap/RunningScope.h: Added.
  • bindings/js/CommonVM.cpp:
  • testing/Internals.cpp:

(WebCore::Internals::parserMetaData):
(WebCore::Internals::isReadableStreamDisturbed):
(WebCore::Internals::isGCRunning):
(WebCore::Internals::addGCFinalizationCallback):
(WebCore::Internals::stopSweeping):
(WebCore::Internals::startSweeping):

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

Source/WTF:


Extend the use of AbstractLocker so that we can use more locking idioms.

  • wtf/AutomaticThread.cpp:

(WTF::AutomaticThreadCondition::notifyOne):
(WTF::AutomaticThreadCondition::notifyAll):
(WTF::AutomaticThreadCondition::add):
(WTF::AutomaticThreadCondition::remove):
(WTF::AutomaticThreadCondition::contains):
(WTF::AutomaticThread::AutomaticThread):
(WTF::AutomaticThread::tryStop):
(WTF::AutomaticThread::isWaiting):
(WTF::AutomaticThread::notify):
(WTF::AutomaticThread::start):
(WTF::AutomaticThread::threadIsStopping):

  • wtf/AutomaticThread.h:
  • wtf/NumberOfCores.cpp:

(WTF::numberOfProcessorCores):

  • wtf/ParallelHelperPool.cpp:

(WTF::ParallelHelperClient::finish):
(WTF::ParallelHelperClient::claimTask):
(WTF::ParallelHelperPool::Thread::Thread):
(WTF::ParallelHelperPool::didMakeWorkAvailable):
(WTF::ParallelHelperPool::hasClientWithTask):
(WTF::ParallelHelperPool::getClientWithTask):

  • wtf/ParallelHelperPool.h:

Tools:


Make more tests collect continuously.

  • Scripts/run-jsc-stress-tests:
4:53 PM Changeset in webkit [212777] by achristensen@apple.com
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

Don't build libwebrtc on 32-bit architectures
https://bugs.webkit.org/show_bug.cgi?id=168692

Reviewed by Dan Bernstein.

  • Configurations/Base.xcconfig:
4:30 PM Changeset in webkit [212776] by Simon Fraser
  • 41 edits
    5 adds in trunk

Add support to PlatformCALayer/GraphicsLayerCA for subpixel-antialiased text, with a Setting and a MiniBrowser switch
https://bugs.webkit.org/show_bug.cgi?id=168620
<rdar://problem/30617772>

Reviewed by Tim Horton.
Source/WebCore:

Add a Setting for subpixel-antialiased layer text. Plumb this through GraphicsLayerCA and
PlatformCALayer, where it ultimately affects the layer contents format.

TileControllers are slightly special because we communicate with them via an Obj-C
WebTiledBackingLayer.

Test: compositing/contents-format/subpixel-antialiased-text-enabled.html

  • page/Settings.in:
  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::GraphicsLayer):
(WebCore::GraphicsLayer::dumpProperties):

  • platform/graphics/GraphicsLayer.h:

(WebCore::GraphicsLayer::supportsSubpixelAntialiasedText):
(WebCore::GraphicsLayer::setSupportsSubpixelAntialiasedText):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::setSupportsSubpixelAntialiasedText):
(WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers):
(WebCore::GraphicsLayerCA::updateSupportsSubpixelAntialiasedText):

  • platform/graphics/ca/GraphicsLayerCA.h:
  • platform/graphics/ca/PlatformCALayer.cpp:

(WebCore::PlatformCALayer::drawRepaintIndicator):

  • platform/graphics/ca/PlatformCALayer.h:
  • platform/graphics/ca/TileController.cpp:

(WebCore::TileController::setWantsDeepColorBackingStore):
(WebCore::TileController::setSupportsSubpixelAntialiasedText):
(WebCore::TileController::setTilesOpaque):

  • platform/graphics/ca/TileController.h:
  • platform/graphics/ca/TileGrid.cpp:

(WebCore::TileGrid::updateTileLayerProperties):

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

(PlatformCALayerCocoa::supportsSubpixelAntialiasedText):
(PlatformCALayerCocoa::setSupportsSubpixelAntialiasedText):
(layerContentsFormat):
(PlatformCALayerCocoa::updateContentsFormat):
(PlatformCALayer::drawLayerContents):

  • platform/graphics/ca/cocoa/WebTiledBackingLayer.h:
  • platform/graphics/ca/cocoa/WebTiledBackingLayer.mm:

(-[WebTiledBackingLayer drawsAsynchronously]):
(-[WebTiledBackingLayer setSupportsSubpixelAntialiasedText:]):
(-[WebTiledBackingLayer supportsSubpixelAntialiasedText]):

  • platform/spi/cocoa/QuartzCoreSPI.h:
  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::createGraphicsLayer):

Source/WebKit/mac:

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

(+[WebPreferences initialize]):
(-[WebPreferences subpixelAntialiasedLayerTextEnabled]):
(-[WebPreferences setSubpixelAntialiasedLayerTextEnabled:]):

  • WebView/WebPreferencesPrivate.h:

Source/WebKit2:

Add a Setting for subpixel-antialiased layer text. Plumb this through GraphicsLayerCA and
PlatformCALayer, where it ultimately affects the layer contents format.

This is not supported with UI-side compositing.

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

(WKPreferencesSetSubpixelAntialiasedLayerTextEnabled):
(WKPreferencesGetSubpixelAntialiasedLayerTextEnabled):

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

(-[WKPreferences _subpixelAntialiasedLayerTextEnabled]):
(-[WKPreferences _setSubpixelAntialiasedLayerTextEnabled:]):

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

(WebKit::WebPage::updatePreferences):

  • WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:

(WebKit::PlatformCALayerRemote::supportsSubpixelAntialiasedText):
(WebKit::PlatformCALayerRemote::setSupportsSubpixelAntialiasedText):

  • WebProcess/WebPage/mac/PlatformCALayerRemote.h:
  • WebProcess/WebPage/mac/PlatformCALayerRemoteTiledBacking.cpp:

(WebKit::PlatformCALayerRemoteTiledBacking::supportsSubpixelAntialiasedText):
(WebKit::PlatformCALayerRemoteTiledBacking::setSupportsSubpixelAntialiasedText):

  • WebProcess/WebPage/mac/PlatformCALayerRemoteTiledBacking.h:

Tools:

Add a setting that allows one to toggle subpixel-antialiased layer text on and off.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebPreferencesToConsistentValues):

  • MiniBrowser/mac/SettingsController.h:
  • MiniBrowser/mac/SettingsController.m:

(-[SettingsController _populateMenu]):
(-[SettingsController validateMenuItem:]):
(-[SettingsController toggleSubpixelAntialiasedLayerTextEnabled:]):
(-[SettingsController subpixelAntialiasedLayerTextEnabled]):

  • MiniBrowser/mac/WK1BrowserWindowController.m:

(-[WK1BrowserWindowController didChangeSettings]):

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController didChangeSettings]):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):

3:57 PM Changeset in webkit [212775] by sbarati@apple.com
  • 6 edits
    2 adds in trunk/Source/JavaScriptCore

Air should have a disassembly mode that dumps IR and assembly intermixed
https://bugs.webkit.org/show_bug.cgi?id=168629

Reviewed by Filip Pizlo.

This will make dumping FTL disassembly dump Air intermixed
with the assembly generated by each Air Inst. This is similar
to how dumpDFGDisassembly dumps the generated assembly for each
Node.

Here is what the output will look like:

Generated FTL JIT code for foo#CUaFiQ:[0x10b76c960->0x10b76c2d0->0x10b7b6da0, FTLFunctionCall, 40 (NeverInline)], instruction count = 40:
BB#0: ; frequency = 1.000000

0x469004e02e00: push %rbp
0x469004e02e01: mov %rsp, %rbp
0x469004e02e04: add $0xffffffffffffffd0, %rsp

Move $0x10b76c960, %rax, $4487301472(@16)

0x469004e02e08: mov $0x10b76c960, %rax

Move %rax, 16(%rbp), @19

0x469004e02e12: mov %rax, 0x10(%rbp)

Patch &Patchpoint2, %rbp, %rax, @20

0x469004e02e16: lea -0x50(%rbp), %rax
0x469004e02e1a: mov $0x1084081e0, %r11
0x469004e02e24: cmp %rax, (%r11)
0x469004e02e27: ja 0x469004e02e9a

Move 56(%rbp), %rdx, @23

0x469004e02e2d: mov 0x38(%rbp), %rdx

Move $0xffff000000000002, %rax, $-281474976710654(@15)

0x469004e02e31: mov $0xffff000000000002, %rax

Patch &BranchTest64(3,SameAsRep)1, NonZero, %rdx, %rax, %rdx, @26

0x469004e02e3b: test %rdx, %rax
0x469004e02e3e: jnz 0x469004e02f08

Move 48(%rbp), %rax, @29

0x469004e02e44: mov 0x30(%rbp), %rax

Move %rax, %rcx, @31

0x469004e02e48: mov %rax, %rcx

Xor64 $6, %rcx, @31

0x469004e02e4b: xor $0x6, %rcx

Patch &BranchTest64(3,SameAsRep)1, NonZero, %rcx, $-2, %rax, @35

0x469004e02e4f: test $0xfffffffffffffffe, %rcx
0x469004e02e56: jnz 0x469004e02f12

Patch &Branch32(3,SameAsRep)0, NotEqual, (%rdx), $266, %rdx, @45

0x469004e02e5c: cmp $0x10a, (%rdx)
0x469004e02e62: jnz 0x469004e02f1c

BranchTest32 NonZero, %rax, $1, @49

0x469004e02e68: test $0x1, %al
0x469004e02e6a: jnz 0x469004e02e91

Successors: #3, #1

BB#1: ; frequency = 1.000000

Predecessors: #0

Move $0, %rcx, @65

0x469004e02e70: xor %rcx, %rcx

Jump @66

Successors: #2

BB#2: ; frequency = 1.000000

Predecessors: #1, #3

Move 24(%rdx), %rax, @58

0x469004e02e73: mov 0x18(%rdx), %rax

Patch &BranchAdd32(4,ForceLateUseUnlessRecoverable)3, Overflow, %rcx, %rax, %rcx, %rcx, %rax, @60

0x469004e02e77: add %eax, %ecx
0x469004e02e79: jo 0x469004e02f26

Move $0xffff000000000000, %rax, $-281474976710656(@14)

0x469004e02e7f: mov $0xffff000000000000, %rax

Add64 %rcx, %rax, %rax, @62

0x469004e02e89: add %rcx, %rax

Ret64 %rax, @63

0x469004e02e8c: mov %rbp, %rsp
0x469004e02e8f: pop %rbp
0x469004e02e90: ret

BB#3: ; frequency = 1.000000

Predecessors: #0

Move 16(%rdx), %rcx, @52

0x469004e02e91: mov 0x10(%rdx), %rcx

Jump @55

0x469004e02e95: jmp 0x469004e02e73

Successors: #2

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • b3/air/AirCode.h:

(JSC::B3::Air::Code::setDisassembler):
(JSC::B3::Air::Code::disassembler):

  • b3/air/AirDisassembler.cpp: Added.

(JSC::B3::Air::Disassembler::startEntrypoint):
(JSC::B3::Air::Disassembler::endEntrypoint):
(JSC::B3::Air::Disassembler::startLatePath):
(JSC::B3::Air::Disassembler::endLatePath):
(JSC::B3::Air::Disassembler::startBlock):
(JSC::B3::Air::Disassembler::addInst):
(JSC::B3::Air::Disassembler::dump):

  • b3/air/AirDisassembler.h: Added.
  • b3/air/AirGenerate.cpp:

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

  • ftl/FTLCompile.cpp:

(JSC::FTL::compile):

3:49 PM Changeset in webkit [212774] by aakash_jain@apple.com
  • 2 edits in trunk/Source/WebKit/mac

Export various NSString symbols from WebUIDelegatePrivate.h
https://bugs.webkit.org/show_bug.cgi?id=168679

Reviewed by Joseph Pecoraro.

  • WebKit.exp:
3:25 PM Changeset in webkit [212773] by Chris Dumez
  • 6 edits in trunk/Source/WebCore

REGRESSION (203941): iAd Producer: Clicking buttons in Preview does not work
https://bugs.webkit.org/show_bug.cgi?id=168677
<rdar://problem/30640101>

Reviewed by Ryosuke Niwa.

Add quirk to initMouseEvent to unbreak iAd Producer.

  • dom/MouseEvent.cpp:

(WebCore::MouseEvent::initMouseEventQuirk):

  • dom/MouseEvent.h:
  • dom/MouseEvent.idl:
  • platform/RuntimeApplicationChecks.h:
  • platform/RuntimeApplicationChecks.mm:

(WebCore::MacApplication::isIADProducer):

3:23 PM Changeset in webkit [212772] by achristensen@apple.com
  • 3 edits in trunk/Source/ThirdParty/libwebrtc

[Xcode] libwebrtc installhdrs doesn’t install any of the headers
https://bugs.webkit.org/show_bug.cgi?id=168634

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

  • Configurations/libwebrtc.xcconfig:
  • libwebrtc.xcodeproj/project.pbxproj:
3:18 PM Changeset in webkit [212771] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

AudioSampleDataSource doesn't need to use the m_scratchBuffer on the pulling thread
https://bugs.webkit.org/show_bug.cgi?id=168640

Reviewed by Eric Carlson.

Rather than copying the pulled data into a scratch buffer, applying a volume transformation
and then copying back out, just do the volume transformation in-place in the destination
buffer.

  • platform/audio/mac/AudioSampleDataSource.cpp:

(WebCore::AudioSampleDataSource::pullSamplesInternal):

3:16 PM Changeset in webkit [212770] by aakash_jain@apple.com
  • 2 edits in trunk/Source/WebKit/mac

Export symbols for various classes present in webkit SPI
https://bugs.webkit.org/show_bug.cgi?id=168674

Reviewed by Dan Bernstein.

  • WebKit.exp:
3:16 PM Changeset in webkit [212769] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

[WebRTC] Implement Incoming libwebrtc audio source support.
https://bugs.webkit.org/show_bug.cgi?id=167961

Patch by Youenn Fablet <youenn@apple.com> on 2017-02-21
Reviewed by Eric Carlson.

Hook libwebrtc incoming audio source into WebCore audio rendering path.
Manually testing that muted sources produce data with zeros and unmuted sources provide data with non zeros.

  • platform/mediastream/mac/RealtimeIncomingAudioSource.cpp:

(WebCore::RealtimeIncomingAudioSource::create):
(WebCore::streamDescription):
(WebCore::RealtimeIncomingAudioSource::OnData):
(WebCore::RealtimeIncomingAudioSource::audioSourceProvider):

  • platform/mediastream/mac/RealtimeIncomingAudioSource.h:
3:07 PM Changeset in webkit [212768] by akling@apple.com
  • 8 edits
    2 deletes in trunk/Source/WebKit

[iOS] Remove old WebKit1 MemoryMeasure helper.
<https://webkit.org/b/168675>

Reviewed by Sam Weinig.

Source/WebKit:

  • WebKit.xcodeproj/project.pbxproj:

Source/WebKit/ios:

Remove the MemoryMeasure logging helper from the WebKit1 days. It was using an old way
of measuring memory, and we were only using it in a single place anyway.

  • Misc/MemoryMeasure.h: Removed.
  • Misc/MemoryMeasure.mm: Removed.
  • WebKit.iOS.exp:

Source/WebKit/mac:

  • Configurations/WebKitLegacy.xcconfig:
  • Misc/WebCache.mm:

(+[WebCache emptyInMemoryResources]):

  • WebView/WebView.mm:
2:57 PM Changeset in webkit [212767] by matthew_hanson@apple.com
  • 3 edits
    2 adds in branches/safari-603.1.30.1-branch

Merge r212737. rdar://problem/30636288

2:55 PM Changeset in webkit [212766] by wilander@apple.com
  • 6 edits in trunk/Source/WebKit2

Resource Load Statistics: Only scan website data store once per session ID + reinstate removal counting
https://bugs.webkit.org/show_bug.cgi?id=168541

Reviewed by Alex Christensen.

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::deleteWebsiteDataForTopPrivatelyOwnedDomainsInAllPersistentDataStores):

The CallbackAggregator now merges a list of domains for which we
have removed data records and eventually reports this back to the
caller.

  • UIProcess/WebProcessProxy.h:
  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::removeDataRecords):

Now reports back to its WebCore::ResourceLoadStatisticsStore
which domains have had data records removed.

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::fetchDataForTopPrivatelyOwnedDomains):

The completion handler now handles data record removal counting.

(WebKit::WebsiteDataStore::removeDataForTopPrivatelyOwnedDomains):

The completion handler now handles data record removal counting.

  • UIProcess/WebsiteData/WebsiteDataStore.h:
2:54 PM Changeset in webkit [212765] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Fix ImageBitmap comment to not insert a <canvas>.

  • features.json:
2:52 PM Changeset in webkit [212764] by matthew_hanson@apple.com
  • 1 edit in branches/safari-603.1.30.0-branch/Source/WebCore/platform/SplitTestInitializer.cpp

Follow-up fix for rdar://problem/30553220

2:47 PM Changeset in webkit [212763] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603.1.30.4-branch/Source

Versioning.

2:45 PM Changeset in webkit [212762] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603.1.30.3-branch/Source

Versioning.

2:44 PM Changeset in webkit [212761] by commit-queue@webkit.org
  • 22 edits in trunk/Source/WebInspectorUI

Web Inspector: Prefer Resources tab over Network tab when showing files
https://bugs.webkit.org/show_bug.cgi?id=168021

Patch by Devin Rousso <Devin Rousso> on 2017-02-21
Reviewed by Timothy Hatcher.

  • UserInterface/Base/Main.js:

(WebInspector.handlePossibleLinkClick):
(WebInspector.openURL):
Add options parameter to provide greater customization.

  • UserInterface/Views/TabBrowser.js:

(WebInspector.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
Add logic for ignoreNetworkTab option that will ignore instances of NetworkTabContentView.

  • UserInterface/Controllers/BreakpointPopoverController.js:

(WebInspector.BreakpointPopoverController.prototype.appendContextMenuItems):

  • UserInterface/Protocol/InspectorFrontendAPI.js:

(InspectorFrontendAPI.showMainResourceForFrame):

  • UserInterface/Views/CSSStyleDeclarationTextEditor.js:

(WebInspector.CSSStyleDeclarationTextEditor.tokenTrackingControllerHighlightedRangeWasClicked.showRangeInSourceCode):

  • UserInterface/Views/ComputedStyleDetailsPanel.js:

(WebInspector.ComputedStyleDetailsPanel.prototype.cssStyleDeclarationTextEditorShowProperty):

  • UserInterface/Views/ContextMenuUtilities.js:

(WebInspector.appendContextMenuItemsForSourceCode):

  • UserInterface/Views/DOMTreeContentView.js:

(WebInspector.DOMTreeContentView.prototype._mouseWasClicked.followLink):

  • UserInterface/Views/DOMTreeElement.js:

(WebInspector.DOMTreeElement.prototype._populateTagContextMenu):
(WebInspector.DOMTreeElement.prototype._showCustomElementDefinition):

  • UserInterface/Views/DebuggerSidebarPanel.js:

(WebInspector.DebuggerSidebarPanel.prototype._treeSelectionDidChange):

  • UserInterface/Views/NetworkTimelineView.js:

(WebInspector.NetworkTimelineView.prototype.showContentViewForTreeElement):

  • UserInterface/Views/ObjectTreeBaseTreeElement.js:

(WebInspector.ObjectTreeBaseTreeElement.prototype._appendMenusItemsForObject):

  • UserInterface/Views/ResourceSidebarPanel.js:

(WebInspector.ResourceSidebarPanel.prototype._treeSelectionDidChange):

  • UserInterface/Views/ResourceTimelineDataGridNode.js:

(WebInspector.ResourceTimelineDataGridNode.prototype._dataGridNodeGoToArrowClicked):

  • UserInterface/Views/SearchSidebarPanel.js:

(WebInspector.SearchSidebarPanel.prototype._treeSelectionDidChange):
(WebInspector.SearchSidebarPanel.prototype._treeElementDoubleClick):

  • UserInterface/Views/SourceCodeTextEditor.js:

(WebInspector.SourceCodeTextEditor.prototype.tokenTrackingControllerHighlightedRangeWasClicked):

  • UserInterface/Views/TimelineDataGrid.js:

(WebInspector.TimelineDataGrid.prototype._popoverCallStackTreeSelectionDidChange):

  • UserInterface/Views/VisualStyleSelectorTreeItem.js:

(WebInspector.VisualStyleSelectorTreeItem.prototype.populateContextMenu):
Change arguments of functions to change content views to ignore the Network tab.

  • UserInterface/Views/NetworkGridContentView.js:

(WebInspector.NetworkGridContentView.prototype.hasRepresentedObject):

  • UserInterface/Views/NetworkSidebarPanel.js:

(WebInspector.NetworkSidebarPanel.prototype.hasRepresentedObject):

  • UserInterface/Views/NetworkTabContentView.js:

(WebInspector.NetworkTabContentView.prototype.canShowRepresentedObject):
Ensure that the Network tab can only display resources that it has entries for in its view.

2:44 PM Changeset in webkit [212760] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603.1.30.2-branch/Source

Versioning.

2:43 PM Changeset in webkit [212759] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603.1.30.1-branch/Source

Versioning.

2:40 PM Changeset in webkit [212758] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603.1.30.0-branch/Source

Versioning.

2:40 PM Changeset in webkit [212757] by wilander@apple.com
  • 28 edits
    4 copies
    24 adds in trunk

Resource Load Statistics: Add alternate classification method
https://bugs.webkit.org/show_bug.cgi?id=168347
<rdar://problem/30352793>

Reviewed by Alex Christensen.

Source/WebCore:

This patch only adds test infrastructure in WebCore.

Tests: http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics.html

http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins.html
http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins.html
http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to.html
http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics.html
http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins.html
http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins.html
http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to.html

  • loader/ResourceLoadObserver.cpp:

(WebCore::ResourceLoadObserver::setSubframeUnderTopFrameOrigin):
(WebCore::ResourceLoadObserver::setSubresourceUnderTopFrameOrigin):
(WebCore::ResourceLoadObserver::setSubresourceUniqueRedirectTo):

  • loader/ResourceLoadObserver.h:

Source/WebKit2:

This patch adds a CorePrediction-based classifier to the WebResourceLoadStatisticsStore.
The CorePrediction framework is introduced as a dependency for macOS and iOS. The patch
also adds functions to support layout tests of the feature.

  • Configurations/BaseTarget.xcconfig:
  • Configurations/WebKit.xcconfig:

Added dependency on CorePrediction.

  • Platform/classifier: Added.
  • Platform/classifier/ResourceLoadStatisticsClassifier.h: Added.

Pulls in the Cocoa-specific classifier for Cocoa-based platforms.

(WebKit::ResourceLoadStatisticsClassifier::ResourceLoadStatisticsClassifier):

  • Platform/classifier/ResourceLoadStatisticsClassifierBase.cpp: Added.

(WebKit::ResourceLoadStatisticsClassifierBase::hasPrevalentResourceCharacteristics):

Shared classifier logic.

(WebKit::ResourceLoadStatisticsClassifierBase::classifyWithVectorThreshold):

Fallback classifier for when we don't have CorePrediction.

  • Platform/classifier/ResourceLoadStatisticsClassifierBase.h: Added.

(WebKit::ResourceLoadStatisticsClassifierBase::ResourceLoadStatisticsClassifierBase):
(WebKit::ResourceLoadStatisticsClassifierBase::~ResourceLoadStatisticsClassifierBase):

  • Platform/classifier/cocoa: Added.
  • Platform/classifier/cocoa/CorePredictionSPI.h: Added.

Includes CorePrediction if available, otherwise declares needed symbols.
Always redeclares the functions so we'll get a build error if
CorePrediction changes.

  • Platform/classifier/cocoa/ResourceLoadStatisticsClassifierCocoa.cpp: Added.

(WebKit::ResourceLoadStatisticsClassifier::classify):
(WebKit::ResourceLoadStatisticsClassifier::storagePath):
(WebKit::ResourceLoadStatisticsClassifier::shouldUseCorePrediction):

The new classifier for Cocoa platforms.

  • Platform/classifier/cocoa/ResourceLoadStatisticsClassifierCocoa.h: Added.

(WebKit::ResourceLoadStatisticsClassifier::ResourceLoadStatisticsClassifier):

  • PlatformGTK.cmake:

Added Platform/classifier directory and ResourceLoadStatisticsClassifierBase.cpp.

  • PlatformMac.cmake:

Added Platform/classifier and Platform/classifier/cocoa directories, and
source files ResourceLoadStatisticsClassifierBase.cpp and
ResourceLoadStatisticsClassifierCocoa.cpp

  • Resources/ResourceLoadStatistics: Added.
  • Resources/ResourceLoadStatistics/corePrediction_model: Added.

Model file to load into CorePrediction.

  • UIProcess/API/C/WKResourceLoadStatisticsManager.cpp:

(WKResourceLoadStatisticsManagerSetSubframeUnderTopFrameOrigin):
(WKResourceLoadStatisticsManagerSetSubresourceUnderTopFrameOrigin):
(WKResourceLoadStatisticsManagerSetSubresourceUniqueRedirectTo):

Test infrastructure.

  • UIProcess/API/C/WKResourceLoadStatisticsManager.h:
  • UIProcess/WebResourceLoadStatisticsManager.cpp:

(WebKit::WebResourceLoadStatisticsManager::setSubframeUnderTopFrameOrigin):
(WebKit::WebResourceLoadStatisticsManager::setSubresourceUnderTopFrameOrigin):
(WebKit::WebResourceLoadStatisticsManager::setSubresourceUniqueRedirectTo):

Test infrastructure.

  • UIProcess/WebResourceLoadStatisticsManager.h:
  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):

Renamed m_storagePath to m_statisticsStoragePath for clarity.

(WebKit::WebResourceLoadStatisticsStore::classifyResource):

Now calls the classifier through its ResourceLoadStatisticsClassifier
member variable.

(WebKit::WebResourceLoadStatisticsStore::persistentStoragePath):

Renamed m_storagePath to m_statisticsStoragePath for clarity.

(WebKit::WebResourceLoadStatisticsStore::writeEncoderToDisk):

Renamed m_storagePath to m_statisticsStoragePath for clarity.

(WebKit::WebResourceLoadStatisticsStore::hasPrevalentResourceCharacteristics): Deleted.

  • UIProcess/WebResourceLoadStatisticsStore.h:
  • WebKit2.xcodeproj/project.pbxproj:

Added the new classifier source files under Platform/classifier and the
corePrediction_model file under Resources/ResourceLoadStatistics.

Source/WTF:

  • wtf/Platform.h:

Added support for HAVE(CORE_PREDICTION).

Tools:

Added three testRunner functions to facilitate layout tests:

  • setStatisticsSubframeUnderTopFrameOrigin()
  • setStatisticsSubresourceUnderTopFrameOrigin()
  • setStatisticsSubresourceUniqueRedirectTo()
  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setStatisticsSubframeUnderTopFrameOrigin):
(WTR::TestRunner::setStatisticsSubresourceUnderTopFrameOrigin):
(WTR::TestRunner::setStatisticsSubresourceUniqueRedirectTo):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::setStatisticsSubframeUnderTopFrameOrigin):
(WTR::TestController::setStatisticsSubresourceUnderTopFrameOrigin):
(WTR::TestController::setStatisticsSubresourceUniqueRedirectTo):

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

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

WebKitLibraries:

  • WebKitPrivateFrameworkStubs/iOS/10/CorePrediction.framework: Added.
  • WebKitPrivateFrameworkStubs/iOS/10/CorePrediction.framework/CorePrediction.tbd: Added.

Stubs for private framework.

LayoutTests:

  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics.html: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins.html: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins.html: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to.html: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics.html: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins.html: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins.html: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to.html: Added.
  • platform/gtk/TestExpectations:

The whole http/tests/loading/resourceLoadStatistics marked as crashing based on
Carlos Garcia Campos's assessment in https://bugs.webkit.org/show_bug.cgi?id=168171.

  • platform/wk2/TestExpectations:

The above tests are only valid for WebKit2. Marked as [ Pass ].

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

Fix CMake build.

  • PlatformMac.cmake:
2:13 PM Changeset in webkit [212755] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Add Media Streams and Capture to features.json.

  • features.json:
2:13 PM Changeset in webkit [212754] by matthew_hanson@apple.com
  • 1 copy in branches/safari-603.1.30.4-branch

New Branch.

2:12 PM Changeset in webkit [212753] by matthew_hanson@apple.com
  • 1 copy in branches/safari-603.1.30.3-branch

New Branch.

2:12 PM Changeset in webkit [212752] by matthew_hanson@apple.com
  • 1 copy in branches/safari-603.1.30.2-branch

New Branch.

2:11 PM Changeset in webkit [212751] by matthew_hanson@apple.com
  • 1 copy in branches/safari-603.1.30.1-branch

New Branch.

2:10 PM Changeset in webkit [212750] by matthew_hanson@apple.com
  • 1 copy in branches/safari-603.1.30.0-branch

New Branch.

2:07 PM Changeset in webkit [212749] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WebCore

Clarify the status of 'webkitSubtle' and 'subtle' attributes on the WebCrypto API.

  • features.json:
1:53 PM Changeset in webkit [212748] by commit-queue@webkit.org
  • 9 edits in trunk

[Readable Streams API] Add ReadableStreamBYOBRequest view getter
https://bugs.webkit.org/show_bug.cgi?id=168652

Patch by Romain Bellessort <romain.bellessort@crf.canon.fr> on 2017-02-21
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Updated test expectations.

  • web-platform-tests/streams/readable-byte-streams/general-expected.txt:
  • web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt:

Source/WebCore:

Implemented getter for ReadableStreamBYOBRequest view attribute.

Added 1 test checking that view length corresponds to autoAllocateChunkSize.
Also updated test expectations for W3C imported tests.

  • Modules/streams/ReadableByteStreamInternals.js:

(isReadableStreamBYOBRequest): Added.

  • Modules/streams/ReadableStreamBYOBRequest.js:

(view): Added.

LayoutTests:

Added 1 test checking that view length corresponds to autoAllocateChunkSize.

  • streams/readable-stream-byob-request-expected.txt: Updated.
  • streams/readable-stream-byob-request.js: Added 1 test.
1:47 PM Changeset in webkit [212747] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Clarify the status of 'webkitSubtle' and 'subtle' attributes on the WebCrypto API.

  • features.json:
1:30 PM Changeset in webkit [212746] by commit-queue@webkit.org
  • 8 edits in trunk/Source/WebKit2

[WebRTC][Mac] Network process sandbox does not allow WebRTC networking
https://bugs.webkit.org/show_bug.cgi?id=168594

Patch by Youenn Fablet <youenn@apple.com> on 2017-02-21
Reviewed by Brent Fulgham.

UIProcess was passing a boolean to know whether WebRTC networking is allowed or not to the network process.
This boolean was known to late for the sandbox to be relaxed.
A sandbox extension is now used instead to relax the sandbox.

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcessCreationParameters.cpp:

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

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

(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):

  • NetworkProcess/mac/NetworkProcessMac.mm:

(WebKit::NetworkProcess::platformInitializeNetworkProcess):
(WebKit::NetworkProcess::initializeSandbox):

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeNetworkProcess):

1:29 PM Changeset in webkit [212745] by commit-queue@webkit.org
  • 19 edits
    2 adds in trunk/Source

[WebRTC] ICE candidates should be filtered according a policy
https://bugs.webkit.org/show_bug.cgi?id=168348

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

Source/WebCore:

Covered by manual tests. Should be covered in the future by layout tests with dedicated internals API.

Adding support for ICE candidate filtering at RTCPeerConnection level.
If ICE candidate filtering is on (by default), host candidates are stored and not sent immediately.
Reflexive candidates are purged from raddr information to not leak the host IP address.

Stored candidates may be advertised to the JS layer if RTCController is notified of a change of filtering policy.
To implement that, PeerConnectionBackend stores all filtered out candidates and RTCPeerConnection register
themselves to RTCController to get notifications of filtering policy changes.

Making RTCPeerConnection use setPendingActivity throughout its lifetime.
This ensures it does not get collected until the page is off or close() is called on the object.

Adding support for enumerating or not all interfaces at libwebrtc level.
This choice is done at creation of the peer connection.

  • Modules/mediastream/PeerConnectionBackend.cpp:

(WebCore::PeerConnectionBackend::enableICECandidateFiltering):
(WebCore::PeerConnectionBackend::disableICECandidateFiltering):
(WebCore::filterICECandidate):
(WebCore::PeerConnectionBackend::newICECandidate):

  • Modules/mediastream/PeerConnectionBackend.h:
  • Modules/mediastream/RTCController.cpp: Added.

(WebCore::RTCController::remove):
(WebCore::RTCController::add):
(WebCore::RTCController::disableICECandidateFiltering):
(WebCore::RTCController::enableICECandidateFiltering):

  • Modules/mediastream/RTCController.h: Added.
  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::create):
(WebCore::RTCPeerConnection::close):
(WebCore::RTCPeerConnection::rtcController):
(WebCore::RTCPeerConnection::registerToController):
(WebCore::RTCPeerConnection::unregisterFromController):

  • Modules/mediastream/RTCPeerConnection.h:
  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::LibWebRTCMediaEndpoint::OnIceCandidate):

  • WebCore.xcodeproj/project.pbxproj:
  • page/Page.h:

(WebCore::Page::rtcController):

  • platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:

(WebCore::LibWebRTCProvider::createPeerConnection):

  • platform/mediastream/libwebrtc/LibWebRTCProvider.h:

Source/WebKit2:

Adding the possibility for the UI process to control the ICE candidate filtering and whether libwebrtc can
enumerate all interfaces or not.

Disabling ICE candidate filtering for the moment.
Enabling to enumerate all interfaces for the moment.

In the future, ICE candidate filtering should be tied to getUserMedia.
Interface enumeration should be disabled with the default configuration.
We should do that once we have sufficient testing in various network infrastructures.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::initializeWebPage):

  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::disableICECandidateFiltering):
(WebKit::WebPage::enableICECandidateFiltering):
(WebKit::WebPage::disableEnumeratingAllNetworkInterfaces):
(WebKit::WebPage::enableEnumeratingAllNetworkInterfaces):

  • WebProcess/WebPage/WebPage.messages.in:
1:20 PM Changeset in webkit [212744] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed, update WebCrypto API feature status.

  • features.json:
1:15 PM Changeset in webkit [212743] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Fix the bad JSON.

  • features.json:
1:04 PM Changeset in webkit [212742] by akling@apple.com
  • 10 edits in trunk/Source

[iOS] WebKit1 should use shared memory pressure handler code.
<https://webkit.org/b/168653>

Reviewed by Antti Koivisto.

Source/WebCore:

Remove iOS WebKit1 specific members and code from MemoryPressureHandler in favor
of using the same code that iOS WebKit2 and macOS WebKit uses.

  • page/cocoa/MemoryReleaseCocoa.mm:

(WebCore::platformReleaseMemory): Add two cleanup calls that were only in the iOS WebView code.

  • platform/MemoryPressureHandler.h:

(WebCore::MemoryPressureHandler::m_releaseMemoryBlock): Deleted.

  • platform/cocoa/MemoryPressureHandlerCocoa.mm:

(WebCore::respondToMemoryPressureCallback): Deleted.
(WebCore::MemoryPressureHandler::installMemoryReleaseBlock): Deleted.
(WebCore::MemoryPressureHandler::setReceivedMemoryPressure): Deleted.
(WebCore::MemoryPressureHandler::clearMemoryPressure): Deleted.
(WebCore::MemoryPressureHandler::shouldWaitForMemoryClearMessage): Deleted.
(WebCore::MemoryPressureHandler::respondToMemoryPressureIfNeeded): Deleted.

Source/WebKit/ios:

  • Misc/WebUIKitSupport.mm:

(WebKitInitialize): Don't unconditionally install a memory warning handler just
because the framework is loaded.

Source/WebKit/mac:

Register a WebThread-aware memory callback with the shared MemoryPressureHandler
and get rid of the old iOS WebKit1 specific implementation. Some of it was even
dead code since MobileSafari has been using WebKit2 for quite a while.

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

(WebInstallMemoryPressureHandler):
(+[WebView _handleMemoryWarning]): Deleted.
(+[WebView registerForMemoryNotifications]): Deleted.
(+[WebView releaseFastMallocMemoryOnCurrentThread]): Deleted.
(+[WebView garbageCollectNow]): Deleted.
(+[WebView purgeInactiveFontData]): Deleted.
(+[WebView drainLayerPool]): Deleted.
(+[WebView discardAllCompiledCode]): Deleted.
(+[WebView _clearMemoryPressure]): Deleted.
(+[WebView _shouldWaitForMemoryClearMessage]): Deleted.

  • WebView/WebViewPrivate.h:
1:03 PM Changeset in webkit [212741] by Jonathan Bedard
  • 2 edits
    2 adds in trunk/Tools

webkitpy: Refactor Device class
https://bugs.webkit.org/show_bug.cgi?id=168332

Reviewed by Alexey Proskuryakov.

Separate the more specific SimulatedDevice from the abstract
idea of a device.

  • Scripts/webkitpy/xcode/device.py: Added.

(Device): Base device class.
(Device.init): Initialize _host, name and udid.
(Device.install_app): Function declaration.
(Device.launch_app): Ditto.
(Device.eq): Compare two devices by udid.
(Device.ne): Ditto.
(Device.repr): Return device name and udid in formatted string.

  • Scripts/webkitpy/xcode/simulated_device.py: Copied from Tools/Scripts/webkitpy/xcode/simulator.py.

(SimulatedDevice):
(SimulatedDevice.init): Call Device.init first.
(SimulatedDevice.delete): Device -> SimulatedDevice.
(SimulatedDevice.reset): Ditto.
(SimulatedDevice.eq): Moved to device.py.
(SimulatedDevice.ne): Ditto.
(SimulatedDevice.repr): Call Device repr first.
(DeviceType): Kept in Scripts/webkitpy/xcode/simulator.py.
(Runtime): Kept in Scripts/webkitpy/xcode/simulator.py.
(Device): Renamed SimulatedDevice.
(Simulator): Kept in Scripts/webkitpy/xcode/simulator.py.

  • Scripts/webkitpy/xcode/simulator.py:

(Simulator): Define Simulator.Device class as None.
(Simulator.init): Import SimulatedDevice as Simulator.Device.
(Simulator.delete_device): Use Simulator.Device.
(Simulator.reset_device): Ditto.
(Simulator._parse_devices): Ditto.
(Simulator.lookup_or_create_device): Make
(Device): Moved to simulated_device as SimulatedDevice.

12:57 PM Changeset in webkit [212740] by matthew_hanson@apple.com
  • 3 edits
    2 adds in branches/safari-603-branch

Merge r212737. rdar://problem/30636274

12:15 PM Changeset in webkit [212739] by andersca@apple.com
  • 2 edits in trunk/Source/WebCore

Fix two failing WebKit legacy tests
https://bugs.webkit.org/show_bug.cgi?id=168667

Reviewed by Tim Horton.

Handle the NSPasteboardTypeString type.

  • platform/mac/PasteboardMac.mm:

(WebCore::Pasteboard::read):
(WebCore::addHTMLClipboardTypesForCocoaType):

12:12 PM Changeset in webkit [212738] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Add Web Audio and Web MIDI to features.json.

  • features.json:
12:06 PM Changeset in webkit [212737] by Antti Koivisto
  • 3 edits
    2 adds in trunk

REGRESSION(r207669): Crash after mutating selector text
https://bugs.webkit.org/show_bug.cgi?id=168655
<rdar://problem/30632111>

Reviewed by Brent Fulgham.

Source/WebCore:

Test: fast/css/selector-text-mutation-crash.html

  • style/StyleScope.cpp:

(WebCore::Style::Scope::scheduleUpdate):

Clear the style resolver immediately if style sheet content changes. The resolver may
have data structures that point to the old sheet contents.

The resolver would get wiped anyway when the scheduled update actually occurs.

LayoutTests:

  • fast/css/selector-text-mutation-crash-expected.txt: Added.
  • fast/css/selector-text-mutation-crash.html: Added.
12:04 PM Changeset in webkit [212736] by jiewen_tan@apple.com
  • 17 edits
    4 copies
    8 moves
    44 adds in trunk

[WebCrypto] Add support for AES-CFB
https://bugs.webkit.org/show_bug.cgi?id=168344
<rdar://problem/20940221>

Reviewed by Brent Fulgham.

Source/WebCore:

This patch adds support for AES-CFB. Operations of AES-CFB include: encrypt, decrypt, generateKey,
importKey, exportKey, wrapKey, and unwrapKey. This implementation follows a slightly old version
of WebCryptoAPI spec: https://www.w3.org/TR/2014/CR-WebCryptoAPI-20141211/#aes-cfb.

Tests: crypto/subtle/aes-cbc-cfb-decrypt-malformed-parameters.html

crypto/subtle/aes-cbc-cfb-encrypt-malformed-parameters.html
crypto/subtle/aes-cbc-import-key-unwrap-jwk-rsa-key-public.html
crypto/subtle/aes-cfb-generate-export-key-jwk-length-128.html
crypto/subtle/aes-cfb-generate-export-key-jwk-length-192.html
crypto/subtle/aes-cfb-generate-export-key-jwk-length-256.html
crypto/subtle/aes-cfb-generate-export-raw-key.html
crypto/subtle/aes-cfb-generate-key-encrypt-decrypt.html
crypto/subtle/aes-cfb-generate-key.html
crypto/subtle/aes-cfb-import-jwk-key-length-128.html
crypto/subtle/aes-cfb-import-jwk-key-length-192.html
crypto/subtle/aes-cfb-import-jwk-key-length-256.html
crypto/subtle/aes-cfb-import-key-decrypt.html
crypto/subtle/aes-cfb-import-key-encrypt.html
crypto/subtle/aes-cfb-import-key-unwrap-jwk-key.html
crypto/subtle/aes-cfb-import-key-unwrap-raw-key.html
crypto/subtle/aes-cfb-import-key-wrap-jwk-key.html
crypto/subtle/aes-cfb-import-key-wrap-raw-key.html
crypto/subtle/aes-cfb-import-raw-key.html
crypto/workers/subtle/aes-cfb-import-key-decrypt.html
crypto/workers/subtle/aes-cfb-import-key-encrypt.html
crypto/workers/subtle/aes-cfb-import-key-unwrap-key.html
crypto/workers/subtle/aes-cfb-import-key-wrap-key.html

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

Add CryptoAlgorithmAES_CFB.cpp,
change AesCbcParams.idl to AesCbcCfbParams.idl.

  • bindings/js/JSSubtleCryptoCustom.cpp:

(WebCore::normalizeCryptoAlgorithmParameters):
Add support for AES-CFB.

  • crypto/CryptoAlgorithm.h:

Include <wtf/Variant.h>.

  • crypto/CryptoAlgorithmParameters.h:

Add support for AES-CFB.

  • crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:

(WebCore::CryptoAlgorithmAES_CBC::encrypt):
(WebCore::CryptoAlgorithmAES_CBC::decrypt):
Rename CryptoAlgorithmAesCbcParams to CryptoAlgorithmAesCbcCfbParams.

  • crypto/algorithms/CryptoAlgorithmAES_CFB.cpp: Added.

(WebCore::usagesAreInvalidForCryptoAlgorithmAES_CFB):
(WebCore::CryptoAlgorithmAES_CFB::create):
(WebCore::CryptoAlgorithmAES_CFB::identifier):
(WebCore::CryptoAlgorithmAES_CFB::encrypt):
(WebCore::CryptoAlgorithmAES_CFB::decrypt):
(WebCore::CryptoAlgorithmAES_CFB::generateKey):
(WebCore::CryptoAlgorithmAES_CFB::importKey):
(WebCore::CryptoAlgorithmAES_CFB::exportKey):

  • crypto/algorithms/CryptoAlgorithmAES_CFB.h: Added.
  • crypto/gnutls/CryptoAlgorithmAES_CFBGnuTLS.cpp: Added.

(WebCore::CryptoAlgorithmAES_CFB::platformEncrypt):
(WebCore::CryptoAlgorithmAES_CFB::platformDecrypt):
Add dummy support of AES_CFB for GTK+.

  • crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:

(WebCore::transformAES_CBC):
Drop conditional PLATFORM(COCOA).
(WebCore::CryptoAlgorithmAES_CBC::platformEncrypt):
(WebCore::CryptoAlgorithmAES_CBC::platformDecrypt):
Rename CryptoAlgorithmAesCbcParams to CryptoAlgorithmAesCbcCfbParams.

  • crypto/mac/CryptoAlgorithmAES_CFBMac.cpp: Added.

(WebCore::transformAES_CFB):
(WebCore::CryptoAlgorithmAES_CFB::platformEncrypt):
(WebCore::CryptoAlgorithmAES_CFB::platformDecrypt):

  • crypto/mac/CryptoAlgorithmRegistryMac.cpp:

(WebCore::CryptoAlgorithmRegistry::platformRegisterAlgorithms):
Add support for AES-CFB.

  • crypto/parameters/AesCbcCfbParams.idl: Renamed from Source/WebCore/crypto/parameters/AesCbcParams.idl.
  • crypto/parameters/CryptoAlgorithmAesCbcCfbParams.h: Renamed from Source/WebCore/crypto/parameters/CryptoAlgorithmAesCbcParams.h.

Since dictionaries AesCbcParams and AesCfbParams are essentially the same, I combine them together in our implementations.

LayoutTests:

  • crypto/subtle/aes-cbc-cfb-decrypt-malformed-parameters-expected.txt: Renamed from LayoutTests/crypto/subtle/aes-cbc-decrypt-malformed-parameters-expected.txt.
  • crypto/subtle/aes-cbc-cfb-decrypt-malformed-parameters.html: Renamed from LayoutTests/crypto/subtle/aes-cbc-decrypt-malformed-parameters.html.
  • crypto/subtle/aes-cbc-cfb-encrypt-malformed-parameters-expected.txt: Renamed from LayoutTests/crypto/subtle/aes-cbc-encrypt-malformed-parameters-expected.txt.
  • crypto/subtle/aes-cbc-cfb-encrypt-malformed-parameters.html: Renamed from LayoutTests/crypto/subtle/aes-cbc-encrypt-malformed-parameters.html.
  • crypto/subtle/aes-cbc-import-key-unwrap-jwk-rsa-key-public-expected.txt: Renamed from LayoutTests/crypto/subtle/aes-cbc-import-key-uwrap-jwk-rsa-key-public-expected.txt.
  • crypto/subtle/aes-cbc-import-key-unwrap-jwk-rsa-key-public.html: Renamed from LayoutTests/crypto/subtle/aes-cbc-import-key-uwrap-jwk-rsa-key-public.html.
  • crypto/subtle/aes-cfb-generate-export-key-jwk-length-128-expected.txt: Added.
  • crypto/subtle/aes-cfb-generate-export-key-jwk-length-128.html: Added.
  • crypto/subtle/aes-cfb-generate-export-key-jwk-length-192-expected.txt: Added.
  • crypto/subtle/aes-cfb-generate-export-key-jwk-length-192.html: Added.
  • crypto/subtle/aes-cfb-generate-export-key-jwk-length-256-expected.txt: Added.
  • crypto/subtle/aes-cfb-generate-export-key-jwk-length-256.html: Added.
  • crypto/subtle/aes-cfb-generate-export-raw-key-expected.txt: Added.
  • crypto/subtle/aes-cfb-generate-export-raw-key.html: Added.
  • crypto/subtle/aes-cfb-generate-key-encrypt-decrypt-expected.txt: Added.
  • crypto/subtle/aes-cfb-generate-key-encrypt-decrypt.html: Added.
  • crypto/subtle/aes-cfb-generate-key-expected.txt: Added.
  • crypto/subtle/aes-cfb-generate-key.html: Added.
  • crypto/subtle/aes-cfb-import-jwk-key-length-128-expected.txt: Added.
  • crypto/subtle/aes-cfb-import-jwk-key-length-128.html: Added.
  • crypto/subtle/aes-cfb-import-jwk-key-length-192-expected.txt: Added.
  • crypto/subtle/aes-cfb-import-jwk-key-length-192.html: Added.
  • crypto/subtle/aes-cfb-import-jwk-key-length-256-expected.txt: Added.
  • crypto/subtle/aes-cfb-import-jwk-key-length-256.html: Added.
  • crypto/subtle/aes-cfb-import-key-decrypt-expected.txt: Added.
  • crypto/subtle/aes-cfb-import-key-decrypt.html: Added.
  • crypto/subtle/aes-cfb-import-key-encrypt-expected.txt: Added.
  • crypto/subtle/aes-cfb-import-key-encrypt.html: Added.
  • crypto/subtle/aes-cfb-import-key-unwrap-jwk-key-expected.txt: Added.
  • crypto/subtle/aes-cfb-import-key-unwrap-jwk-key.html: Added.
  • crypto/subtle/aes-cfb-import-key-unwrap-raw-key-expected.txt: Added.
  • crypto/subtle/aes-cfb-import-key-unwrap-raw-key.html: Added.
  • crypto/subtle/aes-cfb-import-key-wrap-jwk-key-expected.txt: Added.
  • crypto/subtle/aes-cfb-import-key-wrap-jwk-key.html: Added.
  • crypto/subtle/aes-cfb-import-key-wrap-raw-key-expected.txt: Added.
  • crypto/subtle/aes-cfb-import-key-wrap-raw-key.html: Added.
  • crypto/subtle/aes-cfb-import-raw-key-expected.txt: Added.
  • crypto/subtle/aes-cfb-import-raw-key.html: Added.
  • crypto/subtle/aes-generate-key-malformed-parameters-expected.txt:
  • crypto/subtle/aes-generate-key-malformed-parameters.html:
  • crypto/subtle/aes-import-key-malformed-parameters-expected.txt:
  • crypto/subtle/aes-import-key-malformed-parameters.html:
  • crypto/workers/subtle/aes-cfb-import-key-decrypt-expected.txt: Added.
  • crypto/workers/subtle/aes-cfb-import-key-decrypt.html: Added.
  • crypto/workers/subtle/aes-cfb-import-key-encrypt-expected.txt: Added.
  • crypto/workers/subtle/aes-cfb-import-key-encrypt.html: Added.
  • crypto/workers/subtle/aes-cfb-import-key-unwrap-key-expected.txt: Added.
  • crypto/workers/subtle/aes-cfb-import-key-unwrap-key.html: Added.
  • crypto/workers/subtle/aes-cfb-import-key-wrap-key-expected.txt: Added.
  • crypto/workers/subtle/aes-cfb-import-key-wrap-key.html: Added.
  • crypto/workers/subtle/resources/aes-cfb-import-key-decrypt.js: Added.
  • crypto/workers/subtle/resources/aes-cfb-import-key-encrypt.js: Added.
  • crypto/workers/subtle/resources/aes-cfb-import-key-unwrap-key.js: Added.
  • crypto/workers/subtle/resources/aes-cfb-import-key-wrap-key.js: Added.
12:00 PM Changeset in webkit [212735] by jfbastien@apple.com
  • 4 edits in trunk

Fix cmake build
https://bugs.webkit.org/show_bug.cgi?id=168665

Reviewed by Mark Lam.

It was broken by r212555 and r212681.

Source/WebKit:

  • PlatformMac.cmake:

Tools:

  • DumpRenderTree/PlatformMac.cmake:
12:00 PM Changeset in webkit [212734] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix the ToT iOS build

Adopt updated UIKit SPI and remove calls to the deprecated version.

  • platform/ios/WebItemProviderPasteboard.mm:

(-[WebItemProviderPasteboard setItems:]):

11:34 AM Changeset in webkit [212733] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit2

[WebRTC] NetworkRTCMonitor should ensure clearing its manager only once
https://bugs.webkit.org/show_bug.cgi?id=168661

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

Making sure NetworkRTCMonitor manager is cleared only once.
ALso ensuring that manager does not get destroyed as part of NetworkRTCMonitor destructor.
The manager needs to be destroyed in the RTC network thread.

  • NetworkProcess/webrtc/NetworkRTCMonitor.cpp:

(WebKit::NetworkRTCMonitor::~NetworkRTCMonitor):
(WebKit::NetworkRTCMonitor::stopUpdating):

  • NetworkProcess/webrtc/NetworkRTCMonitor.h:
11:29 AM Changeset in webkit [212732] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit2

[WebRTC][Mac][WebKit2] Revise sandbox to limit connections to UDP and TCP
https://bugs.webkit.org/show_bug.cgi?id=168664
<rdar://problem/30600587>

Reviewed by Youenn Fablet.

Add filters to the WebRTC rule to limit network traffic to UDP and TCP.

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
11:27 AM Changeset in webkit [212731] by matthew_hanson@apple.com
  • 10 edits
    1 copy
    3 adds in branches/safari-603-branch/Source

rdar://problem/30553220

11:21 AM Changeset in webkit [212730] by pvollan@apple.com
  • 2 edits in trunk/Source/WebCore

[Win] WebView is not painting in accelerated compositing mode.
https://bugs.webkit.org/show_bug.cgi?id=168654

Reviewed by Brent Fulgham.

Initializing the uncommitted layer change flags to CoverageRectChanged in GraphicsLayerCA,
stops WebView painting in accelerated mode.

Covered by existing tests.

  • platform/graphics/ca/GraphicsLayerCA.h:
11:11 AM Changeset in webkit [212729] by ap@apple.com
  • 2 edits in trunk/Tools

Improve bot watcher's dashboard performance
https://bugs.webkit.org/show_bug.cgi?id=168624
<rdar://problem/30190109>

Reviewed by Daniel Bates.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Trac.js:

There was an unnecessary linear complexity algorithm in indexOfRevision().

11:07 AM Changeset in webkit [212728] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603-branch/Source

Versioning.

10:45 AM Changeset in webkit [212727] by jer.noble@apple.com
  • 2 edits
    1 move in trunk/Source/WebCore

Make logging in high-priority audio threads less expensive
https://bugs.webkit.org/show_bug.cgi?id=168639

Reviewed by Jon Lee.

Logging from inside a high-priority audio thread will make a number of calls to malloc, block, and
therefore cause audio glitches. Make this logging less expensive by dispatching to the main thread
before creating and outputting the log string.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/audio/mac/AudioSampleDataSource.mm: Renamed from Source/WebCore/platform/audio/mac/AudioSampleDataSource.cpp.

(WebCore::AudioSampleDataSource::pushSamplesInternal):
(WebCore::AudioSampleDataSource::pullSamplesInternal):

10:36 AM Changeset in webkit [212726] by Ryan Haddad
  • 2 edits in trunk/Source/WebKit2

Check what LocalStorage data exists in deleteDatabasesModifiedSince() before attempting deletion.
https://bugs.webkit.org/show_bug.cgi?id=168659
rdar://problem/22781730

Patch by Maureen Daum <mdaum@apple.com> on 2017-02-21
Reviewed by Brady Eidson.

Check what LocalStorage data exists in deleteDatabasesModifiedSince() before attempting deletion.
It is possible that another process has caused information to be added to LocalStorage
after we created this LocalStorageDatabaseTracker instance, so we should update our
internal state by checking the contents of StorageTracker.db and the other local
storage files so we know what databases actually exist. By calling importOriginIdentifiers()
at the start of deleteDatabasesModifiedSince(), m_origins will now have the up-to-date
list of origins LocalStorage contains data for.

  • UIProcess/Storage/LocalStorageDatabaseTracker.cpp:

(WebKit::LocalStorageDatabaseTracker::deleteDatabasesModifiedSince):

10:28 AM Changeset in webkit [212725] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebCore

Give the Mock audio input a "hum" to make drop-outs more detectable
https://bugs.webkit.org/show_bug.cgi?id=168641

Reviewed by Eric Carlson.

Add two helper functions to generate waveforms: addHum() and writeHum(). Use these methods
to create a bip-bop audio buffer which can be used to "blit" a portion the waveform into the
destination buffer during rendering. The background hum must be seamless across multiple
pull operations, so add the hum sound during rendering.

To ensure the waveform buffer is created, initialize the sampleRate to zero, then call
applySampleRate() with the desired default rate, 44.1kHz.

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

(WebCore::writeHum):
(WebCore::addHum):
(WebCore::MockRealtimeAudioSource::create):
(WebCore::MockRealtimeAudioSourceMac::render):
(WebCore::MockRealtimeAudioSourceMac::applySampleRate):

10:24 AM Changeset in webkit [212724] by commit-queue@webkit.org
  • 13 edits
    3 copies
    2 deletes in trunk/Source/WebKit2

Reduce platform ifdefs in WebKit2 custom protocols implementation
https://bugs.webkit.org/show_bug.cgi?id=165028

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2017-02-21
Reviewed by Darin Adler.

Make mac implementation use the APICustomProtocolManagerClient to share more code with the soup based ports.

  • CMakeLists.txt: Add CustomProtocolManagerProxy.cpp.
  • PlatformEfl.cmake: Remove CustomProtocolManagerProxySoup.cpp.
  • PlatformGTK.cmake: Ditto.
  • PlatformMac.cmake: Remove CustomProtocolManagerProxyMac.mm.
  • UIProcess/API/APICustomProtocolManagerClient.h:

(API::CustomProtocolManagerClient::startLoading): Make it void, since we were always returning true and the
returned value was ignored.

  • UIProcess/API/efl/ewk_url_scheme_request.cpp:

(EwkUrlSchemeRequest::finish): Update to new CustomProtocolManagerProxy API.

  • UIProcess/API/gtk/WebKitCustomProtocolManagerClient.cpp:
  • UIProcess/API/gtk/WebKitURISchemeRequest.cpp:

(webkitURISchemeRequestReadCallback): Ditto.

  • UIProcess/Cocoa/CustomProtocolManagerClient.h: Added.
  • UIProcess/Cocoa/CustomProtocolManagerClient.mm: Added.

(-[WKCustomProtocolLoader initWithCustomProtocolManagerProxy:customProtocolID:request:]):
(-[WKCustomProtocolLoader dealloc]):
(-[WKCustomProtocolLoader connection:didFailWithError:]):
(-[WKCustomProtocolLoader connection:didReceiveResponse:]):
(-[WKCustomProtocolLoader connection:didReceiveData:]):
(-[WKCustomProtocolLoader connection:willSendRequest:redirectResponse:]):
(-[WKCustomProtocolLoader connectionDidFinishLoading:]):
(WebKit::CustomProtocolManagerClient::startLoading):
(WebKit::CustomProtocolManagerClient::stopLoading):
(WebKit::CustomProtocolManagerClient::invalidate):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitialize): Set the CustomProtocolManagerClient.
(WebKit::WebProcessPool::platformInitializeNetworkProcess): Remove code that is now shared.

  • UIProcess/Network/CustomProtocols/CustomProtocolManagerProxy.cpp: Added.

(WebKit::CustomProtocolManagerProxy::startLoading):
(WebKit::CustomProtocolManagerProxy::processDidClose):
(WebKit::CustomProtocolManagerProxy::wasRedirectedToRequest):
(WebKit::CustomProtocolManagerProxy::didReceiveResponse):

  • UIProcess/Network/CustomProtocols/CustomProtocolManagerProxy.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::globalURLSchemesWithCustomProtocolHandlers): Just moved here to use it from ensureNetworkProcess().
(WebKit::WebProcessPool::WebProcessPool): Remove soup ifdefs.
(WebKit::WebProcessPool::setCustomProtocolManagerClient): Moved from the soup implementation.
(WebKit::WebProcessPool::ensureNetworkProcess): Initialize custom protocols parameters.
(WebKit::WebProcessPool::registerSchemeForCustomProtocol): Register the protocol if not already registered globally.
(WebKit::WebProcessPool::unregisterSchemeForCustomProtocol): Remove soup ifdefs.

  • UIProcess/WebProcessPool.h: Remove soup ifdefs.
  • UIProcess/efl/RequestManagerClientEfl.cpp:
  • UIProcess/soup/WebProcessPoolSoup.cpp:

(WebKit::WebProcessPool::platformInitializeNetworkProcess): Remove code that is now shared.

  • WebKit2.xcodeproj/project.pbxproj:
10:21 AM Changeset in webkit [212723] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebCore

Merge r212667. rdar://problem/29852056

10:21 AM Changeset in webkit [212722] by matthew_hanson@apple.com
  • 13 edits
    1 add in branches/safari-603-branch/Source

Merge r212692. rdar://problem/30475767

10:21 AM Changeset in webkit [212721] by matthew_hanson@apple.com
  • 6 edits
    6 adds in branches/safari-603-branch

Merge r212621. rdar://problem/30563318

10:21 AM Changeset in webkit [212720] by matthew_hanson@apple.com
  • 4 edits in branches/safari-603-branch/Source/WebCore

Merge r212140. rdar://problem/30563318

10:20 AM Changeset in webkit [212719] by BJ Burg
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: RTL: console scope bar's unread message indicator is misaligned
https://bugs.webkit.org/show_bug.cgi?id=168625

Reviewed by Matt Baker.

  • UserInterface/Views/LogContentView.css:

(.log-scope-bar > li.unread::before):
(body[dir=ltr] .log-scope-bar > li.unread::before):
(body[dir=rtl] .log-scope-bar > li.unread::before):

10:12 AM Changeset in webkit [212718] by commit-queue@webkit.org
  • 1 edit
    3 deletes in trunk/Source/WebKit2

Remove unused files.
https://bugs.webkit.org/show_bug.cgi?id=168656.

Patch by Daewoong Jang <daewoong.jang@navercorp.com> on 2017-02-21
Reviewed by Csaba Osztrogonác.

Remove files which became unused after removal of EFL port.

  • UIProcess/CoordinatedGraphics/PageViewportController.cpp: Removed.
  • UIProcess/CoordinatedGraphics/PageViewportController.h: Removed.
  • UIProcess/PageViewportControllerClient.h: Removed.
10:00 AM Changeset in webkit [212717] by Ryan Haddad
  • 17 edits
    13 deletes in trunk

Unreviewed, rolling out r212712.

This change broke the CLoop build.

Reverted changeset:

"JSModuleNamespace object should have IC"
https://bugs.webkit.org/show_bug.cgi?id=160590
http://trac.webkit.org/changeset/212712

9:25 AM Changeset in webkit [212716] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebCore

Make TrackPrivateBase ThreadSafeRefCounted, so that it can be retained in non-main threads
https://bugs.webkit.org/show_bug.cgi?id=168642

Reviewed by Eric Carlson.

AudioTrackPrivateMediaStreamCocoa has two entry points from background threads:
audioSamplesAvailable() and render(). Protect against being destroyed mid-execution by
retaining this for the duration of those methods.

  • platform/graphics/TrackPrivateBase.h:
  • platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp:

(WebCore::AudioTrackPrivateMediaStreamCocoa::audioSamplesAvailable):
(WebCore::AudioTrackPrivateMediaStreamCocoa::render):

9:24 AM Changeset in webkit [212715] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

Pulling too quickly from an AudioSampleDataSource should increase the pre-buffer amount
https://bugs.webkit.org/show_bug.cgi?id=168645

Reviewed by Eric Carlson.

If a pull operation runs past the end of the buffered range of a CARingBuffer, the underrun
is zero-filled, causing an audible glitch. In this case, bias m_outputSampleOffset by the
amount of the underrun, which should keep the underrun from reoccurring.

  • platform/audio/mac/AudioSampleDataSource.cpp:

(WebCore::AudioSampleDataSource::pullSamplesInternal):

9:19 AM Changeset in webkit [212714] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

AudioSampleBufferList::zeroABL() takes a byte-count, not a sample-count.
https://bugs.webkit.org/show_bug.cgi?id=168635

Reviewed by Jon Lee.

  • platform/audio/mac/AudioSampleDataSource.cpp:

(WebCore::AudioSampleDataSource::pullSamplesInternal):
(WebCore::AudioSampleDataSource::pullAvalaibleSamplesAsChunks):

8:27 AM Changeset in webkit [212713] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit2

[WebRTC] LibWebRTCSocket::SendTo message should have a correct SocketAddress
https://bugs.webkit.org/show_bug.cgi?id=168636

Patch by Youenn Fablet <youenn@apple.com> on 2017-02-21
Reviewed by Eric Carlson.

  • WebProcess/Network/webrtc/LibWebRTCSocket.cpp:

(WebKit::LibWebRTCSocket::SendTo): Ensuring address remains valid during SendTo message lifetime.

2:38 AM Changeset in webkit [212712] by Yusuke Suzuki
  • 17 edits
    13 adds in trunk

JSModuleNamespace object should have IC
https://bugs.webkit.org/show_bug.cgi?id=160590

Reviewed by Saam Barati.

JSTests:

  • modules/module-assert-access-binding.js: Added.
  • modules/module-assert-access-namespace.js: Added.
  • modules/namespace-empty.js: Added.

(from.string_appeared_here.access):
(i.shouldThrow):

  • stress/module-namespace-access-change.js: Added.

(shouldBe):
(access):
(import.string_appeared_here.then):

  • stress/module-namespace-access-non-constant.js: Added.

(shouldBe):
(import.string_appeared_here.then):

  • stress/module-namespace-access-poly.js: Added.

(shouldBe):
(access):
(import.string_appeared_here.then):

  • stress/module-namespace-access-transitive-exports.js: Added.

(shouldBe):
(import.string_appeared_here.then):

  • stress/module-namespace-access.js: Added.

(shouldBe):
(import.string_appeared_here.then):

  • stress/resources/module-namespace-access-transitive-exports-2.js: Added.

(export.cocoa):
(export.change):

  • stress/resources/module-namespace-access-transitive-exports.js: Added.
  • stress/resources/module-namespace-access.js: Added.

(export.cocoa):
(export.change):

Source/JavaScriptCore:

This patch optimizes accesses to module namespace objects.

  1. Cache the resolutions for module namespace objects.

When constructing the module namespace object, we already resolves all the exports.
The module namespace object caches this result and leverage it in the later access in
getOwnPropertySlot. This avoids resolving bindings through resolveExport.

  1. Introduce ModuleNamespaceLoad IC.

This patch adds new IC for module namespace objects. The mechanism is simple, getOwnPropertySlot
tells us about module namespace object resolution. The IC first checks whether the given object
is an expected module namespace object. If this check succeeds, we load the value from the module
environment.

  1. Introduce DFG/FTL optimization.

After exploiting module namespace object accesses in (2), DFG can recognize this in ByteCodeParser.
DFG will convert it to CheckCell with the namespace object and GetClosureVar from the cached environment.
At that time, we have a chance to fold it to the constant.

This optimization improves the performance of accessing to module namespace objects.

Before

$ time ../../WebKitBuild/module-ic-tot/Release/bin/jsc -m module-assert-access-namespace.js
../../WebKitBuild/module-ic-tot/Release/bin/jsc -m 0.43s user 0.03s system 101% cpu 0.451 total
$ time ../../WebKitBuild/module-ic-tot/Release/bin/jsc -m module-assert-access-binding.js
../../WebKitBuild/module-ic-tot/Release/bin/jsc -m 0.08s user 0.02s system 103% cpu 0.104 total

After

$ time ../../WebKitBuild/module-ic/Release/bin/jsc -m module-assert-access-namespace.js
../../WebKitBuild/module-ic/Release/bin/jsc -m 0.11s user 0.01s system 106% cpu 0.109 total
$ time ../../WebKitBuild/module-ic/Release/bin/jsc -m module-assert-access-binding.js
../../WebKitBuild/module-ic/Release/bin/jsc -m module-assert-access-binding.j 0.08s user 0.02s system 102% cpu 0.105 total

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

(JSC::AccessCase::create):
(JSC::AccessCase::guardedByStructureCheck):
(JSC::AccessCase::canReplace):
(JSC::AccessCase::visitWeak):
(JSC::AccessCase::generateWithGuard):
(JSC::AccessCase::generateImpl):

  • bytecode/AccessCase.h:
  • bytecode/GetByIdStatus.cpp:

(JSC::GetByIdStatus::GetByIdStatus):
(JSC::GetByIdStatus::computeForStubInfoWithoutExitSiteFeedback):
(JSC::GetByIdStatus::makesCalls):
(JSC::GetByIdStatus::dump):

  • bytecode/GetByIdStatus.h:

(JSC::GetByIdStatus::isModuleNamespace):
(JSC::GetByIdStatus::takesSlowPath):
(JSC::GetByIdStatus::moduleNamespaceObject):
(JSC::GetByIdStatus::moduleEnvironment):
(JSC::GetByIdStatus::scopeOffset):

  • bytecode/ModuleNamespaceAccessCase.cpp: Added.

(JSC::ModuleNamespaceAccessCase::ModuleNamespaceAccessCase):
(JSC::ModuleNamespaceAccessCase::create):
(JSC::ModuleNamespaceAccessCase::~ModuleNamespaceAccessCase):
(JSC::ModuleNamespaceAccessCase::clone):
(JSC::ModuleNamespaceAccessCase::emit):

  • bytecode/ModuleNamespaceAccessCase.h: Added.

(JSC::ModuleNamespaceAccessCase::moduleNamespaceObject):
(JSC::ModuleNamespaceAccessCase::moduleEnvironment):
(JSC::ModuleNamespaceAccessCase::scopeOffset):

  • bytecode/PolymorphicAccess.cpp:

(WTF::printInternal):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleModuleNamespaceLoad):
(JSC::DFG::ByteCodeParser::handleGetById):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::loadValue):

  • jit/Repatch.cpp:

(JSC::tryCacheGetByID):

  • runtime/AbstractModuleRecord.cpp:

(JSC::AbstractModuleRecord::getModuleNamespace):

  • runtime/JSModuleNamespaceObject.cpp:

(JSC::JSModuleNamespaceObject::finishCreation):
(JSC::JSModuleNamespaceObject::visitChildren):
(JSC::getValue):
(JSC::JSModuleNamespaceObject::getOwnPropertySlot):
(JSC::JSModuleNamespaceObject::getOwnPropertyNames):

  • runtime/JSModuleNamespaceObject.h:

(JSC::isJSModuleNamespaceObject):
(JSC::JSModuleNamespaceObject::create): Deleted.
(JSC::JSModuleNamespaceObject::createStructure): Deleted.
(JSC::JSModuleNamespaceObject::moduleRecord): Deleted.

  • runtime/JSModuleRecord.h:

(JSC::JSModuleRecord::moduleEnvironment): Deleted.

  • runtime/PropertySlot.h:

(JSC::PropertySlot::PropertySlot):
(JSC::PropertySlot::domJIT):
(JSC::PropertySlot::moduleNamespaceSlot):
(JSC::PropertySlot::setValueModuleNamespace):
(JSC::PropertySlot::setCacheableCustom):

2:37 AM Changeset in webkit [212711] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

REGRESSION(r212681): Crash when dragging links without a drag image
https://bugs.webkit.org/show_bug.cgi?id=168648

Reviewed by Tim Horton.

This happens in GTK+ port, because we don't use a drag image for links.

Fixes: editing/pasteboard/drop-link.html

editing/pasteboard/drop-text-without-selection.html
editing/pasteboard/files-during-page-drags.html
fast/events/content-changed-during-drop.html
fast/events/drag-and-drop-link-fast-multiple-times-does-not-crash.html
fast/events/drag-and-drop-link-into-focused-contenteditable.html
fast/events/drag-and-drop-link.html
fast/events/drag-in-frames.html
fast/events/drag-parent-node.html
fast/events/shift-drag-selection-on-link-triggers-drag-n-drop.html

  • page/DragController.cpp:

(WebCore::DragController::startDrag): Do not try to use drag image and its size when createDragImageForLink
returns nullptr.

1:07 AM Changeset in webkit [212710] by Yusuke Suzuki
  • 3 edits
    2 adds in trunk

ASSERTION FAILED: "!scope.exception()" with Object.isSealed/isFrozen and uninitialized module bindings
https://bugs.webkit.org/show_bug.cgi?id=168605

Reviewed by Saam Barati.

JSTests:

  • modules/module-namespace-is-frozen.js: Added.

(from.string_appeared_here.shouldThrow):
(export.b):

  • modules/module-namespace-is-sealed.js: Added.

(from.string_appeared_here.shouldThrow):
(export.b):

Source/JavaScriptCore:

We should check exception state after calling getOwnPropertyDescriptor() since it can throw errors.

  • runtime/ObjectConstructor.cpp:

(JSC::objectConstructorIsSealed):
(JSC::objectConstructorIsFrozen):

12:39 AM Changeset in webkit [212709] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.16/Source/WebCore

Merge r212667 - Nullptr dereferences when stopping a load
https://bugs.webkit.org/show_bug.cgi?id=168608
<rdar://problem/29852056>

Reviewed by Ryosuke Niwa.

Don't attempt to notify a detached frame's load client that the load is
stopped.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::stopLoading): Check for null frame loader and
bypass dereferencing it.

12:39 AM Changeset in webkit [212708] by Carlos Garcia Campos
  • 13 edits
    1 add in releases/WebKitGTK/webkit-2.16/Source

Merge r212692 - [Re-landing] CachedCall should let GC know to keep its arguments alive.
https://bugs.webkit.org/show_bug.cgi?id=168567
<rdar://problem/30475767>

Reviewed by Saam Barati.

Source/JavaScriptCore:

We fix this by having CachedCall use a MarkedArgumentBuffer to store its
arguments instead of a Vector.

Also declared CachedCall, MarkedArgumentBuffer, and ProtoCallFrame as
WTF_FORBID_HEAP_ALLOCATION because they rely on being stack allocated for
correctness.

Update: the original patch has a bug in MarkedArgumentBuffer::expandCapacity()
where it was copying and calling addMarkSet() on values in m_buffer beyond m_size
(up to m_capacity). As a result, depending on the pre-existing values in
m_inlineBuffer, this may result in a computed Heap pointer that is wrong, and
subsequently, manifest as a crash. This is likely to be the cause of the PLT
regression.

I don't have a new test for this fix because the issue relies on sufficiently bad
values randomly showing up in m_inlineBuffer when we do an ensureCapacity() which
calls expandCapacity().

  • interpreter/CachedCall.h:

(JSC::CachedCall::CachedCall):
(JSC::CachedCall::call):
(JSC::CachedCall::clearArguments):
(JSC::CachedCall::appendArgument):
(JSC::CachedCall::setArgument): Deleted.

  • interpreter/CallFrame.h:

(JSC::ExecState::emptyList):

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::prepareForRepeatCall):

  • interpreter/Interpreter.h:
  • interpreter/ProtoCallFrame.h:
  • runtime/ArgList.cpp:

(JSC::MarkedArgumentBuffer::slowEnsureCapacity):
(JSC::MarkedArgumentBuffer::expandCapacity):
(JSC::MarkedArgumentBuffer::slowAppend):

  • runtime/ArgList.h:

(JSC::MarkedArgumentBuffer::append):
(JSC::MarkedArgumentBuffer::ensureCapacity):

  • runtime/StringPrototype.cpp:

(JSC::replaceUsingRegExpSearch):

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:

Source/WTF:

Added a WTF_FORBID_HEAP_ALLOCATION that will cause a compilation failure if
a class declared with it is malloced.

While this doesn't prevent that class declared WTF_FORBID_HEAP_ALLOCATION from
being embedded in another class that is heap allocated, it does at minimum
document the intent and gives the users of this class a chance to do the
right thing.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/ForbidHeapAllocation.h: Added.
12:38 AM Changeset in webkit [212707] by Carlos Garcia Campos
  • 13 edits
    1 delete in releases/WebKitGTK/webkit-2.16/Source

Merge r212665 - Unreviewed, rolling out r212618.
https://bugs.webkit.org/show_bug.cgi?id=168609

"Appears to cause PLT regression" (Requested by mlam on

Reverted changeset:

"CachedCall should let GC know to keep its arguments alive."
https://bugs.webkit.org/show_bug.cgi?id=168567
http://trac.webkit.org/changeset/212618

12:38 AM Changeset in webkit [212706] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.16/Source/JavaScriptCore

Merge r212640 - BytecodeGenerator should not iterate its m_controlFlowScopeStack using a pointer bump.
https://bugs.webkit.org/show_bug.cgi?id=168585

Reviewed by Yusuke Suzuki.

This is because m_controlFlowScopeStack is a SegmentedVector, and entries for
consecutive indices in the vector are not guaranteed to be consecutive in memory
layout. Instead, we should be using indexing instead.

This issue was detected by the marathon.js test from
https://bugs.webkit.org/show_bug.cgi?id=168580.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitJumpViaFinallyIfNeeded):
(JSC::BytecodeGenerator::emitReturnViaFinallyIfNeeded):

12:38 AM Changeset in webkit [212705] by Carlos Garcia Campos
  • 15 edits
    25 deletes in releases/WebKitGTK/webkit-2.16/Source

Merge r212638 - Remove code under USE(GRAPHICS_SURFACE)
https://bugs.webkit.org/show_bug.cgi?id=168592

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2017-02-20
Reviewed by Michael Catanzaro.

This was only used by EFL port.

Source/WebCore:

  • platform/TextureMapper.cmake:
  • platform/graphics/opengl/GLPlatformSurface.cpp: Removed.
  • platform/graphics/surfaces/GLTransportSurface.cpp: Removed.
  • platform/graphics/surfaces/GLTransportSurface.h: Removed.
  • platform/graphics/surfaces/GraphicsSurface.cpp: Removed.
  • platform/graphics/surfaces/GraphicsSurface.h: Removed.
  • platform/graphics/surfaces/GraphicsSurfaceToken.h: Removed.
  • platform/graphics/surfaces/egl/EGLConfigSelector.cpp: Removed.
  • platform/graphics/surfaces/egl/EGLConfigSelector.h: Removed.
  • platform/graphics/surfaces/egl/EGLContext.cpp: Removed.
  • platform/graphics/surfaces/egl/EGLContext.h: Removed.
  • platform/graphics/surfaces/egl/EGLHelper.cpp: Removed.
  • platform/graphics/surfaces/egl/EGLHelper.h: Removed.
  • platform/graphics/surfaces/egl/EGLSurface.cpp: Removed.
  • platform/graphics/surfaces/egl/EGLSurface.h: Removed.
  • platform/graphics/surfaces/egl/EGLXSurface.cpp: Removed.
  • platform/graphics/surfaces/egl/EGLXSurface.h: Removed.
  • platform/graphics/surfaces/glx/GLXConfigSelector.h: Removed.
  • platform/graphics/surfaces/glx/GLXContext.cpp: Removed.
  • platform/graphics/surfaces/glx/GLXContext.h: Removed.
  • platform/graphics/surfaces/glx/GLXSurface.cpp: Removed.
  • platform/graphics/surfaces/glx/GLXSurface.h: Removed.
  • platform/graphics/surfaces/glx/X11Helper.cpp: Removed.
  • platform/graphics/surfaces/glx/X11Helper.h: Removed.
  • platform/graphics/texmap/TextureMapperBackingStore.cpp:
  • platform/graphics/texmap/TextureMapperBackingStore.h:
  • platform/graphics/texmap/TextureMapperPlatformLayer.h:

(WebCore::TextureMapperPlatformLayer::setClient):

  • platform/graphics/texmap/TextureMapperSurfaceBackingStore.cpp: Removed.
  • platform/graphics/texmap/TextureMapperSurfaceBackingStore.h: Removed.
  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer):
(WebCore::CoordinatedGraphicsLayer::setContentsNeedsDisplay):
(WebCore::CoordinatedGraphicsLayer::setContentsToPlatformLayer):
(WebCore::CoordinatedGraphicsLayer::syncPlatformLayer):

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
  • platform/graphics/texmap/coordinated/CoordinatedGraphicsState.h:

(WebCore::CoordinatedGraphicsLayerState::CoordinatedGraphicsLayerState):

Source/WebKit2:

  • Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:

(IPC::ArgumentCoder<CoordinatedGraphicsLayerState>::encode):
(IPC::ArgumentCoder<CoordinatedGraphicsLayerState>::decode):

  • Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.h:
  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:

(WebKit::CoordinatedGraphicsScene::syncPlatformLayerIfNeeded):
(WebKit::CoordinatedGraphicsScene::deleteLayer):
(WebKit::CoordinatedGraphicsScene::assignImageBackingToLayer):
(WebKit::CoordinatedGraphicsScene::purgeGLResources):

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
  • Shared/CoordinatedGraphics/WebCoordinatedSurface.cpp:

(WebKit::WebCoordinatedSurface::Handle::encode):
(WebKit::WebCoordinatedSurface::Handle::decode):
(WebKit::WebCoordinatedSurface::create):
(WebKit::WebCoordinatedSurface::createGraphicsContext):
(WebKit::WebCoordinatedSurface::createHandle):
(WebKit::WebCoordinatedSurface::copyToTexture):

  • Shared/CoordinatedGraphics/WebCoordinatedSurface.h:
12:19 AM Changeset in webkit [212704] by achristensen@apple.com
  • 29 edits
    11 deletes in trunk

Unreviewed, rolling out r212699.

Internal build not ready

Reverted changeset:

"[WebRTC][Mac] Activate libwebrtc"
https://bugs.webkit.org/show_bug.cgi?id=167293
http://trac.webkit.org/changeset/212699

Feb 20, 2017:

11:12 PM Changeset in webkit [212703] by Carlos Garcia Campos
  • 10 edits
    2 deletes in trunk

Remove ENABLE_THREADED_COMPOSITOR build option
https://bugs.webkit.org/show_bug.cgi?id=168606

Reviewed by Michael Catanzaro.

.:

  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/WebKitFeatures.cmake:

Source/WebCore:

  • platform/TextureMapper.cmake:

Source/WebKit2:

Now that we have AC mode on demand with the threaded compositor there's no reason to keep the old AC code.

  • PlatformGTK.cmake:
  • WebProcess/WebPage/LayerTreeHost.cpp:

(WebKit::LayerTreeHost::create):

  • WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp: Removed.
  • WebProcess/WebPage/gtk/LayerTreeHostGtk.h: Removed.

Tools:

  • Scripts/webkitperl/FeatureList.pm:
10:37 PM Changeset in webkit [212702] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Tooltip for "Show console tab" should read "Show Console tab"
https://bugs.webkit.org/show_bug.cgi?id=168630
<rdar://problem/30621662>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-02-20
Reviewed by Brian Burg.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Views/LogContentView.js:

(WebInspector.LogContentView):

10:37 PM Changeset in webkit [212701] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix some 32-bit builds after r212699

  • platform/mediastream/mac/RealtimeIncomingVideoSource.cpp:

(WebCore::RealtimeIncomingVideoSource::OnFrame):
Explicitly cast OSStatus to int for logging.

9:51 PM Changeset in webkit [212700] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

Remove unnecessary PerformanceEntry virtual methods
https://bugs.webkit.org/show_bug.cgi?id=168633

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-02-20
Reviewed by Ryosuke Niwa.

  • page/PerformanceEntry.h:

(WebCore::PerformanceEntry::isResource):
(WebCore::PerformanceEntry::isMark):
(WebCore::PerformanceEntry::isMeasure):
Implement based on the Type.

  • page/PerformanceMark.h:
  • page/PerformanceMeasure.h:
  • page/PerformanceResourceTiming.h:

Remove virtual overrides.

9:50 PM Changeset in webkit [212699] by achristensen@apple.com
  • 29 edits
    11 adds in trunk

[WebRTC][Mac] Activate libwebrtc
https://bugs.webkit.org/show_bug.cgi?id=167293
LayoutTests/imported/w3c:

<rdar://problem/30401864>

Patch by Youenn Fablet <youennf@gmail.com> on 2017-02-20
Reviewed by Alex Christensen.

  • web-platform-tests/webrtc/datachannel-emptystring-expected.txt:
  • web-platform-tests/webrtc/no-media-call-expected.txt:
  • web-platform-tests/webrtc/promises-call-expected.txt:

Source/ThirdParty/libwebrtc:

<rdar://problem/30401864>

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

Doing some clean-up.

  • Configurations/libwebrtc.xcconfig:
  • Source/webrtc/base/checks.h:
  • libwebrtc.xcodeproj/project.pbxproj:

Source/WebCore:

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

  • Configurations/WebCore.xcconfig:
  • Configurations/WebCoreTestSupport.xcconfig:

Source/WebKit2:

<rdar://problem/30401864>

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

Activating PeerConnection runtime flag based on successful loading of libwebrtc.dylib.

  • Configurations/WebKit.xcconfig:
  • Shared/WebPreferencesDefinitions.h:
  • UIProcess/WebPreferences.cpp:

(WebKit::checkWebRTCAvailability):

Source/WTF:

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

  • wtf/Platform.h:

Tools:

<rdar://problem/30401864>

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

Fixing paths to allow loading libwebrtc.dylib successfully.

  • Scripts/build-webkit:
  • Scripts/webkitdirs.pm:

(setupMacWebKitEnvironment):
(setupIOSWebKitEnvironment):

LayoutTests:

<rdar://problem/30401864>

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

  • TestExpectations:
  • fast/mediastream/RTCPeerConnection-addIceCandidate-expected.txt:
  • fast/mediastream/RTCPeerConnection-addTrack-reuse-sender-expected.txt:
  • fast/mediastream/RTCPeerConnection-icecandidate-event-expected.txt:
  • fast/mediastream/RTCPeerConnection-legacy-stream-based-api-expected.txt:
  • platform/gtk/TestExpectations:
  • platform/gtk/fast/mediastream/RTCPeerConnection-AddRemoveStream-expected.txt: Added.
  • platform/gtk/fast/mediastream/RTCPeerConnection-addIceCandidate-expected.txt: Copied from LayoutTests/fast/mediastream/RTCPeerConnection-addIceCandidate-expected.txt.
  • platform/gtk/fast/mediastream/RTCPeerConnection-addTrack-reuse-sender-expected.txt: Copied from LayoutTests/fast/mediastream/RTCPeerConnection-addTrack-reuse-sender-expected.txt.
  • platform/gtk/fast/mediastream/RTCPeerConnection-closed-state-expected.txt: Added.
  • platform/gtk/fast/mediastream/RTCPeerConnection-icecandidate-event-expected.txt: Copied from LayoutTests/fast/mediastream/RTCPeerConnection-icecandidate-event-expected.txt.
  • platform/gtk/fast/mediastream/RTCPeerConnection-iceconnectionstatechange-event-expected.txt: Added.
  • platform/gtk/fast/mediastream/RTCPeerConnection-legacy-stream-based-api-expected.txt: Copied from LayoutTests/fast/mediastream/RTCPeerConnection-legacy-stream-based-api-expected.txt.
  • platform/gtk/fast/mediastream/RTCPeerConnection-onnegotiationneeded-expected.txt: Added.
  • platform/gtk/fast/mediastream/RTCPeerConnection-overloaded-operations-params-expected.txt: Added.
  • platform/gtk/fast/mediastream/RTCRtpSender-replaceTrack-expected.txt: Added.
  • platform/gtk/fast/mediastream/no-media-call-expected.txt: Added.
  • platform/ios-simulator-wk2/TestExpectations:
  • platform/mac-wk1/TestExpectations:
9:02 PM Changeset in webkit [212698] by commit-queue@webkit.org
  • 6 edits in trunk

ASSERTION FAILED: m_normalWorld->hasOneRef() under WorkerThread::stop
https://bugs.webkit.org/show_bug.cgi?id=168356
<rdar://problem/30592486>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-02-20
Reviewed by Ryosuke Niwa.

Source/WebCore:

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::removeAllEventListeners):
Remove Performance object EventListeners.

  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::~WorkerGlobalScope):
(WebCore::WorkerGlobalScope::removeAllEventListeners):
(WebCore::WorkerGlobalScope::performance):

  • workers/WorkerGlobalScope.h:

Remove Performance object EventListeners.
Also clear Performance early in destruction since its ContextDestructionObserver
destruction makes checks about the WorkerThread.

LayoutTests:

Unskip tests now that they no longer trigger assertions.

8:44 PM Changeset in webkit [212697] by aakash_jain@apple.com
  • 4 edits in trunk/Source/WebKit/mac

Stop exporting interface WebCoreScrollView on iOS
https://bugs.webkit.org/show_bug.cgi?id=168536

Reviewed by Dan Bernstein.

  • WebKit.exp: Moved symbol for WebCoreScrollView interface to mac specific file.
  • WebKit.mac.exp: Ditto.
  • WebView/WebHTMLView.mm: WebCoreScrollView shouldn't be defined for iOS platform.
6:35 PM Changeset in webkit [212696] by jer.noble@apple.com
  • 6 edits
    2 adds in trunk

Local audio-only stream will not trigger playback to begin
https://bugs.webkit.org/show_bug.cgi?id=168412

Reviewed by Youenn Fablet.

Source/WebCore:

Test: fast/mediastream/local-audio-playing-event.html

With video-bearing streams, the first video sample emitted from the stream causes the
readyState to move from HAVE_NOTHING to HAVE_ENOUGH_DATA. Wire up this same behavior for
audio-bearing streams. Add a MediaStreamTrackPrivate::Observer callback method
audioSamplesAvailable(), which gets passed up to MediaPlayerPrivateMediaStreamAVFObjC.
Because this callback may be (and probably will be) called on a background thread, run the
updateReadyState() task in a scheduledDeferredTask().

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

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::audioSamplesAvailable):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateTracks):

  • platform/mediastream/MediaStreamTrackPrivate.cpp:

(WebCore::MediaStreamTrackPrivate::audioSamplesAvailable):

  • platform/mediastream/MediaStreamTrackPrivate.h:

(WebCore::MediaStreamTrackPrivate::Observer::audioSamplesAvailable):

LayoutTests:

  • fast/mediastream/local-audio-playing-event-expected.txt: Added.
  • fast/mediastream/local-audio-playing-event.html: Added.
6:32 PM Changeset in webkit [212695] by BJ Burg
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: RTL: back/forward navigation buttons should not be flipped
https://bugs.webkit.org/show_bug.cgi?id=168275
<rdar://problem/30506897>

Reviewed by Matt Baker.

The leading button is always "back" and the trailing button is always "forward", but
in RTL the icons are swapped so that it still looks like '< >' from left-to-right.

Rename the two arrows in the SVG to "left" and "right" arrows, and use them appropriately
in ContentBrowser for back-forward icons based on the layout direction.

  • UserInterface/Images/BackForwardArrows.svg:
  • UserInterface/Views/ContentBrowser.js:

(WebInspector.ContentBrowser):

  • UserInterface/Views/FindBanner.css:

(.find-banner > button.segmented.left > .glyph):
(.find-banner > button.segmented.left:active:not(:disabled) > .glyph):
(.find-banner > button.segmented.right > .glyph):
(.find-banner > button.segmented.right:active:not(:disabled) > .glyph):

6:23 PM Changeset in webkit [212694] by aakash_jain@apple.com
  • 2 edits in trunk/Source/WebKit/mac

Exclude various mac-specific header files from iOS build
https://bugs.webkit.org/show_bug.cgi?id=168621

Reviewed by Dan Bernstein.

  • Configurations/WebKitLegacy.xcconfig:
6:12 PM Changeset in webkit [212693] by Alan Bujtas
  • 7 edits
    2 adds in trunk

Simple line layout: Implement absoluteQuadsForRange.
https://bugs.webkit.org/show_bug.cgi?id=168613
<rdar://problem/30614618>

Reviewed by Simon Fraser.

Source/WebCore:

This patch ensures that the commonly used Range::getClientRects calls do not
throw us off of the simple line layout path.

Test: fast/dom/Range/simple-line-layout-getclientrects.html

  • rendering/RenderText.cpp:

(WebCore::RenderText::absoluteQuadsForRange):

  • rendering/SimpleLineLayoutFunctions.cpp:

(WebCore::SimpleLineLayout::collectAbsoluteQuadsForRange): Special case empty ranges with multiple empty runs.

  • rendering/SimpleLineLayoutFunctions.h:
  • rendering/SimpleLineLayoutResolver.cpp:

(WebCore::SimpleLineLayout::RunResolver::rangeForRendererWithOffsets):

  • rendering/SimpleLineLayoutResolver.h:

LayoutTests:

  • fast/dom/Range/simple-line-layout-getclientrects-expected.html: Added.
  • fast/dom/Range/simple-line-layout-getclientrects.html: Added.
5:51 PM Changeset in webkit [212692] by mark.lam@apple.com
  • 13 edits
    1 add in trunk/Source

[Re-landing] CachedCall should let GC know to keep its arguments alive.
https://bugs.webkit.org/show_bug.cgi?id=168567
<rdar://problem/30475767>

Reviewed by Saam Barati.

Source/JavaScriptCore:

We fix this by having CachedCall use a MarkedArgumentBuffer to store its
arguments instead of a Vector.

Also declared CachedCall, MarkedArgumentBuffer, and ProtoCallFrame as
WTF_FORBID_HEAP_ALLOCATION because they rely on being stack allocated for
correctness.

Update: the original patch has a bug in MarkedArgumentBuffer::expandCapacity()
where it was copying and calling addMarkSet() on values in m_buffer beyond m_size
(up to m_capacity). As a result, depending on the pre-existing values in
m_inlineBuffer, this may result in a computed Heap pointer that is wrong, and
subsequently, manifest as a crash. This is likely to be the cause of the PLT
regression.

I don't have a new test for this fix because the issue relies on sufficiently bad
values randomly showing up in m_inlineBuffer when we do an ensureCapacity() which
calls expandCapacity().

  • interpreter/CachedCall.h:

(JSC::CachedCall::CachedCall):
(JSC::CachedCall::call):
(JSC::CachedCall::clearArguments):
(JSC::CachedCall::appendArgument):
(JSC::CachedCall::setArgument): Deleted.

  • interpreter/CallFrame.h:

(JSC::ExecState::emptyList):

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::prepareForRepeatCall):

  • interpreter/Interpreter.h:
  • interpreter/ProtoCallFrame.h:
  • runtime/ArgList.cpp:

(JSC::MarkedArgumentBuffer::slowEnsureCapacity):
(JSC::MarkedArgumentBuffer::expandCapacity):
(JSC::MarkedArgumentBuffer::slowAppend):

  • runtime/ArgList.h:

(JSC::MarkedArgumentBuffer::append):
(JSC::MarkedArgumentBuffer::ensureCapacity):

  • runtime/StringPrototype.cpp:

(JSC::replaceUsingRegExpSearch):

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:

Source/WTF:

Added a WTF_FORBID_HEAP_ALLOCATION that will cause a compilation failure if
a class declared with it is malloced.

While this doesn't prevent that class declared WTF_FORBID_HEAP_ALLOCATION from
being embedded in another class that is heap allocated, it does at minimum
document the intent and gives the users of this class a chance to do the
right thing.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/ForbidHeapAllocation.h: Added.
5:48 PM Changeset in webkit [212691] by Ryan Haddad
  • 28 edits
    19 deletes in trunk

Unreviewed, rolling out r212685.

This change broke the 32-bit Sierra build.

Reverted changeset:

"Resource Load Statistics: Add alternate classification
method"
https://bugs.webkit.org/show_bug.cgi?id=168347
http://trac.webkit.org/changeset/212685

5:46 PM Changeset in webkit [212690] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.1.30

Tag Safari-603.1.30.

5:44 PM Changeset in webkit [212689] by commit-queue@webkit.org
  • 9 edits in trunk/Source/WebCore

[WebIDL] Add support for constructors that have variadic parameters
https://bugs.webkit.org/show_bug.cgi?id=168614

Patch by Sam Weinig <sam@webkit.org> on 2017-02-20
Reviewed by Alex Christensen.

In preparation of removing some more custom bindings, move the constructor calling
code over to using GenerateParametersCheck completely. This required

  • Removing special case of NamedConstructors automatically getting a Document passed to them. The three named constructors that expected this have been updated to add the required attributes.
  • Add a version of the GenerateCallWith prologue for constructors.
  • Remove now unnecessary argumentCount return value from GenerateParametersCheck.
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):
(GenerateCallWithUsingReferences):
(GenerateCallWithUsingPointers):
(GenerateConstructorCallWithUsingPointers):
(GenerateCallWith):
(GenerateParametersCheck):
(GenerateConstructorDefinition):

  • bindings/scripts/test/JS/JSTestInterface.cpp:
  • bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
  • bindings/scripts/test/JS/JSTestObj.cpp:
  • bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:

Update results for more consistent placement of ScriptExecutionContext and Document
accessors, add UNLIKELY to context checks, and remove automatic Document passing
for NamedConstructors.

  • html/HTMLAudioElement.idl:
  • html/HTMLImageElement.idl:
  • html/HTMLOptionElement.idl:

Add ConstructorCallWith=Document.

5:22 PM Changeset in webkit [212688] by BJ Burg
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: RTL: hierarchical path components need spacing and icon adjustments
https://bugs.webkit.org/show_bug.cgi?id=168581

Reviewed by Matt Baker.

Flip a bunch of padding, margin, and offsets. Flip the chevron using a CSS transform.

  • UserInterface/Views/HierarchicalPathComponent.css:

(.hierarchical-path-component):
(.hierarchical-path-component > .icon):
(.hierarchical-path-component > :matches(.icon, .selector-arrows)):
(body[dir=ltr] .hierarchical-path-component > :matches(.icon, .selector-arrows)):
(body[dir=rtl] .hierarchical-path-component > :matches(.icon, .selector-arrows)):
(.hierarchical-path-component > .selector-arrows):
(.hierarchical-path-component > select):
(body[dir=ltr] .hierarchical-path-component > select):
(body[dir=rtl] .hierarchical-path-component > select):
(.hierarchical-path-component > .separator):
(body[dir=ltr] .hierarchical-path-component > .separator):
(body[dir=rtl] .hierarchical-path-component > .separator):
(.hierarchical-path-component.text-only):
(body[dir=ltr] .hierarchical-path-component.text-only):
(body[dir=rtl] .hierarchical-path-component.text-only):
(body[dir=ltr] .hierarchical-path-component.text-only > select):
(body[dir=rtl] .hierarchical-path-component.text-only > select):

4:53 PM Changeset in webkit [212687] by matthew_hanson@apple.com
  • 4 edits in branches/safari-603-branch/Source/WebCore

Roll out r212554 via r212601. rdar://problem/30339638

4:35 PM Changeset in webkit [212686] by Ryan Haddad
  • 1 edit
    3 adds in trunk/LayoutTests

Add mac-wk1 baseline for fast/canvas/webgl/context-creation-attributes.html
https://bugs.webkit.org/show_bug.cgi?id=168623

Unreviewed test gardening.

  • platform/mac-wk1/fast/canvas/webgl/context-creation-attributes-expected.txt: Added.
4:34 PM Changeset in webkit [212685] by wilander@apple.com
  • 28 edits
    4 copies
    24 adds in trunk

Resource Load Statistics: Add alternate classification method
https://bugs.webkit.org/show_bug.cgi?id=168347
<rdar://problem/30352793>

Reviewed by Alex Christensen.

Source/WebCore:

This patch only adds test infrastructure in WebCore.

Tests: http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics.html

http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins.html
http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins.html
http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to.html
http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics.html
http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins.html
http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins.html
http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to.html

  • loader/ResourceLoadObserver.cpp:

(WebCore::ResourceLoadObserver::setSubframeUnderTopFrameOrigin):
(WebCore::ResourceLoadObserver::setSubresourceUnderTopFrameOrigin):
(WebCore::ResourceLoadObserver::setSubresourceUniqueRedirectTo):

  • loader/ResourceLoadObserver.h:

Source/WebKit2:

This patch adds a CorePrediction-based classifier to the WebResourceLoadStatisticsStore.
The CorePrediction framework is introduced as a dependency for macOS and iOS. The patch
also adds functions to support layout tests of the feature.

  • Configurations/BaseTarget.xcconfig:
  • Configurations/WebKit.xcconfig:

Added dependency on CorePrediction.

  • Platform/classifier: Added.
  • Platform/classifier/ResourceLoadStatisticsClassifier.h: Added.

Pulls in the Cocoa-specific classifier for Cocoa-based platforms.

(WebKit::ResourceLoadStatisticsClassifier::ResourceLoadStatisticsClassifier):

  • Platform/classifier/ResourceLoadStatisticsClassifierBase.cpp: Added.

(WebKit::ResourceLoadStatisticsClassifierBase::hasPrevalentResourceCharacteristics):

Shared classifier logic.

(WebKit::ResourceLoadStatisticsClassifierBase::classifyWithVectorThreshold):

Fallback classifier for when we don't have CorePrediction.

  • Platform/classifier/ResourceLoadStatisticsClassifierBase.h: Added.

(WebKit::ResourceLoadStatisticsClassifierBase::ResourceLoadStatisticsClassifierBase):
(WebKit::ResourceLoadStatisticsClassifierBase::~ResourceLoadStatisticsClassifierBase):

  • Platform/classifier/cocoa: Added.
  • Platform/classifier/cocoa/CorePredictionSPI.h: Added.

Includes CorePrediction if available, otherwise declares needed symbols.
Always redeclares the functions so we'll get a build error if
CorePrediction changes.

  • Platform/classifier/cocoa/ResourceLoadStatisticsClassifierCocoa.cpp: Added.

(WebKit::ResourceLoadStatisticsClassifier::classify):
(WebKit::ResourceLoadStatisticsClassifier::storagePath):
(WebKit::ResourceLoadStatisticsClassifier::shouldUseCorePrediction):

The new classifier for Cocoa platforms.

  • Platform/classifier/cocoa/ResourceLoadStatisticsClassifierCocoa.h: Added.

(WebKit::ResourceLoadStatisticsClassifier::ResourceLoadStatisticsClassifier):

  • PlatformGTK.cmake:

Added Platform/classifier directory and ResourceLoadStatisticsClassifierBase.cpp.

  • PlatformMac.cmake:

Added Platform/classifier and Platform/classifier/cocoa directories, and
source files ResourceLoadStatisticsClassifierBase.cpp and
ResourceLoadStatisticsClassifierCocoa.cpp

  • Resources/ResourceLoadStatistics: Added.
  • Resources/ResourceLoadStatistics/corePrediction_model: Added.

Model file to load into CorePrediction.

  • UIProcess/API/C/WKResourceLoadStatisticsManager.cpp:

(WKResourceLoadStatisticsManagerSetSubframeUnderTopFrameOrigin):
(WKResourceLoadStatisticsManagerSetSubresourceUnderTopFrameOrigin):
(WKResourceLoadStatisticsManagerSetSubresourceUniqueRedirectTo):

Test infrastructure.

  • UIProcess/API/C/WKResourceLoadStatisticsManager.h:
  • UIProcess/WebResourceLoadStatisticsManager.cpp:

(WebKit::WebResourceLoadStatisticsManager::setSubframeUnderTopFrameOrigin):
(WebKit::WebResourceLoadStatisticsManager::setSubresourceUnderTopFrameOrigin):
(WebKit::WebResourceLoadStatisticsManager::setSubresourceUniqueRedirectTo):

Test infrastructure.

  • UIProcess/WebResourceLoadStatisticsManager.h:
  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):

Renamed m_storagePath to m_statisticsStoragePath for clarity.

(WebKit::WebResourceLoadStatisticsStore::classifyResource):

Now calls the classifier through its ResourceLoadStatisticsClassifier
member variable.

(WebKit::WebResourceLoadStatisticsStore::persistentStoragePath):

Renamed m_storagePath to m_statisticsStoragePath for clarity.

(WebKit::WebResourceLoadStatisticsStore::writeEncoderToDisk):

Renamed m_storagePath to m_statisticsStoragePath for clarity.

(WebKit::WebResourceLoadStatisticsStore::hasPrevalentResourceCharacteristics): Deleted.

  • UIProcess/WebResourceLoadStatisticsStore.h:
  • WebKit2.xcodeproj/project.pbxproj:

Added the new classifier source files under Platform/classifier and the
corePrediction_model file under Resources/ResourceLoadStatistics.

Source/WTF:

  • wtf/Platform.h:

Added support for HAVE(CORE_PREDICTION).

Tools:

Added three testRunner functions to facilitate layout tests:

  • setStatisticsSubframeUnderTopFrameOrigin()
  • setStatisticsSubresourceUnderTopFrameOrigin()
  • setStatisticsSubresourceUniqueRedirectTo()
  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setStatisticsSubframeUnderTopFrameOrigin):
(WTR::TestRunner::setStatisticsSubresourceUnderTopFrameOrigin):
(WTR::TestRunner::setStatisticsSubresourceUniqueRedirectTo):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::setStatisticsSubframeUnderTopFrameOrigin):
(WTR::TestController::setStatisticsSubresourceUnderTopFrameOrigin):
(WTR::TestController::setStatisticsSubresourceUniqueRedirectTo):

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

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

WebKitLibraries:

  • WebKitPrivateFrameworkStubs/iOS/10/CorePrediction.framework: Added.
  • WebKitPrivateFrameworkStubs/iOS/10/CorePrediction.framework/CorePrediction.tbd: Added.

Stubs for private framework.

LayoutTests:

  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics.html: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins.html: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins.html: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to.html: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics.html: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins.html: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins.html: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to.html: Added.
  • platform/gtk/TestExpectations:

The whole http/tests/loading/resourceLoadStatistics marked as crashing based on
Carlos Garcia Campos's assessment in https://bugs.webkit.org/show_bug.cgi?id=168171.

  • platform/wk2/TestExpectations:

The above tests are only valid for WebKit2. Marked as [ Pass ].

4:29 PM Changeset in webkit [212684] by matthew_hanson@apple.com
  • 1 delete in tags/Safari-603.1.30

Remove tag.

4:25 PM Changeset in webkit [212683] by matthew_hanson@apple.com
  • 10 edits
    4 deletes in branches/safari-603-branch/Source

Roll out r212660. rdar://problem/30553220

4:18 PM Changeset in webkit [212682] by matthew_hanson@apple.com
  • 6 edits
    6 deletes in branches/safari-603-branch

Roll out r212621 via r212647. rdar://problem/30563318

4:08 PM Changeset in webkit [212681] by andersca@apple.com
  • 10 edits in trunk

Use the new drag code path when dragging links
https://bugs.webkit.org/show_bug.cgi?id=168612

Reviewed by Tim Horton.

Source/WebCore:

  • editing/Editor.cpp:

(WebCore::Editor::copyURL):
Use userVisibleString instead of fillInUserVisibleForm.

(WebCore::Editor::pasteboardWriterURL):
New function that returns a PasteboardWriterData::URL for a given URL + title.

  • editing/Editor.h:

Add new members.

  • editing/mac/EditorMac.mm:

(WebCore::Editor::userVisibleString):
(WebCore::Editor::fillInUserVisibleForm): Deleted.
Add a getter instead of a function that fills in a struct member.

  • page/DragController.cpp:

(WebCore::DragController::startDrag):
Add the new DragItem code path when dragging links.

  • platform/PasteboardWriterData.cpp:

(WebCore::PasteboardWriterData::isEmpty):
Check for m_url as well.

(WebCore::PasteboardWriterData::setURL):
Set m_url.

  • platform/PasteboardWriterData.h:

Add new members.

  • platform/mac/PasteboardWriter.mm:

(WebCore::toUTI):
New helper function that returns an UTI from a pasteboard type.

(WebCore::createPasteboardWriter):
Handle converting URLs to the various pasteboard types.

Tools:

If a type is not dynamic, just use the static UTI.

  • DumpRenderTree/mac/DumpRenderTreePasteboard.mm:

(-[LocalPasteboard writeObjects:]):

4:04 PM Changeset in webkit [212680] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.1.30

Tag Safari-603.1.30.

4:04 PM Changeset in webkit [212679] by matthew_hanson@apple.com
  • 1 delete in tags/Safari-603.1.30

Remove tag.

2:29 PM Changeset in webkit [212678] by ap@apple.com
  • 2 edits in trunk/LayoutTests

LayoutTest fast/multicol/column-span-parent-continuation-crash.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=168341

Reviewed by Daniel Bates.

  • fast/multicol/column-span-parent-continuation-crash.html: Make sure that the

document is fully parsed before the test runs. I'm not sure if the zero delay
is still needed, but it doesn't hurt.

1:48 PM Changeset in webkit [212677] by matthew_hanson@apple.com
  • 13 edits
    1 delete in branches/safari-603-branch/Source

Roll out r212618 via r212646. rdar://problem/30475767

1:48 PM Changeset in webkit [212676] by matthew_hanson@apple.com
  • 8 edits in branches/safari-603-branch

Merge r211750. rdar://problem/30383964

1:48 PM Changeset in webkit [212675] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebCore

Merge r212651. rdar://problem/30604254

1:48 PM Changeset in webkit [212674] by matthew_hanson@apple.com
  • 15 edits
    2 adds in branches/safari-603-branch

Merge r212650. rdar://problem/30604254

1:48 PM Changeset in webkit [212673] by matthew_hanson@apple.com
  • 9 edits in branches/safari-603-branch

Merge r212633. rdar://problem/30592266

1:48 PM Changeset in webkit [212672] by matthew_hanson@apple.com
  • 8 edits in branches/safari-603-branch/Source

Merge r212331. rdar://problem/30522092

1:27 PM Changeset in webkit [212671] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Unreviewed, rolling out r212653.

This rebaseline was incorrect.

Reverted changeset:

"Rebaseline fast/canvas/webgl/context-creation-attributes.html
after r212650."
http://trac.webkit.org/changeset/212653

1:24 PM Changeset in webkit [212670] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Remove debug flag from flaky test streams/pipe-to.html.
https://bugs.webkit.org/show_bug.cgi?id=165874

Unreviewed test gardening.

  • platform/mac/TestExpectations:
1:21 PM Changeset in webkit [212669] by Wenson Hsieh
  • 28 edits in trunk/Source

Add plumbing to the UI process for TextIndicatorData when computing the drag image
https://bugs.webkit.org/show_bug.cgi?id=168583
Work towards <rdar://problem/30313681>

Source/WebCore:

Reviewed by Tim Horton.

Adds some additional arguments to drag image creation functions to allow platforms to specify TextIndicatorData
for a link or selection-based DragImage. This TextIndicatorData is an optional member of the DragImage, and is
propagated to the UI process via SetDragImage in the WebDragClient.

Additionally renames hasDataInteractionAtPosition to hasSelectionAtPosition to better reflect its purpose.

No new tests, since there is no behavior change.

  • page/DragController.cpp:

(WebCore::DragController::startDrag):

  • page/Page.cpp:

(WebCore::Page::hasSelectionAtPosition):
(WebCore::Page::hasDataInteractionAtPosition): Deleted.

  • page/Page.h:
  • platform/DragImage.cpp:

(WebCore::createDragImageForSelection):
(WebCore::createDragImageForLink):
(WebCore::DragImage::operator=):

  • platform/DragImage.h:
  • platform/gtk/DragImageGtk.cpp:

(WebCore::createDragImageForLink):

  • platform/mac/DragImageMac.mm:

(WebCore::createDragImageForLink):

  • platform/win/DragImageWin.cpp:

(WebCore::createDragImageForLink):

Source/WebKit/mac:

Accounts for changes in WebCore -- see Source/WebCore/ChangeLog for more details.

Reviewed by Tim Horton.

  • WebView/WebHTMLView.mm:

(-[WebHTMLView _selectionDraggingImage]):
(-[WebHTMLView selectionImageForcingBlackText:selectionImageForcingBlackText:]):

Source/WebKit2:

Reviewed by Tim Horton.

Changes the SetDragImage IPC message to send TextIndicatorData over to the UI process. Also changes the boolean
isLink parameter to be a DragSourceAction instead, leaving it up to the receiving end (in the UI process) to
special case links.

Additionally, renames hasDataInteractionAtPosition to hasSelectionAtPosition to better reflect its purpose.

These changes are only infrastructural should not alter any behaviors.

  • Shared/ios/InteractionInformationAtPosition.h:
  • Shared/ios/InteractionInformationAtPosition.mm:

(WebKit::InteractionInformationAtPosition::encode):
(WebKit::InteractionInformationAtPosition::decode):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _simulateDataInteractionGestureRecognized]):
(-[WKWebView _simulateDataInteractionEntered:]):
(-[WKWebView _simulateDataInteractionUpdated:]):
(-[WKWebView _simulateDataInteractionPerformOperation:]):
(-[WKWebView _simulateDataInteractionEnded:]):
(-[WKWebView _simulateDataInteractionSessionDidEnd:withOperation:]):
(-[WKWebView _simulateFailedDataInteractionWithIndex:]):
(-[WKWebView _simulateWillBeginDataInteractionWithIndex:withSession:]):
(-[WKWebView _simulatedItemsForDataInteractionWithIndex:]):

  • UIProcess/API/Cocoa/_WKTestingDelegate.h:
  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::setDragImage):
(WebKit::PageClientImpl::startDataInteractionWithImage):

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

(-[WKContentView hasSelectablePositionAtPoint:]):
(-[WKContentView pointIsInDataInteractionContent:]):
(-[WKContentView _dataInteractionGestureRecognizer]):
(-[WKContentView pointIsInAssistedNode:]):

  • UIProcess/mac/PageClientImpl.h:
  • UIProcess/mac/PageClientImpl.mm:

(WebKit::PageClientImpl::setDragImage):

  • UIProcess/mac/WebPageProxyMac.mm:

(WebKit::WebPageProxy::setDragImage):

  • WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:

(WebKit::WebDragClient::startDrag):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::getPositionInformation):

1:10 PM Changeset in webkit [212668] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebKit2

Merge r212666. rdar://problem/30239618

12:57 PM Changeset in webkit [212667] by Brent Fulgham
  • 2 edits in trunk/Source/WebCore

Nullptr dereferences when stopping a load
https://bugs.webkit.org/show_bug.cgi?id=168608
<rdar://problem/29852056>

Reviewed by Ryosuke Niwa.

Don't attempt to notify a detached frame's load client that the load is
stopped.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::stopLoading): Check for null frame loader and
bypass dereferencing it.

12:37 PM Changeset in webkit [212666] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit2

Don’t set NSURLSessionConfiguration’s _sourceApplicationAuditTokenData if _sourceApplicationBundleIdentifier is also set.
https://bugs.webkit.org/show_bug.cgi?id=168607

rdar://problem/30239618

Patch by David Quesada <david_quesada@apple.com> on 2017-02-20
Reviewed by Geoffrey Garen.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
If the process pool configuration sets a source application bundle identifier, don't give the NSURLSession configuration
the audit token from the UI process, as it may be associated with an application with a conflicting bundle identifier.

12:30 PM Changeset in webkit [212665] by commit-queue@webkit.org
  • 13 edits
    1 delete in trunk/Source

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

"Appears to cause PLT regression" (Requested by mlam on
#webkit).

Reverted changeset:

"CachedCall should let GC know to keep its arguments alive."
https://bugs.webkit.org/show_bug.cgi?id=168567
http://trac.webkit.org/changeset/212618

11:57 AM Changeset in webkit [212664] by matthew_hanson@apple.com
  • 15 edits in branches/safari-603-branch/Source

Roll out r212518 via r212538. rdar://problem/30541748

11:32 AM Changeset in webkit [212663] by andersca@apple.com
  • 15 edits
    1 copy
    1 move in trunk

Add a new drag code path and use it for dragging plain text
https://bugs.webkit.org/show_bug.cgi?id=168534

Reviewed by Geoffrey Garen.

Source/WebCore:

The new code path is currently only used for plain text selection dragging.

  • WebCore.xcodeproj/project.pbxproj:
  • page/DragClient.h:

(WebCore::DragClient::useLegacyDragClient):
Add a new member function. This currently returns true everywhere except legacy WebKit on Mac.

(WebCore::DragClient::beginDrag):
Add new empty member function.

  • page/DragController.cpp:

(WebCore::dragImageAnchorPointForSelectionDrag):
Helper function that returns the anchor point for a selection drag image.

(WebCore::DragController::startDrag):
If we can use the new code path, set up a drag item with an image and pasteboard data.

(WebCore::DragController::beginDrag):
New function that calls out to the client.

  • page/DragController.h:

Add new members.

  • platform/DragItem.h:

Add a new class - it's essentially a tuple of a drag image, an anchor point and the pasteboard data the item represents.

  • platform/mac/PasteboardWriter.h:

Rename createPasteboardWriting to createPasteboardWriter.

  • platform/mac/PasteboardWriter.mm:

(WebCore::createPasteboardWriter):
Use the UTI pasteboard type.

Source/WebKit/mac:

  • WebCoreSupport/WebDragClient.h:

Add new members.

  • WebCoreSupport/WebDragClient.mm:

(WebDragClient::useLegacyDragClient):
Return false here.

(WebDragClient::beginDrag):
New client member function. Create an NSDraggingItem and use it to begin a dragging session.

  • WebView/WebHTMLView.mm:

(-[WebHTMLView draggingSession:sourceOperationMaskForDraggingContext:]):
Get the source operation mask from WebCore.

(-[WebHTMLView draggingSession:endedAtPoint:operation:]):
Send a fake mouse up event.

  • WebView/WebHTMLViewInternal.h:

Declare that WebHTMLView conforms to NSDraggingSource.

Tools:

Update the testing infrastructure to handle NSDraggingSession.

  • DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
  • DumpRenderTree/mac/DumpRenderTreePasteboard.mm: Renamed from Tools/DumpRenderTree/mac/DumpRenderTreePasteboard.m.

(-[LocalPasteboard writeObjects:]):
Implement this in terms of the legacy pasteboard API.

  • DumpRenderTree/mac/EventSendingController.mm:

(drt_WebHTMLView_beginDraggingSessionWithItemsEventSource):
(+[EventSendingController initialize]):
Swizzle the drag method instead of adding a delegate method (like the old code does).

11:14 AM Changeset in webkit [212662] by BJ Burg
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: RTL: adjust positioning of scope bar items with multiple values
https://bugs.webkit.org/show_bug.cgi?id=168575

Reviewed by Matt Baker.

Mirror the leading margin as necessary. Adjust the <select> positioning
so that the popup is really close to the scope bar item's position.

  • UserInterface/Views/ScopeBar.css:

(body[dir=ltr] .scope-bar > li.multiple > select):
(body[dir=rtl] .scope-bar > li.multiple > select):
(.scope-bar > li.multiple > .arrows):
(body[dir=ltr] .scope-bar > li.multiple > .arrows):
(body[dir=rtl] .scope-bar > li.multiple > .arrows):

10:39 AM Changeset in webkit [212661] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix libwebrtc build after r212644.
https://bugs.webkit.org/show_bug.cgi?id=168596

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::LibWebRTCMediaEndpoint::StatsCollector::OnStatsDelivered):
m_endpoint changed from a c++ reference to a WTF::Ref, so we need to use operator -> instead of .

10:33 AM Changeset in webkit [212660] by matthew_hanson@apple.com
  • 10 edits
    1 copy
    3 adds in branches/safari-603-branch/Source

rdar://problem/30553220

10:32 AM Changeset in webkit [212659] by ap@apple.com
  • 6 edits in trunk/Source/WebKit

List of WebCore symbols to re-export from WebKitLegacy should be built automatically
https://bugs.webkit.org/show_bug.cgi?id=168342
rdar://problem/26182266

Reviewed by Tim Horton.

Source/WebKit:

  • WebKit.xcodeproj/project.pbxproj: Append ReexportedWebCoreSymbols_${CURRENT_ARCH}.exp

to WebKitLegacy.generated.exp if it exists. Added it to build phase inputs for
dependency tracking.

Source/WebKit/ios:

  • WebKit.iOS.exp: Removed manually added symbols.

Source/WebKit/mac:

  • MigrateHeaders.make: On iOS only, process re-exported headers to build a list of

symbols to re-export.

10:30 AM Changeset in webkit [212658] by matthew_hanson@apple.com
  • 10 edits in branches/safari-603-branch/Source

Merge r212652. rdar://problem/30435303

10:22 AM Changeset in webkit [212657] by BJ Burg
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: RTL: sidebar expand/collapse icons need to be flipped
https://bugs.webkit.org/show_bug.cgi?id=168276
<rdar://problem/30506999>

Reviewed by Matt Baker.

The sidebars themselves are already flipped due to the layout direction change, but the
icons have a directional design and need to be manually flipped based on the layout direction.

  • UserInterface/Views/ContentBrowserTabContentView.js:

(WebInspector.ContentBrowserTabContentView):

10:18 AM Changeset in webkit [212656] by commit-queue@webkit.org
  • 17 edits
    1 copy
    4 adds in trunk

[Readable Streams API] Add ReadableByteStreamController byobRequest attribute
https://bugs.webkit.org/show_bug.cgi?id=168319

Patch by Romain Bellessort <romain.bellessort@crf.canon.fr> on 2017-02-20
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Updated expectations for imported w3c tests (new type of error is now obtained).

  • web-platform-tests/streams/readable-byte-streams/general-expected.txt: Updated.
  • web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt: Updated.

Source/WebCore:

Added ReadableByteStreamController byobRequest attribute.

Added tests related to ReadableStreamBYOBRequest as a dedicated object
and also as an attribute of ReadableByteStreamController.

  • CMakeLists.txt: Added new files.
  • DerivedSources.cpp: Added new files.
  • DerivedSources.make: Added new files.
  • Modules/streams/ReadableByteStreamController.idl: Added byobRequest support.
  • Modules/streams/ReadableByteStreamController.js: Added byobRequest support.
  • Modules/streams/ReadableByteStreamInternals.js:

(privateInitializeReadableStreamBYOBRequest): Added constructor.

  • Modules/streams/ReadableStreamBYOBRequest.idl: Added.
  • Modules/streams/ReadableStreamBYOBRequest.js: Added.

(respond): Not implemented yet.
(respondWithNewView): Not implemented yet.
(view): Not implemented yet.

  • WebCore.xcodeproj/project.pbxproj: Added new files.
  • bindings/js/JSDOMGlobalObject.cpp: Added ReadableStreamBYOBRequest support.

(WebCore::JSDOMGlobalObject::addBuiltinGlobals):
(WebCore::JSDOMGlobalObject::finishCreation):
(WebCore::JSDOMGlobalObject::visitChildren):

  • bindings/js/JSReadableStreamPrivateConstructors.cpp: Added ReadableStreamBYOBRequest support.

(WebCore::constructJSReadableByteStreamController):
(WebCore::constructJSReadableStreamBYOBRequest):
(WebCore::JSBuiltinReadableStreamBYOBRequestPrivateConstructor::initializeExecutable):
(WebCore::createReadableStreamBYOBRequestPrivateConstructor):

  • bindings/js/JSReadableStreamPrivateConstructors.h: Added ReadableStreamBYOBRequest support.
  • bindings/js/WebCoreBuiltinNames.h: Added ReadableStreamBYOBRequest support.

LayoutTests:

Added tests related to ReadableStreamBYOBRequest as a dedicated object
and also as an attribute of ReadableByteStreamController.

  • streams/readable-byte-stream-controller.js: Updated with byobRequest attribute test.
  • streams/readable-stream-byob-request-expected.txt: Added.
  • streams/readable-stream-byob-request.html: Added.
  • streams/readable-stream-byob-request.js: Added to cover tests related to ReadableStreamBYOBRequest.
10:16 AM Changeset in webkit [212655] by Ryan Haddad
  • 13 edits
    2 moves
    2 adds
    1 delete in trunk/Source/WebKit2

Unreviewed, rolling out r212632.

This change appears to have caused API test failures.

Reverted changeset:

"Reduce platform ifdefs in WebKit2 custom protocols
implementation"
https://bugs.webkit.org/show_bug.cgi?id=165028
http://trac.webkit.org/changeset/212632

10:14 AM Changeset in webkit [212654] by aakash_jain@apple.com
  • 2 edits in trunk/Source/WebKit/ios

Stop exporting WebPluginController from WebKit
https://bugs.webkit.org/show_bug.cgi?id=168603

Reviewed by Alexey Proskuryakov.

  • WebKit.iOS.exp:
10:00 AM Changeset in webkit [212653] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Rebaseline fast/canvas/webgl/context-creation-attributes.html after r212650.

Unreviewed test gardening.

  • fast/canvas/webgl/context-creation-attributes-expected.txt:
10:00 AM Changeset in webkit [212652] by pvollan@apple.com
  • 10 edits in trunk/Source

[Win] Custom scale factor is not applied in all cases.
https://bugs.webkit.org/show_bug.cgi?id=168117

Reviewed by Brent Fulgham.

We should not call the function deviceScaleFactorForWindow directly, since this
will return the system scale factor, and ignore the custom scale factor.

Source/WebCore:

  • platform/graphics/ca/win/CACFLayerTreeHost.h:
  • platform/graphics/ca/win/WKCACFViewLayerTreeHost.cpp:

(WebCore::WKCACFViewLayerTreeHost::initializeContext):
(WebCore::WKCACFViewLayerTreeHost::resize):
(WebCore::WKCACFViewLayerTreeHost::setScaleFactor):

  • platform/graphics/ca/win/WKCACFViewLayerTreeHost.h:
  • platform/win/GDIUtilities.h:

(WebCore::makeScaledPoint):

  • platform/win/PlatformMouseEventWin.cpp:

(WebCore::positionForEvent):

  • platform/win/PopupMenuWin.cpp:

(WebCore::PopupMenuWin::show):
(WebCore::PopupMenuWin::wndProc):

  • platform/win/PopupMenuWin.h:

Source/WebKit/win:

  • WebView.cpp:

(WebView::handleContextMenuEvent):
(WebView::handleMouseEvent):
(WebView::setAcceleratedCompositing):

9:54 AM Changeset in webkit [212651] by jonlee@apple.com
  • 2 edits in trunk/Source/WebCore

Fix build error for iOS. Unreviewed.

  • platform/graphics/GraphicsContext3D.cpp: Move stub function into !PLATFORM(COCOA) instead of !PLATFORM(MAC).
9:52 AM Changeset in webkit [212650] by jonlee@apple.com
  • 15 edits
    2 adds in trunk

Unreviewed, rolling out r212639.

Have a fix for the linker error on iOS.

Reverted changeset:

"Unreviewed, rolling out r212637."
https://bugs.webkit.org/show_bug.cgi?id=168595
http://trac.webkit.org/changeset/212639

9:52 AM Changeset in webkit [212649] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.15.90

WebKitGTK+ 2.15.90

9:45 AM Changeset in webkit [212648] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.16

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.15.90 release.

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit2:

  • gtk/NEWS: Add release notes for 2.15.90.
9:29 AM Changeset in webkit [212647] by matthew_hanson@apple.com
  • 6 edits
    6 adds in branches/safari-603-branch

Merge r212621. rdar://problem/30563318

9:29 AM Changeset in webkit [212646] by matthew_hanson@apple.com
  • 13 edits
    1 add in branches/safari-603-branch/Source

Merge r212618. rdar://problem/30475767

9:29 AM Changeset in webkit [212645] by matthew_hanson@apple.com
  • 5 edits
    2 adds in branches/safari-603-branch

Merge r212558. rdar://problem/30451563

9:24 AM Changeset in webkit [212644] by commit-queue@webkit.org
  • 6 edits in trunk/Source

[WebRTC] Fix some memory leaks in libwebrtc binding code
https://bugs.webkit.org/show_bug.cgi?id=168596

Patch by Youenn Fablet <youenn@apple.com> on 2017-02-20
Reviewed by Eric Carlson.

Source/WebCore:

Covered by manual testing.

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::LibWebRTCMediaEndpoint::StatsCollector::StatsCollector): Using the libwebrtc way of creating such objects.

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:

(WebCore::LibWebRTCMediaEndpoint::StatsCollector::create):

  • platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:

(WebCore::PeerConnectionFactoryAndThreads::OnMessage):

Source/WebKit2:

  • NetworkProcess/webrtc/NetworkRTCProvider.cpp:

(WebKit::NetworkRTCProvider::OnMessage):

9:24 AM Changeset in webkit [212643] by aakash_jain@apple.com
  • 2 edits in trunk/Source/WebKit/mac

Stop exporting DOMTokenList from WebKit
https://bugs.webkit.org/show_bug.cgi?id=168544

Reviewed by Alexey Proskuryakov.

  • WebKit.exp:
9:22 AM Changeset in webkit [212642] by ap@apple.com
  • 7 edits
    1 add in trunk/Source

Clean up how WebKit exports _WebCreateFragment
https://bugs.webkit.org/show_bug.cgi?id=168579

Reviewed by Dan Bernstein.

Source/WebCore:

  • editing/Editor.h: Removed the declaration of _WebCreateFragment, SOFT_LINK doesn't need it.
  • editing/cocoa/EditorCocoa.mm: Moved a FIXME comment here.

Source/WebKit:

  • WebKit.xcodeproj/project.pbxproj: Added WebCreateFragmentInternal.h.

Source/WebKit/mac:

  • WebCoreSupport/WebCreateFragmentInternal.h: Added a private header.
  • WebCoreSupport/WebEditorClient.mm: Include the new header that declares _WebCreateFragment.
9:20 AM Changeset in webkit [212641] by aakash_jain@apple.com
  • 2 edits in trunk/Source/WebKit/mac

Stop exporting DOMNodeFilter
https://bugs.webkit.org/show_bug.cgi?id=168542

Reviewed by Alexey Proskuryakov.

  • WebKit.exp:
9:18 AM Changeset in webkit [212640] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

BytecodeGenerator should not iterate its m_controlFlowScopeStack using a pointer bump.
https://bugs.webkit.org/show_bug.cgi?id=168585

Reviewed by Yusuke Suzuki.

This is because m_controlFlowScopeStack is a SegmentedVector, and entries for
consecutive indices in the vector are not guaranteed to be consecutive in memory
layout. Instead, we should be using indexing instead.

This issue was detected by the marathon.js test from
https://bugs.webkit.org/show_bug.cgi?id=168580.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitJumpViaFinallyIfNeeded):
(JSC::BytecodeGenerator::emitReturnViaFinallyIfNeeded):

9:12 AM Changeset in webkit [212639] by Ryan Haddad
  • 15 edits
    2 deletes in trunk

Unreviewed, rolling out r212637.

This change broke iOS builds.

Reverted changeset:

"Add 'webglcontextchanged' WebGLContextEvent"
https://bugs.webkit.org/show_bug.cgi?id=168595
http://trac.webkit.org/changeset/212637

8:52 AM Changeset in webkit [212638] by commit-queue@webkit.org
  • 15 edits
    4 deletes in trunk/Source

Remove code under USE(GRAPHICS_SURFACE)
https://bugs.webkit.org/show_bug.cgi?id=168592

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2017-02-20
Reviewed by Michael Catanzaro.

This was only used by EFL port.

Source/WebCore:

  • platform/TextureMapper.cmake:
  • platform/graphics/opengl/GLPlatformSurface.cpp: Removed.
  • platform/graphics/surfaces/GLTransportSurface.cpp: Removed.
  • platform/graphics/surfaces/GLTransportSurface.h: Removed.
  • platform/graphics/surfaces/GraphicsSurface.cpp: Removed.
  • platform/graphics/surfaces/GraphicsSurface.h: Removed.
  • platform/graphics/surfaces/GraphicsSurfaceToken.h: Removed.
  • platform/graphics/surfaces/egl/EGLConfigSelector.cpp: Removed.
  • platform/graphics/surfaces/egl/EGLConfigSelector.h: Removed.
  • platform/graphics/surfaces/egl/EGLContext.cpp: Removed.
  • platform/graphics/surfaces/egl/EGLContext.h: Removed.
  • platform/graphics/surfaces/egl/EGLHelper.cpp: Removed.
  • platform/graphics/surfaces/egl/EGLHelper.h: Removed.
  • platform/graphics/surfaces/egl/EGLSurface.cpp: Removed.
  • platform/graphics/surfaces/egl/EGLSurface.h: Removed.
  • platform/graphics/surfaces/egl/EGLXSurface.cpp: Removed.
  • platform/graphics/surfaces/egl/EGLXSurface.h: Removed.
  • platform/graphics/surfaces/glx/GLXConfigSelector.h: Removed.
  • platform/graphics/surfaces/glx/GLXContext.cpp: Removed.
  • platform/graphics/surfaces/glx/GLXContext.h: Removed.
  • platform/graphics/surfaces/glx/GLXSurface.cpp: Removed.
  • platform/graphics/surfaces/glx/GLXSurface.h: Removed.
  • platform/graphics/surfaces/glx/X11Helper.cpp: Removed.
  • platform/graphics/surfaces/glx/X11Helper.h: Removed.
  • platform/graphics/texmap/TextureMapperBackingStore.cpp:
  • platform/graphics/texmap/TextureMapperBackingStore.h:
  • platform/graphics/texmap/TextureMapperPlatformLayer.h:

(WebCore::TextureMapperPlatformLayer::setClient):

  • platform/graphics/texmap/TextureMapperSurfaceBackingStore.cpp: Removed.
  • platform/graphics/texmap/TextureMapperSurfaceBackingStore.h: Removed.
  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer):
(WebCore::CoordinatedGraphicsLayer::setContentsNeedsDisplay):
(WebCore::CoordinatedGraphicsLayer::setContentsToPlatformLayer):
(WebCore::CoordinatedGraphicsLayer::syncPlatformLayer):

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
  • platform/graphics/texmap/coordinated/CoordinatedGraphicsState.h:

(WebCore::CoordinatedGraphicsLayerState::CoordinatedGraphicsLayerState):

Source/WebKit2:

  • Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:

(IPC::ArgumentCoder<CoordinatedGraphicsLayerState>::encode):
(IPC::ArgumentCoder<CoordinatedGraphicsLayerState>::decode):

  • Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.h:
  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:

(WebKit::CoordinatedGraphicsScene::syncPlatformLayerIfNeeded):
(WebKit::CoordinatedGraphicsScene::deleteLayer):
(WebKit::CoordinatedGraphicsScene::assignImageBackingToLayer):
(WebKit::CoordinatedGraphicsScene::purgeGLResources):

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
  • Shared/CoordinatedGraphics/WebCoordinatedSurface.cpp:

(WebKit::WebCoordinatedSurface::Handle::encode):
(WebKit::WebCoordinatedSurface::Handle::decode):
(WebKit::WebCoordinatedSurface::create):
(WebKit::WebCoordinatedSurface::createGraphicsContext):
(WebKit::WebCoordinatedSurface::createHandle):
(WebKit::WebCoordinatedSurface::copyToTexture):

  • Shared/CoordinatedGraphics/WebCoordinatedSurface.h:
8:15 AM WebKitGTK/2.16.x created by Carlos Garcia Campos
7:47 AM Changeset in webkit [212637] by dino@apple.com
  • 15 edits
    2 adds in trunk

Add 'webglcontextchanged' WebGLContextEvent
https://bugs.webkit.org/show_bug.cgi?id=168595
<rdar://problem/30604254>

Reviewed by Antoine Quint.

Source/WebCore:

Add a new event that is dispatched when the GraphicsContext3D
notices that the active GPU has changed.

Test: fast/canvas/webgl/webglcontextchangedevent.html

  • dom/EventNames.h: Add 'webglcontextchanged'.
  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::dispatchContextChangedEvent): Dispatch the new event.
(WebCore::WebGLRenderingContextBase::simulateContextChanged): Tell the GraphicsContext3D to
pretend there was a GPU switch. This is called from Internals for testing.

  • html/canvas/WebGLRenderingContextBase.h:
  • html/canvas/WebGLRenderingContextBase.idl: Export the interface so Internals can see it.
  • platform/graphics/GraphicsContext3D.cpp:

(WebCore::GraphicsContext3D::simulateContextChanged): Tell the GraphicsContext3DManager
that it should pretend a GPU change has happened, which causes it to notify all the
active contexts.

  • platform/graphics/GraphicsContext3D.h:
  • platform/graphics/mac/GraphicsContext3DMac.mm:

(WebCore::GraphicsContext3DManager::updateAllContexts): Tell the GraphicsContext3Ds
to tell their WebGLRenderingContexts to dispatch an event.
(WebCore::GraphicsContext3D::simulateContextChanged): Fake the display change.

  • platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:

(WebCore::GraphicsContext3D::dispatchContextChangedNotification): Tell the WebGLRenderingContext
that a change has occurred, and that it should dispatch an event. This is a layering
violation which will need to be fixed (although with other communication from GC3D back
to WebGL).

  • testing/Internals.cpp:

(WebCore::Internals::simulateWebGLContextChanged):

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

LayoutTests:

Add a new webglcontextchanged event. This test only
runs on Cocoa platforms at the moment, because it
needs GraphicsContext3D to keep track of all
active contexts in order to dispatch events.

  • fast/canvas/webgl/webglcontextchangedevent-expected.txt: Added.
  • fast/canvas/webgl/webglcontextchangedevent.html: Added.
  • platform/gtk/TestExpectations:
  • platform/win/TestExpectations:
7:30 AM Changeset in webkit [212636] by Manuel Rego Casasnovas
  • 1 edit
    3 adds in trunk/Websites/webkit.org

Unreviewed, add CSS Grid Layout examples for a blog post.

  • demos/css-grid/index.html: Added.
  • demos/css-grid/responsive-grid.html: Added.
5:46 AM Changeset in webkit [212635] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.16

Brach WebKitGTK+ for 2.16

4:30 AM Changeset in webkit [212634] by Carlos Garcia Campos
  • 2 edits
    1 move in trunk/LayoutTests

Unreviewed GTK+ gardening. Fix tests reporting missing results.

  • media/media-session-restrictions-expected.txt: Renamed from LayoutTests/platform/mac/media/media-session-restrictions-expected.txt.
  • platform/gtk/TestExpectations:
4:28 AM Changeset in webkit [212633] by dino@apple.com
  • 9 edits in trunk

Activate/deactivate high performance GPU when requested
https://bugs.webkit.org/show_bug.cgi?id=168559
<rdar://problem/30592266>

Reviewed by Jon Lee.

Source/WebCore:

Respect the high-performance powerPreference for WebGL, by managing an
object that enables the high-performance GPU. If a WebGL context wants
high-performance, and it is visible, then a manager class in GraphicsContext3D
creates and retains the object, causing all the WebGL contexts to move GPUs.
If all the high-performance contexts are not visible, such as in a background tab,
then the manager will release the object, allowing the GPU to power down.

The swapping back from the high-performance GPU happens on a timer, to make
sure we don't churn between GPUs if the user is swapping between a lot of tabs,
or windows.

Unfortunately testing this change properly requires hardware with
multiple GPUs. I plan to write an API test that fakes most of the
system interaction, such as occluding the page. An API test might
also be able to verify if the system has more than one GPU. Otherwise
I'll have to plumb everything through Internals.

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::isHighPerformanceContext): Helper to detect if the GraphicsContext3D actually
used high-performance mode.
(WebCore::WebGLRenderingContextBase::create): Add logging if we are
actually overriding a high-performance request.
(WebCore::WebGLRenderingContextBase::WebGLRenderingContextBase): If we are high-performance,
then register for activity state changes.
(WebCore::WebGLRenderingContextBase::addActivityStateChangeObserverIfNecessary):
(WebCore::WebGLRenderingContextBase::removeActivityStateChangeObserver):
(WebCore::WebGLRenderingContextBase::destroyGraphicsContext3D): Call removeActivityStateChangeObserver
as the GC3D is destroyed.
(WebCore::WebGLRenderingContextBase::maybeRestoreContext): If the context was
restored successfully, and came back in high-performance, then we need
to listen for activity state changes as usual.
(WebCore::WebGLRenderingContextBase::activityStateDidChange): If we changed visibility,
tell the GC3D.

  • html/canvas/WebGLRenderingContextBase.h: Class inherits ActivityStateChangeObserver.
  • page/Settings.in: No longer force low-power everywhere.
  • platform/graphics/GraphicsContext3D.cpp:

(WebCore::GraphicsContext3D::setContextVisibility): Empty implementation for non-Mac.

  • platform/graphics/GraphicsContext3D.h:

(WebCore::GraphicsContext3D::powerPreferenceUsedForCreation): Tells clients what power preference
was actually used during creation (e.g. a single GPU system will use default, even if
they requested high-performance).

  • platform/graphics/mac/GraphicsContext3DMac.mm:

(WebCore::GraphicsContext3DManager::GraphicsContext3DManager): Helper class to
look after all GraphicsContext3Ds.
(WebCore::GraphicsContext3DManager::hasTooManyContexts): We have a limit on the
number of contexts we can keep alive at any one time.
(WebCore::manager): Helper to return the static instance.
(WebCore::displayWasReconfigured): Send a message to all the contexts.
(WebCore::GraphicsContext3DManager::addContext):
(WebCore::GraphicsContext3DManager::removeContext):
(WebCore::GraphicsContext3DManager::addContextRequiringHighPerformance):
(WebCore::GraphicsContext3DManager::removeContextRequiringHighPerformance):
(WebCore::GraphicsContext3DManager::updateHighPerformanceState): Check if the number
of contexts requiring high-performance means we need to enable/disable that GPU.
(WebCore::GraphicsContext3DManager::disableHighPerformanceGPUTimerFired): Releases our
object that keeps the high-performance GPU on.
(WebCore::GraphicsContext3DManager::recycleContextIfNecessary): Get rid of the first (oldest)
context. This code was in GC3D proper, but it made more sense here in the helper.
(WebCore::setPixelFormat): All contexts are created muxable now.
(WebCore::GraphicsContext3D::create): Use the manager.
(WebCore::GraphicsContext3D::GraphicsContext3D): Ditto.
(WebCore::GraphicsContext3D::~GraphicsContext3D): Add logging.
(WebCore::GraphicsContext3D::checkGPUStatusIfNecessary): Better logging.
(WebCore::GraphicsContext3D::updateCGLContext):
(WebCore::GraphicsContext3D::setContextVisibility): This is the responder to the
ActivityStateChanges in the WebGLRenderingContext.
(WebCore::activeContexts): Deleted.
(WebCore::addActiveContext): Deleted.
(WebCore::removeActiveContext): Deleted.

LayoutTests:

We no longer force low-power, so the WebGL canvas creation attributes now
return the value that was passed in.

  • fast/canvas/webgl/context-creation-attributes-expected.txt:
4:28 AM Changeset in webkit [212632] by commit-queue@webkit.org
  • 13 edits
    3 copies
    2 deletes in trunk/Source/WebKit2

Reduce platform ifdefs in WebKit2 custom protocols implementation
https://bugs.webkit.org/show_bug.cgi?id=165028

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2017-02-20
Reviewed by Darin Adler.

Make mac implementation use the APICustomProtocolManagerClient to share more code with the soup based ports.

  • CMakeLists.txt: Add CustomProtocolManagerProxy.cpp.
  • PlatformEfl.cmake: Remove CustomProtocolManagerProxySoup.cpp.
  • PlatformGTK.cmake: Ditto.
  • PlatformMac.cmake: Remove CustomProtocolManagerProxyMac.mm.
  • UIProcess/API/APICustomProtocolManagerClient.h:

(API::CustomProtocolManagerClient::startLoading): Make it void, since we were always returning true and the
returned value was ignored.

  • UIProcess/API/efl/ewk_url_scheme_request.cpp:

(EwkUrlSchemeRequest::finish): Update to new CustomProtocolManagerProxy API.

  • UIProcess/API/gtk/WebKitCustomProtocolManagerClient.cpp:
  • UIProcess/API/gtk/WebKitURISchemeRequest.cpp:

(webkitURISchemeRequestReadCallback): Ditto.

  • UIProcess/Cocoa/CustomProtocolManagerClient.h: Added.
  • UIProcess/Cocoa/CustomProtocolManagerClient.mm: Added.

(-[WKCustomProtocolLoader initWithCustomProtocolManagerProxy:customProtocolID:request:]):
(-[WKCustomProtocolLoader dealloc]):
(-[WKCustomProtocolLoader connection:didFailWithError:]):
(-[WKCustomProtocolLoader connection:didReceiveResponse:]):
(-[WKCustomProtocolLoader connection:didReceiveData:]):
(-[WKCustomProtocolLoader connection:willSendRequest:redirectResponse:]):
(-[WKCustomProtocolLoader connectionDidFinishLoading:]):
(WebKit::CustomProtocolManagerClient::startLoading):
(WebKit::CustomProtocolManagerClient::stopLoading):
(WebKit::CustomProtocolManagerClient::invalidate):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitialize): Set the CustomProtocolManagerClient.
(WebKit::WebProcessPool::platformInitializeNetworkProcess): Remove code that is now shared.

  • UIProcess/Network/CustomProtocols/CustomProtocolManagerProxy.cpp: Added.

(WebKit::CustomProtocolManagerProxy::startLoading):
(WebKit::CustomProtocolManagerProxy::processDidClose):
(WebKit::CustomProtocolManagerProxy::wasRedirectedToRequest):
(WebKit::CustomProtocolManagerProxy::didReceiveResponse):

  • UIProcess/Network/CustomProtocols/CustomProtocolManagerProxy.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::globalURLSchemesWithCustomProtocolHandlers): Just moved here to use it from ensureNetworkProcess().
(WebKit::WebProcessPool::WebProcessPool): Remove soup ifdefs.
(WebKit::WebProcessPool::setCustomProtocolManagerClient): Moved from the soup implementation.
(WebKit::WebProcessPool::ensureNetworkProcess): Initialize custom protocols parameters.
(WebKit::WebProcessPool::registerSchemeForCustomProtocol): Register the protocol if not already registered globally.
(WebKit::WebProcessPool::unregisterSchemeForCustomProtocol): Remove soup ifdefs.

  • UIProcess/WebProcessPool.h: Remove soup ifdefs.
  • UIProcess/efl/RequestManagerClientEfl.cpp:
  • UIProcess/soup/WebProcessPoolSoup.cpp:

(WebKit::WebProcessPool::platformInitializeNetworkProcess): Remove code that is now shared.

  • WebKit2.xcodeproj/project.pbxproj:
4:23 AM Changeset in webkit [212631] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Handle EINTR during webkitpy server process select()
https://bugs.webkit.org/show_bug.cgi?id=168361

Patch by Florian Bruhin <git@the-compiler.org> on 2017-02-20
Reviewed by Michael Catanzaro.

Otherwise, on my machine, resizing the terminal run-webkit-tests is running in
makes it die.

  • Scripts/webkitpy/port/server_process.py:

(ServerProcess._wait_for_data_and_update_buffers_using_select):

2:03 AM Changeset in webkit [212630] by Carlos Garcia Campos
  • 2 edits in trunk/Tools

Unreviewed. Fix GTK+ test /webkit2/WebKitWebView/default-menu.

It can happen that the window onload event is dispatched after the load finished is received in the UI
process. Move the script to select the text to the body instead of using a window onload handler.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp:

(testContextMenuDefaultMenu):

2:01 AM Changeset in webkit [212629] by Manuel Rego Casasnovas
  • 76 edits in trunk

[css-grid] Remove compilation flag ENABLE_CSS_GRID_LAYOUT
https://bugs.webkit.org/show_bug.cgi?id=167693

Reviewed by Sergio Villar Senin.

.:

CSS Grid Layout has been enabled by default in r211415,
and Safari 10.1 is shipping it.
It seems like a good moment to remove the compilation flag.

  • Source/cmake/OptionsMac.cmake:
  • Source/cmake/OptionsWin.cmake:
  • Source/cmake/WebKitFeatures.cmake:
  • Source/cmake/tools/vsprops/FeatureDefines.props:
  • Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

  • Configurations/FeatureDefines.xcconfig:
  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::valueForGridPosition):
(WebCore::isLayoutDependent):
(WebCore::resolveJustifySelfAuto):
(WebCore::isImplicitlyInheritedGridOrFlexProperty):
(WebCore::valueForContentPositionAndDistributionWithOverflowAlignment):
(WebCore::ComputedStyleExtractor::propertyValue):

  • css/CSSGridAutoRepeatValue.cpp:
  • css/CSSGridAutoRepeatValue.h:
  • css/CSSGridLineNamesValue.cpp:
  • css/CSSGridLineNamesValue.h:
  • css/CSSGridTemplateAreasValue.cpp:
  • css/CSSGridTemplateAreasValue.h:
  • css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):

  • css/CSSProperties.json:
  • css/CSSValue.cpp:

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

  • css/CSSValue.h:

(WebCore::CSSValue::isContentDistributionValue):
(WebCore::CSSValue::isGridLineNamesValue):

  • css/CSSValueKeywords.in:
  • css/StyleBuilderConverter.h:

(WebCore::StyleBuilderConverter::convertGridAutoFlow):
(WebCore::StyleBuilderConverter::convertContentAlignmentData):

  • css/StyleBuilderCustom.h:

(WebCore::StyleBuilderCustom::applyValueGridTemplateRows):

  • css/StyleProperties.cpp:

(WebCore::StyleProperties::getPropertyValue):

  • css/StyleResolver.cpp:

(WebCore::equivalentBlockDisplay):

  • css/StyleResolver.h:
  • css/parser/CSSParser.cpp:

(WebCore::CSSParserContext::CSSParserContext):
(WebCore::operator==):

  • css/parser/CSSParserFastPaths.cpp:

(WebCore::isSimpleLengthPropertyID):
(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
(WebCore::CSSParserFastPaths::isKeywordPropertyID):

  • css/parser/CSSParserMode.h:

(WebCore::CSSParserContextHash::hash):

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeGridAutoFlow):
(WebCore::consumeGridTemplateAreas):
(WebCore::CSSPropertyParser::parseSingleValue):
(WebCore::CSSPropertyParser::consumeGridShorthand):
(WebCore::CSSPropertyParser::parseShorthand):

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

(WebCore::Position::isCandidate):

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::isCSSGridLayoutEnabled):

  • rendering/Grid.cpp:
  • rendering/Grid.h:
  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::getFirstLetter):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::~RenderBox):
(WebCore::RenderBox::styleDidChange):
(WebCore::RenderBox::clearExtraInlineAndBlockOffests):
(WebCore::RenderBox::containingBlockLogicalWidthForContent):
(WebCore::RenderBox::containingBlockLogicalHeightForContent):
(WebCore::RenderBox::perpendicularContainingBlockLogicalHeight):
(WebCore::RenderBox::computeLogicalWidthInRegion):
(WebCore::RenderBox::sizesLogicalWidthToFitContent):
(WebCore::RenderBox::computeLogicalHeight):
(WebCore::RenderBox::computePercentageLogicalHeight):
(WebCore::RenderBox::containingBlockLogicalWidthForPositioned):
(WebCore::RenderBox::containingBlockLogicalHeightForPositioned):
(WebCore::RenderBox::computePositionedLogicalWidth):
(WebCore::RenderBox::computePositionedLogicalHeight):
(WebCore::RenderBox::createsNewFormattingContext):
(WebCore::logicalWidthIsResolvable):
(WebCore::RenderBox::percentageLogicalHeightIsResolvableFromBlock):
(WebCore::RenderBox::hasDefiniteLogicalHeight):

  • rendering/RenderBox.h:

(WebCore::RenderBox::isGridItem):

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::createFor):

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::alignChildren):

  • rendering/RenderGrid.cpp:
  • rendering/RenderGrid.h:
  • rendering/RenderObject.h:

(WebCore::RenderObject::isRenderGrid):

  • rendering/style/GridArea.h:
  • rendering/style/GridLength.h:
  • rendering/style/GridPosition.h:
  • rendering/style/GridPositionsResolver.cpp:
  • rendering/style/GridPositionsResolver.h:
  • rendering/style/GridTrackSize.h:
  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::isCSSGridLayoutEnabled):
(WebCore::RenderStyle::changeRequiresLayout):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::gridItemRowEnd):
(WebCore::RenderStyle::setGridRowGap):
(WebCore::RenderStyle::initialGridItemRowEnd):
(WebCore::RenderStyle::isDisplayReplacedType):
(WebCore::RenderStyle::isDisplayGridBox):

  • rendering/style/RenderStyleConstants.h:
  • rendering/style/StyleGridData.cpp:
  • rendering/style/StyleGridData.h:
  • rendering/style/StyleGridItemData.cpp:
  • rendering/style/StyleGridItemData.h:
  • rendering/style/StyleRareNonInheritedData.cpp:

(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
(WebCore::StyleRareNonInheritedData::operator==):

  • rendering/style/StyleRareNonInheritedData.h:
  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setCSSGridLayoutEnabled):

Source/WebCore/PAL:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig:
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):

  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

Source/WebKit2:

  • Configurations/FeatureDefines.xcconfig:
  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Tools:

  • Scripts/webkitperl/FeatureList.pm:
  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
  • TestWebKitAPI/Tests/WebCore/CSSParser.cpp:

(TestWebKitAPI::computeNumberOfTracks):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebCore/GridPosition.cpp:

(TestWebKitAPI::TEST):

1:13 AM Changeset in webkit [212628] by Carlos Garcia Campos
  • 2 edits in trunk/LayoutTests

Unreviewed GTK+ gardening. Mark fast/events/message-port-postMessage-recursive.html as timing out.

  • platform/gtk/TestExpectations:
1:09 AM Changeset in webkit [212627] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WTF

Unreviewed, rolling out r212622.

Caused several test failures

Reverted changeset:

"[GTK] Test fast/events/message-port-postMessage-
recursive.html times out"
https://bugs.webkit.org/show_bug.cgi?id=168570
http://trac.webkit.org/changeset/212622

12:30 AM Changeset in webkit [212626] by Carlos Garcia Campos
  • 14 edits in trunk/Source

REGRESSION(r212345): [GTK] ASSERT(cookieChangeCallbackMap().contains(jar)) failed in WebCore::stopObservingCookieChanges:54
https://bugs.webkit.org/show_bug.cgi?id=168375

Reviewed by Alex Christensen.

Source/WebCore:

Simplify the way cookie storage is handled in NetworkStorageSessionSoup. Now we always keep a reference to the
cookie jar, no matter if we have a session or not, that is always kept in sync with the one actually used by the
session. We always connect to the changed signal of the current cookie jar and notify the observer if it has been
set.

  • platform/network/NetworkStorageSession.h:
  • platform/network/soup/CookieStorageSoup.cpp:

(WebCore::startObservingCookieChanges): Remove this implementation and add an ASSERT to ensure we don't use this anymore.
(WebCore::stopObservingCookieChanges): Ditto.
(WebCore::cookieChangeCallbackMap): Deleted.
(WebCore::soupCookiesChanged): Deleted.

  • platform/network/soup/NetworkStorageSessionSoup.cpp:

(WebCore::NetworkStorageSession::NetworkStorageSession): Initialize the cookie storage.
(WebCore::NetworkStorageSession::~NetworkStorageSession): Disconnect the changed signal.
(WebCore::NetworkStorageSession::getOrCreateSoupNetworkSession): Always pass the current cookie storage.
(WebCore::NetworkStorageSession::cookiesDidChange): Notify the observer.
(WebCore::NetworkStorageSession::cookieStorage): Return the current cookie storage.
(WebCore::NetworkStorageSession::setCookieStorage): Update the current cookie storage and update the session if
needed too. We always have a valid cookie storage so if nullptr is given we create a new one.
(WebCore::NetworkStorageSession::setCookieObserverHandler): Set a cookie observer handler.

Source/WebKit2:

Simplify the cookies change notification. The current approach of the UI process telling the network process
when to start and stop observing cookie changes is quite fragile and error prone. In the GTK+ port we always
observe cookies, so our cookie manager always calls start in the constructor and stop in the destructor.
Everything would be a lot simpler if the network process always monitored cookies.

  • NetworkProcess/soup/NetworkSessionSoup.cpp:

(WebKit::NetworkSessionSoup::NetworkSessionSoup): Set cookies observer handler for the session.
(WebKit::NetworkSessionSoup::~NetworkSessionSoup): Remove the cookies observer handler.

  • UIProcess/API/gtk/WebKitCookieManager.cpp:

(_WebKitCookieManagerPrivate::~_WebKitCookieManagerPrivate): Remove the cookies observer callback.
(webkit_cookie_manager_class_init): Remove dispose implementation that is no longer needed.
(webkitCookieManagerCreate): Set the cookies observer callback.
(webkit_cookie_manager_set_persistent_storage): Remove code to start/stop observing cookies when the jar
changes, the network process deals with that now.
(webkitCookieManagerDispose): Deleted.

  • UIProcess/WebCookieManagerProxy.cpp:

(WebKit::WebCookieManagerProxy::startObservingCookieChanges): Remove the optional callback method in favor of an
explicit method to the set the callback that doesn't send the StartObservingCookieChanges message to the network
process.
(WebKit::WebCookieManagerProxy::stopObservingCookieChanges): Do not change the callback map here.
(WebKit::WebCookieManagerProxy::setCookieObserverCallback): Add the callback to the map or remove the session if
nullptr is given.

  • UIProcess/WebCookieManagerProxy.h:
  • WebProcess/Cookies/WebCookieManager.cpp:

(WebKit::WebCookieManager::notifyCookiesDidChange): Send CookiesDidChange message to the UI process.
(WebKit::WebCookieManager::startObservingCookieChanges): Use notifyCookiesDidChange().

  • WebProcess/Cookies/WebCookieManager.h:
  • WebProcess/Cookies/soup/WebCookieManagerSoup.cpp:

(WebKit::WebCookieManager::platformSetHTTPCookieAcceptPolicy): Set the policy on all sessions. Code moved from
WebFrameNetworkingContext since it doesn't belong there.
(WebKit::WebCookieManager::setCookiePersistentStorage): Use new method to set the cookie storage in the
NetworkStorageSession.

  • WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp:

(WebKit::WebFrameNetworkingContext::setCookieAcceptPolicyForAllContexts): Deleted.

  • WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h:

Feb 19, 2017:

10:36 PM Changeset in webkit [212625] by Chris Dumez
  • 8 edits
    6 adds in trunk

onbeforeunload event return value coercion is not per-spec
https://bugs.webkit.org/show_bug.cgi?id=168382

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Import test coverage from web-platform-tests. We were failing half the checks
before this patch.

  • resources/resource-files.json:
  • web-platform-tests/html/browsers/browsing-the-web/unloading-documents/MANIFEST:
  • web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling-1.html: Added.
  • web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling-expected.txt: Added.
  • web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html: Added.
  • web-platform-tests/html/browsers/browsing-the-web/unloading-documents/w3c-import.log:

Source/WebCore:

Update handling of value returned by onbeforeunload event listeners
to match Firefox and the specification:

Namely, the following changes were made:

  • Only set the event's returnValue attribute to the returned value if the attribute value is the empty string (so as to not override the attribute value if it has explicitly been set by JS).
  • Cancel the event when the return value is not null by calling preventDefault().

Additionally, the following changes were made:

  • Ask the user to confirm the navigation if the event was canceled, not just if the returnValue attribute was set to a non-empty string.

as per:

Tests: fast/events/before-unload-return-string-conversion.html

imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html

  • bindings/js/JSEventListener.cpp:

(WebCore::handleBeforeUnloadEventReturnValue):
(WebCore::JSEventListener::handleEvent):

  • loader/FrameLoader.cpp:

(WebCore::shouldAskForNavigationConfirmation):
(WebCore::FrameLoader::dispatchBeforeUnloadEvent):

LayoutTests:

Add test case to check that the value returned by a beforeunload event handler
is already converted to a string, even if the returnValue attribute is also
set on the BeforeUnloadEvent. The existing code did not handle this properly
and it has been fixed in this patch.

  • fast/events/before-unload-return-string-conversion-expected.txt: Added.
  • fast/events/before-unload-return-string-conversion.html: Added.
  • fast/events/resources/before-unload-return-string-conversion-frame.html: Added.
10:34 PM Changeset in webkit [212624] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

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

Broke CLoop builds when r212466 was rolled out in r212616
(Requested by rniwa on #webkit).

Reverted changeset:

"Unreviewed, fix cloop build."
http://trac.webkit.org/changeset/212472

10:30 PM Changeset in webkit [212623] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

[SOUP] Call SoupNetworkSession::setShouldIgnoreTLSErrors when testRunner.setAllowsAnySSLCertificate() is called
https://bugs.webkit.org/show_bug.cgi?id=168571

Reviewed by Michael Catanzaro.

Fixes: http/tests/ssl/upgrade-origin-usage.html

  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::setAllowsAnySSLCertificate):

10:29 PM Changeset in webkit [212622] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WTF

[GTK] Test fast/events/message-port-postMessage-recursive.html times out
https://bugs.webkit.org/show_bug.cgi?id=168570

Reviewed by Michael Catanzaro.

This has recently been added and the patch is good. It's just revealing a problem with our timers. The test is
posting a message recursively, and also starts a timeout timer to finish the test. The timeout timer is never
fired for us, because WebCore timers have lower priority than the one used by
postMessage. ScriptExecutionContext uses Document::postTask, that uses scheduleOnMainThread, that uses
RunLoop::dispatch(). We are not setting any priority for the timer used by RunLoop::dispatch, so it's using the
default. RunLoop::dispatch is normally used to schedule tasks between threads, or just to ensure something is
run in a different run loop iteration, but in general nothing urgent as a graphics redraw or something like
that. It's quite common to use g_idle_add to schedule tasks between threads, so I think it makes sense to use
G_PRIORITY_DEFAULT_IDLE for the RunLoop timer.

  • wtf/glib/RunLoopGLib.cpp:

(WTF::RunLoop::RunLoop):

10:22 PM Changeset in webkit [212621] by rniwa@webkit.org
  • 6 edits
    6 adds in trunk

REGRESSION(r212218): Assertion failures in and after parserRemoveChild
https://bugs.webkit.org/show_bug.cgi?id=168458

Reviewed by Antti Koivisto.

Source/WebCore:

The bug was caused by parserRemoveChild not preceeding to remove oldChild even when
oldChild had been inserted elsewhere during unload evnets of the disconnected frames.
Fixed the bug by checking this condition and exiting early.

Also fixed various callers of parserRemoveChild to not call parserAppendChild when
the removed node had already been inserted elsewhere by scripts.

Tests: fast/parser/adoption-agency-unload-iframe-3.html

fast/parser/adoption-agency-unload-iframe-4.html
fast/parser/xml-error-unload-iframe.html

  • dom/ContainerNode.cpp:

(WebCore::ContainerNode::parserRemoveChild): Exit early when the node had been
inserted elsewhere while firing unload events. Also moved the call to
notifyRemovePendingSheetIfNeeded outside NoEventDispatchAssertion since it can
synchrnously fire a focus event.
(WebCore::ContainerNode::parserAppendChild): Moved adoptNode call to inside
NoEventDispatchAssertion since adoptNode call here should never mutate DOM.

  • html/parser/HTMLConstructionSite.cpp:

(WebCore::executeReparentTask): Added an early exit when the node had already been
inserted elsewhere.
(WebCore::executeInsertAlreadyParsedChildTask): Ditto.

  • xml/XMLErrors.cpp:

(WebCore::XMLErrors::insertErrorMessageBlock): Ditto.

  • xml/parser/XMLDocumentParser.cpp:

(WebCore::XMLDocumentParser::end): Fixed a crash unveiled by one of the test cases.
Exit early when insertErrorMessageBlock detached the parser (by author scripts).
(WebCore::XMLDocumentParser::finish): Keep the parser alive until we exit.

LayoutTests:

Add tests to make sure parserAppendChild aren't called when a node removed by parserRemoveChild
had already been been inserted elsewhere by scripts.

  • fast/parser/adoption-agency-unload-iframe-3-expected.txt: Added.
  • fast/parser/adoption-agency-unload-iframe-3.html: Added.
  • fast/parser/adoption-agency-unload-iframe-4-expected.txt: Added.
  • fast/parser/adoption-agency-unload-iframe-4.html: Added.
  • fast/parser/xml-error-unload-iframe-expected.txt: Added.
  • fast/parser/xml-error-unload-iframe.html: Added.
7:59 PM Changeset in webkit [212620] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

functionTestWasmModuleFunctions() should use a MarkedArgumentBuffer for storing args instead of a Vector.
https://bugs.webkit.org/show_bug.cgi?id=168574

Reviewed by Filip Pizlo.

  • jsc.cpp:

(callWasmFunction):
(functionTestWasmModuleFunctions):

  • runtime/ArgList.h:
6:38 PM Changeset in webkit [212619] by Chris Dumez
  • 11 edits
    2 adds in trunk/Source/WebKit2

[WK2] Support termination of unresponsive WebContent processes that are in the background
https://bugs.webkit.org/show_bug.cgi?id=168479
<rdar://problem/30558745>

Reviewed by Antti Koivisto.

Support termination of unresponsive WebContent processes that are in the background.
This protects us against cases where a background tab is unresponsive and has high CPU
usage, thus draining the battery without the user knowing about it (e.g.
<rdar://problem/29808005>).

The feature works as follows:

  • If a WebProcessProxy has pages but none of them are visible, then it will check regularly if its associated WebContent process is still responsive.
  • Every time we find that the WebContent process is responsive, we exponentially back off the timer to avoid waking up the process too often. The timer initially uses a 20 seconds interval and can back off up to 8 hours.
  • If the WebContent process is unresponsive, then we terminate it. No notification is shown to the user and the termination is not immediately observable since the tab is not visible and its title remains. The tab is not immediately reloaded so as to avoid getting back into a bad state in the background (and have a yo-yo effect).
  • If the user switches to a tab that was previously killed for being unresponsive while in the background, we will then reload the tab in a fresh WebContent process. The crash banner will only be shown if the tab has ever been visible. If it wasn't ever visible (e.g. session restore case), then it will look as if the tab loads for the first time when the user switches to it.

The functionality is disabled by default and can be enabled by the client via the new
WKContextSetUnresponsiveBackgroundProcessesTerminationEnabled() private API.

  • CMakeLists.txt:
  • UIProcess/API/APIProcessPoolConfiguration.cpp:

(API::ProcessPoolConfiguration::copy):

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

(WKContextSetUnresponsiveBackgroundProcessesTerminationEnabled):

  • UIProcess/API/C/WKContextPrivate.h:
  • UIProcess/UnresponsiveWebProcessTerminator.cpp: Added.

(WebKit::UnresponsiveWebProcessTerminator::UnresponsiveWebProcessTerminator):
(WebKit::UnresponsiveWebProcessTerminator::updateState):
(WebKit::pagesCopy):
(WebKit::UnresponsiveWebProcessTerminator::timerFired):

  • UIProcess/UnresponsiveWebProcessTerminator.h: Added.

(WebKit::UnresponsiveWebProcessTerminator::shouldBeActive):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::reattachToWebProcess):
(WebKit::WebPageProxy::reloadAfterBeingKilledInBackground):
(WebKit::WebPageProxy::dispatchActivityStateChange):
(WebKit::WebPageProxy::terminateProcess):
(WebKit::WebPageProxy::resetStateAfterProcessExited):

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

(WebKit::WebProcessProxy::WebProcessProxy):
(WebKit::m_backgroundResponsivenessTimer):
(WebKit::WebProcessProxy::createWebPage):
(WebKit::WebProcessProxy::addExistingWebPage):
(WebKit::WebProcessProxy::removeWebPage):
(WebKit::WebProcessProxy::updateBackgroundResponsivenessTimer):

  • UIProcess/WebProcessProxy.h:

(WebKit::WebProcessProxy::visiblePageCount):

  • WebKit2.xcodeproj/project.pbxproj:
5:46 PM Changeset in webkit [212618] by mark.lam@apple.com
  • 13 edits
    1 add in trunk/Source

CachedCall should let GC know to keep its arguments alive.
https://bugs.webkit.org/show_bug.cgi?id=168567
<rdar://problem/30475767>

Reviewed by Saam Barati.

Source/JavaScriptCore:

We fix this by having CachedCall use a MarkedArgumentBuffer to store its
arguments instead of a Vector.

Also declared CachedCall, MarkedArgumentBuffer, and ProtoCallFrame as
WTF_FORBID_HEAP_ALLOCATION because they rely on being stack allocated for
correctness.

  • interpreter/CachedCall.h:

(JSC::CachedCall::CachedCall):
(JSC::CachedCall::call):
(JSC::CachedCall::clearArguments):
(JSC::CachedCall::appendArgument):
(JSC::CachedCall::setArgument): Deleted.

  • interpreter/CallFrame.h:

(JSC::ExecState::emptyList):

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::prepareForRepeatCall):

  • interpreter/Interpreter.h:
  • interpreter/ProtoCallFrame.h:
  • runtime/ArgList.cpp:

(JSC::MarkedArgumentBuffer::expandCapacity):

  • runtime/ArgList.h:

(JSC::MarkedArgumentBuffer::ensureCapacity):

  • runtime/StringPrototype.cpp:

(JSC::replaceUsingRegExpSearch):

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:

Source/WTF:

Added a WTF_FORBID_HEAP_ALLOCATION that will cause a compilation failure if
a class declared with it is malloced.

While this doesn't prevent that class declared WTF_FORBID_HEAP_ALLOCATION from
being embedded in another class that is heap allocated, it does at minimum
document the intent and gives the users of this class a chance to do the
right thing.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/ForbidHeapAllocation.h: Added.
4:46 PM Changeset in webkit [212617] by Chris Dumez
  • 5 edits
    4 adds in trunk

<input type=color readonly> doesn't act per spec
https://bugs.webkit.org/show_bug.cgi?id=168421
<rdar://problem/30593185>

Reviewed by Ryosuke Niwa.

Source/WebCore:

The 'readonly' attribute should not apply to <input type=color> as per the
HTML specification:

Chrome / Firefox and Edge already behave as per the specification.

Tests: fast/forms/color/input-color-disabled.html

fast/forms/color/input-color-readonly.html

  • html/ColorInputType.cpp:

(WebCore::ColorInputType::handleDOMActivateEvent):
(WebCore::ColorInputType::didChooseColor):

LayoutTests:

Add layout test coverage.

  • fast/forms/color/input-color-disabled-expected.txt: Added.
  • fast/forms/color/input-color-disabled.html: Added.
  • fast/forms/color/input-color-readonly-expected.txt: Added.
  • fast/forms/color/input-color-readonly.html: Added.
2:07 PM Changeset in webkit [212616] by commit-queue@webkit.org
  • 45 edits
    2 moves
    1 add
    16 deletes in trunk

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

causes crashes on AArch64 on linux, maybe it's causing crashes
on iOS too (Requested by pizlo on #webkit).

Reverted changeset:

"The collector thread should only start when the mutator
doesn't have heap access"
https://bugs.webkit.org/show_bug.cgi?id=167737
http://trac.webkit.org/changeset/212466

8:24 AM Changeset in webkit [212615] by Alan Bujtas
  • 12 edits in trunk/Source/WebCore

Simple line layout: Implement positionForPoint.
https://bugs.webkit.org/show_bug.cgi?id=168565
<rdar://problem/30593370>

Reviewed by Antti Koivisto.

With this patch, now we don't need to switch over to line box tree anymore when positionForPoint()
is called on a single RenderText content (which is the majority of the simple line content).
This patch also adds a new positionForPoint method which returns a Position object instead of VisiblePosition.
Some of the positionForPoint() callsites are only interested in the Position object so constructing a VisiblePosition
(which could potentially kick off a layout) is a waste. At this point the non-simple line layout codepath still constructs
a VisiblePosition and that should be addresses as part of webkit.org/b/168566.

Covered by existing tests.

  • dom/Document.cpp:

(WebCore::Document::caretRangeFromPoint):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::positionForPoint):

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

(WebCore::RenderObject::positionForPoint):

  • rendering/RenderObject.h:
  • rendering/RenderText.cpp:

(WebCore::RenderText::positionForPoint):

  • rendering/RenderText.h:
  • rendering/SimpleLineLayoutFunctions.cpp:

(WebCore::SimpleLineLayout::positionForPoint):

  • rendering/SimpleLineLayoutFunctions.h:
  • rendering/SimpleLineLayoutResolver.cpp:

(WebCore::SimpleLineLayout::RunResolver::runForPoint):

  • rendering/SimpleLineLayoutResolver.h:

(WebCore::SimpleLineLayout::RunResolver::Run::logicalLeft):
(WebCore::SimpleLineLayout::RunResolver::Run::logicalRight):

4:12 AM Changeset in webkit [212614] by Antti Koivisto
  • 15 edits in trunk/Source/WebCore

Execute pending scripts asynchronously after stylesheet loads complete
https://bugs.webkit.org/show_bug.cgi?id=168367
rdar://problem/30561379

Reviewed by Andreas Kling.

The current synchronous execution is fragile and creates various problems.

  • css/StyleSheetContents.cpp:

(WebCore::StyleSheetContents::checkLoaded):

  • dom/ContainerNode.cpp:

(WebCore::ContainerNode::takeAllChildrenFrom):
(WebCore::ContainerNode::notifyChildInserted):
(WebCore::ContainerNode::removeChild):
(WebCore::ContainerNode::parserRemoveChild):
(WebCore::ContainerNode::removeChildren):

Remove various places where we would trigger delayed synchronous execution.

  • dom/Document.cpp:

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

Trigger scroll to anchor at the end of style resolution instead of when style sheet load completes.

(WebCore::Document::didRemoveAllPendingStylesheet):

Call asynchronous script execution function.

  • dom/Document.h:

(WebCore::Document::setNeedsNotifyRemoveAllPendingStylesheet): Deleted.
(WebCore::Document::notifyRemovePendingSheetIfNeeded): Deleted.

  • dom/ScriptableDocumentParser.cpp:

(WebCore::ScriptableDocumentParser::ScriptableDocumentParser):
(WebCore::ScriptableDocumentParser::executeScriptsWaitingForStylesheetsSoon):
(WebCore::ScriptableDocumentParser::scriptsWaitingForStylesheetsExecutionTimerFired):

Add a timer for executing pending scripts.

(WebCore::ScriptableDocumentParser::detach):

  • dom/ScriptableDocumentParser.h:

(WebCore::ScriptableDocumentParser::executeScriptsWaitingForStylesheets):

  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::removedFrom):
(WebCore::HTMLLinkElement::removePendingSheet):

  • html/HTMLLinkElement.h:
  • html/parser/HTMLDocumentParser.cpp:

(WebCore::HTMLDocumentParser::detach):

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::isLoadingInAPISense):

Stay in loading state if we have a pending script. This matches existing behavior.

  • style/StyleScope.cpp:

(WebCore::Style::Scope::removePendingSheet):

  • style/StyleScope.h:
3:54 AM Changeset in webkit [212613] by Carlos Garcia Campos
  • 2 edits in trunk/LayoutTests

Unreviewed GTK+ gardening. Rebaseline fast/visual-viewport/rubberbanding-viewport-rects-extended-background.html again.

This matches what bots expect now.

  • platform/gtk/fast/visual-viewport/rubberbanding-viewport-rects-extended-background-expected.txt:
3:39 AM Changeset in webkit [212612] by Carlos Garcia Campos
  • 1 edit
    1 add in trunk/LayoutTests

Unreviewed GTK+ gardening. Rebaseline http/tests/loading/server-redirect-for-provisional-load-caching.html.

I think we are just setting the FirstPartyForCookies to our request a bit earlier when redirecting.

  • platform/gtk/http/tests/loading/server-redirect-for-provisional-load-caching-expected.txt: Added.
3:14 AM Changeset in webkit [212611] by Carlos Garcia Campos
  • 2 edits
    2 adds in trunk/LayoutTests

Unreviewed GTK+ gardening. Update expectations of a few more tests and rebaseline fast/visual-viewport/rubberbanding-viewport-rects-extended-background.html.

  • platform/gtk/TestExpectations:
  • platform/gtk/fast/visual-viewport/rubberbanding-viewport-rects-extended-background-expected.txt: Added.

Feb 18, 2017:

11:22 PM Changeset in webkit [212610] by Chris Dumez
  • 10 edits in trunk

<input type=range readonly> doesn't act per spec
https://bugs.webkit.org/show_bug.cgi?id=168422
<rdar://problem/30593189>

Reviewed by Ryosuke Niwa.

Source/WebCore:

'readonly' attribute should not apply to <input type=range> as per the HTML
specification:

Firefox and Edge already behave as per the specification.

No new tests, updated existing tests.

  • html/RangeInputType.cpp:

(WebCore::RangeInputType::handleMouseDownEvent):
(WebCore::RangeInputType::handleTouchEvent):
(WebCore::RangeInputType::handleKeydownEvent):

  • html/shadow/SliderThumbElement.cpp:

(WebCore::SliderThumbElement::defaultEventHandler):
(WebCore::SliderThumbElement::willRespondToMouseMoveEvents):
(WebCore::SliderThumbElement::willRespondToMouseClickEvents):

LayoutTests:

Update / rebaseline existing tests to reflect behavior change.

  • fast/forms/range/range-drag-expected.txt:
  • fast/forms/range/range-drag-when-toggled-disabled-expected.txt:
  • fast/forms/range/range-drag-when-toggled-disabled.html:
  • fast/forms/range/range-drag.html:
  • fast/forms/range/range-keyoperation-expected.txt:
  • fast/forms/range/range-keyoperation.html:
3:58 PM Changeset in webkit [212609] by Chris Dumez
  • 8 edits
    2 adds in trunk

Recursive MessagePort.postMessage() calls causes tab to become unresponsive
https://bugs.webkit.org/show_bug.cgi?id=168548
<rdar://problem/29808005>

Reviewed by Darin Adler.

Source/WebCore:

MessagePort::dispatchMessages() was getting messages one by one of the
channel's MessageQueue and firing the MessageEvent for each of them.
The issue is that we can get stuck in an infinite loop if the
MessageEvent handler posts a message on the same post.

To address the issue, we now takes all messages from the queue before
iterating over them to fire the event. This way, if new messages are
added to the queue in one of the MessageEvent handlers, they will not
be processed until the next event loop iteration, as is expected.

Test: fast/events/message-port-postMessage-recursive.html

  • dom/MessagePort.cpp:

(WebCore::MessagePort::dispatchMessages):

  • dom/MessagePortChannel.h:

(WebCore::MessagePortChannel::EventData::EventData):

  • dom/default/PlatformMessagePortChannel.cpp:

(WebCore::MessagePortChannel::postMessageToRemote):

  • dom/default/PlatformMessagePortChannel.h:

(WebCore::PlatformMessagePortChannel::MessagePortQueue::takeMessage):
(WebCore::PlatformMessagePortChannel::MessagePortQueue::takeAllMessages):
(WebCore::PlatformMessagePortChannel::MessagePortQueue::appendAndCheckEmpty):

Source/WTF:

Add API to retrieve all messages in the queue at once.

  • wtf/MessageQueue.h:

LayoutTests:

Add layout test coverage. The test used to time out, it now passes.
The test also passes on Firefox and Chrome.

  • fast/events/message-port-postMessage-recursive-expected.txt: Added.
  • fast/events/message-port-postMessage-recursive.html: Added.
3:08 PM Changeset in webkit [212608] by Michael Catanzaro
  • 24 edits
    5 deletes in trunk/Source

Remove COORDINATED_GRAPHICS_MULTIPROCESS
https://bugs.webkit.org/show_bug.cgi?id=168514

Reviewed by Darin Adler.

Source/WebCore:

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:

Source/WebKit2:

  • Shared/DrawingAreaInfo.h:
  • UIProcess/API/C/CoordinatedGraphics/WKView.cpp:

(WKViewFindZoomableAreaForRect):

  • UIProcess/AcceleratedDrawingAreaProxy.cpp:

(WebKit::AcceleratedDrawingAreaProxy::AcceleratedDrawingAreaProxy):

  • UIProcess/AcceleratedDrawingAreaProxy.h:

(WebKit::AcceleratedDrawingAreaProxy::coordinatedLayerTreeHostProxy): Deleted.

  • UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.cpp: Removed.
  • UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.h: Removed.
  • UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.messages.in: Removed.
  • UIProcess/CoordinatedGraphics/PageViewportController.cpp:

(WebKit::PageViewportController::pageTransitionViewportReady):

  • UIProcess/CoordinatedGraphics/WebPageProxyCoordinatedGraphics.cpp: Removed.
  • UIProcess/DrawingAreaProxy.h:
  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::pageDidRequestScroll): Deleted.
(WebKit::WebPageProxy::pageTransitionViewportReady): Deleted.
(WebKit::WebPageProxy::didRenderFrame): Deleted.
(WebKit::WebPageProxy::commitPageTransitionViewport): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebPage/AcceleratedDrawingArea.cpp:

(WebKit::AcceleratedDrawingArea::AcceleratedDrawingArea):
(WebKit::AcceleratedDrawingArea::updateBackingStoreState):
(WebKit::AcceleratedDrawingArea::didReceiveCoordinatedLayerTreeHostMessage): Deleted.

  • WebProcess/WebPage/AcceleratedDrawingArea.h:
  • WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:

(WebKit::CoordinatedLayerTreeHost::CoordinatedLayerTreeHost):
(WebKit::CoordinatedLayerTreeHost::commitSceneState):
(WebKit::CoordinatedLayerTreeHost::createCoordinatedSurface):

  • WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
  • WebProcess/WebPage/CoordinatedGraphics/WebPageCoordinatedGraphics.cpp: Removed.
  • WebProcess/WebPage/DrawingArea.cpp:

(WebKit::DrawingArea::create):

  • WebProcess/WebPage/DrawingArea.h:
  • WebProcess/WebPage/LayerTreeHost.cpp:

(WebKit::LayerTreeHost::create):

  • WebProcess/WebPage/LayerTreeHost.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::~WebPage):
(WebKit::WebPage::pageDidRequestScroll):
(WebKit::WebPage::didCompletePageTransition):
(WebKit::WebPage::didReceiveMessage):
(WebKit::WebPage::commitPageTransitionViewport): Deleted.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
2:30 AM Changeset in webkit [212607] by Carlos Garcia Campos
  • 2 edits in trunk/LayoutTests

Unreviewed GTK+ gardening. Update expectations of a few more tests that are failing.

  • platform/gtk/TestExpectations:
2:17 AM Changeset in webkit [212606] by Carlos Garcia Campos
  • 1 edit
    5 adds in trunk/LayoutTests

Unreviewed GTK+ gardening. Rebaseline imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-textarea.html.

Selection is always directional for us.

  • platform/gtk/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-textarea-expected.txt: Added.
2:01 AM Changeset in webkit [212605] by Michael Catanzaro
  • 2 edits in trunk/Source/WebKit2

[GTK] Cannot paste primary selection into web view in Wayland
https://bugs.webkit.org/show_bug.cgi?id=166949

Reviewed by Carlos Garcia Campos.

Once upon a time, primary selection (middle-click paste) was not supported in Wayland. At
the time, I changed this function to report that primary selection was unsupported. But
nowadays, primary selection works fine in all GTK+ applications except WebKit. All we have
to do to make it work in WebKit is change this return value.

  • WebProcess/WebCoreSupport/WebEditorClient.cpp:

(WebKit::WebEditorClient::supportsGlobalSelection):

1:44 AM Changeset in webkit [212604] by Carlos Garcia Campos
  • 2 edits in trunk/LayoutTests

Unreviewed GTK+ gardening. Update expectations of several tests.

  • platform/gtk/TestExpectations:

Feb 17, 2017:

10:57 PM Changeset in webkit [212603] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Use Maps in FrameResourceManager instead of objects
https://bugs.webkit.org/show_bug.cgi?id=168549
<rdar://problem/30590110>

Reviewed by Joseph Pecoraro.

Use Map for _frameIdentifierMap and _resourceRequestIdentifierMap.

  • UserInterface/Controllers/FrameResourceManager.js:

(WebInspector.FrameResourceManager.prototype.initialize):
(WebInspector.FrameResourceManager.prototype.get frames):
(WebInspector.FrameResourceManager.prototype.frameForIdentifier):
(WebInspector.FrameResourceManager.prototype.frameDidDetach):
(WebInspector.FrameResourceManager.prototype.resourceRequestWillBeSent):
(WebInspector.FrameResourceManager.prototype.markResourceRequestAsServedFromMemoryCache):
(WebInspector.FrameResourceManager.prototype.resourceRequestWasServedFromMemoryCache):
(WebInspector.FrameResourceManager.prototype.resourceRequestDidReceiveResponse):
(WebInspector.FrameResourceManager.prototype.resourceRequestDidReceiveData):
(WebInspector.FrameResourceManager.prototype.resourceRequestDidFinishLoading):
(WebInspector.FrameResourceManager.prototype.resourceRequestDidFailLoading):
(WebInspector.FrameResourceManager.prototype._addNewResourceToFrameOrTarget):
(WebInspector.FrameResourceManager.prototype._processMainFrameResourceTreePayload):
(WebInspector.FrameResourceManager.prototype._createFrame):

10:41 PM Changeset in webkit [212602] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

Allow properties in CSSProperties.json that don't trigger code generation
https://bugs.webkit.org/show_bug.cgi?id=168535

Reviewed by Sam Weinig.

In order to track the development of CSS properties that we have not yet implemented,
support '"skip-codegen" : true' in "codegen-properties".

Test by adding a few fill-related properties with this attribute.

  • css/CSSProperties.json:
  • css/makeprop.pl:

(isPropertyEnabled):
(addProperty):

5:13 PM Changeset in webkit [212601] by matthew_hanson@apple.com
  • 4 edits in branches/safari-603-branch/Source/WebCore

Merge r212554. rdar://problem/30339638

5:12 PM Changeset in webkit [212600] by matthew_hanson@apple.com
  • 4 edits
    2 adds in branches/safari-603-branch

Merge r212354. rdar://problem/30450371

5:12 PM Changeset in webkit [212599] by matthew_hanson@apple.com
  • 10 edits
    2 adds in branches/safari-603-branch

Merge r212265. rdar://problem/30231732

5:12 PM Changeset in webkit [212598] by matthew_hanson@apple.com
  • 5 edits
    6 adds in branches/safari-603-branch

Merge r212218. rdar://problem/30339793

4:40 PM Changeset in webkit [212597] by BJ Burg
  • 16 edits
    1 add in trunk/Source

Web Inspector: RTL: Inspector window should dock to the left when using RTL layout direction
https://bugs.webkit.org/show_bug.cgi?id=168273
<rdar://problem/29949325>

Reviewed by Matt Baker.

Add the ability to dock Web Inspector to the left of the inspected view.
The frontend decides whether the Dock to Side button docks left or right
based on the current layout direction.

Source/WebCore:

  • inspector/InspectorFrontendClient.h:
  • inspector/InspectorFrontendClientLocal.cpp:

(WebCore::InspectorFrontendClientLocal::setAttachedWindow):

  • inspector/InspectorFrontendHost.cpp:

(WebCore::InspectorFrontendHost::requestSetDockSide):

Source/WebInspectorUI:

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

(WebInspector.contentLoaded):
Rename the "Dock to Right" button to "Dock to Side" instead. It's easier to just
have one button than to try and conditionally hide one or the other based on
the layout direction. Change the dock callback and the icon used for the button
depending on layout direction.

(WebInspector.resolvedLayoutDirection):
Refactor getLayoutDirection() to resolvedLayoutDirection() so callers get back
either "ltr" or "rtl".

Flip the dock side if layout direction changes while docked to the side.

Adjust various code paths to account for the existing of left docking. In particular,
resize rejection needs special-casing for resizing leftward from beyond the right side
of the Inspector view when it is docked to the left. Improve related comments since it
took me an unbelievable amount of time to understand what this code is supposed to do.

  • UserInterface/Views/Main.css:

(body.docked.right):
(body.docked.left #docked-resizer):
(body.docked:matches(.right, .left) #navigation-sidebar.collapsed > .resizer):
(body.docked.right #navigation-sidebar.collapsed > .resizer): Deleted.
Add .docked.left analogues to rules for .docked.right.

Source/WebKit2:

  • UIProcess/WebInspectorProxy.cpp:

(WebKit::WebInspectorProxy::attachLeft):
(WebKit::WebInspectorProxy::attach):
(WebKit::WebInspectorProxy::createInspectorPage):

  • UIProcess/WebInspectorProxy.h:
  • UIProcess/WebInspectorProxy.messages.in:

Add plumbing for new dock configuration.

  • UIProcess/mac/WebInspectorProxyMac.mm:

(WebKit::WebInspectorProxy::platformCreateInspectorPage):
(WebKit::WebInspectorProxy::inspectedViewFrameDidChange):
(WebKit::WebInspectorProxy::platformAttach):
Adapt existing sizing logic to work for docking to left.

  • WebProcess/WebPage/WebInspectorUI.cpp:

(WebKit::WebInspectorUI::requestSetDockSide):
(WebKit::WebInspectorUI::setDockSide):

  • WebProcess/WebPage/WebInspectorUI.h:

(WebKit::WebInspectorUI::attachedLeft):

  • WebProcess/WebPage/WebInspectorUI.messages.in:

Add plumbing for new dock configuration.

4:28 PM Changeset in webkit [212596] by matthew_hanson@apple.com
  • 5 edits
    1 add in branches/safari-603-branch

Merge r212177. rdar://problem/30205880

4:10 PM Changeset in webkit [212595] by matthew_hanson@apple.com
  • 16 edits
    16 adds in branches/safari-603-branch

Merge r212035. rdar://problem/30433204

3:59 PM Changeset in webkit [212594] by matthew_hanson@apple.com
  • 3 edits in branches/safari-603-branch/Source/JavaScriptCore

Merge r212146. rdar://problem/28656664

3:52 PM Changeset in webkit [212593] by matthew_hanson@apple.com
  • 8 edits in branches/safari-603-branch/Source/WebKit2

Merge r212244. rdar://problem/23676252

3:52 PM Changeset in webkit [212592] by msaboff@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Improve ARM64 disassembler handling of pseudo ops, unsupported opcodes and zero reg
https://bugs.webkit.org/show_bug.cgi?id=168527

Reviewed by Filip Pizlo.

Added support for data processing 1 source instructions like rbit, rev, clz and cls.
Added support for the FP conditional select instruction, fcsel. Consolidated the
two classes for handling dmb instructions into one class. Fixed the instruction
selection mask in the integer conditional select class, A64DOpcodeConditionalSelect.
Fixed the processing of extract instruction (extr) including the rotate right (ror)
pseudo instruction. Changed the printing of x31 and w31 to xzr and wzr as operands
according to the spec. Added support for common pseudo instructions. This includes:

  • mvn x1, X2 in place of orn x1, xzr, x2
  • lsl x3, x4, #count in place of ubfiz x3, x4, #count, #count
  • smull x5, w6, w7 in place of smaddl x5, w6, w7, XZR
  • More understandable mov x8, #-304 in place of movn x8, #0x12f
  • Eliminated xzr from register index loads and stores, outputing ldr x10, [x11] instead of ldr x10, [x11, xzr]

Changed the move wide instructions to use hex literals for movz and movk.
This makes it much easier to decifer sequences of wide moves for large literals.

Before After

movz x17, #26136 movz x17, #0x6618
movk x17, #672, lsl #16 movk x17, #0x2a0, lsl #16
movk x17, #1, lsl #32 movk x17, #0x1, lsl #32

Verified that all instructions currently generated by the JSC stress tests are
disassembled.

  • disassembler/ARM64/A64DOpcode.cpp:

(JSC::ARM64Disassembler::A64DOpcodeBitfield::format):
(JSC::ARM64Disassembler::A64DOpcodeDataProcessing1Source::format):
(JSC::ARM64Disassembler::A64DOpcodeDataProcessing2Source::format):
(JSC::ARM64Disassembler::A64DOpcodeDataProcessing3Source::format):
(JSC::ARM64Disassembler::A64DOpcodeExtract::format):
(JSC::ARM64Disassembler::A64DOpcodeFloatingPointConditionalSelect::format):
(JSC::ARM64Disassembler::A64DOpcodeFloatingPointIntegerConversions::format):
(JSC::ARM64Disassembler::A64DOpcodeDmb::format):
(JSC::ARM64Disassembler::A64DOpcodeLoadStoreImmediate::format):
(JSC::ARM64Disassembler::A64DOpcodeLoadStoreRegisterOffset::format):
(JSC::ARM64Disassembler::A64DOpcodeLoadStoreRegisterPair::format):
(JSC::ARM64Disassembler::A64DOpcodeLoadStoreUnsignedImmediate::format):
(JSC::ARM64Disassembler::A64DOpcodeLogicalShiftedRegister::format):
(JSC::ARM64Disassembler::A64DOpcodeMoveWide::format):
(JSC::ARM64Disassembler::A64DOpcodeDmbIsh::format): Deleted.
(JSC::ARM64Disassembler::A64DOpcodeDmbIshSt::format): Deleted.

  • disassembler/ARM64/A64DOpcode.h:

(JSC::ARM64Disassembler::A64DOpcode::appendSignedImmediate64):
(JSC::ARM64Disassembler::A64DOpcode::appendUnsignedHexImmediate):
(JSC::ARM64Disassembler::A64DOpcodeDataProcessing1Source::opName):
(JSC::ARM64Disassembler::A64DOpcodeDataProcessing1Source::sBit):
(JSC::ARM64Disassembler::A64DOpcodeDataProcessing1Source::opCode):
(JSC::ARM64Disassembler::A64DOpcodeDataProcessing1Source::opCode2):
(JSC::ARM64Disassembler::A64DOpcodeDataProcessing1Source::opNameIndex):
(JSC::ARM64Disassembler::A64DOpcodeDataProcessing3Source::opName):
(JSC::ARM64Disassembler::A64DOpcodeFloatingPointConditionalSelect::opName):
(JSC::ARM64Disassembler::A64DOpcodeFloatingPointConditionalSelect::condition):
(JSC::ARM64Disassembler::A64DOpcodeDmb::option):
(JSC::ARM64Disassembler::A64DOpcodeDmb::crM):
(JSC::ARM64Disassembler::A64DOpcodeLogicalShiftedRegister::isMov):
(JSC::ARM64Disassembler::A64DOpcodeDmbIsh::opName): Deleted.
(JSC::ARM64Disassembler::A64DOpcodeDmbIshSt::opName): Deleted.

3:49 PM Changeset in webkit [212591] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Fix failure from r212579.

Unreviewed build-fix.

  • Scripts/webkitpy/tool/steps/checkpatchrelevance.py:

(CheckPatchRelevance._changes_are_relevant): Return true for all groups others than jsc for now.

3:41 PM Changeset in webkit [212590] by Simon Fraser
  • 27 edits
    4 adds in trunk

Allow PlatformCALayers to specify that they want deep color backing store
https://bugs.webkit.org/show_bug.cgi?id=168495

Reviewed by Tim Horton.
Source/WebCore:

Currently capable iOS devices get deep color backing store by virtue of a supports
check in PlatformCALayerCocoa::PlatformCALayerCocoa(), and LegacyTileGridTile.

Future work will make layer contents format selection more complex, so express the need
for deep color on PlatformCALayer, and have the creators of PlatformCALayer (mainly the
flavors of GraphicsLayerCA) choose for them to support deep color. A bit of special-casing
is needed to propagte the state to TileControllers.

The deep-colorness now propagates from PlatformCALayerRemote to RemoteLayerBackingStore,
instead of RemoteLayerBackingStore looking at the properties of the screen directly.

Remove PlatformCALayer::LayerTypeWebTiledLayer which was only used for the old CATiledLayers
that we no longer use.

An iphone7 test verifies that page tiles, normal layers and tiled layers get the deep
color state set on them.

Test: tiled-drawing/ios/iphone7/compositing-layers-deep-color.html

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::createPlatformCALayer):
(WebCore::GraphicsLayerCA::dumpAdditionalProperties):

  • platform/graphics/ca/GraphicsLayerCA.h:
  • platform/graphics/ca/PlatformCALayer.cpp:

(WebCore::PlatformCALayer::canHaveBackingStore):
(WebCore::operator<<):

  • platform/graphics/ca/PlatformCALayer.h:
  • platform/graphics/ca/TileController.cpp:

(WebCore::TileController::setZoomedOutContentsScale):
(WebCore::TileController::setAcceleratesDrawing):
(WebCore::TileController::setWantsDeepColorBackingStore):
(WebCore::TileController::createTileLayer):

  • platform/graphics/ca/TileController.h:
  • platform/graphics/ca/TileGrid.cpp:

(WebCore::TileGrid::updateTileLayerProperties):

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

(PlatformCALayerCocoa::PlatformCALayerCocoa):
(PlatformCALayerCocoa::commonInit):
(PlatformCALayerCocoa::wantsDeepColorBackingStore):
(PlatformCALayerCocoa::setWantsDeepColorBackingStore):
(layerContentsFormat):
(PlatformCALayerCocoa::updateContentsFormat):

  • platform/graphics/ca/cocoa/WebTiledBackingLayer.h:
  • platform/graphics/ca/cocoa/WebTiledBackingLayer.mm:

(-[WebTiledBackingLayer setWantsDeepColorBackingStore:]):
(-[WebTiledBackingLayer wantsDeepColorBackingStore]):

  • platform/graphics/ca/win/PlatformCALayerWin.cpp:

(PlatformCALayerWin::wantsDeepColorBackingStore):
(PlatformCALayerWin::setWantsDeepColorBackingStore):
(printLayer):

  • platform/graphics/ca/win/PlatformCALayerWin.h:
  • platform/spi/cocoa/QuartzCoreSPI.h:

Source/WebKit2:

Currently capable iOS devices get deep color backing store by virtue of a supports
check in PlatformCALayerCocoa::PlatformCALayerCocoa(), and LegacyTileGridTile.

Future work will make layer contents format selection more complex, so express the need
for deep color on PlatformCALayer, and have the creators of PlatformCALayer (mainly the
flavors of GraphicsLayerCA) choose for them to support deep color. A bit of special-casing
is needed to propagte the state to TileControllers.

The deep-colorness now propagates from PlatformCALayerRemote to RemoteLayerBackingStore,
instead of RemoteLayerBackingStore looking at the properties of the screen directly.

Remove PlatformCALayer::LayerTypeWebTiledLayer which was only used for the old CATiledLayers
that we no longer use.

  • Shared/mac/RemoteLayerBackingStore.h:
  • Shared/mac/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::ensureBackingStore):
(WebKit::RemoteLayerBackingStore::bytesPerPixel):
(WebKit::RemoteLayerBackingStore::swapToValidFrontBuffer):
(WebKit::RemoteLayerBackingStore::drawInContext):
(WebKit::RemoteLayerBackingStore::surfaceBufferFormat):
(WebKit::bufferFormat): Deleted.

  • WebProcess/WebPage/mac/GraphicsLayerCARemote.cpp:

(WebKit::GraphicsLayerCARemote::createPlatformCALayer):

  • WebProcess/WebPage/mac/GraphicsLayerCARemote.h:
  • WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:

(WebKit::PlatformCALayerRemote::PlatformCALayerRemote):
(WebKit::PlatformCALayerRemote::updateBackingStore):
(WebKit::PlatformCALayerRemote::wantsDeepColorBackingStore):
(WebKit::PlatformCALayerRemote::setWantsDeepColorBackingStore):

  • WebProcess/WebPage/mac/PlatformCALayerRemote.h:
  • WebProcess/WebPage/mac/PlatformCALayerRemoteTiledBacking.cpp:

(WebKit::PlatformCALayerRemoteTiledBacking::wantsDeepColorBackingStore):
(WebKit::PlatformCALayerRemoteTiledBacking::setWantsDeepColorBackingStore):

  • WebProcess/WebPage/mac/PlatformCALayerRemoteTiledBacking.h:

LayoutTests:

  • platform/ios-simulator-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • tiled-drawing/ios/iphone7/compositing-layers-deep-color-expected.txt: Added.
  • tiled-drawing/ios/iphone7/compositing-layers-deep-color.html: Added.
3:39 PM Changeset in webkit [212589] by matthew_hanson@apple.com
  • 7 edits in branches/safari-603-branch

Roll out r211501 via r212488. rdar://problem/29904368

3:39 PM Changeset in webkit [212588] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/LayoutTests

Roll out r212168 via r212498. rdar://problem/29904368

3:39 PM Changeset in webkit [212587] by matthew_hanson@apple.com
  • 41 edits in branches/safari-603-branch

Roll out r212173 via r212500. rdar://problem/29904368

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

Roll out r212174 via r212501. rdar://problem/29904368

3:39 PM Changeset in webkit [212585] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebKit/win

Roll out r212175 via r212502. rdar://problem/29904368

3:39 PM Changeset in webkit [212584] by matthew_hanson@apple.com
  • 3 edits in branches/safari-603-branch/Source/JavaScriptCore

Revert "rdar://problem/30553220"

This reverts commit d49f396c122789d495a54a97f49787b0cd4308cd.

3:36 PM Changeset in webkit [212583] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603-branch/Source

Versioning.

2:54 PM Changeset in webkit [212582] by BJ Burg
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: RTL: add TabBar support for RTL layout
https://bugs.webkit.org/show_bug.cgi?id=168446

Reviewed by Matt Baker.

There are two types of changes needed:

  • Flip leading and trailing borders and margins for the tab items.
  • Enumerate tabs in reverse order when performing manual layout.

Along the way, I added some color variables local to TabBar.css to
reduce the number of redundant border-style and color declarations.

  • UserInterface/Base/Main.js:

Change this to resolvedLayoutDirection(), and resolve "System" to "ltr" or "rtl".
This makes it suitable for use in manual layout without worrying about "System".
Fix the one existing use-site to not do its own resolution of "System".

  • UserInterface/Views/TabBar.css:

Define commonly used colors and border styles and adopt var() usages.
Flip borders that should vary in RTL vs LTR, but not all of them. In
many cases, the border is not direction-dependent and looks the same
on both sides. Also, no need to swap animated properties as all manual
layout is done from the left edge.

(.tab-bar):
(body.window-inactive .tab-bar):
(.tab-bar > .top-border):
(body.window-inactive .tab-bar > .top-border):
(.tab-bar > .item):
(body[dir=ltr] .tab-bar > :nth-child(n + 2 of .item),):
(body[dir=rtl] .tab-bar > :nth-child(n + 2 of .item),):
(.tab-bar:not(.animating) > .item:not(.selected, .disabled):hover):
(body[dir=ltr] .tab-bar:not(.animating) > .item:not(.selected, .disabled):hover,):
(body[dir=rtl] .tab-bar:not(.animating) > .item:not(.selected, .disabled):hover,):
(body.window-inactive .tab-bar > .item):
(body[dir=ltr].window-inactive .tab-bar > .item):
(body[dir=rtl].window-inactive .tab-bar > .item):
(.tab-bar > .item > .close):
(body[dir=ltr] .tab-bar > .item > .close):
(body[dir=rtl] .tab-bar > .item > .close):
(.tab-bar > .item:not(.pinned) > .flex-space:last-child):
(body[dir=ltr] .tab-bar > .item:not(.pinned) > .flex-space:last-child):
(body[dir=rtl] .tab-bar > .item:not(.pinned) > .flex-space:last-child):
(.tab-bar > .item > .title):
(body[dir=ltr] .tab-bar > .item > .title):
(body[dir=rtl] .tab-bar > .item > .title):
(.tab-bar.collapsed > .item > .close):
(body[dir=ltr] .tab-bar.collapsed > .item > .close):
(body[dir=rtl] .tab-bar.collapsed > .item > .close):

  • UserInterface/Views/TabBar.js:

When doing manual layout, keep doing calculations with respect to the left edge
and keep the list of tab items in logical (LTR) order, as in the DOM. But, when
manually positioning tab items for RTL layout direction, reverse the tab items
so that it matches the screen/layout order of the flipped flexbox items.

(WebInspector.TabBar.prototype.insertTabBarItem):
(WebInspector.TabBar.prototype.removeTabBarItem.animateTabs):
In RTL, put extra space after closing a tab to the left of normal tabs. This
matches the behavior of LTR, but requires some additional measurement since we
still position tabs using left and can't simply infer the leftover space.

(WebInspector.TabBar.prototype._tabBarItemsFromLeftToRight): Added.
(WebInspector.TabBar.prototype._handleMouseMoved):
(WebInspector.TabBar.prototype._handleMouseUp):

2:51 PM Changeset in webkit [212581] by jer.noble@apple.com
  • 7 edits in trunk/Source/WebCore

Refactoring: Make sure to unprepare WebAudioSourceProviderAVFObjC when its owner is destroyed.
https://bugs.webkit.org/show_bug.cgi?id=168532

Reviewed by Youenn Fablet.

Because WebAudioSourceProviderAVFObjC has a back-pointer to the object which creted it, make
sure that back-pointer is invalidated once the creating object is destroyed by calling
WebAudioSOurceProviderAVFObjC::unprepare().

Drive-by Fix: In WebAudioSourceProviderAVFObjC::audioSamplesAvailable(), PlatformAudioData will
always be of the WebAudioBufferList type. If this ever becomes untrue, an invalid downcast will
be caught by downcast<>, so just remove the is<> check.

  • platform/mediastream/mac/AVAudioCaptureSource.mm:

(WebCore::AVAudioCaptureSource::~AVAudioCaptureSource):

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

(WebCore::MockRealtimeAudioSourceMac::~MockRealtimeAudioSourceMac):

  • platform/mediastream/mac/RealtimeIncomingAudioSource.cpp:

(WebCore::RealtimeIncomingAudioSource::~RealtimeIncomingAudioSource):

  • platform/mediastream/mac/RealtimeIncomingAudioSource.h:
  • platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm:

(WebCore::WebAudioSourceProviderAVFObjC::~WebAudioSourceProviderAVFObjC):
(WebCore::WebAudioSourceProviderAVFObjC::setClient):
(WebCore::WebAudioSourceProviderAVFObjC::unprepare):
(WebCore::WebAudioSourceProviderAVFObjC::audioSamplesAvailable):

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

Web Inspector: Zoom level UI out of sync with setting value
https://bugs.webkit.org/show_bug.cgi?id=168522

Patch by Devin Rousso <Devin Rousso> on 2017-02-17
Reviewed by Brian Burg.

  • UserInterface/Views/SettingsTabContentView.js:

(WebInspector.SettingsTabContentView):
Trigger a layout whenever the zoomFactor setting is changed. This is needed since the
zoomFactor setting can also be modified by global keyboard shortcuts.

2:41 PM Changeset in webkit [212579] by commit-queue@webkit.org
  • 26 edits
    6 adds in trunk/Tools

EWS should run JavaScriptCore tests
https://bugs.webkit.org/show_bug.cgi?id=162458

Patch by Srinivasan Vijayaraghavan <svijayaraghavan@apple.com> on 2017-02-17
Reviewed by Alexey Proskuryakov.

  • QueueStatusServer/config/queues.py: Add jsc-ews queue.
  • QueueStatusServer/model/queuestatus.py:

(QueueStatus.did_skip): Returns whether patch was skipped, based on status.

  • QueueStatusServer/handlers/statusbubble.py:

(StatusBubble._should_show_bubble_for): Add logic to hide jsc-ews bubble if the patch does not touch jsc.

  • Scripts/webkitpy/common/checkout/scm/scm_mock.py:

(MockSCM.init): Add _mockChangedFiles variable.
(MockSCM.changed_files): Change to use _mockChangedFiles variables.

  • Scripts/webkitpy/common/config/ews.json: Add config info for JSC EWS.
  • Scripts/webkitpy/common/config/ports.py: Add support for JSC EWS in Mac Port.

(DeprecatedPort._append_build_style_flag): Helper function to append build_style to a command.
(DeprecatedPort.build_jsc_command): Added - command to build JSC only (quicker than building all of WebKit).
(DeprecatedPort.run_javascriptcore_tests_command): Allow JSC EWS to only run JSC tests.
(MacPort.run_webkit_tests_command): Check for JSC.

  • Scripts/webkitpy/common/config/ports_mock.py:

(MockPort.run_javascriptcore_tests_command): Add build_style argument.

  • Scripts/webkitpy/common/config/ports_unittest.py:

(DeprecatedPortTest.test_mac_port): Add unit tests for build-jsc shell command.

  • Scripts/webkitpy/common/net/abstracttestresults.py: Added.

(AbstractTestResults): Abstract superclass of JSCTestResults and JSCTestResults.
(AbstractTestResults.test_results): Stub.
(AbstractTestResults.failing_tests): Stub.
(AbstractTestResults.did_exceed_test_failure_limit): Stub.

  • Scripts/webkitpy/common/net/jsctestresults.py: Added.

(JSCTestResults): Added.
(JSCTestResults.intersection): Return a JSCTestResults object with failures common to both input objects.
(JSCTestResults.results_from_string): Use json library to parse results.
(JSCTestResults.init): Initialize members.
(JSCTestResults.equals): This enables unit testing.
(JSCTestResults.is_subset): Checks if one set of failures is a subset of another.
(JSCTestResults.all_passed): Getter.
(JSCTestResults.failing_tests): Getter.
(JSCTestResults.did_exceed_test_failure_limit): Getter.

  • Scripts/webkitpy/common/net/jsctestresults_unittest.py: Added.

(JSCTestResultsTest): Class to test JSCTestResults.
(JSCTestResultsTest.test_results_from_string): Tests parsing.
(JSCTestResultsTest.test_intersection_api_tests): Unit test for intersection() class method.
(JSCTestResultsTest.test_intersection_stress_tests): Unit test for intersection() class method.
(JSCTestResultsTest.test_intersection_general_case): Unit test for intersection() class method.

  • Scripts/webkitpy/port/base.py:

(Port.jsc_results_directory): Returns the directory for the JSC test results JSON file.

  • Scripts/webkitpy/tool/bot/earlywarningsystemtask.py:

(EarlyWarningSystemTask.run): Add check_patch_relevance step.

  • Scripts/webkitpy/tool/bot/jscews_unittest.py: Added.

(MockPatchAnalysisTask): Mocked-out version of PatchAnalysisTask that doesn't run commands.
(MockPatchAnalysisTask.init): Sets attributes.
(MockPatchAnalysisTask._test): Override to not run command.
(MockPatchAnalysisTask._build_and_test_without_patch): Override to not run command.
(MockPatchAnalysisTask.validate): Assume mocked patch is valid for purposes of testing retry logic.
(MockPatchAnalysisTask.test_run_count): Specific to the mocked version, to test retry logic.
(MockJSCEarlyWarningSystem): Mocked-out version of AbstarctEarlyWarningSystem so we can provide test results.
(MockJSCEarlyWarningSystem.init): Sets attributes, also sets group to jsc.
(MockJSCEarlyWarningSystem.test_results): Returns test results provided by us, instead of using a JSON reader.
(JSCEarlyWarningSystemTest): Class to test retry logic in below situations.
(JSCEarlyWarningSystemTest._create_task): Helper function to abstract out common code.
(JSCEarlyWarningSystemTest._results_indicate_all_passed): False if input is None or has failures, else True.
(JSCEarlyWarningSystemTest.test_success_case): Clean patch on clean tree.
(JSCEarlyWarningSystemTest.test_test_failure): Failed patch on clean tree.
(JSCEarlyWarningSystemTest.test_fix): Patch that fixes all tree redness.
(JSCEarlyWarningSystemTest.test_ineffective_patch): Patch that has same failures as tree.
(JSCEarlyWarningSystemTest.test_partially_effective_patch): Patch fixes some failures but adds no new failures.
(JSCEarlyWarningSystemTest.test_different_test_failures_in_patch_and_tree): Patch has some failures not in tree.
(JSCEarlyWarningSystemTest.test_first_results_could_not_be_read): Patch results not readable.
(JSCEarlyWarningSystemTest.test_second_results_could_not_be_read): Patch results not readable on second run.
(JSCEarlyWarningSystemTest.test_clean_results_could_not_be_read): Results from clean tree not readable.
(JSCEarlyWarningSystemTest.test_flaky_results_on_clean_tree_pass): Patch has one flake and no failures.
(JSCEarlyWarningSystemTest.test_flaky_results_on_clean_tree_pass_v2): Patch has one flake and no failures.
(JSCEarlyWarningSystemTest.test_flaky_results_on_clean_tree_failure): Patch has flakes and failed tests.
(JSCEarlyWarningSystemTest.test_flaky_results_on_red_tree_pass): Patch has same failures as tree, plus a flake.

  • Scripts/webkitpy/tool/bot/jsctestresultsreader.py: Added.

(JSCTestResultsReader): Reads results file.
(JSCTestResultsReader.init): Sets attributes.
(JSCTestResultsReader._read_file_contents): Reads file.
(JSCTestResultsReader.results): Reads the results file and returns a JSCTestResults object.

  • Scripts/webkitpy/tool/bot/patchanalysistask.py:

(PatchIsNotApplicable): Exception for when patch doesn't have relevant changes.
(PatchAnalysisTask._check_patch_relevance): Added.
(PatchAnalysisTask._build): Check for JSC.
(PatchAnalysisTask._build_without_patch): Check for JSC.
(PatchAnalysisTask._test): Check for JSC.
(PatchAnalysisTask._build_and_test_without_patch): Check for JSC.
(PatchAnalysisTask._retry_jsc_tests): Retry logic for JSC EWS.
(PatchAnalysisTask._retry_layout_tests): Retry logic for layout tests EWS.
(PatchAnalysisTask._test_patch): Add retry logic for JSC.

  • Scripts/webkitpy/tool/commands/download.py:

(CheckPatchRelevance): Add check-patch-relevance command.

  • Scripts/webkitpy/tool/commands/earlywarningsystem.py:

(AbstractEarlyWarningSystem._create_task): Abstract out to enable mocking.
(AbstractEarlyWarningSystem.begin_work_queue): Use JSCTestResultsReader not LayoutTestResultsReader in JSC EWS.
(AbstractEarlyWarningSystem.review_patch): Handle PatchIsApplicable.
(AbstractEarlyWarningSystem.test_results): _layout_test_results_reader -> _test_results_reader.
(AbstractEarlyWarningSystem.archive_last_test_results): _layout_test_results_reader -> _test_results_reader.
(AbstractEarlyWarningSystem.group): This attribute determines the type of EWS (eg. JSC).
(AbstractEarlyWarningSystem.load_ews_classes): Add _group, and make classes of type cls to enable mocking.

  • Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:

(TestEWS): Sample layout test EWS class used for unit testing.
(TestJSCEWS): Sample JSC EWS class used for unit testing.
(AbstractEarlyWarningSystemTest.test_failing_tests_message.TestEWS): Add _group.
(AbstractEarlyWarningSystemTest.test_failing_jsc_tests_message.TestEWS): Added test for jsc failures message.
(AbstractEarlyWarningSystemTest): Add _group variable.
(EarlyWarningSystemTest._default_expected_logs): Add check-patch-relevance step, inconclusive logs, and group.
(EarlyWarningSystemTest._test_ews): Add logs_are_conclusive option to pass through to default_expected_logs().
(EarlyWarningSystemTest.test_inconclusive_test_results): Test not removing patch from queue if not conclusive.
(MockAbstractEarlyWarningSystemForInconclusiveJSCResults): Added.
(MockAbstractEarlyWarningSystemForInconclusiveJSCResults._test_patch): Simulates running tests but not getting a conclusive result.
(MockEarlyWarningSystemTaskForInconclusiveJSCResults): Added.
(MockEarlyWarningSystemTaskForInconclusiveJSCResults._create_task): Use MockEarlyWarningSystemTask (not EarlyWarningSystemTask).

  • Scripts/webkitpy/tool/steps/init.py: Add CheckPatchRelevance import.
  • Scripts/webkitpy/tool/steps/build.py:

(Build.options): Check for JSC.
(Build.build): Check for JSC.
(Build.run): Check for JSC.

  • Scripts/webkitpy/tool/steps/checkpatchrelevance.py: Added.

(CheckPatchRelevance): Added.
(CheckPatchRelevance._does_contain_change_in_paths): Abstract function to perform regex matching.
(CheckPatchRelevance.run): Check if changed files in patch belong in certain folders.

  • Scripts/webkitpy/tool/steps/options.py:

(Options): Add --group command line option.

  • Scripts/webkitpy/tool/steps/runtests.py:

(RunTests.options): Add group.
(RunTests.run): Check for JSC.
(RunTests._run_webkit_tests): Check for JSC.
(RunTests): Add _group attribute.
(RunTests._run_javascriptcore_tests): New.

  • Scripts/webkitpy/tool/steps/steps_unittest.py: Unit tests.
2:39 PM Changeset in webkit [212578] by BJ Burg
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Loc: Zoom level in Settings tab needs to use localized formatting
https://bugs.webkit.org/show_bug.cgi?id=168465

Reviewed by Matt Baker.

  • UserInterface/Views/SettingsTabContentView.js:

(WebInspector.SettingsTabContentView.prototype.layout):
(WebInspector.SettingsTabContentView):

2:20 PM Changeset in webkit [212577] by BJ Burg
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: RTL: CodeMirror text editor instances have scrollbars on left and right
https://bugs.webkit.org/show_bug.cgi?id=168274

Reviewed by Matt Baker.

CodeMirror doesn't draw its own scrollbar correctly when content is in RTL,
so it draws an extra scrollbar on the right side. And, for the majority of
cases, we don't want to view CSS / JS content aligned to the right.

Manually set the "dir" attribute for all CodeMirror editor instances to "ltr".
Clients can override this if custom RTL layout is available in a particular case.

  • UserInterface/Views/CodeMirrorEditor.js:

(WebInspector.CodeMirrorEditor.create):
(WebInspector.CodeMirrorEditor):

1:57 PM Changeset in webkit [212576] by Ryan Haddad
  • 2 edits in branches/safari-603-branch/LayoutTests

Fix expected.txt file for tiled-drawing/tiled-backing-in-window.html.

Unreviewed test gardening.

  • tiled-drawing/tiled-backing-in-window-expected.txt:
1:48 PM Changeset in webkit [212575] by graouts@webkit.org
  • 8 edits
    2 adds in trunk

[Modern Media Controls] Improve handling of <video> with only audio tracks
https://bugs.webkit.org/show_bug.cgi?id=167836
<rdar://problem/30255812>

Reviewed by Dean Jackson.

Source/WebCore:

We now check for the availability of video tracks before considering a <video>
element is displaying an actual video file and turning auto-hide on. We also
check that we have video tracks before enabling the fullscreen button. This
brings the behavior of a <video> pointing to a resource with no video tracks
to be the same as an <audio> element.

Test: media/modern-media-controls/media-controller/media-controller-video-with-only-audio.html

  • Modules/modern-media-controls/media/controls-visibility-support.js:

(ControlsVisibilitySupport.prototype.get tracksToMonitor):
(ControlsVisibilitySupport.prototype._updateControls):
(ControlsVisibilitySupport):

  • Modules/modern-media-controls/media/fullscreen-support.js:

(FullscreenSupport.prototype.syncControl):
(FullscreenSupport):

LayoutTests:

Add a new test to check that a <video> with a resource that only has audio tracks
does not auto-hide nor show the fullscreen button. We also rebaseline a few existing
tests for this change of behavior.

  • media/modern-media-controls/controls-visibility-support/controls-visibility-support-controls-on-expected.txt:
  • media/modern-media-controls/controls-visibility-support/controls-visibility-support-controls-on.html:
  • media/modern-media-controls/controls-visibility-support/controls-visibility-support-controls-toggle-expected.txt:
  • media/modern-media-controls/controls-visibility-support/controls-visibility-support-controls-toggle.html:
  • media/modern-media-controls/media-controller/media-controller-video-with-only-audio-expected.txt: Added.
  • media/modern-media-controls/media-controller/media-controller-video-with-only-audio.html: Added.
1:43 PM Changeset in webkit [212574] by Wenson Hsieh
  • 4 edits in trunk/Source/WebKit2

[WK2] Action sheet should not dismiss when a DDAction with user interface is being presented
https://bugs.webkit.org/show_bug.cgi?id=168528
<rdar://problem/30515324>

Reviewed by Beth Dakin.

After r211643, -[WKActionSheet doneWithSheet] now dismisses the presenting view controller. This is called when
interaction with the sheet is finished and is a reasonable thing to do in most cases. However, when using data
detectors, we don't want to dismiss the presenting view controller, since DataDetector handles dismissing on its
own and expects that its completion handler will be invoked.

To fix this, we add a parameter to doneWithSheet: to indicate whether or not we should additionally dismiss the
presenting view controller, and pass in NO in the case where we are handing control over to DataDetector.

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

(-[WKActionSheet doneWithSheet:]):
(-[WKActionSheet doneWithSheet]): Deleted.

  • UIProcess/ios/WKActionSheetAssistant.mm:

(-[WKActionSheetAssistant showDataDetectorsSheet]):
(-[WKActionSheetAssistant cleanupSheet]):

1:40 PM Changeset in webkit [212573] by graouts@webkit.org
  • 10 edits
    6 adds in trunk

[Modern Media Controls] Toggle playback when clicking on the video on macOS
https://bugs.webkit.org/show_bug.cgi?id=168515
<rdar://problem/30577441>

Reviewed by Dean Jackson.

Source/WebCore:

Listen to click events on the macOS media controls. Detect any clicks that were on the
background instead of the controls widgets themselves, and tell the delegate (MediaController)
about them.

Tests: media/modern-media-controls/media-controller/media-controller-click-on-video-background-should-pause.html

media/modern-media-controls/media-controller/media-controller-click-on-video-background-to-dismiss-tracks-panel-should-not-toggle-playback.html
media/modern-media-controls/media-controller/media-controller-click-on-video-controls-should-not-pause.html

  • Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js:

(MacOSFullscreenMediaControls.prototype._handleMousedown):

  • Modules/modern-media-controls/controls/macos-inline-media-controls.js:

(MacOSInlineMediaControls.prototype.handleEvent):

  • Modules/modern-media-controls/controls/macos-media-controls.js:

(MacOSMediaControls.prototype.handleEvent):
(MacOSMediaControls):

  • Modules/modern-media-controls/media/media-controller.js:

(MediaController.prototype.togglePlayback):
(MediaController.prototype.macOSControlsBackgroundWasClicked):
(MediaController.prototype._updateControlsIfNeeded):

  • Modules/modern-media-controls/media/playback-support.js:

(PlaybackSupport.prototype.buttonWasPressed):

LayoutTests:

  • media/modern-media-controls/media-controller/media-controller-click-on-video-background-should-pause-expected.txt: Added.
  • media/modern-media-controls/media-controller/media-controller-click-on-video-background-should-pause.html: Added.
  • media/modern-media-controls/media-controller/media-controller-click-on-video-background-to-dismiss-tracks-panel-should-not-toggle-playback-expected.txt: Added.
  • media/modern-media-controls/media-controller/media-controller-click-on-video-background-to-dismiss-tracks-panel-should-not-toggle-playback.html: Added.
  • media/modern-media-controls/media-controller/media-controller-click-on-video-controls-should-not-pause-expected.txt: Added.
  • media/modern-media-controls/media-controller/media-controller-click-on-video-controls-should-not-pause.html: Added.
  • media/modern-media-controls/media-documents/click-on-video-should-not-pause-expected.txt:
  • media/modern-media-controls/media-documents/click-on-video-should-not-pause.html:
  • platform/ios-simulator/TestExpectations:
1:33 PM Changeset in webkit [212572] by jer.noble@apple.com
  • 14 edits
    2 deletes in trunk/Source/WebCore

Refactoring: Remove AudioSourceObserverObjC and AudioCaptureSourceProviderObjC
https://bugs.webkit.org/show_bug.cgi?id=168520

Reviewed by Youenn Fablet.

Having AudioCaptureSourceProviderObjC as the type provided to WebAudioSourceProviderAVFObjC
(and only ever to WebAudioSourceProviderAVFObjC) makes it impossible for that class to add
an observer on RealtimeMediaSource, of which all classes inheriting from
WebAudioSourceProviderAVFObjC are subclasses. There is no need to treat
WebAudioSourceProviderAVFObjC as an "observer", since the only thing it will ever observe is
the object which created it and hold an explicit reference to it. So replace all instances
of the "observer" pattern with direct calls to the necessary (newly non-virtual) methods.
This allows WebAudioSourceProviderAVFObjC to register as an observer directly on
RealtimeMediaSource, to listen for audioSamplesAvailable() instead of process(), and remove
a lot of unnecessary conversion code and observer duplication.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/mediastream/RealtimeMediaSource.h:

(WebCore::RealtimeMediaSource::Observer::sourceStopped):
(WebCore::RealtimeMediaSource::Observer::sourceMutedChanged):
(WebCore::RealtimeMediaSource::Observer::sourceEnabledChanged):
(WebCore::RealtimeMediaSource::Observer::sourceSettingsChanged):
(WebCore::RealtimeMediaSource::Observer::preventSourceFromStopping):

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

(WebCore::AVAudioCaptureSource::shutdownCaptureSession):
(WebCore::AVAudioCaptureSource::captureOutputDidOutputSampleBufferFromConnection):
(WebCore::AVAudioCaptureSource::addObserver): Deleted.
(WebCore::AVAudioCaptureSource::removeObserver): Deleted.
(WebCore::AVAudioCaptureSource::start): Deleted.

  • platform/mediastream/mac/AudioCaptureSourceProviderObjC.h: Removed.
  • platform/mediastream/mac/AudioSourceObserverObjC.h: Removed.
  • platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.h:
  • platform/mediastream/mac/MockRealtimeAudioSourceMac.h:
  • platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:

(WebCore::MockRealtimeAudioSourceMac::emitSampleBuffers):
(WebCore::MockRealtimeAudioSourceMac::reconfigure):
(WebCore::MockRealtimeAudioSourceMac::audioSourceProvider):
(WebCore::MockRealtimeAudioSourceMac::addObserver): Deleted.
(WebCore::MockRealtimeAudioSourceMac::removeObserver): Deleted.
(WebCore::MockRealtimeAudioSourceMac::start): Deleted.

  • platform/mediastream/mac/RealtimeIncomingAudioSource.cpp:

(WebCore::RealtimeIncomingAudioSource::audioSourceProvider):
(WebCore::RealtimeIncomingAudioSource::addObserver): Deleted.
(WebCore::RealtimeIncomingAudioSource::removeObserver): Deleted.
(WebCore::RealtimeIncomingAudioSource::start): Deleted.

  • platform/mediastream/mac/RealtimeIncomingAudioSource.h:
  • platform/mediastream/mac/RealtimeOutgoingAudioSource.h:
  • platform/mediastream/mac/RealtimeOutgoingVideoSource.h:
  • platform/mediastream/mac/WebAudioSourceProviderAVFObjC.h:
  • platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm:

(WebCore::WebAudioSourceProviderAVFObjC::create):
(WebCore::WebAudioSourceProviderAVFObjC::WebAudioSourceProviderAVFObjC):
(WebCore::WebAudioSourceProviderAVFObjC::setClient):
(WebCore::WebAudioSourceProviderAVFObjC::audioSamplesAvailable):
(WebCore::WebAudioSourceProviderAVFObjC::process): Deleted.

1:32 PM Changeset in webkit [212571] by graouts@webkit.org
  • 5 edits in trunk

REGRESSION: Subtitles menu in media controls allows multiple items to be selected
https://bugs.webkit.org/show_bug.cgi?id=168168
<rdar://problem/30488605>

Reviewed by Dean Jackson.

Source/WebCore:

Ensure that only a single audio track and a single text track can be selected
in the tracks panel at any given point.

  • Modules/modern-media-controls/media/tracks-support.js:

(TracksSupport.prototype.tracksPanelSelectionDidChange):
(TracksSupport.prototype._sortedTrackList):
(TracksSupport):

LayoutTests:

Enhance the interactive track selection test to select a second track and check
that only a single track is selected at once.

  • media/modern-media-controls/tracks-support/tracks-support-click-track-in-panel-expected.txt:
  • media/modern-media-controls/tracks-support/tracks-support-click-track-in-panel.html:
1:30 PM Changeset in webkit [212570] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Timeline DataGridNodes are lacking detail in title
https://bugs.webkit.org/show_bug.cgi?id=168529
<rdar://problem/30579959>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-02-17
Reviewed by Brian Burg.

  • UserInterface/Views/TimelineDataGridNode.js:

(WebInspector.TimelineDataGridNode.prototype.displayName):
Include detailed information for DataGridNode display names, since we
want to show maximum detail for records in the DataGrid.

1:18 PM Changeset in webkit [212569] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Update TestExpectations for fast/css/appearance-apple-pay-button.html.

Unreviewed test gardening.

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

Invalidate WebAVSampleBufferStatusChangeListener when MediaPlayerPrivateMediaStreamAVFObjC is deallocated.
https://bugs.webkit.org/show_bug.cgi?id=168488

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-02-17
Reviewed by Jer Noble.

Fixes periodically crashing test: fast/mediastream/MediaStream-video-element-track-stop.html

WebAVSampleBufferStatusChangeListener has an unretained referecne to MediaPlayerPrivateMediaStreamAVFObjC
that must be invaldated when MediaPlayerPrivateMediaStreamAVFObjC is deallocated.

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

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::~MediaPlayerPrivateMediaStreamAVFObjC):

12:54 PM Changeset in webkit [212567] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603-branch/Source

Versioning.

12:54 PM Changeset in webkit [212566] by matthew_hanson@apple.com
  • 3 edits in branches/safari-603-branch/Source/JavaScriptCore

rdar://problem/30553220

12:38 PM Changeset in webkit [212565] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.1.30

Tag Safari-603.1.30.

12:37 PM Changeset in webkit [212564] by commit-queue@webkit.org
  • 16 edits
    1 copy
    1 add in trunk

[Modern Media Controls] Improve handling of live broadcast video
https://bugs.webkit.org/show_bug.cgi?id=168506
<rdar://problem/30432094>

Patch by Antoine Quint <Antoine Quint> on 2017-02-17
Reviewed by Dean Jackson.

Source/WebCore:

We improve the handling of live broadcast video by:

  • checking that we have a media source before deciding to show the controls bar and start button
  • support a mode where neither the status text nor the scrubber is visible in case we're still waiting on sufficient data to determine the video time and we haven't really started loading data yet
  • not showing time labels when we have an infinite duration
  • ensuring the status label is left-aligned

Test: media/modern-media-controls/status-label/status-label-text-align.html

  • Modules/modern-media-controls/controls/macos-inline-media-controls.js:

(MacOSInlineMediaControls.prototype.layout):

  • Modules/modern-media-controls/controls/status-label.css:

(.status-label):

  • Modules/modern-media-controls/controls/status-label.js:

(StatusLabel.prototype.get enabled):
(StatusLabel.prototype.set enabled):

  • Modules/modern-media-controls/media/controls-visibility-support.js:

(ControlsVisibilitySupport.prototype._updateControls):
(ControlsVisibilitySupport):

  • Modules/modern-media-controls/media/status-support.js:

(StatusSupport.prototype.syncControl):
(StatusSupport):

  • Modules/modern-media-controls/media/time-labels-support.js:

(TimeLabelsSupport.prototype.syncControl):
(TimeLabelsSupport):

LayoutTests:

Rebase existing tests to match new, correct behavior and add a new test to explicitly
check the text-align property on the status label.

  • media/modern-media-controls/controls-visibility-support/controls-visibility-support-controls-on-audio-expected.txt:
  • media/modern-media-controls/controls-visibility-support/controls-visibility-support-controls-on-audio.html:
  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-audio-background-expected.txt:
  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-audio-background.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-status-label-expected.txt:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-status-label.html:
  • media/modern-media-controls/status-label/status-label-font.html:
  • media/modern-media-controls/status-label/status-label-text-align-expected.txt: Added.
  • media/modern-media-controls/status-label/status-label-text-align.html: Added.
  • media/modern-media-controls/status-label/status-label-text-selection.html:
12:02 PM Changeset in webkit [212563] by andersca@apple.com
  • 3 edits
    5 adds in trunk/Source/WebCore

Begin overhauling the pasteboard implementation
https://bugs.webkit.org/show_bug.cgi?id=168525

Reviewed by Tim Horton.

Add a new PasteboardWriterData object. This object will hold data that is going
to be written to the pasteboard at some point. Currently it only supports plain text.

Also add a Mac-only PasteboardWriter class which can convert a PasteboardWriterDataObject
into an object that conforms to NSPasteboardWriting.

The basic idea is that instead of doing a bunch of pasteboard operations,
we'll just package all the pasteboard data up into an object and ship it over to WebKit.

This code is currently unused but will be adopted by a new drag implementation (in an upcoming patch).

  • WebCore.xcodeproj/project.pbxproj:
  • platform/PasteboardWriterData.cpp: Added.

(WebCore::PasteboardWriterData::PasteboardWriterData):
(WebCore::PasteboardWriterData::~PasteboardWriterData):
(WebCore::PasteboardWriterData::isEmpty):
(WebCore::PasteboardWriterData::setPlainText):

  • platform/PasteboardWriterData.h: Added.
  • platform/mac/PasteboardWriter.h: Added.
  • platform/mac/PasteboardWriter.mm: Added.

(WebCore::createPasteboardWriting):

  • platform/spi/mac/NSPasteboardSPI.h: Added.
11:34 AM Changeset in webkit [212562] by pvollan@apple.com
  • 25 edits
    8 adds in trunk

Apply SVG styles paint-order, stroke-linejoin, and stroke-linecap on DOM text.
https://bugs.webkit.org/show_bug.cgi?id=168044
Source/WebCore:

rdar://problem/30165746

Reviewed by Simon Fraser.

This patch moves these styles out of svg, and sets the properties on video cues.

Tests: fast/css/parsing-paint-order.html

fast/css/parsing-stroke-linecap.html
fast/css/parsing-stroke-linejoin.html
fast/css/parsing-stroke-width.html

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::paintOrder):
(WebCore::ComputedStyleExtractor::propertyValue):

  • css/CSSProperties.json:
  • css/SVGCSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::svgPropertyValue):
(WebCore::paintOrder): Deleted.

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::isValidCueStyleProperty):

  • page/CaptionUserPreferencesMediaAF.cpp:

(WebCore::CaptionUserPreferencesMediaAF::cssPropertyWithTextEdgeColor):

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::diff):
(WebCore::RenderStyle::paintTypesForPaintOrder):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::setPaintOrder):
(WebCore::RenderStyle::paintOrder):
(WebCore::RenderStyle::initialPaintOrder):
(WebCore::RenderStyle::setCapStyle):
(WebCore::RenderStyle::capStyle):
(WebCore::RenderStyle::initialCapStyle):
(WebCore::RenderStyle::setJoinStyle):
(WebCore::RenderStyle::joinStyle):
(WebCore::RenderStyle::initialJoinStyle):
(WebCore::RenderStyle::strokeWidth):
(WebCore::RenderStyle::setStrokeWidth):
(WebCore::RenderStyle::hasVisibleStroke):
(WebCore::RenderStyle::setStrokeOpacity):

  • rendering/style/SVGRenderStyle.cpp:

(WebCore::SVGRenderStyle::diff):
(WebCore::SVGRenderStyle::paintTypesForPaintOrder): Deleted.

  • rendering/style/SVGRenderStyle.h:

(WebCore::SVGRenderStyle::initialBufferedRendering):
(WebCore::SVGRenderStyle::initialFillRule):
(WebCore::SVGRenderStyle::initialMaskType):
(WebCore::SVGRenderStyle::setBufferedRendering):
(WebCore::SVGRenderStyle::setFillRule):
(WebCore::SVGRenderStyle::setMaskType):
(WebCore::SVGRenderStyle::bufferedRendering):
(WebCore::SVGRenderStyle::fillRule):
(WebCore::SVGRenderStyle::strokeMiterLimit):
(WebCore::SVGRenderStyle::maskType):
(WebCore::SVGRenderStyle::hasStroke):
(WebCore::SVGRenderStyle::setBitDefaults):
(WebCore::SVGRenderStyle::InheritedFlags::operator==):
(WebCore::SVGRenderStyle::initialCapStyle): Deleted.
(WebCore::SVGRenderStyle::initialJoinStyle): Deleted.
(WebCore::SVGRenderStyle::initialPaintOrder): Deleted.
(WebCore::SVGRenderStyle::setCapStyle): Deleted.
(WebCore::SVGRenderStyle::setJoinStyle): Deleted.
(WebCore::SVGRenderStyle::setPaintOrder): Deleted.
(WebCore::SVGRenderStyle::capStyle): Deleted.
(WebCore::SVGRenderStyle::joinStyle): Deleted.
(WebCore::SVGRenderStyle::strokeWidth): Deleted.
(WebCore::SVGRenderStyle::paintOrder): Deleted.
(WebCore::SVGRenderStyle::hasVisibleStroke): Deleted.
(WebCore::SVGRenderStyle::setStrokeWidth): Deleted.

  • rendering/style/SVGRenderStyleDefs.cpp:

(WebCore::StyleStrokeData::StyleStrokeData):
(WebCore::StyleStrokeData::operator==):

  • rendering/style/SVGRenderStyleDefs.h:
  • rendering/style/StyleRareInheritedData.cpp:

(WebCore::StyleRareInheritedData::StyleRareInheritedData):
(WebCore::StyleRareInheritedData::operator==):

  • rendering/style/StyleRareInheritedData.h:
  • rendering/svg/RenderSVGEllipse.cpp:

(WebCore::RenderSVGEllipse::strokeShape):

  • rendering/svg/RenderSVGPath.cpp:

(WebCore::RenderSVGPath::strokeShape):
(WebCore::RenderSVGPath::shapeDependentStrokeContains):
(WebCore::RenderSVGPath::shouldStrokeZeroLengthSubpath):
(WebCore::RenderSVGPath::zeroLengthLinecapPath):

  • rendering/svg/RenderSVGRect.cpp:

(WebCore::RenderSVGRect::strokeShape):

  • rendering/svg/RenderSVGShape.cpp:

(WebCore::RenderSVGShape::strokeShape):
(WebCore::RenderSVGShape::fillStrokeMarkers):
(WebCore::RenderSVGShape::strokeWidth):
(WebCore::RenderSVGShape::hasSmoothStroke):

  • rendering/svg/RenderSVGText.cpp:

(WebCore::RenderSVGText::strokeBoundingBox):

  • rendering/svg/SVGInlineTextBox.cpp:

(WebCore::SVGInlineTextBox::paint):
(WebCore::SVGInlineTextBox::paintDecoration):

  • rendering/svg/SVGRenderSupport.cpp:

(WebCore::SVGRenderSupport::applyStrokeStyleToContext):

  • rendering/svg/SVGRenderTreeAsText.cpp:

(WebCore::writeStyle):

LayoutTests:

Reviewed by Simon Fraser.

  • fast/css/parsing-paint-order-expected.txt: Added.
  • fast/css/parsing-paint-order.html: Added.
  • fast/css/parsing-stroke-linecap-expected.txt: Added.
  • fast/css/parsing-stroke-linecap.html: Added.
  • fast/css/parsing-stroke-linejoin-expected.txt: Added.
  • fast/css/parsing-stroke-linejoin.html: Added.
  • fast/css/parsing-stroke-width-expected.txt: Added.
  • fast/css/parsing-stroke-width.html: Added.
  • media/track/track-css-stroke-cues-expected.txt:
  • media/track/track-css-stroke-cues.html:
11:13 AM Changeset in webkit [212561] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[SOUP] Handle Settings::allowsAnySSLCertificate() in SSL sockets
https://bugs.webkit.org/show_bug.cgi?id=168521

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2017-02-17
Reviewed by Michael Catanzaro.

When Settings::allowsAnySSLCertificate() is enabled, connect to accept-certificate signal of the GTlsConnection
to always accept the certificates.

Fixes: http/tests/websocket/tests/hybi/simple-wss.html

  • platform/network/soup/SocketStreamHandleImplSoup.cpp:

(WebCore::wssConnectionAcceptCertificateCallback):
(WebCore::wssSocketClientEventCallback):
(WebCore::SocketStreamHandleImpl::create):

11:13 AM Changeset in webkit [212560] by achristensen@apple.com
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

Fix iOS ASAN build after r212401
https://bugs.webkit.org/show_bug.cgi?id=168398

  • libwebrtc.xcodeproj/project.pbxproj:

libwebrtc.dylib needs some symbols from CFNetwork,
like CFNetworkCopySystemProxySettings

11:11 AM Changeset in webkit [212559] by Simon Fraser
  • 10 edits
    3 copies
    1 add in trunk

Fixed elements bounce when rubber-banding at the bottom of the page
https://bugs.webkit.org/show_bug.cgi?id=168493
rdar://problem/30567713

Reviewed by Tim Horton.

Source/WebCore:

FrameView::visibleDocumentRect() was computing a bad visible rect when bottom-rubber-banding,
by adding rubberBandBottom which is negative, rather than subtracting.

Log some more scrolling stuff.

Ironically, the existing test didn't test stick-to-viewport fixed position because
backgroundShouldExtendBeyondPage() is off by default in WTR, so clone it to a test
that sets this, to test both behaviors.

This also revealed that dynamic changes to backgroundShouldExtendBeyondPage() need
to be propagated to the scrolling tree, which is fixed in AsyncScrollingCoordinator::frameViewLayoutUpdated().

Test: fast/visual-viewport/rubberbanding-viewport-rects-extended-background.html

  • page/FrameView.cpp:

(WebCore::FrameView::updateLayoutViewport):
(WebCore::FrameView::visibleDocumentRect):

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::frameViewLayoutUpdated):

  • page/scrolling/ScrollingStateFrameScrollingNode.cpp:

(WebCore::ScrollingStateFrameScrollingNode::dumpProperties):

  • page/scrolling/ScrollingTreeFrameScrollingNode.cpp:

(WebCore::ScrollingTreeFrameScrollingNode::layoutViewportForScrollPosition):

  • page/scrolling/mac/ScrollingCoordinatorMac.mm:

(WebCore::ScrollingCoordinatorMac::scheduleTreeStateCommit):
(WebCore::ScrollingCoordinatorMac::commitTreeState):

LayoutTests:

  • fast/visual-viewport/rubberbanding-viewport-rects-expected.txt:
  • fast/visual-viewport/rubberbanding-viewport-rects-extended-background-expected.txt: Copied from LayoutTests/fast/visual-viewport/rubberbanding-viewport-rects-expected.txt.
  • fast/visual-viewport/rubberbanding-viewport-rects-extended-background.html: Copied from LayoutTests/fast/visual-viewport/rubberbanding-viewport-rects.html.
  • fast/visual-viewport/rubberbanding-viewport-rects.html:
  • platform/ios-simulator-wk2/fast/visual-viewport/rubberbanding-viewport-rects-expected.txt:
  • platform/ios-simulator-wk2/fast/visual-viewport/rubberbanding-viewport-rects-extended-background-expected.txt: Copied from LayoutTests/platform/ios-simulator-wk2/fast/visual-viewport/rubberbanding-viewport-rects-expected.txt.
  • platform/mac-wk1/fast/visual-viewport/rubberbanding-viewport-rects-extended-background-expected.txt: Added.
11:11 AM Changeset in webkit [212558] by Simon Fraser
  • 5 edits
    2 adds in trunk

REGRESSION (209396): Apple Pay buttons do not render
https://bugs.webkit.org/show_bug.cgi?id=168523
rdar://problem/30451563

Reviewed by Geoffrey Garen.
Source/WebCore:

The new CSS parser mistakenly converted -apple-pay-button values to
-webkit-pay-button, breaking -webkit-appearance: -apple-pay-button.

Fix by excluding "-apple-pay" prefixed values from the conversion.

Test: fast/css/appearance-apple-pay-button.html

  • css/parser/CSSPropertyParser.cpp:

(WebCore::isAppleLegacyCssValueKeyword):

LayoutTests:

Ref test that masks out the middle and corners of the buttons.

  • fast/css/appearance-apple-pay-button-expected.html: Added.
  • fast/css/appearance-apple-pay-button.html: Added.
11:10 AM Changeset in webkit [212557] by Michael Catanzaro
  • 36 edits
    1 delete in trunk/Source/WebKit2

Remove EFL from WebKit2
https://bugs.webkit.org/show_bug.cgi?id=168511

Reviewed by Alex Christensen.

  • Platform/IPC/unix/ConnectionUnix.cpp:

(IPC::Connection::platformInvalidate):
(IPC::Connection::open):

  • Platform/Module.h:
  • PlatformEfl.cmake: Removed.
  • PluginProcess/unix/PluginProcessMainUnix.cpp:
  • Shared/API/APIObject.h:
  • Shared/API/c/WKBase.h:
  • Shared/API/c/WKSharedAPICast.h:

(WebKit::toAPI):
(WebKit::toImpl):

  • Shared/NativeWebKeyboardEvent.h:

(WebKit::NativeWebKeyboardEvent::isFakeEventForComposition):
(WebKit::NativeWebKeyboardEvent::isFiltered): Deleted.

  • Shared/NativeWebMouseEvent.h:

(WebKit::NativeWebMouseEvent::nativeEvent):
(WebKit::NativeWebMouseEvent::NativeWebMouseEvent): Deleted.

  • Shared/NativeWebTouchEvent.h:

(WebKit::NativeWebTouchEvent::nativeEvent):

  • Shared/NativeWebWheelEvent.h:

(WebKit::NativeWebWheelEvent::nativeEvent):

  • Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp:

(WebKit::NetscapePluginModule::determineQuirks):

  • Shared/WebPreferencesDefinitions.h:
  • UIProcess/API/APIWebsiteDataStore.cpp:
  • UIProcess/API/C/WKAPICast.h:
  • UIProcess/API/C/WKTextChecker.cpp:
  • UIProcess/API/C/WKTextChecker.h:
  • UIProcess/ChildProcessProxy.cpp:

(WebKit::ChildProcessProxy::getLaunchOptions):

  • UIProcess/CoordinatedGraphics/PageViewportController.cpp:

(WebKit::PageViewportController::pixelAlignedFloatPoint):

  • UIProcess/InspectorServer/WebInspectorServer.h:
  • UIProcess/Launcher/ProcessLauncher.h:
  • UIProcess/Network/CustomProtocols/soup/CustomProtocolManagerProxySoup.cpp:
  • UIProcess/PageClient.h:
  • UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:

(WebKit::PluginProcessProxy::scanPlugin):

  • UIProcess/WebInspectorProxy.h:
  • UIProcess/WebPageProxy.h:
  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/InjectedBundle/InjectedBundle.h:
  • WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:

(WebKit::getPluginDisplay):
(WebKit::x11Screen):
(WebKit::displayDepth):
(WebKit::rootWindowID):
(WebKit::NetscapePluginX11::paint):

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::selectItemWritingDirectionIsNatural):
(WebKit::WebChromeClient::pageExtendedBackgroundColorDidChange):

  • WebProcess/WebCoreSupport/WebEditorClient.cpp:

(WebKit::WebEditorClient::shouldEraseMarkersAfterChangeSelection):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::saveViewStateToItem):
(WebKit::WebFrameLoaderClient::restoreViewState):
(WebKit::WebFrameLoaderClient::dispatchDidClearWindowObjectInWorld):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::WebPage):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • config.h:
11:00 AM Changeset in webkit [212556] by commit-queue@webkit.org
  • 15 edits in trunk/Source/WebCore

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

Some crashes with GuardMalloc (Requested by anttik on
#webkit).

Reverted changeset:

"Execute pending scripts asynchronously after stylesheet loads
complete"
https://bugs.webkit.org/show_bug.cgi?id=168367
http://trac.webkit.org/changeset/212463

10:48 AM Changeset in webkit [212555] by beidson@apple.com
  • 10 edits
    1 copy
    1 move
    1 add in trunk/Source

Stop backing up localStorage databases to iCloud by default.
<rdar://problem/29045531> and https://bugs.webkit.org/show_bug.cgi?id=168388

Reviewed by Geoffrey Garen.

Source/WebKit:

  • WebKit.xcodeproj/project.pbxproj:

Source/WebKit/mac:

  • Misc/WebKitVersionChecks.h:
  • Misc/WebKitVersionChecks.mm: Renamed from Source/WebKit/mac/Misc/WebKitVersionChecks.m.

(WebKitLinkedOnOrAfter):
(setWebKitLinkTimeVersion):
(WebKitLinkTimeVersion):
(linkedOnOrAfter):

  • Storage/WebStorageManager.mm:

(WebKitInitializeStorageIfNecessary):

Source/WebKit2:

  • UIProcess/Cocoa/VersionChecks.h:
  • UIProcess/Storage/LocalStorageDatabaseTracker.cpp:

(WebKit::LocalStorageDatabaseTracker::databasePath):

  • UIProcess/Storage/LocalStorageDatabaseTracker.h:
  • UIProcess/Storage/ios/LocalStorageDatabaseTrackerIOS.mm: Copied from Source/WebKit2/UIProcess/Cocoa/VersionChecks.h.

(WebKit::LocalStorageDatabaseTracker::platformExcludeFromBackup):

  • WebKit2.xcodeproj/project.pbxproj:
10:41 AM Changeset in webkit [212554] by Brent Fulgham
  • 4 edits in trunk/Source/WebCore

RenderView needs to be updated when FrameView changes
https://bugs.webkit.org/show_bug.cgi?id=168481
<rdar://problem/30339638>

Reviewed by Andreas Kling.

The state of the Document's RenderView can get out of sync with the Frame's FrameView.
We need a notification mechanism so that modifications to the Frame's view are properly
relayed to Document so that it can have a correct RenderView.

  • dom/Document.cpp:

(WebCore::Document::didBecomeCurrentDocumentInView): Create an updated render tree (if
one does not already exist).
(WebCore::Document::destroyRenderTree): Remove an incorrect ASSERT. We may enter this
code when the Frame uses 'setView(nullptr)', which happens during certain updates.

  • dom/Document.h:
  • page/Frame.cpp:

(WebCore::Frame::setView): Destroy the old render tree (if present) before switching to
the new view. Then notify the document that it is now the current document in the new view.

10:05 AM Changeset in webkit [212553] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Rebaseline test for ios-simulator-wk2 after r212522.

Unreviewed test gardening.

  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-label-element/labelable-elements-expected.txt:
9:09 AM Changeset in webkit [212552] by aakash_jain@apple.com
  • 6 edits in trunk/Tools

Fix tools that were broken by Efl removal
https://bugs.webkit.org/show_bug.cgi?id=168496

Reviewed by Alexey Proskuryakov.

  • QueueStatusServer/config/queues.py:
  • Scripts/webkitpy/common/config/ews.json:
  • TestResultServer/static-dashboards/builders.jsonp:
  • TestResultServer/static-dashboards/flakiness_dashboard.js:
  • TestResultServer/static-dashboards/loader_unittests.js:
8:25 AM Changeset in webkit [212551] by Lucas Forschler
  • 4 edits in trunk/Tools

https://bugs.webkit.org/show_bug.cgi?id=168442
Move the SVN checkout from http -> https.
Update unit tests.

Reviewed by Alexey Proskuryakov.

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

(CheckOutSource.init):

  • BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py:

(SVNMirrorTest.get_SVNMirrorFromConfig):

  • BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout_unittests.js:
7:14 AM Changeset in webkit [212550] by Michael Catanzaro
  • 2 edits
    2 deletes in trunk

Remove EFL from Source/cmake
https://bugs.webkit.org/show_bug.cgi?id=168512

Reviewed by Carlos Garcia Campos.

  • Source/cmake/OptionsEfl.cmake: Removed.
  • Source/cmake/WebKitPackaging.cmake:
  • Source/cmake/eflsymbols.filter: Removed.
6:50 AM Changeset in webkit [212549] by eocanha@igalia.com
  • 2 edits in trunk/Source/WebCore

[GStreamer] Fast replay on video hide/unhide on platforms with limited video buffer pools
https://bugs.webkit.org/show_bug.cgi?id=168505

Reviewed by Žan Doberšek.

The WebKit code isn't consuming the video samples when the video layer is hidden,
so the buffers aren't being returned to the pool and starve the decoder when the
buffer pool runs out of buffers (on platforms using a buffer pool and a custom
allocator, such as OMX on the Raspberry Pi 2). When the video layer is restored,
the pipeline tries to catch up and the user sees the video "going fast forward".

The added code "consumes" (removes and unrefs) the buffer in that case. However,
the sample isn't completely removed because it still holds important info (eg:
caps) needed for the proper operation of the video element.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor):

6:46 AM Changeset in webkit [212548] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

[SOUP] Stop removing the fragment identifier from resource requests
https://bugs.webkit.org/show_bug.cgi?id=168509

Reviewed by Sergio Villar Senin.

I don't know why, but have always removed the fragment identifier from the URL when creating the SoupURI that
is passed to libsoup. Maybe it was a bug in a very old version of libsoup, but it doesn't look necessary anymore
and it's causing several layout test failures.

Fixes: http/tests/svg/svg-use-external.html

imported/w3c/web-platform-tests/html/webappapis/scripting/processing-model-2/compile-error-same-origin-with-hash.html
imported/w3c/web-platform-tests/html/webappapis/scripting/processing-model-2/runtime-error-same-origin-with-hash.html

  • platform/network/soup/ResourceRequestSoup.cpp:

(WebCore::ResourceRequest::createSoupURI): Do not remove the fragment identifier from the URL.

6:44 AM Changeset in webkit [212547] by jfernandez@igalia.com
  • 2 edits
    2 copies
    6 adds in trunk/LayoutTests

[GTK] Unreviewed test gardening
https://bugs.webkit.org/show_bug.cgi?id=168473

Unreviewed GTK+ test gardening.

  • rebaseline imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location_hash.html test.
  • web-platform-tests/html/browsers/history/the-location-interface/location_hash-expected.txt:
6:17 AM Changeset in webkit [212546] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

Test media/modern-media-controls/time-label/time-label-white-space-nowrap.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=168507

Unreviewed test gardening.

Patch by Antoine Quint <Antoine Quint> on 2017-02-17

  • media/modern-media-controls/time-label/time-label-white-space-nowrap-expected.txt:
  • media/modern-media-controls/time-label/time-label-white-space-nowrap.html:
6:03 AM Changeset in webkit [212545] by Carlos Garcia Campos
  • 2 edits in trunk/LayoutTests

Unreviewed GTK+ gardening. Remove duplicated entries from TestExpectations.

  • platform/gtk/TestExpectations:
4:47 AM Changeset in webkit [212544] by jfernandez@igalia.com
  • 3 edits in trunk/LayoutTests

[GTK] Unreviewed test gardening
https://bugs.webkit.org/show_bug.cgi?id=168504

Unreviewed GTK+ test gardening.

  • imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/async_007.htm test marked as Slow.
  • http/tests/security/bypassing-cors-checks-for-extension-urls.html skipped (bug 168466)
  • rebaseline http/tests/security/contentSecurityPolicy/1.1/securitypolicyviolation-basics.html test (matching Mac expectations - bug 167252)
  • platform/gtk/TestExpectations:
  • platform/gtk/http/tests/security/contentSecurityPolicy/1.1/securitypolicyviolation-basics-expected.txt:
3:00 AM Changeset in webkit [212543] by Carlos Garcia Campos
  • 2 edits in trunk/LayoutTests

Unreviewed GTK+ gardening. Update expectations of several tests.

  • platform/gtk/TestExpectations:
1:15 AM Changeset in webkit [212542] by rniwa@webkit.org
  • 7 edits
    1 add in trunk/Websites/perf.webkit.org

Add tests for the time series chart and fix bugs I found along the way
https://bugs.webkit.org/show_bug.cgi?id=168499

Reviewed by Antti Koivisto.

Add basic tests for the time series chart.

Replaced the "ondata" callback set in the options by "dataChange" action now that ComponentBase provides
a facility for defining event-like actions.

Also fixed bugs I encountered while writing these tests see below for descriptions.

  • browser-tests/editable-text-tests.js:

(waitToRender): Moved to index.html

  • browser-tests/index.html:

(waitToRender): Moved from editable-text-tests.js.
(wait): Added.

  • browser-tests/time-series-chart-tests.js: Added.
  • public/v3/components/chart-pane-base.js:

(ChartPaneBase.prototype.configure):

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

(TimeSeriesChart): Removed the code to set display and position inline properties. This is now done inside
cssTemplate with :host pseudo class.
(TimeSeriesChart.prototype._ensureCanvas): Don't strech the canvas to 100% of width and height. This was
causing a flush of contents where the canvas is momentarily streched by the browser and the script later
updates with the content with the correct aspect ratio.
(TimeSeriesChart.cssTemplate): Added :host rule to set display: block and position: relative.
(TimeSeriesChart._updateAllCharts): Deleted.
(TimeSeriesChart.prototype.render): Only run the code for axis when options.axis is defined. Also, avoid
setting the fill style because we never fill for axis drawing.
(TimeSeriesChart.prototype._computeHorizontalRenderingMetrics): Ditto. Fallback to sensible values when
options.axis is not defined.
(TimeSeriesChart.prototype._renderYAxis): Now computeValueGrid generates a sequence of {time, label}.
(TimeSeriesChart.prototype._renderTimeSeries): Don't draw the shades for confidence intervals unless its
fill style is defined. Otherwise, we'd end up drawing black shade and mask the actual data points.
(TimeSeriesChart.prototype._ensureSampledTimeSeries): Dispatch newly added "dataChange" action instead of
calling "ondata" callback in options dictionary.
(TimeSeriesChart.computeTimeGrid): Modernized to use const/let. Also fixed the bug that we were emitting
the date even when the entire time range fit within a 24-hour interval.
(TimeSeriesChart.computeValueGrid): Rewritten to make MB/GB use a nice round number instead of 0.98GB.
We were using a power of 10 to round up the stepping value but the value formatter used a power of 1024
to divide byte measurements (e.g. for memory). Use formatter.divisor to find the right scaling factor for
each kind.

  • public/v3/models/metric.js:

(Metric.prototype.makeFormatter):
(Metric.makeFormatter): Extracted from the one on the prototype so that tests don't need a metric object
just to test TimeSeriesChart. Added the second argument which specifies the maximum absolute value of the
range we're formatting. This is needed to use the same number of decimal points when the most significant
digit of some value is smaller than that of the biggest one. For example, we were emitting 0.50GB instead
of 0.5G along with 2.0GB. The "adjustment" reduces the number of significant figures in these cases.

  • public/v3/pages/dashboard-page.js:

(DashboardPage.prototype._createChartForCell):

1:13 AM Changeset in webkit [212541] by zandobersek@gmail.com
  • 5 edits in trunk/Source/JavaScriptCore

[GLib] GCActivityCallback::scheduleTimer() keeps pushing dispatch into the future
https://bugs.webkit.org/show_bug.cgi?id=168363

Reviewed by Carlos Garcia Campos.

Mimic the USE(CF) implementation of GCActivityCallback and HeapTimer by
scheduling the timer a decade into the future instead of completely
cancelling it. That way new dispatch times for GCActivityCallback can be
computed by simply deducting the difference in the new and previous
delay from the GSource's current dispatch time. Previously we handled an
extra 'paused' state (where m_delay was -1) and allowed for a delay of
an infinite value to be valid, complicating the next dispatch time
computation.

HeapTimer gains the static s_decade variable. The dispatch function in
heapTimerSourceFunctions only dispatches the callback, which now delays
the GSource by a decade. HeapTimer::scheduleTimer() simply schedules the
source to dispatch in the specified amount of time, and cancelTimer()
'cancels' the source by setting the dispatch time to a decade.

GCActivityCallback constructor initializes the delay to the s_decade
value and immediately sets the ready time for GSource a decade into the
future, avoiding the default -1 value as the ready time that would cause
problems in scheduleTimer(). scheduleTimer() doesn't special-case the
zero-delay value anymore, instead it just computes the difference
between the old and the new delay and rolls back the GSource's ready
time for that amount. cancelTimer() sets m_delay to the decade value and
delays the GSource for that same amount.

  • heap/GCActivityCallback.cpp:

(JSC::GCActivityCallback::GCActivityCallback):
(JSC::GCActivityCallback::scheduleTimer):
(JSC::GCActivityCallback::cancelTimer):

  • heap/GCActivityCallback.h:
  • heap/HeapTimer.cpp:

(JSC::HeapTimer::HeapTimer):
(JSC::HeapTimer::scheduleTimer):
(JSC::HeapTimer::cancelTimer):

  • heap/HeapTimer.h:
Note: See TracTimeline for information about the timeline view.