WebKit-https.git
7 months agoWeb Inspector: Debugger: don't enable breakpoints when source location changes
drousso@apple.com [Sat, 2 Mar 2019 20:32:11 +0000 (20:32 +0000)]
Web Inspector: Debugger: don't enable breakpoints when source location changes
https://bugs.webkit.org/show_bug.cgi?id=195081
<rdar://problem/48422701>

Reviewed by Joseph Pecoraro.

* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager.prototype._breakpointDisplayLocationDidChange):
(WI.DebuggerManager.prototype._breakpointEditablePropertyDidChange):

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

7 months agoREGRESSION (r242132): Incorrect positioning with multiple position:fixed elements
simon.fraser@apple.com [Sat, 2 Mar 2019 19:15:21 +0000 (19:15 +0000)]
REGRESSION (r242132): Incorrect positioning with multiple position:fixed elements
https://bugs.webkit.org/show_bug.cgi?id=195246

Reviewed by Frederic Wang.

Source/WebCore:

r242132 introduced a bug where the management of 'cumulativeDelta' in ScrollingTree::notifyRelatedNodesRecursive
was incorrect. This value should propagate from ancestors to descendants, but not between siblings in the scrolling
tree, which it did, causing sibling position:fixed to behave incorrectly.

Test: scrollingcoordinator/mac/multiple-fixed.html

* page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::notifyRelatedNodesRecursive):
* page/scrolling/ScrollingTree.h:

LayoutTests:

Test that uses eventSender to scroll (and is thus macOS-only).

* platform/ios-wk2/TestExpectations:
* scrollingcoordinator/mac/multiple-fixed-expected.html: Added.
* scrollingcoordinator/mac/multiple-fixed.html: Added.

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

7 months ago[WPE] Public API headers are missing autocleanup definitions
aperez@igalia.com [Sat, 2 Mar 2019 17:50:12 +0000 (17:50 +0000)]
[WPE] Public API headers are missing autocleanup definitions
https://bugs.webkit.org/show_bug.cgi?id=195211

Reviewed by Philippe Normand.

* PlatformWPE.cmake: List new API headers as installable.
* UIProcess/API/wpe/WebKitAutocleanups.h: Added. This is a copy of the header from the GTK
port, adapted to fit the WPE port.
* UIProcess/API/wpe/webkit.h: Add inclusion of WebKitAutocleanups.h
* WebProcess/InjectedBundle/API/wpe/WebKitWebExtensionAutocleanups.h: Added. Also adapted
from the equivalent header of the GTK port.
* WebProcess/InjectedBundle/API/wpe/webkit-web-extension.h: Add inclusion of
WebKitWebExtensionAutocleanups.h

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

7 months agoImprove some comments
darin@apple.com [Sat, 2 Mar 2019 17:33:20 +0000 (17:33 +0000)]
Improve some comments
https://bugs.webkit.org/show_bug.cgi?id=195243

Reviewed by Daniel Bates.

* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper _addAccessibilityObject:toTextMarkerArray:]):
Fix a typo in a comment.

* dom/RadioButtonGroups.cpp: Fix a typo in a comment.
(WebCore::RadioButtonGroups::checkedButtonForGroup const): Use nullptr instead of 0.

* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::~HTMLInputElement): Improved a comment, but sadly made
it a bit longer. Use nullptr instead of 0.
(WebCore::HTMLInputElement::didMoveToNewDocument): Added a comment.

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

7 months agoRemove unused WebPageProxy::m_navigationID
mcatanzaro@igalia.com [Sat, 2 Mar 2019 16:28:46 +0000 (16:28 +0000)]
Remove unused WebPageProxy::m_navigationID
https://bugs.webkit.org/show_bug.cgi?id=195209

Reviewed by Darin Adler.

WebPageProxy::m_navigationID is never assigned to and is only used once by mistake in a
debug LOG(). It must be a refactoring mistake.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didCommitLoadForFrame):
* UIProcess/WebPageProxy.h:

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

7 months ago[Datalist] fast/forms/datalist/datalist-child-validation.html crashes with a debug...
wenson_hsieh@apple.com [Sat, 2 Mar 2019 06:09:31 +0000 (06:09 +0000)]
[Datalist] fast/forms/datalist/datalist-child-validation.html crashes with a debug assertion in isValidFormControlElement()
https://bugs.webkit.org/show_bug.cgi?id=190620
<rdar://problem/19226679>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Fixes and re-enables an existing layout test that is asserting on debug builds (and failing on release builds).
To understand why we hit this assertion, we first note several observations:

    -   The validity of a form control (`isValid()`) depends on the value of `willValidate()`.
    -   Both of these results are cached in member variables: `m_isValid` and `m_willValidate`, respectively.
    -   `willValidate()` changes the cached value of `m_willValidate` if necessary, but `isValid()` uses the
        cached value without update.

Now, consider the following scenario:

    1.  Something changes in the DOM that changes the result of `willValidate()`. This can happen as a result of
        several things:
        a.  The form control changes readonly state
        b.  The form control changes disabled state
        c.  The form control is added to a datalist element
        d.  The form control is removed from a datalist element
    2.  Call `willValidate()`.
    3.  Call `isValid()`.

In scenarios (a) - (c), we ensure that cached form control validity (`m_isValid`) is updated alongside
`m_willValidate` by invoking `setNeedsWillValidateCheck()`, such that the result of `isValid()` matches the
result of `m_isValid` in step (3). However, in the last scenario (d), we don't do this, which causes form
control validity to fall out of sync with the result of `isValid()`. To fix the bug, we update willValidate and
isValid when a form control is removed from an ancestor, only if one of its ancestors is a datalist element.

* html/HTMLFormControlElement.cpp:
(WebCore::HTMLFormControlElement::insertedIntoAncestor):
(WebCore::HTMLFormControlElement::removedFromAncestor):

Make a couple of minor tweaks:
  - Currently, we always invalidate `m_dataListAncestorState` by resetting the state to `Unknown` when the form
    control is removed from an ancestor or inserted. Instead, we only need to reset it when the form control
    already has an ancestor that is a datalist (in the case where it's being removed) or when the form control
    does not yet have an ancestor (in the case where it is being added).
  - If the form control was inside a datalist prior to removal, recompute its cached value of `m_willValidate`,
    as well as its cached validity (`m_isValid`).

LayoutTests:

Re-enables a crashing layout test. See WebCore ChangeLog for more details.

* platform/ios/TestExpectations:
* platform/mac/TestExpectations:

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

7 months agoFinish removing String::format
darin@apple.com [Sat, 2 Mar 2019 05:45:11 +0000 (05:45 +0000)]
Finish removing String::format
https://bugs.webkit.org/show_bug.cgi?id=194893

Reviewed by Daniel Bates.
Source/JavaScriptCore:

* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::nameForRegister): Use makeString instead of String::format,
using the new "pad" function.

Source/WebCore:

* dom/Document.cpp:
(WebCore::Document::lastModified const): Use makeString and pad.
* html/FTPDirectoryDocument.cpp:
(WebCore::processFileDateString): Ditto.

* mathml/MathMLElement.cpp:
(WebCore::convertToPercentageIfNeeded): Use makeString and FormattedNumber.

* page/cocoa/ResourceUsageOverlayCocoa.mm:
(WebCore::ResourceUsageOverlay::platformDraw): Use makeString and pad.

* page/linux/ResourceUsageOverlayLinux.cpp:
(WebCore::cpuUsageString): Use makeString, FormattedNumber, and pad.
(WebCore::gcTimerString): Use String::number.

* platform/DateComponents.cpp:
(WebCore::DateComponents::toStringForTime const): Use makeString and pad.
(WebCore::DateComponents::toString const): Ditto.

* platform/LocalizedStrings.cpp: Removed comment that mentioned String::format,
and that was also inaccurate.

* platform/audio/HRTFElevation.cpp:
(WebCore::HRTFElevation::calculateKernelsForAzimuthElevation):
Use makeString and pad.
* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::drawText): Ditto.
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::logLayerInfo): Ditto.
* rendering/RenderTheme.cpp:
(WebCore::RenderTheme::formatMediaControlsTime const): Ditto.

Source/WebKit:

* UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:
(WebKit::LocalAuthenticator::getAssertion): Use makeString, attempting to fix
a problem where we passed an NSData * to format with a "%s"."

Source/WebKitLegacy/win:

* FullscreenVideoController.cpp:
(timeToString): Use makeString and pad.

Source/WTF:

* wtf/Assertions.cpp:
(WTF::createWithFormatAndArguments): Moved this here from WTFString.cpp.
(WTFLog): Use WTF::createWithFormatAndArguments instead of String::format.

* wtf/HexNumber.h: Deleted unneeded toString function.

* wtf/text/StringConcatenate.h: Got rid of unneeded forward declaration of
StringTypeAdapter, since that's now in Forward.h. Tweaked formatting of templates
a bit. Use function templates for writeTo functions rather than having two of each.
Removed unused toString functions. Optimized case where we use have a UChar* and
a length of zero to not force the result to be 16-bit. Also gets rid of a small
NO_RETURN_DUE_TO_CRASH mess that we don't need. Refactored constructors to use some
static member helper functions to compute string lengths. Added the pad function
and the PaddingSpecification struct template, so we can add padding to anything
we can turn into a string. Got rid of the special case overload for single
arguments, since it only worked for things that the String constructor can handle.
Instead we will now use StringTypeAdapter, which works for more types. Possibly
less optimal for some special cases, which we could specialize for later if we like.
* wtf/text/StringConcatenateNumbers.h: Ditto.
* wtf/text/StringOperators.h: Ditto.
* wtf/text/StringView.h: Ditto.

* wtf/text/WTFString.cpp:
(WTF::createWithFormatAndArguments): Deleted.
(WTF::String::format): Deleted.
* wtf/text/WTFString.h: Deleted declaration of String::format.

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

7 months agoDo not attempt to set WAL Journal mode on a readonly SQLite database
cdumez@apple.com [Sat, 2 Mar 2019 03:44:52 +0000 (03:44 +0000)]
Do not attempt to set WAL Journal mode on a readonly SQLite database
https://bugs.webkit.org/show_bug.cgi?id=195237

Reviewed by Simon Fraser.

This avoids logging errors when opening the database.

* platform/sql/SQLiteDatabase.cpp:
(WebCore::SQLiteDatabase::open):
(WebCore::SQLiteDatabase::useWALJournalMode):
* platform/sql/SQLiteDatabase.h:

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

7 months ago[PlayStation] Upstream playstation's remote inspector server
chris.reid@sony.com [Sat, 2 Mar 2019 03:27:56 +0000 (03:27 +0000)]
[PlayStation] Upstream playstation's remote inspector server
https://bugs.webkit.org/show_bug.cgi?id=193806

Reviewed by Joseph Pecoraro.

Upstreaming PlayStation's Remote Inspector implementation.
It is using a JSON RPC protocol over TCP sockets.
This inspector implementation is planned to also support running on a WinCairo Client and Server.

* PlatformPlayStation.cmake:
* SourcesGTK.txt:
* SourcesWPE.txt:
* inspector/remote/RemoteConnectionToTarget.cpp: Renamed from Source/JavaScriptCore/inspector/remote/glib/RemoteConnectionToTargetGlib.cpp.
* inspector/remote/RemoteInspector.h:
* inspector/remote/playstation/RemoteInspectorConnectionClient.h: Added.
* inspector/remote/playstation/RemoteInspectorConnectionClientPlayStation.cpp: Added.
* inspector/remote/playstation/RemoteInspectorMessageParser.h: Added.
* inspector/remote/playstation/RemoteInspectorMessageParserPlayStation.cpp: Added.
* inspector/remote/playstation/RemoteInspectorPlayStation.cpp: Added.
* inspector/remote/playstation/RemoteInspectorServer.h: Added.
* inspector/remote/playstation/RemoteInspectorServerPlayStation.cpp: Added.
* inspector/remote/playstation/RemoteInspectorSocket.h: Added.
* inspector/remote/playstation/RemoteInspectorSocketClient.h: Added.
* inspector/remote/playstation/RemoteInspectorSocketClientPlayStation.cpp: Added.
* inspector/remote/playstation/RemoteInspectorSocketPlayStation.cpp: Added.
* inspector/remote/playstation/RemoteInspectorSocketServer.h: Added.
* inspector/remote/playstation/RemoteInspectorSocketServerPlayStation.cpp: Added.

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

7 months agoUnreviewed Windows build fix after r242302.
cdumez@apple.com [Sat, 2 Mar 2019 03:12:58 +0000 (03:12 +0000)]
Unreviewed Windows build fix after r242302.

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::ensureNetworkProcess):

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

7 months agoNetworkDataTask redirection should not keep alive its NetworkSession
achristensen@apple.com [Sat, 2 Mar 2019 02:41:21 +0000 (02:41 +0000)]
NetworkDataTask redirection should not keep alive its NetworkSession
https://bugs.webkit.org/show_bug.cgi?id=194927

Reviewed by Darin Adler.

This should fix rdar://problem/47580502

* NetworkProcess/NetworkDataTask.h:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):

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

7 months agoRevert r241223, r241235, and r241287
achristensen@apple.com [Sat, 2 Mar 2019 02:29:40 +0000 (02:29 +0000)]
Revert r241223, r241235, and r241287
https://bugs.webkit.org/show_bug.cgi?id=194427
<rdar://48045861>

Source/WebKit:

This caused crashes, and feature design has evolved away from needing the daemon in this form.

* NetworkProcess/EntryPoint/Cocoa/Daemon/DaemonEntryPoint.mm:
(WebKit::DaemonMain):
* Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.h:
* Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:
(WebKit::XPCServiceEventHandler):
(WebKit::XPCServiceMain):
(WebKit::XPCEventHandler): Deleted.
(WebKit::XPCInitializationHandler): Deleted.
* UIProcess/API/APIProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
(-[_WKProcessPoolConfiguration usesNetworkingDaemon]): Deleted.
(-[_WKProcessPoolConfiguration setUsesNetworkingDaemon:]): Deleted.
* UIProcess/AuxiliaryProcessProxy.cpp:
(WebKit::AuxiliaryProcessProxy::getLaunchOptions):
* UIProcess/Launcher/ProcessLauncher.h:
* UIProcess/Launcher/mac/ProcessLauncherMac.mm:
(WebKit::serviceName):
(WebKit::ProcessLauncher::launchProcess):
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::getLaunchOptions):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::usesNetworkingDaemon const): Deleted.
* UIProcess/WebProcessPool.h:

Source/WTF:

* wtf/spi/darwin/XPCSPI.h:

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

7 months agoAdd setters on WKWebsiteDataStore for sourceApplicationBundleIdentifier and sourceApp...
achristensen@apple.com [Sat, 2 Mar 2019 02:27:21 +0000 (02:27 +0000)]
Add setters on WKWebsiteDataStore for sourceApplicationBundleIdentifier and sourceApplicationSecondaryIdentifier
https://bugs.webkit.org/show_bug.cgi?id=195229
<rdar://problem/48520362>

Reviewed by Chris Dumez.

Source/WebKit:

Just like _setBoundInterfaceIdentifier, we need a way to set these properties after instantiation of a WKWebsiteDataStore,
but we need to make sure we don't set it after the parameters have been copied to the NetworkProcess.

Functionality verified by manual testing.  See radar.
Added an API test that verifies the setter restrictions work as expected.

* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _sourceApplicationBundleIdentifier]):
(-[WKWebsiteDataStore _setSourceApplicationBundleIdentifier:]):
(-[WKWebsiteDataStore _sourceApplicationSecondaryIdentifier]):
(-[WKWebsiteDataStore _setSourceApplicationSecondaryIdentifier:]):
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::toPKPaymentRequest):
* UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::WebsiteDataStore::parameters):
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::WebsiteDataStore):
(WebKit::WebsiteDataStore::setSourceApplicationSecondaryIdentifier):
(WebKit::WebsiteDataStore::setSourceApplicationBundleIdentifier):
* UIProcess/WebsiteData/WebsiteDataStore.h:
(WebKit::WebsiteDataStore::sourceApplicationBundleIdentifier):
(WebKit::WebsiteDataStore::sourceApplicationSecondaryIdentifier):

Tools:

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

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

7 months agoCreate SPI to crash if a JSC VM is created
sbarati@apple.com [Sat, 2 Mar 2019 01:33:17 +0000 (01:33 +0000)]
Create SPI to crash if a JSC VM is created
https://bugs.webkit.org/show_bug.cgi?id=195231
<rdar://problem/47717990>

Reviewed by Mark Lam.

* API/JSVirtualMachine.mm:
(+[JSVirtualMachine setCrashOnVMCreation:]):
* API/JSVirtualMachinePrivate.h:
* runtime/VM.cpp:
(JSC::VM::VM):
(JSC::VM::setCrashOnVMCreation):
* runtime/VM.h:

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

7 months agoWeb Inspector: CPU Usage - Energy Impact Section
joepeck@webkit.org [Sat, 2 Mar 2019 01:18:13 +0000 (01:18 +0000)]
Web Inspector: CPU Usage - Energy Impact Section
https://bugs.webkit.org/show_bug.cgi?id=195151

Reviewed by Devin Rousso.

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
New strings and resources.

* UserInterface/Views/CPUTimelineView.css:
(.timeline-view.cpu > .content .subtitle > .info):
(@media (prefers-color-scheme: dark)):
(.energy-info-popover-content):
(.timeline-view.cpu > .content > .overview > .divider):
(body[dir=ltr] .timeline-view.cpu > .content > .overview > .divider):
(body[dir=rtl] .timeline-view.cpu > .content > .overview > .divider):
(.timeline-view.cpu :matches(.area-chart, .stacked-area-chart) svg > path):
(.timeline-view.cpu .gauge-chart:not(.empty) > svg > path.low):
(.timeline-view.cpu .gauge-chart:not(.empty) > svg > path.medium):
(.timeline-view.cpu .gauge-chart:not(.empty) > svg > path.high):
(.timeline-view.cpu .gauge-chart:not(.empty) > svg > polygon.needle):
(.timeline-view.cpu .energy):
(.timeline-view.cpu .energy .energy-impact):
(.timeline-view.cpu .energy .energy-impact.low):
(.timeline-view.cpu .energy .energy-impact.medium):
(.timeline-view.cpu .energy .energy-impact.high):
(.timeline-view.cpu .energy .energy-impact-number):
Styling the chart and text for the different energy impact levels.

* UserInterface/Views/CPUTimelineView.js:
(WI.CPUTimelineView.prototype.get lowEnergyValue):
(WI.CPUTimelineView.prototype.get highEnergyValue):
(WI.CPUTimelineView.prototype.initialLayout):
(WI.CPUTimelineView.prototype.layout):
(WI.CPUTimelineView.prototype._layoutEnergyChart.mapWithBias):
(WI.CPUTimelineView.prototype._layoutEnergyChart.valuesForGauge):
(WI.CPUTimelineView.prototype._layoutEnergyChart):
(WI.CPUTimelineView.prototype._clearEnergyImpactText):
New gauge chart and associated popover.
We do a bit of biasing of the data for each of the sections
in the gauge chart. Each section biases toward the cap of the
section so that:
  - we encourage lower power usage (sub 3%)
  - the gauge needle quickly moves past the low value of a range

* UserInterface/Views/GaugeChart.css: Added.
(.gauge-chart):
(body[dir=rtl] .gauge-chart):
(.gauge-chart > svg > path,):
(.gauge-chart > svg > polygon.needle):
(.gauge-chart.empty > svg > polygon.needle):
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/GaugeChart.js: Added.
(WI.GaugeChart.prototype.get size):
(WI.GaugeChart.prototype.get segments):
(WI.GaugeChart.prototype.get value):
(WI.GaugeChart.prototype.set value):
(WI.GaugeChart.prototype.clear):
(WI.GaugeChart.prototype.initialLayout):
(WI.GaugeChart.prototype.layout):
(WI.GaugeChart.prototype._validateSegments):
(WI.GaugeChart.prototype._createSegmentPathData):
GaugeChart with variable number of sections and a
current value needle. It has a bit of customization
when drawing the arc at the start of each segment.

* UserInterface/Views/Variables.css:
(:root):
(@media (prefers-color-scheme: dark)):
New CPU colors for the different energy impact levels.

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

7 months ago[JSC] Fix FTL build on ARM32_64 by adding stubs for JSRopeString::offsetOfXXX
ysuzuki@apple.com [Sat, 2 Mar 2019 01:05:30 +0000 (01:05 +0000)]
[JSC] Fix FTL build on ARM32_64 by adding stubs for JSRopeString::offsetOfXXX
https://bugs.webkit.org/show_bug.cgi?id=195235

Reviewed by Saam Barati.

This is a workaround until https://bugs.webkit.org/show_bug.cgi?id=195234 is done.

* runtime/JSString.h:

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

7 months ago[iOS] Turn mouse event simulation on by default
commit-queue@webkit.org [Sat, 2 Mar 2019 00:50:06 +0000 (00:50 +0000)]
[iOS] Turn mouse event simulation on by default
https://bugs.webkit.org/show_bug.cgi?id=195218
<rdar://problem/48516794>

Patch by Antoine Quint <graouts@apple.com> on 2019-03-01
Reviewed by Dean Jackson.

Source/WebCore:

* page/RuntimeEnabledFeatures.h:

Source/WebKit:

* Shared/WebPreferences.yaml:

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

7 months agoWeb Inspector: Data grid border colors don't match accent colors
nvasilyev@apple.com [Sat, 2 Mar 2019 00:37:18 +0000 (00:37 +0000)]
Web Inspector: Data grid border colors don't match accent colors
https://bugs.webkit.org/show_bug.cgi?id=195232

Reviewed by Matt Baker.

* UserInterface/Views/DataGrid.css:
(.data-grid:focus tr.selected td:not(:last-child)):
(body[dir=ltr] .data-grid:focus tr.selected td:not(:last-child)):
(body[dir=rtl] .data-grid:focus tr.selected td:not(:last-child)):

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

7 months agoDisable NetworkStateNotifier::singleton()'s isMainThread() assertion when the WebThre...
cdumez@apple.com [Sat, 2 Mar 2019 00:30:38 +0000 (00:30 +0000)]
Disable NetworkStateNotifier::singleton()'s isMainThread() assertion when the WebThread is enabled
https://bugs.webkit.org/show_bug.cgi?id=195230
<rdar://problem/47925359>

Reviewed by Ryosuke Niwa.

Disable NetworkStateNotifier::singleton()'s isMainThread() assertion when the WebThread is enabled
to address crashes on iOS WK1.

* platform/network/NetworkStateNotifier.cpp:
(WebCore::shouldSuppressThreadSafetyCheck):
(WebCore::NetworkStateNotifier::singleton):

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

7 months agoAdd a system trace scope for event region building
simon.fraser@apple.com [Sat, 2 Mar 2019 00:23:56 +0000 (00:23 +0000)]
Add a system trace scope for event region building
https://bugs.webkit.org/show_bug.cgi?id=195226

Reviewed by Jon Lee.

This trace scope measures the time spend converting element rects into Region objects,
which can be large on some pages.

The value for "Display Refresh Dispatch to main thread" was wrong and I fixed it.

Source/WTF:

* wtf/SystemTracing.h:

Tools:

* Tracing/SystemTracePoints.plist:

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

7 months agoShow mouse event regions in the overlay
simon.fraser@apple.com [Sat, 2 Mar 2019 00:23:53 +0000 (00:23 +0000)]
Show mouse event regions in the overlay
https://bugs.webkit.org/show_bug.cgi?id=195227

Reviewed by Tim Horton.

Enhance event region overlays to show more kinds of events.

* page/DebugPageOverlays.cpp:
(WebCore::touchEventRegionColors):
(WebCore::NonFastScrollableRegionOverlay::drawRect):

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

7 months agoEnvironmentUtilities::stripValuesEndingWithString isn't thread-safe
ross.kirsling@sony.com [Fri, 1 Mar 2019 23:30:16 +0000 (23:30 +0000)]
EnvironmentUtilities::stripValuesEndingWithString isn't thread-safe
https://bugs.webkit.org/show_bug.cgi?id=194612

Reviewed by Alex Christensen.

Source/WebKit:

This API test really shouldn't be verifying that the actual environment was successfully modified.

At its core, stripValuesEndingWithString is really just split-filter-join. By replacing it with a pair of
simple functions -- one for string processing, one for environment processing -- the API test only needs to
worry about the former.

* Platform/unix/EnvironmentUtilities.cpp:
(WebKit::EnvironmentUtilities::stripEntriesEndingWith):
(WebKit::EnvironmentUtilities::removeValuesEndingWith):
(WebKit::EnvironmentUtilities::stripValuesEndingWithString): Deleted.
* Platform/unix/EnvironmentUtilities.h:
Replace old function with a pair of simpler ones.

* NetworkProcess/EntryPoint/Cocoa/XPCService/NetworkServiceEntryPoint.mm:
(NetworkServiceInitializer):
* PluginProcess/EntryPoint/Cocoa/XPCService/PluginServiceEntryPoint.mm:
(PluginServiceInitializer):
* WebProcess/EntryPoint/Cocoa/XPCService/WebContentServiceEntryPoint.mm:
(WebContentServiceInitializer):
Update function name.

Tools:

* TestWebKitAPI/Tests/WebKit/EnvironmentUtilitiesTest.cpp:
Just test the new string-processing function and don't touch the actual environment.
(Test cases are all as before, but based on operator== instead of strcmp.)

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

7 months ago[ews-app] Update primary keys for handling multiple Buildbot instances
aakash_jain@apple.com [Fri, 1 Mar 2019 23:09:31 +0000 (23:09 +0000)]
[ews-app] Update primary keys for handling multiple Buildbot instances
https://bugs.webkit.org/show_bug.cgi?id=195120

Reviewed by Stephanie Lewis.

Use a new primary key uid for build and step tables. Previous primary keys build_id and step_id
were not enough to handle multiple buildbot instances. This new primary key uid would be generated
by a combination of buildbot_instance_id and current primary key. e.g.: buildbot_instance_id + build_id

* BuildSlaveSupport/ews-app/ews/models/build.py: Added new primary key uid.
* BuildSlaveSupport/ews-app/ews/models/step.py: Ditto.
* BuildSlaveSupport/ews-app/ews/models/buildbotinstance.py: Generate uid and instance_id.
* BuildSlaveSupport/ews-app/ews/views/results.py: Updated to receive hostname in events.
* BuildSlaveSupport/ews-build/events.py: Send hostname along-with events.
* BuildSlaveSupport/ews-build/master.cfg: Ditto.

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

7 months ago[ContentChangeObserver] Check for pending style recalcs at the end of each timer...
zalan@apple.com [Fri, 1 Mar 2019 22:48:54 +0000 (22:48 +0000)]
[ContentChangeObserver] Check for pending style recalcs at the end of each timer run.
https://bugs.webkit.org/show_bug.cgi?id=195220
<rdar://problem/48518979>

Reviewed by Simon Fraser.

Source/WebCore:

didScheduleStyleRecalc callback was introduced to see if a style recalc is scheduled while firing the DOM timer. However it does not handle the case
when in addition to this style recalc scheduling, something later (though during the same timer firing) triggers a sync style recalc.
Let's just check if we've got a pending style recalc when the DOM timer comes back.

Test: fast/events/touch/ios/style-recalc-schedule-and-force-relalc.html

* dom/Document.cpp:
(WebCore::Document::scheduleStyleRecalc):
* page/ios/ContentChangeObserver.cpp:
(WebCore::hasPendingStyleRecalc):
(WebCore::ContentChangeObserver::startObservingDOMTimerExecute):
(WebCore::ContentChangeObserver::stopObservingDOMTimerExecute):
(WebCore::ContentChangeObserver::startObservingContentChanges):
(WebCore::ContentChangeObserver::didScheduleStyleRecalc): Deleted.
* page/ios/ContentChangeObserver.h:
(WebCore::ContentChangeObserver::startObservingStyleRecalcScheduling): Deleted.
(WebCore::ContentChangeObserver::stopObservingStyleRecalcScheduling): Deleted.
(WebCore::ContentChangeObserver::isObservingStyleRecalcScheduling const): Deleted.

LayoutTests:

* fast/events/touch/ios/style-recalc-schedule-and-force-relalc-expected.txt: Added.
* fast/events/touch/ios/style-recalc-schedule-and-force-relalc.html: Added.

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

7 months agoUnify WebsiteDataStore::defaultDataStoreConfiguration across ports
don.olmstead@sony.com [Fri, 1 Mar 2019 22:18:22 +0000 (22:18 +0000)]
Unify WebsiteDataStore::defaultDataStoreConfiguration across ports
https://bugs.webkit.org/show_bug.cgi?id=194844

Reviewed by Youenn Fablet.

Move the Cocoa implementation into APIWebsiteDataStore.cpp as the source of truth and
append configuration for Glib's DeviceIdHashSalts storage directory. This also fixes
a crash in Windows when running a Service Worker.

* UIProcess/API/APIWebsiteDataStore.cpp:
(API::WebsiteDataStore::defaultDeviceIdHashSaltsStorageDirectory):
(API::WebsiteDataStore::defaultDataStoreConfiguration):
* UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:
(API::WebsiteDataStore::defaultDeviceIdHashSaltsStorageDirectory): Deleted.
(API::WebsiteDataStore::defaultDataStoreConfiguration): Deleted.
* UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp:
(API::WebsiteDataStore::defaultDataStoreConfiguration): Deleted.
* UIProcess/API/win/APIWebsiteDataStoreWin.cpp:
(API::WebsiteDataStore::defaultDeviceIdHashSaltsStorageDirectory): Deleted.
(API::WebsiteDataStore::defaultDataStoreConfiguration): Deleted.

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

7 months agoResource Load Statistics: Further restrict client-side cookie persistence after cross...
wilander@apple.com [Fri, 1 Mar 2019 22:11:33 +0000 (22:11 +0000)]
Resource Load Statistics: Further restrict client-side cookie persistence after cross-site navigations with link decoration
https://bugs.webkit.org/show_bug.cgi?id=195196
<rdar://problem/48006419>

Reviewed by Brent Fulgham.

Source/WebCore:

Tests: http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-decoration-same-site.html
       http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-fragment-from-prevalent-resource.html
       http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-and-fragment-from-prevalent-resource.html
       http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-from-prevalent-resource.html
       http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-without-link-decoration-from-prevalent-resource.html

Trackers abuse link query parameters to transport user identifiers cross-site.
This patch detects such navigations and applies further restrictions to
client-site cookies on the destination page.

* platform/network/NetworkStorageSession.cpp:
(WebCore::NetworkStorageSession::setAgeCapForClientSideCookies):
    Now sets the regular 7-day cap and a reduced 1-day cap.
(WebCore::NetworkStorageSession::clearPageSpecificDataForResourceLoadStatistics):
    Renamed NetworkStorageSession::removeStorageAccessForAllFramesOnPage() to
    NetworkStorageSession::clearPageSpecificDataForResourceLoadStatistics since
    it now clears out two types of page-specific data.
(WebCore::NetworkStorageSession::committedCrossSiteLoadWithLinkDecoration):
    This function receives a cross-site navigation and checks if the originating
    site is a prevalent resource. If so, it marks the page or stricter cookie
    rules.
(WebCore::NetworkStorageSession::resetCrossSiteLoadsWithLinkDecorationForTesting):
    Test infrastructure. This sets a state that overrides the regular per-page
    clear of data. The reason is that the double clear was racy and caused test
    failures.
(WebCore::NetworkStorageSession::clientSideCookieCap const):
    New function that returns the current cookie lifetime cap.
(WebCore::NetworkStorageSession::removeStorageAccessForAllFramesOnPage): Deleted.
    Renamed to NetworkStorageSession::clearPageSpecificDataForResourceLoadStatistics().
* platform/network/NetworkStorageSession.h:
* platform/network/cocoa/NetworkStorageSessionCocoa.mm:
(WebCore::NetworkStorageSession::setCookiesFromDOM const):
    Now calls NetworkStorageSession::clientSideCookieCap() to set the cap.

Source/WebKit:

Trackers abuse link query parameters to transport user identifiers cross-site.
This patch detects such navigations and applies further restrictions to
client-site cookies on the destination page.

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::clearPageSpecificDataForResourceLoadStatistics):
(WebKit::NetworkConnectionToWebProcess::removeStorageAccessForAllFramesOnPage): Deleted.
    Renamed NetworkConnectionToWebProcess::clearPageSpecificDataForResourceLoadStatistics().
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::committedCrossSiteLoadWithLinkDecoration):
    Reporting IPC message when a link decorated cross-site navigation happens.
(WebKit::NetworkProcess::resetCrossSiteLoadsWithLinkDecorationForTesting):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreStatisticsResetToConsistentState):
    Added clearing of the new state between test runs.
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::resetCrossSiteLoadsWithLinkDecorationForTesting):
    Test infrastructure.
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::isNonUniqueNavigationWithLinkDecoration):
    Convenience function.
(WebKit::WebPageProxy::didCommitLoadForFrame):
    This function now reports to the network process when a link decorated
    cross-site navigation happens.
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::resetCrossSiteLoadsWithLinkDecorationForTesting):
    Test infrastructure.
* UIProcess/WebsiteData/WebsiteDataStore.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::close):
    Name change of function called.

LayoutTests:

* http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-decoration-same-site-expected.txt: Added.
* http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-decoration-same-site.html: Added.
* http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-fragment-from-prevalent-resource-expected.txt: Added.
* http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-fragment-from-prevalent-resource.html: Added.
* http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-and-fragment-from-prevalent-resource-expected.txt: Added.
* http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-and-fragment-from-prevalent-resource.html: Added.
* http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-from-prevalent-resource-expected.txt: Added.
* http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-from-prevalent-resource.html: Added.
* http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-without-link-decoration-from-prevalent-resource-expected.txt: Added.
* http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-without-link-decoration-from-prevalent-resource.html: Added.
* http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js.html:
    Now clears cookies after the test.

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

7 months agoRemove unused code in WebKitLegacy
timothy_horton@apple.com [Fri, 1 Mar 2019 21:58:46 +0000 (21:58 +0000)]
Remove unused code in WebKitLegacy
https://bugs.webkit.org/show_bug.cgi?id=189614

Reviewed by Simon Fraser.

Source/WebKit:

* mac/MigrateHeadersFromWebKitLegacy.make:

Source/WebKitLegacy:

* WebKitLegacy.xcodeproj/project.pbxproj:

Source/WebKitLegacy/mac:

* Carbon/CarbonUtils.h: Removed.
* Carbon/CarbonUtils.m: Removed.
* Carbon/CarbonWindowAdapter.h: Removed.
* Carbon/CarbonWindowAdapter.mm: Removed.
* Carbon/CarbonWindowContentView.h: Removed.
* Carbon/CarbonWindowContentView.m: Removed.
* Carbon/CarbonWindowFrame.h: Removed.
* Carbon/CarbonWindowFrame.m: Removed.
* Carbon/HIViewAdapter.h: Removed.
* Carbon/HIViewAdapter.m: Removed.
* Carbon/HIWebView.h: Removed.
* Carbon/HIWebView.mm: Removed.
* Configurations/WebKitLegacy.xcconfig:
* WebKit.mac.exp:

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

7 months ago[JSC] Use runtime calls for DFG MakeRope if !CPU(ADDRESS64)
ysuzuki@apple.com [Fri, 1 Mar 2019 21:46:08 +0000 (21:46 +0000)]
[JSC] Use runtime calls for DFG MakeRope if !CPU(ADDRESS64)
https://bugs.webkit.org/show_bug.cgi?id=195221

Reviewed by Mark Lam.

ARM32_64 builds DFG 64bit, but the size of address is 32bit. Make DFG MakeRope a runtime call not only for DFG 32_64,
but also DFG 64 with !CPU(ADDRESS64). This patch unifies compileMakeRope again, and use a runtime call for !CPU(ADDRESS64).

* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileMakeRope):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compileMakeRope): Deleted.
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compileMakeRope): Deleted.

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

7 months agoModernize WebKit::AttributedString a little bit
timothy_horton@apple.com [Fri, 1 Mar 2019 21:37:33 +0000 (21:37 +0000)]
Modernize WebKit::AttributedString a little bit
https://bugs.webkit.org/show_bug.cgi?id=195200

Reviewed by Wenson Hsieh.

* Shared/mac/AttributedString.h:
(WebKit::AttributedString::AttributedString):
(WebKit::AttributedString::operator NSAttributedString * const):
* Shared/mac/AttributedString.mm:
(IPC::ArgumentCoder<WebKit::AttributedString>::encode):
(IPC::ArgumentCoder<WebKit::AttributedString>::decode):
(WebKit::AttributedString::encode const): Deleted.
(WebKit::AttributedString::decode): Deleted.
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::attributedSubstringForProposedRange):
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::attributedSubstringForCharacterRangeAsync):
Modern coders, and a constructor and cast operator to/from NSAttributedString.
Also adopt those in a few places just for fun.

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

7 months agoAdjust XMLHttpRequest Content-Type handling
commit-queue@webkit.org [Fri, 1 Mar 2019 21:32:53 +0000 (21:32 +0000)]
Adjust XMLHttpRequest Content-Type handling
https://bugs.webkit.org/show_bug.cgi?id=184645

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

LayoutTests/imported/w3c:

Sync test and update test expectation (all PASSes).

* web-platform-tests/xhr/send-content-type-charset-expected.txt:
* web-platform-tests/xhr/send-content-type-charset.htm:

Source/WebCore:

Implement steps 4.4.1.2 and 4.4.1.3 of send() [1].

Test: web-platform-tests/xhr/send-content-type-charset.htm

[1] https://xhr.spec.whatwg.org/#dom-xmlhttprequest-send

* platform/network/ParsedContentType.cpp:
(WebCore::ParsedContentType::setCharset):
* platform/network/ParsedContentType.h:
* xml/XMLHttpRequest.cpp:
(WebCore::replaceCharsetInMediaTypeIfNeeded):
(WebCore::XMLHttpRequest::send):
(WebCore::replaceCharsetInMediaType): Deleted.

LayoutTests:

Fix 2 subtest expectations.

* http/tests/xmlhttprequest/request-encoding2.html:

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

7 months agoUpdate originsMatch to handle the case of file origins which enforce file path separation
youenn@apple.com [Fri, 1 Mar 2019 21:31:05 +0000 (21:31 +0000)]
Update originsMatch to handle the case of file origins which enforce file path separation
https://bugs.webkit.org/show_bug.cgi?id=195216

Reviewed by Brady Eidson.

Covered by the assertion and existing tests like fast/xmlhttprequest/xmlhttprequest-no-file-access.html.
Make sure originsMatch returns true if either compared origins are the same object
or they have the same file path separation behavior.

* page/SecurityOrigin.cpp:
(WebCore::areOriginsMatching):
(WebCore::originsMatch):

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

7 months agoContinued gardening of storage/indexeddb/ crashes after r242189
tsavell@apple.com [Fri, 1 Mar 2019 21:00:20 +0000 (21:00 +0000)]
Continued gardening of storage/indexeddb/ crashes after r242189
https://bugs.webkit.org/show_bug.cgi?id=195210

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

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

7 months agoSerialize IndexedDB::ObjectStoreOverwriteMode as an enum
youenn@apple.com [Fri, 1 Mar 2019 20:36:08 +0000 (20:36 +0000)]
Serialize IndexedDB::ObjectStoreOverwriteMode as an enum
https://bugs.webkit.org/show_bug.cgi?id=195213

Reviewed by Alex Christensen.

Source/WebCore:

Add traits to enable enum IPC encoding.
No change of behavior.

* Modules/indexeddb/IndexedDB.h:

Source/WebKit:

Make use of enum trait to automatically check for correct enum value when receiving a putOrAdd message.

* NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp:
(WebKit::WebIDBConnectionToClient::putOrAdd):
* NetworkProcess/IndexedDB/WebIDBConnectionToClient.h:
* NetworkProcess/IndexedDB/WebIDBConnectionToClient.messages.in:
* Scripts/webkit/messages.py:
* WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
(WebKit::WebIDBConnectionToServer::putOrAdd):

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

7 months agoUnskip test read-dead-bytecode-locals-in-must-have-handle-values2.js on ARM/MIPS
dinfuehr@igalia.com [Fri, 1 Mar 2019 20:18:39 +0000 (20:18 +0000)]
Unskip test read-dead-bytecode-locals-in-must-have-handle-values2.js on ARM/MIPS
https://bugs.webkit.org/show_bug.cgi?id=195207

Unreviewed. After test runtime was reduced in r242213, test can be
run again on ARM/MIPS.

* stress/read-dead-bytecode-locals-in-must-handle-values2.js:

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

7 months ago[WinCairo] Enable service worker
don.olmstead@sony.com [Fri, 1 Mar 2019 19:58:30 +0000 (19:58 +0000)]
[WinCairo] Enable service worker
https://bugs.webkit.org/show_bug.cgi?id=188318

Reviewed by Youenn Fablet.

.:

* Source/cmake/OptionsWin.cmake:

Source/WebCore:

* WebCorePrefix.h:
* testing/ServiceWorkerInternals.h:
* workers/service/context/SWContextManager.cpp:
(WebCore::SWContextManager::serviceWorkerFailedToTerminate):
* workers/service/context/SWContextManager.h:

Source/WebKit:

* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::terminateProcess):
* WebProcess/Storage/WebSWContextManagerConnection.h:
* config.h:

Tools:

* DumpRenderTree/DumpRenderTreePrefix.h:
* TestWebKitAPI/PlatformWin.cmake:
* TestWebKitAPI/win/TestWebKitAPIPrefix.h:
* WebKitTestRunner/InjectedBundle/win/TestRunnerInjectedBundlePrefix.h:
* WebKitTestRunner/WebKitTestRunnerPrefix.h:

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

7 months agoAdd a quirk for bostongloble.com and latimes.com
sihui_liu@apple.com [Fri, 1 Mar 2019 19:55:48 +0000 (19:55 +0000)]
Add a quirk for bostongloble.com and latimes.com
https://bugs.webkit.org/show_bug.cgi?id=195155

Reviewed by Geoffrey Garen.

Covered by manual testing.

* Modules/webdatabase/DOMWindowWebDatabase.idl:
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateRuntimeEnableConditionalString):
* bindings/scripts/IDLAttributes.json:
* bindings/scripts/preprocess-idls.pl:
(GenerateConstructorAttributes):
* page/Quirks.cpp:
(WebCore::Quirks::hasWebSQLSupportQuirk const):
* page/Quirks.h:

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

7 months agoFlaky API Test TestWebKitAPI.ProcessSwap.LoadUnload
cdumez@apple.com [Fri, 1 Mar 2019 19:33:47 +0000 (19:33 +0000)]
Flaky API Test TestWebKitAPI.ProcessSwap.LoadUnload
https://bugs.webkit.org/show_bug.cgi?id=195110

Reviewed by Ryosuke Niwa.

The test was attempting to disable PageCache via view preferences instead of using the
process pool configuration flag. This would fail to disable PageCache because the
usesPageCache preference would not prevent the creation of SuspendedPageProxy objects.
As a result, the firing on the unload event would get delayed until the SuspendedPageProxy
objects would get destroyed, which would lead to flakiness.

This patch updates WebPageProxy::suspendCurrentPageIfPossible() to not create suspended
pages proxies when the usesPageCache preference is set to false.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::suspendCurrentPageIfPossible):

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

7 months agoDFG: Loop-invariant code motion (LICM) should not hoist dead code
rmorisset@apple.com [Fri, 1 Mar 2019 19:24:08 +0000 (19:24 +0000)]
DFG: Loop-invariant code motion (LICM) should not hoist dead code
https://bugs.webkit.org/show_bug.cgi?id=194945
<rdar://problem/48311657>

Reviewed by Saam Barati.

* dfg/DFGLICMPhase.cpp:
(JSC::DFG::LICMPhase::run):

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

7 months ago[ContentChangeObserver] Rename members and move implementation to header.
zalan@apple.com [Fri, 1 Mar 2019 19:23:50 +0000 (19:23 +0000)]
[ContentChangeObserver] Rename members and move implementation to header.
https://bugs.webkit.org/show_bug.cgi?id=195198
<rdar://problem/48499967>

Reviewed by Simon Fraser.

* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::startObservingDOMTimerExecute):
(WebCore::ContentChangeObserver::stopObservingDOMTimerExecute):
(WebCore::ContentChangeObserver::startObservingStyleRecalc):
(WebCore::ContentChangeObserver::stopObservingStyleRecalc):
(WebCore::ContentChangeObserver::startObservingContentChanges):
(WebCore::ContentChangeObserver::stopObservingContentChanges):
(WebCore::ContentChangeObserver::StyleRecalcScope::StyleRecalcScope):
(WebCore::ContentChangeObserver::StyleRecalcScope::~StyleRecalcScope):
(WebCore::ContentChangeObserver::startObservingStyleResolve): Deleted.
(WebCore::ContentChangeObserver::stopObservingStyleResolve): Deleted.
(WebCore::ContentChangeObserver::isObservingContentChanges): Deleted.
(WebCore::ContentChangeObserver::startObservingDOMTimerScheduling): Deleted.
(WebCore::ContentChangeObserver::stopObservingDOMTimerScheduling): Deleted.
(WebCore::ContentChangeObserver::isObservingDOMTimerScheduling): Deleted.
(WebCore::ContentChangeObserver::startObservingStyleRecalcScheduling): Deleted.
(WebCore::ContentChangeObserver::stopObservingStyleRecalcScheduling): Deleted.
(WebCore::ContentChangeObserver::isObservingStyleRecalcScheduling): Deleted.
(WebCore::ContentChangeObserver::setShouldObserveNextStyleRecalc): Deleted.
(WebCore::ContentChangeObserver::shouldObserveNextStyleRecalc): Deleted.
(WebCore::ContentChangeObserver::countOfObservedDOMTimers): Deleted.
(WebCore::ContentChangeObserver::clearObservedDOMTimers): Deleted.
(WebCore::ContentChangeObserver::containsObservedDOMTimer): Deleted.
* page/ios/ContentChangeObserver.h:
(WebCore::ContentChangeObserver::startObservingDOMTimerScheduling):
(WebCore::ContentChangeObserver::stopObservingDOMTimerScheduling):
(WebCore::ContentChangeObserver::isObservingDOMTimerScheduling const):
(WebCore::ContentChangeObserver::containsObservedDOMTimer const):
(WebCore::ContentChangeObserver::startObservingStyleRecalcScheduling):
(WebCore::ContentChangeObserver::stopObservingStyleRecalcScheduling):
(WebCore::ContentChangeObserver::isObservingStyleRecalcScheduling const):
(WebCore::ContentChangeObserver::setShouldObserveStyleRecalc):
(WebCore::ContentChangeObserver::shouldObserveStyleRecalc const):
(WebCore::ContentChangeObserver::isObservingContentChanges const):
(WebCore::ContentChangeObserver::countOfObservedDOMTimers const):
(WebCore::ContentChangeObserver::clearObservedDOMTimers):

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

7 months agoCodify the naming convention for fooIfExists
rniwa@webkit.org [Fri, 1 Mar 2019 19:21:15 +0000 (19:21 +0000)]
Codify the naming convention for fooIfExists
https://bugs.webkit.org/show_bug.cgi?id=194930

Reviewed by Darin Adler.

Updating the coding style guideline after the discussion following
https://lists.webkit.org/pipermail/webkit-dev/2013-June/025056.html

* code-style.md:

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

7 months ago[ContentChangeObserver] ContentChangeObserver::StyleChangeScope should not set WKCont...
zalan@apple.com [Fri, 1 Mar 2019 19:14:02 +0000 (19:14 +0000)]
[ContentChangeObserver] ContentChangeObserver::StyleChangeScope should not set WKContentVisibilityChange directly
https://bugs.webkit.org/show_bug.cgi?id=195197
<rdar://problem/48498332>

Reviewed by Simon Fraser.

Add didContentVisibilityChange to hide WKContentVisibilityChange value. We might also want to add some logic to didContentVisibilityChange at some point.

* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::didContentVisibilityChange):
(WebCore::ContentChangeObserver::StyleChangeScope::~StyleChangeScope):
* page/ios/ContentChangeObserver.h:

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

7 months ago[EME] Make sure the hasSessionSemaphore is set even if HAVE(AVSTREAMSESSION) is false
jer.noble@apple.com [Fri, 1 Mar 2019 19:10:58 +0000 (19:10 +0000)]
[EME] Make sure the hasSessionSemaphore is set even if HAVE(AVSTREAMSESSION) is false
https://bugs.webkit.org/show_bug.cgi?id=195217

Reviewed by Eric Carlson.

* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(WebCore::SourceBufferPrivateAVFObjC::didProvideContentKeyRequestInitializationDataForTrackID):

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

7 months ago[ThreadedCompositor] Simply the compositing run loop worker thread
commit-queue@webkit.org [Fri, 1 Mar 2019 18:08:00 +0000 (18:08 +0000)]
[ThreadedCompositor] Simply the compositing run loop worker thread
https://bugs.webkit.org/show_bug.cgi?id=195208

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2019-03-01
Reviewed by Don Olmstead.

We can remove the WorkQueuePool, since we never really supported more than one thread, and now that single
process model non longer exists it doesn't even make sense. We can simply use a RunLoop instead of a WorkQueue
so that the implementation is not specific to the generic WorkQueue implementation.

* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
(WebKit::createRunLoop): Helper function to create the RunLoop in a worker thread before m_updateTimer is initialized.
(WebKit::CompositingRunLoop::CompositingRunLoop): Use createRunLoop().
(WebKit::CompositingRunLoop::~CompositingRunLoop): Stop the worker thread run loop in the next main run loop iteration.
(WebKit::CompositingRunLoop::performTask): Use m_runLoop.
(WebKit::CompositingRunLoop::performTaskSync): Ditto.
(WebKit::WorkQueuePool::singleton): Deleted.
(WebKit::WorkQueuePool::dispatch): Deleted.
(WebKit::WorkQueuePool::runLoop): Deleted.
(WebKit::WorkQueuePool::invalidate): Deleted.
(WebKit::WorkQueuePool::WorkQueuePool): Deleted.
(WebKit::WorkQueuePool::getOrCreateWorkQueueForContext): Deleted.
(): Deleted.
* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:

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

7 months agoEnable WPT Pointer Events tests
commit-queue@webkit.org [Fri, 1 Mar 2019 17:57:56 +0000 (17:57 +0000)]
Enable WPT Pointer Events tests
https://bugs.webkit.org/show_bug.cgi?id=195204
<rdar://problem/48502751>

Patch by Antoine Quint <graouts@apple.com> on 2019-03-01
Reviewed by Dean Jackson.

The touch-action property has been enabled as part of the work on webkit.org/b/195008 but the WPT tests
LayoutTests/imported/w3c:

had not been enabled yet, so we're now adding the progressions made.

* web-platform-tests/pointerevents/extension/pointerevent_touch-action-verification-expected.txt:
* web-platform-tests/pointerevents/pointerevent_touch-action-verification-expected.txt:

LayoutTests:

had not been enabled yet.

* platform/mac/TestExpectations:

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

7 months agoREGRESSION: (r242189): Six Layout Tests in storage/indexeddb/ are crashing after...
tsavell@apple.com [Fri, 1 Mar 2019 17:08:10 +0000 (17:08 +0000)]
REGRESSION: (r242189): Six Layout Tests in storage/indexeddb/ are crashing after r242189
https://bugs.webkit.org/show_bug.cgi?id=195210

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

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

7 months ago[Web GPU] 32-bit builds broken by attempt to disable WebGPU on 32-bit
justin_fan@apple.com [Fri, 1 Mar 2019 17:05:31 +0000 (17:05 +0000)]
[Web GPU] 32-bit builds broken by attempt to disable WebGPU on 32-bit
https://bugs.webkit.org/show_bug.cgi?id=195191

Rubber-stamped by Dean Jackson.

Dropping support for 32-bit entirely, so I'm intentionally leaving 32-bit broken.

Source/JavaScriptCore:

* Configurations/FeatureDefines.xcconfig:

Source/WebCore:

* Configurations/FeatureDefines.xcconfig:

Source/WebCore/PAL:

* Configurations/FeatureDefines.xcconfig:

Source/WebKit:

* Configurations/FeatureDefines.xcconfig:

Source/WebKitLegacy/mac:

* Configurations/FeatureDefines.xcconfig:

Tools:

* TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

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

7 months agoFix debug builds with GCC
dinfuehr@igalia.com [Fri, 1 Mar 2019 11:43:32 +0000 (11:43 +0000)]
Fix debug builds with GCC
https://bugs.webkit.org/show_bug.cgi?id=195205

Unreviewed. Fix debug builds in GCC by removing
the constexpr-keyword for this function.

* runtime/CachedTypes.cpp:
(JSC::tagFromSourceCodeType):

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

7 months ago[ARM] Fix assembler warnings in ctiMasmProbeTrampoline
dinfuehr@igalia.com [Fri, 1 Mar 2019 09:50:21 +0000 (09:50 +0000)]
[ARM] Fix assembler warnings in ctiMasmProbeTrampoline
https://bugs.webkit.org/show_bug.cgi?id=195164

Reviewed by Mark Lam.

Short branches in IT blocks are deprecated in AArch32. In addition the
the conditional branch was the only instruction in the IT block. Short
branches are able to encode the condition code themselves, the additional
IT instruction is not needed.

The assembler was also warning that writing into APSR without a bitmask
was deprecated. Therefore use APSR_nzcvq instead, this generates the same
instruction encoding.

* assembler/MacroAssemblerARMv7.cpp:

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

7 months agoUnreviewed, fix lldb webkitpy tests
ysuzuki@apple.com [Fri, 1 Mar 2019 08:41:23 +0000 (08:41 +0000)]
Unreviewed, fix lldb webkitpy tests
https://bugs.webkit.org/show_bug.cgi?id=194375

Since we changed the value of Is8Bit flag in StringImpl, we change lldb webkitpy tests accordingly.

* lldb/lldb_webkit.py:
(WTFStringImplProvider.is_8bit):

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

7 months agoRemove CachedPtr::m_isEmpty and CachedOptional::m_isEmpty fields
tzagallo@apple.com [Fri, 1 Mar 2019 07:31:44 +0000 (07:31 +0000)]
Remove CachedPtr::m_isEmpty and CachedOptional::m_isEmpty fields
https://bugs.webkit.org/show_bug.cgi?id=194999

Reviewed by Saam Barati.

These fields are unnecessary, since we can just check that m_offset
has not been initialized (I added VariableLengthObject::isEmpty for
that). They also add 7-byte padding to these classes, which is pretty
bad given how frequently CachedPtr is used.

* runtime/CachedTypes.cpp:
(JSC::CachedObject::operator new[]):
(JSC::VariableLengthObject::allocate):
(JSC::VariableLengthObject::isEmpty const):
(JSC::CachedPtr::encode):
(JSC::CachedPtr::decode const):
(JSC::CachedPtr::get const):
(JSC::CachedOptional::encode):
(JSC::CachedOptional::decode const):
(JSC::CachedOptional::decodeAsPtr const):

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

7 months agoHTTPSUpgradeList.db database should be opened in readonly mode
Hironori.Fujii@sony.com [Fri, 1 Mar 2019 04:40:56 +0000 (04:40 +0000)]
HTTPSUpgradeList.db database should be opened in readonly mode
https://bugs.webkit.org/show_bug.cgi?id=195194
<rdar://problem/47103889>

Unreviewed build fix for curl.

* platform/network/curl/CookieJarDB.cpp:
(WebCore::CookieJarDB::openDatabase): Removed the second arguemnt of SQLiteDatabase::open.

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

7 months agoUnreviewed Windows build fix after r242251.
cdumez@apple.com [Fri, 1 Mar 2019 03:41:21 +0000 (03:41 +0000)]
Unreviewed Windows build fix after r242251.

* platform/win/SearchPopupMenuDB.cpp:
(WebCore::SearchPopupMenuDB::openDatabase):

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

7 months ago[WinCairo] Turn ENABLE_RESOURCE_LOAD_STATISTICS on
don.olmstead@sony.com [Fri, 1 Mar 2019 03:35:32 +0000 (03:35 +0000)]
[WinCairo] Turn ENABLE_RESOURCE_LOAD_STATISTICS on
https://bugs.webkit.org/show_bug.cgi?id=194267

Reviewed by Brent Fulgham.

* Source/cmake/OptionsWin.cmake:

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

7 months ago[ContentChangeObserver] Move timer removal code from DOMWindow::clearTimeout to DOMTi...
zalan@apple.com [Fri, 1 Mar 2019 03:15:14 +0000 (03:15 +0000)]
[ContentChangeObserver] Move timer removal code from DOMWindow::clearTimeout to DOMTimer::removeById
https://bugs.webkit.org/show_bug.cgi?id=195143
<rdar://problem/48462351>

Reviewed by Simon Fraser.

Currently DOMWindow::clearTimeout() is the only callsite that we are interested in, but this is more future-proof.

* page/DOMTimer.cpp:
(WebCore::DOMTimer::removeById):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::clearTimeout):
* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::startObservingDOMTimerExecute):
(WebCore::ContentChangeObserver::stopObservingDOMTimerExecute):
(WebCore::ContentChangeObserver::didRemoveDOMTimer):
(WebCore::ContentChangeObserver::removeDOMTimer): Deleted.
* page/ios/ContentChangeObserver.h:

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

7 months ago[JSC] sizeof(JSString) should be 16
ysuzuki@apple.com [Fri, 1 Mar 2019 03:13:31 +0000 (03:13 +0000)]
[JSC] sizeof(JSString) should be 16
https://bugs.webkit.org/show_bug.cgi?id=194375

Reviewed by Saam Barati.

JSTests:

* microbenchmarks/make-rope.js: Added.
(makeRope):
* stress/to-lower-case-intrinsic-on-empty-rope.js: We no longer allow 0 length JSString except for jsEmptyString singleton per VM.
(returnRope.helper): Deleted.
(returnRope): Deleted.

Source/JavaScriptCore:

This patch reduces sizeof(JSString) from 24 to 16 to fit it into GC heap cell atom. And it also reduces sizeof(JSRopeString) from 48 to 32.
Both classes cut 16 bytes per instance in GC allocation. This new layout is used in 64bit architectures which has little endianess.

JSString no longer has length and flags directly. JSString has String, and we query information to this String instead of holding duplicate
information in JSString. We embed isRope bit into this String's pointer so that we can convert JSRopeString to JSString in an atomic manner.
We emit store-store fence before we put String pointer. This should exist even before this patch, so this patch also fixes one concurrency issue.

The old JSRopeString separately had JSString* fibers along with String. In this patch, we merge the first JSString* fiber and String pointer
storage into one to reduce the size of JSRopeString. JSRopeString has three pointer width storage. We pick 48bit effective address of JSString*
fibers to compress three fibers + length + flags into three pointer width storage.

In 64bit architecture, JSString and JSRopeString have the following memory layout to make sizeof(JSString) == 16 and sizeof(JSRopeString) == 32.
JSString has only one pointer. We use it for String. length() and is8Bit() queries go to StringImpl. In JSRopeString, we reuse the above pointer
place for the 1st fiber. JSRopeString has three fibers so its size is 48. To keep length and is8Bit flag information in JSRopeString, JSRopeString
encodes these information into the fiber pointers. is8Bit flag is encoded in the 1st fiber pointer. length is embedded directly, and two fibers
are compressed into 12bytes. isRope information is encoded in the first fiber's LSB.

Since length of JSRopeString should be frequently accessed compared to each fiber, we put length in contiguous 32byte field, and compress 2nd
and 3rd fibers into the following 80byte fields. One problem is that now 2nd and 3rd fibers are split. Storing and loading 2nd and 3rd fibers
are not one pointer load operation. To make concurrent collector work correctly, we must initialize 2nd and 3rd fibers at JSRopeString creation
and we must not modify these part later.

             0                        8        10               16                       32                                     48
JSString     [   ID      ][  header  ][   String pointer      0]
JSRopeString [   ID      ][  header  ][ flags ][ 1st fiber    1][  length  ][2nd lower32][2nd upper16][3rd lower16][3rd upper32]
                                                              ^
                                                           isRope bit

Since fibers in JSRopeString are not initialized in atomic pointer store manner, we must initialize all the fiber fields at JSRopeString creation.
To achieve this, we modify our JSRopeString::RopeBuilder implementation not to create half-baked JSRopeString.

This patch also makes an empty JSString singleton per VM. This makes evaluation of JSString in boolean context one pointer comparison. This is
critical in this change since this patch enlarges the code necessary to get length from JSString in JIT. Without this guarantee, our code of boolean
context evaluation is bloated. This patch hides all the JSString::create and JSRopeString::create in the private permission. JSString and JSRopeString
creation is only allowed from jsString and related helper functions and they return a singleton empty JSString if the length is zero. We also change
JSRopeString::RopeBuilder not to construct an empty JSRopeString.

This patch is performance neutral in Speedometer2 and JetStream2. And it improves RAMification by 2.7%.

* JavaScriptCore.xcodeproj/project.pbxproj:
* assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::storeZero16):
* assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::storeZero16):
(JSC::MacroAssemblerX86Common::store16):
* bytecode/AccessCase.cpp:
(JSC::AccessCase::generateImpl):
* bytecode/InlineAccess.cpp:
(JSC::InlineAccess::dumpCacheSizesAndCrash):
(JSC::linkCodeInline):
(JSC::InlineAccess::isCacheableStringLength):
(JSC::InlineAccess::generateStringLength):
* bytecode/InlineAccess.h:
(JSC::InlineAccess::sizeForPropertyAccess):
(JSC::InlineAccess::sizeForPropertyReplace):
(JSC::InlineAccess::sizeForLengthAccess):
* dfg/DFGOperations.cpp:
* dfg/DFGOperations.h:
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileStringSlice):
(JSC::DFG::SpeculativeJIT::compileToLowerCase):
(JSC::DFG::SpeculativeJIT::compileGetCharCodeAt):
(JSC::DFG::SpeculativeJIT::compileGetByValOnString):
(JSC::DFG::SpeculativeJIT::compileStringEquality):
(JSC::DFG::SpeculativeJIT::compileStringZeroLength):
(JSC::DFG::SpeculativeJIT::compileLogicalNotStringOrOther):
(JSC::DFG::SpeculativeJIT::emitStringBranch):
(JSC::DFG::SpeculativeJIT::emitStringOrOtherBranch):
(JSC::DFG::SpeculativeJIT::compileGetIndexedPropertyStorage):
(JSC::DFG::SpeculativeJIT::compileGetArrayLength):
(JSC::DFG::SpeculativeJIT::emitPopulateSliceIndex):
(JSC::DFG::SpeculativeJIT::compileArraySlice):
(JSC::DFG::SpeculativeJIT::compileArrayIndexOf):
(JSC::DFG::SpeculativeJIT::speculateStringIdentAndLoadStorage):
(JSC::DFG::SpeculativeJIT::emitSwitchCharStringJump):
(JSC::DFG::SpeculativeJIT::emitSwitchStringOnString):
(JSC::DFG::SpeculativeJIT::compileMakeRope): Deleted.
* dfg/DFGSpeculativeJIT.h:
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::compileMakeRope):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::compileMakeRope):
* ftl/FTLAbstractHeapRepository.cpp:
(JSC::FTL::AbstractHeapRepository::AbstractHeapRepository):
* ftl/FTLAbstractHeapRepository.h:
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileGetIndexedPropertyStorage):
(JSC::FTL::DFG::LowerDFGToB3::compileGetArrayLength):
(JSC::FTL::DFG::LowerDFGToB3::compileMakeRope):
(JSC::FTL::DFG::LowerDFGToB3::compileStringCharAt):
(JSC::FTL::DFG::LowerDFGToB3::compileStringCharCodeAt):
(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
(JSC::FTL::DFG::LowerDFGToB3::compileStringToUntypedStrictEquality):
(JSC::FTL::DFG::LowerDFGToB3::compileSwitch):
(JSC::FTL::DFG::LowerDFGToB3::mapHashString):
(JSC::FTL::DFG::LowerDFGToB3::compileMapHash):
(JSC::FTL::DFG::LowerDFGToB3::compileHasOwnProperty):
(JSC::FTL::DFG::LowerDFGToB3::compileStringSlice):
(JSC::FTL::DFG::LowerDFGToB3::compileToLowerCase):
(JSC::FTL::DFG::LowerDFGToB3::stringsEqual):
(JSC::FTL::DFG::LowerDFGToB3::boolify):
(JSC::FTL::DFG::LowerDFGToB3::switchString):
(JSC::FTL::DFG::LowerDFGToB3::isRopeString):
(JSC::FTL::DFG::LowerDFGToB3::isNotRopeString):
(JSC::FTL::DFG::LowerDFGToB3::speculateStringIdent):
* jit/AssemblyHelpers.cpp:
(JSC::AssemblyHelpers::emitConvertValueToBoolean):
(JSC::AssemblyHelpers::branchIfValue):
* jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::branchIfRopeStringImpl):
(JSC::AssemblyHelpers::branchIfNotRopeStringImpl):
* jit/JITInlines.h:
(JSC::JIT::emitLoadCharacterString):
* jit/Repatch.cpp:
(JSC::tryCacheGetByID):
* jit/ThunkGenerators.cpp:
(JSC::stringGetByValGenerator):
(JSC::stringCharLoad):
* llint/LowLevelInterpreter.asm:
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* runtime/JSString.cpp:
(JSC::JSString::createEmptyString):
(JSC::JSRopeString::RopeBuilder<RecordOverflow>::expand):
(JSC::JSString::dumpToStream):
(JSC::JSString::estimatedSize):
(JSC::JSString::visitChildren):
(JSC::JSRopeString::resolveRopeInternal8 const):
(JSC::JSRopeString::resolveRopeInternal8NoSubstring const):
(JSC::JSRopeString::resolveRopeInternal16 const):
(JSC::JSRopeString::resolveRopeInternal16NoSubstring const):
(JSC::JSRopeString::resolveRopeToAtomicString const):
(JSC::JSRopeString::convertToNonRope const):
(JSC::JSRopeString::resolveRopeToExistingAtomicString const):
(JSC::JSRopeString::resolveRopeWithFunction const):
(JSC::JSRopeString::resolveRope const):
(JSC::JSRopeString::resolveRopeSlowCase8 const):
(JSC::JSRopeString::resolveRopeSlowCase const):
(JSC::JSRopeString::outOfMemory const):
(JSC::JSRopeString::visitFibers): Deleted.
(JSC::JSRopeString::clearFibers const): Deleted.
* runtime/JSString.h:
(JSC::JSString::uninitializedValueInternal const):
(JSC::JSString::valueInternal const):
(JSC::JSString::JSString):
(JSC::JSString::finishCreation):
(JSC::JSString::create):
(JSC::JSString::offsetOfValue):
(JSC::JSString::isRope const):
(JSC::JSString::is8Bit const):
(JSC::JSString::length const):
(JSC::JSString::tryGetValueImpl const):
(JSC::JSString::toAtomicString const):
(JSC::JSString::toExistingAtomicString const):
(JSC::JSString::value const):
(JSC::JSString::tryGetValue const):
(JSC::JSRopeString::unsafeView const):
(JSC::JSRopeString::viewWithUnderlyingString const):
(JSC::JSString::unsafeView const):
(JSC::JSString::viewWithUnderlyingString const):
(JSC::JSString::offsetOfLength): Deleted.
(JSC::JSString::offsetOfFlags): Deleted.
(JSC::JSString::setIs8Bit const): Deleted.
(JSC::JSString::setLength): Deleted.
(JSC::JSString::string): Deleted.
(JSC::jsStringBuilder): Deleted.
* runtime/JSStringInlines.h:
(JSC::JSString::~JSString):
(JSC::JSString::equal const):
* runtime/ObjectPrototype.cpp:
(JSC::objectProtoFuncToString):
* runtime/RegExpMatchesArray.h:
(JSC::createRegExpMatchesArray):
* runtime/RegExpObjectInlines.h:
(JSC::collectMatches):
* runtime/RegExpPrototype.cpp:
(JSC::regExpProtoFuncSplitFast):
* runtime/SmallStrings.cpp:
(JSC::SmallStrings::initializeCommonStrings):
(JSC::SmallStrings::createEmptyString): Deleted.
* runtime/SmallStrings.h:
* runtime/StringPrototype.cpp:
(JSC::stringProtoFuncSlice):
* runtime/StringPrototypeInlines.h: Added.
(JSC::stringSlice):

Source/WTF:

* wtf/text/StringImpl.h:
(WTF::StringImpl::flagIs8Bit):
(WTF::StringImpl::flagIsAtomic):
(WTF::StringImpl::flagIsSymbol):
(WTF::StringImpl::maskStringKind):
* wtf/text/WTFString.cpp:
(WTF::nullString):
* wtf/text/WTFString.h:

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

7 months agoHTTPSUpgradeList.db database should be opened in readonly mode
cdumez@apple.com [Fri, 1 Mar 2019 02:47:33 +0000 (02:47 +0000)]
HTTPSUpgradeList.db database should be opened in readonly mode
https://bugs.webkit.org/show_bug.cgi?id=195194
<rdar://problem/47103889>

Reviewed by Youenn Fablet.

Source/WebCore:

Add parameter to SQLiteDatabase::open() to specific the open flags.

* Modules/webdatabase/Database.cpp:
(WebCore::Database::performOpenAndVerify):
* platform/sql/SQLiteDatabase.cpp:
(WebCore::SQLiteDatabase::open):
* platform/sql/SQLiteDatabase.h:
* platform/sql/SQLiteFileSystem.cpp:
* platform/sql/SQLiteFileSystem.h:

Source/WebKit:

HTTPSUpgradeList.db database should be opened in readonly mode since it is not meant to be
modified by WebKit. Opening it in ReadWrite mode causes sandbox violations.

* NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:
(WebKit::NetworkHTTPSUpgradeChecker::NetworkHTTPSUpgradeChecker):

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

7 months agoFollowup to:
beidson@apple.com [Fri, 1 Mar 2019 02:10:22 +0000 (02:10 +0000)]
Followup to:
Universal links from Google search results pages don't open the app
https://bugs.webkit.org/show_bug.cgi?id=195126

Unreviewed.

* page/SecurityOrigin.cpp:
(WebCore::originsMatch): Remove a bogus assertion (reasoning in bugzilla)

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

7 months ago[iOS] Dark flash when opening Google AMP pages
simon.fraser@apple.com [Fri, 1 Mar 2019 01:54:59 +0000 (01:54 +0000)]
[iOS] Dark flash when opening Google AMP pages
https://bugs.webkit.org/show_bug.cgi?id=195193
rdar://problem/48326442

Reviewed by Zalan Bujtas.

Source/WebCore:

After the incremental compositing updates changes, it was possible for a change in the size
of an overflow:hidden element to fail to update the "ancestor clipping layer" geometry on
a composited descendant that is not a descendant in z-order. When Google search results
create the <iframe> that contain AMP contents, we'd fail to update a zero-sized clipping layer,
leaving the #222 background of an intermediate element visible.

Fix by setting a flag in RenderLayer::updateLayerPosition() (which is called in containing block order)
that sets the "needs geometry update" dirty bit on containing-block-descendant layers. Currently
this flag affects all descendants; in future, we might be able to clear it for grand-children.

Tests: compositing/geometry/ancestor-clip-change-interleaved-stacking-context.html
       compositing/geometry/ancestor-clip-change.html

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::updateLayerPositions):
(WebCore::RenderLayer::updateLayerPosition):
* rendering/RenderLayer.h:
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateAfterLayout):
* rendering/RenderLayerBacking.h:

LayoutTests:

Tests that change the size of a clipping layer with non-z-order composited descendant, with
a couple of layer tree configurations.

* compositing/geometry/ancestor-clip-change-expected.html: Added.
* compositing/geometry/ancestor-clip-change-interleaved-stacking-context-expected.html: Added.
* compositing/geometry/ancestor-clip-change-interleaved-stacking-context.html: Added.
* compositing/geometry/ancestor-clip-change.html: Added.

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

7 months agoUnreviewed. Attempt windows build fix after r242239.
sbarati@apple.com [Fri, 1 Mar 2019 01:44:22 +0000 (01:44 +0000)]
Unreviewed. Attempt windows build fix after r242239.

* runtime/CachedTypes.cpp:
(JSC::tagFromSourceCodeType):

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

7 months agoWeb Inspector: Timelines: don't show the auto-stop UI when not inspecting a page
drousso@apple.com [Fri, 1 Mar 2019 01:11:56 +0000 (01:11 +0000)]
Web Inspector: Timelines: don't show the auto-stop UI when not inspecting a page
https://bugs.webkit.org/show_bug.cgi?id=195192

Reviewed by Joseph Pecoraro.

* UserInterface/Views/TimelineRecordingContentView.js:
(WI.TimelineRecordingContentView):
(WI.TimelineRecordingContentView.prototype.get navigationItems):

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

7 months agoWeb Inspector: CPU Usage: Worker thread that dies might stay at a high value forever
joepeck@webkit.org [Fri, 1 Mar 2019 00:48:07 +0000 (00:48 +0000)]
Web Inspector: CPU Usage: Worker thread that dies might stay at a high value forever
https://bugs.webkit.org/show_bug.cgi?id=195148

Reviewed by Matt Baker.

* UserInterface/Views/CPUTimelineView.js:
(CPUTimelineView.prototype.layout):
Handle workers dieing or at least zeroing out between records.

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

7 months agoWeb Inspector: CPU Usage Timeline - Make Threads section expandable / collapsable
joepeck@webkit.org [Fri, 1 Mar 2019 00:48:04 +0000 (00:48 +0000)]
Web Inspector: CPU Usage Timeline - Make Threads section expandable / collapsable
https://bugs.webkit.org/show_bug.cgi?id=195085

Reviewed by Matt Baker.

* UserInterface/Base/Setting.js:
New setting to save the Threads expanded/collapsed state.

* UserInterface/Views/CPUTimelineView.css:
(.timeline-view.cpu > .content > .details > .subtitle):
(.timeline-view.cpu > .content > .details > details > .subtitle.threads):
(.timeline-view.cpu > .content > .details > .subtitle): Deleted.
(.timeline-view.cpu > .content > .details > .subtitle.threads): Deleted.
Ensure subtitle styles apply now that one of the subtitles is inside
of a <details> / <summary> element.

* UserInterface/Views/CPUTimelineView.js:
(WI.CPUTimelineView.prototype.initialLayout):
Make the Threads group a <details> / <summary> expandable / collapsed element.

* UserInterface/Views/Main.css:
(summary):
(summary::-webkit-details-marker):
Default styles for <summary>.

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

7 months agoWeb Inspector: View.removeSubview not removing the element properly when not parented
joepeck@webkit.org [Fri, 1 Mar 2019 00:48:01 +0000 (00:48 +0000)]
Web Inspector: View.removeSubview not removing the element properly when not parented
https://bugs.webkit.org/show_bug.cgi?id=195146

Reviewed by Matt Baker.

Source/WebInspectorUI:

* UserInterface/Views/View.js:
(WI.View.prototype.removeSubview):
Since the element may not be a direct child, just use Element.prototype.remove.

LayoutTests:

* inspector/view/basics-expected.txt:
* inspector/view/basics.html:

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

7 months agoIn cloop.rb, rename :int and :uint to :intptr and :uintptr.
mark.lam@apple.com [Fri, 1 Mar 2019 00:04:51 +0000 (00:04 +0000)]
In cloop.rb, rename :int and :uint to :intptr and :uintptr.
https://bugs.webkit.org/show_bug.cgi?id=195183

Reviewed by Yusuke Suzuki.

Also changed intMemRef and uintMemRef to intptrMemRef and uintptrMemRef respectively.

* offlineasm/cloop.rb:

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

7 months agoMake JSScript:cacheBytecodeWithError update the cache when the script changes
sbarati@apple.com [Thu, 28 Feb 2019 23:58:12 +0000 (23:58 +0000)]
Make JSScript:cacheBytecodeWithError update the cache when the script changes
https://bugs.webkit.org/show_bug.cgi?id=194912

Reviewed by Mark Lam.

Prior to this patch, the JSScript SPI would never check if its cached
bytecode were still valid. This would lead the cacheBytecodeWithError
succeeding even if the underlying cache were stale. This patch fixes
that by making JSScript check if the cache is still valid. If it's not,
we will cache bytecode when cacheBytecodeWithError is invoked.

* API/JSScript.mm:
(-[JSScript readCache]):
(-[JSScript writeCache:]):
* API/tests/testapi.mm:
(testBytecodeCacheWithSameCacheFileAndDifferentScript):
(testObjectiveCAPI):
* runtime/CachedTypes.cpp:
(JSC::Decoder::Decoder):
(JSC::VariableLengthObject::buffer const):
(JSC::CachedPtr::decode const):
(JSC::tagFromSourceCodeType):
(JSC::GenericCacheEntry::isUpToDate const):
(JSC::CacheEntry::isStillValid const):
(JSC::GenericCacheEntry::decode const):
(JSC::GenericCacheEntry::isStillValid const):
(JSC::encodeCodeBlock):
(JSC::decodeCodeBlockImpl):
(JSC::isCachedBytecodeStillValid):
* runtime/CachedTypes.h:
* runtime/CodeCache.cpp:
(JSC::sourceCodeKeyForSerializedBytecode):
(JSC::sourceCodeKeyForSerializedProgram):
(JSC::sourceCodeKeyForSerializedModule):
(JSC::serializeBytecode):
* runtime/CodeCache.h:
(JSC::CodeCacheMap::fetchFromDiskImpl):
* runtime/Completion.cpp:
(JSC::generateProgramBytecode):
(JSC::generateBytecode): Deleted.
* runtime/Completion.h:

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

7 months agoUse-after-move in RenderCombineText::combineTextIfNeeded()
mmaxfield@apple.com [Thu, 28 Feb 2019 23:42:22 +0000 (23:42 +0000)]
Use-after-move in RenderCombineText::combineTextIfNeeded()
https://bugs.webkit.org/show_bug.cgi?id=195188

Reviewed by Zalan Bujtas.

Source/WebCore:

r241288 uncovered an existing problem with our text-combine code. r242204 alleviated the
symptom, but this patch fixes the source of the problem (and reverts r242204).

The code in RenderCombineText::combineTextIfNeeded() has a bit that’s like:

FontDescription bestFitDescription;
while (...) {
    FontCascade compressedFont(WTFMove(bestFitDescription), ...);
    ...
}

Clearly this is wrong.

Test: fast/text/text-combine-crash-2.html

* platform/graphics/cocoa/FontDescriptionCocoa.cpp:
(WebCore::FontDescription::platformResolveGenericFamily):
* rendering/RenderCombineText.cpp:
(WebCore::RenderCombineText::combineTextIfNeeded):

LayoutTests:

* fast/text/text-combine-crash-2-expected.html: Added.
* fast/text/text-combine-crash-2.html: Added.

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

7 months agoExpose APINavigationAction.shouldPerformDownload() on WKNavigationAction
david_quesada@apple.com [Thu, 28 Feb 2019 23:37:43 +0000 (23:37 +0000)]
Expose APINavigationAction.shouldPerformDownload() on WKNavigationAction
https://bugs.webkit.org/show_bug.cgi?id=195121
rdar://problem/48450302

Reviewed by Alex Christensen.

Source/WebKit:

* UIProcess/API/Cocoa/WKNavigationAction.mm:
(-[WKNavigationAction _shouldPerformDownload]):
* UIProcess/API/Cocoa/WKNavigationActionPrivate.h:

Tools:

Add API tests for -WKNavigationAction._shouldPerformDownload in various
configurations where the 'download' attribute is absent, blank, or populated
with a filename, and where the anchor element is same-origin or cross-origin
(meaning the 'download' attribute shouldn't be honored).

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/NavigationAction.mm: Added.
(-[NavigationActionTestDelegate init]):
(-[NavigationActionTestDelegate navigationAction]):
(-[NavigationActionTestDelegate waitForNavigationActionCallback]):
(-[NavigationActionTestDelegate waitForDidFinishNavigation]):
(-[NavigationActionTestDelegate webView:decidePolicyForNavigationAction:decisionHandler:]):
(-[NavigationActionTestDelegate webView:didFinishNavigation:]):
(TEST):

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

7 months agoChange CheckedArithmetic to not use std::enable_if_t.
mark.lam@apple.com [Thu, 28 Feb 2019 23:33:08 +0000 (23:33 +0000)]
Change CheckedArithmetic to not use std::enable_if_t.
https://bugs.webkit.org/show_bug.cgi?id=195187
<rdar://problem/48464665>

Reviewed by Keith Miller.

Because C++11 does not like std::enable_if_t and there's a need to use this file with C++11.

* wtf/CheckedArithmetic.h:

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

7 months ago[ContentChangeObserver] Introduce observer subclasses to scope content change observing.
zalan@apple.com [Thu, 28 Feb 2019 23:18:06 +0000 (23:18 +0000)]
[ContentChangeObserver] Introduce observer subclasses to scope content change observing.
https://bugs.webkit.org/show_bug.cgi?id=195172
<rdar://problem/48479259>

Reviewed by Simon Fraser.

Let's scope start/stopObserving call pairs.

* dom/Document.cpp:
(WebCore::Document::updateStyleIfNeeded):
* page/DOMTimer.cpp:
(WebCore::DOMTimer::fired):
* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::StyleChangeObserver::StyleChangeObserver):
(WebCore::ContentChangeObserver::StyleChangeObserver::~StyleChangeObserver):
(WebCore::ContentChangeObserver::StyleRecalcObserver::StyleRecalcObserver):
(WebCore::ContentChangeObserver::StyleRecalcObserver::~StyleRecalcObserver):
(WebCore::ContentChangeObserver::DOMTimerObserver::DOMTimerObserver):
(WebCore::ContentChangeObserver::DOMTimerObserver::~DOMTimerObserver):
(WebCore::ContentChangeObserver::StyleChange::StyleChange): Deleted.
(WebCore::ContentChangeObserver::StyleChange::~StyleChange): Deleted.
* page/ios/ContentChangeObserver.h:
* rendering/updating/RenderTreeUpdater.cpp:
(WebCore::RenderTreeUpdater::updateElementRenderer):

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

7 months agoDisable Web Animations in Safari Technology Preview
commit-queue@webkit.org [Thu, 28 Feb 2019 23:04:07 +0000 (23:04 +0000)]
Disable Web Animations in Safari Technology Preview
https://bugs.webkit.org/show_bug.cgi?id=194748
<rdar://problem/48139481>

Patch by Antoine Quint <graouts@apple.com> on 2019-02-28
Reviewed by Dean Jackson.

The test runners already opt into that feature explicitly, so all that is needed is to turn
the default setting value to false.

* Shared/WebPreferences.yaml:

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

7 months agoEnable the Pointer Events runtime flag by default
commit-queue@webkit.org [Thu, 28 Feb 2019 22:59:14 +0000 (22:59 +0000)]
Enable the Pointer Events runtime flag by default
https://bugs.webkit.org/show_bug.cgi?id=195156

Patch by Antoine Quint <graouts@apple.com> on 2019-02-28
Reviewed by Dean Jackson.

Source/WebCore:

* page/RuntimeEnabledFeatures.h:

Source/WebKit:

* Shared/WebPreferences.yaml:

Source/WebKitLegacy/mac:

* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):

Tools:

* DumpRenderTree/mac/DumpRenderTree.mm:
(enableExperimentalFeatures):

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

7 months agoREGRESSION (r240644): Layout Test inspector/page/overrideSetting-ICECandidateFilterin...
drousso@apple.com [Thu, 28 Feb 2019 22:54:38 +0000 (22:54 +0000)]
REGRESSION (r240644): Layout Test inspector/page/overrideSetting-ICECandidateFilteringEnabled.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=194437
<rdar://problem/48008005>

Reviewed by Joseph Pecoraro.

* inspector/page/overrideSetting-ICECandidateFilteringEnabled.html:
* inspector/page/overrideSetting-ICECandidateFilteringEnabled-expected.txt:
Make sure to close the peer connection and data channel after each phase of the test.
Also add failure logging.

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

7 months agoRevert r232263: it caused processes to crash because process was suspended with locke...
sihui_liu@apple.com [Thu, 28 Feb 2019 22:45:06 +0000 (22:45 +0000)]
Revert r232263: it caused processes to crash because process was suspended with locked file
https://bugs.webkit.org/show_bug.cgi?id=195122
<rdar://problem/48444599>

Reviewed by Geoffrey Garen.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::NetworkProcess):
* NetworkProcess/NetworkProcess.h:
* Shared/WebSQLiteDatabaseTracker.cpp:
(WebKit::WebSQLiteDatabaseTracker::WebSQLiteDatabaseTracker):
(WebKit::WebSQLiteDatabaseTracker::hysteresisUpdated):
* Shared/WebSQLiteDatabaseTracker.h:
* WebProcess/WebProcess.cpp:
(WebKit::m_webSQLiteDatabaseTracker):
(WebKit::m_nonVisibleProcessCleanupTimer): Deleted.
* WebProcess/WebProcess.h:

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

7 months agoWeb Inspector: Debugger: disabled breakpoint color is too dark
mattbaker@apple.com [Thu, 28 Feb 2019 22:32:38 +0000 (22:32 +0000)]
Web Inspector: Debugger: disabled breakpoint color is too dark
https://bugs.webkit.org/show_bug.cgi?id=195103
<rdar://problem/48440678>

Reviewed by Devin Rousso.

Increase the disabled breakpoint contrast, as well as the contrast between
disabled and auto-continue breakpoints. Disabled breakpoints stand out by
being somewhat brighter and less saturated. Using the same strategy for
auto-continue breakpoints is too subtle to provide sufficient contrast.

We can adopt the technique used by Xcode, and overlay a white triangle
marker on the breakpoint arrow to indicate an auto-continue breakpoint.

* UserInterface/Views/BreakpointTreeElement.css:
(.item.breakpoint .status > .status-image):
(.item.breakpoint.selected .status > .status-image.resolved):
Add white outline to make selected breakpoint button stand out.
(.item.breakpoint .status > .status-image.auto-continue::after):
(.item.breakpoint .status > .status-image.disabled):
(.item.breakpoint .status > .status-image.auto-continue): Deleted.

* UserInterface/Views/DOMTreeContentView.css:
(.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint):
(.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint.disabled):
(.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint.subtree):
(.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint.disabled,): Deleted.

* UserInterface/Views/TextEditor.css:
(.text-editor > .CodeMirror .has-breakpoint .CodeMirror-linenumber::before):
(.text-editor > .CodeMirror .breakpoint-auto-continue:not(.execution-line.primary) .CodeMirror-linenumber::after):
(.text-editor > .CodeMirror .breakpoint-disabled .CodeMirror-linenumber::before):
(.text-editor > .CodeMirror .breakpoint-auto-continue:not(.breakpoint-disabled) .CodeMirror-linenumber::before): Deleted.

* UserInterface/Views/Variables.css:
(:root):
Add breakpoint color variables to use across all breakpoint controls.
Use system colors if available, otherwise fall back to hard-coded values
based on sampling the default (blue) accent color on Mojave.

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

7 months ago[ContentChangeObserver] Make observed state reset explicit.
zalan@apple.com [Thu, 28 Feb 2019 22:29:48 +0000 (22:29 +0000)]
[ContentChangeObserver] Make observed state reset explicit.
https://bugs.webkit.org/show_bug.cgi?id=195185
<rdar://problem/48488342>

Reviewed by Simon Fraser.

Use setObservedContentChange only for setting the observed change while observing.

* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::startObservingContentChanges):
(WebCore::ContentChangeObserver::resetObservedContentChange):
(WebCore::ContentChangeObserver::removeObservedDOMTimer):
* page/ios/ContentChangeObserver.h:

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

7 months agoWeb Inspector: Canvas: change tests to not print out dataURLs
drousso@apple.com [Thu, 28 Feb 2019 22:01:24 +0000 (22:01 +0000)]
Web Inspector: Canvas: change tests to not print out dataURLs
https://bugs.webkit.org/show_bug.cgi?id=195136
<rdar://problem/48248697>

Reviewed by Matt Baker.

* inspector/canvas/resources/recording-utilities.js:
(TestPage.registerInitializer.async logRecording):
(TestPage.registerInitializer.window.startRecording):
* inspector/canvas/recording-2d-expected.txt:
* inspector/canvas/recording-bitmaprenderer-expected.txt:
* inspector/canvas/recording-webgl-expected.txt:
* inspector/canvas/recording-webgl-snapshots.html:
* inspector/canvas/recording-webgl-snapshots-expected.txt:

* inspector/canvas/requestContent-2d.html:
* inspector/canvas/requestContent-2d-expected.txt:
* inspector/canvas/requestContent-bitmaprenderer.html:
* inspector/canvas/requestContent-bitmaprenderer-expected.txt:
* inspector/canvas/requestContent-webgl.html:
* inspector/canvas/requestContent-webgl-expected.txt:
* inspector/canvas/requestContent-webgl2.html:
* inspector/canvas/requestContent-webgl2-expected.txt:

* inspector/canvas/setShaderProgramHighlighted.html:
* inspector/canvas/setShaderProgramHighlighted-expected.txt:

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

7 months ago[iOS] Move calls to [UIKeyboard isInHardwareKeyboardMode] to the UI process.
pvollan@apple.com [Thu, 28 Feb 2019 21:39:52 +0000 (21:39 +0000)]
[iOS] Move calls to [UIKeyboard isInHardwareKeyboardMode] to the UI process.
https://bugs.webkit.org/show_bug.cgi?id=193683
<rdar://problem/47634345>

Reviewed by Brent Fulgham.

When a keyboard is attached/deattached or the application becomes foreground, send a message from
the UI process to the WebContent process, notifying whether a keyboard is attached or not. Also,
cache the value of [UIKeyboard isInHardwareKeyboardMode] in the UI process, since this call seems
to be expensive.

* UIProcess/API/Cocoa/WKWebView.mm:
(hardwareKeyboardAvailabilityChangedCallback):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessProxy.h:
(WebKit::WebProcessProxy::setKeyboardIsAttached):
(WebKit::WebProcessProxy::keyboardIsAttached const):
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::applicationWillEnterForeground):
(WebKit::WebPageProxy::hardwareKeyboardAvailabilityChanged):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::platformEditorState const):
(WebKit::WebPage::hardwareKeyboardAvailabilityChanged):

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

7 months agoWeb Inspector: Styles: Control-Space should force completion
nvasilyev@apple.com [Thu, 28 Feb 2019 21:19:25 +0000 (21:19 +0000)]
Web Inspector: Styles: Control-Space should force completion
https://bugs.webkit.org/show_bug.cgi?id=194796
<rdar://problem/48180822>

Reviewed by Matt Baker.

Pressing Control-Space when editing CSS property should show completion popover,
even if the value is empty.

* UserInterface/Models/CSSCompletions.js:
(WI.CSSCompletions.prototype.startsWith):
Performance optimization: exit early when `prefix` is empty.

* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._nameCompletionDataProvider):
(WI.SpreadsheetStyleProperty.prototype._valueCompletionDataProvider):
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField):
(WI.SpreadsheetTextField.prototype._handleKeyDown):
(WI.SpreadsheetTextField.prototype._updateCompletions):

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

7 months agoWeb Inspector: Canvas: enabling auto-capture if the frame count is empty triggers...
drousso@apple.com [Thu, 28 Feb 2019 21:06:59 +0000 (21:06 +0000)]
Web Inspector: Canvas: enabling auto-capture if the frame count is empty triggers an assertion
https://bugs.webkit.org/show_bug.cgi?id=195060

Reviewed by Matt Baker.

* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView.prototype._setRecordingAutoCaptureFrameCount):
(WI.CanvasOverviewContentView.prototype._updateRecordingAutoCaptureCheckboxLabel):
(WI.CanvasOverviewContentView.prototype._handleRecordingAutoCaptureCheckedDidChange):

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

7 months agoSeveral PasteImage API tests are flaky
wenson_hsieh@apple.com [Thu, 28 Feb 2019 20:52:49 +0000 (20:52 +0000)]
Several PasteImage API tests are flaky
https://bugs.webkit.org/show_bug.cgi?id=195160

Reviewed by Tim Horton.

Some of these tests, such as PasteTIFFImage, don't wait for the inserted image element to finish loading before
querying the image element's size; a few other tests, such as PastePNGFile, are racy since they may begin
listening for a "load" event after image load is already complete.

To address this, make these tests first register a "load" event handler, then run script to insert an image
element into the document, and finally wait until the load event is observed before checking image size.

* TestWebKitAPI/Tests/WebKitCocoa/PasteImage.mm:

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

7 months agocloop.rb shift mask should depend on the word size being shifted.
mark.lam@apple.com [Thu, 28 Feb 2019 20:48:50 +0000 (20:48 +0000)]
cloop.rb shift mask should depend on the word size being shifted.
https://bugs.webkit.org/show_bug.cgi?id=195181
<rdar://problem/48484164>

Reviewed by Yusuke Suzuki.

Previously, we're always masking the shift amount with 0x1f.  This is only correct
for 32-bit words.  For 64-bit words, the mask should be 0x3f.  For pointer sized
shifts, the mask depends on sizeof(uintptr_t).

* offlineasm/cloop.rb:

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

7 months agoUnreviewed, reduce the count in the stress/read-dead-bytecode-locals-in-must-handle...
ysuzuki@apple.com [Thu, 28 Feb 2019 20:17:53 +0000 (20:17 +0000)]
Unreviewed, reduce the count in the stress/read-dead-bytecode-locals-in-must-handle-values2.js
https://bugs.webkit.org/show_bug.cgi?id=195144

1e8 takes too much time in the Debug build. I tried 1e5 with the old Debug build and it successfully reproduced the issue.
Change the number from 1e8 to 1e5.

* stress/read-dead-bytecode-locals-in-must-handle-values2.js:
(foo):

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

7 months agoUnreviewed, rolling out r242210.
zalan@apple.com [Thu, 28 Feb 2019 19:58:11 +0000 (19:58 +0000)]
Unreviewed, rolling out r242210.
https://bugs.webkit.org/show_bug.cgi?id=195179

it broke hover menus on losaltosonline.com (Requested by zalan
on #webkit).

Reverted changeset:

"[ContentChangeObserver] Move timer removal code from
DOMWindow::clearTimeout to DOMTimer::removeById"
https://bugs.webkit.org/show_bug.cgi?id=195143
https://trac.webkit.org/changeset/242210

Patch by Commit Queue <commit-queue@webkit.org> on 2019-02-28

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

7 months ago[ContentChangeObserver] Move timer removal code from DOMWindow::clearTimeout to DOMTi...
zalan@apple.com [Thu, 28 Feb 2019 19:19:51 +0000 (19:19 +0000)]
[ContentChangeObserver] Move timer removal code from DOMWindow::clearTimeout to DOMTimer::removeById
https://bugs.webkit.org/show_bug.cgi?id=195143
<rdar://problem/48462351>

Reviewed by Simon Fraser.

Currently DOMWindow::clearTimeout() is the only callsite that we are interested in, but this is more future-proof.

* page/DOMTimer.cpp:
(WebCore::DOMTimer::removeById):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::clearTimeout):
* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::startObservingDOMTimerExecute):
(WebCore::ContentChangeObserver::stopObservingDOMTimerExecute):
(WebCore::ContentChangeObserver::didRemoveDOMTimer):
(WebCore::ContentChangeObserver::removeDOMTimer): Deleted.
* page/ios/ContentChangeObserver.h:

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

7 months agoFix Resource Timing buffer edge cases for WPT
commit-queue@webkit.org [Thu, 28 Feb 2019 19:09:32 +0000 (19:09 +0000)]
Fix Resource Timing buffer edge cases for WPT
https://bugs.webkit.org/show_bug.cgi?id=193213

Patch by Charles Vazac <cvazac@akamai.com> on 2019-02-28
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

* web-platform-tests/resource-timing/buffer-full-add-after-full-event.html:
* web-platform-tests/resource-timing/buffer-full-add-entries-during-callback-that-drop-expected.txt:
* web-platform-tests/resource-timing/buffer-full-add-then-clear-expected.txt:
* web-platform-tests/resource-timing/buffer-full-then-increased-expected.txt:

Source/WebCore:

Test coverage by LayoutTests/imported/w3c/web-platform-tests/resource-timing/buffer*.html

* page/Performance.cpp:
(WebCore::Performance::resourceTimingBufferFullTimerFired): Only dispatch the
resourcetimingbufferfull event if the buffer is still full (as it may have been cleared or
expanded). Also, avoid infinite loops if we aren't able to decrease the number of entries in
the secondary buffer.

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

7 months agoFlaky API Test: TestWebKitAPI.ProcessSwap.PageZoomLevelAfterSwap
cdumez@apple.com [Thu, 28 Feb 2019 18:51:55 +0000 (18:51 +0000)]
Flaky API Test: TestWebKitAPI.ProcessSwap.PageZoomLevelAfterSwap
https://bugs.webkit.org/show_bug.cgi?id=195107

Reviewed by Alex Christensen.

Give some time for the zoom level to get restored.

* TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

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

7 months ago[Curl] HTTP Body is missing with redirection.
commit-queue@webkit.org [Thu, 28 Feb 2019 18:44:49 +0000 (18:44 +0000)]
[Curl] HTTP Body is missing with redirection.
https://bugs.webkit.org/show_bug.cgi?id=191651

Patch by Takashi Komori <Takashi.Komori@sony.com> on 2019-02-28
Reviewed by Don Olmstead.

Source/WebCore:

Implement updateFromDelegatePreservingOldProperties for curl port.

Tests: http/tests/navigation/post-301-response.html
       http/tests/navigation/post-302-response.html
       http/tests/navigation/post-303-response.html
       http/tests/navigation/post-307-response.html
       http/tests/navigation/post-308-response.html

* platform/Curl.cmake:
* platform/network/curl/ResourceRequest.h:
(WebCore::ResourceRequest::updateFromDelegatePreservingOldProperties): Deleted.
* platform/network/curl/ResourceRequestCurl.cpp: Added.
(WebCore::ResourceRequest::updateFromDelegatePreservingOldProperties):

LayoutTests:

* platform/wincairo/TestExpectations:

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

7 months ago[CoordinatedGraphics] Remove COORDINATED_GRAPHICS_THREADED option
commit-queue@webkit.org [Thu, 28 Feb 2019 18:28:01 +0000 (18:28 +0000)]
[CoordinatedGraphics] Remove COORDINATED_GRAPHICS_THREADED option
https://bugs.webkit.org/show_bug.cgi?id=195159

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2019-02-28
Reviewed by Don Olmstead.

.:

* Source/cmake/OptionsGTK.cmake:
* Source/cmake/OptionsPlayStation.cmake:
* Source/cmake/OptionsWPE.cmake:

Source/WebCore:

Use COORDINATED_GRAPHICS instead.

* platform/graphics/GraphicsContext3D.h:
* platform/graphics/PlatformLayer.h:
* platform/graphics/cairo/ImageBufferCairo.cpp:
(WebCore::ImageBufferData::ImageBufferData):
(WebCore::ImageBufferData::~ImageBufferData):
* platform/graphics/cairo/ImageBufferDataCairo.h:
* platform/graphics/nicosia/NicosiaPaintingEngineThreaded.cpp:
* platform/graphics/nicosia/NicosiaPaintingEngineThreaded.h:
* platform/graphics/nicosia/texmap/NicosiaGC3DLayer.cpp:
(Nicosia::GC3DLayer::swapBuffersIfNeeded):
* platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:
(WebCore::GraphicsContext3D::reshapeFBOs):
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
(WebCore::GraphicsContext3D::prepareTexture):
* platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp:
(WebCore::GraphicsContext3D::reshapeFBOs):
* platform/graphics/texmap/GraphicsContext3DTextureMapper.cpp:
(WebCore::GraphicsContext3D::GraphicsContext3D):
(WebCore::GraphicsContext3D::~GraphicsContext3D):
* platform/graphics/texmap/TextureMapperGC3DPlatformLayer.cpp:
(WebCore::TextureMapperGC3DPlatformLayer::TextureMapperGC3DPlatformLayer):
(WebCore::TextureMapperGC3DPlatformLayer::~TextureMapperGC3DPlatformLayer):
* platform/graphics/texmap/TextureMapperGC3DPlatformLayer.h:
* platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:
* platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h:
* platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:
* platform/graphics/texmap/TextureMapperPlatformLayerProxy.h:
* platform/graphics/texmap/TextureMapperPlatformLayerProxyProvider.h:
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::setContentsNeedsDisplay):
(WebCore::CoordinatedGraphicsLayer::setContentsToPlatformLayer):
(WebCore::CoordinatedGraphicsLayer::updatePlatformLayer):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::paintsIntoWindow const):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::shouldCompositeOverflowControls const):

Source/WebKit:

Use COORDINATED_GRAPHICS instead.

* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::onNewBufferAvailable):
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
* Shared/CoordinatedGraphics/SimpleViewportController.cpp:
* Shared/CoordinatedGraphics/SimpleViewportController.h:
* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.cpp:
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.h:
* WebProcess/WebPage/AcceleratedDrawingArea.cpp:
(WebKit::AcceleratedDrawingArea::mainFrameContentSizeChanged):
(WebKit::AcceleratedDrawingArea::enterAcceleratedCompositingMode):
* WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp:
* WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h:
* WebProcess/WebPage/DrawingAreaImpl.cpp:
(WebKit::DrawingAreaImpl::updatePreferences):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::sendViewportAttributesChanged):
(WebKit::WebPage::viewportPropertiesDidChange):
* WebProcess/gtk/WebProcessMainGtk.cpp:

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

7 months agoLocale names can be nullptr
mmaxfield@apple.com [Thu, 28 Feb 2019 18:22:34 +0000 (18:22 +0000)]
Locale names can be nullptr
https://bugs.webkit.org/show_bug.cgi?id=195171
<rdar://problem/48262376>

Reviewed by Dean Jackson.

Nullptr can't be used in keys to HashMaps, so take an early out in this case.

This is a partial revert of r241288.

* platform/graphics/cocoa/FontDescriptionCocoa.cpp:
(WebCore::FontDescription::platformResolveGenericFamily):

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

7 months agoStop using legacy IDB path by default when creating WebProcessPool from websiteDataStore
sihui_liu@apple.com [Thu, 28 Feb 2019 18:15:22 +0000 (18:15 +0000)]
Stop using legacy IDB path by default when creating WebProcessPool from websiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=194958

Reviewed by Geoffrey Garen.

Source/WebKit:

ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration should not use fixed IDB path.

* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):
* UIProcess/API/APIWebsiteDataStore.cpp:
(API::WebsiteDataStore::createLegacy):
(API::indexedDBDatabaseDirectory):
* UIProcess/API/APIWebsiteDataStore.h:
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _indexedDBDatabaseDirectory]):
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::legacyWebsiteDataStoreConfiguration):

Tools:

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

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

7 months agoFix timing out tests following r241747
dbates@webkit.org [Thu, 28 Feb 2019 17:45:38 +0000 (17:45 +0000)]
Fix timing out tests following r241747
(https://bugs.webkit.org/show_bug.cgi?id=193599)

Fix up the path to ui-helper.js so that we actually load it.

* fast/forms/ios/focus-button.html:
* fast/forms/ios/focus-checkbox.html:
* fast/forms/ios/focus-checked-checkbox.html:
* fast/forms/ios/focus-checked-radio.html:
* fast/forms/ios/focus-radio.html:
* fast/forms/ios/focus-reset-button.html:
* fast/forms/ios/focus-search-field.html:
* fast/forms/ios/focus-submit-button.html:
* fast/forms/ios/focus-text-field.html:
* fast/forms/ios/focus-textarea.html:

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

7 months agoTest times out on ARM/MIPS
dinfuehr@igalia.com [Thu, 28 Feb 2019 17:34:25 +0000 (17:34 +0000)]
Test times out on ARM/MIPS
https://bugs.webkit.org/show_bug.cgi?id=195168

Unreviewed. Skip test on ARM/MIPS.

* stress/read-dead-bytecode-locals-in-must-handle-values2.js:

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

7 months ago[CoordinatedGraphics] Unify all LayerTreeHost classes
carlosgc@webkit.org [Thu, 28 Feb 2019 13:17:41 +0000 (13:17 +0000)]
[CoordinatedGraphics] Unify all LayerTreeHost classes
https://bugs.webkit.org/show_bug.cgi?id=195094

Reviewed by Žan Doberšek.

There's no reason to have 3 classes, since currently LayerTreeHost is only used by coordinated graphics based
ports.

* PlatformWin.cmake:
* SourcesGTK.txt:
* SourcesWPE.txt:
* WebProcess/WebPage/AcceleratedDrawingArea.cpp:
(WebKit::AcceleratedDrawingArea::enterAcceleratedCompositingMode):
(WebKit::AcceleratedDrawingArea::exitAcceleratedCompositingModeNow):
* WebProcess/WebPage/AcceleratedDrawingArea.h:
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp: Removed.
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h: Removed.
* WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp: Renamed from Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp.
(WebKit::LayerTreeHost::LayerTreeHost):
(WebKit::LayerTreeHost::~LayerTreeHost):
(WebKit::LayerTreeHost::setLayerFlushSchedulingEnabled):
(WebKit::LayerTreeHost::scheduleLayerFlush):
(WebKit::LayerTreeHost::cancelPendingLayerFlush):
(WebKit::LayerTreeHost::layerFlushTimerFired):
(WebKit::LayerTreeHost::setRootCompositingLayer):
(WebKit::LayerTreeHost::setViewOverlayRootLayer):
(WebKit::LayerTreeHost::invalidate):
(WebKit::LayerTreeHost::scrollNonCompositedContents):
(WebKit::LayerTreeHost::forceRepaint):
(WebKit::LayerTreeHost::forceRepaintAsync):
(WebKit::LayerTreeHost::sizeDidChange):
(WebKit::LayerTreeHost::pauseRendering):
(WebKit::LayerTreeHost::resumeRendering):
(WebKit::LayerTreeHost::graphicsLayerFactory):
(WebKit::LayerTreeHost::contentsSizeChanged):
(WebKit::LayerTreeHost::didChangeViewportAttributes):
(WebKit::LayerTreeHost::didChangeViewport):
(WebKit::LayerTreeHost::setIsDiscardable):
(WebKit::LayerTreeHost::setNativeSurfaceHandleForCompositing):
(WebKit::LayerTreeHost::deviceOrPageScaleFactorChanged):
(WebKit::LayerTreeHost::createDisplayRefreshMonitor):
(WebKit::LayerTreeHost::didFlushRootLayer):
(WebKit::LayerTreeHost::commitSceneState):
(WebKit::LayerTreeHost::frameComplete):
(WebKit::LayerTreeHost::nativeSurfaceHandleForCompositing):
(WebKit::LayerTreeHost::didDestroyGLContext):
(WebKit::LayerTreeHost::willRenderFrame):
(WebKit::LayerTreeHost::didRenderFrame):
(WebKit::LayerTreeHost::requestDisplayRefreshMonitorUpdate):
(WebKit::LayerTreeHost::handleDisplayRefreshMonitorUpdate):
(WebKit::LayerTreeHost::renderNextFrame):
* WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h: Renamed from Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h.
* WebProcess/WebPage/DrawingAreaImpl.cpp:
(WebKit::DrawingAreaImpl::setNeedsDisplay):
(WebKit::DrawingAreaImpl::setNeedsDisplayInRect):
* WebProcess/WebPage/LayerTreeHost.cpp: Removed.
* WebProcess/WebPage/LayerTreeHost.h: Removed.
* WebPage/win/LayerTreeHost.h: Added.

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

7 months ago[ews-app] Update method to save build to handle builder_display_name
aakash_jain@apple.com [Thu, 28 Feb 2019 12:28:34 +0000 (12:28 +0000)]
[ews-app] Update method to save build to handle builder_display_name
https://bugs.webkit.org/show_bug.cgi?id=195047

Reviewed by Dewei Zhu.

* BuildSlaveSupport/ews-app/ews/models/build.py: Updated to handle builder_name and builder_display_name.
* BuildSlaveSupport/ews-app/ews/views/results.py: Ditto.

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

7 months agoWeb Inspector: Revert -webkit-border-end changes that are unreliable
commit-queue@webkit.org [Thu, 28 Feb 2019 09:02:43 +0000 (09:02 +0000)]
Web Inspector: Revert -webkit-border-end changes that are unreliable
https://bugs.webkit.org/show_bug.cgi?id=195149

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2019-02-28
Reviewed by Matt Baker.

* UserInterface/Views/CPUUsageIndicatorView.css:
(.cpu-usage-indicator-view > .details):
(body[dir=ltr] .cpu-usage-indicator-view > .details):
(body[dir=rtl] .cpu-usage-indicator-view > .details):
* UserInterface/Views/CPUUsageStackedView.css:
(.cpu-usage-stacked-view > .details):
(body[dir=ltr] .cpu-usage-stacked-view > .details):
(body[dir=rtl] .cpu-usage-stacked-view > .details):
* UserInterface/Views/CPUUsageView.css:
(.cpu-usage-view > .details):
(body[dir=ltr] .cpu-usage-view > .details):
(body[dir=rtl] .cpu-usage-view > .details):
* UserInterface/Views/MemoryCategoryView.css:
(.memory-category-view > .details):
(body[dir=ltr] .memory-category-view > .details):
(body[dir=rtl] .memory-category-view > .details):

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

7 months ago[Web GPU] Enable Web GPU only on 64-bit
justin_fan@apple.com [Thu, 28 Feb 2019 08:27:37 +0000 (08:27 +0000)]
[Web GPU] Enable Web GPU only on 64-bit
https://bugs.webkit.org/show_bug.cgi?id=195139

Because Metal is only supported on 64 bit apps.

Unreviewed build fix.

Source/JavaScriptCore:

* Configurations/FeatureDefines.xcconfig:

Source/WebCore:

* Configurations/FeatureDefines.xcconfig:

Source/WebCore/PAL:

* Configurations/FeatureDefines.xcconfig:

Source/WebKit:

* Configurations/FeatureDefines.xcconfig:

Source/WebKitLegacy/mac:

* Configurations/FeatureDefines.xcconfig:

Tools:

* TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

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

7 months agoWeb Inspector: Cleanup some Chart code
commit-queue@webkit.org [Thu, 28 Feb 2019 08:07:16 +0000 (08:07 +0000)]
Web Inspector: Cleanup some Chart code
https://bugs.webkit.org/show_bug.cgi?id=195147

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2019-02-28
Reviewed by Matt Baker.

* UserInterface/Views/RangeChart.js:
(WI.RangeChart.prototype.layout):
(WI.RangeChart):
* UserInterface/Views/StackedColumnChart.js:
(WI.StackedColumnChart.prototype.layout):
(WI.StackedColumnChart):

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

7 months agoWeb Inspector: Add a new Scanner TimelineMarker to show up when mousing over Timeline...
joepeck@webkit.org [Thu, 28 Feb 2019 06:54:21 +0000 (06:54 +0000)]
Web Inspector: Add a new Scanner TimelineMarker to show up when mousing over TimelineView graphs
https://bugs.webkit.org/show_bug.cgi?id=195079

Reviewed by Devin Rousso.

* UserInterface/Base/Utilities.js:
(Note.prototype.enclosingNodeOrSelfWithClassInArray):
Helper for a set of classes.

* UserInterface/Models/TimelineMarker.js:
Add a new marker type, "Scanner".

* UserInterface/Views/CPUTimelineView.js:
(WI.CPUTimelineView.prototype.initialLayout):
(WI.CPUTimelineView.prototype._graphPositionForMouseEvent):
(WI.CPUTimelineView.prototype._handleGraphMouseMove):
* UserInterface/Views/MemoryTimelineView.js:
(WI.MemoryTimelineView):
(WI.MemoryTimelineView.prototype._graphPositionForMouseEvent):
(WI.MemoryTimelineView.prototype._handleGraphMouseMove):
Update a scanner time when mousing over various graphs that span the entire time range.
These use the containing graph element because there was a single pixel between
adjacent graphs which would cause the scanner to flicker because the mouse event target
was not an svg element.

* UserInterface/Views/TimelineOverview.js:
(WI.TimelineOverview.prototype.hidden):
(WI.TimelineOverview.prototype.updateScannerTime):
(WI.TimelineOverview.prototype.clearScanner):
* UserInterface/Views/TimelineRecordingContentView.js:
(WI.TimelineRecordingContentView):
(WI.TimelineRecordingContentView.prototype._handleTimelineViewScannerTimeDidChange):
(WI.TimelineRecordingContentView.prototype._handleTimelineViewScannerDidClear):
Update the overview's ruler with scanner changes.

* UserInterface/Views/TimelineRuler.css:
(.timeline-ruler > .markers > .marker.scanner):
* UserInterface/Views/TimelineRuler.js:
(WI.TimelineRuler):
(WI.TimelineRuler.prototype.clearMarkers):
(WI.TimelineRuler.prototype.updateScannerTime):
(WI.TimelineRuler.prototype.clearScanner):
(WI.TimelineRuler.prototype._updateMarkers):
Have a special scanner marker that updates.

* UserInterface/Views/TimelineView.js:
New events that a TimelineView can dispatch to update the overview.

* UserInterface/Views/Variables.css:
(:root):
(@media (prefers-color-scheme: dark)):
Scanner marker colors.

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

7 months agoThe parser is failing to record the token location of new in new.target.
mark.lam@apple.com [Thu, 28 Feb 2019 06:44:15 +0000 (06:44 +0000)]
The parser is failing to record the token location of new in new.target.
https://bugs.webkit.org/show_bug.cgi?id=195127
<rdar://problem/39645578>

Reviewed by Yusuke Suzuki.

JSTests:

* stress/parser-should-record-token-location-of-new-dot-target.js: Added.

Source/JavaScriptCore:

Also adjust the token location for the following to be as shown:

    new.target
    ^
    super
    ^
    import.meta
    ^

* parser/Parser.cpp:
(JSC::Parser<LexerType>::parseMemberExpression):

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

7 months ago[JSC] mustHandleValues for dead bytecode locals should be ignored in DFG phases
ysuzuki@apple.com [Thu, 28 Feb 2019 06:25:23 +0000 (06:25 +0000)]
[JSC] mustHandleValues for dead bytecode locals should be ignored in DFG phases
https://bugs.webkit.org/show_bug.cgi?id=195144
<rdar://problem/47595961>

Reviewed by Mark Lam.

JSTests:

* stress/read-dead-bytecode-locals-in-must-handle-values1.js: Added.
(bar):
(foo):
* stress/read-dead-bytecode-locals-in-must-handle-values2.js: Added.
(bar):
(foo):

Source/JavaScriptCore:

DFGMaximalFlushInsertionPhase inserts Flush for all the locals at the end of basic blocks. This enlarges the live ranges of
locals in DFG, and it sometimes makes DFG value live while it is dead in bytecode. The issue happens when we use mustHandleValues
to widen AbstractValue in CFAPhase. At that time, DFG tells "this value is live in DFG", but it may be dead in the bytecode level.
At that time, we attempt to merge AbstractValue with dead mustHandleValue, which is cleared as jsUndefined() in
DFG::Plan::cleanMustHandleValuesIfNecessary before start compilation, and crash because jsUndefined() may be irrelevant to the FlushFormat
in VariableAccessData.

This patch makes the type of mustHandleValues Operands<Optional<JSValue>>. We clear dead JSValues in DFG::Plan::cleanMustHandleValuesIfNecessary.
And we skip handling dead mustHandleValue in DFG phases.

* bytecode/Operands.h:
(JSC::Operands::isLocal const):
(JSC::Operands::isVariable const): Deleted.
* dfg/DFGCFAPhase.cpp:
(JSC::DFG::CFAPhase::injectOSR):
* dfg/DFGDriver.cpp:
(JSC::DFG::compileImpl):
(JSC::DFG::compile):
* dfg/DFGDriver.h:
* dfg/DFGJITCode.cpp:
(JSC::DFG::JITCode::reconstruct):
* dfg/DFGJITCode.h:
* dfg/DFGOperations.cpp:
* dfg/DFGPlan.cpp:
(JSC::DFG::Plan::Plan):
(JSC::DFG::Plan::checkLivenessAndVisitChildren):
(JSC::DFG::Plan::cleanMustHandleValuesIfNecessary):
* dfg/DFGPlan.h:
(JSC::DFG::Plan::mustHandleValues const):
* dfg/DFGPredictionInjectionPhase.cpp:
(JSC::DFG::PredictionInjectionPhase::run):
* dfg/DFGTypeCheckHoistingPhase.cpp:
(JSC::DFG::TypeCheckHoistingPhase::disableHoistingAcrossOSREntries):
* ftl/FTLOSREntry.cpp:
(JSC::FTL::prepareOSREntry):
* jit/JITOperations.cpp:

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