Timeline



May 29, 2018:

11:30 PM Changeset in webkit [232287] by n_wang@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed, follow-up after r232285
https://bugs.webkit.org/show_bug.cgi?id=180871

Removed redundant null check.

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::isExpanded const):

9:36 PM Changeset in webkit [232286] by sbarati@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

Add a version of JSVirtualMachine shrinkFootprint that runs when the VM goes idle
https://bugs.webkit.org/show_bug.cgi?id=186064

Reviewed by Mark Lam.

shrinkFootprint was implemented as:
`
sanitizeStackForVM(this);
deleteAllCode(DeleteAllCodeIfNotCollecting);
heap.collectNow(Synchronousness::Sync);
WTF::releaseFastMallocFreeMemory();
`

However, for correctness reasons, deleteAllCode is implemented to do
work when the VM is idle: no JS is running on the stack. This means
that if shrinkFootprint is called when JS is running on the stack, it
ends up freeing less memory than it could have if it waited to run until
the VM goes idle.

This patch makes it so we wait until idle before doing work. I'm seeing a
10% footprint progression when testing this against a client of the JSC SPI.

Because this is a semantic change in how the SPI works, this patch
adds new SPI named shrinkFootprintWhenIdle. The plan is to move
all clients of the shrinkFootprint SPI to shrinkFootprintWhenIdle.
Once that happens, we will delete shrinkFootprint. Until then,
we make shrinkFootprint do exactly what shrinkFootprintWhenIdle does.

  • API/JSVirtualMachine.mm:

(-[JSVirtualMachine shrinkFootprint]):
(-[JSVirtualMachine shrinkFootprintWhenIdle]):

  • API/JSVirtualMachinePrivate.h:
  • runtime/VM.cpp:

(JSC::VM::shrinkFootprintWhenIdle):
(JSC::VM::shrinkFootprint): Deleted.

  • runtime/VM.h:
9:01 PM Changeset in webkit [232285] by n_wang@apple.com
  • 5 edits in trunk

AX: macOS VoiceOver doesn't announce when details element is expanded when using role group
https://bugs.webkit.org/show_bug.cgi?id=180866
<rdar://problem/36074338>

Reviewed by Chris Fleizach.

Source/WebCore:

We should use is<HTMLDetailsElement> to check for the details parent instead
of using the role.

Added test cases to the existing test.

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::isExpanded const):

LayoutTests:

  • accessibility/mac/details-summary-expected.txt:
  • accessibility/mac/details-summary.html:
8:36 PM Changeset in webkit [232284] by timothy_horton@apple.com
  • 4 edits in trunk/Source

Fix the build
https://bugs.webkit.org/show_bug.cgi?id=186078

Unreviewed build fix.

Source/WebKit:

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _denyNextUserMediaRequest]):

Source/WTF:

  • wtf/Platform.h:
5:47 PM Changeset in webkit [232283] by aestes@apple.com
  • 6 edits
    1 move in trunk/Source/WebKit

[Wi-Fi Assertions] Track whether WiFiAssertionHolder should actually hold a Wi-Fi assertion
https://bugs.webkit.org/show_bug.cgi?id=185983
<rdar://problem/40205486>

Reviewed by Tim Horton.

  • Configurations/Network-iOS.entitlements:

Added a needed entitlement.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/WiFiAssertionHolder.h:

(WebKit::WiFiAssertionHolder::shouldHoldWiFiAssertion const):

Track whether WiFiAssertionHolder should actually hold a Wi-Fi assertion.

  • NetworkProcess/cocoa/WiFiAssertionHolder.mm: Renamed from Source/WebKit/NetworkProcess/cocoa/WiFiAssertionHolder.cpp.

(holdWiFiAssertion):
(releaseWiFiAssertion):
(WebKit::WiFiAssertionHolder::WiFiAssertionHolder):
(WebKit::WiFiAssertionHolder::~WiFiAssertionHolder):

Changed holdWiFiAssertion() and releaseWiFiAssertion() to take the
WiFiAssertionHolder as an argument.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:

Added a needed sandbox extension.

  • WebKit.xcodeproj/project.pbxproj:
5:40 PM Changeset in webkit [232282] by caitp@igalia.com
  • 2 edits in trunk/JSTests

[JSTests] update test262 expectations after r232261
https://bugs.webkit.org/show_bug.cgi?id=184267

Reviewed by Saam Barati.

  • test262/expectations.yaml:
5:18 PM Changeset in webkit [232281] by youenn@apple.com
  • 13 edits in trunk

Add a consistency check between URL and CFURL
Source/WebCore:

https://bugs.webkit.org/show_bug.cgi?id=186057
<rdar://problem/40258457>

Reviewed by Geoff Garen.

It is important that WebCore::URL used in WebCore and CFURL that gets serialized in the network pipe remain consistent.
Otherwise, we will end-up with odd bugs.

We add such a check when creating a CFURL from an URL.
To make things more consistent, we also rely now more on WebCore::URL instead of directly creating a CFURL.

  • platform/URL.h:
  • platform/cf/CFURLExtras.cpp:

(WebCore::isCFURLSameOrigin):

  • platform/cf/CFURLExtras.h:
  • platform/cf/URLCF.cpp:

(WebCore::URL::createCFURL const):

  • platform/mac/URLMac.mm:

(WebCore::URL::createCFURL const):

  • platform/mac/WebCoreNSURLExtras.mm:

(WebCore::URLWithUserTypedString):

Source/WebKit:

https://bugs.webkit.org/show_bug.cgi?id=186057
<rdar://problem/40258457>

Reviewed by Geoff Garen.

  • Shared/Cocoa/WKNSURLExtras.mm:

(+[NSURL _web_URLWithWTFString:relativeToURL:]):
(urlWithWTFString): Deleted.
(+[NSURL _web_URLWithWTFString:]): Deleted.

Tools:

https://bugs.webkit.org/show_bug.cgi?id=182444
<rdar://problem/37164835>

Reviewed by Geoff Garen.

DRT code expected a non null URL which is no longer the case now.
Updated DRT to remove that assumption.

  • DumpRenderTree/TestRunner.cpp:

(TestRunner::redirectionDestinationForURL):

  • DumpRenderTree/TestRunner.h:
  • DumpRenderTree/mac/ResourceLoadDelegate.mm:

(-[ResourceLoadDelegate webView:resource:willSendRequest:redirectResponse:fromDataSource:]):

5:03 PM Changeset in webkit [232280] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebKit

Remove unused WebPage::dummy
https://bugs.webkit.org/show_bug.cgi?id=186068

Patch by Alex Christensen <achristensen@webkit.org> on 2018-05-29
Reviewed by Sam Weinig.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::dummy): Deleted.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
4:48 PM Changeset in webkit [232279] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

shrinkFootprint needs to request a full collection
https://bugs.webkit.org/show_bug.cgi?id=186069

Reviewed by Mark Lam.

  • runtime/VM.cpp:

(JSC::VM::shrinkFootprint):

4:41 PM Changeset in webkit [232278] by timothy@apple.com
  • 5 edits in trunk/Source/WebCore

Printing does not apply the right colors in all cases.

https://bugs.webkit.org/show_bug.cgi?id=186066
rdar://problem/40274975

Reviewed by Tim Horton.

  • inspector/agents/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::setEmulatedMedia): Call RenderTheme::platformColorsDidChange
to invalidate the color cache.

  • page/FrameView.cpp:

(WebCore::FrameView::adjustMediaTypeForPrinting): Ditto.

  • page/Page.cpp:

(WebCore::Page::defaultAppearance const): Added. Use default when not screen.

  • page/Page.h:

(WebCore::Page::defaultAppearance const): Deleted.

4:28 PM Changeset in webkit [232277] by pvollan@apple.com
  • 6 edits in trunk/Source

Create typedef for HashMap<PlatformDisplayID, ScreenProperties>
https://bugs.webkit.org/show_bug.cgi?id=186056

Reviewed by Brent Fulgham.

Source/WebCore:

No new tests, no change in behavior.

  • platform/PlatformScreen.h:
  • platform/mac/PlatformScreenMac.mm:

(WebCore::screenProperties):
(WebCore::getScreenProperties):
(WebCore::setScreenProperties):

Source/WebKit:

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
3:59 PM Changeset in webkit [232276] by jiewen_tan@apple.com
  • 8 edits in trunk/Source/WebKit

Tighten sandbox profiles for Networking Processes to restrict accesses to macOS/iOS Keychains
https://bugs.webkit.org/show_bug.cgi?id=162948
<rdar://problem/40558894>

Reviewed by Brent Fulgham.

The patch conditionally tighten sandbox profiles for Networking Processes to remove Keychain related
permissions and some security permisssions that are not needed. Also it conditionally remove the
Process Privilege for Networking Processes to access Credentials.

In addition, it remove process privilege assertions for SecItemShim as it is supposed to work in processes
that don't have privileges to access Keychains and delegate all operations to UI Process via IPC. Also,
the patch disables SecItemShim for Networking Process conditionally.

  • Configurations/Network-iOS.entitlements:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
  • Shared/mac/SecItemShim.cpp:

(WebKit::sendSecItemRequest):
(WebKit::webSecItemCopyMatching):
(WebKit::webSecItemAdd):
(WebKit::webSecItemUpdate):
(WebKit::webSecItemDelete):
(WebKit::initializeSecItemShim):

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

Store 0-lifetime stylesheets / scripts into the disk cache for faster history navigations
https://bugs.webkit.org/show_bug.cgi?id=186060
<rdar://problem/40627270>

Reviewed by Geoffrey Garen.

Tweak our storeUnconditionallyForHistoryNavigation logic to match resources whose priority
is High, not just VeryHigh. Per logic in CachedResource::defaultPriorityForResourceType(Type),
This now matches stylesheets and scripts in addition to main resources.

I found that in case of a history navigation to apple.com, a significant number of scripts
and stylesheets had to be loaded from the network because our previous heuristic decided
not to store them (because their priority was not VeryHigh and because their max-age was
0).

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::makeStoreDecision):

2:29 PM Changeset in webkit [232274] by commit-queue@webkit.org
  • 6 edits
    1 add in trunk/Tools

Export changes to web-platform-test as part of the webkit-patch upload workflow
https://bugs.webkit.org/show_bug.cgi?id=184914

Patch by Brendan McLoughlin <brendan@bocoup.com> on 2018-05-29
Reviewed by Youenn Fablet.

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

(Upload):
(CreateBug.execute):
(WPTChangeExport):

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

(WPTChangeExport):
(WPTChangeExport.options):
(WPTChangeExport.run):

  • Scripts/webkitpy/w3c/common.py:
  • Scripts/webkitpy/w3c/test_exporter.py:

(WebPlatformTestExporter):
(WebPlatformTestExporter.init):
(WebPlatformTestExporter.username):
(WebPlatformTestExporter.token):
(WebPlatformTestExporter._github):
(WebPlatformTestExporter._wpt_fork_branch_github_url):
(WebPlatformTestExporter._wpt_fork_remote):
(WebPlatformTestExporter._wpt_fork_push_url):
(WebPlatformTestExporter._git):
(WebPlatformTestExporter._branch_name):
(WebPlatformTestExporter._public_branch_name):
(WebPlatformTestExporter._wpt_patch):
(WebPlatformTestExporter.has_wpt_changes):
(WebPlatformTestExporter._find_filename):
(WebPlatformTestExporter._is_ignored_file):
(WebPlatformTestExporter._strip_ignored_files_from_diff):
(WebPlatformTestExporter.write_git_patch_file):
(WebPlatformTestExporter._prompt_for_token):
(WebPlatformTestExporter._prompt_for_username):
(WebPlatformTestExporter._ensure_username_and_token):
(WebPlatformTestExporter._validate_and_save_token):
(WebPlatformTestExporter.create_branch_with_patch):
(WebPlatformTestExporter.push_to_wpt_fork):
(WebPlatformTestExporter.make_pull_request):
(WebPlatformTestExporter.delete_local_branch):
(WebPlatformTestExporter.create_upload_remote_if_needed):
(WebPlatformTestExporter.do_export):
(parse_args):
(TestExporter): Deleted.
(TestExporter.init): Deleted.
(TestExporter._ensure_wpt_repository): Deleted.
(TestExporter._fetch_wpt_repository): Deleted.
(TestExporter._ensure_new_branch_name): Deleted.
(TestExporter.download_and_commit_patch): Deleted.
(TestExporter.clean): Deleted.
(TestExporter.create_branch_with_patch): Deleted.
(TestExporter.push_to_wpt_fork): Deleted.
(TestExporter.make_pull_request): Deleted.
(TestExporter.create_wpt_pull_request): Deleted.
(TestExporter.delete_local_branch): Deleted.
(TestExporter.create_git_patch): Deleted.
(TestExporter.create_upload_remote): Deleted.
(TestExporter.do_export): Deleted.

  • Scripts/webkitpy/w3c/test_exporter_unittest.py:

(TestExporterTest.MockGit):
(TestExporterTest.MockGit.create_patch):
(TestExporterTest.test_export):
(TestExporterTest.test_export_with_specific_branch):
(TestExporterTest):
(TestExporterTest.test_export_interactive_mode):
(TestExporterTest.test_export_invalid_token):
(TestExporterTest.test_export_wrong_token):
(TestExporterTest.test_has_wpt_changes):
(TestExporterTest.test_has_no_wpt_changes_for_no_diff):
(TestExporterTest.test_ignore_changes_to_expected_file):

2:15 PM Changeset in webkit [232273] by Caio Lima
  • 6 edits
    8 adds in trunk

[ESNext][BigInt] Implement support for "<" and ">" relational operation
https://bugs.webkit.org/show_bug.cgi?id=185379

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/big-int-greater-than-general.js: Added.
  • stress/big-int-greater-than-jit.js: Added.
  • stress/big-int-greater-than-order-of-evaluation.js: Added.
  • stress/big-int-greater-than-wrapped-values.js: Added.
  • stress/big-int-less-than-general.js: Added.
  • stress/big-int-less-than-jit.js: Added.
  • stress/big-int-less-than-order-of-evaluation.js: Added.
  • stress/big-int-less-than-wrapped-values.js: Added.

Source/JavaScriptCore:

This patch is changing the jsLess` operation to follow the
semantics of Abstract Relational Comparison[1] that supports BigInt.
For that, we create 2 new helper functions bigIntCompareLess and
toPrimitiveNumeric that considers BigInt as a valid type to be
compared.

[1] - https://tc39.github.io/proposal-bigint/#sec-abstract-relational-comparison

  • runtime/JSBigInt.cpp:

(JSC::JSBigInt::unequalSign):
(JSC::JSBigInt::absoluteGreater):
(JSC::JSBigInt::absoluteLess):
(JSC::JSBigInt::compare):
(JSC::JSBigInt::absoluteCompare):

  • runtime/JSBigInt.h:
  • runtime/JSCJSValueInlines.h:

(JSC::JSValue::isPrimitive const):

  • runtime/Operations.h:

(JSC::bigIntCompareLess):
(JSC::toPrimitiveNumeric):
(JSC::jsLess):

1:30 PM Changeset in webkit [232272] by rniwa@webkit.org
  • 5 edits in trunk/Source/WebCore

iOS WK1: Occasional crash in sanitizedMarkupForFragmentInDocument
https://bugs.webkit.org/show_bug.cgi?id=186011

Reviewed by David Kilzer.

The crash was caused by the HTML parser in sanitizedMarkupForFragmentInDocument yielding in the web thread
when _WebThreadLock() sets webThreadShouldYield to true in the main thread.

No new tests. This is occasionally caught by existing tests.

  • editing/markup.cpp:

(WebCore::createPageForSanitizingWebContent): Fixed the bug by making the HTML parser never yield.
Also release-assert that the body is never null here.
(WebCore::sanitizedMarkupForFragmentInDocument): Removed superflous call to WTFMove since appendChild
takes a reference, not a Ref.

  • inspector/InspectorOverlay.cpp:

(WebCore::InspectorOverlay::overlayPage): Deployed the same fix.

  • loader/DocumentWriter.cpp:

(WebCore::DocumentWriter::insertDataSynchronously): Added.

  • loader/DocumentWriter.h:
1:04 PM Changeset in webkit [232271] by Yusuke Suzuki
  • 4 edits in trunk/Source/JavaScriptCore

[Baseline] Merge loading functionalities
https://bugs.webkit.org/show_bug.cgi?id=185907

Reviewed by Saam Barati.

This patch unifies emitXXXLoad functions in 32bit and 64bit.

  • jit/JITInlines.h:

(JSC::JIT::emitDoubleGetByVal):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emitDoubleLoad):
(JSC::JIT::emitContiguousLoad):
(JSC::JIT::emitArrayStorageLoad):
(JSC::JIT::emitIntTypedArrayGetByVal):
(JSC::JIT::emitFloatTypedArrayGetByVal):
Define register usage first, and share the same code in 32bit and 64bit.

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emitSlow_op_put_by_val):
Now C-stack is always enabled in JIT platform and temporary registers increases from 5 to 6 in x86.
We can remove this special handling.

(JSC::JIT::emitContiguousLoad): Deleted.
(JSC::JIT::emitDoubleLoad): Deleted.
(JSC::JIT::emitArrayStorageLoad): Deleted.

12:27 PM Changeset in webkit [232270] by Fujii Hironori
  • 6 edits in trunk/Tools

[Win][MiniBrowser] Move WK1 specific code from Common.cpp to MiniBrowser.cpp
https://bugs.webkit.org/show_bug.cgi?id=186029

Reviewed by Alex Christensen.

This is a sub task of Bug 184770.

  • MiniBrowser/win/Common.cpp:

(ToggleMenuItem): Extracted WK1 specific code to MiniBrowser::setPreference.
(Caches): Call MiniBrowser::updateStatistics instead of updateStatistics.
(AbortProc): Moved to MiniBrowser.cpp.
(getPrinterDC): Ditto.
(initDocStruct): Ditto.
(PrintView): Ditto.
(ToggleMenuFlag): Ditto.
(setWindowText): Ditto.
(updateStatistics): Ditto.

  • MiniBrowser/win/MainWindow.cpp:

(MainWindow::WndProc): Call MiniBrowser::print instead of PrintView.

  • MiniBrowser/win/MiniBrowser.cpp:

(AbortProc): Moved from Common.cpp.
(getPrinterDC): Moved from Common.cpp.
(initDocStruct): Moved from Common.cpp.
(setWindowText): Moved from Common.cpp.
(MiniBrowser::print): Renamed from PrintView of Common.cpp.
(MiniBrowser::updateStatistics): Renamed from updateStatistics of Common.cpp.
(MiniBrowser::setPreference): Extracted from ToggleMenuItem of Common.cpp.

  • MiniBrowser/win/MiniBrowser.h: Add method declarations.
  • MiniBrowser/win/MiniBrowserWebHost.cpp: Removed duplicated IWebFramePtr typedef.
11:56 AM Changeset in webkit [232269] by sbarati@apple.com
  • 13 edits in trunk

JSC should put bmalloc's scavenger into mini mode
https://bugs.webkit.org/show_bug.cgi?id=185988

Reviewed by Michael Saboff.

Source/bmalloc:

We expose an API for putting bmalloc into mini mode. All that means now
is that we'll run the scavenger more aggressively.

  • bmalloc/Scavenger.cpp:

(bmalloc::Scavenger::enableMiniMode):
(bmalloc::Scavenger::threadRunLoop):

  • bmalloc/Scavenger.h:
  • bmalloc/Sizes.h:
  • bmalloc/bmalloc.cpp:

(bmalloc::api::enableMiniMode):

  • bmalloc/bmalloc.h:

Source/JavaScriptCore:

When we InitializeThreading, we'll now enable bmalloc's mini mode
if the VM is in mini mode. This is an 8-10% progression on the footprint
at end score in run-testmem, making it a 4-5% memory score progression.
It's between a 0-1% regression in its time score.

  • runtime/InitializeThreading.cpp:

(JSC::initializeThreading):

Source/WTF:

  • wtf/FastMalloc.cpp:

(WTF::fastEnableMiniMode):

  • wtf/FastMalloc.h:

Tools:

This patch makes it so that we turn off the JIT when running run-testmem
that way we make JSC use its mini mode.

  • Scripts/run-testmem:
11:32 AM Changeset in webkit [232268] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Avoid unnecessary String allocation in isPublicSuffix(const String&)
https://bugs.webkit.org/show_bug.cgi?id=186054

Reviewed by Sam Weinig.

Avoid unnecessary String allocation in isPublicSuffix(const String&) by calling directly
the decodeHostName() overload taking in a NSString*. This overload returns a NSString*,
which is what we need. We would previously call the overloading taking in a String, which
would return a String, which we would have to convert back to a NSString*.

  • platform/mac/PublicSuffixMac.mm:

(WebCore::isPublicSuffix):

11:24 AM Changeset in webkit [232267] by commit-queue@webkit.org
  • 7 edits in trunk/Source/WebCore

Do even fewer allocations in URL host operations
https://bugs.webkit.org/show_bug.cgi?id=186003

Patch by Alex Christensen <achristensen@webkit.org> on 2018-05-29
Reviewed by Geoffrey Garen.

  • loader/ResourceLoadStatistics.cpp:

(WebCore::ResourceLoadStatistics::primaryDomain):

  • loader/ResourceLoadStatistics.h:
  • platform/URL.cpp:

(WebCore::URL::hostIsIPAddress):

  • platform/URL.h:
  • platform/mac/URLMac.mm:

(WebCore::URL::hostIsIPAddress):

  • platform/soup/URLSoup.cpp:

(WebCore::URL::hostIsIPAddress):

11:10 AM Changeset in webkit [232266] by jeffm@apple.com
  • 4 edits in trunk/Source/WebKit

Expose additional WKMenuItemIdentifier strings
https://bugs.webkit.org/show_bug.cgi?id=186041

Reviewed by Dan Bernstein.

Expose identifiers for media-related menu items.

  • UIProcess/API/Cocoa/WKMenuItemIdentifiers.mm:

Define new identifiers.

  • UIProcess/API/Cocoa/WKMenuItemIdentifiersPrivate.h:

Declare new identifiers.

  • UIProcess/mac/WebContextMenuProxyMac.mm:

(WebKit::menuItemIdentifier):
Map to new identifiers.

11:10 AM Changeset in webkit [232265] by commit-queue@webkit.org
  • 3 edits
    3 adds in trunk

Don't assert on m_actionsStart when setting actions on DFA nodes
https://bugs.webkit.org/show_bug.cgi?id=185979
<rdar://problem/39669458>

Patch by Tadeu Zagallo <Tadeu Zagallo> on 2018-05-29
Reviewed by Geoffrey Garen.

DFANode::setActions is called immediately after the node is created, and once again to set
the actions of catch-all regular expressions (.*) on the root node. That works because
m_actionsStart is initially 0, since the root was the first node to be created, but may fail
after minimizing the DFA, when the root may no longer be the first node, and therefore
m_actionsStart would not be 0, even if there are no actions attached to that node.

Source/WebCore:

Test: http/tests/contentextensions/root-actions.html

  • contentextensions/DFANode.h:

LayoutTests:

  • http/tests/contentextensions/root-actions-expected.txt: Added.
  • http/tests/contentextensions/root-actions.html: Added.
  • http/tests/contentextensions/root-actions.html.json: Added.
10:56 AM Changeset in webkit [232264] by Yusuke Suzuki
  • 2 edits in trunk/Source/WTF

Unreviewed, follow-up after r232244
https://bugs.webkit.org/show_bug.cgi?id=186023

_BitScanReverse64 is available only in X86_64 and ARM.

  • wtf/MathExtras.h:

(WTF::clz64):

10:31 AM Changeset in webkit [232263] by ggaren@apple.com
  • 5 edits in trunk/Source/WebKit

Removed some unused WebSQL trackers
https://bugs.webkit.org/show_bug.cgi?id=186026

Reviewed by Dan Bernstein.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::NetworkProcess):

  • NetworkProcess/NetworkProcess.h:
  • WebProcess/WebProcess.cpp:

(WebKit::m_nonVisibleProcessCleanupTimer):
(WebKit::m_webSQLiteDatabaseTracker): Deleted.

  • WebProcess/WebProcess.h:
10:28 AM Changeset in webkit [232262] by ggaren@apple.com
  • 2 edits in trunk/Source/bmalloc

Fixed the bmalloc build
https://bugs.webkit.org/show_bug.cgi?id=186025

Reviewed by Sam Weinig.

  • bmalloc.xcodeproj/project.pbxproj: Link Foundation because the

gigacage check needs it.

9:56 AM Changeset in webkit [232261] by caitp@igalia.com
  • 4 edits
    1 copy in trunk

[JSC] Fix Array.prototype.concat fast case when single argument is Proxy
https://bugs.webkit.org/show_bug.cgi?id=184267

Reviewed by Saam Barati.

JSTests:

  • stress/array-concat-fast-spread-proxy.js: Copied from JSTests/stress/array-concat-spread-proxy.js.

(arrayEq):
(catch):

  • stress/array-concat-spread-proxy.js:

Source/JavaScriptCore:

Before this patch, the fast case for Array.prototype.concat was taken if
there was a single argument passed to the function, which is either a
non-JSCell, or an ObjectType JSCell not marked as concat-spreadable.
This incorrectly prevented Proxy objects from being spread when
they were the only argument passed to A.prototype.concat(), violating ECMA-262.

  • builtins/ArrayPrototype.js:

(concat):

9:50 AM Changeset in webkit [232260] by pvollan@apple.com
  • 6 edits in trunk/Source/WebKit

Follow-up fixes after r228907.
https://bugs.webkit.org/show_bug.cgi?id=183338

Reviewed by Brent Fulgham.

Add screen properties to the WebProcess creation parameters, instead of sending
them in a message to the WebProcess just after starting it up.

  • Shared/WebProcessCreationParameters.cpp:

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

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

(WebKit::WebProcessPool::platformInitializeWebProcess):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::initializeNewWebProcess):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

9:19 AM Changeset in webkit [232259] by n_wang@apple.com
  • 8 edits in trunk

AX: setValue on contenteditable should preserve whitespace
https://bugs.webkit.org/show_bug.cgi?id=185897

Reviewed by Ryosuke Niwa.

Source/WebCore:

We should mimic typing when setting value to a contenteditable from accessibility
instead of mutating the DOM by using setInnerText.

Updated tests to cover this change.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::setValue):

LayoutTests:

  • accessibility/mac/AOM-event-accessiblesetvalue-expected.txt:
  • accessibility/mac/AOM-event-accessiblesetvalue.html:
  • accessibility/mac/set-value-editable-types-expected.txt:
  • accessibility/mac/set-value-editable-types.html:
9:12 AM Changeset in webkit [232258] by sihui_liu@apple.com
  • 4 edits in trunk

Unable to remove IndexedDB Databases with Cocoa API removeDataOfTypes
https://bugs.webkit.org/show_bug.cgi?id=185835
<rdar://problem/39142257>

Reviewed by Chris Dumez.

Source/WebKit:

Fix a wrong if condition: databases should be closed and deleted if websiteDataTypes contains
WebsiteDataType::IndexedDBDatabases.

  • StorageProcess/StorageProcess.cpp:

(WebKit::StorageProcess::deleteWebsiteDataForOrigins):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDBPersistence.mm:

(TEST):

8:19 AM Changeset in webkit [232257] by Alan Bujtas
  • 7 edits in trunk/Source/WebCore

[LFC] Miscellaneous fixes to ensure no assertion in LayoutContext::layout
https://bugs.webkit.org/show_bug.cgi?id=186052

Reviewed by Antti Koivisto.

With this patch, LayoutContext::layout() does not assert on <html><body><div></div></body></html> anymore.

  • layout/LayoutContext.cpp:

(WebCore::Layout::LayoutContext::initializeRoot): New context root is always a layout root.

  • layout/LayoutContext.h:
  • layout/Verification.cpp:

(WebCore::Layout::outputMismatchingBoxInformationIfNeeded):

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::layout const): we need computed margin/border/padding for width computation

  • layout/displaytree/DisplayBox.cpp: Add clone() method to be able to carry over the 'hasValid*' bits.

(WebCore::Display::Box::Style::Style):
(WebCore::Display::Box::borderBox const):
(WebCore::Display::Box::contentBox const):

  • layout/displaytree/DisplayBox.h:

(WebCore::Display::Box::Rect::operator LayoutRect const):
(WebCore::Display::Box::setSize):
(WebCore::Display::Box::setHasValidMargin):
(WebCore::Display::Box::setHasValidBorder):
(WebCore::Display::Box::setHasValidPadding):
(WebCore::Display::Box::Rect::setHasValidPosition):
(WebCore::Display::Box::Rect::setHasValidSize):
(WebCore::Display::Box::Rect::setSize):
(WebCore::Display::Box::Rect::clone const):
(WebCore::Display::Box::setMargin):
(WebCore::Display::Box::setBorder):
(WebCore::Display::Box::setPadding):
(WebCore::Display::Box::Rect::Rect): Deleted.

8:00 AM Changeset in webkit [232256] by Wenson Hsieh
  • 4 edits
    2 adds in trunk

[Extra zoom mode] "Significant area painted" rendering progress event is rarely fired
https://bugs.webkit.org/show_bug.cgi?id=186042
<rdar://problem/40604182>

Reviewed by Tim Horton.

Source/WebCore:

Makes a minor tweak to the size of the relevant view rect in extra zoom mode, such that it's no wider than the
visible content rect. Previously, the width of this rect has hard-coded to a value optimized for macOS (980),
which makes it difficult for content laid out at device width in extra zoom mode to cover a significant portion
of the relevant view rect.

Test: RenderingProgressTests.FirstPaintWithSignificantArea

  • page/Page.cpp:

(WebCore::relevantViewRect):

Tools:

Adds a new API test to check that the "significant area painting" rendering milestone is dispatched when a
significant portion of the page has been painted before document load is finished.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/paint-significant-area-milestone.html: Added.
  • TestWebKitAPI/Tests/ios/RenderingProgressTests.mm: Added.

(-[MissingResourceSchemeHandler webView:stopURLSchemeTask:]):
(-[MissingResourceSchemeHandler webView:startURLSchemeTask:]):
(-[RenderingProgressHandler initWithHandler:]):
(-[RenderingProgressHandler _webView:renderingProgressDidChange:]):
(TEST):

4:59 AM Changeset in webkit [232255] by graouts@webkit.org
  • 19 edits in trunk

[Web Animations] Handle relative length units
https://bugs.webkit.org/show_bug.cgi?id=186047

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Record WPT test progressions.

  • web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-context-expected.txt:

Source/WebCore:

In order to correctly handle relative units, such as "em", "vw" and "vh", we need to do two things.

First, because we need to apply the cascade to correctly compute relative lengths, we need to delay the computation of
"blending keyframes" to when we have both keyframes data and a valid target. This also means that we need to reset blending
keyframes when the target changes. As a result, old call sites of updateBlendingKeyframes() have been replaced by a call to
m_blendingKeyframes.clear() and the method now gets called as part of apply() with the RenderStyle of the targeted element
as a parameter.

Second, and as a result of the first change, we need to update the accelerated animation state based on animation
progress rather than when calling specific methods, such as Animation.play() and Animation.pause(), since blending
keyframes may not be available at those more specific call sites. We now have a new updateAcceleratedAnimationState()
method that gets called as part of apply(). We also rename animationPlayStateDidChange() to animationSuspensionStateDidChange()
since this method was specific to suspension and had a confusing name.

  • animation/AnimationEffectReadOnly.h: Rename animationPlayStateDidChange() to animationSuspensionStateDidChange().
  • animation/KeyframeEffectReadOnly.cpp:

(WebCore::KeyframeEffectReadOnly::getKeyframes): Fix a crash that revealed itself after other changes in this patch. We would later
call into ComputedStyleExtractor::animationSuspensionStateDidChange() and this would yield an assertion because we'd call potentially
call it with a custom CSS property.
(WebCore::KeyframeEffectReadOnly::processKeyframes): Reset blending keyframes instead of calling updateBlendingKeyframes() since
blending keyframes is now performed asynchronously upon style resolution.
(WebCore::KeyframeEffectReadOnly::updateBlendingKeyframes): Take the target's RenderStyle as a parameter and use it to reset the
associated StyleResolver's state, just like we do in StyleResolver::keyframeStylesForAnimation(), so that the CSS cascade is correctly
accounted for when computing values using relative length units. Since blending keyframes can now be computed several times for a
given set of keyframes, since the effect's target may change, we also need to create a copy of the MutableStyleProperties to pass
to StyleRuleKeyframe::create().
(WebCore::KeyframeEffectReadOnly::setTarget): Reset blending keyframes instead of calling updateBlendingKeyframes() since
blending keyframes is now performed asynchronously upon style resolution.
(WebCore::KeyframeEffectReadOnly::apply): Update blending keyframes and the accelerated animation state.
(WebCore::KeyframeEffectReadOnly::getAnimatedStyle): Make sure we have blending keyframes with a call to updateBlendingKeyframes()
in case the animation hasn't naturally progressed when this method is called.
(WebCore::KeyframeEffectReadOnly::setAnimatedPropertiesInStyle): Make sure we have blending keyframes with a call to
updateBlendingKeyframes() in case the animation hasn't naturally progressed when this method is called.
(WebCore::KeyframeEffectReadOnly::updateAcceleratedAnimationState): Account for the animation's local time and play state to update
the accelerated animation state.
(WebCore::KeyframeEffectReadOnly::addPendingAcceleratedAction): Record the last accelerated action in a member variable which we can
use to determine if we're running accelerated accounting for uncommited changes.
(WebCore::KeyframeEffectReadOnly::animationDidSeek): Only record an AcceleratedAction::Seek action if we're already running accelerated.
(WebCore::KeyframeEffectReadOnly::animationSuspensionStateDidChange): Only record an AcceleratedAction::Pause or AcceleratedAction::Play
action if we're already running accelerated.
(WebCore::KeyframeEffectReadOnly::applyPendingAcceleratedActions): Ensure we clone and clear the list of accelerated actions and check that
we have any cloned actions before proceeding any further. Then we can stop accounting for m_startedAccelerated since the list of accelerated
actions already account for animation state changes.
(WebCore::KeyframeEffectReadOnly::animationPlayStateDidChange): Deleted.

  • animation/KeyframeEffectReadOnly.h:

(WebCore::KeyframeEffectReadOnly::isRunningAccelerated const): Account for the m_lastRecordedAcceleratedAction to identify whether we're running.

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::play): Stop calling animationPlayStateDidChange() directly since the accelerated animation state is now updated when
the animation's effect is applied.
(WebCore::WebAnimation::pause): Stop calling animationPlayStateDidChange() directly since the accelerated animation state is now updated when
the animation's effect is applied.
(WebCore::WebAnimation::resolve): Make sure we update the finished state prior to applying the animation's effect since the play state can
change when updating the finished state and KeyframeEffectReadOnly::updateAcceleratedAnimationState(), which is called when calling into
KeyframeEffectReadOnly::apply(), relies on it to correctly update the accelerated animation state.
(WebCore::WebAnimation::setSuspended): Rename animationPlayStateDidChange() to animationSuspensionStateDidChange().

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::setNewStateWithElement): Add a new public method to reset a StyleResolver's state such that we can call it when creating
blending keyframes for JS-originated animations just like we do when creating blending keyframes for CSS Animations in keyframeStylesForAnimation().
(WebCore::StyleResolver::keyframeStylesForAnimation): Use the new setNewStateWithElement() method.

  • css/StyleResolver.h:

LayoutTests:

Record WPT test progressions and updated failures.

  • platform/ios/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt:
  • platform/ios/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-expected.txt:
  • platform/ios/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt:
  • platform/mac/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt:
  • platform/mac/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-expected.txt:
  • platform/mac/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt:
  • platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt:
  • platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-expected.txt:
  • platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt:
1:45 AM Changeset in webkit [232254] by commit-queue@webkit.org
  • 5 edits in trunk

[GStreamer] Update "qtdemux: Clarify field name about stream-encryption-system" patch
https://bugs.webkit.org/show_bug.cgi?id=186040

Source/WebCore:

Patch by Thibault Saunier <tsaunier@igalia.com> on 2018-05-29
Reviewed by Xabier Rodriguez-Calvar.

s/avalaible-stream-encryption-systems/available-stream-encryption-systems/g

Tests: imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-*

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::extractEventsAndSystemsFromMessage):

Tools:

The patch we merge contained a type and was merged in upstream GStreamer fixing that
(s/avalaible/available/).

Patch by Thibault Saunier <tsaunier@igalia.com> on 2018-05-29
Reviewed by Xabier Rodriguez-Calvar.

  • gstreamer/patches/gst-plugins-good-0003-qtdemux-Clarify-field-name-about-stream-encryption-s.patch:

May 28, 2018:

11:43 PM Changeset in webkit [232253] by Yusuke Suzuki
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] JSBigInt::digitDiv has undefined behavior which causes test failures
https://bugs.webkit.org/show_bug.cgi?id=186022

Reviewed by Darin Adler.

digitDiv performs Value64Bit >> 64 / Value32Bit >> 32, which is undefined behavior. And zero mask
creation has an issue (s should be casted to signed one before negating). They cause test failures
in non x86 / x86_64 environments. x86 and x86_64 work well since they have a fast path written
in asm.

This patch fixes digitDiv by carefully avoiding undefined behaviors. We mask the left value of the
rshift with digitBits - 1, which makes digitBits 0 while it keeps 0 <= n < digitBits values.
This makes the target rshift well-defined in C++. While produced value by the rshift covers 0 <= s < 64 (32
in 32bit envirnoment) cases, this rshift does not shift if s is 0. sZeroMask clears the value
if s is 0, so that s == 0 case is also covered. Note that s == 64 never happens since divisor
is never 0 here. We add assertion for that. We also fixes sZeroMask calculation.

This patch also fixes naming convention for constant values.

  • runtime/JSBigInt.cpp:

(JSC::JSBigInt::digitMul):
(JSC::JSBigInt::digitDiv):

  • runtime/JSBigInt.h:
8:46 PM Changeset in webkit [232252] by sihui_liu@apple.com
  • 2 edits in trunk/Tools

Add an API test to check process privilege when using Cookie API
https://bugs.webkit.org/show_bug.cgi?id=185406

Reviewed by Geoffrey Garen.

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/WKHTTPCookieStore.mm:

(TEST):

7:40 PM Changeset in webkit [232251] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix.

  • layout/displaytree/DisplayBox.h:

(WebCore::Display::Box::Rect::operator LayoutRect const):

1:39 PM Changeset in webkit [232250] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC] Add Rect interface to Display::Box
https://bugs.webkit.org/show_bug.cgi?id=186019

Reviewed by Antti Koivisto.

Having a dedicated Rect class and moving the geometry invalidation to it enables us to call
displayBox.contentBox().left() even when the widht/height are not computed yet.
Also having Rect with top/left/bottom/right interface is more aligned with the rest of the layout code than x/y/maxX/maxY.

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::contentHeightForFormattingContextRoot):

  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::staticPosition):

  • layout/displaytree/DisplayBox.cpp:

(WebCore::Display::Box::marginBox const):
(WebCore::Display::Box::borderBox const):
(WebCore::Display::Box::paddingBox const):
(WebCore::Display::Box::contentBox const):

  • layout/displaytree/DisplayBox.h:

(WebCore::Display::Box::Rect::invalidateTop):
(WebCore::Display::Box::Rect::invalidateLeft):
(WebCore::Display::Box::Rect::invalidateWidth):
(WebCore::Display::Box::Rect::invalidateHeight):
(WebCore::Display::Box::Rect::hasValidPosition const):
(WebCore::Display::Box::Rect::hasValidSize const):
(WebCore::Display::Box::Rect::hasValidGeometry const):
(WebCore::Display::Box::rect const):
(WebCore::Display::Box::top const):
(WebCore::Display::Box::left const):
(WebCore::Display::Box::bottom const):
(WebCore::Display::Box::right const):
(WebCore::Display::Box::topLeft const):
(WebCore::Display::Box::bottomRight const):
(WebCore::Display::Box::size const):
(WebCore::Display::Box::width const):
(WebCore::Display::Box::height const):
(WebCore::Display::Box::setTopLeft):
(WebCore::Display::Box::setTop):
(WebCore::Display::Box::setLeft):
(WebCore::Display::Box::setWidth):
(WebCore::Display::Box::setHeight):
(WebCore::Display::Box::Rect::invalidatePosition):
(WebCore::Display::Box::Rect::setHasValidPosition):
(WebCore::Display::Box::Rect::Rect):
(WebCore::Display::Box::Rect::top const):
(WebCore::Display::Box::Rect::left const):
(WebCore::Display::Box::Rect::bottom const):
(WebCore::Display::Box::Rect::right const):
(WebCore::Display::Box::Rect::topLeft const):
(WebCore::Display::Box::Rect::bottomRight const):
(WebCore::Display::Box::Rect::size const):
(WebCore::Display::Box::Rect::width const):
(WebCore::Display::Box::Rect::height const):
(WebCore::Display::Box::Rect::setTopLeft):
(WebCore::Display::Box::Rect::setTop):
(WebCore::Display::Box::Rect::setLeft):
(WebCore::Display::Box::Rect::setWidth):
(WebCore::Display::Box::Rect::setHeight):
(WebCore::Display::Box::Rect::shiftLeftTo):
(WebCore::Display::Box::Rect::shiftRightTo):
(WebCore::Display::Box::Rect::shiftTopTo):
(WebCore::Display::Box::Rect::shiftBottomTo):
(WebCore::Display::Box::Rect::expand):
(WebCore::Display::Box::invalidateTop): Deleted.
(WebCore::Display::Box::invalidateLeft): Deleted.
(WebCore::Display::Box::invalidateWidth): Deleted.
(WebCore::Display::Box::invalidateHeight): Deleted.
(WebCore::Display::Box::hasValidPosition const): Deleted.
(WebCore::Display::Box::hasValidSize const): Deleted.
(WebCore::Display::Box::hasValidGeometry const): Deleted.
(WebCore::Display::Box::invalidatePosition): Deleted.
(WebCore::Display::Box::setHasValidPosition): Deleted.

11:56 AM Changeset in webkit [232249] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC] Add formatting context testing codepath in FrameViewLayoutContext
https://bugs.webkit.org/show_bug.cgi?id=186036

Reviewed by Antti Koivisto.

This is to verify the formatting context layout correctness.

  • layout/LayoutContext.cpp:

(WebCore::Layout::LayoutContext::LayoutContext):
(WebCore::Layout::LayoutContext::initializeRoot):

  • layout/LayoutContext.h:

(WebCore::Layout::LayoutContext::displayBoxForLayoutBox const):

  • page/FrameViewLayoutContext.cpp:

(WebCore::layoutUsingFormattingContext):
(WebCore::FrameViewLayoutContext::layout):

10:55 AM Changeset in webkit [232248] by Alan Bujtas
  • 4 edits
    1 add in trunk/Source/WebCore

[LFC] Add layout tree verification.
https://bugs.webkit.org/show_bug.cgi?id=186018

Reviewed by Antti Koivisto.

Compare layout and render tree geometry and output the mismtaching rectangles.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj: Add missing headers and make then private.
  • layout/LayoutContext.h:
  • layout/Verification.cpp: Added.

(WebCore::Layout::outputMismatchedBoxInformationIfNeeded):
(WebCore::Layout::verifySubtree):
(WebCore::Layout::LayoutContext::verifyAndOutputLayoutTree const):

9:03 AM Changeset in webkit [232247] by Claudio Saavedra
  • 3 edits in trunk/LayoutTests

[GTK][WPE] AppCache test gardening

Some appcache tests were flaky due to console output, see
https://bugs.webkit.org/show_bug.cgi?id=185431 for more info.
Fixing those by dumping the output to stderr instead.

At the same time, clean up the expectations for appcache tests,
many were now passing, so several old bugs got closed now.

Unreviewed gardening.

  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
8:20 AM Changeset in webkit [232246] by commit-queue@webkit.org
  • 55 edits in trunk/Source

Modernize SVGRenderStyleDefs.h
https://bugs.webkit.org/show_bug.cgi?id=186024

Patch by Sam Weinig <sam@webkit.org> on 2018-05-28
Reviewed by Daniel Bates.

Source/WebCore:

Modernized the set of enums in SVGRenderStyleDefs.h and WindRule.h by:

  • Converting them to enum classes
  • Renaming them to remove unnecessary prefix 'E's
  • Renaming values to take advantage of enum class scoping (e.g. StyleDifferenceEqual -> StyleDifference::Equal)
  • Renaming to match modern conventions (e.g BNONE -> None)

Modernizes the following enums:

SVGPaintType
BaselineShift (renamed from EBaselineShift)
TextAnchor (renamed from ETextAnchor)
ColorInterpolation (renamed from EColorInterpolation)
ColorRendering (renamed from EColorRendering)
ShapeRendering (renamed from EShapeRendering)
GlyphOrientation (renamed from EGlyphOrientation)
AlignmentBaseline (renamed from EAlignmentBaseline)
DominantBaseline (renamed from EDominantBaseline)
VectorEffect (renamed from EVectorEffect)
BufferedRendering (renamed from EBufferedRendering)
MaskType (renamed from EMaskType)
WindRule

  • css/CSSBasicShapes.cpp:

(WebCore::buildPathString):
(WebCore::buildPolygonString):

  • css/CSSBasicShapes.h:
  • css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator WindRule const):
(WebCore::CSSPrimitiveValue::operator AlignmentBaseline const):
(WebCore::CSSPrimitiveValue::operator BufferedRendering const):
(WebCore::CSSPrimitiveValue::operator ColorInterpolation const):
(WebCore::CSSPrimitiveValue::operator ColorRendering const):
(WebCore::CSSPrimitiveValue::operator DominantBaseline const):
(WebCore::CSSPrimitiveValue::operator ShapeRendering const):
(WebCore::CSSPrimitiveValue::operator TextAnchor const):
(WebCore::CSSPrimitiveValue::operator VectorEffect const):
(WebCore::CSSPrimitiveValue::operator MaskType const):
(WebCore::CSSPrimitiveValue::operator EAlignmentBaseline const): Deleted.
(WebCore::CSSPrimitiveValue::operator EBufferedRendering const): Deleted.
(WebCore::CSSPrimitiveValue::operator EColorInterpolation const): Deleted.
(WebCore::CSSPrimitiveValue::operator EColorRendering const): Deleted.
(WebCore::CSSPrimitiveValue::operator EDominantBaseline const): Deleted.
(WebCore::CSSPrimitiveValue::operator EShapeRendering const): Deleted.
(WebCore::CSSPrimitiveValue::operator ETextAnchor const): Deleted.
(WebCore::CSSPrimitiveValue::operator EVectorEffect const): Deleted.
(WebCore::CSSPrimitiveValue::operator EMaskType const): Deleted.

  • css/SVGCSSComputedStyleDeclaration.cpp:

(WebCore::glyphOrientationToCSSPrimitiveValue):
(WebCore::ComputedStyleExtractor::adjustSVGPaintForCurrentColor const):
(WebCore::ComputedStyleExtractor::svgPropertyValue):

  • css/StyleBuilderConverter.h:

(WebCore::StyleBuilderConverter::convertGlyphOrientation):
(WebCore::StyleBuilderConverter::convertGlyphOrientationOrAuto):

  • css/StyleBuilderCustom.h:

(WebCore::StyleBuilderCustom::applyValueBaselineShift):
(WebCore::StyleBuilderCustom::applyValueFill):
(WebCore::StyleBuilderCustom::applyValueStroke):

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeBasicShapePolygon):
(WebCore::consumeBasicShapePath):

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::toWindRule):

  • page/animation/CSSPropertyAnimation.cpp:

(WebCore::PropertyWrapperSVGPaint::PropertyWrapperSVGPaint):

  • platform/graphics/FloatPolygon.cpp:

(WebCore::FloatPolygon::contains const):

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::fillRectWithRoundedHole):

  • platform/graphics/GraphicsContext.h:
  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::shapeLayerWindRule const):

  • platform/graphics/GraphicsLayer.h:
  • platform/graphics/GraphicsTypes.cpp:

(WebCore::operator<<):

  • platform/graphics/Path.h:
  • platform/graphics/ShadowBlur.cpp:

(WebCore::ShadowBlur::drawInsetShadow):
(WebCore::ShadowBlur::drawInsetShadowWithoutTiling):
(WebCore::ShadowBlur::drawInsetShadowWithTiling):

  • platform/graphics/WindRule.h:

(): Deleted.

  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:

(PlatformCALayerCocoa::shapeWindRule const):
(PlatformCALayerCocoa::setShapeWindRule):

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::calculateDrawingMode):
(WebCore::GraphicsContext::fillPath):
(WebCore::GraphicsContext::fillRectWithRoundedHole):
(WebCore::GraphicsContext::clipPath):

  • platform/graphics/cg/PathCG.cpp:

(WebCore::Path::contains const):

  • platform/mock/MockRealtimeVideoSource.cpp:

(WebCore::MockRealtimeVideoSource::drawAnimation):

  • rendering/FilterEffectRenderer.cpp:

(WebCore::FilterEffectRenderer::buildReferenceFilter):

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::paintBorder):
(WebCore::RenderBoxModelObject::clipBorderSidePolygon):

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::paintOutline):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::computeClipPath const):

  • rendering/style/BasicShapes.h:

(WebCore::BasicShape::windRule const):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::fillPaintType const):
(WebCore::RenderStyle::setFillPaintColor):
(WebCore::RenderStyle::strokePaintType const):
(WebCore::RenderStyle::setStrokePaintColor):

  • rendering/style/SVGRenderStyle.h:

(WebCore::SVGRenderStyle::initialAlignmentBaseline):
(WebCore::SVGRenderStyle::initialDominantBaseline):
(WebCore::SVGRenderStyle::initialBaselineShift):
(WebCore::SVGRenderStyle::initialVectorEffect):
(WebCore::SVGRenderStyle::initialBufferedRendering):
(WebCore::SVGRenderStyle::initialClipRule):
(WebCore::SVGRenderStyle::initialColorInterpolation):
(WebCore::SVGRenderStyle::initialColorInterpolationFilters):
(WebCore::SVGRenderStyle::initialColorRendering):
(WebCore::SVGRenderStyle::initialFillRule):
(WebCore::SVGRenderStyle::initialShapeRendering):
(WebCore::SVGRenderStyle::initialTextAnchor):
(WebCore::SVGRenderStyle::initialGlyphOrientationHorizontal):
(WebCore::SVGRenderStyle::initialGlyphOrientationVertical):
(WebCore::SVGRenderStyle::initialFillPaintType):
(WebCore::SVGRenderStyle::initialStrokePaintType):
(WebCore::SVGRenderStyle::initialMaskType):
(WebCore::SVGRenderStyle::setAlignmentBaseline):
(WebCore::SVGRenderStyle::setDominantBaseline):
(WebCore::SVGRenderStyle::setBaselineShift):
(WebCore::SVGRenderStyle::setVectorEffect):
(WebCore::SVGRenderStyle::setBufferedRendering):
(WebCore::SVGRenderStyle::setClipRule):
(WebCore::SVGRenderStyle::setColorInterpolation):
(WebCore::SVGRenderStyle::setColorInterpolationFilters):
(WebCore::SVGRenderStyle::setColorRendering):
(WebCore::SVGRenderStyle::setFillRule):
(WebCore::SVGRenderStyle::setShapeRendering):
(WebCore::SVGRenderStyle::setTextAnchor):
(WebCore::SVGRenderStyle::setGlyphOrientationHorizontal):
(WebCore::SVGRenderStyle::setGlyphOrientationVertical):
(WebCore::SVGRenderStyle::setMaskType):
(WebCore::SVGRenderStyle::alignmentBaseline const):
(WebCore::SVGRenderStyle::dominantBaseline const):
(WebCore::SVGRenderStyle::baselineShift const):
(WebCore::SVGRenderStyle::vectorEffect const):
(WebCore::SVGRenderStyle::bufferedRendering const):
(WebCore::SVGRenderStyle::clipRule const):
(WebCore::SVGRenderStyle::colorInterpolation const):
(WebCore::SVGRenderStyle::colorInterpolationFilters const):
(WebCore::SVGRenderStyle::colorRendering const):
(WebCore::SVGRenderStyle::fillRule const):
(WebCore::SVGRenderStyle::shapeRendering const):
(WebCore::SVGRenderStyle::textAnchor const):
(WebCore::SVGRenderStyle::glyphOrientationHorizontal const):
(WebCore::SVGRenderStyle::glyphOrientationVertical const):
(WebCore::SVGRenderStyle::fillPaintType const):
(WebCore::SVGRenderStyle::strokePaintType const):
(WebCore::SVGRenderStyle::maskType const):
(WebCore::SVGRenderStyle::visitedLinkFillPaintType const):
(WebCore::SVGRenderStyle::visitedLinkStrokePaintType const):
(WebCore::SVGRenderStyle::hasStroke const):
(WebCore::SVGRenderStyle::hasFill const):
(WebCore::SVGRenderStyle::setBitDefaults):

  • rendering/style/SVGRenderStyleDefs.h:

(WebCore::StyleFillData::create):
(WebCore::StyleFillData::operator!= const):
(WebCore::StyleStrokeData::create):
(WebCore::StyleStrokeData::operator!= const):
(WebCore::StyleStopData::create):
(WebCore::StyleStopData::operator!= const):
(WebCore::StyleTextData::create):
(WebCore::StyleTextData::operator!= const):
(WebCore::StyleMiscData::create):
(WebCore::StyleMiscData::operator!= const):
(WebCore::StyleShadowSVGData::create):
(WebCore::StyleShadowSVGData::operator!= const):
(WebCore::StyleResourceData::create):
(WebCore::StyleResourceData::operator!= const):
(WebCore::StyleInheritedResourceData::create):
(WebCore::StyleInheritedResourceData::operator!= const):
(WebCore::StyleLayoutData::create):
(WebCore::StyleLayoutData::operator!= const):
(): Deleted.

  • rendering/svg/RenderSVGImage.cpp:

(WebCore::RenderSVGImage::paint):

  • rendering/svg/RenderSVGRect.cpp:

(WebCore::RenderSVGRect::updateShapeFromElement):

  • rendering/svg/RenderSVGResource.cpp:

(WebCore::requestPaintingResource):

  • rendering/svg/RenderSVGResourceClipper.cpp:

(WebCore::RenderSVGResourceClipper::pathOnlyClipping):

  • rendering/svg/RenderSVGResourceFilter.cpp:

(WebCore::RenderSVGResourceFilter::buildPrimitives const):

  • rendering/svg/RenderSVGResourceGradient.cpp:

(WebCore::RenderSVGResourceGradient::applyResource):

  • rendering/svg/RenderSVGResourceMasker.cpp:

(WebCore::RenderSVGResourceMasker::applyResource):
(WebCore::RenderSVGResourceMasker::drawContentIntoMaskImage):

  • rendering/svg/RenderSVGResourcePattern.cpp:

(WebCore::RenderSVGResourcePattern::applyResource):

  • rendering/svg/RenderSVGShape.cpp:

(WebCore::RenderSVGShape::paint):

  • rendering/svg/RenderSVGShape.h:

(WebCore::RenderSVGShape::hasNonScalingStroke const):

  • rendering/svg/SVGRenderTreeAsText.cpp:

(WebCore::writeStyle):
(WebCore::writeSVGInlineTextBox):

  • rendering/svg/SVGResources.cpp:

(WebCore::paintingResourceFromSVGPaint):

  • rendering/svg/SVGTextChunk.cpp:

(WebCore::SVGTextChunk::SVGTextChunk):

  • rendering/svg/SVGTextLayoutEngineBaseline.cpp:

(WebCore::SVGTextLayoutEngineBaseline::calculateBaselineShift const):
(WebCore::SVGTextLayoutEngineBaseline::dominantBaselineToAlignmentBaseline const):
(WebCore::SVGTextLayoutEngineBaseline::calculateAlignmentBaselineShift const):
(WebCore::SVGTextLayoutEngineBaseline::calculateGlyphOrientationAngle const):

  • rendering/svg/SVGTextLayoutEngineBaseline.h:

Source/WebKit:

  • Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:

(WebKit::applyPropertiesToLayer):

  • Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:

(WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties):
Update for new enum names.

6:25 AM Changeset in webkit [232245] by Claudio Saavedra
  • 3 edits in trunk/LayoutTests

[GTK][WPE] transitions/interrupted-transition-hardware.html failing

Unreviewed gardening, image-only failure.

  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
5:26 AM Changeset in webkit [232244] by Yusuke Suzuki
  • 4 edits in trunk/Source

[WTF] Add clz32 / clz64 for MSVC
https://bugs.webkit.org/show_bug.cgi?id=186023

Reviewed by Daniel Bates.

Source/JavaScriptCore:

Move clz32 and clz64 to WTF.

  • runtime/MathCommon.h:

(JSC::clz32): Deleted.
(JSC::clz64): Deleted.

Source/WTF:

This patch adds efficient implementations of clz32 and clz64 for MSVC.
While MSVC has _lzcnt intrinsic, it is only valid if the CPU has lzcnt instruction.
Instead of checking cpuid here, we just use _BitScanReverse and _BitScanReverse64.

  • wtf/MathExtras.h:

(WTF::clz32):
(WTF::clz64):

3:57 AM Changeset in webkit [232243] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.21.3

WebKitGTK+ 2.21.3

3:56 AM Changeset in webkit [232242] by Carlos Garcia Campos
  • 4 edits in trunk

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.21.3 release.

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit:

  • gtk/NEWS: Add release notes for 2.21.3.
3:15 AM Changeset in webkit [232241] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[Web Animations] Test webanimations/css-animations.html is crashing
https://bugs.webkit.org/show_bug.cgi?id=186031

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2018-05-28
Reviewed by Antoine Quint.

This is another case of std::optional value being used while it's nullopt, I guess this started to fail when we
stopped using the WTF implementation of std::optional. The problem is that we try to get the current iteration
of a declarative animation when the active time is unresolved.

  • animation/DeclarativeAnimation.cpp:

(WebCore::DeclarativeAnimation::invalidateDOMEvents): Use value_or(0) instead of value() to get the current
iteration of the effect.

1:18 AM Changeset in webkit [232240] by commit-queue@webkit.org
  • 4 edits
    3 adds in trunk

[GStreamer] Handle changes in the "drm-preferred-decryption-system-id" NEED_CONTEXT message.
https://bugs.webkit.org/show_bug.cgi?id=185948

Patch by Thibault Saunier <tsaunier@igalia.com> on 2018-05-28
Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

  • The "stream-encryption-systems" field of the "drm-preferred-decryption-system-id" query was renamed to "avalaible-stream-encryption-systems"
  • It can now be NULL, meaning there is no decryptor avalaible.

Tests: imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-*

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::extractEventsAndSystemsFromMessage): Handle NULL value for "avalaible-stream-encryption-systems",
moved some code to make the order of the Arrays in the pair clearer.

Tools:

When the patch introducing gst_protection_filter_systems_by_available_decryptors was merged, we changed sensibly its behaviour
concerning the way empty results is represented (now returning NULL instead of an array of 1(NULL) element) and this change was not
properly taken into account in the qtdemux patch that uses it and got upstreamed. Those 3 new patches fixe that and change the
NEED_CONTEXT field names to clarify the meaning of "stream-encryption-systems".

  • gstreamer/jhbuild.modules:
  • gstreamer/patches/gst-plugins-good-0001-qtdemux-Do-not-run-the-preferred-decryptor-context-q.patch: Added. Merged upstream as 3e063703b3a51b8aaa7f75f36c4660c583a60e93
  • gstreamer/patches/gst-plugins-good-0002-qtdemux-Do-not-unref-a-NULL-stream_tags.patch: Added. Merged upstream as 43a540b1cd9f162d3dae5d50e36703dfaf558a3e
  • gstreamer/patches/gst-plugins-good-0003-qtdemux-Clarify-field-name-about-stream-encryption-s.patch: Added.

May 27, 2018:

10:31 PM Changeset in webkit [232239] by mitz@apple.com
  • 53 edits in trunk

Reverted the changes made for https://webkit.org/b/186016

They broke the USE(APPLE_INTERNAL_SDK) Sierra build.

10:04 PM Changeset in webkit [232238] by mitz@apple.com
  • 2 edits in trunk/Source/WebCore/PAL

Tried to fix the pre-High Sierra USE(APPLE_INTERNAL_SDK) build

  • pal/spi/cg/CoreGraphicsSPI.h: #undef confirm, which is defined by ApplicationServicesPriv.h.
9:31 PM Changeset in webkit [232237] by mitz@apple.com
  • 2 edits in trunk/Source/WebCore/PAL

Tried to fix the 32-bit USE(APPLE_INTERNAL_SDK) build.

  • pal/spi/mac/QuickDrawSPI.h: Import ApplicationServicesPriv.h instead of QuickDrawPriv.h.
9:21 PM Changeset in webkit [232236] by ddkilzer@apple.com
  • 16 edits
    2 adds
    1 delete in trunk/Source

[iOS] Fix warnings about leaks found by clang static analyzer
<https://webkit.org/b/186009>
<rdar://problem/40574267>

Reviewed by Daniel Bates.

Source/ThirdParty/libwebrtc:

  • Source/third_party/opus/src/src/opus_compare.c:
  • Source/third_party/opus/src/src/opus_demo.c:

(main):

  • Free allocated memory on early returns.
  • Source/third_party/usrsctp/usrsctplib/user_mbuf.c:

(clust_constructor_dup):
(mb_ctor_clust):

  • Free allocated memory if m is NULL.
  • Source/third_party/usrsctp/usrsctplib/user_socket.c:

(usrsctp_connect): Free sa memory if getsockaddr() returns an
error, but still allocates memory for sa.

  • WebKit/patch-opus.diff: Add patch for opus changes.
  • WebKit/patch-usrsctp: Rename empty file to patch-usrsctp.diff.
  • WebKit/patch-usrsctp.diff: Add patch for usrsctp changes.
  • libwebrtc.xcodeproj/project.pbxproj: Remove opus_compare.c,

opus_demo.c, and repacketizer_demo.c from opus target. This
code is for stand-alone tools, and although it may be removed
during dead code linking, we don't need to spend time compiling
it.

Source/WebCore:

  • Modules/webauthn/cocoa/LocalAuthenticator.mm:

(WebCore::LocalAuthenticator::makeCredential):
(WebCore::LocalAuthenticator::getAssertion):
(WebCore::LocalAuthenticator::issueClientCertificate const):

  • Don't leak CF objects in early return paths, and get rid of retained* variables, by making original variables use RetainPtr<>.
  • bridge/objc/WebScriptObject.mm:

(+[WebUndefined allocWithZone:]): Modernize WebUndefined by
using NeverDestroyed<RetainPr<WebUndefined>> type. Explicitly
retain the object returned on each call.
(+[WebUndefined undefined]): Explicitly autorelease the object
returned. Note that neither of these changes fixes the static
analyzer warnings in this source file.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::exernalDeviceDisplayNameForPlayer): Use RetainPtr<> to
stop leaking NSString objects in a loop.

  • platform/ios/wak/WAKWindow.h:

(-[WAKWindow _newFirstResponderAfterResigning]): Mark as
NS_RETURNS_NOT_RETAINED like the corresponding AppKit method
since this doesn't return a new object. This fixes some
false-positive leaks warnings.

Source/WebKit:

  • UIProcess/Automation/ios/WebAutomationSessionIOS.mm:

(WebKit::WebAutomationSession::platformSimulateKeySequence): Fix
leak of two WebEvent objects that happened in a loop.

  • UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:

(-[_WKPreviewControllerDelegate previewController:transitionImageForPreviewItem:contentRect:]):
Fix leak of a UIImage.

Source/WebKitLegacy/mac:

  • WebView/WebHTMLView.mm:

(-[WebHTMLView doCommandBySelector:]): Fix use of an
uninitialized boolean variable (eventWasHandled) that only
happened on iOS.

9:17 PM Changeset in webkit [232235] by mitz@apple.com
  • 52 edits in trunk

[Cocoa] Avoid importing directly from subumbrella frameworks
https://bugs.webkit.org/show_bug.cgi?id=186016

Reviewed by Sam Weinig.

Source/WebCore:

  • Configurations/WebCore.xcconfig: Removed -iframework options from OTHER_CFLAGS and OTHER_CPLUSPLUSFLAGS.
  • editing/mac/DictionaryLookup.mm: Import Quartz.h instead of a PDFKit header.
  • html/HTMLKeygenElement.cpp: Removed "using namespace WebCore" from this WebCore implementation file.
  • platform/mac/PlatformEventFactoryMac.mm: Import Carbon.h instead of HIToolbox headers.
  • platform/mac/PlatformScreenMac.mm: Import ApplicationServices.h instead of ColorSync.h when using SDKs earlier than 10.13.
  • platform/mediastream/CaptureDeviceManager.cpp: Enclosed the definitions in the WebCore namespace and removed "using namespace WebCore" from this WebCore implementation file.
  • platform/text/mac/TextEncodingRegistryMac.mm: Import Carbon.h instead of CarbonCore.h.

Source/WebCore/PAL:

  • Configurations/PAL.xcconfig: Removed -iframework options from OTHER_CFLAGS and OTHER_CPLUSPLUSFLAGS.
  • pal/spi/cg/CoreGraphicsSPI.h: Import ApplicationServices.h instead of ColorSync.h when using SDKs earlier than 10.13.
  • pal/spi/mac/HIToolboxSPI.h: Import CarbonPriv.h instead of HIToolboxPriv.h.
  • pal/spi/mac/QuickLookMacSPI.h: Import Quartz.h instead of a QuickLookUI header.

Source/WebKit:

  • Configurations/BaseTarget.xcconfig: Removed -iframework options from OTHER_CFLAGS and OTHER_CPLUSPLUSFLAGS.
  • UIProcess/Automation/mac/WebAutomationSessionMac.mm: Import Carbon.h instead of an HIToolbox header.
  • UIProcess/Cocoa/WebViewImpl.mm: Ditto.
  • UIProcess/mac/WKPrintingView.mm: Import Quartz.h instead of a PDFKit header.
  • UIProcess/mac/WKTextInputWindowController.mm: Import Carbon.h instead of an HIToolbox header.
  • WebProcess/Plugins/PDF/PDFAnnotationTextWidgetDetails.h: Import Quartz.h instead of a PDFKit header.
  • WebProcess/Plugins/PDF/PDFLayerControllerSPI.h: Ditto.
  • WebProcess/Plugins/PDF/PDFPlugin.mm: Ditto.
  • WebProcess/Plugins/PDF/PDFPluginAnnotation.mm: Ditto.
  • WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm: Ditto.
  • WebProcess/Plugins/PDF/PDFPluginPasswordField.mm: Ditto.
  • WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm: Ditto.
  • WebProcess/WebPage/mac/WebPageMac.mm: Ditto.

Source/WebKitLegacy/mac:

  • Carbon/CarbonWindowAdapter.h: Import Carbon.h instead of HIToolbox headers.
  • Carbon/CarbonWindowAdapter.mm: Ditto.
  • Carbon/CarbonWindowFrame.m: Ditto.
  • Carbon/HIViewAdapter.h: Ditto.
  • Configurations/WebKitLegacy.xcconfig: Removed -iframework options from OTHER_CFLAGS and OTHER_CPLUSPLUSFLAGS.
  • Plugins/WebNetscapePluginEventHandlerCarbon.mm: Import Carbon.h instead of CarbonEvents.h.
  • WebView/WebPDFDocumentExtras.mm: Import Quartz.h instead of a PDFKit header.
  • WebView/WebPDFView.h: Ditto.

Tools:

  • DumpRenderTree/cg/PixelDumpSupportCG.cpp: Include CoreServices.h instead of a LaunchServices header.
  • DumpRenderTree/mac/Configurations/BaseTarget.xcconfig: Removed -iframework options from OTHER_CFLAGS and OTHER_CPLUSPLUSFLAGS.
  • DumpRenderTree/mac/LayoutTestHelper.m: Import ApplicationServices.h instead of ColorSync.h when using SDKs earlier than 10.13.
  • TestWebKitAPI/Configurations/Base.xcconfig: Removed -iframework options from OTHER_CFLAGS and OTHER_CPLUSPLUSFLAGS.
  • TestWebKitAPI/Tests/mac/MediaPlaybackSleepAssertion.mm: Import Carbon.h instead of an HIToolbox header.
  • WebKitTestRunner/Configurations/BaseTarget.xcconfig: Removed -iframework options from OTHER_CFLAGS and OTHER_CPLUSPLUSFLAGS.
  • WebKitTestRunner/cg/TestInvocationCG.cpp: Include CoreServices.h instead of a LaunchServices header.
8:49 PM Changeset in webkit [232234] by Fujii Hironori
  • 4 edits
    2 adds in trunk/Tools

[Win][MiniBrowser] Add MainWindow class
https://bugs.webkit.org/show_bug.cgi?id=185814

Reviewed by Per Arne Vollan.

This is a sub task of Bug 184770. Added a new class MainWindow to
represent the main window which will be shared among WK1 and WK2.

This change is partial so that it's easy to review this patch.
I'll move more functions into MainWindow.cpp, and remove more
global variables in forthcoming patches.

  • MiniBrowser/win/CMakeLists.txt: Added MainWindow.cpp.
  • MiniBrowser/win/Common.cpp: Removed MainWindow related global

variables hMainWnd, hURLBarWnd, hBackButtonWnd and
hForwardButtonWnd. Added a new global variable gMainWindow.
(WndProc): Moved to MainWindow.cpp.
(resizeSubViews): Ditto.
(ToggleMenuFlag): Removed static to be called from MainWindow.cpp.
(ToggleMenuItem): Ditto.
(CustomUserAgent): Follow the global variables removal.
(DisplayAuthDialog): Ditto.
(loadURL): Ditto.
(WndProc): Renamed to MainWindow::WndProc.

  • MiniBrowser/win/MainWindow.cpp: Added.

(MainWindow::registerClass): Renamed from MyRegisterClass of WinMain.cpp.
(MainWindow::init): Extracted MainWindow initialization code from wWinMain.
(MainWindow::resizeSubViews): Moved from Common.cpp.
(MainWindow::WndProc): Ditto.

  • MiniBrowser/win/MainWindow.h: Added.

(MainWindow::hwnd):
(MainWindow::browserWindow):

  • MiniBrowser/win/MiniBrowser.cpp:

(MiniBrowser::init):
(MiniBrowser::prepareViews): Extract some code into MiniBrowser::loadDefaultHTML.
(MiniBrowser::loadDefaultHTML): Extracted from MiniBrowser::prepareViews.

  • MiniBrowser/win/MiniBrowser.h:
  • MiniBrowser/win/WinMain.cpp:

(wWinMain): Extracted MainWindow initialization code into MainWindow::init.
(MyRegisterClass): Moved to MainWindow.cpp.

8:21 PM Changeset in webkit [232233] by Fujii Hironori
  • 5 edits in trunk/Source

REGRESSION(r232198) [WinCairo] cannot convert from 'WTF::StringView' to 'const WTF::String'
https://bugs.webkit.org/show_bug.cgi?id=186027

Unreviewed build fix

Source/WebCore:

No new tests (No behavior change).

  • platform/network/curl/AuthenticationChallengeCurl.cpp:

(WebCore::AuthenticationChallenge::protectionSpaceFromHandle):

  • platform/network/curl/CurlRequest.cpp:

(WebCore::CurlRequest::setupTransfer):
(WebCore::CurlRequest::willSetupSslCtx):

Source/WebKitLegacy/win:

  • WebMutableURLRequest.cpp:

(WebMutableURLRequest::setAllowsAnyHTTPSCertificate):
(WebMutableURLRequest::setClientCertificate):

8:19 PM Changeset in webkit [232232] by Caio Lima
  • 28 edits
    3 adds in trunk

[ESNext][BigInt] Implement "+" and "-" unary operation
https://bugs.webkit.org/show_bug.cgi?id=182214

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/big-int-negate-basic.js: Added.
  • stress/big-int-negate-jit.js: Added.
  • stress/big-int-unary-plus.js: Added.

Source/JavaScriptCore:

This Patch is implementing support to "-" unary operation on BigInt.
It is also changing the logic of ASTBuilder::makeNegateNode to
calculate BigInt literals with properly sign, avoiding
unecessary operation. It required a refactoring into
JSBigInt::parseInt to consider the sign as parameter.

We are also introducing a new DFG Node called ValueNegate to handle BigInt negate
operations. With the introduction of BigInt, it is not true
that every negate operation returns a Number. As ArithNegate is a
node that considers its result is always a Number, like all other
Arith<Operation>, we decided to keep this consistency and use ValueNegate when
speculation indicates that the operand is a BigInt.
This design is following the same distinction between ArithAdd and
ValueAdd. Also, this new node will make simpler the introduction of
optimizations when we create speculation paths for BigInt in future
patches.

In the case of "+" unary operation on BigInt, the current semantic we already have
is correctly, since it needs to throw TypeError because of ToNumber call[1].
In such case, we are adding tests to verify other edge cases.

[1] - https://tc39.github.io/proposal-bigint/#sec-unary-plus-operator

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::addBigIntConstant):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::BigIntNode::jsValue const):

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::makeSafe):
(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGNode.h:

(JSC::DFG::Node::arithNodeFlags):

  • dfg/DFGNodeType.h:
  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileValueNegate):
(JSC::DFG::SpeculativeJIT::compileArithNegate):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileValueNegate):
(JSC::FTL::DFG::LowerDFGToB3::compileArithNegate):

  • jit/JITOperations.cpp:
  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createBigIntWithSign):
(JSC::ASTBuilder::createBigIntFromUnaryOperation):
(JSC::ASTBuilder::makeNegateNode):

  • parser/NodeConstructors.h:

(JSC::BigIntNode::BigIntNode):

  • parser/Nodes.h:
  • runtime/CommonSlowPaths.cpp:

(JSC::updateArithProfileForUnaryArithOp):
(JSC::SLOW_PATH_DECL):

  • runtime/JSBigInt.cpp:

(JSC::JSBigInt::parseInt):

  • runtime/JSBigInt.h:
  • runtime/JSCJSValueInlines.h:

(JSC::JSValue::strictEqualSlowCaseInline):

7:51 PM Changeset in webkit [232231] by mitz@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Tried to fix the 32-bit !ASSERT_DISABLED build after r232211.

  • jit/JITOperations.cpp:
7:22 PM Changeset in webkit [232230] by Fujii Hironori
  • 4 edits in trunk/Tools

[Win][MiniBrowser] Remove URL argument of MiniBrowser::init
https://bugs.webkit.org/show_bug.cgi?id=185969

Reviewed by Alex Christensen.

MiniBrowser::init takes URL argument, but it's used only for
loading default HTML if URL is not given.

  • Add a new method MiniBrowser::loadHTMLString
  • Remove loadHTMLString process from MiniBrowser::prepareViews
  • MiniBrowser/win/MiniBrowser.cpp:

(MiniBrowser::init): Removed requestedURL argument.
(MiniBrowser::prepareViews): Ditto.
(MiniBrowser::loadHTMLString): New.
(MiniBrowser::loadURL): Return E_INVALIDARG if passedURL is null instead of calling loadHTMLString.

  • MiniBrowser/win/MiniBrowser.h: Removed URL argument. Added loadHTMLString.
  • MiniBrowser/win/WinMain.cpp:

(wWinMain): Call MiniBrowser::loadHTMLString if URL is not given.

5:49 PM Changeset in webkit [232229] by commit-queue@webkit.org
  • 39 edits in trunk/Source

Modernize RenderStyleConstants.h - Part 3
https://bugs.webkit.org/show_bug.cgi?id=186015

Patch by Sam Weinig <sam@webkit.org> on 2018-05-27
Reviewed by Yusuke Suzuki.

Source/WebCore:

Modernized the third and final set of enums in RenderStyleConstants.h by:

  • Converting them to enum classes
  • Renaming them to remove unnecessary prefix 'E's
  • Renaming values to take advantage of enum class scoping (e.g. StyleDifferenceEqual -> StyleDifference::Equal)

Modernizes the following enums:

TextDecoration
TextDecorationSkip (renamed from TextDecorationSkipItems)
TextUnderlinePosition
HangingPunctuation
SpeakAs (renamed from ESpeakAs)
TextEmphasisPosition (renamed from TextEmphasisPositions)

This final set of enums are mostly (TextUnderlinePosition isn't really) used as bitmasks,
so this change also converts their uses to use OptionSet.

  • accessibility/AccessibilityObject.h:

(WebCore::AccessibilityObject::speakAsProperty const):

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::speakAsProperty const):
(WebCore::AccessibilityRenderObject::hasPlainText const):
(WebCore::AccessibilityRenderObject::hasUnderline const):

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

(AXAttributeStringSetStyle):

  • accessibility/mac/WebAccessibilityObjectWrapperBase.mm:

(-[WebAccessibilityObjectWrapperBase baseAccessibilitySpeechHint]):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(AXAttributeStringSetStyle):

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::renderTextDecorationFlagsToCSSValue):
(WebCore::renderTextDecorationSkipFlagsToCSSValue):
(WebCore::renderEmphasisPositionFlagsToCSSValue):
(WebCore::speakAsToCSSValue):
(WebCore::hangingPunctuationToCSSValue):

  • css/CSSLineBoxContainValue.h:
  • css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::operator HangingPunctuation const):
(WebCore::CSSPrimitiveValue::operator TextDecoration const):
(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator TextUnderlinePosition const):
(WebCore::CSSPrimitiveValue::operator SpeakAs const):
(WebCore::CSSPrimitiveValue::operator ESpeakAs const): Deleted.

  • css/StyleBuilderConverter.h:

(WebCore::StyleBuilderConverter::convertTextDecoration):
(WebCore::StyleBuilderConverter::valueToEmphasisPosition):
(WebCore::StyleBuilderConverter::convertTextEmphasisPosition):
(WebCore::StyleBuilderConverter::convertTextUnderlinePosition):
(WebCore::StyleBuilderConverter::valueToDecorationSkip):
(WebCore::StyleBuilderConverter::convertTextDecorationSkip):
(WebCore::StyleBuilderConverter::convertSpeakAs):
(WebCore::StyleBuilderConverter::convertHangingPunctuation):

  • editing/cocoa/EditorCocoa.mm:

(WebCore::Editor::getTextDecorationAttributesRespectingTypingStyle const):

  • editing/cocoa/HTMLConverter.mm:

(WebCore::editingAttributedStringFromRange):

  • rendering/InlineFlowBox.cpp:

(WebCore::InlineFlowBox::maxLogicalBottomForTextDecorationLine const):
(WebCore::InlineFlowBox::minLogicalTopForTextDecorationLine const):

  • rendering/InlineFlowBox.h:
  • rendering/InlineTextBox.cpp:

(WebCore::emphasisPositionHasNeitherLeftNorRight):
(WebCore::InlineTextBox::emphasisMarkExistsAndIsAbove const):
(WebCore::InlineTextBox::paint):
(WebCore::InlineTextBox::paintMarkedTextDecoration):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::computeInlinePreferredLogicalWidths const):

  • rendering/RenderBlockLineLayout.cpp:

(WebCore::setLogicalWidthForTextRun):
(WebCore::RenderBlockFlow::computeInlineDirectionPositionsForSegment):

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::enclosingRendererWithTextDecoration const):

  • rendering/RenderElement.h:
  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::addCell):

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseForStyle):
(WebCore::SimpleLineLayout::canUseForWithReason):

  • rendering/SimpleLineLayoutFunctions.cpp:

(WebCore::SimpleLineLayout::paintFlow):

  • rendering/TextDecorationPainter.cpp:

(WebCore::TextDecorationPainter::TextDecorationPainter):
(WebCore::TextDecorationPainter::paintTextDecoration):
(WebCore::collectStylesForRenderer):
(WebCore::TextDecorationPainter::stylesForRenderer):

  • rendering/TextDecorationPainter.h:
  • rendering/TextPaintStyle.cpp:

(WebCore::computeTextPaintStyle):

  • rendering/line/BreakingContext.h:

(WebCore::BreakingContext::handleText):

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::RenderStyle):
(WebCore::RenderStyle::changeAffectsVisualOverflow const):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::textDecorationsInEffect const):
(WebCore::RenderStyle::textDecoration const):
(WebCore::RenderStyle::textDecorationSkip const):
(WebCore::RenderStyle::hangingPunctuation const):
(WebCore::RenderStyle::textEmphasisPosition const):
(WebCore::RenderStyle::speakAs const):
(WebCore::RenderStyle::addToTextDecorationsInEffect):
(WebCore::RenderStyle::setTextDecorationsInEffect):
(WebCore::RenderStyle::setTextDecoration):
(WebCore::RenderStyle::setTextDecorationSkip):
(WebCore::RenderStyle::setSpeakAs):
(WebCore::RenderStyle::setTextEmphasisPosition):
(WebCore::RenderStyle::setHangingPunctuation):
(WebCore::RenderStyle::initialHangingPunctuation):
(WebCore::RenderStyle::initialTextDecoration):
(WebCore::RenderStyle::initialTextDecorationSkip):
(WebCore::RenderStyle::initialTextUnderlinePosition):
(WebCore::RenderStyle::initialSpeakAs):
(WebCore::RenderStyle::initialTextEmphasisPosition):

  • rendering/style/RenderStyleConstants.h:

(WebCore::operator|): Deleted.
(WebCore::operator|=): Deleted.

  • rendering/style/StyleRareInheritedData.cpp:

(WebCore::StyleRareInheritedData::StyleRareInheritedData):

  • rendering/style/StyleVisualData.cpp:

(WebCore::StyleVisualData::StyleVisualData):

  • rendering/svg/SVGInlineTextBox.cpp:

(WebCore::SVGInlineTextBox::paint):
(WebCore::positionOffsetForDecoration):
(WebCore::thicknessForDecoration):
(WebCore::findRendererDefininingTextDecoration):
(WebCore::SVGInlineTextBox::paintDecoration):
(WebCore::SVGInlineTextBox::paintDecorationWithStyle):

  • rendering/svg/SVGInlineTextBox.h:
  • style/InlineTextBoxStyle.cpp:

(WebCore::computeUnderlineOffset):
(WebCore::visualOverflowForDecorations):

Source/WebKitLegacy/mac:

  • WebView/WebView.mm:

(-[WebView updateTextTouchBar]):
Update for new enum name.

9:50 AM Changeset in webkit [232228] by ddkilzer@apple.com
  • 4 edits
    2 adds in trunk/Tools

svn-apply fails when a patch has an empty file
<https://webkit.org/b/29684>

Reviewed by Daniel Bates.

Prior to this change, applying the following patches resulted in:

  • svn: add empty file (failure)
  • svn: delete empty file (failure)
  • svn: rename empty file (failure)
  • git: add empty file (false-positive success)
  • git: delete empty file (success)
  • git: rename empty file (failure)
  • Scripts/VCSUtils.pm:

(parseSvnDiffHeader): Handle the case when there is no patch
following the header. If the file exists and is empty, that
means it's a deletion. If the file does not exist, that means
it's an addition. Everything else is a fatal error.

  • Scripts/svn-apply:

(patch):

  • Only apply a patch for deletion if it has one or more text chunks.
  • Add a case to handle adding an empty file (an addition with no text chunks), and verify the file doesn't exist yet.
  • Any unhandled patch is a fatal error.
  • Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:

Add tests for adding an empty file and deleting an empty file.

  • Scripts/webkitperl/VCSUtils_unittest/resources/empty.txt: Add.

Used by parseSvnDiffHeader.pl unit test for "add an empty file"
test case.

May 26, 2018:

1:59 PM Changeset in webkit [232227] by fpizlo@apple.com
  • 3 edits in trunk/Source/WTF

testair sometimes crashes due to races in initialization of ARC4RandomNumberGenerator
https://bugs.webkit.org/show_bug.cgi?id=186014

Reviewed by Yusuke Suzuki.

testair launches a bunch of threads and the threads do B3 things that use random numbers.
Sometimes two threads will initialize the random number generator at the same time, because
that's what happens when you use static NeverDestroyed<>.

This changes that code to use std::call_once to initialize the shared
ARC4RandomNumberGenerator.

Also, this adds a diagnostic message to the lock's assertion. This assertion was the symptom
of the race, and knowing the state of the lock when the assertion fired gave a darn good clue
about what was going on: the lock's value was 0 at time of unlock, implying that another
thread reinitialized the lock to zero by rerunning the constructor.

  • wtf/CryptographicallyRandomNumber.cpp:
  • wtf/LockAlgorithmInlines.h:

(WTF::Hooks>::unlockSlow):

11:17 AM Changeset in webkit [232226] by Yusuke Suzuki
  • 10 edits in trunk

[JSC] Rename Array#flatten to flat
https://bugs.webkit.org/show_bug.cgi?id=186012

Reviewed by Saam Barati.

JSTests:

  • stress/array-flatten.js:

(shouldThrow):

  • test262/expectations.yaml:

Source/JavaScriptCore:

Rename Array#flatten to Array#flat. This rename is done in TC39 since flatten
conflicts with the mootools' function name.

  • builtins/ArrayPrototype.js:

(globalPrivate.flatIntoArray):
(flat):
(globalPrivate.flatIntoArrayWithCallback):
(flatMap):
(globalPrivate.flattenIntoArray): Deleted.
(flatten): Deleted.
(globalPrivate.flattenIntoArrayWithCallback): Deleted.

  • runtime/ArrayPrototype.cpp:

(JSC::ArrayPrototype::finishCreation):

LayoutTests:

  • inspector/model/remote-object-get-properties-expected.txt:
  • js/Object-getOwnPropertyNames-expected.txt:
  • js/script-tests/Object-getOwnPropertyNames.js:
8:26 AM Changeset in webkit [232225] by Alan Bujtas
  • 8 edits
    1 delete in trunk/Source/WebCore

[LFC] Implement margin computation
https://bugs.webkit.org/show_bug.cgi?id=186008

Reviewed by Antti Koivisto.

  • WebCore.xcodeproj/project.pbxproj:
  • layout/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::computeMargin const):
(WebCore::Layout::FormattingContext::marginTop const): Deleted.
(WebCore::Layout::FormattingContext::marginLeft const): Deleted.
(WebCore::Layout::FormattingContext::marginBottom const): Deleted.
(WebCore::Layout::FormattingContext::marginRight const): Deleted.

  • layout/FormattingContext.h:
  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::layout const):
(WebCore::Layout::BlockFormattingContext::computeMargin const):
(WebCore::Layout::BlockFormattingContext::marginTop const): Deleted.
(WebCore::Layout::BlockFormattingContext::marginBottom const): Deleted.

  • layout/blockformatting/BlockFormattingContext.h:
  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeight):
(WebCore::Layout::BlockFormattingContext::Geometry::computedMargin):

  • layout/blockformatting/BlockMarginCollapse.cpp:

(WebCore::Layout::_isMarginBottomCollapsedWithParent):
(WebCore::Layout::collapsedMarginBottomFromLastChild):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginTop):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBottom):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::isMarginBottomCollapsedWithParent):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::isMarginTopCollapsedWithParentMarginBottom):
(WebCore::Layout::BlockMarginCollapse::marginTop): Deleted.
(WebCore::Layout::BlockMarginCollapse::marginBottom): Deleted.
(WebCore::Layout::BlockMarginCollapse::isMarginBottomCollapsedWithParent): Deleted.
(WebCore::Layout::BlockMarginCollapse::isMarginTopCollapsedWithParentMarginBottom): Deleted.

  • layout/blockformatting/BlockMarginCollapse.h: Removed.
3:55 AM Changeset in webkit [232224] by Yusuke Suzuki
  • 185 edits
    24 copies
    5 moves
    80 adds
    2 deletes in trunk/JSTests

Upgrade test262 to May 24 version
https://bugs.webkit.org/show_bug.cgi?id=185937

Reviewed by Darin Adler.

  • test262/expectations.yaml:
  • test262/harness/doneprintHandle.js:

(DONE):

  • test262/latest-changes-summary.txt:
  • test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-global-init.js:
  • test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-non-enumerable-global-init.js: Added.
  • test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-global-init.js:
  • test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-global-init.js.
  • test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-global-init.js:
  • test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-global-init.js.
  • test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-global-init.js:
  • test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-global-init.js.
  • test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-global-init.js:
  • test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-global-init.js.
  • test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-global-init.js:
  • test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-global-init.js.
  • test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-global-init.js:
  • test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-non-enumerable-global-init.js: Added.
  • test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-global-init.js:
  • test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-non-enumerable-global-init.js: Added.
  • test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-existing-global-init.js:
  • test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-existing-non-enumerable-global-init.js: Added.
  • test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-global-init.js:
  • test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-global-init.js.
  • test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-global-init.js:
  • test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-global-init.js.
  • test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-global-init.js:
  • test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-global-init.js.
  • test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-global-init.js:
  • test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-global-init.js.
  • test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-global-init.js:
  • test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-global-init.js.
  • test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-existing-global-init.js:
  • test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-existing-non-enumerable-global-init.js: Added.
  • test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-existing-global-init.js:
  • test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-existing-non-enumerable-global-init.js: Added.
  • test262/test/annexB/language/global-code/block-decl-global-existing-global-init.js: Added.

(262.evalScript.f):

  • test262/test/annexB/language/global-code/block-decl-global-existing-non-enumerable-global-init.js: Added.

(262.evalScript.f):

  • test262/test/annexB/language/global-code/if-decl-else-decl-a-global-existing-global-init.js: Added.

(262.evalScript.true.f):
(else._f):

  • test262/test/annexB/language/global-code/if-decl-else-decl-a-global-existing-non-enumerable-global-init.js: Added.

(262.evalScript.true.f):
(else._f):

  • test262/test/annexB/language/global-code/if-decl-else-decl-b-global-existing-global-init.js: Added.

(262.evalScript.false._f):
(else.f):

  • test262/test/annexB/language/global-code/if-decl-else-decl-b-global-existing-non-enumerable-global-init.js: Added.

(262.evalScript.false._f):
(else.f):

  • test262/test/annexB/language/global-code/if-decl-else-stmt-global-existing-global-init.js: Added.

(262.evalScript.true.f):

  • test262/test/annexB/language/global-code/if-decl-else-stmt-global-existing-non-enumerable-global-init.js: Added.

(262.evalScript.true.f):

  • test262/test/annexB/language/global-code/if-decl-no-else-global-existing-global-init.js: Added.

(262.evalScript.true.f):

  • test262/test/annexB/language/global-code/if-decl-no-else-global-existing-non-enumerable-global-init.js: Added.

(262.evalScript.true.f):

  • test262/test/annexB/language/global-code/if-stmt-else-decl-global-existing-global-init.js: Added.

(else.f):

  • test262/test/annexB/language/global-code/if-stmt-else-decl-global-existing-non-enumerable-global-init.js: Added.

(else.f):

  • test262/test/annexB/language/global-code/switch-case-global-existing-global-init.js: Added.

(262.evalScript.switch.case.1):
(262.evalScript.switch):

  • test262/test/annexB/language/global-code/switch-case-global-existing-non-enumerable-global-init.js: Added.

(262.evalScript.switch.case.1):
(262.evalScript.switch):

  • test262/test/annexB/language/global-code/switch-dflt-global-existing-global-init.js: Added.

(262.evalScript.switch.default):
(262.evalScript.switch):

  • test262/test/annexB/language/global-code/switch-dflt-global-existing-non-enumerable-global-init.js: Added.

(262.evalScript.switch.default):
(262.evalScript.switch):

  • test262/test/built-ins/Array/prototype/flat/array-like-objects.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/array-like-objects.js.
  • test262/test/built-ins/Array/prototype/flat/bound-function-call.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/bound-function-call.js.
  • test262/test/built-ins/Array/prototype/flat/empty-array-elements.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/empty-array-elements.js.
  • test262/test/built-ins/Array/prototype/flat/empty-object-elements.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/empty-object-elements.js.
  • test262/test/built-ins/Array/prototype/flat/length.js: Added.
  • test262/test/built-ins/Array/prototype/flat/name.js: Added.
  • test262/test/built-ins/Array/prototype/flat/non-numeric-depth-should-not-throw.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/non-numeric-depth-should-not-throw.js.
  • test262/test/built-ins/Array/prototype/flat/non-object-ctor-throws.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/non-object-ctor-throws.js.
  • test262/test/built-ins/Array/prototype/flat/null-undefined-elements.js: Added.
  • test262/test/built-ins/Array/prototype/flat/null-undefined-input-throws.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/null-undefined-input-throws.js.
  • test262/test/built-ins/Array/prototype/flat/positive-infinity.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/positive-infinity.js.
  • test262/test/built-ins/Array/prototype/flat/prop-desc.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/prop-desc.js.
  • test262/test/built-ins/Array/prototype/flat/symbol-object-create-null-depth-throws.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/symbol-object-create-null-depth-throws.js.
  • test262/test/built-ins/Array/prototype/flatten/length.js: Removed.
  • test262/test/built-ins/Array/prototype/flatten/name.js: Removed.
  • test262/test/built-ins/Array/prototype/flatten/null-undefined-elements.js: Removed.
  • test262/test/built-ins/AsyncGeneratorPrototype/next/name.js:
  • test262/test/built-ins/AsyncGeneratorPrototype/return/name.js:
  • test262/test/built-ins/AsyncGeneratorPrototype/throw/name.js:
  • test262/test/built-ins/Math/acosh/nan-returns.js:
  • test262/test/built-ins/Math/asinh/asinh-specialVals.js:
  • test262/test/built-ins/Math/atanh/atanh-specialVals.js:
  • test262/test/built-ins/Math/cbrt/cbrt-specialValues.js:
  • test262/test/built-ins/Math/cbrt/prop-desc.js:
  • test262/test/built-ins/Math/cosh/cosh-specialVals.js:
  • test262/test/built-ins/Math/expm1/expm1-specialVals.js:
  • test262/test/built-ins/Math/log10/Log10-specialVals.js:
  • test262/test/built-ins/Math/log2/log2-basicTests.js:
  • test262/test/built-ins/Math/sign/sign-specialVals.js:
  • test262/test/built-ins/Math/sinh/sinh-specialVals.js:
  • test262/test/built-ins/Math/tanh/tanh-specialVals.js:
  • test262/test/built-ins/Math/trunc/trunc-sampleTests.js:
  • test262/test/built-ins/Math/trunc/trunc-specialVals.js:
  • test262/test/built-ins/Object/internals/DefineOwnProperty/consistent-value-regexp-dollar1.js: Added.
  • test262/test/built-ins/Object/internals/DefineOwnProperty/consistent-writable-regexp-dollar1.js: Added.
  • test262/test/intl402/Intl/getCanonicalLocales/descriptor.js:
  • test262/test/intl402/Intl/getCanonicalLocales/duplicates.js:
  • test262/test/intl402/Locale/constructor-getter-order.js: Added.

(new.Intl.Locale.toString):
(get language):
(get script):
(get region):
(get calendar):
(get collation):
(get hourCycle):
(get caseFirst):
(get numeric):
(get numberingSystem):

  • test262/test/intl402/Locale/constructor-locale-object.js: Added.
  • test262/test/intl402/Locale/constructor-non-iana-canon.js: Added.
  • test262/test/intl402/Locale/constructor-options-casefirst-invalid.js: Added.

(valueOf):
(const.invalidCaseFirstOption.of.invalidCaseFirstOptions.new.Intl.Locale):

  • test262/test/intl402/Locale/constructor-options-casefirst-valid.js: Added.

(toString):

  • test262/test/intl402/Locale/constructor-options-collation-invalid.js: Added.

(const.invalidCollationOption.of.invalidCollationOptions.new.Intl.Locale):

  • test262/test/intl402/Locale/constructor-options-collation-valid.js: Added.
  • test262/test/intl402/Locale/constructor-options-hourcycle-invalid.js: Added.

(const.invalidHourCycleOption.of.invalidHourCycleOptions.new.Intl.Locale):

  • test262/test/intl402/Locale/constructor-options-hourcycle-valid.js: Added.

(toString):

  • test262/test/intl402/Locale/constructor-options-language-grandfathered.js: Added.
  • test262/test/intl402/Locale/constructor-options-language-valid.js:

(toString):

  • test262/test/intl402/Locale/constructor-options-numberingsystem-invalid.js: Added.

(const.invalidNumberingSystemOption.of.invalidNumberingSystemOptions.new.Intl.Locale):

  • test262/test/intl402/Locale/constructor-options-numberingsystem-valid.js: Added.
  • test262/test/intl402/Locale/constructor-options-numeric-valid.js: Added.

(valueOf):

  • test262/test/intl402/Locale/constructor-options-region-valid.js:
  • test262/test/intl402/Locale/constructor-options-script-valid.js:

(toString):

  • test262/test/intl402/Locale/constructor-parse-twice.js: Added.
  • test262/test/intl402/Locale/constructor-tag-tostring.js: Added.

(CustomError):
(WrongCustomError):
(const.errors.get Symbol):
(throw.new.CustomError):
(throw.new.CustomError.get toString):
(throw.new.CustomError.get valueOf):
(throw.new.WrongCustomError.get valueOf):
(throw.new.WrongCustomError):

  • test262/test/intl402/Locale/constructor-unicode-ext-invalid.js: Added.
  • test262/test/intl402/Locale/constructor-unicode-ext-valid.js: Added.

(canonical.of.Object.entries):

  • test262/test/intl402/Locale/extensions-grandfathered.js: Added.

(of.testData.value.of.Object.entries):

  • test262/test/intl402/Locale/extensions-private.js: Added.
  • test262/test/intl402/Locale/getters-grandfathered.js: Added.
  • test262/test/intl402/Locale/getters-missing.js: Added.
  • test262/test/intl402/Locale/getters-privateuse.js: Added.
  • test262/test/intl402/Locale/getters.js: Added.
  • test262/test/intl402/Locale/invalid-tag-throws-symbol.js:
  • test262/test/intl402/Locale/likely-subtags-grandfathered.js: Added.
  • test262/test/intl402/Locale/prop-desc.js:
  • test262/test/intl402/Locale/prototype/baseName/prop-desc.js: Added.
  • test262/test/intl402/Locale/prototype/calendar/prop-desc.js: Added.
  • test262/test/intl402/Locale/prototype/caseFirst/prop-desc.js: Added.
  • test262/test/intl402/Locale/prototype/collation/prop-desc.js: Added.
  • test262/test/intl402/Locale/prototype/constructor/prop-desc.js: Copied from JSTests/test262/test/intl402/Locale/prototype/constructor.js.
  • test262/test/intl402/Locale/prototype/hourCycle/prop-desc.js: Added.
  • test262/test/intl402/Locale/prototype/language/prop-desc.js: Added.
  • test262/test/intl402/Locale/prototype/maximize/length.js:
  • test262/test/intl402/Locale/prototype/maximize/prop-desc.js:
  • test262/test/intl402/Locale/prototype/minimize/length.js: Copied from JSTests/test262/test/intl402/Locale/prototype/maximize/length.js.
  • test262/test/intl402/Locale/prototype/minimize/name.js: Added.
  • test262/test/intl402/Locale/prototype/minimize/prop-desc.js: Copied from JSTests/test262/test/intl402/Locale/prototype/constructor.js.
  • test262/test/intl402/Locale/prototype/numberingSystem/prop-desc.js: Added.
  • test262/test/intl402/Locale/prototype/numeric/prop-desc.js: Added.
  • test262/test/intl402/Locale/prototype/region/prop-desc.js: Added.
  • test262/test/intl402/Locale/prototype/script/prop-desc.js: Added.
  • test262/test/intl402/Locale/prototype/toString/prop-desc.js: Renamed from JSTests/test262/test/intl402/Locale/prototype/constructor.js.
  • test262/test/intl402/Locale/prototype/toStringTag/toStringTag.js: Renamed from JSTests/test262/test/intl402/Locale/prototype/toStringTag.js.
  • test262/test/intl402/Number/prototype/toLocaleString/length.js:
  • test262/test/intl402/NumberFormat/length.js:
  • test262/test/intl402/NumberFormat/name.js:
  • test262/test/intl402/NumberFormat/prop-desc.js:
  • test262/test/intl402/PluralRules/length.js:
  • test262/test/intl402/PluralRules/name.js:
  • test262/test/intl402/PluralRules/prop-desc.js: Copied from JSTests/test262/test/intl402/NumberFormat/prop-desc.js.
  • test262/test/language/expressions/addition/bigint-and-number.js:
  • test262/test/language/expressions/addition/bigint-arithmetic.js:

(testAdd): Deleted.

  • test262/test/language/expressions/addition/bigint-errors.js:

(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):

  • test262/test/language/expressions/addition/bigint-toprimitive.js:
  • test262/test/language/expressions/addition/bigint-wrapped-values.js:
  • test262/test/language/expressions/bitwise-and/bigint-and-number.js:
  • test262/test/language/expressions/bitwise-and/bigint-errors.js:

(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):

  • test262/test/language/expressions/bitwise-and/bigint-non-primitive.js:

(assert.sameValue.Symbol.toPrimitive):
(assert.sameValue.0b011n.Symbol.toPrimitive):
(assert.sameValue.valueOf):
(assert.sameValue.0b011n.valueOf):
(assert.sameValue.toString):
(assert.sameValue.0b011n.toString):

  • test262/test/language/expressions/bitwise-and/bigint-toprimitive.js:
  • test262/test/language/expressions/bitwise-and/bigint-wrapped-values.js:
  • test262/test/language/expressions/bitwise-not/bigint-non-primitive.js:

(assert.sameValue.Symbol.toPrimitive):
(assert.sameValue.valueOf):
(assert.sameValue.toString):

  • test262/test/language/expressions/bitwise-or/bigint-and-number.js:
  • test262/test/language/expressions/bitwise-or/bigint-errors.js:

(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):

  • test262/test/language/expressions/bitwise-or/bigint-non-primitive.js:

(assert.sameValue.Symbol.toPrimitive):
(assert.sameValue.0b011n.Symbol.toPrimitive):
(assert.sameValue.valueOf):
(assert.sameValue.0b011n.valueOf):
(assert.sameValue.toString):
(assert.sameValue.0b011n.toString):

  • test262/test/language/expressions/bitwise-or/bigint-toprimitive.js:
  • test262/test/language/expressions/bitwise-or/bigint-wrapped-values.js:
  • test262/test/language/expressions/bitwise-xor/bigint-and-number.js:
  • test262/test/language/expressions/bitwise-xor/bigint-errors.js:

(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):

  • test262/test/language/expressions/bitwise-xor/bigint-non-primitive.js:

(assert.sameValue.Symbol.toPrimitive):
(assert.sameValue.0b011n.Symbol.toPrimitive):
(assert.sameValue.valueOf):
(assert.sameValue.0b011n.valueOf):
(assert.sameValue.toString):
(assert.sameValue.0b011n.toString):

  • test262/test/language/expressions/bitwise-xor/bigint-toprimitive.js:
  • test262/test/language/expressions/bitwise-xor/bigint-wrapped-values.js:
  • test262/test/language/expressions/division/bigint-and-number.js:
  • test262/test/language/expressions/division/bigint-arithmetic.js:

(testDiv): Deleted.

  • test262/test/language/expressions/division/bigint-complex-infinity.js:
  • test262/test/language/expressions/division/bigint-errors.js:

(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):

  • test262/test/language/expressions/division/bigint-toprimitive.js:
  • test262/test/language/expressions/division/bigint-wrapped-values.js:
  • test262/test/language/expressions/does-not-equals/bigint-and-bigint.js:
  • test262/test/language/expressions/does-not-equals/bigint-and-boolean.js:
  • test262/test/language/expressions/does-not-equals/bigint-and-incomparable-primitive.js:
  • test262/test/language/expressions/does-not-equals/bigint-and-non-finite.js:
  • test262/test/language/expressions/does-not-equals/bigint-and-number-extremes.js:
  • test262/test/language/expressions/does-not-equals/bigint-and-number.js:
  • test262/test/language/expressions/does-not-equals/bigint-and-object.js:

(assert.sameValue.0n.valueOf):
(assert.sameValue.valueOf):
(assert.sameValue.0n.toString):
(assert.sameValue.toString):
(assert.sameValue.900719925474099101n.valueOf):
(assert.sameValue.900719925474099101n.toString):

  • test262/test/language/expressions/does-not-equals/bigint-and-string.js:
  • test262/test/language/expressions/equals/bigint-and-bigint.js:
  • test262/test/language/expressions/equals/bigint-and-boolean.js:
  • test262/test/language/expressions/equals/bigint-and-incomparable-primitive.js:
  • test262/test/language/expressions/equals/bigint-and-non-finite.js:
  • test262/test/language/expressions/equals/bigint-and-number-extremes.js:
  • test262/test/language/expressions/equals/bigint-and-number.js:
  • test262/test/language/expressions/equals/bigint-and-object.js:

(assert.sameValue.0n.valueOf):
(assert.sameValue.valueOf):
(assert.sameValue.0n.toString):
(assert.sameValue.toString):
(assert.sameValue.900719925474099101n.valueOf):
(assert.sameValue.900719925474099101n.toString):

  • test262/test/language/expressions/equals/bigint-and-string.js:
  • test262/test/language/expressions/exponentiation/bigint-and-number.js:
  • test262/test/language/expressions/exponentiation/bigint-arithmetic.js:

(testExpt): Deleted.

  • test262/test/language/expressions/exponentiation/bigint-errors.js:

(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):

  • test262/test/language/expressions/exponentiation/bigint-negative-exponent-throws.js: Renamed from JSTests/test262/test/language/expressions/exponentiation/bigint-exp-operator-negative-throws.js.
  • test262/test/language/expressions/exponentiation/bigint-toprimitive.js:
  • test262/test/language/expressions/exponentiation/bigint-wrapped-values.js:
  • test262/test/language/expressions/exponentiation/bigint-zero-base-zero-exponent.js:
  • test262/test/language/expressions/greater-than-or-equal/bigint-and-bigint.js:
  • test262/test/language/expressions/greater-than-or-equal/bigint-and-incomparable-string.js:
  • test262/test/language/expressions/greater-than-or-equal/bigint-and-non-finite.js:
  • test262/test/language/expressions/greater-than-or-equal/bigint-and-number-extremes.js:
  • test262/test/language/expressions/greater-than-or-equal/bigint-and-number.js:
  • test262/test/language/expressions/greater-than-or-equal/bigint-and-string.js:
  • test262/test/language/expressions/greater-than/11.8.2-1.js:

(obj1.valueOf):
(obj2.valueOf):

  • test262/test/language/expressions/greater-than/11.8.2-2.js:

(obj1.valueOf):
(obj2.toString):

  • test262/test/language/expressions/greater-than/11.8.2-3.js:

(obj1.toString):
(obj2.valueOf):

  • test262/test/language/expressions/greater-than/11.8.2-4.js:

(obj1.toString):
(obj2.toString):

  • test262/test/language/expressions/greater-than/bigint-and-bigint.js:
  • test262/test/language/expressions/greater-than/bigint-and-boolean.js:
  • test262/test/language/expressions/greater-than/bigint-and-incomparable-string.js:
  • test262/test/language/expressions/greater-than/bigint-and-non-finite.js:
  • test262/test/language/expressions/greater-than/bigint-and-number-extremes.js:
  • test262/test/language/expressions/greater-than/bigint-and-number.js:
  • test262/test/language/expressions/greater-than/bigint-and-string.js:
  • test262/test/language/expressions/greater-than/bigint-and-symbol.js: Added.
  • test262/test/language/expressions/left-shift/bigint-and-number.js:
  • test262/test/language/expressions/left-shift/bigint-errors.js:

(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):

  • test262/test/language/expressions/left-shift/bigint-non-primitive.js:

(assert.sameValue.Symbol.toPrimitive):
(assert.sameValue.valueOf):
(assert.sameValue.toString):
(assert.sameValue.0b101n.Symbol.toPrimitive):
(assert.sameValue.0b101n.valueOf):
(assert.sameValue.0b101n.toString):
(valueOf):

  • test262/test/language/expressions/left-shift/bigint-toprimitive.js:
  • test262/test/language/expressions/left-shift/bigint-wrapped-values.js:
  • test262/test/language/expressions/less-than-or-equal/11.8.3-1.js:

(obj1.valueOf):
(obj2.valueOf):

  • test262/test/language/expressions/less-than-or-equal/11.8.3-2.js:

(obj1.valueOf):
(obj2.toString):

  • test262/test/language/expressions/less-than-or-equal/11.8.3-3.js:

(obj1.toString):
(obj2.valueOf):

  • test262/test/language/expressions/less-than-or-equal/11.8.3-4.js:

(obj1.toString):
(obj2.toString):

  • test262/test/language/expressions/less-than-or-equal/11.8.3-5.js: Removed.
  • test262/test/language/expressions/less-than-or-equal/bigint-and-bigint.js:
  • test262/test/language/expressions/less-than-or-equal/bigint-and-incomparable-string.js:
  • test262/test/language/expressions/less-than-or-equal/bigint-and-non-finite.js:
  • test262/test/language/expressions/less-than-or-equal/bigint-and-number-extremes.js:
  • test262/test/language/expressions/less-than-or-equal/bigint-and-number.js:
  • test262/test/language/expressions/less-than-or-equal/bigint-and-string.js:
  • test262/test/language/expressions/less-than/bigint-and-bigint.js:
  • test262/test/language/expressions/less-than/bigint-and-boolean.js:
  • test262/test/language/expressions/less-than/bigint-and-incomparable-string.js:
  • test262/test/language/expressions/less-than/bigint-and-non-finite.js:
  • test262/test/language/expressions/less-than/bigint-and-number-extremes.js:
  • test262/test/language/expressions/less-than/bigint-and-number.js:
  • test262/test/language/expressions/less-than/bigint-and-string.js:
  • test262/test/language/expressions/less-than/bigint-and-symbol.js: Added.
  • test262/test/language/expressions/modulus/bigint-and-number.js:
  • test262/test/language/expressions/modulus/bigint-arithmetic.js:

(testMod): Deleted.

  • test262/test/language/expressions/modulus/bigint-errors.js:

(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):

  • test262/test/language/expressions/modulus/bigint-modulo-zero.js:
  • test262/test/language/expressions/modulus/bigint-toprimitive.js:
  • test262/test/language/expressions/modulus/bigint-wrapped-values.js:
  • test262/test/language/expressions/multiplication/bigint-and-number.js:
  • test262/test/language/expressions/multiplication/bigint-arithmetic.js:

(testMul): Deleted.

  • test262/test/language/expressions/multiplication/bigint-errors.js:

(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):

  • test262/test/language/expressions/multiplication/bigint-toprimitive.js:
  • test262/test/language/expressions/multiplication/bigint-wrapped-values.js:
  • test262/test/language/expressions/right-shift/bigint-and-number.js:
  • test262/test/language/expressions/right-shift/bigint-errors.js:

(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):

  • test262/test/language/expressions/right-shift/bigint-non-primitive.js:

(assert.sameValue.Symbol.toPrimitive):
(assert.sameValue.valueOf):
(assert.sameValue.toString):
(assert.sameValue.0b101n.Symbol.toPrimitive):
(assert.sameValue.0b101n.valueOf):
(assert.sameValue.0b101n.toString):
(valueOf):

  • test262/test/language/expressions/right-shift/bigint-toprimitive.js:
  • test262/test/language/expressions/right-shift/bigint-wrapped-values.js:
  • test262/test/language/expressions/strict-does-not-equals/bigint-and-bigint.js:
  • test262/test/language/expressions/strict-does-not-equals/bigint-and-boolean.js:
  • test262/test/language/expressions/strict-does-not-equals/bigint-and-incomparable-primitive.js:
  • test262/test/language/expressions/strict-does-not-equals/bigint-and-non-finite.js:
  • test262/test/language/expressions/strict-does-not-equals/bigint-and-number-extremes.js:
  • test262/test/language/expressions/strict-does-not-equals/bigint-and-number.js:
  • test262/test/language/expressions/strict-does-not-equals/bigint-and-object.js:

(assert.sameValue.0n.valueOf):
(assert.sameValue.valueOf):
(assert.sameValue.0n.toString):
(assert.sameValue.toString):
(assert.sameValue.900719925474099101n.valueOf):
(assert.sameValue.900719925474099101n.toString):

  • test262/test/language/expressions/strict-does-not-equals/bigint-and-string.js:
  • test262/test/language/expressions/strict-equals/bigint-and-bigint.js:
  • test262/test/language/expressions/strict-equals/bigint-and-boolean.js:
  • test262/test/language/expressions/strict-equals/bigint-and-incomparable-primitive.js:
  • test262/test/language/expressions/strict-equals/bigint-and-non-finite.js:
  • test262/test/language/expressions/strict-equals/bigint-and-number-extremes.js:
  • test262/test/language/expressions/strict-equals/bigint-and-number.js:
  • test262/test/language/expressions/strict-equals/bigint-and-object.js:

(assert.sameValue.0n.valueOf):
(assert.sameValue.valueOf):
(assert.sameValue.0n.toString):
(assert.sameValue.toString):
(assert.sameValue.900719925474099101n.valueOf):
(assert.sameValue.900719925474099101n.toString):

  • test262/test/language/expressions/strict-equals/bigint-and-string.js:
  • test262/test/language/expressions/subtraction/bigint-and-number.js:
  • test262/test/language/expressions/subtraction/bigint-arithmetic.js:

(testSub): Deleted.

  • test262/test/language/expressions/subtraction/bigint-errors.js:

(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):

  • test262/test/language/expressions/subtraction/bigint-toprimitive.js:
  • test262/test/language/expressions/subtraction/bigint-wrapped-values.js:
  • test262/test/language/expressions/unary-minus/bigint-non-primitive.js:

(assert.sameValue.Symbol.toPrimitive):
(assert.sameValue.valueOf):
(assert.sameValue.toString):

  • test262/test/language/expressions/unary-plus/bigint-throws.js:
  • test262/test/language/expressions/unsigned-right-shift/bigint-and-number.js:
  • test262/test/language/expressions/unsigned-right-shift/bigint-errors.js:

(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):

  • test262/test/language/expressions/unsigned-right-shift/bigint-non-primitive.js:

(Symbol.toPrimitive):
(valueOf):
(toString):
(0b101n.Symbol.toPrimitive):
(0b101n.valueOf):
(0b101n.toString):
(valueOf.valueOf):

  • test262/test/language/expressions/unsigned-right-shift/bigint-toprimitive.js:
  • test262/test/language/expressions/unsigned-right-shift/bigint-wrapped-values.js:
  • test262/test/language/literals/numeric/numeric-followed-by-ident.js: Added.
  • test262/test/language/literals/string/line-continuation-double.js: Added.
  • test262/test/language/literals/string/line-continuation-single.js: Added.
  • test262/test262-Revision.txt:

May 25, 2018:

10:29 PM Changeset in webkit [232223] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

[Cocoa] Delete unnecessary WebCascadeList in ComplexTextController
https://bugs.webkit.org/show_bug.cgi?id=186007

Reviewed by Zalan Bujtas.

Inside ComplexTextController::collectComplexTextRuns(), we chop up text based on which fonts should be
used to render which grapheme clusters. For each grapheme cluster, we run through the font-family list
in FontCascade::fontForCombiningCharacterSequence() and find the first font that can render the cluster.
If no items can render the cluster, we construct a WebCascadeList and let CoreText try to figure out
which fonts can render which clusters.

Except there's no point, because we just determined that no font in the list can be used to render the
cluster. CoreText isn't magic; it isn't going to somehow disagree with us. WebCascadeList is just
useless code.

No new tests because there is no behavior change.

  • platform/graphics/mac/ComplexTextControllerCoreText.mm:

(WebCore::ComplexTextController::collectComplexTextRunsForCharacters):
(-[WebCascadeList initWithFont:character:]): Deleted.
(-[WebCascadeList count]): Deleted.
(-[WebCascadeList objectAtIndex:]): Deleted.

8:56 PM Changeset in webkit [232222] by aakash_jain@apple.com
  • 7 edits in trunk/Tools

Display detailed error logs when a script fails in EWS
https://bugs.webkit.org/show_bug.cgi?id=175696
<rdar://problem/34841885>

Reviewed by Darin Adler.

  • Scripts/webkitpy/tool/bot/queueengine.py: Set output_limit to 5000 characters instead of default 500 characters.
  • Scripts/webkitpy/tool/commands/abstractsequencedcommand.py: Ditto.
  • Scripts/webkitpy/tool/commands/download.py: Ditto.
  • Scripts/webkitpy/tool/commands/earlywarningsystem.py: Ditto.
  • Scripts/webkitpy/tool/commands/queues.py: Ditto.
  • Scripts/webkitpy/tool/commands/stepsequence.py: Ditto.
8:44 PM Changeset in webkit [232221] by mmaxfield@apple.com
  • 6 edits
    1 add in trunk

Improve the performance of Font::canRenderCombiningCharacterSequence()
https://bugs.webkit.org/show_bug.cgi?id=185933

Reviewed by Ryosuke Niwa.

PerformanceTests:

  • Layout/ComplexLongUnique.html: Added.

Source/WebCore:

We don't need to create a whole CTLine just to determine whether or not a font supports rendering a grapheme cluster.
Instead, the right way to do it is just see if the font's cmap table supports every code point in the cluster.

This patch reports a 2% progression on the attached PerformanceTest.

Test: Layout/ComplexLongUnique.html

  • platform/graphics/Font.cpp:

(WebCore::Font::canRenderCombiningCharacterSequence const):

  • platform/graphics/Font.h:
  • platform/graphics/cocoa/FontCocoa.mm:

(WebCore::provideStringAndAttributes): Deleted.
(WebCore::Font::canRenderCombiningCharacterSequence const): Deleted.

  • platform/graphics/freetype/SimpleFontDataFreeType.cpp:

(WebCore::Font::canRenderCombiningCharacterSequence const): Deleted.

6:02 PM Changeset in webkit [232220] by eric.carlson@apple.com
  • 3 edits in trunk/Source/WebCore

Captions are sized incorrectly in PiP mode
https://bugs.webkit.org/show_bug.cgi?id=186005
<rdar://problem/39729718>

Reviewed by Dean Jackson.

  • html/shadow/MediaControlElements.cpp:

(WebCore::MediaControlTextTrackContainerElement::updateSizes): Only sync text track bounds
when the size actually changes.

  • platform/graphics/avfoundation/objc/VideoFullscreenLayerManagerObjC.mm:

(WebCore::VideoFullscreenLayerManagerObjC::setVideoFullscreenFrame): Call syncTextTrackBounds.
(WebCore::VideoFullscreenLayerManagerObjC::syncTextTrackBounds): Set the text track layer size
to m_videoFullscreenFrame, it is always set the size of the PiP/Fullscreen layer.

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

for-in loops should preserve and restore the TDZ stack for each of its internal loops.
https://bugs.webkit.org/show_bug.cgi?id=185995
<rdar://problem/40173142>

Reviewed by Saam Barati.

JSTests:

  • stress/regress-185995.js: Added.

Source/JavaScriptCore:

This is because there's no guarantee that any of the loop bodies will be
executed. Hence, there's no guarantee that the TDZ variables will have been
initialized after each loop body.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::preserveTDZStack):
(JSC::BytecodeGenerator::restoreTDZStack):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::ForInNode::emitBytecode):

5:13 PM Changeset in webkit [232218] by timothy@apple.com
  • 10 edits in trunk/Source

Setting drawsBackground to YES on a WKView doesn't take effect immediately
https://bugs.webkit.org/show_bug.cgi?id=185885
rdar://problem/39706506

Reviewed by Simon Fraser.

Source/WebCore:

  • page/Frame.cpp:

(WebCore::Frame::createView): Always call updateBackgroundRecursively, it handles
invalid colors correctly already.

  • page/FrameView.cpp:

(WebCore::FrameView::setTransparent): Call setNeedsLayout() since base background color
and transparent is used to update layers.
(WebCore::FrameView::setBaseBackgroundColor): Ditto.
(WebCore::FrameView::updateBackgroundRecursively): Schedule layout if needed.

  • page/FrameView.h:
  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::viewHasTransparentBackground const): Use baseBackgroundColor
instead of hardcoding white.
(WebCore::RenderLayerCompositor::rootBackgroundTransparencyChanged): Fixed incorrect changed logging.

Source/WebKit:

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]): Removed setBackgroundExtendsBeyondPage(true)
since it is now the default.

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::setDrawsBackground): Make sure updateLayer gets called on the web view
by calling setNeedsDisplay:YES.
(WebKit::WebViewImpl::setBackgroundColor): Ditto.
(WebKit::WebViewImpl::updateLayer): Removed dead code.

  • UIProcess/WebPageProxy.h: Make m_backgroundExtendsBeyondPage default to true. WebKit was

always turning this on during WKWebView initializtion, which would cause the scroll
shadow layer to be created, flash black because of no background, then destroyed soon
after once WebKit's message to turn it on got delivered.

  • WebProcess/WebPage/WebPage.cpp:

(WebPage::WebPage): Call setBackgroundExtendsBeyondPage earlier to avoid creating the scroll
shadow layer, since backgroundShouldExtendBeyondPage defautls to false in WebCore for WK1.
(WebKit::WebPage::setDrawsBackground): Use updateBackgroundRecursively to propagate the
correct base background color.

5:06 PM Changeset in webkit [232217] by youenn@apple.com
  • 13 edits
    19 adds
    1 delete in trunk

Migrate From-Origin to Cross-Origin-Resource-Policy
https://bugs.webkit.org/show_bug.cgi?id=185840

Reviewed by Chris Dumez.

Source/WebCore:

Tests: http/wpt/cross-origin-resource-policy/fetch-in-iframe.html

http/wpt/cross-origin-resource-policy/fetch.html
http/wpt/cross-origin-resource-policy/iframe-loads.html
http/wpt/cross-origin-resource-policy/image-loads.html
http/wpt/cross-origin-resource-policy/script-loads.html

  • platform/network/HTTPHeaderNames.in:
  • platform/network/HTTPParsers.cpp:

(WebCore::parseCrossOriginResourcePolicyHeader):

  • platform/network/HTTPParsers.h:

Source/WebKit:

Do Cross-Origin-Resource-Policy (CORP) checks in NetworkLoadChecker instead of NetworkResourceLoader directly.
Make sure CORP only applies to no-cors loads.
Remove ancestor checks and only consider the document origin making the load.
This means that in case of cross-origin redirection to same-origin, the redirection will be CORP-checked,
the final response will not be CORP-checked but will be opaque.

  • NetworkProcess/NetworkLoadChecker.cpp:

(WebKit::NetworkLoadChecker::validateCrossOriginResourcePolicyPolicy):
(WebKit::NetworkLoadChecker::validateResponse):

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

(WebKit::NetworkResourceLoader::retrieveCacheEntry):
(WebKit::NetworkResourceLoader::didReceiveResponse):
(WebKit::NetworkResourceLoader::continueWillSendRedirectedRequest):
(WebKit::NetworkResourceLoader::didRetrieveCacheEntry):
(WebKit::NetworkResourceLoader::dispatchWillSendRequestForCacheEntry):

  • NetworkProcess/NetworkResourceLoader.h:
  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
Send ancestor information for navigation loads only.

LayoutTests:

Migrating From-Origin tests to Cross-Origin-Resource-Policy tests.
Given the scope of the header is reduced to no-cors and no ancestor checks,
We cover the new header with fetch/image/script loads.

  • TestExpectations:
  • http/tests/from-origin: Removed.
  • http/wpt/cross-origin-resource-policy/fetch-expected.txt: Added.
  • http/wpt/cross-origin-resource-policy/fetch-in-iframe-expected.txt: Added.
  • http/wpt/cross-origin-resource-policy/fetch-in-iframe.html: Added.
  • http/wpt/cross-origin-resource-policy/fetch.html: Added.
  • http/wpt/cross-origin-resource-policy/iframe-loads-expected.txt: Added.
  • http/wpt/cross-origin-resource-policy/iframe-loads.html: Added.
  • http/wpt/cross-origin-resource-policy/image-loads-expected.txt: Added.
  • http/wpt/cross-origin-resource-policy/image-loads.html: Added.
  • http/wpt/cross-origin-resource-policy/resources/green.png: Added.
  • http/wpt/cross-origin-resource-policy/resources/hello.py: Added.
  • http/wpt/cross-origin-resource-policy/resources/iframe.py: Added.
  • http/wpt/cross-origin-resource-policy/resources/iframeFetch.html: Added.
  • http/wpt/cross-origin-resource-policy/resources/image.py: Added.
  • http/wpt/cross-origin-resource-policy/resources/redirect.py: Added.
  • http/wpt/cross-origin-resource-policy/resources/script.py: Added.
  • http/wpt/cross-origin-resource-policy/script-loads-expected.txt: Added.
  • http/wpt/cross-origin-resource-policy/script-loads.html: Added.
  • platform/wk2/TestExpectations:
4:48 PM Changeset in webkit [232216] by dbates@webkit.org
  • 5 edits in trunk/Source

NavigationAction should not hold a strong reference to a Document
https://bugs.webkit.org/show_bug.cgi?id=185712
<rdar://problem/40320916>

Reviewed by Brent Fulgham.

Source/WebCore:

Have NavigationAction store all the relevant details callers need to know about the document
that initiated the navigation in an independent data structure, called NavigationAction::Requester,
as opposed to holding a RefPtr to the document itself. The benefit of this approach is that it
is a step towards ensuring that NavigationAction does not keep the document alive after navigating
to a new document given that DocumentLoader stores the NavigationAction for the last navigation.

  • loader/NavigationAction.cpp:

(WebCore::NavigationAction::Requester::Requester): Track all relevant details of the document that
requested this navigation that are needed to support WebKit API/SPI. We hold the SecurityOrigin in
a RefPtr to avoid the need to explicitly define a copy constructor and copy-assignment constructor
because Requester needs to be copyable as NavigationAction, which owns a Requester, is copyable.
(WebCore::shouldTreatAsSameOriginNavigation): Fix some style nits.
(WebCore::NavigationAction::NavigationAction): Instantiate a Requester from the specified document.

  • loader/NavigationAction.h:

(WebCore::NavigationAction::Requester::url const): Added.
(WebCore::NavigationAction::Requester::securityOrigin const): Added.
(WebCore::NavigationAction::Requester::pageID const): Added.
(WebCore::NavigationAction::Requester::frameID const): Added.
(WebCore::NavigationAction::requester const): Returns details about the document that requested
this navigation, if applicable.
(WebCore::NavigationAction::isEmpty const): Update criterion for being empty to consider the
requester.
(WebCore::NavigationAction::setOpener): Extracted out the datatype of the parameter into a
type alias to avoid duplication and updated this code to use the alias.
(WebCore::NavigationAction::opener const): Ditto.
(WebCore::NavigationAction::sourceDocument const): Deleted.

Source/WebKit:

Update code to make use of NavigationAction::requester().

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

4:45 PM Changeset in webkit [232215] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

MachineContext's instructionPointer() should handle null PCs correctly.
https://bugs.webkit.org/show_bug.cgi?id=186004
<rdar://problem/40570067>

Reviewed by Saam Barati.

instructionPointer() returns a MacroAssemblerCodePtr<CFunctionPtrTag>. However,
MacroAssemblerCodePtr's constructor does not accept a null pointer value and will
assert accordingly with a debug ASSERT. This is inconsequential for release
builds, but to avoid this assertion failure, we should check for a null PC and
return MacroAssemblerCodePtr<CFunctionPtrTag>(nullptr) instead (which uses the
MacroAssemblerCodePtr(std::nullptr_t) version of the constructor instead).

Alternatively, we can change all of MacroAssemblerCodePtr's constructors to check
for null pointers, but I rather not do that yet. In general,
MacroAssemblerCodePtrs are constructed with non-null pointers, and I prefer to
leave it that way for now.

Note: this assertion failure only manifests when we have signal traps enabled,
and encounter a null pointer deref.

  • runtime/MachineContext.h:

(JSC::MachineContext::instructionPointer):

4:41 PM Changeset in webkit [232214] by dbates@webkit.org
  • 2 edits in trunk/Tools

test-webkitpy messages logged using main logger are not displayed
https://bugs.webkit.org/show_bug.cgi?id=185823

Rubber-stamped by Aakash Jain.

Configure the logger for main so that messages that are logged before it parses its
command line arguments are printed to standard error.

Currently test-webkitpy creates a named logger (main) for its logging. However it does
not configure a stream to use for printing until after it parses its command line arguments
via webkitpy.test.printer.Printer.configure(). Messages logged until then are never written
to the console. We explicitly configure the main logger instead of calling webkitpy.test.printer.Printer.configure()
earlier because the latter both configures a stream and filters logged messages based on
the specified verbosity. Logged messaged from code in main should not be subject to
such filtering. So, we explicitly configure the main logger.

  • Scripts/webkitpy/test/main.py:

(main):

4:27 PM Changeset in webkit [232213] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

fast/text/user-installed-fonts/shadow-family.html and fast/text/user-installed-fonts/shadow-postscript-family.html are flaky
https://bugs.webkit.org/show_bug.cgi?id=185994

Unreviewed test gardening.

Patch by David Fenton <david_fenton@apple.com> on 2018-05-25

  • platform/mac-wk2/TestExpectations:
4:26 PM Changeset in webkit [232212] by msaboff@apple.com
  • 2 edits in trunk/Source/WTF

JavaScriptCore: Disable 32-bit JIT on Windows
https://bugs.webkit.org/show_bug.cgi?id=185989

Reviewed by Saam Barati.

  • wtf/Platform.h:
4:18 PM Changeset in webkit [232211] by mark.lam@apple.com
  • 10 edits in trunk/Source/JavaScriptCore

Enforce invariant that GetterSetter objects are invariant.
https://bugs.webkit.org/show_bug.cgi?id=185968
<rdar://problem/40541416>

Reviewed by Saam Barati.

The code already assumes the invariant that GetterSetter objects are immutable.
For example, the use of @tryGetById in builtins expect this invariant to be true.
The existing code mostly enforces this except for one case: JSObject's
validateAndApplyPropertyDescriptor, where it will re-use the same GetterSetter
object.

This patch enforces this invariant by removing the setGetter and setSetter methods
of GetterSetter, and requiring the getter/setter callback functions to be
specified at construction time.

  • jit/JITOperations.cpp:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • runtime/GetterSetter.cpp:

(JSC::GetterSetter::withGetter): Deleted.
(JSC::GetterSetter::withSetter): Deleted.

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

(JSC::JSGlobalObject::init):

  • runtime/JSObject.cpp:

(JSC::JSObject::putIndexedDescriptor):
(JSC::JSObject::putDirectNativeIntrinsicGetter):
(JSC::putDescriptor):
(JSC::validateAndApplyPropertyDescriptor):

  • runtime/JSTypedArrayViewPrototype.cpp:

(JSC::JSTypedArrayViewPrototype::finishCreation):

  • runtime/Lookup.cpp:

(JSC::reifyStaticAccessor):

  • runtime/PropertyDescriptor.cpp:

(JSC::PropertyDescriptor::slowGetterSetter):

3:47 PM Changeset in webkit [232210] by sbarati@apple.com
  • 8 edits in trunk

Make JSC have a mini mode that kicks in when the JIT is disabled
https://bugs.webkit.org/show_bug.cgi?id=185931

Reviewed by Mark Lam.

Source/JavaScriptCore:

This patch makes JSC have a mini VM mode. This currently only kicks in
when the process can't JIT. Mini VM now means a few things:

  • We always use a 1.27x heap growth factor. This number was the best tradeoff between memory use progression and time regression in run-testmem. We may want to tune this more in the future as we make other mini VM changes.
  • We always sweep synchronously.
  • We disable generational GC.


I'm going to continue to extend what mini VM mode means in future changes.

This patch is a 50% memory progression and an ~8-9% time regression
on run-testmem when running in mini VM mode with the JIT disabled.

  • heap/Heap.cpp:

(JSC::Heap::collectNow):
(JSC::Heap::finalize):
(JSC::Heap::useGenerationalGC):
(JSC::Heap::shouldSweepSynchronously):
(JSC::Heap::shouldDoFullCollection):

  • heap/Heap.h:
  • runtime/Options.h:
  • runtime/VM.cpp:

(JSC::VM::isInMiniMode):

  • runtime/VM.h:

Tools:

This renames a variable for clarity.

  • Scripts/run-testmem:
2:53 PM Changeset in webkit [232209] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

Ensure that the Web Content process doesn't sleep during initialization
https://bugs.webkit.org/show_bug.cgi?id=185975
<rdar://problem/40548159>

Reviewed by Geoffrey Garen.

WebProcessPool::warmInitialProcess isn't worth much (or at least, as much
as it could be) if the Web Content process goes to sleep in the middle
of initializeWebProcess.

Keep the Web Content process alive until it has handled all messages
sent from WebProcessPool::initializeNewWebProcess.

This is a significant speedup on some benchmarks I've been running
that involve prewarming a process long before any content is loaded.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::initializeNewWebProcess):

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

Fullscreen element can be clipped by ancestor.
https://bugs.webkit.org/show_bug.cgi?id=185980
rdar://problem/40320006

Patch by Jeremy Jones <jeremyj@apple.com> on 2018-05-25
Reviewed by Jer Noble.

Adds style to fullscreen css to prevent the fullscreen element from being clipped by an ancestor element.

  • css/fullscreen.css:

(:-webkit-full-screen-ancestor:not(iframe)):

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

Use correct AVKit delegate for picture in picture failure.
https://bugs.webkit.org/show_bug.cgi?id=185981
rdar://problem/40549652

Patch by Jeremy Jones <jeremyj@apple.com> on 2018-05-25
Reviewed by Eric Carlson.

No new tests since we don't have a way to simulate picture-in-picture failure.

Use the new name for this delegate callback.

  • platform/ios/VideoFullscreenInterfaceAVKit.mm:

(-[WebAVPlayerViewControllerDelegate playerViewController:failedToStartPictureInPictureWithError:]):
(-[WebAVPlayerViewControllerDelegate playerViewControllerFailedToStartPictureInPicture:withError:]): Deleted.

2:42 PM Changeset in webkit [232206] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

iBooks: text can disappear/flash during finger drag highlight
https://bugs.webkit.org/show_bug.cgi?id=185993
<rdar://problem/34026943>

Reviewed by Simon Fraser.

Reuse existing tiles when override rect is fully covered by the active grid.
Also, recover dropped tiles if override rect forces us to create new ones.

Unable to create a reproducible test case.

  • platform/ios/LegacyTileCache.h:
  • platform/ios/LegacyTileCache.mm:

(WebCore::LegacyTileCache::setOverrideVisibleRect):

  • platform/ios/LegacyTileLayer.mm:

(-[LegacyTileHostLayer renderInContext:]):

2:42 PM Changeset in webkit [232205] by bshafiei@apple.com
  • 7 edits in branches/safari-606.1.17.30-branch/Source

Versioning.

2:41 PM Changeset in webkit [232204] by bshafiei@apple.com
  • 1 copy in tags/Safari-606.1.17.30.3

Tag Safari-606.1.17.30.3.

2:35 PM Changeset in webkit [232203] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback() unexpectedly constructs a process pool
https://bugs.webkit.org/show_bug.cgi?id=185992

Reviewed by Geoffrey Garen.

Update enableResourceLoadStatisticsAndSetTestingCallback() to pass the right parameter to processPools()
to avoid constructing a process pool when none exist. Also drop the 'resourceLoadStatisticsEnabled'
flag on the WebProcessPool and have it query its data store instead to know if the feature is enabled.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::initializeNewWebProcess):
(WebKit::WebProcessPool::setResourceLoadStatisticsEnabled):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):

2:35 PM Changeset in webkit [232202] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

Encode ISOWebVTTCue "strings" when logging
https://bugs.webkit.org/show_bug.cgi?id=185991
<rdar://problem/40563902>

Reviewed by Jer Noble.

  • platform/graphics/iso/ISOVTTCue.cpp:

(WebCore::ISOWebVTTCue::toJSONString const): Use encodeWithURLEscapeSequences for all Strings
taken from ISO boxes.

2:27 PM Changeset in webkit [232201] by Chris Dumez
  • 23 edits in trunk/Source

Drop support for NSURLCache in WebKit2
https://bugs.webkit.org/show_bug.cgi?id=185990

Reviewed by Geoffrey Garen.

Drop support for NSURLCache in WebKit2 now that the WebKit network cache is stable.

Source/WebCore/PAL:

  • pal/spi/cf/CFNetworkSPI.h:

Source/WebKit:

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::setCacheModel):

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

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

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

(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
(WebKit::NetworkProcess::clearDiskCache):
(WebKit::NetworkProcess::platformSetURLCacheSize): Deleted.
(WebKit::clearNSURLCache): Deleted.

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

(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
(): Deleted.
(WebKit::NetworkSessionCocoa::setUsesNetworkCache): Deleted.

  • NetworkProcess/curl/NetworkProcessCurl.cpp:

(WebKit::NetworkProcess::platformSetURLCacheSize): Deleted.

  • NetworkProcess/soup/NetworkProcessSoup.cpp:

(WebKit::NetworkProcess::platformSetURLCacheSize): Deleted.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeNetworkProcess):
(WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory):
(WebKit::WebProcessPool::isNetworkCacheEnabled): Deleted.

  • UIProcess/WebProcessPool.h:
  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::suggestedFilenameForResourceWithURL const):
(WebKit::WebFrame::mimeTypeForResourceWithURL const):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::getResourceDataFromFrame):
(WebKit::WebPage::hasLocalDataForURL):

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

(WebKit::WebPage::platformHasLocalDataForURL): Deleted.
(WebKit::WebPage::cachedResponseMIMETypeForURL): Deleted.
(WebKit::WebPage::cachedSuggestedFilenameForURL): Deleted.
(WebKit::WebPage::cachedResponseDataForURL): Deleted.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::platformHasLocalDataForURL): Deleted.
(WebKit::WebPage::cachedSuggestedFilenameForURL): Deleted.
(WebKit::WebPage::cachedResponseMIMETypeForURL): Deleted.
(WebKit::WebPage::cachedResponseDataForURL): Deleted.

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::accessibilityRemoteObject):
(WebKit::WebPage::platformHasLocalDataForURL): Deleted.
(WebKit::cachedResponseForURL): Deleted.
(WebKit::WebPage::cachedSuggestedFilenameForURL): Deleted.
(WebKit::WebPage::cachedResponseMIMETypeForURL): Deleted.
(WebKit::WebPage::cachedResponseDataForURL): Deleted.

  • WebProcess/WebPage/win/WebPageWin.cpp:

(WebKit::WebPage::platformHasLocalDataForURL): Deleted.
(WebKit::WebPage::cachedResponseMIMETypeForURL): Deleted.
(WebKit::WebPage::cachedSuggestedFilenameForURL): Deleted.
(WebKit::WebPage::cachedResponseDataForURL): Deleted.

  • WebProcess/WebPage/wpe/WebPageWPE.cpp:

(WebKit::WebPage::platformHasLocalDataForURL): Deleted.
(WebKit::WebPage::cachedResponseMIMETypeForURL): Deleted.
(WebKit::WebPage::cachedSuggestedFilenameForURL): Deleted.
(WebKit::WebPage::cachedResponseDataForURL): Deleted.

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

2:18 PM Changeset in webkit [232200] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Fix internal iOS builds after r232198
https://bugs.webkit.org/show_bug.cgi?id=185986

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::sendTapHighlightForNodeIfNecessary):

2:02 PM Changeset in webkit [232199] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Unreviewed, rebaseline two fast/forms/ios/ipad tests.

  • fast/forms/ios/ipad/select-form-run-twice-expected.txt:
  • fast/forms/ios/ipad/unfocus-inside-fixed-hittest-expected.txt:
1:39 PM Changeset in webkit [232198] by achristensen@apple.com
  • 52 edits in trunk

URL::host should return a StringView to reduce allocations
https://bugs.webkit.org/show_bug.cgi?id=185986

Reviewed by Geoff Garen.

Source/WebCore:

No change in behaviour. Just fewer allocations.

  • Modules/plugins/YouTubePluginReplacement.cpp:

(WebCore::isYouTubeURL):
(WebCore::processAndCreateYouTubeURL):

  • Modules/websockets/WebSocketHandshake.cpp:

(WebCore::hostName):
(WebCore::WebSocketHandshake::host const):

  • contentextensions/ContentExtension.cpp:

(WebCore::ContentExtensions::ContentExtension::populateConditionCacheIfNeeded):

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::parseAttribute):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaSessionTitle const):
(WebCore::needsSeekingSupportQuirk):

  • html/HTMLPlugInImageElement.cpp:

(WebCore::HTMLPlugInImageElement::restartSimilarPlugIns):
(WebCore::HTMLPlugInImageElement::userDidClickSnapshot):
(WebCore::HTMLPlugInImageElement::subframeLoaderWillCreatePlugIn):

  • html/ImageDocument.cpp:

(WebCore::ImageDocument::finishedParsing):

  • html/URLUtils.h:

(WebCore::URLUtils<T>::hostname const):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::setFirstPartyForCookies):

  • loader/LinkLoader.cpp:

(WebCore::LinkLoader::loadLink):

  • loader/ResourceLoadStatistics.cpp:

(WebCore::ResourceLoadStatistics::primaryDomain):

  • loader/mac/LoaderNSURLExtras.mm:

(suggestedFilenameWithMIMEType):

  • page/Chrome.cpp:

(WebCore::Chrome::mouseDidMoveOverElement):

  • page/Location.cpp:

(WebCore::Location::hostname const):

  • page/Page.cpp:

(WebCore::Page::mainFrameLoadStarted):

  • page/PerformanceMonitor.cpp:

(WebCore::reportPageOverPostLoadResourceThreshold):

  • page/SecurityOrigin.cpp:

(WebCore::isLoopbackIPAddress):
(WebCore::shouldTreatAsPotentiallyTrustworthy):
(WebCore::SecurityOrigin::isLocalHostOrLoopbackIPAddress):

  • page/SecurityOrigin.h:
  • page/SecurityOriginData.h:

(WebCore::SecurityOriginData::fromURL):

  • page/UserContentURLPattern.cpp:

(WebCore::UserContentURLPattern::matchesHost const):

  • page/csp/ContentSecurityPolicySource.cpp:

(WebCore::ContentSecurityPolicySource::hostMatches const):

  • platform/PublicSuffix.h:
  • platform/URL.cpp:

(WebCore::URL::host const):
(WebCore::URL::hostAndPort const):
(WebCore::URL::isMatchingDomain const):

  • platform/URL.h:
  • platform/mac/SSLKeyGeneratorMac.mm:

(WebCore::signedPublicKeyAndChallengeString):

  • platform/network/ResourceRequestBase.h:

(WebCore::registrableDomainsAreEqual):

  • platform/network/cf/NetworkStorageSessionCFNet.cpp:

(WebCore::getPartitioningDomain):

  • platform/network/cf/SocketStreamHandleImplCFNet.cpp:

(WebCore::SocketStreamHandleImpl::createStreams):

  • workers/WorkerLocation.cpp:

(WebCore::WorkerLocation::hostname const):

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::performGetOriginsWithRegistrationsCallbacks):

Source/WebKit:

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::fetchDiskCacheEntries):

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::areFrameAncestorsSameSite):

  • NetworkProcess/mac/NetworkProcessMac.mm:

(WebKit::overrideSystemProxies):

  • Shared/API/APIURL.h:

(API::URL::host const):

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::addSingleCookie):
(WebKit::WebAutomationSession::deleteAllCookies):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):

  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::pluginDidReceiveUserInteraction):

  • WebProcess/Plugins/WebPluginInfoProvider.cpp:

(WebKit::WebPluginInfoProvider::populatePluginCache):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::needsHiddenContentEditableQuirk):
(WebKit::needsPlainTextQuirk):
(WebKit::WebPage::determinePrimarySnapshottedPlugIn):

Source/WebKitLegacy:

  • WebCoreSupport/WebResourceLoadScheduler.cpp:

(WebResourceLoadScheduler::hostForURL):

Tools:

  • TestWebKitAPI/Tests/WebCore/URL.cpp:

(TestWebKitAPI::TEST_F):

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::eq):

  • TestWebKitAPI/Tests/mac/SSLKeyGenerator.mm:

(TestWebKitAPI::SSLKeyGeneratorTest::TearDown):

12:16 PM Changeset in webkit [232197] by Adrian Perez de Castro
  • 1 copy in releases/WPE WebKit/webkit-2.21.2

WPE WebKit release 2.21.2

12:14 PM Changeset in webkit [232196] by Adrian Perez de Castro
  • 4 edits in trunk

Unreviewed. Update OptionsWPE.cmake and NEWS for 2.21.2 release.

  • Source/cmake/OptionsWPE.cmake: Bump version numbers.
  • wpe/NEWS: Add release notes for the 2.21.2 release.
12:12 PM Changeset in webkit [232195] by Ms2ger@igalia.com
  • 2 edits in trunk/Tools

Minor improvements to wpt exporter.
https://bugs.webkit.org/show_bug.cgi?id=185978

Reviewed by Youenn Fablet.

  • Scripts/webkitpy/w3c/test_exporter.py:

(TestExporter.push_to_wpt_fork): Update call to create_upload_remote().
(TestExporter.make_pull_request): Improve the description of the created PR.
(TestExporter.create_upload_remote): Always update the remote to override any obsolete state.

12:10 PM Changeset in webkit [232194] by dino@apple.com
  • 2 edits in trunk/Source/WebCore

Need to provide a way to feature detect support for system preview
https://bugs.webkit.org/show_bug.cgi?id=185970
<rdar://problem/40538321>

Reviewed by Sam Weinig.

Update the supports function in the DOMTokenList that HTMLAnchorElement
produces for relList to return true for the system preview token.

Tested internally.

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::relList const):

12:05 PM Changeset in webkit [232193] by sbarati@apple.com
  • 4 edits
    15 adds in trunk

Have a memory test where we can validate JSCs mini memory mode
https://bugs.webkit.org/show_bug.cgi?id=185932

Reviewed by Mark Lam.

PerformanceTests:

We add a directory here with the contents of the testmem benchmark.
To run it, use Tools/Scripts/run-testmem. To add new tests in the future,
you just need to add JS files to this directory.

  • testmem: Added.
  • testmem/air.js: Added.
  • testmem/base64.js: Added.
  • testmem/basic.js: Added.
  • testmem/box2d.js: Added.
  • testmem/crypto-md5.js: Added.
  • testmem/date-format-tofte.js: Added.
  • testmem/earley-boyer.js: Added.
  • testmem/hash-map.js: Added.
  • testmem/regex-dna.js: Added.
  • testmem/splay.js: Added.
  • testmem/tagcloud.js: Added.

Source/JavaScriptCore:

This patch adds the testmem CLI. It takes as input a file to run
and the number of iterations to run it (by default it runs it
20 times). Each iteration runs in a new JSContext. Each JSContext
belongs to a VM that is created once. When finished, the CLI dumps
out the peak memory usage of the process, the memory usage at the end
of running all the iterations of the process, and the total time it
took to run all the iterations.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • testmem: Added.
  • testmem/testmem.mm: Added.

(description):
(Footprint::now):
(main):

Tools:

This patch adds the run-testmem script. This runs the new testmem
CLI against the contents in the testmem benchmark. The contents of testmem
contain tests from ARES-6, Sunspider, Octane, and JetStream.

One iteration of the benchmark comprises of running each testmem test for
a certain number of iterations. We collect the peak memory usage, the memory
usage after running all the iterations, and the time it takes to run all the
iterations. We then run the entire benchmark 3 times over. For each test, we
compute the arithmetic mean over each iteration for time, peak memory, and
end memory. The benchmark then computes a time score and memory score.

peak memory score = geomean({peak memory of each individual test})
end memory score = geomean({end memory of each individual test})
memory score = geomean({peak memory score, end memory score})
time score = geomean({time score of each individual test})

We want the memory score to weigh improvements to peak memory usage and
memory usage at the end equally.

We plan to tune this benchmark in JSC's mini mode by improving the memory
score while ensuring the time score is not more than 10-15% regressed.

  • Scripts/run-testmem: Added.
11:40 AM Changeset in webkit [232192] by Chris Dumez
  • 10 edits in trunk/Source

Minor ApplicationCacheStorage clean up
https://bugs.webkit.org/show_bug.cgi?id=185984

Reviewed by Youenn Fablet.

Source/WebCore:

  • loader/appcache/ApplicationCacheStorage.cpp:

(WebCore::ApplicationCacheStorage::getManifestURLs):
(WebCore::ApplicationCacheStorage::deleteCacheGroup):
(WebCore::ApplicationCacheStorage::originsWithCache):
(WebCore::ApplicationCacheStorage::deleteAllCaches):
(WebCore::ApplicationCacheStorage::deleteCacheForOrigin):
(WebCore::ApplicationCacheStorage::ApplicationCacheStorage):
(WebCore::ApplicationCacheStorage::cacheDirectory const): Deleted.
(WebCore::ApplicationCacheStorage::cacheGroupSize): Deleted.
(WebCore::ApplicationCacheStorage::getOriginsWithCache): Deleted.
(WebCore::ApplicationCacheStorage::create): Deleted.

  • loader/appcache/ApplicationCacheStorage.h:

(WebCore::ApplicationCacheStorage::create):

Source/WebKit:

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::fetchDataAndApply):

  • WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:

(WKBundlePageCopyOriginsWithApplicationCache):

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebApplicationCache.mm:

(+[WebApplicationCache originsWithCache]):

Source/WebKitLegacy/win:

  • WebApplicationCache.cpp:

(WebApplicationCache::originsWithCache):

11:35 AM Changeset in webkit [232191] by sihui_liu@apple.com
  • 4 edits in trunk

[WKHTTPCookieStore getAllCookies] returns inconsistent creation time
https://bugs.webkit.org/show_bug.cgi?id=185041
<rdar://problem/34684214>

Reviewed by Geoffrey Garen.

Source/WebCore:

Set creationtime property when creating Cookie object to keep consistency after conversion.

New API test: WebKit.WKHTTPCookieStoreCreationTime.

  • platform/network/cocoa/CookieCocoa.mm:

(WebCore::Cookie::operator NSHTTPCookie * const):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/WKHTTPCookieStore.mm:

(TEST):

10:23 AM Changeset in webkit [232190] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Avoid triggering network cache speculative revalidation for loads allowing expired content
https://bugs.webkit.org/show_bug.cgi?id=185985

Reviewed by Antti Koivisto.

Avoid triggering network cache speculative revalidation for loads allowing expired content
(e.g. history loads, restoring pages after crash or safari relaunch). This causes us to do
unnecessary revalidations, it is both wasteful and bad for performance.

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::retrieve):

9:25 AM Changeset in webkit [232189] by Matt Baker
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Popover dismissed while attempting to move cursor inside
https://bugs.webkit.org/show_bug.cgi?id=185741
<rdar://problem/40340938>

Reviewed by Joseph Pecoraro.

Hovering a token within the bounds of the current popover should not
show a new popover. This prevents the popover from being dismissed when
the cursor passes over a token under the transparent portion of the
popover frame.

  • UserInterface/Views/SourceCodeTextEditor.js:

(WI.SourceCodeTextEditor.prototype._showPopover):

7:33 AM Changeset in webkit [232188] by Alan Bujtas
  • 9 edits in trunk/Source/WebCore

[LFC] Implement border and padding computation
https://bugs.webkit.org/show_bug.cgi?id=185972

Reviewed by Antti Koivisto.

This patch also removes redundant Display::Box methods and adds a lightweight Edge struct.
(Since padding is optional, if during layout we mistakenly try to access paddingTop/Left/Bottom/Right, Display::Box will assert!)

  • layout/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::computeBorderAndPadding const):

  • layout/FormattingContext.h:
  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::computedBorder):
(WebCore::Layout::FormattingContext::Geometry::computedPadding):

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::layout const):

  • layout/displaytree/DisplayBox.cpp:

(WebCore::Display::Box::marginBox const):
(WebCore::Display::Box::paddingBox const):
(WebCore::Display::Box::contentBox const):

  • layout/displaytree/DisplayBox.h:

(WebCore::Display::Box::Edges::Edges):
(WebCore::Display::Box::setHasValidPosition):
(WebCore::Display::Box::setWidth):
(WebCore::Display::Box::setHeight):
(WebCore::Display::Box::setMargin):
(WebCore::Display::Box::setBorder):
(WebCore::Display::Box::setPadding):
(WebCore::Display::Box::marginTop const):
(WebCore::Display::Box::marginLeft const):
(WebCore::Display::Box::marginBottom const):
(WebCore::Display::Box::marginRight const):
(WebCore::Display::Box::paddingTop const):
(WebCore::Display::Box::paddingLeft const):
(WebCore::Display::Box::paddingBottom const):
(WebCore::Display::Box::paddingRight const):
(WebCore::Display::Box::borderTop const):
(WebCore::Display::Box::borderLeft const):
(WebCore::Display::Box::borderBottom const):
(WebCore::Display::Box::borderRight const):
(WebCore::Display::Box::invalidateSize): Deleted.
(WebCore::Display::Box::setHasValidSize): Deleted.
(WebCore::Display::Box::setHasValidGeometry): Deleted.
(WebCore::Display::Box::setRect): Deleted.
(WebCore::Display::Box::setSize): Deleted.

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::isPaddingEnabled const):

  • layout/layouttree/LayoutBox.h:
7:19 AM Changeset in webkit [232187] by ddkilzer@apple.com
  • 15 edits in trunk/Source

Fix issues with -dealloc methods found by clang static analyzer
<https://webkit.org/b/185887>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

  • API/JSValue.mm:

(-[JSValue dealloc]):
(-[JSValue description]):

  • Move method implementations from (Internal) category to the main category since these are public API. This fixes the false positive warning about a missing -dealloc method.

Source/WebCore:

  • platform/ios/WebAVPlayerController.mm:

(-[WebAVPlayerController dealloc]): Release _minTiming and
_maxTiming to fix leaks.

  • platform/ios/WebBackgroundTaskController.mm:

(-[WebBackgroundTaskController dealloc]): Release
_backgroundTaskStartBlock and _backgroundTaskEndBlock to fix
leaks.

  • platform/ios/WebItemProviderPasteboard.mm:

(-[WebItemProviderRegistrationInfoList dealloc]): Release
_teamData to fix leak.

Source/WebKit:

  • UIProcess/Cocoa/SystemPreviewControllerCocoa.mm: Drive-by fix

to use copy for mimeType property.
(-[_WKPreviewControllerDataSource initWithMIMEType:]): Drive-by
fix to use instancetype instead of id. Use -copy for
mimeType argument to match property definition.
(-[_WKPreviewControllerDataSource dealloc]): Add. Release
_completionHandler and _mimeType to fix leaks.

  • UIProcess/ios/WKPasswordView.mm:

(-[WKPasswordView dealloc]): Add. Release
_userDidEnterPassword to fix leak.

  • UIProcess/ios/fullscreen/WKFullScreenViewController.h:

Drive-by clean-up to make location property copy instead of
retain.

  • UIProcess/ios/fullscreen/WKFullScreenViewController.mm:

(-[WKFullScreenViewController dealloc]): Release _target and
_location to fix leaks.

  • UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:

(-[WKFullscreenAnimationController dealloc]): Add. Release
_viewController to fix leak.

  • UIProcess/ios/fullscreen/WKFullscreenStackView.mm:

(@property secondaryMaterialOverlayView): Mark explicitly as
assign since this isn't a retained variable.
(@property secondaryMaterialOverlayViewConstraints): Mark
explicitly as retain since there is nothing to keep this
object alive.
(+[WKFullscreenStackView secondaryMaterialOverlayView]): Fix
leak by autoreleasing the return value.
(-[WKFullscreenStackView dealloc]): Release retained instance
variables to fix leaks. Note that _stackView and
_visualEffectView are internally retained despite their
@property declarations.
(-[WKFullscreenStackView setTargetViewForSecondaryMaterialOverlay:]):
Retain @property targetViewForSecondaryMaterialOverlay to match
its declaration.

Source/WebKitLegacy/mac:

  • WebView/WebView.mm:

(-[WebUITextIndicatorData dealloc]):

  • Move method implementation from (WebUITextIndicatorInternal) category to the main category since this is public API. This fixes the false positive warning about a missing -dealloc method.
6:47 AM Changeset in webkit [232186] by graouts@webkit.org
  • 2 edits in trunk/Source/WebKit

[Web Animations] Use DEFAULT_EXPERIMENTAL_FEATURES_ENABLED for Web Animations experimental features
https://bugs.webkit.org/show_bug.cgi?id=185919

Reviewed by Dean Jackson.

  • Shared/WebPreferences.yaml:
6:45 AM Changeset in webkit [232185] by graouts@webkit.org
  • 12 edits
    3 adds
    2 deletes in trunk

[Web Animations] WebAnimation objects never get destroyed
https://bugs.webkit.org/show_bug.cgi?id=185917
<rdar://problem/39539371>

Reviewed by Dean Jackson and Antti Koivisto.

Source/WebCore:

The AnimationTimeline class keeps references to WebAnimation objects organized in various ways. First, there
are three main maps across which all animations are stored, one for non-subclass WebAnimation objects
(m_elementToAnimationsMap), one for CSSSAnimation objects (m_elementToCSSAnimationsMap) and one for CSSTranstion
objects (m_elementToCSSTransitionsMap). On top of that, we also keep a map to access CSSAnimation objects for
a given element by CSS animation name (m_elementToCSSAnimationByName) and another map to access CSSTransition
objects for a given element by CSS property (m_elementToCSSTransitionByCSSPropertyID).

None of the RefPtr<WebAnimation> stored in these maps would get cleared when the document would get torn down,
which would also prevent the AnimationTimeline (and its DocumentTimeline subclass) from being destroyed.

We now ensure that element and document tear-down correctly removes animations and clears those maps, which
in turn allows the DocumentTimeline to be destroyed, fixing the significant memory leak introduced by Web Animations
so far.

Finally, we change the collection type for those maps to be ListHashRef instead of Vector to guarantee we only
add an animation once per collection due to changes in how setEffect() and setTimeline() operate.

Test: animations/leak-document-with-css-animation.html

  • animation/AnimationTimeline.cpp:

(WebCore::AnimationTimeline::~AnimationTimeline): There is no need to clear those tables as they'll need to be empty
for the AnimationTimeline to even be destroyed.
(WebCore::AnimationTimeline::relevantMapForAnimation): Change to use ListHashRef instead of Vector.
(WebCore::AnimationTimeline::animationWasAddedToElement): Change to use ListHashRef instead of Vector.
(WebCore::AnimationTimeline::animationWasRemovedFromElement): When an animation is removed from an element, ensure that
references to this animation stored in the m_elementToCSSAnimationByName and m_elementToCSSTransitionByCSSPropertyID maps
are cleared.
(WebCore::AnimationTimeline::animationsForElement const): Change to use ListHashRef instead of Vector.
(WebCore::AnimationTimeline::removeAnimationsForElement): Instead of just calling cancel() on all known declarative animations
(this method used to be called cancelDeclarativeAnimationsForElement()), we now set the effect of known animations, declarative
or not, for the provided element which will in turn call animationWasRemovedFromElement() and remove the animation from all
maps that might keep a reference to it.
(WebCore::AnimationTimeline::updateCSSTransitionsForElement): Replace call to removeDeclarativeAnimation() with a simple call
to removeAnimation() which will remove references for this animation from the relevant maps.
(WebCore::AnimationTimeline::cancelOrRemoveDeclarativeAnimation): Ditto.
(WebCore::AnimationTimeline::cancelDeclarativeAnimationsForElement): Deleted.
(WebCore::AnimationTimeline::removeDeclarativeAnimation): Deleted.

  • animation/AnimationTimeline.h:

(WebCore::AnimationTimeline::elementToAnimationsMap): Change to use ListHashRef instead of Vector.
(WebCore::AnimationTimeline::elementToCSSAnimationsMap): Change to use ListHashRef instead of Vector.
(WebCore::AnimationTimeline::elementToCSSTransitionsMap): Change to use ListHashRef instead of Vector.

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::setEffect): In the case of a declarative animation, we don't want to remove the animation from the relevant
maps because while the effect was set via the API, the element still has a transition or animation set up and we must not break the
timeline-to-animation relationship.
(WebCore::WebAnimation::setEffectInternal): Factor parts of setEffect() out into a new method that can be called from
AnimationTimeline::removeAnimationsForElement() to reset the m_effect member and correctly call animationWasRemovedFromElement()
without all the Web Animations machinery of setEffect(), which is a public API that has unwanted side effects (such as rejecting
promises).
(WebCore::WebAnimation::setTimeline): In the case of a declarative animation, we don't want to remove the animation from the
relevant maps because, while the timeline was set via the API, the element still has a transition or animation set up and we must
not break the relationship.

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::~DocumentTimeline):
(WebCore::DocumentTimeline::detachFromDocument): Close the GenericTaskQueues when detaching from the document as it's too late to
perform this work in the destructor. We also cancel the schedule timer which we had forgotten to do before.

  • animation/WebAnimation.h:
  • dom/Document.cpp:

(WebCore::Document::prepareForDestruction):

  • dom/Element.cpp:

(WebCore::Element::removedFromAncestor):

  • dom/PseudoElement.cpp:

(WebCore::PseudoElement::clearHostElement):

  • rendering/updating/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::tearDownRenderers):

LayoutTests:

Add a new test that would fail before this fix since the Document would leak. We also remove a homegrown test that was not correct
and is no longer relevant thanks to the tests under imported/mozilla.

  • animations/leak-document-with-css-animation-expected.txt: Added.
  • animations/leak-document-with-css-animation.html: Added.
  • animations/resources/animation-leak-iframe.html: Added.
  • platform/win/TestExpectations:
  • webanimations/css-transitions-expected.txt: Removed.
  • webanimations/css-transitions.html: Removed.
Note: See TracTimeline for information about the timeline view.