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

Timeline



Aug 21, 2017:

11:31 PM Changeset in webkit [221005] by zandobersek@gmail.com
  • 9 edits in trunk/Source/WebKit

[WK] Add missing ENABLE(NETWORK_CACHE) build guards
https://bugs.webkit.org/show_bug.cgi?id=175769

Reviewed by Carlos Alberto Lopez Perez.

Given that the build guard exists, it should be possible to
compile the WebKit layer with the feature disabled. Missing
guards are added in order to achieve that.

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

(WebKit::NetworkResourceLoader::NetworkResourceLoader):

  • NetworkProcess/soup/NetworkProcessSoup.cpp:

(WebKit::NetworkProcess::platformInitializeNetworkProcess):
(WebKit::NetworkProcess::clearDiskCache):

  • UIProcess/soup/WebProcessPoolSoup.cpp:

(WebKit::WebProcessPool::platformInitializeNetworkProcess):

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::storeDerivedDataToCache):

10:54 PM Changeset in webkit [221004] by jmarcell@apple.com
  • 2 edits in branches/safari-604-branch/Source/WebCore

Cherry-pick r220940. rdar://problem/33994308

9:57 PM Changeset in webkit [221003] by mark.lam@apple.com
  • 2 edits in trunk/Source/WTF

[Follow up]: Add back the ability to disable MASM_PROBE from the build.
https://bugs.webkit.org/show_bug.cgi?id=175656
<rdar://problem/33933720>

Not reviewed.

Fixed a typo: should be "OS(WINDOWS)", not "OS(WINDOW)".

  • wtf/Platform.h:
9:41 PM Changeset in webkit [221002] by mark.lam@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

Change probe code to use static_assert instead of COMPILE_ASSERT.
https://bugs.webkit.org/show_bug.cgi?id=175762

Reviewed by JF Bastien.

  • assembler/MacroAssemblerARM.cpp:
  • assembler/MacroAssemblerARM64.cpp:

(JSC::MacroAssembler::probe): Deleted.

  • assembler/MacroAssemblerARMv7.cpp:
  • assembler/MacroAssemblerX86Common.cpp:
9:12 PM Changeset in webkit [221001] by rniwa@webkit.org
  • 1 edit
    1 copy in trunk/Websites/browserbench.org

Merge the latest version of Speedometer 2.0 to browserbench.org

Rubber-stamped by Joseph Pecoraro.

  • Speedometer2.0: Replaced with PerformanceTests/Speedometer.
  • Speedometer2.0/resources/benchmark-runner.js:
  • Speedometer2.0/resources/todomvc/architecture-examples/angular/dist/inline.b342d102ba4a53bf2002.bundle.js: Removed.
  • Speedometer2.0/resources/todomvc/architecture-examples/angular/dist/main.779eb2f1ddbe23ac61c7.bundle.js: Removed.
  • Speedometer2.0/resources/todomvc/architecture-examples/angular/dist/polyfills.2d45a4c73c85e24fe474.bundle.js: Removed.
  • Speedometer2.0/resources/todomvc/architecture-examples/angular/dist/vendor.b4be818cb6d8028f9192.bundle.js: Removed.
  • Speedometer2.0/resources/todomvc/architecture-examples/angular/e2e: Removed.
  • Speedometer2.0/resources/todomvc/architecture-examples/angular/e2e/app.e2e-spec.ts: Removed.
  • Speedometer2.0/resources/todomvc/architecture-examples/angular/e2e/app.po.ts: Removed.
  • Speedometer2.0/resources/todomvc/architecture-examples/angular/e2e/tsconfig.e2e.json: Removed.
  • Speedometer2.0/resources/todomvc/architecture-examples/angularjs/node_modules/angular-resource/angular-resource.js:
  • Speedometer2.0/resources/todomvc/architecture-examples/angularjs/node_modules/angular-route/angular-route.js:
  • Speedometer2.0/resources/todomvc/architecture-examples/angularjs/node_modules/angular/angular.js:
  • Speedometer2.0/resources/todomvc/architecture-examples/backbone/node_modules/jquery/dist/jquery.js:
  • Speedometer2.0/resources/todomvc/architecture-examples/backbone/node_modules/todomvc-app-css/index.css:
  • Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/app/instance-initializers: Removed.
  • Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/app/instance-initializers/global.js: Removed.
  • Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/config/environment.js:
  • Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/tests/.jshintrc: Removed.
  • Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/tests/helpers/module-for-acceptance.js:
  • Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/tests/helpers/start-app.js:
  • Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/static/css/main.d43d2909.css: Removed.
  • Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/static/js/main.946269ff.js: Removed.
  • Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/dist/static/css/app.677b45842d9f8b96e5b23c18969233b7.css: Removed.
  • Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/app.b0e835874bc8949670d1.js: Removed.
  • Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/manifest.84b2b4fceb74ab1f91f3.js: Removed.
  • Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/vendor.a52517c5aa98e7fbea2e.js: Removed.
  • Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.app.73bcc5d3c1d07180f0e3.js: Removed.
  • Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.app.73bcc5d3c1d07180f0e3.js.map: Removed.
  • Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.manifest.112bf70a7f3deebf1f93.js: Removed.
  • Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.manifest.112bf70a7f3deebf1f93.js.map: Removed.
  • Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.vendor.efaa3e0e20077c8e7471.js: Removed.
  • Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.vendor.efaa3e0e20077c8e7471.js.map: Removed.
  • Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.app.73bcc5d3c1d07180f0e3.css: Removed.
  • Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.app.73bcc5d3c1d07180f0e3.css.map: Removed.
  • Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.vendor.efaa3e0e20077c8e7471.css: Removed.
  • Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.vendor.efaa3e0e20077c8e7471.css.map: Removed.
  • Speedometer2.0/resources/todomvc/vanilla-examples/vanillajs/js/store.js:
8:19 PM Changeset in webkit [221000] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Make generate_offset_extractor.rb architectures argument more robust
https://bugs.webkit.org/show_bug.cgi?id=175809

Reviewed by Joseph Pecoraro.

It turns out that some of our builders pass their architectures as
space separated lists. I decided to just make the splitting of
our list robust to any reasonable combination of spaces and
commas.

  • offlineasm/generate_offset_extractor.rb:
7:25 PM Changeset in webkit [220999] by commit-queue@webkit.org
  • 2 edits in trunk/Websites/webkit.org

Add Sony to domain affiliations on team page
https://bugs.webkit.org/show_bug.cgi?id=175806

Patch by Ross Kirsling <Ross Kirsling> on 2017-08-21
Reviewed by Alex Christensen.

  • wp-content/themes/webkit/team.php:
7:03 PM Changeset in webkit [220998] by commit-queue@webkit.org
  • 9 edits in trunk

[Cache API] Add support for Cache.add/addAll
https://bugs.webkit.org/show_bug.cgi?id=175677

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

LayoutTests/imported/w3c:

  • web-platform-tests/service-workers/cache-storage/window/cache-add.https-expected.txt:
  • web-platform-tests/service-workers/cache-storage/window/cache-storage.https-expected.txt:
  • web-platform-tests/service-workers/cache-storage/worker/cache-add.https-expected.txt:
  • web-platform-tests/service-workers/cache-storage/worker/cache-storage.https-expected.txt:

Source/WebCore:

Covered by rebased tests.

Cache.addAll implementation is then as follow:

  • Fetch the resources in parallel.
  • Wait for all them to complete using FetchTaskCounter.
  • If an error happens in any load or if the response is not as expected for Cache API, reject the promise.
  • Call the batch put operation with all received FetchResponse objects.

FetchTaskCounter is responsible to wait for each response to arrive.
It then checks whether the response is fine,
If not, the addAll promise is rejected.
Otherwise, it waits for the body to be received.

Introducing a helper routine to create a FetchRequest from a given RequestInfo.
Introducing a helper routine to check for Vary Header '*' value in response headers.

  • Modules/cache/Cache.cpp:

(WebCore::Cache::doMatch):
(WebCore::Cache::add):
(WebCore::queryCacheMatch):
(WebCore::hasResponseVaryStarHeaderValue):
(WebCore::FetchTaskCounter::FetchTaskCounter):
(WebCore::FetchTaskCounter::~FetchTaskCounter):
(WebCore::FetchTaskCounter::addRecord):
(WebCore::FetchTaskCounter::isDone const):
(WebCore::FetchTaskCounter::reject):
(WebCore::Cache::requestFromInfo):
(WebCore::Cache::addAll):
(WebCore::Cache::put):
(WebCore::Cache::remove):
(WebCore::Cache::keys):
(WebCore::toConnectionRecord):
(WebCore::Cache::batchPutOperation):

  • Modules/cache/Cache.h:
6:50 PM Changeset in webkit [220997] by mmaxfield@apple.com
  • 5 edits in trunk

DataInteractionTests.ExternalSourceAttributedStringToContentEditable hits a debug assertion
https://bugs.webkit.org/show_bug.cgi?id=175787
<rdar://problem/33996612>

Reviewed by Wenson Hsieh.

Source/WebCore:

The variation axis values of San Francisco changed from the GX-style scale to the CSS-style
scale. Previously, we were normalizing the values we got from Core Text to fit the CSS scale;
however, this is no longer necessary since the font now does this itself.

The assertion was getting hit because the normalized values were huge and were overflowing
a single FontSelectionValue (and going negative). This patch adds handling for this
situation.

Test: DataInteractionTests.ExternalSourceBoldSystemAttributedStringToContentEditable

  • platform/graphics/FontSelectionAlgorithm.h: Typedef the backing type for a FontSelectionValue.

(WebCore::FontSelectionValue::rawValue const):
(WebCore::FontSelectionValue::maximumValue):
(WebCore::FontSelectionValue::minimumValue):
(WebCore::FontSelectionValue::FontSelectionValue):

  • platform/graphics/cocoa/FontCacheCoreText.cpp: Opt-out of normalization for San Francisco.

(WebCore::variationCapabilitiesForFontDescriptor):
(WebCore::capabilitiesForFontDescriptor):

Tools:

  • TestWebKitAPI/Tests/ios/DataInteractionTests.mm:

(TestWebKitAPI::TEST):

6:32 PM Changeset in webkit [220996] by Chris Dumez
  • 16 edits
    7 adds in trunk

[Beacon] Content extensions should be able to intercept Beacon / Ping redirects
https://bugs.webkit.org/show_bug.cgi?id=175746
<rdar://problem/33946050>

Reviewed by Alex Christensen.

Source/WebCore:

Update PingLoad to process content extension rules upon redirect. This allows content
extensions to block and upgrade to HTTPS beacon / ping loads.

Because ping loads can outlive the WebProcess, the content extensions rules are passed
to the NetworkProcess when starting the Ping load. The PingLoad can then consult those
rules upon redirect, on the NetworkProcess side.

Tests: http/wpt/beacon/contentextensions/beacon-blocked.html

http/wpt/beacon/contentextensions/beacon-redirect-blocked.html

  • contentextensions/ContentExtensionActions.h:
  • contentextensions/ContentExtensionsBackend.cpp:

(WebCore::ContentExtensions::ContentExtensionsBackend::forEach):
(WebCore::ContentExtensions::ContentExtensionsBackend::processContentExtensionRulesForPingLoad):

  • contentextensions/ContentExtensionsBackend.h:
  • page/Page.h:
  • page/UserContentProvider.cpp:

(WebCore::UserContentProvider::forEachContentExtension):

  • page/UserContentProvider.h:

Source/WebKit:

Update PingLoad to process content extension rules upon redirect. This allows content
extensions to block and upgrade to HTTPS beacon / ping loads.

Because ping loads can outlive the WebProcess, the content extensions rules are passed
to the NetworkProcess when starting the Ping load. The PingLoad can then consult those
rules upon redirect, on the NetworkProcess side.

  • NetworkProcess/NetworkResourceLoadParameters.cpp:

(WebKit::NetworkResourceLoadParameters::encode const):
(WebKit::NetworkResourceLoadParameters::decode):

  • NetworkProcess/NetworkResourceLoadParameters.h:
  • NetworkProcess/PingLoad.cpp:

(WebKit::PingLoad::willPerformHTTPRedirection):
(WebKit::PingLoad::contentExtensionsBackend):
(WebKit::PingLoad::processContentExtensionRulesForLoad):

  • NetworkProcess/PingLoad.h:
  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::startPingLoad):

LayoutTests:

Add layout test coverage for blocking beacon loads via content extensions.

  • http/wpt/beacon/connect-src-beacon-redirect-blocked.sub-expected.txt:
  • http/wpt/beacon/connect-src-beacon-redirect-blocked.sub.html:
  • http/wpt/beacon/contentextensions/beacon-blocked-expected.txt: Added.
  • http/wpt/beacon/contentextensions/beacon-blocked.html: Added.
  • http/wpt/beacon/contentextensions/beacon-blocked.html.json: Added.
  • http/wpt/beacon/contentextensions/beacon-redirect-blocked-expected.txt: Added.
  • http/wpt/beacon/contentextensions/beacon-redirect-blocked.html: Added.
  • http/wpt/beacon/contentextensions/beacon-redirect-blocked.html.json: Added.
6:14 PM Changeset in webkit [220995] by Adrian Perez de Castro
  • 2 edits in trunk/Source/WebKit

[WPE][GTK] Unused variables in UserMediaProcessManager.cpp
https://bugs.webkit.org/show_bug.cgi?id=175799

Reviewed by Alex Christensen.

The code which uses the "audioExtensionPath" and "videoExtensionPath" variables is guarded
with "#if ENABLE(SANDBOX_EXTENSIONS)”, so do the same for the variables themselves.

  • UIProcess/UserMediaProcessManager.cpp: Add missing guards.
6:07 PM Changeset in webkit [220994] by keith_miller@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

Only generate offline asm for the ARCHS (xcodebuild) or the current system (CMake)
https://bugs.webkit.org/show_bug.cgi?id=175690

Reviewed by Michael Saboff.

This should reduce some of the time we spend building offline asm
in our builds (except for linux since they already did this).

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • offlineasm/backends.rb:
  • offlineasm/generate_offset_extractor.rb:
6:07 PM Changeset in webkit [220993] by clopez@igalia.com
  • 2 edits in trunk/Source/WTF

[GTK] ARMv7 build fails to build MacroAssemblerARMv7.cpp.
https://bugs.webkit.org/show_bug.cgi?id=175514

Reviewed by Keith Miller.

  • wtf/Platform.h: Enable DFG and MASM_PROBE back for GTK ARM_THUMB2.
5:23 PM Changeset in webkit [220992] by beidson@apple.com
  • 2 edits in trunk/Source/WebCore

ASSERTION FAILED: !m_connections.contains(&connection) in WebCore::SWServer::unregisterConnection(WebCore::SWServer::Connection&).
https://bugs.webkit.org/show_bug.cgi?id=175795

Rubber-stamped by Andy Estes.

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::unregisterConnection): Flip the ASSERT to be... correct.

4:39 PM Changeset in webkit [220991] by mmaxfield@apple.com
  • 2 edits in trunk/Tools

Typo in "webkit-patch land"
https://bugs.webkit.org/show_bug.cgi?id=175788

Reviewed by Tim Horton.

  • Scripts/webkitpy/tool/steps/commit.py:

(Commit._commit_warning):

4:31 PM Changeset in webkit [220990] by Ryan Haddad
  • 3 edits in branches/safari-604.1.38.0-branch/LayoutTests

Unreviewed, land test updates for rdar://problem/34000704.

  • js/parser-syntax-check-expected.txt:
  • js/script-tests/parser-syntax-check.js:
4:31 PM Changeset in webkit [220989] by Ryan Haddad
  • 3 edits in branches/safari-604.1.38.1-branch/LayoutTests

Unreviewed, land test updates for rdar://problem/34000704.

  • js/parser-syntax-check-expected.txt:
  • js/script-tests/parser-syntax-check.js:
4:21 PM Changeset in webkit [220988] by dbates@webkit.org
  • 5 edits in trunk/Source/WebCore

Cleanup TextPainter
https://bugs.webkit.org/show_bug.cgi?id=175782

Reviewed by Myles C. Maxfield.

Remove redundant mention of "text" in the name of TextPainter member functions, add separate
setters for selection and non-selection shadows, and do some other minor cleanups.

  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::paint): Update code for renamed functions.

  • rendering/SimpleLineLayoutFunctions.cpp:

(WebCore::SimpleLineLayout::paintFlow): Ditto.

  • rendering/TextPainter.cpp: Include ShadowData.h.

(WebCore::ShadowApplier::ShadowApplier): Use C++11 brace-initialization syntax.
(WebCore::ShadowApplier::isLastShadowIteration): Moved from TextPainter.h.
(WebCore::ShadowApplier::shadowIsCompletelyCoveredByText): Ditto.
(WebCore::TextPainter::paintTextOrEmphasisMarks): Renamed; formerly named drawTextOrEmphasisMarks.
(WebCore::TextPainter::paintTextWithShadows): Update code for renamed functions.
(WebCore::TextPainter::paintRange): Renamed; formerly named paintTextInRange.
(WebCore::TextPainter::paint): Renamed; formerly named paintText.
(WebCore::TextPainter::drawTextOrEmphasisMarks): Renamed to paintTextOrEmphasisMarks() to match
the naming convention of all the other paint functions in this class.
(WebCore::TextPainter::paintTextInRange): Renamed to paintRange.
(WebCore::TextPainter::paintText): Renamed to paint.

  • rendering/TextPainter.h: Forward declare ShadowData.

(WebCore::TextPainter::setStyle): Renamed; formerly named setTextPaintStyle.
(WebCore::TextPainter::setSelectionStyle): Renamed; formerly named setSelectionPaintStyle.
(WebCore::TextPainter::setShadow): Added.
(WebCore::TextPainter::setSelectionShadow): Added.
(WebCore::TextPainter::setEmphasisMark): Renamed; formerly named addEmphasis.
(WebCore::TextPainter::setTextPaintStyle): Renamed to setStyle.
(WebCore::TextPainter::setSelectionPaintStyle): Renamed to setSelectionStyle.
(WebCore::TextPainter::addEmphasis): Renamed to setEmphasisMark.
(WebCore::TextPainter::addTextShadow): Split functionality into setShadow and setSelectionShadow.
(WebCore::ShadowApplier::isLastShadowIteration): Moved to TextPainter.cpp.
(WebCore::ShadowApplier::shadowIsCompletelyCoveredByText): Ditto.

4:15 PM Changeset in webkit [220987] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Fixed expectations.

Unreviewed test expectations.

  • platform/mac/TestExpectations:
4:04 PM Changeset in webkit [220986] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

Addressing post-review comments after r220725
https://bugs.webkit.org/show_bug.cgi?id=175382

Reviewed by Darin Adler.

  • css/CSSFontFace.cpp:

(WebCore::CSSFontFace::setUnicodeRange):

3:17 PM Changeset in webkit [220985] by commit-queue@webkit.org
  • 4 edits
    1 copy in trunk/LayoutTests

Stop media/video-controls-toggling.html from timing out.
https://bugs.webkit.org/show_bug.cgi?id=116266

Patch by Ms2ger <Ms2ger@gmail.com> on 2017-08-21
Reviewed by Dean Jackson.

Use getComputedStyle to check the display property. Element::style only
contains properties set in the style attribute, but the display property
is set through CSS using the 'hidden' class.

  • media/video-controls-toggling-expected.txt:
  • media/video-controls-toggling.html:
  • platform/gtk/TestExpectations:
  • platform/gtk/media/video-controls-toggling-expected.txt: Copied from LayoutTests/media/video-controls-toggling-expected.txt. I'm not sure where the console message comes from, but it seems to be in the GTK-specific code.
2:58 PM Changeset in webkit [220984] by commit-queue@webkit.org
  • 13 edits in trunk

[Cache API] Add support for CacheStorage.match
https://bugs.webkit.org/show_bug.cgi?id=175747

Patch by Youenn Fablet <youenn@apple.com> on 2017-08-21
Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • web-platform-tests/service-workers/cache-storage/window/cache-delete.https-expected.txt:
  • web-platform-tests/service-workers/cache-storage/window/cache-keys.https-expected.txt:
  • web-platform-tests/service-workers/cache-storage/window/cache-match.https-expected.txt:
  • web-platform-tests/service-workers/cache-storage/window/cache-matchAll.https-expected.txt:
  • web-platform-tests/service-workers/cache-storage/window/cache-put.https-expected.txt:
  • web-platform-tests/service-workers/cache-storage/window/cache-storage-match.https-expected.txt:
  • web-platform-tests/service-workers/cache-storage/worker/cache-storage-match.https-expected.txt:

Source/WebCore:

Covered by rebased tests.

Introducing Cache::doMatch so that CacheStorage can use it.
Make Cache::match use Cache::doMatch as well.

Implementing CacheStorage.match as per spec:

  • If name is provided, query only the cache with the given name.
  • Otherwise pick the first matching response in the caches.

The sequential asynchronous search is done in doSequentialMatch.

Making sure that response with a status code are returning false to isNull.
This allows passing more tests.

  • Modules/cache/Cache.cpp:

(WebCore::Cache::match):
(WebCore::Cache::doMatch):
(WebCore::Cache::matchAll):
(WebCore::toConnectionRecord):

  • Modules/cache/Cache.h:
  • Modules/cache/CacheStorage.cpp:

(WebCore::doSequentialMatch):
(WebCore::copyCaches):
(WebCore::CacheStorage::match):

  • platform/network/ResourceResponseBase.cpp:

(WebCore::ResourceResponseBase::setHTTPStatusCode):

2:51 PM Changeset in webkit [220983] by dino@apple.com
  • 3 edits
    2 adds in trunk

Persistent WebGL Warning "vertex WARNING: 0:1: extension 'GL_ARB_gpu_shader5' is not supported" in Safari 10.1.2
https://bugs.webkit.org/show_bug.cgi?id=175783
<rdar://problem/33623867>

Reviewed by Alex Christensen.

Source/WebCore:

The version of ANGLE we use inserts this line into each shader:
It causes our lower-level GLSL compiler to give a warning, which is
confusing to developers because they didn't write this code.

Until we upgrade our OpenGL support to version 4.1, we should remove
this error message from the log returned to the developer.
See https://bugs.webkit.org/show_bug.cgi?id=175785

Test: fast/canvas/webgl/no-info-log-for-simple-shaders.html

  • platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:

(WebCore::GraphicsContext3D::getUnmangledInfoLog): Search for and remove
this warning.

LayoutTests:

  • fast/canvas/webgl/no-info-log-for-simple-shaders-expected.txt: Added.
  • fast/canvas/webgl/no-info-log-for-simple-shaders.html: Added.
2:10 PM Changeset in webkit [220982] by weinig@apple.com
  • 4 edits in trunk

StringView could use a function to strip leading/trailing characters without allocation
https://bugs.webkit.org/show_bug.cgi?id=175757

Reviewed by Darin Adler.

Source/WTF:

There are many places in WebCore/WebKit that we call functions like,
WebCore::stripLeadingAndTrailingHTMLSpaces, or String::stripWhiteSpace() only to use
the allocated String as a temporary for either another transformation or a comparison.
Now that we have StringView, we can avoid that extra allocation, by having returning a
StringView substring in these scenarios.

For instance, the check (from ScriptElement.cpp:287):

if (!stripLeadingAndTrailingHTMLSpaces(sourceURL).isEmpty()) {

...

}

currently allocates a string just to make this check. With a new
stripLeadingAndTrailingHTMLSpaces such as:

StringView stripLeadingAndTrailingHTMLSpaces(StringView stringView)
{

return stringView.stripLeadingAndTrailingMatchedCharacters([] (auto c) {

return isHTMLSpace(c);

});

}

We could instead have exact same code from ScriptElement.cpp now avoid an allocation.

  • wtf/text/StringView.h:

(WTF::StringView::stripLeadingAndTrailingMatchedCharacters):

Tools:

  • TestWebKitAPI/Tests/WTF/StringView.cpp:

Add tests for StringView::stripLeadingAndTrailingMatchedCharacters().

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

Marked svg/animations/smil-leak-list-property-instances.svg as flaky on macOS WK1.
https://bugs.webkit.org/show_bug.cgi?id=174218

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
1:53 PM Changeset in webkit [220980] by aestes@apple.com
  • 3 edits in trunk/Source/WebCore

[Payment Request] Use ExistingExceptionError to propagate JS exceptions thrown during JSON stringification
https://bugs.webkit.org/show_bug.cgi?id=175776

Reviewed by Darin Adler.

  • Modules/paymentrequest/PaymentRequest.cpp:

(WebCore::PaymentRequest::create):

  • Modules/paymentrequest/PaymentRequest.h:
1:35 PM Changeset in webkit [220979] by commit-queue@webkit.org
  • 59 edits
    25 copies
    1 add
    1 delete in trunk

[PAL] Move spi/mac directory into PAL
https://bugs.webkit.org/show_bug.cgi?id=175649

Patch by Yoshiaki Jitsukawa <Yoshiaki.Jitsukawa@sony.com> on 2017-08-21
Reviewed by Myles C. Maxfield.

Source/WebCore:

  • WebCore.xcodeproj/project.pbxproj:
  • editing/cocoa/DataDetection.mm:
  • editing/mac/DictionaryLookup.h:
  • editing/mac/DictionaryLookup.mm:
  • page/mac/ServicesOverlayController.mm:
  • page/mac/WheelEventDeltaFilterMac.mm:
  • page/scrolling/mac/ScrollingMomentumCalculatorMac.mm:
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
  • platform/graphics/avfoundation/MediaPlaybackTargetMac.mm:
  • platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm:
  • platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
  • platform/graphics/mac/FontCacheMac.mm:
  • platform/graphics/mac/MediaPlayerPrivateQTKit.h:
  • platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
  • platform/graphics/mac/MediaTimeQTKit.h:
  • platform/mac/MediaRemoteSoftLink.cpp:
  • platform/mac/MediaRemoteSoftLink.h:
  • platform/mac/PasteboardWriter.mm:
  • platform/mac/PlatformEventFactoryMac.mm:
  • platform/mac/ScrollAnimatorMac.mm:
  • platform/mac/ScrollbarThemeMac.mm:
  • platform/mac/VideoFullscreenInterfaceMac.mm:
  • platform/mac/WebVideoFullscreenController.mm:
  • rendering/RenderThemeMac.mm:

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj:
  • pal/spi/mac/AVFoundationSPI.h: Renamed from Source/WebCore/platform/spi/mac/AVFoundationSPI.h.
  • pal/spi/mac/DataDetectorsSPI.h: Renamed from Source/WebCore/platform/spi/mac/DataDetectorsSPI.h.
  • pal/spi/mac/LookupSPI.h: Renamed from Source/WebCore/platform/spi/mac/LookupSPI.h.
  • pal/spi/mac/MediaRemoteSPI.h: Renamed from Source/WebCore/platform/spi/mac/MediaRemoteSPI.h.
  • pal/spi/mac/NSAccessibilitySPI.h: Renamed from Source/WebCore/platform/spi/mac/NSAccessibilitySPI.h.
  • pal/spi/mac/NSApplicationSPI.h: Renamed from Source/WebCore/platform/spi/mac/NSApplicationSPI.h.
  • pal/spi/mac/NSEventSPI.h: Renamed from Source/WebCore/platform/spi/mac/NSEventSPI.h.
  • pal/spi/mac/NSFontSPI.h: Renamed from Source/WebCore/platform/spi/mac/NSFontSPI.h.
  • pal/spi/mac/NSImmediateActionGestureRecognizerSPI.h: Renamed from Source/WebCore/platform/spi/mac/NSImmediateActionGestureRecognizerSPI.h.
  • pal/spi/mac/NSMenuSPI.h: Renamed from Source/WebCore/platform/spi/mac/NSMenuSPI.h.
  • pal/spi/mac/NSPasteboardSPI.h: Renamed from Source/WebCore/platform/spi/mac/NSPasteboardSPI.h.
  • pal/spi/mac/NSPopoverSPI.h: Renamed from Source/WebCore/platform/spi/mac/NSPopoverSPI.h.
  • pal/spi/mac/NSScrollerImpSPI.h: Renamed from Source/WebCore/platform/spi/mac/NSScrollerImpSPI.h.
  • pal/spi/mac/NSScrollingInputFilterSPI.h: Renamed from Source/WebCore/platform/spi/mac/NSScrollingInputFilterSPI.h.
  • pal/spi/mac/NSScrollingMomentumCalculatorSPI.h: Renamed from Source/WebCore/platform/spi/mac/NSScrollingMomentumCalculatorSPI.h.
  • pal/spi/mac/NSSharingServicePickerSPI.h: Renamed from Source/WebCore/platform/spi/mac/NSSharingServicePickerSPI.h.
  • pal/spi/mac/NSSharingServiceSPI.h: Renamed from Source/WebCore/platform/spi/mac/NSSharingServiceSPI.h.
  • pal/spi/mac/NSSpellCheckerSPI.h: Renamed from Source/WebCore/platform/spi/mac/NSSpellCheckerSPI.h.
  • pal/spi/mac/NSTextFinderSPI.h: Renamed from Source/WebCore/platform/spi/mac/NSTextFinderSPI.h.
  • pal/spi/mac/NSViewSPI.h: Renamed from Source/WebCore/platform/spi/mac/NSViewSPI.h.
  • pal/spi/mac/NSWindowSPI.h: Renamed from Source/WebCore/platform/spi/mac/NSWindowSPI.h.
  • pal/spi/mac/PIPSPI.h: Renamed from Source/WebCore/platform/spi/mac/PIPSPI.h.
  • pal/spi/mac/QTKitSPI.h: Renamed from Source/WebCore/platform/spi/mac/QTKitSPI.h.
  • pal/spi/mac/QuickLookMacSPI.h: Renamed from Source/WebCore/platform/spi/mac/QuickLookMacSPI.h.
  • pal/spi/mac/TUCallSPI.h: Renamed from Source/WebCore/platform/spi/mac/TUCallSPI.h.

Source/WebKit:

  • Platform/mac/MenuUtilities.mm:
  • Shared/mac/WebCoreArgumentCodersMac.mm:
  • Shared/mac/WebEventFactory.mm:
  • Shared/mac/WebHitTestResultData.mm:
  • UIProcess/API/Cocoa/WKWebView.mm:
  • UIProcess/Cocoa/WebViewImpl.mm:
  • UIProcess/mac/ServicesController.mm:
  • UIProcess/mac/TextCheckerMac.mm:
  • UIProcess/mac/ViewGestureControllerMac.mm:
  • UIProcess/mac/WKImmediateActionController.h:
  • UIProcess/mac/WKImmediateActionController.mm:
  • UIProcess/mac/WKSharingServicePickerDelegate.mm:
  • UIProcess/mac/WKTextFinderClient.mm:
  • UIProcess/mac/WebContextMenuProxyMac.mm:
  • UIProcess/mac/WebPageProxyMac.mm:
  • WebProcess/cocoa/WebProcessCocoa.mm:

Source/WebKitLegacy/mac:

  • Misc/WebSharingServicePickerController.h:
  • WebCoreSupport/WebContextMenuClient.mm:
  • WebCoreSupport/WebEditorClient.mm:
  • WebCoreSupport/WebSelectionServiceController.mm:
  • WebView/WebHTMLView.mm:
  • WebView/WebImmediateActionController.h:
  • WebView/WebImmediateActionController.mm:
  • WebView/WebView.mm:

Tools:

  • TestWebKitAPI/Tests/mac/MenuTypesForMouseEvents.mm:
1:16 PM Changeset in webkit [220978] by Adrian Perez de Castro
  • 2 edits in trunk/Source/WebCore

[GTK][WPE][GSTREAMER_GL] Overriden virtual function not marked “override” in MediaPlayerPrivateGStreamerBase.h
https://bugs.webkit.org/show_bug.cgi?id=175780

Reviewed by Konstantin Tokarev.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h: Add missing "override" qualifier.
1:02 PM Changeset in webkit [220977] by beidson@apple.com
  • 19 edits
    5 copies
    3 moves
    1 add in trunk/Source

Split the one SWServer::Connection into SWClientConnection and SWServer::Connection.
https://bugs.webkit.org/show_bug.cgi?id=175745

Reviewed by Andy Estes.

Source/WebCore:

No new tests (No behavior change).

Each of these has a much different environment that it lives in, so being the same object
hinders clean development.

This split will also make it easier for the WebCore objects to directly handle WK2 messages.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/Logging.h:
  • workers/service/ServiceWorkerContainer.cpp:

(WebCore::ServiceWorkerContainer::addRegistration):
(WebCore::ServiceWorkerContainer::scheduleJob):

  • workers/service/ServiceWorkerContainer.h:
  • workers/service/ServiceWorkerProvider.h:
  • workers/service/server/SWClientConnection.cpp: Copied from Source/WebCore/workers/service/server/SWServer.cpp.

(WebCore::SWClientConnection::SWClientConnection):
(WebCore::SWClientConnection::~SWClientConnection):
(WebCore::SWClientConnection::scheduleJob):
(WebCore::SWClientConnection::jobRejectedInServer):

  • workers/service/server/SWClientConnection.h: Copied from Source/WebCore/workers/service/server/SWServer.h.
  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::Connection::Connection):
(WebCore::SWServer::Connection::~Connection):
(WebCore::SWServer::~SWServer):
(WebCore::SWServer::Connection::scheduleJobInServer):
(WebCore::SWServer::scheduleJob):
(WebCore::SWServer::registerConnection):
(WebCore::SWServer::unregisterConnection):
(WebCore::SWServer::Connection::scheduleJob): Deleted.
(WebCore::SWServer::Connection::jobRejected): Deleted.

  • workers/service/server/SWServer.h:

(WebCore::SWServer::Connection::server):
(WebCore::SWServer::Connection::~Connection): Deleted.

Source/WebKit:

  • CMakeLists.txt:
  • DerivedSources.make:
  • WebKit.xcodeproj/project.pbxproj:
  • StorageProcess/ServiceWorker/WebSWServerConnection.cpp: Renamed from Source/WebKit/WebProcess/Storage/WebSWServerConnection.cpp.

(WebKit::WebSWServerConnection::WebSWServerConnection):
(WebKit::WebSWServerConnection::~WebSWServerConnection):
(WebKit::WebSWServerConnection::disconnectedFromWebProcess):
(WebKit::WebSWServerConnection::rejectJobInClient):

  • StorageProcess/ServiceWorker/WebSWServerConnection.h: Copied from Source/WebKit/WebProcess/Storage/WebSWServerConnection.h.

(WebKit::WebSWServerConnection::identifier const):

  • StorageProcess/ServiceWorker/WebSWServerConnection.messages.in: Copied from Source/WebKit/WebProcess/Storage/WebSWServerConnection.messages.in.
  • StorageProcess/StorageToWebProcessConnection.cpp:

(WebKit::StorageToWebProcessConnection::didReceiveMessage):
(WebKit::StorageToWebProcessConnection::didClose):
(WebKit::StorageToWebProcessConnection::establishSWServerConnection):
(WebKit::StorageToWebProcessConnection::removeSWServerConnection):

  • StorageProcess/StorageToWebProcessConnection.h:
  • WebProcess/Storage/WebSWClientConnection.cpp: Copied from Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.cpp.

(WebKit::WebSWClientConnection::WebSWClientConnection):
(WebKit::WebSWClientConnection::~WebSWClientConnection):
(WebKit::WebSWClientConnection::scheduleJobInServer):

  • WebProcess/Storage/WebSWClientConnection.h: Renamed from Source/WebKit/WebProcess/Storage/WebSWServerConnection.h.

(WebKit::WebSWClientConnection::identifier const):

  • WebProcess/Storage/WebSWClientConnection.messages.in: Renamed from Source/WebKit/WebProcess/Storage/WebSWServerConnection.messages.in.
  • WebProcess/Storage/WebServiceWorkerProvider.cpp:

(WebKit::WebServiceWorkerProvider::serviceWorkerConnectionForSession):

  • WebProcess/Storage/WebServiceWorkerProvider.h:
  • WebProcess/Storage/WebToStorageProcessConnection.cpp:

(WebKit::WebToStorageProcessConnection::didReceiveMessage):
(WebKit::WebToStorageProcessConnection::serviceWorkerConnectionForSession):

  • WebProcess/Storage/WebToStorageProcessConnection.h:
12:54 PM Changeset in webkit [220976] by jmarcell@apple.com
  • 7 edits in tags/Safari-605.1.3.1/Source

Versioning.

12:50 PM Changeset in webkit [220975] by jmarcell@apple.com
  • 1 copy in tags/Safari-605.1.3.1

New tag.

12:06 PM Changeset in webkit [220974] by commit-queue@webkit.org
  • 4 edits
    1 copy in trunk/LayoutTests

Re-enable tests based on media-fullscreen.js for GTK.
https://bugs.webkit.org/show_bug.cgi?id=175770

Patch by Ms2ger <Ms2ger@gmail.com> on 2017-08-21
Reviewed by Eric Carlson.

The media-fullscreen-not-in-document test checks that a disconnected
element can go fullscreen, while the code explicitly disallows that
(in Document::requestFullScreenForElement). Update the test to match
the code.

The media-fullscreen-inline test will now fail more clearly if the
attempt to go fullscreen is rejected (which it isn't).

  • media/media-fullscreen-not-in-document-expected.txt: rebaseline.
  • media/media-fullscreen.js:

(fullscreenerror): pass the test if the webkitfullscreenerror
(addEventListeners): add a webkitfullscreenerror event handler

  • platform/gtk/TestExpectations: remove failure expectations.
  • platform/gtk/media/media-fullscreen-not-in-document-expected.txt: Copied from LayoutTests/media/media-fullscreen-not-in-document-expected.txt. This copy leaves out the webkitSupportsPresentationMode check that's disabled on GTK.
11:45 AM Changeset in webkit [220973] by webkit@devinrousso.com
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Can't copy text from "View variable value" popover in Styles sidebar
https://bugs.webkit.org/show_bug.cgi?id=175758

Reviewed by Matt Baker.

  • UserInterface/Views/InlineSwatch.js:

(WI.InlineSwatch.prototype._swatchElementClicked):
Change CodeMirror readOnly from "nocursor" to true. The former prevents the editor from
being focused during selection, therefore preventing the content from being copied.

11:15 AM Changeset in webkit [220972] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Marked inspector/css/add-rule.html as flaky on macOS
https://bugs.webkit.org/show_bug.cgi?id=173560

Unreviewed test gardening.

  • platform/mac/TestExpectations:
10:41 AM Changeset in webkit [220971] by aestes@apple.com
  • 9 edits in trunk

[Payment Request] Implement the PaymentRequest constructor
https://bugs.webkit.org/show_bug.cgi?id=175755

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/payment-request/payment-request-constructor.https-expected.txt:
  • web-platform-tests/payment-request/payment-request-id.https-expected.txt:

Source/WebCore:

  • Modules/paymentrequest/PaymentDetailsModifier.h: Changed total to an std::optional<PaymentItem>.
  • Modules/paymentrequest/PaymentRequest.cpp:

(WebCore::isWellFormedCurrencyCode): Implements the IsWellFormedCurrencyCode abstract operation from ECMA 402.
(WebCore::isValidDecimalMonetaryValue): Implements the "valid decimal monetary value" validity checker.
(WebCore::checkAndCanonicalizeAmount): Implements the "check and canonicalize amount" validity checker.
(WebCore::checkAndCanonicalizeTotal): Implements the "check and canonicalize total" validity checker.
(WebCore::PaymentRequest::create): Implements the PaymentRequest Constructor
(WebCore::PaymentRequest::PaymentRequest):
(WebCore::PaymentRequest::id const): Implements the PaymentRequest id attribute.
(WebCore::PaymentRequest::shippingType const): Implements the PaymentRequest shippingType attribute.

  • Modules/paymentrequest/PaymentRequest.h:
  • Modules/paymentrequest/PaymentRequest.idl: Annotated PaymentRequest with ConstructorMayThrowException.
  • WebCore.xcodeproj/project.pbxproj:
10:21 AM Changeset in webkit [220970] by pvollan@apple.com
  • 4 edits in trunk

[Win] DRT should only allow any https certificate for localhost.
https://bugs.webkit.org/show_bug.cgi?id=175147

Reviewed by Brent Fulgham.

Source/WebCore:

Disabling validation of certificate chains, breaks SSL on Windows. In order
for SSL tests to succeed on Windows, we should avoid disabling it.

No new tests, covered by existing tests.

  • platform/network/cf/ResourceHandleCFNet.cpp:

(WebCore::ResourceHandle::createCFURLConnection):

Tools:

Add check to make sure only localhost requests allow any https certificate.

  • DumpRenderTree/win/DumpRenderTree.cpp:

(runTest):

10:00 AM Changeset in webkit [220969] by Matt Lewis
  • 5 edits in trunk/LayoutTests

Rebaselined js/dom/global-constructors-attributes.html on macOS.

Unreviewed test gardening.

  • platform/mac-elcapitan-wk2/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-highsierra-wk1/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-highsierra/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
9:45 AM Changeset in webkit [220968] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skip imported/w3c/web-platform-tests/payment-request/payment-request-constructor-crash.https.html.
https://bugs.webkit.org/show_bug.cgi?id=175773

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
9:36 AM Changeset in webkit [220967] by commit-queue@webkit.org
  • 5 edits in trunk/LayoutTests

[GTK][WPE] Rebaseline tests with list item markers.
https://bugs.webkit.org/show_bug.cgi?id=175771

Unreviewed test gardening.

The output was changed in r220858 and rebaselined for ios and mac only.
They're changes in render tree dumps that don't affect rendering.

Patch by Ms2ger <Ms2ger@igalia.com> on 2017-08-21

  • platform/gtk/css2.1/t0805-c5520-brdr-b-01-e-expected.txt:
  • platform/gtk/fast/doctypes/002-expected.txt:
  • platform/gtk/fast/lists/marker-before-empty-inline-expected.txt:
  • platform/wpe/css2.1/t0805-c5520-brdr-b-01-e-expected.txt:
9:30 AM Changeset in webkit [220966] by eric.carlson@apple.com
  • 2 edits in trunk/Tools

Add WTFLogChannel level to allow runtime log filtering
https://bugs.webkit.org/show_bug.cgi?id=175731
<rdar://problem/33967234>

Unreviewed build fix.

  • TestWebKitAPI/Tests/WebCore/Logging.cpp:

(TestWebKitAPI::LoggingTest::output): Disable testing output by default because it
fails on some of the bots.

8:44 AM Changeset in webkit [220965] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

media-captions.html improvements
https://bugs.webkit.org/show_bug.cgi?id=175768

Patch by Ms2ger <Ms2ger@igalia.com> on 2017-08-21
Reviewed by Eric Carlson.

  • media/media-captions.html: remove reference to unused script file.
  • platform/gtk/TestExpectations: remove Timeout, Crash annotations.
6:03 AM Changeset in webkit [220964] by eric.carlson@apple.com
  • 7 edits
    1 add in trunk

Add WTFLogChannel level to allow runtime log filtering
https://bugs.webkit.org/show_bug.cgi?id=175731
<rdar://problem/33967234>

Reviewed by Jer Noble.
Source/WTF:

Add WTFLog*, LOG, and RELEASE_LOG variants that take a "log level" parameter so code
can include logging statements that are only conditionally emitted.

  • wtf/Assertions.cpp:
  • wtf/Assertions.h:
  • wtf/MemoryPressureHandler.cpp:
  • wtf/RefCountedLeakCounter.cpp:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/Logging.cpp: Added.

(TestWebKitAPI::LoggingTest::output):
(TestWebKitAPI::TEST_F):

5:59 AM Changeset in webkit [220963] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

MemoryCache::setCapacities assertion failure maxDeadBytes <= totalBytes
https://bugs.webkit.org/show_bug.cgi?id=175571

Patch by Charlie Turner <cturner@igalia.com> on 2017-08-21
Reviewed by Antti Koivisto.

  • Shared/CacheModel.cpp:

(WebKit::calculateMemoryCacheSizes): Ensure cacheTotalCapacity is
set to a reasonable value even in low-memory environments.

5:56 AM Changeset in webkit [220962] by zandobersek@gmail.com
  • 9 edits in trunk/Source/WebCore

[EME] HTMLMediaElement: basic implementations of 'Attempt to Decrypt', 'Attempt to Resume Playback If Necessary'
https://bugs.webkit.org/show_bug.cgi?id=175761

Reviewed by Xabier Rodriguez-Calvar.

Add initial and incomplete implementations of the 'Attempt to Decrypt' and
'Attempt to Resume Playback If Necessary' algorithms. The implementations
are interleaved with the specification text for clarity.

'Attempt to Decrypt' implementation doesn't yet address the encrypted block
queue or the 'decryption blocked waiting for key' flag since it's not yet
clear whether it would make more sense for this state to reside lower, in
the platform layer. The gist of the algorithm is to invoke the decryption
attempt through the MediaPlayer object, passing along the CDMInstance object
retrieved from the MediaKeys object that is associated with this media
element.

'Attempt to Resume Playback if Necessary' implementation similarly for now
omits the various state flag operations. The main task at this point is to
dispatch the 'Attempt to Decrypt' algorithm.

HTMLMediaElement::cdmClientAttemptToResumePlaybackIfNecessary() method now
invokes the attemptToResumePlaybackIfNecessary() method.

MediaKeys::hasOpenSessions() is introduced, returning true if any session
that was created through this MediaKeys instance is still open. This allows
the 'Attempt to Decrypt' algorithm to proceed with the decryption attempt
dispatch into the MediaPlayer hierarchy.

For that, the MediaPlayer::attemptToDecryptWithInstance() method is added,
which simply dispatches the mirror method on MediaPlayerPrivate interface.
This will enable the platform-layer implementations to use the passed-in
CDMInstance object for decryption purposes.

  • Modules/encryptedmedia/MediaKeySession.h:
  • Modules/encryptedmedia/MediaKeys.cpp:

(WebCore::MediaKeys::hasOpenSessions const):

  • Modules/encryptedmedia/MediaKeys.h:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::attemptToDecrypt):
(WebCore::HTMLMediaElement::attemptToResumePlaybackIfNecessary):
(WebCore::HTMLMediaElement::cdmClientAttemptToResumePlaybackIfNecessary):

  • html/HTMLMediaElement.h: Mark cdmClientAttemptToResumePlaybackIfNecessary() as final.
  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::attemptToDecryptWithInstance):

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

(WebCore::MediaPlayerPrivateInterface::attemptToDecryptWithInstance):

1:28 AM Changeset in webkit [220961] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GTK] Remove some old flaky crash expectations.
https://bugs.webkit.org/show_bug.cgi?id=108682

Unreviewed test gardening.

Patch by Ms2ger <Ms2ger@gmail.com> on 2017-08-21

  • platform/gtk/TestExpectations:

Aug 20, 2017:

11:56 PM Changeset in webkit [220960] by mark.lam@apple.com
  • 7 edits in trunk/Source

Gardening: fix CLoop build.
https://bugs.webkit.org/show_bug.cgi?id=175688
<rdar://problem/33436870>

Not reviewed.

Source/JavaScriptCore:

Make these files dependent on ENABLE(MASM_PROBE).

  • assembler/ProbeContext.cpp:
  • assembler/ProbeContext.h:
  • assembler/ProbeStack.cpp:
  • assembler/ProbeStack.h:

Source/WTF:

Disable MASM_PROBE if !ENABLE(JIT).

  • wtf/Platform.h:
11:21 PM Changeset in webkit [220959] by zandobersek@gmail.com
  • 9 edits in trunk

[EME] Add basic implementation of HTMLMediaElement::setMediaKeys()
https://bugs.webkit.org/show_bug.cgi?id=175717

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

Add an initial and incomplete implementation of HTMLMediaElement::setMediaKeys(),
interleaved with the specification wording of how this operation should behave.
The implementation still doesn't cover cases of CDM instances being already
associated with a different HTMLMediaElement, of CDM instances that can't be
disassociated from the current HTMLMediaElement, and of failures during both
association and disassociation of MediaKeys with the HTMLMediaElement.

The HTMLMediaElement (as a CDMClient inheritor) has to be attached or detached
from the MediaKeys object as appropriate. This attachment allows MediaKeys to
initiate an attempt to resume playback whenever the key statuses of the
associated MediaKeys object are updated.

Upon association and disassociation with MediaKeys, the CDMInstance object of
that specific MediaKeys instance is attached to or detached from the MediaPlayer
instance. This allows the platform layer to gather information about the
CDMInstance that will be used for decryption of media content for this specific
media element.

Additionally, the detachment from both MediaKeys and MediaPlayer is done upon
HTMLMediaElement destruction.

Upon setting the MediaKeys object, a task is queued that launches the 'Attempt to
Resume Playback If Necessary' algorithm. A placeholder method is added that will
implement the algorithm in the future.

The HTMLMediaElement::mediaKeys() getter is also implemented, returning pointer
held in m_mediaKeys.

Covered to a degree by existing imported W3C tests, with a setMediaKeys()-oriented
test having WPE-specific baseline update.

  • Modules/encryptedmedia/MediaKeys.h:

(WebCore::MediaKeys::cdmInstance const):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::~HTMLMediaElement):
(WebCore::HTMLMediaElement::mediaKeys const):
(WebCore::HTMLMediaElement::setMediaKeys):
(WebCore::HTMLMediaElement::attemptToResumePlaybackIfNecessary):
(WebCore::HTMLMediaElement::contextDestroyed):

  • html/HTMLMediaElement.h:
  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::cdmInstanceAttached):
(WebCore::MediaPlayer::cdmInstanceDetached):

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

(WebCore::MediaPlayerPrivateInterface::cdmInstanceAttached):
(WebCore::MediaPlayerPrivateInterface::cdmInstanceDetached):

LayoutTests:

  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-expected.txt:

Update the baseline, with the test no longer timing out but instead
failing with a NotAllowed exception thrown.

9:26 PM Changeset in webkit [220958] by mark.lam@apple.com
  • 17 edits
    4 adds in trunk/Source/JavaScriptCore

Enhance MacroAssembler::probe() to allow the probe function to resize the stack frame and alter stack data in one pass.
https://bugs.webkit.org/show_bug.cgi?id=175688
<rdar://problem/33436870>

Reviewed by JF Bastien.

With this patch, the clients of the MacroAssembler::probe() can now change
stack values without having to worry about whether there is enough room in the
current stack frame for it or not. This is done using the Probe::Context's stack
member like so:

jit.probe([] (Probe::Context& context) {

auto cpu = context.cpu;
auto stack = context.stack();
uintptr_t* currentSP = cpu.sp<uintptr_t*>();

Get a value at the current stack pointer location.
auto value = stack.get<uintptr_t>(currentSP);

Set a value above the current stack pointer (within current frame).
stack.set<uintptr_t>(currentSP + 10, value);

Set a value below the current stack pointer (out of current frame).
stack.set<uintptr_t>(currentSP - 10, value);

Set the new stack pointer.
cpu.sp() = currentSP - 20;

});

What happens behind the scene:

  1. the generated JIT probe code will now call Probe::executeProbe(), and Probe::executeProbe() will in turn call the client's probe function.

Probe::executeProbe() receives the Probe::State on the machine stack passed
to it by the probe trampoline. Probe::executeProbe() will instantiate a
Probe::Context to be passed to the client's probe function. The client will
no longer see the Probe::State directly.

  1. The Probe::Context comes with a Probe::Stack which serves as a manager of stack pages. Currently, each page is 1K in size. Probe::Context::stack() returns a reference to an instance of Probe::Stack.
  1. Invoking get() of set() on Probe::Stack with an address will lead to the following:
  1. the address will be decoded to a baseAddress that points to the 1K page that contains that address.
  1. the Probe::Stack will check if it already has a cached 1K page for that baseAddress. If so, go to step (f). Else, continue with step (c).
  1. the Probe::Stack will malloc a 1K mirror page, and memcpy the 1K stack page for that specified baseAddress to this mirror page.
  1. the mirror page will be added to the ProbeStack's m_pages HashMap, keyed on the baseAddress.
  1. the ProbeStack will also cache the last baseAddress and its corresponding mirror page in use. With memory accesses tending to be localized, this will save us from having to look up the page in the HashMap.
  1. get() will map the requested address to a physical address in the mirror page, and return the value at that location.
  1. set() will map the requested address to a physical address in the mirror page, and set the value at that location in the mirror page.

set() will also set a dirty bit corresponding to the "cache line" that
was modified in the mirror page.

  1. When the client's probe function returns, Probe::executeProbe() will check if there are stack changes that need to be applied. If stack changes are needed:
  1. Probe::executeProbe() will adjust the stack pointer to ensure enough stack space is available to flush the dirty stack pages. It will also register a flushStackDirtyPages callback function in the Probe::State. Thereafter, Probe::executeProbe() returns to the probe trampoline.
  1. the probe trampoline adjusts the stack pointer, moves the Probe::State to a safe place if needed, and then calls the flushStackDirtyPages callback if needed.
  1. the flushStackDirtyPages() callback iterates the Probe::Stack's m_pages HashMap and flush all dirty "cache lines" to the machine stack. Thereafter, flushStackDirtyPages() returns to the probe trampoline.
  1. lastly, the probe trampoline will restore all register values and return to the pc set in the Probe::State.

To make this patch work, I also had to do the following work:

  1. Refactor MacroAssembler::CPUState into Probe::CPUState. Mainly, this means moving the code over to ProbeContext.h. I also added some convenience accessor methods for spr registers.

Moved Probe::Context over to its own file ProbeContext.h/cpp.

  1. Fix all probe trampolines to pass the address of Probe::executeProbe in addition to the client's probe function and arg.

I also took this opportunity to optimize the generated JIT probe code to
minimize the amount of memory stores needed.

  1. Simplified the ARM64 probe trampoline. The ARM64 probe only supports changing either lr or pc (or neither), but not both at in the same probe invocation. The ARM64 probe trampoline used to have to check for this invariant in the assembly trampoline code. With the introduction of Probe::executeProbe(), we can now do it there and simplify the trampoline.
  1. Fix a bug in the old ARM64 probe trampoline for the case where the client changes lr. That code path never worked before, but has now been fixed.
  1. Removed trustedImm32FromPtr() helper functions in MacroAssemblerARM and MacroAssemblerARMv7.

We can now use move() with TrustedImmPtr, and it does the same thing but in a
more generic way.

  1. ARMv7's move() emitter may encode a T1 move instruction, which happens to have

the same semantics as movs (according to the Thumb spec). This means these
instructions may trash the APSR flags before we have a chance to preserve them.

This patch changes MacroAssemblerARMv7's probe() to preserve the APSR register
early on. This entails adding support for the mrs instruction in the
ARMv7Assembler.

  1. Change testmasm's testProbeModifiesStackValues() to now modify stack values

the easy way.

Also fixed testmasm tests which check flag registers to only compare the
portions that are modifiable by the client i.e. some masking is applied.

This patch has passed the testmasm tests on x86, x86_64, arm64, and armv7.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/ARMv7Assembler.h:

(JSC::ARMv7Assembler::mrs):

  • assembler/AbstractMacroAssembler.h:
  • assembler/MacroAssembler.cpp:

(JSC::stdFunctionCallback):
(JSC::MacroAssembler::probe):

  • assembler/MacroAssembler.h:

(JSC::MacroAssembler::CPUState::gprName): Deleted.
(JSC::MacroAssembler::CPUState::sprName): Deleted.
(JSC::MacroAssembler::CPUState::fprName): Deleted.
(JSC::MacroAssembler::CPUState::gpr): Deleted.
(JSC::MacroAssembler::CPUState::spr): Deleted.
(JSC::MacroAssembler::CPUState::fpr): Deleted.
(JSC:: const): Deleted.
(JSC::MacroAssembler::CPUState::fpr const): Deleted.
(JSC::MacroAssembler::CPUState::pc): Deleted.
(JSC::MacroAssembler::CPUState::fp): Deleted.
(JSC::MacroAssembler::CPUState::sp): Deleted.
(JSC::MacroAssembler::CPUState::pc const): Deleted.
(JSC::MacroAssembler::CPUState::fp const): Deleted.
(JSC::MacroAssembler::CPUState::sp const): Deleted.
(JSC::Probe::State::gpr): Deleted.
(JSC::Probe::State::spr): Deleted.
(JSC::Probe::State::fpr): Deleted.
(JSC::Probe::State::gprName): Deleted.
(JSC::Probe::State::sprName): Deleted.
(JSC::Probe::State::fprName): Deleted.
(JSC::Probe::State::pc): Deleted.
(JSC::Probe::State::fp): Deleted.
(JSC::Probe::State::sp): Deleted.

  • assembler/MacroAssemblerARM.cpp:

(JSC::MacroAssembler::probe):

  • assembler/MacroAssemblerARM.h:

(JSC::MacroAssemblerARM::trustedImm32FromPtr): Deleted.

  • assembler/MacroAssemblerARM64.cpp:

(JSC::MacroAssembler::probe):
(JSC::arm64ProbeError): Deleted.

  • assembler/MacroAssemblerARMv7.cpp:

(JSC::MacroAssembler::probe):

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::armV7Condition):
(JSC::MacroAssemblerARMv7::trustedImm32FromPtr): Deleted.

  • assembler/MacroAssemblerPrinter.cpp:

(JSC::Printer::printCallback):

  • assembler/MacroAssemblerPrinter.h:
  • assembler/MacroAssemblerX86Common.cpp:

(JSC::ctiMasmProbeTrampoline):
(JSC::MacroAssembler::probe):

  • assembler/Printer.h:

(JSC::Printer::Context::Context):

  • assembler/ProbeContext.cpp: Added.

(JSC::Probe::executeProbe):
(JSC::Probe::handleProbeStackInitialization):
(JSC::Probe::probeStateForContext):

  • assembler/ProbeContext.h: Added.

(JSC::Probe::CPUState::gprName):
(JSC::Probe::CPUState::sprName):
(JSC::Probe::CPUState::fprName):
(JSC::Probe::CPUState::gpr):
(JSC::Probe::CPUState::spr):
(JSC::Probe::CPUState::fpr):
(JSC::Probe:: const):
(JSC::Probe::CPUState::fpr const):
(JSC::Probe::CPUState::pc):
(JSC::Probe::CPUState::fp):
(JSC::Probe::CPUState::sp):
(JSC::Probe::CPUState::pc const):
(JSC::Probe::CPUState::fp const):
(JSC::Probe::CPUState::sp const):
(JSC::Probe::Context::Context):
(JSC::Probe::Context::gpr):
(JSC::Probe::Context::spr):
(JSC::Probe::Context::fpr):
(JSC::Probe::Context::gprName):
(JSC::Probe::Context::sprName):
(JSC::Probe::Context::fprName):
(JSC::Probe::Context::pc):
(JSC::Probe::Context::fp):
(JSC::Probe::Context::sp):
(JSC::Probe::Context::stack):
(JSC::Probe::Context::hasWritesToFlush):
(JSC::Probe::Context::releaseStack):

  • assembler/ProbeStack.cpp: Added.

(JSC::Probe::Page::Page):
(JSC::Probe::Page::flushWrites):
(JSC::Probe::Stack::Stack):
(JSC::Probe::Stack::hasWritesToFlush):
(JSC::Probe::Stack::flushWrites):
(JSC::Probe::Stack::ensurePageFor):

  • assembler/ProbeStack.h: Added.

(JSC::Probe::Page::baseAddressFor):
(JSC::Probe::Page::chunkAddressFor):
(JSC::Probe::Page::baseAddress):
(JSC::Probe::Page::get):
(JSC::Probe::Page::set):
(JSC::Probe::Page::hasWritesToFlush const):
(JSC::Probe::Page::flushWritesIfNeeded):
(JSC::Probe::Page::dirtyBitFor):
(JSC::Probe::Page::physicalAddressFor):
(JSC::Probe::Stack::Stack):
(JSC::Probe::Stack::lowWatermark):
(JSC::Probe::Stack::get):
(JSC::Probe::Stack::set):
(JSC::Probe::Stack::newStackPointer const):
(JSC::Probe::Stack::setNewStackPointer):
(JSC::Probe::Stack::isValid):
(JSC::Probe::Stack::pageFor):

  • assembler/testmasm.cpp:

(JSC::testProbeReadsArgumentRegisters):
(JSC::testProbeWritesArgumentRegisters):
(JSC::testProbePreservesGPRS):
(JSC::testProbeModifiesStackPointer):
(JSC::testProbeModifiesStackPointerToInsideProbeStateOnStack):
(JSC::testProbeModifiesStackPointerToNBytesBelowSP):
(JSC::testProbeModifiesProgramCounter):
(JSC::testProbeModifiesStackValues):
(JSC::run):
(): Deleted.
(JSC::fillStack): Deleted.
(JSC::testProbeModifiesStackWithCallback): Deleted.

4:11 PM Changeset in webkit [220957] by Chris Dumez
  • 12 edits in trunk/Source

Simplify calls to LoaderStrategy::startPingLoad()
https://bugs.webkit.org/show_bug.cgi?id=175756

Reviewed by Sam Weinig.

Source/WebCore:

Simplify calls to LoaderStrategy::startPingLoad() by passing the Frame to it
and let its implementation gets what it needs from the frame. This reduces
the number of parameters to startPingLoad() and is more easily extensible.

  • dom/Document.h:
  • loader/LoaderStrategy.h:
  • loader/PingLoader.cpp:

(WebCore::PingLoader::loadImage):
(WebCore::PingLoader::sendPing):
(WebCore::PingLoader::sendViolationReport):
(WebCore::PingLoader::startPingLoad):

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

(WebCore::CachedResource::load):

Source/WebKit:

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::startPingLoad):

  • WebProcess/Network/WebLoaderStrategy.h:

Source/WebKitLegacy:

  • WebCoreSupport/WebResourceLoadScheduler.cpp:

(WebResourceLoadScheduler::startPingLoad):

  • WebCoreSupport/WebResourceLoadScheduler.h:
2:42 AM Changeset in webkit [220956] by Antti Koivisto
  • 7 edits
    2 adds in trunk/Source/WebCore

Factor :before/:after render tree mutations into a RenderTreeUpdater helper class
https://bugs.webkit.org/show_bug.cgi?id=175752

Reviewed by Andreas Kling.

Move code that constructs generated content renderers out from PseudoElement.
Also refactor the related code from RenderTreeUpdater main class into
RenderTreeUpdater::GeneratedContent helper class.

  • WebCore.xcodeproj/project.pbxproj:
  • dom/PseudoElement.cpp:

(WebCore::PseudoElement::resolveCustomStyle): Deleted.

Not needed anymore.

(WebCore::PseudoElement::didAttachRenderers): Deleted.

Moves to createContentRenderers in GeneratedContent.

(WebCore::PseudoElement::didRecalcStyle): Deleted.

Moves to updateStyleForContentRenderers in GeneratedContent.

  • dom/PseudoElement.h:
  • style/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::RenderTreeUpdater):
(WebCore::RenderTreeUpdater::~RenderTreeUpdater):
(WebCore::RenderTreeUpdater::commit):
(WebCore::RenderTreeUpdater::updateBeforeDescendants):
(WebCore::RenderTreeUpdater::updateAfterDescendants):
(WebCore::needsPseudoElement): Deleted.
(WebCore::RenderTreeUpdater::updateBeforeOrAfterPseudoElement): Deleted.
(WebCore::RenderTreeUpdater::updateQuotesUpTo): Deleted.

Quotes and other :before/:after support moves to GeneratedContent helpwe.

  • style/RenderTreeUpdater.h:

(WebCore::RenderTreeUpdater::generatedContent):

  • style/RenderTreeUpdaterGeneratedContent.cpp: Added.

(WebCore::RenderTreeUpdater::GeneratedContent::GeneratedContent):
(WebCore::RenderTreeUpdater::GeneratedContent::updateBeforePseudoElement):
(WebCore::RenderTreeUpdater::GeneratedContent::updateAfterPseudoElement):
(WebCore::RenderTreeUpdater::GeneratedContent::updateRemainingQuotes):
(WebCore::RenderTreeUpdater::GeneratedContent::updateQuotesUpTo):
(WebCore::createContentRenderers):
(WebCore::updateStyleForContentRenderers):
(WebCore::RenderTreeUpdater::GeneratedContent::updatePseudoElement):
(WebCore::RenderTreeUpdater::GeneratedContent::needsPseudoElement):

  • style/RenderTreeUpdaterGeneratedContent.h: Added.
Note: See TracTimeline for information about the timeline view.