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

Timeline



Jul 11, 2020:

9:49 PM Changeset in webkit [264275] by ysuzuki@apple.com
  • 6 edits in trunk

Intl.Locale maximize, minimize should return Intl.Locale instead of String
https://bugs.webkit.org/show_bug.cgi?id=214223
<rdar://problem/65413620>

Reviewed by Ross Kirsling.

JSTests:

  • stress/intl-locale.js:

(minimize.toString):
(shouldBe):

Source/JavaScriptCore:

Intl.Locale#{maximize,minimize} should return Intl.Locale object instead of generated locale string.

We also add some protection and use jsString instead of jsNontrivialString because it would be still
possible that ICU's locale recognition and our locale interpretation do not agree each other and ICU
failed to produce locale, and then the string becomes empty. Since this is a boundary between third-party
library and JSC, and we are not ensuring our invariant inside third-party library, taking safer path makes
it better.

We also change IntlLocale#{maximize,minimize} C++ function names to maximal and minimal to align them
to the sepc's definitions.

  • runtime/IntlLocale.cpp:

(JSC::IntlLocale::maximal):
(JSC::IntlLocale::minimal):
(JSC::IntlLocale::maximize): Deleted.
(JSC::IntlLocale::minimize): Deleted.

  • runtime/IntlLocale.h:
  • runtime/IntlLocalePrototype.cpp:

(JSC::IntlLocalePrototypeFuncMaximize):
(JSC::IntlLocalePrototypeFuncMinimize):
(JSC::IntlLocalePrototypeFuncToString):
(JSC::IntlLocalePrototypeGetterBaseName):
(JSC::IntlLocalePrototypeGetterCalendar):
(JSC::IntlLocalePrototypeGetterCaseFirst):
(JSC::IntlLocalePrototypeGetterCollation):
(JSC::IntlLocalePrototypeGetterHourCycle):
(JSC::IntlLocalePrototypeGetterNumberingSystem):
(JSC::IntlLocalePrototypeGetterLanguage):
(JSC::IntlLocalePrototypeGetterScript):
(JSC::IntlLocalePrototypeGetterRegion):

9:39 PM Changeset in webkit [264274] by commit-queue@webkit.org
  • 6 edits in trunk

Unreviewed, reverting r264270.
https://bugs.webkit.org/show_bug.cgi?id=214228

Broke the build

Reverted changeset:

"Make hasher work with tuple-like classes"
https://bugs.webkit.org/show_bug.cgi?id=214224
https://trac.webkit.org/changeset/264270

7:51 PM Changeset in webkit [264273] by Fujii Hironori
  • 6 edits in trunk

[WinCairo] Conic gradients support
https://bugs.webkit.org/show_bug.cgi?id=214216

Reviewed by Sam Weinig.

.:

  • Source/cmake/OptionsWin.cmake: Turn ENABLE_CSS_CONIC_GRADIENTS on.

Source/WebCore:

  • platform/graphics/cairo/GradientCairo.cpp:

(WebCore::addConicSector): Replaced M_PI with piDouble of WTF.
(WebCore::Gradient::createPlatformGradient): Don't use C++20 designated initializers.

LayoutTests:

  • platform/wincairo/TestExpectations: Marked some conic-gradient tests Pass.
6:01 PM Changeset in webkit [264272] by weinig@apple.com
  • 16 edits
    1 delete in trunk

Reduce surface area of the ExtendedColor class to a bare minimum
https://bugs.webkit.org/show_bug.cgi?id=214204

Reviewed by Darin Adler.

Source/WebCore:

  • Add helper function to Color to operate on the underlying color type and reimplement a bunch of functionality using it, reducing the need for duplicate implementations in ExtendedColor.
  • Add constructors to Color that take extended color types, replacing the makeExtendedColor helper function.
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

Remove ExtenedColor.cpp

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::parseColorFunctionParameters):
Use new Color constructor taking ColorComponents and ColorSpace.

  • platform/graphics/Color.cpp:

(WebCore::Color::colorWithAlpha const): Reimpliment using callOnUnderlyingType.
(WebCore::Color::invertedColorWithAlpha const): Reimpliment using callOnUnderlyingType.

  • platform/graphics/Color.h:

(WebCore::Color::Color):
(WebCore::Color::hash const):
(WebCore::Color::callOnUnderlyingType const):
(WebCore::Color::toSRGBALossy const):
(WebCore::Color::setColor):
(WebCore::Color::isBlackColor):
(WebCore::Color::isWhiteColor):

  • Add new constructors taking extended color types: SRGBA<float>, LinearSRGBA<float> and DiplayP3<float>.
  • Add new function, callOnUnderlyingType, to make working with any underlying type more streamlined.
  • platform/graphics/ColorConversion.h:

(WebCore::toSRGBA):
(WebCore::toLinearSRGBA):
(WebCore::toDisplayP3):
(WebCore::toLinearDisplayP3):
(WebCore::toHSLA):
Add identity conversion functions to make implementing generic functions like Color::toSRGBALossy more
straigtforward.

  • platform/graphics/ColorSerialization.cpp:

(WebCore::serialization):
(WebCore::serializationForCSS):
(WebCore::serializationForHTML):
(WebCore::serializationForRenderTreeAsText):

  • platform/graphics/ColorSerialization.h:

Replace serialization of the ExtendedColor type itself, with serialization for the underlying color
types. Use callOnUnderlyingType to dispatch to the right one.

  • platform/graphics/ColorTypes.h:
  • Adds ComponentTraits struct to get information like min/max value of the component types.
  • Adds using ComponentType = T; to each color type, to allow easy access to the type in deduced contexts.
  • Adds static constexpr ColorSpace to each color type that currently has a ColorSpace mapping.
  • platform/graphics/ColorUtilities.h:

(WebCore::isBlack):
(WebCore::isWhite):
Add helpers to implement Color::isBlack/Color::isWhiteColor for each color type.

  • platform/graphics/ExtendedColor.cpp: Removed.
  • platform/graphics/ExtendedColor.h:

(WebCore::ExtendedColor::create):
(WebCore::ExtendedColor::ExtendedColor):
(WebCore::ExtendedColor::callOnUnderlyingType const):
(WebCore::ExtendedColor::toSRGBALossy const): Deleted.
Reduce down to just construction, member access and the callOnUnderlyingType helper.
In future revisions, ExtendedColor should be converted to an internal class of Color.

  • platform/graphics/gtk/ColorGtk.cpp:

(WebCore::Color::Color):

  • platform/graphics/win/ColorDirect2D.cpp:

(WebCore::Color::Color):
Update to use constructor delegation.

Tools:

  • TestWebKitAPI/Tests/WebCore/ExtendedColorTests.cpp:

(TestWebKitAPI::TEST):
(TestWebKitAPI::makeColor):
Update using new Color constructor for extended colors.

3:38 PM Changeset in webkit [264271] by Darin Adler
  • 21 edits in trunk/Source

Remove live ranges from AccessibilityObject.h, AccessibilityObjectInterface.h, AccessibilityRenderObject.h, AXIsolatedObject.h
https://bugs.webkit.org/show_bug.cgi?id=214215

Reviewed by Sam Weinig.

Source/WebCore:

Also use the IntPoint and LayoutPoint center() functions instead of rolling our own.

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::misspellingRange const): Return SimpleRange. Also
renamed from getMisspellingRange.
(WebCore::rangeClosestToRange): Take and return SimpleRange.
(WebCore::AccessibilityObject::rangeOfStringClosestToRangeInDirection const): Ditto.
(WebCore::AccessibilityObject::elementRange const): Return SimpleRange.
(WebCore::AccessibilityObject::findTextRange const): Take and return SimpleRange.
(WebCore::AccessibilityObject::findTextRanges const): Ditto.
(WebCore::AccessibilityObject::performTextOperation): Use SimpleRange.
(WebCore::AccessibilityObject::clickPoint): Use center().
(WebCore::AccessibilityObject::rangeForPlainTextRange const): Return SimpleRange.
(WebCore::AccessibilityObject::stringForRange const): Take SimpleRange.
(WebCore::AccessibilityObject::stringForVisiblePositionRange): Use SimpleRange.
(WebCore::AccessibilityObject::lengthForVisiblePositionRange const): Ditto.
(WebCore::AccessibilityObject::replaceTextInRange): Use SimpleRange.

  • accessibility/AccessibilityObject.h: Update for above.
  • accessibility/AccessibilityObjectInterface.h: Take and return SimpleRange.
  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::linkClickPoint): Use SimpleRange.
(WebCore::AccessibilityRenderObject::clickPoint): Ditto.
(WebCore::AccessibilityRenderObject::setSelectedTextRange): Ditto.
(WebCore::AccessibilityRenderObject::boundsForRange const): Take SimpleRange.
(WebCore::AccessibilityRenderObject::setSelectedVisiblePositionRange const):
Use SimpleRange.
(WebCore::AccessibilityRenderObject::doAXBoundsForRangeUsingCharacterOffset const):
Use SimpleRange.

  • accessibility/AccessibilityRenderObject.h: Update for above.
  • accessibility/atk/WebKitAccessibleInterfaceText.cpp: Include Range.h.
  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper stringForTextMarkers:]): Use SimpleRange.
(-[WebAccessibilityObjectWrapper textMarkerRange]): Ditto.
(-[WebAccessibilityObjectWrapper stringForRange:]): Ditto.
(-[WebAccessibilityObjectWrapper misspellingTextMarkerRange:forward:]): Ditto.
(-[WebAccessibilityObjectWrapper frameForTextMarkers:]): Ditto.

  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::stringForRange const): Take SimpleRange.
(WebCore::AXIsolatedObject::findTextRanges const): Return SimpleRange.

  • accessibility/isolatedtree/AXIsolatedObject.h: Update for above.
  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(accessibilityTextOperationForParameterizedAttribute): Use SimpleRange.
(-[WebAccessibilityObjectWrapper doAXAttributedStringForRange:]): Ditto.
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]): Ditto.

  • dom/Range.cpp:

(WebCore::makeSimpleRange): Added.

  • dom/Range.h: Added makeSimpleRange so we can explicitly convert from

live ranges to simple ranges.

  • editing/Editing.cpp:

(WebCore::indexForVisiblePosition): Use separate returns for start and end.

  • editing/TextCheckingHelper.cpp:

(WebCore::TextCheckingParagraph::offsetTo const): Ditto.
(WebCore::TextCheckingParagraph::automaticReplacementStart const): Ditto.

  • page/FocusController.cpp:

(WebCore::updateFocusCandidateIfNeeded): Use center().

Source/WebKit:

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::requestDocumentEditingContext): Use nested if for start and end
so we don't do the work on end if the test fails on start.

Source/WTF:

  • wtf/cocoa/VectorCocoa.h: Added a new makeVector that takes a function.

Also updated createNSArray to use std::invoke.

3:12 PM Changeset in webkit [264270] by weinig@apple.com
  • 6 edits in trunk

Make hasher work with tuple-like classes
https://bugs.webkit.org/show_bug.cgi?id=214224

Reviewed by Darin Adler.

Source/WTF:

  • wtf/Hasher.h:

(WTF::add):
(WTF::addTupleLikeHelper):
(WTF::TypeCheckHelper<decltype): Deleted.
(WTF::addTupleHelper): Deleted.
Add support for tuple-like classes. These are classes that:

  • Have defined specializations of std::tuple_size<> and std::tuple_element<>.
  • And have either a member function named get<> or there exists a function get<>() that takes the class as argument that can be looked up via ADL.

To avoid abiguity when hashing std::array, the add() overload enabled for containers
with a begin member functions also now checks that the container is not tuple-like.
The std::pair overload is no longer needed as it will use the tuple-like one now.

  • wtf/OptionSet.h:
  • wtf/StdLibExtras.h:

Move is_type_complete_v<> from OptionSet.h to StdLibExtras.h and rename to
adhere to WebKit style as IsTypeComplete<>.

Tools:

  • TestWebKitAPI/Tests/WTF/Hasher.cpp:

Enable and extend tests for using computeHash() with user defined tuple-like classes, supporting
both the get function as a member and as a ADL-able free function.

10:55 AM Changeset in webkit [264269] by Simon Fraser
  • 7 edits
    2 adds in trunk

REGRESSION(r260276): Overflow scrolling layers misplaced inside SVG foreign object
https://bugs.webkit.org/show_bug.cgi?id=213788
<rdar://problem/65039637>

Reviewed by Zalan Bujtas.
Source/WebCore:

RenderLayers inside SVG <foreignObject> don't display correctly, so don't use
accelerated overflow scroll (which requires layers) inside <foreignObject>.

This reverts behavior to macOS Catalina behavior (i.e. as soon as the overflow
becomes scrollable, rendering problems appear), and to pre-iOS 13 behavior.

Test: fast/scrolling/overflow-inside-foreignobject.html

  • dom/Document.h:

(WebCore::Document::mayHaveRenderedSVGForeignObjects const):
(WebCore::Document::setMayHaveRenderedSVGForeignObjects):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::RenderLayer):
(WebCore::RenderLayer::addChild):
(WebCore::RenderLayer::updateAncestorDependentState):
(WebCore::RenderLayer::canUseCompositedScrolling const):

  • rendering/RenderLayer.h:
  • rendering/svg/RenderSVGForeignObject.h:
  • svg/SVGForeignObjectElement.cpp:

(WebCore::SVGForeignObjectElement::createElementRenderer):

LayoutTests:

  • fast/scrolling/overflow-inside-foreignobject-expected.html: Added.
  • fast/scrolling/overflow-inside-foreignobject.html: Added.
10:21 AM Changeset in webkit [264268] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Unreviewed, mark imported/w3c/web-platform-tests/websockets/cookies/third-party-cookie-accepted.https.html as crashing on iOS WK2 Debug.

This test has been crashing consistently since import in r264145.

  • platform/ios-wk2/TestExpectations:
8:45 AM Changeset in webkit [264267] by Alan Bujtas
  • 4 edits
    2 adds in trunk

[LFC][BFC][Min-Max width] Add support for float avoiders
https://bugs.webkit.org/show_bug.cgi?id=214220

Reviewed by Antti Koivisto.

Source/WebCore:

Test: fast/layoutformattingcontext/min-max-content-width-with-floats-simple.html

Float avoiders (including the float boxes) with infinite constraint form a horizontal float stack.
(This does not yet support clear property/non-direct children.)

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::computedIntrinsicWidthConstraints):

  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::intrinsicWidthConstraints):

LayoutTests:

  • fast/layoutformattingcontext/min-max-content-width-with-floats-simple-expected.html: Added.
  • fast/layoutformattingcontext/min-max-content-width-with-floats-simple.html: Added.

Jul 10, 2020:

11:30 PM Changeset in webkit [264266] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

[iOS] Prompt for requestStorageAccess is inverted in WKWebView
https://bugs.webkit.org/show_bug.cgi?id=214198
<rdar://problem/65369725>

Reviewed by Darin Adler.

The labels for "allow" and "deny" StorageAccess API were inverted in the WKWebView
implementation.

  • UIProcess/Cocoa/WKStorageAccessAlert.mm:

(WebKit::presentStorageAccessAlert):

10:40 PM Changeset in webkit [264265] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Unreviewed, mark a couple of user-timing WPT tests as flaky since their import in r264255.

10:36 PM Changeset in webkit [264264] by Chris Dumez
  • 3 edits in trunk/LayoutTests

Unreviewed, silence console logging in a couple of payment request WPT tests to address flakiness

9:49 PM Changeset in webkit [264263] by Chris Dumez
  • 19 edits
    7 copies
    38 moves
    235 adds
    181 deletes in trunk/LayoutTests

Resync web-platform-tests/streams from upstream
https://bugs.webkit.org/show_bug.cgi?id=214207

Reviewed by Sam Weinig.

Resync web-platform-tests/streams from upstream 859527a3513029d2.

  • resources/import-expectations.json:
  • web-platform-tests/streams/*: Updated.
9:45 PM WebKitGTK/DependenciesPolicy edited by Fujii Hironori
(diff)
9:35 PM Changeset in webkit [264262] by Chris Dumez
  • 10 edits
    1 delete in trunk

Unreviewed, reverting r264242.

Caused many crashes on iOS bots

Reverted changeset:

"JSRunLoopTimer should use WTF::RunLoop rather than custom CF
code"
https://bugs.webkit.org/show_bug.cgi?id=214102
https://trac.webkit.org/changeset/264242

9:32 PM Changeset in webkit [264261] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GTK][WPE] Unreviewed, garden failure and new passes

Payment request is not supported and a single test was being executed

Also pass 4 css-writing-modes tests that are passing since r263855.

  • platform/glib/TestExpectations:
9:30 PM Changeset in webkit [264260] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Unreviewed, mark imported/w3c/web-platform-tests/user-timing/measure_associated_with_navigation_timing.html as flaky.

This has been flaky since import in r264255.

9:22 PM Changeset in webkit [264259] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Unreviewed, mark img-aspect-ratio-lazy.tentative.html WPT test as flaky since import in r264117.

8:44 PM Changeset in webkit [264258] by beidson@apple.com
  • 2 edits in trunk/Source/WebCore

Cleanup GameController framework button binding with some constants
https://bugs.webkit.org/show_bug.cgi?id=214210

Reviewed by Darin Adler.

No new tests (No behavior change)

  • platform/gamepad/cocoa/GameControllerGamepad.mm:

(WebCore::GameControllerGamepad::setupAsExtendedGamepad): Use named constants instead of magic numbers.

8:44 PM Changeset in webkit [264257] by Chris Dumez
  • 4 edits
    8 adds
    3 deletes in trunk/LayoutTests

Resync web-platform-tests/notifications from upstream
https://bugs.webkit.org/show_bug.cgi?id=214206

Reviewed by Geoff Garen.

Resync web-platform-tests/notifications from upstream 859527a3513029d2.

  • web-platform-tests/notifications/META.yml: Added.
  • web-platform-tests/notifications/OWNERS: Removed.
  • web-platform-tests/notifications/constructor-invalid.html:
  • web-platform-tests/notifications/idlharness.https.any-expected.txt: Added.
  • web-platform-tests/notifications/idlharness.https.any.html: Added.
  • web-platform-tests/notifications/idlharness.https.any.js: Added.
  • web-platform-tests/notifications/idlharness.https.any.worker-expected.txt: Added.
  • web-platform-tests/notifications/idlharness.https.any.worker.html: Added.
  • web-platform-tests/notifications/interfaces-expected.txt: Removed.
  • web-platform-tests/notifications/interfaces.html: Removed.
  • web-platform-tests/notifications/resources/w3c-import.log:
  • web-platform-tests/notifications/w3c-import.log:
8:35 PM Changeset in webkit [264256] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Unreviewed gardening after WPT resync in r264239.

Mark one payment-request test as flaky and silence console logging for another one
to try and address flakiness.

8:23 PM Changeset in webkit [264255] by Chris Dumez
  • 17 edits
    68 adds
    5 deletes in trunk/LayoutTests/imported/w3c

Resync web-platform-tests/user-timing from upstream
https://bugs.webkit.org/show_bug.cgi?id=214208

Reviewed by Sam Weinig.

Resync web-platform-tests/user-timing from upstream 859527a3513029d2.

  • web-platform-tests/user-timing/*: Updated.
8:02 PM Changeset in webkit [264254] by Chris Dumez
  • 4 edits
    1 move
    6 adds
    3 deletes in trunk/LayoutTests/imported/w3c

Resync web-platform-tests/touch-events from upstream
https://bugs.webkit.org/show_bug.cgi?id=214209

Reviewed by Darin Adler.

Resync web-platform-tests/touch-events from upstream 859527a3513029d2.

  • web-platform-tests/touch-events/META.yml: Added.
  • web-platform-tests/touch-events/OWNERS: Removed.
  • web-platform-tests/touch-events/create-touch-touchlist-expected.txt: Removed.
  • web-platform-tests/touch-events/create-touch-touchlist.html: Removed.
  • web-platform-tests/touch-events/historical.html:
  • web-platform-tests/touch-events/idlharness.window-expected.txt: Added.
  • web-platform-tests/touch-events/idlharness.window.html: Added.
  • web-platform-tests/touch-events/idlharness.window.js: Added.
  • web-platform-tests/touch-events/support/touch.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/touch-events/touch-support.js.
  • web-platform-tests/touch-events/support/w3c-import.log: Added.
  • web-platform-tests/touch-events/touch-touchevent-constructor.html:
  • web-platform-tests/touch-events/w3c-import.log:
7:37 PM Changeset in webkit [264253] by Fujii Hironori
  • 2 edits in trunk/Tools

[TestWebKitAPI][Win] Remove WEBCORE_EXPORT and WEBCORE_TESTSUPPORT_EXPORT definitions in PlatformWin.cmake
https://bugs.webkit.org/show_bug.cgi?id=214212

Reviewed by Don Olmstead.

Those macros should be defined only by WebCore/platform/PlatformExportMacros.h.

  • TestWebKitAPI/PlatformWin.cmake: Removed WEBCORE_EXPORT and WEBCORE_TESTSUPPORT_EXPORT.

Added STATICALLY_LINKED_WITH_WebCore=1 to TestWebCore_DEFINITIONS.

7:00 PM Changeset in webkit [264252] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Add tvOS and watchOS support to built-product-archive
https://bugs.webkit.org/show_bug.cgi?id=214214

Unreviewed infrastructure fix.

  • BuildSlaveSupport/built-product-archive:

(archiveBuiltProduct):
(extractBuiltProduct):

6:24 PM Changeset in webkit [264251] by Darin Adler
  • 2 edits in trunk/Source/WebCore

Fix build for PLATFORM(IOS_FAMILY) && !ENABLE(REVEAL), for example, tvOS

  • editing/cocoa/DictionaryLookup.mm: Added include of "SimpleRange.h".
6:16 PM Changeset in webkit [264250] by Alan Coon
  • 1 copy in tags/Safari-610.1.22

Tag Safari-610.1.22.

6:11 PM Changeset in webkit [264249] by Darin Adler
  • 2 edits in trunk/Source/WebCore

Fix build for PLATFORM(IOS_FAMILY) && !ENABLE(REVEAL), for example tvOS

  • editing/cocoa/DictionaryLookup.mm:

(WebCore::DictionaryLookup::rangeForSelection): Update to return SimpleRange.
(WebCore::DictionaryLookup::rangeAtHitTestResult): Ditto.

5:30 PM Changeset in webkit [264248] by Wenson Hsieh
  • 4 edits in trunk

[iOS] Prevent SPI clients from making the minimum layout height or width negative
https://bugs.webkit.org/show_bug.cgi?id=214199
<rdar://problem/64109242>

Reviewed by Tim Horton.

Source/WebKit:

It's an error in the embedding client to override the minimum layout size with a negative width or height (in
this case, Mail on iOS). This happens when double tapping on a contact pill in the "To:" line in Mail compose,
which causes the top content inset of the web view's scroll view to increase such that Mail's logic for
overriding layout width ends up passing a negative height.

After a recent change (<https://trac.webkit.org/r261874>), this now results in the web view immediately
scrolling to an incorrect content offset when rotating into landscape mode after double tapping a contact. Fix
this by clamping the overridden layout size to a minimum of (0, 0), to prevent SPI clients from triggering
subtle bugs like this in the future.

Test: WebKit.OverrideMinimumLayoutSizeWithNegativeHeight

  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _overrideLayoutParametersWithMinimumLayoutSize:maximumUnobscuredSizeOverride:]):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/FixedLayoutSize.mm:
4:59 PM Changeset in webkit [264247] by Darin Adler
  • 20 edits in trunk/Source

Remove live ranges from Document.h, AlternativeTextController.h, DictionaryLookup.h, and WebPage.h
https://bugs.webkit.org/show_bug.cgi?id=214109

Reviewed by Sam Weinig.

Source/WebCore:

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::characterOffsetForPoint): Updated to call
caretPositionFromPoint, internal function, instead of caretRangeFromPoint,
public DOM function.

  • dom/Document.cpp:

(WebCore::Document::Document): Changed documentClasses argument to DocumentClassFlags.
(WebCore::Document::caretRangeFromPoint): Refactored so this calls createLiveRange,
since it's a DOM function that returns a live range.
(WebCore::Document::caretPositionFromPoint): Renamed so this is not just an overload
and changed to return a BoundaryPoint rather than a live range.

  • dom/Document.h: Simplified forward declarations by getting rid of all the conditionals.

Tweaked a few typedef things. Updated for the changes above.

  • editing/AlternativeTextController.cpp:

(WebCore::AlternativeTextController::startAlternativeTextUITimer): Updated since
m_rangeWithAlternative is an Optional<SimpleRange>.
(WebCore::AlternativeTextController::stopAlternativeTextUITimer): Ditto.
(WebCore::AlternativeTextController::applyPendingCorrection): Ditto.
(WebCore::AlternativeTextController::hasPendingCorrection const): Ditto.
(WebCore::AlternativeTextController::isSpellingMarkerAllowed const): Take SimpleRange.
(WebCore::AlternativeTextController::show): Ditto.
(WebCore::AlternativeTextController::applyAutocorrectionBeforeTypingIfAppropriate):
Updated since m_rangeWithAlternative is an Optional<SimpleRange>.
(WebCore::AlternativeTextController::timerFired): Ditto.
(WebCore::AlternativeTextController::handleAlternativeTextUIResult): Ditto.
(WebCore::AlternativeTextController::markReversed): Take SimpleRange.
(WebCore::AlternativeTextController::markCorrection): Ditto.
(WebCore::AlternativeTextController::recordSpellcheckerResponseForModifiedCorrection): Ditto.
(WebCore::AlternativeTextController::processMarkersOnTextToBeReplacedByResult): Ditto.
(WebCore::AlternativeTextController::respondToMarkerAtEndOfWord): Use SimpleRange
instead of a live range.
(WebCore::AlternativeTextController::applyAlternativeTextToRange): Take SimpleRange.

  • editing/AlternativeTextController.h: Use SimpleRange instead of live ranges.
  • editing/cocoa/DictionaryLookup.mm:

(WebCore::DictionaryLookup::rangeForSelection): Return SimpleRange.
(WebCore::DictionaryLookup::rangeAtHitTestResult): Ditto.
(WebCore::showPopupOrCreateAnimationController): Renamed type from RevealView to CocoaView.
(WebCore::DictionaryLookup::showPopup): Ditto.

  • editing/mac/DictionaryLookup.h: Simplified header since it is included only from

Objective-C files. Use SimpleRange instead of live ranges.

  • editing/mac/DictionaryLookupLegacy.mm:

(WebCore::DictionaryLookup::rangeForSelection): Return SimpleRange.
(WebCore::DictionaryLookup::rangeAtHitTestResult): Ditto.

  • page/mac/EventHandlerMac.mm:

(WebCore::EventHandler::selectClosestWordFromHitTestResultBasedOnLookup): Updated
since DictionaryLookup::rangeAtHitTestResult returns SimpleRange.
(WebCore::autoscrollAdjustmentFactorForScreenBoundaries): Use constexpr instead of
macros for constants.

  • testing/Internals.mm:

(WebCore::Internals::rangeForDictionaryLookupAtLocation): Updated
since DictionaryLookup::rangeAtHitTestResult returns SimpleRange.
(WebCore::Internals::encodedPreferenceValue): Removed unneeded error local, and
fixed formatting.

Source/WebKit:

  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:

(-[WKWebProcessPlugInBrowserContextController selectedRange]): Updated since
WebPage::currentSelectionAsRange returns SimpleRange.

  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::performDictionaryLookupAtLocation): Updated since
DictionaryLookup::rangeAtHitTestResult returns SimpleRange.
(WebKit::WebPage::performDictionaryLookupForSelection): Updated since
DictionaryLookup::rangeForSelection returns SimpleRange.
(WebKit::WebPage::performDictionaryLookupForRange): Take SimpleRange.
(WebKit::WebPage::dictionaryPopupInfoForRange): Ditto.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::currentSelectionAsRange): Return SimpleRange.

  • WebProcess/WebPage/WebPage.h: Use SimpleRange instead of live ranges.
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::selectWithGesture): Updated since m_startingGestureRange
is SimpleRange.
(WebKit::WebPage::clearSelection): Ditto.
(WebKit::WebPage::rangeForGranularityAtPoint): Return SimpleRange.
(WebKit::WebPage::selectTextWithGranularityAtPoint): Update since
rangeForGranularityAtPoint returns SimpleRange.
(WebKit::WebPage::updateSelectionWithExtentPointAndBoundary): Use
SimpleRange.
(WebKit::WebPage::updateSelectionWithExtentPoint): Use auto.

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::performImmediateActionHitTestAtLocation): Update
since lookupTextAtLocation returns SimpleRange.
(WebKit::WebPage::lookupTextAtLocation): Return SimpleRange.

Source/WebKitLegacy/mac:

  • WebView/WebImmediateActionController.mm:

(-[WebImmediateActionController _animationControllerForText]): Update since
DictionaryLookup::rangeAtHitTestResult returns SimpleRange.

4:34 PM Changeset in webkit [264246] by beidson@apple.com
  • 6 edits in trunk/Source

GameController.framework gamepads should support Home buttons.
<rdar://problem/63500696> and https://bugs.webkit.org/show_bug.cgi?id=212933

Reviewed by Tim Horton.

Source/WebCore:

No new tests (Cannot yet drive GameController framework directly in tests)

  • platform/gamepad/cocoa/GameControllerGamepad.mm:

(WebCore::homeButtonFromExtendedGamepad): Try a few different techniques of extracting the home button

from a GCExtendedGamepad.

(WebCore::GameControllerGamepad::setupAsExtendedGamepad): If there's a home button, put it at button index 16,

defined by the spec as "Center button in center cluster"

  • platform/gamepad/cocoa/GameControllerSoftLink.h:
  • platform/gamepad/cocoa/GameControllerSoftLink.mm:

Source/WTF:

  • wtf/PlatformHave.h:
4:07 PM Changeset in webkit [264245] by Chris Dumez
  • 36 edits
    5 moves
    33 adds
    5 deletes in trunk/LayoutTests

Resync web-platform-tests/eventsource from upstream
https://bugs.webkit.org/show_bug.cgi?id=214203

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Resync web-platform-tests/eventsource from upstream 859527a3513029d2.

  • web-platform-tests/eventsource/*: Updated.

LayoutTests:

4:07 PM Changeset in webkit [264244] by Chris Dumez
  • 18 edits
    2 moves
    196 adds in trunk/LayoutTests/imported/w3c

Resync web-platform-tests/shadow-dom from upstream
https://bugs.webkit.org/show_bug.cgi?id=214201

Reviewed by Sam Weinig.

Resync web-platform-tests/shadow-dom from upstream 859527a3513029d2.

  • web-platform-tests/shadow-dom/*: Updated.
3:42 PM Changeset in webkit [264243] by Chris Fleizach
  • 2 edits in trunk/Source/WebCore

AX: Build failure for catalyst
https://bugs.webkit.org/show_bug.cgi?id=214202
<rdar://problem/65366125>

Reviewed by Zalan Bujtas.

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper accessibilityIsInDescriptionListTerm]):
(-[WebAccessibilityObjectWrapper accessibilityIsInDescriptionListDefinition]):

3:00 PM Changeset in webkit [264242] by ggaren@apple.com
  • 10 edits
    1 add in trunk

Source/JavaScriptCore:
JSRunLoopTimer should use WTF::RunLoop rather than custom CF code
https://bugs.webkit.org/show_bug.cgi?id=214102

Reviewed by Darin Adler.

The generic RunLoop codepath was already mostly right. Just needed to
clarify the API to demonstrate that VMs do not hop from one RunLoop
to another.

  • runtime/JSRunLoopTimer.cpp:

(JSC::epochTime): Removed the CF path.

(JSC::JSRunLoopTimer::Manager::PerVMData::PerVMData): Include a RunLoop
as a constructor argument so that the web thread can override it.

(JSC::JSRunLoopTimer::Manager::timerDidFireCallback): Removed the CF path.

(JSC::JSRunLoopTimer::Manager::PerVMData::~PerVMData): No need to
explicitly clear our RunLoop -- the RunLoop::Timer destructor will do
the job.

(JSC::JSRunLoopTimer::Manager::timerDidFire):
(JSC::JSRunLoopTimer::Manager::registerVM):
(JSC::JSRunLoopTimer::Manager::scheduleTimer):
(JSC::JSRunLoopTimer::Manager::cancelTimer): Removed the CF path.

(JSC::JSRunLoopTimer::Manager::PerVMData::setRunLoop): Deleted.
(JSC::JSRunLoopTimer::Manager::didChangeRunLoop): Deleted. Changing
RunLoops is not actually a feature we use.

  • runtime/JSRunLoopTimer.h:

(JSC::JSRunLoopTimer::Manager::PerVMData::PerVMData): Deleted.

  • runtime/PromiseTimer.cpp:

(JSC::PromiseTimer::doWork):
(JSC::PromiseTimer::runRunLoop): Removed the CF path.

  • runtime/VM.cpp:

(JSC::VM::VM):
(JSC::VM::create):
(JSC::VM::setRunLoop): Deleted.

  • runtime/VM.h:

(JSC::VM::runLoop const): Require a RunLoop in the VM constructor in
order to clarify that we always know our RunLoop and never change it.

Source/WebCore:
JSRunLoopTimer should use WTF::RunLoop rather than custom CF code
https://bugs.webkit.org/show_bug.cgi?id=214102

Reviewed by Darin Adler.

  • bindings/js/CommonVM.cpp:

(WebCore::commonVMSlow): Supply a RunLoop at construction time since
JSC requires that now.

Tools:
Add some testing for JSRunLoopTimer
https://bugs.webkit.org/show_bug.cgi?id=214193

Reviewed by Darin Adler.

Add some test coverage to JSRunLoopTimer since I'm changing it.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/JavaScriptCore/JSRunLoopTimer.mm: Added.

(-[TestObject dealloc]):
(TestWebKitAPI::TEST):

2:57 PM Changeset in webkit [264241] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Removing usage of "using namespace WebCore" from TextTrackRepresentationCocoa.mm
https://bugs.webkit.org/show_bug.cgi?id=214196

Patch by Guowei Yang <guowei_yang@apple.com> on 2020-07-10
Reviewed by Tim Horton.

The line "using namespace WebCore" will cause problems
when compiling unified source. Removing this line and
replace it with WebCore::prefix and namespace WebCore{ }
to enclose C++ calls.

No new tests are requied as this is a code style fix

  • platform/graphics/cocoa/TextTrackRepresentationCocoa.mm: removed usage of "using namespace WebCore" to avoid future errors while compiling

(-[WebCoreTextTrackRepresentationCocoaHelper initWithParent:]): added "WebCore::" prefix
(-[WebCoreTextTrackRepresentationCocoaHelper setParent:]): ditto
(-[WebCoreTextTrackRepresentationCocoaHelper parent]): ditto
(TextTrackRepresentation::create): enclosed inside namespace WebCore{ }
(TextTrackRepresentationCocoa::TextTrackRepresentationCocoa): Deleted.

enclosed inside namespace WebCore{ }

(TextTrackRepresentationCocoa::~TextTrackRepresentationCocoa): ditto
(TextTrackRepresentationCocoa::update): ditto
(TextTrackRepresentationCocoa::setContentScale): ditto
(TextTrackRepresentationCocoa::setHidden const): ditto
(TextTrackRepresentationCocoa::bounds const): ditto
(TextTrackRepresentationCocoa::boundsChanged): ditto

2:54 PM Changeset in webkit [264240] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Unreviewed, Mark WebRTC WPT test as flaky.

It has been flaky since import in r264202.

2:48 PM Changeset in webkit [264239] by Chris Dumez
  • 60 edits
    1 copy
    7 moves
    25 adds in trunk/LayoutTests

Resync web-platform-tests/payment-request from upstream
https://bugs.webkit.org/show_bug.cgi?id=214167

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Resync web-platform-tests/payment-request from upstream cef93b58e7cf31f1d47c.

  • resources/resource-files.json:
  • web-platform-tests/payment-request/*: Updated.

LayoutTests:

  • tests-options.json:
1:24 PM Changeset in webkit [264238] by commit-queue@webkit.org
  • 4 edits in trunk/Source/ThirdParty/ANGLE

Remove glBindFramebuffer flush workaround from ANGLE
https://bugs.webkit.org/show_bug.cgi?id=214104

Patch by Kenneth Russell <kbr@chromium.org> on 2020-07-10
Reviewed by Dean Jackson.

Remove this driver bug workaround, which very likely had no
effect, and which was never upstreamed to ANGLE.

  • include/platform/FeaturesGL.h:
  • src/libANGLE/renderer/gl/StateManagerGL.cpp:

(rx::StateManagerGL::bindFramebuffer):

  • src/libANGLE/renderer/gl/renderergl_utils.cpp:

(rx::nativegl_gl::InitializeFeatures):

1:13 PM Changeset in webkit [264237] by Peng Liu
  • 2 edits in trunk/Source/WebCore

MobileSafari rotates its scene to portrait upside down if it has a PiP on screen
https://bugs.webkit.org/show_bug.cgi?id=214169

Reviewed by Jer Noble.

The UIViewController for video fullscreen/picture-in-picture should not ignore
the App's supported orientations when the video element is in picture-in-picture.

  • platform/ios/VideoFullscreenInterfaceAVKit.mm:

(VideoFullscreenInterfaceAVKit::doSetup):

1:04 PM Changeset in webkit [264236] by Fujii Hironori
  • 6 edits in trunk

[WinCairo] WOFF2 font support
https://bugs.webkit.org/show_bug.cgi?id=214174

Reviewed by Per Arne Vollan.

.:

  • Source/cmake/OptionsWinCairo.cmake: Unmarked fast/text/woff2-totalsfntsize.html and fast/text/woff2.html.

Source/WebCore:

  • PlatformWinCairo.cmake: Added additional libraries for static WOFF2 library to WebCore_LIBRARIES.
  • platform/graphics/win/FontCustomPlatformDataCairo.cpp:

(WebCore::FontCustomPlatformData::supportsFormat): Added woff2.

12:56 PM Changeset in webkit [264235] by Chris Fleizach
  • 7 edits
    2 adds in trunk

AX: iOS VoiceOver should support definition lists
https://bugs.webkit.org/show_bug.cgi?id=210214
<rdar://problem/61478299>

Reviewed by Darin Adler.

Source/WebCore:

Expose bits to make definition lists accessibility on iOS.

Test: accessibility/ios-simulator/definition-list.html

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper _accessibilityDescriptionListAncestor]):
(-[WebAccessibilityObjectWrapper accessibilityIsInDescriptionListTerm]):
(-[WebAccessibilityObjectWrapper accessibilityIsInDescriptionListDefinition]):

LayoutTests:

  • accessibility/ios-simulator/definition-list.html: Added.
12:25 PM Changeset in webkit [264234] by dino@apple.com
  • 1 edit in trunk/WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme

Another attempt to fix the Xcode Workspace by ensuring that ANGLE builds the correct things.

  • WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:
12:03 PM Changeset in webkit [264233] by Lauro Moura
  • 2 edits in trunk/LayoutTests

Unreviewed, GTK/WPE debug crash gardening

  • platform/glib/TestExpectations:
11:51 AM Changeset in webkit [264232] by beidson@apple.com
  • 11 edits in trunk/Source

Limit MultiGamepadProvider to Catalina and Big Sur.
https://bugs.webkit.org/show_bug.cgi?id=214190

Unreviewed build fix.

Source/WebCore:

  • platform/gamepad/cocoa/GameControllerSPI.h:
  • platform/gamepad/cocoa/GameControllerSoftLink.h:
  • platform/gamepad/cocoa/GameControllerSoftLink.mm:
  • platform/gamepad/mac/HIDGamepadProvider.mm:

(WebCore::HIDGamepadProvider::deviceAdded):

  • platform/gamepad/mac/MultiGamepadProvider.h:
  • platform/gamepad/mac/MultiGamepadProvider.mm:

Source/WebKit:

  • UIProcess/Gamepad/cocoa/UIGamepadProviderCocoa.mm:

(WebKit::UIGamepadProvider::platformSetDefaultGamepadProvider):

10:54 AM Changeset in webkit [264231] by Philippe Normand
  • 2 edits in trunk/LayoutTests

Unreviewed, GTK/WPE gardening

  • platform/glib/TestExpectations: Mark a few GStreamer-related tests as crashing on Debug.
10:36 AM Changeset in webkit [264230] by weinig@apple.com
  • 13 edits in trunk/Source/WebCore

Part 4 of SimpleColor and SRGBA<uint8_t> are essentially the same - let's converge them
https://bugs.webkit.org/show_bug.cgi?id=214158

Reviewed by Darin Adler.

Removes SimpleColor!

Alas, makeSimpleColor() remains for now, seeking a new name in a follow up.

  • platform/graphics/SimpleColor.h:

(WebCore::SimpleColor::SimpleColor): Deleted.
(WebCore::SimpleColor::alphaComponent const): Deleted.
(WebCore::SimpleColor::alphaComponentAsFloat const): Deleted.
(WebCore::SimpleColor::isOpaque const): Deleted.
(WebCore::SimpleColor::isVisible const): Deleted.
(WebCore::SimpleColor::colorWithAlpha const): Deleted.
(WebCore::SimpleColor::invertedColorWithAlpha const): Deleted.
(WebCore::SimpleColor::asSRGBA const): Deleted.
(WebCore::SimpleColor::get const): Deleted.
(): Deleted.
(WebCore::operator==): Deleted.
(WebCore::operator!=): Deleted.
Remove the SimpleColor class.

  • platform/graphics/Color.cpp:

(WebCore::Color::operator=):
(WebCore::Color::lightened const):
(WebCore::Color::darkened const):
(WebCore::Color::colorWithAlpha const):
(WebCore::Color::invertedColorWithAlpha const):
(WebCore::Color::colorSpaceAndComponents const):

  • platform/graphics/Color.h:

(WebCore::Color::isHashTableDeletedValue const):
(WebCore::Color::isValid const):
(WebCore::Color::isSemantic const):
(WebCore::Color::isOpaque const):
(WebCore::Color::isVisible const):
(WebCore::Color::alpha const):
(WebCore::Color::alphaAsFloat const):
(WebCore::Color::isExtended const):
(WebCore::Color::isInline const):
(WebCore::Color::tagAsSemantic):
(WebCore::Color::tagAsValid):
(WebCore::operator==):
(WebCore::equalIgnoringSemanticColor):
(WebCore::Color::Color):
(WebCore::Color::~Color):
(WebCore::Color::hash const):
(WebCore::Color::toSRGBALossy const):
(WebCore::Color::asInline const):
(WebCore::Color::setInlineColor):
(WebCore::Color::setExtendedColor):
(WebCore::Color::isBlackColor):
(WebCore::Color::isWhiteColor):
(WebCore::Color::encode const):
(WebCore::Color::isSimple const): Deleted.
(WebCore::Color::asSimple const): Deleted.
(WebCore::Color::setSimpleColor): Deleted.

  • Rename existing uses of Simple with Inline, denoting the inline SRGBA<uint8_t>.
  • Move multiline functions out of line in the header.
  • Adds new constructor functions taking Optional<SRGBA<uint8_t>> to make Color(CGColorRef) constructors more straightforward.
  • Replaces uses of SimpleColor's interface with use of ColorUtilities.h helpers. e.g. Color::invertedColorWithAlpha() now uses the new invertedColorWithOverridenAlpha() helper function. Use of these utilities will be expanded to ExtendedColor in a follow up, allowing us to have just one implementation of these algorithms.
  • platform/graphics/ColorSerialization.cpp:

(WebCore::serializationForCSS):
(WebCore::serializationForHTML):
(WebCore::serializationForRenderTreeAsText):

  • platform/graphics/ColorSerialization.h:

Replace serialization of SimpleColor with serialization of SRGBA<uint8_t>.

  • platform/graphics/ColorTypes.h:

(WebCore::forEachNonAlphaComponent): Deleted.
Removed forEachNonAlphaComponent. Uses replaced by new colorByModifingEachNonAlphaComponent
function in ColorUtilities.h

  • platform/graphics/ColorUtilities.h:

(WebCore::colorByModifingEachNonAlphaComponent):
(WebCore::convertComponentByteTo<uint8_t>):
(WebCore::convertComponentByteTo<float>):
(WebCore::convertComponentFloatTo<uint8_t>):
(WebCore::convertComponentFloatTo<float>):
(WebCore::colorWithOverridenAlpha):
(WebCore::invertComponent):
(WebCore::invertedColorWithOverridenAlpha):
Added heplers to implement color mutation behaviors.

  • platform/graphics/cg/ColorCG.cpp:

(WebCore::makeSimpleColorFromCGColor):
(WebCore::Color::Color):
(WebCore::cachedCGColor):
Switch makeSimpleColorFromCGColor to return an Optional<SRGBA<uint8_t>> to streamline
the constructors. Update to use is/asInline functions.

  • platform/graphics/mac/ColorMac.mm:

(WebCore::nsColor):
Update to use is/asInline functions.

  • platform/graphics/filters/FilterOperation.cpp:

(WebCore::BasicComponentTransferFilterOperation::transformColor const):
Switch to using colorByModifingEachNonAlphaComponent().

10:21 AM Changeset in webkit [264229] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[EWS] layout-test results shouldn't be hosted on ews server
https://bugs.webkit.org/show_bug.cgi?id=201937

Rubber-stamped by Alexey Proskuryakov.

  • BuildSlaveSupport/ews-build/steps.py:

(ExtractTestResults.resultDirectoryURL):

  • BuildSlaveSupport/ews-build/steps_unittest.py:
10:16 AM Changeset in webkit [264228] by Alan Coon
  • 1 copy in tags/Safari-610.1.21.0.3

Tag Safari-610.1.21.0.3.

10:07 AM Changeset in webkit [264227] by Alan Coon
  • 8 edits in branches/safari-610.1.21.0-branch/Source

Versioning.

WebKit-610.1.21.0.3

9:59 AM Changeset in webkit [264226] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

[GStreamer] Unreviewed, prospective API test bot fix...

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::setVolume): I suppose changing the audio volume to 0 wasn't intended :)

9:38 AM Changeset in webkit [264225] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

Unreviewed, remove debug printf after r264219.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::MediaPlayerPrivateGStreamer):

9:36 AM Changeset in webkit [264224] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

[IPC hardening] Use MESSAGE_CHECK in WebPageProxy::setColorPickerColor()
https://bugs.webkit.org/show_bug.cgi?id=214168
<rdar://problem/58632672>

Reviewed by David Kilzer.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setColorPickerColor): Replace ASSERT with
MESSAGE_CHECK.

9:15 AM Changeset in webkit [264223] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Unreviewed, skip imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-operations.https.html in Debug.

This test has been crashing in Debug since its import in r264202.

9:00 AM Changeset in webkit [264222] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Unreviewed, mark imported/w3c/web-platform-tests/webrtc/protocol/split.https.html as flaky.

It has been flaky since import in r264202.

8:44 AM Changeset in webkit [264221] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Regression (r264202): imported/w3c/web-platform-tests/html/dom/usvstring-reflection.https.html is consistently failing on mac-wk1
https://bugs.webkit.org/show_bug.cgi?id=214183
<rdar://problem/65335357>

Unreviewed, rebaseline test on mac-wk1 after resync in r264202.

  • platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/usvstring-reflection.https-expected.txt:
8:39 AM Changeset in webkit [264220] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[LFC][Floats] Normal flow element that establishes a new block formatting context must not overlap the margin box of any floats
https://bugs.webkit.org/show_bug.cgi?id=214185

Reviewed by Antti Koivisto.

Source/WebCore:

BFCs in general should avoid floats. This code was confusing the cases where the block container box (not necessarily a BFC) establishes an IFC.

<div>The div establishes an IFC only. It should not avoid floats.</div>
<div style="overflow: hidden">The div establishes both a new BFC and an IFC. It should avoid floats.</div>

Test: fast/layoutformattingcontext/float-avoider-with-inline-content.html

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::isFloatAvoider const):

LayoutTests:

  • fast/layoutformattingcontext/float-avoider-with-inline-content-expected.html: Added.
  • fast/layoutformattingcontext/float-avoider-with-inline-content.html: Added.
7:57 AM Changeset in webkit [264219] by calvaris@igalia.com
  • 33 edits
    5 copies
    7 adds in trunk

[GStreamer][EME][OpenCDM] Implement OpenCDM support
https://bugs.webkit.org/show_bug.cgi?id=213550

Reviewed by Philippe Normand.

.:

Added support to enable OpenCDM and find it it needed.

  • Source/cmake/FindOpenCDM.cmake: Added.
  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/OptionsWPE.cmake:
  • Source/cmake/WebKitFeatures.cmake:

Source/WebCore:

Implemented the OpenCDM support in the CDMOpenCDM and
CDMProxyOpenCDM related classes. CDMOpenCDM classes check for
Widevine support in OpenCDM and glues the JavaScript API to the
OpenCDM/Thunder framework. Building this is optional and --opencdm
parameter needs to be passed to build-webkit to get it.

CDMProxy related needed changes because of several reasons. First
is that Key was considering only a Vector<uint8_t> as a type and
OpenCDM has session objects. Key is also renamed to KeyHandle as
this name reflects in a better way the purpose of the class. This
bleeds out to all CDMProxy related classes. CDMInstanceSessionProxy
gets support to remove itself from the CDMSessionProxy.

Regarding ClearKey, we adapt the changes to the CDMProxy classes
and de-cable protection system from the decryptors as the OpenCDM
decryptor could handle more than one system.

No new tests. YouTube TV 2019 tests are green.

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/GStreamer.cmake:
  • platform/SharedBuffer.cpp:

(WebCore::SharedBuffer::dataAsUInt8Ptr const):

  • platform/SharedBuffer.h:
  • platform/encryptedmedia/CDMInstance.h:
  • platform/encryptedmedia/CDMOpenCDMTypes.h: Copied from Source/WebCore/platform/graphics/gstreamer/eme/CDMFactoryGStreamer.cpp.
  • platform/encryptedmedia/CDMProxy.cpp:

(WebCore::KeyHandle::idAsString const):
(WebCore::KeyHandle::takeValueIfDifferent):
(WebCore::KeyStore::containsKeyID const):
(WebCore::KeyStore::merge):
(WebCore::KeyStore::allKeysAs const):
(WebCore::KeyStore::addKeys):
(WebCore::KeyStore::add):
(WebCore::KeyStore::remove):
(WebCore::KeyStore::keyHandle const):
(WebCore::CDMProxy::keyHandle const):
(WebCore::CDMProxy::tryWaitForKeyHandle const):
(WebCore::CDMProxy::keyAvailableUnlocked const):
(WebCore::CDMProxy::keyAvailable const):
(WebCore::CDMProxy::getOrWaitForKeyHandle const):
(WebCore::CDMProxy::getOrWaitForKeyValue const):
(WebCore::CDMInstanceSessionProxy::CDMInstanceSessionProxy):
(WebCore::CDMInstanceSessionProxy::removeFromInstanceProxy):

  • platform/encryptedmedia/CDMProxy.h:

(WebCore::KeyHandle::create):
(WebCore::KeyHandle::id const):
(WebCore::KeyHandle::value const):
(WebCore::KeyHandle::value):
(WebCore::KeyHandle::isStatusCurrentlyValid):
(WebCore::KeyHandle::operator==):
(WebCore::KeyHandle::operator<):
(WebCore::KeyHandle::KeyHandle):
(WebCore::KeyStore::isEmpty const):
(WebCore::CDMProxy::instance const):
(WebCore::CDMInstanceSessionProxy::releaseDecryptionResources):
(WebCore::CDMInstanceSessionProxy::cdmInstanceProxy const):
(WebCore::CDMInstanceProxy::proxy const):
(WebCore::CDMInstanceProxy::removeSession):

  • platform/encryptedmedia/CDMUtilities.cpp: Copied from Source/WebCore/platform/graphics/gstreamer/eme/CDMFactoryGStreamer.cpp.

(WebCore::CDMUtilities::parseJSONObject):

  • platform/encryptedmedia/CDMUtilities.h: Copied from Source/WebCore/platform/graphics/gstreamer/eme/CDMFactoryGStreamer.cpp.
  • platform/encryptedmedia/clearkey/CDMClearKey.cpp:

(WebCore::parseLicenseFormat):
(WebCore::CDMPrivateClearKey::supportsInitData const):
(WebCore::CDMPrivateClearKey::sanitizeResponse const):
(WebCore::CDMInstanceSessionClearKey::updateLicense):
(WebCore::CDMInstanceSessionClearKey::removeSessionData):
(WebCore::CDMInstanceSessionClearKey::parentInstance const):

  • platform/encryptedmedia/clearkey/CDMClearKey.h:
  • platform/graphics/gstreamer/GStreamerCommon.cpp:

(WebCore::isOpenCDMRanked):
(WebCore::initializeGStreamerAndRegisterWebKitElements):
(WebCore::GstMappedBuffer::createVector):

  • platform/graphics/gstreamer/GStreamerCommon.h:

(WebCore::GstMappedBuffer::create):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::~MediaPlayerPrivateGStreamer):
(WebCore::MediaPlayerPrivateGStreamer::waitForCDMAttachment):

  • platform/graphics/gstreamer/eme/CDMFactoryGStreamer.cpp:

(WebCore::CDMFactory::platformRegisterFactories):

  • platform/graphics/gstreamer/eme/CDMOpenCDM.cpp: Added.

(openCDMLicenseType):
(WebCore::initDataMD5):
(WebCore::sessionLoadFailureFromOpenCDM):
(WebCore::OpenCDM::destructOpenCDMSession):
(WebCore::OpenCDM::createSharedOpenCDMSession):
(WebCore::CDMFactoryOpenCDM::singleton):
(WebCore::CDMFactoryOpenCDM::createCDM):
(WebCore::CDMFactoryOpenCDM::createCDMProxy):
(WebCore::CDMFactoryOpenCDM::supportedKeySystems const):
(WebCore::CDMFactoryOpenCDM::supportsKeySystem):
(WebCore::CDMPrivateOpenCDM::supportedInitDataTypes const):
(WebCore::CDMPrivateOpenCDM::supportsConfiguration const):
(WebCore::CDMPrivateOpenCDM::supportedRobustnesses const):
(WebCore::CDMPrivateOpenCDM::distinctiveIdentifiersRequirement const):
(WebCore::CDMPrivateOpenCDM::persistentStateRequirement const):
(WebCore::CDMPrivateOpenCDM::distinctiveIdentifiersAreUniquePerOriginAndClearable const):
(WebCore::CDMPrivateOpenCDM::createInstance):
(WebCore::CDMPrivateOpenCDM::loadAndInitialize):
(WebCore::CDMPrivateOpenCDM::supportsServerCertificates const):
(WebCore::CDMPrivateOpenCDM::supportsSessions const):
(WebCore::CDMPrivateOpenCDM::supportsInitData const):
(WebCore::CDMPrivateOpenCDM::sanitizeResponse const):
(WebCore::CDMPrivateOpenCDM::sanitizeSessionId const):
(WebCore::CDMInstanceOpenCDM::CDMInstanceOpenCDM):
(WebCore::CDMInstanceOpenCDM::initializeWithConfiguration):
(WebCore::CDMInstanceOpenCDM::setServerCertificate):
(WebCore::CDMInstanceOpenCDM::setStorageDirectory):
(WebCore::CDMInstanceSessionOpenCDM::CDMInstanceSessionOpenCDM):
(WebCore::CDMInstanceOpenCDM::createSession):
(WebCore::ParsedResponseMessage::ParsedResponseMessage):
(WebCore::ParsedResponseMessage::hasPayload const):
(WebCore::ParsedResponseMessage::payload const):
(WebCore::ParsedResponseMessage::payload):
(WebCore::ParsedResponseMessage::hasType const):
(WebCore::ParsedResponseMessage::type const):
(WebCore::ParsedResponseMessage::typeOr const):
(WebCore::CDMInstanceSessionOpenCDM::challengeGeneratedCallback):
(WebCore::toString):
(WebCore::CDMInstanceSessionOpenCDM::status const):
(WebCore::CDMInstanceSessionOpenCDM::keyUpdatedCallback):
(WebCore::CDMInstanceSessionOpenCDM::keysUpdateDoneCallback):
(WebCore::CDMInstanceSessionOpenCDM::errorCallback):
(WebCore::CDMInstanceSessionOpenCDM::requestLicense):
(WebCore::CDMInstanceSessionOpenCDM::sessionFailure):
(WebCore::CDMInstanceSessionOpenCDM::updateLicense):
(WebCore::CDMInstanceSessionOpenCDM::loadSession):
(WebCore::CDMInstanceSessionOpenCDM::closeSession):
(WebCore::CDMInstanceSessionOpenCDM::removeSessionData):
(WebCore::CDMInstanceSessionOpenCDM::storeRecordOfKeyUsage):
(WebCore:: const):

  • platform/graphics/gstreamer/eme/CDMOpenCDM.h: Added.

(WebCore::OpenCDM::OpenCDMSystemDeleter::operator() const):
(WebCore::OpenCDM::OpenCDMSessionDeleter::operator() const):

  • platform/graphics/gstreamer/eme/CDMProxyClearKey.cpp:

(WebCore::CDMProxyClearKey::cencSetDecryptionKey):

  • platform/graphics/gstreamer/eme/CDMProxyOpenCDM.cpp: Added.

(WebCore::CDMProxyOpenCDM::getDecryptionSession const):
(WebCore::CDMProxyOpenCDM::decrypt):

  • platform/graphics/gstreamer/eme/CDMProxyOpenCDM.h: Copied from Source/WebCore/platform/graphics/gstreamer/eme/CDMFactoryGStreamer.cpp.
  • platform/graphics/gstreamer/eme/GStreamerEMEUtilities.h:

(WebCore::InitData::InitData):
(WebCore::InitData::payload const):
(WebCore::GStreamerEMEUtilities::isWidevineKeySystem):
(WebCore::GStreamerEMEUtilities::keySystemToUuid):

  • platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:

(webkit_media_clear_key_decrypt_class_init):
(protectionSystemId):

  • platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:

(transformCaps):
(transformInPlace):

  • platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.h:
  • platform/graphics/gstreamer/eme/WebKitOpenCDMDecryptorGStreamer.cpp: Added.

(webkit_media_opencdm_decrypt_class_init):
(webkit_media_opencdm_decrypt_init):
(finalize):
(protectionSystemId):
(cdmProxyAttached):
(decrypt):

  • platform/graphics/gstreamer/eme/WebKitOpenCDMDecryptorGStreamer.h: Added.

Source/WTF:

  • wtf/PlatformEnable.h: Disable OPENCDM by default.

Tools:

Added support to build OpenCDM and its dependencies. There is an
opt in env var to get JHBuild building Thunder its Widevine
dependencies. We also include a couple of GStreamer patches needed
to get key IDs in the decryptors.

Widevine is obviously proprietary and as you need to be licensed
to access it, you need credentials to build it.

  • Scripts/webkitperl/FeatureList.pm:
  • gstreamer/jhbuild.modules:
  • gstreamer/patches/gst-plugins-bad-0006-mssdemux-parse-protection-data.patch: Added.
  • gstreamer/patches/gst-plugins-good-0002-Check-if-an-upstream-demuxer-provided-a-default-kid.patch: Added.
  • gtk/install-dependencies:
  • jhbuild/jhbuildrc_common.py:

(init):

  • wpe/install-dependencies:
7:01 AM Changeset in webkit [264218] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][TreeConstruction] Create block level container for unsupported renderer
https://bugs.webkit.org/show_bug.cgi?id=214182

Reviewed by Antti Koivisto.

It makes full LFC rendering on random pages less crashy.

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::TreeBuilder::createLayoutBox):

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

[GTK] MiniBrowser: title of back-forward menu items needs to be truncated when it's too large
https://bugs.webkit.org/show_bug.cgi?id=214180

Reviewed by Adrian Perez de Castro.

The popover menu doesn't set ellipsize on the inner label, so we need to do it manually. In the case of GTK4 we
also need to markup escape it.

  • MiniBrowser/gtk/BrowserWindow.c:

(browserWindowCreateBackForwardMenu):

5:47 AM Changeset in webkit [264216] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

[GTK] Flush the cairo surface after painting when using software
https://bugs.webkit.org/show_bug.cgi?id=214177

Reviewed by Adrian Perez de Castro.

This is similar to bug #210636 but it happens under wayland when using GTK4. It's good idea to flush always
after painting in any case, so we do ity in case of GTK3 as well.

  • UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:

(WebKit::AcceleratedBackingStoreWayland::snapshot): Call cairo_surface_flush() after drawing.
(WebKit::AcceleratedBackingStoreWayland::paint): Ditto.

4:08 AM Changeset in webkit [264215] by svillar@igalia.com
  • 9 edits in trunk/Source/WebCore

[WebXR] Retrieve WebGL framebuffer resolution from XR devices
https://bugs.webkit.org/show_bug.cgi?id=213886

Reviewed by Carlos Garcia Campos.

The recommended WebGL framebuffer resolution should be retrieved from the actual XR device being used.
Implemented the OpenXR machinery to retrieve it from the XR system. We are also moving the methods that
call the platform code to the XRSession as specs define, instead of having them inside the XRWebGLLayer.

Finally this patch is also removing a unused definition in OpenXR plaform code and properly initializing
a OpenXR struct. The missing initialization was the source of errors when querying api layer properties.
The patch is also properly setting the SessionMode::Inline when XR_VIEW_CONFIGURATION_TYPE_PRIMARY_MONO
is found. It used to set SessionMode::ImmersiveAr instead, but that's wrong, we should only care about
ImmersiveAr session mode once the WebXR AR module is implemented.

  • Modules/webxr/WebXRRenderState.cpp:

(WebCore::WebXRRenderState::outputCanvas const): Return render state's canvas.

  • Modules/webxr/WebXRRenderState.h: Added a m_outputCanvas member with its getter.
  • Modules/webxr/WebXRSession.cpp:

(WebCore::WebXRSession::nativeWebGLFramebufferResolution const): Moved from WebXRWebGLLayer and reimplemented.
(WebCore::WebXRSession::recommendedWebGLFramebufferResolution const): Ditto.

  • Modules/webxr/WebXRSession.h:
  • Modules/webxr/WebXRWebGLLayer.cpp:

(WebCore::WebXRWebGLLayer::WebXRWebGLLayer):
(WebCore::WebXRWebGLLayer::getNativeFramebufferScaleFactor): Call the session to get native and recommended
resolutions.
(WebCore::WebXRWebGLLayer::computeNativeWebGLFramebufferResolution): Deleted.
(WebCore::WebXRWebGLLayer::computeRecommendedWebGLFramebufferResolution): Ditto.

  • platform/xr/PlatformXR.h:

(PlatformXR::Device::recommendedResolution): New virtual method with default implementation.

  • platform/xr/openxr/PlatformXROpenXR.cpp:

(PlatformXR::Instance::Impl::enumerateApiLayerProperties const): Added initialization of the XrApiLayerProperties
objects. The call to xrEnumerateApiLayerProperties succeeds now.
(PlatformXR::OpenXRDevice::OpenXRDevice): Call enumerateConfigurationViews().
(PlatformXR::OpenXRDevice::collectSupportedSessionModes): Fill in the m_viewConfigurationProperties map.
(PlatformXR::OpenXRDevice::enumerateConfigurationViews): New method that retrieves the XR device views for each
supported configuration.
(PlatformXR::OpenXRDevice::recommendedResolution): Return the recommended resolution for a given SessionMode.

  • platform/xr/openxr/PlatformXROpenXR.h: Added some new methods and attributes.
3:48 AM Changeset in webkit [264214] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[LFC][MarginCollapsing] Margins do not collapse through when the box has clearance.
https://bugs.webkit.org/show_bug.cgi?id=214172

Reviewed by Antti Koivisto.

Source/WebCore:

https://www.w3.org/TR/CSS22/box.html#collapsing-margins
"Two margins are adjoining if and only if: no line boxes, no clearance, no padding and no border separate them"

Only adjoining margins can collapse through.

Test: fast/layoutformattingcontext/empty-block-level-box-with-clearance.html

  • layout/blockformatting/BlockMarginCollapse.cpp:

(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginsCollapseThrough const):

LayoutTests:

  • fast/layoutformattingcontext/empty-block-level-box-with-clearance-expected.html: Added.
  • fast/layoutformattingcontext/empty-block-level-box-with-clearance.html: Added.
2:16 AM Changeset in webkit [264213] by commit-queue@webkit.org
  • 5 edits
    2 adds in trunk/Source

[GTK][WPE] Use mobile user-agent on tablet
https://bugs.webkit.org/show_bug.cgi?id=149496

Patch by Jan-Michael Brummer <jan.brummer@tabos.org> on 2020-07-10
Reviewed by Carlos Garcia Campos.

  • platform/UserAgentQuirks.cpp:

(WebCore::urlRequiresMacintoshPlatform):
(WebCore::urlRequiresLinuxDesktopPlatform):
(WebCore::UserAgentQuirks::quirksForURL):

  • platform/UserAgentQuirks.h:
  • platform/glib/UserAgentGLib.cpp:

(WebCore::getChassisType):
(WebCore::platformForUAString):
(WebCore::platformVersionForUAString):
(WebCore::buildUserAgentString):
(WebCore::standardUserAgent):
(WebCore::standardUserAgentForURL):

1:16 AM Changeset in webkit [264212] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebKit

Unreviewed. Fix GTK4 build

  • UIProcess/API/gtk/WebKitWebViewGtk.cpp:

(fileChooserDialogResponseCallback):
(webkitWebViewRunFileChooser):

  • UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:

(WebKit::AcceleratedBackingStoreWayland::snapshot):

1:01 AM Changeset in webkit [264211] by aboya@igalia.com
  • 10 edits
    2 deletes in trunk/Source/WebCore

[MSE][GStreamer] Inline MediaSourceClientGStreamerMSE away
https://bugs.webkit.org/show_bug.cgi?id=214140

Reviewed by Xabier Rodriguez-Calvar.

MediaSourceClientGStreamerMSE is a superfluous class that adds
a layer of indirection and complexity to the GStreamer MSE codebase
for no gain. This patch gets rid of it.

This also gets rid of the friend access layer violations that
MediaSourceClientGStreamerMSE relied upon.

This patch is a refactor that doesn't introduce behavior changes and
it's covered by existing tests.

  • platform/GStreamer.cmake:
  • platform/graphics/gstreamer/mse/AppendPipeline.cpp:

(WebCore::AppendPipeline::AppendPipeline):

  • platform/graphics/gstreamer/mse/AppendPipeline.h:
  • platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:

(WebCore::MediaPlayerPrivateGStreamerMSE::durationChanged):
(WebCore::MediaPlayerPrivateGStreamerMSE::setMediaSourceClient): Deleted.
(WebCore::MediaPlayerPrivateGStreamerMSE::mediaSourceClient): Deleted.

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

(WebCore::MediaPlayerPrivateGStreamerMSE::playbackPipeline const):

  • platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.cpp: Removed.
  • platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.h: Removed.
  • platform/graphics/gstreamer/mse/MediaSourcePrivateGStreamer.cpp:

(WebCore::MediaSourcePrivateGStreamer::MediaSourcePrivateGStreamer):
(WebCore::MediaSourcePrivateGStreamer::addSourceBuffer):
(WebCore::MediaSourcePrivateGStreamer::durationChanged):
(WebCore::MediaSourcePrivateGStreamer::markEndOfStream):

  • platform/graphics/gstreamer/mse/MediaSourcePrivateGStreamer.h:
  • platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp:

(WebCore::SourceBufferPrivateGStreamer::create):
(WebCore::SourceBufferPrivateGStreamer::SourceBufferPrivateGStreamer):
(WebCore::SourceBufferPrivateGStreamer::finishCreation):
(WebCore::SourceBufferPrivateGStreamer::append):
(WebCore::SourceBufferPrivateGStreamer::abort):
(WebCore::SourceBufferPrivateGStreamer::resetParserState):
(WebCore::SourceBufferPrivateGStreamer::removedFromMediaSource):
(WebCore::SourceBufferPrivateGStreamer::flush):
(WebCore::SourceBufferPrivateGStreamer::enqueueSample):
(WebCore::SourceBufferPrivateGStreamer::allSamplesInTrackEnqueued):

  • platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.h:
12:02 AM Changeset in webkit [264210] by ysuzuki@apple.com
  • 1 edit
    2 copies
    17 adds
    1 delete in trunk/Tools

Add Slack-aware WebKitBot implementation
https://bugs.webkit.org/show_bug.cgi?id=211707

Reviewed by Devin Rousso and Brian Burg.

This patch adds Slack-aware WebKitBot implementation which supports "ping", "revert", and the other commands.
I decided to implement this feature in chat-bot because of the following reasons.

  1. It is the previous way we are familiar with.
  2. Creating a revert-patch sometimes takes long time because it involves working-copy clean-up, creating a revert, generating a patch... So asynchronous request-response is better for developers who do not want to watch whether the patch is created until it is done. Chat-bot can tell us when it is ready.
  3. Requesting a revert-patch in public channel can easily tell the other developers that reverting is going on now.

We reuse python's webkit-patch create-revert command as it was in the old webkitbot. We enhance WKR bot to support webkitbot feature.
Once webkitbot app is installed into a channel, it monitors messages in the channel and works when the mention to this bot's user happens.

We use Real Time Message Slack API instead of Event API, because Event API requires public facing HTTPS server which accepts incoming webhook.
Real Time Message Slack API just requires a server app which connects to Slack via WebSocket, so it is easier to deploy for now.

The implementation of webkitbot is client-server model inside one process. There is one AsyncTaskQueue, and there is one async main loop which
takes the task from the queue and replies when it is done. Every time we noticed the request, this request queues the task to this task queue.
This design ensures that only one task is using the working-copy WebKit repository at a time, this is required to make a revert-patch without
conflict.

  • WKR/ReadMe.md: Removed.
  • WKR/WKR.mjs: Removed.
  • WKR/package-lock.json: Removed.
  • WKR/package.json: Removed.
  • WebKitBot/.eslintrc: Added.
  • WebKitBot/.gitignore: Renamed from Tools/WKR/.gitignore.
  • WebKitBot/ReadMe.md: Added.
  • WebKitBot/data/.gitignore: Renamed from Tools/WKR/data/.gitignore.
  • WebKitBot/package-lock.json: Added.
  • WebKitBot/package.json: Added.
  • WebKitBot/src/AsyncTaskQueue.mjs: Added.
  • WebKitBot/src/Commit.mjs: Added.
  • WebKitBot/src/Contributors.mjs: Added.
  • WebKitBot/src/Utility.mjs: Added.
  • WebKitBot/src/WKR.mjs: Added.
  • WebKitBot/src/WebKitBot.mjs: Added.
  • WebKitBot/src/index.mjs: Added.
  • WebKitBot/tests/Commit.test.mjs: Added.
  • WebKitBot/tests/WebKitBot.test.mjs: Added.
  • WebKitBot/tests/resources/.gitattributes: Added.
  • WebKitBot/tests/resources/HaveRadarAndBugzilla.json: Added.
  • WebKitBot/tests/resources/HavingBugzilla.json: Added.
  • WebKitBot/tests/resources/NoRadarAndBugzilla.json: Added.
Note: See TracTimeline for information about the timeline view.