WebKit-https.git
2 months agoAdd personal email to Tools/Scripts/webkitpy/common/config/contributors.json
justin_michaud@apple.com [Mon, 16 Mar 2020 23:16:55 +0000 (23:16 +0000)]
Add personal email to Tools/Scripts/webkitpy/common/config/contributors.json
https://bugs.webkit.org/show_bug.cgi?id=209151

Reviewed by Yusuke Suzuki.

* Scripts/webkitpy/common/config/contributors.json:

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

2 months ago[ Mac wk1 ] http/tests/security/clipboard/copy-paste-html-cross-origin-iframe-across...
lawrence.j@apple.com [Mon, 16 Mar 2020 23:12:15 +0000 (23:12 +0000)]
[ Mac wk1 ] http/tests/security/clipboard/copy-paste-html-cross-origin-iframe-across-origin.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=209154

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

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

2 months agoMove most of TextIterator off of live ranges
darin@apple.com [Mon, 16 Mar 2020 23:02:10 +0000 (23:02 +0000)]
Move most of TextIterator off of live ranges
https://bugs.webkit.org/show_bug.cgi?id=209129

Reviewed by Antti Koivisto.

Source/WebCore:

- Change almost all arguments and return values of functions in TextIterator.h
  to use SimpleRange instead of live ranges. Exceptions are an overload of plainText
  TextIterator::rangeLength, TextIterator::rangeFromLocationAndLength,
  TextIterator::getLocationAndLengthFromRange, and TextIterator::subrange. Those
  five are a little trickier to convert, so I will do them each in separate patches.

- Go with the flow in adding an include of Node.h to BoundaryPoint.h. I had avoided
  this in the initial version, but now it seems practical to just leave it that way.
  This led to removing BoundaryPoint.cpp and moving all functions to the header.

- Converted many member functions of the Position class from using int to unsigned
  for offsets. The DOM specifies unsigned for offsets, but for some reason we used
  int for them a lot historically, even though negative numbers don't make sense.
  New classes like StaticRange, SimpleRange, and BoundaryPoint are already using
  unsigned exclusively and we'll eventually convert everything.

- Remove includes of SimpleRange.h from files that also include TextIterator.h,
  now that TextIterator.h pulls it in.

* Sources.txt: Removed BoundaryPoint.cpp.
* WebCore.xcodeproj/project.pbxproj: Ditto.

* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::traverseToOffsetInRange): Updated to pass a reference
to a range rather than a pointer, after null-checking it.
(WebCore::AXObjectCache::lengthForRange): Ditto.
(WebCore::AXObjectCache::nextBoundary): Ditto.
(WebCore::AXObjectCache::previousBoundary): Ditto.
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::stringForRange const): Ditto.
(WebCore::AccessibilityObject::stringForVisiblePositionRange): Ditto.
(WebCore::AccessibilityObject::lengthForVisiblePositionRange const): Ditto.

* accessibility/AccessibilityObjectInterface.h: Removed an extra include.

* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper arrayOfTextForTextMarkers:attributed:]):
Updated to pass a reference to a range rather than a pointer, after null-checking it.
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper doAXAttributedStringForTextMarkerRange:spellCheck:]): Ditto.

* dom/BoundaryPoint.cpp: Removed.

* dom/BoundaryPoint.h: Removed redundant includes and forward declarations
since we're now committing to including "Node.h" here. Moved functions
all out of the .cpp file and made them inlines.

* dom/DocumentMarkerController.cpp:
(WebCore::DocumentMarkerController::collectTextRanges): Pass a reference to
a range instead of a pointer.

* dom/Position.cpp:
(WebCore::Position::Position): Take unsigned.
(WebCore::Position::moveToPosition): Ditto.
(WebCore::Position::moveToOffset): Ditto.
(WebCore::Position::parentAnchoredEquivalent const): Cast to unsigned.
(WebCore::Position::anchorTypeForLegacyEditingPosition): Take unsigned.
(WebCore::Position::previous const): Use unsigned.
(WebCore::Position::next const): Ditto.
(WebCore::Position::uncheckedPreviousOffset): Take unsigned.
(WebCore::Position::uncheckedPreviousOffsetForBackwardDeletion): Ditto.
(WebCore::Position::uncheckedNextOffset): Ditto.
(WebCore::Position::atLastEditingPositionForNode const): Cast to unsigned.
(WebCore::Position::atEndOfTree const): Ditto.
(WebCore::Position::rendersInDifferentPosition const): Added casts to
unsigned and also removed unneeded redundant checks. In a place where
we had already checked that both nodes were the same and both offsets
were different, we were checking the types of both nodes (but they are
the same so only need to check one) and we were checking that both
offsets were different (but we already knew they were different).
(WebCore::searchAheadForBetterMatch): Use unsigned.
(WebCore::Position::getInlineBoxAndOffset const): Ditto.
(WebCore::Position::equals const): Removed a cast to int.
(WebCore::makeBoundaryPoint): Moved this function here so now it can be
used in more places.

* dom/Position.h: Changed many argument types to unsigned. Moved declarations
of all the functions up above all the inline implementations of the functions
to separate interface from implementation a bit better. Wrote a FIXME about
the name createLegacyEditingPosition. Moved makeBoundaryPoint here and exported
it from WebCore so we can use it from more places.

* dom/Range.cpp:
(WebCore::createLiveRange): Moved these functions here from SimpleRange.cpp
because a live range is more advanced concept, so makes more sense for live
range to know about simple range rather than vice versa.

* dom/Range.h: Removed some unneeded includes and forward declarations.
Added a FIXME about renaming to LiveRange. Moved the createLiveRange
functions here. Moved declarations of functions above inline function bodies.

* dom/SimpleRange.cpp:
(WebCore::createLiveRange): Moved to Range.cpp.

* dom/SimpleRange.h: Exported the constructor. Removed unneeded overload
that takes a Range*.

* editing/ApplyStyleCommand.cpp:
(WebCore::ApplyStyleCommand::mergeStartWithPreviousIfIdentical):
Refactored code a bit and use unsigned.
(WebCore::ApplyStyleCommand::mergeEndWithNextIfIdentical): Use unsigned.

* editing/Editing.cpp:
(WebCore::visibleImageElementsInRangeWithNonLoadedImages): Use a reference
to a range rather than a pointer.

* editing/Editing.h: Added a forward declaration of Range that now seems to
be needed to compile.

* editing/Editor.cpp:
(WebCore::Editor::selectedText const): Call makeBoundaryPoint twice here to
convert two Position objects into a SimpleRange.

* editing/HTMLInterchange.cpp: Removed some extra includes.
(WebCore::convertHTMLTextToInterchangeFormat): Use variadic
StringBuilder::append.

* editing/TextIterator.cpp:
(WebCore::firstNode): Added. We use this instead of Range::firstNode.
If we find we need it outside TextIterator we can find a header for it.
Not sure it would be great to add it to in BoundaryPoint.h, nor is it
obviously better as a BoundaryPoint member function.
(WebCore::TextIterator::TextIterator): Cut down on the extra constructors
and have the single remaining one take a SimpleRange.
(WebCore::SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator):
Ditto. Also change some int to unsigned.
(WebCore::CharacterIterator::CharacterIterator): Ditto.
(WebCore::BackwardsCharacterIterator::BackwardsCharacterIterator): Ditto.
(WebCore::WordAwareIterator::WordAwareIterator): Ditto.
(WebCore::TextIterator::rangeLength): Since this is one of the functions
that still takes a live range pointer, updated it to check for null and
pass a reference rather than a pointer.
(WebCore::TextIterator::rangeFromLocationAndLength): Ditto.
(WebCore::hasAnyPlainText): Removed now-unneeded call to createLiveRange.
(WebCore::plainText): Updated the main implementation to take a SimpleRange,
eliminating the version that takes two Position objects, but keeping the
one that takes a live range pointer for now.
(WebCore::plainTextReplacingNoBreakSpace): Removed all but the one, and
have that one take a SimpleRange.

* editing/TextIterator.h: Removed the include of SimpleRange.h. Also
Updated for the changes above, eliminating five different constructors
that take a live range and also overloads that take two Position objects.

* editing/TextManipulationController.cpp:
(WebCore::ParagraphContentIterator::ParagraphContentIterator):
Call makeBoundaryPoint twice here to convert two Position objects into
a SimpleRange.

* editing/VisibleSelection.cpp: Removed an include.

* editing/VisibleUnits.cpp:
(WebCore::suffixLengthForRange): Pass a reference to a range known to
not be null.
(WebCore::previousBoundary): Ditto.
(WebCore::nextBoundary): Ditto.

* editing/cocoa/DataDetection.mm:
(WebCore::buildQuery): Take a SimpleRange.
(WebCore::DataDetection::detectContentInRange): Added a null check on
a live range and pass a reference to it.
* editing/cocoa/DictionaryLookup.mm:
(WebCOre::DictionaryLookup::rangeAtHitTestResult): Ditto.

* editing/cocoa/HTMLConverter.mm:
(WebCore::editingAttributedStringFromRange): Pass a reference to a range
known to not be null.
* page/TextIndicator.cpp:
(WebCore::estimatedTextColorsForRange): Ditto.
(WebCore::containsOnlyWhiteSpaceText): Ditto.
* page/ios/FrameIOS.mm:
(WebCore::Frame::interpretationsForCurrentRoot const): Ditto.

* rendering/HitTestResult.cpp:
(WebCore::HitTestResult::selectedText const): Added a null check on
a live range and pass a reference to it.

Source/WebKit:

* WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.mm:
(-[WKDOMTextIterator initWithRange:]): Leave _textIterator as a nullptr
if the passed-in range is nil since we no longer offer a way to create
an empty TextIterator; other clients don't seem to need one.
(-[WKDOMTextIterator advance]): Add a null check.
(-[WKDOMTextIterator atEnd]): Ditto.
(-[WKDOMTextIterator currentRange]): Ditto.
(-[WKDOMTextIterator currentTextPointer]): Ditto.
(-[WKDOMTextIterator currentTextLength]): Ditto.

* WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.mm: Removed include.

* WebProcess/WebPage/ViewGestureGeometryCollector.cpp:
(WebKit::ViewGestureGeometryCollector::computeTextLegibilityScales): Pass
a reference to a range known not to be null.

* WebProcess/WebPage/WebPage.cpp: Removed an include.

* WebProcess/WebPage/ios/WebPageIOS.mm: Removed a "using naemsapce WebCore".
Added two local functions
(WebKit::plainTextForContext): Added. Helper for just this file where calling
plainTextReplacingNoBreakSpace on a possibly null Range is common.
(WebKit::plainTextForDisplay): Ditto. This one passes true for isDisplayString.
Not entirely clear how carefully we chose which of the two to call, or if there
is sufficient test coverage.
(WebKit::WebPage::platformEditorState const): Use plainTextForContext
and plainTextForDisplay.
(WebKit::WebPage::getSelectionContext): Ditto.
(WebKit::WebPage::getRectsAtSelectionOffsetWithText): Use plainTextForDisplay.
(WebKit::WebPage::requestDictationContext): Use plainTextForContext.
(WebKit::WebPage::replaceSelectedText): Ditto.
(WebKit::WebPage::replaceDictatedText): Ditto.
(WebKit::WebPage::requestAutocorrectionData): Ditto.
(WebKit::WebPage::applyAutocorrectionInternal): Ditto.
(WebKit::WebPage::autocorrectionContext): Ditto.
(WebKit::dataDetectorLinkPositionInformation): Use plainTextForDisplay.
(WebKit::WebPage::requestDocumentEditingContext): Use RetainPtr instead of
autorelease. Use makeBoundaryPoint to convert Position objects to SimpleRange.

Source/WebKitLegacy/mac:

* WebView/WebFrame.mm: Removed an include.

* WebView/WebHTMLView.mm:
(-[WebHTMLView _legacyAttributedStringFrom:offset:to:offset:]):
Add casts to unsigned.

* WebView/WebTextIterator.mm:
(-[WebTextIterator initWithRange:]): Leave _private->_textIterator
as a nullptr if the passed-in range is nil since we no longer offer
a way to create an empty TextIterator; other clients don't seem to
need one.
(-[WebTextIterator advance]): Check _private->_textIterator for null.
(-[WebTextIterator atEnd]): Ditto.
(-[WebTextIterator currentRange]): Ditto.
(-[WebTextIterator currentTextPointer]): Ditto.
(-[WebTextIterator currentTextLength]): Ditto.
(-[WebTextIterator currentNode]): Ditto.
(-[WebTextIterator currentText]): Ditto.

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

2 months agoCrash in CSSValue::isPrimitiveValue
commit-queue@webkit.org [Mon, 16 Mar 2020 22:10:33 +0000 (22:10 +0000)]
Crash in CSSValue::isPrimitiveValue
https://bugs.webkit.org/show_bug.cgi?id=208309

Patch by Pinki Gyanchandani <pgyanchandani@apple.com> on 2020-03-16
Reviewed by Ryosuke Niwa.

Source/WebCore:

Added a NULL check before dereferencing value in ApplyStyleCommand::computedFontSize

Test: editing/execCommand/primitive-value.html

* editing/ApplyStyleCommand.cpp:
(WebCore::ApplyStyleCommand::computedFontSize):

LayoutTests:

Added a testcase attached to bugzilla issue 208309, with little modification.

* editing/execCommand/primitive-value-expected.txt: Added.
* editing/execCommand/primitive-value.html: Added.

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

2 months agoCrash under WebCookieCache::clearForHost()
cdumez@apple.com [Mon, 16 Mar 2020 22:04:02 +0000 (22:04 +0000)]
Crash under WebCookieCache::clearForHost()
https://bugs.webkit.org/show_bug.cgi?id=209149
<rdar://problem/60453086>

Reviewed by Alex Christensen.

Source/WebKit:

Make sure WebCookieCache::pruneCacheIfNecessary() keeps alive the host String it is passing
to WebCookieCache::clearForHost(). Previously, it was merely deferencing a HashSet iterator
and passing that to clearForHost(). However, clearForHost() would then drop the String from
the HashSet and the host would no longer be valid.

Change covered by new API test.

* WebProcess/WebPage/WebCookieCache.cpp:
(WebKit::WebCookieCache::pruneCacheIfNecessary):

Tools:

Add API test coverage.

* TestWebKitAPI/Tests/WebKitCocoa/CookiePrivateBrowsing.mm:
(TEST):

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

2 months agoRemove support for WebKitSystemInterface
krollin@apple.com [Mon, 16 Mar 2020 21:50:22 +0000 (21:50 +0000)]
Remove support for WebKitSystemInterface
https://bugs.webkit.org/show_bug.cgi?id=208894
<rdar://problem/60297590>

Reviewed by Brent Fulgham.

This project provided support for facilities that are now handled
elsewhere and is no longer needed.

.:

* .gitignore:
* Source/PlatformWin.cmake:
* Source/cmake/OptionsAppleWin.cmake:

Tools:

* Scripts/copy-webkitlibraries-to-product-directory:

WebKitLibraries:

* Makefile:
* WebKitSystemInterface.h: Removed.
* win/include/WebKitSystemInterface/WebKitSystemInterface.h: Removed.
* win/lib32/WebKitSystemInterface.lib: Removed.

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

2 months agoAlways include System.framework in WebKitLegacy's CPLUSPLUSFLAGS
timothy_horton@apple.com [Mon, 16 Mar 2020 21:41:31 +0000 (21:41 +0000)]
Always include System.framework in WebKitLegacy's CPLUSPLUSFLAGS
https://bugs.webkit.org/show_bug.cgi?id=209147

Reviewed by Darin Adler.

* Configurations/Base.xcconfig:
* Configurations/WebKitLegacy.xcconfig:
Bring WebKitLegacy's xcconfigs in line with all the other projects,
adding System.framework globally, and in Base.xcconfig.

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

2 months ago[macOS] Accessibility sandbox regressions
pvollan@apple.com [Mon, 16 Mar 2020 21:11:00 +0000 (21:11 +0000)]
[macOS] Accessibility sandbox regressions
https://bugs.webkit.org/show_bug.cgi?id=209065
Source/WebCore/PAL:

Reviewed by Brent Fulgham.

Add Accessibility notification name.

* pal/spi/cocoa/NSAccessibilitySPI.h:

Source/WebKit:

<rdar://problem/60202450>

Reviewed by Brent Fulgham.

When Accessibility is enabled, the WebContent process needs access to the preference service, since Accessibility
is relying on some advanced features of the service. Also, when CF prefs direct mode is enabled, the WebContent
sandbox needs to explicitly allow reading of the various plist files.

* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::registerNotificationObservers):
* WebProcess/com.apple.WebProcess.sb.in:

Tools:

Reviewed by Brent Fulgham.

* TestWebKitAPI/Tests/WebKit/EnableAccessibility.mm:
(TEST):
* TestWebKitAPI/Tests/WebKit/GrantAccessToPreferencesService.mm:
(TEST):

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

2 months ago[ Mac wk2 ] imported/w3c/web-platform-tests/mediacapture-streams/MediaStream tests...
lawrence.j@apple.com [Mon, 16 Mar 2020 20:54:58 +0000 (20:54 +0000)]
[ Mac wk2 ] imported/w3c/web-platform-tests/mediacapture-streams/MediaStream tests are flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=209148

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

2 months agoColor Picker crashes on touch
megan_gardner@apple.com [Mon, 16 Mar 2020 20:21:03 +0000 (20:21 +0000)]
Color Picker crashes on touch
https://bugs.webkit.org/show_bug.cgi?id=209086

Reviewed by Darin Adler.

Source/WebCore:

Vector sizing lost in refactor. Not perfomance sensitive code, so just expanding vector as needed.

Test: fast/forms/color/color-input-activate-crash.html

* html/ColorInputType.cpp:
(WebCore::ColorInputType::suggestedColors const):

LayoutTests:

* fast/forms/color/color-input-activate-crash-expected.txt: Added.
* fast/forms/color/color-input-activate-crash.html: Added.

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

2 months ago[Cocoa] Crash under -[WKPreferenceObserver init]
pvollan@apple.com [Mon, 16 Mar 2020 20:11:01 +0000 (20:11 +0000)]
[Cocoa] Crash under -[WKPreferenceObserver init]
https://bugs.webkit.org/show_bug.cgi?id=209145

Reviewed by Darin Adler.

Handle the case when calling [NSUserDefaults initWithSuiteName:] did not succeed.

No new tests, since I have not been able to reproduce.

* UIProcess/Cocoa/PreferenceObserver.mm:
(-[WKPreferenceObserver init]):

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

2 months agoIndexedDB hits assertion with crypto/workers/subtle/aes-indexeddb.html
sihui_liu@apple.com [Mon, 16 Mar 2020 19:57:45 +0000 (19:57 +0000)]
IndexedDB hits assertion with crypto/workers/subtle/aes-indexeddb.html
https://bugs.webkit.org/show_bug.cgi?id=202648
<rdar://problem/56059602>

Unreviewed test gardening.

* TestExpectations:
* platform/ios-simulator/TestExpectations:

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

2 months agoRemove unused IPC messages from DrawingAreaProxy
bfulgham@apple.com [Mon, 16 Mar 2020 19:56:36 +0000 (19:56 +0000)]
Remove unused IPC messages from DrawingAreaProxy
https://bugs.webkit.org/show_bug.cgi?id=209090
<rdar://problem/60333300>

Reviewed by Wenson Hsieh.

Do not compile the following three unused messages in DrawingAreaProxy when
building for a Cocoa platform target.

DrawingAreaProxy::Update
DrawingAreaProxy::DidUpdateBackingStoreState
DrawingAreaProxy::ExitAcceleratedCompositingMode

* UIProcess/DrawingAreaProxy.h:
(WebKit::DrawingAreaProxy::enterAcceleratedCompositingMode):
(WebKit::DrawingAreaProxy::update):
(WebKit::DrawingAreaProxy::didUpdateBackingStoreState):
(WebKit::DrawingAreaProxy::exitAcceleratedCompositingMode):
* UIProcess/DrawingAreaProxy.messages.in:
* UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
* UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
(WebKit::TiledCoreAnimationDrawingAreaProxy::exitAcceleratedCompositingMode): Deleted.

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

2 months ago[Cocoa] Only set CF prefs direct mode for the WebContent process
pvollan@apple.com [Mon, 16 Mar 2020 19:50:59 +0000 (19:50 +0000)]
[Cocoa] Only set CF prefs direct mode for the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=209091
<rdar://problem/60337842>

Reviewed by Brent Fulgham.

Currently, we enable CF prefs direct mode in XPCServiceMain. This is incorrect, it should only be enabled
for the WebContent process.

* Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:
(WebKit::XPCServiceMain):

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

2 months agoRemove FrameView::scheduleRenderingUpdate()
simon.fraser@apple.com [Mon, 16 Mar 2020 18:49:48 +0000 (18:49 +0000)]
Remove FrameView::scheduleRenderingUpdate()
https://bugs.webkit.org/show_bug.cgi?id=209109

Reviewed by Antti Koivisto.

FrameView::scheduleRenderingUpdate() called through to compositor(), but that just
turned around to call scheduleRenderingUpdate() via Page. So Remove it and change
callers to call Page::scheduleRenderingUpdate() directly.

Source/WebCore:

* page/FrameView.cpp:
(WebCore::FrameView::setViewExposedRect):
(WebCore::FrameView::scheduleRenderingUpdate): Deleted.
* page/FrameView.h:
* page/Page.cpp:
(WebCore::Page::scheduleRenderingUpdate):
* page/Page.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::scheduleRenderingUpdate):

Source/WebKitLegacy/mac:

* WebView/WebView.mm:

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

2 months agoCommit Xcode-modified xcfilelist.
simon.fraser@apple.com [Mon, 16 Mar 2020 18:42:36 +0000 (18:42 +0000)]
Commit Xcode-modified xcfilelist.

New WebXR idl files.

* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:

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

2 months agoFactor some post-updateRendering code into its own function
simon.fraser@apple.com [Mon, 16 Mar 2020 18:42:32 +0000 (18:42 +0000)]
Factor some post-updateRendering code into its own function
https://bugs.webkit.org/show_bug.cgi?id=209108

Reviewed by Antti Koivisto.

Make a new function to hold code that needs to do post update-rendering work.
It asserts that the layout is clean at the end.

* page/Page.cpp:
(WebCore::Page::updateRendering):
(WebCore::Page::doAfterUpdateRendering):
* page/Page.h:

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

2 months agoASSERTION FAILURE: !result.innerNode() || (request.resultIsElementList() && result...
dbates@webkit.org [Mon, 16 Mar 2020 17:34:43 +0000 (17:34 +0000)]
ASSERTION FAILURE: !result.innerNode() || (request.resultIsElementList() && result.listBasedTestResult().size()) in RenderLayer::hitTestContents()
https://bugs.webkit.org/show_bug.cgi?id=209112

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Update test result now that more sub-tests are passing.

* web-platform-tests/shadow-dom/DocumentOrShadowRoot-prototype-elementFromPoint-expected.txt:

Source/WebCore:

Fix rect-based hit testing (e.g. used in the impl of document.elementsFromPoint()) of ::before
and ::after pseudo elements. Same issue as in r133330, updateHitTestResult() and addNodeToRectBasedTestResult()
are using different "hit" nodes. In particular, RenderObject::updateHitTestResult() knows how to
reason about ::before and ::after pseudo elements, but addNodeToRectBasedTestResult() cannot.
Standardize the concept of the node used for hit testing from something-specifically added to RenderBlock
in r133330 to all renderers. Have both updateHitTestResult() and addNodeToRectBasedTestResult()
make use of this concept so that they consider the same hit node.

Test: fast/dom/nodesFromRect/pseudo-empty-svg-image-crash.html

* layout/integration/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::hitTest):
* rendering/EllipsisBox.cpp:
(WebCore::EllipsisBox::nodeAtPoint):
* rendering/InlineFlowBox.cpp:
(WebCore::InlineFlowBox::nodeAtPoint):
* rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::nodeAtPoint):
Update code to call nodeForHitTest() to keep the code behavior we have today. Note that RenderElement::element()
and RenderText::textNode() just cast the return value of RenderObject::node().
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::nodeForHitTest const): Remove special case for RenderView now that I added RenderView::nodeForHitTest().
Moreover, this special case was returning the document even though RenderView::updateHitTestResult() hit
test the document element. See remarks for RenderView::nodeForHitTest() for more details.
* rendering/RenderBlock.h:
* rendering/RenderBox.cpp:
(WebCore::RenderBox::nodeAtPoint): Use nodeForHitTest(). This fixes the bug. Currently, updateHitTestResult()
knows that when RenderObject::node() is nullptr and the parent renderer is for generated content that it can
walk up the hierarchy to find the hit PseudoElement. But in the call to addNodeToListBasedTestResult(), RenderObject::element()
was passed, which is nullptr for an anonymous node, and addNodeToListBasedTestResult() doesn't have enough info
to know that this means generated content was hit and hence it is not able to find the PseudoElement. This
disagreement caused the assertion failure because updateHitTestResult() would update the inner node, but
addNodeToListBasedTestResult() would not add a node to the set.
* rendering/RenderInline.cpp:
(WebCore::RenderInline::hitTestCulledInline): Use nodeForHitTest().
(WebCore::RenderInline::updateHitTestResult): Update code as needed to use nodeForHitTest(). Also while I
am here fix up code style of comment and rename the local from element to node to match the return value
of nodeForHitTest().
* rendering/RenderMultiColumnSet.cpp:
(WebCore::RenderMultiColumnSet::nodeForHitTest const): Added.
(WebCore::RenderMultiColumnSet::updateHitTestResult): Update code as needed to use nodeForHitTest().
* rendering/RenderMultiColumnSet.h:
* rendering/RenderObject.cpp:
(WebCore::RenderObject::nodeForHitTest const): Added.
(WebCore::RenderObject::updateHitTestResult): Update code as needed to use nodeForHitTest().
* rendering/RenderObject.h:
* rendering/RenderTable.cpp:
(WebCore::RenderTable::nodeAtPoint): Ditto.
* rendering/RenderView.cpp:
(WebCore::RenderView::nodeForHitTest const): Added. This overrides RenderBlock::nodeForHitTest(), which
following r155370 was returning the document as the hit test node even though RenderView::updateHitTestResult()
considered the document element as the hit node for a RenderView. As a result of this change, the rect-based
hit testing no longer returns the document (seen in test results as #document) in the list of nodes.
(WebCore::RenderView::updateHitTestResult): Update code as needed to use nodeForHitTest().
* rendering/RenderView.h:
* rendering/SimpleLineLayoutFunctions.cpp:
(WebCore::SimpleLineLayout::hitTestFlow): Ditto.
* rendering/svg/RenderSVGContainer.cpp:
(WebCore::RenderSVGContainer::nodeAtFloatPoint): Ditto.
* rendering/svg/RenderSVGImage.cpp:
(WebCore::RenderSVGImage::nodeAtFloatPoint): Ditto.
* rendering/svg/RenderSVGRoot.cpp:
(WebCore::RenderSVGRoot::nodeAtPoint): Ditto.
* rendering/svg/RenderSVGShape.cpp:
(WebCore::RenderSVGShape::nodeAtFloatPoint): Ditto.
* rendering/svg/SVGInlineTextBox.cpp:
(WebCore::SVGInlineTextBox::nodeAtPoint): Ditto.

LayoutTests:

Add a new test for an pseudo element.

Also update tests now that I added the RenderView::nodeForHitTest(), which returns the
same hit test node (the document element) as used in RenderView::updateHitTestResult().
Currently RenderView::nodeForHitTest() would actually fall back to RenderBlock::nodeForHitTest(),
which returned the document (seen in the test resutls as #document).

* fast/dom/nodesFromRect/nodesFromRect-child-frame-content.html: Update test to match new results.
* fast/dom/nodesFromRect/nodesFromRect-embedded-frame-content.html: Ditto.
* fast/dom/nodesFromRect/pseudo-empty-svg-image-crash-expected.txt: Added.
* fast/dom/nodesFromRect/pseudo-empty-svg-image-crash.html: Added.

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

2 months agoWebPage::GetDataSelectionForPasteboard should validate its `size` variable
ddkilzer@apple.com [Mon, 16 Mar 2020 17:24:59 +0000 (17:24 +0000)]
WebPage::GetDataSelectionForPasteboard should validate its `size` variable
<https://webkit.org/b/209092>
<rdar://problem/60181345>

Reviewed by Brent Fulgham.

* Platform/IPC/Connection.h:
(MESSAGE_CHECK_WITH_RETURN_VALUE_BASE): Add.
- Variant of MESSAGE_CHECK_BASE() that takes a return value.
* UIProcess/mac/WebPageProxyMac.mm:
(MESSAGE_CHECK_WITH_RETURN_VALUE): Add.
(WebKit::WebPageProxy::dataSelectionForPasteboard):
- Use new MESSAGE_CHECK_WITH_RETURN_VALUE() macro to update
  check for handle.isNull() and to add check for `size`
  variable.
- Add static_cast<size_t>() to `size` variable to denote type
  change.

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

2 months agoMake CoreAudioCaptureSourceFactoryIOS an AudioSession::InterruptionObserver
youenn@apple.com [Mon, 16 Mar 2020 16:51:06 +0000 (16:51 +0000)]
Make CoreAudioCaptureSourceFactoryIOS an AudioSession::InterruptionObserver
https://bugs.webkit.org/show_bug.cgi?id=209138

Reviewed by Eric Carlson.

Instead of listening to Audiosession interruptions, CoreAudioCaptureSourceFactoryIOS is now relying on AudioSession directly.
This allows removing some duplicate code.
No change of behavior.

* platform/mediastream/ios/CoreAudioCaptureSourceIOS.h:
* platform/mediastream/ios/CoreAudioCaptureSourceIOS.mm:
(-[WebCoreAudioCaptureSourceIOSListener initWithCallback:]):
(WebCore::CoreAudioCaptureSourceFactoryIOS::CoreAudioCaptureSourceFactoryIOS):
(WebCore::CoreAudioCaptureSourceFactoryIOS::~CoreAudioCaptureSourceFactoryIOS):
(-[WebCoreAudioCaptureSourceIOSListener handleInterruption:]): Deleted.

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

2 months agoUnreviewed infrastructure fix.
ryanhaddad@apple.com [Mon, 16 Mar 2020 16:44:20 +0000 (16:44 +0000)]
Unreviewed infrastructure fix.

* BuildSlaveSupport/ews-build/config.json: Temporarily remove ews114
while the hardware is out for repair.

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

2 months agoApply rotation at source level if WebRTC sink ask so
youenn@apple.com [Mon, 16 Mar 2020 16:41:12 +0000 (16:41 +0000)]
Apply rotation at source level if WebRTC sink ask so
https://bugs.webkit.org/show_bug.cgi?id=205645

Reviewed by Eric Carlson.

Source/WebCore:

Add a virtual method to RealtimeMediaSource to pass the information that the sink prefers the frames to be rotated before sending them.

Source/WebKit:

Implement RealtimeMediaSource setShouldApplyRotation by sending IPC to capture process.
In capture process, if rotation should be applied, use an ImageRotationSessionVT session to apply it before sending the video frame.
This allows WebProcess to no longer need an ImageRotationSessionVT for WebRTC.

* UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::SourceProxy::setShouldApplyRotation):
(WebKit::UserMediaCaptureManagerProxy::SourceProxy::rotatePixelBuffer):
(WebKit::UserMediaCaptureManagerProxy::setShouldApplyRotation):
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
* WebProcess/cocoa/UserMediaCaptureManager.cpp:
(WebKit::UserMediaCaptureManager::Source::setShouldApplyRotation):

LayoutTests:

* webrtc/video-rotation-no-cvo-expected.txt: Added.
* webrtc/video-rotation-no-cvo.html: Added.

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

2 months agoAudio is not played from an audio element when the srcObject object has unstarted...
youenn@apple.com [Mon, 16 Mar 2020 16:36:37 +0000 (16:36 +0000)]
Audio is not played from an audio element when the srcObject object has unstarted video tracks
https://bugs.webkit.org/show_bug.cgi?id=207041
<rdar://problem/59084745>

Reviewed by Eric Carlson.

Source/WebCore:

In case MediaPlayer is an audio element, we should just make it as if there is no video track in the stream.

Test: imported/w3c/web-platform-tests/webrtc/audio-video-element-playing.html

* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::enqueueVideoSample):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::ensureLayers):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::activeVideoTrack const):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::didPassCORSAccessCheck const):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::currentDisplayMode const):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::currentReadyState):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::checkSelectedVideoTrack):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateTracks):

LayoutTests:

* webrtc/audio-video-element-playing-expected.txt: Added.
* webrtc/audio-video-element-playing.html: Added.

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

2 months agoRTCRtpSender of kind video should have a null dtmf attribute
youenn@apple.com [Mon, 16 Mar 2020 16:34:57 +0000 (16:34 +0000)]
RTCRtpSender of kind video should have a null dtmf attribute
https://bugs.webkit.org/show_bug.cgi?id=209135

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

* web-platform-tests/webrtc/RTCRtpSender.https-expected.txt: Added.
* web-platform-tests/webrtc/RTCRtpSender.https.html: Added.

Source/WebCore:

Test: imported/w3c/web-platform-tests/webrtc/RTCRtpSender.https.html

* Modules/mediastream/RTCRtpSender.cpp:
(WebCore::RTCRtpSender::dtmf):

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

2 months ago[ Mac wk2 ] (r258249) fast/scrolling/mac/absolute-in-overflow-scroll-dynamic.html...
tsavell@apple.com [Mon, 16 Mar 2020 16:22:44 +0000 (16:22 +0000)]
[ Mac wk2 ] (r258249) fast/scrolling/mac/absolute-in-overflow-scroll-dynamic.html is a flaky failure (209052)
https://bugs.webkit.org/show_bug.cgi?id=209052

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

2 months ago[ iOS wk2 ] webgl/1.0.3/conformance/textures/copy-tex-image-2d-formats.html is failing.
lawrence.j@apple.com [Mon, 16 Mar 2020 16:14:30 +0000 (16:14 +0000)]
[ iOS wk2 ] webgl/1.0.3/conformance/textures/copy-tex-image-2d-formats.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=209139

Unreviewed test gardening.

* platform/ios-wk2/TestExpectations:

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

2 months ago[WebXR] Import wpt tests
svillar@igalia.com [Mon, 16 Mar 2020 16:09:51 +0000 (16:09 +0000)]
[WebXR] Import wpt tests
https://bugs.webkit.org/show_bug.cgi?id=208989

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

* resources/import-expectations.json:
* web-platform-tests/webxr/META.yml: Added.
* web-platform-tests/webxr/ar-module/idlharness.https.window.html: Added.
* web-platform-tests/webxr/ar-module/idlharness.https.window.js: Added.
(async idl_array):
* web-platform-tests/webxr/ar-module/w3c-import.log: Added.
* web-platform-tests/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html: Added.
* web-platform-tests/webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html: Added.
* web-platform-tests/webxr/ar-module/xrSession_environmentBlendMode.https.html: Added.
* web-platform-tests/webxr/dom-overlay/ar_dom_overlay.https.html: Added.
* web-platform-tests/webxr/dom-overlay/w3c-import.log: Added.
* web-platform-tests/webxr/events_input_source_recreation.https.html: Added.
* web-platform-tests/webxr/events_input_sources_change.https.html: Added.
* web-platform-tests/webxr/events_referenceSpace_reset_immersive.https.html: Added.
* web-platform-tests/webxr/events_referenceSpace_reset_inline.https.html: Added.
* web-platform-tests/webxr/events_session_select.https.html: Added.
* web-platform-tests/webxr/events_session_select_subframe.https.html: Added.
* web-platform-tests/webxr/events_session_squeeze.https.html: Added.
* web-platform-tests/webxr/exclusive_requestFrame_nolayer.https.html: Added.
* web-platform-tests/webxr/gamepads-module/idlharness.https.window.html: Added.
* web-platform-tests/webxr/gamepads-module/idlharness.https.window.js: Added.
(async idl_array):
* web-platform-tests/webxr/gamepads-module/w3c-import.log: Added.
* web-platform-tests/webxr/gamepads-module/xrInputSource_gamepad_disconnect.https.html: Added.
* web-platform-tests/webxr/gamepads-module/xrInputSource_gamepad_input_registered.https.html: Added.
* web-platform-tests/webxr/getInputPose_handedness.https.html: Added.
* web-platform-tests/webxr/getInputPose_pointer.https.html: Added.
* web-platform-tests/webxr/getViewerPose_emulatedPosition.https.html: Added.
* web-platform-tests/webxr/hit-test/ar_hittest_subscription_refSpaces.https.html: Added.
* web-platform-tests/webxr/hit-test/ar_hittest_subscription_states.https.html: Added.
* web-platform-tests/webxr/hit-test/w3c-import.log: Added.
* web-platform-tests/webxr/hit-test/xrRay_constructor.https.html: Added.
* web-platform-tests/webxr/hit-test/xrRay_matrix.https.html: Added.
* web-platform-tests/webxr/idlharness.https.window.html: Added.
* web-platform-tests/webxr/idlharness.https.window.js: Added.
(async idl_array):
* web-platform-tests/webxr/navigator_xr_sameObject.https.html: Added.
* web-platform-tests/webxr/render_state_vertical_fov_immersive.https.html: Added.
* web-platform-tests/webxr/render_state_vertical_fov_inline.https.html: Added.
* web-platform-tests/webxr/resources/w3c-import.log: Added.
* web-platform-tests/webxr/resources/webxr_check.html: Added.
* web-platform-tests/webxr/resources/webxr_math_utils.js: Added.
(let.transform_point_by_matrix):
(let.normalize_quaternion):
(let.conjugate_quaternion):
(let.multiply_quaternions):
(let.normalize_perspective):
(let.transform_point_by_quaternion):
* web-platform-tests/webxr/resources/webxr_test_asserts.js: Added.
(const.assert_point_approx_equals):
(const.assert_point_significantly_not_equals):
(const.assert_transform_approx_equals):
(const.assert_matrix_approx_equals):
(const.assert_matrix_significantly_not_equals):
(const.assert_ray_approx_equals):
* web-platform-tests/webxr/resources/webxr_test_constants.js: Added.
* web-platform-tests/webxr/resources/webxr_test_constants_fake_world.js: Added.
(createFakeWorld):
* web-platform-tests/webxr/resources/webxr_util.js: Added.
(xr_promise_test):
(async let):
(async xr_session_promise_test):
(async promise_simulate_user_activation):
* web-platform-tests/webxr/w3c-import.log: Added.
* web-platform-tests/webxr/webGLCanvasContext_create_xrcompatible.https.html: Added.
* web-platform-tests/webxr/webGLCanvasContext_makecompatible_contextlost.https.html: Added.
* web-platform-tests/webxr/webxr-supported-by-feature-policy.html: Added.
* web-platform-tests/webxr/webxr_availability.http.sub.html: Added.
* web-platform-tests/webxr/webxr_feature_policy.https.html: Added.
* web-platform-tests/webxr/webxr_feature_policy.https.html.headers: Added.
* web-platform-tests/webxr/xrBoundedReferenceSpace_updates.https.html: Added.
* web-platform-tests/webxr/xrDevice_disconnect_ends.https.html: Added.
* web-platform-tests/webxr/xrDevice_isSessionSupported_immersive.https.html: Added.
* web-platform-tests/webxr/xrDevice_isSessionSupported_immersive_unsupported.https.html: Added.
* web-platform-tests/webxr/xrDevice_isSessionSupported_inline.https.html: Added.
* web-platform-tests/webxr/xrDevice_requestSession_immersive.https.html: Added.
* web-platform-tests/webxr/xrDevice_requestSession_immersive_no_gesture.https.html: Added.
* web-platform-tests/webxr/xrDevice_requestSession_immersive_unsupported.https.html: Added.
* web-platform-tests/webxr/xrDevice_requestSession_no_mode.https.html: Added.
* web-platform-tests/webxr/xrDevice_requestSession_non_immersive_no_gesture.https.html: Added.
* web-platform-tests/webxr/xrDevice_requestSession_optionalFeatures.https.html: Added.
* web-platform-tests/webxr/xrDevice_requestSession_requiredFeatures_unknown.https.html: Added.
* web-platform-tests/webxr/xrFrame_getPose.https.html: Added.
* web-platform-tests/webxr/xrFrame_getViewerPose_getPose.https.html: Added.
* web-platform-tests/webxr/xrFrame_lifetime.https.html: Added.
* web-platform-tests/webxr/xrFrame_session_sameObject.https.html: Added.
* web-platform-tests/webxr/xrInputSource_add_remove.https.html: Added.
* web-platform-tests/webxr/xrInputSource_emulatedPosition.https.html: Added.
* web-platform-tests/webxr/xrInputSource_profiles.https.html: Added.
* web-platform-tests/webxr/xrInputSource_sameObject.https.html: Added.
* web-platform-tests/webxr/xrPose_transform_sameObject.https.html: Added.
* web-platform-tests/webxr/xrReferenceSpace_originOffset.https.html: Added.
* web-platform-tests/webxr/xrReferenceSpace_originOffsetBounded.https.html: Added.
* web-platform-tests/webxr/xrReferenceSpace_originOffset_viewer.https.html: Added.
* web-platform-tests/webxr/xrRigidTransform_constructor.https.html: Added.
* web-platform-tests/webxr/xrRigidTransform_inverse.https.html: Added.
* web-platform-tests/webxr/xrRigidTransform_matrix.https.html: Added.
* web-platform-tests/webxr/xrRigidTransform_sameObject.https.html: Added.
* web-platform-tests/webxr/xrSession_cancelAnimationFrame.https.html: Added.
* web-platform-tests/webxr/xrSession_cancelAnimationFrame_invalidhandle.https.html: Added.
* web-platform-tests/webxr/xrSession_end.https.html: Added.
* web-platform-tests/webxr/xrSession_features_deviceSupport.https.html: Added.
* web-platform-tests/webxr/xrSession_input_events_end.https.html: Added.
* web-platform-tests/webxr/xrSession_prevent_multiple_exclusive.https.html: Added.
* web-platform-tests/webxr/xrSession_requestAnimationFrame_callback_calls.https.html: Added.
* web-platform-tests/webxr/xrSession_requestAnimationFrame_data_valid.https.html: Added.
* web-platform-tests/webxr/xrSession_requestAnimationFrame_getViewerPose.https.html: Added.
* web-platform-tests/webxr/xrSession_requestAnimationFrame_timestamp.https.html: Added.
* web-platform-tests/webxr/xrSession_requestReferenceSpace.https.html: Added.
* web-platform-tests/webxr/xrSession_requestReferenceSpace_features.https.html: Added.
* web-platform-tests/webxr/xrSession_sameObject.https.html: Added.
* web-platform-tests/webxr/xrSession_viewer_availability.https.html: Added.
* web-platform-tests/webxr/xrSession_viewer_referenceSpace.https.html: Added.
* web-platform-tests/webxr/xrSession_visibilityState.https.html: Added.
* web-platform-tests/webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html: Added.
* web-platform-tests/webxr/xrView_eyes.https.html: Added.
* web-platform-tests/webxr/xrView_match.https.html: Added.
* web-platform-tests/webxr/xrView_oneframeupdate.https.html: Added.
* web-platform-tests/webxr/xrView_sameObject.https.html: Added.
* web-platform-tests/webxr/xrViewerPose_views_sameObject.https.html: Added.
* web-platform-tests/webxr/xrViewport_valid.https.html: Added.
* web-platform-tests/webxr/xrWebGLLayer_constructor.https.html: Added.
* web-platform-tests/webxr/xrWebGLLayer_framebuffer_draw.https.html: Added.
* web-platform-tests/webxr/xrWebGLLayer_framebuffer_sameObject.https.html: Added.
* web-platform-tests/webxr/xrWebGLLayer_framebuffer_scale.https.html: Added.
* web-platform-tests/webxr/xrWebGLLayer_opaque_framebuffer.https.html: Added.
* web-platform-tests/webxr/xrWebGLLayer_opaque_framebuffer_stencil.https.html: Added.
* web-platform-tests/webxr/xrWebGLLayer_viewports.https.html: Added.

LayoutTests:

* TestExpectations: Mark all of them as skipped.

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

2 months ago[WebXR] IDLs, stubs and build configuration for WPE
svillar@igalia.com [Mon, 16 Mar 2020 15:49:47 +0000 (15:49 +0000)]
[WebXR] IDLs, stubs and build configuration for WPE
https://bugs.webkit.org/show_bug.cgi?id=208702

Reviewed by Dean Jackson.

.:

Added a new compile flag for WEBXR which depends on WEBGL.

For the WPE port, added OpenXR detection and USE_OPENXR define to be
used in the sources. It also adds a dependency between USE_OPENXR and
ENABLE_WEBXR.

Largely based on previous work by Žan Doberšek.

* Source/cmake/FindOpenXR.cmake: Added.
* Source/cmake/OptionsWPE.cmake: Added mandatory OpenXR dependency if
WEBXR is enabled exposing USE_OPENXR to the build.
* Source/cmake/WebKitFeatures.cmake: Added ENABLE_WEBXR.
* Source/cmake/tools/vsprops/FeatureDefines.props: Ditto.
* Source/cmake/tools/vsprops/FeatureDefinesCairo.props: Ditto.

Source/JavaScriptCore:

* Configurations/FeatureDefines.xcconfig: Added ENABLE_WEBXR, off by default.

Source/WebCore:

Added the IDLs defined by the spec with very basic empty implementations to get them
built. Apart from that a very basic implementation of the required platform code using
OpenXR API was also added.

No new tests as no new functionality was really added (empty implementations). However
follow up patches will import the already available WPT tests for WebXR.

Largely based on previous work by Žan Doberšek.

* CMakeLists.txt:
* Configurations/FeatureDefines.xcconfig: Added ENABLE_WEBXR off by default.
* DerivedSources.make:
* Modules/webxr/NavigatorWebXR.cpp: Added.
(WebCore::NavigatorWebXR::xr):
(WebCore::NavigatorWebXR::from):
* Modules/webxr/NavigatorWebXR.h: Added.
* Modules/webxr/NavigatorWebXR.idl: Added.
* Modules/webxr/WebXRBoundedReferenceSpace.cpp: Added.
(WebCore::WebXRBoundedReferenceSpace::boundsGeometry const):
* Modules/webxr/WebXRBoundedReferenceSpace.h: Added.
* Modules/webxr/WebXRBoundedReferenceSpace.idl: Added.
* Modules/webxr/WebXRFrame.cpp: Added.
(WebCore::WebXRFrame::create):
(WebCore::WebXRFrame::WebXRFrame):
(WebCore::WebXRFrame::session const):
(WebCore::WebXRFrame::getViewerPose):
(WebCore::WebXRFrame::getPose):
* Modules/webxr/WebXRFrame.h: Added.
* Modules/webxr/WebXRFrame.idl: Added.
* Modules/webxr/WebXRInputSource.cpp: Added.
(WebCore::WebXRInputSource::create):
(WebCore::WebXRInputSource::WebXRInputSource):
(WebCore::WebXRInputSource::handedness const):
(WebCore::WebXRInputSource::targetRayMode const):
(WebCore::WebXRInputSource::targetRaySpace const):
(WebCore::WebXRInputSource::gripSpace const):
(WebCore::WebXRInputSource::profiles const):
* Modules/webxr/WebXRInputSource.h: Added.
* Modules/webxr/WebXRInputSource.idl: Added.
* Modules/webxr/WebXRInputSourceArray.cpp: Added.
(WebCore::WebXRInputSourceArray::length const):
(WebCore::WebXRInputSourceArray::item const):
* Modules/webxr/WebXRInputSourceArray.h: Added.
* Modules/webxr/WebXRInputSourceArray.idl: Added.
* Modules/webxr/WebXRPose.cpp: Added.
(WebCore::WebXRPose::create):
(WebCore::WebXRPose::WebXRPose):
(WebCore::WebXRPose::transform const):
(WebCore::WebXRPose::emulatedPosition const):
* Modules/webxr/WebXRPose.h: Added.
* Modules/webxr/WebXRPose.idl: Added.
* Modules/webxr/WebXRReferenceSpace.cpp: Added.
(WebCore::WebXRReferenceSpace::WebXRReferenceSpace):
(WebCore::WebXRReferenceSpace::getOffsetReferenceSpace):
* Modules/webxr/WebXRReferenceSpace.h: Added.
* Modules/webxr/WebXRReferenceSpace.idl: Added.
* Modules/webxr/WebXRRenderState.cpp: Added.
(WebCore::WebXRRenderState::create):
(WebCore::WebXRRenderState::WebXRRenderState):
(WebCore::WebXRRenderState::depthNear const):
(WebCore::WebXRRenderState::depthFar const):
(WebCore::WebXRRenderState::inlineVerticalFieldOfView const):
(WebCore::WebXRRenderState::baseLayer const):
* Modules/webxr/WebXRRenderState.h: Added.
* Modules/webxr/WebXRRenderState.idl: Added.
* Modules/webxr/WebXRRigidTransform.cpp: Added.
(WebCore::WebXRRigidTransform::create):
(WebCore::WebXRRigidTransform::WebXRRigidTransform):
(WebCore::WebXRRigidTransform::position const):
(WebCore::WebXRRigidTransform::orientation const):
(WebCore::WebXRRigidTransform::matrix const):
(WebCore::WebXRRigidTransform::inverse const):
* Modules/webxr/WebXRRigidTransform.h: Added.
* Modules/webxr/WebXRRigidTransform.idl: Added.
* Modules/webxr/WebXRSession.cpp: Added.
(WebCore::WebXRSession::environmentBlendMode const):
(WebCore::WebXRSession::visibilityState const):
(WebCore::WebXRSession::renderState const):
(WebCore::WebXRSession::inputSources const):
(WebCore::WebXRSession::updateRenderState):
(WebCore::WebXRSession::requestReferenceSpace):
(WebCore::WebXRSession::requestAnimationFrame):
(WebCore::WebXRSession::cancelAnimationFrame):
(WebCore::WebXRSession::end):
(WebCore::WebXRSession::activeDOMObjectName const):
(WebCore::WebXRSession::stop):
* Modules/webxr/WebXRSession.h: Added.
* Modules/webxr/WebXRSession.idl: Added.
* Modules/webxr/WebXRSpace.cpp: Added.
(WebCore::WebXRSpace::WebXRSpace):
* Modules/webxr/WebXRSpace.h: Added.
* Modules/webxr/WebXRSpace.idl: Added.
* Modules/webxr/WebXRSystem.cpp: Added.
(WebCore::WebXRSystem::create):
(WebCore::WebXRSystem::WebXRSystem):
(WebCore::WebXRSystem::isSessionSupported):
(WebCore::WebXRSystem::requestSession):
(WebCore::WebXRSystem::activeDOMObjectName const):
(WebCore::WebXRSystem::stop):
* Modules/webxr/WebXRSystem.h: Added.
* Modules/webxr/WebXRSystem.idl: Added.
* Modules/webxr/WebXRView.cpp: Added.
(WebCore::WebXRView::create):
(WebCore::WebXRView::WebXRView):
(WebCore::WebXRView::eye const):
(WebCore::WebXRView::projectionMatrix const):
(WebCore::WebXRView::transform const):
* Modules/webxr/WebXRView.h: Added.
* Modules/webxr/WebXRView.idl: Added.
* Modules/webxr/WebXRViewerPose.cpp: Added.
(WebCore::WebXRViewerPose::create):
(WebCore::WebXRViewerPose::views const):
* Modules/webxr/WebXRViewerPose.h: Added.
* Modules/webxr/WebXRViewerPose.idl: Added.
* Modules/webxr/WebXRViewport.cpp: Added.
(WebCore::WebXRViewport::create):
(WebCore::WebXRViewport::x const):
(WebCore::WebXRViewport::y const):
(WebCore::WebXRViewport::width const):
(WebCore::WebXRViewport::height const):
* Modules/webxr/WebXRViewport.h: Added.
* Modules/webxr/WebXRViewport.idl: Added.
* Modules/webxr/WebXRWebGLLayer.cpp: Added.
(WebCore::WebXRWebGLLayer::create):
(WebCore::WebXRWebGLLayer::WebXRWebGLLayer):
(WebCore::WebXRWebGLLayer::antialias const):
(WebCore::WebXRWebGLLayer::ignoreDepthValues const):
(WebCore::WebXRWebGLLayer::framebuffer const):
(WebCore::WebXRWebGLLayer::framebufferWidth const):
(WebCore::WebXRWebGLLayer::framebufferHeight const):
(WebCore::WebXRWebGLLayer::getViewport):
(WebCore::WebXRWebGLLayer::getNativeFramebufferScaleFactor):
* Modules/webxr/WebXRWebGLLayer.h: Added.
* Modules/webxr/WebXRWebGLLayer.idl: Added.
* Modules/webxr/XREnvironmentBlendMode.h: Added.
* Modules/webxr/XREnvironmentBlendMode.idl: Added.
* Modules/webxr/XREye.h: Added.
* Modules/webxr/XREye.idl: Added.
* Modules/webxr/XRFrameRequestCallback.h: Added.
* Modules/webxr/XRFrameRequestCallback.idl: Added.
* Modules/webxr/XRHandedness.h: Added.
* Modules/webxr/XRHandedness.idl: Added.
* Modules/webxr/XRInputSourceEvent.cpp: Added.
(WebCore::XRInputSourceEvent::create):
(WebCore::XRInputSourceEvent::XRInputSourceEvent):
(WebCore::XRInputSourceEvent::frame const):
(WebCore::XRInputSourceEvent::inputSource const):
(WebCore::XRInputSourceEvent::buttonIndex const):
* Modules/webxr/XRInputSourceEvent.h: Added.
* Modules/webxr/XRInputSourceEvent.idl: Added.
* Modules/webxr/XRInputSourcesChangeEvent.cpp: Added.
(WebCore::XRInputSourcesChangeEvent::create):
(WebCore::XRInputSourcesChangeEvent::XRInputSourcesChangeEvent):
(WebCore::XRInputSourcesChangeEvent::session const):
(WebCore::XRInputSourcesChangeEvent::added const):
(WebCore::XRInputSourcesChangeEvent::removed const):
* Modules/webxr/XRInputSourcesChangeEvent.h: Added.
* Modules/webxr/XRInputSourcesChangeEvent.idl: Added.
* Modules/webxr/XRReferenceSpaceEvent.cpp: Added.
(WebCore::XRReferenceSpaceEvent::create):
(WebCore::XRReferenceSpaceEvent::XRReferenceSpaceEvent):
(WebCore::XRReferenceSpaceEvent::referenceSpace const):
(WebCore::XRReferenceSpaceEvent::transform const):
* Modules/webxr/XRReferenceSpaceEvent.h: Added.
* Modules/webxr/XRReferenceSpaceEvent.idl: Added.
* Modules/webxr/XRReferenceSpaceType.h: Added.
* Modules/webxr/XRReferenceSpaceType.idl: Added.
* Modules/webxr/XRRenderStateInit.h: Added.
* Modules/webxr/XRRenderStateInit.idl: Added.
* Modules/webxr/XRSessionEvent.cpp: Added.
(WebCore::XRSessionEvent::create):
(WebCore::XRSessionEvent::XRSessionEvent):
(WebCore::XRSessionEvent::session const):
* Modules/webxr/XRSessionEvent.h: Added.
* Modules/webxr/XRSessionEvent.idl: Added.
* Modules/webxr/XRSessionInit.h: Added.
* Modules/webxr/XRSessionInit.idl: Added.
* Modules/webxr/XRSessionMode.h: Added.
* Modules/webxr/XRSessionMode.idl: Added.
* Modules/webxr/XRTargetRayMode.h: Added.
* Modules/webxr/XRTargetRayMode.idl: Added.
* Modules/webxr/XRVisibilityState.h: Added.
* Modules/webxr/XRVisibilityState.idl: Added.
* Modules/webxr/XRWebGLLayerInit.h: Added.
* Modules/webxr/XRWebGLLayerInit.idl: Added.
* PlatformWPE.cmake: Added OpenXR libraries and include paths.
* Sources.txt: Added new cpp files.
* WebCore.xcodeproj/project.pbxproj: Added new files.
* bindings/IDLTypes.h: Added SequenceStorageType.
* bindings/js/JSDOMConvertSequences.h:
* bindings/js/WebCoreBuiltinNames.h:
* dom/EventNames.h:
* dom/EventNames.in: Added WebXR events.
* dom/EventTargetFactory.in: Added WebXR event targets.
* page/RuntimeEnabledFeatures.h: Added new runtime feature for WebXR.
(WebCore::RuntimeEnabledFeatures::setWebXREnabled):
(WebCore::RuntimeEnabledFeatures::webXREnabled const):
* platform/xr/PlatformXR.cpp: Added.
* platform/xr/PlatformXR.h: Added.
* platform/xr/openxr/PlatformXR.cpp: Added.
(PlatformXR::createStructure): Utility function to create OpenXR structs.
(PlatformXR::resultToString): Translates OpenXR error codes to strings.
(PlatformXR::Instance::Impl::Impl):
(PlatformXR::Instance::Impl::~Impl):
(PlatformXR::Instance::singleton):

Source/WebCore/PAL:

* Configurations/FeatureDefines.xcconfig: Added ENABLE_WEBXR off by default.

Source/WebKit:

Added WebXR to the list of experimental features.

* Configurations/FeatureDefines.xcconfig: Added ENABLE_WEBXR off by default.
* Shared/WebPreferences.yaml: Added WebXR feature.
* Shared/WebPreferencesDefaultValues.cpp:
(WebKit::defaultWebXREnabled): Set WebXR to off by default unless HAVE_SYSTEM_FEATURE_FLAGS.
* Shared/WebPreferencesDefaultValues.h:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

Source/WebKitLegacy/mac:

* Configurations/FeatureDefines.xcconfig: Added ENABLE_WEBXR, off by default.

Tools:

* Scripts/webkitperl/FeatureList.pm: Added WebXR.
* TestWebKitAPI/Configurations/FeatureDefines.xcconfig: Added ENABLE_WEBXR, off by default.

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

2 months ago[Cairo] Path copy constructor and operator must also copy over CTM
commit-queue@webkit.org [Mon, 16 Mar 2020 15:27:05 +0000 (15:27 +0000)]
[Cairo] Path copy constructor and operator must also copy over CTM
https://bugs.webkit.org/show_bug.cgi?id=183327

Patch by Zan Dobersek <zdobersek@igalia.com> on 2020-03-16
Reviewed by Carlos Garcia Campos.

Cairo implementations of Path copy constructor and assignment operator
must also copy over the current transformation matrix that's maintained
on the source path's cairo_t context.

cairo_copy_path() copies the current path off of a Cairo context, but
during that also transforms every point on the path through inverse of
the CTM, back into user coordinates. For copying to be done correctly,
the copied path must be transformed through the CTM when it's appended
to the target Cairo context. For that reason the CTM has to be copied
over from source to target context before the path is copied and
appended.

* platform/graphics/cairo/PathCairo.cpp:
(WebCore::Path::Path):
(WebCore::Path::operator=):

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

2 months ago[iOS] Add telemetry for message filtering
pvollan@apple.com [Mon, 16 Mar 2020 15:26:05 +0000 (15:26 +0000)]
[iOS] Add telemetry for message filtering
https://bugs.webkit.org/show_bug.cgi?id=208925
<rdar://problem/58885485>

Reviewed by Darin Adler.

On iOS, add telemetry for message filtering in the WebContent process' sandbox.

No new tests, no behavior change.

* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

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

2 months ago[Cocoa] Limit set of classes that can be decoded when a preference has changed
pvollan@apple.com [Mon, 16 Mar 2020 15:19:53 +0000 (15:19 +0000)]
[Cocoa] Limit set of classes that can be decoded when a preference has changed
https://bugs.webkit.org/show_bug.cgi?id=208012

Reviewed by Brent Fulgham.

Source/WebKit:

As a hardening measure, limit the set of ObjectiveC classes that can be decoded in the WebContent process
as a result of a preference change.

API tests: WebKit.PreferenceChangesDictionary
           WebKit.PreferenceChangesData
           WebKit.PreferenceChangesDate

* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::notifyPreferencesChanged):

Tools:

* TestWebKitAPI/Tests/WebKit/PreferenceChanges.mm:
(TEST):

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

2 months agoUnique origins should not be Potentially Trustworthy
youenn@apple.com [Mon, 16 Mar 2020 13:15:52 +0000 (13:15 +0000)]
Unique origins should not be Potentially Trustworthy
https://bugs.webkit.org/show_bug.cgi?id=209049

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

* web-platform-tests/service-workers/service-worker/interfaces-window.https-expected.txt:

Source/WebCore:

Unique origins should not be considered trustworthy as per https://w3c.github.io/webappsec-secure-contexts/#is-origin-trustworthy.

Test: http/tests/security/iframe-unique-origin.https.html

* dom/Document.cpp:
(WebCore::Document::isSecureContext const):
Removed check for top level origins as we make all unique origins not trusted.
* page/SecurityOrigin.cpp:

Source/WebKit:

* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::hasNavigatedAwayFromAppBoundDomain):
We should only check this for the main frame since this is tied to the page.

Tools:

* TestWebKitAPI/Tests/WebCore/SecurityOrigin.cpp:
(TestWebKitAPI::TEST_F):

LayoutTests:

* editing/async-clipboard/resources/sanitize-when-reading-markup-iframe.html: Added.
* editing/async-clipboard/sanitize-when-reading-markup.html:
Updating test to use HTTP instead of data URL for iFrame since clipboard is SecureContext.
* http/tests/security/iframe-unique-origin.https-expected.txt: Added.
* http/tests/security/iframe-unique-origin.https.html: Added.

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

2 months agoRemove the use of empty WebRTC sources for receiver tracks
youenn@apple.com [Mon, 16 Mar 2020 13:15:08 +0000 (13:15 +0000)]
Remove the use of empty WebRTC sources for receiver tracks
https://bugs.webkit.org/show_bug.cgi?id=209061

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

* web-platform-tests/webrtc/RTCPeerConnection-track-stats.https-expected.txt:

Source/WebCore:

We no longer need to create receivers with empty sources since we now always have a libwebrtc receiver from which we can get the track.
We remove that code path.
This sldo allows using the right track parameters from the start, like track id.

Covered by existing and rebased tests.

* Modules/mediastream/RTCPeerConnection.h:
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::addPendingTrackEvent):
(WebCore::LibWebRTCMediaEndpoint::collectTransceivers):
(WebCore::LibWebRTCMediaEndpoint::newTransceiver):
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::LibWebRTCPeerConnectionBackend::createReceiver):
(WebCore::LibWebRTCPeerConnectionBackend::addTrack):
(WebCore::LibWebRTCPeerConnectionBackend::addTransceiverFromTrackOrKind):
(WebCore::LibWebRTCPeerConnectionBackend::newRemoteTransceiver):
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:
* Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.cpp:
(WebCore::LibWebRTCRtpReceiverBackend::createSource):
* Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.h:
* platform/mediastream/RealtimeIncomingAudioSource.cpp:
(WebCore::RealtimeIncomingAudioSource::RealtimeIncomingAudioSource):
* platform/mediastream/RealtimeIncomingAudioSource.h:
* platform/mediastream/RealtimeIncomingVideoSource.cpp:
(WebCore::RealtimeIncomingVideoSource::RealtimeIncomingVideoSource):
* platform/mediastream/RealtimeIncomingVideoSource.h:
* testing/MockLibWebRTCPeerConnection.h:
(WebCore::MockMediaStreamTrack::state const):
(WebCore::MockRtpReceiver::SetObserver):

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

2 months ago[Cairo][SVG] marker-mid isn't shown on a joint of rectilinearly connected line-to...
carlosgc@webkit.org [Mon, 16 Mar 2020 12:41:52 +0000 (12:41 +0000)]
[Cairo][SVG] marker-mid isn't shown on a joint of rectilinearly connected line-to path segments
https://bugs.webkit.org/show_bug.cgi?id=113849

Reviewed by Adrian Perez de Castro.

Source/WebCore:

Marker-mid of svg is not displayed because path elements that added to
cairo backend are optimized. If the new line_to has same slope with
the previous path element, then the path element is joined to previous
path element.

Example:

added path elements : moveto(-5,-2), lineto(0,-2), lineto(5,-2)
cairo_path_data : moveto(-5,-2), lineto(5, -2)

This patch stores all of path informations separately in order to avoid
this problem. When generating positions of markers, we use stored path
informations instead of cairo_path_data.

When a new operation can't be directly stored in an ElementPath, we fallback to use cairo_path_data() in
Path::apply().

* platform/graphics/Path.h: Add new constructor that receives a cairo context, make ensureCairoPath() private
and add m_elements member.
* platform/graphics/cairo/FontCairo.cpp:
(WebCore::Font::platformPathForGlyph const): Create a cairo context for the path and use the new constructor
that receives a RefPtr<cairo_t>&&.
* platform/graphics/cairo/PathCairo.cpp:
(WebCore::Path::Path): Initialize m_elements to an empty vector when created without a cairo context.
(WebCore::Path::operator=): Also copy m_elements.
(WebCore::Path::clear): Initialize m_elements to an empty vector.
(WebCore::Path::translate): Apply the translate to elements in m_elements.
(WebCore::Path::appendElement): Helper to add an operation to m_elements.
(WebCore::Path::moveToSlowCase): Call appendElement() if m_elements is not nullopt.
(WebCore::Path::addLineToSlowCase): Ditto.
(WebCore::Path::addRect): Ditto.
(WebCore::Path::addQuadCurveToSlowCase): Ditto.
(WebCore::Path::addBezierCurveToSlowCase): Ditto.
(WebCore::Path::addArcSlowCase): Set m_elements to nullopt.
(WebCore::Path::addArcTo): Ditto.
(WebCore::Path::addEllipse): Ditto.
(WebCore::Path::addPath): Ditto.
(WebCore::Path::closeSubpath): Call appendElement() if m_elements is not nullopt.
(WebCore::Path::applySlowCase const): Use elements from m_elements if it's not nullopt, otherwise fallback to
use cairo_path_data.
(WebCore::Path::transform): Apply the transform to elements in m_elements.

LayoutTests:

Remove svg/custom/local-url-reference-marker.html from expectations and rebaseline other tests.

* platform/gtk/TestExpectations:
* platform/gtk/imported/w3c/web-platform-tests/svg/import/text-path-01-b-manual-expected.txt:
* platform/gtk/imported/w3c/web-platform-tests/svg/import/text-path-02-b-manual-expected.txt:
* platform/gtk/imported/w3c/web-platform-tests/svg/painting/marker-008-expected.txt:
* platform/gtk/imported/w3c/web-platform-tests/svg/text/reftests/textpath-shape-001-expected.txt:
* platform/gtk/svg/text/text-path-01-b-expected.png:
* platform/gtk/svg/text/text-path-01-b-expected.txt:
* platform/wpe/TestExpectations:

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

2 months ago[Gtk] Update pixel test baseline in svg/ subdirectory
zimmermann@webkit.org [Mon, 16 Mar 2020 12:17:06 +0000 (12:17 +0000)]
[Gtk] Update pixel test baseline in svg/ subdirectory
https://bugs.webkit.org/show_bug.cgi?id=209137

Ruber-stamped by Žan Doberšek.

Update pixel test baseline, reflecting the status quo with WebKit ToT.

* platform/gtk/svg: > 600 modifications of the -expected.png files.
* platform/gtk/svg/W3C-SVG-1.1-SE/painting-marker-06-f-expected.png: Added.
* platform/gtk/svg/filters/filter-refresh-expected.png: Copied from LayoutTests/platform/gtk/svg/filters/feImage-reference-invalidation-expected.png.
* platform/gtk/svg/hixie/error/015-expected.png: Copied from LayoutTests/platform/gtk/svg/zoom/page/absolute-sized-document-no-scrollbars-expected.png.
* platform/gtk/svg/overflow/overflow-on-outermost-svg-element-ignore-attribute-1-expected.png: Added.

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

2 months ago[Gtk] Add missing pixel test results in svg/ subdirectory
zimmermann@webkit.org [Mon, 16 Mar 2020 11:08:03 +0000 (11:08 +0000)]
[Gtk] Add missing pixel test results in svg/ subdirectory
https://bugs.webkit.org/show_bug.cgi?id=209136

Reviewed by Žan Doberšek.

Add pixel tests results based on current WebKit ToT.
No Gtk bot is running pixel tests, but it is still helpful to have an
updated pixel test baseline for local development. Many SVG tests
still depend on the pixel test output as only way to catch
regressions. This should be changed in future, but for now we should
at least have an accurate baseline.

* platform/gtk/svg/animations/animate-marker-orienttype-1-expected.png: Added.
* platform/gtk/svg/animations/animate-marker-orienttype-2-expected.png: Added.
* platform/gtk/svg/animations/animate-marker-orienttype-3-expected.png: Added.
* platform/gtk/svg/animations/animate-viewport-overflow-2-expected.png: Added.
* platform/gtk/svg/animations/animate-viewport-overflow-expected.png: Added.
* platform/gtk/svg/animations/avoid-calculating-for-non-animating-elements-expected.png: Added.
* platform/gtk/svg/css/shape-rendering-parsing-expected.png: Added.
* platform/gtk/svg/custom/non-scaling-stroke-markers-expected.png: Added.
* platform/gtk/svg/custom/relative-sized-use-without-attributes-on-symbol-expected.png: Added.
* platform/gtk/svg/custom/use-on-symbol-inside-pattern-expected.png: Added.
* platform/gtk/svg/dynamic-updates/SVGClipPath-prefixed-influences-hitTesting-expected.png: Added.
* platform/gtk/svg/dynamic-updates/SVGClipPath-prefixed-path-influences-hitTesting-expected.png: Added.
* platform/gtk/svg/dynamic-updates/SVGClipPathElement-prefixed-css-transform-influences-hitTesting-expected.png: Added.
* platform/gtk/svg/dynamic-updates/SVGClipPathElement-prefixed-transform-influences-hitTesting-expected.png: Added.
* platform/gtk/svg/dynamic-updates/SVGFEGaussianBlurElement-dom-edgeMode-attr-expected.png: Added.
* platform/gtk/svg/dynamic-updates/SVGFEGaussianBlurElement-svgdom-edgeMode-prop-expected.png: Added.
* platform/gtk/svg/dynamic-updates/SVGFilterElement-dom-filterRes-attr-expected.png: Added.
* platform/gtk/svg/filters/feBlend-all-blendmodes-expected.png: Added.
* platform/gtk/svg/filters/filter-image-ref-root-expected.png: Added.
* platform/gtk/svg/hixie/text/001-expected.png: Added.
* platform/gtk/svg/in-html/overflow-repaint-expected.png: Added.
* platform/gtk/svg/overflow/overflow-scroll-on-outermost-svg-element-expected.png: Added.
* platform/gtk/svg/text/scaled-font-expected.png: Added.
* platform/gtk/svg/text/text-hkern-expected.png: Added.
* platform/gtk/svg/text/text-overflow-ellipsis-svgfont-kerning-ligatures-expected.png: Added.
* platform/gtk/svg/text/text-vkern-on-horizontal-text-expected.png: Added.

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

2 months ago[GTK] Gardening, update TestExpectations
dpino@igalia.com [Mon, 16 Mar 2020 09:29:37 +0000 (09:29 +0000)]
[GTK] Gardening, update TestExpectations
https://bugs.webkit.org/show_bug.cgi?id=209105

Unreviewed gardening.

* platform/gtk/TestExpectations:

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

2 months agoRemove addHTTPOriginIfNeeded calls
commit-queue@webkit.org [Mon, 16 Mar 2020 08:11:26 +0000 (08:11 +0000)]
Remove addHTTPOriginIfNeeded calls
https://bugs.webkit.org/show_bug.cgi?id=209127

Patch by Rob Buis <rbuis@igalia.com> on 2020-03-16
Reviewed by Darin Adler.

Remove addHTTPOriginIfNeeded calls since they are get requests and navigations and the spec [1]
indicates that the Origin header should not be written out, making these calls no-ops.

       [1] https://fetch.spec.whatwg.org/#append-a-request-origin-header

* loader/FrameLoader.cpp:
(WebCore::FrameLoader::changeLocation):
(WebCore::FrameLoader::loadURL):

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

2 months agoSimplify ChromeClient.createWindow
commit-queue@webkit.org [Mon, 16 Mar 2020 07:20:28 +0000 (07:20 +0000)]
Simplify ChromeClient.createWindow
https://bugs.webkit.org/show_bug.cgi?id=209123

Patch by Rob Buis <rbuis@igalia.com> on 2020-03-16
Reviewed by Darin Adler.

Source/WebCore:

Simplify ChromeClient.createWindow by removing the FrameLoadRequest parameter.
It was only passed for its ResourceRequest member, which can also be obtained
from the NavigationAction parameter.

* loader/EmptyClients.h:
* loader/FrameLoader.cpp:
(WebCore::createWindow):
* page/Chrome.cpp:
(WebCore::Chrome::createWindow const):
* page/Chrome.h:
* page/ChromeClient.h:
* page/ContextMenuController.cpp:
(WebCore::openNewWindow):

Source/WebKit:

Adapt to API change.

* WebProcess/Inspector/WebInspector.cpp:
(WebKit::WebInspector::openInNewTab):
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::createWindow):
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchCreatePage):

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

2 months agoKeyedDecoderGeneric fails to allocate Vector while decoding broken data
Hironori.Fujii@sony.com [Mon, 16 Mar 2020 02:58:01 +0000 (02:58 +0000)]
KeyedDecoderGeneric fails to allocate Vector while decoding broken data
https://bugs.webkit.org/show_bug.cgi?id=207324

Reviewed by Darin Adler.

Source/WebCore:

There were three crash bugs in it.

KeyedDecoderGeneric was trying to allocate a buffer without
ensuring the size wouldn't exceed the decoding data size by using
bufferIsLargeEnoughToContain.

It was trying to push an itme into the top dictionary of emtpy
m_dictionaryStack when EndObject tag would appear without the
preceding BeginObject tag.

It was trying to push an item into the top array of empty
m_arrayStack when EndArray tag would appear without the preceding
BeginArray tag.

Tests: TestWebKitAPI: KeyedCoding.DecodeRandomData

* platform/generic/KeyedDecoderGeneric.cpp:
(WebCore::readString):
(WebCore::KeyedDecoderGeneric::KeyedDecoderGeneric):
Check bufferIsLargeEnoughToContain(size) before allocating a Vector with size.
Check if m_dictionaryStack and m_arrayStack are empty.

Tools:

* TestWebKitAPI/Tests/WebCore/KeyedCoding.cpp:
(TestWebKitAPI::generateRandomData): Added.
(TestWebKitAPI::KeyedCoding.DecodeRandomData): Added a new test decoding random data.

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

2 months agoWPE gardening.
lmoura@igalia.com [Mon, 16 Mar 2020 02:33:48 +0000 (02:33 +0000)]
WPE gardening.

Updated a test baseline with new message after changed from
js-test-pre to js-test.

Unreviewed test gardening.

* platform/gtk/TestExpectations: Updated an expectation with new bug
number.
* platform/wpe/TestExpectations:
* platform/wpe/fast/frames/sandboxed-iframe-navigation-allowed-expected.txt:

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

2 months ago[ANGLE] Source/ThirdParty/ANGLE/src/common/utilities.cpp:10: warning: ignoring #pragm...
commit-queue@webkit.org [Mon, 16 Mar 2020 02:08:19 +0000 (02:08 +0000)]
[ANGLE] Source/ThirdParty/ANGLE/src/common/utilities.cpp:10: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas]
https://bugs.webkit.org/show_bug.cgi?id=209014

Patch by Michael Catanzaro <mcatanzaro@gnome.org> on 2020-03-15
Reviewed by Darin Adler.

Silence compiler warning.

* changes.diff:
* src/common/utilities.cpp:

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

2 months ago[ANGLE] Source/ThirdParty/ANGLE/src/libANGLE/Display.h:221:73: warning: implicitly...
commit-queue@webkit.org [Mon, 16 Mar 2020 01:41:15 +0000 (01:41 +0000)]
[ANGLE] Source/ThirdParty/ANGLE/src/libANGLE/Display.h:221:73: warning: implicitly-declared ‘egl::AttributeMap& egl::AttributeMap::operator=(const egl::AttributeMap&)’ is deprecated [-Wdeprecated-copy]
https://bugs.webkit.org/show_bug.cgi?id=209015

Patch by Michael Catanzaro <mcatanzaro@gnome.org> on 2020-03-15
Reviewed by Darin Adler.

Suppress compiler warning. If this were WebKit code, I might take the time to fix it, but
with third-party code it's probably best to just turn off warnings that upstream is not
using.

* CMakeLists.txt:

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

2 months ago[DRT] InternalSettingsGenerated::resetToConsistentState() may override TestOptions...
cdumez@apple.com [Mon, 16 Mar 2020 01:17:03 +0000 (01:17 +0000)]
[DRT] InternalSettingsGenerated::resetToConsistentState() may override TestOptions::enableBackForwardCache
https://bugs.webkit.org/show_bug.cgi?id=207481
<rdar://problem/59331661>

Reviewed by Darin Adler.

Add a support for a new excludeFromInternalSetting option in Settings.yaml and use it for
'usesBackForwardCache' setting. This means that script will no longer be able to toggle
this particular setting via internals.settings JS API. Tests wanting to turn on the
back / forward cache are supposed to use the following:
<!-- webkit-test-runner [ enableBackForwardCache=true ] -->

Using internals.settings JS API to turn on the back/forward cache would not work well
with WebKit2 because of process-swap-on-navigation. Support for it in WK1 / DRT was
causing flakiness because of a conflict between the 2 ways of enabling the setting.

* Scripts/GenerateSettings.rb:
* Scripts/SettingsTemplates/InternalSettingsGenerated.cpp.erb:
* Scripts/SettingsTemplates/InternalSettingsGenerated.h.erb:
* Scripts/SettingsTemplates/InternalSettingsGenerated.idl.erb:
* page/Settings.yaml:

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

2 months agoRegression r258439: quicklook/multi-sheet-numbers-09.html is failing consistently...
aakash_jain@apple.com [Sun, 15 Mar 2020 21:28:27 +0000 (21:28 +0000)]
Regression r258439: quicklook/multi-sheet-numbers-09.html is failing consistently on iOS
https://bugs.webkit.org/show_bug.cgi?id=209128

Partially revert r258439.

Unreviewed test gardening.

* platform/ios-simulator-wk2/TestExpectations:

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

2 months ago[LFC][TFC] Add basic column span support for content box width
zalan@apple.com [Sun, 15 Mar 2020 15:33:24 +0000 (15:33 +0000)]
[LFC][TFC] Add basic column span support for content box width
https://bugs.webkit.org/show_bug.cgi?id=209120
<rdar://problem/60463424>

Reviewed by Antti Koivisto.

Source/WebCore:

Take the column spanning into account when computing the content width for the table cell.
[content box width = column width(1) + column width(2) + .. + column width(spanning value) + ((spanning value - 1) * horizontal spacing)]

Test: fast/layoutformattingcontext/table-colspan-simple.html

* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::layoutInFlowContent):
(WebCore::Layout::TableFormattingContext::layoutTableCellBox):
(WebCore::Layout::TableFormattingContext::positionTableCells):
* layout/tableformatting/TableFormattingContext.h:
* layout/tableformatting/TableGrid.cpp:
(WebCore::Layout::TableGrid::appendCell):
* layout/tableformatting/TableGrid.h:
(WebCore::Layout::TableGrid::CellInfo::startColumn const):
(WebCore::Layout::TableGrid::CellInfo::endColumn const):
(WebCore::Layout::TableGrid::CellInfo::startRow const):
(WebCore::Layout::TableGrid::CellInfo::endRow const):
(WebCore::Layout::TableGrid::CellInfo::columnSpan const):
(WebCore::Layout::TableGrid::CellInfo::rowSpan const):

LayoutTests:

* fast/layoutformattingcontext/table-colspan-simple-expected.html: Added.
* fast/layoutformattingcontext/table-colspan-simple.html: Added.

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

2 months agoreportZappedCellAndCrash should handle PreciseAllocation in IsoSubspace
ysuzuki@apple.com [Sun, 15 Mar 2020 10:51:04 +0000 (10:51 +0000)]
reportZappedCellAndCrash should handle PreciseAllocation in IsoSubspace
https://bugs.webkit.org/show_bug.cgi?id=209042

Reviewed by Mark Lam.

This patch adds support of PreciseAllocation cells to reportZappedCellAndCrash, since now it is frequently used
as a lower-tier cells in IsoSubspace.

* heap/IsoSubspace.h:
* heap/IsoSubspaceInlines.h:
(JSC::IsoSubspace::forEachLowerTierFreeListedPreciseAllocation):
* runtime/JSCell.cpp:
(JSC::reportZappedCellAndCrash):

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

2 months agoShould not use variable-length-array (VLA)
ysuzuki@apple.com [Sun, 15 Mar 2020 10:16:52 +0000 (10:16 +0000)]
Should not use variable-length-array (VLA)
https://bugs.webkit.org/show_bug.cgi?id=209043

Reviewed by Mark Lam.

PerformanceTests:

* MediaTime/Configurations/Base.xcconfig:

Source/bmalloc:

* Configurations/Base.xcconfig:

Source/JavaScriptCore:

This patch disables variable-length-array (VLA). If this feature uses user-input, user can
control the stack height consumed by C++ code. This patch avoids using VLA. To achieve that,

    1. We set `-Wvla` warning option to trigger warnings if it is used.
    2. Introduce MarkedJSValueRefArray for API. This replaces `JSValueRef arguments[variableLength]` use case.
       MarkedJSValueRefArray registers itself to JSC GC so that GC can mark it as a strong root.

* API/JSContext.mm:
(+[JSContext currentArguments]):
* API/JSValue.mm:
(-[JSValue callWithArguments:]):
(-[JSValue constructWithArguments:]):
(-[JSValue invokeMethod:withArguments:]):
* API/MarkedJSValueRefArray.cpp: Added.
(JSC::MarkedJSValueRefArray::MarkedJSValueRefArray):
(JSC::MarkedJSValueRefArray::~MarkedJSValueRefArray):
(JSC::MarkedJSValueRefArray::visitAggregate):
* API/MarkedJSValueRefArray.h: Added.
* API/tests/minidom.c:
(print):
* API/tests/testapi.cpp:
(TestAPI::markedJSValueArrayAndGC):
(testCAPIViaCpp):
* Configurations/Base.xcconfig:
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* heap/Heap.cpp:
(JSC::Heap::addCoreConstraints):
(JSC::Heap::addMarkedJSValueRefArray):
* heap/Heap.h:
* heap/MarkedSpace.h:
(JSC::MarkedSpace::activeWeakSetsBegin): Deleted.
(JSC::MarkedSpace::activeWeakSetsEnd): Deleted.
(JSC::MarkedSpace::newActiveWeakSetsBegin): Deleted.
(JSC::MarkedSpace::newActiveWeakSetsEnd): Deleted.
* runtime/ArgList.h:

Source/WebCore:

* Configurations/Base.xcconfig:
* crypto/mac/SerializedCryptoKeyWrapMac.mm:
(WebCore::wrapSerializedCryptoKey):
(WebCore::unwrapSerializedCryptoKey):
* html/canvas/WebGL2RenderingContext.cpp:
(WebCore::WebGL2RenderingContext::getInternalformatParameter):
* platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:
(WebCore::CoreAudioCaptureDeviceManager::refreshAudioCaptureDevices):
* platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm:
(WebCore::updateDisplayID):
(WebCore::ScreenDisplayCaptureSourceMac::screenCaptureDevices):

Source/WebCore/PAL:

* Configurations/Base.xcconfig:

Source/WebInspectorUI:

* Configurations/Base.xcconfig:

Source/WebKit:

* Configurations/Base.xcconfig:
* UIProcess/_WKTouchEventGenerator.mm:
(-[_WKTouchEventGenerator touchDown:touchCount:]):
(-[_WKTouchEventGenerator liftUp:touchCount:]):
(-[_WKTouchEventGenerator moveToPoints:touchCount:duration:]):

Source/WebKitLegacy/mac:

* Configurations/Base.xcconfig:

Source/WTF:

* Configurations/Base.xcconfig:
* wtf/UUID.cpp:
(WTF::bootSessionUUIDString):

Tools:

* ContentExtensionTester/Configurations/Base.xcconfig:
* lldb/lldbWebKitTester/Configurations/Base.xcconfig:

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

2 months agoFix the "deliver cached ranges" logic in PDFPlugin (and other small cleanups)
beidson@apple.com [Sun, 15 Mar 2020 03:40:43 +0000 (03:40 +0000)]
Fix the "deliver cached ranges" logic in PDFPlugin (and other small cleanups)
https://bugs.webkit.org/show_bug.cgi?id=209097

Reviewed by Tim Hatcher.

Streaming in data always appended to the buffer instead of first growing the buffer.
This wasn't noticed earlier because we often did not grow the buffer for successful range request completion.
But now we often do!

So this cleans that all up.

At the same time it revealed other interactions with PDFKit that force us to handle data requests on the main
thread after the document load is complete - Which is fine!

* WebProcess/Plugins/PDF/PDFPlugin.h:
* WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::dataProviderGetBytesAtPositionCallback): If on the main thread (and the document load is complete)
  handle the request directly!
(WebKit::PDFPlugin::getResourceBytesAtPositionMainThread):
(WebKit::PDFPlugin::ByteRangeRequest::completeWithAccumulatedData):
(WebKit::PDFPlugin::ensureDataBufferLength):
(WebKit::PDFPlugin::didFail):
(WebKit::PDFPlugin::maybeClearHighLatencyDataProviderFlag):
(WebKit::PDFPlugin::documentDataDidFinishLoading):
(WebKit::PDFPlugin::installPDFDocument):
(WebKit::PDFPlugin::manualStreamDidReceiveData): Grow the buffer instead of append.

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

2 months agoAdd missing checks needed for AppBound Quirk
bfulgham@apple.com [Sun, 15 Mar 2020 00:14:33 +0000 (00:14 +0000)]
Add missing checks needed for AppBound Quirk
https://bugs.webkit.org/show_bug.cgi?id=209117
<rdar://problem/60460097>

Reviewed by John Wilander.

The checks for the 'NeedsInAppBrowserPrivacyQuirks' flag added in r258101 was incomplete.
Source/WebCore:

Two additional call sites need to check the state of the flag.

* bindings/js/ScriptController.cpp:
(WebCore::ScriptController::executeScriptInWorld): Add missing check for the quirk.
* loader/FrameLoaderClient.h: Add new API for the 'NeedsInAppBrowserPrivacyQuirks'
debug flag.
* page/Frame.cpp:
(WebCore::Frame::injectUserScriptImmediately): Ditto.

Source/WebKit:

These changes let the WebFrameLoaderClient report the quirk state to WebCore code.

* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::needsInAppBrowserPrivacyQuirks): Added.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::needsInAppBrowserPrivacyQuirks const): Added.

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

2 months agoChange all return values in TextIterator header from live ranges to SimpleRange
darin@apple.com [Sat, 14 Mar 2020 22:59:34 +0000 (22:59 +0000)]
Change all return values in TextIterator header from live ranges to SimpleRange
https://bugs.webkit.org/show_bug.cgi?id=208906

Reviewed by Antti Koivisto.

Source/WebCore:

This is another step in moving off of live ranges for WebKit internals.

- Change return values of remaining functions that were returning live ranges in
  the TextIterator header to return SimpleRange.
- Change some arguments from live ranges to SimpleRange.
- At some call sites, use createLiveRange to convert the SimpleRange into a live
  range (for now), but at others update the code to use SimpleRange.
- Renamed a version of findPlainText that returns a boolean to containsPlainText.
- Convert call sites that were using createLiveRange just to use the
  Range::startPosition and Range::endPosition functions to instead use a new
  overload of the createLegacyEditingPosition function that can be used with
  SimpleRange::start and SimpleRange::end because it takes a BoundaryPoint.

* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::rangeMatchesTextNearRange): Return Optional<SimpleRange>
and take SimpleRange argument.
(WebCore::AXObjectCache::previousBoundary): Updated since
SimplifiedBackwardsTextIterator::range now returns SimpleRange.
* accessibility/AXObjectCache.h: Updated for the above.

* accessibility/AccessibilityObjectInterface.h:
(WebCore::AXCoreObject::containsText const): Updated for name change.
Now containsPlainText instead of findPlainText.

* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper arrayOfTextForTextMarkers:attributed:]):
Use createLegacyEditingPosition instead of createLiveRange.
(-[WebAccessibilityObjectWrapper rangeFromMarkers:withText:]): Use createLiveRange.

* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper doAXAttributedStringForTextMarkerRange:spellCheck:]):
Use createLegacyEditingPosition instead of createLiveRange.

* dom/Position.cpp:
(WebCore::createLegacyEditingPosition): Added an overload that takes a BoundaryPoint.
* dom/Position.h: Updated for the above, also removed unneeded includes and forward
declarations.

* editing/Editing.cpp:
(WebCore::visiblePositionForIndexUsingCharacterIterator): Updated since
CharacterIterator::range is now a SimpleRange, use createLegacyEditingPosition.

* editing/Editor.cpp:
(WebCore::Editor::advanceToNextMisspelling): Updated since CharacterIterator::range
is now a SimpleRange.
(WebCore::Editor::rangeOfString): Updated since findPlainText now returns a
SimpleRange; use createLiveRange.
(WebCore::Editor::countMatchesForText): Ditto.

* editing/TextIterator.cpp:
(WebCore::SimplifiedBackwardsTextIterator::range const): Return a SimpleRange.
(WebCore::CharacterIterator::range const): Ditto.
(WebCore::characterSubrange): Updated since CharacterIterator::range returns
a SimpleRange. Use createLiveRange.
(WebCore::BackwardsCharacterIterator::BackwardsCharacterIterator): Cut down
code here by initializing data members in the class definition.
(WebCore::BackwardsCharacterIterator::range const): Return a SimpleRange.
(WebCore::WordAwareIterator::WordAwareIterator): Cut down code here by
initializing data members in the class definition.
(WebCore::hasAnyPlainText): Take a SimpleRange, use createLiveRange.
(WebCore::plainTextUsingBackwardsTextIteratorForTesting): Take a SimpleRange,
use createLiveRange.
(WebCore::collapsedToBoundary): Take and return a SimpleRange.
(WebCore::findPlainTextMatches): Take a SimpleRange, use createLiveRange.
(WebCore::rangeForMatch): Take and return a SimpleRange.
(WebCore::findClosestPlainText): Ditto.
(WebCore::findPlainText): Ditto.
(WebCore::containsPlainText): Renamed from findPlainText since this returns
a boolean, not a found location of some text.
* editing/TextIterator.h: Updated for the above. Also changed some data
members to use unsigned for offsets rather than int.

* editing/TextManipulationController.cpp:
(WebCore::ParagraphContentIterator::startPosition): Use
createLegacyEditingPosition instead of createLiveRange.
(WebCore::ParagraphContentIterator::endPosition): Ditto.

* editing/VisiblePosition.h: Added a forward declaration here since Position.h
no longer forward declares it.

* editing/VisibleSelection.cpp:
(WebCore::VisibleSelection::appendTrailingWhitespace): Updated since
CharacterIterator::range is now a SimpleRange, use createLegacyEditingPosition.
* editing/VisibleUnits.cpp:
(WebCore::previousBoundary): Ditto.
(WebCore::nextBoundary): Ditto.

* testing/Internals.cpp:
(WebCore::Internals::rangeOfStringNearLocation): Updated since
findClosestPlainText now returns a SimpleRange, use createLiveRange.

Source/WebKit:

* WebProcess/WebPage/Cocoa/WebPageCocoa.mm: Removed unneeded include of
TextIterator.h.

* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::rangeNearPositionMatchesText): Removed unused originalRange argument,
changed return type to Optional<SimpleRange> since findClosestPlainText now
returns a SimpleRange.
(WebKit::WebPage::getRectsAtSelectionOffsetWithText): Updated since
rangeNearPositionMatchesText now returns Optional<SimpleRange>, use createLiveRange.
(WebKit::WebPage::requestDocumentEditingContext): Updated since
CharacterIterator::range returns SimpleRange, use createLiveRange.

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

2 months agoGather PDF scripts to run on a background thread.
beidson@apple.com [Sat, 14 Mar 2020 22:17:04 +0000 (22:17 +0000)]
Gather PDF scripts to run on a background thread.
https://bugs.webkit.org/show_bug.cgi?id=209063

Reviewed by Geoff Garen.

In incremental loading mode, gathering document scripts will sometimes require PDFKit/CG
to lock and wait on data loads from our data provider.

So if we gather them on the main thread, we will hang the main thread and therefore deadlock
with our data provider thread/queue.

So let's gather those scripts on a background thread!

* WebProcess/Plugins/PDF/PDFPlugin.h:
* WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::threadEntry):
(WebKit::PDFPlugin::ByteRangeRequest::completeWithAccumulatedData):
(WebKit::PDFPlugin::documentDataDidFinishLoading):
(WebKit::PDFPlugin::installPDFDocument):
(WebKit::PDFPlugin::streamDidFinishLoading):
(WebKit::PDFPlugin::manualStreamDidFinishLoading):
(WebKit::PDFPlugin::tryRunScriptsInPDFDocument): Only actually gathers scripts to execute if there
  is a m_pdfDocument and the entire document data finished loading.
(WebKit::PDFPlugin::pdfDocumentDidLoad): Deleted.
(WebKit::PDFPlugin::runScriptsInPDFDocument): Deleted.

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

2 months ago[LFC][TFC] Fill in the gaps with anonymous table cell boxes
zalan@apple.com [Sat, 14 Mar 2020 22:04:00 +0000 (22:04 +0000)]
[LFC][TFC] Fill in the gaps with anonymous table cell boxes
https://bugs.webkit.org/show_bug.cgi?id=209114
<rdar://problem/60458806>

Reviewed by Antti Koivisto.

Source/WebCore:

17.5 Visual layout of table contents
A "missing cell" is a cell in the row/column grid that is not
occupied by an element or pseudo-element. Missing cells are rendered
as if an anonymous table-cell box occupied their position in the grid.
(https://www.w3.org/TR/CSS22/tables.html)

This helps to keep TableGrid an actual grid.

Test: fast/layoutformattingcontext/table-missing-cells-simple.html

* layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::TreeBuilder::buildTableStructure):

LayoutTests:

* fast/layoutformattingcontext/table-missing-cells-simple-expected.html: Added.
* fast/layoutformattingcontext/table-missing-cells-simple.html: Added.

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

2 months agoCleanup RenderMediaControls.cpp and RenderMediaControlElements.cpp
peng.liu6@apple.com [Sat, 14 Mar 2020 19:19:16 +0000 (19:19 +0000)]
Cleanup RenderMediaControls.cpp and RenderMediaControlElements.cpp
https://bugs.webkit.org/show_bug.cgi?id=209008

Reviewed by Daniel Bates.

Source/WebCore:

Merge RenderMediaControls.[h|cpp] and RenderMediaControlElements.[h|cpp].
Remove class RenderMediaVolumeSliderContainer because we can use RenderBlockFlow
to render MediaControlTextTrackContainerElement.

No new tests, no functional change.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* html/shadow/MediaControlElementTypes.cpp:
* html/shadow/MediaControlElements.cpp:
(WebCore::MediaControlTextTrackContainerElement::createElementRenderer):
* rendering/RenderMediaControlElements.cpp: Removed.
* rendering/RenderMediaControlElements.h: Removed.
* rendering/RenderMediaControls.cpp:
(WebCore::RenderMediaVolumeSliderContainer::RenderMediaVolumeSliderContainer):
(WebCore::RenderMediaVolumeSliderContainer::layout):
(WebCore::RenderMediaControlTimelineContainer::RenderMediaControlTimelineContainer):
(WebCore::RenderMediaControlTimelineContainer::layout):
* rendering/RenderMediaControls.h:
* rendering/RenderThemeMac.mm:

LayoutTests:

Remove unused code in a test.

* media/track/track-cue-rendering-rtl.html:

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

2 months agoShare HitTestResult::addNodeToListBasedTestResult() impl for LayoutRect and FloatRect...
dbates@webkit.org [Sat, 14 Mar 2020 19:01:48 +0000 (19:01 +0000)]
Share HitTestResult::addNodeToListBasedTestResult() impl for LayoutRect and FloatRect overloads
https://bugs.webkit.org/show_bug.cgi?id=209107

Reviewed by Brady Eidson.

Remove code duplication for adding a node to the result set.

* rendering/HitTestResult.cpp:
(WebCore::HitTestResult::addNodeToListBasedTestResultCommon): Added.
(WebCore::HitTestResult::addNodeToListBasedTestResult): Write in terms of addNodeToListBasedTestResultCommon().
* rendering/HitTestResult.h:

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

2 months ago[CMake] Warning when ccache is not installed
commit-queue@webkit.org [Sat, 14 Mar 2020 16:10:25 +0000 (16:10 +0000)]
[CMake] Warning when ccache is not installed
https://bugs.webkit.org/show_bug.cgi?id=208952

Patch by Michael Catanzaro <mcatanzaro@gnome.org> on 2020-03-14
Reviewed by Daniel Bates.

Change the warning when ccache is not installed to a status message. We shouldn't be
printing warnings except when there is an actual problem.

* Source/cmake/WebKitCCache.cmake:

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

2 months ago[Tree building] Reset the fragmented flow status before calling child.willBeRemovedFr...
zalan@apple.com [Sat, 14 Mar 2020 12:57:36 +0000 (12:57 +0000)]
[Tree building] Reset the fragmented flow status before calling child.willBeRemovedFromTree.
https://bugs.webkit.org/show_bug.cgi?id=209100
<rdar://problem/60434672>

Reviewed by Simon Fraser.

Source/WebCore:

::willBeRemovedFromTree() assumes all the cleanup has happened and it's the final step before calling d'tor.
It clears m_fragmentList that resetFragmentedFlowStateOnRemoval() later checks for consistency (m_fragmentList.contains(fragment)).

Test: fast/multicol/reparent-fragment-flow-content.html

* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::detachFromRenderElement):

LayoutTests:

* fast/multicol/reparent-fragment-flow-content-expected.txt: Added.
* fast/multicol/reparent-fragment-flow-content.html: Added.

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

2 months agoSet Origin header value to null rather than omitting it
commit-queue@webkit.org [Sat, 14 Mar 2020 10:22:51 +0000 (10:22 +0000)]
Set Origin header value to null rather than omitting it
https://bugs.webkit.org/show_bug.cgi?id=186030

Patch by Rob Buis <rbuis@igalia.com> on 2020-03-14
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Update improved test result.

* web-platform-tests/fetch/origin/assorted.window-expected.txt:

Source/WebCore:

For every redirect, addHTTPOriginIfNeeded should be called to
make sure that the tainted origin logic is applied [1, Step 10] and
thus the request after redirect has the correct Origin header.

Make AppleWin treat 308 redirects like 307 and so keeping http
methods across redirects. This is similar to
https://bugs.webkit.org/show_bug.cgi?id=154348.

[1] https://fetch.spec.whatwg.org/#concept-http-network-or-cache-fetch

* loader/FrameLoader.cpp:
(WebCore::FrameLoader::addHTTPOriginIfNeeded):
* loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::checkRedirectionCrossOriginAccessControl):
* platform/network/cf/ResourceHandleCFURLConnectionDelegate.cpp:
(WebCore::ResourceHandleCFURLConnectionDelegate::createResourceRequest):

LayoutTests:

Update improved test result.

* http/tests/security/cors-post-redirect-307-expected.txt:
* http/tests/security/cors-post-redirect-307-pson-expected.txt:
* http/tests/security/cors-post-redirect-308-expected.txt:

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

2 months agoCall SVGTRefElement::buildPendingResource in SVGElement::didFinishInsertingNode
rniwa@webkit.org [Sat, 14 Mar 2020 07:15:14 +0000 (07:15 +0000)]
Call SVGTRefElement::buildPendingResource in SVGElement::didFinishInsertingNode
https://bugs.webkit.org/show_bug.cgi?id=208981

Reviewed by Antti Koivisto.

This patch moves the call to SVGTRefElement::buildPendingResource from SVGElement::insertedIntoAncestor
to SVGElement::didFinishInsertingNode.

* svg/SVGElement.cpp:
(WebCore::SVGElement::insertedIntoAncestor): Return true when the element has a pending resource ID.
(WebCore::SVGElement::didFinishInsertingNode): Added. Calls buildPendingResourcesIfNeeded.
* svg/SVGElement.h:

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

2 months agoUnreviewed. Fix windows build by making configSizeToProtect stay 4KB.
sbarati@apple.com [Sat, 14 Mar 2020 07:03:58 +0000 (07:03 +0000)]
Unreviewed. Fix windows build by making configSizeToProtect stay 4KB.

* runtime/JSCConfig.h:

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

2 months agoPROGRESSION: webgl/1.0.3/conformance/textures/copy-tex-image-2d-formats.html is failing
justin_fan@apple.com [Sat, 14 Mar 2020 06:43:46 +0000 (06:43 +0000)]
PROGRESSION: webgl/1.0.3/conformance/textures/copy-tex-image-2d-formats.html is failing
https://bugs.webkit.org/show_bug.cgi?id=205736

Unreviewed test expectation update.

* TestExpectations:
* webgl/1.0.3/conformance/textures/copy-tex-image-2d-formats-expected.txt:

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

2 months agoPROGRESSION (r253926): webgl/1.0.3/conformance/renderbuffers/feedback-loop.html is...
justin_fan@apple.com [Sat, 14 Mar 2020 06:16:27 +0000 (06:16 +0000)]
PROGRESSION (r253926): webgl/1.0.3/conformance/renderbuffers/feedback-loop.html is failing
https://bugs.webkit.org/show_bug.cgi?id=205738

Unreviewed test expectation updates.

* TestExpectations:
* platform/ios/TestExpectations:
* webgl/1.0.3/conformance/renderbuffers/feedback-loop-expected.txt:

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

2 months agoconfigSizeToProtect should be 16KB
sbarati@apple.com [Sat, 14 Mar 2020 04:11:44 +0000 (04:11 +0000)]
configSizeToProtect should be 16KB
https://bugs.webkit.org/show_bug.cgi?id=209068

Reviewed by Keith Miller.

Source/bmalloc:

* bmalloc/Gigacage.h:

Source/JavaScriptCore:

* runtime/JSCConfig.h:

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

2 months agoSVGMatrix should have the access right of its owner SVGTransform always
said@apple.com [Sat, 14 Mar 2020 03:11:34 +0000 (03:11 +0000)]
SVGMatrix should have the access right of its owner SVGTransform always
https://bugs.webkit.org/show_bug.cgi?id=207462

Reviewed by Simon Fraser.

Source/WebCore:

The SVGMatrix needs to be reattached to its owner SVGTransform when the
access right of this owner changes. The access right of the owner changes
when it gets attached to or detached from a higher level owner.

Test: svg/dom/SVGTransformList-anim-read-only.html

* svg/SVGTransform.h:
* svg/properties/SVGProperty.h:
(WebCore::SVGProperty::attach):
(WebCore::SVGProperty::detach):
(WebCore::SVGProperty::reattach):

LayoutTests:

* svg/dom/SVGTransformList-anim-read-only-expected.txt: Added.
* svg/dom/SVGTransformList-anim-read-only.html: Added.

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

2 months agoWKWebView._negotiatedLegacyTLS should be correct after back/forward navigations
commit-queue@webkit.org [Sat, 14 Mar 2020 02:10:54 +0000 (02:10 +0000)]
WKWebView._negotiatedLegacyTLS should be correct after back/forward navigations
https://bugs.webkit.org/show_bug.cgi?id=209011
<rdar://problem/59370588>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-03-13
Reviewed by Youenn Fablet.

Source/WebCore:

This is basically r258343 but for legacy TLS negotiation instead of plaintext HTTP use.

* dom/SecurityContext.h:
(WebCore::SecurityContext::usedLegacyTLS const):
(WebCore::SecurityContext::setUsedLegacyTLS):
* history/CachedFrame.cpp:
(WebCore::CachedFrame::usedLegacyTLS const):
(WebCore::CachedFrame::setUsedLegacyTLS): Deleted.
* history/CachedFrame.h:
(WebCore::CachedFrame::usedLegacyTLS const): Deleted.
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::commitProvisionalLoad):
* platform/network/ResourceResponseBase.cpp:
(WebCore::ResourceResponseBase::includeCertificateInfo const):
* platform/network/ResourceResponseBase.h:
(WebCore::ResourceResponseBase::setUsedLegacyTLS):

Source/WebKit:

* NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::didReceiveResponse):
* NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::notifyDidReceiveResponse):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::usedLegacyTLS): Deleted.
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/Network/WebResourceLoader.cpp:
(WebKit::WebResourceLoader::didReceiveResponse):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::savePlatformDataToCachedFrame):

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/TLSDeprecation.mm:
(TestWebKitAPI::TEST):

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

2 months ago[watchOS] Don’t display empty text suggestions in Quickboard when editing input fields
wenson_hsieh@apple.com [Sat, 14 Mar 2020 02:01:28 +0000 (02:01 +0000)]
[watchOS] Don’t display empty text suggestions in Quickboard when editing input fields
https://bugs.webkit.org/show_bug.cgi?id=209089

Reviewed by Tim Horton.

Source/WebKit:

Handle text suggestions that lack `displayText` gracefully in Quickboard by not showing them as AutoFill
candidates. Currently, they are presented as blank collection view cells in Quickboard, which leads to a
confusing user experience.

Test: WKWebViewAutoFillTests.DoNotShowBlankTextSuggestions

* UIProcess/ios/forms/WKFocusedFormControlView.mm:
(-[WKFocusedFormControlView setSuggestions:]):

Tools:

Add an API test for watchOS. Also rename a few occurrences of "Autofill" to "AutoFill", to reflect the official
marketing name for the feature.

* TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:
(runUntilReceivesAutoplayEvent):

Additionally fix the watchOS engineering build for arm64_32, which was failing due to comparisons between 64-bit
and 32-bit integers. This is because this function took a `WKAutoplayEvent` (a 32-bit integer), but compared
against the `_WKAutoplayEvent` type (an NSInteger that is 64 bits on this architecture). There didn't seem to
be any compelling reason to compare against different types here (especially since we only set
`receivedAutoplayEvent` under the Objective-C delegate method that provides a `_WKAutoplayEvent`), so I changed
these all to be `_WKAutoplayEvent`.

* TestWebKitAPI/Tests/ios/WKWebViewAutofillTests.mm:
(-[AutoFillTestView _autofillInputView]):
(-[AutoFillTestView textInputHasAutoFillContext]):
(TestWebKitAPI::TEST):
(-[AutofillTestView initWithFrame:]): Deleted.
(-[AutofillTestView _autofillInputView]): Deleted.
(-[AutofillTestView textInputHasAutofillContext]): Deleted.
* TestWebKitAPI/ios/UIKitSPI.h:

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

2 months agoClean up sandbox violations found during testing
bfulgham@apple.com [Sat, 14 Mar 2020 01:43:54 +0000 (01:43 +0000)]
Clean up sandbox violations found during testing
https://bugs.webkit.org/show_bug.cgi?id=209096
<rdar://problem/59931477>

Reviewed by Geoffrey Garen.

Remove telemetry from some items, and allow access to some IOKit properties
needed for media playback on macOS and iOS.

* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
* WebProcess/com.apple.WebProcess.sb.in:

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

2 months ago[Tree building] Block::attachIgnoringContinuation should allow inline tables as befor...
zalan@apple.com [Sat, 14 Mar 2020 01:43:38 +0000 (01:43 +0000)]
[Tree building] Block::attachIgnoringContinuation should allow inline tables as before child container
https://bugs.webkit.org/show_bug.cgi?id=209095
<rdar://problem/59837588>

Reviewed by Simon Fraser.

Source/WebCore:

It's perfectly valid to have an inline table as the anonymous container for the before child.
It'll get wrapped inside an anonymous block right before we insert the block box candidate, so
the final result will be something like:

new block level child (this is the child we are inserting)
anonymous block wrapper
  inline table (this is the before child's inline container)
    before child

Test: fast/table/before-child-is-inline-table.html

* rendering/updating/RenderTreeBuilderBlock.cpp:
(WebCore::RenderTreeBuilder::Block::attachIgnoringContinuation):

LayoutTests:

* fast/table/before-child-is-inline-table-expected.txt: Added.
* fast/table/before-child-is-inline-table.html: Added.

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

2 months ago[GPU Process] GraphicsContextStateChange::apply() should process ShadowsIgnoreTransfo...
sabouhallawa@apple.com [Sat, 14 Mar 2020 01:27:59 +0000 (01:27 +0000)]
[GPU Process] GraphicsContextStateChange::apply() should process ShadowsIgnoreTransformsChange before processing ShadowChange
https://bugs.webkit.org/show_bug.cgi?id=209071

Reviewed by Darin Adler.

Ensure GraphicsContextStateChange::apply() calls shadowsIgnoreTransforms()
before calling setLegacyShadow() or setShadow().

Test: This patch fixes the following tests when running:
"run-webkit-tests --internal-feature RenderCanvasInGPUProcessEnabled"
    fast/canvas/canvas-image-shadow.html
    fast/canvas/canvas-scale-drawImage-shadow.html
    fast/canvas/canvas-scale-fillPath-shadow.html
    fast/canvas/canvas-scale-fillRect-shadow.html
    fast/canvas/canvas-scale-shadowBlur.html
    fast/canvas/canvas-transforms-fillRect-shadow.html
    fast/canvas/fillText-shadow.html

* platform/graphics/GraphicsContext.cpp:
(WebCore::GraphicsContextStateChange::apply const):

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

2 months agoUnreviewed, fix JSC / test262 tests
ysuzuki@apple.com [Sat, 14 Mar 2020 01:01:23 +0000 (01:01 +0000)]
Unreviewed, fix JSC / test262 tests
https://bugs.webkit.org/show_bug.cgi?id=209033
<rdar://problem/58946936>

Follow-up change for DisallowGC causes crash because CodeBlock is nullptr when function call is non JS calls.

* interpreter/Interpreter.cpp:
(JSC::Interpreter::executeCall):
(JSC::Interpreter::executeConstruct):

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

2 months agoMissing arithMode for ArithAbs and ArithNegate in DFGClobberize
tzagallo@apple.com [Sat, 14 Mar 2020 00:19:24 +0000 (00:19 +0000)]
Missing arithMode for ArithAbs and ArithNegate in DFGClobberize
https://bugs.webkit.org/show_bug.cgi?id=208685
<rdar://problem/60115088>

Reviewed by Saam Barati.

In the pure case of ArithNegate and ArithAbs in DFGClobberize, their PureValues did not include their
respective ArithMode. That means that e.g. a CheckOverflow ArithNegate/Abs could be considered equivalent
to an Unchecked version of the same node.

Thanks to Samuel Groß of Google Project Zero for identifying this bug.

* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):

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

2 months agoUnreviewed, reverting r258446.
lawrence.j@apple.com [Sat, 14 Mar 2020 00:05:31 +0000 (00:05 +0000)]
Unreviewed, reverting r258446.

These expectations are no longer needed.

Reverted changeset:

"[ Mac ] http/tests/security/mixedContent/insecure-worker-
global-scope.html is flaky failing."
https://bugs.webkit.org/show_bug.cgi?id=209093
https://trac.webkit.org/changeset/258446

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

2 months agoUnreviewed, reverting r258431.
lawrence.j@apple.com [Fri, 13 Mar 2020 23:59:20 +0000 (23:59 +0000)]
Unreviewed, reverting r258431.

These tests are flaky failing.

Reverted changeset:

"Add mixed content block test for imported scripts in worker
global scope"
https://bugs.webkit.org/show_bug.cgi?id=209075
https://trac.webkit.org/changeset/258431

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

2 months agoUnreviewed, drop unused variable in WebPageProxy::backForwardGoToItem().
cdumez@apple.com [Fri, 13 Mar 2020 23:57:20 +0000 (23:57 +0000)]
Unreviewed, drop unused variable in WebPageProxy::backForwardGoToItem().

* UIProcess/WebPageProxy.cpp:

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

2 months agoRemove unused code related to removePrevalentDomains()
wilander@apple.com [Fri, 13 Mar 2020 23:35:40 +0000 (23:35 +0000)]
Remove unused code related to removePrevalentDomains()
https://bugs.webkit.org/show_bug.cgi?id=209078
<rdar://problem/59681984>

Reviewed by Brent Fulgham.

The various removePrevalentDomains() functions and its IPC endpoint are unused and should be removed.

Source/WebCore:

No new tests. Just dead code removal.

* platform/network/NetworkStorageSession.cpp:
(WebCore::NetworkStorageSession::removePrevalentDomains): Deleted.
* platform/network/NetworkStorageSession.h:

Source/WebKit:

* NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:
(WebKit::ResourceLoadStatisticsStore::clearBlockingStateForDomains): Deleted.
* NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::removePrevalentDomains): Deleted.
(WebKit::WebResourceLoadStatisticsStore::callRemoveDomainsHandler): Deleted.
* NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::removePrevalentDomains): Deleted.
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:

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

2 months ago[Cocoa] Push applicationSDKVersion() down from WebCore into WTF
mmaxfield@apple.com [Fri, 13 Mar 2020 23:33:33 +0000 (23:33 +0000)]
[Cocoa] Push applicationSDKVersion() down from WebCore into WTF
https://bugs.webkit.org/show_bug.cgi?id=209030

Reviewed by Simon Fraser.

Source/JavaScriptCore:

dyld_get_program_sdk_version() gives you the wrong answer in the Web Process (or at least
not the answer you actually want). There are already facilities for the UI Process to tell
the Web Process what the real value is, but those functions are currently in WebCore,
which is inaccessible to WTF. This patch is in preparation for
https://bugs.webkit.org/show_bug.cgi?id=208969 which needs to know this information in WTF.

I also found a few places which were calling dyld_get_program_sdk_version() in JavaScriptCore
and WebCore (which is wrong because those libraries exist in the Web Process), and have fixed
them up to use applicationSDKVersion() instead.

* API/JSWrapperMap.mm:
(supportsInitMethodConstructors):

Source/WebCore:

* html/HTMLObjectElement.cpp:
* html/MediaElementSession.cpp:
(WebCore::MediaElementSession::requiresFullscreenForVideoPlayback const):
* loader/DocumentThreadableLoader.cpp:
(WebCore::DocumentThreadableLoader::makeCrossOriginAccessRequest):
* platform/RuntimeApplicationChecks.h:
* platform/Timer.cpp:
(WebCore::shouldSuppressThreadSafetyCheck):
* platform/cocoa/RuntimeApplicationChecksCocoa.mm:
(WebCore::applicationSDKVersionOverride): Deleted.
(WebCore::setApplicationSDKVersion): Deleted.
(WebCore::applicationSDKVersion): Deleted.

Source/WebKit:

* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
* Shared/WebPreferencesDefaultValues.cpp:
(WebKit::defaultCSSOMViewScrollingAPIEnabled):
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):

Source/WTF:

* WTF.xcodeproj/project.pbxproj:
* wtf/PlatformMac.cmake:
* wtf/cocoa/RuntimeApplicationChecksCocoa.cpp: Added.
* wtf/cocoa/RuntimeApplicationChecksCocoa.h: Added.
(WTF::applicationSDKVersionOverride):
(WTF::setApplicationSDKVersion):
(WTF::applicationSDKVersion):

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

2 months ago[ Mac ] http/tests/security/mixedContent/insecure-worker-global-scope.html is flaky...
lawrence.j@apple.com [Fri, 13 Mar 2020 23:33:23 +0000 (23:33 +0000)]
[ Mac ] http/tests/security/mixedContent/insecure-worker-global-scope.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=209093

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

2 months agoRemove unused IPC function UserMediaCaptureManagerProxy::SetMuted
bfulgham@apple.com [Fri, 13 Mar 2020 23:29:08 +0000 (23:29 +0000)]
Remove unused IPC function UserMediaCaptureManagerProxy::SetMuted
https://bugs.webkit.org/show_bug.cgi?id=209087
<rdar://problem/59658963>

Reviewed by Eric Carlson.

Remove the unused UserMediaCaptureManagerProxy message 'SetMuted'.

* UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::setMuted): Deleted.
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:

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

2 months agoRemove unused GetNetworkLoadInformationRequest call
bfulgham@apple.com [Fri, 13 Mar 2020 23:21:28 +0000 (23:21 +0000)]
Remove unused GetNetworkLoadInformationRequest call
https://bugs.webkit.org/show_bug.cgi?id=209081
<rdar://problem/59659064>

Reviewed by Geoffrey Garen.

Remove dead code associated with an unused IPC message.

* NetworkProcess/NetworkConnectionToWebProcess.h:
(WebKit::NetworkConnectionToWebProcess::getNetworkLoadInformationRequest): Deleted.
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:

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

2 months ago[JSC] Reload CodeBlock or suppress GC while setting up calls
ysuzuki@apple.com [Fri, 13 Mar 2020 23:20:45 +0000 (23:20 +0000)]
[JSC] Reload CodeBlock or suppress GC while setting up calls
https://bugs.webkit.org/show_bug.cgi?id=209033
<rdar://problem/58946936>

Reviewed by Saam Barati.

The sequence of Interpreter::execute is the following.

    1. Getting CodeBlock from Executable
    2. Doing a lot of setups
    3. Setting (1)'s CodeBlock to ProtoFrame
    4. Calling code through Executable

During (2), it would be possible that GC happens and it replaces CodeBlock in Executable.
Then, when executing JITCode with CodeBlock in (4), we use new JITCode with old CodeBlock.

In this patch,

For ProgramExecutable, FunctionExecutable, ModuleProgramExecutable, we ensure that no GC happens
after getting CodeBlock by placing DisallowGC. For EvalExecutable, we reload CodeBlock after setting
up environment. It is possible that FunctionExecutable* stored in CodeBlock can be different when
executing a new CodeBlock, but this is OK since this different does not appear and we do not rely on
this: we are touching `name` of FunctionExecutable* which is retrieved from CodeBlock. But this name
will not be changed since this is derived from UnlinkedFunctionExecutable which is shared by multiple
CodeBlocks. And FunctionExecutable* generation ordering must be the same for every CodeBlock generation
from the same UnlinkedCodeBlock.

* bytecode/CodeBlock.h:
(JSC::ScriptExecutable::prepareForExecution):
* interpreter/Interpreter.cpp:
(JSC::Interpreter::executeProgram):
(JSC::Interpreter::executeCall):
(JSC::Interpreter::executeConstruct):
(JSC::Interpreter::execute):
(JSC::Interpreter::executeModuleProgram):
* interpreter/InterpreterInlines.h:
(JSC::Interpreter::execute):
* runtime/DisallowScope.h:
(JSC::DisallowScope::disable):
* runtime/StringPrototype.cpp:

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

2 months ago[WebAuthn] Customize a bit more on the macOS LocalAuthentication prompt
jiewen_tan@apple.com [Fri, 13 Mar 2020 23:15:31 +0000 (23:15 +0000)]
[WebAuthn] Customize a bit more on the macOS LocalAuthentication prompt
https://bugs.webkit.org/show_bug.cgi?id=208703
<rdar://problem/60136974>

Reviewed by Darin Adler.

Source/WebCore:

* en.lproj/Localizable.strings:
* platform/LocalizedStrings.cpp:
(WebCore::touchIDPromptTitle):
* platform/LocalizedStrings.h:
Adds a new formatted UI string to help with RP ID.

Source/WebKit:

On macOS, LocalAuthentication prompt can be shown anywhere that is probably not on top of
our UI clients. Therefore, add a RP ID to the dialog to help users to identify what has
happened. In addition, it removes the password fallback button.

* Platform/spi/Cocoa/LocalAuthenticationSPI.h:
* UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:
(WebKit::LocalAuthenticator::continueMakeCredentialAfterDecidePolicy):
(WebKit::LocalAuthenticator::continueGetAssertionAfterResponseSelected):
* UIProcess/WebAuthentication/Cocoa/LocalConnection.h:
* UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:
(WebKit::LocalConnection::verifyUser const):
* UIProcess/WebAuthentication/Mock/MockLocalConnection.h:
* UIProcess/WebAuthentication/Mock/MockLocalConnection.mm:
(WebKit::MockLocalConnection::verifyUser const):

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

2 months agoRemove Unused IPC message PlaybackSessionManagerProxy::PictureInPictureActiveChanged
bfulgham@apple.com [Fri, 13 Mar 2020 23:04:17 +0000 (23:04 +0000)]
Remove Unused IPC message PlaybackSessionManagerProxy::PictureInPictureActiveChanged
https://bugs.webkit.org/show_bug.cgi?id=209085
<rdar://problem/59658916>

Reviewed by Geoffrey Garen.

Remove the unused PlaybackSessionManagerProxy message 'PictureInPictureActiveChanged'.

* UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
* UIProcess/Cocoa/PlaybackSessionManagerProxy.messages.in:
* UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
(WebKit::PlaybackSessionManagerProxy::pictureInPictureActiveChanged): Deleted.

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

2 months agoREGRESSION: (r256232) [ Mac wk1 Release ] resize-observer/delete-observers-in-callbac...
cdumez@apple.com [Fri, 13 Mar 2020 22:35:09 +0000 (22:35 +0000)]
REGRESSION: (r256232) [ Mac wk1 Release ] resize-observer/delete-observers-in-callbacks.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207847
<rdar://problem/59516099>

Unreviewed, unskip test now that is should no longer be flaky after r258438.

* platform/mac-wk1/TestExpectations:

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

2 months agoREGRESSION (257844): fast/scrolling/scroll-container-horizontally.html is timing out
jacob_uphoff@apple.com [Fri, 13 Mar 2020 22:33:29 +0000 (22:33 +0000)]
REGRESSION (257844): fast/scrolling/scroll-container-horizontally.html is timing out
https://bugs.webkit.org/show_bug.cgi?id=209083

Also changed expectations for a test that is now timing out.

Unreviewwd test gardening.

* platform/ios-simulator-wk2/TestExpectations:
* platform/ios-wk2/TestExpectations:

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

2 months agoUnreviewed, reverting r256232.
cdumez@apple.com [Fri, 13 Mar 2020 22:32:28 +0000 (22:32 +0000)]
Unreviewed, reverting r256232.

Caused ResizeObserver tests to become flaky

Reverted changeset:

"[DRT] InternalSettingsGenerated::resetToConsistentState() may
override TestOptions"
https://bugs.webkit.org/show_bug.cgi?id=207481
https://trac.webkit.org/changeset/256232

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

2 months ago[ Mac Release ] css3/selectors3/xml/css3-modsel-d4.xml is flaky failing.
lawrence.j@apple.com [Fri, 13 Mar 2020 22:18:04 +0000 (22:18 +0000)]
[ Mac Release ] css3/selectors3/xml/css3-modsel-d4.xml is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=209084

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

2 months ago[ iOS and Mac wk2 ] http/tests/in-app-browser-privacy/ tests failing
katherine_cheney@apple.com [Fri, 13 Mar 2020 21:56:56 +0000 (21:56 +0000)]
[ iOS and Mac wk2 ] http/tests/in-app-browser-privacy/ tests failing
https://bugs.webkit.org/show_bug.cgi?id=209016
<rdar://problem/60329530>

Reviewed by Chris Dumez.

Source/WebKit:

This patch adds a function to re-initialize app bound domains for
in-app-browser-privacy tests, since they are only initialized once
when the WebsiteDataStore is created. This causes issues if the tests
are run in parallel with other tests with different app-bound domains.

* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreReinitializeAppBoundDomains):
* UIProcess/API/C/WKWebsiteDataStoreRef.h:
* UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::WebsiteDataStore::clearAppBoundDomains):
(WebKit::WebsiteDataStore::reinitializeAppBoundDomains):
* UIProcess/WebsiteData/WebsiteDataStore.h:

Tools:

Re-initialize the app-bound domains when the correct
TestOptions parameter is set.

* WebKitTestRunner/TestController.cpp:
(WTR::TestController::createWebViewWithOptions):
(WTR::TestController::reinitializeAppBoundDomains):
* WebKitTestRunner/TestController.h:

LayoutTests:

Use TestOptions to trigger the re-initialization of app-bound domains.

* http/tests/in-app-browser-privacy/app-bound-domain.html:
* http/tests/in-app-browser-privacy/switch-session-on-navigation-to-app-bound-domain.html:

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

2 months ago[ Mac ] fast/animation/request-animation-frame-timestamps.html is flaky failing.
lawrence.j@apple.com [Fri, 13 Mar 2020 21:51:21 +0000 (21:51 +0000)]
[ Mac ] fast/animation/request-animation-frame-timestamps.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=209079

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

2 months agoSafari sometimes crashes when switch video into PiP mode
peng.liu6@apple.com [Fri, 13 Mar 2020 21:49:31 +0000 (21:49 +0000)]
Safari sometimes crashes when switch video into PiP mode
https://bugs.webkit.org/show_bug.cgi?id=208904

Reviewed by Simon Fraser.

With this patch, MediaControlTextTrackContainerElement won't paint its subtree
to an image buffer (for the captions in video fullscreen or picture-in-picture mode)
when the cues are updated. Instead, it only sets the flag m_needsGenerateTextTrackRepresentation
to true after running layout based on the new cues. After that, it paints its subtree
to an image buffer if needed at the end of Page::updateRendering() when the layout is clean.
TextTrackRepresentationCocoa will use the image buffer to set the content of the layer
for captions in video fullscreen or picture-in-picture mode.

MediaControlTextTrackContainerElement class is responsible for rendering the captions in both:
1) a video player in the inline mode.
2) a video player in "video fullscreen" or picture-in-picture mode.
This patch refactors some functions to make their responsibilities clear.

* Modules/mediacontrols/MediaControlsHost.cpp:
(WebCore::MediaControlsHost::updateTextTrackRepresentationImageIfNeeded):
* Modules/mediacontrols/MediaControlsHost.h:
* dom/Document.cpp:
(WebCore::Document::setMediaElementShowingTextTrack):
(WebCore::Document::clearMediaElementShowingTextTrack):
(WebCore::Document::updateTextTrackRepresentationImageIfNeeded):
* dom/Document.h:

Functions textTracksAreReady(), textTrackReadyStateChanged() and configureTextTrackDisplay()
should be wrapped with "#if ENABLE(VIDEO_TRACK)".
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::setTextTrackRepresentation):
(WebCore::HTMLMediaElement::textTracksAreReady const):
(WebCore::HTMLMediaElement::textTrackReadyStateChanged):
(WebCore::HTMLMediaElement::configureTextTrackDisplay):
(WebCore::HTMLMediaElement::updateTextTrackRepresentationImageIfNeeded):
* html/HTMLMediaElement.h:

* html/shadow/MediaControlElements.cpp:
(WebCore::MediaControlTextTrackContainerElement::createElementRenderer):
(WebCore::MediaControlTextTrackContainerElement::updateDisplay):
(WebCore::MediaControlTextTrackContainerElement::updateTextTrackRepresentationImageIfNeeded):
(WebCore::MediaControlTextTrackContainerElement::updateTextTrackRepresentationIfNeeded):
(WebCore::MediaControlTextTrackContainerElement::clearTextTrackRepresentation):
(WebCore::MediaControlTextTrackContainerElement::updateTextTrackStyle):
(WebCore::MediaControlTextTrackContainerElement::enteredFullscreen):
(WebCore::MediaControlTextTrackContainerElement::updateVideoDisplaySize):
(WebCore::MediaControlTextTrackContainerElement::updateSizes):
(WebCore::MediaControlTextTrackContainerElement::createTextTrackRepresentationImage):
(WebCore::MediaControlTextTrackContainerElement::textTrackRepresentationBoundsChanged):
(WebCore::MediaControlTextTrackContainerElement::updateTextTrackRepresentation): Deleted.
(WebCore::MediaControlTextTrackContainerElement::updateTextTrackRepresentationStyle): Deleted.
(WebCore::MediaControlTextTrackContainerElement::layoutIfNecessary): Deleted.
(WebCore::MediaControlTextTrackContainerElement::updateCueStyles): Deleted.
* html/shadow/MediaControlElements.h:
* html/shadow/MediaControls.cpp:
(WebCore::MediaControls::updateTextTrackRepresentationImageIfNeeded):
* html/shadow/MediaControls.h:
* page/Page.cpp:
(WebCore::Page::updateRendering):
* rendering/RenderMediaControlElements.cpp:
(WebCore::RenderMediaControlTextTrackContainer::RenderMediaControlTextTrackContainer):
(WebCore::RenderMediaControlTextTrackContainer::layout):
(WebCore::RenderTextTrackContainerElement::RenderTextTrackContainerElement): Deleted.
(WebCore::RenderTextTrackContainerElement::layout): Deleted.
* rendering/RenderMediaControlElements.h:

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

2 months agoREGRESSION: [ Mac wk2 ] svg/custom/object-sizing-explicit-width.xhtml is flaky failing
tsavell@apple.com [Fri, 13 Mar 2020 21:39:19 +0000 (21:39 +0000)]
REGRESSION: [ Mac wk2 ] svg/custom/object-sizing-explicit-width.xhtml is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=209077

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

2 months agoAdd mixed content block test for imported scripts in worker global scope
wilander@apple.com [Fri, 13 Mar 2020 21:32:45 +0000 (21:32 +0000)]
Add mixed content block test for imported scripts in worker global scope
https://bugs.webkit.org/show_bug.cgi?id=209075
<rdar://problem/27483005>

Reviewed by Brent Fulgham.

* http/tests/security/mixedContent/insecure-worker-global-scope-expected.txt: Added.
* http/tests/security/mixedContent/insecure-worker-global-scope.html: Added.
* http/tests/security/mixedContent/resources/worker-importing-insecure-script.js: Added.
* http/tests/security/mixedContent/resources/worker-importing-secure-script.js: Added.
* http/tests/security/mixedContent/resources/worker-sending-message.js: Added.
* platform/mac-wk1/TestExpectations:
    Test for some reason fails on Mojave Debug WK1 but not on Mojave Release WK1 or other bots.
    Therefore skipped.

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

2 months agoREGRESSION (r257840): [ iOS ] fast/backgrounds/hidpi-bitmap-background-on-subpixel...
jacob_uphoff@apple.com [Fri, 13 Mar 2020 20:56:26 +0000 (20:56 +0000)]
REGRESSION (r257840): [ iOS ] fast/backgrounds/hidpi-bitmap-background-on-subpixel-position.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=208601

Fixing test expectations.

Unreviewed test gardening.

* platform/ios-wk2/TestExpectations:

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

2 months ago[JSC] Delete IC creation should check mayNeedToCheckCell/canCacheDeleteIC regardless...
ysuzuki@apple.com [Fri, 13 Mar 2020 20:37:09 +0000 (20:37 +0000)]
[JSC] Delete IC creation should check mayNeedToCheckCell/canCacheDeleteIC regardless of Structure::outOfLineCapacity
https://bugs.webkit.org/show_bug.cgi?id=209027

Reviewed by Saam Barati.

Delete IC code generation assumes that mayNeedToCheckCell (it is replaced with canCacheDeleteIC) is false
while we are looking into this status only if Structure::outOfLineCapacity meets a certain condition. We should avoid
create Delete IC when mayNeedToCheckCell/canCacheDeleteIC is true regardless of Structure::outOfLineCapacity

* bytecode/AccessCase.cpp:
(JSC::AccessCase::createDelete):
(JSC::AccessCase::generateImpl):
* runtime/Structure.h:
* runtime/StructureInlines.h:
(JSC::Structure::mayHaveIndexingHeader const):
(JSC::Structure::canCacheDeleteIC const):

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

2 months agoUnreviewed, reverting r258391.
ryanhaddad@apple.com [Fri, 13 Mar 2020 20:22:17 +0000 (20:22 +0000)]
Unreviewed, reverting r258391.

Breaks internal builds.

Reverted changeset:

"Apply rotation at source level if WebRTC sink ask so"
https://bugs.webkit.org/show_bug.cgi?id=205645
https://trac.webkit.org/changeset/258391

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

2 months ago[Mac wk2 ] fast/dom/attr_dead_doc.html is flaky failing.
cdumez@apple.com [Fri, 13 Mar 2020 20:19:16 +0000 (20:19 +0000)]
[Mac wk2 ] fast/dom/attr_dead_doc.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207668
<rdar://problem/59404606>

Reviewed by Geoffrey Garen.

The test was doing a navigation to about:blank and relying on a 100ms timer to update the src
attribute of the img element. We now remove the frame from the document instead since it
detaches the document synchronously. It gets rid of the 100ms timer and replaces it with a
0 timer which will reliably give the same output.

* fast/dom/attr_dead_doc-expected.txt:
* fast/dom/attr_dead_doc.html:
* platform/mac-wk2/TestExpectations:

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

2 months ago[ Mac wk1 Debug] inspector/injected-script/avoid-getter-invocation.html is flaky...
lawrence.j@apple.com [Fri, 13 Mar 2020 20:07:20 +0000 (20:07 +0000)]
[ Mac wk1 Debug] inspector/injected-script/avoid-getter-invocation.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=209073

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

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

2 months agoReport all third party loads on a per-page basis
katherine_cheney@apple.com [Fri, 13 Mar 2020 19:43:43 +0000 (19:43 +0000)]
Report all third party loads on a per-page basis
https://bugs.webkit.org/show_bug.cgi?id=209032
<rdar://problem/60397323>

Reviewed by Chris Dumez.

Source/WebCore:

Test: http/tests/resourceLoadStatistics/loaded-registrable-domains-get-reported.html

Rename this function to more accurately reflect its purpose of sending
loaded registrable domains to the WebPage.

* Modules/websockets/WebSocket.cpp:
(WebCore::WebSocket::connect):
* loader/FrameLoaderClient.h:
* loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::willSendRequestInternal):
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::requestResource):

Source/WebKit:

Test: http/tests/resourceLoadStatistics/loaded-registrable-domains-get-reported.html

Removed IPC to the Network Process asking if a resource load is from
a prevalent domain. This now stores and sends all loaded registrable
domains. This patch is mostly updating naming to reflect this and
deleting the unnecessary code to communicate with the
ResourceLoadStatisticsStore.

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::requestStorageAccessUnderOpener):
(WebKit::NetworkConnectionToWebProcess::isPrevalentSubresourceLoad): Deleted.
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _loadedThirdPartyDomainsFor:completionHandler:]):
(-[WKWebsiteDataStore _clearLoadedThirdPartyDomainsFor:]):
(-[WKWebsiteDataStore _getPrevalentDomainsFor:completionHandler:]): Deleted.
(-[WKWebsiteDataStore _clearPrevalentDomainsFor:]): Deleted.
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
* UIProcess/WebPageProxy.cpp:
* UIProcess/WebPageProxy.h:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::didLoadFromRegistrableDomain):
(WebKit::WebFrameLoaderClient::addLoadedRegistrableDomain): Deleted.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didCommitLoad):
(WebKit::WebPage::didLoadFromRegistrableDomain):
Add a check that this is a third party by comparing the target domain
to the main frame domain.

(WebKit::WebPage::loadedThirdPartyDomains):
(WebKit::WebPage::clearLoadedThirdPartyDomains):
(WebKit::WebPage::addLoadedRegistrableDomain): Deleted.
(WebKit::WebPage::getPrevalentDomains): Deleted.
(WebKit::WebPage::clearPrevalentDomains): Deleted.
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

Tools:

Mostly naming updates to reflect the change in use for this SPI call.
It now returns all loaded third party domains, not just prevalent ones.

* WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
(WTR::InjectedBundle::didReceiveMessageToPage):
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::getLoadedThirdPartyDomains):
(WTR::TestRunner::callDidReceiveLoadedThirdPartyDomainsCallback):
(WTR::TestRunner::getPrevalentDomains): Deleted.
(WTR::TestRunner::callDidReceivePrevalentDomainsCallback): Deleted.
* WebKitTestRunner/InjectedBundle/TestRunner.h:
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetStateToConsistentValues):
(WTR::TestController::getLoadedThirdPartyDomains):
(WTR::TestController::clearLoadedThirdPartyDomains):
(WTR::TestController::getPrevalentDomains): Deleted.
(WTR::TestController::clearPrevalentDomains): Deleted.
* WebKitTestRunner/TestController.h:
* WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
(WTR::TestInvocation::didReceiveLoadedThirdPartyDomains):
(WTR::TestInvocation::didReceivePrevalentDomains): Deleted.
* WebKitTestRunner/TestInvocation.h:
* WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(WTR::TestController::getLoadedThirdPartyDomains):
(WTR::TestController::clearLoadedThirdPartyDomains):
(WTR::TestController::getPrevalentDomains): Deleted.
(WTR::TestController::clearPrevalentDomains): Deleted.

LayoutTests:

Now that we report all loaded third party domains, we no longer need
ITP to test this call. We can eliminate the dual testing for
memory/database setup and any logic related to setting a resource
as prevalent.

* http/tests/resourceLoadStatistics/loaded-registrable-domains-get-reported-expected.txt: Copied from LayoutTests/http/tests/websocket/web-socket-loads-captured-in-per-page-domains-expected.txt.
* http/tests/resourceLoadStatistics/loaded-registrable-domains-get-reported.html: Added.
* http/tests/resourceLoadStatistics/prevalent-domains-per-page-database-expected.txt: Removed.
* http/tests/resourceLoadStatistics/prevalent-domains-per-page-database.html: Removed.
* http/tests/resourceLoadStatistics/prevalent-domains-per-page.html: Removed.
* http/tests/websocket/web-socket-loads-captured-in-per-page-domains-expected.txt:
* http/tests/websocket/web-socket-loads-captured-in-per-page-domains.html:
* platform/ios/TestExpectations:
Since this test no longer uses UIHelper.activateAt, it can be
unskipped in iOS

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

2 months ago[ews] run FindModifiedChangeLogs early in the build
aakash_jain@apple.com [Fri, 13 Mar 2020 19:33:39 +0000 (19:33 +0000)]
[ews] run FindModifiedChangeLogs early in the build
https://bugs.webkit.org/show_bug.cgi?id=209060

Reviewed by Jonathan Bedard.

* BuildSlaveSupport/ews-build/factories.py:
* BuildSlaveSupport/ews-build/factories_unittest.py: Updated unit-test.

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

2 months agoskip wasm/function-tests/grow-memory-cause-gc.js on memory limited devices
sbarati@apple.com [Fri, 13 Mar 2020 19:19:28 +0000 (19:19 +0000)]
skip wasm/function-tests/grow-memory-cause-gc.js on memory limited devices
https://bugs.webkit.org/show_bug.cgi?id=209069
<rdar://problem/59954558>

Reviewed by Yusuke Suzuki.

* wasm/function-tests/grow-memory-cause-gc.js:

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

2 months ago[GTK] Add EWS testers to run GTK layout tests
dpino@igalia.com [Fri, 13 Mar 2020 19:07:50 +0000 (19:07 +0000)]
[GTK] Add EWS testers to run GTK layout tests
https://bugs.webkit.org/show_bug.cgi?id=207648

Reviewed by Carlos Alberto Lopez Perez and Aakash Jain.

Queue 'GTK-Webkit2-EWS' was renamed to 'GTK-Build-EWS'.
A new queue, named 'GTK-WK2-Tests-EWS', was added for WK2
tests (layout tests).

* BuildSlaveSupport/ews-build/config.json: Added new queue for
WK2 tests.
* BuildSlaveSupport/ews-build/factories.py:
(GTKTestsFactory):
* BuildSlaveSupport/ews-build/factories_unittest.py:
(TestCommitQueueFactory.test_commit_queue_factory):
(TestGTKFactory): Added unit-test.
(TestGTKFactory.test_gtk_factory):
* BuildSlaveSupport/ews-build/loadConfig.py:
* BuildSlaveSupport/ews-build/loadConfig_unittest.py:
(TagsForBuilderTest.test_getTagsForBuilder):

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