Timeline
Jul 23, 2018:
- 11:44 PM Changeset in webkit [234132] by
-
- 2 edits in trunk/LayoutTests
The test webanimations/accessing-current-time-after-finished-css-animation-target-removal.html is failing on Windows.
https://bugs.webkit.org/show_bug.cgi?id=187943
Unreviewed test gardening.
- platform/win/TestExpectations:
- 9:50 PM Changeset in webkit [234131] by
-
- 6 edits4 adds in trunk
[css-grid] Add support for calc() in gutter properties
https://bugs.webkit.org/show_bug.cgi?id=187902
Reviewed by Simon Fraser.
LayoutTests/imported/w3c:
Two new WPT tests are imported to verify the expected behavior.
- web-platform-tests/css/css-grid/abspos/grid-positioned-items-gaps-002-expected.txt: Added.
- web-platform-tests/css/css-grid/abspos/grid-positioned-items-gaps-002-rtl-expected.txt: Added.
- web-platform-tests/css/css-grid/abspos/grid-positioned-items-gaps-002-rtl.html: Added.
- web-platform-tests/css/css-grid/abspos/grid-positioned-items-gaps-002.html: Added.
- web-platform-tests/css/css-grid/abspos/w3c-import.log:
Source/WebCore:
The parsing was already accepting calc() in grid row and column gaps,
however the code was not taking that into account properly.
If the calc() had a percentage it was ignored and that's wrong.
The fix is just a change in the ceck at RenderGrid::availableSpaceForGutters().
Tests: imported/w3c/web-platform-tests/css/css-grid/abspos/grid-positioned-items-gaps-002-rtl.html
imported/w3c/web-platform-tests/css/css-grid/abspos/grid-positioned-items-gaps-002.html
imported/w3c/web-platform-tests/css/css-grid/alignment/grid-gutters-011.html
imported/w3c/web-platform-tests/css/css-grid/alignment/grid-gutters-012.html
- rendering/RenderGrid.cpp:
(WebCore::RenderGrid::availableSpaceForGutters const):
LayoutTests:
Two tests are now passing thanks to this change.
- 7:18 PM Changeset in webkit [234130] by
-
- 2 edits in trunk/Tools
webkitpy.port.server_process_unittest.TestServerProcess.test_basic failed on Windows Python
https://bugs.webkit.org/show_bug.cgi?id=187581
Reviewed by Daniel Bates.
There are two failures in this test case:
- proc.poll() doesn't return 0.
- stderr is not output.
For failure #1, this is expected. the process should not exit at
the time. proc.poll() should return None because the process is
still alive.
This change added a new test to check proc.poll() becomes 0 after
the process successfully exits.
For failure #2, stderr is not flushed even though stdout is
flushed. This change uses '-u' command switch to force stdin,
stdout and stderr to be totally unbuffered.
- Scripts/webkitpy/port/server_process_unittest.py:
(TestServerProcess.test_basic): Added -u command switch. Do not
flush stdout. Removed the special condition for Windows. Add a new
test to check proc.poll() returns 0.
(TestServerProcess.test_process_crashing): Added -u command
switch. Do not flush stdout.
- 6:35 PM Changeset in webkit [234129] by
-
- 4 edits in trunk/Source/WebKit
[WinCairo] Add implementation for setting cursors
https://bugs.webkit.org/show_bug.cgi?id=187868
Reviewed by Fujii Hironori.
- UIProcess/win/PageClientImpl.cpp:
(WebKit::PageClientImpl::setCursor): Set cursor on the webview
- UIProcess/win/WebView.cpp:
(WebKit::WebView::setCursor): Add implementation to set the
web cursor to update the Windows cursor
- UIProcess/win/WebView.h:
- 6:32 PM Changeset in webkit [234128] by
-
- 3 edits1 add in trunk
need to didFoldClobberWorld when we constant fold GetByVal
https://bugs.webkit.org/show_bug.cgi?id=187917
<rdar://problem/42505095>
Reviewed by Yusuke Suzuki.
JSTests:
- stress/get-by-val-fold-did-clobber-world.js: Added.
(f_443):
Source/JavaScriptCore:
- dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
- 6:05 PM Changeset in webkit [234127] by
-
- 18 edits2 adds in trunk
[INTL] Language tags are not canonicalized
https://bugs.webkit.org/show_bug.cgi?id=185836
Patch by Andy VanWagoner <andy@vanwagoner.family> on 2018-07-23
Reviewed by Keith Miller.
JSTests:
Remove expected failures that have been fixed.
- test262/expectations.yaml:
Source/JavaScriptCore:
Canonicalize language tags, replacing deprecated tag parts with the
preferred values. Remove broken support for algorithmic numbering systems,
that can cause an error in icu, and are not supported in other engines.
Generate the lookup functions from the language-subtag-registry.
Also initialize the UNumberFormat in initializeNumberFormat so any
failures are thrown immediately instead of failing to format later.
- CMakeLists.txt:
- DerivedSources.make:
- JavaScriptCore.xcodeproj/project.pbxproj:
- Scripts/generateIntlCanonicalizeLanguage.py: Added.
- runtime/IntlDateTimeFormat.cpp:
(JSC::IntlDateTimeFormat::initializeDateTimeFormat):
- runtime/IntlNumberFormat.cpp:
(JSC::IntlNumberFormat::initializeNumberFormat):
(JSC::IntlNumberFormat::formatNumber):
(JSC::IntlNumberFormat::formatToParts):
(JSC::IntlNumberFormat::createNumberFormat): Deleted.
- runtime/IntlNumberFormat.h:
- runtime/IntlObject.cpp:
(JSC::intlNumberOption):
(JSC::intlDefaultNumberOption):
(JSC::preferredLanguage):
(JSC::preferredRegion):
(JSC::canonicalLangTag):
(JSC::canonicalizeLanguageTag):
(JSC::defaultLocale):
(JSC::removeUnicodeLocaleExtension):
(JSC::numberingSystemsForLocale):
(JSC::grandfatheredLangTag): Deleted.
- runtime/IntlObject.h:
- runtime/IntlPluralRules.cpp:
(JSC::IntlPluralRules::initializePluralRules):
- runtime/JSGlobalObject.cpp:
(JSC::addMissingScriptLocales):
(JSC::JSGlobalObject::intlCollatorAvailableLocales):
(JSC::JSGlobalObject::intlDateTimeFormatAvailableLocales):
(JSC::JSGlobalObject::intlNumberFormatAvailableLocales):
(JSC::JSGlobalObject::intlPluralRulesAvailableLocales):
- ucd/language-subtag-registry.txt: Added.
LayoutTests:
Use gregory instead of gregorian, matching test262/intl402 and other engines.
Remove tests for algorithmic numbering systems. Add NumberFormat numbering system tests.
- js/intl-datetimeformat-expected.txt:
- js/intl-numberformat-expected.txt:
- js/script-tests/intl-datetimeformat.js:
- js/script-tests/intl-numberformat.js:
(string_appeared_here):
- 5:42 PM Changeset in webkit [234126] by
-
- 2 edits in trunk/Source/WebCore
Remove extraneous #endif in html.css
https://bugs.webkit.org/show_bug.cgi?id=187934
Patch by Aditya Keerthi <Aditya Keerthi> on 2018-07-23
Reviewed by Tim Horton.
- css/html.css: Remove extraneous #endif.
- 5:35 PM Changeset in webkit [234125] by
-
- 9 edits in trunk
CrashTracer: com.apple.WebKit.Storage at WebCore: WebCore::encodeKey
https://bugs.webkit.org/show_bug.cgi?id=187927
LayoutTests/imported/w3c:
<rdar://problem/42516426>
Reviewed by Chris Dumez.
- web-platform-tests/IndexedDB/key-conversion-exceptions-expected.txt:
Source/WebCore:
Reviewed by Chris Dumez.
IDBKeyData is valid only when each key of it is valid.
Test: LayoutTests/storage/indexeddb/index-multientry.html
- Modules/indexeddb/IDBKeyData.cpp:
(WebCore::IDBKeyData::isValid const):
- Modules/indexeddb/IDBKeyData.h:
(WebCore::IDBKeyData::isValid const): Deleted.
LayoutTests:
<rdar://problem/42516426>
Reviewed by Chris Dumez.
Add a new test case in existing test file to cover the crash case and update the expecation accordingly.
- storage/indexeddb/index-multientry-expected.txt:
- storage/indexeddb/index-multientry-private-expected.txt:
- storage/indexeddb/resources/index-multientry.js:
(addData):
- 5:27 PM Changeset in webkit [234124] by
-
- 3 edits in trunk/Source/WebKit
Crash when loadViewIfRequired called while WKFullScreenViewController is being deallocated.
https://bugs.webkit.org/show_bug.cgi?id=187920
rdar://problem/41324023
Patch by Jeremy Jones <jeremyj@apple.com> on 2018-07-23
Reviewed by Eric Carlson.
Clear dangling weak-ref.
Prevent async playback state calls from instantiating the interface.
Release WKFullScreenViewController when it is no longer needed.
- UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
(-[WKFullScreenViewController dealloc]):
(-[WKFullScreenViewController setPlaying:]):
(-[WKFullScreenViewController setAnimating:]):
- UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
(-[WKFullScreenWindowController _completedExitFullScreen]):
- 5:09 PM Changeset in webkit [234123] by
-
- 3 edits in trunk/Source
Try to fix the build.
- UIProcess/mac/ServicesController.mm:
(WebKit::hasCompatibleServicesForItems):
- 5:01 PM Changeset in webkit [234122] by
-
- 5 edits in trunk
WTF::StringView::split should have an allowEmptyEntries flag
https://bugs.webkit.org/show_bug.cgi?id=187864
Reviewed by Konstantin Tokarev.
Source/WTF:
- wtf/text/StringView.cpp:
(WTF::StringView::SplitResult::Iterator::findNextSubstring):
(WTF::StringView::SplitResult::Iterator::operator++):
- wtf/text/StringView.h:
(WTF::StringView::split const):
(WTF::StringView::SplitResult::SplitResult):
(WTF::StringView::SplitResult::Iterator::operator== const):
We can't mimic String::split completely, because this one's iterator-based --
achieve desired behavior by adding m_allowEmptyEntries to SplitResult and m_isDone to its Iterator.
(The latter keeps us from hitting begin() == end() prematurely on a final empty entry.)
Tools:
- TestWebKitAPI/Tests/WTF/StringView.cpp: Add test.
- 4:44 PM Changeset in webkit [234121] by
-
- 24 edits6 adds in trunk
We should cache the compiled sandbox profile in a data vault
https://bugs.webkit.org/show_bug.cgi?id=184991
Patch by Ben Richards <benton_richards@apple.com> on 2018-07-23
Reviewed by Ryosuke Niwa.
Source/WebCore:
Added functionality to FileHandle so that it can lock a file while open.
Added a function to FileSystem to delete non empty directories.
- platform/FileHandle.cpp:
(WebCore::FileHandle::FileHandle):
(WebCore::FileHandle::open):
(WebCore::FileHandle::close):
- platform/FileHandle.h:
- platform/FileSystem.h:
- platform/cocoa/FileSystemCocoa.mm:
(WebCore::FileSystem::deleteNonEmptyDirectory):
Source/WebKit:
This patch changes a few things (note: data vaults and sandbox entitlements are only used in internal builds):
(1) Instead of compiling a sandbox every time a process is launched, processes now look for a cached sandbox
in a process specific data vault on macOS platforms. (ChildProcessMac.mm)
(2) If a valid cached sandbox is not found, a process will create the data vault (or ensure that it exists),
compile a sandbox, and cache it.
(3) In order to create process specific data vaults, each process now has their own <process name>-OSX-sandbox.entitlements
file which contains an entitlement with a process specific "storage class" which ensures that each process
can only ever access its own data vault. (See the article on confluence "Data Vaults and Restricted Files" for more info)
(4) The sandbox entitlements file for the Network, WebContent and Plugin services are loaded dynamically
through Scripts/<process name>-process-entitlements.sh which is triggered in a new build phase for each service.
The Storage process sandbox entitlements are loaded directly in Configurations/StorageService.xcconfig.
The reason that the sandbox entitlements are applied dynamically is so that these sandbox entitlements
are only applied when WK_USE_RESTRICTED_ENTITLEMENTS is YES. This means that open source builds will still work.
- Configurations/Network-OSX-sandbox.entitlements: Added.
- Configurations/Plugin-OSX-sandbox.entitlements: Added.
- Configurations/Storage-OSX-sandbox.entitlements: Added.
- Configurations/StorageService.xcconfig:
- Configurations/WebContent-OSX-sandbox.entitlements: Added.
- Configurations/WebKit.xcconfig:
- NetworkProcess/NetworkProcess.h:
- PluginProcess/PluginProcess.h:
- Scripts/process-network-entitlements.sh: Added.
- Scripts/process-plugin-entitlements.sh: Added.
- Scripts/process-webcontent-entitlements.sh:
- Shared/ChildProcess.h:
- Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h:
(WebKit::XPCServiceInitializer):
- Shared/SandboxInitializationParameters.h:
(WebKit::SandboxInitializationParameters::setOverrideSandboxProfilePath):
(WebKit::SandboxInitializationParameters::overrideSandboxProfilePath const):
(WebKit::SandboxInitializationParameters::setSandboxProfile):
(WebKit::SandboxInitializationParameters::sandboxProfile const):
(): Deleted.
- Shared/mac/ChildProcessMac.mm:
(WebKit::SandboxProfileDeleter::operator()):
(WebKit::SandboxParametersDeleter::operator()):
(WebKit::SandboxInfo::SandboxInfo):
(WebKit::fileContents):
(WebKit::processStorageClass):
(WebKit::setAndSerializeSandboxParameters):
(WebKit::getUserCacheDirectory):
(WebKit::sandboxDataVaultParentDirectory):
(WebKit::sandboxDirectory):
(WebKit::sandboxFilePath):
(WebKit::ensureSandboxCacheDirectory):
(WebKit::writeSandboxDataToCacheFile):
(WebKit::compileAndCacheSandboxProfile):
(WebKit::tryApplyCachedSandbox):
(WebKit::webKit2Bundle):
(WebKit::sandboxProfilePath):
(WebKit::compileAndApplySandboxSlowCase):
(WebKit::applySandbox):
(WebKit::initializeSandboxParameters):
(WebKit::ChildProcess::initializeSandbox):
- Shared/mac/SandboxInitialiationParametersMac.mm:
(WebKit::SandboxInitializationParameters::SandboxInitializationParameters):
- StorageProcess/StorageProcess.h:
- WebKit.xcodeproj/project.pbxproj:
- WebProcess/WebProcess.h:
Source/WTF:
Added trace points for sandbox initialization and exposed functions needed for sandbox caching
- wtf/SystemTracing.h:
- wtf/spi/darwin/SandboxSPI.h:
Tools:
Added trace points for sandbox initialization
- Tracing/SystemTracePoints.plist:
- 4:27 PM Changeset in webkit [234120] by
-
- 5 edits in trunk/Source
Creating and loading content in a WKWebView triggers Main Thread Checker warnings under ServicesController
https://bugs.webkit.org/show_bug.cgi?id=186963
<rdar://problem/41393682>
Reviewed by Timothy Hatcher.
Source/WebCore/PAL:
- pal/spi/mac/NSSharingServiceSPI.h:
Add the new SPI.
Source/WebKit:
- UIProcess/mac/ServicesController.h:
- UIProcess/mac/ServicesController.mm:
(WebKit::hasCompatibleServicesForItems):
(WebKit::ServicesController::refreshExistingServices):
Adopt async ShareKit SPI that is actually thread-safe instead of the not-quite-safe
synchronous API. Request all three sets of services immediately, and dispatch
to the Web Content processes when all three have returned.
- 4:25 PM Changeset in webkit [234119] by
-
- 2 edits in trunk/LayoutTests
[Curl] Test gardening
https://bugs.webkit.org/show_bug.cgi?id=187932
Unreviewed test gardening.
Enable Secure WebSocket tests.
- platform/wincairo/TestExpectations:
- 4:20 PM Changeset in webkit [234118] by
-
- 39 edits in trunk/LayoutTests
Enable WebGL2 glsl3 tests with expected FAIL results
https://bugs.webkit.org/show_bug.cgi?id=187929
<rdar://problem/42516498>
Patch by Justin Fan <Justin Fan> on 2018-07-23
Reviewed by Dean Jackson.
Before enabling glsl ES 3 for WebGL2 work, enable corresponding webgl2 conformance tests.
- TestExpectations:
- webgl/2.0.0/conformance2/glsl3/array-as-return-value-expected.txt:
- webgl/2.0.0/conformance2/glsl3/array-assign-constructor-expected.txt:
- webgl/2.0.0/conformance2/glsl3/array-assign-expected.txt:
- webgl/2.0.0/conformance2/glsl3/array-complex-indexing-expected.txt:
- webgl/2.0.0/conformance2/glsl3/array-element-increment-expected.txt:
- webgl/2.0.0/conformance2/glsl3/array-equality-expected.txt:
- webgl/2.0.0/conformance2/glsl3/array-in-complex-expression-expected.txt:
- webgl/2.0.0/conformance2/glsl3/attrib-location-length-limits-expected.txt:
- webgl/2.0.0/conformance2/glsl3/bool-type-cast-bug-uint-ivec-uvec-expected.txt:
- webgl/2.0.0/conformance2/glsl3/compare-structs-containing-arrays-expected.txt:
- webgl/2.0.0/conformance2/glsl3/compound-assignment-type-combination-expected.txt:
- webgl/2.0.0/conformance2/glsl3/const-array-init-expected.txt:
- webgl/2.0.0/conformance2/glsl3/forbidden-operators-expected.txt:
- webgl/2.0.0/conformance2/glsl3/frag-depth-expected.txt:
- webgl/2.0.0/conformance2/glsl3/invalid-default-precision-expected.txt:
- webgl/2.0.0/conformance2/glsl3/invalid-invariant-expected.txt:
- webgl/2.0.0/conformance2/glsl3/loops-with-side-effects-expected.txt:
- webgl/2.0.0/conformance2/glsl3/misplaced-version-directive-expected.txt:
- webgl/2.0.0/conformance2/glsl3/no-attribute-vertex-shader-expected.txt:
- webgl/2.0.0/conformance2/glsl3/sampler-no-precision-expected.txt:
- webgl/2.0.0/conformance2/glsl3/sequence-operator-returns-non-constant-expected.txt:
- webgl/2.0.0/conformance2/glsl3/shader-linking-expected.txt:
- webgl/2.0.0/conformance2/glsl3/shader-with-1024-character-define-expected.txt:
- webgl/2.0.0/conformance2/glsl3/shader-with-1024-character-identifier.frag-expected.txt:
- webgl/2.0.0/conformance2/glsl3/shader-with-invalid-characters-expected.txt:
- webgl/2.0.0/conformance2/glsl3/shader-with-mis-matching-uniform-block-expected.txt:
- webgl/2.0.0/conformance2/glsl3/short-circuiting-in-loop-condition-expected.txt:
- webgl/2.0.0/conformance2/glsl3/texture-offset-out-of-range-expected.txt:
- webgl/2.0.0/conformance2/glsl3/texture-offset-uniform-texture-coordinate-expected.txt:
- webgl/2.0.0/conformance2/glsl3/tricky-loop-conditions-expected.txt:
- webgl/2.0.0/conformance2/glsl3/unary-minus-operator-in-dynamic-loop-expected.txt:
- webgl/2.0.0/conformance2/glsl3/uniform-block-layout-match-expected.txt:
- webgl/2.0.0/conformance2/glsl3/uniform-block-layouts-expected.txt:
- webgl/2.0.0/conformance2/glsl3/uniform-location-length-limits-expected.txt:
- webgl/2.0.0/conformance2/glsl3/valid-invariant-expected.txt:
- webgl/2.0.0/conformance2/glsl3/vector-dynamic-indexing-expected.txt:
- webgl/2.0.0/conformance2/glsl3/vector-dynamic-indexing-nv-driver-bug-expected.txt:
- 4:20 PM Changeset in webkit [234117] by
-
- 2 edits in trunk/Source/WebCore
[macOS] Ensure that WebGL contexts are always set to an accelerated virtual screen
https://bugs.webkit.org/show_bug.cgi?id=187923
Patch by Justin Fan <Justin Fan> on 2018-07-23
Reviewed by Dean Jackson.
On eGPU displays, it is possible that CGL does not match the preferred renderer.
In this case, and when the web process is blocked from accessing the window server,
3D contexts *may* default to the software renderer. Ensure that even if this occurs,
we set the context to use a hardware-accelerated renderer/virtual screen.
No new tests. Existing behavior covered by existing tests.
Requires multiple screens, at least one attached to an eGPU, to stress.
- platform/graphics/cocoa/GraphicsContext3DCocoa.mm:
(WebCore::identifyAndSetCurrentGPU):
- 4:07 PM Changeset in webkit [234116] by
-
- 7 edits in trunk/Source/WebCore
Convert some obvious never-null pointers to references in the editing code
https://bugs.webkit.org/show_bug.cgi?id=187914
Patch by Sam Weinig <sam@webkit.org> on 2018-07-23
Reviewed by Dean Jackson.
Fixup trivial cases of never-null pointers that really should be references.
- editing/ApplyStyleCommand.cpp:
(WebCore::ApplyStyleCommand::shouldApplyInlineStyleToRun):
(WebCore::ApplyStyleCommand::removeInlineStyleFromElement):
(WebCore::ApplyStyleCommand::removeImplicitlyStyledElement):
(WebCore::ApplyStyleCommand::removeCSSStyle):
(WebCore::ApplyStyleCommand::applyInlineStyleToPushDown):
(WebCore::ApplyStyleCommand::applyInlineStyleChange):
- editing/EditingStyle.cpp:
(WebCore::EditingStyle::overrideWithStyle):
(WebCore::EditingStyle::conflictsWithInlineStyleOfElement const):
(WebCore::EditingStyle::conflictsWithImplicitStyleOfElement const):
(WebCore::EditingStyle::conflictsWithImplicitStyleOfAttributes const):
(WebCore::EditingStyle::extractConflictingImplicitStyleOfAttributes const):
(WebCore::EditingStyle::styleIsPresentInComputedStyleOfNode const):
(WebCore::EditingStyle::elementIsStyledSpanOrHTMLEquivalent):
(WebCore::EditingStyle::mergeInlineStyleOfElement):
(WebCore::EditingStyle::wrappingStyleForSerialization):
(WebCore::EditingStyle::legacyFontSize const):
(WebCore::StyleChange::StyleChange):
(WebCore::StyleChange::extractTextStyles):
(WebCore::legacyFontSizeFromCSSValue):
- editing/EditingStyle.h:
(WebCore::EditingStyle::conflictsWithInlineStyleOfElement const):
- editing/Editor.cpp:
(WebCore::Editor::selectionStartCSSPropertyValue):
- editing/ReplaceSelectionCommand.cpp:
(WebCore::ReplaceSelectionCommand::removeRedundantStylesAndKeepStyleSpanInline):
(WebCore::isInlineNodeWithStyle):
- editing/markup.cpp:
(WebCore::StyledMarkupAccumulator::appendElement):
(WebCore::StyledMarkupAccumulator::serializeNodes):
- 4:00 PM Changeset in webkit [234115] by
-
- 2 edits in trunk/Tools
DRT relies on [webView display] to call -viewWillDraw on the WebHTMLView
https://bugs.webkit.org/show_bug.cgi?id=187924
<rdar://problem/41745884>
Reviewed by Simon Fraser.
WebKit relies on -viewWillDraw getting called on WebHTMLView, even though that view has not been marked as needing display.
- DumpRenderTree/mac/PixelDumpSupportMac.mm:
(createBitmapContextFromWebView):
- 3:53 PM Changeset in webkit [234114] by
-
- 1 copy in tags/Safari-606.1.29
Tag Safari-606.1.29.
- 3:16 PM Changeset in webkit [234113] by
-
- 2 edits in trunk/Source/WebCore
WebCore::primaryScreenDisplayID() always return 0
https://bugs.webkit.org/show_bug.cgi?id=187922
<rdar://problem/42286933>
Reviewed by Geoffrey Garen.
This function should return a valid display ID.
No new tests. Testing this requires a dual monitor setup.
- platform/mac/PlatformScreenMac.mm:
(WebCore::primaryScreenDisplayID):
- 2:24 PM Changeset in webkit [234112] by
-
- 4 edits2 adds in trunk
AX: Press tab to highlight items on a webpage is not working with voiceover enabled
https://bugs.webkit.org/show_bug.cgi?id=187824
Reviewed by Zalan Bujtas.
Source/WebCore:
We are deferring posting focused element change notification when the document needs a
style recalculation. However, we only perform the cache update after a layout is completed.
Added a timer to perform the cache update in the next runloop when non-layout type of mutation
happens.
Test: accessibility/mac/tab-focus-post-notification.html
- accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::AXObjectCache):
(WebCore::AXObjectCache::~AXObjectCache):
(WebCore::AXObjectCache::deferFocusedUIElementChangeIfNeeded):
(WebCore::AXObjectCache::performCacheUpdateTimerFired):
- accessibility/AXObjectCache.h:
(WebCore::AXObjectCache::AXObjectCache):
(WebCore::AXObjectCache::performCacheUpdateTimerFired):
LayoutTests:
- accessibility/mac/tab-focus-post-notification-expected.txt: Added.
- accessibility/mac/tab-focus-post-notification.html: Added.
- 1:59 PM Changeset in webkit [234111] by
-
- 12 edits1 add in trunk
WebResourceLoadStatisticsStore fails to unregister itself as a MessageReceiver in its destructor
https://bugs.webkit.org/show_bug.cgi?id=187910
<rdar://problem/42356526>
Reviewed by Brent Fulgham.
Source/WebCore:
Add internals API that causes the ResourceLoadObserver to notify its observer, and avoid waiting
for the 5 second delay.
- testing/Internals.cpp:
(WebCore::Internals::notifyResourceLoadObserver):
- testing/Internals.h:
- testing/Internals.idl:
Source/WebKit:
The WebResourceLoadStatisticsStore was only removing itself as a MessageReceiver from the WebProcessProxy
and that WebProcessProxy's connection was getting closed. However, it is possible for the
WebResourceLoadStatisticsStore to get destroyed before this happens. This would lead to crashes such as
the one in <rdar://problem/42356526>.
To address the issue, we let the WebsiteDataStore take care of registering / unregistering the
WebResourceLoadStatisticsStore as a MessageReceiver with the WebProcessProxy. This is more reliable since
the WebsiteDataStore is the one that subclasses WebProcessLifetimeObserver. Make sure the
WebResourceLoadStatisticsStore is removed as a MessageReceiver whenever the WebsiteDataStore is destroyed
or WebsiteDataStore::m_resourceLoadStatistics gets cleared.
- UIProcess/WebResourceLoadStatisticsStore.cpp:
- UIProcess/WebResourceLoadStatisticsStore.h:
Drop logic to add / remove the WebResourceLoadStatisticsStore as a receiver now that the
WebsiteDataStore takes care of it.
- UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::~WebsiteDataStore):
Make sure the WebResourceLoadStatisticsStore gets unregistered as a MessageReceiver from all associated
WebProcessProxy objects when the WebsiteDataStore gets destroyed.
(WebKit::WebsiteDataStore::webProcessWillOpenConnection):
(WebKit::WebsiteDataStore::webProcessDidCloseConnection):
Register / Unregister the WebResourceLoadStatisticsStore as a MessageReceiver with the WebProcessProxy.
(WebKit::WebsiteDataStore::setResourceLoadStatisticsEnabled):
Make sure we unregister the WebResourceLoadStatisticsStore as a MessageReceiver with all associated
WebProcessProxy objects before we clear m_resourceLoadStatistics as this will causes the
WebResourceLoadStatisticsStore to get destroyed.
(WebKit::WebsiteDataStore::unregisterWebResourceLoadStatisticsStoreAsMessageReceiver):
(WebKit::WebsiteDataStore::registerWebResourceLoadStatisticsStoreAsMessageReceiver):
Add utility functions to register / unregister WebResourceLoadStatisticsStore as a MessageReceiver with
all associated WebProcessProxy objects.
(WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
Register the new WebResourceLoadStatisticsStore as a MessageReceiver with all associated WebProcessProxy
objects in case setResourceLoadStatisticsEnabled(true) gets called *after* we've already started
WebProcesses.
- UIProcess/WebsiteData/WebsiteDataStore.h:
Tools:
Add API test coverage.
- TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadStatistics.mm:
(-[DisableITPDuringNavigationDelegate webView:didCommitNavigation:]):
(-[DisableITPDuringNavigationDelegate webView:didFinishNavigation:]):
(TEST):
- TestWebKitAPI/Tests/WebKitCocoa/notify-resourceLoadObserver.html: Added.
- 1:30 PM Changeset in webkit [234110] by
-
- 6 edits in trunk/Source/WebCore
[LCF][IFC] Add support for hyphenation.
https://bugs.webkit.org/show_bug.cgi?id=187913
Reviewed by Antti Koivisto.
Move the hyphenation logic over from SimpleLineLayout::TextFragmentIterator.
- layout/inlineformatting/textlayout/Runs.h:
(WebCore::Layout::TextRun::hasHyphen const):
(WebCore::Layout::LayoutRun::setHasHyphen):
(WebCore::Layout::LayoutRun::hasHyphen const):
(WebCore::Layout::LayoutRun::LayoutRun):
(WebCore::Layout::TextRun::createNonWhitespaceRunWithHyphen):
(WebCore::Layout::TextRun::TextRun):
- layout/inlineformatting/textlayout/TextContentProvider.cpp:
(WebCore::Layout::TextContentProvider::findTextItemSlow const):
(WebCore::Layout::TextContentProvider::width const):
(WebCore::Layout::TextContentProvider::hyphenPositionBefore const):
- layout/inlineformatting/textlayout/TextContentProvider.h:
- layout/inlineformatting/textlayout/simple/SimpleLineBreaker.cpp:
(WebCore::Layout::SimpleLineBreaker::Line::setTextAlign):
(WebCore::Layout::SimpleLineBreaker::Line::justifyRuns):
(WebCore::Layout::SimpleLineBreaker::Line::adjustRunsForTextAlign):
(WebCore::Layout::SimpleLineBreaker::Line::collectExpansionOpportunities):
(WebCore::Layout::SimpleLineBreaker::Line::closeLastRun):
(WebCore::Layout::SimpleLineBreaker::Line::append):
(WebCore::Layout::SimpleLineBreaker::Line::reset):
(WebCore::Layout::SimpleLineBreaker::Style::Style):
(WebCore::Layout::SimpleLineBreaker::handleLineEnd):
(WebCore::Layout::SimpleLineBreaker::createRunsForLine):
(WebCore::Layout::SimpleLineBreaker::hyphenPositionBefore const):
(WebCore::Layout::SimpleLineBreaker::adjustSplitPositionWithHyphenation const):
(WebCore::Layout::SimpleLineBreaker::split const):
- layout/inlineformatting/textlayout/simple/SimpleLineBreaker.h:
- 1:23 PM Changeset in webkit [234109] by
-
- 9 edits2 adds in trunk
[Web Animations] Querying the current time of a finished CSSAnimation after removing its target leads to a crash
https://bugs.webkit.org/show_bug.cgi?id=187906
Reviewed by Dean Jackson.
Source/WebCore:
Test: webanimations/accessing-current-time-after-finished-css-animation-target-removal.html
Because we carelessly look at a CSSAnimation's effect's timing in DeclarativeAnimation::bindingsCurrentTime
without checking that the effect is non-null, we can crash in the case where the animation is finished and
its target element has been removed, which caused the effect to be set to null.
We do not actually fix the lack of a null check, which will be the scope of a different patch, but instead
ensure that we do _not_ set the animation's effect to null when its target is removed, which used to be
performed via a call to WebAnimation::remove(). Instead, we introduce AnimationTimeline::elementWasRemoved()
which notifies the timeline of an element being removed such that we may stop referencing any animation
targeting this element from the various data structures holding strong references to the animation in question,
and we then cancel the animation silently, which is a new option that ensures promises aren't resolved or
rejected as a result.
Finally, the WebAnimation and AnimationEffectReadOnly classes established a ref-cycle as WebAnimation has
RefPtr<AnimationEffectReadOnly> m_effectand AnimationEffectReadOnly hasRefPtr<WebAnimation> m_animation.
While it is correct that WebAnimation owns its effect, which is established by the DOM API, the
reverse is not correct since we only hold the reverse internally for the benefit of our implementation.
As such, we change AnimationEffectReadOnly's m_animation to be a WeakPtr<WebAnimation>. This means not
calling WebAnimation::remove() and simply removing the animation from the animation maps on the timeline
is sufficient to guarantee that the document timeline will not leak (and with it the document).
- animation/AnimationEffectReadOnly.h:
(WebCore::AnimationEffectReadOnly::setAnimation):
- animation/AnimationTimeline.cpp:
(WebCore::AnimationTimeline::elementWasRemoved):
- animation/AnimationTimeline.h:
- animation/WebAnimation.cpp:
(WebCore::WebAnimation::cancel):
(WebCore::WebAnimation::resetPendingTasks):
- animation/WebAnimation.h:
- dom/Element.cpp:
(WebCore::Element::removedFromAncestor):
- rendering/updating/RenderTreeUpdater.cpp:
(WebCore::RenderTreeUpdater::tearDownRenderers):
LayoutTests:
Add a new test that checks the behavior of a CSSAnimation instance after its completion and removal of its target.
- webanimations/accessing-current-time-after-finished-css-animation-target-removal-expected.txt: Added.
- webanimations/accessing-current-time-after-finished-css-animation-target-removal.html: Added.
- 1:17 PM Changeset in webkit [234108] by
-
- 2 edits in trunk/Source/WebKit
Resource Load Statistics: Add logging of Storage Access API use in experimental debug mode
https://bugs.webkit.org/show_bug.cgi?id=187918
<rdar://problem/42509062>
Reviewed by Jiewen Tan.
Tested manually by looking at log output.
- UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
(WebKit::ResourceLoadStatisticsMemoryStore::removeDataRecords):
This is just a clean-up change.
(WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess):
(WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener):
Both these now log proper info in debug mode.
- 12:33 PM Changeset in webkit [234107] by
-
- 4 edits in trunk/LayoutTests
REGRESSION(PSON?): [ WK2 ] http/tests/workers/service/client-*-page-cache.html LayoutTests are flaky
https://bugs.webkit.org/show_bug.cgi?id=183705
<rdar://problem/42440606>
Unreviewed, attempting a better fix for http/tests/workers/service/serviceworkerclients-matchAll.https.html.
If it fixes the flakiness I'll do the same for the 2 page cache tests.
- http/tests/workers/service/serviceworkerclients-matchAll-worker.js:
(waitFor):
(matchAllPromise2):
(async.doTestAfterMessage):
(matchAllPromise1): Deleted.
(then): Deleted.
- platform/ios-wk2/TestExpectations:
- platform/mac-wk2/TestExpectations:
- 12:32 PM Changeset in webkit [234106] by
-
- 3 edits in trunk/Source/JavaScriptCore
Add some asserts to help diagnose a crash.
https://bugs.webkit.org/show_bug.cgi?id=187915
<rdar://problem/42508166>
Reviewed by Michael Saboff.
Add some asserts to verify that an CodeBlock alternative should always have a
non-null jitCode. Also change a RELEASE_ASSERT_NOT_REACHED() in
CodeBlock::setOptimizationThresholdBasedOnCompilationResult() to a RELEASE_ASSERT()
so that we'll retain the state of the variables that failed the assertion (again
to help with diagnosis).
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::setAlternative):
(JSC::CodeBlock::setOptimizationThresholdBasedOnCompilationResult):
- dfg/DFGPlan.cpp:
(JSC::DFG::Plan::Plan):
- 12:13 PM Changeset in webkit [234105] by
-
- 14 edits4 adds in trunk/Source
[iOS] Add support for input[type=color]
https://bugs.webkit.org/show_bug.cgi?id=187871
Patch by Aditya Keerthi <Aditya Keerthi> on 2018-07-23
Reviewed by Tim Horton.
Source/WebCore:
- css/html.css: Remove unwanted styling for color inputs with a list attribute.
- html/ColorInputType.cpp: Make the element focusable.
(WebCore::ColorInputType::isMouseFocusable const):
(WebCore::ColorInputType::isKeyboardFocusable const):
- html/ColorInputType.h:
- html/HTMLInputElement.h: Expose isColorControl() to WebKit.
- page/Chrome.cpp:
(WebCore::Chrome::createColorChooser):
Source/WebKit:
Created WKFormColorControl to display a color picker once a color input gains
focus. The control is presented as an inputView on iPhone and as a popover on
iPad. The picker itself consists of two color matrices. The first is a set of 12
default colors, displayed on the top row of the picker. In a subsequent patch,
this top row will be made customizable through the use of the datalist element.
The second matrix is a grid of 120 colors, provided by the system. Colors can be
selected from either matrix by tapping or with a pan gesture.
WKColorMatrixView represents a single color matrix and is comprised of
WKColorButtons that represent each color in the matrix.
- Shared/AssistedNodeInformation.h:
- UIProcess/API/Cocoa/_WKFocusedElementInfo.h:
- UIProcess/ios/PageClientImplIOS.h:
- UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::createColorPicker):
- UIProcess/ios/WKContentViewInteraction.mm:
(-[WKFocusedElementInfo initWithAssistedNodeInformation:isUserInitiated:userObject:]):
(-[WKContentView _requiresKeyboardWhenFirstResponder]):
(-[WKContentView inputView]):
(-[WKContentView requiresAccessoryView]):
(isAssistableInputType):
(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
(-[WKContentView actionNameForFocusedFormControlView:]):
- UIProcess/ios/forms/WKFormColorControl.h: Added.
- UIProcess/ios/forms/WKFormColorControl.mm: Added.
(-[WKColorPopover initWithView:]):
(-[WKColorPopover controlView]):
(-[WKColorPopover controlBeginEditing]):
(-[WKColorPopover controlEndEditing]):
(-[WKFormColorControl initWithView:]):
(-[WKFormColorControl assistantView]):
(-[WKFormColorControl beginEditing]):
(-[WKFormColorControl endEditing]):
- UIProcess/ios/forms/WKFormColorPicker.h: Added.
- UIProcess/ios/forms/WKFormColorPicker.mm: Added.
(+[WKColorButton colorButtonWithColor:]):
(-[WKColorMatrixView initWithFrame:]):
(-[WKColorMatrixView initWithFrame:colorMatrix:]):
(-[WKColorMatrixView layoutSubviews]):
(-[WKColorMatrixView colorButtonTapped:]):
(+[WKColorPicker defaultTopColorMatrix]):
(-[WKColorPicker initWithView:]):
(-[WKColorPicker setControlValueFromUIColor:]):
(-[WKColorPicker controlView]):
(-[WKColorPicker controlBeginEditing]):
(-[WKColorPicker controlEndEditing]):
(-[WKColorPicker colorMatrixView:didTapColorButton:]):
(-[WKColorPicker didPanColors:]):
- WebKit.xcodeproj/project.pbxproj:
- WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::isAssistableElement):
(WebKit::WebPage::getAssistedNodeInformation):
- 10:56 AM Changeset in webkit [234104] by
-
- 2 edits in trunk/LayoutTests
Layout test webanimations/empty-keyframes-crash.html is failing on Windows.
https://bugs.webkit.org/show_bug.cgi?id=187912
Unreviewed test gardening.
- platform/win/TestExpectations:
- 10:52 AM Changeset in webkit [234103] by
-
- 2 edits in trunk/Source/WebKit
[WinCairo] Fix detection of held modifier keys for key events
https://bugs.webkit.org/show_bug.cgi?id=187862
Reviewed by Fujii Hironori.
- Shared/win/WebEventFactory.cpp:
(WebKit::IsKeyInDownState): Use requested modifier not VK_MENU
- 10:49 AM Changeset in webkit [234102] by
-
- 2 edits in trunk/LayoutTests
Skip crypto tests on Windows.
https://bugs.webkit.org/show_bug.cgi?id=165090
Unreviewed test gardening.
- platform/win/TestExpectations:
- 10:40 AM Changeset in webkit [234101] by
-
- 2 edits in trunk/LayoutTests
Mark http/tests/security/bypassing-cors-checks-for-extension-urls.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=187658
Unreviewed test gardening.
- platform/mac-wk2/TestExpectations:
- 10:40 AM Changeset in webkit [234100] by
-
- 3 edits in trunk/LayoutTests
Mark three service worker clients tests as flaky.
https://bugs.webkit.org/show_bug.cgi?id=183705
Unreviewed test gardening.
- platform/ios-wk2/TestExpectations:
- platform/mac-wk2/TestExpectations:
- 10:02 AM Changeset in webkit [234099] by
-
- 3 edits in trunk/Tools
test-webkitpy should take configuration command line options
https://bugs.webkit.org/show_bug.cgi?id=187872
Reviewed by David Kilzer.
Add --debug and --release optional command line options and teach the test bots to invoke test-webkitpy
with the appropriate configuration. At the moment these options are only meaningful on Mac since they
effect the configuration lldbWebKitTester is built with and we only build lldbWebKitTester on Mac.
- BuildSlaveSupport/build.webkit.org-config/steps.py:
(RunPythonTests): Pass the configuration to test-webkitpy. On Mac this will effect
how lldbWebKitTester is built. All other ports do not make use of the specified configuration.
- Scripts/webkitpy/test/main.py:
(_build_lldb_webkit_tester): Modified to take the configuration to build lldbWebKitTester. If
the specified configuration is None then we fall back to using the default configuration (as set
by script set-webkit-configuration).
(Tester._parse_args): Add command line options --debug and --release to build lldbWebKitTester
with a Debug configuration and a Release configuration, respectively
(Tester._run_tests): Pass the configuration to build lldbWebKitTester that we parsed from
the command line options. It may be None if neither --debug nor --release were passed.
- 9:53 AM Changeset in webkit [234098] by
-
- 6 edits2 adds in trunk
fullscreen env() variables should have initial values
https://bugs.webkit.org/show_bug.cgi?id=187897
<rdar://problem/42485682>
Reviewed by Sam Weinig.
Source/WebCore:
The env() values for fullscreen properties need to be
initialized, rather than wait for values to be set from WebKit.
Without this, feature detection doesn't work, and properties
won't parse correctly.
Test: fullscreen/fullscreen-env-initial.html
- dom/ConstantPropertyMap.cpp:
(WebCore::ConstantPropertyMap::buildValues): Initialize the fullscreen values.
(WebCore::ConstantPropertyMap::updateConstantsForFullscreen): Renamed function, because it
also updates the duration value.
(WebCore::ConstantPropertyMap::didChangeFullscreenInsets): Call new name.
(WebCore::ConstantPropertyMap::updateConstantsForFullscreenInsets): Deleted.
- dom/ConstantPropertyMap.h:
- page/Page.cpp:
(WebCore::Page::setFullscreenAutoHideDuration): Don't change the value if it doesn't need it.
- page/Page.h: Add accessor for fullscreenAutoHideDuration. Also add a member variable.
(WebCore::Page::fullscreenAutoHideDuration const):
LayoutTests:
- fullscreen/fullscreen-env-initial-expected.html: Added.
- fullscreen/fullscreen-env-initial.html: Added.
- 9:13 AM Changeset in webkit [234097] by
-
- 6 edits in trunk/Source/JavaScriptCore
Unreviewed, fix no-JIT build.
- bytecode/CallLinkStatus.cpp:
(JSC::CallLinkStatus::computeFor):
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::finalizeUnconditionally):
- bytecode/GetByIdStatus.cpp:
(JSC::GetByIdStatus::computeFor):
(JSC::GetByIdStatus::computeForStubInfoWithoutExitSiteFeedback):
- bytecode/InByIdStatus.cpp:
- bytecode/PutByIdStatus.cpp:
(JSC::PutByIdStatus::computeForStubInfo):
- 7:12 AM Changeset in webkit [234096] by
-
- 4 edits in trunk/Tools
Unreviewed, rolling out r233030.
https://bugs.webkit.org/show_bug.cgi?id=187904
Broke tarball builds (Requested by mcatanzaro on #webkit).
Reverted changeset:
"run-gtk-tests (glib/common.py) cannot determine build
directory when webKitBranchBuild=true"
https://bugs.webkit.org/show_bug.cgi?id=185643
https://trac.webkit.org/changeset/233030
- 12:09 AM Changeset in webkit [234095] by
-
- 3 edits2 adds in branches/safari-606-branch
Cherry-pick r234075. rdar://problem/42451525
DFG AbstractInterpreter: CheckArray filters array modes for DirectArguments/ScopedArguments using only NonArray
https://bugs.webkit.org/show_bug.cgi?id=187827
rdar://problem/42146858
Reviewed by Saam Barati.
JSTests:
New regression tests.
- stress/direct-arguments-check-array.js: Added. (setup.f2): (setup): (forOfArray): (forOfArgs): (callEveryOnArgs):
- stress/scoped-arguments-check-array.js: Added. (setup.foo): (setup.f2): (setup): (forOfArray): (forOfArgs): (callEveryOnArgs):
Source/JavaScriptCore:
When filtering array modes for DirectArguments or ScopedArguments, we need to allow for the possibility
that they can either be NonArray or NonArrayWithArrayStorage (aka ArrayStorageShape).
We can't end up with other shapes, Int32, Double, etc because GenericArguments sets
InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero which will cause us to go down a
putByIndex() path that doesn't change the shape.
- dfg/DFGArrayMode.h: (JSC::DFG::ArrayMode::arrayModesThatPassFiltering const):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234075 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 12:09 AM Changeset in webkit [234094] by
-
- 8 edits3 adds in branches/safari-606-branch
Cherry-pick r234073. rdar://problem/42451644
Remove completed animations from GraphicsLayer, thus avoiding excessive backing store allocation
https://bugs.webkit.org/show_bug.cgi?id=187844
rdar://problem/40387294
Reviewed by Dean Jackson.
Source/WebCore:
A keyframe animation which animates 3D transforms, and is fill-forwards, currently
leaves the GraphicsLayer in a state where it has a "running" animation. However, the
logic that computes animation extent in RenderLayerBacking::updateGeometry() only does
so for running or paused animations. GraphicsLayer then thinks that it has an active
transform animation with unknown extent, and refuses to detach its backing store.
This triggers excessive layer creation on some sites (e.g. https://www.kqed.org).
Fix by always removing animations from the GraphicsLayer when they finish, whether
or not they fill forwards. This is done by having KeyframeAnimation::onAnimationEnd()
always call endAnimation().
This change only fixes the non-Web Animation code path. webkit.org/b/187845 exists
to fix the other code path.
Also improve some logging that would have revealed this problem sooner.
Test: compositing/backing/backing-store-attachment-fill-forwards-animation.html
- page/animation/AnimationBase.h: (WebCore::AnimationBase::endAnimation):
- page/animation/ImplicitAnimation.cpp: (WebCore::ImplicitAnimation::endAnimation):
- page/animation/ImplicitAnimation.h:
- page/animation/KeyframeAnimation.cpp: (WebCore::KeyframeAnimation::endAnimation): (WebCore::KeyframeAnimation::onAnimationEnd):
- page/animation/KeyframeAnimation.h:
- platform/graphics/ca/GraphicsLayerCA.cpp: (WebCore::GraphicsLayerCA::addAnimation): (WebCore::GraphicsLayerCA::updateCoverage):
LayoutTests:
- compositing/backing/backing-store-attachment-fill-forwards-animation-expected.txt: Added.
- compositing/backing/backing-store-attachment-fill-forwards-animation.html: Added.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234073 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 12:07 AM Changeset in webkit [234093] by
-
- 7 edits in branches/safari-606-branch/Source
Versioning.
Jul 22, 2018:
- 5:40 PM Changeset in webkit [234092] by
-
- 2 edits in trunk/Source/WebInspectorUI
Web Inspector: Dark Mode: remove odd-looking top border
https://bugs.webkit.org/show_bug.cgi?id=187885
Reviewed by Matt Baker.
This border doesn't exist in the light mode, and it shouldn't be in the dark mode either.
- UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(body .toolbar):
- 12:48 PM Changeset in webkit [234091] by
-
- 4 edits in trunk/Source/WebCore
[LFC][IFC] Add center/right/justify line alignment support.
https://bugs.webkit.org/show_bug.cgi?id=187890
Reviewed by Antti Koivisto.
Move over some more code from simple line layout.
(though text-align: justify is more preformant as now expansion opportunities are added as we process the text runs
-as opposed to iterting through the runs again when we reach the end of the line.)
- layout/inlineformatting/textlayout/Runs.h:
(WebCore::Layout::LayoutRun::setLeft):
(WebCore::Layout::LayoutRun::setExpansion):
- layout/inlineformatting/textlayout/simple/SimpleLineBreaker.cpp:
(WebCore::Layout::SimpleLineBreaker::Line::Line):
(WebCore::Layout::SimpleLineBreaker::Line::setTextAlign):
(WebCore::Layout::SimpleLineBreaker::Line::adjustedLeftForTextAlign const):
(WebCore::Layout::SimpleLineBreaker::Line::justifyRuns):
(WebCore::Layout::SimpleLineBreaker::Line::adjustRunsForTextAlign):
(WebCore::Layout::expansionOpportunity):
(WebCore::Layout::expansionBehavior):
(WebCore::Layout::SimpleLineBreaker::Line::collectExpansionOpportunities):
(WebCore::Layout::SimpleLineBreaker::Line::closeLastRun):
(WebCore::Layout::SimpleLineBreaker::Line::append):
(WebCore::Layout::SimpleLineBreaker::Line::collapseTrailingWhitespace):
(WebCore::Layout::SimpleLineBreaker::Line::reset):
(WebCore::Layout::SimpleLineBreaker::Style::Style):
(WebCore::Layout::SimpleLineBreaker::handleLineEnd):
(WebCore::Layout::SimpleLineBreaker::handleLineStart):
(WebCore::Layout::isTextAlignRight):
(WebCore::Layout::SimpleLineBreaker::createRunsForLine):
- layout/inlineformatting/textlayout/simple/SimpleLineBreaker.h:
(WebCore::Layout::SimpleLineBreaker::Line::setAvailableWidth):
(WebCore::Layout::SimpleLineBreaker::Line::setCollapseWhitespace):
- 12:24 PM Changeset in webkit [234090] by
-
- 4 edits2 adds in trunk
[JSC] GetByIdVariant and InByIdVariant do not need slot base if they are not "hit" variants
https://bugs.webkit.org/show_bug.cgi?id=187891
Reviewed by Saam Barati.
JSTests:
- stress/in-miss-variant-merge.js: Added.
(shouldBe):
(test):
- stress/miss-variant-merge.js: Added.
(shouldBe):
(test):
Source/JavaScriptCore:
When merging GetByIdVariant and InByIdVariant, we accidentally make merging failed if
two variants are mergeable but they have "Miss" status. We make merging failed if
the merged OPCSet says hasOneSlotBaseCondition() is false. But it is only reasonable
if the variant has "Hit" status. This bug is revealed when we introduce CreateThis in FTL,
which patch have more chances to merge variants.
This patch fixes this issue by checking
!isPropertyUnset()/isHit(). PutByIdVariant
is not related since it does not use this check in Transition case.
- bytecode/GetByIdVariant.cpp:
(JSC::GetByIdVariant::attemptToMerge):
- bytecode/InByIdVariant.cpp:
(JSC::InByIdVariant::attemptToMerge):
- 9:54 AM Changeset in webkit [234089] by
-
- 8 edits3 adds in trunk
[DFG] Fold GetByVal if the indexed value is non configurable and non writable
https://bugs.webkit.org/show_bug.cgi?id=186462
Reviewed by Saam Barati.
JSTests:
- stress/folding-get-by-val-with-read-only-dont-delete-object.js: Added.
(shouldBe):
(test1):
(test2):
(test3):
(test4):
(test5):
- stress/folding-get-by-val-with-read-only-dont-delete-runtime-array.js: Added.
(shouldBe):
(test1):
(test2):
(test5):
- stress/folding-get-by-val-with-read-only-dont-delete.js: Added.
(shouldBe):
(test1):
(test2):
(test3):
(test4):
(test5):
Source/JavaScriptCore:
Non-special DontDelete | ReadOnly properties mean that it won't be changed. If DFG AI can retrieve this
property, AI can fold it into a constant. This type of property can be seen when we use ES6 tagged templates.
Tagged templates' callsite includes indexed properties whose attributes are DontDelete | ReadOnly.
This patch attempts to fold such properties into constant in DFG AI. The challenge is that DFG AI runs
concurrently with the mutator thread. In this patch, we insert WTF::storeStoreFence between value setting
and attributes setting. The attributes must be set after the corresponding value is set. If the loaded
attributes (with WTF::loadLoadFence) include DontDelete | ReadOnly, it means the given value won't be
changed and we can safely use it. We arrange our existing code to use this protocol.
Since GetByVal folding requires the correct Structure & Butterfly pairs, it is only enabled in x86 architecture
since it is TSO. So, our WTF::storeStoreFence in SparseArrayValueMap is also emitted only in x86.
This patch improves SixSpeed/template_string_tag.es6.
baseline patched
template_string_tag.es6 237.0301+-4.8374 9.8779+-0.3628 definitely 23.9960x faster
- dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
- runtime/JSArray.cpp:
(JSC::JSArray::setLengthWithArrayStorage):
- runtime/JSObject.cpp:
(JSC::JSObject::enterDictionaryIndexingModeWhenArrayStorageAlreadyExists):
(JSC::JSObject::deletePropertyByIndex):
(JSC::JSObject::getOwnPropertyNames):
(JSC::putIndexedDescriptor):
(JSC::JSObject::defineOwnIndexedProperty):
(JSC::JSObject::attemptToInterceptPutByIndexOnHoleForPrototype):
(JSC::JSObject::putIndexedDescriptor): Deleted.
- runtime/JSObject.h:
- runtime/SparseArrayValueMap.cpp:
(JSC::SparseArrayValueMap::SparseArrayValueMap):
(JSC::SparseArrayValueMap::add):
(JSC::SparseArrayValueMap::putDirect):
(JSC::SparseArrayValueMap::getConcurrently):
(JSC::SparseArrayEntry::get const):
(JSC::SparseArrayEntry::getConcurrently const):
(JSC::SparseArrayEntry::put):
(JSC::SparseArrayEntry::getNonSparseMode const):
(JSC::SparseArrayValueMap::visitChildren):
(JSC::SparseArrayValueMap::~SparseArrayValueMap): Deleted.
- runtime/SparseArrayValueMap.h:
(JSC::SparseArrayEntry::SparseArrayEntry):
(JSC::SparseArrayEntry::attributes const):
(JSC::SparseArrayEntry::forceSet):
(JSC::SparseArrayEntry::asValue):