WebKit-https.git
3 years agoWebDriver: auto-install pytest instead of importing it from wpt tools directory
carlosgc@webkit.org [Sat, 2 Dec 2017 14:56:26 +0000 (14:56 +0000)]
WebDriver: auto-install pytest instead of importing it from wpt tools directory
https://bugs.webkit.org/show_bug.cgi?id=180243

Reviewed by Brian Burg.

Tools:

We don't really need the (old) version included in wpt tools dir, so we can simply remove it and use autoinstall
instead.

* Scripts/webkitpy/thirdparty/__init__.py:
(AutoinstallImportHook.find_module): Check pytest.
(AutoinstallImportHook._install_pytest): Install pytest.
* Scripts/webkitpy/webdriver_tests/webdriver_selenium_executor.py: Import autoinstalled pytest.
* Scripts/webkitpy/webdriver_tests/webdriver_test_runner_w3c.py:
(WebDriverTestRunnerW3C.run): Update the subtest path since the new pytest uses a different strategy for
rootdir.
* Scripts/webkitpy/webdriver_tests/webdriver_w3c_executor.py: Import autoinstalled pytest.

WebDriverTests:

* imported/selenium/py/conftest.py: Stop patching this to use yield_fixture, new pytest supports this.
* imported/selenium/py/setup.cfg: Stop patching this, since pytest supports tool:pytest as group name.
* imported/selenium/py/test/selenium/webdriver/common/alerts_tests.py: Stop patching this to use yield_fixture,
new pytest supports this.
* imported/selenium/py/test/selenium/webdriver/common/cookie_tests.py: Ditto.
* imported/selenium/py/test/selenium/webdriver/common/frame_switching_tests.py: Ditto.
* imported/selenium/py/test/selenium/webdriver/common/page_load_timeout_tests.py: Ditto.
* imported/selenium/py/test/selenium/webdriver/common/window_switching_tests.py: Ditto.
* imported/selenium/py/test/selenium/webdriver/safari/conftest.py: Ditto.
* imported/selenium/py/test/selenium/webdriver/support/event_firing_webdriver_tests.py: Ditto.
* imported/w3c/importer.json: Stop importing pytest.
* imported/w3c/pytest.ini: Added.
* imported/w3c/tools/pytest/: Removed.

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

3 years agoMake some minor adjustments to TouchBarMenuData and TouchBarMenuItemData
wenson_hsieh@apple.com [Sat, 2 Dec 2017 08:47:19 +0000 (08:47 +0000)]
Make some minor adjustments to TouchBarMenuData and TouchBarMenuItemData
https://bugs.webkit.org/show_bug.cgi?id=180305

Reviewed by Joseph Pecoraro.

Mark some methods and parameters as const, use the default constructor in more places, and also remove a few
extraneous imported headers.

* Shared/TouchBarMenuData.cpp:
(WebKit::TouchBarMenuData::TouchBarMenuData):

Add a FIXME regarding the use of the 'id' attribute.

(WebKit::TouchBarMenuData::decode):
* Shared/TouchBarMenuData.h:
(WebKit::TouchBarMenuData::items const):
(WebKit::TouchBarMenuData::setID):
(WebKit::TouchBarMenuData::isPageCustomized const):
(WebKit::TouchBarMenuData::items): Deleted.
(WebKit::TouchBarMenuData::isPageCustomized): Deleted.
* Shared/TouchBarMenuItemData.cpp:
(WebKit::getItemType):

Change a helper method from a static class function to a static function in the implementation file.

(WebKit::TouchBarMenuItemData::TouchBarMenuItemData):
(WebKit::TouchBarMenuItemData::encode const):
(WebKit::TouchBarMenuItemData::decode):
(WebKit::TouchBarMenuItemData::getItemType): Deleted.
* Shared/TouchBarMenuItemData.h:
(WebKit::operator==):

Remove the commandName member variable, since it doesn't make sense to propagate an event handler
attribute from WebCore to the client layer.

* UIProcess/WebPageProxy.messages.in:

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

3 years agoUnreviewed GTK+ debug build fix. Replace ASSERT_UNUSED() with UNUSED_PARAM()
zandobersek@gmail.com [Sat, 2 Dec 2017 06:55:52 +0000 (06:55 +0000)]
Unreviewed GTK+ debug build fix. Replace ASSERT_UNUSED() with UNUSED_PARAM()
in WebKit::WebPage methods that used to operate on HTMLMenuElement pointer
values (which have been converted to references).

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didInsertMenuElement):
(WebKit::WebPage::didRemoveMenuElement):
(WebKit::WebPage::didInsertMenuItemElement):
(WebKit::WebPage::didRemoveMenuItemElement):

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

3 years agoTry proxying all function arguments
jfbastien@apple.com [Sat, 2 Dec 2017 06:48:27 +0000 (06:48 +0000)]
Try proxying all function arguments
https://bugs.webkit.org/show_bug.cgi?id=180306

Reviewed by Saam Barati.

* stress/proxy-all-the-parameters.js: Added.
(isPropertyOfType):
(getProperties):
(generateObjects):
(getObjects):
(getFunctions):
(get throw):
(let.o.of.getObjects.let.f.of.getFunctions.catch):

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

3 years agoJavaScriptCore: missing exception checks in Math functions that take more than one...
jfbastien@apple.com [Sat, 2 Dec 2017 05:44:04 +0000 (05:44 +0000)]
JavaScriptCore: missing exception checks in Math functions that take more than one argument
https://bugs.webkit.org/show_bug.cgi?id=180297
<rdar://problem/35745556>

Reviewed by Mark Lam.

JSTests:

* stress/math-exceptions.js: Added.
(get try):
(catch):

Source/JavaScriptCore:

* runtime/MathObject.cpp:
(JSC::mathProtoFuncATan2):
(JSC::mathProtoFuncMax):
(JSC::mathProtoFuncMin):
(JSC::mathProtoFuncPow):

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

3 years ago[MSE] Use correct range end checks in sourceBufferPrivateDidReceiveSample()
commit-queue@webkit.org [Sat, 2 Dec 2017 05:39:30 +0000 (05:39 +0000)]
[MSE] Use correct range end checks in sourceBufferPrivateDidReceiveSample()
https://bugs.webkit.org/show_bug.cgi?id=179690

Patch by Alicia Boya García <aboya@igalia.com> on 2017-12-01
Reviewed by Jer Noble.

Source/WebCore:

The Coded Frame Processing algorithm as defined in
https://www.w3.org/TR/media-source/#sourcebuffer-coded-frame-processing states:

1.14. Remove existing coded frames in track buffer:
 -> If highest end timestamp for track buffer is not set:
       [...]
 -> If highest end timestamp for track buffer is set and less than or
    equal to presentation timestamp:
       Remove all coded frames from track buffer that have a
       presentation timestamp greater than or equal to highest end
       timestamp and less than frame end timestamp.

Note the removal range is closed-open [a, b). WebKit is actually removing
frames using an open-closed range (a, b], which causes frames not to be removed
in situations where they should and frames to be removed in situations when
they should not.

Tests: media/media-source/media-source-range-end-frame-not-removed.html
       media/media-source/media-source-range-start-frame-replaced.html

* Modules/mediasource/SampleMap.cpp:
(WebCore::PresentationOrderSampleMap::findSamplesBetweenPresentationTimesFromEnd):
* Modules/mediasource/SampleMap.h:
* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):

LayoutTests:

Added test cases for bug #179690.

* media/media-source/media-source-range-end-frame-not-removed-expected.txt: Added.
* media/media-source/media-source-range-end-frame-not-removed.html: Added.
* media/media-source/media-source-range-start-frame-replaced-expected.txt: Added.
* media/media-source/media-source-range-start-frame-replaced.html: Added.

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

3 years agoReduce the number of calls to ViewportConfiguration::updateConfiguration()
simon.fraser@apple.com [Sat, 2 Dec 2017 03:19:16 +0000 (03:19 +0000)]
Reduce the number of calls to ViewportConfiguration::updateConfiguration()
https://bugs.webkit.org/show_bug.cgi?id=180299

Reviewed by Zalan Bujtas.

There are several calls to ViewportConfiguration::setDefaultConfiguration() during loading
with the same arguments. We can avoid unnecessary calls to updateConfiguration() by returning
early if the configuration hasn't changed.

Source/WebCore:

* page/ViewportConfiguration.cpp:
(WebCore::ViewportConfiguration::setDefaultConfiguration):
* page/ViewportConfiguration.h:
(WebCore::ViewportConfiguration::Parameters::operator== const):

Source/WebKit:

Also move the fetching of ViewportConfiguration::xhtmlMobileParameters() from didReceiveMobileDocType()
into resetViewportDefaultConfiguration() where we grab all the other default configs.

* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::didReceiveMobileDocType):
(WebKit::WebPage::resetViewportDefaultConfiguration):

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

3 years agoHardcoded python path is not compatible with virtual environment.
dewei_zhu@apple.com [Sat, 2 Dec 2017 01:56:40 +0000 (01:56 +0000)]
Hardcoded python path is not compatible with virtual environment.
https://bugs.webkit.org/show_bug.cgi?id=180300

Reviewed by Stephanie Lewis.

Hardcoding '/usr/bin/python' does not work with python virtual environment.
Use 'python' instead.

* Scripts/webkitpy/benchmark_runner/http_server_driver/simple_http_server_driver.py:
(SimpleHTTPServerDriver.serve):

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

3 years ago[WPE] Enable wpt css tests.
Ms2ger@igalia.com [Sat, 2 Dec 2017 01:56:20 +0000 (01:56 +0000)]
[WPE] Enable wpt css tests.
https://bugs.webkit.org/show_bug.cgi?id=180289

Unreviewed test gardening.

* platform/wpe/TestExpectations:

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

3 years ago[Touch Bar Web API] Object representing Touch Bar Menu to send between Web and UI...
commit-queue@webkit.org [Sat, 2 Dec 2017 01:38:50 +0000 (01:38 +0000)]
[Touch Bar Web API] Object representing Touch Bar Menu to send between Web and UI Processes
https://bugs.webkit.org/show_bug.cgi?id=179714

Patch by Aishwarya Nirmal <anirmal@apple.com> on 2017-12-01
Reviewed by Wenson Hsieh.

Source/WebCore:

These changes allow the HTMLMenuElement and HTMLMenuItemElement to parse attributes relating
to the touch bar and convey changes to the elements that will eventually be propogated to the
UI process.

No new tests at this point because the changes to HTMLMenuElement and HTMLMenuItemElement are
new properties, which might not be worth testing, and overriden methods for insertedIntoAncestor
and removedFromAncestor, which are involved in sending a message to a UI process but might be
difficult to test at this point since the UI process only receives (and does not yet process)
the message.

* html/HTMLMenuElement.cpp:
(WebCore::HTMLMenuElement::insertedIntoAncestor):
(WebCore::HTMLMenuElement::removedFromAncestor):
(WebCore::HTMLMenuElement::parseAttribute):
* html/HTMLMenuElement.h:
* html/HTMLMenuItemElement.cpp:
(WebCore::HTMLMenuItemElement::insertedIntoAncestor):
(WebCore::HTMLMenuItemElement::removedFromAncestor):
* html/HTMLMenuItemElement.h:
* page/ChromeClient.h:

Source/WebKit:

These changes define the TouchBarMenuData and TouchBarMenuItemData objects which draw information
from touch bar HTMLMenuElement and HTMLMenuItemElement. These objects represent the contents of
the page-customized touch bar. Changes to the html elements representing the touch bar are sent
to the UI process.

* Shared/TouchBarMenuData.cpp: Copied from Source/WebCore/html/HTMLMenuItemElement.cpp.
(WebKit::TouchBarMenuData::TouchBarMenuData):
(WebKit::TouchBarMenuData::addMenuItem):
(WebKit::TouchBarMenuData::removeMenuItem):
(WebKit::TouchBarMenuData::encode const):
(WebKit::TouchBarMenuData::decode):
* Shared/TouchBarMenuData.h: Copied from Source/WebCore/html/HTMLMenuItemElement.h.
(WebKit::TouchBarMenuData::items):
(WebKit::TouchBarMenuData::isPageCustomized):
(WebKit::TouchBarMenuData::setIsPageCustomized):
* Shared/TouchBarMenuItemData.cpp: Added.
(WebKit::TouchBarMenuItemData::getItemType):
(WebKit::TouchBarMenuItemData::TouchBarMenuItemData):
(WebKit::TouchBarMenuItemData::encode const):
(WebKit::TouchBarMenuItemData::decode):
* Shared/TouchBarMenuItemData.h: Added.
(WebKit::operator<):
(WebKit::operator>):
(WebKit::operator<=):
(WebKit::operator>=):
(WebKit::operator==):
(WebKit::operator!=):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::touchBarMenuDataChanged):
(WebKit::WebPageProxy::touchBarMenuItemDataAdded):
(WebKit::WebPageProxy::touchBarMenuItemDataRemoved):
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::touchBarMenuData const):
* UIProcess/WebPageProxy.messages.in:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::didInsertMenuElement):
(WebKit::WebChromeClient::didRemoveMenuElement):
(WebKit::WebChromeClient::didInsertMenuItemElement):
(WebKit::WebChromeClient::didRemoveMenuItemElement):
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didInsertMenuElement):
(WebKit::WebPage::didRemoveMenuElement):
(WebKit::WebPage::didInsertMenuItemElement):
(WebKit::WebPage::didRemoveMenuItemElement):
(WebKit::WebPage::sendTouchBarMenuDataRemovedUpdate):
(WebKit::WebPage::sendTouchBarMenuDataAddedUpdate):
(WebKit::WebPage::sendTouchBarMenuItemDataAddedUpdate):
(WebKit::WebPage::sendTouchBarMenuItemDataRemovedUpdate):
* WebProcess/WebPage/WebPage.h:

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

3 years agoLet's scramble ClassInfo pointers in cells.
mark.lam@apple.com [Sat, 2 Dec 2017 01:12:48 +0000 (01:12 +0000)]
Let's scramble ClassInfo pointers in cells.
https://bugs.webkit.org/show_bug.cgi?id=180291
<rdar://problem/35807620>

Reviewed by JF Bastien.

Source/JavaScriptCore:

* API/JSCallbackObject.h:
* API/JSObjectRef.cpp:
(classInfoPrivate):
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/MacroAssemblerCodeRef.cpp:
(JSC::MacroAssemblerCodePtr::initialize): Deleted.
* assembler/MacroAssemblerCodeRef.h:
(JSC::MacroAssemblerCodePtr:: const):
(JSC::MacroAssemblerCodePtr::hash const):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::checkArray):
(JSC::DFG::SpeculativeJIT::compileCheckSubClass):
(JSC::DFG::SpeculativeJIT::compileNewStringObject):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNewStringObject):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckSubClass):
* jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::emitAllocateDestructibleObject):
* jit/SpecializedThunkJIT.h:
(JSC::SpecializedThunkJIT::loadArgumentWithSpecificClass):
* runtime/InitializeThreading.cpp:
(JSC::initializeThreading):
* runtime/JSCScrambledPtr.cpp: Added.
(JSC::initializeScrambledPtrKeys):
* runtime/JSCScrambledPtr.h: Added.
* runtime/JSDestructibleObject.h:
(JSC::JSDestructibleObject::classInfo const):
* runtime/JSSegmentedVariableObject.h:
(JSC::JSSegmentedVariableObject::classInfo const):
* runtime/Structure.h:
* runtime/VM.h:

Source/WTF:

* wtf/ScrambledPtr.h:
(WTF::ScrambledPtr::descrambled const):
(WTF::ScrambledPtr::bits const):
(WTF::ScrambledPtr::operator==):
(WTF::ScrambledPtr::operator=):
(WTF::ScrambledPtr::scramble):
(WTF::ScrambledPtr::descramble):
(WTF::ScrambledPtr:: const): Deleted.
(WTF::ScrambledPtr::scrambledBits const): Deleted.

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

3 years agoUnreviewed, fix byte order macros and address new -Wunknown-pragmas warnings
mcatanzaro@igalia.com [Sat, 2 Dec 2017 01:04:52 +0000 (01:04 +0000)]
Unreviewed, fix byte order macros and address new -Wunknown-pragmas warnings
https://bugs.webkit.org/show_bug.cgi?id=180177
<rdar://problem/35774734>

I'm not sure how this code was developed, as it seems to have been designed for GCC, but it
does not use any of GCC's documented byte order macros, and accordingly does not work. Let's
fix it to guarantee there are no problems when building with GCC. I presume it should help
Clang as well.

This time, hopefully without breaking 32-bit macOS, where __BYTE_ORDER actually is defined.

* src/common/third_party/smhasher/src/PMurHash.cpp:
(angle::PMurHash32_Process):

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

3 years agoJavaScriptCore: add test for weird class static getters
jfbastien@apple.com [Sat, 2 Dec 2017 00:41:53 +0000 (00:41 +0000)]
JavaScriptCore: add test for weird class static getters
https://bugs.webkit.org/show_bug.cgi?id=180281
<rdar://problem/35592139>

Reviewed by Mark Lam.

I fixed a bug for it in r224927 and didn't add a test. Do so.

* stress/class-static-get-weird.js: Added.
(c.prototype.get name):
(c):
(c.prototype.get arguments):
(c.prototype.get caller):
(c.prototype.get length):

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

3 years ago[build.webkit.org] Move python code to load config from master.cfg in separate file
aakash_jain@apple.com [Sat, 2 Dec 2017 00:39:32 +0000 (00:39 +0000)]
[build.webkit.org] Move python code to load config from cfg in separate file
https://bugs.webkit.org/show_bug.cgi?id=180278

Reviewed by Daniel Bates.

* BuildSlaveSupport/build.webkit.org-config/master.cfg: Moved appropriate code to loadConfig.py
* BuildSlaveSupport/build.webkit.org-config/loadConfig.py: Ditto.
* BuildSlaveSupport/build.webkit.org-config/steps.py: Removed extra import.

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

3 years agoMarked imported/w3c/web-platform-tests/IndexedDB/open-request-queue.html as flaky...
jlewis3@apple.com [Sat, 2 Dec 2017 00:29:26 +0000 (00:29 +0000)]
Marked imported/w3c/web-platform-tests/IndexedDB/open-request-queue.html as flaky timeout on wk1.
https://bugs.webkit.org/show_bug.cgi?id=172044

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

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

3 years agoAlternativePresentationButtonSubstitution::unapply() may not undo substitution
dbates@webkit.org [Sat, 2 Dec 2017 00:28:46 +0000 (00:28 +0000)]
AlternativePresentationButtonSubstitution::unapply() may not undo substitution
https://bugs.webkit.org/show_bug.cgi?id=180279
<rdar://problem/35800599>

Reviewed by Simon Fraser.

Source/WebCore:

Fixes an issue where removing an alternative presentation button substituted for a non-HTML input
element did not restore the original appearance of the element before the substitution.

To substitute the alternative presentation button for a non-HTML input element we attach a
user-agent shadow root to it. Adding a shadow root, including a user-agent shadow root,
tears down the existing renderers for the element. Currently when we unapply such a substitution
we ultimately just remove the shadow root and do not create new renderers for the subtree
that the shadow root was removed from. We need to create new renderers for this subtree
to restore the original appearance of the element before the substitution.

* editing/cocoa/AlternativePresentationButtonSubstitution.cpp:
(WebCore::AlternativePresentationButtonSubstitution::unapply):

LayoutTests:

Update test to ensure that we undo the alternative presentation button substitution
made to an HTML label element.

* fast/forms/alternative-presentation-button/replace-and-remove-expected.html:
* fast/forms/alternative-presentation-button/replace-and-remove.html:

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

3 years agoMove DateComponents into WTF
commit-queue@webkit.org [Sat, 2 Dec 2017 00:20:57 +0000 (00:20 +0000)]
Move DateComponents into WTF
https://bugs.webkit.org/show_bug.cgi?id=180211

Patch by Christopher Reid <chris.reid@sony.com> on 2017-12-01
Reviewed by Myles C. Maxfield.

Source/WebCore:

No new tests no change in behavior.

Moved DateComponents from platform into WTF.

* Sources.txt: Removed DateComponents
* WebCore.xcodeproj/project.pbxproj: Removed DateComponents
* dom/Document.cpp:
* html/BaseDateAndTimeInputType.h:
* html/DateTimeInputType.h: Fixed a call to the wrong parent constructor
* html/HTMLInputElement.h:
* html/InputType.cpp:
* html/InputType.h:
* platform/text/PlatformLocale.cpp:
* platform/text/PlatformLocale.h:
* platform/text/ios/LocalizedDateCache.h:
* platform/text/mac/LocaleMac.h:
* platform/text/win/LocaleWin.cpp:
* platform/text/win/LocaleWin.h:
* rendering/RenderThemeIOS.mm:

Source/WTF:

Moved DateComponents from WebCore/platform into WTF.
Removed isLeapYear from DateComponents as DateMath already has that function.

* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/DateComponents.cpp: Renamed from Source\WebCore\platform\DateComponents.cpp.
* wtf/DateComponents.h: Renamed from Source\WebCore\platform\DateComponents.h.

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

3 years agoAlternative Presentation Button: Provide a way to query for the replaced elements
dbates@webkit.org [Sat, 2 Dec 2017 00:09:02 +0000 (00:09 +0000)]
Alternative Presentation Button: Provide a way to query for the replaced elements
https://bugs.webkit.org/show_bug.cgi?id=180114
<rdar://problem/35710539>

Reviewed by Tim Horton.

Source/WebCore:

Add SPI to query for the elements that were replaced by an Alternative Presentation Button.

Test: fast/forms/alternative-presentation-button/replaced-elements.html

* editing/Editor.cpp:
(WebCore::Editor::elementsReplacedByAlternativePresentationButton): Added.
* editing/Editor.h:
* editing/cocoa/AlternativePresentationButtonSubstitution.cpp:
(WebCore::AlternativePresentationButtonSubstitution::replacedElements): Added.
* editing/cocoa/AlternativePresentationButtonSubstitution.h:
* testing/Internals.cpp:
(WebCore::Internals::elementsReplacedByAlternativePresentationButton): Added.
* testing/Internals.h:
* testing/Internals.idl: Expose internals function elementsReplacedByAlternativePresentationButton()
so as to test Editor::elementsReplacedByAlternativePresentationButton().

Source/WebKit:

Add SPI to query for the elements that were replaced by an Alternative Presentation Button.

* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:
(-[WKWebProcessPlugInFrame elementsReplacedByAlternativePresentationButtonWithIdentifier:]): Added.
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFramePrivate.h:
* WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:
(WKBundleElementsReplacedByAlternativePresentationButton): Added.
* WebProcess/InjectedBundle/API/c/WKBundleFramePrivate.h:

LayoutTests:

Add a test to ensure that Editor::elementsReplacedByAlternativePresentationButton()
returns the same list of elements that were specified to Editor::substituteWithAlternativePresentationButton()
up to ordering.

* fast/forms/alternative-presentation-button/replaced-elements-expected.txt: Added.
* fast/forms/alternative-presentation-button/replaced-elements.html: Added.

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

3 years agoRename ImageFrameCache to ImageSource
commit-queue@webkit.org [Sat, 2 Dec 2017 00:01:54 +0000 (00:01 +0000)]
Rename ImageFrameCache to ImageSource
https://bugs.webkit.org/show_bug.cgi?id=180172

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-12-01
Reviewed by Per Arne Vollan.

This is a follow-up for r225300. ImageSource is the intended name after
merging ImageFrameCache and ImageSource.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/BitmapImage.cpp:
(WebCore::BitmapImage::BitmapImage):
* platform/graphics/BitmapImage.h:
* platform/graphics/ImageFrame.h:
* platform/graphics/ImageFrameCache.cpp: Removed.
* platform/graphics/ImageFrameCache.h: Removed.
* platform/graphics/ImageSource.cpp: Added.
(WebCore::ImageSource::ImageSource):
(WebCore::ImageSource::~ImageSource):
(WebCore::ImageSource::ensureDecoderAvailable):
(WebCore::ImageSource::setData):
(WebCore::ImageSource::resetData):
(WebCore::ImageSource::dataChanged):
(WebCore::ImageSource::isAllDataReceived):
(WebCore::ImageSource::destroyDecodedData):
(WebCore::ImageSource::destroyIncompleteDecodedData):
(WebCore::ImageSource::clearFrameBufferCache):
(WebCore::ImageSource::decodedSizeChanged):
(WebCore::ImageSource::decodedSizeIncreased):
(WebCore::ImageSource::decodedSizeDecreased):
(WebCore::ImageSource::decodedSizeReset):
(WebCore::ImageSource::didDecodeProperties):
(WebCore::ImageSource::growFrames):
(WebCore::ImageSource::setNativeImage):
(WebCore::ImageSource::cacheMetadataAtIndex):
(WebCore::ImageSource::cacheNativeImageAtIndex):
(WebCore::ImageSource::cacheNativeImageAtIndexAsync):
(WebCore::ImageSource::decodingQueue):
(WebCore::ImageSource::frameRequestQueue):
(WebCore::ImageSource::canUseAsyncDecoding):
(WebCore::ImageSource::startAsyncDecodingQueue):
(WebCore::ImageSource::requestFrameAsyncDecodingAtIndex):
(WebCore::ImageSource::isAsyncDecodingQueueIdle const):
(WebCore::ImageSource::stopAsyncDecodingQueue):
(WebCore::ImageSource::frameAtIndexCacheIfNeeded):
(WebCore::ImageSource::clearMetadata):
(WebCore::ImageSource::sourceURL const):
(WebCore::ImageSource::mimeType const):
(WebCore::ImageSource::expectedContentLength const):
(WebCore::ImageSource::metadata):
(WebCore::ImageSource::frameMetadataAtIndex):
(WebCore::ImageSource::frameMetadataAtIndexCacheIfNeeded):
(WebCore::ImageSource::encodedDataStatus):
(WebCore::ImageSource::frameCount):
(WebCore::ImageSource::repetitionCount):
(WebCore::ImageSource::uti):
(WebCore::ImageSource::filenameExtension):
(WebCore::ImageSource::hotSpot):
(WebCore::ImageSource::size):
(WebCore::ImageSource::sizeRespectingOrientation):
(WebCore::ImageSource::singlePixelSolidColor):
(WebCore::ImageSource::maximumSubsamplingLevel):
(WebCore::ImageSource::frameIsBeingDecodedAndIsCompatibleWithOptionsAtIndex):
(WebCore::ImageSource::frameDecodingStatusAtIndex):
(WebCore::ImageSource::frameHasAlphaAtIndex):
(WebCore::ImageSource::frameHasFullSizeNativeImageAtIndex):
(WebCore::ImageSource::frameHasDecodedNativeImageCompatibleWithOptionsAtIndex):
(WebCore::ImageSource::frameSubsamplingLevelAtIndex):
(WebCore::ImageSource::frameSizeAtIndex):
(WebCore::ImageSource::frameBytesAtIndex):
(WebCore::ImageSource::frameDurationAtIndex):
(WebCore::ImageSource::frameOrientationAtIndex):
(WebCore::ImageSource::setTargetContext):
(WebCore::ImageSource::createFrameImageAtIndex):
(WebCore::ImageSource::frameImageAtIndex):
(WebCore::ImageSource::frameImageAtIndexCacheIfNeeded):
(WebCore::ImageSource::dump):
* platform/graphics/ImageSource.h: Added.
(WebCore::ImageSource::create):
(WebCore::ImageSource::decodedSize const):
(WebCore::ImageSource::destroyAllDecodedData):
(WebCore::ImageSource::destroyAllDecodedDataExcludeFrame):
(WebCore::ImageSource::destroyDecodedDataBeforeFrame):
(WebCore::ImageSource::clearImage):
(WebCore::ImageSource::requestFrameAsyncDecodingAtIndex):
(WebCore::ImageSource::hasAsyncDecodingQueue const):
(WebCore::ImageSource::isSizeAvailable):
(WebCore::ImageSource::isDecoderAvailable const):
(WebCore::ImageSource::frameAtIndexCacheIfNeeded):
(WebCore::ImageSource::ImageFrameRequest::operator== const):
* platform/graphics/cairo/GraphicsContext3DCairo.cpp:
(WebCore::GraphicsContext3D::ImageExtractor::extractImage):
* platform/graphics/cg/GraphicsContext3DCG.cpp:
(WebCore::GraphicsContext3D::ImageExtractor::extractImage):

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

3 years agoImplement https://w3c.github.io/ServiceWorker/#clients-get
commit-queue@webkit.org [Sat, 2 Dec 2017 00:00:40 +0000 (00:00 +0000)]
Implement https://w3c.github.io/ServiceWorker/#clients-get
https://bugs.webkit.org/show_bug.cgi?id=180167

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-01
Reviewed by Chris Dumez.

Source/WebCore:

Test: http/tests/workers/service/serviceworkerclients-get.https.html

Implement clients get by having service worker clients do the following:
- Go to main thread to query the SWClientConnection for getting the client.
- SWClientConnection requests it through IPC to StorageProcess SWServer.
- SWServer looks at its client map and returns client data based on the given identifier.
- SWClientConnection sends it back to the right clients for resolving the promise.

Identifier is parsed at service worker process level.

Made ServiceWorkerClients no longer an ActiveDOMObject since it is owned by ServiceWorkerGlobalScope
and is only exposed in service workers.

* workers/service/ServiceWorkerClientIdentifier.h:
(WebCore::ServiceWorkerClientIdentifier::fromString):
* workers/service/ServiceWorkerClients.cpp:
(WebCore::ServiceWorkerClients::ServiceWorkerClients):
(WebCore::ServiceWorkerClients::get):
* workers/service/ServiceWorkerClients.h:
(WebCore::ServiceWorkerClients::create):
* workers/service/context/SWContextManager.cpp:
(WebCore::SWContextManager::postTaskToServiceWorker):
* workers/service/context/SWContextManager.h:
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::getClientFromId):
* workers/service/server/SWServer.h:
* workers/service/server/SWServerToContextConnection.cpp:
(WebCore::SWServerToContextConnection::findClientByIdentifier):
* workers/service/server/SWServerToContextConnection.h:
* workers/service/server/SWServerWorker.cpp:
(WebCore::SWServerWorker::origin const):
(WebCore::SWServerWorker::findClientByIdentifier):
* workers/service/server/SWServerWorker.h:

Source/WebKit:

Add IPC plumbery for clientFromId between ServiceWorker process and Storage process.

* StorageProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
(WebKit::WebSWServerToContextConnection::clientFromIdCompleted):
* StorageProcess/ServiceWorker/WebSWServerToContextConnection.h:
* StorageProcess/ServiceWorker/WebSWServerToContextConnection.messages.in:
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::findClientByIdentifier):
(WebKit::WebSWContextManagerConnection::findClientByIdentifierCompleted):
* WebProcess/Storage/WebSWContextManagerConnection.h:
* WebProcess/Storage/WebSWContextManagerConnection.messages.in:

Source/WTF:

* wtf/text/StringView.h:
(WTF::StringView::toUInt64Strict const):
* wtf/text/WTFString.h:

LayoutTests:

* http/tests/workers/service/resources/serviceworkerclients-get-worker.js: Added.
* http/tests/workers/service/serviceworkerclients-get.https-expected.txt: Added.
* http/tests/workers/service/serviceworkerclients-get.https.html: Added.

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

3 years agoUpdate TestExpectations for editing/input tests on iOS.
ryanhaddad@apple.com [Fri, 1 Dec 2017 23:52:01 +0000 (23:52 +0000)]
Update TestExpectations for editing/input tests on iOS.

Unreviewed test gardening.

* platform/ios-wk1/TestExpectations:
* platform/ios-wk2/TestExpectations:
* platform/ios/TestExpectations:

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

3 years agoWeb Inspector: move Inspector::Protocol::Array<T> to JSON namespace
bburg@apple.com [Fri, 1 Dec 2017 23:45:49 +0000 (23:45 +0000)]
Web Inspector: move Inspector::Protocol::Array<T> to JSON namespace
https://bugs.webkit.org/show_bug.cgi?id=173662

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

Adopt new type names. Fix protocol generator to use correct type names.

* inspector/ConsoleMessage.cpp:
(Inspector::ConsoleMessage::addToFrontend):
Improve namings and use 'auto' when the type is obvious and repeated.

* inspector/ContentSearchUtilities.cpp:
(Inspector::ContentSearchUtilities::searchInTextByLines):
* inspector/ContentSearchUtilities.h:
* inspector/InjectedScript.cpp:
(Inspector::InjectedScript::getProperties):
(Inspector::InjectedScript::getDisplayableProperties):
(Inspector::InjectedScript::getInternalProperties):
(Inspector::InjectedScript::getCollectionEntries):
(Inspector::InjectedScript::wrapCallFrames const):
* inspector/InjectedScript.h:
* inspector/InspectorProtocolTypes.h:
(Inspector::Protocol::BindingTraits<JSON::ArrayOf<T>>::runtimeCast):
(Inspector::Protocol::Array::Array): Deleted.
(Inspector::Protocol::Array::openAccessors): Deleted.
(Inspector::Protocol::Array::addItem): Deleted.
(Inspector::Protocol::Array::create): Deleted.
(Inspector::Protocol::BindingTraits<Protocol::Array<T>>::runtimeCast): Deleted.
(Inspector::Protocol::BindingTraits<Protocol::Array<T>>::assertValueHasExpectedType): Deleted.
Move the implementation out of this file.

* inspector/ScriptCallStack.cpp:
(Inspector::ScriptCallStack::buildInspectorArray const):
* inspector/ScriptCallStack.h:
* inspector/agents/InspectorAgent.cpp:
(Inspector::InspectorAgent::activateExtraDomain):
(Inspector::InspectorAgent::activateExtraDomains):
* inspector/agents/InspectorAgent.h:
* inspector/agents/InspectorConsoleAgent.cpp:
(Inspector::InspectorConsoleAgent::getLoggingChannels):
* inspector/agents/InspectorConsoleAgent.h:
* inspector/agents/InspectorDebuggerAgent.cpp:
(Inspector::InspectorDebuggerAgent::setBreakpointByUrl):
(Inspector::InspectorDebuggerAgent::searchInContent):
(Inspector::InspectorDebuggerAgent::currentCallFrames):
* inspector/agents/InspectorDebuggerAgent.h:
* inspector/agents/InspectorRuntimeAgent.cpp:
(Inspector::InspectorRuntimeAgent::getProperties):
(Inspector::InspectorRuntimeAgent::getDisplayableProperties):
(Inspector::InspectorRuntimeAgent::getCollectionEntries):
(Inspector::InspectorRuntimeAgent::getRuntimeTypesForVariablesAtOffsets):
(Inspector::InspectorRuntimeAgent::getBasicBlocks):
* inspector/agents/InspectorRuntimeAgent.h:
* inspector/agents/InspectorScriptProfilerAgent.cpp:
(Inspector::buildSamples):
Use more 'auto' and rename a variable.

* inspector/scripts/codegen/cpp_generator.py:
(CppGenerator.cpp_protocol_type_for_type):
Adopt new type names. This exposed a latent bug where we should have been
unwrapping an AliasedType prior to generating a C++ type for it. The aliased
type may be an array, in which case we would have generated the wrong type.

* inspector/scripts/codegen/generate_cpp_protocol_types_header.py:
(_generate_typedefs_for_domain.JSON):
(_generate_typedefs_for_domain.Inspector): Deleted.
* inspector/scripts/codegen/objc_generator.py:
(ObjCGenerator.protocol_type_for_type):
(ObjCGenerator.objc_protocol_export_expression_for_variable):
* inspector/scripts/tests/generic/expected/commands-with-async-attribute.json-result:
* inspector/scripts/tests/generic/expected/commands-with-optional-call-return-parameters.json-result:
* inspector/scripts/tests/generic/expected/events-with-optional-parameters.json-result:
* inspector/scripts/tests/generic/expected/shadowed-optional-type-setters.json-result:
* inspector/scripts/tests/generic/expected/type-declaration-array-type.json-result:
* inspector/scripts/tests/generic/expected/type-declaration-object-type.json-result:
Rebaseline.

* runtime/TypeSet.cpp:
(JSC::TypeSet::allStructureRepresentations const):
(JSC::StructureShape::inspectorRepresentation):
* runtime/TypeSet.h:

Source/WebCore:

Adopt new type names.

* inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::recordAction):
(WebCore::InspectorCanvas::releaseFrames):
(WebCore::InspectorCanvas::releaseData):
(WebCore::InspectorCanvas::indexForData):
(WebCore::buildArrayForAffineTransform):
(WebCore::buildArrayForVector):
(WebCore::InspectorCanvas::buildInitialState):
(WebCore::InspectorCanvas::buildAction):
(WebCore::InspectorCanvas::buildArrayForCanvasGradient):
(WebCore::InspectorCanvas::buildArrayForCanvasPattern):
(WebCore::InspectorCanvas::buildArrayForImageData):
(WebCore::InspectorCanvas::buildArrayForImageBitmap):
* inspector/InspectorCanvas.h:
* inspector/InspectorController.cpp:
(WebCore::InspectorController::buildObjectForHighlightedNodes const):
* inspector/InspectorController.h:
* inspector/InspectorOverlay.cpp:
(WebCore::buildObjectForHighlight):
(WebCore::InspectorOverlay::drawPaintRects):
(WebCore::buildArrayForRendererFragments):
(WebCore::buildObjectForElementData):
(WebCore::InspectorOverlay::buildHighlightObjectForNode const):
(WebCore::InspectorOverlay::buildObjectForHighlightedNodes const):
* inspector/InspectorOverlay.h:
* inspector/InspectorStyleSheet.cpp:
(WebCore::fillMediaListChain):
(WebCore::InspectorStyle::buildArrayForComputedStyle const):
(WebCore::InspectorStyle::styleWithProperties const):
(WebCore::buildObjectForSelectorHelper):
(WebCore::selectorsFromSource):
(WebCore::InspectorStyleSheet::buildObjectForSelectorList):
(WebCore::InspectorStyleSheet::buildObjectForRule):
(WebCore::InspectorStyleSheet::buildObjectForStyle):
(WebCore::InspectorStyleSheet::buildArrayForRuleList):
* inspector/InspectorStyleSheet.h:
* inspector/agents/InspectorApplicationCacheAgent.cpp:
(WebCore::InspectorApplicationCacheAgent::getFramesWithManifests):
(WebCore::InspectorApplicationCacheAgent::buildArrayForApplicationCacheResources):
* inspector/agents/InspectorApplicationCacheAgent.h:
* inspector/agents/InspectorCSSAgent.cpp:
(WebCore::InspectorCSSAgent::getMatchedStylesForNode):
(WebCore::InspectorCSSAgent::getComputedStyleForNode):
(WebCore::InspectorCSSAgent::getAllStyleSheets):
(WebCore::InspectorCSSAgent::getSupportedCSSProperties):
(WebCore::InspectorCSSAgent::getSupportedSystemFontFamilyNames):
(WebCore::InspectorCSSAgent::buildArrayForMatchedRuleList):
* inspector/agents/InspectorCSSAgent.h:
* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::requestCSSCanvasClientNodes):
* inspector/agents/InspectorCanvasAgent.h:
* inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::querySelectorAll):
(WebCore::InspectorDOMAgent::pushNodePathToFrontend):
(WebCore::InspectorDOMAgent::getEventListenersForNode):
(WebCore::InspectorDOMAgent::getSearchResults):
(WebCore::InspectorDOMAgent::getAttributes):
(WebCore::InspectorDOMAgent::buildObjectForNode):
(WebCore::InspectorDOMAgent::buildArrayForElementAttributes):
(WebCore::InspectorDOMAgent::buildArrayForContainerChildren):
(WebCore::InspectorDOMAgent::buildArrayForPseudoElements):
(WebCore::InspectorDOMAgent::processAccessibilityChildren):
(WebCore::InspectorDOMAgent::buildObjectForAccessibilityProperties):
(WebCore::InspectorDOMAgent::styleAttributeInvalidated):
* inspector/agents/InspectorDOMAgent.h:
* inspector/agents/InspectorDOMStorageAgent.cpp:
(WebCore::InspectorDOMStorageAgent::getDOMStorageItems):
* inspector/agents/InspectorDOMStorageAgent.h:
* inspector/agents/InspectorDatabaseAgent.cpp:
(WebCore::InspectorDatabaseAgent::getDatabaseTableNames):
* inspector/agents/InspectorDatabaseAgent.h:
* inspector/agents/InspectorIndexedDBAgent.cpp:
(WebCore::Inspector::keyPathFromIDBKeyPath):
(WebCore::InspectorIndexedDBAgent::requestDatabaseNames):
* inspector/agents/InspectorLayerTreeAgent.cpp:
(WebCore::InspectorLayerTreeAgent::layersForNode):
(WebCore::InspectorLayerTreeAgent::gatherLayersUsingRenderObjectHierarchy):
(WebCore::InspectorLayerTreeAgent::gatherLayersUsingRenderLayerHierarchy):
* inspector/agents/InspectorLayerTreeAgent.h:
* inspector/agents/InspectorMemoryAgent.cpp:
(WebCore::InspectorMemoryAgent::collectSample):
* inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::InspectorNetworkAgent::searchOtherRequests):
(WebCore::InspectorNetworkAgent::searchInRequest):
* inspector/agents/InspectorNetworkAgent.h:
* inspector/agents/InspectorPageAgent.cpp:
(WebCore::buildArrayForCookies):
(WebCore::InspectorPageAgent::getCookies):
(WebCore::InspectorPageAgent::searchInResource):
(WebCore::InspectorPageAgent::searchInResources):
(WebCore::InspectorPageAgent::buildObjectForFrameTree):
* inspector/agents/InspectorPageAgent.h:
* inspector/agents/WebConsoleAgent.cpp:
(WebCore::WebConsoleAgent::getLoggingChannels):
* inspector/agents/WebConsoleAgent.h:

Source/WebKit:

Adopt new type names.

* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::getNextContext):
(WebKit::WebAutomationSession::getBrowsingContexts):
(WebKit::buildArrayForCookies):
(WebKit::WebAutomationSession::getSessionPermissions):
* UIProcess/Automation/WebAutomationSession.h:

Source/WTF:

Move Inspector::Protocol::Array<T> to JSON::ArrayOf<T>.

* wtf/JSONValues.h:
(WTF::JSONImpl::ArrayOf::ArrayOf):
(WTF::JSONImpl::ArrayOf::openAccessors):
(WTF::JSONImpl::ArrayOf::addItem):
(WTF::JSONImpl::ArrayOf::create):

Tools:

Add duplicate test cases for JSON::ArrayOf<T> based on JSON::Array.

* TestWebKitAPI/Tests/WTF/JSONValue.cpp:
(TestWebKitAPI::TEST):

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

3 years agoHaving a bad time needs to handle ArrayClass indexing type as well
sbarati@apple.com [Fri, 1 Dec 2017 23:40:13 +0000 (23:40 +0000)]
Having a bad time needs to handle ArrayClass indexing type as well
https://bugs.webkit.org/show_bug.cgi?id=180274
<rdar://problem/35667869>

Reviewed by Keith Miller and Mark Lam.

JSTests:

* stress/array-prototype-slow-put-having-a-bad-time-2.js: Added.
(assert):
* stress/array-prototype-slow-put-having-a-bad-time.js: Added.
(assert):

Source/JavaScriptCore:

We need to make sure to transition ArrayClass to SlowPutArrayStorage as well.
Otherwise, we'll end up with the wrong Structure, which will lead us to not
adhere to the spec. The bug was that we were not considering ArrayClass inside
hasBrokenIndexing. This patch rewrites that function to automatically opt
in non-empty indexing types as broken, instead of having to opt out all
non-empty indexing types besides SlowPutArrayStorage.

* runtime/IndexingType.h:
(JSC::hasSlowPutArrayStorage):
(JSC::shouldUseSlowPut):
* runtime/JSGlobalObject.cpp:
* runtime/JSObject.cpp:
(JSC::JSObject::switchToSlowPutArrayStorage):

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

3 years ago[Attachment Support] Implement SPI for clients to update a given attachment's data
wenson_hsieh@apple.com [Fri, 1 Dec 2017 23:36:41 +0000 (23:36 +0000)]
[Attachment Support] Implement SPI for clients to update a given attachment's data
https://bugs.webkit.org/show_bug.cgi?id=180184
<rdar://problem/35355731>

Reviewed by Tim Horton.

Source/WebCore:

Add native API support for Mail to update the data (and optionally, the name and type) of a given attachment
element. See per-method comments below for more detail.

Test: WKAttachmentTests.ChangeAttachmentDataAndFileInformation
      WKAttachmentTests.ChangeAttachmentDataUpdatesWithInPlaceDisplay

* editing/Editor.cpp:
(WebCore::Editor::insertAttachment):
* html/HTMLAttachmentElement.cpp:
(WebCore::HTMLAttachmentElement::setFile):
(WebCore::HTMLAttachmentElement::invalidateShadowRootChildrenIfNecessary):

Pull out logic to hide and reset shadow DOM state into a separate helper, and additionally hide both the image
and video child elements if they exist. This prevents us from getting into a state where both image and video
elements may appear side-by-side when changing data from an image to a video or vice versa.

(WebCore::HTMLAttachmentElement::updateFileWithData):

Add a new helper to update the backing File of an attachment element from data, optionally updating the filename
and content type as well.

(WebCore::HTMLAttachmentElement::populateShadowRootIfNecessary):
* html/HTMLAttachmentElement.h:

Source/WebKit:

Add plumbing to the web process for setting the attachment data (and optionally, the content type and/or file
name) of a given attachment. See WebCore ChangeLog for more detail. Changes covered by new API tests.

* UIProcess/API/APIAttachment.cpp:
(API::Attachment::setDataAndContentType):
* UIProcess/API/APIAttachment.h:
* UIProcess/API/Cocoa/_WKAttachment.h:

Add nullability annotations around _WKAttachment SPI methods.

* UIProcess/API/Cocoa/_WKAttachment.mm:
(-[_WKAttachment setData:newContentType:newFilename:completion:]):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::setAttachmentDataAndContentType):
* UIProcess/WebPageProxy.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setAttachmentDataAndContentType):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

Tools:

Adds two new API tests to exercise the attachment data update flow.

* TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:
(TestWebKitAPI::ObserveAttachmentUpdatesForScope::ObserveAttachmentUpdatesForScope):
(-[_WKAttachment synchronouslySetDisplayOptions:error:]):
(-[_WKAttachment synchronouslyRequestData:]):
(-[_WKAttachment synchronouslySetData:newContentType:newFilename:error:]):
(TestWebKitAPI::TEST):

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

3 years ago[cmake] Make description of ENABLE_DRAG_SUPPORT more informative
annulen@yandex.ru [Fri, 1 Dec 2017 23:16:32 +0000 (23:16 +0000)]
[cmake] Make description of ENABLE_DRAG_SUPPORT more informative
https://bugs.webkit.org/show_bug.cgi?id=180266

Reviewed by Michael Catanzaro.

When disabled, it also disables selection of text with dragging, and this
comes as a surprise for many people.

* Source/cmake/WebKitFeatures.cmake:

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

3 years agoUnreviewed, rolling out r225412.
ryanhaddad@apple.com [Fri, 1 Dec 2017 23:13:48 +0000 (23:13 +0000)]
Unreviewed, rolling out r225412.

Breaks 32-bit macOS builds.

Reverted changeset:

"Unreviewed, fix byte order macros and address new -Wunknown-
pragmas warnings"
https://bugs.webkit.org/show_bug.cgi?id=180177
https://trac.webkit.org/changeset/225412

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

3 years agoWebAssembly: stack trace improvement follow-ups
jfbastien@apple.com [Fri, 1 Dec 2017 22:19:03 +0000 (22:19 +0000)]
WebAssembly: stack trace improvement follow-ups
https://bugs.webkit.org/show_bug.cgi?id=180273

Reviewed by Saam Barati.

* wasm/WasmIndexOrName.cpp:
(JSC::Wasm::makeString):
* wasm/WasmIndexOrName.h:
(JSC::Wasm::IndexOrName::nameSection const):
* wasm/WasmNameSection.h:
(JSC::Wasm::NameSection::NameSection):
(JSC::Wasm::NameSection::get):

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

3 years agoGet rid of microtask in ServiceWorkerContainer::jobResolvedWithRegistration()
cdumez@apple.com [Fri, 1 Dec 2017 22:14:55 +0000 (22:14 +0000)]
Get rid of microtask in ServiceWorkerContainer::jobResolvedWithRegistration()
https://bugs.webkit.org/show_bug.cgi?id=180263

Reviewed by Youenn Fablet.

Get rid of microtask in ServiceWorkerContainer::jobResolvedWithRegistration(). It
is no longer needed and MicrotaskQueue::mainThreadQueue() is only safe to use from
the main thread, as its name suggest. ServiceWorkerContainer are also instantiated
in Service worker threads nowadays.

* workers/service/SWClientConnection.cpp:
(WebCore::SWClientConnection::registrationJobResolvedInServer):
* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::jobResolvedWithRegistration):
* workers/service/ServiceWorkerContainer.h:
* workers/service/ServiceWorkerJob.cpp:
(WebCore::ServiceWorkerJob::resolvedWithRegistration):
* workers/service/ServiceWorkerJob.h:
* workers/service/ServiceWorkerJobClient.h:

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

3 years agoFree FontFaceSets may include fonts that were never actually added to them
mmaxfield@apple.com [Fri, 1 Dec 2017 22:13:37 +0000 (22:13 +0000)]
Free FontFaceSets may include fonts that were never actually added to them
https://bugs.webkit.org/show_bug.cgi?id=180164

Reviewed by Simon Fraser.

Source/WebCore:

There are two circumstances where this can occur:

- If script makes a so-called "free" FontFaceSet, by using "new FontFaceSet". This object is not
associated with the document, and should therefore only include fonts which have been manually
added to it from script. However, today, this object includes preinstalled fonts which have the
same names as any fonts manually added to it. (So, if you manually add "Helvetica", the object
would have two objects - the one you just added and the preinstalled version too).

- For the document's FontFaceSet, the same thing would happen. This one is a little trickier
because the spec is not clear whether or not the document's FontFaceSet should include these
preinstalled fonts. However, running this test in Firefox and Chrome, they both agree that
preinstalled fonts should not be present, so this patch adheres to this behavior.

We can't actually remove the preinstalled fonts from the document's FontFaceSet (because that's
how normal font lookups are performed), but we can filter them out at the point they meet the
Javascript API. And, for "free" FontFaceSets, we can avoid adding them in the first place for
performance.

Test: fast/text/font-face-api-preinstalled.html

* css/CSSFontFaceSet.cpp:
(WebCore::CSSFontFaceSet::CSSFontFaceSet):
(WebCore::CSSFontFaceSet::ensureLocalFontFacesForFamilyRegistered):
(WebCore::CSSFontFaceSet::addToFacesLookupTable):
(WebCore::CSSFontFaceSet::matchingFacesExcludingPreinstalledFonts):
(WebCore::CSSFontFaceSet::check):
(WebCore::CSSFontFaceSet::matchingFaces): Deleted.
* css/CSSFontFaceSet.h:
* css/CSSFontSelector.cpp:
(WebCore::CSSFontSelector::CSSFontSelector):
* css/FontFaceSet.cpp:
(WebCore::FontFaceSet::load):

LayoutTests:

* fast/text/font-face-api-preinstalled-expected.txt: Added.
* fast/text/font-face-api-preinstalled.html: Added.

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

3 years agoGigacage should not be enabled for ARM64_32
msaboff@apple.com [Fri, 1 Dec 2017 22:12:01 +0000 (22:12 +0000)]
Gigacage should not be enabled for ARM64_32
https://bugs.webkit.org/show_bug.cgi?id=180265

Reviewed by Saam Barati.

Disabled Gigacage for ARM64_32.
In the process, restructured Gigacage::shouldBeEnabled() with GIGACAGE_ENABLED set
to 0 to avoid a dead code compiler warning.

* bmalloc/Gigacage.cpp:
(Gigacage::shouldBeEnabled):
* bmalloc/Gigacage.h:

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

3 years agoUnreviewed, fix byte order macros and address new -Wunknown-pragmas warnings
mcatanzaro@igalia.com [Fri, 1 Dec 2017 22:09:19 +0000 (22:09 +0000)]
Unreviewed, fix byte order macros and address new -Wunknown-pragmas warnings
https://bugs.webkit.org/show_bug.cgi?id=180177
<rdar://problem/35774734>

I'm not sure how this code was developed, as it seems to have been designed for GCC, but it
does not use any of GCC's documented byte order macros, and accordingly does not work. Let's
fix it to guarantee there are no problems when building with GCC. I presume it should help
Clang as well.

* src/common/third_party/smhasher/src/PMurHash.cpp:
(angle::PMurHash32_Process):

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

3 years agoWebAssembly: restore cached stack limit after out-call
jfbastien@apple.com [Fri, 1 Dec 2017 21:58:36 +0000 (21:58 +0000)]
WebAssembly: restore cached stack limit after out-call
https://bugs.webkit.org/show_bug.cgi?id=179106
<rdar://problem/35337525>

Reviewed by Saam Barati.

JSTests:

* wasm/function-tests/double-instance.js: Added.
(const.imp.boom):
(const.imp.get callAnother):

Source/JavaScriptCore:

We cache the stack limit on the Instance so that we can do fast
stack checks where required. In regular usage the stack limit
never changes because we always run on the same thread, but in
rare cases an API user can totally migrate which thread (and
therefore stack) is used for execution between WebAssembly
traces. For that reason we set the cached stack limit to
UINTPTR_MAX on the outgoing Instance when transitioning back into
a different Instance. We usually restore the cached stack limit in
Context::store, but this wasn't called on all code paths. We had a
bug where an Instance calling into itself indirectly would
therefore fail to restore its cached stack limit properly.

This patch therefore restores the cached stack limit after direct
calls which could be to imports (both wasm->wasm and
wasm->embedder). We have to do all of them because we have no way
of knowing what imports will do (they're known at instantiation
time, not compilation time, and different instances can have
different imports). To make this efficient we also add a pointer
to the canonical location of the stack limit (i.e. the extra
indirection we're trying to save by caching the stack limit on the
Instance in the first place). This is potentially a small perf hit
on imported direct calls.

It's hard to say what the performance cost will be because we
haven't seen much code in the wild which does this. We're adding
two dependent loads and a store of the loaded value, which is
unlikely to get used soon after. It's more code, but on an
out-of-order processor it doesn't contribute to the critical path.

* wasm/WasmB3IRGenerator.cpp:
(JSC::Wasm::B3IRGenerator::restoreWebAssemblyGlobalState):
(JSC::Wasm::B3IRGenerator::addGrowMemory):
(JSC::Wasm::B3IRGenerator::addCall):
(JSC::Wasm::B3IRGenerator::addCallIndirect):
* wasm/WasmInstance.cpp:
(JSC::Wasm::Instance::Instance):
(JSC::Wasm::Instance::create):
* wasm/WasmInstance.h:
(JSC::Wasm::Instance::offsetOfPointerToActualStackLimit):
(JSC::Wasm::Instance::cachedStackLimit const):
(JSC::Wasm::Instance::setCachedStackLimit):
* wasm/js/JSWebAssemblyInstance.cpp:
(JSC::JSWebAssemblyInstance::create):
* wasm/js/WebAssemblyFunction.cpp:
(JSC::callWebAssemblyFunction):

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

3 years agoAnother attempt to fix 32-bit, this time with a bit more thought!
dino@apple.com [Fri, 1 Dec 2017 21:58:10 +0000 (21:58 +0000)]
Another attempt to fix 32-bit, this time with a bit more thought!

* platform/graphics/ANGLEWebKitBridge.cpp:
(WebCore::ANGLEWebKitBridge::compileShaderSource):
* platform/graphics/ANGLEWebKitBridge.h:
* platform/graphics/opengl/Extensions3DOpenGLCommon.cpp:
(WebCore::Extensions3DOpenGLCommon::getTranslatedShaderSourceANGLE):

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

3 years agoAttempted build fix.
dino@apple.com [Fri, 1 Dec 2017 21:50:37 +0000 (21:50 +0000)]
Attempted build fix.

* platform/graphics/ANGLEWebKitBridge.cpp:
(WebCore::ANGLEWebKitBridge::compileShaderSource):
* platform/graphics/ANGLEWebKitBridge.h:
* platform/graphics/opengl/Extensions3DOpenGLCommon.cpp:
(WebCore::Extensions3DOpenGLCommon::getTranslatedShaderSourceANGLE):

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

3 years agoUpdate TestExpectations for various editing tests on iOS.
ryanhaddad@apple.com [Fri, 1 Dec 2017 21:44:48 +0000 (21:44 +0000)]
Update TestExpectations for various editing tests on iOS.

Unreviewed test gardening.

* platform/ios-wk2/TestExpectations:
* platform/ios-wk2/editing/deleting/5144139-2-expected.txt:
* platform/ios/TestExpectations:

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

3 years agoUse SH_INITIALIZE_UNINITIALIZED_LOCALS now that ANGLE has been updated
dino@apple.com [Fri, 1 Dec 2017 21:16:58 +0000 (21:16 +0000)]
Use SH_INITIALIZE_UNINITIALIZED_LOCALS now that ANGLE has been updated
https://bugs.webkit.org/show_bug.cgi?id=177929
<rdar://problem/34866210>

Reviewed by Sam Weinig.

Source/WebCore:

Test: fast/canvas/webgl/uninitialized-locals.html

* platform/graphics/ANGLEWebKitBridge.cpp:
(WebCore::ANGLEWebKitBridge::compileShaderSource):
* platform/graphics/ANGLEWebKitBridge.h:
* platform/graphics/opengl/Extensions3DOpenGLCommon.cpp:
(WebCore::Extensions3DOpenGLCommon::getTranslatedShaderSourceANGLE):

LayoutTests:

* fast/canvas/webgl/uninitialized-locals-expected.txt: Added.
* fast/canvas/webgl/uninitialized-locals.html: Added.

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

3 years agoMany imported/w3c/web-platform-tests/service-workers/ test are failing together inter...
commit-queue@webkit.org [Fri, 1 Dec 2017 20:36:50 +0000 (20:36 +0000)]
Many imported/w3c/web-platform-tests/service-workers/ test are failing together intermittently
https://bugs.webkit.org/show_bug.cgi?id=180227

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-01
Reviewed by Mark Lam.

No observable change.

* bindings/js/JSDOMPromise.cpp:
(WebCore::callFunction):

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

3 years agoFix WinCairo build break after r225340
commit-queue@webkit.org [Fri, 1 Dec 2017 20:31:00 +0000 (20:31 +0000)]
Fix WinCairo build break after r225340
https://bugs.webkit.org/show_bug.cgi?id=180230

Unreviewed build fix.

Patch by Tomoki Imai <Tomoki.Imai@sony.com> on 2017-12-01

* CMakeLists.txt: Add missing sources.
* PlatformWin.cmake: Add missing sources.

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

3 years agoUnreviewed, fix -Wunknown-pragmas warnings.
mcatanzaro@igalia.com [Fri, 1 Dec 2017 20:25:02 +0000 (20:25 +0000)]
Unreviewed, fix -Wunknown-pragmas warnings.
https://bugs.webkit.org/show_bug.cgi?id=180177

It seems GCC has started to warn about unrecognized Clang pragmas. Oh well.

This is not sent upstream, because the Clang pragmas appear to be downstream WebKit
additions. changes.diff is not updated, because it was not updated in yesterday's ANGLE
update.

* include/GLSLANG/ShaderVars.h:
* src/libANGLE/Platform.cpp:

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

3 years agoAdd Internals.terminateServiceWorker, and the ability to restart service workers...
beidson@apple.com [Fri, 1 Dec 2017 19:45:41 +0000 (19:45 +0000)]
Add Internals.terminateServiceWorker, and the ability to restart service workers for postMessage.
https://bugs.webkit.org/show_bug.cgi?id=180170

Reviewed by Chris Dumez.

Source/WebCore:

Test: http/tests/workers/service/postmessage-after-terminate.https.html

* dom/ActiveDOMObject.cpp:
(WebCore::ActiveDOMObject::~ActiveDOMObject):

* testing/Internals.cpp:
(WebCore::Internals::terminateServiceWorker):
* testing/Internals.h:
* testing/Internals.idl:

* workers/service/SWClientConnection.h:

* workers/service/ServiceWorker.idl:

* workers/service/context/SWContextManager.cpp:
(WebCore::SWContextManager::postMessageToServiceWorkerGlobalScope):
(WebCore::SWContextManager::terminateWorker):
* workers/service/context/SWContextManager.h:

* workers/service/context/ServiceWorkerThreadProxy.h:

* workers/service/server/SWServer.cpp:
(WebCore::SWServer::workerByID const):
(WebCore::SWServer::Connection::syncTerminateWorker):
(WebCore::SWServer::installContextData):
(WebCore::SWServer::invokeRunServiceWorker):
(WebCore::SWServer::terminateWorker):
(WebCore::SWServer::syncTerminateWorker):
(WebCore::SWServer::terminateWorkerInternal):
(WebCore::SWServer::workerContextTerminated):
* workers/service/server/SWServer.h:
(WebCore::SWServer::workerByID const): Deleted.

* workers/service/server/SWServerToContextConnection.h:

* workers/service/server/SWServerWorker.cpp:
(WebCore::SWServerWorker::contextData const):
* workers/service/server/SWServerWorker.h:
(WebCore::SWServerWorker::isRunning const):
(WebCore::SWServerWorker::isTerminating const):
(WebCore::SWServerWorker::setState):
(WebCore::SWServerWorker::server):

Source/WebKit:

* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::startFetch):
(WebKit::WebSWServerConnection::postMessageToServiceWorkerGlobalScope):
* StorageProcess/ServiceWorker/WebSWServerConnection.h:
* StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:

* StorageProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
(WebKit::WebSWServerToContextConnection::syncTerminateWorker):
* StorageProcess/ServiceWorker/WebSWServerToContextConnection.h:

* StorageProcess/StorageToWebProcessConnection.cpp:
(WebKit::StorageToWebProcessConnection::didReceiveSyncMessage):

* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::syncTerminateWorker):
* WebProcess/Storage/WebSWClientConnection.h:

* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::terminateWorker):
(WebKit::WebSWContextManagerConnection::syncTerminateWorker):
* WebProcess/Storage/WebSWContextManagerConnection.h:
* WebProcess/Storage/WebSWContextManagerConnection.messages.in:

* WebProcess/Storage/WebToStorageProcessConnection.cpp:
(WebKit::WebToStorageProcessConnection::didReceiveSyncMessage):
* WebProcess/Storage/WebToStorageProcessConnection.h:

Source/WTF:

* wtf/CompletionHandler.h:
(WTF::CompletionHandler<Out):

LayoutTests:

* http/tests/workers/service/postmessage-after-terminate.https-expected.txt: Added.
* http/tests/workers/service/postmessage-after-terminate.https.html: Added.
* http/tests/workers/service/resources/basic-ServiceWorker-postMessage.js:
(then):
* http/tests/workers/service/resources/postmessage-after-terminate.js: Copied from LayoutTests/http/tests/workers/service/resources/basic-ServiceWorker-postMessage.js.
(then):
* http/tests/workers/service/resources/postmessage-echo-worker.js: Renamed from LayoutTests/http/tests/workers/service/resources/basic-ServiceWorker-postMessage-worker.js.

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

3 years agoNullptr deref in WebCore::RenderTableCaption::containingBlockLogicalWidthForContent
zalan@apple.com [Fri, 1 Dec 2017 19:15:33 +0000 (19:15 +0000)]
Nullptr deref in WebCore::RenderTableCaption::containingBlockLogicalWidthForContent
https://bugs.webkit.org/show_bug.cgi?id=180251
<rdar://problem/34138562>

Reviewed by Simon Fraser.

Source/WebCore:

containingBlockLogicalWidthForContent should check whether the renderer is actually
attached to the tree.

Test: fast/table/caption-crash-when-layer-backed.html

* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::containingBlockLogicalWidthForContent const):
* rendering/RenderTableCaption.h:
(WebCore::RenderTableCaption::containingBlockLogicalWidthForContent const):

LayoutTests:

* fast/table/caption-crash-when-layer-backed-expected.txt: Added.
* fast/table/caption-crash-when-layer-backed.html: Added.

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

3 years ago[GStreamer] Fix USE_GSTREAMER_GL check for GStreamer 1.10
mcatanzaro@igalia.com [Fri, 1 Dec 2017 18:39:14 +0000 (18:39 +0000)]
[GStreamer] Fix USE_GSTREAMER_GL check for GStreamer 1.10
https://bugs.webkit.org/show_bug.cgi?id=180256

Reviewed by Carlos Alberto Lopez Perez.

It's not safe to change the value of build options after WEBKIT_OPTION_END, since it breaks
the option dependency checker. I don't think that actually hurts anything in this case, but
let's not encourage bad practice. Also, it's not good for features to be secretly disabled.
Nobody reads CMake output unless there is a fatal error. Failing the build at the CMake
stage lets distributors know that a feature will be missing. And of course, it's still
possible to disable USE_GSTREAMER_GL to avoid the increased GStreamer requirement.

* Source/cmake/GStreamerChecks.cmake:

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

3 years ago[GTK] [MSE] Turn MSE on by default
mcatanzaro@igalia.com [Fri, 1 Dec 2017 18:33:16 +0000 (18:33 +0000)]
[GTK] [MSE] Turn MSE on by default
https://bugs.webkit.org/show_bug.cgi?id=167107

Reviewed by Carlos Alberto Lopez Perez.

Turn on the ENABLE_MEDIA_SOURCE build option. Fail the build if GStreamer 1.8 is not
installed and ENABLE_MEDIA_SOURCE has not been disabled.

* Source/cmake/GStreamerChecks.cmake:
* Source/cmake/GStreamerDefinitions.cmake:
* Source/cmake/OptionsGTK.cmake:
* Source/cmake/OptionsWPE.cmake:

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

3 years agoClear WebSWClientConnection in case storage process IPC connection is closing
commit-queue@webkit.org [Fri, 1 Dec 2017 18:31:49 +0000 (18:31 +0000)]
Clear WebSWClientConnection in case storage process IPC connection is closing
https://bugs.webkit.org/show_bug.cgi?id=180210

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-01
Reviewed by Chris Dumez.

Source/WebCore:

No observable change of behavior.

* dom/Document.h: Keeping a ref since object may be deleted otherwise.

Source/WebKit:

Clear the sw connection maps when connection is closing.
Call related completion handlers for each connection.

* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::connectionToServerLost):
* WebProcess/Storage/WebSWClientConnection.h:
* WebProcess/Storage/WebToStorageProcessConnection.cpp:
(WebKit::WebToStorageProcessConnection::didClose):
(WebKit::WebToStorageProcessConnection::idbConnectionToServerForSession):
(WebKit::WebToStorageProcessConnection::serviceWorkerConnectionForSession):
* WebProcess/Storage/WebToStorageProcessConnection.h:

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

3 years agoDrop clientCreationURL from ServiceWorkerRegistrationKey
cdumez@apple.com [Fri, 1 Dec 2017 18:29:05 +0000 (18:29 +0000)]
Drop clientCreationURL from ServiceWorkerRegistrationKey
https://bugs.webkit.org/show_bug.cgi?id=180255

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Rebaseline WPT test that is now passing.

* web-platform-tests/service-workers/service-worker/multiple-register.https-expected.txt:

Source/WebCore:

Drop clientCreationURL from ServiceWorkerRegistrationKey. It is not needed and leads to
wrong behavior when using the Service Worker API from inside service workers.

* workers/service/ServiceWorkerJobData.cpp:
(WebCore::ServiceWorkerJobData::registrationKey const):
* workers/service/ServiceWorkerRegistrationKey.cpp:
(WebCore::ServiceWorkerRegistrationKey::ServiceWorkerRegistrationKey):
(WebCore::ServiceWorkerRegistrationKey::hash const):
(WebCore::ServiceWorkerRegistrationKey::operator== const):
(WebCore::ServiceWorkerRegistrationKey::isolatedCopy const):
(WebCore::ServiceWorkerRegistrationKey::loggingString const):
* workers/service/ServiceWorkerRegistrationKey.h:
(WebCore::ServiceWorkerRegistrationKey::scope const):
(WebCore::ServiceWorkerRegistrationKey::setScope):
(WebCore::ServiceWorkerRegistrationKey::encode const):
(WebCore::ServiceWorkerRegistrationKey::decode):
(WTF::HashTraits<WebCore::ServiceWorkerRegistrationKey>::constructDeletedValue):
(WTF::HashTraits<WebCore::ServiceWorkerRegistrationKey>::isDeletedValue):
(WebCore::ServiceWorkerRegistrationKey::clientCreationURL const): Deleted.
(WebCore::ServiceWorkerRegistrationKey::setClientCreationURL): Deleted.

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

3 years ago[WinCairo] Wrongly placed scroll bars in HiDPI
commit-queue@webkit.org [Fri, 1 Dec 2017 18:20:05 +0000 (18:20 +0000)]
[WinCairo] Wrongly placed scroll bars in HiDPI
https://bugs.webkit.org/show_bug.cgi?id=180066

Patch by Fujii Hironori <Hironori.Fujii@sony.com> on 2017-12-01
Reviewed by Žan Doberšek.

PlatformContextCairo wasn't properly initialized. It should have a
pointer to GraphicsContextPrivate in WinCairo port to paint
controls in right places.

No new tests, no behavior change.

* platform/graphics/win/GraphicsContextCairoWin.cpp:
(WebCore::GraphicsContext::platformInit): Call PlatformContextCairo::setGraphicsContextPrivate.

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

3 years ago[GTK] Add SampleMap.cpp API tests to CMake
commit-queue@webkit.org [Fri, 1 Dec 2017 18:11:48 +0000 (18:11 +0000)]
[GTK] Add SampleMap.cpp API tests to CMake
https://bugs.webkit.org/show_bug.cgi?id=180252

Patch by Alicia Boya García <aboya@igalia.com> on 2017-12-01
Reviewed by Žan Doberšek.

* TestWebKitAPI/PlatformGTK.cmake:

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

3 years ago[MediaStream] Use CaptureDevice instead of device ID to identify devices
eric.carlson@apple.com [Fri, 1 Dec 2017 18:09:03 +0000 (18:09 +0000)]
[MediaStream] Use CaptureDevice instead of device ID to identify devices
https://bugs.webkit.org/show_bug.cgi?id=180206
<rdar://problem/35775758>

Reviewed by Youenn Fablet.

Source/WebCore:

No new tests, no change in behavior.

* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::allow):
* Modules/mediastream/UserMediaRequest.h:
(WebCore::UserMediaRequest::allowedAudioDeviceUID const): Deleted.
(WebCore::UserMediaRequest::allowedVideoDeviceUID const): Deleted.
* platform/mediastream/RealtimeMediaSource.h:
* platform/mediastream/RealtimeMediaSourceCenter.cpp:
(WebCore::RealtimeMediaSourceCenter::createMediaStream):
(WebCore::RealtimeMediaSourceCenter::validateRequestConstraints):
* platform/mediastream/RealtimeMediaSourceCenter.h:
* platform/mediastream/mac/CoreAudioCaptureSource.cpp:
* platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
* platform/mock/MockRealtimeAudioSource.cpp:
* platform/mock/MockRealtimeVideoSource.cpp:

Source/WebKit:

* UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted):
(WebKit::UserMediaPermissionRequestManagerProxy::grantAccess):
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
* UIProcess/UserMediaPermissionRequestManagerProxy.h:
* UIProcess/UserMediaPermissionRequestProxy.cpp:
(WebKit::UserMediaPermissionRequestProxy::allow):
* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
(WebKit::UserMediaPermissionRequestManager::userMediaAccessWasGranted):
* WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::userMediaAccessWasGranted):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/cocoa/UserMediaCaptureManager.cpp:
(WebKit::UserMediaCaptureManager::createCaptureSource):
* WebProcess/cocoa/UserMediaCaptureManager.h:

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

3 years agoUnreviewed GTK+ gardening. Updating baselines affected in r225366.
zandobersek@gmail.com [Fri, 1 Dec 2017 17:51:17 +0000 (17:51 +0000)]
Unreviewed GTK+ gardening. Updating baselines affected in r225366.

* platform/gtk/css3/filters/effect-reference-expected.txt:
* platform/gtk/css3/filters/effect-reference-hw-expected.txt:
* platform/gtk/svg/W3C-SVG-1.1/filters-comptran-01-b-expected.txt:
* platform/gtk/svg/custom/feComponentTransfer-Discrete-expected.txt:
* platform/gtk/svg/custom/feComponentTransfer-Gamma-expected.txt:
* platform/gtk/svg/custom/feComponentTransfer-Linear-expected.txt:
* platform/gtk/svg/custom/feComponentTransfer-Table-expected.txt:

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

3 years agoMarked imported/w3c/web-platform-tests/service-workers/service-worker/worker-intercep...
jlewis3@apple.com [Fri, 1 Dec 2017 16:50:56 +0000 (16:50 +0000)]
Marked imported/w3c/web-platform-tests/service-workers/service-worker/worker-interception.https.html as flaky on macOS.
https://bugs.webkit.org/show_bug.cgi?id=179351

Unreviewed test expectations.

* platform/mac-wk2/TestExpectations:

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

3 years agoAdd StyleBench
antti@apple.com [Fri, 1 Dec 2017 15:31:16 +0000 (15:31 +0000)]
Add StyleBench
https://bugs.webkit.org/show_bug.cgi?id=180140
<rdar://problem/35366401>

* Skipped: Skip InteractiveRunner.html

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

3 years ago[WPE] Enable some more wpt tests.
Ms2ger@igalia.com [Fri, 1 Dec 2017 12:10:30 +0000 (12:10 +0000)]
[WPE] Enable some more wpt tests.
https://bugs.webkit.org/show_bug.cgi?id=180242

Unreviewed test gardening.

* platform/wpe/TestExpectations: enable tests.
* platform/wpe/imported/w3c/web-platform-tests/eventsource/format-field-id-2-expected.txt: Copied from gtk.
* platform/wpe/imported/w3c/web-platform-tests/eventsource/format-field-id-expected.txt: Copied from gtk.
* platform/wpe/imported/w3c/web-platform-tests/eventsource/format-mime-bogus-expected.txt: Copied from gtk.

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

3 years agoWebDriver: add support for importing and running selenium tests
carlosgc@webkit.org [Fri, 1 Dec 2017 11:30:09 +0000 (11:30 +0000)]
WebDriver: add support for importing and running selenium tests
https://bugs.webkit.org/show_bug.cgi?id=180145

Reviewed by Brian Burg.

Tools:

We currently import and run W3C tests, which are the best ones to ensure our implementation is spec
compliant. However, the selenium API is what user will actually use in the end, so it's important to ensure that
we don't break the selenium support. This patch adds webdriver_test_runner_selenium.py and
webdriver_selenium_executor.py to run selenium tests. The script import-w3c-webdriver-tests has been renamed as
import-webdriver-tests and it can now import selenium tests too.

* Scripts/import-w3c-webdriver-tests: Removed.
* Scripts/import-webdriver-tests: Added.
(Importer):
(Importer.__init__):
(Importer.download_tests):
(Importer.import_tests):
(Importer.import_tests.should_skip_file):
* Scripts/webkitpy/webdriver_tests/webdriver_driver.py:
(WebDriver.browser_path):
(WebDriver):
(WebDriver.browser_args):
(WebDriver.selenium_name):
* Scripts/webkitpy/webdriver_tests/webdriver_driver_gtk.py:
(WebDriverGtk.browser_path):
(WebDriverGtk):
(WebDriverGtk.browser_args):
(WebDriverGtk.capabilities):
(WebDriverGtk.selenium_name):
* Scripts/webkitpy/webdriver_tests/webdriver_driver_wpe.py:
(WebDriverWPE.browser_args):
(WebDriverWPE.capabilities):
* Scripts/webkitpy/webdriver_tests/webdriver_selenium_executor.py: Added.
(_ensure_directory_in_path):
(CollectRecorder):
(CollectRecorder.__init__):
(CollectRecorder.pytest_collectreport):
(WebDriverSeleniumExecutor):
(WebDriverSeleniumExecutor.__init__):
(WebDriverSeleniumExecutor.collect):
(WebDriverSeleniumExecutor.run):
* Scripts/webkitpy/webdriver_tests/webdriver_test_runner.py:
(WebDriverTestRunner):
(WebDriverTestRunner.__init__):
(WebDriverTestRunner.run):
(WebDriverTestRunner.print_results):
(WebDriverTestRunner.dump_results_to_json_file):
* Scripts/webkitpy/webdriver_tests/webdriver_test_runner_selenium.py: Added.
(WebDriverTestRunnerSelenium):
(WebDriverTestRunnerSelenium.__init__):
(WebDriverTestRunnerSelenium._tests_dir):
(WebDriverTestRunnerSelenium.collect_tests):
(WebDriverTestRunnerSelenium.run):
(WebDriverTestRunnerSelenium.results):
* Scripts/webkitpy/webdriver_tests/webdriver_test_runner_w3c.py:
(WebDriverTestRunnerW3C.__init__):
(WebDriverTestRunnerW3C.run):
* Scripts/webkitpy/webdriver_tests/webdriver_w3c_executor.py:

WebDriverTests:

* imported/selenium/importer.json: Added.
* imported/selenium/common/: Added.
* imported/selenium/py/: Added.

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

3 years agoMark imported/w3c/web-platform-tests/resource-timing/single-entry-per-resource.html...
Ms2ger@igalia.com [Fri, 1 Dec 2017 11:04:29 +0000 (11:04 +0000)]
Mark imported/w3c/web-platform-tests/resource-timing/single-entry-per-resource.html as flaky
https://bugs.webkit.org/show_bug.cgi?id=180241

Unreviewed test gardening.

* TestExpectations:

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

3 years agoWebDriver: link and partial links queries don't work in xhtml documents
carlosgc@webkit.org [Fri, 1 Dec 2017 09:50:52 +0000 (09:50 +0000)]
WebDriver: link and partial links queries don't work in xhtml documents
https://bugs.webkit.org/show_bug.cgi?id=180191

Reviewed by Brian Burg.

We convert the queries to use xpath, which works for html documents, but it doesn't work for xhtml. In case of
xhtml we would need to provide a namespace resolver and elements would need to be prefixed with 'xhtml:'. It's
easier to simply iterate the link elements and compare the text.

Fixes: imported/w3c/webdriver/tests/retrieval/find_element_from_element.py::test_xhtml_namespace[link text-full link text]
       imported/w3c/webdriver/tests/retrieval/find_element_from_element.py::test_xhtml_namespace[partial link text-link text]
       imported/w3c/webdriver/tests/retrieval/find_element_from_elements.py::test_xhtml_namespace[link text-full link text]
       imported/w3c/webdriver/tests/retrieval/find_element_from_elements.py::test_xhtml_namespace[partial link text-link text]
       imported/w3c/webdriver/tests/retrieval/find_element.py::test_xhtml_namespace[link text-full link text]
       imported/w3c/webdriver/tests/retrieval/find_element.py::test_xhtml_namespace[partial link text-link text]
       imported/w3c/webdriver/tests/retrieval/find_elements.py::test_xhtml_namespace[link text-full link text]
       imported/w3c/webdriver/tests/retrieval/find_elements.py::test_xhtml_namespace[partial link text-link text]

* UIProcess/Automation/atoms/FindNodes.js:
(switch):
(tryToFindNode):

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

3 years agoWebDriver: implement status command
carlosgc@webkit.org [Fri, 1 Dec 2017 09:49:10 +0000 (09:49 +0000)]
WebDriver: implement status command
https://bugs.webkit.org/show_bug.cgi?id=180133

Reviewed by Brian Burg.

8.3 Status
https://w3c.github.io/webdriver/webdriver-spec.html#status

Fixes: imported/w3c/webdriver/tests/sessions/status.py::test_get_status_no_session
       imported/w3c/webdriver/tests/sessions/status.py::test_status_with_session_running_on_endpoint_node

* WebDriverService.cpp:
(WebDriver::WebDriverService::status):
* WebDriverService.h:

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

3 years agoWebDriver: end point nodes are only allowed to have one session
carlosgc@webkit.org [Fri, 1 Dec 2017 09:47:15 +0000 (09:47 +0000)]
WebDriver: end point nodes are only allowed to have one session
https://bugs.webkit.org/show_bug.cgi?id=180131

Reviewed by Brian Burg.

We are currently keeping a map of sessions, but our service is always and end point node, so only one session
can exist at a time. Make findSessionOrCompleteWithError() return a boolean instead, failing in case the sessionID
parameter is not found or it doesn't match the current session. Replace the session map and active session
pointer with a single session member and return SessionNotCreated error when new session command is received and
there's an active session.

8. Sessions
A remote end has an associated maximum active sessions (an integer) that defines the number of active sessions
that are supported. This may be “unlimited” for intermediary nodes, but must be exactly one for a remote end
that is an endpoint node.
https://w3c.github.io/webdriver/webdriver-spec.html#dfn-maximum-active-sessions

Fixes: imported/w3c/webdriver/tests/sessions/new_session/default_values.py::test_repeat_new_session
* WebDriverService.cpp:
(WebDriver::WebDriverService::findSessionOrCompleteWithError):
(WebDriver::WebDriverService::newSession):
(WebDriver::WebDriverService::deleteSession):
(WebDriver::WebDriverService::status):
(WebDriver::WebDriverService::setTimeouts):
(WebDriver::WebDriverService::go):
(WebDriver::WebDriverService::getCurrentURL):
(WebDriver::WebDriverService::back):
(WebDriver::WebDriverService::forward):
(WebDriver::WebDriverService::refresh):
(WebDriver::WebDriverService::getTitle):
(WebDriver::WebDriverService::getWindowHandle):
(WebDriver::WebDriverService::setWindowRect):
(WebDriver::WebDriverService::closeWindow):
(WebDriver::WebDriverService::switchToWindow):
(WebDriver::WebDriverService::getWindowHandles):
(WebDriver::WebDriverService::switchToFrame):
(WebDriver::WebDriverService::switchToParentFrame):
(WebDriver::findStrategyAndSelectorOrCompleteWithError):
(WebDriver::WebDriverService::findElement):
(WebDriver::WebDriverService::findElements):
(WebDriver::WebDriverService::findElementFromElement):
(WebDriver::WebDriverService::findElementsFromElement):
(WebDriver::WebDriverService::getActiveElement):
(WebDriver::WebDriverService::isElementSelected):
(WebDriver::WebDriverService::getElementAttribute):
(WebDriver::WebDriverService::getElementText):
(WebDriver::WebDriverService::getElementTagName):
(WebDriver::WebDriverService::getElementRect):
(WebDriver::WebDriverService::isElementEnabled):
(WebDriver::WebDriverService::isElementDisplayed):
(WebDriver::WebDriverService::elementClick):
(WebDriver::WebDriverService::elementClear):
(WebDriver::WebDriverService::elementSendKeys):
(WebDriver::findScriptAndArgumentsOrCompleteWithError):
(WebDriver::WebDriverService::executeScript):
(WebDriver::WebDriverService::executeAsyncScript):
(WebDriver::WebDriverService::getAllCookies):
(WebDriver::WebDriverService::getNamedCookie):
(WebDriver::deserializeCookie):
(WebDriver::WebDriverService::addCookie):
(WebDriver::WebDriverService::deleteCookie):
(WebDriver::WebDriverService::deleteAllCookies):
(WebDriver::WebDriverService::dismissAlert):
(WebDriver::WebDriverService::acceptAlert):
(WebDriver::WebDriverService::getAlertText):
(WebDriver::WebDriverService::sendAlertText):
(WebDriver::WebDriverService::takeScreenshot):
(WebDriver::WebDriverService::takeElementScreenshot):
* WebDriverService.h:

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

3 years ago[JSC] Use JSFixedArray for op_new_array_buffer
utatane.tea@gmail.com [Fri, 1 Dec 2017 08:18:40 +0000 (08:18 +0000)]
[JSC] Use JSFixedArray for op_new_array_buffer
https://bugs.webkit.org/show_bug.cgi?id=180084

Reviewed by Saam Barati.

For op_new_array_buffer, we have a special constant buffer in CodeBlock.
But using JSFixedArray is better because,

1. In DFG, we have special hashing mechanism to avoid duplicating constant buffer from the same CodeBlock.
   If we use JSFixedArray, this is unnecessary since JSFixedArray is handled just as JS constant.

2. In a subsequent patch[1], we would like to support Spread(PhantomNewArrayBuffer). If NewArrayBuffer
   has JSFixedArray, we can just emit a held JSFixedArray.

3. We can reduce length of op_new_array_buffer since JSFixedArray holds this.

4. We can fold NewArrayBufferData into uint64_t. No need to maintain a bag of NewArrayBufferData in DFG.

5. We do not need to look up constant buffer from CodeBlock if buffer data is necessary. Our NewArrayBuffer
   DFG node has JSFixedArray as its cellOperand. This makes materializing PhantomNewArrayBuffer easy, which
   will be introduced in [1].

[1]: https://bugs.webkit.org/show_bug.cgi?id=179762

* bytecode/BytecodeDumper.cpp:
(JSC::BytecodeDumper<Block>::dumpBytecode):
* bytecode/BytecodeList.json:
* bytecode/BytecodeUseDef.h:
(JSC::computeUsesForBytecodeOffset):
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::finishCreation):
* bytecode/CodeBlock.h:
(JSC::CodeBlock::numberOfConstantBuffers const): Deleted.
(JSC::CodeBlock::addConstantBuffer): Deleted.
(JSC::CodeBlock::constantBufferAsVector): Deleted.
(JSC::CodeBlock::constantBuffer): Deleted.
* bytecode/UnlinkedCodeBlock.cpp:
(JSC::UnlinkedCodeBlock::shrinkToFit):
* bytecode/UnlinkedCodeBlock.h:
(JSC::UnlinkedCodeBlock::constantBufferCount): Deleted.
(JSC::UnlinkedCodeBlock::addConstantBuffer): Deleted.
(JSC::UnlinkedCodeBlock::constantBuffer const): Deleted.
(JSC::UnlinkedCodeBlock::constantBuffer): Deleted.
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitNewArray):
(JSC::BytecodeGenerator::addConstantBuffer): Deleted.
* bytecompiler/BytecodeGenerator.h:
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry):
(JSC::DFG::ConstantBufferKey::ConstantBufferKey): Deleted.
(JSC::DFG::ConstantBufferKey::operator== const): Deleted.
(JSC::DFG::ConstantBufferKey::hash const): Deleted.
(JSC::DFG::ConstantBufferKey::isHashTableDeletedValue const): Deleted.
(JSC::DFG::ConstantBufferKey::codeBlock const): Deleted.
(JSC::DFG::ConstantBufferKey::index const): Deleted.
(JSC::DFG::ConstantBufferKeyHash::hash): Deleted.
(JSC::DFG::ConstantBufferKeyHash::equal): Deleted.
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGGraph.cpp:
(JSC::DFG::Graph::dump):
* dfg/DFGGraph.h:
* dfg/DFGNode.h:
(JSC::DFG::Node::hasNewArrayBufferData):
(JSC::DFG::Node::newArrayBufferData):
(JSC::DFG::Node::hasVectorLengthHint):
(JSC::DFG::Node::vectorLengthHint):
(JSC::DFG::Node::indexingType):
(JSC::DFG::Node::hasCellOperand):
(JSC::DFG::Node::OpInfoWrapper::operator=):
(JSC::DFG::Node::OpInfoWrapper::asNewArrayBufferData const):
(JSC::DFG::Node::hasConstantBuffer): Deleted.
(JSC::DFG::Node::startConstant): Deleted.
(JSC::DFG::Node::numConstants): Deleted.
* dfg/DFGOperations.cpp:
* dfg/DFGOperations.h:
* dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::callOperation):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNewArrayBuffer):
* jit/JIT.cpp:
(JSC::JIT::privateCompileMainPass):
* jit/JIT.h:
* jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_new_array_buffer): Deleted.
* jit/JITOperations.cpp:
* jit/JITOperations.h:
* llint/LLIntSlowPaths.cpp:
* llint/LLIntSlowPaths.h:
* llint/LowLevelInterpreter.asm:
* runtime/CommonSlowPaths.cpp:
(JSC::SLOW_PATH_DECL):
* runtime/CommonSlowPaths.h:
* runtime/JSFixedArray.cpp:
(JSC::JSFixedArray::dumpToStream):
* runtime/JSFixedArray.h:
(JSC::JSFixedArray::create):
(JSC::JSFixedArray::get const):
(JSC::JSFixedArray::set):
(JSC::JSFixedArray::buffer const):
(JSC::JSFixedArray::values const):
(JSC::JSFixedArray::length const):
(JSC::JSFixedArray::get): Deleted.

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

3 years agoSpeculative WinCairo fix.
achristensen@apple.com [Fri, 1 Dec 2017 05:36:23 +0000 (05:36 +0000)]
Speculative WinCairo fix.
https://bugs.webkit.org/show_bug.cgi?id=180177

* CMakeLists.txt:
* PlatformWin.cmake:

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

3 years agoREGRESSION (r224791): cookies are shared between ephemeral sessions in the same proce...
achristensen@apple.com [Fri, 1 Dec 2017 05:32:11 +0000 (05:32 +0000)]
REGRESSION (r224791): cookies are shared between ephemeral sessions in the same process pool
https://bugs.webkit.org/show_bug.cgi?id=180235

Reviewed by Joseph Pecoraro.

Source/WebKit:

In r224791 I assumed that uiProcessCookieStorageIdentifier would be empty in the ephemeral session initialization message.
This is not the case.  We did not catch this because almost all of our ephemeral session testing uses the legacyPrivateSessionID.
I add checks for if the SessionID is ephemeral like we already have in WebFrameNetworkingContext::ensureWebsiteDataStoreSession.
I also add an API test that makes sure cookies are not shared between ephemeral sessions the way they are made through the API.

* NetworkProcess/mac/RemoteNetworkingContext.mm:
(WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/CookiePrivateBrowsing.mm: Added.
(-[CookiePrivateBrowsingDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
(TEST):

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

3 years agoExtra PerformanceEntryList entry after iframe navigation
achristensen@apple.com [Fri, 1 Dec 2017 05:27:11 +0000 (05:27 +0000)]
Extra PerformanceEntryList entry after iframe navigation
https://bugs.webkit.org/show_bug.cgi?id=178433

Reviewed by Joseph Pecoraro.

Source/WebCore:

Test: http/tests/security/PerformanceEntryList-parent-only-first-navigation.html

When an iframe is loaded, its main resource load should be reported to the parent frame's PerformanceEntryList.
Subsequent main resource loads should not.

* loader/FrameLoader.h:
(WebCore::FrameLoader::shouldReportResourceTimingToParentFrame):
* loader/ResourceTimingInformation.cpp:
(WebCore::ResourceTimingInformation::addResourceTiming):

LayoutTests:

* http/tests/security/PerformanceEntryList-parent-only-first-navigation-expected.txt: Added.
* http/tests/security/PerformanceEntryList-parent-only-first-navigation.html: Added.
* http/tests/security/resources/navigate-and-postMessage.html: Added.
* http/tests/security/resources/postMessage.html: Added.

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

3 years agoVersioning.
jmarcell@apple.com [Fri, 1 Dec 2017 05:24:19 +0000 (05:24 +0000)]
Versioning.

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

3 years agoSource/WebCore:
zalan@apple.com [Fri, 1 Dec 2017 02:54:29 +0000 (02:54 +0000)]
Source/WebCore:
[Simple line layout] Incorrect repaint rect with vertically shrinking content and bottom-padding.
https://bugs.webkit.org/show_bug.cgi?id=180223
<rdar://problem/34122210>

Reviewed by Simon Fraser.

Repaint rect should be extended all the way to bottom border/padding.

Test: fast/repaint/simple-line-layout-shrinking-content.html

* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::layoutSimpleLines):

LayoutTests:
[Simple line layout] Incorrect repaint rect with vertically shrinking content.
https://bugs.webkit.org/show_bug.cgi?id=180223
<rdar://problem/34122210>

Reviewed by Simon Fraser.

* fast/repaint/simple-line-layout-shrinking-content-expected.txt: Added.
* fast/repaint/simple-line-layout-shrinking-content.html: Added.

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

3 years agoWebAssembly: improve stack trace
jfbastien@apple.com [Fri, 1 Dec 2017 02:41:10 +0000 (02:41 +0000)]
WebAssembly: improve stack trace
https://bugs.webkit.org/show_bug.cgi?id=179343

Reviewed by Saam Barati.

JSTests:

Update the tests to follow the new format. Notably, SHA1 module
hash is now included in traces, and stubs are properly identified.

* wasm/assert.js: Add an assertion which matches regular expressions.
* wasm/function-tests/nameSection.js:
* wasm/function-tests/stack-overflow.js:
(import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.assertOverflows):
(assertOverflows.assertThrows.wasm.1):
(assertOverflows.assertThrows.wasm.0):
(assertOverflows.assertThrows):
(assertOverflows):
* wasm/function-tests/stack-trace.js:
(import.Builder.from.string_appeared_here.assert): Deleted.
* wasm/function-tests/trap-after-cross-instance-call.js:
(wasmFrameCountFromError):
* wasm/function-tests/trap-load-2.js:
(wasmFrameCountFromError):
* wasm/function-tests/trap-load.js:
(wasmFrameCountFromError):

Source/JavaScriptCore:

Stack traces now include:

  - Module name, if provided by the name section.
  - Module SHA1 hash if no name was provided
  - Stub identification, to differentiate from user code
  - Slightly different naming to match design from:
      https://github.com/WebAssembly/design/blob/master/Web.md#developer-facing-display-conventions

* interpreter/StackVisitor.cpp:
(JSC::StackVisitor::Frame::functionName const):
* runtime/StackFrame.cpp:
(JSC::StackFrame::functionName const):
(JSC::StackFrame::visitChildren):
* wasm/WasmIndexOrName.cpp:
(JSC::Wasm::IndexOrName::IndexOrName):
(JSC::Wasm::makeString):
* wasm/WasmIndexOrName.h:
(JSC::Wasm::IndexOrName::nameSection const):
* wasm/WasmModuleInformation.cpp:
(JSC::Wasm::ModuleInformation::ModuleInformation):
* wasm/WasmModuleInformation.h:
* wasm/WasmNameSection.h:
(JSC::Wasm::NameSection::NameSection):
(JSC::Wasm::NameSection::get):
* wasm/WasmNameSectionParser.cpp:
(JSC::Wasm::NameSectionParser::parse):

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

3 years agoMake LegacyCustomProtocolManager optional for network process
commit-queue@webkit.org [Fri, 1 Dec 2017 02:04:07 +0000 (02:04 +0000)]
Make LegacyCustomProtocolManager optional for network process
https://bugs.webkit.org/show_bug.cgi?id=176230

Patch by Stephan Szabo <stephan.szabo@sony.com> on 2017-11-30
Reviewed by Alex Christensen.

.:

* Source/cmake/OptionsWin.cmake:
* Source/cmake/WebKitFeatures.cmake:

Source/JavaScriptCore:

* Configurations/FeatureDefines.xcconfig:

Source/WebCore:

No new tests, only sets up feature define

* Configurations/FeatureDefines.xcconfig:

Source/WebCore/PAL:

* Configurations/FeatureDefines.xcconfig:

Source/WebKit:

* CMakeLists.txt:
* Configurations/FeatureDefines.xcconfig:
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::NetworkProcess):
(WebKit::NetworkProcess::initializeNetworkProcess):
* PlatformGTK.cmake:
* PlatformMac.cmake:
* PlatformWPE.cmake:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::NetworkProcessProxy):
(WebKit::NetworkProcessProxy::didClose):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::setLegacyCustomProtocolManagerClient):
(WebKit::WebProcessPool::registerSchemeForCustomProtocol):
(WebKit::WebProcessPool::unregisterSchemeForCustomProtocol):

Source/WebKitLegacy/mac:

* Configurations/FeatureDefines.xcconfig:

Tools:

* TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

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

3 years agoHTTP server driver is responsible for ensuring the dependencies of HTTP server.
dewei_zhu@apple.com [Fri, 1 Dec 2017 01:52:37 +0000 (01:52 +0000)]
HTTP server driver is responsible for ensuring the dependencies of HTTP server.
https://bugs.webkit.org/show_bug.cgi?id=180231

Reviewed by Stephanie Lewis.

Added the logic to ensure system environment meet the requirments of launching the http server.

* Scripts/webkitpy/benchmark_runner/http_server_driver/simple_http_server_driver.py:
(SimpleHTTPServerDriver.serve):
(SimpleHTTPServerDriver.set_device_id):
(SimpleHTTPServerDriver):
(SimpleHTTPServerDriver._ensure_http_server_dependencies):

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

3 years ago[JSC] Remove easy toRemove & map.remove() use in OAS phase
utatane.tea@gmail.com [Fri, 1 Dec 2017 01:02:47 +0000 (01:02 +0000)]
[JSC] Remove easy toRemove & map.remove() use in OAS phase
https://bugs.webkit.org/show_bug.cgi?id=180208

Reviewed by Mark Lam.

Source/JavaScriptCore:

In this patch, we replace Vector<> toRemove & map.remove loop with removeIf,
to optimize this common pattern. This patch only modifies apparent ones.
But we can apply this refactoring further to OAS phase in the future.

One thing we should care is that predicate of removeIf should not touch the
removing set itself. In this patch, we apply this change to (1) apparently
correct one and (2) things in DFG OAS phase since it is very slow.

* b3/B3MoveConstants.cpp:
* dfg/DFGObjectAllocationSinkingPhase.cpp:

Source/WTF:

* wtf/HashMap.h:
(WTF::X>::removeIf):
* wtf/HashSet.h:
(WTF::V>::removeIf):
* wtf/HashTable.h:
(WTF::KeyTraits>::removeIf):

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

3 years ago[Cocoa] Fix CVPixelBuffer leak
commit-queue@webkit.org [Fri, 1 Dec 2017 00:57:13 +0000 (00:57 +0000)]
[Cocoa] Fix CVPixelBuffer leak
https://bugs.webkit.org/show_bug.cgi?id=180224

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-11-30
Reviewed by Youenn Fablet.

* platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.cpp:
(WebCore::RealtimeIncomingVideoSourceCocoa::pixelBufferFromVideoFrame):
Adopt the newly created pixel buffer.

(WebCore::RealtimeIncomingVideoSourceCocoa::OnFrame):
Release the format description as soon as we are done with it. Otherwise
we could have bailed before releasing it.

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

3 years agoUnreviewed build fix, suppress deprecation warnings.
ryanhaddad@apple.com [Fri, 1 Dec 2017 00:54:41 +0000 (00:54 +0000)]
Unreviewed build fix, suppress deprecation warnings.

* Shared/mac/SandboxExtensionMac.mm:
(WebKit::SandboxExtensionImpl::sandboxExtensionForType):

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

3 years agoExpose SPI didClickAlternativePresentationButtonWithUserInfo on iOS
dbates@webkit.org [Fri, 1 Dec 2017 00:51:14 +0000 (00:51 +0000)]
Expose SPI didClickAlternativePresentationButtonWithUserInfo on iOS
https://bugs.webkit.org/show_bug.cgi?id=180218
<rdar://problem/35782555>

Reviewed by Alex Christensen.

We want to support the SPI didClickAlternativePresentationButtonWithUserInfo on Cocoa platforms.

* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/Cocoa/UIDelegate.h:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::didClickAlternativePresentationButton):

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

3 years ago[Cocoa] Web Automation: _WKAutomationSessionConfiguration leak
commit-queue@webkit.org [Fri, 1 Dec 2017 00:40:12 +0000 (00:40 +0000)]
[Cocoa] Web Automation: _WKAutomationSessionConfiguration leak
https://bugs.webkit.org/show_bug.cgi?id=180222

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-11-30
Reviewed by Brian Burg.

* UIProcess/Cocoa/AutomationClient.mm:
(WebKit::AutomationClient::requestAutomationSessionWithCapabilities):

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

3 years agoUnreviewed build fix, remove executable property from a header file.
ryanhaddad@apple.com [Fri, 1 Dec 2017 00:33:00 +0000 (00:33 +0000)]
Unreviewed build fix, remove executable property from a header file.

* include/KHR/khrplatform.h: Removed property svn:executable.

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

3 years agoFix some NSOperationQueue leaks
commit-queue@webkit.org [Fri, 1 Dec 2017 00:18:08 +0000 (00:18 +0000)]
Fix some NSOperationQueue leaks
https://bugs.webkit.org/show_bug.cgi?id=180221

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-11-30
Reviewed by Wenson Hsieh.

Source/WebKit:

* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::performDragOperation):

Source/WebKitLegacy/mac:

* WebView/WebView.mm:
(-[WebView performDragOperation:]):

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

3 years agoUnreviewed, rolling out r225362.
commit-queue@webkit.org [Fri, 1 Dec 2017 00:14:34 +0000 (00:14 +0000)]
Unreviewed, rolling out r225362.
https://bugs.webkit.org/show_bug.cgi?id=180225

removeIf predicate function can touch remove target set
(Requested by yusukesuzuki on #webkit).

Reverted changeset:

"[JSC] Remove easy toRemove & map.remove() use"
https://bugs.webkit.org/show_bug.cgi?id=180208
https://trac.webkit.org/changeset/225362

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

3 years agoWeb Automation: computeElementLayout does not correctly translate iframe client coord...
bburg@apple.com [Fri, 1 Dec 2017 00:11:39 +0000 (00:11 +0000)]
Web Automation: computeElementLayout does not correctly translate iframe client coordinates to main frame coordinates
https://bugs.webkit.org/show_bug.cgi?id=180213
<rdar://problem/30260141>

Reviewed by Simon Fraser.

The current implementation computes points in terms of the frame in which the element is located.
However, WebDriver expects coordinates to be relative to the top-level document since
these coordinates are used for generating click events, among other things.

To convert from frame client coordinates to main frame client coordinates, round-trip
both inViewCenterPoint and elementBounds to root view coordinates and back
to the main frame's contents/client coordinates. Then convert this to page coordinates if needed.

This progresses several tests in the Selenium Python test suite:

 - event_firing_webdriver_tests.py::test_should_fire_navigation_events
 - frame_switching_tests.py::testShouldBeAbleToClickInAFrameThatRewritesTopWindowLocation
 - frame_switching_tests.py::testShouldBeAbleToSwitchToTheTopIfTheFrameIsDeletedFromUnderUs
 - frame_switching_tests.py::testShouldBeAbleToSwitchToTheTopIfTheFrameIsDeletedFromUnderUsWithFrameIndex
 - frame_switching_tests.py::testShouldBeAbleToSwitchToTheTopIfTheFrameIsDeletedFromUnderUsWithWebelement
 - frame_switching_tests.py::testShouldNotBeAbleToDoAnythingTheFrameIsDeletedFromUnderUs
 - position_and_size_tests.py::testShouldGetCoordinatesOfAnInvisibleElement

* WebProcess/Automation/WebAutomationSessionProxy.cpp:
(WebKit::WebAutomationSessionProxy::computeElementLayout):
Get both the frame and main frame FrameViews and convert coordinates to the root view.
This is somewhat lossy as clientToDocument* deals with FloatPoints but contentsToRootView
deals with IntPoints. For the purposes of WebDriver, lossiness is not a problem since
integer values are expected anyway.

The imperative nature of the coordinate calculations is difficult to debug, so I converted
this function to only assign to each variable once.

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

3 years agoImprove filter logging
simon.fraser@apple.com [Fri, 1 Dec 2017 00:05:11 +0000 (00:05 +0000)]
Improve filter logging
https://bugs.webkit.org/show_bug.cgi?id=180182

Reviewed by Sam Weinig.

Source/WebCore:

Add a parameter to FilterEffect::externalRepresentation() so that we can log extra
data without breaking layout tests.

Add TextStream output for ColorSpace.

Improve logging of FEComponentTransfer ComponentTransferFunctions by logging the data
that's appropriate for the function type, and rebaseline affected tests.

* platform/graphics/Color.cpp:
(WebCore::operator<<):
* platform/graphics/Color.h:
* platform/graphics/filters/FEBlend.cpp:
(WebCore::FEBlend::externalRepresentation const):
* platform/graphics/filters/FEBlend.h:
* platform/graphics/filters/FEColorMatrix.cpp:
(WebCore::FEColorMatrix::externalRepresentation const):
* platform/graphics/filters/FEColorMatrix.h:
* platform/graphics/filters/FEComponentTransfer.cpp:
(WebCore::operator<<):
(WebCore::FEComponentTransfer::externalRepresentation const):
* platform/graphics/filters/FEComponentTransfer.h:
* platform/graphics/filters/FEComposite.cpp:
(WebCore::FEComposite::externalRepresentation const):
* platform/graphics/filters/FEComposite.h:
* platform/graphics/filters/FEConvolveMatrix.cpp:
(WebCore::FEConvolveMatrix::externalRepresentation const):
* platform/graphics/filters/FEConvolveMatrix.h:
* platform/graphics/filters/FEDiffuseLighting.cpp:
(WebCore::FEDiffuseLighting::externalRepresentation const):
* platform/graphics/filters/FEDiffuseLighting.h:
* platform/graphics/filters/FEDisplacementMap.cpp:
(WebCore::FEDisplacementMap::externalRepresentation const):
* platform/graphics/filters/FEDisplacementMap.h:
* platform/graphics/filters/FEDropShadow.cpp:
(WebCore::FEDropShadow::externalRepresentation const):
* platform/graphics/filters/FEDropShadow.h:
* platform/graphics/filters/FEFlood.cpp:
(WebCore::FEFlood::externalRepresentation const):
* platform/graphics/filters/FEFlood.h:
* platform/graphics/filters/FEGaussianBlur.cpp:
(WebCore::FEGaussianBlur::externalRepresentation const):
* platform/graphics/filters/FEGaussianBlur.h:
* platform/graphics/filters/FEMerge.cpp:
(WebCore::FEMerge::externalRepresentation const):
* platform/graphics/filters/FEMerge.h:
* platform/graphics/filters/FEMorphology.cpp:
(WebCore::FEMorphology::externalRepresentation const):
* platform/graphics/filters/FEMorphology.h:
* platform/graphics/filters/FEOffset.cpp:
(WebCore::FEOffset::externalRepresentation const):
* platform/graphics/filters/FEOffset.h:
* platform/graphics/filters/FESpecularLighting.cpp:
(WebCore::FESpecularLighting::externalRepresentation const):
* platform/graphics/filters/FESpecularLighting.h:
* platform/graphics/filters/FETile.cpp:
(WebCore::FETile::externalRepresentation const):
* platform/graphics/filters/FETile.h:
* platform/graphics/filters/FETurbulence.cpp:
(WebCore::FETurbulence::externalRepresentation const):
* platform/graphics/filters/FETurbulence.h:
* platform/graphics/filters/FilterEffect.cpp:
(WebCore::FilterEffect::externalRepresentation const):
(WebCore::operator<<):
* platform/graphics/filters/FilterEffect.h:
* platform/graphics/filters/SourceAlpha.cpp:
(WebCore::SourceAlpha::externalRepresentation const):
* platform/graphics/filters/SourceAlpha.h:
* platform/graphics/filters/SourceGraphic.cpp:
(WebCore::SourceGraphic::externalRepresentation const):
* platform/graphics/filters/SourceGraphic.h:
* rendering/svg/RenderSVGResourceFilter.cpp:
(WebCore::RenderSVGResourceFilter::applyResource):
* svg/graphics/filters/SVGFEImage.cpp:
(WebCore::FEImage::externalRepresentation const):
* svg/graphics/filters/SVGFEImage.h:

LayoutTests:

Improve logging of FEComponentTransfer ComponentTransferFunctions by logging the data
that's appropriate for the function type, and rebaseline affected tests.

* css3/filters/effect-reference-expected.txt:
* css3/filters/effect-reference-hw-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/filters-comptran-01-b-expected.txt:
* platform/mac/svg/custom/feComponentTransfer-Discrete-expected.txt:
* platform/mac/svg/custom/feComponentTransfer-Gamma-expected.txt:
* platform/mac/svg/custom/feComponentTransfer-Linear-expected.txt:
* platform/mac/svg/custom/feComponentTransfer-Table-expected.txt:
* svg/filters/filter-refresh-expected.txt:

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

3 years ago[JSC] Use AllocatorIfExists for MaterializeNewObject
utatane.tea@gmail.com [Thu, 30 Nov 2017 23:56:17 +0000 (23:56 +0000)]
[JSC] Use AllocatorIfExists for MaterializeNewObject
https://bugs.webkit.org/show_bug.cgi?id=180189

Reviewed by Filip Pizlo.

I don't think anyone guarantees this allocator exists at this phase.
And nullptr allocator just works here. We change AllocatorForMode
to AllocatorIfExists to accept nullptr for allocator.

* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeNewObject):

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

3 years agoUnreviewed, unskip service worker test that no longer times out after r225346.
cdumez@apple.com [Thu, 30 Nov 2017 23:50:15 +0000 (23:50 +0000)]
Unreviewed, unskip service worker test that no longer times out after r225346.

LayoutTests/imported/w3c:

* web-platform-tests/service-workers/service-worker/skip-waiting-using-registration.https-expected.txt:
* web-platform-tests/service-workers/service-worker/skip-waiting-without-client.https-expected.txt:

LayoutTests:

* TestExpectations:

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

3 years agoLet's scramble MacroAssemblerCodePtr values.
mark.lam@apple.com [Thu, 30 Nov 2017 23:47:35 +0000 (23:47 +0000)]
Let's scramble MacroAssemblerCodePtr values.
https://bugs.webkit.org/show_bug.cgi?id=180169
<rdar://problem/35758340>

Reviewed by Filip Pizlo, Saam Barati, and JF Bastien.

Source/JavaScriptCore:

1. MacroAssemblerCodePtr now stores a ScrambledPtr instead of a void*.

2. MacroAssemblerCodePtr's executableAddress() and dataLocation() now take a
   template argument type that will be used to cast the result.  This makes the
   client code that uses these functions a little less verbose.

3. Change the code base in general to minimize passing void* code pointers around.
   We now pass MacroAssemblerCodePtr as much as possible, and descramble it only
   at the last moment when we need the underlying code pointer.

4. Added some MasmScrambledPtr paranoid asserts that are disabled (not built) by
   default.  I'm leaving them in because they are instrumental in finding bugs
   where not all MacroAssemblerCodePtr values were not scrambled as expected.
   I expect them to be useful in the near future as we add more scrambling.

5. Also disable the casting operator on MacroAssemblerCodePtr (except for
   explicit casts to a boolean).  This ensures that clients will always explicitly
   use scrambledBits() or executableAddress() to get a value based on which value
   they actually need.

5. Added currentThread() id to the logging in LLIntSlowPath trace functions.
   This was helpful when debugging tests that ran multiple VMs concurrently on
   different threads.

MacroAssemblerCodePtr is currently supported on 64-bit builds (including the
CLoop).  It is not yet supported in 32-bit and Windows because we don't
currently have a way to read a global variable from their LLInt code.

* assembler/AbstractMacroAssembler.h:
(JSC::AbstractMacroAssembler::differenceBetweenCodePtr):
(JSC::AbstractMacroAssembler::linkPointer):
* assembler/CodeLocation.h:
(JSC::CodeLocationCommon::instructionAtOffset):
(JSC::CodeLocationCommon::labelAtOffset):
(JSC::CodeLocationCommon::jumpAtOffset):
(JSC::CodeLocationCommon::callAtOffset):
(JSC::CodeLocationCommon::nearCallAtOffset):
(JSC::CodeLocationCommon::dataLabelPtrAtOffset):
(JSC::CodeLocationCommon::dataLabel32AtOffset):
(JSC::CodeLocationCommon::dataLabelCompactAtOffset):
(JSC::CodeLocationCommon::convertibleLoadAtOffset):
* assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::finalizeCodeWithDisassembly):
* assembler/LinkBuffer.h:
(JSC::LinkBuffer::link):
(JSC::LinkBuffer::patch):
* assembler/MacroAssemblerCodeRef.cpp:
(JSC::MacroAssemblerCodePtr::initialize):
* assembler/MacroAssemblerCodeRef.h:
(JSC::FunctionPtr::FunctionPtr):
(JSC::FunctionPtr::value const):
(JSC::FunctionPtr::executableAddress const):
(JSC::ReturnAddressPtr::ReturnAddressPtr):
(JSC::ReturnAddressPtr::value const):
(JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
(JSC::MacroAssemblerCodePtr::createFromExecutableAddress):
(JSC::MacroAssemblerCodePtr::scrambledPtr const):
(JSC::MacroAssemblerCodePtr:: const):
(JSC::MacroAssemblerCodePtr::operator! const):
(JSC::MacroAssemblerCodePtr::operator bool const):
(JSC::MacroAssemblerCodePtr::operator== const):
(JSC::MacroAssemblerCodePtr::hash const):
(JSC::MacroAssemblerCodePtr::emptyValue):
(JSC::MacroAssemblerCodePtr::deletedValue):
(JSC::MacroAssemblerCodePtr::executableAddress const): Deleted.
(JSC::MacroAssemblerCodePtr::dataLocation const): Deleted.
* b3/B3LowerMacros.cpp:
* b3/testb3.cpp:
(JSC::B3::testInterpreter):
* dfg/DFGDisassembler.cpp:
(JSC::DFG::Disassembler::dumpDisassembly):
* dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::link):
(JSC::DFG::JITCompiler::compileFunction):
* dfg/DFGOperations.cpp:
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::emitSwitchIntJump):
(JSC::DFG::SpeculativeJIT::emitSwitchImm):
(JSC::DFG::SpeculativeJIT::emitSwitchCharStringJump):
(JSC::DFG::SpeculativeJIT::emitSwitchChar):
* dfg/DFGSpeculativeJIT.h:
* disassembler/Disassembler.cpp:
(JSC::disassemble):
* disassembler/UDis86Disassembler.cpp:
(JSC::tryToDisassembleWithUDis86):
* ftl/FTLCompile.cpp:
(JSC::FTL::compile):
* ftl/FTLJITCode.cpp:
(JSC::FTL::JITCode::executableAddressAtOffset):
* ftl/FTLLink.cpp:
(JSC::FTL::link):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileMathIC):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstruct):
(JSC::FTL::DFG::LowerDFGToB3::compileTailCall):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargsSpread):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargs):
* interpreter/InterpreterInlines.h:
(JSC::Interpreter::getOpcodeID):
* jit/JITArithmetic.cpp:
(JSC::JIT::emitMathICFast):
(JSC::JIT::emitMathICSlow):
* jit/JITCode.cpp:
(JSC::JITCodeWithCodeRef::executableAddressAtOffset):
(JSC::JITCodeWithCodeRef::dataAddressAtOffset):
(JSC::JITCodeWithCodeRef::offsetOf):
* jit/JITDisassembler.cpp:
(JSC::JITDisassembler::dumpDisassembly):
* jit/PCToCodeOriginMap.cpp:
(JSC::PCToCodeOriginMap::PCToCodeOriginMap):
* jit/Repatch.cpp:
(JSC::ftlThunkAwareRepatchCall):
* jit/ThunkGenerators.cpp:
(JSC::virtualThunkFor):
(JSC::boundThisNoArgsFunctionCallGenerator):
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::llint_trace_operand):
(JSC::LLInt::llint_trace_value):
(JSC::LLInt::handleHostCall):
(JSC::LLInt::setUpCall):
* llint/LowLevelInterpreter64.asm:
* offlineasm/cloop.rb:
* runtime/InitializeThreading.cpp:
(JSC::initializeThreading):
* wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::complete):
* wasm/WasmCallee.h:
(JSC::Wasm::Callee::entrypoint const):
* wasm/WasmCodeBlock.cpp:
(JSC::Wasm::CodeBlock::CodeBlock):
* wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::work):
* wasm/js/WasmToJS.cpp:
(JSC::Wasm::wasmToJS):
* wasm/js/WebAssemblyFunction.cpp:
(JSC::callWebAssemblyFunction):
* wasm/js/WebAssemblyFunction.h:
* wasm/js/WebAssemblyWrapperFunction.cpp:
(JSC::WebAssemblyWrapperFunction::create):

Source/WTF:

Introduce a ScrambledPtr class to facilitate scrambling.

* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/ScrambledPtr.cpp: Added.
(WTF::makeScrambledPtrKey):
* wtf/ScrambledPtr.h: Added.
(WTF::ScrambledPtr::ScrambledPtr):
(WTF::ScrambledPtr::paranoidAssertIsScrambled const):
(WTF::ScrambledPtr::paranoidAssertIsNotScrambled const):
(WTF::ScrambledPtr:: const):
(WTF::ScrambledPtr::operator-> const):
(WTF::ScrambledPtr::scrambledBits const):
(WTF::ScrambledPtr::operator! const):
(WTF::ScrambledPtr::operator bool const):
(WTF::ScrambledPtr::operator== const):
(WTF::ScrambledPtr::operator==):
(WTF::ScrambledPtr::scramble):
(WTF::ScrambledPtr::descramble):

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

3 years ago[JSC] Remove easy toRemove & map.remove() use
utatane.tea@gmail.com [Thu, 30 Nov 2017 23:44:24 +0000 (23:44 +0000)]
[JSC] Remove easy toRemove & map.remove() use
https://bugs.webkit.org/show_bug.cgi?id=180208

Reviewed by Mark Lam.

Source/JavaScriptCore:

In this patch, we replace Vector<> toRemove & map.remove loop with removeIf,
to optimize this common pattern. This patch only modifies apparent ones.
But we can apply this refactoring further to OAS phase in the future.

* b3/B3MoveConstants.cpp:
* dfg/DFGArgumentsEliminationPhase.cpp:
* dfg/DFGObjectAllocationSinkingPhase.cpp:
* wasm/WasmSignature.cpp:
(JSC::Wasm::SignatureInformation::tryCleanup):

Source/WTF:

Return bool from removeIf. It is true if removeIf removes at least one entry.
This interface is similar to existing HashSet::remove, which returns true
if it actually removes entry.

* wtf/HashMap.h:
(WTF::X>::removeIf):
* wtf/HashSet.h:
(WTF::V>::removeIf):
* wtf/HashTable.h:
(WTF::KeyTraits>::removeIf):

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

3 years ago[WinCairo] Cannot build without Internet connection
commit-queue@webkit.org [Thu, 30 Nov 2017 23:39:14 +0000 (23:39 +0000)]
[WinCairo] Cannot build without Internet connection
https://bugs.webkit.org/show_bug.cgi?id=180068

Patch by Basuke Suzuki <Basuke.Suzuki@sony.com> on 2017-11-30
Reviewed by Alex Christensen

With no Internet connection, if libraries has been downloaded
before, trust that version and keep building.

* Scripts/download-latest-github-release.py:
(Status):
(current_release):
(has_latest_release):
(main):

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

3 years ago[JSC] Use getEffectiveAddress more in JSC
utatane.tea@gmail.com [Thu, 30 Nov 2017 23:22:18 +0000 (23:22 +0000)]
[JSC] Use getEffectiveAddress more in JSC
https://bugs.webkit.org/show_bug.cgi?id=180154

Reviewed by Mark Lam.

We can use MacroAssembler::getEffectiveAddress for stack height calculation.
And we also add MacroAssembler::negPtr(src, dest) variation.

* assembler/MacroAssembler.h:
(JSC::MacroAssembler::negPtr):
* assembler/MacroAssemblerARM.h:
(JSC::MacroAssemblerARM::neg32):
* assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::neg32):
(JSC::MacroAssemblerARM64::neg64):
* assembler/MacroAssemblerARMv7.h:
(JSC::MacroAssemblerARMv7::neg32):
* assembler/MacroAssemblerMIPS.h:
(JSC::MacroAssemblerMIPS::neg32):
* assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::neg32):
* assembler/MacroAssemblerX86_64.h:
(JSC::MacroAssemblerX86_64::neg64):
* dfg/DFGThunks.cpp:
(JSC::DFG::osrEntryThunkGenerator):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargsSpread):
* jit/SetupVarargsFrame.cpp:
(JSC::emitSetVarargsFrame):

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

3 years agoUnreviewed build fix, removed unused lambda captures.
ryanhaddad@apple.com [Thu, 30 Nov 2017 23:17:34 +0000 (23:17 +0000)]
Unreviewed build fix, removed unused lambda captures.

* workers/service/context/ServiceWorkerThread.cpp:
(WebCore::ServiceWorkerThread::postFetchTask):
(WebCore::ServiceWorkerThread::postMessageToServiceWorkerGlobalScope):

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

3 years agoWKURLSchemeHandler.request should include HTTPBody
achristensen@apple.com [Thu, 30 Nov 2017 23:16:19 +0000 (23:16 +0000)]
WKURLSchemeHandler.request should include HTTPBody
https://bugs.webkit.org/show_bug.cgi?id=180220

Reviewed by Brady Eidson.

Source/WebKit:

* Shared/URLSchemeTaskParameters.cpp: Added.
(WebKit::URLSchemeTaskParameters::encode const):
(WebKit::URLSchemeTaskParameters::decode):
* Shared/URLSchemeTaskParameters.h: Added.
* UIProcess/API/Cocoa/WKURLSchemeTask.mm:
(-[WKURLSchemeTaskImpl request]):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::startURLSchemeTask):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/WebURLSchemeHandler.cpp:
(WebKit::WebURLSchemeHandler::startTask):
* UIProcess/WebURLSchemeHandler.h:
* UIProcess/WebURLSchemeTask.cpp:
(WebKit::WebURLSchemeTask::create):
(WebKit::WebURLSchemeTask::WebURLSchemeTask):
* UIProcess/WebURLSchemeTask.h:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebPage/WebURLSchemeTaskProxy.cpp:
(WebKit::WebURLSchemeTaskProxy::startLoading):

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/_WKInputDelegate.mm:
(-[FormSubmissionDelegate webView:startURLSchemeTask:]):

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

3 years agoMove SWClientConnection class out of server/ folder
cdumez@apple.com [Thu, 30 Nov 2017 23:06:34 +0000 (23:06 +0000)]
Move SWClientConnection class out of server/ folder
https://bugs.webkit.org/show_bug.cgi?id=180217

Reviewed by Brady Eidson.

Move SWClientConnection class out of server/ folder since the client connection
lives in the WebProcess, not the Storage process.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* workers/service/SWClientConnection.cpp: Renamed from Source/WebCore/workers/service/server/SWClientConnection.cpp.
(WebCore::SWClientConnection::scheduleJob):
(WebCore::SWClientConnection::finishedFetchingScript):
(WebCore::SWClientConnection::failedFetchingScript):
(WebCore::SWClientConnection::jobRejectedInServer):
(WebCore::SWClientConnection::registrationJobResolvedInServer):
(WebCore::SWClientConnection::unregistrationJobResolvedInServer):
(WebCore::SWClientConnection::startScriptFetchForServer):
(WebCore::SWClientConnection::postMessageToServiceWorkerClient):
(WebCore::SWClientConnection::forEachContainer):
(WebCore::SWClientConnection::updateRegistrationState):
(WebCore::SWClientConnection::updateWorkerState):
(WebCore::SWClientConnection::fireUpdateFoundEvent):
(WebCore::SWClientConnection::notifyClientsOfControllerChange):
* workers/service/SWClientConnection.h: Renamed from Source/WebCore/workers/service/server/SWClientConnection.h.
* workers/service/ServiceWorkerContainer.cpp:

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

3 years agojsc shell's flashHeapAccess() should not do JS work after releasing access to the...
mark.lam@apple.com [Thu, 30 Nov 2017 22:51:59 +0000 (22:51 +0000)]
jsc shell's flashHeapAccess() should not do JS work after releasing access to the heap.
https://bugs.webkit.org/show_bug.cgi?id=180219
<rdar://problem/35696536>

Reviewed by Filip Pizlo.

JSTests:

* stress/regress-180219.js: Added.

Source/JavaScriptCore:

* jsc.cpp:
(functionFlashHeapAccess):

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

3 years agoServiceWorkerThread's m_extendedEvents gets destroyed on the wrong thread
cdumez@apple.com [Thu, 30 Nov 2017 22:35:25 +0000 (22:35 +0000)]
ServiceWorkerThread's m_extendedEvents gets destroyed on the wrong thread
https://bugs.webkit.org/show_bug.cgi?id=180216

Reviewed by Brady Eidson.

ServiceWorkerThread's m_extendedEvents gets destroyed on the wrong thread. Those events live on the worker
thread so we should destroy them on the worker thread, not the main thread. To address the issue, m_extendedEvents
was moved to ServiceWorkerGlobalScope, which actually lives on the right thread.

* workers/service/ServiceWorkerGlobalScope.cpp:
(WebCore::ServiceWorkerGlobalScope::updateExtendedEventsSet):
* workers/service/ServiceWorkerGlobalScope.h:
* workers/service/context/ServiceWorkerThread.cpp:
(WebCore::ServiceWorkerThread::postFetchTask):
(WebCore::ServiceWorkerThread::postMessageToServiceWorkerGlobalScope):
(WebCore::ServiceWorkerThread::updateExtendedEventsSet): Deleted.
* workers/service/context/ServiceWorkerThread.h:
(WebCore::ServiceWorkerThread::hasPendingEvents const): Deleted.

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

3 years agoSkip WebGL on iOS while working out what ANGLE has broken.
dino@apple.com [Thu, 30 Nov 2017 22:25:52 +0000 (22:25 +0000)]
Skip WebGL on iOS while working out what ANGLE has broken.

* platform/ios/TestExpectations:

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

3 years agoMarked http/tests/loading/resourceLoadStatistics/partitioned-and-unpartitioned-cookie...
jlewis3@apple.com [Thu, 30 Nov 2017 22:21:31 +0000 (22:21 +0000)]
Marked http/tests/loading/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-deletion.html as flaky on High Sierra.
https://bugs.webkit.org/show_bug.cgi?id=179644

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

3 years agoMarked imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-onnegotiationneeded...
jlewis3@apple.com [Thu, 30 Nov 2017 21:49:05 +0000 (21:49 +0000)]
Marked imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-onnegotiationneeded.html as flak on macOS.
https://bugs.webkit.org/show_bug.cgi?id=176078

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

3 years agoSWServerToContextConnection / SWServerWorker do not need to be ThreadSafeRefCounted
cdumez@apple.com [Thu, 30 Nov 2017 21:42:29 +0000 (21:42 +0000)]
SWServerToContextConnection / SWServerWorker do not need to be ThreadSafeRefCounted
https://bugs.webkit.org/show_bug.cgi?id=180214

Reviewed by Brady Eidson.

SWServerToContextConnection / SWServerWorker do not need to be ThreadSafeRefCounted.
RefCounted is sufficient as there is no longer any multithreading on server side.

* workers/service/server/SWServerToContextConnection.h:
* workers/service/server/SWServerWorker.h:

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

3 years agoServiceWorkerGlobalScope::skipWaiting() should resolve its promise
cdumez@apple.com [Thu, 30 Nov 2017 21:41:59 +0000 (21:41 +0000)]
ServiceWorkerGlobalScope::skipWaiting() should resolve its promise
https://bugs.webkit.org/show_bug.cgi?id=180204

Reviewed by Brady Eidson.

LayoutTests/imported/w3c:

Rebaseline test which uses skipWaiting().

* web-platform-tests/service-workers/service-worker/claim-with-redirect.https-expected.txt:

Source/WebCore:

ServiceWorkerGlobalScope::skipWaiting() should resolve its promise, even if it is not
implemented yet. For now, always reject the promise.

* workers/service/ServiceWorkerGlobalScope.cpp:
(WebCore::ServiceWorkerGlobalScope::skipWaiting):

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

3 years agoMark a few heap-allocated service worker types as WTF_MAKE_FAST_ALLOCATED
cdumez@apple.com [Thu, 30 Nov 2017 21:16:22 +0000 (21:16 +0000)]
Mark a few heap-allocated service worker types as WTF_MAKE_FAST_ALLOCATED
https://bugs.webkit.org/show_bug.cgi?id=180212

Reviewed by Geoffrey Garen.

Mark a few heap-allocated service worker types as WTF_MAKE_FAST_ALLOCATED for performance.

* workers/service/server/SWOriginStore.h:
* workers/service/server/SWServer.h:
* workers/service/server/SWServerJobQueue.h:
* workers/service/server/SWServerRegistration.h:

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

3 years agoMake WorkerThread lifetime much more predictable.
beidson@apple.com [Thu, 30 Nov 2017 21:01:12 +0000 (21:01 +0000)]
Make WorkerThread lifetime much more predictable.
https://bugs.webkit.org/show_bug.cgi?id=180203

Reviewed by Chris Dumez.

No new tests (Fixes flakiness in existing and future tests).

The family of classes related to Workers has a complicated ownership model.

For Dedicated Workers, the WorkerThread object is owned by the WorkerMessagingProxy,
which manages its own lifetime. Additionally, other object(s) have raw C++ references
to it, and the expected lifetimes are described in comments scattered through a few files.

What it boils down to is that the "Worker" DOM object - which lives on the main thread -
is the key to the proper destruction of all of these objects.

For ServiceWorkers running in their own context process, there is no "Worker" on the main thread.

As a result, ServiceWorkers can get into a situation where their WorkerThread can be destroyed before
their ServiceWorkerGlobalScope is destroyed on the running background thread.

There's no reason to not have WorkerThread guarantee its own lifetime until its background thread
has actually completed.

* workers/WorkerThread.cpp:
(WebCore::WorkerThread::workerThread): Protect the WorkerThread object during the entire runtime
  of the background thread itself, and release that protection on the main thread.
* workers/WorkerThread.h:

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

3 years ago[DFG][FTL] operationHasIndexedProperty does not consider negative int32_t
utatane.tea@gmail.com [Thu, 30 Nov 2017 20:48:53 +0000 (20:48 +0000)]
[DFG][FTL] operationHasIndexedProperty does not consider negative int32_t
https://bugs.webkit.org/show_bug.cgi?id=180190

Reviewed by Mark Lam.

JSTests:

* stress/operation-in-may-have-negative-int32-array-storage.js: Added.
(shouldBe):
(test1):
* stress/operation-in-may-have-negative-int32-contiguous-array.js: Added.
(shouldBe):
(test1):
* stress/operation-in-may-have-negative-int32-double-array.js: Added.
(shouldBe):
(test1):
* stress/operation-in-may-have-negative-int32-generic-array.js: Added.
(shouldBe):
(test1):
* stress/operation-in-may-have-negative-int32-int32-array.js: Added.
(shouldBe):
(test1):
* stress/operation-in-may-have-negative-int32.js: Added.
(shouldBe):
(test2):
* stress/operation-in-negative-int32-cast.js: Added.
(shouldBe):
(test1):

Source/JavaScriptCore:

If DFG HasIndexedProperty node observes negative index, it goes to a slow
path by calling operationHasIndexedProperty. The problem is that
operationHasIndexedProperty does not account negative index. Negative index
was used as uint32 array index.

In this patch we add a path for negative index in operationHasIndexedProperty.
And rename it to operationHasIndexedPropertyByInt to make intension clear.
We also move operationHasIndexedPropertyByInt from JITOperations to DFGOperations
since it is only used in DFG and FTL.

While fixing this bug, we found that our op_in does not record OutOfBound feedback.
This causes repeated OSR exit and significantly regresses the performance. We opened
a bug to track this issue[1].

[1]: https://bugs.webkit.org/show_bug.cgi?id=180192

* dfg/DFGOperations.cpp:
* dfg/DFGOperations.h:
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileHasIndexedProperty):
* jit/JITOperations.cpp:
* jit/JITOperations.h:

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

3 years agoPopulate self.registration.installing/waiting/active inside service workers
cdumez@apple.com [Thu, 30 Nov 2017 20:40:04 +0000 (20:40 +0000)]
Populate self.registration.installing/waiting/active inside service workers
https://bugs.webkit.org/show_bug.cgi?id=180168

Reviewed by Brady Eidson.

LayoutTests/imported/w3c:

Rebaseline a couple of WPT that now pass for checks.

* web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/registration-attribute.https-expected.txt:
* web-platform-tests/service-workers/service-worker/navigation-redirect.https-expected.txt:

Source/WebCore:

Populate self.registration.installing/waiting/active inside service workers.
Also make sure the ServiceWorker's state properly gets updated inside
service workers.

No new tests, extended existing test for self.registration.

* workers/service/ServiceWorker.cpp:
(WebCore::ServiceWorker::scheduleTaskToUpdateState):
* workers/service/context/SWContextManager.cpp:
(WebCore::SWContextManager::forEachServiceWorkerThread):
* workers/service/context/SWContextManager.h:
* workers/service/context/ServiceWorkerThread.cpp:
(WebCore::ServiceWorkerThread::fireInstallEvent):
(WebCore::ServiceWorkerThread::fireActivateEvent):
* workers/service/server/SWClientConnection.cpp:
(WebCore::SWClientConnection::updateRegistrationState):
(WebCore::SWClientConnection::updateWorkerState):
(WebCore::SWClientConnection::fireUpdateFoundEvent):
* workers/service/server/SWClientConnection.h:

Source/WTF:

Add CrossThreadCopier support for std::optional<>.

* wtf/CrossThreadCopier.h:

LayoutTests:

Extend layout test coverage.

* http/tests/workers/service/resources/self_registration-worker.js:
* http/tests/workers/service/self_registration-expected.txt:

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

3 years agoUpdate ANGLE
dino@apple.com [Thu, 30 Nov 2017 20:39:54 +0000 (20:39 +0000)]
Update ANGLE
https://bugs.webkit.org/show_bug.cgi?id=180177
<rdar://problem/35774734>

Reviewed by Alex Christensen.

Huge list of changed files omitted.

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

3 years agoUnreviewed, unskip a few Service Workers tests that no longer seem to be flaky.
cdumez@apple.com [Thu, 30 Nov 2017 19:52:19 +0000 (19:52 +0000)]
Unreviewed, unskip a few Service Workers tests that no longer seem to be flaky.

* TestExpectations:

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

3 years agoAdd a script for automatically running the buildbot configurations on a test environment.
clopez@igalia.com [Thu, 30 Nov 2017 19:29:54 +0000 (19:29 +0000)]
Add a script for automatically running the buildbot configurations on a test environment.
https://bugs.webkit.org/show_bug.cgi?id=169084

Reviewed by Michael Catanzaro.

This new script does the following:
- Creates a temporal workingdir.
- Installs buildbot and its dependencies there (very same version used by the webkit.org buildbot master https://build.webkit.org/about ).
  This is important as there are problems that that may not be detected if you don't test with the same version that will be used on production.
- Copies the buildmaster config files to the temporal workingdir.
- Performs the required steps to start a buildmaster.
- Creates the required config for each slave and starts all of them.

The test buildmaster should be accessible at http://localhost:8710/ allowing to trigger manual builds.
This allows to test any configuration changes on this test environment that is pretty much identical to the production one.

* BuildSlaveSupport/build.webkit.org-config/run-buildbot-test.py: Added.
(check_tcp_port_open):
(upgrade_db_needed):
(create_tempdir):
(print_if_error_stdout_stderr):
(setup_master_workdir):
(wait_for_master_ready):
(start_master):
(get_list_workers):
(start_worker):
(clean):
(cmd_exists):
(check_buildbot_installed):
(setup_virtualenv):
(configdir_is_valid):
(main):

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

3 years agoRename RegistrationOptions to ServiceWorkerRegistrationOptions
cdumez@apple.com [Thu, 30 Nov 2017 19:17:55 +0000 (19:17 +0000)]
Rename RegistrationOptions to ServiceWorkerRegistrationOptions
https://bugs.webkit.org/show_bug.cgi?id=180207

Reviewed by Geoffrey Garen.

Rename RegistrationOptions to ServiceWorkerRegistrationOptions as the name
RegistrationOptions is too generic and likely to conflict. Also modernize
ServiceWorkerRegistrationOptions' IPC decoder.

* workers/service/ServiceWorkerContainer.h:
* workers/service/ServiceWorkerJobData.h:
(WebCore::ServiceWorkerJobData::decode):
* workers/service/ServiceWorkerRegistrationOptions.cpp:
(WebCore::ServiceWorkerRegistrationOptions::isolatedCopy const):
* workers/service/ServiceWorkerRegistrationOptions.h:
(WebCore::ServiceWorkerRegistrationOptions::encode const):
(WebCore::ServiceWorkerRegistrationOptions::decode):

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