Timeline



Feb 26, 2019:

11:50 PM Changeset in webkit [242127] by mark.lam@apple.com
  • 12 edits
    9 deletes in trunk

Remove remaining poisoning code.
https://bugs.webkit.org/show_bug.cgi?id=194138

Reviewed by Saam Barati.

Source/WTF:

This patch removes the instantiation of Poisoned variants of the various containers
but retains the ability of those containers to work with pointer traits. This
allows us to use them with smart pointers in the future (just like we used to with
Poisoned values). At minimum, this ability will be useful when we want to insert
an observer into the container storage type for debugging purposes, or to collect
statistics for profiling.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/Bag.h:
  • wtf/CMakeLists.txt:
  • wtf/Platform.h:
  • wtf/Poisoned.cpp: Removed.
  • wtf/Poisoned.h: Removed.
  • wtf/PoisonedUniquePtr.h: Removed.
  • wtf/Ref.h:
  • wtf/RefCountedArray.h:
  • wtf/RefPtr.h:
  • wtf/WTFAssertions.cpp:

Tools:

  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WTF/Poisoned.cpp: Removed.
  • TestWebKitAPI/Tests/WTF/PoisonedRef.cpp: Removed.
  • TestWebKitAPI/Tests/WTF/PoisonedRefPtr.cpp: Removed.
  • TestWebKitAPI/Tests/WTF/PoisonedUniquePtr.cpp: Removed.
  • TestWebKitAPI/Tests/WTF/PoisonedUniquePtrForNonTriviallyDestructibleArrays.cpp: Removed.
  • TestWebKitAPI/Tests/WTF/PoisonedUniquePtrForTriviallyDestructibleArrays.cpp: Removed.
11:33 PM Changeset in webkit [242126] by Dewei Zhu
  • 2 edits in trunk/Websites/perf.webkit.org

The table head of test freshness page should not scroll with the page.
https://bugs.webkit.org/show_bug.cgi?id=195092

Reviewed by Ryosuke Niwa.

Fix the location of the freshness table head to make it easier to corelate cell with test.

  • public/v3/pages/test-freshness-page.js: Changed some style rules to make the table head fixed.

(TestFreshnessPage.prototype._renderTable):
(TestFreshnessPage.cssTemplate):

11:21 PM Changeset in webkit [242125] by bshafiei@apple.com
  • 7 edits in branches/safari-607-branch/Source

Versioning.

9:46 PM Changeset in webkit [242124] by Chris Dumez
  • 9 edits in trunk/Source/WebKit

[PSON] Add mechanism to clear suspended pages while bypassing the WebProcess cache
https://bugs.webkit.org/show_bug.cgi?id=195089

Reviewed by Geoffrey Garen.

Add a convenient mechanism to clear suspended pages while bypassing the WebProcess
cache since we need to do this on memory pressure and when clearing website data.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::receivedNavigationPolicyDecision):

  • UIProcess/WebProcessCache.cpp:

(WebKit::WebProcessCache::addProcessIfPossible):
(WebKit::WebProcessCache::addProcess):
(WebKit::WebProcessCache::takeProcess):
(WebKit::WebProcessCache::CachedProcess::~CachedProcess):

  • UIProcess/WebProcessCache.h:

(WebKit::WebProcessCache::setIsDisabled): Deleted.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::handleMemoryPressureWarning):
(WebKit::WebProcessPool::hasSuspendedPageFor const):
(WebKit::WebProcessPool::clearSuspendedPages):

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

(WebKit::WebProcessProxy::maybeShutDown):
(WebKit::WebProcessProxy::canTerminateAuxiliaryProcess):

  • UIProcess/WebProcessProxy.h:

(WebKit::WebProcessProxy::suspendedPageCount const):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::removeData):

9:43 PM Changeset in webkit [242123] by mark.lam@apple.com
  • 55 edits
    2 deletes in trunk/Source/JavaScriptCore

Remove poisons in JSCPoison and uses of them.
https://bugs.webkit.org/show_bug.cgi?id=195082

Reviewed by Yusuke Suzuki.

Also removed unused poisoning code in WriteBarrier, AssemblyHelpers,
DFG::SpeculativeJIT, FTLLowerDFGToB3, and FTL::Output.

  • API/JSAPIWrapperObject.h:

(JSC::JSAPIWrapperObject::wrappedObject):

  • API/JSCallbackFunction.h:
  • API/JSCallbackObject.h:
  • API/glib/JSAPIWrapperGlobalObject.h:
  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • bytecode/AccessCase.cpp:

(JSC::AccessCase::generateWithGuard):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileGetByValOnScopedArguments):
(JSC::DFG::SpeculativeJIT::compileGetArrayLength):
(JSC::DFG::SpeculativeJIT::compileNewFunctionCommon):
(JSC::DFG::SpeculativeJIT::compileGetExecutable):
(JSC::DFG::SpeculativeJIT::compileCreateThis):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::TrustedImmPtr::weakPoisonedPointer): Deleted.

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileGetExecutable):
(JSC::FTL::DFG::LowerDFGToB3::compileGetArrayLength):
(JSC::FTL::DFG::LowerDFGToB3::compileGetByVal):
(JSC::FTL::DFG::LowerDFGToB3::compileNewFunction):
(JSC::FTL::DFG::LowerDFGToB3::weakPointer):
(JSC::FTL::DFG::LowerDFGToB3::dynamicPoison): Deleted.
(JSC::FTL::DFG::LowerDFGToB3::dynamicPoisonOnLoadedType): Deleted.
(JSC::FTL::DFG::LowerDFGToB3::dynamicPoisonOnType): Deleted.
(JSC::FTL::DFG::LowerDFGToB3::weakPoisonedPointer): Deleted.

  • ftl/FTLOutput.h:

(JSC::FTL::Output::weakPoisonedPointer): Deleted.

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::emitDynamicPoison): Deleted.
(JSC::AssemblyHelpers::emitDynamicPoisonOnLoadedType): Deleted.
(JSC::AssemblyHelpers::emitDynamicPoisonOnType): Deleted.

  • jit/AssemblyHelpers.h:
  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_create_this):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emitScopedArgumentsGetByVal):

  • jit/Repatch.cpp:

(JSC::linkPolymorphicCall):

  • jit/ThunkGenerators.cpp:

(JSC::virtualThunkFor):
(JSC::nativeForGenerator):
(JSC::boundThisNoArgsFunctionCallGenerator):

  • parser/UnlinkedSourceCode.h:
  • runtime/ArrayPrototype.h:
  • runtime/CustomGetterSetter.h:

(JSC::CustomGetterSetter::getter const):
(JSC::CustomGetterSetter::setter const):

  • runtime/InitializeThreading.cpp:

(JSC::initializeThreading):

  • runtime/InternalFunction.cpp:

(JSC::InternalFunction::getCallData):
(JSC::InternalFunction::getConstructData):

  • runtime/InternalFunction.h:

(JSC::InternalFunction::nativeFunctionFor):

  • runtime/JSArrayBuffer.h:
  • runtime/JSBoundFunction.h:
  • runtime/JSCPoison.cpp: Removed.
  • runtime/JSCPoison.h: Removed.
  • runtime/JSFunction.h:
  • runtime/JSGlobalObject.h:
  • runtime/JSScriptFetchParameters.h:
  • runtime/JSScriptFetcher.h:
  • runtime/JSString.h:
  • runtime/NativeExecutable.cpp:

(JSC::NativeExecutable::hashFor const):

  • runtime/NativeExecutable.h:
  • runtime/Options.h:
  • runtime/ScopedArguments.h:
  • runtime/Structure.cpp:

(JSC::StructureTransitionTable::setSingleTransition):

  • runtime/StructureTransitionTable.h:

(JSC::StructureTransitionTable::map const):
(JSC::StructureTransitionTable::weakImpl const):
(JSC::StructureTransitionTable::setMap):

  • runtime/WriteBarrier.h:
  • wasm/WasmB3IRGenerator.cpp:
  • wasm/WasmInstance.h:
  • wasm/js/JSToWasm.cpp:

(JSC::Wasm::createJSToWasmWrapper):

  • wasm/js/JSWebAssemblyCodeBlock.h:
  • wasm/js/JSWebAssemblyInstance.cpp:

(JSC::JSWebAssemblyInstance::JSWebAssemblyInstance):
(JSC::JSWebAssemblyInstance::visitChildren):

  • wasm/js/JSWebAssemblyInstance.h:
  • wasm/js/JSWebAssemblyMemory.h:
  • wasm/js/JSWebAssemblyModule.h:
  • wasm/js/JSWebAssemblyTable.cpp:

(JSC::JSWebAssemblyTable::JSWebAssemblyTable):
(JSC::JSWebAssemblyTable::grow):
(JSC::JSWebAssemblyTable::clearFunction):

  • wasm/js/JSWebAssemblyTable.h:
  • wasm/js/WasmToJS.cpp:

(JSC::Wasm::materializeImportJSCell):
(JSC::Wasm::handleBadI64Use):
(JSC::Wasm::wasmToJS):

  • wasm/js/WebAssemblyFunctionBase.h:
  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::link):
(JSC::WebAssemblyModuleRecord::evaluate):

  • wasm/js/WebAssemblyModuleRecord.h:
  • wasm/js/WebAssemblyToJSCallee.h:
  • wasm/js/WebAssemblyWrapperFunction.h:
8:40 PM Changeset in webkit [242122] by achristensen@apple.com
  • 11 edits in trunk

Move ephemeral local storage from WebProcess to UIProcess
https://bugs.webkit.org/show_bug.cgi?id=195074
<rdar://problem/47937975>

Reviewed by Geoff Garen.

Source/WebKit:

Before PSON, a page could navigate to another domain that navigates back and still have its local storage.
Since PSON makes it unreliable to retain the state in the WebProcess, move it to the process with the rest of the local storage.
If it's ephemeral, we obviously can't use the SQLite on-disk storage implementation, so use the same WebCore::StorageMap we used to in the WebProcess.

  • UIProcess/WebStorage/StorageManager.cpp:

(WebKit::StorageManager::LocalStorageNamespace::LocalStorageNamespace):
(WebKit::StorageManager::StorageManager):
(WebKit::StorageManager::createLocalStorageMap):
(WebKit::StorageManager::createTransientLocalStorageMap):
(WebKit::StorageManager::createSessionStorageMap):
(WebKit::StorageManager::destroyStorageMap):
(WebKit::StorageManager::getValues):
(WebKit::StorageManager::setItem):
(WebKit::StorageManager::removeItem):
(WebKit::StorageManager::clear):

  • UIProcess/WebStorage/StorageManager.h:
  • UIProcess/WebStorage/StorageManager.messages.in:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::WebsiteDataStore):

  • WebProcess/WebStorage/StorageAreaMap.cpp:

(WebKit::StorageAreaMap::StorageAreaMap):
(WebKit::StorageAreaMap::setItem):
(WebKit::StorageAreaMap::removeItem):
(WebKit::StorageAreaMap::clear):
(WebKit::StorageAreaMap::loadValuesIfNeeded):

  • WebProcess/WebStorage/StorageNamespaceImpl.cpp:

(WebKit::StorageNamespaceImpl::createEphemeralLocalStorageNamespace):
(WebKit::StorageNamespaceImpl::storageArea):
(WebKit::StorageNamespaceImpl::copy):
(): Deleted.
(WebKit::StorageNamespaceImpl::ephemeralLocalStorageArea): Deleted.

  • WebProcess/WebStorage/StorageNamespaceImpl.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
8:19 PM Changeset in webkit [242121] by commit-queue@webkit.org
  • 2 edits in trunk

Incorrect formatting around command in Readme.md
https://bugs.webkit.org/show_bug.cgi?id=195061

Patch by Gabe Giosia <giosia@google.com> on 2019-02-26
Reviewed by Fujii Hironori.

  • ReadMe.md: removed stray period
7:48 PM Changeset in webkit [242120] by ysuzuki@apple.com
  • 2 edits in trunk/JSTests

REGRESSION: stress/regress-178386.js is timing out on JSC debug bot
https://bugs.webkit.org/show_bug.cgi?id=194677
<rdar://problem/48112492>

Reviewed by Mark Lam.

Before r241233, String.fromCharCode (except for an empty string) always returns 16bit string.
This makes the rope generated by padEnd 16bit. When we resolve the rope inside JSON.stringify,
it immediately fails due the large size.

After r241233, String.fromCharCode starts returning 8bit string if possible. So the rope becomes
8bit, and we successfully resolve the rope in this case. Resolving such a large rope takes long
time and that is why stress/regress-178386.js starts timing out. Note that, the test fails with
OOM error anyway because JSON.stringify's builder overflows with such a large string input.

This patch changes the test to produce 16bit string from String.fromCharCode.

  • stress/regress-178386.js:
5:33 PM Changeset in webkit [242119] by Alan Coon
  • 1 copy in tags/Safari-607.1.39

Tag Safari-607.1.39.

5:28 PM Changeset in webkit [242118] by Matt Baker
  • 25 edits
    1 add
    4 deletes in trunk/Source/WebInspectorUI

Web Inspector: Use system accent color throughout UI
https://bugs.webkit.org/show_bug.cgi?id=193507
<rdar://problem/47327971>

Reviewed by Timothy Hatcher.

  • UserInterface/Images/Breakpoint.png: Removed.
  • UserInterface/Images/Breakpoint.svg: Added.
  • UserInterface/Images/Breakpoint@2x.png: Removed.
  • UserInterface/Images/BreakpointInactive.png: Removed.
  • UserInterface/Images/BreakpointInactive@2x.png: Removed.

Replace breakpoint pixel art with an SVG image that can be styled in CSS.

  • UserInterface/Images/CSSVariable.svg:
  • UserInterface/Images/CubicBezier.svg:
  • UserInterface/Images/UserInputPrompt.svg:

Remove fill color since it is now styled in CSS.

  • UserInterface/Views/BezierEditor.css:

(.bezier-editor > .bezier-preview > div):
(@media (prefers-color-scheme: dark)):
(.bezier-editor > .bezier-container .control-handle):
(.bezier-editor > .bezier-container .control-line):
Use system accent color for control handles.

  • UserInterface/Views/BreakpointTreeElement.css:

(.item.breakpoint .status > .status-image):
(.item.breakpoint .status > .status-image.resolved):
Use system accent color for breakpoint fill, with a dark outline
to match Xcode and make the button stand out against the selection.

  • UserInterface/Views/BreakpointTreeElement.js:

(WI.BreakpointTreeElement.prototype._updateStatus):

  • UserInterface/Views/ButtonNavigationItem.css:

(.navigation-bar .item.button > .glyph):

  • UserInterface/Views/ConsolePrompt.js:

(WI.ConsolePrompt):

  • UserInterface/Views/DOMBreakpointTreeElement.js:
  • UserInterface/Views/DOMTreeContentView.css:

(.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint):
(.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint.disabled,):
(.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint.subtree):
(.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint.disabled): Deleted.
(.content-view.dom-tree .tree-outline.dom.breakpoints-disabled li .status-image.breakpoint): Deleted.
(.content-view.dom-tree .tree-outline.dom.breakpoints-disabled li .status-image.breakpoint.disabled): Deleted.

  • UserInterface/Views/DOMTreeOutline.css:

(.tree-outline.dom li.selected .selection-area):
(.tree-outline.dom li.elements-drag-over .selection-area):
(.tree-outline.dom:focus li:matches(.selected, .hovered) .selection-area):
(.tree-outline.dom li.hovered:not(.selected) .selection-area):
(.tree-outline.dom li.pseudo-class-enabled > .selection-area::before):
Use the system accent color for the "pseudo-class enabled" marker.
(@media (prefers-color-scheme: dark)):
(.tree-outline.dom:focus li.selected .selection-area): Deleted.
Use --selected-background-color for selection and hover styles, which is
set to the system highlight color if available.

  • UserInterface/Views/InlineSwatch.css:

(.inline-swatch:matches(.bezier, .spring, .variable)):
(.inline-swatch:matches(.bezier, .spring)): Deleted.
(.inline-swatch.variable): Deleted.

  • UserInterface/Views/InlineSwatch.js:

(WI.InlineSwatch):

  • UserInterface/Views/NetworkDetailView.css:

(.network .network-detail .navigation-bar .item.radio.button.text-only:before):
(.network .network-detail .navigation-bar .item.radio.button.text-only.selected):
(@media (prefers-color-scheme: dark)):
(.network-detail .item.close > .glyph):

  • UserInterface/Views/QuickConsole.css:

(.quick-console > .console-prompt > .glyph):
(.quick-console > .console-prompt::before): Deleted.

  • UserInterface/Views/RadioButtonNavigationItem.css:

(.navigation-bar .item.radio.button.text-only):
(.navigation-bar .item.radio.button.text-only::before):
(.navigation-bar .item.radio.button.text-only:matches(.selected, :hover)):
(.navigation-bar .item.radio.button.text-only:matches(.selected, :hover)::before):
(.navigation-bar .item.radio.button.text-only:not(.selected):hover::before):
(.navigation-bar .item.radio.button.text-only.selected:active::before):
(.navigation-bar .item.radio.button.text-only:hover): Deleted.
(.navigation-bar .item.radio.button.text-only.selected): Deleted.
(.navigation-bar .item.radio.button.text-only:active): Deleted.
(.navigation-bar .item.radio.button.text-only.selected:active): Deleted.
Use system accent color for selection and hover styles. Since it isn't
yet possible to derive new colors from the accent color in CSS, fake it
with a ::before pseudo-element that can have have filter or opacity
effects applied to it without altering the button text color.

  • UserInterface/Views/RenderingFrameTimelineOverviewGraph.css:

(.timeline-overview-graph.rendering-frame > .frame-marker):
Use system accent color for selected frame marker.

  • UserInterface/Views/ScopeBar.css:

(.scope-bar > li):
(.scope-bar > li::before):
(.scope-bar.default-item-selected > li.multiple.selected::before):
(.scope-bar > li:matches(.selected, :hover)):
(.scope-bar > li:matches(.selected, :hover)::before):
(.scope-bar > li:not(.selected):hover::before):
(.scope-bar > li.selected:active::before):
(.scope-bar > li:hover): Deleted.
(.scope-bar > li.selected): Deleted.
(.scope-bar > li:active): Deleted.
(.scope-bar > li.selected:active): Deleted.

  • UserInterface/Views/SettingsTabContentView.css:

(.content-view.settings .navigation-bar .item.radio.button.text-only:before):

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:

(.spreadsheet-style-declaration-editor):
(@media (prefers-color-scheme: dark)):

  • UserInterface/Views/TextEditor.css:

(.text-editor > .CodeMirror .has-breakpoint .CodeMirror-linenumber::before):
(.text-editor > .CodeMirror .breakpoint-resolved .CodeMirror-linenumber::before):
(.text-editor > .CodeMirror .has-breakpoint.multiple-breakpoints .CodeMirror-linenumber::before):
(@keyframes text-editor-highlight-fadeout):
(@keyframes text-editor-hovered-expression-highlight-fadeout):
Replace breakpoint pixel art with a solid color (the system accent
color) clipped to the shape of a breakpoint.

  • UserInterface/Views/TimelineRecordFrame.css:

(.timeline-record-frame.selected):

  • UserInterface/Views/URLBreakpointTreeElement.js:
  • UserInterface/Views/Variables.css:

(:root):
(body.window-inactive):
(@media (prefers-color-scheme: dark)):
(body.mac-platform:not(.sierra, .high-sierra)):
Add custom property overrides for system colors where supported.

5:13 PM Changeset in webkit [242117] by Wenson Hsieh
  • 4 edits
    2 adds in trunk

Remove conditional compile guard for InsertIntoTextNodeCommand::doReapply
https://bugs.webkit.org/show_bug.cgi?id=195067
<rdar://problem/44812080>

Reviewed by Tim Horton.

Source/WebCore:

This iOS-specific override was introduced to fix <rdar://problem/7114425>, in which the last typed character
would be revealed when redoing text input on iOS inside a password field. The associated change fixed this bug
by overriding doReapply on iOS to only insert text (instead of additionally handling password echo); however, it
really makes sense to skip password echo when redoing on all platforms, so we can just remove the platform-
specific guards around this logic.

Doing this allows us to add the hasEditableStyle() check on iOS when redoing text insertion, which results in
a very subtle behavior change covered by the new layout test below.

Test: editing/undo/redo-text-insertion-in-non-editable-node.html

  • editing/InsertIntoTextNodeCommand.cpp:

(WebCore::InsertIntoTextNodeCommand::doReapply):

  • editing/InsertIntoTextNodeCommand.h:

LayoutTests:

Add a new layout test to verify that redoing text insertion in a non-editable element (which was previously
editable) does not mutate the text nodes affected by editing. This test case currently fails on iOS, since we
take a separate codepath when redoing that does not contain this additional check.

  • editing/undo/redo-text-insertion-in-non-editable-node-expected.txt: Added.
  • editing/undo/redo-text-insertion-in-non-editable-node.html: Added.
4:59 PM Changeset in webkit [242116] by keith_miller@apple.com
  • 4 edits in trunk/Source

Code quality cleanup in NeverDestroyed
https://bugs.webkit.org/show_bug.cgi?id=194824

Source/WebCore:

Reviewed by Mark Lam.

name_names.pl should not just assume the layout of LazyNeverDestroyed.

  • dom/make_names.pl:

(printNamesCppFile):

Source/WTF:

Reviewed by Yusuke Suzuki.

First, move data members to the end of the class per WebKit
style. Also, add forbid heap allocation since we expect the
NeverDestroyed classes to be static.

  • wtf/NeverDestroyed.h:
4:36 PM Changeset in webkit [242115] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Do not try to observe the timer when Page is nullptr
https://bugs.webkit.org/show_bug.cgi?id=195076

Reviewed by Tim Horton.

Covered by fast/dom/Window/timer-null-script-execution-context.html.

  • page/DOMTimer.cpp:

(WebCore::DOMTimer::install):

4:25 PM Changeset in webkit [242114] by mark.lam@apple.com
  • 5 edits
    1 add in trunk

wasmToJS() should purify incoming NaNs.
https://bugs.webkit.org/show_bug.cgi?id=194807
<rdar://problem/48189132>

Reviewed by Saam Barati.

JSTests:

  • wasm/regress/wasmToJS-should-purify-NaNs.js: Added.

Source/JavaScriptCore:

  • runtime/JSCJSValue.h:

(JSC::jsNumber):

  • runtime/TypedArrayAdaptors.h:

(JSC::IntegralTypedArrayAdaptor::toJSValue):

  • wasm/js/WasmToJS.cpp:

(JSC::Wasm::wasmToJS):

4:04 PM Changeset in webkit [242113] by jer.noble@apple.com
  • 20 edits
    1 add in trunk

[Cocoa] Media elements will restart network buffering just before suspending
https://bugs.webkit.org/show_bug.cgi?id=193691

Reviewed by Eric Carlson.

Source/WebCore:

API Test: WebKit.ProcessSuspendMediaBuffering

Allow the Page to suspend all media buffering in its child Documents.

  • dom/Document.cpp:

(WebCore::Document::suspendAllMediaBuffering):
(WebCore::Document::resumeAllMediaBuffering):

  • dom/Document.h:
  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::dataBufferingPermitted const):
(WebCore::MediaElementSession::suspendBuffering):
(WebCore::MediaElementSession::resumeBuffering):
(WebCore::MediaElementSession::bufferingSuspended const):

  • html/MediaElementSession.h:
  • page/Page.cpp:

(WebCore::Page::suspendAllMediaBuffering):
(WebCore::Page::resumeAllMediaBuffering):

  • page/Page.h:

(WebCore::Page::mediaPlaybackIsSuspended const):
(WebCore::Page::mediaBufferingIsSuspended const):
(WebCore::Page::mediaPlaybackIsSuspended): Deleted.

  • platform/audio/PlatformMediaSession.h:

(WebCore::PlatformMediaSession::suspendBuffering):
(WebCore::PlatformMediaSession::resumeBuffering):

  • platform/audio/PlatformMediaSessionManager.cpp:

(WebCore::PlatformMediaSessionManager::suspendAllMediaBufferingForDocument):
(WebCore::PlatformMediaSessionManager::resumeAllMediaBufferingForDocument):

  • platform/audio/PlatformMediaSessionManager.h:

Source/WebKit:

When the WebProcess receives a notification that the process is about to become
suspended, it tells the MemoryPressureHandler to release all critical memory. This
has the side effect of causing AVFoundation-backed media elements to dump their
in-memory caches and start downloading media data again. Instead, media elements
should all stop buffering media data during suspension. Add new testing SPI to
simulate suspension and resume messages.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _processWillSuspendImminentlyForTesting]):
(-[WKWebView _processDidResumeForTesting]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/WebProcessProxy.h:
  • UIProcess/ios/WKInkPickerView.mm:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::suspendAllMediaBuffering):
(WebKit::WebPage::resumeAllMediaBuffering):

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

(WebKit::WebProcess::actualPrepareToSuspend):
(WebKit::WebProcess::cancelPrepareToSuspend):
(WebKit::WebProcess::processDidResume):
(WebKit::WebProcess::suspendAllMediaBuffering):
(WebKit::WebProcess::resumeAllMediaBuffering):

  • WebProcess/WebProcess.h:

Tools:

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

(TEST):

3:53 PM Changeset in webkit [242112] by youenn@apple.com
  • 10 edits in trunk

Move service worker response validation from the service worker client to the service worker itself
https://bugs.webkit.org/show_bug.cgi?id=194716

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Rebased tests as we now report to the console log any service worker response validation erorr.

  • web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-image.https-expected.txt:

Source/WebCore:

Added response validation at service worker side.

No change of behavior except for now logging validation error messages in the console.
Covered by rebased tests.

  • workers/service/context/ServiceWorkerFetch.cpp:

(WebCore::ServiceWorkerFetch::validateResponse):
(WebCore::ServiceWorkerFetch::processResponse):
(WebCore::ServiceWorkerFetch::dispatchFetchEvent):

Source/WebKit:

Removed response validation as it is now done in service worker side.

  • WebProcess/Storage/ServiceWorkerClientFetch.cpp:

(WebKit::ServiceWorkerClientFetch::didReceiveRedirectResponse):
(WebKit::ServiceWorkerClientFetch::didReceiveResponse):

LayoutTests:

Rebased tests as we now report to the console log any service worker response validation erorr.

  • http/tests/inspector/network/resource-response-service-worker-expected.txt:
  • http/tests/workers/service/basic-fetch.https-expected.txt:
  • http/tests/workers/service/service-worker-crossorigin-fetch-expected.txt:
3:45 PM Changeset in webkit [242111] by Kocsen Chung
  • 1 copy in tags/Safari-608.1.7

Tag Safari-608.1.7.

3:38 PM Changeset in webkit [242110] by sihui_liu@apple.com
  • 6 edits in trunk/Source/WebCore

[Mac WK2] storage/indexeddb/IDBObject-leak.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=195036

Reviewed by Geoffrey Garen.

When connection to IDBServer is lost, IDBDatabase in web process should not only stop active transactions, but
also transactions in committing process.

Also, TransactionOpration should clear its perform function when the operation is being completed, otherwise
there is a reference cycle of TransactionOpration.

Covered by existing tests storage/indexeddb/IDBObject-leak.html.

  • Modules/indexeddb/IDBDatabase.cpp:

(WebCore::IDBDatabase::connectionToServerLost): notify committing transasctions that connection is lost.

  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::connectionClosedFromServer): notify IDBConnectionProxy that transaction ends.

  • Modules/indexeddb/client/IDBConnectionProxy.cpp:

(WebCore::IDBClient::IDBConnectionProxy::forgetTransaction): clear finished transactions.

  • Modules/indexeddb/client/IDBConnectionProxy.h:
  • Modules/indexeddb/client/TransactionOperation.h:

(WebCore::IDBClient::TransactionOperation::doComplete): clear perform function unconditionally when the
operation is in completion process.

2:40 PM Changeset in webkit [242109] by dinfuehr@igalia.com
  • 9 edits in trunk

Fix warnings on ARM and MIPS
https://bugs.webkit.org/show_bug.cgi?id=195049

Reviewed by Mark Lam.

.:

Disable warnings for changes to the ABI with GCC 7.1.

  • Source/cmake/WebKitCompilerFlags.cmake:

Source/JavaScriptCore:

Fix all warnings on ARM and MIPS.

  • assembler/MacroAssemblerPrinter.cpp:

(JSC::Printer::printMemory):

  • assembler/testmasm.cpp:

(JSC::testProbeModifiesStackValues):

  • bytecode/InByIdStatus.cpp:

(JSC::InByIdStatus::computeFor):

  • runtime/CachedTypes.cpp:

(JSC::VariableLengthObject::buffer const):

  • runtime/JSBigInt.h:
  • tools/JSDollarVM.cpp:

(JSC::codeBlockFromArg):

2:31 PM Changeset in webkit [242108] by Alan Bujtas
  • 13 edits in trunk/Source

[ContentChangeObserver] clearContentChangeObservers should be internal to ContentChangeObserver class
https://bugs.webkit.org/show_bug.cgi?id=195066
<rdar://problem/48411682>

Reviewed by Tim Horton.

Source/WebCore:

Now all the empty clearContentChangeObservers() implementations can be removed.

  • dom/Document.cpp:

(WebCore::Document::platformSuspendOrStopActiveDOMObjects):

  • loader/EmptyClients.h:
  • page/ChromeClient.h:
  • page/Frame.cpp:

(WebCore::Frame::willDetachPage):

  • page/ios/ContentChangeObserver.h:
  • page/ios/ContentChangeObserver.mm:

(WebCore::ContentChangeObserver::clearTimersAndReportContentChange):
(WebCore::ContentChangeObserver::didSuspendActiveDOMObjects): Might need to merge them.
(WebCore::ContentChangeObserver::willDetachPage):

Source/WebKit:

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:

(WebKit::WebChromeClient::clearContentChangeObservers): Deleted.

Source/WebKitLegacy/ios:

  • WebCoreSupport/WebChromeClientIOS.h:
  • WebCoreSupport/WebChromeClientIOS.mm:

(WebChromeClientIOS::clearContentChangeObservers): Deleted.

2:14 PM Changeset in webkit [242107] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] Sandbox should allow mach lookups related to media capturing
https://bugs.webkit.org/show_bug.cgi?id=194951

Reviewed by Eric Carlson.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
2:08 PM Changeset in webkit [242106] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

Update NetworkSession to use Session Cleanup when available
https://bugs.webkit.org/show_bug.cgi?id=195019
<rdar://problem/45149868>

Reviewed by Alex Christensen.

If the build environment supports Session Cleanup, initialize it.

No test changes since this doesn't do anything on the test systems at present.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

1:50 PM Changeset in webkit [242105] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Search: no results when opening to Search tab
https://bugs.webkit.org/show_bug.cgi?id=195058
<rdar://problem/48407699>

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/SearchSidebarPanel.js:

(WI.SearchSidebarPanel.prototype.performSearch):
If targets aren't available, wait until they are and then perform the search.

  • UserInterface/Base/Main.js:

(WI.targetsAvailable): Added.
Expose getter for indicating whether targets are available.

1:40 PM Changeset in webkit [242104] by Joseph Pecoraro
  • 8 edits
    3 adds in trunk/Source/WebInspectorUI

Web Inspector: CPU Usage Timeline - Main Thread Indicator
https://bugs.webkit.org/show_bug.cgi?id=194972

Reviewed by Devin Rousso.

  • UserInterface/Main.html:
  • UserInterface/Base/Utilities.js:

(value):
The existing enclosingNode doesn't work for SVG because its names
are lowercase. Add a simplified version for the svg case.

  • UserInterface/Views/RangeChart.js: Added.

(WI.RangeChart):
(WI.RangeChart.prototype.get size):
(WI.RangeChart.prototype.set size):
(WI.RangeChart.prototype.addRange):
(WI.RangeChart.prototype.clear):
(WI.RangeChart.prototype.layout):
A new chart that draws rects for given ranges.

  • UserInterface/Models/Timeline.js:

(WI.Timeline.prototype.recordsOverlappingTimeRange):
Helper to specifically get records touching a range. Useful
for when we have a single pixel spanning (startTime -> endTime)
and we want to find records in that pixel.

  • UserInterface/Views/CPUTimelineView.css:

(.timeline-view.cpu .cpu-usage-indicator-view > .graph > .range-chart rect):
(.timeline-view.cpu .cpu-usage-indicator-view > .graph > .range-chart .sample-type-script):
(.timeline-view.cpu .cpu-usage-indicator-view > .graph > .range-chart .sample-type-style):
(.timeline-view.cpu .cpu-usage-indicator-view > .graph > .range-chart .sample-type-layout):
(.timeline-view.cpu .cpu-usage-indicator-view > .graph > .range-chart .sample-type-paint):

  • UserInterface/Views/CPUTimelineView.js:

(WI.CPUTimelineView.prototype.get indicatorViewHeight):
(WI.CPUTimelineView.prototype.clear):
(WI.CPUTimelineView.prototype.get scrollableElements):
(WI.CPUTimelineView.prototype.initialLayout):
(WI.CPUTimelineView.prototype.layout):
(WI.CPUTimelineView.prototype._graphPositionForMouseEvent):
(WI.CPUTimelineView.prototype._handleIndicatorClick):
(WI.CPUTimelineView.prototype._attemptSelectIndicatatorTimelineRecord):
(WI.CPUTimelineView.prototype._selectTimelineRecord):
Place the Main Thread Indicator view beneath the big graph.
Clicking inside it selects records in the Timeline Overview.

  • UserInterface/Views/CPUUsageIndicatorView.css: Added.

(.cpu-usage-indicator-view):
(.cpu-usage-indicator-view > .details):
(body[dir=ltr] .cpu-usage-indicator-view > .details):
(body[dir=rtl] .cpu-usage-indicator-view > .details):
(body[dir=rtl] .cpu-usage-indicator-view > .graph):
(.cpu-usage-indicator-view > .graph):
(.cpu-usage-indicator-view > .graph,):

  • UserInterface/Views/CPUUsageIndicatorView.js: Added.

(WI.CPUUsageIndicatorView):
(WI.CPUUsageIndicatorView.prototype.get chart):
(WI.CPUUsageIndicatorView.prototype.clear):
(WI.CPUUsageIndicatorView.prototype.updateChart):
Converts the CPU samples data into a RangeChart. It works to coalesce
many samples of the same type into a single range to reduce total ranges.

  • UserInterface/Views/TimelineRecordingContentView.js:

(WI.TimelineRecordingContentView):
(WI.TimelineRecordingContentView.prototype._recordSelected):
(WI.TimelineRecordingContentView.prototype._recordWasSelected):
(WI.TimelineRecordingContentView.prototype._selectRecordInTimelineOverview):
(WI.TimelineRecordingContentView.prototype._selectRecordInTimelineView):

  • UserInterface/Views/TimelineView.js:

Add a path for a TimelineView to dispatch a record selected event and cause
have the TimelineRecordingContentView react to it by updating the timeline
overview and relevent timeline view.

1:40 PM Changeset in webkit [242103] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Misc cleanup in StructureIDTable after r242096.
https://bugs.webkit.org/show_bug.cgi?id=195063

Reviewed by Saam Barati.

  • runtime/StructureIDTable.cpp:

(JSC::StructureIDTable::allocateID):

  • RELEASE_ASSERT that the StructureID allocation will succeed.
  • runtime/StructureIDTable.h:

(JSC::StructureIDTable::decode):
(JSC::StructureIDTable::encode):

  • Add back a comment that Yusuke requested but was lost when the patch was rolled out and relanded.
  • Applied bitwise_casts that Saam requested.
1:01 PM Changeset in webkit [242102] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[ContentChangeObserver] Move style recalc schedule observation logic to ContentChangeObserver
https://bugs.webkit.org/show_bug.cgi?id=195062
<rdar://problem/48409258>

Reviewed by Tim Horton.

Also rename registerDOMTimerForContentObservationIfNeeded to be consistent with the did* naming style.

  • dom/Document.cpp:

(WebCore::Document::scheduleStyleRecalc):

  • page/DOMTimer.cpp:

(WebCore::DOMTimer::install):

  • page/ios/ContentChangeObserver.h:
  • page/ios/ContentChangeObserver.mm:

(WebCore::ContentChangeObserver::didInstallDOMTimer):
(WebCore::ContentChangeObserver::didScheduleStyleRecalc):
(WebCore::ContentChangeObserver::registerDOMTimerForContentObservationIfNeeded): Deleted.

12:54 PM Changeset in webkit [242101] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Gardening: 32-bit build fix after r242096.
https://bugs.webkit.org/show_bug.cgi?id=194989

Not reviewed.

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::emitLoadStructure):

12:49 PM Changeset in webkit [242100] by mark.lam@apple.com
  • 19 edits in trunk/Source/JavaScriptCore

Unpoison MacroAssemblerCodePtr, ClassInfo pointers, and a few other things.
https://bugs.webkit.org/show_bug.cgi?id=195039

Reviewed by Saam Barati.

  1. Unpoison MacroAssemblerCodePtrs, ReturnAddressPtr.
  2. Replace PoisonedClassInfoPtr with ClassInfo*.
  3. Replace PoisonedMasmPtr with const void*.
  4. Remove all references to CodeBlockPoison, JITCodePoison, and GlobalDataPoison.
  • API/JSCallbackObject.h:
  • API/JSObjectRef.cpp:

(classInfoPrivate):

  • assembler/MacroAssemblerCodeRef.h:

(JSC::FunctionPtr::FunctionPtr):
(JSC::FunctionPtr::executableAddress const):
(JSC::FunctionPtr::retaggedExecutableAddress const):
(JSC::ReturnAddressPtr::ReturnAddressPtr):
(JSC::ReturnAddressPtr::value const):
(JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
(JSC::MacroAssemblerCodePtr::createFromExecutableAddress):
(JSC::MacroAssemblerCodePtr:: const):
(JSC::MacroAssemblerCodePtr::operator! const):
(JSC::MacroAssemblerCodePtr::operator== const):
(JSC::MacroAssemblerCodePtr::hash const):
(JSC::MacroAssemblerCodePtr::emptyValue):
(JSC::MacroAssemblerCodePtr::deletedValue):
(JSC::FunctionPtr<tag>::FunctionPtr):
(JSC::MacroAssemblerCodePtr::poisonedPtr const): Deleted.

  • b3/B3LowerMacros.cpp:
  • b3/testb3.cpp:

(JSC::B3::testInterpreter):

  • dfg/DFGOSRExitCompilerCommon.h:

(JSC::DFG::adjustFrameAndStackInOSRExitCompilerThunk):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileCheckSubClass):
(JSC::DFG::SpeculativeJIT::compileNewStringObject):
(JSC::DFG::SpeculativeJIT::emitSwitchIntJump):
(JSC::DFG::SpeculativeJIT::emitSwitchImm):
(JSC::DFG::SpeculativeJIT::emitSwitchCharStringJump):
(JSC::DFG::SpeculativeJIT::emitSwitchChar):

  • dfg/DFGSpeculativeJIT.h:
  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNewStringObject):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckSubClass):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::emitAllocateDestructibleObject):

  • jit/ThunkGenerators.cpp:

(JSC::virtualThunkFor):
(JSC::boundThisNoArgsFunctionCallGenerator):

  • runtime/JSCPoison.h:
  • runtime/JSDestructibleObject.h:

(JSC::JSDestructibleObject::classInfo const):

  • runtime/JSSegmentedVariableObject.h:

(JSC::JSSegmentedVariableObject::classInfo const):

  • runtime/Structure.h:
  • runtime/VM.h:
  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::addCall):
(JSC::Wasm::B3IRGenerator::addCallIndirect):

  • wasm/WasmBinding.cpp:

(JSC::Wasm::wasmToWasm):

12:34 PM Changeset in webkit [242099] by Chris Dumez
  • 10 edits in trunk/Source

[iOS] Regression(PSON) Scroll position is no longer restored when navigating back to reddit.com
https://bugs.webkit.org/show_bug.cgi?id=195054
<rdar://problem/48330549>

Reviewed by Geoff Garen.

Source/WebCore:

Add MaintainMemoryCache flag to indicate that the memory cache should not get purged.

  • page/MemoryRelease.cpp:

(WebCore::releaseNoncriticalMemory):
(WebCore::releaseCriticalMemory):
(WebCore::releaseMemory):

  • page/MemoryRelease.h:

Source/WebKit:

We attempt to restore the scroll position twice, on first layout and then on load completion.
Before PSON, the scroll position would fail to get restored on first layout but would succeed
on load completion because the view is tall enough by then. With PSON however, we would
fail to restore the scroll position on load completion because the view would not be tall
enough yet by this point. The reason is that the dynamic resources would not be in the memory cache
and would then get reloaded abd finish loading *after* the load event.

To address the issue, we now make sure to not purge the memory cache on process suspension on
iOS if there is currently a SuspendedPageProxy in the UIProcess for this process.

  • UIProcess/SuspendedPageProxy.cpp:

(WebKit::SuspendedPageProxy::SuspendedPageProxy):
(WebKit::SuspendedPageProxy::~SuspendedPageProxy):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::incrementSuspendedPageCount):
(WebKit::WebProcessProxy::decrementSuspendedPageCount):

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

(WebKit::WebProcess::initializeWebProcess):
(WebKit::WebProcess::setHasSuspendedPageProxy):

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
12:24 PM Changeset in webkit [242098] by rniwa@webkit.org
  • 3 edits in trunk/Source/WebKit

[iOS] REGRESSION(r238490?): Safari sometimes shows blank page until a cross site navigation or re-opening the tab
https://bugs.webkit.org/show_bug.cgi?id=195037
<rdar://problem/48154508>

Reviewed by Antti Koivisto.

Restore the pre-r238490 behavior of WebPage::didCompletePageTransition clearing LayerTreeFreezeReason::ProcessSuspended
as this has been an issue when I was able to reproduce the issue locally.

Also added release logging to help diagnose the issue in the future.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::freezeLayerTree):
(WebKit::WebPage::unfreezeLayerTree):
(WebKit::WebPage::didCompletePageTransition):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::freezeAllLayerTrees):
(WebKit::WebProcess::unfreezeAllLayerTrees):

11:47 AM Changeset in webkit [242097] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Create WebPageProxy::m_userMediaPermissionRequestManager only when needed
https://bugs.webkit.org/show_bug.cgi?id=195051

Reviewed by Eric Carlson.

Before the patch, WebPageProxy::m_userMediaPermissionRequestManager was created
in some methods to reset its state when main document is changing, view is becoming visible...
This code is unnecessary if the page did not create it already using JS APIs such as getUserMedia/enumerateDevices/ondevicechange.
This patch skips processing in the other cases if WebPageProxy::m_userMediaPermissionRequestManager is null.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::close): No need to nullify it since it will be done in resetState shortly after.
(WebKit::WebPageProxy::didChangeMainDocument):
(WebKit::WebPageProxy::viewIsBecomingVisible):
(WebKit::WebPageProxy::clearUserMediaState):
(WebKit::WebPageProxy::updatePlayingMediaDidChange): m_userMediaPermissionRequestManager should not be null here
since there is or was some capturing done for the page.

11:41 AM Changeset in webkit [242096] by mark.lam@apple.com
  • 10 edits in trunk/Source/JavaScriptCore

[Re-landing] Add some randomness into the StructureID.
https://bugs.webkit.org/show_bug.cgi?id=194989
<rdar://problem/47975563>

Reviewed by Yusuke Suzuki.

  1. On 64-bit, the StructureID will now be encoded as:

----------------------------------------------------------------
| 1 Nuke Bit | 24 StructureIDTable index bits | 7 entropy bits |
----------------------------------------------------------------

The entropy bits are chosen at random and assigned when a StructureID is
allocated.

  1. Instead of Structure pointers, the StructureIDTable will now contain encodedStructureBits, which is encoded as such:

----------------------------------------------------------------
| 7 entropy bits | 57 structure pointer bits |
----------------------------------------------------------------

The entropy bits here are the same 7 bits used in the encoding of the
StructureID for this structure entry in the StructureIDTable.

  1. Retrieval of the structure pointer given a StructureID is now computed as follows:

index = structureID >> 7; with arithmetic shift.
encodedStructureBits = structureIDTable[index];
structure = encodedStructureBits (structureID << 57);

We use an arithmetic shift for the right shift because that will preserve
the nuke bit in the high bit of the index if the StructureID was not
decontaminated before use as expected.

  1. Remove unused function loadArgumentWithSpecificClass() in SpecializedThunkJIT.
  1. Define StructureIDTable::m_size to be the number of allocated StructureIDs instead of always being the same as m_capacity.
  1. Change StructureIDTable::s_unusedID's value to 0.

Its previous value of unusedPointer i.e. 0xd1e7beef, does not make sense for
StructureID on 64-bit. Also, there was never any code that initializes unused
IDs to the s_unusedID. The only meaningful value for s_unusedID is 0, which
is the ID we'll get when the freelist is empty, prompting a resize of the
structureIDTable.

This patch appears to be perf neutral on JetStream 2 run via the cli on a
11" MacBook Air, 13" MacBook Pro, iPhone 6S, and iPhone XR.

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::loadStructure):

  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::appendJSCellOrAuxiliary):

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::emitLoadStructure):

  • jit/AssemblyHelpers.h:
  • jit/SpecializedThunkJIT.h:

(JSC::SpecializedThunkJIT::loadArgumentWithSpecificClass): Deleted.

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/StructureIDTable.cpp:

(JSC::StructureIDTable::StructureIDTable):
(JSC::StructureIDTable::makeFreeListFromRange):
(JSC::StructureIDTable::resize):
(JSC::StructureIDTable::allocateID):
(JSC::StructureIDTable::deallocateID):

  • runtime/StructureIDTable.h:

(JSC::StructureIDTable::decode):
(JSC::StructureIDTable::encode):
(JSC::StructureIDTable::get):
(JSC::StructureIDTable::isValid):

11:23 AM Changeset in webkit [242095] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

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

made the QuickLook.LegacyQuickLookContent API test flakey
(Requested by estes on #webkit).

Reverted changeset:

"[iOS] Break a reference cycle between PreviewLoader and
ResourceLoader"
https://bugs.webkit.org/show_bug.cgi?id=194964
https://trac.webkit.org/changeset/241970

10:37 AM Changeset in webkit [242094] by Alan Bujtas
  • 6 edits in trunk/Source

[ContentChangeObserver] Simplify content observation API by removing explicit DOMTimer observation.
https://bugs.webkit.org/show_bug.cgi?id=195023
<rdar://problem/48381885>

Reviewed by Tim Horton.

Source/WebCore:

In the future we might decide that certain activities don't require DOMTimer observation, but that should
be internal to ContentChangeObserver.

  • page/ios/ContentChangeObserver.h:
  • page/ios/ContentChangeObserver.mm:

(WebCore::ContentChangeObserver::startObservingContentChanges):
(WebCore::ContentChangeObserver::stopObservingContentChanges):

  • page/ios/EventHandlerIOS.mm:

(WebCore::EventHandler::mouseMoved):

Source/WebKit:

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::handleSyntheticClick):

10:28 AM Changeset in webkit [242093] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[ContentChangeObserver] Move observing logic from Document::updateStyleIfNeeded to ContentChangeObserver
https://bugs.webkit.org/show_bug.cgi?id=195032
<rdar://problem/48388063>

Reviewed by Tim Horton.

This might eventually turn into a regular start/stop content observing call.

  • dom/Document.cpp:

(WebCore::Document::updateStyleIfNeeded):

  • page/ios/ContentChangeObserver.h:
  • page/ios/ContentChangeObserver.mm:

(WebCore::ContentChangeObserver::startObservingStyleResolve):
(WebCore::ContentChangeObserver::stopObservingStyleResolve):

10:24 AM Changeset in webkit [242092] by commit-queue@webkit.org
  • 7 edits
    8 adds in trunk

[Curl] Load HTTP body of 401 response when AuthenticationChange is cancelled.
https://bugs.webkit.org/show_bug.cgi?id=191652

Patch by Takashi Komori <Takashi.Komori@sony.com> on 2019-02-26
Reviewed by Alex Christensen.

Source/WebKit:

Test: http/tests/security/401-logout/401-logout.php

  • NetworkProcess/curl/NetworkDataTaskCurl.cpp:

(WebKit::NetworkDataTaskCurl::tryHttpAuthentication):
(WebKit::NetworkDataTaskCurl::tryProxyAuthentication):

  • NetworkProcess/curl/NetworkDataTaskCurl.h:

Tools:

Fix WinCairo MiniBrowser behavior of authentication dialog.

  • MiniBrowser/win/WebKitBrowserWindow.cpp:

(WebKitBrowserWindow::didReceiveAuthenticationChallenge):

LayoutTests:

Added appropriate expected results for WebKit/WebKitLegacy of WinCairo port.

  • platform/wincairo-wk1/http/tests/security/401-logout/401-logout-expected.txt: Added.
  • platform/wincairo/TestExpectations:
  • platform/wincairo/http/tests/security/401-logout/401-logout-expected.txt: Added.
10:20 AM Changeset in webkit [242091] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[ContentChangeObserver] Move CheckForVisibilityChange to ContentChangeObserver class
https://bugs.webkit.org/show_bug.cgi?id=195035
<rdar://problem/48389123>

Reviewed by Tim Horton.

Visibility checking logic belongs to ContentChangeObserver.

  • page/ios/ContentChangeObserver.h:
  • page/ios/ContentChangeObserver.mm:

(WebCore::elementImplicitVisibility):
(WebCore::ContentChangeObserver::StyleChange::StyleChange):
(WebCore::ContentChangeObserver::StyleChange::~StyleChange):

  • rendering/updating/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::updateElementRenderer):
(WebCore::elementImplicitVisibility): Deleted.
(WebCore::CheckForVisibilityChange::CheckForVisibilityChange): Deleted.
(WebCore::CheckForVisibilityChange::~CheckForVisibilityChange): Deleted.

10:14 AM Changeset in webkit [242090] by commit-queue@webkit.org
  • 1 edit
    8 copies
    1 move
    17 adds
    3 deletes in trunk/LayoutTests

Split tests programmatic-scroll-iframe and scroll-iframe
https://bugs.webkit.org/show_bug.cgi?id=195050

This patch splits some iOS frame scrolling tests into separate tests in order to make debugging
and test expectations easier to manage.

Patch by Frederic Wang <fwang@igalia.com> on 2019-02-26
Reviewed by Antti Koivisto.

  • fast/scrolling/ios/programmatic-scroll-iframe-001-expected.html: Copied from LayoutTests/fast/scrolling/ios/programmatic-scroll-iframe-expected.html.
  • fast/scrolling/ios/programmatic-scroll-iframe-001.html: Added.
  • fast/scrolling/ios/programmatic-scroll-iframe-002-expected.html: Copied from LayoutTests/fast/scrolling/ios/programmatic-scroll-iframe-expected.html.
  • fast/scrolling/ios/programmatic-scroll-iframe-002.html: Added.
  • fast/scrolling/ios/programmatic-scroll-iframe-003-expected.html: Copied from LayoutTests/fast/scrolling/ios/programmatic-scroll-iframe-expected.html.
  • fast/scrolling/ios/programmatic-scroll-iframe-003.html: Added.
  • fast/scrolling/ios/programmatic-scroll-iframe-004-expected.html: Copied from LayoutTests/fast/scrolling/ios/programmatic-scroll-iframe-expected.html.
  • fast/scrolling/ios/programmatic-scroll-iframe-004.html: Added.
  • fast/scrolling/ios/programmatic-scroll-iframe-005-expected.html: Copied from LayoutTests/fast/scrolling/ios/programmatic-scroll-iframe-expected.html.
  • fast/scrolling/ios/programmatic-scroll-iframe-005.html: Added.
  • fast/scrolling/ios/programmatic-scroll-iframe-006-expected.html: Copied from LayoutTests/fast/scrolling/ios/programmatic-scroll-iframe-expected.html.
  • fast/scrolling/ios/programmatic-scroll-iframe-006.html: Added.
  • fast/scrolling/ios/programmatic-scroll-iframe-007-expected.html: Copied from LayoutTests/fast/scrolling/ios/programmatic-scroll-iframe-expected.html.
  • fast/scrolling/ios/programmatic-scroll-iframe-007.html: Added.
  • fast/scrolling/ios/programmatic-scroll-iframe-008-expected.html: Copied from LayoutTests/fast/scrolling/ios/programmatic-scroll-iframe-expected.html.
  • fast/scrolling/ios/programmatic-scroll-iframe-008.html: Added.
  • fast/scrolling/ios/programmatic-scroll-iframe-009-expected.html: Renamed from LayoutTests/fast/scrolling/ios/programmatic-scroll-iframe-expected.html.
  • fast/scrolling/ios/programmatic-scroll-iframe-009.html: Added.
  • fast/scrolling/ios/programmatic-scroll-iframe.html: Removed.
  • fast/scrolling/ios/scroll-iframe-001-expected.html: Added.
  • fast/scrolling/ios/scroll-iframe-001.html: Added.
  • fast/scrolling/ios/scroll-iframe-002-expected.html: Added.
  • fast/scrolling/ios/scroll-iframe-002.html: Added.
  • fast/scrolling/ios/scroll-iframe-003-expected.html: Added.
  • fast/scrolling/ios/scroll-iframe-003.html: Added.
  • fast/scrolling/ios/scroll-iframe-004-expected.html: Added.
  • fast/scrolling/ios/scroll-iframe-004.html: Added.
  • fast/scrolling/ios/scroll-iframe-expected.html: Removed.
  • fast/scrolling/ios/scroll-iframe.html: Removed.
10:09 AM Changeset in webkit [242089] by youenn@apple.com
  • 4 edits in trunk

WebPageProxy should nullify m_userMediaPermissionRequestManager after resetting the media state
https://bugs.webkit.org/show_bug.cgi?id=195028
<rdar://problem/48243733>

Reviewed by Eric Carlson.

Source/WebKit:

Covered by API test.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::resetState):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
10:01 AM Changeset in webkit [242088] by Kocsen Chung
  • 7 edits in trunk/Source

Versioning.

9:13 AM Changeset in webkit [242087] by Ryan Haddad
  • 10 edits in trunk/Source/JavaScriptCore

Unreviewed, rolling out r242071.

Breaks internal builds.

Reverted changeset:

"Add some randomness into the StructureID."
https://bugs.webkit.org/show_bug.cgi?id=194989
https://trac.webkit.org/changeset/242071

8:28 AM Changeset in webkit [242086] by commit-queue@webkit.org
  • 76 edits
    1 add in trunk/LayoutTests

Synchronize MathML WPT tests
https://bugs.webkit.org/show_bug.cgi?id=195048

This imports changes to the documentation and spec references for MathML.
It also imports a new test for href currently disabled due to bug 187039.

Patch by Frederic Wang <fwang@igalia.com> on 2019-02-26
Reviewed by Manuel Rego Casasnovas.

LayoutTests/imported/w3c:

  • web-platform-tests/mathml/README.md:
  • web-platform-tests/mathml/presentation-markup/fractions/frac-1.html:
  • web-platform-tests/mathml/presentation-markup/fractions/frac-bar-001.html:
  • web-platform-tests/mathml/presentation-markup/fractions/frac-color-001.html:
  • web-platform-tests/mathml/presentation-markup/fractions/frac-color-002.html:
  • web-platform-tests/mathml/presentation-markup/fractions/frac-linethickness-001.html:
  • web-platform-tests/mathml/presentation-markup/fractions/frac-linethickness-002.html:
  • web-platform-tests/mathml/presentation-markup/fractions/frac-linethickness-003.html:
  • web-platform-tests/mathml/presentation-markup/fractions/frac-mrow-001.html:
  • web-platform-tests/mathml/presentation-markup/fractions/frac-numalign-denomalign-001.html:
  • web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-1.html:
  • web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-2.html:
  • web-platform-tests/mathml/presentation-markup/fractions/frac-visibility-001.html:
  • web-platform-tests/mathml/presentation-markup/operators/mo-axis-height-1.html:
  • web-platform-tests/mathml/presentation-markup/radicals/root-parameters-1.html:
  • web-platform-tests/mathml/presentation-markup/scripts/subsup-1.html:
  • web-platform-tests/mathml/presentation-markup/scripts/subsup-2.html:
  • web-platform-tests/mathml/presentation-markup/scripts/subsup-3.html:
  • web-platform-tests/mathml/presentation-markup/scripts/subsup-4.html:
  • web-platform-tests/mathml/presentation-markup/scripts/subsup-5.html:
  • web-platform-tests/mathml/presentation-markup/scripts/subsup-parameters-1.html:
  • web-platform-tests/mathml/presentation-markup/scripts/subsup-parameters-2.html:
  • web-platform-tests/mathml/presentation-markup/scripts/underover-1.html:
  • web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-1.html:
  • web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-2.html:
  • web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-3.html:
  • web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-4.html:
  • web-platform-tests/mathml/presentation-markup/spaces/space-1.html:
  • web-platform-tests/mathml/presentation-markup/spaces/space-2.html:
  • web-platform-tests/mathml/presentation-markup/tables/table-axis-height.html:
  • web-platform-tests/mathml/relations/css-styling/color-1.html:
  • web-platform-tests/mathml/relations/css-styling/display-1.html:
  • web-platform-tests/mathml/relations/css-styling/displaystyle-1.html:
  • web-platform-tests/mathml/relations/css-styling/lengths-1.html:
  • web-platform-tests/mathml/relations/css-styling/lengths-2.html:
  • web-platform-tests/mathml/relations/css-styling/lengths-3.html:
  • web-platform-tests/mathml/relations/css-styling/mathvariant-bold-fraktur.html:
  • web-platform-tests/mathml/relations/css-styling/mathvariant-bold-italic.html:
  • web-platform-tests/mathml/relations/css-styling/mathvariant-bold-sans-serif.html:
  • web-platform-tests/mathml/relations/css-styling/mathvariant-bold-script.html:
  • web-platform-tests/mathml/relations/css-styling/mathvariant-bold.html:
  • web-platform-tests/mathml/relations/css-styling/mathvariant-double-struck.html:
  • web-platform-tests/mathml/relations/css-styling/mathvariant-fraktur.html:
  • web-platform-tests/mathml/relations/css-styling/mathvariant-initial.html:
  • web-platform-tests/mathml/relations/css-styling/mathvariant-italic.html:
  • web-platform-tests/mathml/relations/css-styling/mathvariant-looped.html:
  • web-platform-tests/mathml/relations/css-styling/mathvariant-monospace.html:
  • web-platform-tests/mathml/relations/css-styling/mathvariant-sans-serif-bold-italic.html:
  • web-platform-tests/mathml/relations/css-styling/mathvariant-sans-serif-italic.html:
  • web-platform-tests/mathml/relations/css-styling/mathvariant-sans-serif.html:
  • web-platform-tests/mathml/relations/css-styling/mathvariant-script.html:
  • web-platform-tests/mathml/relations/css-styling/mathvariant-stretched.html:
  • web-platform-tests/mathml/relations/css-styling/mathvariant-tailed.html:
  • web-platform-tests/mathml/relations/css-styling/visibility-1.html:
  • web-platform-tests/mathml/relations/html5-tree/class-1.html:
  • web-platform-tests/mathml/relations/html5-tree/class-2.html:
  • web-platform-tests/mathml/relations/html5-tree/color-attributes-1.html:
  • web-platform-tests/mathml/relations/html5-tree/display-1.html:
  • web-platform-tests/mathml/relations/html5-tree/dynamic-1.html:
  • web-platform-tests/mathml/relations/html5-tree/href-click-1.html:
  • web-platform-tests/mathml/relations/html5-tree/href-click-2.html:
  • web-platform-tests/mathml/relations/html5-tree/href-click-3.html: Added.
  • web-platform-tests/mathml/relations/html5-tree/integration-point-1.html:
  • web-platform-tests/mathml/relations/html5-tree/integration-point-2.html:
  • web-platform-tests/mathml/relations/html5-tree/integration-point-3.html:
  • web-platform-tests/mathml/relations/html5-tree/required-extensions-1.html:
  • web-platform-tests/mathml/relations/html5-tree/required-extensions-2.html:
  • web-platform-tests/mathml/relations/html5-tree/unique-identifier-1.html:
  • web-platform-tests/mathml/relations/html5-tree/unique-identifier-2.html:
  • web-platform-tests/mathml/relations/html5-tree/unique-identifier-3.html:
  • web-platform-tests/mathml/relations/html5-tree/w3c-import.log:
  • web-platform-tests/mathml/relations/text-and-math/use-typo-metrics-1.html:
  • web-platform-tests/mathml/tools/mathvariant-transforms.py:
  • web-platform-tests/mathml/tools/utils/w3c-import.log:

LayoutTests:

  • TestExpectations: Disable the new href test since testdriver.js is not supported.
7:29 AM Changeset in webkit [242085] by fred.wang@free.fr
  • 60 edits
    4 moves
    21 adds
    19 deletes in trunk/LayoutTests

Export MathML fraction tests to WPT
https://bugs.webkit.org/show_bug.cgi?id=194436

LayoutTests/imported/w3c:

This is just an import of the current MathML WPT tests. It includes fraction tests from
WebKit that were exported in [1]. Some test results have whitespace change, due to [2].

[1] https://github.com/web-platform-tests/wpt/pull/15301
[2] https://github.com/web-platform-tests/wpt/commit/e2dd57c3f273468b3c6a087978c531dcd00933de

Patch by Frederic Wang <fwang@igalia.com> on 2019-02-26
Reviewed by Manuel Rego Casasnovas.

  • resources/resource-files.json:
  • web-platform-tests/mathml/META.yml: Added.
  • web-platform-tests/mathml/OWNERS: Removed.
  • web-platform-tests/mathml/README.md:
  • web-platform-tests/mathml/presentation-markup/fractions/frac-1-expected.txt:
  • web-platform-tests/mathml/presentation-markup/fractions/frac-1.html:
  • web-platform-tests/mathml/presentation-markup/fractions/frac-bar-001-expected.html: Added.
  • web-platform-tests/mathml/presentation-markup/fractions/frac-bar-001.html: Added.
  • web-platform-tests/mathml/presentation-markup/fractions/frac-color-001-expected.html: Added.
  • web-platform-tests/mathml/presentation-markup/fractions/frac-color-001-notref.html: Added.
  • web-platform-tests/mathml/presentation-markup/fractions/frac-color-001.html: Added.
  • web-platform-tests/mathml/presentation-markup/fractions/frac-color-002-expected.html: Added.
  • web-platform-tests/mathml/presentation-markup/fractions/frac-color-002.html: Added.
  • web-platform-tests/mathml/presentation-markup/fractions/frac-linethickness-001-expected.html: Added.
  • web-platform-tests/mathml/presentation-markup/fractions/frac-linethickness-001.html: Added.
  • web-platform-tests/mathml/presentation-markup/fractions/frac-linethickness-002-expected.html: Added.
  • web-platform-tests/mathml/presentation-markup/fractions/frac-linethickness-002.html: Added.
  • web-platform-tests/mathml/presentation-markup/fractions/frac-linethickness-003-expected.html: Added.
  • web-platform-tests/mathml/presentation-markup/fractions/frac-linethickness-003-notref.html: Added.
  • web-platform-tests/mathml/presentation-markup/fractions/frac-linethickness-003.html: Added.
  • web-platform-tests/mathml/presentation-markup/fractions/frac-mrow-001-expected.html: Added.
  • web-platform-tests/mathml/presentation-markup/fractions/frac-mrow-001.html: Added.
  • web-platform-tests/mathml/presentation-markup/fractions/frac-numalign-denomalign-001-expected.html: Added.
  • web-platform-tests/mathml/presentation-markup/fractions/frac-numalign-denomalign-001.html: Added.
  • web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-1-expected.txt:
  • web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-1.html:
  • web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-2-expected.txt:
  • web-platform-tests/mathml/presentation-markup/fractions/frac-parameters-2.html:
  • web-platform-tests/mathml/presentation-markup/fractions/frac-visibility-001-expected.html: Added.
  • web-platform-tests/mathml/presentation-markup/fractions/frac-visibility-001.html: Added.
  • web-platform-tests/mathml/presentation-markup/fractions/w3c-import.log:
  • web-platform-tests/mathml/presentation-markup/operators/mo-axis-height-1-expected.txt:
  • web-platform-tests/mathml/presentation-markup/operators/mo-axis-height-1.html:
  • web-platform-tests/mathml/presentation-markup/operators/w3c-import.log:
  • web-platform-tests/mathml/presentation-markup/radicals/root-parameters-1-expected.txt:
  • web-platform-tests/mathml/presentation-markup/radicals/root-parameters-1.html:
  • web-platform-tests/mathml/presentation-markup/radicals/w3c-import.log:
  • web-platform-tests/mathml/presentation-markup/scripts/subsup-1.html:
  • web-platform-tests/mathml/presentation-markup/scripts/subsup-2.html:
  • web-platform-tests/mathml/presentation-markup/scripts/subsup-3.html:
  • web-platform-tests/mathml/presentation-markup/scripts/subsup-4.html:
  • web-platform-tests/mathml/presentation-markup/scripts/subsup-5.html:
  • web-platform-tests/mathml/presentation-markup/scripts/subsup-parameters-1-expected.txt:
  • web-platform-tests/mathml/presentation-markup/scripts/subsup-parameters-1.html:
  • web-platform-tests/mathml/presentation-markup/scripts/subsup-parameters-2.html:
  • web-platform-tests/mathml/presentation-markup/scripts/underover-1.html:
  • web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-1-expected.txt:
  • web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-1.html:
  • web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-2-expected.txt:
  • web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-2.html:
  • web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-3-expected.txt:
  • web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-3.html:
  • web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-4-expected.txt:
  • web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-4.html:
  • web-platform-tests/mathml/presentation-markup/scripts/w3c-import.log:
  • web-platform-tests/mathml/presentation-markup/spaces/space-1-expected.txt:
  • web-platform-tests/mathml/presentation-markup/spaces/space-1.html:
  • web-platform-tests/mathml/presentation-markup/spaces/space-2.html:
  • web-platform-tests/mathml/presentation-markup/spaces/w3c-import.log:
  • web-platform-tests/mathml/presentation-markup/tables/table-axis-height-expected.txt:
  • web-platform-tests/mathml/presentation-markup/tables/table-axis-height.html:
  • web-platform-tests/mathml/presentation-markup/tables/w3c-import.log:
  • web-platform-tests/mathml/relations/css-styling/display-1.html:
  • web-platform-tests/mathml/relations/css-styling/displaystyle-1-expected.txt:
  • web-platform-tests/mathml/relations/css-styling/displaystyle-1.html:
  • web-platform-tests/mathml/relations/css-styling/lengths-3-expected.txt:
  • web-platform-tests/mathml/relations/css-styling/lengths-3.html:
  • web-platform-tests/mathml/relations/css-styling/w3c-import.log:
  • web-platform-tests/mathml/relations/html5-tree/class-2.html:
  • web-platform-tests/mathml/relations/html5-tree/display-1-expected.txt:
  • web-platform-tests/mathml/relations/html5-tree/display-1.html:
  • web-platform-tests/mathml/relations/html5-tree/href-click-1.html:
  • web-platform-tests/mathml/relations/html5-tree/href-click-2.html:
  • web-platform-tests/mathml/relations/html5-tree/unique-identifier-2.html:
  • web-platform-tests/mathml/relations/html5-tree/w3c-import.log:
  • web-platform-tests/mathml/relations/text-and-math/w3c-import.log:
  • web-platform-tests/mathml/tools/utils/w3c-import.log:
  • web-platform-tests/mathml/tools/w3c-import.log:
  • web-platform-tests/mathml/w3c-import.log:

LayoutTests:

We removed some fraction tests that have equivalent WPT tests.
Some of them were actually exported from WebKit to WPT in [1]
We also move tests for crashes/asserts/hangs to the top mathml/ directory.

[1] https://github.com/web-platform-tests/wpt/pull/15301

Patch by Frederic Wang <fwang@igalia.com> on 2019-02-26
Reviewed by Manuel Rego Casasnovas.

  • mathml/fractions-invalid-expected.html: Moved to parent directory.
  • mathml/fractions-invalid.html: Ditto.
  • mathml/mfrac-nested-expected.txt: Ditto.
  • mathml/mfrac-nested.html: Ditto.
  • mathml/presentation/fractions-box-expected.html: Removed. This is better tested by WPT

tests frac-parameters-1.html, frac-parameters-2.html, frac-1.html.

  • mathml/presentation/fractions-box.html: Removed. Ditto.
  • mathml/presentation/fractions-color-expected-mismatch.html: Removed. This is exported as

frac-color-001.html.

  • mathml/presentation/fractions-color.html: Removed. Ditto.
  • mathml/presentation/fractions-linethickness-expected.html: Removed. Covered by WPT tests

frac-linethickness-*.html.

  • mathml/presentation/fractions-linethickness.html: Removed. Ditto.
  • mathml/presentation/mfrac-linethickness1-expected-mismatch.html: Removed. Ditto.
  • mathml/presentation/mfrac-linethickness1.html: Removed. Ditto.
  • mathml/presentation/mfrac-linethickness2-expected.html: Removed. Ditto.
  • mathml/presentation/mfrac-linethickness2.html: Removed. Ditto.
  • mathml/presentation/mfrac-linethickness3-expected-mismatch.html: Removed. Ditto.
  • mathml/presentation/mfrac-linethickness3.html: Removed. Ditto.
  • mathml/presentation/fractions-mrow-expected.html: Removed. Exported as frac-mrow-001.html.
  • mathml/presentation/fractions-mrow.html: Removed. Ditto.
  • mathml/presentation/fractions-numalign-denomalign-expected.html: Removed. Exported as

frac-numalign-denomalign-001.html.

  • mathml/presentation/fractions-numalign-denomalign.html: Removed. Ditto.
  • mathml/presentation/fractions-vertical-alignment-expected.html: Removed. This is better

tests by WPT tests frac-parameters-1.html, frac-parameters-2.html, frac-1.html.

  • mathml/presentation/fractions-vertical-alignment.html: Removed. Ditto.
7:13 AM WebKitGTK/2.24.x edited by Philippe Normand
(diff)
7:11 AM Changeset in webkit [242084] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

[EGL] Runtime support for RGB565 pixel layout
https://bugs.webkit.org/show_bug.cgi?id=194817

Reviewed by Carlos Garcia Campos.

Currently our graphics pipeline always relies on a ARGB8888 (32
bpp) pixel configuration. On some low-end (old) embedded platforms
the graphics driver is sometimes optimized for 16 bpp
configurations, such as RGB565. On those platforms the application
can now set the WEBKIT_EGL_PIXEL_LAYOUT environment variable to
"RGB565" to adjust to the best pixel configuration supported by
the screen and graphics driver.

  • platform/graphics/egl/GLContextEGL.cpp:

(WebCore::GLContextEGL::getEGLConfig):

2:52 AM WebKitGTK/2.24.x edited by Philippe Normand
(diff)
2:28 AM Changeset in webkit [242083] by guijemont@igalia.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Fix compilation on 32-bit platforms after r242071
https://bugs.webkit.org/show_bug.cgi?id=195042

Reviewed by Carlos Garcia Campos.

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::emitLoadStructure):

1:55 AM Changeset in webkit [242082] by Carlos Garcia Campos
  • 50 edits
    3 adds in trunk

[WPE] Add API for webview background color configuration
https://bugs.webkit.org/show_bug.cgi?id=192305

Source/WebCore:

Reviewed by Michael Catanzaro.

Adapt the FrameView API to allow a default non-white background color.

  • page/Frame.cpp:

(WebCore::Frame::createView): Replace isTransparent argument with a background color one.

  • page/Frame.h:
  • page/FrameView.cpp:

(WebCore::FrameView::recalculateBaseBackgroundColor): Use Color::transparent if m_isTransparent is true.
(WebCore::FrameView::updateBackgroundRecursively): Allow the fallback background color to be non-white, this is
used only in non-dark-mode-css build configurations.

  • page/FrameView.h:
  • testing/Internals.cpp:

(WebCore::Internals::setViewIsTransparent): Use Color::transparent if transparent is true.

Source/WebKit:

Reviewed by Michael Catanzaro.

In the case of WPE we need to send the background color to the web process to be used as the background color of
the page. This patch adapts the GTK+ implementation to do the same, since it's a lot simpler. The patch also
removes the SetDrawsBackground message in favor of the new SetBackgroundColor message that receives an optional
color.

  • PlatformWPE.cmake: Add new WPE API for WebKitColor boxed type.
  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:

(WebKit::CoordinatedGraphicsScene::paintToCurrentGLContext): Remove background rendering and opacity handling.

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:

(WebKit::ThreadedCompositor::renderLayerTree): Remove drawsBakground and always clear the context with
transparent color.

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode const): Replace drawsBackground with backgroundColor.
(WebKit::WebPageCreationParameters::decode): Ditto.

  • Shared/WebPageCreationParameters.h:
  • SourcesWPE.txt:
  • UIProcess/API/glib/WebKitWebView.cpp:
  • UIProcess/API/gtk/WebKitWebViewGtk.cpp:

(webkit_web_view_set_background_color):
(webkit_web_view_get_background_color):

  • UIProcess/API/wpe/WebKitColor.cpp: Added.

(webkit_color_copy):
(webkit_color_free):
(webkitColorToWebCoreColor):
(webkitColorFillFromWebCoreColor):
(webkit_color_parse):

  • UIProcess/API/wpe/WebKitColor.h: Added.
  • UIProcess/API/wpe/WebKitColorPrivate.h: Added.
  • UIProcess/API/wpe/WebKitWebView.h: Implement webkit_web_view_set_background_color API.
  • UIProcess/API/wpe/WebKitWebViewWPE.cpp: Ditto.

(webkit_web_view_set_background_color):
(webkit_web_view_get_background_color):

  • UIProcess/API/wpe/docs/wpe-0.1-sections.txt: Add new symbols.
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setDrawsBackground): Set a transparent background color when false is passed.
(WebKit::WebPageProxy::setBackgroundColor): Send background color to the WebProcess.
(WebKit::WebPageProxy::creationParameters): Replace drawsBackground with backgroundColor.

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::drawsBackground const):
(WebKit::WebPageProxy::backgroundColor const):

  • UIProcess/cairo/BackingStoreCairo.cpp:

(WebKit::BackingStore::incorporateUpdate): Remove GTK+ code to handle background color.

  • UIProcess/gtk/AcceleratedBackingStore.cpp:
  • UIProcess/gtk/AcceleratedBackingStore.h: Make paint() pure virtual and remove the implementation.
  • UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:

(WebKit::AcceleratedBackingStoreWayland::paint): Dot not call AcceleratedBackingStore::paint() now that is pure virtual.

  • UIProcess/gtk/AcceleratedBackingStoreX11.cpp:

(WebKit::AcceleratedBackingStoreX11::paint): Ditto.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage): Use background color as provided by the
UIProcess when creating the FrameView.

  • WebProcess/WebPage/AcceleratedDrawingArea.cpp:
  • WebProcess/WebPage/AcceleratedDrawingArea.h:
  • WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
  • WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
  • WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:

(WebKit::ThreadedCoordinatedLayerTreeHost::setIsDiscardable):

  • WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:
  • WebProcess/WebPage/DrawingArea.h:
  • WebProcess/WebPage/DrawingAreaImpl.cpp:

(WebKit::DrawingAreaImpl::display): Remove special case for transparent background.

  • WebProcess/WebPage/LayerTreeHost.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::setBackgroundColor): New API for background color configuration. Proxies to FrameView and DrawingArea.

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::backgroundColor const): Read-only access to the current background color.

  • WebProcess/WebPage/WebPage.messages.in: Replace SetDrawsBackground message with SetBackgroundColor.

Source/WebKitLegacy/win:

Patch by Philippe Normand <pnormand@igalia.com> on 2019-02-26
Reviewed by Michael Catanzaro.

  • WebCoreSupport/WebFrameLoaderClient.cpp:

(WebFrameLoaderClient::transitionToCommittedForNewPage): Create
FrameView with background color.

Tools:

Patch by Philippe Normand <pnormand@igalia.com> on 2019-02-26
Reviewed by Michael Catanzaro.

  • MiniBrowser/wpe/main.cpp:

(main): Add a new option to configure the webview background
color. Example: --bg-color=transparent.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp:

(testWebViewBackgroundColor): Enable background color API tests for WPE.
(beforeAll): Ditto.

12:50 AM Changeset in webkit [242081] by guijemont@igalia.com
  • 5 edits
    2 adds in trunk

[JSC] Repeat string created from Array.prototype.join() take too much memory
https://bugs.webkit.org/show_bug.cgi?id=193912

Reviewed by Saam Barati.

JSTests:

Added a test and a microbenchmark for corner cases of
Array.prototype.join() with an uninitialized array.

  • microbenchmarks/array-prototype-join-uninitialized.js: Added.
  • stress/array-prototype-join-uninitialized.js: Added.

(testArray):
(testABC):
(B):
(C):

Source/JavaScriptCore:

Added a fast case in Array.prototype.join when the array is
uninitialized.

  • runtime/ArrayPrototype.cpp:

(JSC::canUseFastJoin):
(JSC::fastJoin):

  • runtime/JSStringInlines.h:

(JSC::repeatCharacter): moved from StringPrototype.cpp

  • runtime/StringPrototype.cpp:
12:14 AM Changeset in webkit [242080] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: navigation sidebar says "No Search Results" when a slow search is in progress
https://bugs.webkit.org/show_bug.cgi?id=170631
<rdar://problem/29473874>

Reviewed by Joseph Pecoraro.

Keep a count of all the backend commands (increment when firing, decrement when a result is
sent back to the frontend). Once the count comes back to 0, attempt to show the "No Results"
placeholder, since we will have finished searching at that point. Since commands can be called
as a result of other commands, using Promise.all isn't possible.

  • UserInterface/Views/SearchSidebarPanel.js:

(WI.SearchSidebarPanel.prototype.performSearch):
(WI.SearchSidebarPanel.prototype.performSearch.updateEmptyContentPlaceholderSoon): Deleted.
(WI.SearchSidebarPanel.prototype.performSearch.updateEmptyContentPlaceholder): Deleted.
Drive-by: replace bind calls with arrow functions, and use for-of loops.

  • Localizations/en.lproj/localizedStrings.js:
12:11 AM Changeset in webkit [242079] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Canvas: if no auto-capture value is specified, don't force the input to have "0" as the value
https://bugs.webkit.org/show_bug.cgi?id=194950
<rdar://problem/48276798>

Reviewed by Joseph Pecoraro.

Create a getter/setter for the value of the auto-capture frame count <input> so that all
code follows the same path.

If the <input> currently has no content and the frame count is 0, only set the placeholder.

  • UserInterface/Views/CanvasOverviewContentView.js:

(WI.CanvasOverviewContentView):
(WI.CanvasOverviewContentView.prototype._setRecordingAutoCaptureFrameCount):
(WI.CanvasOverviewContentView.prototype._updateRecordingAutoCaptureCheckboxLabel):
(WI.CanvasOverviewContentView.prototype.get _recordingAutoCaptureFrameCountInputElementValue): Added.
(WI.CanvasOverviewContentView.prototype.set _recordingAutoCaptureFrameCountInputElementValue): Added.
(WI.CanvasOverviewContentView.prototype._updateRecordingAutoCaptureInputElementSize):
(WI.CanvasOverviewContentView.prototype._handleCanvasRecordingAutoCaptureFrameCountChanged):

12:00 AM Changeset in webkit [242078] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Console: dragging a selection outside the selected element clears the selection
https://bugs.webkit.org/show_bug.cgi?id=194660
<rdar://problem/46719239>

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/LogContentView.js:

(WI.LogContentView.prototype._mousemove):
Don't clear the selection if the target of the "mousemove" is outside of the view.

(WI.LogContentView.prototype._updateMessagesSelection):
Drive-by: clear the saved selected messages when we're just selecting a single message.

Feb 25, 2019:

11:38 PM Changeset in webkit [242077] by Joseph Pecoraro
  • 13 edits
    2 moves in trunk/Source/WebInspectorUI

Web Inspector: Rename LineChart to AreaChart
https://bugs.webkit.org/show_bug.cgi?id=195038

Rubber-stamped by Matt Baker.

  • UserInterface/Main.html:

New file names.

  • UserInterface/Views/AreaChart.js: Renamed from Source/WebInspectorUI/UserInterface/Views/LineChart.js.
  • UserInterface/Views/StackedAreaChart.js: Renamed from Source/WebInspectorUI/UserInterface/Views/StackedLineChart.js.

Renamed.

  • UserInterface/Views/CPUTimelineView.css:
  • UserInterface/Views/CPUUsageStackedView.css:
  • UserInterface/Views/CPUUsageStackedView.js:
  • UserInterface/Views/CPUUsageView.css:
  • UserInterface/Views/CPUUsageView.js:
  • UserInterface/Views/LegacyCPUTimelineView.css:
  • UserInterface/Views/MemoryCategoryView.css:
  • UserInterface/Views/MemoryCategoryView.js:
  • UserInterface/Views/MemoryTimelineOverviewGraph.css:

Update references.

11:36 PM Changeset in webkit [242076] by Devin Rousso
  • 6 edits in trunk/Source/WebInspectorUI

Web Inspector: hovering a node inside an object preview should highlight it
https://bugs.webkit.org/show_bug.cgi?id=194862
<rdar://problem/48246433>

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/FormattedValue.js:

(WI.FormattedValue.createElementForNodePreview):
When provided a way to access the WI.RemoteObject for the given preview, add various mouse
event listeners that highlight the corresponding DOM node.

  • UserInterface/Views/ObjectPreviewView.js:

(WI.ObjectPreviewView):
(WI.ObjectPreviewView.prototype._initTitleElement):
(WI.ObjectPreviewView.prototype._appendPropertyPreviews):
(WI.ObjectPreviewView.prototype._appendValuePreview):
Implement various ways of getting the WI.RemoteObject for a given preview.

  • When the preview is for the actual WI.RemoteObject, simply return it
  • If the preview is a property of the main object, get the WI.RemoteObject for that property
  • UserInterface/Views/ObjectTreeView.js:

(WI.ObjectTreeView):

  • UserInterface/Views/ObjectTreePropertyTreeElement.js:

(WI.ObjectTreePropertyTreeElement.prototype._createTitlePropertyStyle):
Pass the WI.RemoteObject to the preview so that it can utilize it.

  • UserInterface/Controllers/ConsoleManager.js:

(WI.ConsoleManager):
(WI.ConsoleManager.prototype.releaseRemoteObjectWithConsoleClear): Added.
(WI.ConsoleManager.prototype.messagesCleared): Added.

10:44 PM Changeset in webkit [242075] by calvaris@igalia.com
  • 2 edits in trunk/Source/WTF

Fix WTFLogVerbose variadic parameters forwarding
https://bugs.webkit.org/show_bug.cgi?id=194920

Reviewed by Alex Christensen.

WTFLogVerbose was passing the va_list to WTFLog but this function
also used variadic parameters and this is not allowed in C (that
part of the code is extern "C").

  • wtf/Assertions.cpp:

(WTF::WTFLogVaList): Created to take a va_list argument instead of
variadic parameters.
(WTF::WTFLog): Kept with variadic parameters, which are
transformed to va_list and passed to WTFLogVaList.
(WTF::WTFLogVerbose): Use WTFLogVaList instead of WTFLog.

10:39 PM Changeset in webkit [242074] by bshafiei@apple.com
  • 7 edits in branches/safari-607-branch/Source

Versioning.

10:36 PM Changeset in webkit [242073] by Joseph Pecoraro
  • 17 edits
    2 copies
    1 add in trunk/Source/WebInspectorUI

Web Inspector: CPU Usage Timeline - Thread Breakdown
https://bugs.webkit.org/show_bug.cgi?id=194788

Reviewed by Devin Rousso.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Main.html:

New strings and files.

  • UserInterface/Views/Variables.css:

(:root):
New colors for cpu threads / activity breakdown.

  • UserInterface/Models/CPUTimelineRecord.js:

(WI.CPUTimelineRecord.prototype.get workers):
(WI.CPUTimelineRecord):
Distinguish the workers in a CPU timeline record.

  • UserInterface/Views/CPUTimelineOverviewGraph.js:

(WI.CPUTimelineOverviewGraph):
(WI.CPUTimelineOverviewGraph.prototype.layout):

  • UserInterface/Views/CPUTimelineOverviewGraph.css:

(.timeline-overview-graph.cpu > .stacked-column-chart > svg > rect):
(.timeline-overview-graph.cpu > .stacked-column-chart > svg > rect.main-thread-usage):
(.timeline-overview-graph.cpu > .stacked-column-chart > svg > rect.worker-thread-usage):
(.timeline-overview-graph.cpu > .column-chart > svg > rect):
Stacked column chart for CPU in the overview graph.

  • UserInterface/Views/CPUTimelineView.css:

(.timeline-view.cpu > .content > .overview):
(.timeline-view.cpu > .content > .details > .subtitle.threads):
(.timeline-view.cpu > .content > .overview > .chart):
(.timeline-view.cpu > .content > .overview > .chart > .subtitle):
(.timeline-view.cpu > .content > .overview > .chart > .container):
(.timeline-view.cpu > .content > .overview .samples,):
(.timeline-view.cpu .legend):
(.timeline-view.cpu .legend .row):
(.timeline-view.cpu .legend .row + .row):
(.timeline-view.cpu .legend .swatch):
(.timeline-view.cpu .legend > .row > .swatch.sample-type-idle):
(.timeline-view.cpu .legend > .row > .swatch.sample-type-script):
(.timeline-view.cpu .legend > .row > .swatch.sample-type-style):
(.timeline-view.cpu .legend > .row > .swatch.sample-type-layout):
(.timeline-view.cpu .legend > .row > .swatch.sample-type-paint):
(.timeline-view.cpu .circle-chart > svg > path.segment.sample-type-idle):
(.timeline-view.cpu .circle-chart > svg > path.segment.sample-type-script):
(.timeline-view.cpu .circle-chart > svg > path.segment.sample-type-style):
(.timeline-view.cpu .circle-chart > svg > path.segment.sample-type-layout):
(.timeline-view.cpu .circle-chart > svg > path.segment.sample-type-paint):
(.timeline-view.cpu svg > path):
(.timeline-view.cpu .main-thread svg > path,):
(.timeline-view.cpu .worker-thread svg > path,):
(.timeline-view.cpu .cpu-usage-view.empty):
(.timeline-view.cpu :matches(.line-chart, .stacked-line-chart) .markers):
(.timeline-view.cpu :matches(.line-chart, .stacked-line-chart) .markers > div):
(.timeline-view.cpu :matches(.line-chart, .stacked-line-chart) .markers > div > .label):
(.timeline-view.cpu > .content): Deleted.
(.cpu-usage-view .line-chart > svg > path): Deleted.
(.timeline-view.cpu .legend > .row > .swatch.current): Deleted.

  • UserInterface/Views/CPUTimelineView.js:

(WI.CPUTimelineView):
(WI.CPUTimelineView.displayNameForSampleType):
(WI.CPUTimelineView.prototype.shown):
(WI.CPUTimelineView.prototype.clear.clearUsageView):
(WI.CPUTimelineView.prototype.clear):
(WI.CPUTimelineView.prototype.initialLayout.createChartContainer):
(WI.CPUTimelineView.prototype.initialLayout.appendLegendRow):
(WI.CPUTimelineView.prototype.initialLayout):
(WI.CPUTimelineView.prototype.layout.removeGreaterThan):
(WI.CPUTimelineView.prototype.layout):
(WI.CPUTimelineView.prototype.layout.layoutView):
(WI.CPUTimelineView.prototype.layout.yScale):
(WI.CPUTimelineView.prototype._computeSamplingData.markRecordEntries):
(WI.CPUTimelineView.prototype._computeSamplingData):
(WI.CPUTimelineView.prototype._removeWorkerThreadViews):
(WI.CPUTimelineView.prototype._clearBreakdownLegend):
(WI.CPUTimelineView.prototype.layout.xScale): Deleted.
Line charts and Circle Chart for threads and breakdowns.

  • UserInterface/Views/CPUUsageStackedView.css:

(.cpu-usage-stacked-view):
(.cpu-usage-stacked-view > .details):
(body[dir=ltr] .cpu-usage-stacked-view > .details):
(body[dir=rtl] .cpu-usage-stacked-view > .details):
(.cpu-usage-stacked-view > .details > .name):
(body[dir=rtl] .cpu-usage-stacked-view > .graph):
(.cpu-usage-stacked-view > .graph):
(.cpu-usage-stacked-view > .graph,):

  • UserInterface/Views/CPUUsageStackedView.js:

(WI.CPUUsageStackedView):
(WI.CPUUsageStackedView.prototype.get chart):
(WI.CPUUsageStackedView.prototype.clear):
(WI.CPUUsageStackedView.prototype.updateChart):
(WI.CPUUsageStackedView.prototype._updateDetails):
Same as CPUUsageView except Stacked for the total.

  • UserInterface/Views/CPUUsageView.css:

(.cpu-usage-view):
(.cpu-usage-view > .details):
(.cpu-usage-view > .details > .name):
(.cpu-usage-view > .graph):

  • UserInterface/Views/CPUUsageView.js:

(WI.CPUUsageView):
(WI.CPUUsageView.prototype.get chart):
(WI.CPUUsageView.prototype.clear):
(WI.CPUUsageView.prototype.updateChart):
(WI.CPUUsageView.prototype._updateDetails):
Slight modifications for the new UI.

  • UserInterface/Views/LegacyCPUTimelineView.css:

(.timeline-view.legacy-cpu .cpu-usage-view .line-chart > svg > path):

  • UserInterface/Views/LegacyCPUTimelineView.js:

(WI.LegacyCPUTimelineView.prototype.layout):
Update API calls in the legacy view for minor changes.

  • UserInterface/Views/MemoryCategoryView.css:

(.memory-category-view > .details):
(.memory-category-view > .details > .name):

  • UserInterface/Views/MemoryTimelineOverviewGraph.js:

(WI.MemoryTimelineOverviewGraph.prototype.layout):

  • UserInterface/Views/MemoryTimelineView.css:

(body .timeline-view.memory):
(.timeline-view.memory): Deleted.
Improvements ported from the CPU timeline views.

  • UserInterface/Views/StackedColumnChart.js: Added.

(WI.StackedColumnChart):
(WI.StackedColumnChart.prototype.get size):
(WI.StackedColumnChart.prototype.set size):
(WI.StackedColumnChart.prototype.initializeSections):
(WI.StackedColumnChart.prototype.addColumnSet):
(WI.StackedColumnChart.prototype.clear):
(WI.StackedColumnChart.prototype.layout):
A stacked column chart implementation.

  • UserInterface/Views/View.js:

(WI.View.prototype.removeUnparentedSubview):
Add a way to remove a subview that had its element moved
someplace other than a direct child of our element.

10:36 PM Changeset in webkit [242072] by Joseph Pecoraro
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Dark Mode: Network Overview Graph segments have distracting white box shadow
https://bugs.webkit.org/show_bug.cgi?id=194966

Reviewed by Devin Rousso.

  • UserInterface/Views/Variables.css:

(@media (prefers-color-scheme: dark)):
Make global timeline even/odd colors where odd is the default content background
color and even is slightly different. These were used in multiple places.

  • UserInterface/Views/CPUTimelineOverviewGraph.css:

(.timeline-overview-graph.cpu > .legend):
(.timeline-overview-graph.cpu:nth-child(even) > .legend):
(@media (prefers-color-scheme: dark)): Deleted.

  • UserInterface/Views/MemoryTimelineOverviewGraph.css:

(.timeline-overview-graph.memory > .legend):
(.timeline-overview-graph.memory:nth-child(even) > .legend):
(@media (prefers-color-scheme: dark)): Deleted.

  • UserInterface/Views/NetworkTimelineOverviewGraph.css:

(.timeline-overview-graph.network > .graph-row > .timeline-record-bar > .segment:not(.inactive)):
(.timeline-overview-graph.network:nth-child(even) > .graph-row > .timeline-record-bar > .segment:not(.inactive)):
Use the variable colors now and eliminate dark mode blocks.

9:54 PM Changeset in webkit [242071] by mark.lam@apple.com
  • 10 edits in trunk/Source/JavaScriptCore

Add some randomness into the StructureID.
https://bugs.webkit.org/show_bug.cgi?id=194989
<rdar://problem/47975563>

Reviewed by Yusuke Suzuki.

  1. On 64-bit, the StructureID will now be encoded as:

----------------------------------------------------------------
| 1 Nuke Bit | 24 StructureIDTable index bits | 7 entropy bits |
----------------------------------------------------------------

The entropy bits are chosen at random and assigned when a StructureID is
allocated.

  1. Instead of Structure pointers, the StructureIDTable will now contain encodedStructureBits, which is encoded as such:

----------------------------------------------------------------
| 7 entropy bits | 57 structure pointer bits |
----------------------------------------------------------------

The entropy bits here are the same 7 bits used in the encoding of the
StructureID for this structure entry in the StructureIDTable.

  1. Retrieval of the structure pointer given a StructureID is now computed as follows:

index = structureID >> 7; with arithmetic shift.
encodedStructureBits = structureIDTable[index];
structure = encodedStructureBits (structureID << 57);

We use an arithmetic shift for the right shift because that will preserve
the nuke bit in the high bit of the index if the StructureID was not
decontaminated before use as expected.

  1. Remove unused function loadArgumentWithSpecificClass() in SpecializedThunkJIT.
  1. Define StructureIDTable::m_size to be the number of allocated StructureIDs instead of always being the same as m_capacity.
  1. Change StructureIDTable::s_unusedID's value to 0.

Its previous value of unusedPointer i.e. 0xd1e7beef, does not make sense for
StructureID on 64-bit. Also, there was never any code that initializes unused
IDs to the s_unusedID. The only meaningful value for s_unusedID is 0, which
is the ID we'll get when the freelist is empty, prompting a resize of the
structureIDTable.

This patch appears to be perf neutral on JetStream 2 run via the cli on a
11" MacBook Air, 13" MacBook Pro, iPhone 6S, and iPhone XR.

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::loadStructure):

  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::appendJSCellOrAuxiliary):

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::emitLoadStructure):

  • jit/AssemblyHelpers.h:
  • jit/SpecializedThunkJIT.h:

(JSC::SpecializedThunkJIT::loadArgumentWithSpecificClass): Deleted.

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/StructureIDTable.cpp:

(JSC::StructureIDTable::StructureIDTable):
(JSC::StructureIDTable::makeFreeListFromRange):
(JSC::StructureIDTable::resize):
(JSC::StructureIDTable::allocateID):
(JSC::StructureIDTable::deallocateID):

  • runtime/StructureIDTable.h:

(JSC::StructureIDTable::decode):
(JSC::StructureIDTable::encode):
(JSC::StructureIDTable::get):
(JSC::StructureIDTable::isValid):

9:37 PM Changeset in webkit [242070] by ysuzuki@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

[JSC] Revert r226885 to make SlotVisitor creation lazy
https://bugs.webkit.org/show_bug.cgi?id=195013

Reviewed by Saam Barati.

We once changed SlotVisitor creation apriori to drop the lock. Also, it turns out that SlotVisitor is memory-consuming.
We should defer SlotVisitor creation until it is actually required. This patch reverts r226885. Even with this patch,
we still hold many SlotVisitors after we execute many parallel markers at least once. But recovering the feature of
dynamically allocating SlotVisitors helps further memory optimizations in this area.

  • heap/Heap.cpp:

(JSC::Heap::Heap):
(JSC::Heap::runBeginPhase):

  • heap/Heap.h:
  • heap/HeapInlines.h:

(JSC::Heap::forEachSlotVisitor):
(JSC::Heap::numberOfSlotVisitors):

  • heap/MarkingConstraintSolver.cpp:

(JSC::MarkingConstraintSolver::didVisitSomething const):

  • heap/SlotVisitor.h:
8:37 PM Changeset in webkit [242069] by commit-queue@webkit.org
  • 15 edits
    3 adds in trunk

scalableNativeWebpageParameters() is not preserved on new page navigation.
https://bugs.webkit.org/show_bug.cgi?id=194892
<rdar://problem/47538280>

Source/WebCore:

If a page's current default viewport configuration is scalableNativeWebpageParameters due to
the fact that m_canIgnoreScalingConstraints is true, loading a new page should preserve this
configuration until we derive the right values from viewport meta-tag.

Patch by Yongjun Zhang <yongjun_zhang@apple.com> on 2019-02-25
Reviewed by Wenson Hsieh.

Test: fast/viewport/ios/viewport-shrink-to-fit-on-new-navigation.html

  • page/ViewportConfiguration.cpp:

(WebCore::ViewportConfiguration::canOverrideConfigurationParameters const): Use fixedNativeWebpageParameters().
(WebCore::ViewportConfiguration::updateDefaultConfiguration): Use nativeWebpageParameters.
(WebCore::ViewportConfiguration::nativeWebpageParameters): Return the appropriate default configuration

based on m_canIgnoreScalingConstraints and shouldIgnoreMinimumEffectiveDeviceWidth().

(WebCore::ViewportConfiguration::fixedNativeWebpageParameters): Renamed from nativeWebpageParameters()
(WebCore::ViewportConfiguration::scalableNativeWebpageParameters): Use fixedNativeWebpageParameters.

  • page/ViewportConfiguration.h: Make nativeWebpageParameters() an instance method and change the old

static method to fixedNativeWebpageParameters which better reflects the actual behavior.

Source/WebKit:

If a page's current default viewport configuration is scalableNativeWebpageParameters due to
the fact that m_canIgnoreScalingConstraints is true, loading a new page should preserve this
configuration until we derive the right values from viewport meta-tag.

Patch by Yongjun Zhang <yongjun_zhang@apple.com> on 2019-02-25
Reviewed by Wenson Hsieh.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::resetViewportDefaultConfiguration): Use nativeWebpageParameters() instance method to

get the appropriate default configuration.

Tools:

Patch by Yongjun Zhang <yongjun_zhang@apple.com> on 2019-02-25
Reviewed by Wenson Hsieh.

Allow UIScriptController to set WKWebView's _allowsViewportShrinkToFit property with a new setAllowsViewportShrinkToFit method.

  • DumpRenderTree/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::setAllowsViewportShrinkToFit):

  • DumpRenderTree/mac/UIScriptControllerMac.mm:

(WTR::UIScriptController::allowsViewportShrinkToFit):

  • TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
  • TestRunnerShared/UIScriptContext/UIScriptController.cpp:

(WTR::UIScriptController::setAllowsViewportShrinkToFit):

  • TestRunnerShared/UIScriptContext/UIScriptController.h:
  • WebKitTestRunner/UIScriptControllerCocoa.mm:

(WTR::UIScriptController::setAllowsViewportShrinkToFit):

LayoutTests:

Patch by Yongjun Zhang <yongjun_zhang@apple.com> on 2019-02-25
Reviewed by Wenson Hsieh.

  • fast/viewport/ios/resources/go-back.html: Added.
  • fast/viewport/ios/viewport-shrink-to-fit-on-new-navigation-expected.txt: Added.
  • fast/viewport/ios/viewport-shrink-to-fit-on-new-navigation.html: Added.
  • fast/viewport/ios/minimum-scale-after-changing-view-scale.html: When shouldIgnoreMetaViewport

setting is on, for pages don't have viewport meta-tag, the default configuration is now
changed to scalableNativeWebpageParameters(). The original test was under the assumption
that the default configuration is always fixedNativeWebpageParameters(). To keep the test
still valid, add a viewport meta-tag to it.

  • resources/ui-helper.js:

(window.UIHelper.setAllowsViewportShrinkToFit):

7:16 PM Changeset in webkit [242068] by sbarati@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

testb3 and testair should test O0/O1/O2
https://bugs.webkit.org/show_bug.cgi?id=194637

Reviewed by Mark Lam.

This patch makes it so that we run all tests in testair and testb3
in O0, O1, and O2. However, some tests are invalid for O0 and O1.
This patch makes it so we only run those tests in O2. These are
often tests that assert certain optimizations have occurred. There
are also a class of tests that rely on using patchpoints to stress
the register allocator into only a single valid allocation. The
O0, and sometimes O1, register allocators are not always good enough
to allocate such programs. To make these valid allocators to use, we rely
on the FTL and Wasm to not emit such patchpoints.

  • b3/air/testair.cpp:

(main):

  • b3/testb3.cpp:

(JSC::B3::compileProc):
(JSC::B3::testAddLoadTwice):
(JSC::B3::testMulLoadTwice):
(JSC::B3::testSimplePatchpointWithOuputClobbersGPArgs):
(JSC::B3::testSimplePatchpointWithOuputClobbersFPArgs):
(JSC::B3::testPatchpointWithEarlyClobber):
(JSC::B3::testSimpleCheck):
(JSC::B3::testCheckFalse):
(JSC::B3::testCheckTrue):
(JSC::B3::testCheckLessThan):
(JSC::B3::testCheckMegaCombo):
(JSC::B3::testCheckTrickyMegaCombo):
(JSC::B3::testCheckTwoMegaCombos):
(JSC::B3::testCheckTwoNonRedundantMegaCombos):
(JSC::B3::testCheckAddImm):
(JSC::B3::testCheckAddImmCommute):
(JSC::B3::testCheckAddImmSomeRegister):
(JSC::B3::testCheckAdd):
(JSC::B3::testCheckAdd64):
(JSC::B3::testCheckAddFold):
(JSC::B3::testCheckAddFoldFail):
(JSC::B3::testCheckAddSelfOverflow64):
(JSC::B3::testCheckAddSelfOverflow32):
(JSC::B3::testCheckSubImm):
(JSC::B3::testCheckSubBadImm):
(JSC::B3::testCheckSub):
(JSC::B3::testCheckSub64):
(JSC::B3::testCheckSubFold):
(JSC::B3::testCheckSubFoldFail):
(JSC::B3::testCheckNeg):
(JSC::B3::testCheckNeg64):
(JSC::B3::testCheckMul):
(JSC::B3::testCheckMulMemory):
(JSC::B3::testCheckMul2):
(JSC::B3::testCheckMul64):
(JSC::B3::testCheckMulFold):
(JSC::B3::testCheckMulFoldFail):
(JSC::B3::testCheckMul64SShr):
(JSC::B3::testLinearScanWithCalleeOnStack):
(JSC::B3::testCheckSelect):
(JSC::B3::testCheckSelectCheckSelect):
(JSC::B3::testCheckSelectAndCSE):
(JSC::B3::testLateRegister):
(JSC::B3::testReduceStrengthCheckBottomUseInAnotherBlock):
(JSC::B3::testSomeEarlyRegister):
(JSC::B3::testTerminalPatchpointThatNeedsToBeSpilled2):
(JSC::B3::testPinRegisters):
(JSC::B3::testX86LeaAddAddShlLeft):
(JSC::B3::testX86LeaAddAddShlRight):
(JSC::B3::testX86LeaAddAdd):
(JSC::B3::testX86LeaAddShlRight):
(JSC::B3::testX86LeaAddShlLeftScale1):
(JSC::B3::testX86LeaAddShlLeftScale2):
(JSC::B3::testX86LeaAddShlLeftScale4):
(JSC::B3::testX86LeaAddShlLeftScale8):
(JSC::B3::testLoadBaseIndexShift2):
(JSC::B3::testOptimizeMaterialization):
(JSC::B3::testLICMPure):
(JSC::B3::testLICMPureSideExits):
(JSC::B3::testLICMPureWritesPinned):
(JSC::B3::testLICMPureWrites):
(JSC::B3::testLICMReadsPinned):
(JSC::B3::testLICMReads):
(JSC::B3::testLICMPureNotBackwardsDominant):
(JSC::B3::testLICMPureNotBackwardsDominantFoiledByChild):
(JSC::B3::testLICMControlDependent):
(JSC::B3::testLICMControlDependentNotBackwardsDominant):
(JSC::B3::testLICMReadsWritesDifferentHeaps):
(JSC::B3::testWasmBoundsCheck):
(JSC::B3::run):
(main):

6:59 PM Changeset in webkit [242067] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] stress/function-constructor-reading-from-global-lexical-environment.js fails in 32bit arch
https://bugs.webkit.org/show_bug.cgi?id=195030
<rdar://problem/48385088>

Reviewed by Saam Barati.

While LLInt64 has checkTDZInGlobalPutToScopeIfNecessary for op_put_to_scope GlobalLexicalVar to check the value in the variable slot is not empty,
this check is missing in LLInt32_64. Previously, this check was subsumed accidentally by the WatchpointSet check in GlobalLexicalVar in notifyWrite:
because no "put" attempt succeeds here, the status WatchpointSet was ClearWatchpoint, we always go to the slow path, and we always throw the TDZ error
before configuring the WatchpointSet in the slow path. But after r241862, WatchpointSet is not used under non-JIT configuration. This skips WatchpointSet
check and LLInt32_64 starts failing tests because of lack of checkTDZInGlobalPutToScopeIfNecessary. This patch adds checkTDZInGlobalPutToScopeIfNecessary
in LLInt32_64 too. This patch fixes the following four failing tests.

stress/function-constructor-reading-from-global-lexical-environment.js.bytecode-cache
stress/function-constructor-reading-from-global-lexical-environment.js.default
stress/global-lexical-variable-tdz.js.bytecode-cache
stress/global-lexical-variable-tdz.js.default

  • llint/LowLevelInterpreter32_64.asm:
6:55 PM Changeset in webkit [242066] by aakash_jain@apple.com
  • 1 edit
    1 add in trunk/Tools

[ews-app] Add model for handling multiple Buildbot instances
https://bugs.webkit.org/show_bug.cgi?id=194863

Reviewed by Stephanie Lewis.

  • BuildSlaveSupport/ews-app/ews/models/buildbotinstance.py: Added.
6:52 PM Changeset in webkit [242065] by aakash_jain@apple.com
  • 4 edits
    1 delete in trunk/Tools

[ews-app] Remove BuilderMapping table
https://bugs.webkit.org/show_bug.cgi?id=194961

Reviewed by Stephanie Lewis.

Store builder name directly in build table, instead of having a separate
table for it.

  • BuildSlaveSupport/ews-app/ews/models/init.py:
  • BuildSlaveSupport/ews-app/ews/models/build.py:
  • BuildSlaveSupport/ews-app/ews/models/buildermapping.py: Removed.
  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py:
6:13 PM Changeset in webkit [242064] by ysuzuki@apple.com
  • 12 edits in trunk/Source/JavaScriptCore

[JSC] Make Intl fields lazily-allocated
https://bugs.webkit.org/show_bug.cgi?id=195022

Reviewed by Mark Lam.

This patch makes the following memory footprint optimization in IntlObject.

  1. Make IntlObject fields including Intl.Collator lazily-allocated because we already removed direct references from JS builtins to these constructors (@Collator etc.).
  1. Move LazyProperty<IntlObject, Structure> structures from IntlObject to JSGlobalObject. This makes sizeof(IntlObject) the same to the other ones of usual runtime Objects, and drop one MarkedBlock.
  • runtime/IntlCollatorConstructor.h:
  • runtime/IntlDateTimeFormatConstructor.h:
  • runtime/IntlNumberFormatConstructor.h:
  • runtime/IntlObject.cpp:

(JSC::createCollatorConstructor):
(JSC::createNumberFormatConstructor):
(JSC::createDateTimeFormatConstructor):
(JSC::createPluralRulesConstructor):
(JSC::IntlObject::finishCreation):
(JSC::IntlObject::visitChildren): Deleted.

  • runtime/IntlObject.h:
  • runtime/IntlPluralRulesConstructor.h:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):
(JSC::JSGlobalObject::defaultCollator):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::collatorStructure):
(JSC::JSGlobalObject::numberFormatStructure):
(JSC::JSGlobalObject::dateTimeFormatStructure):
(JSC::JSGlobalObject::pluralRulesStructure):
(JSC::JSGlobalObject::intlObject const): Deleted.

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::globalFuncDateTimeFormat):

  • runtime/NumberPrototype.cpp:

(JSC::numberProtoFuncToLocaleString):

  • runtime/StringPrototype.cpp:

(JSC::stringProtoFuncLocaleCompare):

5:50 PM Changeset in webkit [242063] by Nikita Vasilyev
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Styles: Command-/ should toggle edited property
https://bugs.webkit.org/show_bug.cgi?id=194967
<rdar://problem/48329852>

Reviewed by Devin Rousso.

  • UserInterface/Models/CSSProperty.js:

(WI.CSSProperty.prototype.commentOut):

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:

(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertySelect):

  • UserInterface/Views/SpreadsheetStyleProperty.js:

(WI.SpreadsheetStyleProperty.prototype.update):
(WI.SpreadsheetStyleProperty.prototype._toggle):
(WI.SpreadsheetStyleProperty.prototype._select):

5:14 PM Changeset in webkit [242062] by Alan Coon
  • 1 copy in tags/Safari-607.1.38

Tag Safari-607.1.38.

5:06 PM Changeset in webkit [242061] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION(r242018): Timelines shows no results
https://bugs.webkit.org/show_bug.cgi?id=195017

Reviewed by Joseph Pecoraro.

simpleGlobStringToRegExp can return null if the provided search query is an empty string.

  • UserInterface/Base/SearchUtilities.js:

(WI.SearchUtilities.prototype.regExpForString):
Add assertions that the provided search query is a valid non-empty string.

  • UserInterface/Views/DataGrid.js:

(WI.DataGrid.prototype._updateFilter):
If the search query is empty, don't attempt to create a RegExp for it.

4:20 PM Changeset in webkit [242060] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[ContentChangeObserver] Move observing logic from DOMWindow::clearTimeout to ContentChangeObserver
https://bugs.webkit.org/show_bug.cgi?id=194988
<rdar://problem/48343040>

Reviewed by Tim Horton.

ContentChangeObserver::removeDOMTimer takes care of the canceled timer removal.

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::clearTimeout):

  • page/ios/ContentChangeObserver.h:
  • page/ios/ContentChangeObserver.mm:

(WebCore::ContentChangeObserver::startObservingDOMTimer):
(WebCore::ContentChangeObserver::stopObservingDOMTimer):
(WebCore::ContentChangeObserver::removeDOMTimer):

4:19 PM Changeset in webkit [242059] by Wenson Hsieh
  • 5 edits
    1 delete in trunk

[iOS] Adjust initial scale zooming heuristics when changing view scale
https://bugs.webkit.org/show_bug.cgi?id=194995

Reviewed by Tim Horton.

Source/WebKit:

Currently, we only zoom to the new initial scale iff we're exactly at initial scale before changing the view
scale. This was done so that if a user zoomed in really far and then increased the view scale, we wouldn't end
up zooming out as a result. However, this leads to confusing behavior in the case where the user has manually
changed the zoom scale to something close to (but not exactly) initial scale, and then attempts to zoom in
further using view scale. In this case, we'll end up keeping page scale the same, so it looks like nothing is
happening.

To fix this, we tweak our heuristics for determining whether to jump to initial scale; if the view scale is
increasing and the new initial scale is greater than the current scale, zoom to initial scale. Likewise, if the
view scale is decreasing and the new initial scale is less than the current scale, zoom to initial scale.

Test: fast/viewport/ios/initial-scale-after-changing-view-scale.html

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::setViewportConfigurationViewLayoutSize):

LayoutTests:

Rebaseline and adjust an existing layout test.

  • fast/viewport/ios/initial-scale-after-changing-view-scale-expected.txt:
  • fast/viewport/ios/initial-scale-after-changing-view-scale.html:
  • platform/ipad/fast/viewport/ios/initial-scale-after-changing-view-scale-expected.txt: Removed.

Removed an iPad-specific test expectation, since initial scale zooming behavior should be the same now at both
device dimensions.

3:11 PM Changeset in webkit [242058] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[ContentChangeObserver] Move observing logic from DOMTimer to ContentChangeObserver
https://bugs.webkit.org/show_bug.cgi?id=194987
<rdar://problem/48342910>

Reviewed by Tim Horton.

Content obvservation logic should all move to the ContentChangeObserver class.

  • page/DOMTimer.cpp:

(WebCore::DOMTimer::install):
(WebCore::DOMTimer::fired):

  • page/Page.cpp:

(WebCore::Page::Page):

  • page/Page.h:

(WebCore::Page::contentChangeObserver):

  • page/ios/ContentChangeObserver.h:
  • page/ios/ContentChangeObserver.mm:

(WebCore::ContentChangeObserver::ContentChangeObserver):
(WebCore::ContentChangeObserver::registerDOMTimerForContentObservationIfNeeded):
(WebCore::ContentChangeObserver::startObservingDOMTimer):
(WebCore::ContentChangeObserver::stopObservingDOMTimer):
(WebCore::ContentChangeObserver::containsObservedDOMTimer):
(WebCore::ContentChangeObserver::addObservedDOMTimer):
(WebCore::ContentChangeObserver::removeObservedDOMTimer):

2:22 PM Changeset in webkit [242057] by Matt Baker
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION: TreeElement or Table row selected using the keyboard should always be revealed
https://bugs.webkit.org/show_bug.cgi?id=194918
<rdar://problem/48289314>

Reviewed by Devin Rousso.

  • UserInterface/Views/Table.js:

(WI.Table.prototype.selectionControllerSelectionDidChange):

  • UserInterface/Views/TreeOutline.js:

(WI.TreeOutline.prototype._treeKeyDown):

1:52 PM Changeset in webkit [242056] by wilander@apple.com
  • 48 edits
    2 adds in trunk

Introduce and adopt new class RegistrableDomain for eTLD+1
https://bugs.webkit.org/show_bug.cgi?id=194791
<rdar://problem/48179240>

Reviewed by Alex Christensen, Fujii Hironori, and Brent Fulgham.

Source/WebCore:

A new API test was added. Plenty of existing layout tests under
http/tests/resourceLoadStatistics/ and http/tests/storageAccess/ test the code.

This patch introduces and adopts a new class called WebCore::RegistrableDomain
which represents a domain's eTLD+1 (effective top level domain plus one) and is
the basis for the term "site," as in same-site. Other popular names include
high-level domain, primary domain, and top privately controlled/owned domain.
Effective top level domains are enumerated on the Public Suffix List
(https://publicsuffix.org).

This class just uses the full domain for when the Public Suffix List cannot help
finding the registrable domain and for WebKit ports that haven't enabled
PUBLIC_SUFFIX_LIST. It also uses the string "nullOrigin" as a representation
for the null or unique origin (this matches how these origins were handled
before).

The implementation is a wrapper around a String and the functions and class
members that now make use of this new class used to handle regular String
objects which didn't help much in terms of type safety or guarantees that the
string had already been converted to an eTLD+1.

We've at least two bad bugs in the Storage Access API because of confusion
between a URL's eTLD+1 and its host. The usage of WebCore::RegistrableDomain
will prohibit such bugs in the future.

Partitioning in WebKit also uses eTLD+1 to a large extent. I plan to adopt
WebCore::RegistrableDomain for partitioning in a later patch.

This patch also enhances parameter naming by:

  • Removing parts that refer to "primary" as in primaryDomain.
  • Replacing references to "TopPrivatelyControlledDomain" with "RegistrableDomain."
  • Replacing references to "TopPrivatelyOwnedDomain" with "RegistrableDomain."
  • Using the term "domain" consistently instead of e.g. "host."
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Document.cpp:

(WebCore::Document::hasRequestedPageSpecificStorageAccessWithUserInteraction):
(WebCore::Document::setHasRequestedPageSpecificStorageAccessWithUserInteraction):

  • dom/Document.h:
  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::parseAdClickAttribution const):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaSessionTitle const):

  • loader/AdClickAttribution.cpp:

(WebCore::AdClickAttribution::url const):
(WebCore::AdClickAttribution::referrer const):
(WebCore::AdClickAttribution::toString const):

  • loader/AdClickAttribution.h:

(WebCore::AdClickAttribution::Source::Source):
(WebCore::AdClickAttribution::Source::matches const):
(WebCore::AdClickAttribution::Source::deleteValue):
(WebCore::AdClickAttribution::Destination::Destination):
(WebCore::AdClickAttribution::Destination::matches const):
(WebCore::AdClickAttribution::Destination::deleteValue):

  • loader/ResourceLoadObserver.cpp:

(WebCore::ResourceLoadObserver::setRequestStorageAccessUnderOpenerCallback):
(WebCore::ResourceLoadObserver::setLogUserInteractionNotificationCallback):
(WebCore::ResourceLoadObserver::setLogWebSocketLoadingNotificationCallback):
(WebCore::ResourceLoadObserver::setLogSubresourceLoadingNotificationCallback):
(WebCore::ResourceLoadObserver::setLogSubresourceRedirectNotificationCallback):
(WebCore::ResourceLoadObserver::logSubresourceLoading):
(WebCore::ResourceLoadObserver::logWebSocketLoading):
(WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
(WebCore::ResourceLoadObserver::requestStorageAccessUnderOpener):
(WebCore::ResourceLoadObserver::logFontLoad):
(WebCore::ResourceLoadObserver::logCanvasRead):
(WebCore::ResourceLoadObserver::logCanvasWriteOrMeasure):
(WebCore::ResourceLoadObserver::logNavigatorAPIAccessed):
(WebCore::ResourceLoadObserver::logScreenAPIAccessed):
(WebCore::ResourceLoadObserver::ensureResourceStatisticsForRegistrableDomain):
(WebCore::ResourceLoadObserver::statisticsForOrigin):
(WebCore::primaryDomain): Deleted.
(WebCore::ResourceLoadObserver::ensureResourceStatisticsForPrimaryDomain): Deleted.

  • loader/ResourceLoadObserver.h:
  • loader/ResourceLoadStatistics.cpp:

(WebCore::ResourceLoadStatistics::encode const):
(WebCore::ResourceLoadStatistics::decode):
(WebCore::ResourceLoadStatistics::toString const):
(WebCore::ResourceLoadStatistics::merge):
(WebCore::ResourceLoadStatistics::primaryDomain): Deleted.

  • loader/ResourceLoadStatistics.h:

(WebCore::ResourceLoadStatistics::ResourceLoadStatistics):

  • page/Page.cpp:

(WebCore::Page::logNavigation):
(WebCore::Page::mainFrameLoadStarted):

  • page/Page.h:
  • page/PerformanceMonitor.cpp:

(WebCore::reportPageOverPostLoadResourceThreshold):

  • platform/RegistrableDomain.h: Added.

(WebCore::RegistrableDomain::RegistrableDomain):
(WebCore::RegistrableDomain::isEmpty const):
(WebCore::RegistrableDomain::string const):
(WebCore::RegistrableDomain::operator!= const):
(WebCore::RegistrableDomain::operator== const):
(WebCore::RegistrableDomain::matches const):
(WebCore::RegistrableDomain::isolatedCopy const):
(WebCore::RegistrableDomain::isHashTableDeletedValue const):
(WebCore::RegistrableDomain::hash const):
(WebCore::RegistrableDomain::RegistrableDomainHash::hash):
(WebCore::RegistrableDomain::RegistrableDomainHash::equal):
(WebCore::RegistrableDomain::encode const):
(WebCore::RegistrableDomain::decode):

  • platform/network/NetworkStorageSession.cpp:

(WebCore::NetworkStorageSession::shouldBlockThirdPartyCookies const):
(WebCore::NetworkStorageSession::shouldBlockCookies const):
(WebCore::NetworkStorageSession::setPrevalentDomainsToBlockCookiesFor):
(WebCore::NetworkStorageSession::removePrevalentDomains):
(WebCore::NetworkStorageSession::hasStorageAccess const):
(WebCore::NetworkStorageSession::getAllStorageAccessEntries const):
(WebCore::NetworkStorageSession::grantStorageAccess):
(WebCore::getPartitioningDomain): Deleted.

  • platform/network/NetworkStorageSession.h:

Source/WebKit:

A new API test was added. Plenty of existing layout tests under
http/tests/resourceLoadStatistics/ and http/tests/storageAccess/ test the code.

This patch introduces and adopts a new class called WebCore::RegistrableDomain
which represents a domain's eTLD+1 (effective top level domain plus one) and is
the basis for the term "site," as in same-site. Other popular names include
high-level domain, primary domain, and top privately controlled/owned domain.
Effective top level domains are enumerated on the Public Suffix List
(https://publicsuffix.org).

This class just uses the full domain for when the Public Suffix List cannot help
finding the registrable domain and for WebKit ports that haven't enabled
PUBLIC_SUFFIX_LIST. It also uses the string "nullOrigin" as a representation
for the null or unique origin (this matches how these origins were handled
before).

The implementation is a wrapper around a String and the functions and class
members that now make use of this new class used to handle regular String
objects which didn't help much in terms of type safety or guarantees that the
string had already been converted to an eTLD+1.

We've at least two bad bugs in the Storage Access API because of confusion
between a URL's eTLD+1 and its host. The usage of WebCore::RegistrableDomain
will prohibit such bugs in the future.

Partitioning in WebKit also uses eTLD+1 to a large extent. I plan to adopt
WebCore::RegistrableDomain for partitioning in a later patch.

This patch also enhances parameter naming by:

  • Removing parts that refer to "primary" as in primaryDomain.
  • Replacing references to "TopPrivatelyControlledDomain" with "RegistrableDomain."
  • Replacing references to "TopPrivatelyOwnedDomain" with "RegistrableDomain."
  • Using the term "domain" consistently instead of e.g. "host."

A follow-up patch will continue backwards in call chains to create
WebCore::RegistrableDomain objects as early as possible instead of using strings.
I did not do that work here in the interest of patch size.

  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:

(WebKit::domainsToString):
(WebKit::pruneResources):
(WebKit::ResourceLoadStatisticsMemoryStore::removeDataRecords):
(WebKit::ResourceLoadStatisticsMemoryStore::recursivelyGetAllDomainsThatHaveRedirectedToThisDomain const):
(WebKit::ResourceLoadStatisticsMemoryStore::markAsPrevalentIfHasRedirectedToPrevalent):
(WebKit::ResourceLoadStatisticsMemoryStore::isPrevalentDueToDebugMode):
(WebKit::ResourceLoadStatisticsMemoryStore::hasStorageAccess):
(WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess):
(WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener):
(WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess):
(WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal):
(WebKit::ResourceLoadStatisticsMemoryStore::grandfatherExistingWebsiteData):
(WebKit::ResourceLoadStatisticsMemoryStore::ensurePrevalentResourcesForDebugMode):
(WebKit::ResourceLoadStatisticsMemoryStore::setPrevalentResourceForDebugMode):
(WebKit::ResourceLoadStatisticsMemoryStore::logFrameNavigation):
(WebKit::ResourceLoadStatisticsMemoryStore::logSubresourceLoading):
(WebKit::ResourceLoadStatisticsMemoryStore::logSubresourceRedirect):
(WebKit::ResourceLoadStatisticsMemoryStore::logUserInteraction):
(WebKit::ResourceLoadStatisticsMemoryStore::clearUserInteraction):
(WebKit::ResourceLoadStatisticsMemoryStore::hasHadUserInteraction):
(WebKit::ResourceLoadStatisticsMemoryStore::setPrevalentResource):
(WebKit::ResourceLoadStatisticsMemoryStore::isPrevalentResource const):
(WebKit::ResourceLoadStatisticsMemoryStore::isVeryPrevalentResource const):
(WebKit::ResourceLoadStatisticsMemoryStore::isRegisteredAsSubresourceUnder const):
(WebKit::ResourceLoadStatisticsMemoryStore::isRegisteredAsSubFrameUnder const):
(WebKit::ResourceLoadStatisticsMemoryStore::isRegisteredAsRedirectingTo const):
(WebKit::ResourceLoadStatisticsMemoryStore::clearPrevalentResource):
(WebKit::ResourceLoadStatisticsMemoryStore::setGrandfathered):
(WebKit::ResourceLoadStatisticsMemoryStore::isGrandfathered const):
(WebKit::ResourceLoadStatisticsMemoryStore::setSubframeUnderTopFrameOrigin):
(WebKit::ResourceLoadStatisticsMemoryStore::setSubresourceUnderTopFrameOrigin):
(WebKit::ResourceLoadStatisticsMemoryStore::setSubresourceUniqueRedirectTo):
(WebKit::ResourceLoadStatisticsMemoryStore::setSubresourceUniqueRedirectFrom):
(WebKit::ResourceLoadStatisticsMemoryStore::setTopFrameUniqueRedirectTo):
(WebKit::ResourceLoadStatisticsMemoryStore::setTopFrameUniqueRedirectFrom):
(WebKit::ResourceLoadStatisticsMemoryStore::ensureResourceStatisticsForRegistrableDomain):
(WebKit::ResourceLoadStatisticsMemoryStore::mergeStatistics):
(WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt):
(WebKit::debugLogDomainsInBatches):
(WebKit::ResourceLoadStatisticsMemoryStore::updateCookieBlocking):
(WebKit::ResourceLoadStatisticsMemoryStore::updateCookieBlockingForDomains):
(WebKit::ResourceLoadStatisticsMemoryStore::clearBlockingStateForDomains):
(WebKit::ResourceLoadStatisticsMemoryStore::registrableDomainsToRemoveWebsiteDataFor):
(WebKit::ResourceLoadStatisticsMemoryStore::pruneStatisticsIfNeeded):
(WebKit::ResourceLoadStatisticsMemoryStore::setLastSeen):
(WebKit::ResourceLoadStatisticsMemoryStore::setVeryPrevalentResource):
(WebKit::ResourceLoadStatisticsMemoryStore::ensureResourceStatisticsForPrimaryDomain): Deleted.
(WebKit::ResourceLoadStatisticsMemoryStore::topPrivatelyControlledDomainsToRemoveWebsiteDataFor): Deleted.

  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::setPrevalentResourceForDebugMode):
(WebKit::WebResourceLoadStatisticsStore::hasStorageAccess):
(WebKit::WebResourceLoadStatisticsStore::hasStorageAccessForFrame):
(WebKit::WebResourceLoadStatisticsStore::callHasStorageAccessForFrameHandler):
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted):
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccessUnderOpener):
(WebKit::WebResourceLoadStatisticsStore::grantStorageAccess):
(WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler):
(WebKit::WebResourceLoadStatisticsStore::logFrameNavigation):
(WebKit::WebResourceLoadStatisticsStore::logWebSocketLoading):
(WebKit::WebResourceLoadStatisticsStore::logSubresourceLoading):
(WebKit::WebResourceLoadStatisticsStore::logSubresourceRedirect):
(WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::clearUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::setLastSeen):
(WebKit::WebResourceLoadStatisticsStore::setPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::setVeryPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::isPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::isVeryPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::isRegisteredAsSubresourceUnder):
(WebKit::WebResourceLoadStatisticsStore::isRegisteredAsSubFrameUnder):
(WebKit::WebResourceLoadStatisticsStore::isRegisteredAsRedirectingTo):
(WebKit::WebResourceLoadStatisticsStore::clearPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::setGrandfathered):
(WebKit::WebResourceLoadStatisticsStore::isGrandfathered):
(WebKit::WebResourceLoadStatisticsStore::setSubframeUnderTopFrameOrigin):
(WebKit::WebResourceLoadStatisticsStore::setSubresourceUnderTopFrameOrigin):
(WebKit::WebResourceLoadStatisticsStore::setSubresourceUniqueRedirectTo):
(WebKit::WebResourceLoadStatisticsStore::setSubresourceUniqueRedirectFrom):
(WebKit::WebResourceLoadStatisticsStore::setTopFrameUniqueRedirectTo):
(WebKit::WebResourceLoadStatisticsStore::setTopFrameUniqueRedirectFrom):
(WebKit::WebResourceLoadStatisticsStore::scheduleCookieBlockingUpdateForDomains):
(WebKit::WebResourceLoadStatisticsStore::scheduleClearBlockingStateForDomains):
(WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler):
(WebKit::WebResourceLoadStatisticsStore::removePrevalentDomains):
(WebKit::WebResourceLoadStatisticsStore::callRemoveDomainsHandler):
(WebKit::WebResourceLoadStatisticsStore::deleteWebsiteDataForRegistrableDomainsInAllPersistentDataStores):
(WebKit::WebResourceLoadStatisticsStore::registrableDomainsWithWebsiteData):
(WebKit::isolatedPrimaryDomain): Deleted.
(WebKit::WebResourceLoadStatisticsStore::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores): Deleted.
(WebKit::WebResourceLoadStatisticsStore::topPrivatelyControlledDomainsWithWebsiteData): Deleted.

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::logUserInteraction):
(WebKit::NetworkConnectionToWebProcess::logWebSocketLoading):
(WebKit::NetworkConnectionToWebProcess::logSubresourceLoading):
(WebKit::NetworkConnectionToWebProcess::logSubresourceRedirect):
(WebKit::NetworkConnectionToWebProcess::hasStorageAccess):
(WebKit::NetworkConnectionToWebProcess::requestStorageAccess):

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

(WebKit::NetworkProcess::updatePrevalentDomainsToBlockCookiesFor):
(WebKit::NetworkProcess::isGrandfathered):
(WebKit::NetworkProcess::isPrevalentResource):
(WebKit::NetworkProcess::isVeryPrevalentResource):
(WebKit::NetworkProcess::setGrandfathered):
(WebKit::NetworkProcess::setPrevalentResource):
(WebKit::NetworkProcess::setPrevalentResourceForDebugMode):
(WebKit::NetworkProcess::setVeryPrevalentResource):
(WebKit::NetworkProcess::clearPrevalentResource):
(WebKit::NetworkProcess::setSubframeUnderTopFrameOrigin):
(WebKit::NetworkProcess::isRegisteredAsRedirectingTo):
(WebKit::NetworkProcess::isRegisteredAsSubFrameUnder):
(WebKit::NetworkProcess::setSubresourceUnderTopFrameOrigin):
(WebKit::NetworkProcess::setSubresourceUniqueRedirectTo):
(WebKit::NetworkProcess::setSubresourceUniqueRedirectFrom):
(WebKit::NetworkProcess::isRegisteredAsSubresourceUnder):
(WebKit::NetworkProcess::setTopFrameUniqueRedirectTo):
(WebKit::NetworkProcess::setTopFrameUniqueRedirectFrom):
(WebKit::NetworkProcess::setLastSeen):
(WebKit::NetworkProcess::hasStorageAccessForFrame):
(WebKit::NetworkProcess::hasStorageAccess):
(WebKit::NetworkProcess::requestStorageAccess):
(WebKit::NetworkProcess::requestStorageAccessGranted):
(WebKit::NetworkProcess::grantStorageAccess):
(WebKit::NetworkProcess::logFrameNavigation):
(WebKit::NetworkProcess::logUserInteraction):
(WebKit::NetworkProcess::hadUserInteraction):
(WebKit::NetworkProcess::clearUserInteraction):
(WebKit::NetworkProcess::removePrevalentDomains):
(WebKit::filterForRegistrableDomains):
(WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomainsInAllPersistentDataStores):
(WebKit::NetworkProcess::registrableDomainsWithWebsiteData):
(WebKit::filterForTopLevelDomains): Deleted.
(WebKit::NetworkProcess::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores): Deleted.
(WebKit::NetworkProcess::topPrivatelyControlledDomainsWithWebsiteData): Deleted.

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

(WebKit::logCookieInformationInternal):

  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::deleteWebsiteDataForRegistrableDomainsInAllPersistentDataStores):
(WebKit::NetworkSession::registrableDomainsWithWebsiteData):
(WebKit::NetworkSession::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores): Deleted.
(WebKit::NetworkSession::topPrivatelyControlledDomainsWithWebsiteData): Deleted.

  • NetworkProcess/NetworkSession.h:
  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<ResourceLoadStatistics>::encode):
(IPC::ArgumentCoder<ResourceLoadStatistics>::decode):

  • UIProcess/Cocoa/ResourceLoadStatisticsMemoryStoreCocoa.mm:

(WebKit::ResourceLoadStatisticsMemoryStore::registerUserDefaultsIfNeeded):

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::updatePrevalentDomainsToBlockCookiesFor):
(WebKit::NetworkProcessProxy::isPrevalentResource):
(WebKit::NetworkProcessProxy::isVeryPrevalentResource):
(WebKit::NetworkProcessProxy::setPrevalentResource):
(WebKit::NetworkProcessProxy::setPrevalentResourceForDebugMode):
(WebKit::NetworkProcessProxy::setVeryPrevalentResource):
(WebKit::NetworkProcessProxy::setLastSeen):
(WebKit::NetworkProcessProxy::clearPrevalentResource):
(WebKit::NetworkProcessProxy::logUserInteraction):
(WebKit::NetworkProcessProxy::hasHadUserInteraction):
(WebKit::NetworkProcessProxy::clearUserInteraction):
(WebKit::NetworkProcessProxy::setSubframeUnderTopFrameOrigin):
(WebKit::NetworkProcessProxy::isRegisteredAsRedirectingTo):
(WebKit::NetworkProcessProxy::isRegisteredAsSubFrameUnder):
(WebKit::NetworkProcessProxy::setSubresourceUnderTopFrameOrigin):
(WebKit::NetworkProcessProxy::isRegisteredAsSubresourceUnder):
(WebKit::NetworkProcessProxy::setSubresourceUniqueRedirectTo):
(WebKit::NetworkProcessProxy::setSubresourceUniqueRedirectFrom):
(WebKit::NetworkProcessProxy::setTopFrameUniqueRedirectTo):
(WebKit::NetworkProcessProxy::setTopFrameUniqueRedirectFrom):
(WebKit::NetworkProcessProxy::isGrandfathered):
(WebKit::NetworkProcessProxy::setGrandfathered):
(WebKit::NetworkProcessProxy::hasStorageAccessForFrame):
(WebKit::NetworkProcessProxy::hasStorageAccess):
(WebKit::NetworkProcessProxy::requestStorageAccess):
(WebKit::NetworkProcessProxy::grantStorageAccess):
(WebKit::NetworkProcessProxy::notifyWebsiteDataDeletionForRegistrableDomainsFinished):
(WebKit::NetworkProcessProxy::notifyWebsiteDataScanForRegistrableDomainsFinished):
(WebKit::NetworkProcessProxy::notifyWebsiteDataDeletionForTopPrivatelyOwnedDomainsFinished): Deleted.
(WebKit::NetworkProcessProxy::notifyWebsiteDataScanForTopPrivatelyControlledDomainsFinished): Deleted.

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.messages.in:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::logFrameNavigation):
(WebKit::WebPageProxy::requestStorageAccessConfirm):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::notifyPageStatisticsAndDataRecordsProcessed):
(WebKit::WebProcessProxy::notifyWebsiteDataScanForRegistrableDomainsFinished):
(WebKit::WebProcessProxy::notifyWebsiteDataDeletionForRegistrableDomainsFinished):
(WebKit::WebProcessProxy::notifyWebsiteDataScanForTopPrivatelyControlledDomainsFinished): Deleted.
(WebKit::WebProcessProxy::notifyWebsiteDataDeletionForTopPrivatelyOwnedDomainsFinished): Deleted.

  • UIProcess/WebProcessProxy.h:
  • UIProcess/WebResourceLoadStatisticsStore.messages.in:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::isPrevalentResource):
(WebKit::WebsiteDataStore::setPrevalentResource):
(WebKit::WebsiteDataStore::setPrevalentResourceForDebugMode):
(WebKit::WebsiteDataStore::isVeryPrevalentResource):
(WebKit::WebsiteDataStore::setVeryPrevalentResource):
(WebKit::WebsiteDataStore::setSubframeUnderTopFrameOrigin):
(WebKit::WebsiteDataStore::isRegisteredAsSubFrameUnder):
(WebKit::WebsiteDataStore::setSubresourceUnderTopFrameOrigin):
(WebKit::WebsiteDataStore::isRegisteredAsSubresourceUnder):
(WebKit::WebsiteDataStore::setSubresourceUniqueRedirectTo):
(WebKit::WebsiteDataStore::setSubresourceUniqueRedirectFrom):
(WebKit::WebsiteDataStore::setTopFrameUniqueRedirectTo):
(WebKit::WebsiteDataStore::setTopFrameUniqueRedirectFrom):
(WebKit::WebsiteDataStore::isRegisteredAsRedirectingTo):
(WebKit::WebsiteDataStore::clearPrevalentResource):
(WebKit::WebsiteDataStore::setLastSeen):
(WebKit::WebsiteDataStore::hasStorageAccess):
(WebKit::WebsiteDataStore::requestStorageAccess):
(WebKit::WebsiteDataStore::grantStorageAccess):
(WebKit::WebsiteDataStore::logUserInteraction):
(WebKit::WebsiteDataStore::hasHadUserInteraction):
(WebKit::WebsiteDataStore::clearUserInteraction):
(WebKit::WebsiteDataStore::setGrandfathered):
(WebKit::WebsiteDataStore::fetchDataForTopPrivatelyControlledDomains): Deleted.

  • UIProcess/WebsiteData/WebsiteDataStore.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::hasStorageAccess):
(WebKit::WebPage::requestStorageAccess):

  • WebProcess/WebProcess.cpp:

(WebKit::m_nonVisibleProcessCleanupTimer):
(WebKit::WebProcess::initializeWebProcess):

Tools:

This patch adds an API test and replaces two instances of
"TopPrivatelyOwnedDomains" with "RegistrableDomains" in message names.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/AdClickAttribution.cpp:

(TestWebKitAPI::TEST):

Changed two strings to make sure the registrable domains are still considered
invalid and pass the test.

  • TestWebKitAPI/Tests/WebCore/RegistrableDomain.cpp: Added.

(TestWebKitAPI::TEST):

  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::didReceiveMessageToPage):

1:48 PM Changeset in webkit [242055] by Adrian Perez de Castro
  • 14 edits in trunk

[WPE] Bump WPEBackend-fdo requirement to API version 1.0
https://bugs.webkit.org/show_bug.cgi?id=195001

Reviewed by Carlos Garcia Campos.

.:

  • Source/cmake/FindWPEBackend-fdo.cmake: Use WPEBackend-fdo-1.0.
  • Source/cmake/OptionsWPE.cmake: Ditto.

Source/WebKit:

API version 1.0 always includes the functionality previously guarded with
WPE_BACKEND_CHECK_VERSION(): remove the guards and always use the new functions
unconditionally.

  • UIProcess/API/wpe/WPEView.cpp:

(WKWPE::View::View): Remove usage of WPE_BACKEND_CHECK_VERSION().
(WKWPE::m_backend): Ditto.

  • UIProcess/API/wpe/qt/WPEQtViewBackend.cpp:

(WPEQtViewBackend::WPEQtViewBackend): Use libWPEBackend-fdo-1.0 as
library name, remove call to wpe_fdo_initialize_for_egl_display().
(WPEQtViewBackend::create): Call wpe_fdo_initialize_for_egl_display()
here, to bail out early in case initialization fails.

  • UIProcess/glib/WebProcessPoolGLib.cpp:

(WebKit::WebProcessPool::platformInitializeWebProcess): Remove usage of
WPE_BACKEND_CHECK_VERSION().

Tools:

API version 1.0 always includes the functionality previously guarded with
WPE_BACKEND_CHECK_VERSION(): remove the guards and always use the new functions
unconditionally.

  • TestWebKitAPI/glib/WebKitGLib/TestMain.h:

(Test::createWebViewBackend): Remove usage of WPE_BACKEND_CHECK_VERSION().

  • TestWebKitAPI/glib/WebKitGLib/wpe/WebViewTestWPE.cpp:

(WebViewTest::showInWindow): Ditto.
(WebViewTest::hideView): Ditto.

  • wpe/backends/HeadlessViewBackend.cpp:

(WPEToolingBackends::HeadlessViewBackend::HeadlessViewBackend): Ditto.

  • wpe/backends/ViewBackend.cpp:

(WPEToolingBackends::ViewBackend::ViewBackend): Use libWPEBackend-fdo-1.0 as library name.

  • wpe/backends/WindowViewBackend.cpp:

(WPEToolingBackends::WindowViewBackend::WindowViewBackend): Remove usage of
WPE_BACKEND_CHECK_VERSION().

  • wpe/jhbuild.modules: Build a version WPEBackend-fdo with the updated API version.
12:15 PM Changeset in webkit [242054] by Tadeu Zagallo
  • 2 edits in trunk/Source/JavaScriptCore

Avoid hashing CompactVariableEnvironment when decoding CompactVariableMap::Handle
https://bugs.webkit.org/show_bug.cgi?id=194937

Reviewed by Saam Barati.

Hashing the CompactVariableEnvironment is expensive and we could avoid it
when decoding multiple handles to the same environment. This is sound because
a pointer to the same CompactVariableEnvironment will hash the same.

  • runtime/CachedTypes.cpp:

(JSC::Decoder::handleForEnvironment const):
(JSC::Decoder::setHandleForEnvironment):
(JSC::CachedCompactVariableMapHandle::decode const):

12:13 PM Changeset in webkit [242053] by Tadeu Zagallo
  • 2 edits in trunk/Source/JavaScriptCore

Remove unnecessary WTF:: prefixes in CachedTypes
https://bugs.webkit.org/show_bug.cgi?id=194936

Reviewed by Saam Barati.

Cleanup unnecessary prefixes from Optional, roundUpToMultipleOf and
pageSize.

  • runtime/CachedTypes.cpp:

(JSC::Encoder::cachedOffsetForPtr):
(JSC::Encoder::Page::malloc):
(JSC::Encoder::allocateNewPage):
(JSC::CachedPtr::encode):
(JSC::CachedPtr::decode const):
(JSC::CachedOptional::encode):
(JSC::CachedOptional::decode const):

11:22 AM Changeset in webkit [242052] by commit-queue@webkit.org
  • 2 edits
    5 copies
    1 move
    6 adds
    1 delete in trunk/LayoutTests

Split iOS tests for hit testing in iframes
https://bugs.webkit.org/show_bug.cgi?id=195003

This patch splits hit-testing-iframe.html into smaller tests to faciliate
debugging and handling of test expectations. It also adds a new test
for programmatic scrolling which was fixed after bug 194886.

Patch by Frederic Wang <fwang@igalia.com> on 2019-02-25
Reviewed by Antti Koivisto.

  • fast/scrolling/ios/hit-testing-iframe-001-expected.html: Copied from LayoutTests/fast/scrolling/ios/hit-testing-iframe-expected.html.
  • fast/scrolling/ios/hit-testing-iframe-001.html: Added.
  • fast/scrolling/ios/hit-testing-iframe-002-expected.html: Copied from LayoutTests/fast/scrolling/ios/hit-testing-iframe-expected.html.
  • fast/scrolling/ios/hit-testing-iframe-002.html: Added.
  • fast/scrolling/ios/hit-testing-iframe-003-expected.html: Copied from LayoutTests/fast/scrolling/ios/hit-testing-iframe-expected.html.
  • fast/scrolling/ios/hit-testing-iframe-003.html: Added.
  • fast/scrolling/ios/hit-testing-iframe-004-expected.html: Copied from LayoutTests/fast/scrolling/ios/hit-testing-iframe-expected.html.
  • fast/scrolling/ios/hit-testing-iframe-004.html: Added.
  • fast/scrolling/ios/hit-testing-iframe-005-expected.html: Copied from LayoutTests/fast/scrolling/ios/hit-testing-iframe-expected.html.
  • fast/scrolling/ios/hit-testing-iframe-005.html: Added.
  • fast/scrolling/ios/hit-testing-iframe-006-expected.html: Renamed from LayoutTests/fast/scrolling/ios/hit-testing-iframe-expected.html.
  • fast/scrolling/ios/hit-testing-iframe-006.html: Added.
  • fast/scrolling/ios/hit-testing-iframe.html: Removed.
  • platform/ios-wk2/TestExpectations: Set failure to the corresponding extracted test.
11:15 AM Changeset in webkit [242051] by Chris Fleizach
  • 19 edits in trunk

AX: <footer> HTML5 tag not reading as ARIA Landmark to VoiceOver
https://bugs.webkit.org/show_bug.cgi?id=190138
<rdar://problem/44907695>

Reviewed by Joanmarie Diggs.

Source/WebCore:

Make sure that footer elements use the right role depending on their context.
If scoped to body, they become contentinfo. Otherwise they are just delineated by
a footer subrole.

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::isLandmark const):

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::computeAccessibilityIsIgnored const):
(WebCore::AccessibilityRenderObject::isDescendantOfElementType const):
(WebCore::AccessibilityRenderObject::determineAccessibilityRole):

  • accessibility/AccessibilityRenderObject.h:
  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper _accessibilityIsLandmarkRole:]):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper subrole]):

LayoutTests:

  • accessibility/mac/footer-expected.txt:
  • accessibility/mac/footer-roledescription-expected.txt:
  • accessibility/mac/footer-roledescription.html:
  • accessibility/mac/footer.html:
  • accessibility/roles-computedRoleString-expected.txt:
  • accessibility/roles-computedRoleString.html:
  • platform/gtk/accessibility/roles-computedRoleString-expected.txt:
  • platform/mac-wk2/accessibility/roles-exposed-expected.txt:
  • platform/mac/accessibility/roles-computedRoleString-expected.txt:
  • platform/mac/accessibility/roles-exposed-expected.txt:
11:11 AM Changeset in webkit [242050] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

A prewarmed Web process should have a process assertion.
https://bugs.webkit.org/show_bug.cgi?id=195006

Reviewed by Geoffrey Garen.

To make sure the prewarm message is handled in the Web process before the process is suspended,
the process should have a process assertion. This can be fixed by sending the prewarm message
inside WebProcessPool::initializeNewWebProcess, since all message sent inside this method are
guaranteed to be handled before the WebContent process is suspended.

This patch is based on Chris Dumez' idea and obervation of the issue.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::createNewWebProcess):
(WebKit::WebProcessPool::initializeNewWebProcess):

  • UIProcess/WebProcessPool.h:
11:09 AM Changeset in webkit [242049] by Devin Rousso
  • 16 edits
    1 copy
    3 adds in trunk/Source/WebInspectorUI

Web Inspector: [META] Merge Resources and Debugger into a single Sources tab
https://bugs.webkit.org/show_bug.cgi?id=183420

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/SourcesNavigationSidebarPanel.js: Added.

(WI.SourcesNavigationSidebarPanel):
(WI.SourcesNavigationSidebarPanel.shouldPlaceResourcesAtTopLevel):
(WI.SourcesNavigationSidebarPanel.prototype.get minimumWidth):
(WI.SourcesNavigationSidebarPanel.prototype.closed):
(WI.SourcesNavigationSidebarPanel.prototype.showDefaultContentView):
(WI.SourcesNavigationSidebarPanel.prototype.treeElementForRepresentedObject.isAncestor):
(WI.SourcesNavigationSidebarPanel.prototype.treeElementForRepresentedObject.getParent):
(WI.SourcesNavigationSidebarPanel.prototype.treeElementForRepresentedObject):
(WI.SourcesNavigationSidebarPanel.prototype.resetFilter):
(WI.SourcesNavigationSidebarPanel.prototype.hasCustomFilters):
(WI.SourcesNavigationSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match):
(WI.SourcesNavigationSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
(WI.SourcesNavigationSidebarPanel.prototype.willDismissPopover):
(WI.SourcesNavigationSidebarPanel.prototype._compareTreeElements):
(WI.SourcesNavigationSidebarPanel.prototype._updateMainFrameTreeElement):
(WI.SourcesNavigationSidebarPanel.prototype._addTarget):
(WI.SourcesNavigationSidebarPanel.prototype._findCallStackTargetTreeElement):
(WI.SourcesNavigationSidebarPanel.prototype._updateCallStackTreeOutline):
(WI.SourcesNavigationSidebarPanel.prototype._addResource):
(WI.SourcesNavigationSidebarPanel.prototype._addResourcesRecursivelyForFrame):
(WI.SourcesNavigationSidebarPanel.prototype._addScript):
(WI.SourcesNavigationSidebarPanel.prototype._addWorkerTargetWithMainResource):
(WI.SourcesNavigationSidebarPanel.prototype._addDebuggerTreeElementForSourceCode):
(WI.SourcesNavigationSidebarPanel.prototype._insertDebuggerTreeElement):
(WI.SourcesNavigationSidebarPanel.prototype._compareBreakpointTreeElements):
(WI.SourcesNavigationSidebarPanel.prototype._addBreakpoint):
(WI.SourcesNavigationSidebarPanel.prototype._removeBreakpoint):
(WI.SourcesNavigationSidebarPanel.prototype._removeAllBreakpoints):
(WI.SourcesNavigationSidebarPanel.prototype._toggleAllBreakpoints):
(WI.SourcesNavigationSidebarPanel.prototype._breakpointsBeneathTreeElement):
(WI.SourcesNavigationSidebarPanel.prototype._addIssue):
(WI.SourcesNavigationSidebarPanel.prototype._removeDebuggerTreeElement):
(WI.SourcesNavigationSidebarPanel.prototype._addBreakpointsForSourceCode):
(WI.SourcesNavigationSidebarPanel.prototype._addIssuesForSourceCode):
(WI.SourcesNavigationSidebarPanel.prototype._updateBreakpointsDisabledBanner):
(WI.SourcesNavigationSidebarPanel.prototype._updatePauseReason):
(WI.SourcesNavigationSidebarPanel.prototype._updatePauseReasonGotoArrow):
(WI.SourcesNavigationSidebarPanel.prototype._updatePauseReasonSection):
(WI.SourcesNavigationSidebarPanel.prototype._handleResourceTypeScopeBarSelectionChanged):
(WI.SourcesNavigationSidebarPanel.prototype._handleTreeSelectionDidChange):
(WI.SourcesNavigationSidebarPanel.prototype._handleBreakpointElementAddedOrRemoved):
(WI.SourcesNavigationSidebarPanel.prototype._handleCreateBreakpointClicked):
(WI.SourcesNavigationSidebarPanel.prototype._handleFrameMainResourceDidChange):
(WI.SourcesNavigationSidebarPanel.prototype._handleResourceAdded):
(WI.SourcesNavigationSidebarPanel.prototype._handleMainFrameDidChange):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerBreakpointAdded):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerBreakpointRemoved):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerBreakpointsEnabledDidChange):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerScriptAdded):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerScriptRemoved):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerScriptsCleared):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerPaused):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerResumed):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerCallFramesDidChange):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerActiveCallFrameDidChange):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerWaitingToPause):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerObjectDisplayLocationDidChange):
(WI.SourcesNavigationSidebarPanel.prototype._handleDOMBreakpointResolvedStateDidChange):
(WI.SourcesNavigationSidebarPanel.prototype._handleConsoleIssueAdded):
(WI.SourcesNavigationSidebarPanel.prototype._handleConsoleCleared):
(WI.SourcesNavigationSidebarPanel.prototype._handleTimelineCapturingWillStart):
(WI.SourcesNavigationSidebarPanel.prototype._handleTimelineCapturingStopped):
(WI.SourcesNavigationSidebarPanel.prototype._handleCSSStyleSheetAdded):
(WI.SourcesNavigationSidebarPanel.prototype._handleTargetAdded):
(WI.SourcesNavigationSidebarPanel.prototype._handleTargetRemoved):
(WI.SourcesNavigationSidebarPanel.prototype._handleExtraDomainsActivated):

  • UserInterface/Views/SourcesNavigationSidebarPanel.css: Added.

(.sidebar > .panel.navigation.sources > .content):
(.sidebar > .panel.navigation.sources > .navigation-bar):
(.sidebar > .panel.navigation.sources > .navigation-bar .debugger-breakpoints):
(.sidebar > .panel.navigation.sources > .navigation-bar .debugger-breakpoints.activated):
(.sidebar > .panel.navigation.sources > .navigation-bar .debugger-pause-resume):
(.sidebar > .panel.navigation.sources > .navigation-bar .debugger-pause-resume.activated):
(.sidebar > .panel.navigation.sources > .content > .warning-banner):
(.sidebar > .panel.navigation.sources > .content > .details-section):
(.sidebar > .panel.navigation.sources > .content > .details-section.paused-reason.collapsed > .header > .options,):
(.sidebar > .panel.navigation.sources > .content > .details-section.collapsed > .content):
(.sidebar > .panel.navigation.sources > .content > .details-section.scripts:not(.collapsed)):
(.sidebar > .panel.navigation.sources > .content > .navigation-bar):
(.sidebar > .panel.navigation.sources > .content > .tree-outline.single-thread):
(.sidebar > .panel.navigation.sources > .content > .tree-outline.single-thread > .item.thread):
(@media (prefers-dark-interface) .sidebar > > .content > .panel.navigation.sources .warning-banner):

  • UserInterface/Views/SourcesTabContentView.js: Added.

(WI.SourcesTabContentView):
(WI.SourcesTabContentView.tabInfo):
(WI.SourcesTabContentView.isTabAllowed):
(WI.SourcesTabContentView.prototype.get type):
(WI.SourcesTabContentView.prototype.get supportsSplitContentBrowser):
(WI.SourcesTabContentView.prototype.canShowRepresentedObject):
(WI.SourcesTabContentView.prototype.showDetailsSidebarPanels):
(WI.SourcesTabContentView.prototype.showScopeChainDetailsSidebarPanel):
(WI.SourcesTabContentView.prototype.revealAndSelectBreakpoint):

  • UserInterface/Views/CanvasSidebarPanel.js:

(WI.CanvasSidebarPanel):

  • UserInterface/Views/DebuggerSidebarPanel.js:

(WI.DebuggerSidebarPanel):
(WI.DebuggerSidebarPanel.prototype._updatePauseReasonSection):

  • UserInterface/Views/NavigationSidebarPanel.js:

(WI.NavigationSidebarPanel.prototype.createContentTreeOutline):
(WI.NavigationSidebarPanel.prototype._treeElementAddedOrChanged):
(WI.NavigationSidebarPanel.prototype._checkOutlinesForPendingViewStateCookie):
Rework createContentTreeOutline to allow for additional symbols.
Add another symbol to ensure that the WI.TreeOutline is not used for cookie restoration.

  • UserInterface/Protocol/InspectorFrontendAPI.js:

(InspectorFrontendAPI.showResources):

  • UserInterface/Views/ContextMenuUtilities.js:

(WI.appendContextMenuItemsForURL):

  • UserInterface/Views/DefaultDashboardView.js:

(WI.DefaultDashboardView.prototype._resourcesItemWasClicked):

  • UserInterface/Views/SourceCodeTextEditor.js:

(WI.SourceCodeTextEditor.prototype.textEditorGutterContextMenu):

  • UserInterface/Views/TabBrowser.js:

(WI.TabBrowser.prototype.bestTabContentViewForRepresentedObject):

  • UserInterface/Base/Main.js:

(WI.contentLoaded):
(WI.showSourcesTab): Added.
(WI.isShowingSourcesTab): Added.
(WI.tabContentViewClassForRepresentedObject):
(WI._debuggerDidPause):

  • UserInterface/Views/DebuggerTabContentView.js:

(WI.DebuggerTabContentView.isTabAllowed):

  • UserInterface/Views/ResourcesTabContentView.js:

(WI.ResourcesTabContentView.isTabAllowed):

  • UserInterface/Base/Setting.js:
  • UserInterface/Views/SettingsTabContentView.js:

(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):

  • UserInterface/Main.html:
  • UserInterface/Images/Sources.svg: Added.
  • Localizations/en.lproj/localizedStrings.js:
10:59 AM Changeset in webkit [242048] by commit-queue@webkit.org
  • 20 edits
    3 adds
    2 deletes in trunk/Source/WTF

Update double-conversion to the latest version
https://bugs.webkit.org/show_bug.cgi?id=194994

Import the latest version of the double-conversion library based on
https://github.com/google/double-conversion/commit/990c44707c70832dc1ce1578048c2198bafd3307

In additon to importing the code, the following changes were applied (or re-applied) to maintain
parity with what we had previously:

  • Add #include "config.h" to each cpp file.
  • Put everything inside the WTF namespace.
  • Changed all in library includes to be of the form #include <wtf/dtoa/FILE.h>.
  • Renamed double_conversion::Vector<> to double_conversion::BufferReference<>.
  • Replaced duplicated functions with ASCIICType.h variants
  • Made CachedPower table a constexpr.
  • Exported (via WTF_EXPORT_PRIVATE) several functions in double-conversion.h.
  • Made substantial changes to StringToDoubleConverter to avoid unnecessary overhead of parameterization, as we only ever want one configuration. Instead of constructing a configured class and calling StringToDouble on it, StringToDouble is now a static function. This allows a bunch of now dead code (hex support, octal support, etc.) to be eliminated. As StringToDoubleConverter now supports single precision floats, some additional templating of StringToIeee was added to avoid extra unnecessary branching.
  • Added RemoveCharacters function to double_conversion::StringBuilder.

Patch by Sam Weinig <sam@webkit.org> on 2019-02-25
Reviewed by Darin Adler.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/dtoa/AUTHORS: Added.
  • wtf/dtoa/README: Removed.
  • wtf/dtoa/README.md: Added.
  • wtf/dtoa/bignum-dtoa.cc:
  • wtf/dtoa/bignum-dtoa.h:
  • wtf/dtoa/bignum.cc:
  • wtf/dtoa/bignum.h:

(WTF::double_conversion::Bignum::Times10):
(WTF::double_conversion::Bignum::Equal):
(WTF::double_conversion::Bignum::LessEqual):
(WTF::double_conversion::Bignum::Less):
(WTF::double_conversion::Bignum::PlusEqual):
(WTF::double_conversion::Bignum::PlusLessEqual):
(WTF::double_conversion::Bignum::PlusLess):
(WTF::double_conversion::Bignum::EnsureCapacity):
(WTF::double_conversion::Bignum::BigitLength const):

  • wtf/dtoa/cached-powers.cc:
  • wtf/dtoa/cached-powers.h:
  • wtf/dtoa/diy-fp.cc:
  • wtf/dtoa/diy-fp.h:

(WTF::double_conversion::DiyFp::DiyFp):
(WTF::double_conversion::DiyFp::Subtract):
(WTF::double_conversion::DiyFp::Minus):
(WTF::double_conversion::DiyFp::Times):
(WTF::double_conversion::DiyFp::Normalize):
(WTF::double_conversion::DiyFp::f const):
(WTF::double_conversion::DiyFp::e const):
(WTF::double_conversion::DiyFp::set_f):
(WTF::double_conversion::DiyFp::set_e):

  • wtf/dtoa/double-conversion.cc:
  • wtf/dtoa/double-conversion.h:

(WTF::double_conversion::DoubleToStringConverter::DoubleToStringConverter):
(WTF::double_conversion::DoubleToStringConverter::ToShortest const):
(WTF::double_conversion::DoubleToStringConverter::ToShortestSingle const):
(WTF::double_conversion::StringToDoubleConverter::StringToDoubleConverter):

  • wtf/dtoa/double.h: Removed.
  • wtf/dtoa/fast-dtoa.cc:
  • wtf/dtoa/fast-dtoa.h:
  • wtf/dtoa/fixed-dtoa.cc:
  • wtf/dtoa/fixed-dtoa.h:
  • wtf/dtoa/ieee.h: Added.

(WTF::double_conversion::double_to_uint64):
(WTF::double_conversion::uint64_to_double):
(WTF::double_conversion::float_to_uint32):
(WTF::double_conversion::uint32_to_float):
(WTF::double_conversion::Double::Double):
(WTF::double_conversion::Double::AsDiyFp const):
(WTF::double_conversion::Double::AsNormalizedDiyFp const):
(WTF::double_conversion::Double::AsUint64 const):
(WTF::double_conversion::Double::NextDouble const):
(WTF::double_conversion::Double::PreviousDouble const):
(WTF::double_conversion::Double::Exponent const):
(WTF::double_conversion::Double::Significand const):
(WTF::double_conversion::Double::IsDenormal const):
(WTF::double_conversion::Double::IsSpecial const):
(WTF::double_conversion::Double::IsNan const):
(WTF::double_conversion::Double::IsInfinite const):
(WTF::double_conversion::Double::Sign const):
(WTF::double_conversion::Double::UpperBoundary const):
(WTF::double_conversion::Double::NormalizedBoundaries const):
(WTF::double_conversion::Double::LowerBoundaryIsCloser const):
(WTF::double_conversion::Double::value const):
(WTF::double_conversion::Double::SignificandSizeForOrderOfMagnitude):
(WTF::double_conversion::Double::Infinity):
(WTF::double_conversion::Double::NaN):
(WTF::double_conversion::Double::DiyFpToUint64):
(WTF::double_conversion::Single::Single):
(WTF::double_conversion::Single::AsDiyFp const):
(WTF::double_conversion::Single::AsUint32 const):
(WTF::double_conversion::Single::Exponent const):
(WTF::double_conversion::Single::Significand const):
(WTF::double_conversion::Single::IsDenormal const):
(WTF::double_conversion::Single::IsSpecial const):
(WTF::double_conversion::Single::IsNan const):
(WTF::double_conversion::Single::IsInfinite const):
(WTF::double_conversion::Single::Sign const):
(WTF::double_conversion::Single::NormalizedBoundaries const):
(WTF::double_conversion::Single::UpperBoundary const):
(WTF::double_conversion::Single::LowerBoundaryIsCloser const):
(WTF::double_conversion::Single::value const):
(WTF::double_conversion::Single::Infinity):
(WTF::double_conversion::Single::NaN):

  • wtf/dtoa/strtod.cc:
  • wtf/dtoa/strtod.h:
  • wtf/dtoa/utils.h:

(abort_noreturn):
(WTF::double_conversion::Max):
(WTF::double_conversion::Min):
(WTF::double_conversion::StrLength):
(WTF::double_conversion::BufferReference::BufferReference):
(WTF::double_conversion::BufferReference::SubVector):
(WTF::double_conversion::BufferReference::length const):
(WTF::double_conversion::BufferReference::is_empty const):
(WTF::double_conversion::BufferReference::start const):
(WTF::double_conversion::BufferReference::operator[] const):
(WTF::double_conversion::BufferReference::first):
(WTF::double_conversion::BufferReference::last):
(WTF::double_conversion::StringBuilder::StringBuilder):
(WTF::double_conversion::StringBuilder::~StringBuilder):
(WTF::double_conversion::StringBuilder::size const):
(WTF::double_conversion::StringBuilder::position const):
(WTF::double_conversion::StringBuilder::Reset):
(WTF::double_conversion::StringBuilder::AddCharacter):
(WTF::double_conversion::StringBuilder::AddString):
(WTF::double_conversion::StringBuilder::AddSubstring):
(WTF::double_conversion::StringBuilder::AddPadding):
(WTF::double_conversion::StringBuilder::RemoveCharacters):
(WTF::double_conversion::StringBuilder::Finalize):
(WTF::double_conversion::StringBuilder::is_finalized const):
(WTF::double_conversion::BitCast):
(WTF::double_conversion::BufferReference::SubBufferReference): Deleted.
(WTF::double_conversion::StringBuilder::SetPosition): Deleted.

10:32 AM Changeset in webkit [242047] by ysuzuki@apple.com
  • 14 edits
    1 delete in trunk/Source/JavaScriptCore

[JSC] Drop direct references to Intl constructors by rewriting Intl JS builtins in C++
https://bugs.webkit.org/show_bug.cgi?id=194976

Reviewed by Michael Saboff.

This patch paves the way to making IntlObject allocation lazy by removing direct references
to Intl constructors (Intl.Collator etc.) from builtin JS. To achieve that,

  1. We implement String.prototype.toLocaleCompare and Number.prototype.toLocaleString in C++ instead of JS builtins. Since these functions end up calling ICU C++ runtime, writing them in JS does not offer performance improvement.
  1. We remove @DateTimeFormat constructor reference, and instead, exposing @dateTimeFormat function, which returns formatted string directly. We still have JS builtins for DateTimeFormat things because the initialization of its "options" JSObject involves many get_by_id / put_by_id things, which are efficient in JS. But we avoid exposing @DateTimeFormat directly, so that Intl constructors can be lazily allocated.
  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources.make:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • builtins/BuiltinNames.h:
  • builtins/DatePrototype.js:

(toLocaleString):
(toLocaleDateString):
(toLocaleTimeString):

  • builtins/NumberPrototype.js: Removed.
  • builtins/StringPrototype.js:

(intrinsic.StringPrototypeReplaceIntrinsic.replace):
(globalPrivate.getDefaultCollator): Deleted.

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):
(JSC::JSGlobalObject::defaultCollator):

  • runtime/JSGlobalObject.h:
  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::globalFuncDateTimeFormat):

  • runtime/JSGlobalObjectFunctions.h:
  • runtime/NumberPrototype.cpp:

(JSC::NumberPrototype::finishCreation):
(JSC::throwVMToThisNumberError):
(JSC::numberProtoFuncToExponential):
(JSC::numberProtoFuncToFixed):
(JSC::numberProtoFuncToPrecision):
(JSC::numberProtoFuncToString):
(JSC::numberProtoFuncToLocaleString):
(JSC::numberProtoFuncValueOf):

  • runtime/StringPrototype.cpp:

(JSC::StringPrototype::finishCreation):
(JSC::stringProtoFuncLocaleCompare):

10:26 AM Changeset in webkit [242046] by commit-queue@webkit.org
  • 1 edit
    12 adds in trunk/LayoutTests

Add tests mixing programmatic and user frame scrolling on iOS
https://bugs.webkit.org/show_bug.cgi?id=194900

This patch adds tests initially written for bug 182868 but eventually
fixed by bug 194886. They involve mixing user and programmatic
scrolling.

Patch by Frederic Wang <fwang@igalia.com> on 2019-02-25
Reviewed by Antti Koivisto.

  • fast/scrolling/ios/mixing-user-and-programmatic-scroll-001-expected.html: Added.
  • fast/scrolling/ios/mixing-user-and-programmatic-scroll-001.html: Added.
  • fast/scrolling/ios/mixing-user-and-programmatic-scroll-002-expected.html: Added.
  • fast/scrolling/ios/mixing-user-and-programmatic-scroll-002.html: Added.
  • fast/scrolling/ios/mixing-user-and-programmatic-scroll-003-expected.html: Added.
  • fast/scrolling/ios/mixing-user-and-programmatic-scroll-003.html: Added.
  • fast/scrolling/ios/mixing-user-and-programmatic-scroll-004-expected.html: Added.
  • fast/scrolling/ios/mixing-user-and-programmatic-scroll-004.html: Added.
  • fast/scrolling/ios/mixing-user-and-programmatic-scroll-005-expected.html: Added.
  • fast/scrolling/ios/mixing-user-and-programmatic-scroll-005.html: Added.
  • fast/scrolling/ios/mixing-user-and-programmatic-scroll-006-expected.html: Added.
  • fast/scrolling/ios/mixing-user-and-programmatic-scroll-006.html: Added.
10:04 AM Changeset in webkit [242045] by Michael Catanzaro
  • 2 edits in trunk/Source/WebKit

[GTK] Enable PSON
https://bugs.webkit.org/show_bug.cgi?id=194979

Reviewed by Žan Doberšek.

It is expected that this may introduce unexpected regressions, so it's appropriate to do
this at the start of a new release cycle.

  • Shared/WebPreferencesDefaultValues.h:
9:04 AM Changeset in webkit [242044] by Truitt Savell
  • 2 edits in trunk/LayoutTests

fast/mediastream/MediaStream-video-element.html is flaky after r241821, marking as failure while waiting for fix.
https://bugs.webkit.org/show_bug.cgi?id=194916

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
8:50 AM Changeset in webkit [242043] by sihui_liu@apple.com
  • 10 edits
    2 adds in trunk

IndexedDB: IDBDatabase and IDBTransaction are leaked in layout tests
https://bugs.webkit.org/show_bug.cgi?id=194709

Reviewed by Geoffrey Garen.

Source/WebCore:

When connection to IDB server is closed, IDBTransaction would abort without notifying IDBDatabase, so
IDBDatabase didn't clear its reference to IDBTransaction which created a reference cycle.

Also IDBTransaction didn't clear its reference to IDBRequest in this case and it led to another reference cycle
between IDBOpenDBRequest and IDBTransaction.

Test: storage/indexeddb/IDBObject-leak.html

  • Modules/indexeddb/IDBDatabase.cpp:

(WebCore::IDBDatabase::connectionToServerLost):

  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::IDBTransaction):
(WebCore::IDBTransaction::~IDBTransaction):
(WebCore::IDBTransaction::connectionClosedFromServer):

  • Modules/indexeddb/IDBTransaction.h:
  • testing/Internals.cpp:

(WebCore::Internals::numberOfIDBTransactions const):

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

LayoutTests:

  • TestExpectations:
  • platform/wk2/TestExpectations:
  • storage/indexeddb/IDBObject-leak-expected.txt: Added.
  • storage/indexeddb/IDBObject-leak.html: Added.
8:10 AM Changeset in webkit [242042] by Michael Catanzaro
  • 2 edits in trunk/Source/WebKit

[WPE][GTK] Clean up handling of WEBKIT_FORCE_COMPLEX_TEXT
https://bugs.webkit.org/show_bug.cgi?id=194614

Reviewed by Carlos Garcia Campos.

This environment variable is now enabled for WPE, not just for GTK.

It is now possible to use this environment variable to enable complex text, not just to
disable it.

WebProcessPool::setAlwaysUsesComplexTextCodePath is fixed to be respected even when this
environment variable is set, although WPE and GTK will never do so.

  • UIProcess/glib/WebProcessPoolGLib.cpp:

(WebKit::WebProcessPool::platformInitialize):
(WebKit::WebProcessPool::platformInitializeWebProcess):

7:50 AM Changeset in webkit [242041] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Add missing stream parameter. Unreviewed.

  • page/DOMTimer.cpp:

(WebCore::DOMTimer::fired):

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

[Flatpak] Add support for flatpak > 1.1.2
https://bugs.webkit.org/show_bug.cgi?id=194088

Flatpak 1.2 is now out so we need to support that
version now.

Patch by Thibault Saunier <tsaunier@igalia.com> on 2019-02-25
Reviewed by Michael Catanzaro.

  • flatpak/flatpakutils.py:

(check_flatpak):
(FlatpakPackages.init):
(FlatpakPackages.detect_packages):
(FlatpakPackages.
detect_packages.in):
(FlatpakRepos.update):

7:07 AM Changeset in webkit [242039] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix after r242032.

  • page/DOMTimer.cpp:

(WebCore::DOMTimer::install):

6:39 AM Changeset in webkit [242038] by Darin Adler
  • 4 edits in trunk/Source/WebCore

Incorrect use of String::foldCase for font family names
https://bugs.webkit.org/show_bug.cgi?id=194895

Reviewed by Myles C. Maxfield.

  • platform/graphics/FontCascadeDescription.cpp:

(WebCore::FontCascadeDescription::familiesEqualForTextAutoSizing): Use
familyNamesAreEqual instead of calling convertToASCIILowercase directly.
(WebCore::FontCascadeDescription::familyNamesAreEqual): Use AtomicString's
operator== when we want case sensitive family name comparisons. This is a special
case to accomodate CoreText, which uses "."-prefix names for internal fonts that
are treated case sensitively. (Ideally webpages would not use these fonts at all.)
(WebCore::FontCascadeDescription::familyNameHash): Use AtomicString's existingHash
when we want case sensitive family name hashing.
(WebCore::FontCascadeDescription::foldedFamilyName): Take a String instead of an
AtomicString so we can use this at an additional call site. Converting from an
AtomicString to a String if free and automatic at the existing call sites. Use
convertToASCIILowercase instead of foldCase for three reasons: 1) Other functions
here are folding only ASCII case by using ASCIICaseInsensitiveHash, and this one
must be consistent. 2) this is considerably faster, and 3) font family names don't
need arbitrary Unicode case folding, it's only A-Z that should be folded.

  • platform/graphics/FontCascadeDescription.h: Take a String instead of AtomicString

in the foldedFamilyName function.

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::FontDatabase::collectionForFamily): Instead of calling foldCase, use
FontCascadeDescription::foldedFamilyName to correctly fold font family names.

5:23 AM WebKitGTK/2.24.x edited by magomez@igalia.com
(diff)
5:06 AM Changeset in webkit [242037] by zandobersek@gmail.com
  • 4 edits
    1 add in trunk/LayoutTests

Unreviewed WPE gardening. Adding a few failure expectations as well
as updating a couple of port-specific test baselines.

  • platform/wpe/TestExpectations:
  • platform/wpe/fast/css/apple-system-colors-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-requestmediakeysystemaccess.https-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/mime-types/canPlayType-expected.txt:
3:55 AM Changeset in webkit [242036] by zandobersek@gmail.com
  • 2 edits in trunk/Tools

[WPE] Bump WPEBackend-fdo Jhbuild package to latest changes
https://bugs.webkit.org/show_bug.cgi?id=194998

Reviewed by Carlos Garcia Campos.

  • wpe/jhbuild.modules: Bump the WPEBackend-fdo package, converting it

to a Git checkout and using the latest commit containing various fixes
and improvements.

2:15 AM Changeset in webkit [242035] by cturner@igalia.com
  • 2 edits in trunk/Source/WebCore

[EME][GStreamer] Replace caps field loop with gst_structure_remove_fields
https://bugs.webkit.org/show_bug.cgi?id=194992

Reviewed by Xabier Rodriguez-Calvar.

Refactoring, no new tests.

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

(transformCaps): Simplify the code a little. The idea to use this
utility function came from a review upstream here:
https://gitlab.freedesktop.org/gstreamer/gst-devtools/merge_requests/67

2:11 AM Changeset in webkit [242034] by aboya@igalia.com
  • 4 edits in trunk/Source/WebCore

[MSE][GStreamer] Batch player duration updates
https://bugs.webkit.org/show_bug.cgi?id=194220

Reviewed by Xabier Rodriguez-Calvar.

This saves up a ton of CPU cycles doing layout unnecessarily when all
the appended frames extend the duration of the movie, like in
YTTV 2018 59.DASHLatencyVP9.

This patch is an optimization that introduces no new behavior.

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

(WebCore::AppendPipeline::consumeAppsinkAvailableSamples):

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

(WebCore::MediaPlayerPrivateGStreamerMSE::blockDurationChanges):
(WebCore::MediaPlayerPrivateGStreamerMSE::unblockDurationChanges):
(WebCore::MediaPlayerPrivateGStreamerMSE::durationChanged):

  • platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.h:
1:20 AM Changeset in webkit [242033] by magomez@igalia.com
  • 6 edits
    1 move
    5 adds in trunk

[WPE] Add support for holepunch using an external video player
https://bugs.webkit.org/show_bug.cgi?id=194899

Reviewed by Xabier Rodriguez-Calvar.

.:

Add EXTERNAL_HOLEPUNCH option to the WPE port. Add a manual test to check the
feature. Rename and update the test for GStreamer holepunch to avoid confusion.

  • ManualTests/wpe/video-player-holepunch-external.html: Added.
  • ManualTests/wpe/video-player-holepunch-gstreamer.html: Renamed from ManualTests/wpe/video-player-holepunch.html.
  • Source/cmake/OptionsWPE.cmake:

Source/WebCore:

Implement the holepunch feature to allow playback using an external player. This creates
a new dummy MediaPlayerPrivateHolePunch that accepts only the type "video/holepunch", and
whose goal is to just draw a transparent rectangle in the position where the video should be.
This can be used to allow a player placed on a lower plane than the browser to become visible.

Added ManualTest wpe/video-player-holepunch-external.html to test the feature.

  • PlatformWPE.cmake:
  • platform/HolePunch.cmake: Added.
  • platform/graphics/MediaPlayer.cpp:

(WebCore::buildMediaEnginesVector):

  • platform/graphics/holepunch/MediaPlayerPrivateHolePunch.cpp: Added.

(WebCore::MediaPlayerPrivateHolePunch::MediaPlayerPrivateHolePunch):
(WebCore::MediaPlayerPrivateHolePunch::~MediaPlayerPrivateHolePunch):
(WebCore::MediaPlayerPrivateHolePunch::platformLayer const):
(WebCore::MediaPlayerPrivateHolePunch::naturalSize const):
(WebCore::MediaPlayerPrivateHolePunch::pushNextHolePunchBuffer):
(WebCore::MediaPlayerPrivateHolePunch::swapBuffersIfNeeded):
(WebCore::MediaPlayerPrivateHolePunch::proxy const):
(WebCore::mimeTypeCache):
(WebCore::MediaPlayerPrivateHolePunch::getSupportedTypes):
(WebCore::MediaPlayerPrivateHolePunch::supportsType):
(WebCore::MediaPlayerPrivateHolePunch::registerMediaEngine):
(WebCore::MediaPlayerPrivateHolePunch::notifyReadyState):

  • platform/graphics/holepunch/MediaPlayerPrivateHolePunch.h: Added.
  • platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:

(WebCore::TextureMapperPlatformLayerBuffer::paintToTextureMapper):

Feb 24, 2019:

10:04 PM Changeset in webkit [242032] by Alan Bujtas
  • 15 edits
    2 adds in trunk/Source

Introduce ContentChangeObserver class
https://bugs.webkit.org/show_bug.cgi?id=194977
<rdar://problem/48338115>

Reviewed by Simon Fraser.

Source/WebCore:

This patch is about piping through all the related WK* calls.

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

(WebCore::Document::scheduleStyleRecalc):
(WebCore::Document::updateStyleIfNeeded):
(WebCore::Document::platformSuspendOrStopActiveDOMObjects):

  • loader/FrameLoader.cpp:
  • page/DOMTimer.cpp:

(WebCore::DOMTimer::install):
(WebCore::DOMTimer::fired):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::clearTimeout):

  • page/Frame.cpp:

(WebCore::Frame::willDetachPage):

  • page/Page.h:

(WebCore::Page::contentChangeObserver):

  • page/ios/EventHandlerIOS.mm:

(WebCore::EventHandler::mouseMoved):

  • rendering/updating/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::updateElementRenderer):
(WebCore::CheckForVisibilityChange::CheckForVisibilityChange):
(WebCore::CheckForVisibilityChange::~CheckForVisibilityChange):

Source/WebKit:

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::handleSyntheticClick):
(WebKit::WebPage::completePendingSyntheticClickForContentChangeObserver):

Source/WebKitLegacy/ios:

  • WebCoreSupport/WebChromeClientIOS.mm:

(WebChromeClientIOS::observedContentChange):
(WebChromeClientIOS::clearContentChangeObservers):

10:03 PM Changeset in webkit [242031] by Simon Fraser
  • 31 edits in trunk/Source

Migrate from "fixedPositionRect" to "layoutViewport" in the scrolling tree
https://bugs.webkit.org/show_bug.cgi?id=194984

Reviewed by Sam Weinig.

Rename "fixedPositionRect" to "layoutViewport" in scrolling tree code.

Remove ScrollingTree::fixedPositionRect() which was only used on iOS, to fetch the
current layout viewport rect. Instead, set the layout viewport on the root
node in ScrollingTree::mainFrameViewportChangedViaDelegatedScrolling().
Source/WebCore:

  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::mainFrameViewportChangedViaDelegatedScrolling):
(WebCore::ScrollingTree::viewportChangedViaDelegatedScrolling): Deleted.

  • page/scrolling/ScrollingTree.h:
  • page/scrolling/ScrollingTreeFrameHostingNode.cpp:

(WebCore::ScrollingTreeFrameHostingNode::updateLayersAfterAncestorChange):

  • page/scrolling/ScrollingTreeFrameHostingNode.h:
  • page/scrolling/ScrollingTreeFrameScrollingNode.h:
  • page/scrolling/ScrollingTreeNode.h:
  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::updateLayersAfterAncestorChange):

  • page/scrolling/ScrollingTreeScrollingNode.h:
  • page/scrolling/cocoa/ScrollingTreeFixedNode.h:
  • page/scrolling/cocoa/ScrollingTreeFixedNode.mm:

(WebCore::ScrollingTreeFixedNode::updateLayersAfterAncestorChange):

  • page/scrolling/cocoa/ScrollingTreeStickyNode.h:
  • page/scrolling/cocoa/ScrollingTreeStickyNode.mm:

(WebCore::ScrollingTreeStickyNode::updateLayersAfterAncestorChange):

  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
  • page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h:
  • page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:

(WebCore::ScrollingTreeOverflowScrollingNodeMac::updateLayersAfterAncestorChange):
(WebCore::ScrollingTreeOverflowScrollingNodeMac::setScrollLayerPosition):

Source/WebKit:

Add a WK2 Scrolling log channel.

  • Platform/Logging.h:
  • UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:

(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):

  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:

(WebKit::RemoteScrollingCoordinatorProxy::viewportChangedViaDelegatedScrolling):

  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
  • UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:

(WebKit::RemoteScrollingTree::fixedPositionRect): Deleted.

  • UIProcess/RemoteLayerTree/RemoteScrollingTree.h:
  • UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:

(WebKit::RemoteScrollingCoordinatorProxy::currentLayoutViewport const):
(WebKit::RemoteScrollingCoordinatorProxy::customFixedPositionRect const): Deleted.

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.h:
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm:

(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateChildNodesAfterScroll):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterViewportChange):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterAncestorChange):

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h:
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:

(WebKit::ScrollingTreeOverflowScrollingNodeIOS::updateLayersAfterAncestorChange):

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:

(WebKit::ScrollingTreeScrollingNodeDelegateIOS::updateLayersAfterAncestorChange):
(WebKit::ScrollingTreeScrollingNodeDelegateIOS::updateChildNodesAfterScroll):

  • UIProcess/ios/WKContentView.mm:

(-[WKContentView didUpdateVisibleRect:unobscuredRect:contentInsets:unobscuredRectInScrollViewCoordinates:obscuredInsets:unobscuredSafeAreaInsets:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]):

8:47 PM Changeset in webkit [242030] by bshafiei@apple.com
  • 2 edits in branches/safari-607-branch/Source/WebCore

Cherry-pick r241986. rdar://problem/48350373

Crash in SWServerJobQueue::runNextJobSynchronously
https://bugs.webkit.org/show_bug.cgi?id=194974

Reviewed by Geoffrey Garen.

We suspect the crash is happening due to m_jobQueue being empty in runNextJobSynchronously
or there is a timer heap corruption again :(

Exit early when m_jobQueue is empty. Also add a debug assert that this should never happen
but convert an existing release assert to a debug assert since this appears to be hitting
too frequently in wild.

  • workers/service/server/SWServerJobQueue.cpp: (WebCore::SWServerJobQueue::runNextJobSynchronously):

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

8:47 PM Changeset in webkit [242029] by bshafiei@apple.com
  • 5 edits in branches/safari-607-branch/Source/WebCore

Cherry-pick r241967. rdar://problem/48350358

Crash under IDBServer::IDBConnectionToClient::identifier() const
https://bugs.webkit.org/show_bug.cgi?id=194843
<rdar://problem/48203102>

Reviewed by Geoffrey Garen.

UniqueIDBDatabase should ignore requests from connections that are already closed.

Tests are hard to create without some tricks on UniqueIDBDatabase so this fix is verified manually.
One test is created by adding delay to UniqueIDBDatabase::openBackingStore on the background thread to make sure
disconnection of web process happens before UniqueIDBDatabase::didOpenBackingStore, because didOpenBackingStore
may start a version change transaction and ask for identifier from the connection that is already gone.

  • Modules/indexeddb/server/IDBConnectionToClient.cpp: (WebCore::IDBServer::IDBConnectionToClient::connectionToClientClosed):
  • Modules/indexeddb/server/IDBConnectionToClient.h: (WebCore::IDBServer::IDBConnectionToClient::isClosed):
  • Modules/indexeddb/server/UniqueIDBDatabase.cpp: (WebCore::IDBServer::UniqueIDBDatabase::clearStalePendingOpenDBRequests): (WebCore::IDBServer::UniqueIDBDatabase::handleDatabaseOperations): (WebCore::IDBServer::UniqueIDBDatabase::operationAndTransactionTimerFired):
  • Modules/indexeddb/server/UniqueIDBDatabase.h:

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

8:47 PM Changeset in webkit [242028] by bshafiei@apple.com
  • 7 edits in branches/safari-607-branch

Cherry-pick r241963. rdar://problem/48350367

Regression(PSON) Unable to preview password-protected documents on iCloud.com
https://bugs.webkit.org/show_bug.cgi?id=194954
<rdar://problem/48127957>

Reviewed by Alex Christensen.

Source/WebKit:

Make sure the ProvisionalPageProxy forwards to the WebPageProxy the QuickLook-related
IPC on iOS.

  • UIProcess/ProvisionalPageProxy.cpp: (WebKit::ProvisionalPageProxy::didRequestPasswordForQuickLookDocumentInMainFrame): (WebKit::ProvisionalPageProxy::didReceiveMessage):
  • UIProcess/ProvisionalPageProxy.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::didRequestPasswordForQuickLookDocumentInMainFrame): (WebKit::WebPageProxy::didRequestPasswordForQuickLookDocumentInMainFrameShared):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm: (-[PSONNavigationDelegate _webViewDidRequestPasswordForQuickLookDocument:]): (-[PSONNavigationDelegate _webView:didStartLoadForQuickLookDocumentInMainFrameWithFileName:uti:]): (-[PSONNavigationDelegate _webView:didFinishLoadForQuickLookDocumentInMainFrame:]):

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

8:47 PM Changeset in webkit [242027] by bshafiei@apple.com
  • 6 edits in branches/safari-607-branch

Cherry-pick r241950. rdar://problem/48317455

REGRESSION(PSON) Scroll position is sometimes not restored on history navigation
https://bugs.webkit.org/show_bug.cgi?id=194924
<rdar://problem/48216125>

Reviewed by Geoffrey Garen.

Source/WebKit:

When process-swapping, we would create a new WebPage in the new process, which would
call restoreSessionInternal() to restore the HistoryItems based on the UIProcess's
backforward list. The issue is that this session restoring would send HistoryItem
updates back to the UIProcess. Without PSON, this would be unnecessary but harmless.
With PSON though, this may end up overwriting values set by the previous process,
such as the scroll position.

Address the issue by temporarily disabling the HistoryItem update notifications to
the UIProcess while restoring a session.

  • UIProcess/API/Cocoa/WKBackForwardListItem.mm: (-[WKBackForwardListItem _scrollPosition]):
  • UIProcess/API/Cocoa/WKBackForwardListItemPrivate.h:
  • WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::restoreSessionInternal):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

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

8:47 PM Changeset in webkit [242026] by bshafiei@apple.com
  • 2 edits in branches/safari-607-branch/Tools

Cherry-pick r241948. rdar://problem/48317429

Unreviewed, disable API test added in r241928 on iOS.

The cache is not enabled on devices with less than 3GB of RAM.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

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

8:47 PM Changeset in webkit [242025] by bshafiei@apple.com
  • 10 edits in branches/safari-607-branch

Cherry-pick r241928. rdar://problem/48317429

Discard cached processes when clearing website data store
https://bugs.webkit.org/show_bug.cgi?id=194894

Reviewed by Chris Dumez.

Source/WebKit:

Clear the process cache when clearing the website data store so that there is no way to infer
which site the user had visited by observing for which sites WebContent processes had been cached.

There is one sublty in WebsiteDataStore::removeData that we have to delay the clearing of
the web process cache until the next run loop because SuspendedPageProxy::~SuspendedPageProxy
invokes WebProcessProxy::maybeShutDown in the next run loop. We also have to disable the process
cache during this time as it would otherwise trigger the responsiveness check of WebContent process
can take arbitrarily long time.

  • UIProcess/API/Cocoa/WKProcessPool.mm: (-[WKProcessPool _processCacheCapacity]): Added for testing.
  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
  • UIProcess/WebProcessCache.cpp: (WebKit::WebProcessCache::addProcess): Avoid adding web processes to the cache while the suspended pages are being cleared.
  • UIProcess/WebProcessCache.h: (WebKit::WebProcessCache::disabled const): Added. (WebKit::WebProcessCache::setDisabled): Added.
  • UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::handleMemoryPressureWarning): (WebKit::WebProcessPool::clearSuspendedPages): Added.
  • UIProcess/WebProcessPool.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::removeData):

Tools:

Added a test case.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm: (TestWebKitAPI.ProcessSwap.NumberOfCachedProcesses): Added.

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

8:47 PM Changeset in webkit [242024] by bshafiei@apple.com
  • 7 edits in branches/safari-607-branch

Cherry-pick r241915. rdar://problem/48298733

Layout Test fast/text/international/khmer-selection.html is crashing
https://bugs.webkit.org/show_bug.cgi?id=191368

Reviewed by Brent Fulgham.

Source/WebCore:

GlyphBuffer's offset array wasn't getting filled by UniscribeController.
Our underlining code requires this array.

Uniscribe gives us a character -> glyph mapping, so we just have to compute
the inverse and give it to the GlyphBuffer.

This patch is written by Myles C. Maxfield.

Test: fast/text/international/khmer-selection.html.

  • platform/graphics/GlyphBuffer.h: (WebCore::GlyphBuffer::add):
  • platform/graphics/displaylists/DisplayListItems.cpp: (WebCore::DisplayList::DrawGlyphs::generateGlyphBuffer const):
  • platform/graphics/win/UniscribeController.cpp: (WebCore::UniscribeController::advance): (WebCore::UniscribeController::itemizeShapeAndPlace): (WebCore::UniscribeController::shapeAndPlaceItem):
  • platform/graphics/win/UniscribeController.h:

LayoutTests:

  • platform/win/TestExpectations:

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

8:47 PM Changeset in webkit [242023] by bshafiei@apple.com
  • 17 edits
    1 add in branches/safari-607-branch

Cherry-pick r241899. rdar://problem/48317463

Crash under RemoteLayerTreePropertyApplier::applyProperties when reattaching to old process
https://bugs.webkit.org/show_bug.cgi?id=194845
<rdar://problem/47944579>

Reviewed by Antti Koivisto.

Source/WebKit:

New test: ProcessSwap.PageOverlayLayerPersistence

  • Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h: (WebKit::RemoteLayerTreeTransaction::LayerProperties::notePropertiesChanged): Keep track of all properties that have ever changed on a layer, so we can re-send them if a layer moves between contexts.
  • WebProcess/WebPage/DrawingArea.cpp: (WebKit::DrawingArea::~DrawingArea): (WebKit::DrawingArea::removeMessageReceiverIfNeeded):
  • WebProcess/WebPage/DrawingArea.h: (WebKit::DrawingArea::layerHostDidFlushLayers): Make it possible to tear down DrawingArea's MessageReceiver before it is destroyed, so that we can keep two DrawingAreas alive in a single process for a short time.

(WebKit::DrawingArea::adoptLayersFromDrawingArea):
Add adoptLayersFromDrawingArea; see below for its only useful implementation.

  • WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.cpp: (WebKit::GraphicsLayerCARemote::GraphicsLayerCARemote): (WebKit::GraphicsLayerCARemote::~GraphicsLayerCARemote): (WebKit::GraphicsLayerCARemote::createPlatformCALayer): (WebKit::GraphicsLayerCARemote::createPlatformCALayerForEmbeddedView): (WebKit::GraphicsLayerCARemote::moveToContext):
  • WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.h: Make it possible to move a GraphicsLayerCARemote between RemoteLayerTreeContexts.
  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp: (WebKit::PlatformCALayerRemote::create): (WebKit::PlatformCALayerRemote::createForEmbeddedView): (WebKit::PlatformCALayerRemote::~PlatformCALayerRemote): (WebKit::PlatformCALayerRemote::moveToContext):
  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:
  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.mm: (WebKit::PlatformCALayerRemoteCustom::create): (WebKit::PlatformCALayerRemoteCustom::clone const): Make it possible to move a PlatformCALayerRemote between RemoteLayerTreeContexts.
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.h:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm: (WebKit::RemoteLayerTreeContext::~RemoteLayerTreeContext): (WebKit::RemoteLayerTreeContext::adoptLayersFromContext): (WebKit::RemoteLayerTreeContext::layerDidEnterContext): (WebKit::RemoteLayerTreeContext::layerWillLeaveContext): (WebKit::RemoteLayerTreeContext::graphicsLayerDidEnterContext): (WebKit::RemoteLayerTreeContext::graphicsLayerWillLeaveContext): (WebKit::RemoteLayerTreeContext::layerWasCreated): Deleted. (WebKit::RemoteLayerTreeContext::layerWillBeDestroyed): Deleted. Keep track of all GraphicsLayerCARemote instances in the context, like we do for PlatformCALayerRemote, so that we can update their context backpointers if needed.

Also make it possible to move all outstanding layers to a new context.

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::adoptLayersFromDrawingArea):
  • WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::reinitializeWebPage): When doing a DrawingArea swap, transition all layers from the old context to the new one. In order to do this, we temporarily keep both DrawingAreas alive, but make use of the new mechanism to remove the old one's MessageReceiver before installing the new one, so that destroying the old one later doesn't remove it (avoiding re-introducing bug 189481).

Tools:

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

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

8:47 PM Changeset in webkit [242022] by bshafiei@apple.com
  • 2 edits in branches/safari-607-branch/Source/WebCore

Cherry-pick r241830. rdar://problem/48248202

REGRESSION (r241788>): ASSERTION FAILED: !m_normalFlowListDirty in TestWebKitAPI.WebKit.ResizeReversePaginatedWebView test
https://bugs.webkit.org/show_bug.cgi?id=194866

Reviewed by Antti Koivisto.

r241788 removed some calls that updated layer lists (normal flow and z-order) during compositing updates, causing
a later call to RenderLayerCompositor::recursiveRepaintLayer() to assert when the lists were dirty. Fix by updating
the lists in RenderLayerCompositor::recursiveRepaintLayer(), as we do in various other places.

  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::recursiveRepaintLayer):

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

8:46 PM Changeset in webkit [242021] by bshafiei@apple.com
  • 5 edits in branches/safari-607-branch/Source/WebKit

Cherry-pick r241128. rdar://problem/48317438

[macOS] API test times out after r241026
https://bugs.webkit.org/show_bug.cgi?id=194372

Reviewed by Alex Christensen.

The API test TestWebKitAPI.RenderingProgress.FirstMeaningfulPaint times out after r241026.
A new function pointer, layoutMilestones, is added to WKBundlePageLoaderClient, in order
for clients to decide which milestones they would like to listen for.

  • WebProcess/InjectedBundle/API/c/WKBundlePageLoaderClient.h:
  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm: (layoutMilestones): (setUpPageLoaderClient):
  • WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp: (WebKit::InjectedBundlePageLoaderClient::layoutMilestones const):
  • WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:

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

8:46 PM Changeset in webkit [242020] by bshafiei@apple.com
  • 6 edits in branches/safari-607-branch

Apply patch. rdar://problem/48317433

8:41 PM Changeset in webkit [242019] by Devin Rousso
  • 46 edits
    2 adds
    19 deletes in trunk

Web Inspector: Change the InspectorOverlay to use native rather than canvas
https://bugs.webkit.org/show_bug.cgi?id=105023
<rdar://problem/13443692>

Reviewed by Brian Burg.

.:

  • ManualTests/inspector/overlay-nodes.html: Added.
  • ManualTests/inspector/overlay-rulers.html: Added.

Source/JavaScriptCore:

  • inspector/protocol/OverlayTypes.json: Removed.

Now that the overlay is entirely generated in C++, we no longer need the special prototol
types for transferring data to a JavaScript context.

  • inspector/protocol/Debugger.json:
  • inspector/agents/InspectorDebuggerAgent.h:
  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::InspectorDebuggerAgent::setOverlayMessage): Deleted.
Remove Debugger.setOverlayMessage command as it hasn't been used and is no longer supported.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources.make:

Source/WebCore:

Should be no change in observed functionality.

  • inspector/InspectorOverlay.h:
  • inspector/InspectorOverlay.cpp:

(WebCore::truncateWithEllipsis): Added.
(WebCore::localPointToRootPoint): Added.
(WebCore::contentsQuadToCoordinateSystem):
(WebCore::effectiveElementForNode): Added.
(WebCore::quadToPath): Added.
(WebCore::drawOutlinedQuadWithClip): Added.
(WebCore::drawOutlinedQuad): Added.
(WebCore::drawFragmentHighlight): Added.
(WebCore::drawShapeHighlight): Added.
(WebCore::InspectorOverlay::paint):
(WebCore::InspectorOverlay::setIndicating):
(WebCore::InspectorOverlay::shouldShowOverlay const):
(WebCore::InspectorOverlay::update):
(WebCore::InspectorOverlay::setShowPaintRects): Added.
(WebCore::InspectorOverlay::showPaintRect):
(WebCore::InspectorOverlay::updatePaintRectsTimerFired):
(WebCore::InspectorOverlay::drawNodeHighlight):
(WebCore::InspectorOverlay::drawQuadHighlight):
(WebCore::InspectorOverlay::drawPaintRects):
(WebCore::InspectorOverlay::drawBounds): Added.
(WebCore::InspectorOverlay::drawRulers):
(WebCore::InspectorOverlay::drawElementTitle): Added.
(WebCore::contentsQuadToPage): Deleted.
(WebCore::InspectorOverlay::setPausedInDebuggerMessage): Deleted.
(WebCore::buildObjectForPoint): Deleted.
(WebCore::buildObjectForRect): Deleted.
(WebCore::buildArrayForQuad): Deleted.
(WebCore::buildObjectForHighlight): Deleted.
(WebCore::buildObjectForSize): Deleted.
(WebCore::InspectorOverlay::setShowingPaintRects): Deleted.
(WebCore::buildArrayForRendererFragments): Deleted.
(WebCore::localPointToRoot): Deleted.
(WebCore::appendPathCommandAndPoints): Deleted.
(WebCore::appendPathSegment): Deleted.
(WebCore::buildObjectForShapeOutside): Deleted.
(WebCore::buildObjectForElementData): Deleted.
(WebCore::InspectorOverlay::buildHighlightObjectForNode const): Deleted.
(WebCore::InspectorOverlay::buildObjectForHighlightedNodes const): Deleted.
(WebCore::InspectorOverlay::drawPausedInDebuggerMessage): Deleted.
(WebCore::InspectorOverlay::overlayPage): Deleted.
(WebCore::InspectorOverlay::forcePaint): Deleted.
(WebCore::InspectorOverlay::reset): Deleted.
(WebCore::evaluateCommandInOverlay): Deleted.
(WebCore::InspectorOverlay::evaluateInOverlay): Deleted.
(WebCore::InspectorOverlay::freePage): Deleted.

  • inspector/agents/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::disable):
(WebCore::InspectorPageAgent::setShowPaintRects):
Drive-by: rename setShowingPaintRects to better match the protocol.

  • inspector/agents/page/PageDebuggerAgent.h:
  • inspector/agents/page/PageDebuggerAgent.cpp:

(WebCore::PageDebuggerAgent::PageDebuggerAgent):
(WebCore::PageDebuggerAgent::setOverlayMessage): Deleted.
Remove Debugger.setOverlayMessage command as it hasn't been used and is no longer supported.

  • inspector/InspectorController.h:
  • inspector/InspectorController.cpp:

(WebCore::InspectorController::createLazyAgents):
(WebCore::InspectorController::disconnectFrontend):
(WebCore::InspectorController::disconnectAllFrontends):
(WebCore::InspectorController::buildObjectForHighlightedNodes const): Deleted.

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

(WebCore::Internals::inspectorHighlightObject): Deleted.

  • inspector/InspectorOverlayPage.css: Removed.
  • inspector/InspectorOverlayPage.html: Removed.
  • inspector/InspectorOverlayPage.js: Removed.
  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:

Source/WebInspectorUI:

  • UserInterface/Base/Main.js:

(WI.initializeTarget):

  • UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
  • UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js:
  • UserInterface/Protocol/Legacy/11.0/InspectorBackendCommands.js:
  • UserInterface/Protocol/Legacy/11.3/InspectorBackendCommands.js:
  • UserInterface/Protocol/Legacy/12.0/InspectorBackendCommands.js:
  • UserInterface/Protocol/Legacy/12.2/InspectorBackendCommands.js:
  • UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
  • UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
  • UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
  • Versions/Inspector-iOS-10.0.json:
  • Versions/Inspector-iOS-10.3.json:
  • Versions/Inspector-iOS-11.0.json:
  • Versions/Inspector-iOS-11.3.json:
  • Versions/Inspector-iOS-12.0.json:
  • Versions/Inspector-iOS-12.2.json:
  • Versions/Inspector-iOS-8.0.json:
  • Versions/Inspector-iOS-9.0.json:
  • Versions/Inspector-iOS-9.3.json:

Remove Debugger.setOverlayMessage command as it hasn't been used and is no longer supported.

LayoutTests:

  • http/tests/inspector/dom/shapes-test.js: Removed.
  • inspector/dom/hideHighlight.html: Removed.
  • inspector/dom/hideHighlight-expected.txt: Removed.
  • inspector/dom/highlight-shape-outside.html: Removed.
  • inspector/dom/highlight-shape-outside-expected.txt: Removed.
  • inspector/dom/highlight-shape-outside-margin.html: Removed.
  • inspector/dom/highlight-shape-outside-margin-expected.txt: Removed.
  • inspector/dom/highlightFrame.html: Removed.
  • inspector/dom/highlightFrame-expected.txt: Removed.
  • inspector/dom/highlightNode.html: Removed.
  • inspector/dom/highlightNode-expected.txt: Removed.
  • inspector/dom/highlightNodeList.html: Removed.
  • inspector/dom/highlightNodeList-expected.txt: Removed.
  • inspector/dom/highlightSelector.html: Removed.
  • inspector/dom/highlightSelector-expected.txt: Removed.
  • platform/mac/TestExpectations:
8:27 PM Changeset in webkit [242018] by Devin Rousso
  • 27 edits
    1 add in trunk

Web Inspector: provide a way to make searches case sensitive or use a regular expression
https://bugs.webkit.org/show_bug.cgi?id=192527
Source/WebInspectorUI:

Reviewed by Joseph Pecoraro.

  • UserInterface/Base/SearchUtilities.js: Added.

(WI.SearchUtilities.get defaultSettings):
(WI.SearchUtilities.createSettings):
(WI.SearchUtilities.regExpForString):
(WI.SearchUtilities.createSettingsButton):
(WI.SearchUtilities.createSettingsButton.toggleActive):

  • UserInterface/Views/Main.css:

(.search-settings): Added.
(.search-settings > .glyph): Added.
(.search-settings:active > .glyph): Added.
(.search-settings.active > .glyph): Added.
(.search-settings:active.active > .glyph): Added.
Create static utility class for handling settings related to searching/filtering.

  • UserInterface/Base/Setting.js:
  • UserInterface/Views/SettingsTabContentView.js:

(WI.SettingsTabContentView.prototype._createGeneralSettingsView):
Create default search settings that apply across WebInspector, unless a more specific
setting has been created that overrides it (e.g. the navigation sidebar or Search tab).

  • UserInterface/Views/SearchSidebarPanel.js:

(WI.SearchSidebarPanel):
(WI.SearchSidebarPanel.prototype.performSearch.forEachMatch):
(WI.SearchSidebarPanel.prototype.performSearch.resourceCallback):
(WI.SearchSidebarPanel.prototype.performSearch.resourcesCallback):
(WI.SearchSidebarPanel.prototype.performSearch.searchScripts.scriptCallback):
(WI.SearchSidebarPanel.prototype.performSearch.searchScripts):
(WI.SearchSidebarPanel.prototype.performSearch.domSearchResults):
(WI.SearchSidebarPanel.prototype.performSearch.domCallback):
(WI.SearchSidebarPanel.prototype.performSearch):

  • UserInterface/Views/SearchSidebarPanel.css:

(.sidebar > .panel.navigation.search > .search-bar):
(.sidebar > .panel.navigation.search > .search-bar > input[type="search"]):
Add a (*) settings "gear" after each <input type="search"> that shows a contextmenu with
checkboxes for each search setting. Any settings changed for each input take precedence over
the default settings, but will match the corresponding default setting if it's changed.

  • UserInterface/Views/SearchResultTreeElement.js:

(WI.SearchResultTreeElement.truncateAndHighlightTitle):
Use the length of the found text, rather than the length of the query.

  • UserInterface/Views/DOMTreeElement.js:

(WI.DOMTreeElement.prototype._highlightSearchResults):

  • UserInterface/Views/DataGrid.js:

(WI.DataGrid.prototype._updateFilter):

  • UserInterface/Views/LogContentView.js:

(WI.LogContentView.prototype.performSearch):

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView.prototype._urlFilterDidChange):

  • UserInterface/Views/ResourceHeadersContentView.js:

(WI.ResourceHeadersContentView.prototype._perfomSearchOnKeyValuePairs):

  • UserInterface/Views/ResourceSecurityContentView.js:

(WI.ResourceSecurityContentView.prototype._perfomSearchOnKeyValuePairs):

  • UserInterface/Views/SourceCodeTextEditor.js:

(WI.SourceCodeTextEditor.prototype.customPerformSearch.searchResultCallback):
(WI.SourceCodeTextEditor.prototype.customPerformSearch):

  • UserInterface/Views/TextEditor.js:

(WI.TextEditor.prototype.performSearch):
Use the default search settings when searching/filtering.

  • UserInterface/Views/SearchBar.css:

(.search-bar > input[type="search"]:placeholder-shown::-webkit-search-cancel-button): Added.
Drive-by: prevent the (x) from appearing when no text has been entered.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Main.html:

LayoutTests:

<rdar://problem/46800955>

Reviewed by Joseph Pecoraro.

  • inspector/debugger/search-scripts.html:
  • inspector/debugger/search-scripts-expected.txt:
  • inspector/page/searchInResources.html:
  • inspector/page/searchInResources-expected.txt:
  • inspector/page/resources/search-script.js:
  • inspector/page/resources/search-stylesheet.css:
  • inspector/page/resources/search-worker.js:
  • inspector/page/resources/search-xhr.txt:
7:04 PM Changeset in webkit [242017] by Devin Rousso
  • 19 edits
    6 adds
    4 deletes in trunk

Web Inspector: make debounce Proxy into its own class
https://bugs.webkit.org/show_bug.cgi?id=194721

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

The debounce/throttle functions leveraged a Proxy to intercept the function call and
replace it with a "delayed" version. The issue with this is that it set the identifier for
the timer on the function itself, which is shared across all instances of a given class.
When different instances call the same delayed function, they'd clobber eachother's attempts
to delay work.

  • UserInterface/Base/Debouncer.js: Added.

(Debouncer):
(Debouncer.prototype.force):
(Debouncer.prototype.delayForTime):
(Debouncer.prototype.delayForFrame):
(Debouncer.prototype.delayForMicrotask):
(Debouncer.prototype.cancel):
(Debouncer.prototype._execute):

  • UserInterface/Base/Throttler.js: Added.

(Throttler):
(Throttler.prototype.force):
(Throttler.prototype.fire):
(Throttler.prototype.cancel):
(Throttler.prototype._execute):

  • UserInterface/Base/Utilities.js:
  • UserInterface/Views/BezierEditor.js:

(WI.BezierEditor):

  • UserInterface/Views/ContentBrowser.js:

(WI.ContentBrowser):
(WI.ContentBrowser.prototype._contentViewSelectionPathComponentDidChange):
(WI.ContentBrowser.prototype._contentViewSupplementalRepresentedObjectsDidChange):
(WI.ContentBrowser.prototype._currentContentViewDidChange):
(WI.ContentBrowser.prototype._dispatchCurrentRepresentedObjectsDidChangeEvent): Deleted.

  • UserInterface/Views/DOMTreeUpdater.js:

(WI.DOMTreeUpdater):
(WI.DOMTreeUpdater.prototype._nodeAttributeModified):
(WI.DOMTreeUpdater.prototype._nodeInserted):
(WI.DOMTreeUpdater.prototype._nodeRemoved):

  • UserInterface/Views/NavigationSidebarPanel.js:

(WI.NavigationSidebarPanel):
(WI.NavigationSidebarPanel.prototype.closed):
(WI.NavigationSidebarPanel.prototype.showEmptyContentPlaceholder):
(WI.NavigationSidebarPanel.prototype.hideEmptyContentPlaceholder):
(WI.NavigationSidebarPanel.prototype.updateFilter):
(WI.NavigationSidebarPanel.prototype.shown):
(WI.NavigationSidebarPanel.prototype._updateContentOverflowShadowVisibility):
(WI.NavigationSidebarPanel.prototype._treeElementAddedOrChanged):
(WI.NavigationSidebarPanel.prototype._treeElementDisclosureDidChange):

  • UserInterface/Views/RecordingContentView.js:

(WI.RecordingContentView):
(WI.RecordingContentView.prototype.updateActionIndex):
(WI.RecordingContentView.prototype.hidden):

  • UserInterface/Views/ResourceDetailsSidebarPanel.js:

(WI.ResourceDetailsSidebarPanel.prototype._refreshRelatedResourcesSection):
(WI.ResourceDetailsSidebarPanel.prototype._applyResourceEventListeners):
(WI.ResourceDetailsSidebarPanel):

  • UserInterface/Views/ShaderProgramContentView.js:

(WI.ShaderProgramContentView):

  • UserInterface/Views/SpringEditor.js:

(WI.SpringEditor.prototype._resetPreviewAnimation):

  • UserInterface/Views/TreeElement.js:

(WI.TreeElement.prototype.set hidden):
(WI.TreeElement.prototype.didChange):
(WI.TreeElement.prototype._attach):
(WI.TreeElement.prototype._detach):
(WI.TreeElement.prototype.collapse):
(WI.TreeElement.prototype.expand):
(WI.TreeElement.prototype.reveal):

  • UserInterface/Views/TreeOutline.js:

(WI.TreeOutline):
(WI.TreeOutline.prototype.registerScrollVirtualizer):
(WI.TreeOutline.prototype.get updateVirtualizedElementsDebouncer): Added.
(WI.TreeOutline.prototype._updateVirtualizedElements): Added.
(WI.TreeOutline.prototype.updateVirtualizedElements.walk): Deleted.
(WI.TreeOutline.prototype.updateVirtualizedElements): Deleted.

  • UserInterface/Views/WebSocketContentView.js:

(WI.WebSocketContentView):
(WI.WebSocketContentView.prototype.shown):
(WI.WebSocketContentView.prototype._updateFramesSoon):
(WI.WebSocketContentView.prototype._updateFrames):

  • UserInterface/Main.html:
  • UserInterface/Test.html:
  • .eslintrc:

LayoutTests:

  • inspector/unit-tests/debouncer.html: Renamed from inspector/unit-tests/debounce.html:.
  • inspector/unit-tests/debouncer-expected.txt: Renamed from inspector/unit-tests/debounce-expected.txt.
  • inspector/unit-tests/throttler.html: Renamed from inspector/unit-tests/throttle.html:.
  • inspector/unit-tests/throttler-expected.txt: Renamed from inspector/unit-tests/throttle-expected.txt.
  • platform/gtk/TestExpectations:
  • platform/mac/TestExpectations:
6:23 PM Changeset in webkit [242016] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Unreviewed, fix indentation.

  • UserInterface/Models/CSSStyleDeclaration.js:

(WI.CSSStyleDeclaration.prototype.markModified):

6:17 PM Changeset in webkit [242015] by ysuzuki@apple.com
  • 12 edits in trunk/Source/JavaScriptCore

[JSC] Lazily create sentinel Map and Set buckets
https://bugs.webkit.org/show_bug.cgi?id=194975

Reviewed by Saam Barati.

If VM::canUseJIT() returns false, we can lazily initialize sentinel Map and Set buckets.
This patch adds getters to VM which lazily allocate these buckets. We eagerly initialize
them if VM::canUseJIT() returns true since they can be touched from DFG and FTL.

  • bytecode/BytecodeIntrinsicRegistry.cpp:

(JSC::BytecodeIntrinsicRegistry::BytecodeIntrinsicRegistry):
(JSC::BytecodeIntrinsicRegistry::sentinelMapBucketValue):
(JSC::BytecodeIntrinsicRegistry::sentinelSetBucketValue):

  • bytecode/BytecodeIntrinsicRegistry.h:
  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsicCall):

  • dfg/DFGOperations.cpp:
  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileGetMapBucketNext):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileGetMapBucket):
(JSC::FTL::DFG::LowerDFGToB3::compileGetMapBucketNext):

  • runtime/MapConstructor.cpp:

(JSC::mapPrivateFuncMapBucketNext):

  • runtime/SetConstructor.cpp:

(JSC::setPrivateFuncSetBucketNext):

  • runtime/VM.cpp:

(JSC::VM::VM):
(JSC::VM::sentinelSetBucketSlow):
(JSC::VM::sentinelMapBucketSlow):

  • runtime/VM.h:

(JSC::VM::sentinelSetBucket):
(JSC::VM::sentinelMapBucket):

3:57 PM Changeset in webkit [242014] by Darin Adler
  • 27 edits in trunk/Source

Finish removing String::format
https://bugs.webkit.org/show_bug.cgi?id=194893

Reviewed by Daniel Bates.

Source/JavaScriptCore:

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::nameForRegister): Use makeString instead of String::format,
using the new "pad" function.

Source/WebCore:

  • dom/Document.cpp:

(WebCore::Document::lastModified const): Use makeString and pad.

  • html/FTPDirectoryDocument.cpp:

(WebCore::processFileDateString): Ditto.

  • mathml/MathMLElement.cpp:

(WebCore::convertToPercentageIfNeeded): Use makeString and FormattedNumber.

  • page/cocoa/ResourceUsageOverlayCocoa.mm:

(WebCore::ResourceUsageOverlay::platformDraw): Use makeString and pad.

  • page/linux/ResourceUsageOverlayLinux.cpp:

(WebCore::cpuUsageString): Use makeString, FormattedNumber, and pad.
(WebCore::gcTimerString): Use String::number.

  • platform/DateComponents.cpp:

(WebCore::DateComponents::toStringForTime const): Use makeString and pad.
(WebCore::DateComponents::toString const): Ditto.

  • platform/LocalizedStrings.cpp: Removed comment that mentioned String::format,

and that was also inaccurate.

  • platform/audio/HRTFElevation.cpp:

(WebCore::HRTFElevation::calculateKernelsForAzimuthElevation):
Use makeString and pad.

  • platform/mock/MockRealtimeVideoSource.cpp:

(WebCore::MockRealtimeVideoSource::drawText): Ditto.

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::logLayerInfo): Ditto.

  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::formatMediaControlsTime const): Ditto.

Source/WebKit:

  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:

(WebKit::LocalAuthenticator::getAssertion): Use makeString, attempting to fix
a problem where we passed an NSData * to format with a "%s"."

Source/WebKitLegacy/win:

  • FullscreenVideoController.cpp:

(timeToString): Use makeString and pad.

Source/WTF:

  • wtf/Assertions.cpp:

(WTF::createWithFormatAndArguments): Moved this here from WTFString.cpp.
(WTFLog): Use WTF::createWithFormatAndArguments instead of String::format.

  • wtf/HexNumber.h: Deleted unneeded toString function.
  • wtf/text/StringConcatenate.h: Got rid of unneeded forward declaration of

StringTypeAdapter, since that's now in Forward.h. Tweaked formatting of templates
a bit. Use function templates for writeTo functions rather than having two of each.
Removed unused toString functions. Optimized case where we use have a UChar* and
a length of zero to not force the result to be 16-bit. Also gets rid of a small
NO_RETURN_DUE_TO_CRASH mess that we don't need. Refactored constructors to use some
static member helper functions to compute string lengths. Added the pad function
and the PaddingSpecification struct template, so we can add padding to anything
we can turn into a string. Got rid of the special case overload for single
arguments, since it only worked for things that the String constructor can handle.
Instead we will now use StringTypeAdapter, which works for more types. Possibly
less optimal for some special cases, which we could specialize for later if we like.

  • wtf/text/StringConcatenateNumbers.h: Ditto.
  • wtf/text/StringOperators.h: Ditto.
  • wtf/text/StringView.h: Ditto.
  • wtf/text/WTFString.cpp:

(WTF::createWithFormatAndArguments): Deleted.
(WTF::String::format): Deleted.

  • wtf/text/WTFString.h: Deleted declaration of String::format.
2:39 PM Changeset in webkit [242013] by Michael Catanzaro
  • 4 edits in trunk

[WPE][GTK] Remove user agent quirk for washingtonpost.com
https://bugs.webkit.org/show_bug.cgi?id=194981

Reviewed by Žan Doberšek.

Source/WebCore:

Remove user agent quirk for washingtonpost.com because we support JPEG 2000 now.

  • platform/UserAgentQuirks.cpp:

(WebCore::urlRequiresChromeBrowser):

Tools:

  • TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp:

(TestWebKitAPI::TEST):

2:37 PM Changeset in webkit [242012] by Michael Catanzaro
  • 4 edits in trunk/Source/WebKit

[WPE] Install MemoryPressureHandler in UIProcess
https://bugs.webkit.org/show_bug.cgi?id=194617

Reviewed by Žan Doberšek.

Currently only GTK and Cocoa ports run MemoryPressureHandler in the UI process. WPE should
too.

We need @no-unify to avoid changing the unified source bundles under API/, which are
notoriously fragile. (WebMemoryPressureHandler.cpp sorts just above API/.)

  • SourcesWPE.txt:
  • UIProcess/WebMemoryPressureHandler.cpp:

(WebKit::installMemoryPressureHandler):

  • UIProcess/glib/WebProcessPoolGLib.cpp:

(WebKit::WebProcessPool::platformInitialize):

Feb 23, 2019:

7:18 PM Changeset in webkit [242011] by rmorisset@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Remove dead code: AdjacencyList::justOneChild()
https://bugs.webkit.org/show_bug.cgi?id=194965

Reviewed by Sam Weinig.

  • dfg/DFGAdjacencyList.h:

(JSC::DFG::AdjacencyList::justOneChild const): Deleted.

7:03 PM Changeset in webkit [242010] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

Give DrawingAreas their own identifiers
https://bugs.webkit.org/show_bug.cgi?id=194969
<rdar://problem/48154508>

Unreviewed, fix API test debug assertion failures after r241988.
We do not support sending an ObjectIdentifier that is 0 via IPC so update WebPageProxy::CreateNewPage
IPC to return an Optional<WebPageCreationParameters> instead of a WebPageCreationParameters. It returns
nullopt when there this no UIClient or the client did not create the page, instead of returning a
default-initialized WebPageCreationParameters.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::createNewPage):

  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::createWindow):

5:07 PM Changeset in webkit [242009] by Adrian Perez de Castro
  • 3 edits
    1 add in releases/WebKitGTK/webkit-2.22

Merged r241634 - RELEASE_ASSERT at com.apple.JavaScriptCore: JSC::jsSubstringOfResolved
https://bugs.webkit.org/show_bug.cgi?id=194558

Reviewed by Saam Barati.

JSTests:

New regression test.

  • stress/regexp-unicode-within-string.js: Added.

Source/JavaScriptCore:

Added an in bounds check before the read of the next character for Unicode regular expressions
for pattern generation that didn't already have such checks.

  • yarr/YarrJIT.cpp:

(JSC::Yarr::YarrGenerator::generatePatternCharacterOnce):
(JSC::Yarr::YarrGenerator::generatePatternCharacterFixed):
(JSC::Yarr::YarrGenerator::generateCharacterClassOnce):
(JSC::Yarr::YarrGenerator::generateCharacterClassFixed):

5:07 PM Changeset in webkit [242008] by Adrian Perez de Castro
  • 4 edits
    2 adds in releases/WebKitGTK/webkit-2.22

Merged r241626 - Crash in the hit testing code via HTMLPlugInElement::isReplacementObscured()
https://bugs.webkit.org/show_bug.cgi?id=194691

Reviewed by Simon Fraser.

Source/WebCore:

The crash was caused by HTMLPlugInElement::isReplacementObscured updating the document
without updating the layout of ancestor documents (i.e. documents in which frame owner
elements appear) even though it hit-tests against the top-level document's RenderView.

Fixed the bug by updating the layout of the top-level document as needed.

Test: plugins/unsupported-plugin-with-replacement-in-iframe-crash.html

  • html/HTMLPlugInElement.cpp:

(WebCore::HTMLPlugInElement::isReplacementObscured):

LayoutTests:

Added a regression test. It hits the newly added debug assertion without the fix.

  • platform/mac-wk1/TestExpectations: Skip the test since DumpRenderTree doesn't support

testRunner.setPluginSupportedMode.

  • plugins/unsupported-plugin-with-replacement-in-iframe-crash-expected.txt: Added.
  • plugins/unsupported-plugin-with-replacement-in-iframe-crash.html: Added.
5:07 PM Changeset in webkit [242007] by Adrian Perez de Castro
  • 4 edits
    4 adds in releases/WebKitGTK/webkit-2.22

Merged r241615 - SamplingProfiler::stackTracesAsJSON() should escape strings.
https://bugs.webkit.org/show_bug.cgi?id=194649
<rdar://problem/48072386>

Reviewed by Saam Barati.

JSTests:

  • stress/sampling-profiler-stack-trace-with-double-quote-in-function-name.js: Added.
  • stress/type-profiler-with-double-quote-in-constructor-name.js: Added.
  • stress/type-profiler-with-double-quote-in-field-name.js: Added.
  • stress/type-profiler-with-double-quote-in-optional-field-name.js: Added.

Source/JavaScriptCore:

Ditto for TypeSet::toJSONString() and TypeSet::toJSONString().

  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::stackTracesAsJSON):

  • runtime/TypeSet.cpp:

(JSC::TypeSet::toJSONString const):
(JSC::StructureShape::toJSONString const):

5:07 PM Changeset in webkit [242006] by Adrian Perez de Castro
  • 5 edits
    1 add in releases/WebKitGTK/webkit-2.22

Merged r241613 - [JSC] CodeBlock::jettison should clear related watchpoints
https://bugs.webkit.org/show_bug.cgi?id=194544

Reviewed by Mark Lam.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::jettison):

  • dfg/DFGCommonData.h:

(JSC::DFG::CommonData::clearWatchpoints): Added.

  • dfg/CommonData.cpp:

(JSC::DFG::CommonData::clearWatchpoints): Added.

5:06 PM Changeset in webkit [242005] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.22/Tools

Merged r241553 - Unreviewed, build fix after r241480

  • TestWebKitAPI/ios/DragAndDropSimulatorIOS.mm:

(-[DragAndDropSimulator initWithWebViewFrame:configuration:]):
(-[DragAndDropSimulator initWithWebView:]):

5:06 PM Changeset in webkit [242004] by Adrian Perez de Castro
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.22

Merged r241499 - Crash in DOMTimer::fired
https://bugs.webkit.org/show_bug.cgi?id=194638

Reviewed by Brent Fulgham.

Source/WebCore:

This patch continues the saga of hunting down timer related crashes after r239814, r225985, r227934.

The crash was caused by the bug that we don't remove a DOMTimer from NestedTimersMap if a DOMTimer
is created & installed inside another DOMTimer's callback (via execute call in DOMTimer::fired).

Fixed the crash by using a Ref in NestedTimersMap. This will keep the timer alive until we exit
from DOMTimer::fired. Because DOMTimer::fired always calls stopTracking() which clears the map
we would not leak these DOM timers.

We could, alternatively, use WeakPtr in NestedTimersMap but that would unnecessarily increase the
size of DOMTimer for a very marginal benefit of DOMTimer objcets being deleted slightly earlier.
Deleting itself in DOMTimer's destructor involves more logic & house keeping in the timer code,
and is no longer the preferred approach when dealing with these classes of bugs in WebKit.

Test: fast/dom/timer-destruction-during-firing.html

  • page/DOMTimer.cpp:

(WebCore::NestedTimersMap::add):
(WebCore::DOMTimer::install):
(WebCore::DOMTimer::fired):

LayoutTests:

Added a regression test. It needs debug assertions without the fix.

  • fast/dom/timer-destruction-during-firing-expected.txt: Added.
  • fast/dom/timer-destruction-during-firing.html: Added.
5:06 PM Changeset in webkit [242003] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.22/Source/WebCore

Merged r227934 - Add a release assertion to ensure timers are deleted in the right thread
https://bugs.webkit.org/show_bug.cgi?id=182351

Reviewed by David Kilzer.

Added a relese assertion in ~TimerBase that the current thread is the one in which the timer was created.

We use canAccessThreadLocalDataForThread for this purpose since the condition is more complicated
when WebThread is being used.

  • platform/Timer.cpp:

(WebCore::TimerBase::~TimerBase): Added the assertion.

  • platform/Timer.h:

(WebCore::TimerBase::m_thread): Always store the current thread in a timer.

5:06 PM Changeset in webkit [242002] by Adrian Perez de Castro
  • 6 edits in releases/WebKitGTK/webkit-2.22/Source/WebCore

Merged r239814 - ThreadTimers should not store a raw pointer in its heap
https://bugs.webkit.org/show_bug.cgi?id=192975
<rdar://problem/46893946>

Reviewed by Geoffrey Garen.

Right now, ThreadTimers's heap data structure stores a raw pointer to TimerBase. In order to harden the timer code,
this patch replaces it with ThreadTimerHeapItem, a newly introduced struct, which effectively acks like
WeakReference<TimerBase*> as the timer heap and TimerBase both store RefPtr to it, and TimerBase's destructor clears
the raw pointer back to TimerBase*.

This approach was taken instead of an out-right adoptation of WeakPtr since the heap data structure requires each node
in the heap to have a fixed "priority" yet WeakPtr with no valid pointer back to TimerBase would effectively lose its
"priority" thereby corrupting the heap data structure. That is, each item in the heap must remember its fire time and
insertion order even when the underlying TimerBase had gone away (this should never happen but the whole point of this
hardening is to make it work even in the precense of such a bug).

This patch also moves the heap index in TimerBase to ThreadTimerHeapItem, and replaces the pointer to the heap vector
in TimerBase by a reference to ThreadTimers in ThreadTimerHeapItem. Note that ThreadTimers is a per-thread singleton.

The correctness of this hardening was tested by commenting out the call to stop() and !isInHeap() assertion in
TimerBase::~TimerBase() as well as the !isInHeap() assertion in ThreadTimerHeapItem::clearTimer() and observing that
layout tests run successfully without hitting any debug assertions.

No new tests since there should be no observable behavior difference.

  • WebCore.xcodeproj/project.pbxproj: Export ThreadTimers.h as a private header since it's now included in Timer.h
  • platform/ThreadTimers.cpp:

(WebCore::ThreadTimers::updateSharedTimer): Delete ThreadTimerHeapItem's with nullptr TimerBase* (TimerBase had
already been deleted). This should only happen when TimerBase's destructor failed to remove itself from the timer heap,
which should never happen.
(WebCore::ThreadTimers::sharedTimerFiredInternal): Ditto. Also removed the redundant code which had removed the timer
from the heap since setNextFireTime does the removal already.

  • platform/ThreadTimers.h: Outdented the whole file.

(WebCore::ThreadTimers::timerHeap): We use Vector<RefPtr<ThreadTimerHeapItem>> instead of Vector<Ref<~>> since Ref<~>
doesn't have a copy constructor which is used by std::push_heap.
(WebCore::ThreadTimerHeapItem): Added.
(WebCore::ThreadTimerHeapItem::hasTimer const): Added.
(WebCore::ThreadTimerHeapItem::setNotInHeap): Added. ThreadTimerHeapItem uses unsigned -1 as the single value which
signifies the item not being in the heap instead of all negative values as in the old code in TimerBase.
(WebCore::ThreadTimerHeapItem::isInHeap const): Added.
(WebCore::ThreadTimerHeapItem::isFirstInHeap const): Added.
(WebCore::ThreadTimerHeapItem::timer): Added.
(WebCore::ThreadTimerHeapItem::clearTimer): Added.
(WebCore::ThreadTimerHeapItem::heapIndex const): Added.
(WebCore::ThreadTimerHeapItem::setHeapIndex): Added.
(WebCore::ThreadTimerHeapItem::timerHeap const): Added.

  • platform/Timer.cpp:

(WebCore::threadGlobalTimerHeap): This function is now only used in assertions.
(WebCore::ThreadTimerHeapItem::ThreadTimerHeapItem): Added.
(WebCore::ThreadTimerHeapItem::create): Added.
(WebCore::TimerHeapPointer::TimerHeapPointer):
(WebCore::TimerHeapPointer::operator-> const):
(WebCore::TimerHeapReference::TimerHeapReference): Added a copy constructor.
(WebCore::TimerHeapReference::copyRef const): Added.
(WebCore::TimerHeapReference::operator RefPtr<ThreadTimerHeapItem>& const):
(WebCore::TimerHeapPointer::operator* const):
(WebCore::TimerHeapReference::operator=): Use move assignment operator.
(WebCore::TimerHeapReference::swapWith):
(WebCore::TimerHeapReference::updateHeapIndex): Extracted to share code between two verions of operator=.
(WebCore::swap):
(WebCore::TimerHeapIterator::TimerHeapIterator):
(WebCore::TimerHeapIterator::operator-> const):
(WebCore::TimerHeapLessThanFunction::compare): Added variants which take RefPtr<ThreadTimerHeapItem>.
(WebCore::TimerHeapLessThanFunction::operator() const):
(WebCore::TimerBase::TimerBase):
(WebCore::TimerBase::~TimerBase):Clear the raw pointer in ThreadTimerHeapItem.
(WebCore::TimerBase::stop):
(WebCore::TimerBase::nextFireInterval const):
(WebCore::TimerBase::checkHeapIndex const): Added the consistency check for other items in the heap.
(WebCore::TimerBase::checkConsistency const):
(WebCore::TimerBase::heapDecreaseKey):
(WebCore::TimerBase::heapDelete):
(WebCore::TimerBase::heapDeleteMin):
(WebCore::TimerBase::heapIncreaseKey):
(WebCore::TimerBase::heapInsert):
(WebCore::TimerBase::heapPop):
(WebCore::TimerBase::heapPopMin):
(WebCore::TimerBase::heapDeleteNullMin): Added. Used to delete ThreadTimerHeapItem which no longer has a valid TimerBase.
(WebCore::parentHeapPropertyHolds):
(WebCore::childHeapPropertyHolds):
(WebCore::TimerBase::hasValidHeapPosition const):
(WebCore::TimerBase::updateHeapIfNeeded): Tweaked the heap index assertion as heapIndex() itself would assert when called
on an item with an invalid (-1) heap index.
(WebCore::TimerBase::setNextFireTime): Create ThreadTimerHeapItem. Note m_heapItem is never cleared until this TimerBase
is deleted.
(WebCore::TimerHeapReference::operator TimerBase* const): Deleted.

  • platform/Timer.h:

(WebCore::TimerBase): Replaced m_nextFireTime, m_heapIndex, m_heapInsertionOrder, and m_cachedThreadGlobalTimerHeap
by m_heapItem, RefPtr to an ThreadTimerHeapItem.
(WebCore::TimerBase::augmentFireInterval):
(WebCore::TimerBase::inHeap const):
(WebCore::TimerBase::nextFireTime const):
(WebCore::TimerBase::isActive const):
(WebCore::TimerBase:: const): Deleted.

5:06 PM Changeset in webkit [242001] by Adrian Perez de Castro
  • 30 edits
    4 adds in releases/WebKitGTK/webkit-2.22

Merged r241480 - Further restricting webarchive loads
https://bugs.webkit.org/show_bug.cgi?id=194567
<rdar://problem/47610130>

Reviewed by Youenn Fablet.

Source/WebCore:

This patch futher restricts main frame webarchive loads to the followings:
1) loaded by clients;
2) loaded by drag;
3) reloaded from any of the previous two.

It moves setAlwaysAllowLocalWebarchive, which is used for testing only, from Document
to FrameLoader such that the option is remembered during redirections.

Covered by API tests.

  • dom/Document.h:

(WebCore::Document::setAlwaysAllowLocalWebarchive): Deleted.
(WebCore::Document::alwaysAllowLocalWebarchive const): Deleted.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::disallowWebArchive const):

  • loader/DocumentLoader.h:

(WebCore::DocumentLoader::setAllowsWebArchiveForMainFrame):
(WebCore::DocumentLoader::allowsWebArchiveForMainFrame):

  • loader/FrameLoadRequest.h:

(WebCore::FrameLoadRequest::setIsRequestFromClientOrUserInput):
(WebCore::FrameLoadRequest::isRequestFromClientOrUserInput):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::load):
(WebCore::FrameLoader::reload):

  • loader/FrameLoader.h:

(WebCore::FrameLoader::setAlwaysAllowLocalWebarchive):
(WebCore::FrameLoader::alwaysAllowLocalWebarchive const):

  • page/DragController.cpp:

(WebCore::DragController::performDragOperation):

  • testing/Internals.cpp:

(WebCore::Internals::setAlwaysAllowLocalWebarchive const):

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

Source/WebKit:

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::loadRequest):
Set a flag to indicate a load is started from clients.

Tools:

Besides adding API tests, this patch also enhances DragAndDropSimulator to allow
navigations on drop.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/mac/LoadWebArchive.mm: Added.

(-[TestLoadWebArchiveNavigationDelegate webView:didFinishNavigation:]):
(-[TestLoadWebArchiveNavigationDelegate webView:didFailProvisionalNavigation:withError:]):
(-[TestLoadWebArchiveNavigationDelegate webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/mac/helloworld.webarchive: Added.
  • TestWebKitAPI/Tests/mac/load-web-archive-1.html: Added.
  • TestWebKitAPI/Tests/mac/load-web-archive-2.html: Added.
  • TestWebKitAPI/cocoa/DragAndDropSimulator.h:
  • TestWebKitAPI/mac/DragAndDropSimulatorMac.mm:

(-[DragAndDropSimulator initWithWebViewFrame:configuration:]):
(-[DragAndDropSimulator _webView:dragDestinationActionMaskForDraggingInfo:]):

LayoutTests:

  • platform/mac/fast/loader/webarchive-encoding-respected.html:
  • webarchive/loading/cache-expired-subresource.html:
  • webarchive/loading/javascript-url-iframe-crash.html:
  • webarchive/loading/mainresource-null-mimetype-crash.html:
  • webarchive/loading/missing-data.html:
  • webarchive/loading/object.html:
  • webarchive/loading/test-loading-archive-subresource-null-mimetype.html:
  • webarchive/loading/test-loading-archive-subresource.html:
  • webarchive/loading/test-loading-archive.html:
  • webarchive/loading/test-loading-top-archive.html:
  • webarchive/loading/video-in-webarchive.html:
5:06 PM Changeset in webkit [242000] by Adrian Perez de Castro
  • 11 edits in releases/WebKitGTK/webkit-2.22

Merged r241289 - AXObjectCache::childrenChanged shouldn't update layout or style during another style recalc
https://bugs.webkit.org/show_bug.cgi?id=182280
<rdar://problem/37018386>

Reviewed by Alan Bujtas.

Source/WebCore:

Remove the possibility that changing children calls back into updating layout by
handling children changes in a deferred manner.

This follows the same architecture as many other deferred changes, but also requires us to check deferred changes
in updateBackingStore, because things like aria-hidden changes won't trigger a layout, but will require us to update children.

A few tests had to be modified to no longer change the tree and then check the children immediately.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::remove):
(WebCore::AXObjectCache::childrenChanged):
(WebCore::AXObjectCache::prepareForDocumentDestruction):
(WebCore::AXObjectCache::performDeferredCacheUpdate):

  • accessibility/AXObjectCache.h:
  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::updateBackingStore):

  • accessibility/mac/WebAccessibilityObjectWrapperBase.mm:

(convertToNSArray):
(-[WebAccessibilityObjectWrapperBase updateObjectBackingStore]):

LayoutTests:

  • accessibility/aria-hidden-update.html:
  • accessibility/aria-hidden-updates-alldescendants.html:
  • accessibility/image-load-on-delay.html:
  • accessibility/mac/aria-hidden-changes-for-non-ignored-elements.html:
  • accessibility/removed-anonymous-block-child-causes-crash.html:
5:05 PM Changeset in webkit [241999] by Adrian Perez de Castro
  • 14 edits
    1 add in releases/WebKitGTK/webkit-2.22

Merged r241228 - Nodes that rely on being dominated by CheckInBounds should have a child edge to it
https://bugs.webkit.org/show_bug.cgi?id=194334
<rdar://problem/47844327>

Reviewed by Mark Lam.

JSTests:

  • stress/check-in-bounds-should-be-a-child-use.js: Added.

(func):

Source/JavaScriptCore:

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGArgumentsEliminationPhase.cpp:
  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::convertToHasIndexedProperty):

  • dfg/DFGIntegerCheckCombiningPhase.cpp:

(JSC::DFG::IntegerCheckCombiningPhase::handleBlock):

  • dfg/DFGIntegerRangeOptimizationPhase.cpp:
  • dfg/DFGNodeType.h:
  • dfg/DFGSSALoweringPhase.cpp:

(JSC::DFG::SSALoweringPhase::lowerBoundsCheck):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileHasIndexedProperty):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCheckInBounds):
(JSC::FTL::DFG::LowerDFGToB3::compileHasIndexedProperty):

4:57 PM Changeset in webkit [241998] by Michael Catanzaro
  • 2 edits in trunk/Source/WTF

Unreviewed, fix find/replace error from r232178

Looks like this was the only such error in that commit.

  • wtf/URLHelpers.cpp:

(WTF::URLHelpers::isLookalikeCharacter):

4:03 PM Changeset in webkit [241997] by Simon Fraser
  • 16 edits
    6 deletes in trunk/Source

Remove remnants of iOS WK1 scrolling tree code
https://bugs.webkit.org/show_bug.cgi?id=194980

Reviewed by Sam Weinig.

Source/WebCore:

Remove ScrollingTreeIOS and ScrollingCoordinatorIOS which were never instantiated,
to reduce maintenance costs and simplify.

Merge ScrollingTreeFrameScrollingNodeIOS into ScrollingTreeFrameScrollingNodeRemoteIOS
since that was the only concrete subclass, removing code which never applies to iOS WK2
(e.g. the synchronous scrolling code path).

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • page/FrameView.h:
  • page/scrolling/ScrollingCoordinator.cpp:
  • page/scrolling/ScrollingTree.h:
  • page/scrolling/ScrollingTreeFrameScrollingNode.h:
  • page/scrolling/ScrollingTreeNode.h:
  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::handleWheelEvent):

  • page/scrolling/ScrollingTreeScrollingNode.h:

(WebCore::ScrollingTreeScrollingNode::updateLayersAfterDelegatedScroll): Deleted.
(WebCore::ScrollingTreeScrollingNode::scrollableAreaSize const): Deleted.
(WebCore::ScrollingTreeScrollingNode::totalContentsSize const): Deleted.
(WebCore::ScrollingTreeScrollingNode::horizontalSnapOffsets const): Deleted.
(WebCore::ScrollingTreeScrollingNode::verticalSnapOffsets const): Deleted.
(WebCore::ScrollingTreeScrollingNode::horizontalSnapOffsetRanges const): Deleted.
(WebCore::ScrollingTreeScrollingNode::verticalSnapOffsetRanges const): Deleted.
(WebCore::ScrollingTreeScrollingNode::currentHorizontalSnapPointIndex const): Deleted.
(WebCore::ScrollingTreeScrollingNode::currentVerticalSnapPointIndex const): Deleted.
(WebCore::ScrollingTreeScrollingNode::setCurrentHorizontalSnapPointIndex): Deleted.
(WebCore::ScrollingTreeScrollingNode::setCurrentVerticalSnapPointIndex): Deleted.
(WebCore::ScrollingTreeScrollingNode::useDarkAppearanceForScrollbars const): Deleted.
(WebCore::ScrollingTreeScrollingNode::lastCommittedScrollPosition const): Deleted.
(WebCore::ScrollingTreeScrollingNode::reachableContentsSize const): Deleted.
(WebCore::ScrollingTreeScrollingNode::parentRelativeScrollableRect const): Deleted.
(WebCore::ScrollingTreeScrollingNode::scrollOrigin const): Deleted.
(WebCore::ScrollingTreeScrollingNode::totalContentsSizeForRubberBand const): Deleted.
(WebCore::ScrollingTreeScrollingNode::setTotalContentsSizeForRubberBand): Deleted.
(WebCore::ScrollingTreeScrollingNode::horizontalScrollElasticity const): Deleted.
(WebCore::ScrollingTreeScrollingNode::verticalScrollElasticity const): Deleted.
(WebCore::ScrollingTreeScrollingNode::hasEnabledHorizontalScrollbar const): Deleted.
(WebCore::ScrollingTreeScrollingNode::hasEnabledVerticalScrollbar const): Deleted.
(WebCore::ScrollingTreeScrollingNode::canHaveScrollbars const): Deleted.
(WebCore::ScrollingTreeScrollingNode::expectsWheelEventTestTrigger const): Deleted.
(WebCore::ScrollingTreeScrollingNode::scrollContainerLayer const): Deleted.
(WebCore::ScrollingTreeScrollingNode::scrolledContentsLayer const): Deleted.

  • page/scrolling/ios/ScrollingCoordinatorIOS.h: Removed.
  • page/scrolling/ios/ScrollingCoordinatorIOS.mm: Removed.
  • page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h: Removed.
  • page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm: Removed.
  • page/scrolling/ios/ScrollingTreeIOS.cpp: Removed.
  • page/scrolling/ios/ScrollingTreeIOS.h: Removed.
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:

(WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollPosition):

Source/WebKit:

Remove ScrollingTreeIOS and ScrollingCoordinatorIOS which were never instantiated.

Merge ScrollingTreeFrameScrollingNodeIOS into ScrollingTreeFrameScrollingNodeRemoteIOS,
removing code which never applies to iOS WK2 (e.g. the synchronous scrolling code path).

  • UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.h:
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm:

(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::ScrollingTreeFrameScrollingNodeRemoteIOS):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateBeforeChildren):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateAfterChildren):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::minimumScrollPosition const):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::maximumScrollPosition const):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::scrollPosition const):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::setScrollPosition):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::setScrollLayerPosition):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateChildNodesAfterScroll):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterDelegatedScroll):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterViewportChange):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterAncestorChange):

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h:
3:24 PM Changeset in webkit [241996] by Justin Fan
  • 24 edits
    1 copy
    3 adds
    2 deletes in trunk

[WebGPU] Buffer updates part 1: async mapping functions, unmap, and destroy
https://bugs.webkit.org/show_bug.cgi?id=194665

Reviewed by Dean Jackson.

Source/WebCore:

Test: map-write-buffers.html. Other tests updated to match new API.

  • Modules/webgpu/WebGPUBindGroupDescriptor.cpp: Added.

(WebCore::validateBufferBindingType): Ensure buffer binding usages match the binding type.
(WebCore::WebGPUBindGroupDescriptor::asGPUBindGroupDescriptor const): Logic moved out from WebGPUDevice.cpp.

  • Modules/webgpu/WebGPUBindGroupDescriptor.h:
  • Modules/webgpu/WebGPUBuffer.cpp: Added GPUBuffer functionality.

(WebCore::WebGPUBuffer::create):
(WebCore::WebGPUBuffer::WebGPUBuffer):
(WebCore::WebGPUBuffer::mapReadAsync):
(WebCore::WebGPUBuffer::mapWriteAsync):
(WebCore::WebGPUBuffer::unmap):
(WebCore::WebGPUBuffer::destroy):
(WebCore::WebGPUBuffer::rejectOrRegisterPromiseCallback): Register a mapping request on the GPUBuffer, if valid.

  • Modules/webgpu/WebGPUBuffer.h:

(WebCore::WebGPUBuffer::buffer const):
(WebCore::WebGPUBuffer::mapping const): Deleted.

  • Modules/webgpu/WebGPUBuffer.idl: Update to latest API and enable every function except setSubData.
  • Modules/webgpu/WebGPUCommandBuffer.cpp:

(WebCore::WebGPUCommandBuffer::beginRenderPass): Renamed descriptor conversion method.

  • Modules/webgpu/WebGPUDevice.cpp:

(WebCore::WebGPUDevice::createBuffer const): Update to non-nullable return type.
(WebCore::WebGPUDevice::createBindGroup const): Move descriptor validation logic to descriptor implementation.

  • Modules/webgpu/WebGPUDevice.h:
  • Modules/webgpu/WebGPURenderPassDescriptor.cpp:

(WebCore::WebGPURenderPassDescriptor::asGPURenderPassDescriptor const): Renamed from validateAndConvertToGPUVersion.

  • Modules/webgpu/WebGPURenderPassEncoder.cpp:

(WebCore::WebGPURenderPassEncoder::setVertexBuffers): Add validation for submitted buffers.

  • platform/graphics/gpu/GPUBuffer.cpp: Added.

(WebCore::GPUBuffer::PendingMappingCallback::PendingMappingCallback): New struct for retaining a reference to mapping callbacks.

  • platform/graphics/gpu/GPUBuffer.h: Add functionality to retain callbacks and usage bits.

(WebCore::GPUBuffer::isVertex const):
(WebCore::GPUBuffer::isUniform const):
(WebCore::GPUBuffer::isStorage const):
(WebCore::GPUBuffer::isReadOnly const):
(WebCore::GPUBuffer::PendingMapPromise::create):
(WebCore::GPUBuffer::isMappable const):
(WebCore::GPUBuffer::isMapWriteable const):
(WebCore::GPUBuffer::isMapReadable const):
(WebCore::GPUBuffer::mapping const): Deleted.

  • platform/graphics/gpu/GPUBufferUsage.h: enum class cannot be logical ORed together.
  • platform/graphics/gpu/GPUDevice.cpp:

(WebCore::GPUDevice::tryCreateBuffer const): Renamed from createBuffer.
(WebCore::GPUDevice::createBuffer const): Deleted.

  • platform/graphics/gpu/GPUDevice.h:
  • platform/graphics/gpu/cocoa/GPUBufferMetal.mm:

(WebCore::GPUBuffer::tryCreateSharedBuffer): Attempt to create a MTLBuffer with shared memory.
(WebCore::GPUBuffer::tryCreate): No longer use Gigacage-allocated memory for MTLBuffer.
(WebCore::GPUBuffer::GPUBuffer):
(WebCore::GPUBuffer::~GPUBuffer):
(WebCore::GPUBuffer::registerMappingCallback): Register the provided callback to be executed when the staging buffer can be safely exposed.
(WebCore::GPUBuffer::stagingBufferForRead): Prepare the arrayBuffer for reading and run the mapping callback.
(WebCore::GPUBuffer::stagingBufferForWrite): Ditto, but for writing.
(WebCore::GPUBuffer::unmap): If needed, copy the staging ArrayBuffer to the MTLBuffer. Unregister any mapping callback.
(WebCore::GPUBuffer::destroy): Stub implementation for now. Frees the MTLBuffer as soon as possible.
(WebCore::GPUBuffer::create): Deleted.

  • platform/graphics/gpu/cocoa/GPUProgrammablePassEncoderMetal.mm:

(WebCore::GPUProgrammablePassEncoder::setResourceAsBufferOnEncoder): Ensure only read-only GPUBuffers are used as read-only on the GPU.

Add symbols for new files:

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

LayoutTests:

Rewrite buffers.html -> map-write-buffers.html to test new functionality. Rewrite other affected
tests to use mapWriteAsync.

  • webgpu/buffer-resource-triangles.html:
  • webgpu/buffers-expected.txt: Renamed to map-write-buffers-expected.txt.
  • webgpu/buffers.html: Renamed to map-write-buffers.html.
  • webgpu/depth-enabled-triangle-strip.html:
  • webgpu/map-write-buffers-expected.txt: Renamed from buffers-expected.txt.
  • webgpu/map-write-buffers.html: Renamed from buffers.html.
  • webgpu/vertex-buffer-triangle-strip.html:
  • platform/mac/TestExpectations: Skip all webgpu tests on macOS 10.12 bots.
12:49 PM Changeset in webkit [241995] by Michael Catanzaro
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix -Wunused-param warning

  • jsc.cpp:
11:11 AM Changeset in webkit [241994] by bshafiei@apple.com
  • 1 copy in tags/Safari-608.1.5.1.4

Tag Safari-608.1.5.1.4.

11:03 AM Changeset in webkit [241993] by bshafiei@apple.com
  • 7 edits in branches/safari-607-branch/Source

Versioning.

11:01 AM Changeset in webkit [241992] by bshafiei@apple.com
  • 1 copy in tags/Safari-607.1.37

Tag Safari-607.1.37.

10:15 AM Changeset in webkit [241991] by mark.lam@apple.com
  • 4 edits in trunk/Source

Add an exception check and some assertions in StringPrototype.cpp.
https://bugs.webkit.org/show_bug.cgi?id=194962
<rdar://problem/48013416>

Reviewed by Yusuke Suzuki and Saam Barati.

Source/JavaScriptCore:

  • runtime/StringPrototype.cpp:

(JSC::jsSpliceSubstrings):
(JSC::jsSpliceSubstringsWithSeparators):
(JSC::operationStringProtoFuncReplaceRegExpEmptyStr):

Source/WTF:

Add an AssertNoOverflow overflow handler which allows us to do CheckedArithmetic
for assertion purpose only on debug builds but sacrifices no performance on
release builds.

  • wtf/CheckedArithmetic.h:

(WTF::AssertNoOverflow::overflowed):
(WTF::AssertNoOverflow::clearOverflow):
(WTF::AssertNoOverflow::crash):
(WTF::AssertNoOverflow::hasOverflowed const):
(WTF::observesOverflow):
(WTF::observesOverflow<AssertNoOverflow>):
(WTF::safeAdd):
(WTF::safeSub):
(WTF::safeMultiply):
(WTF::Checked::operator+=):
(WTF::Checked::operator-=):
(WTF::Checked::operator*=):
(WTF::operator+):
(WTF::operator-):
(WTF::operator*):

10:01 AM Changeset in webkit [241990] by keith_miller@apple.com
  • 36 edits in trunk

Add new mac target numbers
https://bugs.webkit.org/show_bug.cgi?id=194955

Reviewed by Tim Horton.

Source/bmalloc:

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/JavaScriptCore:

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/ThirdParty/ANGLE:

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/ThirdParty/libwebrtc:

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/WebCore:

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/WebCore/PAL:

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/WebInspectorUI:

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/WebKit:

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/WebKitLegacy/mac:

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/WTF:

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Tools:

  • DumpRenderTree/mac/Configurations/Base.xcconfig:
  • DumpRenderTree/mac/Configurations/DebugRelease.xcconfig:
  • MiniBrowser/Configurations/Base.xcconfig:
  • TestWebKitAPI/Configurations/Base.xcconfig:
  • WebKitTestRunner/Configurations/Base.xcconfig:
8:11 AM Changeset in webkit [241989] by Chris Fleizach
  • 13 edits in trunk

AX: WebKit is incorrectly mapping the <meter> element to progressbar
https://bugs.webkit.org/show_bug.cgi?id=164051
<rdar://problem/29055615>

Reviewed by Joanmarie Diggs.

Source/WebCore:

Add a specific role for meter and map that to the appropriate mac role.

  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::canHaveChildren const):
(WebCore::AccessibilityNodeObject::isProgressIndicator const):

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::accessibleNameDerivesFromContent const):
(WebCore::AccessibilityObject::isRangeControl const):
(WebCore::AccessibilityObject::computedRoleString const):

  • accessibility/AccessibilityObjectInterface.h:
  • accessibility/AccessibilityProgressIndicator.cpp:

(WebCore::AccessibilityProgressIndicator::roleValue const):

  • accessibility/AccessibilityProgressIndicator.h:
  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::shouldFocusActiveDescendant const):

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(createAccessibilityRoleMap):

LayoutTests:

  • platform/mac-wk2/accessibility/roles-exposed-expected.txt:
  • platform/mac/accessibility/meter-element-expected.txt:
  • platform/mac/accessibility/roles-exposed-expected.txt:

Feb 22, 2019:

9:30 PM Changeset in webkit [241988] by Chris Dumez
  • 20 edits in trunk/Source/WebKit

Give DrawingAreas their own identifiers
https://bugs.webkit.org/show_bug.cgi?id=194969
<rdar://problem/48154508>

Reviewed by Geoffrey Garen.

Give DrawingAreas their own identifiers instead of using the pageID. It will make the IPC more robust now that a
WebPageProxy can have several drawing areas with PSON.

  • Shared/DrawingAreaInfo.h:
  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):

  • Shared/WebPageCreationParameters.h:
  • UIProcess/AcceleratedDrawingAreaProxy.cpp:

(WebKit::AcceleratedDrawingAreaProxy::sendUpdateBackingStoreState):
(WebKit::AcceleratedDrawingAreaProxy::waitForAndDispatchDidUpdateBackingStoreState):
(WebKit::AcceleratedDrawingAreaProxy::setNativeSurfaceHandleForCompositing):
(WebKit::AcceleratedDrawingAreaProxy::destroyNativeSurfaceHandleForCompositing):

  • UIProcess/DrawingAreaProxy.cpp:

(WebKit::DrawingAreaProxy::DrawingAreaProxy):
(WebKit::DrawingAreaProxy::~DrawingAreaProxy):
(WebKit::DrawingAreaProxy::messageSenderConnection const):
(WebKit::DrawingAreaProxy::sendMessage):
(WebKit::DrawingAreaProxy::viewExposedRectChangedTimerFired):

  • UIProcess/DrawingAreaProxy.h:

(WebKit::DrawingAreaProxy::identifier const):
(WebKit::DrawingAreaProxy::process const):

  • UIProcess/DrawingAreaProxyImpl.cpp:

(WebKit::DrawingAreaProxyImpl::update):

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::initializeWebPage):

  • UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:

(WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy):
(WebKit::RemoteLayerTreeDrawingAreaProxy::~RemoteLayerTreeDrawingAreaProxy):
(WebKit::RemoteLayerTreeDrawingAreaProxy::deviceScaleFactorDidChange):
(WebKit::RemoteLayerTreeDrawingAreaProxy::sendUpdateGeometry):
(WebKit::RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidStart):
(WebKit::RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidEnd):
(WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay):
(WebKit::RemoteLayerTreeDrawingAreaProxy::waitForDidUpdateActivityState):
(WebKit::RemoteLayerTreeDrawingAreaProxy::dispatchAfterEnsuringDrawing):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::initializeWebPage):
(WebKit::WebPageProxy::createNewPage):
(WebKit::WebPageProxy::creationParameters):

  • UIProcess/WebPageProxy.h:
  • UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:

(WebKit::TiledCoreAnimationDrawingAreaProxy::deviceScaleFactorDidChange):
(WebKit::TiledCoreAnimationDrawingAreaProxy::colorSpaceDidChange):
(WebKit::TiledCoreAnimationDrawingAreaProxy::waitForDidUpdateActivityState):
(WebKit::TiledCoreAnimationDrawingAreaProxy::sendUpdateGeometry):
(WebKit::TiledCoreAnimationDrawingAreaProxy::adjustTransientZoom):
(WebKit::TiledCoreAnimationDrawingAreaProxy::commitTransientZoom):
(WebKit::TiledCoreAnimationDrawingAreaProxy::dispatchAfterEnsuringDrawing):

  • WebProcess/WebPage/AcceleratedDrawingArea.cpp:

(WebKit::AcceleratedDrawingArea::AcceleratedDrawingArea):
(WebKit::AcceleratedDrawingArea::layerHostDidFlushLayers):
(WebKit::AcceleratedDrawingArea::sendDidUpdateBackingStoreState):

  • WebProcess/WebPage/DrawingArea.cpp:

(WebKit::DrawingArea::DrawingArea):
(WebKit::DrawingArea::removeMessageReceiverIfNeeded):

  • WebProcess/WebPage/DrawingArea.h:

(WebKit::DrawingArea::identifier const):
(WebKit::DrawingArea::send):

  • WebProcess/WebPage/DrawingAreaImpl.cpp:

(WebKit::DrawingAreaImpl::sendDidUpdateBackingStoreState):
(WebKit::DrawingAreaImpl::exitAcceleratedCompositingMode):
(WebKit::DrawingAreaImpl::display):

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:

(WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):
(WebKit::RemoteLayerTreeDrawingArea::updateGeometry):
(WebKit::RemoteLayerTreeDrawingArea::flushLayers):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::reinitializeWebPage):

  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
(WebKit::TiledCoreAnimationDrawingArea::sendEnterAcceleratedCompositingModeIfNeeded):
(WebKit::TiledCoreAnimationDrawingArea::updateIntrinsicContentSizeIfNeeded):
(WebKit::TiledCoreAnimationDrawingArea::flushLayers):
(WebKit::TiledCoreAnimationDrawingArea::updateGeometry):
(WebKit::TiledCoreAnimationDrawingArea::setLayerHostingMode):

9:14 PM Changeset in webkit [241987] by Simon Fraser
  • 2 edits in trunk/LayoutTests

Fix a legacy animation test. The <!-- webkit-test-runner --> was inside the <style>.

  • legacy-animation-engine/animations/additive-transform-animations.html:
9:05 PM Changeset in webkit [241986] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Crash in SWServerJobQueue::runNextJobSynchronously
https://bugs.webkit.org/show_bug.cgi?id=194974

Reviewed by Geoffrey Garen.

We suspect the crash is happening due to m_jobQueue being empty in runNextJobSynchronously
or there is a timer heap corruption again :(

Exit early when m_jobQueue is empty. Also add a debug assert that this should never happen
but convert an existing release assert to a debug assert since this appears to be hitting
too frequently in wild.

  • workers/service/server/SWServerJobQueue.cpp:

(WebCore::SWServerJobQueue::runNextJobSynchronously):

8:50 PM Changeset in webkit [241985] by aestes@apple.com
  • 2 edits in trunk/Source/WebKit

[Cocoa] Do not suppress deprecation warnings when calling sandbox_extension_issue_file
https://bugs.webkit.org/show_bug.cgi?id=194971
<rdar://problem/35786264>

Reviewed by Tim Horton.

sandbox_extension_issue_file is not actually deprecated.

  • Shared/mac/SandboxExtensionMac.mm:

(WebKit::SandboxExtensionImpl::sandboxExtensionForType):

8:40 PM Changeset in webkit [241984] by Simon Fraser
  • 16 edits in trunk/Source/WebCore

Clean up the setScrollPosition/setScrollPositionWithoutContentEdgeConstraints confusion in the scrolling tree nodes
https://bugs.webkit.org/show_bug.cgi?id=194968

Reviewed by Antti Koivisto.

Having both setScrollPosition() and setScrollPositionWithoutContentEdgeConstraints() is confusing because
you can't tell which is the bottleneck. So add a 'clamp' parameter to setScrollPosition() and merge them.

ScrollingTreeFrameScrollingNodeMac::setScrollPosition() replicates a bit of code but future cleanups will
reduce that.

  • page/scrolling/ScrollingTreeFrameScrollingNode.cpp:

(WebCore::ScrollingTreeFrameScrollingNode::setScrollPosition): Deleted. This was the same as the base class method.

  • page/scrolling/ScrollingTreeFrameScrollingNode.h:
  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::setScrollPosition):
(WebCore::ScrollingTreeScrollingNode::clampScrollPosition const):
(WebCore::ScrollingTreeScrollingNode::scrollBy):
(WebCore::ScrollingTreeScrollingNode::setScrollPositionWithoutContentEdgeConstraints): Deleted.
(WebCore::ScrollingTreeScrollingNode::scrollByWithoutContentEdgeConstraints): Deleted.

  • page/scrolling/ScrollingTreeScrollingNode.h:
  • page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h:
  • page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm:

(WebCore::ScrollingTreeFrameScrollingNodeIOS::setScrollPosition):
(WebCore::ScrollingTreeFrameScrollingNodeIOS::setScrollPositionWithoutContentEdgeConstraints): Deleted. Did nothing.

  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:

(WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateBeforeChildren):
(WebCore::ScrollingTreeFrameScrollingNodeMac::handleWheelEvent):
(WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollPosition):
(WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollPositionWithoutContentEdgeConstraints): Deleted.

  • page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h:
  • page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:

(WebCore::ScrollingTreeOverflowScrollingNodeMac::setScrollPosition):
(WebCore::ScrollingTreeOverflowScrollingNodeMac::setScrollPositionWithoutContentEdgeConstraints): Deleted.

  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:

(WebCore::ScrollingTreeScrollingNodeDelegateMac::immediateScrollByWithoutContentEdgeConstraints):

  • platform/PlatformWheelEvent.h:

(WebCore::PlatformWheelEvent::delta const):

  • platform/ScrollTypes.h:
8:31 PM Changeset in webkit [241983] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

AX: Treat AXChildrenInNavigationOrder as AXChildren before adding support for aria-flowto
https://bugs.webkit.org/show_bug.cgi?id=194923

Patch by Eric Liang <ericliang@apple.com> on 2019-02-22
Reviewed by Chris Fleizach.

Source/WebCore:

Added AXChildrenInNavigationOrder attribute that returns the same array as from AXChildren. It prevents AppKit from reordering elements from the fallback AXChildren attribute.

Test: accessibility/mac/children-in-navigation-order-returns-children.html

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

LayoutTests:

Added test to check AXChildrenInNavigationOrder returns non-empty array from AXChildren.

  • accessibility/mac/children-in-navigation-order-returns-children-expected.txt: Added.
  • accessibility/mac/children-in-navigation-order-returns-children.html: Added.
8:17 PM Changeset in webkit [241982] by Devin Rousso
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Timelines: add UI for preventing auto-stop
https://bugs.webkit.org/show_bug.cgi?id=194956

Reviewed by Joseph Pecoraro.

Add a checkbox to the navigation area of the Timelines tab that controls whether recordings
automatically stop (e.g. after "load" or a period of inactivity).

  • UserInterface/Views/TimelineRecordingContentView.js:

(WI.TimelineRecordingContentView):
(WI.TimelineRecordingContentView.prototype.get navigationItems):
(WI.TimelineRecordingContentView.prototype._handleAutoStopCheckboxCheckedDidChange): Added.
(WI.TimelineRecordingContentView.prototype._handleTimelinesAutoStopSettingChanged): Added.

  • UserInterface/Controllers/TimelineManager.js:

(WI.TimelineManager):
(WI.TimelineManager.prototype.capturingStopped):
(WI.TimelineManager.prototype._stopAutoRecordingSoon):
(WI.TimelineManager.prototype._resetAutoRecordingMaxTimeTimeout):
(WI.TimelineManager.prototype._resetAutoRecordingDeadTimeTimeout):
(WI.TimelineManager.prototype._handleTimelinesAutoStopSettingChanged):

  • UserInterface/Base/Setting.js:
  • Localizations/en.lproj/localizedStrings.js:
8:10 PM Changeset in webkit [241981] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

REGRESSION(r?): Web Inspector: Popovers have inset shadows
https://bugs.webkit.org/show_bug.cgi?id=192963
<rdar://problem/46888679>

Reviewed by Brian Burg.

  • UserInterface/Views/Popover.js:

(WI.Popover.prototype._drawBackground):
(WI.Popover.prototype._drawBackground.isolate): Added.

  • UserInterface/Views/Popover.css:

(.popover):

8:07 PM Changeset in webkit [241980] by Devin Rousso
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Styles Redesign: clicking CSS property or selector should always select its text
https://bugs.webkit.org/show_bug.cgi?id=180791
<rdar://problem/36038366>

Reviewed by Brian Burg.

  • UserInterface/Views/SpreadsheetSelectorField.js:

(WI.SpreadsheetSelectorField):
(WI.SpreadsheetSelectorField.prototype.startEditing):
(WI.SpreadsheetSelectorField.prototype.stopEditing):
(WI.SpreadsheetSelectorField.prototype._handleMouseDown): Added.
(WI.SpreadsheetSelectorField.prototype._handleMouseUp): Added.
(WI.SpreadsheetSelectorField.prototype._handleFocus): Deleted.

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:

(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:

(.spreadsheet-css-declaration .selector.editing:focus, .spreadsheet-css-declaration .selector > .matched): Added.
(.spreadsheet-css-declaration .selector.spreadsheet-selector-field):
(.spreadsheet-css-declaration .selector:focus, .spreadsheet-css-declaration .selector > .matched): Deleted.

8:05 PM Changeset in webkit [241979] by basuke.suzuki@sony.com
  • 4 edits
    2 adds in trunk

[WinCairo] Enable wk1/wk2 suffix for platform search path.
https://bugs.webkit.org/show_bug.cgi?id=194846

Reviewed by Don Olmstead.

Tools:

Added _search_paths() and _port_specific_expectations_files() for
WinCairoPort.

  • Scripts/webkitpy/port/win.py:

(WinCairoPort.default_baseline_search_path):
(WinCairoPort):
(WinCairoPort._port_specific_expectations_files):
(WinCairoPort._search_paths):

LayoutTests:

Added WebKitLegacy specific TestExpectations.

  • platform/wincairo-wk1/TestExpectations: Added.
  • platform/wincairo/TestExpectations:
6:38 PM Changeset in webkit [241978] by timothy_horton@apple.com
  • 7 edits in trunk

ProcessSwap.PageOverlayLayerPersistence fails on iOS and in debug builds
https://bugs.webkit.org/show_bug.cgi?id=194963

Reviewed by Dean Jackson.

Source/WebCore:

Tested by existing failing API test.

  • page/Page.cpp:

(WebCore::Page::installedPageOverlaysChanged): Deleted.

  • page/Page.h:

(WebCore::Page::pageOverlayController):

  • page/PageOverlayController.cpp:

(WebCore::PageOverlayController::installedPageOverlaysChanged):
(WebCore::PageOverlayController::detachViewOverlayLayers):
(WebCore::PageOverlayController::installPageOverlay):
(WebCore::PageOverlayController::uninstallPageOverlay):
(WebCore::PageOverlayController::willDetachRootLayer): Deleted.

  • page/PageOverlayController.h:

As intended by r240940, move installedPageOverlaysChanged to PageOverlayController.
Also, make it ignore isInWindow state; otherwise, if you install a overlay
and then come into window, nothing installs the root layer. There is no
need for this code to follow in-window state manually anymore since
the DrawingArea and RenderLayerCompositor just hook the layers up when needed.

Make some methods private, and make detachViewOverlayLayers only touch
*view* overlays, so that we don't detach the document-relative root
layer when you drop to having no view overlays. This maintains
existing behavior because nothing was calling PageOverlayController::detachViewOverlayLayers.

Now there are no callers of willDetachRootLayer, so remove it.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

Do a contains check instead of equals, because in debug builds we
put the GraphicsLayer pointer in a prefix.

6:10 PM Changeset in webkit [241977] by dino@apple.com
  • 1 edit
    1 add in trunk/LayoutTests

Rotation animations sometimes use the wrong origin (affects apple.com)
https://bugs.webkit.org/show_bug.cgi?id=194878
<rdar://problem/43908047>

Reviewed by Simon Fraser.

Forgot another expected results file.

  • legacy-animation-engine/animations/additive-transform-animations-expected.html: Added.
6:06 PM Changeset in webkit [241976] by bshafiei@apple.com
  • 1 edit in branches/safari-607-branch/Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig

Apply patch. rdar://problem/47289624

5:51 PM Changeset in webkit [241975] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Dark Mode: DOM Content Loaded blue marker is too dark
https://bugs.webkit.org/show_bug.cgi?id=194970
<rdar://problem/48330126>

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/TimelineRuler.css:

(@media (prefers-color-scheme: dark)):
(.timeline-ruler > .markers > .marker.dom-content-event):
Make the marker lighter for the dark mode.

5:50 PM Changeset in webkit [241974] by bshafiei@apple.com
  • 6 edits in branches/safari-607-branch/Source

Apply patch. rdar://problem/47289624

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

Skip the test added in r241932 on iOS for now.

  • platform/ios/TestExpectations:
4:54 PM Changeset in webkit [241972] by Alan Coon
  • 1 edit in branches/safari-607-branch/Source/WebCore/page/mac/DragControllerMac.mm

Unreviwed build fix. rdar://problem/47289624

4:48 PM Changeset in webkit [241971] by Wenson Hsieh
  • 17 edits
    2 adds in trunk

[iOS] Callout menu overlaps in-page controls when editing a comment in github.com's issue tracker
https://bugs.webkit.org/show_bug.cgi?id=194873
<rdar://problem/46701974>

Reviewed by Tim Horton.

Source/WebKit:

On the topic of supporting web-based rich text editors on iOS, one problematic area has always been handling
conflicts between platform UI (i.e., the system callout menu) and in-page text editing controls. This issue
comes up in websites that don't use the "hidden contenteditable" approach to rich text editing, but also show
additional controls in a toolbar or contextual menu above the selection. In these cases, what often happens is
that system controls overlap controls in the page.

Luckily, the iOS callout menu (i.e. the private UICalloutBar) is capable of presenting with a list of "evasion
rects" to avoid; if the callout bar would normally intersect with one of these rects, then a different
orientation that does not intersect with one of these rects is chosen instead. Currently, the only rect added
here by UIKit when presenting the callout menu is the bounding rect of the on-screen keyboard, but after
<rdar://problem/48128337>, we now have a generalized mechanism for offering additional evasion rects before
UIKit presents the callout menu.

This patch adopts the mechanism introduced in <rdar://problem/48128337>, and introduces a heuristic for
determining the approximate location of controls in the page which might overlap the callout menu. This
heuristic works by hit-testing for clickable (but non-editable) nodes above the bounds of the selection, which
are additionally not hit-tested by advancing outwards from any of the other edges of the selection bounds.
Additionally, any hit-tested nodes whose bounding rects are very large (relative to the content view size) are
ignored (this deals with scenarios where the body or a large container element has a click handler). We then add
the bounding rects of each of the nodes that fit this criteria to the list of rects for UIKit to avoid when
presenting the system callout menu.

The result is that WebKit will, by default, avoid overlapping anything that looks like controls in the page when
showing a callout menu in editable content. In practice, this fixes overlapping controls on most websites that
roll their own context menu or toolbar in their rich text editor.

Test: editing/selection/ios/avoid-showing-callout-menu-over-controls.html

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView requestAutocorrectionRectsForString:withCompletionHandler:]):
(-[WKContentView requestRectsToEvadeForSelectionCommandsWithCompletionHandler:]):
(-[WKContentView requestAutocorrectionContextWithCompletionHandler:]):

Drive-by: handle null completion handler arguments more gracefully, by raising an NSException and bailing before
attempting to invoke a nil block.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::requestEvasionRectsAboveSelection):

See above for more detail.

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

(WebKit::WebPage::requestEvasionRectsAboveSelection):

Tools:

Add a couple of UIScriptController methods to make callout menu testing on iOS easier (see below).

  • DumpRenderTree/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::menuRect const):
(WTR::UIScriptController::isShowingMenu const):

  • TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
  • TestRunnerShared/UIScriptContext/UIScriptController.cpp:

(WTR::UIScriptController::menuRect const):

Add a function to query the bounds of the callout menu in content coordinates.

(WTR::UIScriptController::isShowingMenu const):

Add a function to query whether the callout menu is shown (i.e., has finished its appearance animation).

  • TestRunnerShared/UIScriptContext/UIScriptController.h:
  • WebKitTestRunner/cocoa/TestRunnerWKWebView.h:
  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::rectForMenuAction const):
(WTR::UIScriptController::menuRect const):
(WTR::UIScriptController::isShowingMenu const):
(WTR::findViewInHierarchyOfType): Deleted.

LayoutTests:

Add a test to ensure that the we dodge clickable elements when showing the callout bar.

  • editing/selection/ios/avoid-showing-callout-menu-over-controls-expected.txt: Added.
  • editing/selection/ios/avoid-showing-callout-menu-over-controls.html: Added.
  • resources/ui-helper.js:

(window.UIHelper.waitForMenuToShow.return.new.Promise):
(window.UIHelper.waitForMenuToShow):
(window.UIHelper.menuRect):
(window.UIHelper):

4:41 PM Changeset in webkit [241970] by aestes@apple.com
  • 2 edits in trunk/Source/WebCore

[iOS] Break a reference cycle between PreviewLoader and ResourceLoader
https://bugs.webkit.org/show_bug.cgi?id=194964
<rdar://problem/48279441>

Reviewed by Alex Christensen.

When a document's QuickLook preview is loaded, a reference cycle is created between
PreviewLoader and ResourceLoader. Break the cycle by clearing m_previewLoader in
ResourceLoader::releaseResources().

Fixes leaks detected by run-webkit-tests --leaks LayoutTests/quicklook.

  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::releaseResources):

4:32 PM WebKitGTK/2.24.x edited by Michael Catanzaro
(diff)
4:13 PM Changeset in webkit [241969] by Simon Fraser
  • 2 edits in trunk/Source/WebKit

Unreviewed build fix: need a WebCore:: namespace on ScrollingEventResult.

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h:
4:05 PM Changeset in webkit [241968] by rmorisset@apple.com
  • 3 edits
    1 add in trunk

DFGBytecodeParser should not declare that a node won't clobberExit if DFGFixupPhase can later declare it does clobberExit
https://bugs.webkit.org/show_bug.cgi?id=194953
<rdar://problem/47595253>

Reviewed by Saam Barati.

JSTests:

I could not make this work without the infinite loop, so I am using a watchdog to be able to use it as a regression test.

  • stress/has-indexed-property-with-worsening-array-mode.js: Added.

Source/JavaScriptCore:

For each node that
(a) may or may not clobberExit depending on their arrayMode
(b) and get their arrayMode from profiling information in DFGBytecodeParser
(c) and can have their arrayMode refined by DFGFixupPhase,
We must make sure to be conservative in the DFGBytecodeParser and treat it as if it unconditionnally clobbered the exit.
Otherwise we will hit a validation failure after fixup if the next node was marked ExitValid and exits to the same semantic origin.

The list of nodes that fit (a) is:

  • StringCharAt
  • HasIndexProperty
  • GetByVal
  • PutByValDirect
  • PutByVal
  • PutByValAlias
  • GetIndexedPropertyStorage

Out of these, the following also fit (b) and (c):

  • HasIndexedProperty
  • GetByVal
  • PutByValDirect
  • PutByVal

GetByVal already had "m_exitOK = false; GetByVal must be treated as if it clobbers exit state, since FixupPhase may make it generic."
So we just have to fix the other three the same way.

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::handlePutByVal):

3:41 PM Changeset in webkit [241967] by sihui_liu@apple.com
  • 5 edits in trunk/Source/WebCore

Crash under IDBServer::IDBConnectionToClient::identifier() const
https://bugs.webkit.org/show_bug.cgi?id=194843
<rdar://problem/48203102>

Reviewed by Geoffrey Garen.

UniqueIDBDatabase should ignore requests from connections that are already closed.

Tests are hard to create without some tricks on UniqueIDBDatabase so this fix is verified manually.
One test is created by adding delay to UniqueIDBDatabase::openBackingStore on the background thread to make sure
disconnection of web process happens before UniqueIDBDatabase::didOpenBackingStore, because didOpenBackingStore
may start a version change transaction and ask for identifier from the connection that is already gone.

  • Modules/indexeddb/server/IDBConnectionToClient.cpp:

(WebCore::IDBServer::IDBConnectionToClient::connectionToClientClosed):

  • Modules/indexeddb/server/IDBConnectionToClient.h:

(WebCore::IDBServer::IDBConnectionToClient::isClosed):

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::clearStalePendingOpenDBRequests):
(WebCore::IDBServer::UniqueIDBDatabase::handleDatabaseOperations):
(WebCore::IDBServer::UniqueIDBDatabase::operationAndTransactionTimerFired):

  • Modules/indexeddb/server/UniqueIDBDatabase.h:
2:59 PM Changeset in webkit [241966] by Alan Coon
  • 1 edit in branches/safari-608.1.5.1-branch/Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h

Unreviewed build fix.

2:59 PM Changeset in webkit [241965] by Alan Coon
  • 1 edit in branches/safari-608.1.5.1-branch/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h

Unreviewed build fix. rdar://problem/46793397

2:54 PM Changeset in webkit [241964] by rmorisset@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

B3ReduceStrength: missing peephole optimizations for binary operations
https://bugs.webkit.org/show_bug.cgi?id=194252

Reviewed by Saam Barati.

Adds several sets of optimizations for BitAnd, BitOr and BitXor.
Using BitAnd distributivity over BitOr and BitXor:

Turn any of these (for Op == BitOr
Op == BitXor):

Op(BitAnd(x1, x2), BitAnd(x1, x3))
Op(BitAnd(x2, x1), BitAnd(x1, x3))
Op(BitAnd(x1, x2), BitAnd(x3, x1))
Op(BitAnd(x2, x1), BitAnd(x3, x1))

Into this: BitAnd(Op(x2, x3), x1)
And any of these:

Op(BitAnd(x1, x2), x1)
Op(BitAnd(x2, x1), x1)
Op(x1, BitAnd(x1, x2))
Op(x1, BitAnd(x2, x1))

Into this: BitAnd(Op(x2, x1), x1)
This second set is equivalent to doing x1 => BitAnd(x1, x1), and then applying the first set.

Using de Morgan laws (we represent not as BitXor with allOnes):

BitAnd(BitXor(x1, allOnes), BitXor(x2, allOnes)) => BitXor(BitOr(x1, x2), allOnes)
BitOr(BitXor(x1, allOnes), BitXor(x2, allOnes) => BitXor(BitAnd(x1, x2), allOnes)
BitOr(BitXor(x, allOnes), c) => BitXor(BitAnd(x, ~c), allOnes)
BitAnd(BitXor(x, allOnes), c) => BitXor(BitOr(x, ~c), allOnes)

The latter two are equivalent to doing c => BitXor(~c, allOnes), and then applying the former two.

All of these transformations either reduce the number of operations (which we always do when possible), or bring the expression closer to having:

  • BitXor with all ones at the outermost
  • then BitAnd
  • then other BitXor
  • then BitOr at the innermost.

These transformations that don't directly reduce the number of operations are still useful for normalization (helping things like CSE), and also can enable
more optimizations (for example BitXor with all ones can easily cancel each other once they are all at the outermost level).

  • b3/B3ReduceStrength.cpp:
  • b3/testb3.cpp:

(JSC::B3::testBitAndNotNot):
(JSC::B3::testBitAndNotImm):
(JSC::B3::testBitOrAndAndArgs):
(JSC::B3::testBitOrAndSameArgs):
(JSC::B3::testBitOrNotNot):
(JSC::B3::testBitOrNotImm):
(JSC::B3::testBitXorAndAndArgs):
(JSC::B3::testBitXorAndSameArgs):
(JSC::B3::run):

1:17 PM Changeset in webkit [241963] by Chris Dumez
  • 7 edits in trunk

Regression(PSON) Unable to preview password-protected documents on iCloud.com
https://bugs.webkit.org/show_bug.cgi?id=194954
<rdar://problem/48127957>

Reviewed by Alex Christensen.

Source/WebKit:

Make sure the ProvisionalPageProxy forwards to the WebPageProxy the QuickLook-related
IPC on iOS.

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::didRequestPasswordForQuickLookDocumentInMainFrame):
(WebKit::ProvisionalPageProxy::didReceiveMessage):

  • UIProcess/ProvisionalPageProxy.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::didRequestPasswordForQuickLookDocumentInMainFrame):
(WebKit::WebPageProxy::didRequestPasswordForQuickLookDocumentInMainFrameShared):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

(-[PSONNavigationDelegate _webViewDidRequestPasswordForQuickLookDocument:]):
(-[PSONNavigationDelegate _webView:didStartLoadForQuickLookDocumentInMainFrameWithFileName:uti:]):
(-[PSONNavigationDelegate _webView:didFinishLoadForQuickLookDocumentInMainFrame:]):

12:44 PM Changeset in webkit [241962] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] Sandbox should allow mach lookups related to media capturing
https://bugs.webkit.org/show_bug.cgi?id=194951
<rdar://problem/48013875>

Reviewed by Brent Fulgham.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
12:31 PM Changeset in webkit [241961] by bshafiei@apple.com
  • 4 edits in branches/safari-608.1.5.1-branch

Revert r241606. rdar://problem/47884404

12:31 PM Changeset in webkit [241960] by bshafiei@apple.com
  • 2 edits in branches/safari-608.1.5.1-branch/Source/WebKit

Revert r241631. rdar://problem/48126255

12:31 PM Changeset in webkit [241959] by bshafiei@apple.com
  • 12 edits in branches/safari-608.1.5.1-branch/Source

Revert r241721. rdar://problem/47677951

12:31 PM Changeset in webkit [241958] by bshafiei@apple.com
  • 9 edits in branches/safari-608.1.5.1-branch

Revert r241752. rdar://problem/48055151

12:31 PM Changeset in webkit [241957] by bshafiei@apple.com
  • 3 edits in branches/safari-608.1.5.1-branch/Source/WebKit

Cherry-pick r241584. rdar://problem/46793397

Unreviewed. Fix GTK+ build after r241556

I guess this is due to unified builds after a new file being added in r241556.

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2019-02-15

  • UIProcess/API/C/WKAuthenticationDecisionListener.cpp:
  • UIProcess/API/C/WKPage.cpp:

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

12:20 PM Changeset in webkit [241956] by ysuzuki@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] putNonEnumerable in JSWrapperMap is too costly
https://bugs.webkit.org/show_bug.cgi?id=194935

Reviewed by Mark Lam.

When we convert Objective-C blocks to JS objects, we need to set up a corresponding function object correctly.
During this allocation, we call [JSValue defineProperty:descriptor] to connect a "prototype" object and "constructor" object.
The problem is that this API has a particularly costly implementation:

_context globalObject][@"Object"] invokeMethod:@"defineProperty" withArguments:@[ self, key, descriptor ?;

This wraps each JS objects appear in this code with Objective-C wrapper. And we convert a NSDictionary to JSObject, which
has "writable", "enumerable", "configurable", "value" fields, and call the "defineProperty" JS function through Objective-C wrapper.
This allocates many Objective-C wrappers and JS objects for descriptors. Since JSC has a direct C++ API "defineOwnProperty", we should
bypass these Objective-C APIs and call JSC's code directly.

This patch changes putNonEnumerable implementation, from calling [JSValue defineProperty:descriptor] to calling JSC C++ code directly.
We do not change [JSValue defineProperty:descriptor] implementation for now because of two reasons. (1) This is not used in our benchmarks
except for this (converting an Objective-C block to a JS object) one path. And (2) even if we were to re-write [JSValue defineProperty:descriptor]
to be more optimized, we would still want to call the JSC C++ version of defineProperty directly here to avoid NSDictionary allocation for a descriptor.

  • API/APIUtils.h:

(setException):

  • API/JSWrapperMap.mm:

(putNonEnumerable):
(copyMethodsToObject):
(-[JSObjCClassInfo allocateConstructorAndPrototypeInContext:]):
(-[JSObjCClassInfo wrapperForObject:inContext:]):

11:15 AM Changeset in webkit [241955] by ysuzuki@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Unreviewed, build fix after r241954
https://bugs.webkit.org/show_bug.cgi?id=194939

Renaming setCanAccessHeap was incomplete.

  • runtime/SmallStrings.cpp:

(JSC::SmallStrings::initializeCommonStrings):

  • runtime/VM.cpp:

(JSC::VM::~VM):

11:04 AM Changeset in webkit [241954] by ysuzuki@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

[JSC] SmallStringsStorage is unnecessary
https://bugs.webkit.org/show_bug.cgi?id=194939

Reviewed by Mark Lam.

SmallStrings hold common small JSStrings. Their underlying StringImpl is also held by SmallStringsStorage.
But it is duplicate since we can get StringImpl from small JSStrings. This patch removes SmallStringsStorage,
and get StringImpls from JSStrings if necessary.

We also add m_canAccessHeap flag to SmallStrings. At the time of VM destruction, JSStrings are destroyed when
VM's Heap is finalized. We must not touch JSStrings before VM's heap (and JSStrings in SmallStrings) is initialized,
and after VM's Heap is destroyed. We add this m_canAccessHeap flag to allow users to get StringImpl during the
this sensitive period. If m_canAccessHeap is false, we get StringImpl from AtomicStringImpl::add.

  • runtime/SmallStrings.cpp:

(JSC::SmallStrings::initializeCommonStrings):
(JSC::SmallStrings::singleCharacterStringRep):
(JSC::SmallStringsStorage::rep): Deleted.
(JSC::SmallStringsStorage::SmallStringsStorage): Deleted.
(JSC::SmallStrings::createSingleCharacterString): Deleted.

  • runtime/SmallStrings.h:

(JSC::SmallStrings::setCanAccessHeap):

  • runtime/VM.cpp:

(JSC::VM::VM):
(JSC::VM::~VM):

11:01 AM WebKitGTK/2.24.x edited by Michael Catanzaro
(diff)
10:46 AM Changeset in webkit [241953] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Remove unused Timeline record selection code path
https://bugs.webkit.org/show_bug.cgi?id=194931

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2019-02-22
Reviewed by Devin Rousso.

  • UserInterface/Views/TimelineOverview.js:

(WI.TimelineOverview):
(WI.TimelineOverview.prototype.userSelectedRecord): Deleted.

  • UserInterface/Views/TimelineRecordingContentView.js:

(WI.TimelineRecordingContentView):
(WI.TimelineRecordingContentView.prototype.timelineOverviewUserSelectedRecord): Deleted.

  • UserInterface/Views/TimelineView.js:

(WI.TimelineView.prototype.userSelectedRecordFromOverview): Deleted.

10:46 AM Changeset in webkit [241952] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

[GTK] Navigation gesture improvements
https://bugs.webkit.org/show_bug.cgi?id=194943

Patch by Alexander Mikhaylenko <exalm7659@gmail.com> on 2019-02-22
Reviewed by Michael Catanzaro.

Cancel the gesture if progress is less than 0.5 and velocity is not high enough.

Allow to continue the gesture during animation. Introduce finished state to be used
when showing snapshot after the animation ends.

Fix duration calculation, also slow it down so that the initial velocity matches
what it was during the gesture.

  • UIProcess/ViewGestureController.h: Add shouldCancel() and State::Finishing to SwipeProgressTracker.
  • UIProcess/gtk/ViewGestureControllerGtk.cpp:

(WebKit::ViewGestureController::SwipeProgressTracker::handleEvent):
Fix velocity calculation, allow scrolling during State::Animating.
(WebKit::ViewGestureController::SwipeProgressTracker::shouldCancel): Added.
(WebKit::ViewGestureController::SwipeProgressTracker::startAnimation): Use shouldCancel() and fix duration calculation.
(WebKit::ViewGestureController::SwipeProgressTracker::endAnimation): Set state to State::Finishing when the animation ends.

10:42 AM Changeset in webkit [241951] by Alan Coon
  • 1 edit in branches/safari-607-branch/Source/WebCore/page/ios/EventHandlerIOS.mm

Unreviewed build fix. rdar://problem/47289624

10:24 AM Changeset in webkit [241950] by Chris Dumez
  • 6 edits in trunk

REGRESSION(PSON) Scroll position is sometimes not restored on history navigation
https://bugs.webkit.org/show_bug.cgi?id=194924
<rdar://problem/48216125>

Reviewed by Geoffrey Garen.

Source/WebKit:

When process-swapping, we would create a new WebPage in the new process, which would
call restoreSessionInternal() to restore the HistoryItems based on the UIProcess's
backforward list. The issue is that this session restoring would send HistoryItem
updates back to the UIProcess. Without PSON, this would be unnecessary but harmless.
With PSON though, this may end up overwriting values set by the previous process,
such as the scroll position.

Address the issue by temporarily disabling the HistoryItem update notifications to
the UIProcess while restoring a session.

  • UIProcess/API/Cocoa/WKBackForwardListItem.mm:

(-[WKBackForwardListItem _scrollPosition]):

  • UIProcess/API/Cocoa/WKBackForwardListItemPrivate.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::restoreSessionInternal):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
9:09 AM Changeset in webkit [241949] by Wenson Hsieh
  • 11 edits
    1 move
    3 adds
    1 delete in trunk

Input type "formatSetInlineTextDirection" is dispatched when changing paragraph-level text direction
https://bugs.webkit.org/show_bug.cgi?id=194703
<rdar://problem/48111775>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Currently, when changing text direction, WebKit always sends input events of type formatSetInlineTextDirection,
even when changing paragraph text direction. Instead, we should be emitting formatSetBlockTextDirection in this
scenario. This is problematic when using the context menus on macOS to change writing direction, since changing
"Selection Direction" is currently indistinguishable from changing "Paragraph Direction".

To fix this, we split EditAction::SetWritingDirection into EditAction::SetInlineWritingDirection and
EditAction::SetBlockWritingDirection, which emit inline and block text direction input events, respectively.

Tests: fast/events/before-input-events-prevent-block-text-direction.html

fast/events/before-input-events-prevent-inline-text-direction.html

  • editing/CompositeEditCommand.cpp:

(WebCore::CompositeEditCommand::apply):

  • editing/EditAction.cpp:

(WebCore::undoRedoLabel):

  • editing/EditAction.h:
  • editing/EditCommand.cpp:

(WebCore::inputTypeNameForEditingAction):

  • editing/Editor.cpp:

(WebCore::inputEventDataForEditingStyleAndAction):
(WebCore::Editor::setBaseWritingDirection):

  • editing/EditorCommand.cpp:

(WebCore::executeMakeTextWritingDirectionLeftToRight):
(WebCore::executeMakeTextWritingDirectionNatural):
(WebCore::executeMakeTextWritingDirectionRightToLeft):

Source/WebKitLegacy/win:

  • WebCoreSupport/WebEditorClient.cpp:

(undoNameForEditAction):

LayoutTests:

Rebaseline some existing tests to expect input events of type "formatSetBlockTextDirection" instead of
"formatSetInlineTextDirection" when changing paragraph text direction; additionally, add a new layout test that
changes the inline text direction in some Bidi text, and verify that "formatSetInlineTextDirection" is emitted
in this scenario, and that calling preventDefault() in the beforeinput event handler causes no change to be
made.

  • editing/input/ios/rtl-keyboard-input-on-focus-expected.txt:
  • fast/events/before-input-events-prevent-block-text-direction-expected.txt: Added.
  • fast/events/before-input-events-prevent-block-text-direction.html: Renamed from LayoutTests/fast/events/before-input-events-prevent-text-direction.html.
  • fast/events/before-input-events-prevent-inline-text-direction-expected.txt: Added.
  • fast/events/before-input-events-prevent-inline-text-direction.html: Added.
  • fast/events/before-input-events-prevent-text-direction-expected.txt: Removed.
8:48 AM Changeset in webkit [241948] by Chris Dumez
  • 2 edits in trunk/Tools

Unreviewed, disable API test added in r241928 on iOS.

The cache is not enabled on devices with less than 3GB of RAM.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
8:31 AM Changeset in webkit [241947] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

Remove stripLeadingAndTrailingWhitespace from MathMLElement.cpp
https://bugs.webkit.org/show_bug.cgi?id=160172

Patch by Rob Buis <rbuis@igalia.com> on 2019-02-22
Reviewed by Frédéric Wang.

Remove stripLeadingAndTrailingWhitespace and use stripLeadingAndTrailingHTTPSpaces
from HTTPParsers instead.

No new tests, already covered by MathML tests.

  • mathml/MathMLElement.cpp:

(WebCore::MathMLElement::stripLeadingAndTrailingWhitespace): Deleted.

  • mathml/MathMLElement.h:
  • mathml/MathMLPresentationElement.cpp:

(WebCore::MathMLPresentationElement::parseMathMLLength):

  • mathml/MathMLTokenElement.cpp:

(WebCore::MathMLTokenElement::convertToSingleCodePoint):

6:28 AM WebKitGTK/2.22.x edited by Adrian Perez de Castro
(diff)
6:28 AM Changeset in webkit [241946] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.22/Source/WebCore

Merged r241402 - [FreeType] Unable to render some Hebrew characters
https://bugs.webkit.org/show_bug.cgi?id=194498

Reviewed by Michael Catanzaro.

We are failing to find a font for some of the combining character sequences because normalization is failing due
to overflow error. In case of overflow, normalize returns the required length for the normalized characters, so
we should handle that case to resize the output buffer and try again.

  • platform/graphics/cairo/FontCairoHarfbuzzNG.cpp:

(WebCore::FontCascade::fontForCombiningCharacterSequence const):

5:52 AM Changeset in webkit [241945] by eric.carlson@apple.com
  • 6 edits in trunk/Source/WebCore

Update some media logging
https://bugs.webkit.org/show_bug.cgi?id=194915

Reviewed by Jer Noble.

No new tests, no functional change.

  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::evictCodedFrames):
(WebCore::SourceBuffer::provideMediaData):
(WebCore::SourceBuffer::trySignalAllSamplesInTrackEnqueued):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::checkPlaybackTargetCompatablity):
(WebCore::HTMLMediaElement::loadResource):
(WebCore::HTMLMediaElement::updateActiveTextTrackCues):
(WebCore::HTMLMediaElement::canTransitionFromAutoplayToPlay const):
(WebCore::HTMLMediaElement::seekTask):
(WebCore::HTMLMediaElement::playInternal):
(WebCore::HTMLMediaElement::pauseInternal):
(WebCore::HTMLMediaElement::setLoop):
(WebCore::HTMLMediaElement::setControls):
(WebCore::HTMLMediaElement::sourceWasRemoved):

  • html/MediaElementSession.cpp:

(WebCore::convertEnumerationToString):

  • html/MediaElementSession.h:

(WTF::LogArgument<WebCore::MediaPlaybackDenialReason>::toString):

  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:

(WebCore::SourceBufferPrivateAVFObjC::enqueueSample):

5:43 AM WebKitGTK/2.22.x edited by Adrian Perez de Castro
(diff)
5:43 AM Changeset in webkit [241944] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.22/Source/JavaScriptCore

Merged r241753 - Fix DFG doesGC() for CompareEq/Less/LessEq/Greater/GreaterEq and CompareStrictEq nodes.
https://bugs.webkit.org/show_bug.cgi?id=194800
<rdar://problem/48183773>

Reviewed by Yusuke Suzuki.

Fix doesGC() for the following nodes:

CompareEq:
CompareLess:
CompareLessEq:
CompareGreater:
CompareGreaterEq:
CompareStrictEq:

Only return false (i.e. does not GC) for child node use kinds that have
been vetted to not do anything that can GC. For all other use kinds
(including StringUse and BigIntUse), we return true (i.e. does GC).

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

5:42 AM WebKitGTK/2.22.x edited by Adrian Perez de Castro
(diff)
5:35 AM Changeset in webkit [241943] by Adrian Perez de Castro
  • 1 edit in releases/WebKitGTK/webkit-2.24/Source/JavaScriptCore/ChangeLog

Merged r241753 - Fix DFG doesGC() for CompareEq/Less/LessEq/Greater/GreaterEq and CompareStrictEq nodes.
https://bugs.webkit.org/show_bug.cgi?id=194800
<rdar://problem/48183773>

Reviewed by Yusuke Suzuki.

Fix doesGC() for the following nodes:

CompareEq:
CompareLess:
CompareLessEq:
CompareGreater:
CompareGreaterEq:
CompareStrictEq:

Only return false (i.e. does not GC) for child node use kinds that have
been vetted to not do anything that can GC. For all other use kinds
(including StringUse and BigIntUse), we return true (i.e. does GC).

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

2:42 AM Changeset in webkit [241942] by commit-queue@webkit.org
  • 4 edits in trunk

Fix unitless usage of mathsize
https://bugs.webkit.org/show_bug.cgi?id=194940

Patch by Rob Buis <rbuis@igalia.com> on 2019-02-22
Reviewed by Frédéric Wang.

Source/WebCore:

Convert unitless lengths to percentage values to correct the computed
font size.

  • mathml/MathMLElement.cpp:

(WebCore::convertToPercentageIfNeeded):
(WebCore::MathMLElement::collectStyleForPresentationAttribute):

LayoutTests:

Tests lengths-1.html and length-3.html now pass.

1:43 AM Changeset in webkit [241941] by Adrian Perez de Castro
  • 4 edits in releases/WebKitGTK/webkit-2.24/Source/WebKit

Merged r241936 - [WPE][GTK] No API documentation generated for WebKitUserContentFilterStore
https://bugs.webkit.org/show_bug.cgi?id=194908

Reviewed by Carlos Garcia Campos.

  • UIProcess/API/gtk/docs/webkit2gtk-4.0.types: Add entry for webkit_user_content_filter_store_get_type().
  • UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add entry for WebKitUserContentFilterStore.
  • UIProcess/API/wpe/docs/wpe-docs.sgml: Ditto.
1:43 AM Changeset in webkit [241940] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.24/Source/WebKit

Merged r241935 - wpewebkit-2.23.90 Failing to build on Fedora
https://bugs.webkit.org/show_bug.cgi?id=194922

Unreviewed. Fix path to WebKitUserContentFilterStore.h in WPE_API_INSTALLED_HEADERS.

  • PlatformWPE.cmake:
1:18 AM Changeset in webkit [241939] by Adrian Perez de Castro
  • 2 edits in trunk

Unreviewed. Bump version numbers

  • Source/cmake/OptionsWPE.cmake:
1:08 AM Changeset in webkit [241938] by Tadeu Zagallo
  • 5 edits in trunk/Source/JavaScriptCore

Cache CompactVariableMap::Handle instead of VariableEnvironment for UnlinkedFunctionExecutable
https://bugs.webkit.org/show_bug.cgi?id=194706

Reviewed by Saam Barati.

In https://bugs.webkit.org/show_bug.cgi?id=194583 we started using a
CompactVariableMap::Handle instead of VariableEnvironment for
UnlinkedFunctionExecutables, but we were creating the full environment
to encode the executable in the bytecode cache. This patch changes it so
that we cache the handle instead of the environment. This avoids duplicating
the VariableEnvironment whenever we have to cache two handles that point
to the environment.

  • bytecode/UnlinkedFunctionExecutable.h:
  • parser/VariableEnvironment.cpp:

(JSC::CompactVariableMap::get):

  • parser/VariableEnvironment.h:
  • runtime/CachedTypes.cpp:

(JSC::CachedCompactVariableEnvironment::encode):
(JSC::CachedCompactVariableEnvironment::decode const):
(JSC::CachedCompactVariableMapHandle::encode):
(JSC::CachedCompactVariableMapHandle::decode const):
(JSC::CachedFunctionExecutable::encode):
(JSC::CachedFunctionExecutable::decode const):
(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):

Note: See TracTimeline for information about the timeline view.