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

Timeline



Jun 21, 2018:

11:41 PM Changeset in webkit [233071] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WTF

[GLIB] improve get_type() fast path in WEBKIT_DEFINE_TYPE
https://bugs.webkit.org/show_bug.cgi?id=186885

Reviewed by Anders Carlsson.

This is a backport of glib commit
https://gitlab.gnome.org/GNOME/glib/commit/e924f777369710221c3e0a9d7bf40392a27d1fa4

"The -fstack-protector-strong used in many distributions by default has a
rather drastic slowdown of the fast path in generated _get_type()
functions using G_DEFINE_* macros. The amount can vary by architecture,
GCC version, and compiler flags.

To work around this, and ensure a higher probability that our fast-path
will match what we had previously, we need to break out the slow-path
(registering the type) into a secondary function that is not a candidate
for inlining.

This ensures that the common case (type registered, return the GType id)
is the hot path and handled in the prologue of the generated assembly even
when -fstack-protector-strong is enabled."

  • wtf/glib/WTFGType.h:
8:01 PM Changeset in webkit [233070] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

WebKit (JavaScriptCore) compilation error with Clang ≥ 6.
https://bugs.webkit.org/show_bug.cgi?id=185947
<rdar://problem/40131933>

Reviewed by Saam Barati.

Newer Clang versions (due to C++17 support) is not happy with how I implemented
conversions between CodeLocation types. We'll fix this by adding a conversion
operator for converting between CodeLocation types.

  • assembler/CodeLocation.h:

(JSC::CodeLocationCommon::operator T):

5:21 PM Changeset in webkit [233069] by david_fenton@apple.com
  • 2 edits in trunk/LayoutTests

Skip imported/w3c/web-platform-tests/css/css-display/display-contents-first-letter-002.html.
https://bugs.webkit.org/show_bug.cgi?id=186901

Unreviewed test gardening.

4:30 PM Changeset in webkit [233068] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

Unreviewed, rolling out r232995.

Seems to have caused flakiness

Reverted changeset:

"Implement IPC throttling to keep the main thread responsive
when a process misbehaves"
https://bugs.webkit.org/show_bug.cgi?id=186607
https://trac.webkit.org/changeset/232995

4:30 PM Changeset in webkit [233067] by Ryan Haddad
  • 2 edits in trunk/Source/WebCore/PAL

Unreviewed attempt to fix the build after r233052.

  • pal/spi/cocoa/AVKitSPI.h:
4:13 PM Changeset in webkit [233066] by jer.noble@apple.com
  • 25 edits
    2 adds
    2 deletes in trunk

Address fullscreen api CSS env feedback
https://bugs.webkit.org/show_bug.cgi?id=186684

Reviewed by Simon Fraser.

Source/WebCore:

Test: fullscreen/fullscreen-env.html

+ Update the phishing alert text to be more explicit about the specific threats

phishing sites represent.

+ Make the top inset static, rather than dynamic.
+ Add bottom, left, and right insets for completeness.
+ Set the fullscreen animation duration as well as delay.
+ Notify the page when the controls show and hide.

  • English.lproj/Localizable.strings:
  • css/CSSSelector.cpp:

(WebCore::CSSSelector::selectorText const):

  • css/CSSSelector.h:
  • css/SelectorChecker.cpp:

(WebCore::SelectorChecker::checkOne const):

  • css/SelectorCheckerTestFunctions.h:

(WebCore::matchesFullScreenControlsHiddenPseudoClass):

  • css/SelectorPseudoClassAndCompatibilityElementMap.in:
  • cssjit/SelectorCompiler.cpp:

(WebCore::SelectorCompiler::addPseudoClassType):

  • dom/ConstantPropertyMap.cpp:

(WebCore::ConstantPropertyMap::nameForProperty const):
(WebCore::ConstantPropertyMap::updateConstantsForFullscreenInsets):
(WebCore::ConstantPropertyMap::didChangeFullscreenInsets):
(WebCore::ConstantPropertyMap::setFullscreenAutoHideDuration):
(WebCore::ConstantPropertyMap::setFullscreenInsetTop): Deleted.

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

(WebCore::Document::areFullscreenControlsHidden const):
(WebCore::Document::setFullscreenControlsHidden):

  • dom/Document.h:
  • page/Page.cpp:

(WebCore::Page::setFullscreenInsets):
(WebCore::Page::setFullscreenAutoHideDuration):
(WebCore::Page::setFullscreenControlsHidden):
(WebCore::Page::setFullscreenInsetTop): Deleted.

  • page/Page.h:

(WebCore::Page::fullscreenInsets const):

  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::setFullscreenInsets):
(WebCore::Internals::setFullscreenAutoHideDuration):
(WebCore::Internals::setFullscreenControlsHidden):
(WebCore::Internals::setFullscreenInsetTop): Deleted.

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

Source/WebKit:

+ Update the phishing alert text to be more explicit about the specific threats

phishing sites represent.

+ Make the top inset static, rather than dynamic.
+ Add bottom, left, and right insets for completeness.
+ Set the fullscreen animation duration as well as delay.
+ Notify the page when the controls show and hide.

  • UIProcess/WebFullScreenManagerProxy.cpp:

(WebKit::WebFullScreenManagerProxy::setFullscreenInsets):
(WebKit::WebFullScreenManagerProxy::setFullscreenAutoHideTiming):
(WebKit::WebFullScreenManagerProxy::setFullscreenControlsHidden):
(WebKit::WebFullScreenManagerProxy::setFullscreenInsetTop): Deleted.
(WebKit::WebFullScreenManagerProxy::setFullscreenAutoHideDelay): Deleted.

  • UIProcess/WebFullScreenManagerProxy.h:
  • UIProcess/ios/fullscreen/WKFullScreenViewController.mm:

(-[WKFullScreenViewController showUI]):
(-[WKFullScreenViewController hideUI]):
(-[WKFullScreenViewController viewWillAppear:]):
(-[WKFullScreenViewController _effectiveFullscreenInsets]):
(-[WKFullScreenViewController _updateWebViewFullscreenInsets]):
(-[WKFullScreenViewController _showPhishingAlert]):
(-[WKFullScreenViewController _effectiveFullscreenInsetTop]): Deleted.

  • WebProcess/FullScreen/WebFullScreenManager.cpp:

(WebKit::WebFullScreenManager::didExitFullScreen):
(WebKit::WebFullScreenManager::setFullscreenInsets):
(WebKit::WebFullScreenManager::setFullscreenAutoHideTiming):
(WebKit::WebFullScreenManager::setFullscreenControlsHidden):
(WebKit::WebFullScreenManager::setFullscreenInsetTop): Deleted.
(WebKit::WebFullScreenManager::setFullscreenAutoHideDelay): Deleted.

  • WebProcess/FullScreen/WebFullScreenManager.h:
  • WebProcess/FullScreen/WebFullScreenManager.messages.in:

LayoutTests:

  • fullscreen/fullscreen-env-expected.txt: Added.
  • fullscreen/fullscreen-env.html: Added.
  • fullscreen/fullscreen-inset-top-expected.txt: Removed.
  • fullscreen/fullscreen-inset-top.html: Removed.
3:57 PM Changeset in webkit [233065] by sbarati@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Do some CoW cleanup
https://bugs.webkit.org/show_bug.cgi?id=186896

Reviewed by Mark Lam.

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::decompressArrayAllocationProfile):
We don't need to WTFMove() ints

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):
remove a TODO.

  • runtime/JSObject.cpp:

(JSC::JSObject::putByIndex):
We were checking for isCopyOnWrite even after we converted away
from CoW in above code.
(JSC::JSObject::ensureWritableInt32Slow):
Model this in the same way the other ensureWritableXSlow are modeled.

3:51 PM Changeset in webkit [233064] by dbates@webkit.org
  • 2 edits in trunk/Tools

EWS for security bugs
https://bugs.webkit.org/show_bug.cgi?id=186291
<rdar://problem/40829658>

Substitute webkit.status-api-key for webkit.status_api_key as Git configuration variables can
only consist of alphanumeric characters and underscores (_) per the second paragraph of section
Configuration File of <https://git-scm.com/docs/git-config/2.18.0#_configuration_file>:

The variable names are case-insensitive, allow only alphanumeric characters and -, and must
start with an alphabetic character.

  • Scripts/webkitpy/tool/main.py:

(WebKitPatch._status_server_api_key_from_git):

3:32 PM Changeset in webkit [233063] by bshafiei@apple.com
  • 7 edits in branches/safari-606.1.20.40-branch/Source

Versioning.

3:30 PM Changeset in webkit [233062] by bshafiei@apple.com
  • 1 copy in tags/Safari-606.1.20.40.3

Tag Safari-606.1.20.40.3.

3:14 PM Changeset in webkit [233061] by dbates@webkit.org
  • 2 edits in trunk/Tools

EWS for security bugs
https://bugs.webkit.org/show_bug.cgi?id=186291
<rdar://problem/40829658>

In r232979, I inadvertently removed a line of code in _parse_authorized_api_keys() to define a local called api_keys.
Add this code back.

  • QueueStatusServer/config/authorization.py:

(_parse_authorized_api_keys):

2:42 PM Changeset in webkit [233060] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

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

"Introduced assertion failure in ~DisplayRefreshMonitorMac()."
(Requested by perarne on #webkit).

Reverted changeset:

"DisplayRefreshMonitorMac should hold a weak pointer to
WebPage."
https://bugs.webkit.org/show_bug.cgi?id=186683
https://trac.webkit.org/changeset/232884

2:23 PM Changeset in webkit [233059] by jer.noble@apple.com
  • 13 edits in trunk/Source

[Fullscreen] Page sometimes ends up with an incorrect zoom level after entering fullscreen
https://bugs.webkit.org/show_bug.cgi?id=186822

Reviewed by Simon Fraser.

Source/WebCore:

  • dom/Document.cpp:

(WebCore::Document::setOverrideViewportArguments):
(WebCore::Document::updateViewportArguments):

  • dom/Document.h:

Source/WebKit:

Set the minimum zoom, maximum zoom, zoom bouncing, and user scalability settings of the
WKWebView's UIScrollView upon entering fullscreen, and restore those same settings upon
exit. Override the viewport arguments upon entering fullscreen, restore them upon exit.

  • Platform/IPC/ArgumentCoder.h:
  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<ViewportArguments>::decode):

  • Shared/WebCoreArgumentCoders.h:
  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::forceAlwaysUserScalable const):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::setOverrideViewportArguments):

  • UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:

(WebKit::WKWebViewState::applyTo):
(WebKit::WKWebViewState::store):
(-[WKFullScreenWindowController enterFullScreen]):
(-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::forceAlwaysUserScalable const):

  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::setOverrideViewportArguments):

2:11 PM Changeset in webkit [233058] by dbates@webkit.org
  • 3 edits in trunk/Tools

EWS should not try to post comments or upload result archives to security-sensitive
bugs unless it has access
https://bugs.webkit.org/show_bug.cgi?id=186831

Reviewed by Lucas Forschler.

Following r232979 security-sensitive patches are uploaded to the status server so
that they can be retrieved and processed by EWS bots without the need for Bugzilla
security bug access. Although the EWS machinery is robust against unexpected exceptions,
including exceptions raised when interacting with Bugzilla bugs/attachments with
insufficient credentials, we should not depend on such defenses as they cause webkit-
patch to log a message for the "unexpected" exception. We should reserve such logging
for truly unexpected exceptions that indicate a programming mistake that we need to fix.

  • Scripts/webkitpy/tool/commands/earlywarningsystem.py:

(AbstractEarlyWarningSystem._post_reject_message_on_bug): Bail out early if we cannot
access the bug.

  • Scripts/webkitpy/tool/commands/queues.py:

(PatchProcessingQueue._can_access_bug): Added.
(PatchProcessingQueue._upload_results_archive_for_patch): Only add an attachment if we
can access the bug.
(CommitQueue.process_work_item): Only post a rejection comment (i.e. call CommitterValidatorreject_patch_from_commit_queue())
if we can access the bug.

1:58 PM Changeset in webkit [233057] by Lucas Forschler
  • 2 edits in trunk/Tools

Fix for https://bugs.webkit.org/show_bug.cgi?id=185790

1:54 PM Changeset in webkit [233056] by Said Abou-Hallawa
  • 3 edits
    2 adds in trunk

RenderSVGInline has to be inline always regardless of its css display value
https://bugs.webkit.org/show_bug.cgi?id=186656

Reviewed by Zalan Bujtas.

Source/WebCore:

According to https://www.w3.org/TR/SVG2/text.html#TextLayout, the <text>
element has to be laid out as if it were a block element and any <tspan>,
<textPath>, <a> and <tref> descendants were inline elements.

If a css rule, which contains the property "display: block;", is applied
to any of children of a <text> element, this property has to be ignored.

We currently ignore this property in RenderSVGInline::updateFromStyle()
by forcing setInline(true). But we do not do the same thing in
RenderTreeBuilder::normalizeTreeAfterStyleChange(). In fact we allow
making the children of the <text> element to be non-inline. This puts
the render tree in weired state and causes many assertions to fire while
laying out RenderSVGText.

Test: svg/dom/svg-inline-text-display-block-crash.html

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::normalizeTreeAfterStyleChange):

LayoutTests:

  • svg/dom/svg-inline-text-display-block-crash-expected.txt: Added.
  • svg/dom/svg-inline-text-display-block-crash.html: Added.
1:34 PM Changeset in webkit [233055] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Do not reuse generated inline renderer for the first letter.
https://bugs.webkit.org/show_bug.cgi?id=186657
<rdar://problem/41157892>

Reviewed by Simon Fraser.

Source/WebCore:

When the first letter pseudo element is present, we construct a dedicated subtree for its content like this:

<div><span>foobar</span></div> -> with ::first-letter on the <div>
DIV RenderBlock

SPAN RenderInline

RenderInline (generated wrapper for the first letter content)

RenderText (fist letter content)

RenderText (remaining text content)

"display: contents" on the <span> forces us not to construct a RenderInline for the <span> (or just come up with a wrapper at best).
FirstLetter::createRenderers logic needs to check for such cases and pick the correct parent for the first letter subtree accordingly.

Test: fast/text/first-letter-with-display-contents-crash.html

imported/w3c/web-platform-tests/css/css-display/display-contents-first-letter-002.html is not crashing anymore either.

  • rendering/updating/RenderTreeBuilderFirstLetter.cpp:

(WebCore::RenderTreeBuilder::FirstLetter::createRenderers):

LayoutTests:

  • fast/text/first-letter-with-display-contents-crash-expected.txt: Added.
  • fast/text/first-letter-with-display-contents-crash.html: Added.
1:10 PM Changeset in webkit [233054] by Keith Rollin
  • 3 edits in trunk/Tools

check-webkit-style should warn about exported inline functions
https://bugs.webkit.org/show_bug.cgi?id=186861
<rdar://problem/41303668>

Reviewed by Brent Fulgham.

When checking binaries compiled with LTO enabled, WebKit's
check-for-weak-vtables-and-externals script can complain about
exported inline functions. For instance, in
Source/WebCore/page/scrolling/ScrollingTree.h, the following:

WEBCORE_EXPORT virtual void reportSynchronousScrollingReasonsChanged(MonotonicTime, SynchronousScrollingReasons) { }
WEBCORE_EXPORT virtual void reportExposedUnfilledArea(MonotonicTime, unsigned /* unfilledArea */) { }

Can result in the following error messages:

ERROR: WebCore has a weak external symbol in it (.../OpenSource/WebKitBuild/Release/WebCore.framework/Versions/A/WebCore)
ERROR: A weak external symbol is generated when a symbol is defined in multiple compilation units and is also marked as being exported from the library.
ERROR: A common cause of weak external symbols is when an inline function is listed in the linker export file.
ERROR: symbol ZN7WebCore13ScrollingTree25reportExposedUnfilledAreaEN3WTF13MonotonicTimeEj
ERROR: symbol
ZN7WebCore13ScrollingTree40reportSynchronousScrollingReasonsChangedEN3WTF13MonotonicTimeEj

Unfortunately, these errors are only emitted when LTO is enabled,
meaning that a developer could check-in a file that will fail an LTO
build if they don't build with that option locally. Therefore, try to
head this off by updating check-webkit-style to identify and warn
about these cases (which includes when an export macro is applied
directly to an inline method as well as when an inline method is part
of an exported class).

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

(_FunctionState.begin):
(_FunctionState.export_macro):
(_ClassInfo.init):
(check_for_non_standard_constructs):
(check_function_definition):
(process_line):
(CppChecker):

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

(FunctionDetectionTest.perform_function_detection):
(FunctionDetectionTest.test_webcore_export):

12:04 PM Changeset in webkit [233053] by Chris Dumez
  • 10 edits
    6 adds in trunk

JSPerformanceObserverCallback creates a GC strongly-referenced Function that is never cleaned up
https://bugs.webkit.org/show_bug.cgi?id=186873
<rdar://problem/41271574>

Reviewed by Simon Fraser.

Source/WebCore:

Add [IsWeakCallback] to PerformanceObserverCallback interface so that the generated
JSPerformanceObserverCallback uses a JSC::Weak instead of a JSC::Strong to store the
js function. To keep the function alive, add [JSCustomMarkFunction] to PerformanceObserver
interface and have its visitAdditionalChildren() visit the callback's js function.
Finally, because we want the callback to still be called even if the JS does not keep
the PerformanceObserver wrapper alive, add [CustomIsReachable] to PerformanceObserver
interface and have its isReachableFromOpaqueRoots() return true if the observer is
registered (i.e. it may need to call the callback in the future).

I have confirmed locally, that the Performance / PerformanceObserver / Document
objects properly get destroyed if I navigate away from a page that had a performance
observer and trigger a memory pressure warning. Also,
notifyutil -p com.apple.WebKit.showAllDocuments no longer shows the old document.

Tests: performance-api/performance-observer-callback-after-gc.html

performance-api/performance-observer-no-document-leak.html

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSPerformanceObserverCustom.cpp: Added.

(WebCore::JSPerformanceObserver::visitAdditionalChildren):
(WebCore::JSPerformanceObserverOwner::isReachableFromOpaqueRoots):

  • bindings/js/ScriptController.cpp:
  • page/PerformanceObserver.cpp:

(WebCore::PerformanceObserver::disassociate):

  • page/PerformanceObserver.h:

(WebCore::PerformanceObserver::isRegistered const):
(WebCore::PerformanceObserver::callback):

  • page/PerformanceObserver.idl:
  • page/PerformanceObserverCallback.h:
  • page/PerformanceObserverCallback.idl:

LayoutTests:

  • performance-api/performance-observer-callback-after-gc-expected.txt: Added.
  • performance-api/performance-observer-callback-after-gc.html: Added.

Add layout test to make sure that a performance observer's callback still gets called, even if
the JS does not keep the performance observer alive.

  • performance-api/performance-observer-no-document-leak-expected.txt: Added.
  • performance-api/performance-observer-no-document-leak.html: Added.
  • performance-api/resources/performance-observer-no-document-leak-frame.html: Added.

Add layout test coverage to make sure the document does not leak if PerformanceObserver was
used.

11:59 AM Changeset in webkit [233052] by jer.noble@apple.com
  • 6 edits in trunk/Source

[Fullscreen] Use secondary glyph style for fullscreen controls
https://bugs.webkit.org/show_bug.cgi?id=186862
<rdar://problem/41212210>

Reviewed by Tim Horton.

Source/WebCore/PAL:

  • pal/spi/cocoa/AVKitSPI.h:

Source/WebKit:

Adopt AVBackgroundView, and use its predefined enums to set the material and tint styles for
the fullscreen controls.

  • UIProcess/ios/fullscreen/WKFullScreenViewController.mm:

(-[WKFullScreenViewController loadView]):

  • UIProcess/ios/fullscreen/WKFullscreenStackView.h:
  • UIProcess/ios/fullscreen/WKFullscreenStackView.mm:

(-[WKFullscreenStackView init]):
(-[WKFullscreenStackView dealloc]):
(-[WKFullscreenStackView addArrangedSubview:applyingMaterialStyle:tintEffectStyle:]):
(-[WKFullscreenStackView layoutSubviews]):
(+[WKFullscreenStackView baseEffects]): Deleted.
(+[WKFullscreenStackView configureView:forTintEffectWithColor:filterType:]): Deleted.
(+[WKFullscreenStackView configureView:withBackgroundFillOfColor:opacity:filter:]): Deleted.
(+[WKFullscreenStackView secondaryMaterialOverlayView]): Deleted.
(+[WKFullscreenStackView applyPrimaryGlyphTintToView:]): Deleted.
(+[WKFullscreenStackView applySecondaryGlyphTintToView:]): Deleted.
(-[WKFullscreenStackView initWithArrangedSubviews:axis:]): Deleted.
(-[WKFullscreenStackView setTargetViewForSecondaryMaterialOverlay:]): Deleted.
(-[WKFullscreenStackView contentView]): Deleted.
(-[WKFullscreenStackView _setArrangedSubviews:axis:]): Deleted.
(-[WKFullscreenStackView setBounds:]): Deleted.
(-[WKFullscreenStackView updateConstraints]): Deleted.

11:54 AM Changeset in webkit [233051] by graouts@webkit.org
  • 9 edits in trunk

[Web Animations] Make imported/mozilla/css-animations/test_animation-ready.html pass reliably
https://bugs.webkit.org/show_bug.cgi?id=183830
<rdar://problem/40997539>

Reviewed by Dean Jackson.

LayoutTests/imported/mozilla:

Mark progressions in the Mozilla CSS Animations tests.

  • css-animations/test_animation-ready-expected.txt:

Source/WebCore:

The CSS Animations Level 2 spec explains how the Web Animations API and CSS Animations interact and requires
pending styles changes on the target element of a CSS Animation to be flushed when using a Web Animations API
on it in order to ensure that any animation- CSS property is accounted for.

  • animation/CSSAnimation.cpp:

(WebCore::CSSAnimation::bindingsStartTime const):
(WebCore::CSSAnimation::setBindingsStartTime):
(WebCore::CSSAnimation::bindingsCurrentTime const):
(WebCore::CSSAnimation::setBindingsCurrentTime):
(WebCore::CSSAnimation::bindingsPlayState const):
(WebCore::CSSAnimation::bindingsPending const):
(WebCore::CSSAnimation::bindingsReady):
(WebCore::CSSAnimation::bindingsFinished):
(WebCore::CSSAnimation::bindingsPlay):
(WebCore::CSSAnimation::bindingsPause):
(WebCore::CSSAnimation::flushPendingStyleChanges const):

  • animation/CSSAnimation.h:
  • animation/WebAnimation.h:

(WebCore::WebAnimation::bindingsPlayState const):
(WebCore::WebAnimation::bindingsPending const):
(WebCore::WebAnimation::bindingsReady):
(WebCore::WebAnimation::bindingsFinished):
(WebCore::WebAnimation::bindingsPlay):
(WebCore::WebAnimation::bindingsPause):

  • animation/WebAnimation.idl:

LayoutTests:

This test now passes reliably.

11:51 AM Changeset in webkit [233050] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews-build] unit-tests fail when run from another directory
https://bugs.webkit.org/show_bug.cgi?id=186872

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-build/loadConfig.py:

(loadBuilderConfig): Add support for passing master_prefix_path.

  • BuildSlaveSupport/ews-build/loadConfig_unittest.py:

(ConfigDotJSONTest.test_configuration): Set master_prefix_path as current directory.

11:47 AM Changeset in webkit [233049] by jer.noble@apple.com
  • 5 edits in trunk/Source

[Fullscreen] Suspend page (and pause video) while phishing warning is presented
https://bugs.webkit.org/show_bug.cgi?id=186856
<rdar://problem/41212444>

Reviewed by Tim Horton.

Source/WebCore:

Pause the media element when the page is suspended, and unpause when the page resumes.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::HTMLMediaElement):
(WebCore::HTMLMediaElement::suspend):
(WebCore::HTMLMediaElement::resume):

  • html/HTMLMediaElement.h:

Source/WebKit:

  • UIProcess/ios/fullscreen/WKFullScreenViewController.mm:

(-[WKFullScreenViewController _showPhishingAlert]):

11:44 AM Changeset in webkit [233048] by keith_miller@apple.com
  • 5 edits
    1 add in trunk

flattenDictionaryStruture needs to zero inline storage.
https://bugs.webkit.org/show_bug.cgi?id=186869

Reviewed by Saam Barati.

JSTests:

  • stress/flatten-object-zero-unused-inline-properties.js: Added.

Source/JavaScriptCore:

This patch also adds the assetion that unused property storage is
zero or JSValue() to putDirectInternal. Additionally, functions
have been added to $vm that flatten dictionary objects and return
the inline capacity of an object.

  • runtime/JSObjectInlines.h:

(JSC::JSObject::putDirectInternal):

  • runtime/Structure.cpp:

(JSC::Structure::flattenDictionaryStructure):

  • tools/JSDollarVM.cpp:

(JSC::functionInlineCapacity):
(JSC::functionFlattenDictionaryObject):
(JSC::JSDollarVM::finishCreation):

11:42 AM Changeset in webkit [233047] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

Add support for using localhost worker in OpenSource EWS Buildbot
https://bugs.webkit.org/show_bug.cgi?id=186871

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-build/loadConfig.py:

(loadBuilderConfig): Added a worker named 'local-worker' if use_localhost_worker option is used.

  • BuildSlaveSupport/ews-build/master.cfg: Check BUILDBOT_TESTING environment variable and use_localhost_worker if so.
11:35 AM Changeset in webkit [233046] by Kocsen Chung
  • 17 edits in tags/Safari-606.1.22/Source/JavaScriptCore

Cherry-pick r233039. rdar://problem/40910419

Use IsoCellSets to track Executables with clearable code.
https://bugs.webkit.org/show_bug.cgi?id=186877

Reviewed by Filip Pizlo.

Here’s an example of the results that this fix may yield:

  1. The workload: load cnn.com, wait for it to fully load, scroll down and up.
  2. Statistics on memory touched and memory freed by VM::deleteAllCode():

Visiting Executables:

Old New

Number of objects visited: 70897 14264
Number of objects with deletable code: 14264 (20.1%) 14264 (100%)
Number of memory pages visited: 3224 1602
Number of memory pages with deletable code: 1602 (49.7%) 1602 (100%)

Visitng UnlinkedFunctionExecutables:

Old New

Number of objects visited: 105454 17231
Number of objects with deletable code: 42319 (20.1%) 17231 (100%)
Number of memory pages visited: 4796 1349
Number of memory pages with deletable code: 4013 (83.7%) 1349 (100%)

The number of objects differ because the old code only visit unlinked

executables indirectly via linked executables, whereas the new behavior visit
all unlinked executables with deletable code directly. This means:

  1. we used to not visit unlinked executables that have not been linked yet i.e. deleteAllCode() may not delete all code (especially code that is not used).
  2. we had to visit all linked executables to check if they of type FunctionExecutable, before going on to visit their unlinked executable, and this includes the ones that do not have deletable code. This means that we would touch more memory in the process.

Both of these these issues are now fixed with the new code.

This code was tested with manually inserted instrumentation to track the above
statistics. It is not feasible to write an automated test for this without
leaving a lot of invasive instrumentation in the code.

  • bytecode/UnlinkedFunctionExecutable.cpp: (JSC::UnlinkedFunctionExecutable::unlinkedCodeBlockFor):
  • bytecode/UnlinkedFunctionExecutable.h:
  • heap/CodeBlockSetInlines.h: (JSC::CodeBlockSet::iterateViaSubspaces):
  • heap/Heap.cpp: (JSC::Heap::deleteAllCodeBlocks): (JSC::Heap::deleteAllUnlinkedCodeBlocks): (JSC::Heap::deleteUnmarkedCompiledCode): (JSC::Heap::clearUnmarkedExecutables): Deleted. (JSC::Heap::addExecutable): Deleted.
  • heap/Heap.h:
  • runtime/DirectEvalExecutable.h:
  • runtime/ExecutableBase.cpp: (JSC::ExecutableBase::hasClearableCode const):
  • this is written based on the implementation of ExecutableBase::clearCode().
  • runtime/ExecutableBase.h:
  • runtime/FunctionExecutable.h:
  • runtime/IndirectEvalExecutable.h:
  • runtime/ModuleProgramExecutable.h:
  • runtime/ProgramExecutable.h:
  • runtime/ScriptExecutable.cpp: (JSC::ScriptExecutable::clearCode): (JSC::ScriptExecutable::installCode):
  • runtime/ScriptExecutable.h: (JSC::ScriptExecutable::finishCreation):
  • runtime/VM.cpp: (JSC::VM::VM):
  • runtime/VM.h: (JSC::VM::ScriptExecutableSpaceAndSet::ScriptExecutableSpaceAndSet): (JSC::VM::ScriptExecutableSpaceAndSet::clearableCodeSetFor): (JSC::VM::forEachScriptExecutableSpace): (JSC::VM::UnlinkedFunctionExecutableSpaceAndSet::UnlinkedFunctionExecutableSpaceAndSet): (JSC::VM::UnlinkedFunctionExecutableSpaceAndSet::clearableCodeSetFor):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233039 268f45cc-cd09-0410-ab3c-d52691b4dbfc

11:35 AM Changeset in webkit [233045] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Add force schedulers to OpenSource EWS Buildbot
https://bugs.webkit.org/show_bug.cgi?id=186876

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-build/loadConfig.py:

(loadBuilderConfig): Added support for ForceScheduler.

11:24 AM Changeset in webkit [233044] by david_fenton@apple.com
  • 6 edits in trunk/Source/WebKit

Unreviewed, rolling out r232989.

Causes API regressions on macOS

Reverted changeset:

"REGRESSION (r231850): Cookie file cannot be read or written
by network process"
https://bugs.webkit.org/show_bug.cgi?id=186806
https://trac.webkit.org/changeset/232989

11:11 AM Changeset in webkit [233043] by Kocsen Chung
  • 1 copy in tags/Safari-606.1.22

Tag Safari-606.1.22.

10:59 AM Changeset in webkit [233042] by bshafiei@apple.com
  • 2 edits in branches/safari-606.1.20.40-branch/Source/WebKit

Cherry-pick r232848. rdar://problem/41120462

Plug-in Process crashing on Mojave (affects Flash, others)
https://bugs.webkit.org/show_bug.cgi?id=186628
<rdar://problem/41120462>

Reviewed by Eric Carlson.

Add the missing “com.apple.security.cs.allow-unsigned-executable-memory” entitlement. Also alphabetize
the entitlements file to make it easier to read.

  • Configurations/PluginService.entitlements:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@232848 268f45cc-cd09-0410-ab3c-d52691b4dbfc

9:44 AM Changeset in webkit [233041] by rmorisset@apple.com
  • 1 edit
    1 move
    1 delete in trunk/Tools

[WSL] Merge WSL_type.ott and WSL_exec.ott
https://bugs.webkit.org/show_bug.cgi?id=186310

Rubberstamped by Filip Pizlo.

I moved the execution rules into WSL_type.ott, that was renamed WSL.ott.
I also changed the execution judgements:

  • they now emit memory events instead of having an explicit store (so they can be connected later to a memory model)
  • the environment is now unchangeable (except inside blocks, which are the only place that variable declarations can appear)
  • various rules were simplified.
  • WebGPUShadingLanguageRI/SpecWork/WSL.ott: Copied from Tools/WebGPUShadingLanguageRI/SpecWork/WSL_type.ott.
  • WebGPUShadingLanguageRI/SpecWork/WSL_exec.ott: Removed.
  • WebGPUShadingLanguageRI/SpecWork/WSL_type.ott: Removed.
8:48 AM Changeset in webkit [233040] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Update TestExpectations for http/wpt/service-workers/third-party-registration.html.
https://bugs.webkit.org/show_bug.cgi?id=183860

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations: Mark as a flaky timeout.
8:09 AM Changeset in webkit [233039] by mark.lam@apple.com
  • 17 edits in trunk/Source/JavaScriptCore

Use IsoCellSets to track Executables with clearable code.
https://bugs.webkit.org/show_bug.cgi?id=186877

Reviewed by Filip Pizlo.

Here’s an example of the results that this fix may yield:

  1. The workload: load cnn.com, wait for it to fully load, scroll down and up.
  2. Statistics on memory touched and memory freed by VM::deleteAllCode():

Visiting Executables:

Old New

Number of objects visited: 70897 14264
Number of objects with deletable code: 14264 (20.1%) 14264 (100%)
Number of memory pages visited: 3224 1602
Number of memory pages with deletable code: 1602 (49.7%) 1602 (100%)

Visitng UnlinkedFunctionExecutables:

Old New

Number of objects visited: 105454 17231
Number of objects with deletable code: 42319 (20.1%) 17231 (100%)
Number of memory pages visited: 4796 1349
Number of memory pages with deletable code: 4013 (83.7%) 1349 (100%)

The number of objects differ because the old code only visit unlinked

executables indirectly via linked executables, whereas the new behavior visit
all unlinked executables with deletable code directly. This means:

  1. we used to not visit unlinked executables that have not been linked yet i.e. deleteAllCode() may not delete all code (especially code that is not used).
  2. we had to visit all linked executables to check if they of type FunctionExecutable, before going on to visit their unlinked executable, and this includes the ones that do not have deletable code. This means that we would touch more memory in the process.

Both of these these issues are now fixed with the new code.

This code was tested with manually inserted instrumentation to track the above
statistics. It is not feasible to write an automated test for this without
leaving a lot of invasive instrumentation in the code.

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::UnlinkedFunctionExecutable::unlinkedCodeBlockFor):

  • bytecode/UnlinkedFunctionExecutable.h:
  • heap/CodeBlockSetInlines.h:

(JSC::CodeBlockSet::iterateViaSubspaces):

  • heap/Heap.cpp:

(JSC::Heap::deleteAllCodeBlocks):
(JSC::Heap::deleteAllUnlinkedCodeBlocks):
(JSC::Heap::deleteUnmarkedCompiledCode):
(JSC::Heap::clearUnmarkedExecutables): Deleted.
(JSC::Heap::addExecutable): Deleted.

  • heap/Heap.h:
  • runtime/DirectEvalExecutable.h:
  • runtime/ExecutableBase.cpp:

(JSC::ExecutableBase::hasClearableCode const):

  • this is written based on the implementation of ExecutableBase::clearCode().
  • runtime/ExecutableBase.h:
  • runtime/FunctionExecutable.h:
  • runtime/IndirectEvalExecutable.h:
  • runtime/ModuleProgramExecutable.h:
  • runtime/ProgramExecutable.h:
  • runtime/ScriptExecutable.cpp:

(JSC::ScriptExecutable::clearCode):
(JSC::ScriptExecutable::installCode):

  • runtime/ScriptExecutable.h:

(JSC::ScriptExecutable::finishCreation):

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:

(JSC::VM::ScriptExecutableSpaceAndSet::ScriptExecutableSpaceAndSet):
(JSC::VM::ScriptExecutableSpaceAndSet::clearableCodeSetFor):
(JSC::VM::forEachScriptExecutableSpace):
(JSC::VM::UnlinkedFunctionExecutableSpaceAndSet::UnlinkedFunctionExecutableSpaceAndSet):
(JSC::VM::UnlinkedFunctionExecutableSpaceAndSet::clearableCodeSetFor):

7:00 AM Changeset in webkit [233038] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[test262-runner] Improve failures output
https://bugs.webkit.org/show_bug.cgi?id=186858

Patch by Leo Balter <Leo Balter> on 2018-06-21
Reviewed by Michael Saboff.

  • Scripts/test262/Runner.pm:

(main):
(processResult):

6:57 AM Changeset in webkit [233037] by caitp@igalia.com
  • 2 edits in trunk/Tools

[Tools] add a --debug option to test262/Runner.pm for buildbots
https://bugs.webkit.org/show_bug.cgi?id=186113

Reviewed by Michael Saboff.

test262-runner runs Debug builds by default, but this allows us to be
explicit about it in buildbots.

  • Scripts/test262/Runner.pm:

(processCLI):

6:37 AM Changeset in webkit [233036] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

Bad optional access in WebCore::ContentSecurityPolicySource::portMatches
https://bugs.webkit.org/show_bug.cgi?id=186535

Reviewed by Daniel Bates.

Make sure the ports have explicit values before dereferencing them.

This is hard to test. If the layout test script-src-parsing-implicit-and-explicit-port-number
continues to pass for WebKitLegacy, then I have at least probably not broken anything. To
reproduce the crash in a layout test that I can run, I think I would need to implement
internals.registerDefaultPortForProtocol for modern WebKit, which is too much work for this
crash. Otherwise, we'd need to run the test server on port 80, which would be unfriendly.

  • page/csp/ContentSecurityPolicySource.cpp:

(WebCore::ContentSecurityPolicySource::portMatches const):

4:03 AM Changeset in webkit [233035] by zandobersek@gmail.com
  • 9 edits in trunk/Source

[GTK] WebDriver: allow applying host-specific TLS certificates for automated sessions
https://bugs.webkit.org/show_bug.cgi?id=186884

Reviewed by Carlos Garcia Campos.

Source/JavaScriptCore:

Add a tuple array input parameter to the StartAutomationSession DBus
message, representing a list of host-and-certificate pairs that have to
be allowed for a given session. This array is then unpacked and used to
fill out the certificates Vector object in the SessionCapabilities
struct.

  • inspector/remote/RemoteInspector.h: Add a GLib-specific Vector of

String pairs representing hosts and the certificate file paths.

  • inspector/remote/glib/RemoteInspectorServer.cpp:

Source/WebDriver:

Start handling the 'certificates' capability for the GTK+ port. This is
a list of host-certificate pairs that should be marked as allowed for a
given automation session. This object should be positioned inside the
'webkitgtk:browserOptions' dictionary in the capabilities JSON.

  • Capabilities.h:
  • glib/SessionHostGlib.cpp:

(WebDriver::SessionHost::startAutomationSession): Include any
host-certificate pairs in the StartAutomationSession DBus message.

  • gtk/WebDriverServiceGtk.cpp:

(WebDriver::WebDriverService::platformValidateCapability const):
Properly validate the 'certificates' value, if present.
(WebDriver::WebDriverService::platformParseCapabilities const):
Properly parse the 'certificates' value, if present, and extract the
host-certificate pairs.

Source/WebKit:

  • UIProcess/API/glib/WebKitAutomationSession.cpp:

(webkitAutomationSessionCreate): Handle any host-certificate pair that's
been set for this session, creating a GTlsCertificate object through
loading from the specified certificate path and marking that certificate
as allowed for the specified host through the
webkit_web_context_allow_tls_certificate_for_host() API.

4:01 AM Changeset in webkit [233034] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Regression(r226990) : Crash under WebCore::Page::applicationWillResignActive
https://bugs.webkit.org/show_bug.cgi?id=186850
<rdar://problem/37394469>

Reviewed by Eric Carlson.

Make sure m_page is not null before calling applicationWillResignActive(). m_page
gets nulled out when WebPage::close() is called. The crash trace seems to indicate
we're calling applicationWillResignActive() on a Page that is dead since we crash
accessing Page::mainFrame().

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::applicationWillResignActive):

3:14 AM Changeset in webkit [233033] by Fujii Hironori
  • 4 edits in trunk

[GStreamer] ASSERTION FAILED: end.isValid() in PlatformTimeRanges::add
https://bugs.webkit.org/show_bug.cgi?id=186880

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

Bug 180253 has added assertions the arugments start and end is
valid MediaTime in PlatformTimeRanges::add. Since then, some
LayoutTests fail due to the assertion failure.

The invalid MediaTime is added into the PlatformTimeRanges in
MediaPlayerPrivateGStreamer::buffered. Before adding MediaTime,
original implementation checks MediaTime::operator bool() returns
true. But, this method returns true if the time value is invalid.
Then, PlatformTimeRanges::add is called with an invalid MediaTime.

No new tests (No behavior change).

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::buffered const): Check
maxTimeLoaded() is valid before adding to timeRanges.

LayoutTests:

  • platform/gtk/TestExpectations: Removed Crash marks of

compositing/geometry/clipped-video-controller.html,
fast/canvas/webgl/oes-texture-half-float-with-video.html,
fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-rgb565.html,
fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-rgba5551.html,
fast/canvas/webgl/tex-image-and-sub-image-2d-with-video.html,
fast/events/media-focus-in-standalone-media-document.html,
fullscreen/video-controls-timeline.html,
http/tests/appcache/video.html, and compositing/video/poster.html.

2:54 AM Changeset in webkit [233032] by Fujii Hironori
  • 4 edits in trunk

[GTK] http/tests/misc/bubble-drag-events.html crashes
https://bugs.webkit.org/show_bug.cgi?id=182352

Reviewed by Carlos Garcia Campos.

Source/WebKit:

PingLoad::didFinish was called twice if it is used with
NetworkDataTaskSoup. PingLoad is not a ref-counted object. It is
destructed when PingLoad::didFinish is called.

PingLoad::didReceiveChallenge calls the ChallengeCompletionHandler
with AuthenticationChallengeDisposition::Cancel to cancel the
challenge and calls PingLoad::didFinish.

NetworkDataTaskSoup::continueAuthenticate calls
didReceiveChallenge with a ChallengeCompletionHandler which calls
didCompleteWithError. PingLoad::didCompleteWithError calls
PingLoad::didFinish.

didCompleteWithError callback should not be called in the
ChallengeCompletionHandler.

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::continueAuthenticate): Do not call
didFail() in the ChallengeCompletionHandler. Call
invalidateAndCancel() instead.

LayoutTests:

  • platform/gtk/TestExpectations:

Marked http/tests/misc/bubble-drag-events.html as [ Failure ] not
[ Failure Timeout Crash ].
Unmarked http/tests/misc/cached-scripts.html.

2:27 AM Changeset in webkit [233031] by zandobersek@gmail.com
  • 2 edits in trunk/LayoutTests

Unreviewed WPE gardening. Handle various timeouts by adjusting or
adding the appropriate test expectations.

  • platform/wpe/TestExpectations:
1:54 AM Changeset in webkit [233030] by Carlos Garcia Campos
  • 4 edits in trunk/Tools

run-gtk-tests (glib/common.py) cannot determine build directory when webKitBranchBuild=true
https://bugs.webkit.org/show_bug.cgi?id=185643

Reviewed by Frédéric Wang.

Check if webKitBranchBuild is true in git config to add the branch name to the build path.

  • Scripts/webkitpy/common/checkout/scm/git.py:

(Git.read_git_config): Add output_type parameter.
(Git.read_config): Call read_git_config with cws and executive.
(Git._upstream_branch): Use read_config().
(Git._assert_can_squash): Ditto.
(Git.remote_branch_ref): Ditto.

  • Scripts/webkitpy/common/checkout/scm/scm_unittest.py:

(GitSVNTest.test_read_git_config):

  • glib/common.py:

(get_build_path):

Jun 20, 2018:

8:04 PM Changeset in webkit [233029] by ddkilzer@apple.com
  • 3 edits in trunk/Source/WebCore

Fix leaks in WebCore found by clang static analyzer in deep mode
<https://webkit.org/b/186865>

Reviewed by Joseph Pecoraro.

  • platform/mac/WebCoreNSURLExtras.mm:

(WebCore::mapHostNames): Fix leak of an empty NSMutableArray
during an early return. RetainPtr<> is not used here since
a pointer to the NSMutableArray * is passed around.

  • platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm:

(WebCore::ScreenDisplayCaptureSourceMac::createDisplayStream):
Fix leak of a CGDisplayModeRef during an early return.

6:28 PM Changeset in webkit [233028] by david_fenton@apple.com
  • 2 edits in trunk/LayoutTests/platform/mac/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey

rebaseline failing High Sierra WebCryptoAPI tests (added extra new line).
https://bugs.webkit.org/show_bug.cgi?id=186863

Unreviewed test gardening.

  • platform/mac/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any-expected.txt:
  • platform/mac/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.worker-expected.txt:
5:08 PM Changeset in webkit [233027] by dbates@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: All non-Same-Site cookies are marked as Same-Site Strict in Storage tab
https://bugs.webkit.org/show_bug.cgi?id=186867
<rdar://problem/41175424>

Reviewed by Matt Baker.

Fixes an issue where cookies that do not have a Same-Site policy would be marked up as Same-
Site Strict in Web Inspector's cookie storage content view (under the storage tab).

  • UserInterface/Views/CookieStorageContentView.js:

(WI.CookieStorageContentView.prototype._rebuildTable): Only compute the display name if
we cookie.sameSite is non-null and is not WI.Cookie.SameSiteType.None. Moreover, remove
an extraneous call to WI.Cookie.parseSameSiteAttributeValue() as cookie.SameSite represents
the already parsed value (one of the WI.Cookie.SameSiteType-scoped values).

5:06 PM Changeset in webkit [233026] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Layout Test imported/mozilla/css-animations/test_pseudoElement-get-animations.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=186868

Unreviewed test gardening.

  • platform/win/TestExpectations:
4:57 PM Changeset in webkit [233025] by Wenson Hsieh
  • 4 edits
    2 adds in trunk

[WebKit on watchOS] Fixed position elements sometimes flicker when scrolling
https://bugs.webkit.org/show_bug.cgi?id=186860
<rdar://problem/39953563>

Reviewed by Tim Horton.

Source/WebKit:

Remove conditional guards that are no longer necessary, now that the oldest iOS version our builders support is
iOS 11. Conditionalizing this logic only for iOS 11+ meant that on watchOS, we're always falling down the path
where we don't schedule a visible content rect update until the next runloop, which makes it possible for a
remote layer tree transaction to arrive and cause us to update the scrolling tree with stale viewport geometry.

Test: WKScrollViewTests.PositionFixedLayerAfterScrolling

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _scheduleVisibleContentRectUpdateAfterScrollInView:]):

Tools:

Add a new API test to exercise a race condition between receiving remote layer tree commits and updating visible
content rects which would result in the compositing layer for a fixed position element sometimes appearing in
the wrong place. See WebKit ChangeLog for more details.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/fixed-nav-bar.html: Added.
  • TestWebKitAPI/Tests/ios/WKScrollViewTests.mm: Added.

(traverseLayerTree):
(TEST):

4:04 PM Changeset in webkit [233024] by dbates@webkit.org
  • 2 edits in trunk/Tools

AttributeError: StatusServer instance has no attribute '_api_key' thrown when processing a patch
https://bugs.webkit.org/show_bug.cgi?id=186852

Fixes an issue where StatusServer._api_key may not be defined. This issue manifests itself
in a Python AttributeError exception when an EWS bot tries to fetch the next patch to process.

Currently StatusServer._api_key is only defined when either the environment variable WEBKIT_STATUS_API_KEY
or the Git configuration key webkit.status_api_key has a non-empty value. Instead we should
always define StatusServer._api_key in the StatusServer constructor.

  • Scripts/webkitpy/common/net/statusserver.py:

(StatusServer.init):

3:04 PM Changeset in webkit [233023] by david_fenton@apple.com
  • 1 edit
    4 adds in trunk/LayoutTests

rebaseline WebCryptoAPI tests for High Sierra.
https://bugs.webkit.org/show_bug.cgi?id=186863

Unreviewed test gardening.

  • platform/mac-sierra/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any-expected.txt: Added.
  • platform/mac-sierra/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.worker-expected.txt: Added.
  • platform/mac/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any-expected.txt: Added.
  • platform/mac/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.worker-expected.txt: Added.
2:26 PM Changeset in webkit [233022] by Wenson Hsieh
  • 3 edits in trunk/Source/WebCore

Unreviewed, fix the watchOS build after r233016.

  • page/EventHandler.cpp:

(WebCore::EventHandler::selectionExtentRespectingEditingBoundary):

Move this helper out of the ENABLE(DRAG_SUPPORT) guard.

  • page/EventHandler.h:
1:24 PM Changeset in webkit [233021] by Manuel Rego Casasnovas
  • 2 edits in trunk/Websites/webkit.org

[WPE] Some fixups on webkit.org page
https://bugs.webkit.org/show_bug.cgi?id=186844

Unreviewed as the content is not modified, only some minor fixups on the format.

  • wpe.md: Remove title as it's already provided by the website CMS.

Avoid breaking lines at 80 chars as it's not rendered as expected.

1:23 PM Changeset in webkit [233020] by Simon Fraser
  • 4 edits in trunk/Source/WebCore

AnimationList wastes 60KB of vector capacity
https://bugs.webkit.org/show_bug.cgi?id=186701

Reviewed by Chris Dumez.

AnimationList was the second most wasteful call site for Vector capacity on theverge.com,
wasting almost 60KB. Lists had between 1 and 3 entries, so give AnimationList's vector of
Animations a min capacity of zero so it doesn't grow in increments of 16.

Also shrink Animation from 88 bytes to 72 bytes by optimizing packing.

  • platform/animation/Animation.cpp:

(WebCore::Animation::Animation):
(WebCore::Animation::operator=):
(WebCore::Animation::animationsMatch const):

  • platform/animation/Animation.h:

(WebCore::Animation::animationMode const):
(WebCore::Animation::setAnimationMode):

  • platform/animation/AnimationList.h:
12:39 PM Changeset in webkit [233019] by Simon Fraser
  • 5 edits in trunk/Source/WebCore

ContentSecurityPolicySourceList wastes 51KB of Vector capacity on cnn.com
https://bugs.webkit.org/show_bug.cgi?id=186706

Reviewed by Chris Dumez.

Make ContentSecurityPolicySourceList::parse() call shrinkToFit() on m_list
after parsing to eliminate wasted vector capacity.

Shrink ContentSecurityPolicySource down to 40 bytes by optimizing packing.

  • page/csp/ContentSecurityPolicySource.cpp:

(WebCore::ContentSecurityPolicySource::ContentSecurityPolicySource):

  • page/csp/ContentSecurityPolicySource.h:
  • page/csp/ContentSecurityPolicySourceList.cpp:

(WebCore::ContentSecurityPolicySourceList::matches const):
(WebCore::ContentSecurityPolicySourceList::parse):
(WebCore::ContentSecurityPolicySourceList::matches): Deleted.

  • page/csp/ContentSecurityPolicySourceList.h:
11:19 AM Changeset in webkit [233018] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Expand concurrent GC assertion to accept JSValue() or 0
https://bugs.webkit.org/show_bug.cgi?id=186855

Reviewed by Mark Lam.

We tend to set unused property slots to either JSValue() or 0
depending on the context. On 64-bit these are the same but on
32-bit JSValue() has a NaN tag. This patch makes it so we
the accept either JSValue() or 0.

  • runtime/JSObjectInlines.h:

(JSC::JSObject::prepareToPutDirectWithoutTransition):

10:30 AM Changeset in webkit [233017] by aboya@igalia.com
  • 5 edits in trunk/LayoutTests

Unreviewed GTK+ test gardening.
https://bugs.webkit.org/show_bug.cgi?id=186854

  • TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
10:22 AM Changeset in webkit [233016] by Megan Gardner
  • 6 edits in trunk/Source

Restrict Selection in contenteditable the extent of that contenteditable
https://bugs.webkit.org/show_bug.cgi?id=186792

Reviewed by Wenson Hsieh.

Source/WebCore:

My system currently will not allow me to run tests. I will add one when I can update.

Expose the already existing funcitonality to restrict a selection to a single contentenditable

  • page/EventHandler.cpp:

(WebCore::EventHandler::selectionExtentRespectingEditingBoundary):
(WebCore::selectionExtentRespectingEditingBoundary): Deleted.

  • page/EventHandler.h:
  • rendering/HitTestResult.h:

Source/WebKit:

We have not been checking to make sure that when we make a selection that it is restricted to
a single content editable on iOS. There is functionality to ensure this on mac, so it has been
exposed and utilized for restricting the extent of a selection.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::updateSelectionWithTouches):

10:16 AM WebKitGTK/Gardening/Calendar edited by aboya@igalia.com
(diff)
10:16 AM Changeset in webkit [233015] by guijemont@igalia.com
  • 2 edits in trunk/Source/JavaScriptCore

[Armv7] Linkbuffer: executableOffsetFor() fails for location 2
https://bugs.webkit.org/show_bug.cgi?id=186765

Reviewed by Michael Saboff.

This widens the check for 0 so that we handle that case more correctly.

  • assembler/LinkBuffer.h:

(JSC::LinkBuffer::executableOffsetFor):

10:13 AM Changeset in webkit [233014] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

CSSFontFace wastes 59KB of Vector capacity on nytimes.com
https://bugs.webkit.org/show_bug.cgi?id=186708

Reviewed by Anders Carlsson.

Most CSSFontFace have one or two CSSFontFaceSource so don't allocate
vector capacity in the default 16-size chunks.

  • css/CSSFontFace.h:
10:07 AM Changeset in webkit [233013] by rmorisset@apple.com
  • 3 edits in trunk/Tools

[WSL] Add details to the sphinx outline
https://bugs.webkit.org/show_bug.cgi?id=186310

Rubberstamped by Filip Pizlo.

Mostly improving the sphinx outline.
Also started moving the execution rules to WSL_type.ott (which will eventually become WSL.ott).
Tried formalizing the gathering of declarations into the environment, but I think I will scratch it.
It is both trivial to do (and to explain in english) and a bit of a pain to formalize.

8:51 AM Changeset in webkit [233012] by Manuel Rego Casasnovas
  • 1 edit
    1 add in trunk/Websites/webkit.org

[WPE] Add page for webkit.org
https://bugs.webkit.org/show_bug.cgi?id=186844

Reviewed by Michael Catanzaro.

  • wpe.md: Added.
6:53 AM Changeset in webkit [233011] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

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

"Too many flakiness on the tests, so the EWS bots cant process
patches correctly" (Requested by clopez on #webkit).

Reverted changeset:

"[GTK] Enable tests on the GTK EWS queue"
https://bugs.webkit.org/show_bug.cgi?id=186559
https://trac.webkit.org/changeset/232844

4:48 AM Changeset in webkit [233010] by graouts@webkit.org
  • 7 edits in trunk

[Web Animations] Make imported/mozilla/css-transitions/test_element-get-animations.html pass reliably
https://bugs.webkit.org/show_bug.cgi?id=183841
<rdar://problem/40998101>

Reviewed by Dean Jackson.

LayoutTests/imported/mozilla:

Mark progressions in the Mozilla CSS Transitions and CSS Animations tests.

  • css-animations/test_element-get-animations-expected.txt:
  • css-transitions/test_element-get-animations-expected.txt:

Source/WebCore:

We must ignore CSS Animations with "animation-name: none".

  • animation/AnimationTimeline.cpp:

(WebCore::AnimationTimeline::updateCSSAnimationsForElement):

LayoutTests:

This test now passes reliably.

4:05 AM Changeset in webkit [233009] by magomez@igalia.com
  • 2 edits in trunk/Source/WebCore

[GTK][ThreadedRendering][Nicosia] Themed elements cannot be rendered using threaded rendering
https://bugs.webkit.org/show_bug.cgi?id=186840

Reviewed by Carlos Garcia Campos.

Disable threaded rendering for GTK port.

  • platform/graphics/nicosia/NicosiaPaintingEngine.cpp:

(Nicosia::PaintingEngine::create):

3:56 AM Changeset in webkit [233008] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[GTK] ASSERTION FAILED: url == m_string in UserAgentQuirks test
https://bugs.webkit.org/show_bug.cgi?id=186838

This URL constructor expects canonicalized input, so fix the passed URL.

Patch by Rob Buis <rbuis@igalia.com> on 2018-06-20
Reviewed by Frédéric Wang.

  • TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp:

(TestWebKitAPI::TEST):

3:55 AM Changeset in webkit [233007] by rmorisset@apple.com
  • 3 edits in trunk/Tools

[WSL] Make the typing rules explicit about resolving type syntax

Rubberstamped by Filip Pizlo.

2:00 AM Changeset in webkit [233006] by Yusuke Suzuki
  • 7 edits in trunk

[GTK][WPE][Nicosia] Add name for Nicosia Painting Threads
https://bugs.webkit.org/show_bug.cgi?id=186836

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Use "PaintingThread" name.

  • platform/graphics/nicosia/NicosiaPaintingEngineThreaded.cpp:

(Nicosia::PaintingEngineThreaded::PaintingEngineThreaded):

Source/WTF:

AutomaticThread can take a name for the generated threads now.
This patch adds the above ability to WorkerPool.

  • wtf/WorkerPool.cpp:

(WTF::WorkerPool::WorkerPool):

  • wtf/WorkerPool.h:

(WTF::WorkerPool::create):
(WTF::WorkerPool::name const):

Tools:

  • TestWebKitAPI/Tests/WTF/WorkerPool.cpp:

(TestWebKitAPI::TEST):

1:23 AM Changeset in webkit [233005] by Yusuke Suzuki
  • 2 edits in trunk/Tools

[WPE] Remove warnings by setting nullptr for unused listeners
https://bugs.webkit.org/show_bug.cgi?id=186835

Reviewed by Carlos Garcia Campos.

frame, axis_source, axis_stop, and axis_discrete are unused.
Setting nullptr explicitly to remove warnings in GCC.

  • wpe/backends/WindowViewBackend.cpp:
12:07 AM Changeset in webkit [233004] by graouts@webkit.org
  • 11 edits in trunk

[Web Animations] Make imported/mozilla/css-animations/test_pseudoElement-get-animations.html pass reliably
https://bugs.webkit.org/show_bug.cgi?id=183818
<rdar://problem/40997015>

Reviewed by Dean Jackson.

LayoutTests/imported/mozilla:

Mark progressions in the Mozilla CSS Transitions and CSS Animations tests.

  • css-animations/test_pseudoElement-get-animations-expected.txt:
  • css-transitions/test_element-get-animations-expected.txt:

Source/WebCore:

We add a new opt-in flag to return sorted animations when calling AnimationTimeline::animationsForElement() so that
Element::getAnimations() can opt into returning animations sorted by the rules defined by the CSS Transitions spec.
The rule is that CSS Transitions must be sorted prior to CSS Animations and regular Web Animations, and then sorted
by the time they were generated and, if generated at the same time, sorted alphabetically based on the transitioned
property. To be able to accomodate this, we add a new generationTime() method to CSSTransition.

  • animation/AnimationTimeline.cpp:

(WebCore::AnimationTimeline::animationsForElement const):
(WebCore::AnimationTimeline::updateCSSTransitionsForElement):

  • animation/AnimationTimeline.h:
  • animation/CSSTransition.cpp:

(WebCore::CSSTransition::create):
(WebCore::CSSTransition::CSSTransition):

  • animation/CSSTransition.h:
  • dom/Element.cpp:

(WebCore::Element::getAnimations):

LayoutTests:

This test now passes reliably.

Note: See TracTimeline for information about the timeline view.