Timeline



Aug 9, 2018:

10:13 PM Changeset in webkit [234751] by Basuke Suzuki
  • 3 edits in trunk/LayoutTests

[LayoutTests] Test case which committed on r175053 was wrong.
https://bugs.webkit.org/show_bug.cgi?id=188454

Reviewed by Fujii Hironori.

It was originally committed on https://bugs.webkit.org/show_bug.cgi?id=136938 and has kept unchanged,
but the test case uses non-existing redirect.php scripts which was removed a few months before than
this bug. Also result was compared to wrong values.

  • http/tests/xmlhttprequest/cross-origin-redirect-responseURL-expected.txt:
  • http/tests/xmlhttprequest/cross-origin-redirect-responseURL.html:
9:53 PM Changeset in webkit [234750] by commit-queue@webkit.org
  • 4 edits in trunk/PerformanceTests

Add ability to ignore process prewarming for launch time benchmark
https://bugs.webkit.org/show_bug.cgi?id=188462

Patch by Ben Richards <benton_richards@apple.com> on 2018-08-09
Reviewed by Ryosuke Niwa.

Added a flag to the new tab benchmark that will open a blank tab before the tab to be measured in order to ignore process prewarming.

  • LaunchTime/launch_time.py:

(DefaultLaunchTimeHandler):
(DefaultLaunchTimeHandler.on_receive_stop_time): Deleted.
(DefaultLaunchTimeHandler.on_receive_stop_signal):
(DefaultLaunchTimeHandler.do_HEAD):
(DefaultLaunchTimeHandler.do_GET):
(DefaultLaunchTimeHandler.do_POST):
(LaunchTimeBenchmark):
(LaunchTimeBenchmark._standard_deviation): Fixed divide by zero bug when '-n' is set to 1
(LaunchTimeBenchmark.open_tab): Added option to open a blank tab
(LaunchTimeBenchmark.run):

  • LaunchTime/new_tab.py:

(NewTabBenchmark.initialize):
(NewTabBenchmark.run_iteration):
(NewTabBenchmark.will_parse_arguments):
(NewTabBenchmark.did_parse_arguments):
(NewTabBenchmark.ResponseHandler.Handler.get_test_page):
(NewTabBenchmark.ResponseHandler.Handler.on_receive_stop_time): Deleted.
(NewTabBenchmark.ResponseHandler.Handler.on_receive_stop_signal):
(NewTabBenchmark):

  • LaunchTime/startup.py:

(StartupBenchmark.ResponseHandler.Handler.get_test_page):
(StartupBenchmark.ResponseHandler.Handler.on_receive_stop_time): Deleted.
(StartupBenchmark.ResponseHandler.Handler.on_receive_stop_signal):
(StartupBenchmark):

7:13 PM Changeset in webkit [234749] by Fujii Hironori
  • 5 edits in trunk/Tools

[webkitpy][Win] LayoutTests: test names should be Unix style, separated by slash not backslash
https://bugs.webkit.org/show_bug.cgi?id=187973

Reviewed by Alex Christensen.

In LayoutTests, test names have been canonicalized in Unix style
since Bug 63597, for example 'fast/css/001.html'. But, Bug 179219,
Bug 179572, Bug 180660 and Bug 181814 have changed to use
os.path.seq instead of slash if Windows Python is used.

Revert parts of those changes. Change relative_test_filename to
return a slash sperated test name as well as chromium_win.py used
to do.

This change fixes all 41 test-webkitpy failures in WinCairo port.

  • Scripts/webkitpy/layout_tests/models/test_expectations.py:

(TestExpectationParser._parse_line): Do not convert a test name by using normpath.

  • Scripts/webkitpy/port/base.py:

(Port.normalize_test_name): Use TEST_PATH_SEPARATOR instead of os.path.sep.
(Port.relative_test_filename): Replace self.host.filesystem.sep with self.TEST_PATH_SEPARATOR.
(Port.abspath_for_test): Split test_name with TEST_PATH_SEPARATOR.

  • Scripts/webkitpy/port/driver.py:

(Driver): Use '/' instead of os.sep.

  • Scripts/webkitpy/port/win.py:

(WinCairoPort): Do not override TEST_PATH_SEPARATOR.

6:18 PM Changeset in webkit [234748] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[WHLSL] Add individual test durations to output
https://bugs.webkit.org/show_bug.cgi?id=188448

Patch by Thomas Denney <tdenney@apple.com> on 2018-08-09
Reviewed by Myles C. Maxfield.

  • WebGPUShadingLanguageRI/Test.js: Add timing output.
5:28 PM Changeset in webkit [234747] by commit-queue@webkit.org
  • 23 edits
    5 adds in trunk

We should cache the compiled sandbox profile in a data vault
https://bugs.webkit.org/show_bug.cgi?id=184991

Patch by Ben Richards <benton_richards@apple.com> on 2018-08-09
Reviewed by Ryosuke Niwa.

Source/WebCore:

Added functionality to FileHandle so that it can lock a file while open.
Added a function to FileSystem to delete non empty directories.

  • platform/FileHandle.cpp:

(WebCore::FileHandle::FileHandle):
(WebCore::FileHandle::open):
(WebCore::FileHandle::close):

  • platform/FileHandle.h:
  • platform/FileSystem.h:
  • platform/cocoa/FileSystemCocoa.mm:

(WebCore::FileSystem::deleteNonEmptyDirectory):

Source/WebKit:

This patch changes a few things (note: data vaults and sandbox entitlements are only used in internal builds):
(1) Instead of compiling a sandbox every time a process is launched, processes now look for a cached sandbox

in a process specific data vault on macOS platforms. (ChildProcessMac.mm)

(2) If a valid cached sandbox is not found, a process will create the data vault (or ensure that it exists),

compile a sandbox, and cache it.

(3) In order to create process specific data vaults, each process now has their own <process name>-OSX-sandbox.entitlements

file which contains an entitlement with a process specific "storage class" which ensures that each process
can only ever access its own data vault. (See the article on confluence "Data Vaults and Restricted Files" for more info)

(4) The sandbox entitlements file for the Network, WebContent and Plugin services are loaded dynamically

through Scripts/<process name>-process-entitlements.sh which is triggered in a new build phase for each service.
The Storage process sandbox entitlements are loaded directly in Configurations/StorageService.xcconfig.
The reason that the sandbox entitlements are applied dynamically is so that these sandbox entitlements
are only applied when WK_USE_RESTRICTED_ENTITLEMENTS is YES. This means that open source builds will still work.

  • Configurations/Network-OSX-sandbox.entitlements: Added.
  • Configurations/Storage-OSX-sandbox.entitlements: Added.
  • Configurations/StorageService.xcconfig:
  • Configurations/WebContent-OSX-sandbox.entitlements: Added.
  • Configurations/WebKit.xcconfig:
  • NetworkProcess/NetworkProcess.h:
  • PluginProcess/PluginProcess.h:
  • Scripts/process-network-sandbox-entitlements.sh: Added.
  • Scripts/process-webcontent-sandbox-entitlements.sh: Added.
  • Shared/ChildProcess.h:
  • Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h:

(WebKit::XPCServiceInitializer):

  • Shared/SandboxInitializationParameters.h:

(WebKit::SandboxInitializationParameters::setOverrideSandboxProfilePath):
(WebKit::SandboxInitializationParameters::overrideSandboxProfilePath const):
(WebKit::SandboxInitializationParameters::setSandboxProfile):
(WebKit::SandboxInitializationParameters::sandboxProfile const):
(): Deleted.

  • Shared/mac/ChildProcessMac.mm:

(WebKit::SandboxProfileDeleter::operator()):
(WebKit::SandboxParametersDeleter::operator()):
(WebKit::SandboxInfo::SandboxInfo):
(WebKit::fileContents):
(WebKit::processStorageClass):
(WebKit::setAndSerializeSandboxParameters):
(WebKit::sandboxDataVaultParentDirectory):
(WebKit::sandboxDirectory):
(WebKit::sandboxFilePath):
(WebKit::ensureSandboxCacheDirectory):
(WebKit::writeSandboxDataToCacheFile):
(WebKit::compileAndCacheSandboxProfile):
(WebKit::tryApplyCachedSandbox):
(WebKit::webKit2Bundle):
(WebKit::sandboxProfilePath):
(WebKit::compileAndApplySandboxSlowCase):
(WebKit::applySandbox):
(WebKit::initializeSandboxParameters):
(WebKit::ChildProcess::initializeSandbox):

  • Shared/mac/SandboxInitialiationParametersMac.mm:

(WebKit::SandboxInitializationParameters::SandboxInitializationParameters):

  • StorageProcess/StorageProcess.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebProcess.h:

Source/WTF:

Added trace points for sandbox initialization and exposed functions needed for sandbox caching

  • wtf/SystemTracing.h:
  • wtf/spi/darwin/SandboxSPI.h:

Tools:

Added trace points for sandbox initialization

  • Tracing/SystemTracePoints.plist:
5:20 PM Changeset in webkit [234746] by commit-queue@webkit.org
  • 4 edits in trunk/LayoutTests

Remove ElCapitan specific layout test expectations
https://bugs.webkit.org/show_bug.cgi?id=188457

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2018-08-09
Reviewed by Alex Christensen.

  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • platform/mac/TestExpectations:
5:18 PM Changeset in webkit [234745] by Basuke Suzuki
  • 2 edits
    4 adds in trunk/LayoutTests

[Curl] Test gardening
https://bugs.webkit.org/show_bug.cgi?id=188456

Unreviewed test gardening.

Unskip http/xmlhttprequest.

  • platform/wincairo/TestExpectations:
  • platform/wincairo/http/tests/local/file-url-sent-as-referer-expected.png: Added.
  • platform/wincairo/http/tests/multipart/invalid-image-data-expected.png: Added.
  • platform/wincairo/http/tests/multipart/invalid-image-data-standalone-expected.png: Added.
  • platform/wincairo/http/tests/uri/css-href-expected.png: Added.
4:56 PM Changeset in webkit [234744] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

InputType should not interact with an HTMLInputElement is no longer associated with
https://bugs.webkit.org/show_bug.cgi?id=188410

Reviewed by Ryosuke Niwa.

Clear InputType::m_element when the InputType is no longer associated with the HTMLInputElement
because the element changed type. We were already dealing with the InputType no longer being
associated with an element because the element died by using a WeakPtr. However, it is conceptually
better (more correct) to also clear this pointer if the element is still alive but associated with
another InputType.

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::updateType):

  • html/InputType.h:

(WebCore::InputType::detachFromElement):

4:49 PM Changeset in webkit [234743] by jer.noble@apple.com
  • 12 edits
    4 adds in trunk

Video playback is using more power
https://bugs.webkit.org/show_bug.cgi?id=188452
Source/WebCore:

<rdar://problem/42298937>

Reviewed by Eric Carlson.

Test: TestWebKitAPI/Tests/WebKitCocoa/PreferredAudioBufferSize.mm

When the meaning of PlatformMediaSession::Video changed to "video-only", we failed to update
MediaSessionManagerCocoa::updateSessionState() to use the new PlatformMediaSession::VideoAudio
enum, so Video-only sessions were getting the higher audio buffer size (where it's not needed)
and Video-and-Audio sessions were getting the default value.

To enable testing, add a preferredAudioBufferSize property to Internals. Also, the getter for
AudioSession::preferredBufferSize was using the wrong CoreAudio property address, and was
always returning 0.

  • platform/audio/AudioSession.h:
  • platform/audio/cocoa/MediaSessionManagerCocoa.cpp:

(MediaSessionManagerCocoa::updateSessionState):

  • platform/audio/mac/AudioSessionMac.cpp:

(WebCore::AudioSession::preferredBufferSize const):

  • testing/Internals.cpp:

(WebCore::Internals::preferredAudioBufferSize const):

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

Source/WebKit:

Reviewed by Eric Carlson.

  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _setLowPowerVideoAudioBufferSizeEnabled:]):
(-[WKPreferences _lowPowerVideoAudioBufferSizeEnabled]):

Tools:

<rdar://problem/42298937>

Reviewed by Eric Carlson.

  • TestWebKitAPI/Tests/WebKitCocoa/PreferredAudioBufferSize.mm:

(PreferredAudioBufferSize::createView):
(PreferredAudioBufferSize::preferredAudioBufferSize const):
(TEST_F):

4:30 PM Changeset in webkit [234742] by Truitt Savell
  • 2 edits in trunk/LayoutTests

REGRESSION (r234330): 3 legacy-animation-engine/compositing tests are flaky failures
https://bugs.webkit.org/show_bug.cgi?id=188357

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
4:07 PM Changeset in webkit [234741] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Fix URLSchemeHandler.SyncXHR API test after r234735.
https://bugs.webkit.org/show_bug.cgi?id=188358

  • UIProcess/WebURLSchemeTask.cpp:

(WebKit::WebURLSchemeTask::didReceiveData):
Return after appending data for synchronous loads. We used to send unused messages.

3:51 PM Changeset in webkit [234740] by Kocsen Chung
  • 4 edits in tags/Safari-607.1.2

Cherry-pick r234739. rdar://problem/43102553

REGRESSION(234640) Loading stalls in environments without SafariSafeBrowsing framework
https://bugs.webkit.org/show_bug.cgi?id=188453
<rdar://problem/43102553>

Source/WebKit:

Reviewed by Chris Dumez.

  • UIProcess/Cocoa/WebPageProxyCocoa.mm: (WebKit::WebPageProxy::beginSafeBrowsingCheck):

Tools:

Reviewed by Chris Dumez

  • TestWebKitAPI/Tests/WebKitCocoa/SafeBrowsing.mm: (TEST): (+[NullLookupContext sharedLookupContext]): (TestWebKitAPI::TEST): Deleted.

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

3:37 PM Changeset in webkit [234739] by achristensen@apple.com
  • 4 edits in trunk

REGRESSION(234640) Loading stalls in environments without SafariSafeBrowsing framework
https://bugs.webkit.org/show_bug.cgi?id=188453
<rdar://problem/43102553>

Source/WebKit:

Reviewed by Chris Dumez.

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::beginSafeBrowsingCheck):

Tools:

Reviewed by Chris Dumez

  • TestWebKitAPI/Tests/WebKitCocoa/SafeBrowsing.mm:

(TEST):
(+[NullLookupContext sharedLookupContext]):
(TestWebKitAPI::TEST): Deleted.

3:03 PM Changeset in webkit [234738] by Kocsen Chung
  • 7 edits in branches/safari-606.1.36.1-branch/Source

Versioning.

2:53 PM Changeset in webkit [234737] by Kocsen Chung
  • 1 copy in tags/Safari-606.1.36.1.3

Tag Safari-606.1.36.1.3.

2:47 PM Changeset in webkit [234736] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Dark Mode: SourceCodeTextEditor error/warning text widget is too light
https://bugs.webkit.org/show_bug.cgi?id=188126
<rdar://problem/42674963>

Reviewed by Matt Baker.

  • UserInterface/Views/DarkMode.css:

(@media (prefers-dark-interface)):
(.source-code.text-editor > .CodeMirror .issue-widget.warning,): Added.
(.source-code.text-editor > .CodeMirror .issue-widget.error,): Added.

2:43 PM Changeset in webkit [234735] by commit-queue@webkit.org
  • 5 edits in trunk

WKURLSchemeHandler crashes when sent errors with sync XHR
https://bugs.webkit.org/show_bug.cgi?id=188358

Patch by Alex Christensen <achristensen@webkit.org> on 2018-08-09
Reviewed by Chris Dumez.

Source/WebKit:

  • UIProcess/WebURLSchemeTask.cpp:

(WebKit::WebURLSchemeTask::didReceiveData):
(WebKit::WebURLSchemeTask::didComplete):

  • UIProcess/WebURLSchemeTask.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:

(-[SyncErrorScheme webView:startURLSchemeTask:]):
(-[SyncErrorScheme webView:stopURLSchemeTask:]):
(-[SyncErrorScheme webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):

1:43 PM Changeset in webkit [234734] by pvollan@apple.com
  • 2 edits in trunk/Tools

REGRESSION(r234652): fast/scrolling/rtl-scrollbars-animation-property.html is failing
https://bugs.webkit.org/show_bug.cgi?id=188397

Reviewed by Tim Horton.

After r234652, [NSScroller preferredScrollerStyle] is called in the UI process, and we need to set the same
user defaults related to scrollbars in the UI process as we do in the WebProcess.

  • WebKitTestRunner/mac/main.mm:

(setDefaultsToConsistentValuesForTesting):

1:13 PM Changeset in webkit [234733] by sbarati@apple.com
  • 9 edits in trunk/Source

memoryFootprint should return size_t not optional<size_t>
https://bugs.webkit.org/show_bug.cgi?id=188444

Reviewed by Simon Fraser.

Source/WebCore:

  • page/cocoa/ResourceUsageOverlayCocoa.mm:

(WebCore::ResourceUsageOverlay::platformDraw):

Source/WTF:

We're now going to return zero instead of returning nullopt on failure.
There was a lot of code dancing around memoryFootprint failing for no
good reason.

Users of this API were previously doing this on failure:

  • Treating it as zero (this was the most common user).
  • Crashing.
  • Bailing out early and not changing our memory pressure state. This change

has the effect that instead of not changing our memory pressure state on
failure, we will go back to thinking we're not under memory pressure. Since
we relied on this API not failing to do anything useful (like kill the process
or release memory), this won't change our behavior here in a meaningful way.

  • wtf/MemoryFootprint.h:
  • wtf/MemoryPressureHandler.cpp:

(WTF::MemoryPressureHandler::currentMemoryUsagePolicy):
(WTF::MemoryPressureHandler::shrinkOrDie):
(WTF::MemoryPressureHandler::measurementTimerFired):

  • wtf/cocoa/MemoryFootprintCocoa.cpp:

(WTF::memoryFootprint):

  • wtf/linux/MemoryFootprintLinux.cpp:

(WTF::memoryFootprint):

  • wtf/linux/MemoryPressureHandlerLinux.cpp:

(WTF::MemoryPressureHandler::ReliefLogger::platformMemoryUsage):

  • wtf/win/MemoryFootprintWin.cpp:

(WTF::memoryFootprint):

12:36 PM Changeset in webkit [234732] by ajuma@chromium.org
  • 7 edits in trunk

Update IDL for IntersectionObserverEntry and IntersectionObserverEntryInit
https://bugs.webkit.org/show_bug.cgi?id=188445

Reviewed by Simon Fraser.

Source/WebCore:

Update IntersectionObserverEntry by making rootBounds nullable, and adding an
isIntersecting attribute. Make the same changes to IntersectionObserverEntryInit,
and also add an intersectionRatio attribute.

Tested by intersection-observer/intersection-observer-entry-interface.html

  • page/IntersectionObserverEntry.cpp:

(WebCore::IntersectionObserverEntry::IntersectionObserverEntry):

  • page/IntersectionObserverEntry.h:

(WebCore::IntersectionObserverEntry::isIntersecting const):

  • page/IntersectionObserverEntry.idl:

LayoutTests:

  • intersection-observer/intersection-observer-entry-interface-expected.txt:
  • intersection-observer/intersection-observer-entry-interface.html:
12:02 PM Changeset in webkit [234731] by Wenson Hsieh
  • 4 edits
    3 moves
    1 add in trunk/Tools

[iOS WK2] Rename and refactor DataInteractionTests and DataInteractionSimulator
https://bugs.webkit.org/show_bug.cgi?id=188439

Reviewed by Andy Estes and Megan Gardner.

Refactor DataInteractionSimulator (currently used for drag and drop testing on iOS) so that it exists across
macOS and iOS, and rename it to DragAndDropSimulator. Additionally, rename DataInteractionTests to
DragAndDropTests.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/ios/DragAndDropTestsIOS.mm: Renamed from Tools/TestWebKitAPI/Tests/ios/DataInteractionTests.mm.

(testIconImage):
(testZIPArchive):
(-[UIItemProvider registerDataRepresentationForTypeIdentifier:withData:]):
(-[TestWKWebView editorContainsImageElement]):
(-[TestWKWebView editorValue]):
(makeCGRectValue):
(checkCGRectIsEqualToCGRectWithLogging):
(checkSelectionRectsWithLogging):
(checkRichTextTypePrecedesPlainTextType):
(checkFirstTypeIsPresentAndSecondTypeIsMissing):
(checkTypeIdentifierIsRegisteredAtIndex):
(checkEstimatedSize):
(checkSuggestedNameAndEstimatedSize):
(checkStringArraysAreEqual):
(checkDragCaretRectIsContainedInRect):
(checkJSONWithLogging):
(testIconImageData):
(runTestWithTemporaryTextFile):
(runTestWithTemporaryFolder):
(TestWebKitAPI::TEST):
(TestWebKitAPI::setUpTestWebViewForDataTransferItems):
(TestWebKitAPI::testDragAndDropOntoTargetElements):
(TestWebKitAPI::testIconImageData):

  • TestWebKitAPI/cocoa/DragAndDropSimulator.h: Renamed from Tools/TestWebKitAPI/ios/DataInteractionSimulator.h.
  • TestWebKitAPI/ios/DragAndDropSimulatorIOS.mm: Renamed from Tools/TestWebKitAPI/ios/DataInteractionSimulator.mm.

(-[WKWebView dropInteractionDelegate]):
(-[WKWebView dragInteractionDelegate]):
(-[WKWebView dropInteraction]):
(-[WKWebView dragInteraction]):
(-[MockDragDropSession initWithItems:location:window:allowMove:]):
(-[MockDragDropSession allowsMoveOperation]):
(-[MockDragDropSession isRestrictedToDraggingApplication]):
(-[MockDragDropSession hasItemsConformingToTypeIdentifiers:]):
(-[MockDragDropSession canLoadObjectsOfClass:]):
(-[MockDragDropSession canLoadObjectsOfClasses:]):
(-[MockDragDropSession items]):
(-[MockDragDropSession setItems:]):
(-[MockDragDropSession addItems:]):
(-[MockDragDropSession locationInView:]):
(-[MockDropSession initWithProviders:location:window:allowMove:]):
(-[MockDropSession isLocal]):
(-[MockDropSession progress]):
(-[MockDropSession setProgressIndicatorStyle:]):
(-[MockDropSession progressIndicatorStyle]):
(-[MockDropSession operationMask]):
(-[MockDropSession localDragSession]):
(-[MockDropSession hasItemsConformingToTypeIdentifier:]):
(-[MockDropSession canCreateItemsOfClass:]):
(-[MockDropSession loadObjectsOfClass:completion:]):
(-[MockDragSession initWithWindow:allowMove:]):
(-[MockDragSession localOperationMask]):
(-[MockDragSession externalOperationMask]):
(-[MockDragSession session]):
(-[MockDragSession localContext]):
(-[MockDragSession setLocalContext:]):
(dragAndDropEventNames):
(-[DragAndDropSimulatorApplication _cancelAllTouches]):
(-[DragAndDropSimulator initWithWebView:]):
(-[DragAndDropSimulator dealloc]):
(-[DragAndDropSimulator _resetSimulatedState]):
(-[DragAndDropSimulator observedEventNames]):
(-[DragAndDropSimulator simulateAllTouchesCanceled:]):
(-[DragAndDropSimulator runFrom:to:]):
(-[DragAndDropSimulator runFrom:to:additionalItemRequestLocations:]):
(-[DragAndDropSimulator finalSelectionRects]):
(-[DragAndDropSimulator _concludeDropAndPerformOperationIfNecessary]):
(-[DragAndDropSimulator _enqueuePendingAdditionalItemRequestLocations]):
(-[DragAndDropSimulator _sendQueuedAdditionalItemRequest]):
(-[DragAndDropSimulator _advanceProgress]):
(-[DragAndDropSimulator _currentLocation]):
(-[DragAndDropSimulator _scheduleAdvanceProgress]):
(-[DragAndDropSimulator sourceItemProviders]):
(-[DragAndDropSimulator externalItemProviders]):
(-[DragAndDropSimulator setExternalItemProviders:]):
(-[DragAndDropSimulator phase]):
(-[DragAndDropSimulator liftPreviews]):
(-[DragAndDropSimulator lastKnownDragCaretRect]):
(-[DragAndDropSimulator waitForInputSession]):
(-[DragAndDropSimulator insertedAttachments]):
(-[DragAndDropSimulator removedAttachments]):
(-[DragAndDropSimulator endDataTransfer]):
(-[DragAndDropSimulator _webView:dataInteractionOperationWasHandled:forSession:itemProviders:]):
(-[DragAndDropSimulator _webView:willUpdateDataInteractionOperationToOperation:forSession:]):
(-[DragAndDropSimulator _webView:adjustedDataInteractionItemProvidersForItemProvider:representingObjects:additionalData:]):
(-[DragAndDropSimulator _webView:showCustomSheetForElement:]):
(-[DragAndDropSimulator _webView:willPerformDropWithSession:]):
(-[DragAndDropSimulator _webView:didInsertAttachment:]):
(-[DragAndDropSimulator _webView:didRemoveAttachment:]):
(-[DragAndDropSimulator _webView:focusShouldStartInputSession:]):
(-[DragAndDropSimulator _webView:didStartInputSession:]):

  • TestWebKitAPI/ios/UIKitSPI.h:
  • TestWebKitAPI/mac/DragAndDropSimulatorMac.mm: Added.

(-[DragAndDropSimulator initWithWebView:]):
(-[DragAndDropSimulator dealloc]):
(-[DragAndDropSimulator runFrom:to:]):
(-[DragAndDropSimulator insertedAttachments]):
(-[DragAndDropSimulator removedAttachments]):

11:48 AM Changeset in webkit [234730] by Chris Dumez
  • 10 edits in trunk

REGRESSION (r232083): WKWebView loses first-party cookies on iOS
https://bugs.webkit.org/show_bug.cgi?id=188443
<rdar://problem/42991584>

Patch by Sihui Liu <sihui_liu@apple.com> on 2018-08-09
Reviewed by Chris Dumez.

Source/WebKit:

Revert the change to set sharedCookieStorage for iOS as it is breaking Kayak.

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

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

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

(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):
(WebKit::WebProcessPool::platformInitializeNetworkProcess):

Tools:

Skip WebKit.WKHTTPCookieStoreWithoutProcessPool on iOS.

  • TestWebKitAPI/Tests/WebKitCocoa/WKHTTPCookieStore.mm:
11:18 AM Changeset in webkit [234729] by Kocsen Chung
  • 7 edits
    2 adds in branches/safari-606.1.36.1-branch

Cherry-pick r234718. rdar://problem/43102434

REGRESSION (r228260): Events handled by input method invoke default event handler
https://bugs.webkit.org/show_bug.cgi?id=188370

Reviewed by Wenson Hsieh.

Source/WebCore:

The bug was caused by the default event handler being invoked for the "virtual" keydown events
generated for input methods. Namely, when Japanese or Chinese input methods swallows TAB key,
WebKit should not invoke the default event handler and move the focus during input composition.

Fixed the bug by adding a new boolean on Event indicating whether the default event handler
should be invoked, and restoring the behavior prior to r228260 for these virtual keydown events.

Test: editing/input/press-tab-during-ime-composition.html

  • dom/Event.h: (WebCore::Event::isDefaultEventHandlerIgnored const): Added. (WebCore::Event::setIsDefaultEventHandlerIgnored): Added.
  • dom/EventDispatcher.cpp: (WebCore::EventDispatcher::dispatchEvent): Don't invoke the default event handler if isDefaultEventHandlerIgnored is set.
  • page/EventHandler.cpp: (WebCore::EventHandler::internalKeyEvent): Set isDefaultEventHandlerIgnored. This restores WebKit's behavior prior to r228260.

LayoutTests:

Added a regression test. Due to the lack of adequate support of textInputController in WebKitTestRunner,
the test is only enabled in WebKit1. The WTR fix is tracked by https://webkit.org/b/188428.

  • editing/input/press-tab-during-ime-composition-expected.txt: Added.
  • editing/input/press-tab-during-ime-composition.html: Added.
  • platform/ios/TestExpectations:
  • platform/wk2/TestExpectations:

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

11:02 AM Changeset in webkit [234728] by keith_miller@apple.com
  • 9 edits in trunk

Array.prototype.sort should call @toLength instead of ">>> 0"
https://bugs.webkit.org/show_bug.cgi?id=188430

Reviewed by Saam Barati.

JSTests:

  • test262/expectations.yaml:

Source/JavaScriptCore:

Also add a new function to $vm that will fetch a private
property. This can be useful for running builtin helper functions.

  • builtins/ArrayPrototype.js:

(sort):

  • tools/JSDollarVM.cpp:

(JSC::functionGetPrivateProperty):
(JSC::JSDollarVM::finishCreation):

LayoutTests:

Remove invalid conformance test expectations. Array.prototype.sort calls toLength, which
does not truncate integers.

  • sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.11_Array_prototype_sort/S15.4.4.11_A4_T1.html:
  • sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.11_Array_prototype_sort/S15.4.4.11_A4_T2.html:
  • sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.11_Array_prototype_sort/S15.4.4.11_A4_T3.html:
10:47 AM Changeset in webkit [234727] by Kocsen Chung
  • 2 edits in tags/Safari-607.1.2/Source/WebCore

Cherry-pick r234717. rdar://problem/43075662

Prevent collectScreenProperties from crashing Base System
https://bugs.webkit.org/show_bug.cgi?id=188429
<rdar://problem/43075662>

Patch by Justin Fan <Justin Fan> on 2018-08-08
Reviewed by Simon Fraser.

Adding some error-checking and early returns to further prevent calling CGLDescribeRenderer with invalid parameters.

Existing WebGL tests should cover; no expected change in behavior. Crash happened primarily on Base System.

  • platform/mac/PlatformScreenMac.mm: (WebCore::gpuIDForDisplayMask):

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

10:24 AM Changeset in webkit [234726] by Ross Kirsling
  • 2 edits in trunk/Tools

Unreviewed follow-up fix for r234720.

  • Scripts/webkitpy/bindings/main.py:

(BindingsTests.close_and_remove):
(BindingsTests.main):
Return to the original approach, since this seems to be the simplest cross-platform solution.

8:49 AM Changeset in webkit [234725] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

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

Reviewed by Brent Fulgham.

Instead of DisplayRefreshMonitorMac having a RefPtr to WebPage, it should have a weak pointer.
Having a RefPtr could in theory create reference cycles. This potential problem has not been
observed in practice, but it is safer to use a weak pointer.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/mac/DrawingAreaMac.cpp:

(WebKit::DisplayRefreshMonitorMac::DisplayRefreshMonitorMac):
(WebKit::DisplayRefreshMonitorMac::~DisplayRefreshMonitorMac):
(WebKit::DisplayRefreshMonitorMac::requestRefreshCallback):

7:37 AM WebKitGTK/Gardening/Calendar/2018Logs edited by magomez@igalia.com
(diff)
7:01 AM Changeset in webkit [234724] by magomez@igalia.com
  • 3 edits in trunk/LayoutTests

Unreviewed GTK+ gardening after r234720.

  • platform/gtk/TestExpectations:
  • platform/gtk/http/tests/inspector/network/xhr-response-body-expected.txt:
6:36 AM Changeset in webkit [234723] by ajuma@chromium.org
  • 9 edits
    66 adds in trunk

Import WPTs for IntersectionObserver
https://bugs.webkit.org/show_bug.cgi?id=188416

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • resources/import-expectations.json:
  • web-platform-tests/intersection-observer/META.yml: Added.
  • web-platform-tests/intersection-observer/bounding-box-expected.txt: Added.
  • web-platform-tests/intersection-observer/bounding-box.html: Added.
  • web-platform-tests/intersection-observer/client-rect-expected.txt: Added.
  • web-platform-tests/intersection-observer/client-rect.html: Added.
  • web-platform-tests/intersection-observer/containing-block-expected.txt: Added.
  • web-platform-tests/intersection-observer/containing-block.html: Added.
  • web-platform-tests/intersection-observer/cross-origin-iframe-expected.txt: Added.
  • web-platform-tests/intersection-observer/cross-origin-iframe.html: Added.
  • web-platform-tests/intersection-observer/disconnect-expected.txt: Added.
  • web-platform-tests/intersection-observer/disconnect.html: Added.
  • web-platform-tests/intersection-observer/display-none-expected.txt: Added.
  • web-platform-tests/intersection-observer/display-none.html: Added.
  • web-platform-tests/intersection-observer/edge-inclusive-intersection-expected.txt: Added.
  • web-platform-tests/intersection-observer/edge-inclusive-intersection.html: Added.
  • web-platform-tests/intersection-observer/idlharness.window-expected.txt: Added.
  • web-platform-tests/intersection-observer/idlharness.window.html: Added.
  • web-platform-tests/intersection-observer/idlharness.window.js: Added.

(idl_array.self.observer.new.IntersectionObserver):

  • web-platform-tests/intersection-observer/iframe-no-root-expected.txt: Added.
  • web-platform-tests/intersection-observer/iframe-no-root.html: Added.
  • web-platform-tests/intersection-observer/inline-client-rect-expected.txt: Added.
  • web-platform-tests/intersection-observer/inline-client-rect.html: Added.
  • web-platform-tests/intersection-observer/isIntersecting-change-events-expected.txt: Added.
  • web-platform-tests/intersection-observer/isIntersecting-change-events.html: Added.
  • web-platform-tests/intersection-observer/multiple-targets-expected.txt: Added.
  • web-platform-tests/intersection-observer/multiple-targets.html: Added.
  • web-platform-tests/intersection-observer/multiple-thresholds-expected.txt: Added.
  • web-platform-tests/intersection-observer/multiple-thresholds.html: Added.
  • web-platform-tests/intersection-observer/observer-attributes-expected.txt: Added.
  • web-platform-tests/intersection-observer/observer-attributes.html: Added.
  • web-platform-tests/intersection-observer/observer-exceptions-expected.txt: Added.
  • web-platform-tests/intersection-observer/observer-exceptions.html: Added.
  • web-platform-tests/intersection-observer/observer-in-iframe.html: Added.
  • web-platform-tests/intersection-observer/observer-without-js-reference-expected.txt: Added.
  • web-platform-tests/intersection-observer/observer-without-js-reference.html: Added.
  • web-platform-tests/intersection-observer/remove-element-expected.txt: Added.
  • web-platform-tests/intersection-observer/remove-element.html: Added.
  • web-platform-tests/intersection-observer/resources/cross-origin-subframe.html: Added.
  • web-platform-tests/intersection-observer/resources/iframe-no-root-subframe.html: Added.
  • web-platform-tests/intersection-observer/resources/intersection-observer-test-utils.js: Added.

(waitForNotification):
(runTestCycle):
(contentBounds):
(borderBoxBounds):
(clientBounds):
(rectArea):
(checkRect):
(checkLastEntry):
(checkJsonEntry):
(checkJsonEntries):

  • web-platform-tests/intersection-observer/resources/observer-in-iframe-subframe.html: Added.
  • web-platform-tests/intersection-observer/resources/timestamp-subframe.html: Added.
  • web-platform-tests/intersection-observer/resources/w3c-import.log: Added.
  • web-platform-tests/intersection-observer/root-margin-expected.txt: Added.
  • web-platform-tests/intersection-observer/root-margin.html: Added.
  • web-platform-tests/intersection-observer/same-document-no-root-expected.txt: Added.
  • web-platform-tests/intersection-observer/same-document-no-root.html: Added.
  • web-platform-tests/intersection-observer/same-document-root-expected.txt: Added.
  • web-platform-tests/intersection-observer/same-document-root.html: Added.
  • web-platform-tests/intersection-observer/same-document-zero-size-target-expected.txt: Added.
  • web-platform-tests/intersection-observer/same-document-zero-size-target.html: Added.
  • web-platform-tests/intersection-observer/shadow-content-expected.txt: Added.
  • web-platform-tests/intersection-observer/shadow-content.html: Added.
  • web-platform-tests/intersection-observer/text-target-expected.txt: Added.
  • web-platform-tests/intersection-observer/text-target.html: Added.
  • web-platform-tests/intersection-observer/timestamp-expected.txt: Added.
  • web-platform-tests/intersection-observer/timestamp.html: Added.
  • web-platform-tests/intersection-observer/unclipped-root-expected.txt: Added.
  • web-platform-tests/intersection-observer/unclipped-root.html: Added.
  • web-platform-tests/intersection-observer/w3c-import.log: Added.
  • web-platform-tests/intersection-observer/zero-area-element-hidden-expected.txt: Added.
  • web-platform-tests/intersection-observer/zero-area-element-hidden.html: Added.
  • web-platform-tests/intersection-observer/zero-area-element-visible-expected.txt: Added.
  • web-platform-tests/intersection-observer/zero-area-element-visible.html: Added.

Source/WebKit:

Make IntersectionObserver an experimental feature, so that it is enabled in
WebKitTestRunner.

  • Shared/WebPreferences.yaml:

Source/WebKitLegacy/mac:

  • WebView/WebPreferencesPrivate.h:

Tools:

Enable IntersectionObserver in DumpRenderTree.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(enableExperimentalFeatures):
(setWebPreferencesForTestOptions):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):

5:00 AM Changeset in webkit [234722] by zandobersek@gmail.com
  • 4 edits in trunk/LayoutTests

Unreviewed GTK+ and WPE gardening. Add a reftest failure expectation.
Update a WPT EME test baseline for the WPE port.

  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-generate-request-disallowed-input.https-expected.txt:
4:50 AM Changeset in webkit [234721] by cturner@igalia.com
  • 3 edits in trunk/Source/WebCore

Fix copyright headers on new ISO parsing class
https://bugs.webkit.org/show_bug.cgi?id=188432

Unreviewed fix.

This was left off from a previous bug by mistake, retrospectively
adding the correct copyright headers.

No tests required.

  • platform/graphics/iso/ISOProtectionSystemSpecificHeaderBox.cpp:
  • platform/graphics/iso/ISOProtectionSystemSpecificHeaderBox.h:

Aug 8, 2018:

10:42 PM Changeset in webkit [234720] by Ross Kirsling
  • 4 edits in trunk

run-bindings-tests is not Win32-compatible
https://bugs.webkit.org/show_bug.cgi?id=188424

Reviewed by Fujii Hironori.

Source/WebCore:

  • bindings/scripts/preprocessor.pm:

(applyPreprocessor):
Ensure that we fall back to cl.exe if CC env var is not set on Windows.

Tools:

  • Scripts/webkitpy/bindings/main.py:

(BindingsTests.main):
Stop leaking file descriptors.
(See https://www.logilab.org/blogentry/17873 for details, though the solution here is even simpler.)

9:36 PM Changeset in webkit [234719] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

Yet more crashes in MobileSafari under -[WKFormInputSession setSuggestions:]
https://bugs.webkit.org/show_bug.cgi?id=188427
<rdar://problem/43064672>

Reviewed by Wenson Hsieh.

Speculatively fix more crashes seen under setSuggestions.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKFormInputSession isValid]):
(-[WKFormInputSession setSuggestions:]):
(-[WKFormInputSession invalidate]):
Belt-and-suspenders fix: use WeakObjCPtr for WKFormInputSession's WKContentView reference.

(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
Invalidate the WKFormInputSession before replacing it; we theorize that
there is a path in which we get here without having previously called stopAssistingNode.
Most of the code is OK with this, but this leaves WKFormInputSession
with a raw reference to WKContentView which can later become stale.

9:32 PM Changeset in webkit [234718] by rniwa@webkit.org
  • 7 edits
    2 adds in trunk

REGRESSION (r228260): Events handled by input method invoke default event handler
https://bugs.webkit.org/show_bug.cgi?id=188370

Reviewed by Wenson Hsieh.

Source/WebCore:

The bug was caused by the default event handler being invoked for the "virtual" keydown events
generated for input methods. Namely, when Japanese or Chinese input methods swallows TAB key,
WebKit should not invoke the default event handler and move the focus during input composition.

Fixed the bug by adding a new boolean on Event indicating whether the default event handler
should be invoked, and restoring the behavior prior to r228260 for these virtual keydown events.

Test: editing/input/press-tab-during-ime-composition.html

  • dom/Event.h:

(WebCore::Event::isDefaultEventHandlerIgnored const): Added.
(WebCore::Event::setIsDefaultEventHandlerIgnored): Added.

  • dom/EventDispatcher.cpp:

(WebCore::EventDispatcher::dispatchEvent): Don't invoke the default event handler if
isDefaultEventHandlerIgnored is set.

  • page/EventHandler.cpp:

(WebCore::EventHandler::internalKeyEvent): Set isDefaultEventHandlerIgnored. This restores WebKit's
behavior prior to r228260.

LayoutTests:

Added a regression test. Due to the lack of adequate support of textInputController in WebKitTestRunner,
the test is only enabled in WebKit1. The WTR fix is tracked by https://webkit.org/b/188428.

  • editing/input/press-tab-during-ime-composition-expected.txt: Added.
  • editing/input/press-tab-during-ime-composition.html: Added.
  • platform/ios/TestExpectations:
  • platform/wk2/TestExpectations:
8:53 PM Changeset in webkit [234717] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Prevent collectScreenProperties from crashing Base System
https://bugs.webkit.org/show_bug.cgi?id=188429
<rdar://problem/43075662>

Patch by Justin Fan <Justin Fan> on 2018-08-08
Reviewed by Simon Fraser.

Adding some error-checking and early returns to further prevent calling CGLDescribeRenderer with invalid parameters.

Existing WebGL tests should cover; no expected change in behavior. Crash happened primarily on Base System.

  • platform/mac/PlatformScreenMac.mm:

(WebCore::gpuIDForDisplayMask):

8:13 PM Changeset in webkit [234716] by keith_miller@apple.com
  • 4 edits in trunk

Array.prototype.sort should throw TypeError if param is a not callable object
https://bugs.webkit.org/show_bug.cgi?id=188382

Reviewed by Saam Barati.

JSTests:

  • test262/expectations.yaml:

Source/JavaScriptCore:

Improve spec compatability by checking if the Array.prototype.sort comparator is a function
before doing anything else.

Also, refactor the various helper functions to use let instead of var.

  • builtins/ArrayPrototype.js:

(sort.stringComparator):
(sort.compactSparse):
(sort.compactSlow):
(sort.compact):
(sort.merge):
(sort.mergeSort):
(sort.bucketSort):
(sort.comparatorSort):
(sort.stringSort):
(sort):

6:12 PM Changeset in webkit [234715] by don.olmstead@sony.com
  • 4 edits in trunk/Source

[Curl] Surface additional NetworkLoadMetrics
https://bugs.webkit.org/show_bug.cgi?id=188391

Reviewed by Joseph Pecoraro.

Source/WebCore:

  • platform/network/curl/CurlContext.cpp:

(WebCore::CurlHandle::getNetworkLoadMetrics):

Source/WebKit:

  • NetworkProcess/curl/NetworkDataTaskCurl.cpp:

(WebKit::NetworkDataTaskCurl::curlDidReceiveResponse):

3:58 PM Changeset in webkit [234714] by commit-queue@webkit.org
  • 4 edits in trunk

Fix possible null dereference in WebBackForwardList::restoreFromState
https://bugs.webkit.org/show_bug.cgi?id=188418
<rdar://problem/42531726>

Patch by Alex Christensen <achristensen@webkit.org> on 2018-08-08
Reviewed by Chris Dumez.

Source/WebKit:

  • UIProcess/WebBackForwardList.cpp:

(WebKit::WebBackForwardList::restoreFromState):
Null-check m_page like we do everywhere else in this file because it can be set to null when closing the page.

Tools:

  • TestWebKitAPI/Tests/WebKit/RestoreSessionState.cpp:

(TestWebKitAPI::TEST):

3:42 PM Changeset in webkit [234713] by msaboff@apple.com
  • 8 edits
    2 adds in trunk/Source/JavaScriptCore

Yarr JIT should include annotations with dumpDisassembly=true
https://bugs.webkit.org/show_bug.cgi?id=188415

Reviewed by Yusuke Suzuki.

Created a YarrDisassembler class that handles annotations similar to the baseline JIT.
Given that the Yarr creates matching code bu going through the YarrPattern ops forward and
then the backtracking code through the YarrPattern ops in reverse order, the disassembler
needs to do the same think.

Restructured some of the logging code in YarrPattern to eliminate redundent code and factor
out simple methods for what was needed by the YarrDisassembler.

Here is abbreviated sample output after this change.

Generated JIT code for 8-bit regular expression /ab*c/:

Code at [0x469561c03720, 0x469561c03840):

0x469561c03720: push %rbp
0x469561c03721: mov %rsp, %rbp
...
0x469561c03762: sub $0x40, %rsp

Matching

0:OpBodyAlternativeBegin minimum size 2

0x469561c03766: add $0x2, %esi
0x469561c03769: cmp %edx, %esi
0x469561c0376b: ja 0x469561c037fa

1:OpTerm TypePatternCharacter 'a'

0x469561c03771: movzx -0x2(%rdi,%rsi), %eax
0x469561c03776: cmp $0x61, %eax
0x469561c03779: jnz 0x469561c037e9

2:OpTerm TypePatternCharacter 'b' {0,...} greedy

0x469561c0377f: xor %r9d, %r9d
0x469561c03782: cmp %edx, %esi
0x469561c03784: jz 0x469561c037a2
...
0x469561c0379d: jmp 0x469561c03782
0x469561c037a2: mov %r9, 0x8(%rsp)

3:OpTerm TypePatternCharacter 'c'

0x469561c037a7: movzx -0x1(%rdi,%rsi), %eax
0x469561c037ac: cmp $0x63, %eax
0x469561c037af: jnz 0x469561c037d1

4:OpBodyAlternativeEnd

0x469561c037b5: add $0x40, %rsp
...
0x469561c037cf: pop %rbp
0x469561c037d0: ret

Backtracking

4:OpBodyAlternativeEnd
3:OpTerm TypePatternCharacter 'c'
2:OpTerm TypePatternCharacter 'b' {0,...} greedy

0x469561c037d1: mov 0x8(%rsp), %r9
...
0x469561c037e4: jmp 0x469561c037a2

1:OpTerm TypePatternCharacter 'a'
0:OpBodyAlternativeBegin minimum size 2

0x469561c037e9: mov %rsi, %rax
...
0x469561c0382f: pop %rbp
0x469561c03830: ret

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • runtime/RegExp.cpp:

(JSC::RegExp::compile):
(JSC::RegExp::compileMatchOnly):

  • yarr/YarrDisassembler.cpp: Added.

(JSC::Yarr::YarrDisassembler::indentString):
(JSC::Yarr::YarrDisassembler::YarrDisassembler):
(JSC::Yarr::YarrDisassembler::~YarrDisassembler):
(JSC::Yarr::YarrDisassembler::dump):
(JSC::Yarr::YarrDisassembler::dumpHeader):
(JSC::Yarr::YarrDisassembler::dumpVectorForInstructions):
(JSC::Yarr::YarrDisassembler::dumpForInstructions):
(JSC::Yarr::YarrDisassembler::dumpDisassembly):

  • yarr/YarrDisassembler.h: Added.

(JSC::Yarr::YarrJITInfo::~YarrJITInfo):
(JSC::Yarr::YarrDisassembler::setStartOfCode):
(JSC::Yarr::YarrDisassembler::setForGenerate):
(JSC::Yarr::YarrDisassembler::setForBacktrack):
(JSC::Yarr::YarrDisassembler::setEndOfGenerate):
(JSC::Yarr::YarrDisassembler::setEndOfBacktrack):
(JSC::Yarr::YarrDisassembler::setEndOfCode):
(JSC::Yarr::YarrDisassembler::indentString):

  • yarr/YarrJIT.cpp:

(JSC::Yarr::YarrGenerator::generate):
(JSC::Yarr::YarrGenerator::backtrack):
(JSC::Yarr::YarrGenerator::YarrGenerator):
(JSC::Yarr::YarrGenerator::compile):
(JSC::Yarr::jitCompile):

  • yarr/YarrJIT.h:
  • yarr/YarrPattern.cpp:

(JSC::Yarr::dumpCharacterClass):
(JSC::Yarr::PatternTerm::dump):
(JSC::Yarr::YarrPattern::dumpPatternString):
(JSC::Yarr::YarrPattern::dumpPattern):

  • yarr/YarrPattern.h:
3:18 PM Changeset in webkit [234712] by Basuke Suzuki
  • 6 edits in trunk/LayoutTests

[Curl] Test gardening
https://bugs.webkit.org/show_bug.cgi?id=188420

Unreviewed test gardening.

Fix test result after r234607 landed. Part 1 for http/tests

  • platform/wincairo/TestExpectations:
  • platform/wincairo/http/tests/local/file-url-sent-as-referer-expected.txt:
  • platform/wincairo/http/tests/multipart/invalid-image-data-expected.txt:
  • platform/wincairo/http/tests/multipart/invalid-image-data-standalone-expected.txt:
  • platform/wincairo/http/tests/uri/css-href-expected.txt:
2:54 PM Changeset in webkit [234711] by Ross Kirsling
  • 2 edits in trunk/Tools

run-builtins-generator-tests does not correctly handle CRLFs from stderr
https://bugs.webkit.org/show_bug.cgi?id=188392

Reviewed by Fujii Hironori.

Background:
file.write converts LF to os.linesep, so if the input string contains CRLF, we end up writing CRCRLF to the file.

  • Scripts/webkitpy/common/system/executive.py:

(Executive.run_command):
Normalize CRLF to LF in decoded stdout/stderr data, so that we don't return consumers a platform-specific string.

1:54 PM Changeset in webkit [234710] by don.olmstead@sony.com
  • 2 edits in trunk/Source/WebCore

[Nicosia] Add the Nicosia-specific PlatformLayer type alias
https://bugs.webkit.org/show_bug.cgi?id=188405
<rdar://problem/43039520>

Unreviewed build fix.

  • platform/graphics/texmap/GraphicsContext3DTextureMapper.cpp:
1:34 PM Changeset in webkit [234709] by Aditya Keerthi
  • 2 edits in trunk/Tools

Unreviewed, add myself to committers list.

  • Scripts/webkitpy/common/config/contributors.json:
12:33 PM Changeset in webkit [234708] by Kocsen Chung
  • 2 edits in tags/Safari-607.1.2/Tools

Revert r234321. rdar://problem/43057703

12:33 PM Changeset in webkit [234707] by Kocsen Chung
  • 2 edits in tags/Safari-607.1.2/Tools

Revert r234320. rdar://problem/43057703

12:33 PM Changeset in webkit [234706] by Kocsen Chung
  • 4 edits in tags/Safari-607.1.2/Source/WebKit

Revert r234314. rdar://problem/43057703

12:07 PM Changeset in webkit [234705] by commit-queue@webkit.org
  • 6 edits in trunk

Unreviewed, rolling out r234314, r234320, and r234321.
https://bugs.webkit.org/show_bug.cgi?id=188414

Caused email sign in issue (Requested by ryanhaddad on
#webkit).

Reverted changesets:

"Remove unused WKNavigationDelegatePrivate
decidePolicyForNavigationAction SPI"
https://bugs.webkit.org/show_bug.cgi?id=188077
https://trac.webkit.org/changeset/234314

"Fix API tests after r234314"
https://bugs.webkit.org/show_bug.cgi?id=188077
https://trac.webkit.org/changeset/234320

"Fix API tests after r234314"
https://bugs.webkit.org/show_bug.cgi?id=188077
https://trac.webkit.org/changeset/234321

12:06 PM Changeset in webkit [234704] by Simon Fraser
  • 10 edits
    1 add in trunk/Source

Add a WebKit2 logging channel for ActivityState
https://bugs.webkit.org/show_bug.cgi?id=188411

Reviewed by Tim Horton.
Source/WebCore:

Add logging for ActivityState changes and the entrypoints that affect ActivityState.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • page/ActivityState.cpp: Added.

(WebCore::activityStateFlagsToString):

  • page/ActivityState.h:

Source/WebKit:

Add logging for ActivityState changes and the entrypoints that affect ActivityState.

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

(WebKit::WebViewImpl::windowDidOrderOffScreen):
(WebKit::WebViewImpl::windowDidOrderOnScreen):
(WebKit::WebViewImpl::windowDidChangeOcclusionState):
(WebKit::WebViewImpl::viewDidMoveToWindow):
(WebKit::WebViewImpl::viewDidHide):
(WebKit::WebViewImpl::viewDidUnhide):
(WebKit::WebViewImpl::activeSpaceDidChange):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::activityStateDidChange):
(WebKit::WebPageProxy::dispatchActivityStateChange):

  • UIProcess/mac/PageClientImplMac.mm:

(WebKit::PageClientImpl::isViewVisible):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::setActivityState):

11:10 AM Changeset in webkit [234703] by eric.carlson@apple.com
  • 4 edits in trunk/Source/WebCore

Add LogArgument template for PlatformMediaSession::RemoteControlCommandType
https://bugs.webkit.org/show_bug.cgi?id=188314

Reviewed by Alex Christensen.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::didReceiveRemoteControlCommand): Don't coerce to int for logging.

  • platform/audio/PlatformMediaSession.cpp:

(WebCore::convertEnumerationToString): New.
(WebCore::PlatformMediaSession::didReceiveRemoteControlCommand): Log command.

  • platform/audio/PlatformMediaSession.h:

(WTF::LogArgument<WebCore::PlatformMediaSession::RemoteControlCommandType>::toString):

10:59 AM Changeset in webkit [234702] by Joseph Pecoraro
  • 7 edits in trunk

Web Inspector: XHR content sometimes shows as error even though load succeeded
https://bugs.webkit.org/show_bug.cgi?id=188385
<rdar://problem/42646160>

Source/WebCore:

Reviewed by Devin Rousso.

  • inspector/agents/InspectorNetworkAgent.cpp:

(WebCore::InspectorNetworkAgent::didReceiveData):
Avoid a double hash lookup in the common case.
Allow synchronous XHR to have text data appended in the normal case.
Allow synchronous XHR to set base64 encoded data right here for non-text data.

  • inspector/NetworkResourcesData.h:

(WebCore::NetworkResourcesData::ResourceData::hasBufferedData const):
Getter to see if data is buffered or not for this resource.

  • inspector/NetworkResourcesData.cpp:

(WebCore::NetworkResourcesData::maybeAddResourceData):
Return the updated ResourceData to avoid clients having to do a lookup.

LayoutTests:

Reviewed by Devin Rousso.

  • http/tests/inspector/network/xhr-response-body-expected.txt:
  • http/tests/inspector/network/xhr-response-body.html:

Extend this test to include synchronous XHR for text and non-text resources.

10:59 AM Changeset in webkit [234701] by Kocsen Chung
  • 7 edits in branches/safari-606.1.36.0-branch/Source

Versioning.

10:57 AM Changeset in webkit [234700] by Kocsen Chung
  • 7 edits in branches/safari-606.1.36.1-branch/Source

Versioning.

10:43 AM Changeset in webkit [234699] by Kocsen Chung
  • 7 edits in branches/safari-606.1.36.2-branch/Source

Versioning.

10:29 AM Changeset in webkit [234698] by Kocsen Chung
  • 7 edits in trunk/Source

Versioning.

10:28 AM Changeset in webkit [234697] by Kocsen Chung
  • 7 edits in tags/Safari-607.1.2/Source

Versioning.

10:25 AM Changeset in webkit [234696] by Kocsen Chung
  • 1 copy in tags/Safari-607.1.2

Tag Safari-607.1.2.

9:43 AM Changeset in webkit [234695] by Truitt Savell
  • 3 edits in trunk/LayoutTests

Adjusting test expectations for imported/blink/fast/text/international-iteration-simple-text.html
https://bugs.webkit.org/show_bug.cgi?id=179853

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk1/TestExpectations:
9:30 AM Changeset in webkit [234694] by Ms2ger@igalia.com
  • 2 edits in trunk/LayoutTests

[GTK] Unreviewed test gardening
https://bugs.webkit.org/show_bug.cgi?id=188409

Unreviewed test gardening.

  • platform/gtk/TestExpectations: Remove expectations for now-passing tests.
9:20 AM Changeset in webkit [234693] by Jonathan Bedard
  • 2 edits in trunk/Source/WebKitLegacy/mac
8:54 AM Changeset in webkit [234692] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebCore

Assertion failed in Webcore::Process::setIdentifier()
https://bugs.webkit.org/show_bug.cgi?id=188404
<rdar://problem/43029137>

Reviewed by Chris Dumez.

App using both WebKit1 and WebKit may crash in WebKit initialization.

  • platform/Process.cpp:

(WebCore::Process::setIdentifier):

8:06 AM Changeset in webkit [234691] by Wenson Hsieh
  • 7 edits in trunk

[iOS] fast/events/ios/contenteditable-autocapitalize.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=188401
<rdar://problem/32542300>

Reviewed by Ryosuke Niwa.

Tools:

When run individually, fast/events/ios/contenteditable-autocapitalize.html passes consistently; however, when
run right after another layout test that finishes while the keyboard is shown, this test sometimes fails. This
is because each of the three steps of this test ends when UIScriptController's didHideKeyboardCallback is
invoked, and if the keyboard only begins to dismiss after the previous test completes, we have a race. When the
keyboard finishes dismissing after the UI script is evaluated, it will trigger UI script completion early and
skip over one of the steps in the layout test, resulting in a text diff failure.

To fix this, add a mechanism in WebKitTestRunner to wait until the keyboard is dismissed (with a short timeout)
as a part of resetting test controller state, before moving on to the next layout test.

  • WebKitTestRunner/cocoa/TestRunnerWKWebView.h:
  • WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:

(-[TestRunnerWKWebView didStartFormControlInteraction]):
(-[TestRunnerWKWebView didEndFormControlInteraction]):

Use these hooks to keep track of whether the previous test is presenting any form input UI.

(-[TestRunnerWKWebView isInteractingWithFormControl]):

  • WebKitTestRunner/ios/TestControllerIOS.mm:

(WTR::handleKeyboardWillHideNotification):
(WTR::handleKeyboardDidHideNotification):
(WTR::TestController::platformInitialize):
(WTR::TestController::platformDestroy):

Register during initialization (and unregister during teardown) for keyboard hiding notifications, to keep track
of when the keyboard dismissal animation ends.

(WTR::TestController::platformResetStateToConsistentValues):

Make a couple of tweaks here: (1) if form input UI is being shown, tell the web view to resign first responder,
which causes the field to lose focus. (2) If necessary, wait for the current keyboard dismissal animation to
finish. This includes any keyboard dismissal animations triggered as a result of step (1).

LayoutTests:

Minor tweaks to make this test a bit easier to follow. Use async-await for each step of the test, and pass in
the current autocapitalization type to runTestWithAutocapitalizeType rather than the next type. See Tools
ChangeLog for more details.

  • fast/events/ios/contenteditable-autocapitalize.html:
  • platform/ios/TestExpectations:

Remove the failing test expecation.

5:07 AM Changeset in webkit [234690] by ddkilzer@apple.com
  • 2 edits
    1 add in trunk/Source/ThirdParty/libwebrtc

[libwebrtc] SafeSetError() in peerconnection.cc contains use-after-move of webrtc::RTCError variable
<https://webkit.org/b/188337>
<rdar://problem/42882908>

Reviewed by Eric Carlson.

  • Source/webrtc/pc/peerconnection.cc:

(webrtc::SafeSetError): Make static since it's not used outside
this translation unit.
(webrtc::SafeSetError): Ditto. Change first argument to
webrtc::RTCError&& to prevent unnecessary copying of std::move()
argument. Fix bug by saving value of error.ok() before moving
to *error_out.

  • WebKit/0013-Fix-SafeSetError-use-after-move.patch: Add patch.
3:45 AM Changeset in webkit [234689] by cturner@igalia.com
  • 6 edits
    2 adds in trunk

Add CENC sanitization
https://bugs.webkit.org/show_bug.cgi?id=188376

Reviewed by Xabier Rodriguez-Calvar.

LayoutTests/imported/w3c:

  • web-platform-tests/encrypted-media/scripts/generate-request-disallowed-input.js:

(runTest): Fixed an incorrect test failure message, added more
invalid init data tests to check the new box parsing methods in
WebCore.

Source/WebCore:

This patch adds support for sanitizing the CENC initialization
data, to ensure there are no obviously bogus values in the
untrusted input from generateRequest, see
https://www.w3.org/TR/encrypted-media/#dom-mediakeysession-generaterequest
for more details on sanitization.

Tested by imported/w3c/web-platform-tests/encrypted-media/clearkey-generate-request-disallowed-input.https.html

  • Modules/encryptedmedia/InitDataRegistry.cpp: The diff looks a

bit wonky because I had to reorder extractKeyIDsCenc to come
before sanitizeCenc.
(WebCore::extractKeyIDsCenc): Added implementation, a nullopt
return value here indicates the parsing found an error in the box
values.
(WebCore::sanitizeCenc): Added implementation, if the box can be
parsed, return a copy of the buffer as before, otherwise an error
value.

  • Sources.txt: Add the new PSSH box type.
  • platform/graphics/iso/ISOProtectionSystemSpecificHeaderBox.cpp:

Added, parsing methods come from ISO/IEC 23001-7-2016 Section
8.1.1.
(WebCore::ISOProtectionSystemSpecificHeaderBox::parse): Ditto.

  • platform/graphics/iso/ISOProtectionSystemSpecificHeaderBox.h: Ditto.

(WebCore::ISOProtectionSystemSpecificHeaderBox::boxTypeName): Ditto.
(WebCore::ISOProtectionSystemSpecificHeaderBox::systemID const): Ditto.
(WebCore::ISOProtectionSystemSpecificHeaderBox::keyIDs const):
Ditto.
(WebCore::ISOProtectionSystemSpecificHeaderBox::data const): Ditto.

2:31 AM Changeset in webkit [234688] by zandobersek@gmail.com
  • 12 edits
    2 adds in trunk/Source/WebCore

[Nicosia] Add the Nicosia-specific PlatformLayer type alias
https://bugs.webkit.org/show_bug.cgi?id=188405

Reviewed by Carlos Garcia Campos.

Add a Nicosia-specific PlatformLayer type alias that points to the
Nicosia::PlatformLayer type. This is guarded by the USE(NICOSIA) macro,
which guards additional code in this patch but will be added to other
Nicosia-specific classes later.

To keep things buildable when USE(NICOSIA) is defined, additional
changes are made to classes that operate with platform layers.
Cairo-specific ImageBuffer implementation and the related
ImageBufferData class are modified to work with a Nicosia::ContentLayer
object. This object is using the TextureMapper-specific Impl class which
internally keeps a TextureMapperPlatformLayerProxy object. This way
we can reuse existing code that also works with an object of this type,
only difference is where the proxy object is kept. Main difference is in
the ImageBuffer::platformLayer() method, where pointer to the
Nicosia::ContentLayer object is returned when USE(NICOSIA) is enabled.

Similar approach is taked for the MediaPlayerPrivateGStreamerBase class.
When USE(NICOSIA) is enabled, a Nicosia::ContentLayer object is
constructed, and with the TextureMapper-specific Impl we again operate
on the TextureMapperPlatformLayerProxy object like before, so all of
the proxy-specific code is bundled into helper lambdas that operate on
the given proxy object. In the platformLayer() method, we again return
pointer to the Nicosia::ContentLayer object when USE(NICOSIA) is on.

For the GraphicsContext3D integration, we have to provide a separate
class that replicates most of the functionality currently present in the
TextureMapperGC3DPlatformLayer class. Main difference is that in the new
Nicosia::GC3DLayer class, a Nicosia::ContentLayer object is spawned with
the TextureMapper-specific Impl. The proxy object held by that Impl is
then again used to push new buffers into the rendering pipeline. As
before, pointer to the Nicosia::ContentLayer is returned in the
GraphicsContext3D::platformLayer() object.

Integration of the GraphicsContext3D class into Nicosia layering needs
further work in the future. Target should be providing a class that is
not specific to the TextureMapper layer. Additionally, when USE(NICOSIA)
is enabled, we remove the TextureMapperGC3DPlatformLayer class from
compilation since it depends on a PlatformLayer type alias to the
TextureMapperPlatformLayerProxyProvider class.

This patch also doesn't address the abundance of macros that this code
now uses. While USE(NICOSIA) is introduced, we have to work around
four additional macros in this code: USE(TEXTURE_MAPPER),
USE(TEXTURE_MAPPER_GL), USE(COORDINATED_GRAPHICS) and
USE(COORDINATED_GRAPHICS_THREADED). In a lot of places these are used
interchangeably, but they should be merged and simplified in use. I hope
to approach this once the USE(NICOSIA) functionality lands and is turned
on for ports that currently build with USE(COORDINATED_GRAPHICS).

  • platform/TextureMapper.cmake:
  • platform/graphics/GraphicsContext3D.h:
  • platform/graphics/PlatformLayer.h:
  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::ImageBufferData::ImageBufferData):
(WebCore::ImageBufferData::~ImageBufferData):
(WebCore::ImageBufferData::swapBuffersIfNeeded):
(WebCore::ImageBuffer::platformLayer const):

  • platform/graphics/cairo/ImageBufferDataCairo.h:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::platformLayer const):
(WebCore::MediaPlayerPrivateGStreamerBase::swapBuffersIfNeeded):
(WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor):
(WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint):
(WebCore::MediaPlayerPrivateGStreamerBase::flushCurrentBuffer):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
  • platform/graphics/nicosia/texmap/NicosiaGC3DLayer.cpp: Added.

(Nicosia::GC3DLayer::GC3DLayer):
(Nicosia::GC3DLayer::~GC3DLayer):
(Nicosia::GC3DLayer::makeContextCurrent):
(Nicosia::GC3DLayer::platformContext):
(Nicosia::GC3DLayer::swapBuffersIfNeeded):

  • platform/graphics/nicosia/texmap/NicosiaGC3DLayer.h: Added.

(Nicosia::GC3DLayer::contentLayer const):

  • platform/graphics/texmap/GraphicsContext3DTextureMapper.cpp:

(WebCore::GraphicsContext3D::GraphicsContext3D):
(WebCore::GraphicsContext3D::makeContextCurrent):
(WebCore::GraphicsContext3D::platformGraphicsContext3D):
(WebCore::GraphicsContext3D::platformLayer const):

  • platform/graphics/texmap/TextureMapperGC3DPlatformLayer.cpp:
  • platform/graphics/texmap/TextureMapperGC3DPlatformLayer.h:
  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::setContentsToPlatformLayer):
(WebCore::CoordinatedGraphicsLayer::syncPlatformLayer):
(WebCore::CoordinatedGraphicsLayer::updatePlatformLayer):

2:14 AM Changeset in webkit [234687] by Manuel Rego Casasnovas
  • 24 edits
    8 adds in trunk

[css-grid] Update behavior of percentage row tracks and gutters
https://bugs.webkit.org/show_bug.cgi?id=188403

Reviewed by Sergio Villar Senin.

LayoutTests/imported/w3c:

Import tests from WPT related to this issue.

  • web-platform-tests/css/css-grid/alignment/grid-content-alignment-second-pass-001-expected.txt: Added.
  • web-platform-tests/css/css-grid/alignment/grid-content-alignment-second-pass-001.html: Added.
  • web-platform-tests/css/css-grid/alignment/grid-content-alignment-second-pass-002-expected.txt: Added.
  • web-platform-tests/css/css-grid/alignment/grid-content-alignment-second-pass-002.html: Added.
  • web-platform-tests/css/css-grid/alignment/w3c-import.log:
  • web-platform-tests/css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-001-expected.txt: Added.
  • web-platform-tests/css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-001.html: Added.
  • web-platform-tests/css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-002-expected.txt: Added.
  • web-platform-tests/css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-002.html: Added.
  • web-platform-tests/css/css-grid/grid-definition/w3c-import.log:
  • web-platform-tests/css/css-grid/grid-layout-properties.html: Update test to reflect the new behavior.

Source/WebCore:

The CSSWG decided to change how percentage row tracks and gutters
in a grid container with indefinite height are resolved.

The CSSWG issues are:

So far they were resolved as "auto", like it happens with
percentage heights in regular blocks. But now they're going to behave
similar to what happens in the columns axis, they would be ignored
to compute the intrinsic height.
This causes that we need to repeat the track sizing algorithm
when we have a grid container with indefinite height
that has some percentage rows using the intrinsic height
calculated on the first pass. Then the percentages will be resolved
against the intrinsic height.

Tests: imported/w3c/web-platform-tests/css/css-grid/alignment/grid-content-alignment-second-pass-001.html

imported/w3c/web-platform-tests/css/css-grid/alignment/grid-content-alignment-second-pass-002.html
imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-001.html
imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-002.html

  • rendering/GridTrackSizingAlgorithm.cpp:

(WebCore::GridTrackSizingAlgorithm::gridTrackSize const):
(WebCore::GridTrackSizingAlgorithm::initializeTrackSizes):
(WebCore::GridTrackSizingAlgorithm::setup):
(WebCore::GridTrackSizingAlgorithm::reset):

  • rendering/GridTrackSizingAlgorithm.h:
  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::availableSpaceForGutters const):
(WebCore::RenderGrid::repeatTracksSizingIfNeeded):
(WebCore::RenderGrid::layoutBlock):

LayoutTests:

Update tests as needed according to the new behavior.

  • TestExpectations: Two grid gutters tests from WPT css-align suite are passing now.
  • fast/css-grid-layout/grid-columns-rows-get-set-expected.txt:
  • fast/css-grid-layout/grid-columns-rows-get-set-multiple-expected.txt:
  • fast/css-grid-layout/grid-columns-rows-get-set-multiple.html:
  • fast/css-grid-layout/grid-columns-rows-get-set.html:
  • fast/css-grid-layout/grid-gutters-as-percentage-expected.txt:
  • fast/css-grid-layout/grid-gutters-as-percentage.html:
  • fast/css-grid-layout/grid-track-sizing-with-percentages-and-orthogonal-flows-expected.txt:
  • fast/css-grid-layout/grid-track-sizing-with-percentages-and-orthogonal-flows.html:
  • fast/css-grid-layout/named-grid-line-get-set-expected.txt:
  • fast/css-grid-layout/named-grid-line-get-set.html:
  • fast/css-grid-layout/nested-grid-expected.html:
  • fast/css-grid-layout/percent-track-breadths-regarding-container-size.html:
  • fast/css-grid-layout/resources/grid-columns-rows-get-set-multiple.js:
  • fast/css-grid-layout/resources/grid-columns-rows-get-set.js:

Aug 7, 2018:

9:41 PM Changeset in webkit [234686] by sbarati@apple.com
  • 2 edits in trunk/Source/WebCore

ResourceUsageOverlay should use physical footprint for its "Footprint" label
https://bugs.webkit.org/show_bug.cgi?id=188395

Reviewed by Simon Fraser.

Let's use physical footprint on Cocoa for the number we say is "footprint".
Before, we were just using the number of dirty pages multiplies by
page size. This number was an upper bound on footprint since it
doesn't take into account compressed memory.

  • page/cocoa/ResourceUsageOverlayCocoa.mm:

(WebCore::ResourceUsageOverlay::platformDraw):

7:39 PM Changeset in webkit [234685] by Darin Adler
  • 79 edits
    1 copy
    1 move
    1 add in trunk

[Cocoa] More tweaks and refactoring to prepare for ARC
https://bugs.webkit.org/show_bug.cgi?id=188245

Reviewed by Dan Bernstein.

Source/JavaScriptCore:

  • API/JSValue.mm: Use unsafe_unretained.

(JSContainerConvertor::convert): Use auto for compatibility with the above.

  • API/JSWrapperMap.mm:

(allocateConstructorForCustomClass): Use CFTypeRef instead of Protocol *.
(-[JSWrapperMap initWithGlobalContextRef:]): Use unsafe_unretained.

  • heap/Heap.cpp: Updated include for rename: FoundationSPI.h -> objcSPI.h.

Source/WebCore:

  • bridge/objc/objc_instance.mm: Updated include for rename: FoundationSPI.h -> objcSPI.h.
  • platform/ios/wak/WebCoreThread.mm: Ditto.

Source/WebKit:

  • Platform/cocoa/WKCrashReporter.mm:

(WebKit::setCrashLogMessage): Refactor into a separate function for clarity.
(WebKit::setCrashReportApplicationSpecificInformation): Use a bridging cast.

  • Shared/mac/PasteboardTypes.mm:

(WebKit::PasteboardTypes::forEditing): Use a bridging cast.

  • WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:

(WebKit::convertToNPNNString): Added. Uses CFStringRef rather than NSString so we can
manually manage the autoreleasing.
(WebKit::initializeKeyboardEvent): Use convertToNPNNString.
(WebKit::NetscapePlugin::sendComplexTextInput): Ditto.

  • WebProcess/Plugins/PDF/PDFPlugin.mm: Use unsafe_unretained explicitly

for a parent pointer. We could consider moving to weak after switching to ARC.

Source/WebKitLegacy/mac:

  • Carbon/CarbonUtils.m: Updated include for rename: FoundationSPI.h -> objcSPI.h.
  • Carbon/CarbonWindowFrame.m:

(-[CarbonWindowFrame dealloc]): Deleted. It was empty.

  • DOM/DOM.mm:

(-[DOMElement _imageTIFFRepresentation]): Use a bridging cast.
(-[DOMNodeFilter finalize]): Deleted. WebKit no longer supports Objective-C
garbage collection so this method isn't useful.

  • DOM/DOMXPath.mm:

(-[DOMNativeXPathNSResolver finalize]): Deleted. WebKit no longer supports
Objective-C garbage collection so this method isn't useful.

  • History/WebHistory.mm:

(-[WebHistoryPrivate data]): Allocate an NSData instead of casting from a CFData.

  • Misc/WebElementDictionary.mm:

(addLookupKey): Use a bridging cast.
(cacheValueForKey): Ditto.
(-[WebElementDictionary _fillCache]): Ditto.
(-[WebElementDictionary objectForKey:]): Ditto.

  • Misc/WebKitNSStringExtras.mm:

(-[NSString _web_drawAtPoint:font:textColor:]): Use a bridging cast.
(-[NSString _web_widthWithFont:]): Ditto.
(-[NSString _webkit_stringByTrimmingWhitespace]): Ditto.

  • Misc/WebLocalizableStrings.mm:

(WebLocalizedString): Use a bridging cast.

  • Misc/WebNSDataExtras.mm:

(-[NSString _web_capitalizeRFC822HeaderFieldName]): Use a bridging cast
and use CFBridgingRelease instead of calling autorelease directly.
(-[NSData _webkit_parseRFC822HeaderFields]): Use NSString methods instead
of a mix of CFString and NSString. Also simplified logic a bit, and cut down
on the amount of explicit release and autorelease.

  • Misc/WebNSDictionaryExtras.h: Deleted unused methods.
  • Misc/WebNSDictionaryExtras.m:

(-[NSDictionary _webkit_intForKey:]): Deleted.
(-[NSMutableDictionary _webkit_setInt:forKey:]): Deleted.
(-[NSMutableDictionary _webkit_setFloat:forKey:]): Deleted.
(-[NSMutableDictionary _webkit_setBool:forKey:]): Deleted.
(-[NSMutableDictionary _webkit_setLongLong:forKey:]): Deleted.
(-[NSMutableDictionary _webkit_setUnsignedLongLong:forKey:]): Deleted.
(-[NSMutableDictionary _webkit_setUnsignedInt:forKey:]): Deleted.

  • Misc/WebStringTruncator.mm:

(fontFromNSFont): Use a bridging cast.

  • Plugins/Hosted/NetscapePluginHostManager.mm:

(WebKit::preferredBundleLocalizationName): Use a bridging cast and CFBridgingRelease.

  • Plugins/Hosted/NetscapePluginInstanceProxy.mm:

(WebKit::NetscapePluginInstanceProxy::cleanup): Use a bridging cast.
(WebKit::NetscapePluginInstanceProxy::status): Ditto.
(WebKit::NetscapePluginInstanceProxy::loadURL): Ditto.
(WebKit::NetscapePluginInstanceProxy::demarshalValueFromArray): Ditto.

  • Plugins/Hosted/ProxyInstance.mm:

(WebKit::ProxyInstance::getPropertyNames): Ditto.

  • Plugins/WebBasePluginPackage.mm:

(-[WebBasePluginPackage _objectForInfoDictionaryKey:]): Ditto.

  • Plugins/WebNetscapePluginEventHandlerCocoa.mm:

(WebNetscapePluginEventHandlerCocoa::platformWindow): Ditto.

  • Plugins/WebNetscapePluginPackage.mm:

(-[WebNetscapePluginPackage _initWithPath:]): Ditto.

  • Plugins/WebNetscapePluginView.mm:

(-[WebNetscapePluginView _postURL:target:len:buf:file:notifyData:sendNotification:allowHeaders:]):
Use bridging casts and use RetainPtr insteead of an explicit CFRelease.
(-[WebNetscapePluginView status:]): Use a bridging cast.
(-[WebNetscapePluginView popUpContextMenu:]): Ditto.

  • Plugins/WebPluginController.mm:

(-[WebPluginController _cancelOutstandingChecks]): Use a bridging cast.

  • Plugins/WebPluginDatabase.mm:

(checkCandidate): Use explicit strong for out argument types.

  • Plugins/npapi.mm:

(pluginViewForInstance): Use a bridging cast.

  • Storage/WebDatabaseManager.mm:

(-[WebDatabaseManager detailsForDatabase:withOrigin:]): Use modern boxing instead of
explicit NSNumber and NSDictionary calls.

  • WebCoreSupport/WebContextMenuClient.mm:

(WebContextMenuClient::speak): Remove an unnecessary copy/autorelease pair.

  • WebCoreSupport/WebEditorClient.mm:

(WebEditorClient::handleKeyboardEvent): Added a missing typecast.
(WebEditorClient::handleInputMethodKeydown): Ditto.

  • WebCoreSupport/WebFrameNetworkingContext.mm:

(WebFrameNetworkingContext::sourceApplicationAuditData const): Use a bridging cast.

  • WebCoreSupport/WebSecurityOriginPrivate.h: Forward declare WebSecurityOriginPrivate

as a struct rather than an Objective-C class, since that's how it's defined.

  • WebInspector/WebNodeHighlighter.mm: Added missing includes.
  • WebView/WebFullScreenController.mm:

(-[WebFullScreenController enterFullScreen:]): Use a bridging cast.

  • WebView/WebHTMLView.mm:

(-[WebHTMLView _writeSelectionWithPasteboardTypes:toPasteboard:cachedAttributedString:]):
Ditto.
(-[WebHTMLView pasteboard:provideDataForType:]): Ditto.

  • WebView/WebImmediateActionController.mm:

(-[WebImmediateActionController performHitTestAtPoint:]): Removed redundant code to
go down to the document and then back to the frame.
(-[WebImmediateActionController immediateActionRecognizerDidUpdateAnimation:]): Ditto.
(-[WebImmediateActionController immediateActionRecognizerDidCancelAnimation:]): Ditto.
(-[WebImmediateActionController immediateActionRecognizerDidCompleteAnimation:]): Ditto.

  • WebView/WebJSPDFDoc.mm:

(jsPDFDocInitialize): Removed some unneeded type casting.
(jsPDFDocFinalize): Ditto.
(jsPDFDocPrint): Use a bridging cast.

  • WebView/WebPDFView.mm:

(_applicationInfoForMIMEType): Use bridging casts.

  • WebView/WebPreferences.mm:

(-[WebPreferences _setIntegerValue:forKey:]): Use boxing and setObject directly
instead of methods from WebNSDictionaryExtras.
(-[WebPreferences _setUnsignedIntValue:forKey:]): Ditto.
(-[WebPreferences _setFloatValue:forKey:]): Ditto.
(-[WebPreferences _setBoolValue:forKey:]): Ditto.
(-[WebPreferences _setLongLongValue:forKey:]): Ditto.
(-[WebPreferences _setUnsignedLongLongValue:forKey:]): Ditto.

  • WebView/WebView.mm:

(-[WebView _removeFromAllWebViewsSet]): Use bridging cast.
(-[WebView _addToAllWebViewsSet]): Ditto.
(+[WebView closeAllWebViews]): Use a modern for loop instead of NSEnumerator.
(-[WebView _windowVisibilityChanged:]): Moved this into the internal category
so it can be called from WebViewData methods.

  • WebView/WebViewData.mm: Added an import so we can call an internal WebView

method, _windowVisibilityChanged:.

  • WebView/WebViewInternal.h: Declared _windowVisibilityChanged: so it can be

called from WebViewData methods.

Source/WTF:

  • WTF.xcodeproj/project.pbxproj: Updated for rename: FoundationSPI.h -> objcSPI.h.
  • wtf/BlockPtr.h: Added missing include of "StdLibExtras.h".

Also re-sorted includes.

  • wtf/HashFunctions.h: Add function for "unsafe_unretained id".
  • wtf/HashTraits.h: Add traits for "unsafe_unretained id".
  • wtf/PlatformMac.cmake: Updated for rename: FoundationSPI.h -> objcSPI.h.
  • wtf/WeakObjCPtr.h: Use mutable instead of const_cast, and write a version

that uses weak explicitly under ARC. Also moved function declarations from
here to objcSPI.h.

  • wtf/cocoa/AutodrainedPool.cpp: Updated include for rename: FoundationSPI.h -> objcSPI.h.
  • wtf/spi/cocoa/objcSPI.h: Renamed from FoundationSPI.h and added the

additional functions used by WeakObjCPtr.h. Also changed to both include the
internal header and the function definitions when compiling with
USE(APPLE_INTERNAL_SDK), helping us check that function definitions match.

Tools:

  • DumpRenderTree/TestNetscapePlugIn/PluginObject.h: Use const void* for a

CFTypeRef instead of void*.

  • DumpRenderTree/TestNetscapePlugIn/PluginObjectMac.mm:

(createCoreAnimationLayer): Use CFBridgingRetain.

  • DumpRenderTree/mac/AccessibilityUIElementMac.mm:

(AccessibilityUIElement::lineTextMarkerRangeForTextMarker): Use bridging casts.
(AccessibilityUIElement::textMarkerRangeForElement): Ditto.
(AccessibilityUIElement::selectedTextMarkerRange): Ditto.
(AccessibilityUIElement::textMarkerRangeLength): Ditto.
(AccessibilityUIElement::attributedStringForTextMarkerRangeContainsAttribute): Ditto.
(AccessibilityUIElement::indexForTextMarker): Ditto.
(AccessibilityUIElement::textMarkerForIndex): Ditto.
(AccessibilityUIElement::isTextMarkerValid): Ditto.
(AccessibilityUIElement::previousTextMarker): Ditto.
(AccessibilityUIElement::nextTextMarker): Ditto.
(AccessibilityUIElement::stringForTextMarkerRange): Ditto.
(createJSStringRef): Ditto.
(AccessibilityUIElement::attributedStringForTextMarkerRange): Ditto.
(AccessibilityUIElement::attributedStringForTextMarkerRangeWithOptions): Ditto.
(AccessibilityUIElement::textMarkerRangeForMarkers): Ditto.
(AccessibilityUIElement::startTextMarkerForTextMarkerRange): Ditto.
(AccessibilityUIElement::endTextMarkerForTextMarkerRange): Ditto.
(AccessibilityUIElement::endTextMarkerForBounds): Ditto.
(AccessibilityUIElement::startTextMarkerForBounds): Ditto.
(AccessibilityUIElement::textMarkerForPoint): Ditto.
(AccessibilityUIElement::accessibilityElementForTextMarker): Ditto.
(AccessibilityUIElement::startTextMarker): Ditto.
(AccessibilityUIElement::endTextMarker): Ditto.
(AccessibilityUIElement::setSelectedVisibleTextRange): Ditto.
(AccessibilityUIElement::leftWordTextMarkerRangeForTextMarker): Ditto.
(AccessibilityUIElement::rightWordTextMarkerRangeForTextMarker): Ditto.
(AccessibilityUIElement::previousWordStartTextMarkerForTextMarker): Ditto.
(AccessibilityUIElement::nextWordEndTextMarkerForTextMarker): Ditto.
(AccessibilityUIElement::paragraphTextMarkerRangeForTextMarker): Ditto.
(AccessibilityUIElement::previousParagraphStartTextMarkerForTextMarker): Ditto.
(AccessibilityUIElement::nextParagraphEndTextMarkerForTextMarker): Ditto.
(AccessibilityUIElement::sentenceTextMarkerRangeForTextMarker): Ditto.
(AccessibilityUIElement::previousSentenceStartTextMarkerForTextMarker): Ditto.
(AccessibilityUIElement::nextSentenceEndTextMarkerForTextMarker): Ditto.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebPreferencesToConsistentValues): Use bridging cast.
(dumpFramesAsText): Ditto.
(dumpBackForwardListForAllWindows): Use a modern for loop instead of
CFArray functions to iterate the array.
(dump): Use bridging cast.
(runTest): Ditto.

  • DumpRenderTree/mac/DumpRenderTreePasteboard.mm:

(+[LocalPasteboard alloc]): Use class_createInstance instead of NSAllocateObject.
(toUTI): Return a RetainPtr<CFStringRef>.
(-[LocalPasteboard types]): Use the above and bridging casts.
(-[LocalPasteboard availableTypeFromArray:]): Ditto.
(-[LocalPasteboard setData:forType:]): Ditto.
(-[LocalPasteboard dataForType:]): Ditto.
(-[LocalPasteboard setPropertyList:forType:]): Use NSPropertyListSerialization
instead of CFPropertyList.
(-[LocalPasteboard setString:forType:]): Use NSString method instead of
CFStringCreateExternalRepresentation.

  • DumpRenderTree/mac/MockGeolocationProvider.h: Put CFTypeRef in a HashSet

instead of an Objective-C object pointer type.

  • DumpRenderTree/mac/MockGeolocationProvider.mm:

(-[MockGeolocationProvider registerWebView:]): Update for above.
(-[MockGeolocationProvider unregisterWebView:]): Ditto.
(-[MockGeolocationProvider timerFired]): Ditto.

  • DumpRenderTree/mac/MockWebNotificationProvider.h: Use CFTypeRef in

HashMap and HashSet instead of an Objective-C object pointer type.

  • DumpRenderTree/mac/MockWebNotificationProvider.mm:

(-[MockWebNotificationProvider registerWebView:]): Update for above.
(-[MockWebNotificationProvider unregisterWebView:]): Ditto.
(-[MockWebNotificationProvider showNotification:fromWebView:]): Ditto.
(-[MockWebNotificationProvider cancelNotification:]): Ditto.
(-[MockWebNotificationProvider simulateWebNotificationClick:]): Ditto.

  • DumpRenderTree/mac/ObjCPlugin.m:

(-[JSObjC retainObject:]): Use CFRetain instead of -[NSObject retain].

  • DumpRenderTree/mac/TestRunnerMac.mm:

(TestRunner::addDisallowedURL): Use bridging cast.
(TestRunner::applicationCacheDiskUsageForOrigin): Ditto.
(TestRunner::clearApplicationCacheForOrigin): Ditto.
(originsArrayToJS): Ditto.
(TestRunner::copyDecodedHostName): Ditto.
(TestRunner::copyEncodedHostName): Ditto.
(TestRunner::queueLoad): Ditto.
(TestRunner::setDomainRelaxationForbiddenForURLScheme): Ditto.
(TestRunner::setMockGeolocationPositionUnavailableError): Ditto.
(TestRunner::setUserStyleSheetLocation): Ditto.
(TestRunner::setValueForUser): Ditto.
(TestRunner::overridePreference): Ditto.
(TestRunner::execCommand): Ditto.
(TestRunner::findString): Ditto.
(TestRunner::isCommandEnabled): Ditto.
(TestRunner::addOriginAccessWhitelistEntry): Ditto.
(TestRunner::removeOriginAccessWhitelistEntry): Ditto.
(TestRunner::addUserScript): Ditto.
(TestRunner::addUserStyleSheet): Ditto.
(TestRunner::evaluateInWebInspector): Ditto.
(TestRunner::evaluateScriptInIsolatedWorld): Ditto.
(TestRunner::authenticateSession): Ditto.
(TestRunner::grantWebNotificationPermission): Ditto.
(TestRunner::denyWebNotificationPermission): Ditto.

  • TestRunnerShared/cocoa/LayoutTestSpellChecker.mm:

(-[LayoutTestSpellChecker setResultsFromJSObject:inContext:]): Ditto.

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::AccessibilityUIElement::lineTextMarkerRangeForTextMarker): Use bridging cast.
(WTR::AccessibilityUIElement::textMarkerRangeForElement): Ditto.
(WTR::AccessibilityUIElement::previousTextMarker): Ditto.
(WTR::AccessibilityUIElement::nextTextMarker): Ditto.
(WTR::AccessibilityUIElement::textMarkerRangeForMarkers): Ditto.
(WTR::AccessibilityUIElement::selectedTextMarkerRange): Ditto.
(WTR::AccessibilityUIElement::startTextMarkerForTextMarkerRange): Ditto.
(WTR::AccessibilityUIElement::endTextMarkerForTextMarkerRange): Ditto.
(WTR::AccessibilityUIElement::endTextMarkerForBounds): Ditto.
(WTR::AccessibilityUIElement::startTextMarkerForBounds): Ditto.
(WTR::AccessibilityUIElement::textMarkerForPoint): Ditto.
(WTR::AccessibilityUIElement::textMarkerForIndex): Ditto.
(WTR::AccessibilityUIElement::startTextMarker): Ditto.
(WTR::AccessibilityUIElement::endTextMarker): Ditto.
(WTR::AccessibilityUIElement::leftWordTextMarkerRangeForTextMarker): Ditto.
(WTR::AccessibilityUIElement::rightWordTextMarkerRangeForTextMarker): Ditto.
(WTR::AccessibilityUIElement::previousWordStartTextMarkerForTextMarker): Ditto.
(WTR::AccessibilityUIElement::nextWordEndTextMarkerForTextMarker): Ditto.
(WTR::AccessibilityUIElement::paragraphTextMarkerRangeForTextMarker): Ditto.
(WTR::AccessibilityUIElement::previousParagraphStartTextMarkerForTextMarker): Ditto.
(WTR::AccessibilityUIElement::nextParagraphEndTextMarkerForTextMarker): Ditto.
(WTR::AccessibilityUIElement::sentenceTextMarkerRangeForTextMarker): Ditto.
(WTR::AccessibilityUIElement::previousSentenceStartTextMarkerForTextMarker): Ditto.
(WTR::AccessibilityUIElement::nextSentenceEndTextMarkerForTextMarker): Ditto.

  • WebKitTestRunner/PlatformMac.cmake: Added WebKitTestRunnerWindow.h and .mm files.
  • WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj: Ditto.
  • WebKitTestRunner/mac/EventSenderProxy.mm: Add include of WebKitTestRunnerWindow.h

so we can use the type and know it inherits from NSWindow.

  • WebKitTestRunner/mac/PlatformWebViewMac.mm: Add include of WebKitTestRunnerWindow.h

so we can use the type and know it inherits from NSWindow. Moved WebKitTestRunnerWindow
class into a separate file.
(WTR::PlatformWebView::keyWindow): Call +[WebKitTestRunnerWindow _WTR_keyWindow]
instead of have a second copy of the implementation.

  • WebKitTestRunner/mac/WebKitTestRunnerEvent.mm: Add include of WebKitTestRunnerWindow.h

so we can use the type and know it inherits from NSWindow. Also removed "using namespace".
(+[WebKitTestRunnerEvent mouseLocation]): Updated for above.

  • WebKitTestRunner/mac/WebKitTestRunnerPasteboard.mm:

(+[LocalPasteboard alloc]): Use class_createInstance instead of NSAllocateObject.
(-[LocalPasteboard availableTypeFromArray:]): Use modern for loop.
(-[LocalPasteboard setData:forType:]): Reordered method to be a tiny bit more efficient.
(-[LocalPasteboard setPropertyList:forType:]): Use NSPropertyListSerialization
instead of CFPropertyList.
(-[LocalPasteboard setString:forType:]): Use NSString method instead of
CFStringCreateExternalRepresentation.

  • WebKitTestRunner/mac/WebKitTestRunnerWindow.h: Moved declaration of

WebKitTestRunnerWindow here so it can be included by files that need to know
what the type is and that it inherits from NSWindow.

  • WebKitTestRunner/mac/WebKitTestRunnerWindow.mm: Added. Moved implementation here.

(+[WebKitTestRunnerWindow _WTR_keyWindow]): Use modern for loop instead of the old,
messier implementation.

6:41 PM Changeset in webkit [234684] by Chris Dumez
  • 3 edits
    3 adds in trunk

navigator.sendBeacon does not work in pagehide callbacks
https://bugs.webkit.org/show_bug.cgi?id=188329

Reviewed by Alex Christensen.

Source/WebCore:

Add support for sending beacons from pagehide event handlers. We normally do not allow loads because we're
about to enter PageCache. However, in case of Beacon, this is fine since it uses PingLoad and does not
WebCore to do the load.

Test: http/wpt/beacon/sendBeacon-in-pagehide.html

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::load):

  • Allow Beacon loads to go through even if the document's pageCacheState is AboutToEnterPageCache (i.e.

we're firing the 'pagehide' event)

  • Allow Becon loads to go though even if the FrameLoader's state is provisional (i.e. a load is pending)

LayoutTests:

Add layout test coverage.

  • http/wpt/beacon/sendBeacon-in-pagehide-expected.txt: Added.
  • http/wpt/beacon/sendBeacon-in-pagehide.html: Added.
  • http/wpt/beacon/support/sendBeacon-onpagehide-window.html: Added.
5:55 PM Changeset in webkit [234683] by commit-queue@webkit.org
  • 29 edits
    8 adds in trunk

Allow href attribute without xlink on SVG elements
https://bugs.webkit.org/show_bug.cgi?id=153854

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2018-08-07
Reviewed by Dean Jackson.

Source/WebCore:

SVG 2 has moved the href attribute from xlink namespace to svg namespace.
Instead of using xlink:href, svg:href should be used or simply use href
if the svg namespace is defined.

See https://www.w3.org/TR/SVG2/linking.html#XLinkRefAttrs.

For backward compatibility, xlink:href will be treated as an alias to href
till it is acceptable to completely remove the support for the deprecated
xlink:href.

Tests: svg/custom/href-svg-namespace-animate.svg

svg/custom/href-svg-namespace-dynamic.svg
svg/custom/href-svg-namespace-elements.html
svg/custom/href-svg-namespace-expected.svg
svg/custom/href-svg-namespace-static.svg

  • dom/Element.cpp:

(WebCore::Element::absoluteLinkURL const):

  • dom/Element.h:

(WebCore::Element::getAttribute const): This new template function with
template pack parameter QualifiedNames is added to return the first none
empty attribute value given a set of attributes' names. This should be
useful for deprecated attributes. When we decide to remove the support
for the deprecated attribute, all we need is to remove it as a parameter
to getAttribute(). In this case, the none template function will be called.

  • dom/VisitedLinkState.cpp:

(WebCore::linkAttribute):

  • html/parser/XSSAuditor.cpp:

(WebCore::XSSAuditor::filterScriptToken):

  • svg/SVGAElement.cpp:

(WebCore::SVGAElement::isURLAttribute const):

  • svg/SVGAltGlyphElement.cpp:

(WebCore::SVGAltGlyphElement::hasValidGlyphElements const):

  • svg/SVGCursorElement.cpp:
  • svg/SVGDocumentExtensions.cpp:

(WebCore::SVGDocumentExtensions::rebuildElements):
(WebCore::SVGDocumentExtensions::rebuildAllElementReferencesForTarget):

  • svg/SVGElement.cpp:

(WebCore::SVGElement::animatableAttributeForName):

  • svg/SVGFEImageElement.cpp:
  • svg/SVGFilterElement.cpp:
  • svg/SVGFontFaceUriElement.cpp:

(WebCore::SVGFontFaceUriElement::srcValue const):
(WebCore::SVGFontFaceUriElement::parseAttribute):
(WebCore::SVGFontFaceUriElement::loadFont):

  • svg/SVGForeignObjectElement.cpp:
  • svg/SVGGlyphRefElement.cpp:

(WebCore::SVGGlyphRefElement::hasValidGlyphElement const):

  • svg/SVGGradientElement.cpp:
  • svg/SVGImageElement.cpp:

(WebCore::SVGImageElement::imageSourceURL const):

  • svg/SVGMPathElement.cpp:
  • svg/SVGPatternElement.cpp:
  • svg/SVGScriptElement.h:
  • svg/SVGTRefElement.cpp:
  • svg/SVGTextPathElement.cpp:
  • svg/SVGURIReference.cpp:

(WebCore::SVGURIReference::registerAttributes):
(WebCore::SVGURIReference::parseAttribute):

  • svg/SVGUseElement.cpp:

(WebCore::SVGUseElement::expandUseElementsInShadowTree const):

  • svg/animation/SVGSMILElement.cpp:

(WebCore::SVGSMILElement::isSupportedAttribute):
(WebCore::SVGSMILElement::svgAttributeChanged):

  • svg/svgattrs.in:

LayoutTests:

  • fast/selectors/any-link-basics-2-expected.txt:
  • fast/selectors/any-link-basics-2.html:

Re-baseline this test because it was assuming the bare href should not
work for the SVG <a> element.

  • svg/custom/href-svg-namespace-animate-expected.svg: Added.
  • svg/custom/href-svg-namespace-animate.svg: Added.
  • svg/custom/href-svg-namespace-dynamic-expected.svg: Added.
  • svg/custom/href-svg-namespace-dynamic.svg: Added.
  • svg/custom/href-svg-namespace-elements-expected.txt: Added.
  • svg/custom/href-svg-namespace-elements.html: Added.
  • svg/custom/href-svg-namespace-static-expected.svg: Added.
  • svg/custom/href-svg-namespace.static-svg: Added.
5:34 PM Changeset in webkit [234682] by Kocsen Chung
  • 1 copy in tags/Safari-606.1.36.2.1

Tag Safari-606.1.36.2.1.

5:33 PM Changeset in webkit [234681] by Kocsen Chung
  • 1 copy in tags/Safari-606.1.36.1.2

Tag Safari-606.1.36.1.2.

4:54 PM Changeset in webkit [234680] by rniwa@webkit.org
  • 6 edits
    6 adds in trunk

document.open and document.write must throw while the HTML parser is synchronously constructing a custom element
https://bugs.webkit.org/show_bug.cgi?id=187319
<rdar://problem/42843012>

Reviewed by Frédéric Wang.

Source/WebCore:

Make document.open, document.write, document.writeln, and document.close throw InvalidStateError during
a synchronous custom element construction as specified:
https://html.spec.whatwg.org/multipage/parsing.html#create-an-element-for-the-token
https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#throw-on-dynamic-markup-insertion-counter

Tests: fast/custom-elements/throw-on-dynamic-markup-insertion-counter-construct.html

fast/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions.html

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

(WebCore::Document::openForBindings): Throw InvalidStateError when m_throwOnDynamicMarkupInsertionCount is non-zero.
(WebCore::Document::closeForBindings): Ditto.
(WebCore::Document::write): Ditto.
(WebCore::Document::writeln): Ditto.

  • dom/Document.h: Re-ordered the related instance variables in the order they appear in the spec, and updated spec URLs.
  • dom/ThrowOnDynamicMarkupInsertionCountIncrementer.h: Added.

(WebCore::ThrowOnDynamicMarkupInsertionCountIncrementer): Added.
(WebCore::ThrowOnDynamicMarkupInsertionCountIncrementer::ThrowOnDynamicMarkupInsertionCountIncrementer):
(WebCore::ThrowOnDynamicMarkupInsertionCountIncrementer::~ThrowOnDynamicMarkupInsertionCountIncrementer):

  • html/parser/HTMLDocumentParser.cpp:

(WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder): Instantiate ThrowOnDynamicMarkupInsertionCountIncrementer.

LayoutTests:

Added W3C style testharness.js tests. The WPT test added by https://github.com/web-platform-tests/wpt/pull/12037
doesn't test nearly as many edge cases.

  • fast/custom-elements/resources/navigation-destination.html: Added.
  • fast/custom-elements/throw-on-dynamic-markup-insertion-counter-construct-expected.txt: Added.
  • fast/custom-elements/throw-on-dynamic-markup-insertion-counter-construct.html: Added.
  • fast/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions-expected.txt: Added.
  • fast/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions.html: Added.
4:46 PM Changeset in webkit [234679] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

Use 1-byte enum class for Document::StandaloneStatus
https://bugs.webkit.org/show_bug.cgi?id=188352

Patch by Alex Christensen <achristensen@webkit.org> on 2018-08-07
Reviewed by Chris Dumez.

  • dom/Document.cpp:

(WebCore::Document::setXMLStandalone):

  • dom/Document.h:

(WebCore::Document::xmlStandalone const):

  • editing/MarkupAccumulator.cpp:

(WebCore::MarkupAccumulator::appendXMLDeclaration):

4:26 PM Changeset in webkit [234678] by commit-queue@webkit.org
  • 6 edits
    1 add in trunk

fetch() with subresource integrity crashes on zero length body
https://bugs.webkit.org/show_bug.cgi?id=184325

Patch by Rob Buis <rbuis@igalia.com> on 2018-08-07
Reviewed by Alex Christensen.

Source/WebCore:

Check that resourceBuffer() is non null before dereferencing.

Tests: http/tests/subresource-integrity/sri-fetch.js

http/tests/subresource-integrity/sri-fetch-worker.js

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::didFinishLoading):

LayoutTests:

Add a subtest for zero length resources.

  • http/tests/subresource-integrity/resources/empty-resource.txt: Added.
  • http/tests/subresource-integrity/sri-fetch-expected.txt:
  • http/tests/subresource-integrity/sri-fetch-worker-expected.txt:
  • http/tests/subresource-integrity/sri-fetch.js:
4:21 PM Changeset in webkit [234677] by yusukesuzuki@slowstart.org
  • 7 edits
    1 add in trunk/Source

Shrink size of PropertyCondition by packing UniquedStringImpl* and Kind
https://bugs.webkit.org/show_bug.cgi?id=188328

Reviewed by Saam Barati.

Source/JavaScriptCore:

Shrinking the size of PropertyCondition can improve memory consumption by a lot.
For example, cnn.com can show 7000 persistent StructureStubClearingWatchpoint
and 6000 LLIntPrototypeLoadAdaptiveStructureWatchpoint which have PropertyCondition
as a member field.

This patch shrinks the size of PropertyCondition by packing UniquedStringImpl* and
PropertyCondition::Kind into uint64_t data in 64bit architecture. Since our address
are within 48bit, we can put PropertyCondition::Kind in this unused bits.
To make it easy, we add WTF::CompactPointerTuple<PointerType, Type>, which automatically
folds a pointer and 1byte type into 64bit data.

This change shrinks PropertyCondition from 24bytes to 16bytes.

  • bytecode/PropertyCondition.cpp:

(JSC::PropertyCondition::dumpInContext const):
(JSC::PropertyCondition::isStillValidAssumingImpurePropertyWatchpoint const):
(JSC::PropertyCondition::validityRequiresImpurePropertyWatchpoint const):
(JSC::PropertyCondition::isStillValid const):
(JSC::PropertyCondition::isWatchableWhenValid const):

  • bytecode/PropertyCondition.h:

(JSC::PropertyCondition::PropertyCondition):
(JSC::PropertyCondition::presenceWithoutBarrier):
(JSC::PropertyCondition::absenceWithoutBarrier):
(JSC::PropertyCondition::absenceOfSetEffectWithoutBarrier):
(JSC::PropertyCondition::equivalenceWithoutBarrier):
(JSC::PropertyCondition::hasPrototypeWithoutBarrier):
(JSC::PropertyCondition::operator bool const):
(JSC::PropertyCondition::kind const):
(JSC::PropertyCondition::uid const):
(JSC::PropertyCondition::hasOffset const):
(JSC::PropertyCondition::hasAttributes const):
(JSC::PropertyCondition::hasPrototype const):
(JSC::PropertyCondition::hasRequiredValue const):
(JSC::PropertyCondition::hash const):
(JSC::PropertyCondition::operator== const):
(JSC::PropertyCondition::isHashTableDeletedValue const):
(JSC::PropertyCondition::watchingRequiresReplacementWatchpoint const):

Source/WTF:

This patch adds CompactPointerTuple, which can pack a pointer and 8bit value into 8bytes.
In 32bit architecture, it just has two fields for a pointer and 8bit value. In 64bit architecture,
we use upper 5bits (zeros because of the effective width of virtual address) and lower 3bits (zeros
because of the alignment ensured by static_assert) to pack 8bit value into the pointer data. Since
even the 5-level page tables use 57bit effective address, this strategy works well.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/CompactPointerTuple.h: Added.

(WTF::CompactPointerTuple::encodeType):
(WTF::CompactPointerTuple::decodeType):
(WTF::CompactPointerTuple::CompactPointerTuple):
(WTF::CompactPointerTuple::pointer const):
(WTF::CompactPointerTuple::setPointer):
(WTF::CompactPointerTuple::type const):
(WTF::CompactPointerTuple::setType):

  • wtf/Platform.h:
4:18 PM Changeset in webkit [234676] by achristensen@apple.com
  • 2 edits
    1 add in trunk/Tools

Add a test for using SafeBrowsing
https://bugs.webkit.org/show_bug.cgi?id=188290

Reviewed by Chris Dumez.

Swizzle out SSBLookupContext to write tests for how WebKit responds when it responds in different ways.
We don't do anything with its results in WebKit yet, but when we do I'll add the expected behavior to this test.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/SafeBrowsing.mm: Added.

(-[SafeBrowsingDelegate webView:didFinishNavigation:]):
(TestWebKitAPI::TEST):

4:13 PM Changeset in webkit [234675] by Kocsen Chung
  • 1 copy in tags/Safari-606.1.36.0.1

Tag Safari-606.1.36.0.1.

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

Prevent querying for renderer info for disconnected or uninitialized displays
https://bugs.webkit.org/show_bug.cgi?id=188387
<rdar://problem/42588769>

Patch by Justin Fan <Justin Fan> on 2018-08-07
Reviewed by Simon Fraser.

Calling CGL functions with a NULL displayMask crashes the process.

No tests; requires multiple displays.

  • platform/mac/PlatformScreenMac.mm:

(WebCore::collectScreenProperties):

2:29 PM Changeset in webkit [234673] by Kocsen Chung
  • 7 edits in branches/safari-606.1.36.1-branch/Source

Cherry-pick r234652. rdar://problem/43009927

[macOS] Scrollbars are not visible when using 3rd party mouse
https://bugs.webkit.org/show_bug.cgi?id=188372

Reviewed by Simon Fraser.

Source/WebCore/PAL:

Added declaration of NSScrollerImpPair class method. This method updates all NSScrollerImpPairs
with a new recommended scroller style.

  • pal/spi/mac/NSScrollerImpSPI.h:

Source/WebKit:

The scrollbars are not visible because they are not updated with the recommended scroller style
when a 3rd party mouse is used. They still have the overlay style, but the system is
recommending the legacy style in this case. The UI process is currently notifying the WebProcess
about changes in the scroller style, but the current style is not set in the WebProcess on
startup. This patch sets the initial scroller style in the WebProcess by passing it as part of
the WebProcess creation parameters. Also, to make sure hot-plugging of a 3rd party mouse is
is visually changing the scroller style of the current page, a class method in NSScrollerImpPair
is called to update all NSScrollerImpPairs with the new recommended style. This method was
previously called by AppKit, but after blocking WindowServer access, AppKit is no longer calling
this method. This has been manually tested by using a 3rd party mouse.

  • Shared/WebProcessCreationParameters.cpp: (WebKit::WebProcessCreationParameters::encode const): (WebKit::WebProcessCreationParameters::decode):
  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::platformInitializeWebProcess):
  • WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::platformInitializeWebProcess): (WebKit::WebProcess::scrollerStylePreferenceChanged):

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

2:29 PM Changeset in webkit [234672] by Kocsen Chung
  • 7 edits in branches/safari-606.1.36.1-branch/Source/WebKit

Cherry-pick r234626. rdar://problem/43009894

Regression(NetworkLoadChecker): CORS preflights are no longer able to deal with client certificate authentication
https://bugs.webkit.org/show_bug.cgi?id=188355
<rdar://problem/42546319>

Reviewed by Alex Christensen.

Before we started using the NetworkLoadChecker to do CORS-preflighting in the Network process, challenges would
use the NetworkLoad::completeAuthenticationChallenge() code path with isAllowedToAskUserForCredentials to set
to false. This would call:

  1. completionHandler(AuthenticationChallengeDisposition::UseCredential, { }); for TLS handshakes (server trust evaluation & client certification authentication)
  2. NetworkProcess::singleton().authenticationManager().didReceiveAuthenticationChallenge() otherwise

However, NetworkCORSPreflightChecker::didReceiveChallenge() was behaving differently and calling:

  1. completionHandler(AuthenticationChallengeDisposition::RejectProtectionSpace, { }); for server trust evaluations
  2. completionHandler(AuthenticationChallengeDisposition::Cancel, { }); otherwise

Restore previous behavior by aligning NetworkCORSPreflightChecker::didReceiveChallenge() with
NetworkLoad::completeAuthenticationChallenge() when isAllowedToAskUserForCredentials is set to false. This means
we end up asking the AuthenticationManager for client certificate authentication instead or cancelling the
preflight.

This fixes CORS-preflighting on some internal sites.

  • NetworkProcess/NetworkCORSPreflightChecker.cpp: (WebKit::NetworkCORSPreflightChecker::didReceiveChallenge):
  • NetworkProcess/NetworkCORSPreflightChecker.h:
  • NetworkProcess/NetworkLoadChecker.cpp: (WebKit::NetworkLoadChecker::NetworkLoadChecker): (WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight):
  • NetworkProcess/NetworkLoadChecker.h:
  • NetworkProcess/NetworkResourceLoader.cpp:
  • NetworkProcess/PingLoad.cpp: (WebKit::PingLoad::PingLoad):

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

2:29 PM Changeset in webkit [234671] by Kocsen Chung
  • 2 edits in branches/safari-606.1.36.1-branch/Source/WebKit

Cherry-pick r234611. rdar://problem/43009901

Fix IPC::Connection leak in StorageManager
https://bugs.webkit.org/show_bug.cgi?id=188321
<rdar://problem/42748485>

Reviewed by Alex Christensen.

When a StorageMap is destroyed on WebContent process side, StorageManager::destroyStorageMap()
gets called via IPC with a (IPC::Connection, StorageMapID) pair. Normally, it removes this
pair from m_storageAreasByConnection. However, if this is a *transient* StorageMap (sessionStorage),
then we keep the pair in the map and we merely remove the StorageMapID as a listener from the
StorageArea. We do this so that:

  1. The StorageArea stays alive so that it can be reused later on for the same security origin, on the same IPC::Connection (logic for this is in StorageManager::createTransientLocalStorageMap()
  2. Removing the StorageMapID as a listener from the StorageArea is important because StorageArea::m_eventListeners holds a strong reference to the IPC::Connection in a std::pair with the StorageMapID (HashSet<std::pair<RefPtr<IPC::Connection>, uint64_t>> m_eventListeners).

As mentioned in 1 above, in StorageManager::createTransientLocalStorageMap(), there is logic to
check if there is already an existing StorageArea for the given IPC::Connection that is transient
and is for the same security origin. In this case, we could avoid constructing a new StorageArea
and we would:

  1. Add a new entry to m_storageAreasByConnection with the key (connection, newStorageMapID), using same same StorageArea as value.
  2. Remove the previous (connection, oldStorageMapID) key from m_storageAreasByConnection.

Step 2 here is wrong and is updated in this patch. It is only safe to remove the previous
(connection, oldStorageMapID) if this oldStorageMapID no longer exists (i.e. destroyStorageMap()
was already called for it). This patch thus adds a check before removing (connection, oldStorageMapID)
from the HashMap to make sure that the oldStorageMapID is no longer a listener of the StorageArea).

This would cause leaks in the following case:

  1. We construct a StorageArea for (connection1, storageMapId1)
  2. We ask for a StorageArea for (connection1, storageMapId2) and decide to reuse the existing StorageArea since it has the same SecurityOrigin.
  3. As a result of step2, we would remove (connection1, storageMapId1) from m_storageAreasByConnection and add (connection1, storageMapId2), even though there is still a StorageMap with storageMapId1 on WebContent process side.
  4. Later on, we would try to call destroyStorageMap(connection1, storageMap1), it would fail to find it in m_storageAreasByConnection and return early. It would therefore fail to remove storageMapId1 as a listener of the StorageArea which still exists. -> This would leak the IPC::Connection that there would be a std::pair<RefPtr<IPC::Connection>, StorageMapID> with value (connection1, storageMap1) which would get leaked and it would ref the IPC::Connection.

This code should really be refactored to be less leak prone but I have kept the patch minimal for now
to facilitate cherry-picking.

Note that this would reproduce very easily on sina.com.cn, when clicking bold links at the top, which
opens new tabs to different pages in the same WebContent process. When closing all Safari windows, the
IPC::Connection for this WebContent process would stay alive.

  • UIProcess/WebStorage/StorageManager.cpp: (WebKit::StorageManager::StorageArea::hasListener const): (WebKit::StorageManager::createTransientLocalStorageMap):

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

2:28 PM Changeset in webkit [234670] by commit-queue@webkit.org
  • 1 edit
    5 deletes in trunk/LayoutTests

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

Didn't commit the actual change (Requested by rniwa on
#webkit).

Reverted changeset:

"document.open and document.write must throw while the HTML
parser is synchronously constructing a custom element"
https://bugs.webkit.org/show_bug.cgi?id=187319
https://trac.webkit.org/changeset/234669

2:13 PM Changeset in webkit [234669] by rniwa@webkit.org
  • 2 edits
    5 adds in trunk

document.open and document.write must throw while the HTML parser is synchronously constructing a custom element
https://bugs.webkit.org/show_bug.cgi?id=187319
<rdar://problem/42843012>

Reviewed by Frédéric Wang.

Source/WebCore:

Make document.open, document.write, document.writeln, and document.close throw InvalidStateError during
a synchronous custom element construction as specified:
https://html.spec.whatwg.org/multipage/parsing.html#create-an-element-for-the-token
https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#throw-on-dynamic-markup-insertion-counter

Tests: fast/custom-elements/throw-on-dynamic-markup-insertion-counter-construct.html

fast/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions.html

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

(WebCore::Document::openForBindings): Throw InvalidStateError when m_throwOnDynamicMarkupInsertionCount is non-zero.
(WebCore::Document::closeForBindings): Ditto.
(WebCore::Document::write): Ditto.
(WebCore::Document::writeln): Ditto.

  • dom/Document.h: Re-ordered the related instance variables in the order they appear in the spec, and updated spec URLs.
  • dom/ThrowOnDynamicMarkupInsertionCountIncrementer.h: Added.

(WebCore::ThrowOnDynamicMarkupInsertionCountIncrementer): Added.
(WebCore::ThrowOnDynamicMarkupInsertionCountIncrementer::ThrowOnDynamicMarkupInsertionCountIncrementer):
(WebCore::ThrowOnDynamicMarkupInsertionCountIncrementer::~ThrowOnDynamicMarkupInsertionCountIncrementer):

  • html/parser/HTMLDocumentParser.cpp:

(WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder): Instantiate ThrowOnDynamicMarkupInsertionCountIncrementer.

LayoutTests:

Added W3C style testharness.js tests. The WPT test added by https://github.com/web-platform-tests/wpt/pull/12037
doesn't test nearly as many edge cases.

  • fast/custom-elements/resources/navigation-destination.html: Added.
  • fast/custom-elements/throw-on-dynamic-markup-insertion-counter-construct-expected.txt: Added.
  • fast/custom-elements/throw-on-dynamic-markup-insertion-counter-construct.html: Added.
  • fast/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions-expected.txt: Added.
  • fast/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions.html: Added.
2:04 PM Changeset in webkit [234668] by commit-queue@webkit.org
  • 16 edits in trunk/Source/WebKit

Add SPI for launching WebContent process with pre-linked injected bundle
https://bugs.webkit.org/show_bug.cgi?id=188367

Patch by Ben Richards <benton_richards@apple.com> on 2018-08-07
Reviewed by Ryosuke Niwa.

Added SPI to allow applications to set a "customWebContentServiceBundleIdentifier" which will be launched instead of the default WebContent XPC service.
The "customWebContentServiceBundleIdentifier" should be the bundle identifier for an XPC service that calls [WKProcessPool _webContentProcessXPCMain].
The new XPC service should be hard linked to the application's injected bundle in order to receive the intended performance benefit.

  • Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h:
  • Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.mm:

(WebKit::XPCServiceMain):
(main):

  • UIProcess/API/APIProcessPoolConfiguration.h:
  • UIProcess/API/C/WKContext.cpp:

(WKContextSetCustomWebContentServiceBundleIdentifier):

  • UIProcess/API/C/WKContext.h:
  • UIProcess/API/Cocoa/WKProcessPool.mm:

(+[WKProcessPool _webContentProcessXPCMain]):

  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:

(-[_WKProcessPoolConfiguration customWebContentServiceBundleIdentifier]):
(-[_WKProcessPoolConfiguration setCustomWebContentServiceBundleIdentifier:]):

  • UIProcess/Launcher/ProcessLauncher.h:
  • UIProcess/Launcher/mac/ProcessLauncherMac.mm:

(WebKit::ProcessLauncher::launchProcess):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::setCustomWebContentServiceBundleIdentifier):

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

(WebKit::WebProcessProxy::getLaunchOptions):

  • WebKit.xcodeproj/project.pbxproj:
12:34 PM Changeset in webkit [234667] by Kocsen Chung
  • 5 edits in branches/safari-606.1.36.0-branch/Source/JavaScriptCore

Cherry-pick r234649. rdar://problem/43009914

Use a more specific PtrTag for PlatformRegisters PC and LR.
https://bugs.webkit.org/show_bug.cgi?id=188366
<rdar://problem/42984123>

Reviewed by Keith Miller.

Also fixed a bug in linkRegister(), which was previously returning the PC instead
of LR. It now returns LR.

  • runtime/JSCPtrTag.h:
  • runtime/MachineContext.h: (JSC::MachineContext::instructionPointer): (JSC::MachineContext::linkRegister):
  • runtime/VMTraps.cpp: (JSC::SignalContext::SignalContext):
  • tools/SigillCrashAnalyzer.cpp: (JSC::SignalContext::SignalContext):

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

12:28 PM Changeset in webkit [234666] by Kocsen Chung
  • 5 edits in branches/safari-606.1.36.2-branch/Source/JavaScriptCore

Cherry-pick r234649. rdar://problem/43014010

Use a more specific PtrTag for PlatformRegisters PC and LR.
https://bugs.webkit.org/show_bug.cgi?id=188366
<rdar://problem/42984123>

Reviewed by Keith Miller.

Also fixed a bug in linkRegister(), which was previously returning the PC instead
of LR. It now returns LR.

  • runtime/JSCPtrTag.h:
  • runtime/MachineContext.h: (JSC::MachineContext::instructionPointer): (JSC::MachineContext::linkRegister):
  • runtime/VMTraps.cpp: (JSC::SignalContext::SignalContext):
  • tools/SigillCrashAnalyzer.cpp: (JSC::SignalContext::SignalContext):

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

12:23 PM Changeset in webkit [234665] by Kocsen Chung
  • 6 edits in branches/safari-606.1.36.2-branch/Source/WebKit

Cherry-pick r234651. rdar://problem/43009909

[Wi-Fi Assertions] suspendWiFiAssertions() should be able to delay sending ProcessReadyToSuspend
https://bugs.webkit.org/show_bug.cgi?id=188373
<rdar://problem/42857398>

Reviewed by Tim Horton.

  • NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::actualPrepareToSuspend):
  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/cocoa/NetworkProcessCocoa.mm: (WebKit::NetworkProcess::platformPrepareToSuspend): (WebKit::NetworkProcess::platformProcessDidTransitionToBackground):
  • NetworkProcess/curl/NetworkProcessCurl.cpp: (WebKit::NetworkProcess::platformPrepareToSuspend):
  • NetworkProcess/soup/NetworkProcessSoup.cpp: (WebKit::NetworkProcess::platformPrepareToSuspend):

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

12:09 PM Changeset in webkit [234664] by achristensen@apple.com
  • 5 edits in trunk/Source/WebKit

StorageManager should stop ref'ing IPC::Connections as this is leak-prone
https://bugs.webkit.org/show_bug.cgi?id=188380

Patch by Chris Dumez <Chris Dumez> on 2018-08-07
Reviewed by Alex Christensen.

StorageManager should stop ref'ing IPC::Connections as this is leak-prone. Instead, assign a unique identifier
to each IPC::Connection and store this identifier intead of a RefPtr<IPC::Connection>. When the StorageManager
needs an actual IPC::Connection, it can look it up from the identifier.

  • Platform/IPC/Connection.cpp:

(IPC::Connection::Connection):
(IPC::Connection::~Connection):
(IPC::Connection::connection):

  • Platform/IPC/Connection.h:

(IPC::Connection::uniqueID const):

  • UIProcess/WebStorage/StorageManager.cpp:

(WebKit::StorageManager::StorageArea::addListener):
(WebKit::StorageManager::StorageArea::removeListener):
(WebKit::StorageManager::StorageArea::hasListener const):
(WebKit::StorageManager::StorageArea::setItem):
(WebKit::StorageManager::StorageArea::removeItem):
(WebKit::StorageManager::StorageArea::clear):
(WebKit::StorageManager::StorageArea::dispatchEvents const):
(WebKit::StorageManager::SessionStorageNamespace::allowedConnection const):
(WebKit::StorageManager::SessionStorageNamespace::setAllowedConnection):
(WebKit::StorageManager::setAllowedSessionStorageNamespaceConnection):
(WebKit::StorageManager::processDidCloseConnection):
(WebKit::StorageManager::createLocalStorageMap):
(WebKit::StorageManager::createTransientLocalStorageMap):
(WebKit::StorageManager::createSessionStorageMap):
(WebKit::StorageManager::destroyStorageMap):
(WebKit::StorageManager::setItem):
(WebKit::StorageManager::removeItem):
(WebKit::StorageManager::clear):
(WebKit::StorageManager::applicationWillTerminate):
(WebKit::StorageManager::findStorageArea const):

  • UIProcess/WebStorage/StorageManager.h:
11:46 AM Changeset in webkit [234663] by Lucas Forschler
  • 7 edits
    1 add in trunk/Tools

If there's a Radar in the ChangeLog, webkit-patch upload/create-bug should put the radar in the bug and set InRadar
https://bugs.webkit.org/show_bug.cgi?id=188235

Reviewed by Daniel Bates, Kocsen Chung, and Aakash Jain.

  • Scripts/webkitpy/common/checkout/changelog.py:

(ChangeLogEntry): Teach the ChangeLog tools how to parse a radar_id

  • Scripts/webkitpy/common/checkout/changelog_unittest.py: Test out the new _parse_radar_id functionality
  • Scripts/webkitpy/common/net/bugzilla/bugzilla.py:

(Bugzilla.add_keyword_to_bug): Add logic to add keywords using the changeform

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

(Upload): Teach the upload step how to add radar information when creating a new bug.

  • Scripts/webkitpy/tool/steps/init.py:
  • Scripts/webkitpy/tool/steps/addradar.py: Added.

(AddRadar):
(AddRadar.run): Contains the logic to add the radar information to bugzilla.

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

(CreateBug.run): set a "created_new_bug" state when creating a new bugzilla bug.

11:33 AM Changeset in webkit [234662] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebKit

NotReadableError when calling getUserMedia
https://bugs.webkit.org/show_bug.cgi?id=188309
<rdar://problem/42916838>

Reviewed by Brent Fulgham.

  • UIProcess/UserMediaProcessManager.cpp:

(WebKit::UserMediaProcessManager::willCreateMediaStream): Deal with audio and video sandbox
extensions being issued at different times. Use new ProcessState methods.
(WebKit::UserMediaProcessManager::endedCaptureSession): Use new ProcessState methods.

11:32 AM Changeset in webkit [234661] by Wenson Hsieh
  • 3 edits
    4 adds in trunk

REGRESSION (r233778): Text selection sometimes cannot be extended in iframes
https://bugs.webkit.org/show_bug.cgi?id=188374
<rdar://problem/42928657>

Reviewed by Simon Fraser.

Source/WebKit:

rangeForPoint contains logic for converting a selection handle location in root view coordinates to an updated
selection. In doing so, we first convert the selection handle location to content coordinates; however, the call
site to EventHandler::hitTestResultAtPoint still hit-tests using the location in root view coordinates rather
than content coordinates, which means that when the focused frame is a subframe, hit-testing will fail to find
nodes within the subframe under the selection handle. This manifests in behaviors such as snapping to a single
character when selecting text in subframes.

To fix this, we just need to pass in the point in the frame's content coordinates when hit-testing.

Tests: editing/selection/ios/selection-handles-in-iframe.html

editing/selection/ios/selection-handles-in-readonly-input.html

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::rangeForPointInRootViewCoordinates):

Make a couple of other minor adjustments:

  1. Take a Frame& instead of a Frame*, since Frame& is assumed to be non-null here.
  2. Rename rangeForPoint to rangeForPointInRootViewCoordinates, as well as the point argument to

pointInRootViewCoordinates.

(WebKit::WebPage::updateSelectionWithTouches):
(WebKit::rangeForPoint): Deleted.

LayoutTests:

Add 2 new layout tests to cover the original bug that r233778 fixed, as well as the regression in this bug.

  • editing/selection/ios/selection-handles-in-iframe-expected.txt: Added.
  • editing/selection/ios/selection-handles-in-iframe.html: Added.

Add a test to verify that the user can select text in an iframe by dragging selection handles.

  • editing/selection/ios/selection-handles-in-readonly-input-expected.txt: Added.
  • editing/selection/ios/selection-handles-in-readonly-input.html: Added.

Add a test to verify that dragging a selection handle outside of a readonly input does not cause the selection
to jump outside of the input and clear out the selection in the input.

11:12 AM Changeset in webkit [234660] by Kocsen Chung
  • 7 edits in branches/safari-606.1.36.1-branch/Source

Versioning.

11:07 AM Changeset in webkit [234659] by Ryan Haddad
  • 6 edits in trunk/Source

Unreviewed, suppress warnings to fix the build.

Source/WebCore:

  • crypto/CommonCryptoUtilities.cpp:

(WebCore::getCommonCryptoDigestAlgorithm):

Source/WebCore/PAL:

  • pal/crypto/commoncrypto/CryptoDigestCommonCrypto.cpp:

(PAL::CryptoDigest::create):
(PAL::CryptoDigest::addBytes):
(PAL::CryptoDigest::computeHash):

Source/WTF:

  • wtf/SHA1.cpp:

(WTF::SHA1::SHA1):
(WTF::SHA1::addBytes):
(WTF::SHA1::computeHash):

10:36 AM Changeset in webkit [234658] by achristensen@apple.com
  • 4 edits
    4 adds in trunk

Fix things after r234640
https://bugs.webkit.org/show_bug.cgi?id=188133

Source/WebKit:

  • UIProcess/WebFramePolicyListenerProxy.cpp:

(WebKit::WebFramePolicyListenerProxy::use):
(WebKit::WebFramePolicyListenerProxy::download):
(WebKit::WebFramePolicyListenerProxy::ignore):
Fix assertions as I had in r234552. Also fix a possible race condition with fragment navigations by only keeping the first "use" response.

  • config.h:

Fix IOSMAC build.

LayoutTests:

  • platform/mac-sierra-wk2/http/tests/navigation/keyboard-events-during-provisional-navigation-expected.txt: Added.

Added test expectation for Sierra, which has no safe browsing framework.

10:21 AM Changeset in webkit [234657] by Wenson Hsieh
  • 2 edits in trunk/Tools

Post-review feedback after r234614.
https://bugs.webkit.org/show_bug.cgi?id=188322
<rdar://problem/42455270>

Reviewed by Sam Weinig.

Use std::round instead of roundl — there's no reason to go from double to long double precision when rounding.

  • TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:

(rounded):

10:16 AM Changeset in webkit [234656] by Michael Catanzaro
  • 2 edits in releases/WebKitGTK/webkit-2.20/Source/WebKit

[GTK] [2.20.4] Occasional rendering artifacts
https://bugs.webkit.org/show_bug.cgi?id=188377

Unreviewed manual rollout of r234420, which is causing issues on this branch.

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:

(WebKit::ThreadedCompositor::handleDisplayRefreshMonitorUpdate):

10:15 AM Changeset in webkit [234655] by achristensen@apple.com
  • 1 edit
    14 deletes in trunk/Source/WebCore

Removed unused *AllInOne.cpp
https://bugs.webkit.org/show_bug.cgi?id=188369

Reviewed by Yusuke Suzuki.

  • accessibility/AccessibilityAllInOne.cpp: Removed.
  • bindings/js/JSBindingsAllInOne.cpp: Removed.
  • css/CSSAllInOne.cpp: Removed.
  • dom/DOMAllInOne.cpp: Removed.
  • editing/EditingAllInOne.cpp: Removed.
  • html/HTMLElementsAllInOne.cpp: Removed.
  • inspector/InspectorAllInOne.cpp: Removed.
  • loader/appcache/ApplicationCacheAllInOne.cpp: Removed.
  • mathml/MathMLAllInOne.cpp: Removed.
  • platform/text/TextAllInOne.cpp: Removed.
  • rendering/RenderingAllInOne.cpp: Removed.
  • rendering/style/StyleAllInOne.cpp: Removed.
  • rendering/svg/RenderSVGAllInOne.cpp: Removed.
  • svg/SVGAllInOne.cpp: Removed.
9:29 AM Changeset in webkit [234654] by yusukesuzuki@slowstart.org
  • 2 edits in trunk/LayoutTests

Unreviewed, Layout Test imported/w3c/web-platform-tests/service-workers/service-worker/skip-waiting-installed.https.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=188246

Unreviewed test gardening, marked test as flaky because the test is wrong.

9:19 AM Changeset in webkit [234653] by commit-queue@webkit.org
  • 1 edit
    3 adds in trunk/Source/WebInspectorUI

Web Inspector: Add another Protocol Version (iOS 12)
https://bugs.webkit.org/show_bug.cgi?id=188359
<rdar://problem/42981364>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2018-08-07
Reviewed by Brian Burg.

  • UserInterface/Protocol/Legacy/12.0/InspectorBackendCommands.js: Added.
  • Versions/Inspector-iOS-12.0.json: Added.
9:15 AM Changeset in webkit [234652] by pvollan@apple.com
  • 7 edits in trunk/Source

[macOS] Scrollbars are not visible when using 3rd party mouse
https://bugs.webkit.org/show_bug.cgi?id=188372

Reviewed by Simon Fraser.

Source/WebCore/PAL:

Added declaration of NSScrollerImpPair class method. This method updates all NSScrollerImpPairs
with a new recommended scroller style.

  • pal/spi/mac/NSScrollerImpSPI.h:

Source/WebKit:

The scrollbars are not visible because they are not updated with the recommended scroller style
when a 3rd party mouse is used. They still have the overlay style, but the system is
recommending the legacy style in this case. The UI process is currently notifying the WebProcess
about changes in the scroller style, but the current style is not set in the WebProcess on
startup. This patch sets the initial scroller style in the WebProcess by passing it as part of
the WebProcess creation parameters. Also, to make sure hot-plugging of a 3rd party mouse is
is visually changing the scroller style of the current page, a class method in NSScrollerImpPair
is called to update all NSScrollerImpPairs with the new recommended style. This method was
previously called by AppKit, but after blocking WindowServer access, AppKit is no longer calling
this method. This has been manually tested by using a 3rd party mouse.

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):
(WebKit::WebProcess::scrollerStylePreferenceChanged):

9:08 AM Changeset in webkit [234651] by aestes@apple.com
  • 6 edits in trunk/Source/WebKit

[Wi-Fi Assertions] suspendWiFiAssertions() should be able to delay sending ProcessReadyToSuspend
https://bugs.webkit.org/show_bug.cgi?id=188373
<rdar://problem/42857398>

Reviewed by Tim Horton.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::actualPrepareToSuspend):

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

(WebKit::NetworkProcess::platformPrepareToSuspend):
(WebKit::NetworkProcess::platformProcessDidTransitionToBackground):

  • NetworkProcess/curl/NetworkProcessCurl.cpp:

(WebKit::NetworkProcess::platformPrepareToSuspend):

  • NetworkProcess/soup/NetworkProcessSoup.cpp:

(WebKit::NetworkProcess::platformPrepareToSuspend):

7:36 AM Changeset in webkit [234650] by don.olmstead@sony.com
  • 10 edits
    1 add in trunk/Tools

[MiniBrowser][Win] Allow selection of recent user agents
https://bugs.webkit.org/show_bug.cgi?id=188371

Reviewed by Fujii Hironori.

Updates the user agent spoofing strings to the latest released
versions and adds Microsoft Edge's user agent.

Moves the menu item selection to the common base class, BrowserWindow
to support user agent spoofing in a WebKitLegacyBrowserWindow and
WebKitBrowserWindow.

  • MiniBrowser/win/BrowserWindow.cpp: Added.

(BrowserWindow::setUserAgent):

  • MiniBrowser/win/BrowserWindow.h:
  • MiniBrowser/win/CMakeLists.txt:
  • MiniBrowser/win/MainWindow.cpp:

(MainWindow::toggleMenuItem):

  • MiniBrowser/win/MiniBrowserLib.rc:
  • MiniBrowser/win/MiniBrowserLibResource.h:
  • MiniBrowser/win/WebKitBrowserWindow.cpp:
  • MiniBrowser/win/WebKitBrowserWindow.h:
  • MiniBrowser/win/WebKitLegacyBrowserWindow.cpp:

(WebKitLegacyBrowserWindow::setUserAgent):

  • MiniBrowser/win/WebKitLegacyBrowserWindow.h:
6:11 AM Changeset in webkit [234649] by mark.lam@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

Use a more specific PtrTag for PlatformRegisters PC and LR.
https://bugs.webkit.org/show_bug.cgi?id=188366
<rdar://problem/42984123>

Reviewed by Keith Miller.

Also fixed a bug in linkRegister(), which was previously returning the PC instead
of LR. It now returns LR.

  • runtime/JSCPtrTag.h:
  • runtime/MachineContext.h:

(JSC::MachineContext::instructionPointer):
(JSC::MachineContext::linkRegister):

  • runtime/VMTraps.cpp:

(JSC::SignalContext::SignalContext):

  • tools/SigillCrashAnalyzer.cpp:

(JSC::SignalContext::SignalContext):

5:50 AM Changeset in webkit [234648] by commit-queue@webkit.org
  • 4 edits in trunk/Source

Hardcoded LFENCE instruction
https://bugs.webkit.org/show_bug.cgi?id=188145

Patch by Karo Gyoker <karogyoker2+webkit@gmail.com> on 2018-08-07
Reviewed by Filip Pizlo.

Remove lfence instruction because it is crashing systems without SSE2 and
this is not the way how WebKit mitigates Spectre.

Source/JavaScriptCore:

  • runtime/JSLock.cpp:

(JSC::JSLock::didAcquireLock):
(JSC::JSLock::willReleaseLock):

Source/WTF:

  • wtf/Atomics.h:

(WTF::crossModifyingCodeFence):
(WTF::speculationFence): Deleted.
(WTF::x86_lfence): Deleted.

3:59 AM Changeset in webkit [234647] by Yusuke Suzuki
  • 2 edits in trunk/Tools

Unreviewed, add a new address to my configuration

  • Scripts/webkitpy/common/config/contributors.json:
3:01 AM Changeset in webkit [234646] by Antti Koivisto
  • 3 edits
    1 add in trunk/Source/WTF

Web process never leaves memory pressured state if caused by process size limit
https://bugs.webkit.org/show_bug.cgi?id=188299
<rdar://problem/42157442>

Reviewed by Darin Adler.

For vm memory pressure warnings we get notified when exiting the state and we can clear
the isUnderMemoryPressure bit. However as a compatibility behavior we were also notified using
the same event when approaching the process size limit. In this case there is no "all clear"
event so we'd stay in pressured state forever, leading to unnecessarily degraded user experience.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/cocoa/MemoryPressureHandlerCocoa.mm:

(WTF::MemoryPressureHandler::install):

Install a handler for process size limit events. This disables the compatibility behavior,
vm pressure events will be received for vm pressure only.

Process size limit events are treated as one-shot. We do cleanups based on criticality but
don't enter the pressured state.

(WTF::MemoryPressureHandler::uninstall):
(WTF::MemoryPressureHandler::holdOff):

  • wtf/spi/darwin/DispatchSPI.h: Added.
2:40 AM Changeset in webkit [234645] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebCore

[WPE][GTK] Handle some virtual keys commonly used on TVs
https://bugs.webkit.org/show_bug.cgi?id=188375

Reviewed by Žan Doberšek.

  • platform/gtk/PlatformKeyboardEventGtk.cpp:

(WebCore::PlatformKeyboardEvent::keyValueForGdkKeyCode):
(WebCore::PlatformKeyboardEvent::windowsKeyCodeForGdkKeyCode):

  • platform/wpe/PlatformKeyboardEventWPE.cpp:

(WebCore::PlatformKeyboardEvent::keyValueForWPEKeyCode):
(WebCore::PlatformKeyboardEvent::windowsKeyCodeForWPEKeyCode):

2:08 AM Changeset in webkit [234644] by zandobersek@gmail.com
  • 3 edits
    2 adds in trunk/Source/WebCore

[Nicosia] Add Nicosia::CompositionLayerTextureMapperImpl
https://bugs.webkit.org/show_bug.cgi?id=188348

Reviewed by Carlos Garcia Campos.

Add the Nicosia::CompositionLayerTextureMapperImpl class, the
TextureMapper-specific implementation that will extend the
CompositionLayer class.

The important deatil of this implementation is the TextureMapperLayer
object that's expected to be managed by the composition controller. As
such, it is placed inside the CompositionState struct to clearly
indicate its utility and expected place of management. In the current
setup, this place would be the CoordinatedGraphicsScene class.

The Nicosia::CompositionLayer object that's spawned for each
CoordinatedGraphicsLayer instance is now switched to using the
CompositionLayerTextureMapperImpl object, with the local temporary no-op
CompositionLayer::Impl class removed.

  • platform/TextureMapper.cmake:
  • platform/graphics/nicosia/texmap/NicosiaCompositionLayerTextureMapperImpl.cpp: Added.

(Nicosia::CompositionLayerTextureMapperImpl::createFactory):

  • platform/graphics/nicosia/texmap/NicosiaCompositionLayerTextureMapperImpl.h: Added.
  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer):
(): Deleted.

2:03 AM Changeset in webkit [234643] by zandobersek@gmail.com
  • 2 edits
    3 adds in trunk/Source/WebCore

[Nicosia] Add the TextureMapper-specific ContentLayer::Impl derivative
https://bugs.webkit.org/show_bug.cgi?id=188344

Reviewed by Carlos Garcia Campos.

Add Nicosia::ContentLayerTextureMapperImpl class, providing the
TextureMapper-specific implementation that derives from the
ContentLayer::Impl class and which can be used by the
Nicosia::ContentLayer instances.

Internally a TextureMapperPlatformLayerProxy is created, and is
accessible to others through a getter. This way the content producers
can push new buffers into this proxy object, and the scene compositor
can take these buffers for display purposes.

Nicosia::ContentLayerTextureMapperImpl::swapBuffersIfNeeded() will be
called during layer flushes, and the call will cause the content layer
clients to take their texture, wrap it into a buffer, and push it into
the TextureMapperPlatformLayerProxy object. At the moment this operation
is required by the ImageBuffer and GraphicsContext3D producers.

The Client object is managed under its own lock. While the producers
will only live on the main thread, the thread-safe check in the
destructor is necessary in case the ContentLayerTextureMapperImpl object
ends up being destroyed on some other thread.

The patch only adds the class implementation. It will be integrated into
the layer tree later, once all the other pieces of the puzzle land.

  • platform/TextureMapper.cmake:
  • platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.cpp: Added.

(Nicosia::ContentLayerTextureMapperImpl::createFactory):
(Nicosia::ContentLayerTextureMapperImpl::ContentLayerTextureMapperImpl):
(Nicosia::ContentLayerTextureMapperImpl::~ContentLayerTextureMapperImpl):
(Nicosia::ContentLayerTextureMapperImpl::invalidateClient):
(Nicosia::ContentLayerTextureMapperImpl::swapBuffersIfNeeded):

  • platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.h: Added.
1:30 AM Changeset in webkit [234642] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Make DOMWindow::scrollBy rely on DOMWindow::scrollTo
https://bugs.webkit.org/show_bug.cgi?id=188343

Patch by Frederic Wang <fwang@igalia.com> on 2018-08-07
Reviewed by Darin Adler.

This patch makes DOMWindow::scrollBy rely on DOMWindow::scrollTo in order to perform actual
scrolling of the view. In particular, this reduces the number of code path to modify in order
to implement the ScrollBehavior option (bug 188043). The only change is an optimization when
scrolling to position (0, 0) but it is not observable.

No new tests, behavior unchanged and already tested.

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::scrollBy const): Add the current view position to the scrollBy offset in
order to obtain the scrollTo offset.

Aug 6, 2018:

8:28 PM Changeset in webkit [234641] by Simon Fraser
  • 5 edits in trunk/LayoutTests

De-flake some animation tests
https://bugs.webkit.org/show_bug.cgi?id=188356

Reviewed by Dean Jackson.

The tests in legacy-animation-engine were flakey because the animation can start before
we get a chance to register the event listener. Fix by starting the animation after the
load event fires. Make the non-legacy tests match.

  • compositing/visible-rect/animated-from-none.html:
  • compositing/visible-rect/animated.html:
  • legacy-animation-engine/compositing/visible-rect/animated-from-none.html:
  • legacy-animation-engine/compositing/visible-rect/animated.html:
6:13 PM Changeset in webkit [234640] by commit-queue@webkit.org
  • 13 edits
    2 copies
    1 add in trunk

Check with SafeBrowsing during navigation in WKWebView
https://bugs.webkit.org/show_bug.cgi?id=188133

Patch by Alex Christensen <achristensen@webkit.org> on 2018-08-06
Source/WebKit:

Reviewed by Chris Dumez.

This turns WebFramePolicyListenerProxy into an object that now listens for the results
of two processes happening in parallel: the API::NavigationClient's decidePolicyForNavigation{Action, Response}
(which it was already waiting for) and, on platforms that support it, the SafariSafeBrowsing framework's check.
The first result is stored as it waits for the second result unless the first result is the API::NavigationClient
saying to cancel or convert the navigation to a download, in which cases we don't care what the safe browsing
framework results are because we won't show the URL in the browser.

Nothing is done with the safe browsing results yet.

  • UIProcess/Cocoa/SafeBrowsingResultCocoa.mm: Added.

(WebKit::SafeBrowsingResult::SafeBrowsingResult):

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::beginSafeBrowsingCheck):

  • UIProcess/SafeBrowsingResult.h: Added.

(WebKit::SafeBrowsingResult::provider const):
(WebKit::SafeBrowsingResult::isPhishing const):
(WebKit::SafeBrowsingResult::isMalware const):
(WebKit::SafeBrowsingResult::isUnwantedSoftware const):
(WebKit::SafeBrowsingResult::isKnownToBeUnsafe const):

  • UIProcess/WebFramePolicyListenerProxy.cpp:

(WebKit::WebFramePolicyListenerProxy::WebFramePolicyListenerProxy):
(WebKit::WebFramePolicyListenerProxy::didReceiveSafeBrowsingResults):
(WebKit::WebFramePolicyListenerProxy::use):
(WebKit::WebFramePolicyListenerProxy::download):
(WebKit::WebFramePolicyListenerProxy::ignore):

  • UIProcess/WebFramePolicyListenerProxy.h:

(WebKit::WebFramePolicyListenerProxy::create):

  • UIProcess/WebFrameProxy.cpp:

(WebKit::WebFrameProxy::setUpPolicyListenerProxy):

  • UIProcess/WebFrameProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForNewWindowAction):
(WebKit::WebPageProxy::decidePolicyForResponse):

  • UIProcess/WebPageProxy.h:
  • WebKit.xcodeproj/project.pbxproj:

LayoutTests:

Reviewed by Andy Estes.

  • platform/wk2/http/tests/navigation/keyboard-events-during-provisional-navigation-expected.txt: Copied from http/tests/navigation/keyboard-events-during-provisional-navigation-expected.txt.

This test verifies that keys cannot be entered during navigation, and the keys seen in WebKitTestRunner
are before the navigation. This is seen now because there is a brief moment in time between when
WebKitTestRunner calls decidePolicyForNavigationAction and when the WebContent receives it.

  • svg/custom/anchor-on-use.svg:

This test verifies what the page looks like after navigation. It used to just call testRunner.notifyDone
when the link was clicked and because of the timing of messages sent with the UIProcess, WebKitTestRunner
would see the results after the page navigated. Because we are adding a delay during navigation, the
message order can no longer be relied on in this way. To fix this, we are just calling notifyDone in an
unload handler.

5:58 PM Changeset in webkit [234639] by Kocsen Chung
  • 1 copy in tags/Safari-606.1.36.1.1

Tag Safari-606.1.36.1.1.

5:39 PM Changeset in webkit [234638] by rniwa@webkit.org
  • 2 edits in trunk/LayoutTests

fast/custom-elements/custom-element-registry-wrapper-should-stay-alive.html always timeouts on debug bots
https://bugs.webkit.org/show_bug.cgi?id=188353

Remove the timeout expectation now that the test is passing on debug bots.

5:25 PM Changeset in webkit [234637] by Joseph Pecoraro
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Global search sometimes returns duplicate results for a resource
https://bugs.webkit.org/show_bug.cgi?id=188270
<rdar://problem/42867498>

Reviewed by Brian Burg.

  • UserInterface/Views/SearchSidebarPanel.js:

(WI.SearchSidebarPanel.prototype.performSearch.resourcesCallback):
Avoid duplicate search results in the frontend. We should also fix the backend
but a frontend fix will also be desired for backends that have the issue.

5:13 PM Changeset in webkit [234636] by rniwa@webkit.org
  • 10 edits
    2 adds in trunk

Add CEReactions=NotNeeded for reactions only needed for customized builtins
https://bugs.webkit.org/show_bug.cgi?id=187851

Reviewed by Chris Dumez.

Source/WebCore:

Because WebKit doesn't and will not support customized builtin elements, there are many DOM APIs marked with
[CEReactions] which don't actually need CustomElementReactionStack.

To clarify and document this difference, this patch introduces WebKit extention: [CEReactions=NotNeeded].
When this IDL attribute is specified, we generate CustomElementReactionDisallowedScope in the bindings code
to assert that there are no custom elements reactions being enqueued within the DOM API.

We suppress this assertion in CustomElementReactionStack since a DOM API with [CEReactions=NotNeeded] can
synchronously fire an event and otherwise execute arbirary scripts, which in turn could invoke a DOM API
with [CEReactions].

This patch deployes this change to HTMLIFrameElement since "src" IDL attribute triggers this second scenario.

Test: fast/custom-elements/custom-element-reaction-within-disallowed-scope.html

  • bindings/scripts/CodeGeneratorJS.pm:

(GeneratePut):
(GeneratePutByIndex):
(GenerateDefineOwnProperty):
(GenerateDeletePropertyCommon):
(GenerateAttributeSetterBodyDefinition):
(GenerateCustomElementReactionsStackIfNeeded): Added. Generate CustomElementReactionStack for [CEReactions]
and CustomElementReactionDisallowedScope for [CEReactions=NotNeeded].

  • bindings/scripts/test/JS/JSTestCEReactions.cpp:
  • bindings/scripts/test/TestCEReactions.idl: Added test cases for [CEReactions=NotNeeded].
  • bindings/scripts/test/TestCEReactionsStringifier.idl: Ditto.
  • dom/CustomElementReactionQueue.cpp:

(WebCore::CustomElementReactionQueue::enqueueElementUpgrade): Added an assertion to catch cases where
a DOM API with [CEReactions=NotNeeded] enqueues a custom element reaction; i.e. cases where [CEReactions]
should have been used.
(WebCore::CustomElementReactionQueue::enqueueElementUpgradeIfDefined): Ditto.
(WebCore::CustomElementReactionQueue::enqueueConnectedCallbackIfNeeded): Ditto.
(WebCore::CustomElementReactionQueue::enqueueDisconnectedCallbackIfNeeded): Ditto.
(WebCore::CustomElementReactionQueue::enqueueAdoptedCallbackIfNeeded): Ditto.
(WebCore::CustomElementReactionQueue::enqueueAttributeChangedCallbackIfNeeded): Ditto.
(WebCore::CustomElementReactionQueue::enqueuePostUpgradeReactions): Ditto.

  • dom/CustomElementReactionQueue.h:

(WebCore::CustomElementReactionDisallowedScope): Added. Enables the assertion in enqueue* functions above.
(WebCore::CustomElementReactionDisallowedScope::CustomElementReactionDisallowedScope): Added.
(WebCore::CustomElementReactionDisallowedScope::~CustomElementReactionDisallowedScope): Added.
(WebCore::CustomElementReactionDisallowedScope::isReactionAllowed): Added.
(WebCore::CustomElementReactionDisallowedScope::AllowedScope): Added.
(WebCore::CustomElementReactionDisallowedScope::AllowedScope::AllowedScope): Added.
(WebCore::CustomElementReactionDisallowedScope::AllowedScope::~AllowedScope): Added.
(WebCore::CustomElementReactionStack): Suppress the assertion. See above for why this is needed.

  • html/HTMLIFrameElement.idl:

LayoutTests:

Added a regression test for enqueuing a custom element reaction in a DOM API marked as [CEReaction]
inside another DOM API with [CEReaction=NotNeeded]. WebKit should not hit a debug assertion added
by this patch.

  • fast/custom-elements/custom-element-reaction-within-disallowed-scope-expected.txt: Added.
  • fast/custom-elements/custom-element-reaction-within-disallowed-scope.html: Added.
4:53 PM Changeset in webkit [234635] by Matt Baker
  • 2 edits
    7 adds
    3 deletes in trunk/LayoutTests

Web Inspector: split-up async stack trace test suite to improve clarity and maintainability
https://bugs.webkit.org/show_bug.cgi?id=185398
<rdar://problem/40040289>

Reviewed by Joseph Pecoraro.

  • inspector/debugger/async-stack-trace-basic-expected.txt: Added.
  • inspector/debugger/async-stack-trace-basic.html: Added.

Basic tests that check for the existence of an asynchronous stack trace
when pausing inside an asynchronous callback function.

  • inspector/debugger/async-stack-trace-event-listener-expected.txt: Added.
  • inspector/debugger/async-stack-trace-event-listener.html: Added.
  • inspector/debugger/async-stack-trace-expected.txt: Removed.
  • inspector/debugger/async-stack-trace-truncate-expected.txt: Added.
  • inspector/debugger/async-stack-trace-truncate.html: Added.

Test scenarios where the number of call frames in the async stack trace
exceeds the maximum depth and is truncated.

  • inspector/debugger/async-stack-trace.html: Removed.
  • inspector/debugger/resources/async-stack-trace-test.js: Added.

(TestPage.registerInitializer.window.getAsyncStackTrace):
(TestPage.registerInitializer.logCallFrame):
(TestPage.registerInitializer.window.logAsyncStackTrace):
(TestPage.registerInitializer.window.addAsyncStackTraceTestCase):
(TestPage.registerInitializer):
Utility functions used across tests.

  • inspector/debugger/resources/postMessage-echo.html: Removed.

This was unnecessary. To check that an async stack trace exists when
pausing in a postMessage handler, all we need is an iframe that posts a
message to its parent as soon as it is created. The iframe is now created
inline in async-stack-trace-basic.html.

  • platform/mac/TestExpectations:
4:49 PM Changeset in webkit [234634] by david_quesada@apple.com
  • 3 edits in trunk/Tools

webkitdirs.pm should default to iPhone SE for 64-bit testing
https://bugs.webkit.org/show_bug.cgi?id=188361

Reviewed by Daniel Bates.

Use iPhone SE as the default iOS Simulator device type. This corresponds to the change to webkitpy in r234467.

  • Scripts/webkitdirs.pm:

(findOrCreateSimulatorForIOSDevice):

  • Scripts/webkitpy/layout_tests/run_webkit_tests.py:

(parse_args):

Update the help text for --device-type to reflect the new default device.

3:35 PM Changeset in webkit [234633] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

Clean up initialization of some RenderLayer members
https://bugs.webkit.org/show_bug.cgi?id=188330

Reviewed by Dean Jackson.

Use initializers for the pointers. No need to initialize LayoutUnits, which initialize to zero.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::RenderLayer):

  • rendering/RenderLayer.h:
3:34 PM Changeset in webkit [234632] by Kocsen Chung
  • 7 edits in branches/safari-606.1.36.2-branch/Source

Versioning.

3:25 PM Changeset in webkit [234631] by Kocsen Chung
  • 7 edits in branches/safari-606-branch/Source

Versioning.

3:23 PM Changeset in webkit [234630] by dbates@webkit.org
  • 1 edit
    2 adds in trunk/LayoutTests

Setting table layout to fixed causes incorrect cell width calculations
https://bugs.webkit.org/show_bug.cgi?id=90068

Reviewed by Simon Fraser.

Derived from the test case written by Pravin D.

Add a test case to ensure we do not regress cell width computation in fixed table layout
when colspan is greater than the number of columns in the table.

  • fast/table/fixed-table-layout/width-distribution-when-colspan-greater-than-table-columns-expected.html: Added.
  • fast/table/fixed-table-layout/width-distribution-when-colspan-greater-than-table-columns.html: Added.
3:21 PM Changeset in webkit [234629] by dbates@webkit.org
  • 4 edits
    6 adds in trunk/LayoutTests

Add tests to ensure that Same-Site cookies are stored when set as the first party
https://bugs.webkit.org/show_bug.cgi?id=188080

Reviewed by Alexey Proskuryakov.

  • http/tests/cookies/resources/cookie-utilities.js:

(getDOMCookies): Return an empty dictionary when there are no DOM cookies. Currently we
return {"": undefined}.

  • http/tests/cookies/resources/cookie-utilities.php: Added.
  • http/tests/cookies/resources/echo-http-and-dom-cookies-and-notify-done.php: Added.
  • http/tests/cookies/same-site/set-first-party-cross-site-cookies-expected.txt: Added.
  • http/tests/cookies/same-site/set-first-party-cross-site-cookies.php: Added.
  • http/tests/cookies/same-site/set-first-party-same-site-cookies-expected.txt: Added.
  • http/tests/cookies/same-site/set-first-party-same-site-cookies.php: Added.
  • platform/ios-12/TestExpectations: Skip the tests until the fix for <rdar://problem/42255251>

is shipped.

  • platform/mac/TestExpectations: Ditto.
3:16 PM Changeset in webkit [234628] by Kocsen Chung
  • 3 edits
    1 add in branches/safari-606-branch/Source/JavaScriptCore

Cherry-pick r234576. rdar://problem/42973449

Give the jsc shell the JIT entitlement
https://bugs.webkit.org/show_bug.cgi?id=188324
<rdar://problem/42885806>

Reviewed by Dan Bernstein.

This should help us in ensuring the system jsc is able to JIT.

  • Configurations/JSC.xcconfig:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • allow-jit-macOS.entitlements: Added.

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

3:16 PM Changeset in webkit [234627] by Kocsen Chung
  • 7 edits in branches/safari-606-branch/Source

Versioning.

3:14 PM Changeset in webkit [234626] by Chris Dumez
  • 7 edits in trunk/Source/WebKit

Regression(NetworkLoadChecker): CORS preflights are no longer able to deal with client certificate authentication
https://bugs.webkit.org/show_bug.cgi?id=188355
<rdar://problem/42546319>

Reviewed by Alex Christensen.

Before we started using the NetworkLoadChecker to do CORS-preflighting in the Network process, challenges would
use the NetworkLoad::completeAuthenticationChallenge() code path with isAllowedToAskUserForCredentials to set
to false. This would call:

  1. completionHandler(AuthenticationChallengeDisposition::UseCredential, { }); for TLS handshakes (server trust evaluation & client certification authentication)
  2. NetworkProcess::singleton().authenticationManager().didReceiveAuthenticationChallenge() otherwise

However, NetworkCORSPreflightChecker::didReceiveChallenge() was behaving differently and calling:

  1. completionHandler(AuthenticationChallengeDisposition::RejectProtectionSpace, { }); for server trust evaluations
  2. completionHandler(AuthenticationChallengeDisposition::Cancel, { }); otherwise

Restore previous behavior by aligning NetworkCORSPreflightChecker::didReceiveChallenge() with
NetworkLoad::completeAuthenticationChallenge() when isAllowedToAskUserForCredentials is set to false. This means
we end up asking the AuthenticationManager for client certificate authentication instead or cancelling the
preflight.

This fixes CORS-preflighting on some internal sites.

  • NetworkProcess/NetworkCORSPreflightChecker.cpp:

(WebKit::NetworkCORSPreflightChecker::didReceiveChallenge):

  • NetworkProcess/NetworkCORSPreflightChecker.h:
  • NetworkProcess/NetworkLoadChecker.cpp:

(WebKit::NetworkLoadChecker::NetworkLoadChecker):
(WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight):

  • NetworkProcess/NetworkLoadChecker.h:
  • NetworkProcess/NetworkResourceLoader.cpp:
  • NetworkProcess/PingLoad.cpp:

(WebKit::PingLoad::PingLoad):

3:05 PM Changeset in webkit [234625] by Kocsen Chung
  • 1 copy in branches/safari-606.1.36.2-branch

New branch.

3:02 PM Changeset in webkit [234624] by Kocsen Chung
  • 7 edits in branches/safari-606.1.36.0-branch/Source

Versioning.

2:59 PM Changeset in webkit [234623] by Kocsen Chung
  • 3 edits
    1 add in branches/safari-606.1.36.1-branch/Source/JavaScriptCore

Cherry-pick r234576. rdar://problem/42973449

Give the jsc shell the JIT entitlement
https://bugs.webkit.org/show_bug.cgi?id=188324
<rdar://problem/42885806>

Reviewed by Dan Bernstein.

This should help us in ensuring the system jsc is able to JIT.

  • Configurations/JSC.xcconfig:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • allow-jit-macOS.entitlements: Added.

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

2:56 PM Changeset in webkit [234622] by Kocsen Chung
  • 7 edits in branches/safari-606.1.36.1-branch/Source

Versioning.

2:56 PM Changeset in webkit [234621] by rniwa@webkit.org
  • 2 edits in trunk/LayoutTests

fast/custom-elements/custom-element-registry-wrapper-should-stay-alive.html always timeouts on debug bots
https://bugs.webkit.org/show_bug.cgi?id=188353

Reviewed by Saam Barati.

Rely on GCController.collect() instead of allocating 1,000,000 objects in WebKitTestRunner / DumpRenderTree
so that debug builders won't timeout.

  • fast/custom-elements/custom-element-registry-wrapper-should-stay-alive.html:
2:08 PM Changeset in webkit [234620] by commit-queue@webkit.org
  • 163 edits
    4 copies
    4 adds
    5 deletes in trunk/Source/WebCore

Remove the SVG elements' attributes macros
https://bugs.webkit.org/show_bug.cgi?id=186751

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2018-08-06
Reviewed by Simon Fraser.

This is how the SVG attributes are implemented after removing the SVG macros:

1) The SVG attribute is defined as a super class of SVGAttribute. The super

classes of SVGAttribute are template classes. The type of these template
are the property type or the TearOff type.

2) To unify accessing attributes of the SVGElements and its super classes

an SVGAttributeAccessor template class is added. It is inherited by other
template classes. The types of these templates are the owner and the
attributes types. The main functions of these classes is to synchronize
the new property value with the document attributes pool and to create
and cache the TearOff objects.

3) To make code shorter and more readable, attribute types and attribute

accessors are defined for every SVG TearOff type, e.g.
-- SVGLength:

SVGAnimatedLengthAttribute and SVGAnimatedLengthAttributeAccessor

-- SVGAnimatedNumber:

SVGAnimatedNumberAttribute and SVGAnimatedNumberAttributeAccessor

4) A special accessor is defined for animated pair and optional attributes:

SVGAnimatedPairAttributeAccessor, e.g.
-- SVGMarkerElement:

orient attribute: "angle" or "type"

-- SVGFEGaussianBlurElement:

stdDeviation attribute: "x" and "y"

5) The SVG attributes have to be registered into an singleton SVGAttributeRegistry.

The SVGAttributeRegistry is a template class. The types of this template
class are the the type of the owner and the base classes of this owner.
This registry holds a map from "attribute name" to "attribute accessor".

6) To make the code easier to read, the SVGAttributeRegistry implements

registerAttribute() for different attribute types. The owner needs only
to provide the attribute name and a pointer to the class member of this
attribute to the same function "registerAttribute()". The compiler will
pick the right function to call based on the type of the attribute.

7) Given a reference to the owner element, SVGAttributeRegistry can loop

through the attributes of this owner and through the attributes of its
base classes as well to do operations like synchronizing all the attributes
or creating the TearOff object of a certain attribute.

8) To make the base class SVGElement have the ability to access the attributes

of any of its super classes, SVGAttributeOwnerProxy will be used.
SVGAttributeOwnerProxy is a base class which have all the functions that
SVGElement needs as pure virtual functions.

9) SVGAttributeOwnerProxyImpl is a template class which implements

SVGAttributeOwnerProxy and whose types are the owner and its base classes.
SVGAttributeOwnerProxyImpl keeps a reference to the owner and the context
SVGElement.

10) All the SVG attribute owners have to implement the virtual function

attributeOwnerProxy() which returns a reference to SVGAttributeOwnerProxy.
The local attributeOwnerProxy() returns a reference to a local
SVGAttributeOwnerProxyImpl. Its type and base types are the class
hierarchy of this element.

All the attributes of the non-SVGElement-based classes are moved as members
of these classes instead of adding them to all the super classes. These
classes are:

-- SVGExternalResourcesRequired
-- SVGURIReference
-- SVGFitToViewBox
-- SVGZoomAndPan
-- SVGLangSpace

The svgAttributeChanged() of all the SVGElement-based classes are now
simplified by distributing the responsibilities of changing an attribute
to the base classes. One exception is the SVGURIReference since the action
to be taken when changing the "href" is different for every super class.

Other work will be done in separate patches.

-- Shrinking the memory of the SVGElements.
-- Making all the attributes RefCounted objects.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • rendering/svg/RenderSVGResourceMarker.cpp:

(WebCore::RenderSVGResourceMarker::draw):

  • svg/SVGAElement.cpp:

(WebCore::SVGAElement::SVGAElement):
(WebCore::SVGAElement::registerAttributes):
(WebCore::SVGAElement::parseAttribute):
(WebCore::SVGAElement::svgAttributeChanged):

  • svg/SVGAElement.h:
  • svg/SVGAElement.idl:
  • svg/SVGAltGlyphElement.cpp:

(WebCore::SVGAltGlyphElement::SVGAltGlyphElement):

  • svg/SVGAltGlyphElement.h:
  • svg/SVGAnimatedAngle.h:
  • svg/SVGAnimatedBoolean.h:
  • svg/SVGAnimatedEnumeration.h:
  • svg/SVGAnimatedInteger.h:
  • svg/SVGAnimatedLength.h:
  • svg/SVGAnimatedLengthList.h:
  • svg/SVGAnimatedNumber.h:
  • svg/SVGAnimatedNumberList.h:
  • svg/SVGAnimatedPath.h:
  • svg/SVGAnimatedPointList.h:
  • svg/SVGAnimatedPreserveAspectRatio.h:
  • svg/SVGAnimatedRect.h:
  • svg/SVGAnimatedString.h:
  • svg/SVGAnimatedTransformList.h:
  • svg/SVGAnimatedTypeAnimator.cpp:

(WebCore::SVGAnimatedTypeAnimator::findAnimatedPropertiesForAttributeName):

  • svg/SVGAnimationElement.cpp:

(WebCore::SVGAnimationElement::SVGAnimationElement):
(WebCore::SVGAnimationElement::requiredFeatures): Deleted.
(WebCore::SVGAnimationElement::requiredExtensions): Deleted.
(WebCore::SVGAnimationElement::systemLanguage): Deleted.

  • svg/SVGAnimationElement.h:

(WebCore::SVGAnimationElement::attributeRegistry):

  • svg/SVGCircleElement.cpp:

(WebCore::SVGCircleElement::SVGCircleElement):
(WebCore::SVGCircleElement::registerAttributes):
(WebCore::SVGCircleElement::parseAttribute):
(WebCore::SVGCircleElement::svgAttributeChanged):

  • svg/SVGCircleElement.h:
  • svg/SVGClipPathElement.cpp:

(WebCore::SVGClipPathElement::SVGClipPathElement):
(WebCore::SVGClipPathElement::registerAttributes):
(WebCore::SVGClipPathElement::parseAttribute):
(WebCore::SVGClipPathElement::svgAttributeChanged):
(WebCore::SVGClipPathElement::isSupportedAttribute): Deleted.

  • svg/SVGClipPathElement.h:
  • svg/SVGComponentTransferFunctionElement.cpp:

(WebCore::SVGComponentTransferFunctionElement::SVGComponentTransferFunctionElement):
(WebCore::SVGComponentTransferFunctionElement::registerAttributes):
(WebCore::SVGComponentTransferFunctionElement::parseAttribute):
(WebCore::SVGComponentTransferFunctionElement::svgAttributeChanged):
(WebCore::SVGComponentTransferFunctionElement::transferFunction const):
(WebCore::SVGComponentTransferFunctionElement::isSupportedAttribute): Deleted.

  • svg/SVGComponentTransferFunctionElement.h:

(WebCore::SVGComponentTransferFunctionElement::type const):
(WebCore::SVGComponentTransferFunctionElement::tableValues const):
(WebCore::SVGComponentTransferFunctionElement::slope const):
(WebCore::SVGComponentTransferFunctionElement::intercept const):
(WebCore::SVGComponentTransferFunctionElement::amplitude const):
(WebCore::SVGComponentTransferFunctionElement::exponent const):
(WebCore::SVGComponentTransferFunctionElement::offset const):
(WebCore::SVGComponentTransferFunctionElement::typeAnimated):
(WebCore::SVGComponentTransferFunctionElement::tableValuesAnimated):
(WebCore::SVGComponentTransferFunctionElement::slopeAnimated):
(WebCore::SVGComponentTransferFunctionElement::interceptAnimated):
(WebCore::SVGComponentTransferFunctionElement::amplitudeAnimated):
(WebCore::SVGComponentTransferFunctionElement::exponentAnimated):
(WebCore::SVGComponentTransferFunctionElement::offsetAnimated):
(WebCore::SVGComponentTransferFunctionElement::attributeRegistry):
(WebCore::SVGComponentTransferFunctionElement::isKnownAttribute):

  • svg/SVGCursorElement.cpp:

(WebCore::SVGCursorElement::SVGCursorElement):
(WebCore::SVGCursorElement::registerAttributes):
(WebCore::SVGCursorElement::parseAttribute):
(WebCore::SVGCursorElement::svgAttributeChanged):
(WebCore::SVGCursorElement::isSupportedAttribute): Deleted.
(WebCore::SVGCursorElement::requiredFeatures): Deleted.
(WebCore::SVGCursorElement::requiredExtensions): Deleted.
(WebCore::SVGCursorElement::systemLanguage): Deleted.

  • svg/SVGCursorElement.h:
  • svg/SVGDefsElement.cpp:

(WebCore::SVGDefsElement::SVGDefsElement):

  • svg/SVGDefsElement.h:
  • svg/SVGElement.cpp:

(WebCore::SVGElement::SVGElement):
(WebCore::SVGElement::registerAttributes):
(WebCore::SVGElement::parseAttribute):
(WebCore::SVGElement::animatedPropertyTypesForAttribute):
(WebCore::SVGElement::synchronizeAllAnimatedSVGAttribute):
(WebCore::SVGElement::synchronizeAnimatedSVGAttribute const):
(WebCore::SVGElement::isPresentationAttributeWithSVGDOM):
(WebCore::SVGElement::svgAttributeChanged):
(WebCore::SVGElement::synchronizeRequiredFeatures): Deleted.
(WebCore::SVGElement::synchronizeRequiredExtensions): Deleted.
(WebCore::SVGElement::synchronizeSystemLanguage): Deleted.
(WebCore::SVGElement::isKnownAttribute): Deleted.

  • svg/SVGElement.h:

(WebCore::SVGElement::attributeRegistry):
(WebCore::SVGElement::isKnownAttribute):
(WebCore::SVGElement::attributeOwnerProxy const):
(WebCore::SVGElement::synchronizeAttribute):
(WebCore::SVGElement::synchronizeAttributes):
(WebCore::SVGElement::animatedTypes const):
(WebCore::SVGElement::lookupAnimatedProperty const):
(WebCore::SVGElement::lookupOrCreateAnimatedProperty):
(WebCore::SVGElement::lookupOrCreateAnimatedProperties):
(WebCore::SVGElement::className const):
(WebCore::SVGElement::classNameAnimated):
(WebCore::SVGElement::synchronizeRequiredFeatures): Deleted.
(WebCore::SVGElement::synchronizeRequiredExtensions): Deleted.
(WebCore::SVGElement::synchronizeSystemLanguage): Deleted.

  • svg/SVGEllipseElement.cpp:

(WebCore::SVGEllipseElement::SVGEllipseElement):
(WebCore::SVGEllipseElement::registerAttributes):
(WebCore::SVGEllipseElement::parseAttribute):
(WebCore::SVGEllipseElement::svgAttributeChanged):

  • svg/SVGEllipseElement.h:
  • svg/SVGExternalResourcesRequired.cpp:

(WebCore::SVGExternalResourcesRequired::SVGExternalResourcesRequired):
(WebCore::SVGExternalResourcesRequired::registerAttributes):
(WebCore::SVGExternalResourcesRequired::parseAttribute):
(WebCore::SVGExternalResourcesRequired::svgAttributeChanged):
(WebCore::SVGExternalResourcesRequired::addSupportedAttributes):
(WebCore::SVGExternalResourcesRequired::dispatchLoadEvent):
(WebCore::SVGExternalResourcesRequired::insertedIntoDocument):
(WebCore::SVGExternalResourcesRequired::finishParsingChildren):
(WebCore::SVGExternalResourcesRequired::haveLoadedRequiredResources const):
(WebCore::SVGExternalResourcesRequired::isKnownAttribute): Deleted.
(WebCore::SVGExternalResourcesRequired::handleAttributeChange): Deleted.

  • svg/SVGExternalResourcesRequired.h:

(WebCore::SVGExternalResourcesRequired::attributeRegistry):
(WebCore::SVGExternalResourcesRequired::externalResourcesRequiredAnimated):
(WebCore::SVGExternalResourcesRequired::externalResourcesRequired const):
(WebCore::SVGExternalResourcesRequired::setExternalResourcesRequired):
(WebCore::SVGExternalResourcesRequired::isKnownAttribute):
(WebCore::SVGExternalResourcesRequired::attributeOwnerProxy):

  • svg/SVGFEBlendElement.cpp:

(WebCore::SVGFEBlendElement::SVGFEBlendElement):
(WebCore::SVGFEBlendElement::registerAttributes):
(WebCore::SVGFEBlendElement::parseAttribute):

  • svg/SVGFEBlendElement.h:
  • svg/SVGFEColorMatrixElement.cpp:

(WebCore::SVGFEColorMatrixElement::SVGFEColorMatrixElement):
(WebCore::SVGFEColorMatrixElement::registerAttributes):
(WebCore::SVGFEColorMatrixElement::parseAttribute):

  • svg/SVGFEColorMatrixElement.h:
  • svg/SVGFEComponentTransferElement.cpp:

(WebCore::SVGFEComponentTransferElement::SVGFEComponentTransferElement):
(WebCore::SVGFEComponentTransferElement::registerAttributes):
(WebCore::SVGFEComponentTransferElement::parseAttribute):

  • svg/SVGFEComponentTransferElement.h:
  • svg/SVGFECompositeElement.cpp:

(WebCore::SVGFECompositeElement::SVGFECompositeElement):
(WebCore::SVGFECompositeElement::registerAttributes):
(WebCore::SVGFECompositeElement::parseAttribute):

  • svg/SVGFECompositeElement.h:
  • svg/SVGFEConvolveMatrixElement.cpp:

(WebCore::SVGFEConvolveMatrixElement::SVGFEConvolveMatrixElement):
(WebCore::SVGFEConvolveMatrixElement::registerAttributes):
(WebCore::SVGFEConvolveMatrixElement::parseAttribute):
(WebCore::SVGFEConvolveMatrixElement::setFilterEffectAttribute):
(WebCore::SVGFEConvolveMatrixElement::setOrder):
(WebCore::SVGFEConvolveMatrixElement::setKernelUnitLength):

  • svg/SVGFEConvolveMatrixElement.h:

(WebCore::SVGPropertyTraits<EdgeModeType>::initialValue):

  • svg/SVGFEDiffuseLightingElement.cpp:

(WebCore::SVGFEDiffuseLightingElement::SVGFEDiffuseLightingElement):
(WebCore::SVGFEDiffuseLightingElement::registerAttributes):
(WebCore::SVGFEDiffuseLightingElement::parseAttribute):

  • svg/SVGFEDiffuseLightingElement.h:
  • svg/SVGFEDisplacementMapElement.cpp:

(WebCore::SVGFEDisplacementMapElement::SVGFEDisplacementMapElement):
(WebCore::SVGFEDisplacementMapElement::registerAttributes):
(WebCore::SVGFEDisplacementMapElement::parseAttribute):

  • svg/SVGFEDisplacementMapElement.h:
  • svg/SVGFEDropShadowElement.cpp:

(WebCore::SVGFEDropShadowElement::SVGFEDropShadowElement):
(WebCore::SVGFEDropShadowElement::setStdDeviation):
(WebCore::SVGFEDropShadowElement::registerAttributes):
(WebCore::SVGFEDropShadowElement::parseAttribute):
(WebCore::SVGFEDropShadowElement::svgAttributeChanged):

  • svg/SVGFEDropShadowElement.h:
  • svg/SVGFEGaussianBlurElement.cpp:

(WebCore::SVGFEGaussianBlurElement::SVGFEGaussianBlurElement):
(WebCore::SVGFEGaussianBlurElement::setStdDeviation):
(WebCore::SVGFEGaussianBlurElement::registerAttributes):
(WebCore::SVGFEGaussianBlurElement::parseAttribute):
(WebCore::SVGFEGaussianBlurElement::svgAttributeChanged):

  • svg/SVGFEGaussianBlurElement.h:
  • svg/SVGFEImageElement.cpp:

(WebCore::SVGFEImageElement::SVGFEImageElement):
(WebCore::SVGFEImageElement::registerAttributes):
(WebCore::SVGFEImageElement::parseAttribute):

  • svg/SVGFEImageElement.h:
  • svg/SVGFELightElement.cpp:

(WebCore::SVGFELightElement::SVGFELightElement):
(WebCore::SVGFELightElement::registerAttributes):
(WebCore::SVGFELightElement::parseAttribute):
(WebCore::SVGFELightElement::svgAttributeChanged):

  • svg/SVGFELightElement.h:

(WebCore::SVGFELightElement::azimuth const):
(WebCore::SVGFELightElement::elevation const):
(WebCore::SVGFELightElement::x const):
(WebCore::SVGFELightElement::y const):
(WebCore::SVGFELightElement::z const):
(WebCore::SVGFELightElement::pointsAtX const):
(WebCore::SVGFELightElement::pointsAtY const):
(WebCore::SVGFELightElement::pointsAtZ const):
(WebCore::SVGFELightElement::specularExponent const):
(WebCore::SVGFELightElement::limitingConeAngle const):
(WebCore::SVGFELightElement::azimuthAnimated):
(WebCore::SVGFELightElement::elevationAnimated):
(WebCore::SVGFELightElement::xAnimated):
(WebCore::SVGFELightElement::yAnimated):
(WebCore::SVGFELightElement::zAnimated):
(WebCore::SVGFELightElement::pointsAtXAnimated):
(WebCore::SVGFELightElement::pointsAtYAnimated):
(WebCore::SVGFELightElement::pointsAtZAnimated):
(WebCore::SVGFELightElement::specularExponentAnimated):
(WebCore::SVGFELightElement::limitingConeAngleAnimated):
(WebCore::SVGFELightElement::attributeRegistry):
(WebCore::SVGFELightElement::isKnownAttribute):

  • svg/SVGFEMergeNodeElement.cpp:

(WebCore::SVGFEMergeNodeElement::SVGFEMergeNodeElement):
(WebCore::SVGFEMergeNodeElement::registerAttributes):
(WebCore::SVGFEMergeNodeElement::parseAttribute):

  • svg/SVGFEMergeNodeElement.h:
  • svg/SVGFEMorphologyElement.cpp:

(WebCore::SVGFEMorphologyElement::SVGFEMorphologyElement):
(WebCore::SVGFEMorphologyElement::setRadius):
(WebCore::SVGFEMorphologyElement::registerAttributes):
(WebCore::SVGFEMorphologyElement::parseAttribute):

  • svg/SVGFEMorphologyElement.h:
  • svg/SVGFEOffsetElement.cpp:

(WebCore::SVGFEOffsetElement::SVGFEOffsetElement):
(WebCore::SVGFEOffsetElement::registerAttributes):
(WebCore::SVGFEOffsetElement::parseAttribute):
(WebCore::SVGFEOffsetElement::svgAttributeChanged):

  • svg/SVGFEOffsetElement.h:
  • svg/SVGFESpecularLightingElement.cpp:

(WebCore::SVGFESpecularLightingElement::SVGFESpecularLightingElement):
(WebCore::SVGFESpecularLightingElement::registerAttributes):
(WebCore::SVGFESpecularLightingElement::parseAttribute):

  • svg/SVGFESpecularLightingElement.h:
  • svg/SVGFETileElement.cpp:

(WebCore::SVGFETileElement::SVGFETileElement):
(WebCore::SVGFETileElement::registerAttributes):
(WebCore::SVGFETileElement::parseAttribute):

  • svg/SVGFETileElement.h:
  • svg/SVGFETurbulenceElement.cpp:

(WebCore::SVGFETurbulenceElement::SVGFETurbulenceElement):
(WebCore::SVGFETurbulenceElement::registerAttributes):
(WebCore::SVGFETurbulenceElement::parseAttribute):
(WebCore::SVGFETurbulenceElement::setFilterEffectAttribute):
(WebCore::SVGFETurbulenceElement::svgAttributeChanged):

  • svg/SVGFETurbulenceElement.h:
  • svg/SVGFilterElement.cpp:

(WebCore::SVGFilterElement::SVGFilterElement):
(WebCore::SVGFilterElement::setFilterRes):
(WebCore::SVGFilterElement::registerAttributes):
(WebCore::SVGFilterElement::parseAttribute):
(WebCore::SVGFilterElement::svgAttributeChanged):
(WebCore::SVGFilterElement::isSupportedAttribute): Deleted.

  • svg/SVGFilterElement.h:
  • svg/SVGFilterPrimitiveStandardAttributes.cpp:

(WebCore::SVGFilterPrimitiveStandardAttributes::SVGFilterPrimitiveStandardAttributes):
(WebCore::SVGFilterPrimitiveStandardAttributes::registerAttributes):
(WebCore::SVGFilterPrimitiveStandardAttributes::parseAttribute):
(WebCore::SVGFilterPrimitiveStandardAttributes::svgAttributeChanged):
(WebCore::SVGFilterPrimitiveStandardAttributes::isSupportedAttribute): Deleted.

  • svg/SVGFilterPrimitiveStandardAttributes.h:

(WebCore::SVGFilterPrimitiveStandardAttributes::attributeRegistry):
(WebCore::SVGFilterPrimitiveStandardAttributes::x const):
(WebCore::SVGFilterPrimitiveStandardAttributes::y const):
(WebCore::SVGFilterPrimitiveStandardAttributes::width const):
(WebCore::SVGFilterPrimitiveStandardAttributes::height const):
(WebCore::SVGFilterPrimitiveStandardAttributes::result const):
(WebCore::SVGFilterPrimitiveStandardAttributes::xAnimated):
(WebCore::SVGFilterPrimitiveStandardAttributes::yAnimated):
(WebCore::SVGFilterPrimitiveStandardAttributes::widthAnimated):
(WebCore::SVGFilterPrimitiveStandardAttributes::heightAnimated):
(WebCore::SVGFilterPrimitiveStandardAttributes::resultAnimated):
(WebCore::SVGFilterPrimitiveStandardAttributes::isKnownAttribute):

  • svg/SVGFitToViewBox.cpp:

(WebCore::SVGFitToViewBox::SVGFitToViewBox):
(WebCore::SVGFitToViewBox::registerAttributes):
(WebCore::SVGFitToViewBox::setViewBox):
(WebCore::SVGFitToViewBox::resetViewBox):
(WebCore::SVGFitToViewBox::reset):
(WebCore::SVGFitToViewBox::parseAttribute):
(WebCore::SVGFitToViewBox::parseViewBox):
(WebCore::SVGFitToViewBox::isKnownAttribute): Deleted.
(WebCore::SVGFitToViewBox::addSupportedAttributes): Deleted.

  • svg/SVGFitToViewBox.h:

(WebCore::SVGFitToViewBox::attributeRegistry):
(WebCore::SVGFitToViewBox::viewBox const):
(WebCore::SVGFitToViewBox::preserveAspectRatio const):
(WebCore::SVGFitToViewBox::viewBoxAnimated):
(WebCore::SVGFitToViewBox::preserveAspectRatioAnimated):
(WebCore::SVGFitToViewBox::setPreserveAspectRatio):
(WebCore::SVGFitToViewBox::resetPreserveAspectRatio):
(WebCore::SVGFitToViewBox::viewBoxString const):
(WebCore::SVGFitToViewBox::preserveAspectRatioString const):
(WebCore::SVGFitToViewBox::hasValidViewBox const):
(WebCore::SVGFitToViewBox::hasEmptyViewBox const):
(WebCore::SVGFitToViewBox::isKnownAttribute):
(WebCore::SVGFitToViewBox::parseAttribute): Deleted.

  • svg/SVGFontElement.cpp:

(WebCore::SVGFontElement::SVGFontElement):

  • svg/SVGFontElement.h:
  • svg/SVGForeignObjectElement.cpp:

(WebCore::SVGForeignObjectElement::SVGForeignObjectElement):
(WebCore::SVGForeignObjectElement::registerAttributes):
(WebCore::SVGForeignObjectElement::parseAttribute):
(WebCore::SVGForeignObjectElement::svgAttributeChanged):
(WebCore::SVGForeignObjectElement::isSupportedAttribute): Deleted.

  • svg/SVGForeignObjectElement.h:
  • svg/SVGGElement.cpp:

(WebCore::SVGGElement::SVGGElement):
(WebCore::SVGGElement::svgAttributeChanged):
(WebCore::SVGGElement::isSupportedAttribute): Deleted.

  • svg/SVGGElement.h:
  • svg/SVGGeometryElement.cpp:

(WebCore::SVGGeometryElement::SVGGeometryElement):
(WebCore::SVGGeometryElement::registerAttributes):
(WebCore::SVGGeometryElement::parseAttribute):
(WebCore::SVGGeometryElement::svgAttributeChanged):
(WebCore::SVGGeometryElement::isSupportedAttribute): Deleted.

  • svg/SVGGeometryElement.h:

(WebCore::SVGGeometryElement::attributeRegistry):
(WebCore::SVGGeometryElement::pathLengthAnimated):
(WebCore::SVGGeometryElement::isKnownAttribute):

  • svg/SVGGlyphRefElement.cpp:

(WebCore::SVGGlyphRefElement::SVGGlyphRefElement):

  • svg/SVGGlyphRefElement.h:
  • svg/SVGGradientElement.cpp:

(WebCore::SVGGradientElement::SVGGradientElement):
(WebCore::SVGGradientElement::registerAttributes):
(WebCore::SVGGradientElement::parseAttribute):
(WebCore::SVGGradientElement::svgAttributeChanged):
(WebCore::SVGGradientElement::isSupportedAttribute): Deleted.

  • svg/SVGGradientElement.h:

(WebCore::SVGGradientElement::attributeRegistry):
(WebCore::SVGGradientElement::spreadMethod const):
(WebCore::SVGGradientElement::gradientUnits const):
(WebCore::SVGGradientElement::gradientTransform const):
(WebCore::SVGGradientElement::spreadMethodAnimated):
(WebCore::SVGGradientElement::gradientUnitsAnimated):
(WebCore::SVGGradientElement::gradientTransformAnimated):
(WebCore::SVGGradientElement::isKnownAttribute):

  • svg/SVGGraphicsElement.cpp:

(WebCore::SVGGraphicsElement::SVGGraphicsElement):
(WebCore::SVGGraphicsElement::registerAttributes):
(WebCore::SVGGraphicsElement::parseAttribute):
(WebCore::SVGGraphicsElement::svgAttributeChanged):
(WebCore::SVGGraphicsElement::isSupportedAttribute): Deleted.
(WebCore::SVGGraphicsElement::requiredFeatures): Deleted.
(WebCore::SVGGraphicsElement::requiredExtensions): Deleted.
(WebCore::SVGGraphicsElement::systemLanguage): Deleted.

  • svg/SVGGraphicsElement.h:

(WebCore::SVGGraphicsElement::attributeRegistry):
(WebCore::SVGGraphicsElement::transform const):
(WebCore::SVGGraphicsElement::transformAnimated):
(WebCore::SVGGraphicsElement::isKnownAttribute):

  • svg/SVGImageElement.cpp:

(WebCore::SVGImageElement::SVGImageElement):
(WebCore::SVGImageElement::registerAttributes):
(WebCore::SVGImageElement::parseAttribute):
(WebCore::SVGImageElement::svgAttributeChanged):
(WebCore::SVGImageElement::haveLoadedRequiredResources):
(WebCore::SVGImageElement::isSupportedAttribute): Deleted.

  • svg/SVGImageElement.h:
  • svg/SVGImageLoader.cpp:

(WebCore::SVGImageLoader::dispatchLoadEvent):

  • svg/SVGLangSpace.cpp:

(WebCore::SVGLangSpace::SVGLangSpace):
(WebCore::SVGLangSpace::registerAttributes):
(WebCore::SVGLangSpace::xmlspace const):
(WebCore::SVGLangSpace::svgAttributeChanged):
(WebCore::SVGLangSpace::setXmllang): Deleted.
(WebCore::SVGLangSpace::setXmlspace): Deleted.
(WebCore::SVGLangSpace::isKnownAttribute): Deleted.
(WebCore::addWithAndWithoutXMLPrefix): Deleted.
(WebCore::SVGLangSpace::addSupportedAttributes): Deleted.

  • svg/SVGLangSpace.h:

(WebCore::SVGLangSpace::xmllang const):
(WebCore::SVGLangSpace::setXmllang):
(WebCore::SVGLangSpace::setXmlspace):
(WebCore::SVGLangSpace::attributeRegistry):
(WebCore::SVGLangSpace::isKnownAttribute):

  • svg/SVGLineElement.cpp:

(WebCore::SVGLineElement::SVGLineElement):
(WebCore::SVGLineElement::registerAttributes):
(WebCore::SVGLineElement::parseAttribute):
(WebCore::SVGLineElement::svgAttributeChanged):
(WebCore::SVGLineElement::isSupportedAttribute): Deleted.

  • svg/SVGLineElement.h:
  • svg/SVGLinearGradientElement.cpp:

(WebCore::SVGLinearGradientElement::SVGLinearGradientElement):
(WebCore::SVGLinearGradientElement::registerAttributes):
(WebCore::SVGLinearGradientElement::parseAttribute):
(WebCore::SVGLinearGradientElement::svgAttributeChanged):
(WebCore::SVGLinearGradientElement::isSupportedAttribute): Deleted.

  • svg/SVGLinearGradientElement.h:
  • svg/SVGMPathElement.cpp:

(WebCore::SVGMPathElement::SVGMPathElement):
(WebCore::SVGMPathElement::svgAttributeChanged):

  • svg/SVGMPathElement.h:
  • svg/SVGMarkerElement.cpp:

(WebCore::SVGMarkerElement::SVGMarkerElement):
(WebCore::SVGMarkerElement::registerAttributes):
(WebCore::SVGMarkerElement::parseAttribute):
(WebCore::SVGMarkerElement::svgAttributeChanged):
(WebCore::SVGMarkerElement::setOrient):
(WebCore::SVGMarkerElement::orientTypePropertyInfo): Deleted.
(WebCore::SVGMarkerElement::isSupportedAttribute): Deleted.
(WebCore::SVGMarkerElement::synchronizeOrientType): Deleted.
(WebCore::SVGMarkerElement::lookupOrCreateOrientTypeWrapper): Deleted.
(WebCore::SVGMarkerElement::orientType const): Deleted.
(WebCore::SVGMarkerElement::orientTypeAnimated): Deleted.

  • svg/SVGMarkerElement.h:
  • svg/SVGMaskElement.cpp:

(WebCore::SVGMaskElement::SVGMaskElement):
(WebCore::SVGMaskElement::registerAttributes):
(WebCore::SVGMaskElement::parseAttribute):
(WebCore::SVGMaskElement::svgAttributeChanged):
(WebCore::SVGMaskElement::isSupportedAttribute): Deleted.
(WebCore::SVGMaskElement::requiredFeatures): Deleted.
(WebCore::SVGMaskElement::requiredExtensions): Deleted.
(WebCore::SVGMaskElement::systemLanguage): Deleted.

  • svg/SVGMaskElement.h:
  • svg/SVGPathElement.cpp:

(WebCore::SVGPathElement::SVGPathElement):
(WebCore::SVGPathElement::registerAttributes):
(WebCore::SVGPathElement::parseAttribute):
(WebCore::SVGPathElement::svgAttributeChanged):
(WebCore::SVGPathElement::pathByteStream const):
(WebCore::SVGPathElement::lookupOrCreateDWrapper):
(WebCore::SVGPathElement::animatedPropertyWillBeDeleted):
(WebCore::SVGPathElement::pathSegList):
(WebCore::SVGPathElement::animatedPathSegList):
(WebCore::SVGPathElement::pathSegListChanged):
(WebCore::SVGPathElement::dPropertyInfo): Deleted.
(WebCore::SVGPathElement::isSupportedAttribute): Deleted.
(WebCore::SVGPathElement::synchronizeD): Deleted.

  • svg/SVGPathElement.h:
  • svg/SVGPathSegListValues.h:

(WebCore::SVGPropertyTraits<SVGPathSegListValues>::toString):

  • svg/SVGPathSegWithContext.h:

(WebCore::SVGPathSegWithContext::animatedProperty const):

  • svg/SVGPatternElement.cpp:

(WebCore::SVGPatternElement::SVGPatternElement):
(WebCore::SVGPatternElement::registerAttributes):
(WebCore::SVGPatternElement::parseAttribute):
(WebCore::SVGPatternElement::svgAttributeChanged):
(WebCore::SVGPatternElement::collectPatternAttributes const):
(WebCore::SVGPatternElement::isSupportedAttribute): Deleted.
(WebCore::SVGPatternElement::requiredFeatures): Deleted.
(WebCore::SVGPatternElement::requiredExtensions): Deleted.
(WebCore::SVGPatternElement::systemLanguage): Deleted.

  • svg/SVGPatternElement.h:
  • svg/SVGPointListValues.h:

(WebCore::SVGPropertyTraits<SVGPointListValues>::toString):

  • svg/SVGPolyElement.cpp:

(WebCore::SVGPolyElement::SVGPolyElement):
(WebCore::SVGPolyElement::registerAttributes):
(WebCore::SVGPolyElement::parseAttribute):
(WebCore::SVGPolyElement::svgAttributeChanged):
(WebCore::SVGPolyElement::points):
(WebCore::SVGPolyElement::animatedPoints):
(WebCore::SVGPolyElement::pointsPropertyInfo): Deleted.
(WebCore::SVGPolyElement::synchronizePoints): Deleted.
(WebCore::SVGPolyElement::lookupOrCreatePointsWrapper): Deleted.

  • svg/SVGPolyElement.h:

(WebCore::SVGPolyElement::pointList const):
(WebCore::SVGPolyElement::attributeRegistry):
(WebCore::SVGPolyElement::isKnownAttribute):

  • svg/SVGPreserveAspectRatioValue.cpp:

(WebCore::SVGPreserveAspectRatioValue::transformRect const):
(WebCore::SVGPreserveAspectRatioValue::transformRect): Deleted.

  • svg/SVGPreserveAspectRatioValue.h:
  • svg/SVGRadialGradientElement.cpp:

(WebCore::SVGRadialGradientElement::SVGRadialGradientElement):
(WebCore::SVGRadialGradientElement::registerAttributes):
(WebCore::SVGRadialGradientElement::parseAttribute):
(WebCore::SVGRadialGradientElement::svgAttributeChanged):
(WebCore::SVGRadialGradientElement::isSupportedAttribute): Deleted.

  • svg/SVGRadialGradientElement.h:
  • svg/SVGRectElement.cpp:

(WebCore::SVGRectElement::SVGRectElement):
(WebCore::SVGRectElement::registerAttributes):
(WebCore::SVGRectElement::parseAttribute):
(WebCore::SVGRectElement::svgAttributeChanged):

  • svg/SVGRectElement.h:
  • svg/SVGSVGElement.cpp:

(WebCore::SVGSVGElement::SVGSVGElement):
(WebCore::SVGSVGElement::registerAttributes):
(WebCore::SVGSVGElement::parseAttribute):
(WebCore::SVGSVGElement::svgAttributeChanged):
(WebCore::SVGSVGElement::viewBoxToViewTransform const):
(WebCore::SVGSVGElement::resetScrollAnchor):
(WebCore::SVGSVGElement::inheritViewAttributes):

  • svg/SVGSVGElement.h:

(WebCore::SVGSVGElement::useCurrentView const): Deleted.
(WebCore::SVGSVGElement::currentTranslateValue): Deleted.
(WebCore::SVGSVGElement::zoomAndPan const): Deleted.
(WebCore::SVGSVGElement::setZoomAndPan): Deleted.
(WebCore::SVGSVGElement::timeContainer): Deleted.
(WebCore::SVGSVGElement::hasEmptyViewBox const): Deleted.

  • svg/SVGScriptElement.cpp:

(WebCore::SVGScriptElement::SVGScriptElement):
(WebCore::SVGScriptElement::svgAttributeChanged):
(WebCore::SVGScriptElement::insertedIntoAncestor):
(WebCore::SVGScriptElement::addSubresourceAttributeURLs const):
(WebCore::SVGScriptElement::isURLAttribute const): Deleted.
(WebCore::SVGScriptElement::sourceAttributeValue const): Deleted.
(WebCore::SVGScriptElement::charsetAttributeValue const): Deleted.
(WebCore::SVGScriptElement::typeAttributeValue const): Deleted.
(WebCore::SVGScriptElement::languageAttributeValue const): Deleted.
(WebCore::SVGScriptElement::forAttributeValue const): Deleted.
(WebCore::SVGScriptElement::eventAttributeValue const): Deleted.
(WebCore::SVGScriptElement::hasAsyncAttribute const): Deleted.
(WebCore::SVGScriptElement::hasDeferAttribute const): Deleted.
(WebCore::SVGScriptElement::hasNoModuleAttribute const): Deleted.
(WebCore::SVGScriptElement::hasSourceAttribute const): Deleted.
(WebCore::SVGScriptElement::filterOutAnimatableAttribute const): Deleted.

  • svg/SVGScriptElement.h:
  • svg/SVGStopElement.cpp:

(WebCore::SVGStopElement::SVGStopElement):
(WebCore::SVGStopElement::registerAttributes):
(WebCore::SVGStopElement::parseAttribute):

  • svg/SVGStopElement.h:
  • svg/SVGStringListValues.h:

(WebCore::SVGPropertyTraits<SVGStringListValues>::toString):

  • svg/SVGSwitchElement.cpp:

(WebCore::SVGSwitchElement::SVGSwitchElement):

  • svg/SVGSwitchElement.h:
  • svg/SVGSymbolElement.cpp:

(WebCore::SVGSymbolElement::SVGSymbolElement):
(WebCore::SVGSymbolElement::parseAttribute):
(WebCore::SVGSymbolElement::svgAttributeChanged):

  • svg/SVGSymbolElement.h:
  • svg/SVGTRefElement.cpp:

(WebCore::SVGTRefElement::SVGTRefElement):

  • svg/SVGTRefElement.h:
  • svg/SVGTests.cpp:

(WebCore::SVGTests::SVGTests):
(WebCore::SVGTests::registerAttributes):
(WebCore::SVGTests::attributeRegistry):
(WebCore::SVGTests::isKnownAttribute):
(WebCore::SVGTests::isValid const):
(WebCore::SVGTests::parseAttribute):
(WebCore::SVGTests::svgAttributeChanged):
(WebCore::SVGTests::requiredFeatures):
(WebCore::SVGTests::requiredExtensions):
(WebCore::SVGTests::systemLanguage):
(WebCore::createSVGTestPropertyInfo): Deleted.
(WebCore::createSVGTextAttributeToPropertyMap): Deleted.
(WebCore::SVGTests::attributeToPropertyMap): Deleted.
(WebCore::SVGTests::handleAttributeChange): Deleted.
(WebCore::SVGTests::synchronizeAttribute): Deleted.
(WebCore::SVGTests::synchronizeRequiredFeatures): Deleted.
(WebCore::SVGTests::synchronizeRequiredExtensions): Deleted.
(WebCore::SVGTests::synchronizeSystemLanguage): Deleted.

  • svg/SVGTests.h:
  • svg/SVGTextContentElement.cpp:

(WebCore::SVGTextContentElement::SVGTextContentElement):
(WebCore::SVGTextContentElement::registerAttributes):
(WebCore::SVGTextContentElement::parseAttribute):
(WebCore::SVGTextContentElement::svgAttributeChanged):
(WebCore::SVGTextContentElement::textLengthPropertyInfo): Deleted.
(WebCore::SVGTextContentElement::synchronizeTextLength): Deleted.
(WebCore::SVGTextContentElement::lookupOrCreateTextLengthWrapper): Deleted.
(WebCore::SVGTextContentElement::textLengthAnimated): Deleted.
(WebCore::SVGTextContentElement::isSupportedAttribute): Deleted.

  • svg/SVGTextContentElement.h:

(WebCore::SVGTextContentElement::specifiedTextLength):
(WebCore::SVGTextContentElement::attributeRegistry):
(WebCore::SVGTextContentElement::textLength const):
(WebCore::SVGTextContentElement::lengthAdjust const):
(WebCore::SVGTextContentElement::textLengthAnimated):
(WebCore::SVGTextContentElement::lengthAdjustAnimated):
(WebCore::SVGTextContentElement::isKnownAttribute):
(WebCore::SVGTextContentElement::SVGAnimatedCustomLengthAttribute::SVGAnimatedCustomLengthAttribute):
(WebCore::SVGTextContentElement::SVGAnimatedCustomLengthAttribute::synchronize):
(WebCore::SVGTextContentElement::SVGAnimatedCustomLengthAttribute::animatedProperty):

  • svg/SVGTextPathElement.cpp:

(WebCore::SVGTextPathElement::SVGTextPathElement):
(WebCore::SVGTextPathElement::registerAttributes):
(WebCore::SVGTextPathElement::parseAttribute):
(WebCore::SVGTextPathElement::svgAttributeChanged):
(WebCore::SVGTextPathElement::isSupportedAttribute): Deleted.

  • svg/SVGTextPathElement.h:
  • svg/SVGTextPositioningElement.cpp:

(WebCore::SVGTextPositioningElement::SVGTextPositioningElement):
(WebCore::SVGTextPositioningElement::registerAttributes):
(WebCore::SVGTextPositioningElement::parseAttribute):
(WebCore::SVGTextPositioningElement::svgAttributeChanged):

  • svg/SVGTextPositioningElement.h:

(WebCore::SVGTextPositioningElement::attributeRegistry):
(WebCore::SVGTextPositioningElement::x const):
(WebCore::SVGTextPositioningElement::y const):
(WebCore::SVGTextPositioningElement::dx const):
(WebCore::SVGTextPositioningElement::dy const):
(WebCore::SVGTextPositioningElement::rotate const):
(WebCore::SVGTextPositioningElement::xAnimated):
(WebCore::SVGTextPositioningElement::yAnimated):
(WebCore::SVGTextPositioningElement::dxAnimated):
(WebCore::SVGTextPositioningElement::dyAnimated):
(WebCore::SVGTextPositioningElement::rotateAnimated):
(WebCore::SVGTextPositioningElement::isKnownAttribute):

  • svg/SVGURIReference.cpp:

(WebCore::SVGURIReference::SVGURIReference):
(WebCore::SVGURIReference::registerAttributes):
(WebCore::SVGURIReference::attributeRegistry):
(WebCore::SVGURIReference::isKnownAttribute):
(WebCore::SVGURIReference::parseAttribute):
(WebCore::SVGURIReference::href const):
(WebCore::SVGURIReference::hrefAnimated):
(WebCore::SVGURIReference::addSupportedAttributes): Deleted.

  • svg/SVGURIReference.h:
  • svg/SVGUseElement.cpp:

(WebCore::SVGUseElement::SVGUseElement):
(WebCore::SVGUseElement::registerAttributes):
(WebCore::SVGUseElement::parseAttribute):
(WebCore::SVGUseElement::insertedIntoAncestor):
(WebCore::SVGUseElement::transferSizeAttributesToTargetClone const):
(WebCore::SVGUseElement::svgAttributeChanged):
(WebCore::SVGUseElement::notifyFinished):

  • svg/SVGUseElement.h:
  • svg/SVGValue.h:
  • svg/SVGViewElement.cpp:

(WebCore::SVGViewElement::SVGViewElement):
(WebCore::SVGViewElement::parseAttribute):

  • svg/SVGViewElement.h:
  • svg/SVGViewSpec.cpp:

(WebCore::SVGViewSpec::SVGViewSpec):
(WebCore::SVGViewSpec::registerAttributes):
(WebCore::SVGViewSpec::transform):
(WebCore::SVGViewSpec::reset):
(WebCore::SVGViewSpec::parseViewSpec):
(WebCore::SVGViewSpec::viewBoxPropertyInfo): Deleted.
(WebCore::SVGViewSpec::preserveAspectRatioPropertyInfo): Deleted.
(WebCore::SVGViewSpec::transformPropertyInfo): Deleted.
(WebCore::SVGViewSpec::viewBoxIdentifier): Deleted.
(WebCore::SVGViewSpec::preserveAspectRatioIdentifier): Deleted.
(WebCore::SVGViewSpec::transformIdentifier): Deleted.
(WebCore::SVGViewSpec::setZoomAndPan): Deleted.
(WebCore::SVGViewSpec::transformString const): Deleted.
(WebCore::SVGViewSpec::viewBoxString const): Deleted.
(WebCore::SVGViewSpec::preserveAspectRatioString const): Deleted.
(WebCore::SVGViewSpec::viewBoxAnimated): Deleted.
(WebCore::SVGViewSpec::preserveAspectRatioAnimated): Deleted.
(WebCore::SVGViewSpec::lookupOrCreateViewBoxWrapper): Deleted.
(WebCore::SVGViewSpec::lookupOrCreatePreserveAspectRatioWrapper): Deleted.
(WebCore::SVGViewSpec::lookupOrCreateTransformWrapper): Deleted.

  • svg/SVGViewSpec.h:
  • svg/SVGViewSpec.idl:
  • svg/SVGZoomAndPan.cpp:

(WebCore::SVGZoomAndPan::SVGZoomAndPan):
(WebCore::SVGZoomAndPan::registerAttributes):
(WebCore::SVGZoomAndPan::parseZoomAndPan):
(WebCore::SVGZoomAndPan::parseAttribute):
(WebCore::SVGZoomAndPan::parse): Deleted.
(WebCore::SVGZoomAndPan::parseAttributeValue): Deleted.

  • svg/SVGZoomAndPan.h:

(WebCore::SVGZoomAndPan::zoomAndPan const):
(WebCore::SVGZoomAndPan::setZoomAndPan):
(WebCore::SVGZoomAndPan::reset):
(WebCore::SVGZoomAndPan::attributeRegistry):
(WebCore::SVGZoomAndPan::isKnownAttribute):
(WebCore::SVGZoomAndPan::parseFromNumber): Deleted.
(WebCore::SVGZoomAndPan::parseAttribute): Deleted.

  • svg/SVGZoomAndPanType.h: Copied from Source/WebCore/svg/SVGValue.h.

(WebCore::SVGPropertyTraits<SVGZoomAndPanType>::initialValue):
(WebCore::SVGPropertyTraits<SVGZoomAndPanType>::toString):
(WebCore::SVGPropertyTraits<SVGZoomAndPanType>::fromString):

  • svg/properties/SVGAnimatedEnumerationPropertyTearOff.h:
  • svg/properties/SVGAnimatedPathSegListPropertyTearOff.cpp: Copied from Source/WebCore/svg/SVGValue.h.

(WebCore::SVGAnimatedPathSegListPropertyTearOff::SVGAnimatedPathSegListPropertyTearOff):
(WebCore::SVGAnimatedPathSegListPropertyTearOff::~SVGAnimatedPathSegListPropertyTearOff):
(WebCore::SVGAnimatedPathSegListPropertyTearOff::animValDidChange):

  • svg/properties/SVGAnimatedPathSegListPropertyTearOff.h:
  • svg/properties/SVGAnimatedProperty.cpp:

(WebCore::SVGAnimatedProperty::SVGAnimatedProperty):
(WebCore::SVGAnimatedProperty::~SVGAnimatedProperty):
(WebCore::SVGAnimatedProperty::animatedPropertyCache): Deleted.

  • svg/properties/SVGAnimatedProperty.h:

(WebCore::SVGAnimatedProperty::isAnimating const):
(WebCore::SVGAnimatedProperty::isAnimatedListTearOff const):
(WebCore::SVGAnimatedProperty::lookupOrCreateAnimatedProperty):
(WebCore::SVGAnimatedProperty::lookupAnimatedProperty):
(WebCore::SVGAnimatedProperty::animatedPropertyCache):
(WebCore::SVGAnimatedProperty::lookupOrCreateWrapper): Deleted.
(WebCore::SVGAnimatedProperty::lookupWrapper): Deleted.

  • svg/properties/SVGAnimatedPropertyMacros.h: Removed.
  • svg/properties/SVGAnimatedPropertyType.h: Copied from Source/WebCore/svg/SVGAElement.idl.
  • svg/properties/SVGAttribute.h: Added.

(WebCore::SVGPropertyAttribute::SVGPropertyAttribute):
(WebCore::SVGPropertyAttribute::value):
(WebCore::SVGPropertyAttribute::value const):
(WebCore::SVGPropertyAttribute::setValue):
(WebCore::SVGPropertyAttribute::resetValue):
(WebCore::SVGPropertyAttribute::toString const):
(WebCore::SVGPropertyAttribute::setShouldSynchronize):
(WebCore::SVGPropertyAttribute::shouldSynchronize const):
(WebCore::SVGPropertyAttribute::synchronize):
(WebCore::SVGAnimatedAttribute::SVGAnimatedAttribute):
(WebCore::SVGAnimatedAttribute::currentValue const):
(WebCore::SVGAnimatedAttribute::animatedProperty):
(WebCore::SVGAnimatedAttributeList::SVGAnimatedAttributeList):
(WebCore::SVGAnimatedAttributeList::detachAnimatedListWrappers):

  • svg/properties/SVGAttributeAccessor.h: Added.

(WebCore::SVGAttributeAccessor::SVGAttributeAccessor):
(WebCore::SVGAttributeAccessor::attributeName const):
(WebCore::SVGAttributeAccessor::isAnimatedLengthAttribute const):
(WebCore::SVGAttributeAccessor::animatedType const):
(WebCore::SVGAttributeAccessor::animatedTypes const):
(WebCore::SVGAttributeAccessor::lookupOrCreateAnimatedProperty const):
(WebCore::SVGAttributeAccessor::lookupAnimatedProperty const):
(WebCore::SVGAttributeAccessor::lookupOrCreateAnimatedProperties const):
(WebCore::SVGPropertyAttributeAccessor::singleton):
(WebCore::SVGPropertyAttributeAccessor::SVGPropertyAttributeAccessor):
(WebCore::SVGPropertyAttributeAccessor::attribute const):
(WebCore::SVGAnimatedAttributeAccessor::singleton):
(WebCore::SVGAnimatedAttributeAccessor::SVGAnimatedAttributeAccessor):
(WebCore::SVGAnimatedAttributeAccessor::lookupOrCreateAnimatedProperty):
(WebCore::SVGAnimatedAttributeAccessor::lookupAnimatedProperty):
(WebCore::SVGAnimatedPairAttributeAccessor::SVGAnimatedPairAttributeAccessor):
(WebCore::SVGAnimatedPairAttributeAccessor::secondAttribute const):

  • svg/properties/SVGAttributeOwnerProxy.h: Copied from Source/WebCore/svg/SVGValue.h.

(WebCore::SVGAttributeOwnerProxy::SVGAttributeOwnerProxy):
(WebCore::SVGAttributeOwnerProxy::element const):

  • svg/properties/SVGAttributeOwnerProxyImpl.h: Added.

(WebCore::SVGAttributeOwnerProxyImpl::SVGAttributeOwnerProxyImpl):
(WebCore::SVGAttributeOwnerProxyImpl::attributeRegistry):
(WebCore::SVGAttributeOwnerProxyImpl::isKnownAttribute):
(WebCore::SVGAttributeOwnerProxyImpl::isAnimatedLengthAttribute):

  • svg/properties/SVGAttributeRegistry.h: Added.

(WebCore::SVGAttributeRegistry::registerAttribute):
(WebCore::SVGAttributeRegistry::isEmpty const):
(WebCore::SVGAttributeRegistry::isKnownAttribute const):
(WebCore::SVGAttributeRegistry::isAnimatedLengthAttribute const):
(WebCore::SVGAttributeRegistry::animatedTypes const):
(WebCore::SVGAttributeRegistry::synchronizeAttributes const):
(WebCore::SVGAttributeRegistry::synchronizeAttribute const):
(WebCore::SVGAttributeRegistry::lookupOrCreateAnimatedProperty const):
(WebCore::SVGAttributeRegistry::lookupAnimatedProperty const):
(WebCore::SVGAttributeRegistry::lookupOrCreateAnimatedProperties const):
(WebCore::SVGAttributeRegistry::animatedTypesBaseTypes):
(WebCore::SVGAttributeRegistry::synchronizeAttributesBaseTypes):
(WebCore::SVGAttributeRegistry::synchronizeAttributeBaseTypes):
(WebCore::SVGAttributeRegistry::lookupOrCreateAnimatedPropertyBaseTypes):
(WebCore::SVGAttributeRegistry::lookupAnimatedPropertyBaseTypes):
(WebCore::SVGAttributeRegistry::lookupOrCreateAnimatedPropertiesBaseTypes):
(WebCore::SVGAttributeRegistry::findAttributeAccessor const):

  • svg/properties/SVGAttributeToPropertyMap.cpp: Removed.
  • svg/properties/SVGAttributeToPropertyMap.h: Removed.
  • svg/properties/SVGPropertyInfo.cpp: Removed.
  • svg/properties/SVGPropertyInfo.h: Removed.
1:41 PM Changeset in webkit [234619] by achristensen@apple.com
  • 74 edits in trunk/Source

Use enum classes and OptionSets for PaintPhase and PaintBehavior
https://bugs.webkit.org/show_bug.cgi?id=188323

Reviewed by Simon Fraser.

Source/WebCore:

No change in behaviour.

  • html/shadow/MediaControlElements.cpp:

(WebCore::MediaControlTextTrackContainerElement::createTextTrackRepresentationImage):

  • page/FrameSnapshotting.cpp:

(WebCore::snapshotFrameRectWithClip):

  • page/FrameView.cpp:

(WebCore::FrameView::reset):
(WebCore::FrameView::willPaintContents):
(WebCore::FrameView::paintContents):
(WebCore::FrameView::setPaintBehavior):
(WebCore::FrameView::paintBehavior const):
(WebCore::FrameView::paintContentsForSnapshot):

  • page/FrameView.h:
  • rendering/InlineElementBox.cpp:

(WebCore::InlineElementBox::paint):

  • rendering/InlineFlowBox.cpp:

(WebCore::InlineFlowBox::paint):
(WebCore::InlineFlowBox::paintBoxDecorations):
(WebCore::InlineFlowBox::paintMask):

  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::paint):

  • rendering/PaintInfo.h:

(WebCore::PaintInfo::PaintInfo):
(WebCore::PaintInfo::forceBlackText const):
(WebCore::PaintInfo::forceWhiteText const):
(WebCore::PaintInfo::skipRootBackground const):
(WebCore::PaintInfo::paintRootBackgroundOnly const):

  • rendering/PaintPhase.h:

(): Deleted.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::paint):
(WebCore::RenderBlock::paintContents):
(WebCore::RenderBlock::paintObject):
(WebCore::RenderBlock::paintSelection):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::paintFloats):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::paintMask):
(WebCore::RenderBox::paintClippingMask):
(WebCore::RenderBox::paintMaskImages):
(WebCore::RenderBox::pushContentsClip):
(WebCore::RenderBox::popContentsClip):

  • rendering/RenderBox.h:
  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::decodingModeForImageDraw const):
(WebCore::RenderBoxModelObject::paintMaskForTextFillBox):
(WebCore::RenderBoxModelObject::fixedBackgroundPaintsInLocalCoordinates const):

  • rendering/RenderDetailsMarker.cpp:

(WebCore::RenderDetailsMarker::paint):

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::paintAsInlineBlock):
(WebCore::RenderElement::selectionColor const):

  • rendering/RenderEmbeddedObject.cpp:

(WebCore::RenderEmbeddedObject::paint):
(WebCore::RenderEmbeddedObject::paintReplaced):

  • rendering/RenderFileUploadControl.cpp:

(WebCore::RenderFileUploadControl::paintObject):

  • rendering/RenderFrameSet.cpp:

(WebCore::RenderFrameSet::paint):

  • rendering/RenderHTMLCanvas.cpp:

(WebCore::RenderHTMLCanvas::paintReplaced):

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::paintReplaced):
(WebCore::RenderImage::paint):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::renderableTransform const):
(WebCore::transparencyClipBox):
(WebCore::expandClipRectForDescendantsAndReflection):
(WebCore::paintingExtent):
(WebCore::RenderLayer::paint):
(WebCore::RenderLayer::paintOverlayScrollbars):
(WebCore::RenderLayer::paintLayer):
(WebCore::RenderLayer::paintLayerContents):
(WebCore::RenderLayer::paintBackgroundForFragments):
(WebCore::RenderLayer::paintForegroundForFragments):
(WebCore::RenderLayer::paintForegroundForFragmentsWithPhase):
(WebCore::RenderLayer::paintOutlineForFragments):
(WebCore::RenderLayer::paintMaskForFragments):
(WebCore::RenderLayer::paintChildClippingMaskForFragments):
(WebCore::RenderLayer::calculateClipRects const):

  • rendering/RenderLayer.h:
  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::paintIntoLayer):
(WebCore::RenderLayerBacking::paintContents):

  • rendering/RenderLayerBacking.h:
  • rendering/RenderLineBoxList.cpp:

(WebCore::RenderLineBoxList::paint const):

  • rendering/RenderListBox.cpp:

(WebCore::RenderListBox::paintObject):

  • rendering/RenderListMarker.cpp:

(WebCore::RenderListMarker::paint):

  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::paint):
(WebCore::RenderReplaced::shouldPaint):

  • rendering/RenderReplica.cpp:

(WebCore::RenderReplica::paint):

  • rendering/RenderScrollbarPart.cpp:

(WebCore::RenderScrollbarPart::paintIntoRect):

  • rendering/RenderSnapshottedPlugIn.cpp:

(WebCore::RenderSnapshottedPlugIn::paint):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::paintObject):
(WebCore::RenderTable::paintMask):
(WebCore::RenderTable::overflowClipRect):

  • rendering/RenderTable.h:
  • rendering/RenderTableCell.cpp:

(WebCore::RenderTableCell::paint):
(WebCore::RenderTableCell::paintCollapsedBorders):
(WebCore::RenderTableCell::paintMask):

  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::paintOutlineForRowIfNeeded):
(WebCore::RenderTableRow::paint):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::paint):
(WebCore::RenderTableSection::paintCell):
(WebCore::RenderTableSection::paintObject):

  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::paintSnapshottedPluginOverlay):
(WebCore::RenderThemeMac::paintImageControlsButton):

  • rendering/RenderVideo.cpp:

(WebCore::RenderVideo::paintReplaced):

  • rendering/RenderWidget.cpp:

(WebCore::RenderWidget::paintContents):
(WebCore::RenderWidget::paint):

  • rendering/RootInlineBox.cpp:

(WebCore::RootInlineBox::paintEllipsisBox const):

  • rendering/SimpleLineLayoutFunctions.cpp:

(WebCore::SimpleLineLayout::paintFlow):

  • rendering/mathml/MathOperator.cpp:

(WebCore::MathOperator::paint):

  • rendering/mathml/RenderMathMLBlock.cpp:

(WebCore::RenderMathMLBlock::paint):

  • rendering/mathml/RenderMathMLFraction.cpp:

(WebCore::RenderMathMLFraction::paint):

  • rendering/mathml/RenderMathMLMenclose.cpp:

(WebCore::RenderMathMLMenclose::paint):

  • rendering/mathml/RenderMathMLToken.cpp:

(WebCore::RenderMathMLToken::paint):

  • rendering/svg/RenderSVGContainer.cpp:

(WebCore::RenderSVGContainer::paint):

  • rendering/svg/RenderSVGForeignObject.cpp:

(WebCore::RenderSVGForeignObject::paint):

  • rendering/svg/RenderSVGImage.cpp:

(WebCore::RenderSVGImage::paint):

  • rendering/svg/RenderSVGResource.cpp:

(WebCore::requestPaintingResource):

  • rendering/svg/RenderSVGResourceClipper.cpp:

(WebCore::RenderSVGResourceClipper::drawContentIntoMaskImage):

  • rendering/svg/RenderSVGResourceSolidColor.cpp:

(WebCore::RenderSVGResourceSolidColor::applyResource):

  • rendering/svg/RenderSVGRoot.cpp:

(WebCore::RenderSVGRoot::paintReplaced):

  • rendering/svg/RenderSVGShape.cpp:

(WebCore::RenderSVGShape::paint):

  • rendering/svg/RenderSVGText.cpp:

(WebCore::RenderSVGText::paint):

  • rendering/svg/SVGInlineFlowBox.cpp:

(WebCore::SVGInlineFlowBox::paintSelectionBackground):
(WebCore::SVGInlineFlowBox::paint):

  • rendering/svg/SVGInlineTextBox.cpp:

(WebCore::SVGInlineTextBox::paintSelectionBackground):
(WebCore::SVGInlineTextBox::paint):

  • rendering/svg/SVGRenderingContext.cpp:

(WebCore::isRenderingMaskImage):
(WebCore::SVGRenderingContext::renderSubtreeToImageBuffer):

  • rendering/svg/SVGRootInlineBox.cpp:

(WebCore::SVGRootInlineBox::paint):

Source/WebKit:

  • WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:

(WebKit::imageForRect):

  • WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:

(WebKit::InjectedBundleRangeHandle::renderedImage):

  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::shouldCreateTransientPaintingSnapshot const):

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebContextMenuClient.mm:

(WebContextMenuClient::imageForCurrentSharingServicePickerItem):

  • WebView/WebFrame.mm:

(-[WebFrame _paintBehaviorForDestinationContext:]):
(-[WebFrame _drawRect:contentsOnly:]):

  • WebView/WebHTMLView.mm:

(imageFromRect):
(selectionImage):

Source/WTF:

  • wtf/OptionSet.h:

(WTF::OptionSet::OptionSet):
Allow a zero-valued enum value in the OptionSet constructor.

1:35 PM Changeset in webkit [234618] by rniwa@webkit.org
  • 2 edits in trunk/LayoutTests

fast/custom-elements/custom-element-registry-wrapper-should-stay-alive.html always timeouts on debug bots
https://bugs.webkit.org/show_bug.cgi?id=188353

Add a timeout expectation to the test while I verify the fix for the test.

1:30 PM Changeset in webkit [234617] by Kocsen Chung
  • 1 copy in branches/safari-606.1.36.1-branch

New branch.

1:23 PM Changeset in webkit [234616] by Kocsen Chung
  • 1 copy in branches/safari-606.1.36.0-branch

New branch.

1:17 PM Changeset in webkit [234615] by Ryan Haddad
  • 11 edits
    2 deletes in trunk/Source/WebKit

Unreviewed, rolling out r234552.

Introduced 2 layout test failures on High Sierra.

Reverted changeset:

"Check with SafeBrowsing during navigation in WKWebView"
https://bugs.webkit.org/show_bug.cgi?id=188133
https://trac.webkit.org/changeset/234552

12:31 PM Changeset in webkit [234614] by Wenson Hsieh
  • 2 edits in trunk/Tools

[iOS] Caret disappears after resigning and becoming first responder if active focus state is retained
https://bugs.webkit.org/show_bug.cgi?id=188322
<rdar://problem/42455270>

Reviewed by Tim Horton.

Fixes an API test added in r234600, which had incorrect test expectations — namely, the width of the caret rect
was not in content view coordinates, unlike the x, y, and height.

  • TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:

(rounded):
(-[TestWKWebView waitForCaretViewFrameToBecome:]):
(-[TestWKWebView waitForSelectionViewRectsToBecome:]):
(TestWebKitAPI::TEST):

11:46 AM Changeset in webkit [234613] by Ryan Haddad
  • 23 edits
    5 deletes in trunk

Unreviewed, rolling out r234569.

Breaks internal builds.

Reverted changeset:

"We should cache the compiled sandbox profile in a data vault"
https://bugs.webkit.org/show_bug.cgi?id=184991
https://trac.webkit.org/changeset/234569

11:37 AM Changeset in webkit [234612] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening for mac-wk1.

  • platform/mac-wk1/TestExpectations:
11:31 AM Changeset in webkit [234611] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Fix IPC::Connection leak in StorageManager
https://bugs.webkit.org/show_bug.cgi?id=188321
<rdar://problem/42748485>

Reviewed by Alex Christensen.

When a StorageMap is destroyed on WebContent process side, StorageManager::destroyStorageMap()
gets called via IPC with a (IPC::Connection, StorageMapID) pair. Normally, it removes this
pair from m_storageAreasByConnection. However, if this is a *transient* StorageMap (sessionStorage),
then we keep the pair in the map and we merely remove the StorageMapID as a listener from the
StorageArea. We do this so that:

  1. The StorageArea stays alive so that it can be reused later on for the same security origin, on the same IPC::Connection (logic for this is in StorageManager::createTransientLocalStorageMap()
  2. Removing the StorageMapID as a listener from the StorageArea is important because StorageArea::m_eventListeners holds a strong reference to the IPC::Connection in a std::pair with the StorageMapID (HashSet<std::pair<RefPtr<IPC::Connection>, uint64_t>> m_eventListeners).

As mentioned in 1 above, in StorageManager::createTransientLocalStorageMap(), there is logic to
check if there is already an existing StorageArea for the given IPC::Connection that is transient
and is for the same security origin. In this case, we could avoid constructing a new StorageArea
and we would:

  1. Add a new entry to m_storageAreasByConnection with the key (connection, newStorageMapID), using same same StorageArea as value.
  2. Remove the previous (connection, oldStorageMapID) key from m_storageAreasByConnection.

Step 2 here is wrong and is updated in this patch. It is only safe to remove the previous
(connection, oldStorageMapID) if this oldStorageMapID no longer exists (i.e. destroyStorageMap()
was already called for it). This patch thus adds a check before removing (connection, oldStorageMapID)
from the HashMap to make sure that the oldStorageMapID is no longer a listener of the StorageArea).

This would cause leaks in the following case:

  1. We construct a StorageArea for (connection1, storageMapId1)
  2. We ask for a StorageArea for (connection1, storageMapId2) and decide to reuse the existing StorageArea since it has the same SecurityOrigin.
  3. As a result of step2, we would remove (connection1, storageMapId1) from m_storageAreasByConnection and add (connection1, storageMapId2), even though there is still a StorageMap with storageMapId1 on WebContent process side.
  4. Later on, we would try to call destroyStorageMap(connection1, storageMap1), it would fail to find it in m_storageAreasByConnection and return early. It would therefore fail to remove storageMapId1 as a listener of the StorageArea which still exists.

-> This would leak the IPC::Connection that there would be a std::pair<RefPtr<IPC::Connection>, StorageMapID>

with value (connection1, storageMap1) which would get leaked and it would ref the IPC::Connection.

This code should really be refactored to be less leak prone but I have kept the patch minimal for now
to facilitate cherry-picking.

Note that this would reproduce very easily on sina.com.cn, when clicking bold links at the top, which
opens new tabs to different pages in the same WebContent process. When closing all Safari windows, the
IPC::Connection for this WebContent process would stay alive.

  • UIProcess/WebStorage/StorageManager.cpp:

(WebKit::StorageManager::StorageArea::hasListener const):
(WebKit::StorageManager::createTransientLocalStorageMap):

11:19 AM Changeset in webkit [234610] by commit-queue@webkit.org
  • 46 edits in trunk/Source

Make BlendMode an enum class
https://bugs.webkit.org/show_bug.cgi?id=188325

Patch by Alex Christensen <achristensen@webkit.org> on 2018-08-06
Reviewed by Darin Adler.

Source/WebCore:

No change in behavior.

  • css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator BlendMode const):

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::parseAttribute):

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::State::State):
(WebCore::CanvasRenderingContext2DBase::setGlobalCompositeOperation):
(WebCore::CanvasRenderingContext2DBase::drawImageFromRect):

  • platform/graphics/BitmapImage.h:
  • platform/graphics/GraphicsContext.h:

(WebCore::ImagePaintingOptions::ImagePaintingOptions):

  • platform/graphics/GraphicsContextImpl.h:
  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::dumpProperties const):

  • platform/graphics/GraphicsLayer.h:
  • platform/graphics/GraphicsTypes.cpp:

(WebCore::parseBlendMode):
(WebCore::parseCompositeAndBlendOperator):
(WebCore::compositeOperatorName):
(WebCore::blendModeName):
(WebCore::operator<<):

  • platform/graphics/GraphicsTypes.h:
  • platform/graphics/Image.cpp:

(WebCore::Image::drawTiled):

  • platform/graphics/Image.h:
  • platform/graphics/ImageBuffer.h:
  • platform/graphics/ca/cocoa/PlatformCAFiltersCocoa.mm:

(PlatformCAFilters::setBlendingFiltersOnLayer):

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::selectCGBlendMode):

  • platform/graphics/cpu/arm/filters/FEBlendNEON.h:

(WebCore::FEBlend::platformApplyNEON):

  • platform/graphics/displaylists/DisplayListItems.h:
  • platform/graphics/displaylists/DisplayListRecorder.h:
  • platform/graphics/filters/FEBlend.cpp:

(WebCore::FEBlend::externalRepresentation const):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::paintFillLayers):

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::paintIntoRect):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::RenderLayer):
(WebCore::RenderLayer::updateBlendMode):
(WebCore::RenderLayer::beginTransparencyLayers):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateBlendMode):

  • rendering/style/FillLayer.cpp:

(WebCore::FillLayer::FillLayer):
(WebCore::FillLayer::hasOpaqueImage const):

  • rendering/style/FillLayer.h:

(WebCore::FillLayer::initialFillBlendMode):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::setBlendMode):
(WebCore::RenderStyle::hasBlendMode const):
(WebCore::RenderStyle::blendMode const):
(WebCore::RenderStyle::initialBlendMode):

  • rendering/style/StyleRareNonInheritedData.cpp:

(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):

  • rendering/svg/SVGRenderingContext.cpp:

(WebCore::SVGRenderingContext::prepareToRenderSVGContent):

  • svg/SVGAnimatedEnumeration.cpp:

(WebCore::enumerationValueForTargetAttribute):

  • svg/SVGFEBlendElement.cpp:

(WebCore::SVGFEBlendElement::SVGFEBlendElement):
(WebCore::SVGFEBlendElement::parseAttribute):

  • svg/SVGFEBlendElement.h:

(WebCore::SVGPropertyTraits<BlendMode>::highestEnumValue):
(WebCore::SVGPropertyTraits<BlendMode>::toString):

  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::nativeImageForCurrentFrame):
(WebCore::SVGImage::nativeImage):
(WebCore::SVGImage::drawPatternForContainer):
(WebCore::SVGImage::draw):

Source/WebKit:

  • Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:

(WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties):

11:06 AM Changeset in webkit [234609] by commit-queue@webkit.org
  • 5 edits
    2 adds in trunk

[iOS] Indeterminate checkboxes appear unchecked
https://bugs.webkit.org/show_bug.cgi?id=160484
<rdar://problem/31143185>

Patch by Aditya Keerthi <Aditya Keerthi> on 2018-08-06
Reviewed by Wenson Hsieh.

Source/WebCore:

Add support for rendering indeterminate checkboxes on iOS.

We now paint the unchecked appearance only if the checkbox is not checked and is
not indeterminate. Otherwise, we draw a checkmark if the checkbox is in the
checked state and a dash if the checkbox is in the indeterminate state. Both of
these states share the same dark background.

Test: fast/forms/ios/render-indeterminate-checkbox.html

  • css/html.css:

(input[type="checkbox"]:indeterminate):
(input[type="checkbox"]:indeterminate:disabled):

  • rendering/RenderThemeIOS.mm:

(WebCore::drawJoinedLines):
(WebCore::RenderThemeIOS::paintCheckboxDecorations):

LayoutTests:

Added reftest to ensure that the indeterminate checkbox does not appear the same
as an unchecked checkbox.

  • fast/forms/ios/render-indeterminate-checkbox-expected-mismatch.html: Added.
  • fast/forms/ios/render-indeterminate-checkbox.html: Added.
  • platform/ios/fast/forms/indeterminate-expected.txt: Rebaseline.
10:45 AM Changeset in webkit [234608] by rniwa@webkit.org
  • 4 edits in trunk

HTML parser should execute custom element reactions for setting attributes immediately after creating a custom element
https://bugs.webkit.org/show_bug.cgi?id=188336

Reviewed by Frédéric Wang.

LayoutTests/imported/w3c:

Rebaseline the test now that the relevant test case is passing.

  • web-platform-tests/custom-elements/parser/parser-sets-attributes-and-children-expected.txt:

Source/WebCore:

Push and pop an element queue from the custom element reactions stack when constructing a custom element:
https://html.spec.whatwg.org/multipage/parsing.html#create-an-element-for-the-token

To do this, we instantiate CustomElementReactionStack in HTMLDocumentParser::runScriptsForPausedTreeBuilder
where we synchronously construct a custom element. We don't have to worry about whether *will execute script*
is set or not since the presence of an element queue should not be observable in the case where we're constructing
a fallback element (since it would not enqueue any new custom element reaction).

Tests: imported/w3c/web-platform-tests/custom-elements/parser/parser-sets-attributes-and-children.html

  • html/parser/HTMLDocumentParser.cpp:

(WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder): Instantiate CustomElementReactionStack. Note that we
don't insert the custom element into the parser until we finish processing the custom element reactions.

10:43 AM Changeset in webkit [234607] by Fujii Hironori
  • 3 edits in trunk/Tools

[Win][DLLLauncher] Remove --highDPI switch
https://bugs.webkit.org/show_bug.cgi?id=188255

Reviewed by Yusuke Suzuki.

Bug 149417 has added --highDPI switch to make MiniBrowser DPI
aware. But, Bug 158733 has made MiniBrowser always DPI aware. It
became useless since the change. Remove the switch.

This change fixes the issue all dump render tree tests are failing
in WinCairo port if high DPI display is connected.

  • MiniBrowser/win/Common.cpp:

(parseCommandLine): Removed --highDPI switch.

  • win/DLLLauncher/DLLLauncherMain.cpp:

(wWinMain): Do not call SetProcessDPIAware.
(shouldUseHighDPI): Deleted.

10:25 AM Changeset in webkit [234606] by Ryan Haddad
  • 2 edits in trunk/Source/WTF

Unreviewed, fix the build by ignoring some deprecation warnings.

  • wtf/MD5.cpp:

(WTF::MD5::MD5):
(WTF::MD5::addBytes):
(WTF::MD5::checksum):

10:12 AM Changeset in webkit [234605] by Adrian Perez de Castro
  • 1 copy in releases/WPE WebKit/webkit-2.20.2

WPE WebKit 2.20.2

10:11 AM Changeset in webkit [234604] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.20/Source

Unreviewed. Update OptionsWPE.cmake and NEWS for 2.20.2 release.

9:47 AM Changeset in webkit [234603] by cturner@igalia.com
  • 7 edits in trunk/Source/WebCore

Return extracted key ids as an optional
https://bugs.webkit.org/show_bug.cgi?id=188303

Reviewed by Darin Adler.

An empty list of extracted key ids was being considered a failure
case before this patch. In the PSSH boxes from the CENC standard,
it's not uncommon for the box to be version 0, meaning it has no
embedded key ids, so the case when there's an empty list should
not be treated as an error. Given this, the interface should be
more general and allow for a sentinel value indicating a parsing
error rather than an absence of key ids.

Covered by existing tests.

  • Modules/encryptedmedia/InitDataRegistry.cpp:

(WebCore::extractKeyIDsKeyids): Change return type to be wrapped
in an optional, and make parsing errors return a nullopt rather
than an empty vector.
(WebCore::sanitizeKeyids): Use the new optional interface, return
a null RefPtr in the case of a parsing error, this method may now
return an empty vector.
(WebCore::extractKeyIDsCenc): Not implemented, so return an error
value rather than an empty vector.
(WebCore::extractKeyIDsWebM): Ditto.
(WebCore::InitDataRegistry::extractKeyIDs): Ditto.

  • Modules/encryptedmedia/InitDataRegistry.h: Update the interface

to use an optional return type.

  • platform/graphics/avfoundation/CDMFairPlayStreaming.cpp:

(WebCore::CDMPrivateFairPlayStreaming::extractKeyIDsSinf): Update
to use the new interface.
(WebCore::CDMPrivateFairPlayStreaming::extractKeyIDsSkd): Ditto.

  • platform/graphics/avfoundation/CDMFairPlayStreaming.h: Ditto.
  • platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:

(WebCore::CDMInstanceFairPlayStreamingAVFObjC::keyIDs): Convert
the optional value into a vector, since it is assumed you can not
have an empty vector of key ids in the init datas FPS supports.

  • testing/MockCDMFactory.cpp:

(WebCore::MockCDMInstance::requestLicense): Only return an error
if there really was a parsing error, rather than the case of there
being zero key ids in the init data payload.

9:13 AM Changeset in webkit [234602] by Truitt Savell
  • 2 edits in trunk/LayoutTests

storage/indexeddb/modern/opendatabase-after-storage-crash.html is causing tests in directory svg/ to timeout at random
https://bugs.webkit.org/show_bug.cgi?id=187931

Unreviewed test gardening.

  • platform/wk2/TestExpectations:
8:05 AM GRefPtr edited by Adrian Perez de Castro
Update links to GRefPtr.{h,cpp} source files (diff)
8:01 AM Changeset in webkit [234601] by Wenson Hsieh
  • 14 edits in trunk

[iOS] Tests that try to interact with the QuickType bar time out on iOS 11+
https://bugs.webkit.org/show_bug.cgi?id=188335
<rdar://problem/32542437> and <rdar://problem/32542433>

Reviewed by Tim Horton.

Tools:

Remove a UIScriptController helper method that attempted to wait for QuickType buttons to appear, and then send
touch events to the buttons. These were only used for the two tests which this patch refactors. See the
LayoutTests ChangeLog for more detail.

  • DumpRenderTree/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::selectTextCandidateAtIndex): Deleted.

  • TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
  • TestRunnerShared/UIScriptContext/UIScriptController.cpp:

(WTR::UIScriptController::selectTextCandidateAtIndex): Deleted.
(WTR::UIScriptController::waitForTextPredictionsViewAndSelectCandidateAtIndex): Deleted.

  • TestRunnerShared/UIScriptContext/UIScriptController.h:
  • TestRunnerShared/spi/UIKitTestSPI.h:

Remove an internal class declaration that is now unnecessary.

  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::selectTextCandidateAtIndex): Deleted.
(WTR::UIScriptController::waitForTextPredictionsViewAndSelectCandidateAtIndex): Deleted.

LayoutTests:

Refactors a couple of tests that currently rely on the QuickType bar being shown when the hardware keyboard is
presented in the iOS simulator, so that it can insert text suggestions by tapping QuickType bar buttons; in the
first place, it was never guaranteed that this bar would show up, or even have more than 1 text suggestion.
Instead, we use the existing UIScriptController::applyAutocorrection method to trigger text replacement in the
same way tapping a button on the QuickType bar would replace the current word with the suggested word.

  • fast/events/ios/before-input-events-prevent-candidate-insertion-expected.txt:
  • fast/events/ios/before-input-events-prevent-candidate-insertion.html:
  • fast/events/ios/input-events-insert-replacement-text-expected.txt:
  • fast/events/ios/input-events-insert-replacement-text.html:
  • platform/ios/TestExpectations:

Removes a [Timeout] expectation.

  • resources/ui-helper.js:

(window.UIHelper.typeCharacter):

Add a new UIHelper method to type a character using the keyboard. Sends hardware keyboard events on the WebKit2
port of iOS, and uses EventSender elsewhere.

(window.UIHelper.applyAutocorrection):

Add a new UIHelper method that wraps UIScriptController::applyAutocorrection. Only supported in WebKit2
currently.

(window.UIHelper):

7:14 AM Changeset in webkit [234600] by Wenson Hsieh
  • 14 edits
    2 adds in trunk

[iOS] Caret disappears after resigning and becoming first responder if active focus state is retained
https://bugs.webkit.org/show_bug.cgi?id=188322
<rdar://problem/42455270>

Reviewed by Tim Horton.

Source/WebKit:

Prior to r230745, when a user selects a word in non-editable web content without a prior selection, we would
always try to activate the text interaction assistant, creating a selection view (a UITextSelectionView). After
the long press is recognized, this text selection view is configured for "highlight mode", which is a special
mode for presenting selection UI where the grabber handles at the start and end of the selection are suppressed.
UIKit then prepares to show the selection by asking WKContentView for the number of selection rects; if this
number is zero, the UITextSelectionView is removed from the superview, and state that keeps track of whether the
selection view is in "highlight mode" is reset.

In the case where there's no prior selection, our cached EditorState in the UI process will not be up to date
yet when the gesture is recognized. This means that when UIKit asks us for the number of selection rects, we'll
return 0, which causes any state tracking "highlight mode" for the selection to be reset, subsequently resulting
in selection handles showing up before the user has ended the initial loupe gesture.

r230745 addressed this bug by removing logic to activate the text selection when becoming first responder,
instead deferring until the next -_selectionChanged call with post-layout editor state data to activate the
selection. While this does ensure that selection handles don't erroneously appear, it also means that clients
that call -becomeFirstResponder to show selection UI and the keyboard in a web view while an element is already
focused will not have an active selection assistant (i.e. the selection view will still be hidden). One way this
happens is when Safari uses -_retainActiveFocusedState in combination with -resignFirstResponder and
-becomeFirstResponder to temporarily switch focus away from the web view when the URL bar is tapped.

To fix both the inactive selection after -becomeFirstResponder as well as the selection handles showing up
when performing a loupe gesture, we simply make the check in -becomeFirstResponderForWebView more nuanced.
Instead of always activating the selection or never activating the selection, only activate the selection if the
current editor state has information about a selection to avoid causing the selection view to be immediately
removed and "highlight mode" to be reset when selecting a word via loupe gesture for the first time.

Tests: KeyboardInputTests.CaretSelectionRectAfterRestoringFirstResponder

KeyboardInputTests.RangedSelectionRectAfterRestoringFirstResponder
editing/selection/ios/selection-handles-after-touch-end.html

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView becomeFirstResponderForWebView]):
(-[WKContentView canShowNonEmptySelectionView]):

Tools:

Adds plumbing in UIScriptController to grab the start and end selection handle rects for use in the new layout
test. Also adds new API tests to verify that when a web view resigns first responder, both caret and range
selection views are hidden, and when first responder status is restored, both caret and range selection views
are made visible again.

  • DumpRenderTree/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::selectionStartGrabberViewRect const):
(WTR::UIScriptController::selectionEndGrabberViewRect const):

  • TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
  • TestRunnerShared/UIScriptContext/UIScriptController.cpp:

(WTR::UIScriptController::selectionStartGrabberViewRect const):
(WTR::UIScriptController::selectionEndGrabberViewRect const):

  • TestRunnerShared/UIScriptContext/UIScriptController.h:
  • TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:

(-[TestWKWebView waitForCaretViewFrameToBecome:]):
(-[TestWKWebView waitForSelectionViewRectsToBecome:]):
(webViewWithAutofocusedInput):

Pull out some common logic for creating a web view that allows programmatic focus to present the keyboard, and
immediately loading a web page with an autofocusing text field.

(TestWebKitAPI::TEST):

  • TestWebKitAPI/cocoa/TestWKWebView.h:
  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(-[TestWKWebView caretViewRectInContentCoordinates]):
(-[TestWKWebView selectionViewRectsInContentCoordinates]):

  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::selectionStartGrabberViewRect const):
(WTR::UIScriptController::selectionEndGrabberViewRect const):

LayoutTests:

Adds a new layout test to verify that (1) selection handles are not shown when selecting a word by long
pressing prior to ending the touch, and (2) selection handles are shown after ending the touch.

  • editing/selection/ios/selection-handles-after-touch-end-expected.txt: Added.
  • editing/selection/ios/selection-handles-after-touch-end.html: Added.
  • platform/win/TestExpectations:

Skip iOS selection tests on Windows.

  • resources/ui-helper.js:

Introduces new hooks in UIHelper to grab the frames of the start and end selection handle views.

(window.UIHelper.getSelectionStartGrabberViewRect.return.new.Promise.):
(window.UIHelper.getSelectionStartGrabberViewRect.return.new.Promise):
(window.UIHelper.getSelectionStartGrabberViewRect):
(window.UIHelper.getSelectionEndGrabberViewRect.return.new.Promise.):
(window.UIHelper.getSelectionEndGrabberViewRect.return.new.Promise):
(window.UIHelper.getSelectionEndGrabberViewRect):

6:59 AM Changeset in webkit [234599] by Wenson Hsieh
  • 2 edits in trunk/Tools

[iOS] Layout tests that send HID events cause WebKitTestRunner to crash on recent SDKs
https://bugs.webkit.org/show_bug.cgi?id=188334
<rdar://problem/40630074>

Reviewed by Tim Horton.

To mark the end of previously dispatched IOHID events, HIDEventGenerator currently sends a vendor-defined event
and stores the completion callback ID for the previously dispatched events as vendor-defined data. When this
vendor-defined marker event is handled by the application, we then read the callback ID back from the event, map
it to a completion block, and invoke the completion block to signal that the previous HID event has been
processed.

This callback ID is an unsigned, so we tell IOKit that we need sizeof(unsigned) (4 bytes) to store it. On
shipping software, IOKit clamps this to a minimum of 8 bytes, i.e. sizeof(CFIndex). When we later call
IOHIDEventGetIntegerValue to read the value of our vendor-defined data as a CFIndex, we get our expected
callback ID because the buffer was clamped to 8 bytes.

However, on recent iOS SDKs that contain the fix for <rdar://problem/20082284>, IOKit no longer clamps the size
of the vendor-defined data buffer to 8 bytes. This means that when we try to use IOHIDEventGetIntegerValue to
read our callback ID back, we end up getting a CFIndex where the lower 4 bytes are the callback ID we wrote, and
the upper 4 bytes are garbage. In the case where any of these upper 4 bytes are non-zero, we fail to map the
callback ID to a completion handler, and so we never finish dispatching the HID event, causing an exception to
be thrown.

To fix this, we adjust callback ID to be a CFIndex, which matches IOHIDEventGetIntegerValue's return type.

  • WebKitTestRunner/ios/HIDEventGenerator.mm:

(+[HIDEventGenerator nextEventCallbackID]):
(-[HIDEventGenerator _sendMarkerHIDEventWithCompletionBlock:]):

Also refactor a bit of -_sendMarkerHIDEventWithCompletionBlock: by using auto and move semantics.

5:59 AM Changeset in webkit [234598] by Claudio Saavedra
  • 2 edits in trunk/LayoutTests

[WPE] New webgl 2.0 failures.

Unreviewed gardening.

  • platform/wpe/TestExpectations: Two webgl 2.0 tests are failing,

mark them.

5:45 AM Changeset in webkit [234597] by Claudio Saavedra
  • 2 edits in trunk/LayoutTests

[GTK] Skip new webgl 2.0 tests. Unreviewed gardening.

  • platform/gtk/TestExpectations: Expanded webgl 2.0 skipped

test to include all, since there were new failures.

2:56 AM Changeset in webkit [234596] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

Make two-arguments versions of scrollBy/scrollTo depend on the one-argument versions
https://bugs.webkit.org/show_bug.cgi?id=188300

Patch by Frederic Wang <fwang@igalia.com> on 2018-08-06
Reviewed by Darin Adler.

This patch refactors a bit the scrollBy/scrollTo code, so that the two-arguments versions
share the same code path as the more generic one-argument versions. In particular, this
helps to implement the ScrollBehavior option (bug 188043) since the one-argument versions
will require to distinguish between smooth and instant scrolling. The logic to normalize
non finite left/right values or to use a fallback when they are absent is also factored out
into ScrollToOptions.

References:
https://drafts.csswg.org/cssom-view/#dom-element-scroll
https://drafts.csswg.org/cssom-view/#dom-element-scrollby
https://drafts.csswg.org/cssom-view/#dom-window-scroll
https://drafts.csswg.org/cssom-view/#dom-window-scrollby

No new tests, behavior is unchanged.

  • dom/Element.cpp:

(WebCore::Element::scrollBy): Make two-parameter version depends on one-parameter version
and rewrite the normalize / fallback logic.
(WebCore::Element::scrollTo): Rewrite the normalize / fallback logic.
(WebCore::normalizeNonFiniteValue): Deleted. The logic is moved to ScrollToOptions.

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::scrollBy const): Make two-parameter version depends on one-parameter
version and rewrite the normalize / fallback logic.
(WebCore::DOMWindow::scrollTo const): Make two-parameter version depends on one-parameter
version and rewrite the normalize / fallback logic.

  • page/ScrollToOptions.h: Add <cmath> to use std::isfinite

(WebCore::ScrollToOptions::normalizeNonFiniteCoordinatesOrFallBackTo): New function to
normalize left/right values or fallback to the specified value if it is missing.

2:24 AM Changeset in webkit [234595] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebCore

Unreviewed follow-up to r234594.

Add missing constructor and destructor definitions for the bunch of new
classes that were added in that revision.

  • platform/graphics/nicosia/NicosiaPlatformLayer.cpp:

(Nicosia::ContentLayer::ContentLayer):
(Nicosia::BackingStore::BackingStore):
(Nicosia::ImageBacking::ImageBacking):

1:48 AM Changeset in webkit [234594] by zandobersek@gmail.com
  • 4 edits in trunk/Source/WebCore

[Nicosia] Add additional layer state classes, use impl-based approach to make them extendable
https://bugs.webkit.org/show_bug.cgi?id=188341

Reviewed by Carlos Garcia Campos.

Add the ContentLayer, BackingStore and ImageBacking classes in the
Nicosia namespace. State objects of CompositionLayer instances keep
references to objects of these classes depending on the content that's
presented in the associated GraphicsLayer.

ContentLayer derives from the PlatformLayer class. It's used for layers
that display things like WebGL and HTML5 canvas and media content in a
platform-specific way. In case of TextureMapper the hardware-accelerated
content is piped into that rendering pipeline.

BackingStore is meant to represent the painted contents of a layer. The
equivalent current functionality is using a tiled backing store that
has its contents copied into the CoordinatedBackingStore instance.

ImageBacking is used for a layer whose content is a simple Image object.
Image's pixel data is rasterized and again managed through
CoordinatedBackingStore for rendering.

All these classes, along with the CompositionLayer class, should now be
constructed with a factory function that returns an object that derives
the class-specific Impl interface. This will allow for simpler
implementation of different approaches in parallel. The TextureMapper
variants will be the first ones, replicating the current behavior as it
is implemented across classes in the CoordinatedGraphics and
TextureMapper layers.

  • platform/graphics/nicosia/NicosiaPlatformLayer.cpp:

(Nicosia::CompositionLayer::CompositionLayer):

  • platform/graphics/nicosia/NicosiaPlatformLayer.h:

(Nicosia::PlatformLayer::isContentLayer const):
(Nicosia::CompositionLayer::Impl::isTextureMapperImpl const):
(Nicosia::CompositionLayer::create):
(Nicosia::CompositionLayer::impl const):
(Nicosia::ContentLayer::Impl::isTextureMapperImpl const):
(Nicosia::ContentLayer::create):
(Nicosia::ContentLayer::impl const):
(Nicosia::BackingStore::Impl::isTextureMapperImpl const):
(Nicosia::BackingStore::create):
(Nicosia::BackingStore::impl const):
(Nicosia::ImageBacking::Impl::isTextureMapperImpl const):
(Nicosia::ImageBacking::create):
(Nicosia::ImageBacking::impl const):

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer):

1:46 AM Changeset in webkit [234593] by zandobersek@gmail.com
  • 6 edits
    2 adds in trunk/Source

[Nicosia] Add Nicosia::Scene
https://bugs.webkit.org/show_bug.cgi?id=188340

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Add the Nicosia::Scene class that controls the scene's state and enables
thread-safe updates to that state.

The State struct itself holds a set of all the layers in the scene, and
separates out the root layer specifically. An ID counter is also present
there, allowing consumers of this state to easily check for any updates.

A reference to the Nicosia::Scene object now replaces the
HashSet-and-root-layer pair in the CoordinatedGraphicsState struct.

  • platform/TextureMapper.cmake:
  • platform/graphics/nicosia/NicosiaScene.cpp: Added.
  • platform/graphics/nicosia/NicosiaScene.h: Added.

(Nicosia::Scene::create):
(Nicosia::Scene::accessState):

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

Source/WebKit:

CompositingCoordinator spawns a Nicosia::Scene object that it shares
with the CoordinatedGraphicsSceneState instance. All the
Nicosia::CompositionLayer objects indirectly managed by
CompositingCoordinator are now stored in a local Nicosia::Scene::State
member object. Upon each flush that requires frame synchronization the
Nicosia::Scene object is updated in a thread-safe manner, increasing
the scene ID value as well as copying the local HashSet and root layer
values into the shared Scene object, allowing for the consumer (which
currently is the related CoordinatedGraphicsScene instance) to update
its output accordingly.

  • WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:

(WebKit::CompositingCoordinator::CompositingCoordinator):
(WebKit::CompositingCoordinator::flushPendingLayerChanges):
(WebKit::CompositingCoordinator::initializeRootCompositingLayerIfNeeded):
(WebKit::CompositingCoordinator::createGraphicsLayer):
(WebKit::CompositingCoordinator::detachLayer):
(WebKit::CompositingCoordinator::attachLayer):

  • WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
1:25 AM Changeset in webkit [234592] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

[GTK] Buttons are drawn too large, text not centered
https://bugs.webkit.org/show_bug.cgi?id=185854

Patch by Carlos Eduardo Ramalho <cadubentzen@gmail.com> on 2018-08-06
Reviewed by Carlos Garcia Campos.

Some pages require small buttons and the GTK theme was
drawing only down to a minimum size.

No new tests required. Current layout tests and ManualTests/gtk/theme.html
already cover it.

  • platform/gtk/RenderThemeGadget.cpp:

(WebCore::RenderThemeGadget::create):
(WebCore::RenderThemeButtonGadget::RenderThemeButtonGadget): Added
(WebCore::RenderThemeButtonGadget::minimumSize const):
Allow sizes smaller than the minimum size.

  • platform/gtk/RenderThemeGadget.h:
  • platform/gtk/RenderThemeWidget.cpp:

(WebCore::RenderThemeButton::RenderThemeButton):

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

ASSERTION !data.customElementReactionQueue() when creating custom element inside an SVG document
https://bugs.webkit.org/show_bug.cgi?id=187802

The assertion has been removed in bug 188327. This patch updates the test expectations and
add some non-regression test to verify different cases of XML custom element construction.

Patch by Frederic Wang <fwang@igalia.com> on 2018-08-06
Reviewed by Ryosuke Niwa.

  • TestExpectations: This test no longer crashes but times out because of bug 187800.
  • fast/custom-elements/xml-parsing-create-and-element-for-a-token-expected.txt: Added.
  • fast/custom-elements/xml-parsing-create-and-element-for-a-token.svg: Added.
1:14 AM Changeset in webkit [234590] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.20.4

WebKitGTK+ 2.20.4

1:13 AM Changeset in webkit [234589] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.20

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.20.4 release.

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit:

  • gtk/NEWS: Add release notes for 2.20.4.
12:59 AM Changeset in webkit [234588] by Yusuke Suzuki
  • 5 edits
    5 adds in trunk

Implement self.queueMicrotask in Workers
https://bugs.webkit.org/show_bug.cgi?id=188247

Reviewed by Ryosuke Niwa.

Source/WebCore:

This patch adds support for self.queueMicrotask to workers.

Tests: http/wpt/workers/queue-microtask.any.html

http/wpt/workers/queue-microtask.any.worker.html

  • bindings/js/JSWorkerGlobalScopeCustom.cpp:

(WebCore::JSWorkerGlobalScope::queueMicrotask):

  • page/DOMWindow.idl:

Move queueMicrotask declaration to WindowOrWorkerGlobalScope.idl.

  • page/WindowOrWorkerGlobalScope.idl:

LayoutTests:

  • http/wpt/workers/queue-microtask.any-expected.txt: Added.
  • http/wpt/workers/queue-microtask.any.html: Added.
  • http/wpt/workers/queue-microtask.any.js: Added.

(promise_test):
(promise_test.):
(queueMicrotask.promise_test):
(test):

  • http/wpt/workers/queue-microtask.any.worker-expected.txt: Added.
  • http/wpt/workers/queue-microtask.any.worker.html: Added.

Aug 5, 2018:

11:43 PM Changeset in webkit [234587] by commit-queue@webkit.org
  • 4 edits in trunk

[GTK][WPE] Fetch tests assert in SubresourceLoader::didReceiveResponse()
https://bugs.webkit.org/show_bug.cgi?id=188163

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

Source/WebCore:

Fetch in manual redirect mode uses didReceiveResponse instead of
willSendRequestInternal, so update the ASSERT.

  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::didReceiveResponse):

LayoutTests:

Unskip since this will not crash in Debug anymore.

  • platform/wpe/TestExpectations:
9:37 PM Changeset in webkit [234586] by Yusuke Suzuki
  • 253 edits
    1 copy
    3 moves
    6 adds in trunk

Add support for microtasks in workers
https://bugs.webkit.org/show_bug.cgi?id=188246

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

This test is wrong[1,2]. It starts failing since our worker starts using correct microtask queues.

[1]: https://github.com/web-platform-tests/wpt/pull/8936
[2]: https://github.com/w3c/ServiceWorker/issues/1213#issuecomment-342640579

  • web-platform-tests/service-workers/service-worker/extendable-event-async-waituntil.https-expected.txt:

Source/WebCore:

This patch adds the microtask mechanism to workers. To adopt the existing microtask mechanism from the main thread,
we extend JSMainThreadExecState for non-main-threads. We rename it to JSExecState, and store stacked
ExecState* data in thread local storage in ThreadGlobalData instead of a static variable s_mainThreadState.

We add MicrotaskQueue to WorkerGlobalScope since each worker has its own thread and it should have its
own microtask queue.

  • Modules/encryptedmedia/legacy/LegacyCDMSessionClearKey.cpp:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSBindingsAllInOne.cpp:
  • bindings/js/JSCallbackData.cpp:

(WebCore::JSCallbackData::invokeCallback):

  • bindings/js/JSCustomElementInterface.cpp:

(WebCore::constructCustomElementSynchronously):
(WebCore::JSCustomElementInterface::upgradeElement):
(WebCore::JSCustomElementInterface::invokeCallback):

  • bindings/js/JSCustomXPathNSResolver.cpp:

(WebCore::JSCustomXPathNSResolver::lookupNamespaceURI):

  • bindings/js/JSDOMGlobalObjectTask.cpp:
  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::JSDOMWindowBase::queueTaskToEventLoop):
Queue a microtask to MicrotaskQueue instead of posting a macrotask.

(WebCore::JSDOMWindowMicrotaskCallback::create): Deleted.
(WebCore::JSDOMWindowMicrotaskCallback::call): Deleted.
(WebCore::JSDOMWindowMicrotaskCallback::JSDOMWindowMicrotaskCallback): Deleted.
(): Deleted.
Extract JSDOMWindowMicrotaskCallback as JSMicrotaskCallback and create a new file for it.

  • bindings/js/JSErrorHandler.cpp:

(WebCore::JSErrorHandler::handleEvent):

  • bindings/js/JSEventListener.cpp:

(WebCore::JSEventListener::handleEvent):

  • bindings/js/JSExecState.cpp: Renamed from Source/WebCore/bindings/js/JSMainThreadExecState.cpp.

(WebCore::JSExecState::didLeaveScriptContext):
If we are in a main thread, we consume main thread microtask queue. If we are in worker thread,
we consume a microtask queue per worker.

(WebCore::functionCallHandlerFromAnyThread):
(WebCore::evaluateHandlerFromAnyThread):

  • bindings/js/JSExecState.h: Renamed from Source/WebCore/bindings/js/JSMainThreadExecState.h.

(WebCore::JSExecState::currentState):
(WebCore::JSExecState::call):
(WebCore::JSExecState::evaluate):
(WebCore::JSExecState::profiledCall):
(WebCore::JSExecState::profiledEvaluate):
(WebCore::JSExecState::runTask):
(WebCore::JSExecState::loadModule):
(WebCore::JSExecState::linkAndEvaluateModule):
(WebCore::JSExecState::JSExecState):
(WebCore::JSExecState::~JSExecState):
(WebCore::JSExecState::setCurrentState):
Store and load ExecState in thread local storage, ThreadGlobalData. This allows us to use it for workers.

(WebCore::JSMainThreadNullState::JSMainThreadNullState):
(WebCore::JSMainThreadNullState::~JSMainThreadNullState):
We keep this name "JSMainThreadNullState" since CustomElementReactionStack should be stick to the main thread.
And this class is only used in the main thread.

  • bindings/js/JSExecStateInstrumentation.h: Renamed from Source/WebCore/bindings/js/JSMainThreadExecStateInstrumentation.h.

(WebCore::JSExecState::instrumentFunctionInternal):
(WebCore::JSExecState::instrumentFunctionCall):
(WebCore::JSExecState::instrumentFunctionConstruct):

  • bindings/js/JSMicrotaskCallback.h: Copied from Source/WebKitLegacy/mac/DOM/DOMHTMLBaseElement.mm.

(WebCore::JSMicrotaskCallback::create):
(WebCore::JSMicrotaskCallback::call):
(WebCore::JSMicrotaskCallback::JSMicrotaskCallback):

  • bindings/js/JSWorkerGlobalScopeBase.cpp:

(WebCore::JSWorkerGlobalScopeBase::queueTaskToEventLoop):

  • bindings/js/ScheduledAction.cpp:

(WebCore::ScheduledAction::executeFunctionInContext):

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::evaluateInWorld):
(WebCore::ScriptController::loadModuleScriptInWorld):
(WebCore::ScriptController::linkAndEvaluateModuleScriptInWorld):
(WebCore::ScriptController::canAccessFromCurrentOrigin):

  • bindings/js/WorkerScriptController.cpp:

(WebCore::WorkerScriptController::evaluate):

  • bridge/objc/WebScriptObject.mm:

(-[WebScriptObject callWebScriptMethod:withArguments:]):
(-[WebScriptObject evaluateWebScript:]):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::compileShader):
(WebCore::WebGLRenderingContextBase::printToConsole):

  • inspector/InspectorCanvas.cpp:

(WebCore::InspectorCanvas::buildObjectForCanvas):
(WebCore::InspectorCanvas::buildAction):

  • inspector/InspectorController.cpp:
  • inspector/InspectorFrontendHost.cpp:
  • inspector/TimelineRecordFactory.cpp:

(WebCore::TimelineRecordFactory::createGenericRecord):

  • inspector/WorkerInspectorController.cpp:
  • inspector/agents/InspectorCanvasAgent.cpp:
  • inspector/agents/InspectorNetworkAgent.cpp:

(WebCore::InspectorNetworkAgent::buildInitiatorObject):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::postMessage):

  • page/PageConsoleClient.cpp:

(WebCore::PageConsoleClient::addMessage):

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::reportViolation const):

  • platform/ThreadGlobalData.h:

(WebCore::ThreadGlobalData::ThreadGlobalData::currentState const):
(WebCore::ThreadGlobalData::ThreadGlobalData::setCurrentState):

  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::WorkerGlobalScope):
(WebCore::WorkerGlobalScope::removeMicrotaskQueue):

  • workers/WorkerGlobalScope.h:

(WebCore::WorkerGlobalScope::microtaskQueue const):

  • workers/WorkerThread.cpp:

(WebCore::WorkerThread::stop):

  • workers/service/ExtendableEvent.cpp:

(WebCore::ExtendableEvent::addExtendLifetimePromise):
When dispatching an "install" event from service worker, we first create an event,
dispatch it, and set a handler which is called when a pending promise count becomes zero.
However, the old code checked pending promise count in a queued microtask. It worked
previously because microtask is actually a macrotask in the service worker. So this check
is done after a handler is set. But this patch introduces real microtask, and this check
happens before a handler is set because dispatching an event can exhaust microtask queue.
According to the spec, this check should not be done in microtask[1]. We make this checking
part as a macrotask. We note that algorithm noted as FIXMEs should be done in this
microtask while the checking part should not be done.

[1]: https://w3c.github.io/ServiceWorker/#installation-algorithm

Source/WebKit:

Rename JSMainThreadExecState.h to JSExecState.h.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMAttr.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMBlob.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCDATASection.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSRule.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSRuleList.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSStyleDeclaration.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSStyleSheet.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSValue.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCharacterData.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRect.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectList.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMComment.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMImplementation.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMSelection.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMTokenList.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDeprecated.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentFragment.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentGtk.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentType.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElementGtk.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMEvent.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMFile.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMFileList.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAnchorElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAppletElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAreaElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBRElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBaseElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBodyElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLButtonElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLCanvasElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLCollection.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDListElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDirectoryElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDivElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDocument.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLEmbedElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFieldSetElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFontElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFormElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFrameElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFrameSetElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHRElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHeadElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHeadingElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHtmlElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLIFrameElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLImageElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLInputElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLIElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLabelElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLegendElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLinkElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMapElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMarqueeElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMenuElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMetaElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLModElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOListElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLObjectElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptGroupElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptionElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptionsCollection.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLParagraphElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLParamElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLPreElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLQuoteElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLScriptElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLSelectElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLStyleElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableCaptionElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableCellElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableColElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableRowElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableSectionElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTextAreaElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTitleElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLUListElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMKeyboardEvent.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMMediaList.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMMouseEvent.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNamedNodeMap.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeGtk.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeIterator.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeList.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMProcessingInstruction.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMRange.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMStyleSheet.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMStyleSheetList.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMText.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMTreeWalker.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMUIEvent.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMWheelEvent.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathExpression.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathNSResolver.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathResult.cpp:

Source/WebKitLegacy/mac:

Rename JSMainThreadExecState.h to JSExecState.h.

  • DOM/DOMAttr.mm:
  • DOM/DOMBlob.mm:
  • DOM/DOMCDATASection.mm:
  • DOM/DOMCSSCharsetRule.mm:
  • DOM/DOMCSSFontFaceRule.mm:
  • DOM/DOMCSSImportRule.mm:
  • DOM/DOMCSSMediaRule.mm:
  • DOM/DOMCSSPageRule.mm:
  • DOM/DOMCSSPrimitiveValue.mm:
  • DOM/DOMCSSRule.mm:
  • DOM/DOMCSSRuleList.mm:
  • DOM/DOMCSSStyleDeclaration.mm:
  • DOM/DOMCSSStyleRule.mm:
  • DOM/DOMCSSStyleSheet.mm:
  • DOM/DOMCSSUnknownRule.mm:
  • DOM/DOMCSSValue.mm:
  • DOM/DOMCSSValueList.mm:
  • DOM/DOMCharacterData.mm:
  • DOM/DOMComment.mm:
  • DOM/DOMCounter.mm:
  • DOM/DOMDocument.mm:
  • DOM/DOMDocumentFragment.mm:
  • DOM/DOMDocumentType.mm:
  • DOM/DOMElement.mm:
  • DOM/DOMEvent.mm:
  • DOM/DOMFile.mm:
  • DOM/DOMFileList.mm:
  • DOM/DOMHTML.mm:
  • DOM/DOMHTMLAnchorElement.mm:
  • DOM/DOMHTMLAppletElement.mm:
  • DOM/DOMHTMLAreaElement.mm:
  • DOM/DOMHTMLBRElement.mm:
  • DOM/DOMHTMLBaseElement.mm:
  • DOM/DOMHTMLBaseFontElement.mm:
  • DOM/DOMHTMLBodyElement.mm:
  • DOM/DOMHTMLButtonElement.mm:
  • DOM/DOMHTMLCanvasElement.mm:
  • DOM/DOMHTMLCollection.mm:
  • DOM/DOMHTMLDListElement.mm:
  • DOM/DOMHTMLDirectoryElement.mm:
  • DOM/DOMHTMLDivElement.mm:
  • DOM/DOMHTMLDocument.mm:
  • DOM/DOMHTMLElement.mm:
  • DOM/DOMHTMLEmbedElement.mm:
  • DOM/DOMHTMLFieldSetElement.mm:
  • DOM/DOMHTMLFontElement.mm:
  • DOM/DOMHTMLFormElement.mm:
  • DOM/DOMHTMLFrameElement.mm:
  • DOM/DOMHTMLFrameSetElement.mm:
  • DOM/DOMHTMLHRElement.mm:
  • DOM/DOMHTMLHeadElement.mm:
  • DOM/DOMHTMLHeadingElement.mm:
  • DOM/DOMHTMLHtmlElement.mm:
  • DOM/DOMHTMLIFrameElement.mm:
  • DOM/DOMHTMLImageElement.mm:
  • DOM/DOMHTMLInputElement.mm:
  • DOM/DOMHTMLLIElement.mm:
  • DOM/DOMHTMLLabelElement.mm:
  • DOM/DOMHTMLLegendElement.mm:
  • DOM/DOMHTMLLinkElement.mm:
  • DOM/DOMHTMLMapElement.mm:
  • DOM/DOMHTMLMarqueeElement.mm:
  • DOM/DOMHTMLMediaElement.mm:
  • DOM/DOMHTMLMenuElement.mm:
  • DOM/DOMHTMLMetaElement.mm:
  • DOM/DOMHTMLModElement.mm:
  • DOM/DOMHTMLOListElement.mm:
  • DOM/DOMHTMLObjectElement.mm:
  • DOM/DOMHTMLOptGroupElement.mm:
  • DOM/DOMHTMLOptionElement.mm:
  • DOM/DOMHTMLOptionsCollection.mm:
  • DOM/DOMHTMLParagraphElement.mm:
  • DOM/DOMHTMLParamElement.mm:
  • DOM/DOMHTMLPreElement.mm:
  • DOM/DOMHTMLQuoteElement.mm:
  • DOM/DOMHTMLScriptElement.mm:
  • DOM/DOMHTMLSelectElement.mm:
  • DOM/DOMHTMLStyleElement.mm:
  • DOM/DOMHTMLTableCaptionElement.mm:
  • DOM/DOMHTMLTableCellElement.mm:
  • DOM/DOMHTMLTableColElement.mm:
  • DOM/DOMHTMLTableElement.mm:
  • DOM/DOMHTMLTableRowElement.mm:
  • DOM/DOMHTMLTableSectionElement.mm:
  • DOM/DOMHTMLTextAreaElement.mm:
  • DOM/DOMHTMLTitleElement.mm:
  • DOM/DOMHTMLUListElement.mm:
  • DOM/DOMHTMLVideoElement.mm:
  • DOM/DOMImplementation.mm:
  • DOM/DOMKeyboardEvent.mm:
  • DOM/DOMMediaError.mm:
  • DOM/DOMMediaList.mm:
  • DOM/DOMMouseEvent.mm:
  • DOM/DOMMutationEvent.mm:
  • DOM/DOMNamedNodeMap.mm:
  • DOM/DOMNode.mm:
  • DOM/DOMNodeIterator.mm:
  • DOM/DOMNodeList.mm:
  • DOM/DOMOverflowEvent.mm:
  • DOM/DOMProcessingInstruction.mm:
  • DOM/DOMProgressEvent.mm:
  • DOM/DOMRGBColor.mm:
  • DOM/DOMRange.mm:
  • DOM/DOMRect.mm:
  • DOM/DOMStyleSheet.mm:
  • DOM/DOMStyleSheetList.mm:
  • DOM/DOMText.mm:
  • DOM/DOMTextEvent.mm:
  • DOM/DOMTimeRanges.mm:
  • DOM/DOMTokenList.mm:
  • DOM/DOMTreeWalker.mm:
  • DOM/DOMUIEvent.mm:
  • DOM/DOMWheelEvent.mm:
  • DOM/DOMXPathExpression.mm:
  • DOM/DOMXPathResult.mm:
  • DOM/ObjCEventListener.mm:

LayoutTests:

  • http/wpt/workers/microtasks.any-expected.txt: Added.
  • http/wpt/workers/microtasks.any.html: Added.
  • http/wpt/workers/microtasks.any.js: Added.

(promise_test):

  • http/wpt/workers/microtasks.any.worker-expected.txt: Added.
  • http/wpt/workers/microtasks.any.worker.html: Added.
5:44 PM Changeset in webkit [234585] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Properties set on window.customElements can disappear due to GC
https://bugs.webkit.org/show_bug.cgi?id=172575

Lexicologically sort the IDL attributes per Darin's comment.

  • dom/CustomElementRegistry.idl:
4:19 PM Changeset in webkit [234584] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][BFC] contentHeightForFormattingContextRoot uses the wrong coordinate system to compute the height.
https://bugs.webkit.org/show_bug.cgi?id=188319

Reviewed by Antti Koivisto.

Display::Box::marginBox() is in the coordinate system of the box itself (8px top margin translates to y = -8px).
What we need instead to compute the content height is the top/bottom position in the containing block's coordinate system (rect and rectWithMargin).

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::contentHeightForFormattingContextRoot):

3:10 AM Changeset in webkit [234583] by Ms2ger@igalia.com
  • 2 edits in trunk/Source/WebCore

[GStreamer] Remove unsound assertions in MediaPlayerPrivateGStreamerBase.
https://bugs.webkit.org/show_bug.cgi?id=188162

Reviewed by Philippe Normand.

These assertions sometimes fail, and there's a runtime check right
after them anyway.

Tests: fast/canvas/webgl/texImage2D-video-flipY-false.html

fast/canvas/webgl/texImage2D-video-flipY-true.html

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::copyVideoTextureToPlatformTexture):
(WebCore::MediaPlayerPrivateGStreamerBase::nativeImageForCurrentTime):

2:26 AM Changeset in webkit [234582] by Philippe Normand
  • 15 edits
    15 adds in trunk

[MediaCapabilities] Platform integration
https://bugs.webkit.org/show_bug.cgi?id=187850

Reviewed by Eric Carlson.

Source/WebCore:

Mock platform support for the MediaCapabilities specification.

Test: media/mediacapabilities/mock-decodingInfo.html

media/mediacapabilities/mock-encodingInfo.html

  • Modules/mediacapabilities/MediaCapabilities.cpp:

(WebCore::MediaCapabilities::decodingInfo):
(WebCore::MediaCapabilities::encodingInfo):

  • Modules/mediacapabilities/MediaCapabilitiesInfo.h:

(WebCore::MediaCapabilitiesInfo::create):

  • PlatformGTK.cmake:
  • PlatformMac.cmake:
  • PlatformWPE.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/mediacapabilities/MediaEngineConfiguration.cpp: Added.

(WebCore::MediaEngineVideoConfiguration::MediaEngineVideoConfiguration):
(WebCore::MediaEngineAudioConfiguration::MediaEngineAudioConfiguration):
(WebCore::MediaEngineConfiguration::MediaEngineConfiguration):

  • platform/mediacapabilities/MediaEngineConfiguration.h: Added.

(WebCore::MediaEngineVideoConfiguration::create):
(WebCore::MediaEngineVideoConfiguration::contentType const):
(WebCore::MediaEngineVideoConfiguration::size const):
(WebCore::MediaEngineVideoConfiguration::bitrate const):
(WebCore::MediaEngineVideoConfiguration::framerate const):
(WebCore::MediaEngineAudioConfiguration::create):
(WebCore::MediaEngineAudioConfiguration::contentType const):
(WebCore::MediaEngineAudioConfiguration::channels const):
(WebCore::MediaEngineAudioConfiguration::bitrate const):
(WebCore::MediaEngineAudioConfiguration::samplerate const):
(WebCore::MediaEngineConfiguration::audioConfiguration const):
(WebCore::MediaEngineConfiguration::videoConfiguration const):

  • platform/mediacapabilities/MediaEngineConfigurationFactory.cpp: Added.

(WebCore::mockEnabled):
(WebCore::MediaEngineConfigurationFactory::createDecodingConfiguration):
(WebCore::MediaEngineConfigurationFactory::createEncodingConfiguration):
(WebCore::MediaEngineConfigurationFactory::enableMock):
(WebCore::MediaEngineConfigurationFactory::disableMock):

  • platform/mediacapabilities/MediaEngineConfigurationFactory.h: Added.
  • platform/mediacapabilities/MediaEngineDecodingConfiguration.h: Added.

(WebCore::MediaEngineDecodingConfiguration::MediaEngineDecodingConfiguration):
(WebCore::MediaEngineDecodingConfiguration::canDecodeMedia):
(WebCore::MediaEngineDecodingConfiguration::canSmoothlyDecodeMedia):
(WebCore::MediaEngineDecodingConfiguration::canPowerEfficientlyDecodeMedia):
(WebCore::MediaEngineDecodingConfiguration::decodingType const):

  • platform/mediacapabilities/MediaEngineEncodingConfiguration.h: Added.

(WebCore::MediaEngineEncodingConfiguration::MediaEngineEncodingConfiguration):
(WebCore::MediaEngineEncodingConfiguration::canEncodeMedia):
(WebCore::MediaEngineEncodingConfiguration::canSmoothlyEncodeMedia):
(WebCore::MediaEngineEncodingConfiguration::canPowerEfficientlyEncodeMedia):
(WebCore::MediaEngineEncodingConfiguration::encodingType const):

  • platform/mock/MediaEngineDecodingConfigurationMock.cpp: Added.

(WebCore::MediaEngineDecodingConfigurationMock::canDecodeMedia):
(WebCore::MediaEngineDecodingConfigurationMock::canSmoothlyDecodeMedia):
(WebCore::MediaEngineDecodingConfigurationMock::canPowerEfficientlyDecodeMedia):

  • platform/mock/MediaEngineDecodingConfigurationMock.h: Added.
  • platform/mock/MediaEngineEncodingConfigurationMock.cpp: Added.

(WebCore::MediaEngineEncodingConfigurationMock::canEncodeMedia):
(WebCore::MediaEngineEncodingConfigurationMock::canSmoothlyEncodeMedia):
(WebCore::MediaEngineEncodingConfigurationMock::canPowerEfficientlyEncodeMedia):

  • platform/mock/MediaEngineEncodingConfigurationMock.h: Added.
  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::enableMockMediaCapabilities):

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

LayoutTests:

Mock tests for the MediaCapabilities specification.

  • media/mediacapabilities/mock-decodingInfo-expected.txt: Added.
  • media/mediacapabilities/mock-decodingInfo.html: Added.
  • media/mediacapabilities/mock-encodingInfo-expected.txt: Added.
  • media/mediacapabilities/mock-encodingInfo.html: Added.
  • media/video-test.js:

(checkMediaCapabilitiesInfo):

Note: See TracTimeline for information about the timeline view.