WebKit-https.git
18 months ago[RenderTreeBuilder] Introduce RenderTreebuilder::takeChild
zalan@apple.com [Mon, 12 Feb 2018 23:28:51 +0000 (23:28 +0000)]
[RenderTreeBuilder] Introduce RenderTreebuilder::takeChild
https://bugs.webkit.org/show_bug.cgi?id=182707
<rdar://problem/37473433>

Reviewed by Antti Koivisto.

All takeChild calls should go through RenderTreeBuilder::takeChild from now on.
This patch also moves the Ruby related takeChild calls to RenderTreeBuilder.

No change in functionality.

* rendering/RenderButton.cpp:
(WebCore::RenderButton::takeChild):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::removeAndDestroyChild):
* rendering/RenderFullScreen.cpp:
(WebCore::RenderFullScreen::wrapExistingRenderer):
(WebCore::RenderFullScreen::unwrapRenderer):
* rendering/RenderMenuList.cpp:
(RenderMenuList::takeChild):
* rendering/RenderRuby.cpp:
(WebCore::RenderRubyAsInline::takeChild): Deleted.
(WebCore::RenderRubyAsBlock::takeChild): Deleted.
* rendering/RenderRuby.h:
* rendering/RenderRubyRun.cpp:
(WebCore::RenderRubyRun::takeChild): Deleted.
* rendering/RenderRubyRun.h:
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::takeChild):
(WebCore::RenderTreeBuilder::takeChildFromRenderRubyAsInline): Deleted.
(WebCore::RenderTreeBuilder::takeChildFromRenderRubyAsBlock): Deleted.
(WebCore::RenderTreeBuilder::takeChildFromRenderRubyRun): Deleted.
* rendering/updating/RenderTreeBuilder.h:
* rendering/updating/RenderTreeBuilderFirstLetter.cpp:
(WebCore::RenderTreeBuilder::FirstLetter::updateStyle):
* rendering/updating/RenderTreeBuilderList.cpp:
(WebCore::RenderTreeBuilder::List::updateItemMarker):
* rendering/updating/RenderTreeBuilderMultiColumn.cpp:
(WebCore::RenderTreeBuilder::MultiColumn::createFragmentedFlow):
(WebCore::RenderTreeBuilder::MultiColumn::destroyFragmentedFlow):
(WebCore::RenderTreeBuilder::MultiColumn::processPossibleSpannerDescendant):
* rendering/updating/RenderTreeBuilderRuby.cpp:
(WebCore::RenderTreeBuilder::Ruby::takeChild):
* rendering/updating/RenderTreeBuilderTable.cpp:
(WebCore::RenderTreeBuilder::Table::collapseAndDestroyAnonymousSiblingRows):

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

18 months agoAdd more support for pointer preparations.
mark.lam@apple.com [Mon, 12 Feb 2018 22:49:02 +0000 (22:49 +0000)]
Add more support for pointer preparations.
https://bugs.webkit.org/show_bug.cgi?id=182703
<rdar://problem/37469451>

Reviewed by Saam Barati.

Source/JavaScriptCore:

* llint/LLIntData.h:
(JSC::LLInt::getCodePtr):
* llint/LLIntPCRanges.h:
(JSC::LLInt::isLLIntPC):
* runtime/Options.cpp:
(JSC::recomputeDependentOptions):

Source/WTF:

* wtf/PointerPreparations.h:

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

18 months agodownload-latest-github-release .py should not use "browser download URL".
ross.kirsling@sony.com [Mon, 12 Feb 2018 22:37:57 +0000 (22:37 +0000)]
download-latest-github-release .py should not use "browser download URL".
https://bugs.webkit.org/show_bug.cgi?id=182646

Reviewed by Per Arne Vollan.

* Scripts/download-latest-github-release.py:
Download request should be a proper GitHub API call and should actually include the token when applicable.
(Also clean up usage of args and print while we're in here.)

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

18 months ago[Extra zoom mode] Add support for <input type='time'> using time picker UI
wenson_hsieh@apple.com [Mon, 12 Feb 2018 22:07:10 +0000 (22:07 +0000)]
[Extra zoom mode] Add support for <input type='time'> using time picker UI
https://bugs.webkit.org/show_bug.cgi?id=182683
<rdar://problem/35143162>

Reviewed by Tim Horton.

Adds support for showing a time picker when an input of type time is focused in extra zoomed mode.

* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _stopAssistingNode]):
(-[WKContentView presentTimePickerViewController:]):
(-[WKContentView dismissTimePickerViewController:]):

Add helpers to dismiss and present the time picker view controller.

(-[WKContentView presentViewControllerForAssistedNode:]):

When focusing InputType::Time, present a time picker. Additionally, tweak the logic here to use the generic text
input view controller as a fallback when the other input view controllers (number pads, select menus and time
pickers thus far) are not relevant. This prevents us from completely being unable to edit form controls that are
currently unsupported.

(-[WKContentView textInputController:didCommitText:]):
(-[WKContentView textInputControllerDidRequestDismissal:]):

Tweak WKContentView for changes to WKTextFormControlViewControllerDelegate.

(-[WKContentView actionNameForFocusedFormControlController:]):

Adjust this implementation to hide the focused form control "Go" button for selects and time inputs. This
currently doesn't work for these form controls because it relies on implicit form submission; this should be
fixed by future changes, after which we should revert this adjustment.

(-[WKContentView _wheelChangedWithEvent:]):

Delegate wheel events to the time picker if needed.

(-[WKContentView textInputController:didRequestDismissalWithAction:]): Deleted.

Renamed to -textInputControllerDidRequestDismissal:.

* UIProcess/ios/forms/WKTimePickerViewController.h: Added.
* UIProcess/ios/forms/WKTimePickerViewController.mm: Added.
* WebKit.xcodeproj/project.pbxproj:

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

18 months agoMarked http/tests/workers/service/basic-messageport.html as flaky on macOS WK2.
jlewis3@apple.com [Mon, 12 Feb 2018 21:57:15 +0000 (21:57 +0000)]
Marked http/tests/workers/service/basic-messageport.html as flaky on macOS WK2.
https://bugs.webkit.org/show_bug.cgi?id=182630

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

18 months ago[RenderTreeBuilder] Move RenderBlock::dropAnonymousBoxChild to RenderTreeBuilder
zalan@apple.com [Mon, 12 Feb 2018 21:49:51 +0000 (21:49 +0000)]
[RenderTreeBuilder] Move RenderBlock::dropAnonymousBoxChild to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=182704
<rdar://problem/37469469>

Reviewed by Antti Koivisto.

All the callsites are now in RenderTreeBuilder.

No change in functionality.

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::dropAnonymousBoxChild): Deleted.
* rendering/RenderBlock.h:
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::removeAnonymousWrappersForInlineChildrenIfNeeded):
(WebCore::RenderTreeBuilder::dropAnonymousBoxChild):
* rendering/updating/RenderTreeBuilder.h:
* rendering/updating/RenderTreeBuilderBlock.cpp:
(WebCore::RenderTreeBuilder::Block::takeChild):
(WebCore::RenderTreeBuilder::Block::dropAnonymousBoxChild):
* rendering/updating/RenderTreeBuilderBlock.h:

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

18 months agoUnreviewed, rolling out r228376.
jlewis3@apple.com [Mon, 12 Feb 2018 20:40:23 +0000 (20:40 +0000)]
Unreviewed, rolling out r228376.

This caused accessibility/mac/selection-notification-focus-
change.html to become flaky on macOS.

Reverted changeset:

"AX: defer focusedUIElement notifications"
https://bugs.webkit.org/show_bug.cgi?id=182643
https://trac.webkit.org/changeset/228376

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

18 months ago[iOS] media tests failing ASSERT_NOT_REACHED() in WebCore::VideoFullscreenInterfaceAV...
ryanhaddad@apple.com [Mon, 12 Feb 2018 20:30:51 +0000 (20:30 +0000)]
[iOS] media tests failing ASSERT_NOT_REACHED() in WebCore::VideoFullscreenInterfaceAVKit::cleanupFullscreen()
https://bugs.webkit.org/show_bug.cgi?id=182527

Reviewed by Alexey Proskuryakov.

Temporarily remove an assertion from VideoFullscreenInterfaceAVKit to stop tests from crashing on iOS
while the root cause is being investigated.

* platform/ios/VideoFullscreenInterfaceAVKit.mm:
(VideoFullscreenInterfaceAVKit::exitFullscreenHandler):

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

18 months agoFix missing exception check in RegExpObject::matchGlobal().
mark.lam@apple.com [Mon, 12 Feb 2018 20:28:02 +0000 (20:28 +0000)]
Fix missing exception check in RegExpObject::matchGlobal().
https://bugs.webkit.org/show_bug.cgi?id=182701
<rdar://problem/37465865>

Reviewed by Michael Saboff.

This issue was discovered when running JSC tests on an asm LLInt build with
JSC_useJIT=false.

* runtime/RegExpObject.cpp:
(JSC::RegExpObject::matchGlobal):

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

18 months ago[RenderTreeBuilder] Remove redundant RenderTreeBuilder instance
zalan@apple.com [Mon, 12 Feb 2018 20:12:35 +0000 (20:12 +0000)]
[RenderTreeBuilder] Remove redundant RenderTreeBuilder instance
https://bugs.webkit.org/show_bug.cgi?id=182700
<rdar://problem/37463958>

Reviewed by Antti Koivisto.

* rendering/RenderView.cpp:
(WebCore::RenderView::willBeDestroyed):

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

18 months agoMark imported/mozilla/svg/conditions-07.svg as a flaky failure on Windows.
pvollan@apple.com [Mon, 12 Feb 2018 18:58:16 +0000 (18:58 +0000)]
Mark imported/mozilla/svg/conditions-07.svg as a flaky failure on Windows.

Unreviewed test gardening.

* platform/win/TestExpectations:

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

18 months agoEWS should run Windows tests.
pvollan@apple.com [Mon, 12 Feb 2018 18:43:59 +0000 (18:43 +0000)]
EWS should run Windows tests.
https://bugs.webkit.org/show_bug.cgi?id=177967

Reviewed by Lucas Forschler.

This will help catch regressions at an early stage.

* Scripts/webkitpy/common/config/ews.json:

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

18 months agoSkipped webgl/1.0.3/conformance/rendering/many-draw-calls.html on iOS Simulator Debug WK2
jlewis3@apple.com [Mon, 12 Feb 2018 17:59:12 +0000 (17:59 +0000)]
Skipped webgl/1.0.3/conformance/rendering/many-draw-calls.html on iOS Simulator Debug WK2
https://bugs.webkit.org/show_bug.cgi?id=182144

Unreviewed test expectations.

* platform/ios-wk2/TestExpectations:

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

18 months ago[l10n] Updated Polish translation of WebKitGTK+ for 2.20
mcatanzaro@igalia.com [Mon, 12 Feb 2018 17:21:28 +0000 (17:21 +0000)]
[l10n] Updated Polish translation of WebKitGTK+ for 2.20
https://bugs.webkit.org/show_bug.cgi?id=182693

Patch by Piotr Drąg <piotrdrag@gmail.com> on 2018-02-12
Rubber-stamped by Michael Catanzaro.

* pl.po:

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

18 months agoAX: defer focusedUIElement notifications
cfleizach@apple.com [Mon, 12 Feb 2018 17:16:17 +0000 (17:16 +0000)]
AX: defer focusedUIElement notifications
https://bugs.webkit.org/show_bug.cgi?id=182643
<rdar://problem/37394310>

Reviewed by Zalan Bujtas.

Source/WebCore:

Deferring focus changes for accessibility has a number of benefits.
    1) Reduces the chance of calling into layout during layout.
    2) Coalesces multiple focus notifications that would be needlessly sent.
    3) Improves performance by not calling out to the accessibility notification machinery during layout.

In this patch, I also started making more AXObjectCache calls private. This will reduce the chance that clients
will call into AXObjectCache during unexpected times.

* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::deferFocusedUIElementChangeIfNeeded):
(WebCore::conditionallyAddNodeToFilterList):
(WebCore::filterVectorPairForRemoval):
(WebCore::filterMapForRemoval):
(WebCore::filterListForRemoval):
(WebCore::AXObjectCache::prepareForDocumentDestruction):
(WebCore::AXObjectCache::performDeferredCacheUpdate):
* accessibility/AXObjectCache.h:
* dom/Document.cpp:
(WebCore::Document::setFocusedElement):

LayoutTests:

* accessibility/mac/aria-menu-item-selected-notification.html:
     Rewrite test to accomodate that focus changes happen asynchronously.
* accessibility/mac/selection-notification-focus-change-expected.txt:
* platform/mac-wk2/accessibility/mac/selection-notification-focus-change-expected.txt:
     The order of notifications is different now that focus changes happen later.

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

18 months agoUpdate test expectations for some tests which are failing on only one ews Windows...
pvollan@apple.com [Mon, 12 Feb 2018 16:56:50 +0000 (16:56 +0000)]
Update test expectations for some tests which are failing on only one ews Windows bot.
https://bugs.webkit.org/show_bug.cgi?id=182694

Unreviewed test gardening.

* platform/win/TestExpectations:

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

18 months ago[GTK] Unify builds for platform-specific files in WebKit layer
mcatanzaro@igalia.com [Mon, 12 Feb 2018 16:30:03 +0000 (16:30 +0000)]
[GTK] Unify builds for platform-specific files in WebKit layer
https://bugs.webkit.org/show_bug.cgi?id=182450

Reviewed by Carlos Garcia Campos.

Add most GTK-specific sources to unified build. API files are exempted, except for the DOM
API. Files shared with PluginProcessGTK2 are also exempted. Finally, files with name
conflicts in headers, which appears difficult to fix, are also exempted.

* CMakeLists.txt:
* NetworkProcess/CustomProtocols/soup/LegacyCustomProtocolManagerSoup.cpp:
* NetworkProcess/soup/NetworkDataTaskSoup.cpp:
* NetworkProcess/soup/NetworkProcessSoup.cpp:
* NetworkProcess/soup/NetworkSessionSoup.cpp:
* NetworkProcess/soup/RemoteNetworkingContextSoup.cpp:
* Platform/classifier/ResourceLoadStatisticsClassifier.cpp:
* PlatformGTK.cmake:
* PluginProcess/unix/PluginControllerProxyUnix.cpp:
* Shared/CoordinatedGraphics/CoordinatedBackingStore.cpp:
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
* Shared/CoordinatedGraphics/SimpleViewportController.cpp:
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
* Shared/Plugins/Netscape/unix/NetscapePluginModuleUnix.cpp:
* Shared/Plugins/unix/PluginSearchPath.cpp:
* Shared/cairo/ShareableBitmapCairo.cpp:
* Shared/glib/WebContextMenuItemGlib.cpp:
* Shared/glib/WebErrorsGlib.cpp:
* Shared/gtk/ArgumentCodersGtk.cpp:
* Shared/gtk/NativeWebKeyboardEventGtk.cpp:
* Shared/gtk/ProcessExecutablePathGtk.cpp:
* Shared/gtk/WebErrorsGtk.cpp:
* Shared/gtk/WebEventFactory.cpp:
* Shared/linux/WebMemorySamplerLinux.cpp:
* Shared/soup/WebCoreArgumentCodersSoup.cpp:
* Shared/soup/WebErrorsSoup.cpp:
* SourcesGTK.txt: Added.
* UIProcess/AcceleratedDrawingAreaProxy.cpp:
* UIProcess/Automation/cairo/WebAutomationSessionCairo.cpp:
* UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp:
* UIProcess/BackingStore.cpp:
* UIProcess/DrawingAreaProxyImpl.cpp:
* UIProcess/Launcher/glib/ProcessLauncherGLib.cpp:
* UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp:
* UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
* UIProcess/WebResourceLoadStatisticsTelemetry.cpp:
* UIProcess/WebStorage/StorageManager.cpp:
* UIProcess/cairo/BackingStoreCairo.cpp:
* UIProcess/gtk/AcceleratedBackingStore.cpp:
* UIProcess/gtk/DragAndDropHandler.cpp:
* UIProcess/gtk/GestureController.cpp:
* UIProcess/gtk/HardwareAccelerationManager.cpp:
* UIProcess/gtk/InputMethodFilter.cpp:
* UIProcess/gtk/TextCheckerGtk.cpp:
* UIProcess/gtk/WaylandCompositor.cpp:
* UIProcess/gtk/WebColorPickerGtk.cpp:
* UIProcess/gtk/WebContextMenuProxyGtk.cpp:
* UIProcess/gtk/WebPasteboardProxyGtk.cpp:
* UIProcess/gtk/WebPopupMenuProxyGtk.cpp:
* WebProcess/Cookies/soup/WebCookieManagerSoup.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMAttr.cpp:
(webkit_dom_attr_dom_event_target_init):
(webkit_dom_attr_set_property):
(webkit_dom_attr_get_property):
(webkit_dom_attr_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCDATASection.cpp:
(webkit_dom_cdata_section_dom_event_target_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSRule.cpp:
(webkit_dom_css_rule_set_property):
(webkit_dom_css_rule_get_property):
(webkit_dom_css_rule_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSRuleList.cpp:
(webkit_dom_css_rule_list_get_property):
(webkit_dom_css_rule_list_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSStyleDeclaration.cpp:
(webkit_dom_css_style_declaration_set_property):
(webkit_dom_css_style_declaration_get_property):
(webkit_dom_css_style_declaration_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSStyleSheet.cpp:
(webkit_dom_css_style_sheet_get_property):
(webkit_dom_css_style_sheet_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSValue.cpp:
(webkit_dom_css_value_set_property):
(webkit_dom_css_value_get_property):
(webkit_dom_css_value_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCharacterData.cpp:
(webkit_dom_character_data_dom_event_target_init):
(webkit_dom_character_data_set_property):
(webkit_dom_character_data_get_property):
(webkit_dom_character_data_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRect.cpp:
(webkit_dom_client_rect_get_property):
(webkit_dom_client_rect_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectList.cpp:
(webkit_dom_client_rect_list_get_property):
(webkit_dom_client_rect_list_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMComment.cpp:
(webkit_dom_comment_dom_event_target_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMSelection.cpp:
(webkit_dom_dom_selection_get_property):
(webkit_dom_dom_selection_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMTokenList.cpp:
(webkit_dom_dom_token_list_set_property):
(webkit_dom_dom_token_list_get_property):
(webkit_dom_dom_token_list_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.cpp:
(webkit_dom_dom_window_dom_event_target_init):
(webkit_dom_dom_window_set_property):
(webkit_dom_dom_window_get_property):
(webkit_dom_dom_window_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.cpp:
(webkit_dom_document_dom_event_target_init):
(webkit_dom_document_set_property):
(webkit_dom_document_get_property):
(webkit_dom_document_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentFragment.cpp:
(webkit_dom_document_fragment_dom_event_target_init):
(webkit_dom_document_fragment_get_property):
(webkit_dom_document_fragment_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentType.cpp:
(webkit_dom_document_type_dom_event_target_init):
(webkit_dom_document_type_get_property):
(webkit_dom_document_type_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp:
(webkit_dom_element_dom_event_target_init):
(webkit_dom_element_set_property):
(webkit_dom_element_get_property):
(webkit_dom_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMEvent.cpp:
(webkit_dom_event_set_property):
(webkit_dom_event_get_property):
(webkit_dom_event_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMFile.cpp:
(webkit_dom_file_get_property):
(webkit_dom_file_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMFileList.cpp:
(webkit_dom_file_list_get_property):
(webkit_dom_file_list_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAnchorElement.cpp:
(webkit_dom_html_anchor_element_dom_event_target_init):
(webkit_dom_html_anchor_element_set_property):
(webkit_dom_html_anchor_element_get_property):
(webkit_dom_html_anchor_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAppletElement.cpp:
(webkit_dom_html_applet_element_dom_event_target_init):
(webkit_dom_html_applet_element_set_property):
(webkit_dom_html_applet_element_get_property):
(webkit_dom_html_applet_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAreaElement.cpp:
(webkit_dom_html_area_element_dom_event_target_init):
(webkit_dom_html_area_element_set_property):
(webkit_dom_html_area_element_get_property):
(webkit_dom_html_area_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBRElement.cpp:
(webkit_dom_html_br_element_dom_event_target_init):
(webkit_dom_html_br_element_set_property):
(webkit_dom_html_br_element_get_property):
(webkit_dom_html_br_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBaseElement.cpp:
(webkit_dom_html_base_element_dom_event_target_init):
(webkit_dom_html_base_element_set_property):
(webkit_dom_html_base_element_get_property):
(webkit_dom_html_base_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBodyElement.cpp:
(webkit_dom_html_body_element_dom_event_target_init):
(webkit_dom_html_body_element_set_property):
(webkit_dom_html_body_element_get_property):
(webkit_dom_html_body_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLButtonElement.cpp:
(webkit_dom_html_button_element_dom_event_target_init):
(webkit_dom_html_button_element_set_property):
(webkit_dom_html_button_element_get_property):
(webkit_dom_html_button_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLCanvasElement.cpp:
(webkit_dom_html_canvas_element_dom_event_target_init):
(webkit_dom_html_canvas_element_set_property):
(webkit_dom_html_canvas_element_get_property):
(webkit_dom_html_canvas_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLCollection.cpp:
(webkit_dom_html_collection_get_property):
(webkit_dom_html_collection_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDListElement.cpp:
(webkit_dom_html_d_list_element_dom_event_target_init):
(webkit_dom_html_d_list_element_set_property):
(webkit_dom_html_d_list_element_get_property):
(webkit_dom_html_d_list_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDirectoryElement.cpp:
(webkit_dom_html_directory_element_dom_event_target_init):
(webkit_dom_html_directory_element_set_property):
(webkit_dom_html_directory_element_get_property):
(webkit_dom_html_directory_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDivElement.cpp:
(webkit_dom_html_div_element_dom_event_target_init):
(webkit_dom_html_div_element_set_property):
(webkit_dom_html_div_element_get_property):
(webkit_dom_html_div_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDocument.cpp:
(webkit_dom_html_document_dom_event_target_init):
(webkit_dom_html_document_set_property):
(webkit_dom_html_document_get_property):
(webkit_dom_html_document_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLElement.cpp:
(webkit_dom_html_element_dom_event_target_init):
(webkit_dom_html_element_set_property):
(webkit_dom_html_element_get_property):
(webkit_dom_html_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLEmbedElement.cpp:
(webkit_dom_html_embed_element_dom_event_target_init):
(webkit_dom_html_embed_element_set_property):
(webkit_dom_html_embed_element_get_property):
(webkit_dom_html_embed_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFieldSetElement.cpp:
(webkit_dom_html_field_set_element_dom_event_target_init):
(webkit_dom_html_field_set_element_get_property):
(webkit_dom_html_field_set_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFontElement.cpp:
(webkit_dom_html_font_element_dom_event_target_init):
(webkit_dom_html_font_element_set_property):
(webkit_dom_html_font_element_get_property):
(webkit_dom_html_font_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFormElement.cpp:
(webkit_dom_html_form_element_dom_event_target_init):
(webkit_dom_html_form_element_set_property):
(webkit_dom_html_form_element_get_property):
(webkit_dom_html_form_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFrameElement.cpp:
(webkit_dom_html_frame_element_dom_event_target_init):
(webkit_dom_html_frame_element_set_property):
(webkit_dom_html_frame_element_get_property):
(webkit_dom_html_frame_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFrameSetElement.cpp:
(webkit_dom_html_frame_set_element_dom_event_target_init):
(webkit_dom_html_frame_set_element_set_property):
(webkit_dom_html_frame_set_element_get_property):
(webkit_dom_html_frame_set_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHRElement.cpp:
(webkit_dom_html_hr_element_dom_event_target_init):
(webkit_dom_html_hr_element_set_property):
(webkit_dom_html_hr_element_get_property):
(webkit_dom_html_hr_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHeadElement.cpp:
(webkit_dom_html_head_element_dom_event_target_init):
(webkit_dom_html_head_element_set_property):
(webkit_dom_html_head_element_get_property):
(webkit_dom_html_head_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHeadingElement.cpp:
(webkit_dom_html_heading_element_dom_event_target_init):
(webkit_dom_html_heading_element_set_property):
(webkit_dom_html_heading_element_get_property):
(webkit_dom_html_heading_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHtmlElement.cpp:
(webkit_dom_html_html_element_dom_event_target_init):
(webkit_dom_html_html_element_set_property):
(webkit_dom_html_html_element_get_property):
(webkit_dom_html_html_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLIFrameElement.cpp:
(webkit_dom_html_iframe_element_dom_event_target_init):
(webkit_dom_html_iframe_element_set_property):
(webkit_dom_html_iframe_element_get_property):
(webkit_dom_html_iframe_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLImageElement.cpp:
(webkit_dom_html_image_element_dom_event_target_init):
(webkit_dom_html_image_element_set_property):
(webkit_dom_html_image_element_get_property):
(webkit_dom_html_image_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLInputElement.cpp:
(webkit_dom_html_input_element_dom_event_target_init):
(webkit_dom_html_input_element_set_property):
(webkit_dom_html_input_element_get_property):
(webkit_dom_html_input_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLIElement.cpp:
(webkit_dom_html_li_element_dom_event_target_init):
(webkit_dom_html_li_element_set_property):
(webkit_dom_html_li_element_get_property):
(webkit_dom_html_li_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLabelElement.cpp:
(webkit_dom_html_label_element_dom_event_target_init):
(webkit_dom_html_label_element_set_property):
(webkit_dom_html_label_element_get_property):
(webkit_dom_html_label_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLegendElement.cpp:
(webkit_dom_html_legend_element_dom_event_target_init):
(webkit_dom_html_legend_element_set_property):
(webkit_dom_html_legend_element_get_property):
(webkit_dom_html_legend_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLinkElement.cpp:
(webkit_dom_html_link_element_dom_event_target_init):
(webkit_dom_html_link_element_set_property):
(webkit_dom_html_link_element_get_property):
(webkit_dom_html_link_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMapElement.cpp:
(webkit_dom_html_map_element_dom_event_target_init):
(webkit_dom_html_map_element_set_property):
(webkit_dom_html_map_element_get_property):
(webkit_dom_html_map_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMarqueeElement.cpp:
(webkit_dom_html_marquee_element_dom_event_target_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMenuElement.cpp:
(webkit_dom_html_menu_element_dom_event_target_init):
(webkit_dom_html_menu_element_set_property):
(webkit_dom_html_menu_element_get_property):
(webkit_dom_html_menu_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMetaElement.cpp:
(webkit_dom_html_meta_element_dom_event_target_init):
(webkit_dom_html_meta_element_set_property):
(webkit_dom_html_meta_element_get_property):
(webkit_dom_html_meta_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLModElement.cpp:
(webkit_dom_html_mod_element_dom_event_target_init):
(webkit_dom_html_mod_element_set_property):
(webkit_dom_html_mod_element_get_property):
(webkit_dom_html_mod_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOListElement.cpp:
(webkit_dom_html_o_list_element_dom_event_target_init):
(webkit_dom_html_o_list_element_set_property):
(webkit_dom_html_o_list_element_get_property):
(webkit_dom_html_o_list_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLObjectElement.cpp:
(webkit_dom_html_object_element_dom_event_target_init):
(webkit_dom_html_object_element_set_property):
(webkit_dom_html_object_element_get_property):
(webkit_dom_html_object_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptGroupElement.cpp:
(webkit_dom_html_opt_group_element_dom_event_target_init):
(webkit_dom_html_opt_group_element_set_property):
(webkit_dom_html_opt_group_element_get_property):
(webkit_dom_html_opt_group_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptionElement.cpp:
(webkit_dom_html_option_element_dom_event_target_init):
(webkit_dom_html_option_element_set_property):
(webkit_dom_html_option_element_get_property):
(webkit_dom_html_option_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptionsCollection.cpp:
(webkit_dom_html_options_collection_set_property):
(webkit_dom_html_options_collection_get_property):
(webkit_dom_html_options_collection_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLParagraphElement.cpp:
(webkit_dom_html_paragraph_element_dom_event_target_init):
(webkit_dom_html_paragraph_element_set_property):
(webkit_dom_html_paragraph_element_get_property):
(webkit_dom_html_paragraph_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLParamElement.cpp:
(webkit_dom_html_param_element_dom_event_target_init):
(webkit_dom_html_param_element_set_property):
(webkit_dom_html_param_element_get_property):
(webkit_dom_html_param_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLPreElement.cpp:
(webkit_dom_html_pre_element_dom_event_target_init):
(webkit_dom_html_pre_element_set_property):
(webkit_dom_html_pre_element_get_property):
(webkit_dom_html_pre_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLQuoteElement.cpp:
(webkit_dom_html_quote_element_dom_event_target_init):
(webkit_dom_html_quote_element_set_property):
(webkit_dom_html_quote_element_get_property):
(webkit_dom_html_quote_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLScriptElement.cpp:
(webkit_dom_html_script_element_dom_event_target_init):
(webkit_dom_html_script_element_set_property):
(webkit_dom_html_script_element_get_property):
(webkit_dom_html_script_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLSelectElement.cpp:
(webkit_dom_html_select_element_dom_event_target_init):
(webkit_dom_html_select_element_set_property):
(webkit_dom_html_select_element_get_property):
(webkit_dom_html_select_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLStyleElement.cpp:
(webkit_dom_html_style_element_dom_event_target_init):
(webkit_dom_html_style_element_set_property):
(webkit_dom_html_style_element_get_property):
(webkit_dom_html_style_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableCaptionElement.cpp:
(webkit_dom_html_table_caption_element_dom_event_target_init):
(webkit_dom_html_table_caption_element_set_property):
(webkit_dom_html_table_caption_element_get_property):
(webkit_dom_html_table_caption_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableCellElement.cpp:
(webkit_dom_html_table_cell_element_dom_event_target_init):
(webkit_dom_html_table_cell_element_set_property):
(webkit_dom_html_table_cell_element_get_property):
(webkit_dom_html_table_cell_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableColElement.cpp:
(webkit_dom_html_table_col_element_dom_event_target_init):
(webkit_dom_html_table_col_element_set_property):
(webkit_dom_html_table_col_element_get_property):
(webkit_dom_html_table_col_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableElement.cpp:
(webkit_dom_html_table_element_dom_event_target_init):
(webkit_dom_html_table_element_set_property):
(webkit_dom_html_table_element_get_property):
(webkit_dom_html_table_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableRowElement.cpp:
(webkit_dom_html_table_row_element_dom_event_target_init):
(webkit_dom_html_table_row_element_set_property):
(webkit_dom_html_table_row_element_get_property):
(webkit_dom_html_table_row_element_class_init):
(webkit_dom_html_table_row_element_insert_cell):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableSectionElement.cpp:
(webkit_dom_html_table_section_element_dom_event_target_init):
(webkit_dom_html_table_section_element_set_property):
(webkit_dom_html_table_section_element_get_property):
(webkit_dom_html_table_section_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTextAreaElement.cpp:
(webkit_dom_html_text_area_element_dom_event_target_init):
(webkit_dom_html_text_area_element_set_property):
(webkit_dom_html_text_area_element_get_property):
(webkit_dom_html_text_area_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTitleElement.cpp:
(webkit_dom_html_title_element_dom_event_target_init):
(webkit_dom_html_title_element_set_property):
(webkit_dom_html_title_element_get_property):
(webkit_dom_html_title_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLUListElement.cpp:
(webkit_dom_html_u_list_element_dom_event_target_init):
(webkit_dom_html_u_list_element_set_property):
(webkit_dom_html_u_list_element_get_property):
(webkit_dom_html_u_list_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMKeyboardEvent.cpp:
(webkit_dom_keyboard_event_get_property):
(webkit_dom_keyboard_event_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMMediaList.cpp:
(webkit_dom_media_list_set_property):
(webkit_dom_media_list_get_property):
(webkit_dom_media_list_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMMouseEvent.cpp:
(webkit_dom_mouse_event_get_property):
(webkit_dom_mouse_event_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNamedNodeMap.cpp:
(webkit_dom_named_node_map_get_property):
(webkit_dom_named_node_map_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNode.cpp:
(webkit_dom_node_dom_event_target_init):
(webkit_dom_node_set_property):
(webkit_dom_node_get_property):
(webkit_dom_node_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeIterator.cpp:
(webkit_dom_node_iterator_get_property):
(webkit_dom_node_iterator_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeList.cpp:
(webkit_dom_node_list_get_property):
(webkit_dom_node_list_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMObject.cpp:
(webkitDOMObjectSetProperty):
(webkit_dom_object_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMProcessingInstruction.cpp:
(webkit_dom_processing_instruction_dom_event_target_init):
(webkit_dom_processing_instruction_get_property):
(webkit_dom_processing_instruction_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMRange.cpp:
(webkit_dom_range_get_property):
(webkit_dom_range_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMStyleSheet.cpp:
(webkit_dom_style_sheet_set_property):
(webkit_dom_style_sheet_get_property):
(webkit_dom_style_sheet_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMStyleSheetList.cpp:
(webkit_dom_style_sheet_list_get_property):
(webkit_dom_style_sheet_list_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMText.cpp:
(webkit_dom_text_dom_event_target_init):
(webkit_dom_text_get_property):
(webkit_dom_text_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMTreeWalker.cpp:
(webkit_dom_tree_walker_get_property):
(webkit_dom_tree_walker_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMUIEvent.cpp:
(webkit_dom_ui_event_get_property):
(webkit_dom_ui_event_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMWheelEvent.cpp:
(webkit_dom_wheel_event_get_property):
(webkit_dom_wheel_event_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathResult.cpp:
(webkit_dom_xpath_result_get_property):
(webkit_dom_xpath_result_class_init):
* WebProcess/InjectedBundle/glib/InjectedBundleGlib.cpp:
* WebProcess/MediaCache/WebMediaKeyStorageManager.cpp:
* WebProcess/Plugins/Netscape/unix/NetscapePluginUnix.cpp:
* WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:
* WebProcess/WebCoreSupport/curl/WebFrameNetworkingContext.cpp:
* WebProcess/WebCoreSupport/gtk/WebContextMenuClientGtk.cpp:
* WebProcess/WebCoreSupport/gtk/WebDragClientGtk.cpp:
* WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
* WebProcess/WebCoreSupport/gtk/WebPopupMenuGtk.cpp:
* WebProcess/WebPage/AcceleratedDrawingArea.cpp:
* WebProcess/WebPage/AcceleratedSurface.cpp:
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
* WebProcess/WebPage/DrawingAreaImpl.cpp:
* WebProcess/WebPage/gtk/AcceleratedSurfaceWayland.cpp:
* WebProcess/WebPage/gtk/AcceleratedSurfaceX11.cpp:
* WebProcess/WebPage/gtk/WebPageGtk.cpp:
* WebProcess/gtk/WaylandCompositorDisplay.cpp:
* WebProcess/gtk/WebProcessMainGtk.cpp:

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

18 months agoWebDriver: addCookie command should prepend a dot to domain if missing
carlosgc@webkit.org [Mon, 12 Feb 2018 07:33:46 +0000 (07:33 +0000)]
WebDriver: addCookie command should prepend a dot to domain if missing
https://bugs.webkit.org/show_bug.cgi?id=182328
<rdar://problem/37116398>

Reviewed by Michael Catanzaro.

RFC 2965: If an explicitly specified value does not start with a dot, the user agent supplies a leading dot.

Fixes: imported/w3c/webdriver/tests/cookies/add_cookie.py::test_add_domain_cookie

* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::addSingleCookie):

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

18 months ago[MIPS] JSC needs to be built with -latomic
guijemont@igalia.com [Mon, 12 Feb 2018 07:32:16 +0000 (07:32 +0000)]
[MIPS] JSC needs to be built with -latomic
https://bugs.webkit.org/show_bug.cgi?id=182610

Reviewed by Žan Doberšek.

Since r228149, on MIPS we need to link with -latomic, because
__atomic_fetch_add_8 is not available as a compiler intrinsic.

* CMakeLists.txt:

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

18 months ago[WinCairo] Add WKBaseWin.h
commit-queue@webkit.org [Mon, 12 Feb 2018 06:22:57 +0000 (06:22 +0000)]
[WinCairo] Add WKBaseWin.h
https://bugs.webkit.org/show_bug.cgi?id=182681

Patch by Yousuke Kimoto <yousuke.kimoto@sony.com> on 2018-02-11
Reviewed by Yusuke Suzuki.

* PlatformWin.cmake:
* Shared/API/c/win/WKBaseWin.h: Added.

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

18 months ago[GTK] Scrolling sometimes jumps around
commit-queue@webkit.org [Sun, 11 Feb 2018 20:09:57 +0000 (20:09 +0000)]
[GTK] Scrolling sometimes jumps around
https://bugs.webkit.org/show_bug.cgi?id=178519

Patch by Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> on 2018-02-11
Reviewed by Michael Catanzaro.

* platform/gtk/ScrollAnimatorGtk.cpp:
(WebCore::ScrollAnimatorGtk::computeVelocity): use -1 as the multiplier for the accumulated deltas,
since all we need is to make them negative. Multiplying by -1000 leads to very high velocities being
returned, causing the viewport to scroll to the end of the page.

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

18 months agoRemove an unused static variable in DeprecatedGlobalSettings.h
wenson_hsieh@apple.com [Sun, 11 Feb 2018 01:53:35 +0000 (01:53 +0000)]
Remove an unused static variable in DeprecatedGlobalSettings.h
https://bugs.webkit.org/show_bug.cgi?id=182672

Reviewed by Joseph Pecoraro.

After r227282, this flag is no longer used anywhere. No change in behavior.

* page/DeprecatedGlobalSettings.h:

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

18 months agoDon't waste memory for error.stack
fpizlo@apple.com [Sat, 10 Feb 2018 23:49:54 +0000 (23:49 +0000)]
Don't waste memory for error.stack
https://bugs.webkit.org/show_bug.cgi?id=182656

Reviewed by Saam Barati.

JSTests:

Tests the policy.

* stress/gc-error-stack.js: Added. Shows that the GC forgets frames now.
* stress/no-gc-error-stack.js: Added. Shows that the GC won't forget things if you ask for the stack.

Source/JavaScriptCore:

This makes the StackFrames in ErrorInstance and Exception weak. We simply forget their
contents if we GC.

This isn't going to happen under normal operation since your callees and code blocks will
still be alive when you ask for .stack.

Bug 182650 tracks improving this so that it's not lossy. For now, I think it's worth it,
since it is likely to recover 3-5 MB on membuster.

* heap/Heap.cpp:
(JSC::Heap::finalizeUnconditionalFinalizers):
* runtime/ErrorInstance.cpp:
(JSC::ErrorInstance::visitChildren):
(JSC::ErrorInstance::finalizeUnconditionally):
* runtime/ErrorInstance.h:
(JSC::ErrorInstance::subspaceFor):
* runtime/Exception.cpp:
(JSC::Exception::visitChildren):
(JSC::Exception::finalizeUnconditionally):
* runtime/Exception.h:
(JSC::Exception::valueOffset): Deleted.
(JSC::Exception::value const): Deleted.
(JSC::Exception::stack const): Deleted.
(JSC::Exception::didNotifyInspectorOfThrow const): Deleted.
(JSC::Exception::setDidNotifyInspectorOfThrow): Deleted.
* runtime/StackFrame.cpp:
(JSC::StackFrame::isFinalizationCandidate):
(JSC::StackFrame::finalizeUnconditionally):
(JSC::StackFrame::visitChildren): Deleted.
* runtime/StackFrame.h:
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:

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

18 months ago[RenderTreeBuilder] Move RenderBlock::takeChild mutation to a RenderTreeBuilder
zalan@apple.com [Sat, 10 Feb 2018 15:44:55 +0000 (15:44 +0000)]
[RenderTreeBuilder] Move RenderBlock::takeChild mutation to a RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=182662
<rdar://problem/37408571>

Reviewed by Simon Fraser.

No change in functionality.

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::takeChild):
(WebCore::canDropAnonymousBlock): Deleted.
(WebCore::canMergeContiguousAnonymousBlocks): Deleted.
* rendering/RenderBlock.h:
(WebCore::RenderBlock::moveAllChildrenIncludingFloatsTo):
* rendering/RenderBlockFlow.h:
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::takenChildFromRenderBlock):
* rendering/updating/RenderTreeBuilder.h:
* rendering/updating/RenderTreeBuilderBlock.cpp:
(WebCore::canDropAnonymousBlock):
(WebCore::canMergeContiguousAnonymousBlocks):
(WebCore::RenderTreeBuilder::Block::takeChild):
* rendering/updating/RenderTreeBuilderBlock.h:

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

18 months agoWeb Inspector: Canvas tab: tree selection abruptly changes when selecting a recording...
mattbaker@apple.com [Sat, 10 Feb 2018 06:15:46 +0000 (06:15 +0000)]
Web Inspector: Canvas tab: tree selection abruptly changes when selecting a recording frame
https://bugs.webkit.org/show_bug.cgi?id=182667
<rdar://problem/37412639>

Reviewed by Devin Rousso.

* UserInterface/Views/CanvasSidebarPanel.css:
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .navigation-bar):
(.sidebar > .panel.navigation.canvas:not(.has-recordings) > .filter-bar,):
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.recording > .icon):
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.folder-icon > .icon):
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.folder-icon > .status):
(.sidebar > .panel.navigation.canvas > .content > .navigation-bar): Deleted.
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.recording > .icon): Deleted.
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.folder-icon > .icon): Deleted.
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.folder-icon > .status): Deleted.
Style changes for the additional DOM element required to virtualize the recording tree outline.

* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel):
In order to be virtualized, the tree must be the only child of its parent.

(WI.CanvasSidebarPanel.prototype.set action):
Ensure that a frame tree element isn't deselected when the last action
in the frame becomes selected in the RecordingContentView.

(WI.CanvasSidebarPanel.prototype.shown):
Refresh the sidebar, as represented objects may have changed while hidden.

(WI.CanvasSidebarPanel.prototype._currentRepresentedObjectsDidChange):
Unset the recording when no valid represented objects are found, to
prevent a stale recording tree from being shown when viewing the overview.

(WI.CanvasSidebarPanel.prototype._canvasChanged):
(WI.CanvasSidebarPanel.prototype._recordingChanged):
(WI.CanvasSidebarPanel.prototype._updateRecordingScopeBar):
Moved toggling of the "has-recordings" style to _canvasChanged, since
the navigation bar should be hidden when no canvas exists.

* UserInterface/Views/CollectionContentView.js:
(WI.CollectionContentView.prototype.addContentViewForItem):
(WI.CollectionContentView.prototype.removeContentViewForItem):
Drive by fixes for child view visible state.

* UserInterface/Views/TreeOutline.css:
(.tree-outline:not(.large):matches(:focus, .force-focus) .item.selected .status .indeterminate-progress-spinner):
Make spinner easier to see against the selection background color.

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

18 months agoMake run-perf-tests work with Speedometer 2.0 and re-enable the test
rniwa@webkit.org [Sat, 10 Feb 2018 06:14:52 +0000 (06:14 +0000)]
Make run-perf-tests work with Speedometer 2.0 and re-enable the test
https://bugs.webkit.org/show_bug.cgi?id=182088

Reviewed by Antti Koivisto.

This patch updates the test harness to report new metrics of Speedometer 2.0.

Replaced the total time by the geometric mean of the time spent in each suite, and added scores
as a metric in addition to time. Also, updated the PerfTestRunner harness and the results template
to support "Score" metric with "pt" as its unit.

* Skipped: Unskipped the test.
* Speedometer/resources/benchmark-report.js:
(window.benchmarkClient.willStartFirstIteration..createTest): Added the unit as an optional argument
to report the score in addition to time. Also report the geomean of time instead of the total time.
(window.benchmarkClient.willStartFirstIteration): Report the geomean of time.
(window.benchmarkClient.didRunSuites): Record the entire measuredValues instead of just tests.
(window.benchmarkClient.didFinishLastIteration): Report the scores.

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

18 months agoREGRESSION (r223440): Copying & pasting a list from Microsoft Word to TinyMCE fails
rniwa@webkit.org [Sat, 10 Feb 2018 05:07:56 +0000 (05:07 +0000)]
REGRESSION (r223440): Copying & pasting a list from Microsoft Word to TinyMCE fails
https://bugs.webkit.org/show_bug.cgi?id=182564

Reviewed by Wenson Hsieh.

Source/WebCore:

Turns out that Microsoft Word generates p and span elements with special styles instead of standard
ul and ol elements when copying a list items, and TinyMCE has a specialized code path to process
this proprietary format of Microsoft Word. The regression was caused by WebKit's sanitization code
stripping away these non-standard CSS rules and inline styles.

To preseve pre-r223440 behavior in TinyMCE, we preserve the following in a HTML markup:

1. The "html" element at the beginning with xmlns content attributes
2. @list rules in a style element starting with "/* List Definitions */" comment
3. inline style content attribute with "mso-list" property
4. comments conditional sections with "[if !supportLists]" and "[endif]"

(1) is needed for TinyMCE to trigger the specialized code path for Microsoft Word. (2) contains
the information about the structure of list items. (3) is needed to associate each p element with
a rule in (2). (4) is needed to strip away the content generated as list markers (e.g. dots).

We enable this "MSO list quirks" when the content comes from a non-WebKit client or a WebKit client
that doesn't enable custom pasteboard data (detected by the content origin being null), and the HTML
markup starts with a specific sequence of characters generated by Microsoft Word.

Test: http/tests/security/clipboard/copy-paste-html-across-origin-strips-mso-list.html
      PasteHTML.PreservesMSOList
      PasteHTML.StripsMSOListWhenMissingMSOHTMLElement
      PasteWebArchive.PreservesMSOList
      PasteWebArchive.StripsMSOListWhenMissingMSOHTMLElement

* editing/MarkupAccumulator.cpp:
(WebCore::MarkupAccumulator::appendTextSubstring): Added.
* editing/MarkupAccumulator.h:
* editing/WebContentReader.cpp:
(WebCore::FrameWebContentReader::msoListQuirksForMarkup const): Added. Enables the MSO list quirks
if the content origin is null. The content origin specifies the pasteboard content's origin if it's
copied in WebKit with custom pasteboard data types enabled. In all other applications, it would be
set to null.
* editing/WebContentReader.h:
* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::markupForFragmentInDocument): Moved to markup.cpp as sanitizedMarkupForFragmentInDocument.
(WebCore::sanitizeMarkupWithArchive):
(WebCore::WebContentReader::readWebArchive): Always disables MSO list quirks since this code path is
only used by WebKit's native code to paste content.
(WebCore::WebContentMarkupReader::readWebArchive): Calls msoListQuirksForMarkup since this is the code
path used by DataTransfer.
(WebCore::WebContentReader::readHTML): Always disables MSO list quirks since this code path is only
used by WebKit's native code to paste content.
(WebCore::WebContentMarkupReader::readHTML): Calls msoListQuirksForMarkup since this is the code path
used by DataTransfer.
* editing/markup.cpp:
(WebCore::sanitizeMarkup): Use sanitizedMarkupForFragmentInDocument to share code.
(WebCore::MSOListMode): Added. Set to Preserve if the sanitized markup is the one generated by
Microsoft Word, and MSO list quirks should actually kick in. This is unlike MSOListQuirks, which is
set to Enable whenever the content COULD be the one generated by Microsoft Word.
(WebCore::StyledMarkupAccumulator): Added a special MSO list preservation mode enabled by MSOListMode.
(WebCore::StyledMarkupAccumulator::StyledMarkupAccumulator):
(WebCore::StyledMarkupAccumulator::appendElement): Preseve (3). Unfortunately, TinyMCE only recognizes
mso-list and related properties only if they appear on their own. But we also need to preserve
the inline style generated using the computed style since we would lose the inline styles of the text
otherwise (e.g. red text and bold font). To workaround this, we generate two style content attributes,
one containing computed styles and another one containing mso-list. Luckily, the HTML parsing algorithm
dictates that the first attribute always wins when more than one attributes of the same name appears,
so we place the computed style's style attribute first so that the pasted content in non-TinyMCE
environment will continue to work.
(WebCore::StyledMarkupAccumulator::traverseNodesForSerialization):
(WebCore::StyledMarkupAccumulator::appendNodeToPreserveMSOList): Added. Generates special markup for
the conditional statements and the special style element with @list rules.
(WebCore::createMarkupInternal):
(WebCore::createMarkup):
(WebCore::sanitizedMarkupForFragmentInDocument): Moved from WebContentReaderCocoa.mm. If MSOListQuirks
is set to Enable, and the markup starts with a specific sequence of characters, generate the markup
with the newly added quirks code in StyledMarkupAccumulator, and wrap it in a special "html" element
TinyMCE recognizes.
* editing/markup.h:
(WebCore::MSOListQuirks): Added. Set to CheckIfNeeded if the content COULD require MSO list quirks.

Tools:

Added tests for pasting HTML with list items generated by Microsoft Word as well as HTML which looks like
the one generated by Microsoft Word but missing a proper "html" element at the beginning.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/PasteHTML.mm: Added test cases.
* TestWebKitAPI/Tests/WebKitCocoa/PasteWebArchive.mm: Added test cases.
(msoListMarkupWithoutProperHTMLElement): Added.
* TestWebKitAPI/Tests/WebKitCocoa/mso-list.html: Added.

LayoutTests:

Added a test to make sure special Microsoft Word quirks would not get triggered
when pasting content copied within WebKit.

* http/tests/security/clipboard/copy-paste-html-across-origin-strips-mso-list-expected.txt: Added.
* http/tests/security/clipboard/copy-paste-html-across-origin-strips-mso-list.html: Added.
* http/tests/security/clipboard/resources/copy-mso-list.html: Added.

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

18 months agoRemove invalidated WebPage::handleEditingKeyboardEvent default implementation after...
ross.kirsling@sony.com [Sat, 10 Feb 2018 04:44:39 +0000 (04:44 +0000)]
Remove invalidated WebPage::handleEditingKeyboardEvent default implementation after r228260.
https://bugs.webkit.org/show_bug.cgi?id=182663

Reviewed by Chris Dumez.

This would need to be updated to turn `keyEvent` into `underlyingPlatformEvent`;
instead, we can remove it, as it's only for Windows, which doesn't yet support WK2.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::handleEditingKeyboardEvent): Deleted.

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

18 months agoAX: Accessibility is not notified when a web process cancels the suspension
n_wang@apple.com [Sat, 10 Feb 2018 01:46:04 +0000 (01:46 +0000)]
AX: Accessibility is not notified when a web process cancels the suspension
https://bugs.webkit.org/show_bug.cgi?id=182659

Reviewed by Ryosuke Niwa.

We were notifying Accessibility with the web process suspended information in actualPrepareToSuspend
and processDidResume. However, the suspension can be canceled during the prepare call. So that we
should also post a notification in cancelPrepareToSuspend.

* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::cancelPrepareToSuspend):

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

18 months agoImageBitmapRenderingContext should be Runtime guarded
dino@apple.com [Sat, 10 Feb 2018 01:24:49 +0000 (01:24 +0000)]
ImageBitmapRenderingContext should be Runtime guarded
https://bugs.webkit.org/show_bug.cgi?id=182665
<rdar://problem/37411410>

Reviewed by Sam Weinig.

Add a flag to ensure the ImageBitmapRenderingContext interface is only
visible when the runtime feature is enabled.

* bindings/js/WebCoreBuiltinNames.h:
* html/canvas/ImageBitmapRenderingContext.idl:

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

18 months agoMark two service worker LayoutTests as flaky.
ryanhaddad@apple.com [Sat, 10 Feb 2018 01:13:27 +0000 (01:13 +0000)]
Mark two service worker LayoutTests as flaky.

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

18 months ago[CMake] Make PAL headers copies
don.olmstead@sony.com [Sat, 10 Feb 2018 00:51:11 +0000 (00:51 +0000)]
[CMake] Make PAL headers copies
https://bugs.webkit.org/show_bug.cgi?id=182645

Reviewed by Alex Christensen.

Source/WebCore:

No new tests. No change in behavior.

* CMakeLists.txt:

Source/WebCore/PAL:

* pal/CMakeLists.txt:
* pal/PlatformAppleWin.cmake:
* pal/PlatformGTK.cmake:
* pal/PlatformMac.cmake:
* pal/PlatformWPE.cmake:
* pal/PlatformWin.cmake:
* pal/PlatformWinCairo.cmake:

Tools:

* TestWebKitAPI/CMakeLists.txt:

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

18 months agoSimplify .gitignore's WebKitLibraries/win section.
ross.kirsling@sony.com [Sat, 10 Feb 2018 00:48:52 +0000 (00:48 +0000)]
Simplify .gitignore's WebKitLibraries/win section.
https://bugs.webkit.org/show_bug.cgi?id=182618

Reviewed by Per Arne Vollan.

We need to update this section for WinCairoRequirements regardless, but
it never needed to be this longwinded in the first place.

* .gitignore:

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

18 months ago[RenderTreeBuilder] Move RenderRubyRun::takeChild mutation to a RenderTreeBuilder
zalan@apple.com [Sat, 10 Feb 2018 00:45:25 +0000 (00:45 +0000)]
[RenderTreeBuilder] Move RenderRubyRun::takeChild mutation to a RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=182655
<rdar://problem/37406801>

Reviewed by Simon Fraser.

No change in functionality.

* rendering/RenderRubyRun.cpp:
(WebCore::RenderRubyRun::takeChild):
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::takeChildFromRenderRubyRun):
* rendering/updating/RenderTreeBuilder.h:
* rendering/updating/RenderTreeBuilderRuby.cpp:
(WebCore::RenderTreeBuilder::Ruby::takeChild):
* rendering/updating/RenderTreeBuilderRuby.h:

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

18 months agoUnreviewed, updated GTK test expectations after r228276
mcatanzaro@igalia.com [Sat, 10 Feb 2018 00:18:03 +0000 (00:18 +0000)]
Unreviewed, updated GTK test expectations after r228276

* platform/gtk/TestExpectations:

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

18 months ago[Payment Request] Apple Pay sheet does not dismiss when calling complete() with resul...
aestes@apple.com [Sat, 10 Feb 2018 00:03:13 +0000 (00:03 +0000)]
[Payment Request] Apple Pay sheet does not dismiss when calling complete() with result "unknown" or "fail"
https://bugs.webkit.org/show_bug.cgi?id=182658
<rdar://problem/37293917>

Reviewed by Brady Eidson.

When PaymentResponse::complete() is called with a result of "unknown" or "fail", we should
treat this as a fatal error and dismiss the Apple Pay sheet. However, we were adding an
error with code "unknown" to the authorization result, which PassKit interprets as a
non-fatal error. Instead, we should not set any errors and just use a status code of
PaymentAuthorizationStatus::Failure, which PassKit interprets as a fatal error, dismissing
the sheet.

No test possible.

* Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
(WebCore::ApplePayPaymentHandler::complete):

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

18 months agoSandbox violating attempting to read log formatting preference file
bfulgham@apple.com [Fri, 9 Feb 2018 23:56:41 +0000 (23:56 +0000)]
Sandbox violating attempting to read log formatting preference file
https://bugs.webkit.org/show_bug.cgi?id=182648
<rdar://problem/36629495>

Reviewed by Eric Carlson.

Various frameworks attempt to read logging format information from /usr/local/lib/log. The sandbox is blocking
this, generating log spam and preventing some logging features from working properly. We should allow read
access to this path.

* NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
* Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
* WebProcess/com.apple.WebProcess.sb.in:

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

18 months agoPasting from Excel no longer provides text/html data
wenson_hsieh@apple.com [Fri, 9 Feb 2018 23:41:34 +0000 (23:41 +0000)]
Pasting from Excel no longer provides text/html data
https://bugs.webkit.org/show_bug.cgi?id=182636
<rdar://problem/37087060>

Reviewed by Ryosuke Niwa.

Source/WebCore:

After r222656, we treat images on the pasteboard as files. However, we also have an existing policy which hides
text data ("text/uri-list", "text/html", "text/plain") from the page when files are present on the pasteboard.
When copying a table, Microsoft Excel writes a rendering of the table to the pasteboard as an image. This means
that we'll hide other data types (importantly, 'text/html') upon pasting, even though important clients (such as
Google Docs and Confluence) depend on the 'text/html' data in order to correctly handle the paste (rather than
paste as an image of a table).

To fix this, we add an exception to the DataTransfer.getData codepath when the pasteboard contains files.
Instead of always returning the empty string for text/html, we still allow pasteboard access, but only read
from a limited set of rich text types, i.e. web archive, RTF(D), and HTML markup. Importantly, this prevents
us from exposing any file paths that appear as plain text or URLs on the pasteboard. Just as in the regular
codepath for getData(), if the pasteboard data comes from the same origin, we allow unsanitized access;
otherwise, we use WebContentMarkupReader to extract markup from the pasteboard.

Tests:  PasteMixedContent.ImageFileAndPlainText
        PasteMixedContent.ImageFileAndWebArchive
        PasteMixedContent.ImageFileAndHTML
        PasteMixedContent.ImageFileAndRTF
        PasteMixedContent.ImageFileAndURL
        PasteMixedContent.ImageFileWithHTMLAndURL
        DataInteractionTests.DataTransferGetDataWhenDroppingImageAndMarkup

Also rebaselined some layout tests, which cover changes in behavior when dropping on macOS and pasting on iOS.

* dom/DataTransfer.cpp:
(WebCore::DataTransfer::getDataForItem const):

Augment the codepath handling the case where the pasteboard contains files, such that we allow reading
"text/html", but only from rich text types.

(WebCore::DataTransfer::readStringFromPasteboard const):

Factor out logic for reading from the pasteboard into a private helper. This is called in two places from
getDataForItem: in the normal (existing) path, and in the case where we allow 'text/html' to be read despite
files appearing in the pasteboard.

One important difference here is that this helper now takes a WebContentReadingPolicy, whose purpose is to
prevent reading from non-rich-text types when files appear in the pasteboard.

Another tweak here is that we now use `lowercaseType` instead of the original (unadjusted) `type` when reading
from the pasteboard. This doesn't seem to be intended in the first place.

(WebCore::DataTransfer::types const):

Tweak the implementation of DataTransfer.types() in the case where files exist on the pasteboard, such that we
also add "text/html" if it is present in the list of DOM-safe types.

* dom/DataTransfer.h:
* platform/Pasteboard.h:

Introduce WebContentReadingPolicy, which indicates whether or not we should limit web content reading from the
pasteboard to only rich text types upon paste or drop. Normally, we allow all types to be read as web content
(::AnyType), but when files appear on the pasteboard, we force OnlyRichTextTypes to ensure that no other types
can unintentionally be read back as web content.

* platform/StaticPasteboard.h:
* platform/gtk/PasteboardGtk.cpp:
(WebCore::Pasteboard::read):
* platform/ios/PasteboardIOS.mm:

Teach Pasteboard (on iOS) to respect WebContentReadingPolicy.

(WebCore::isTypeAllowedByReadingPolicy):
(WebCore::Pasteboard::read):
(WebCore::Pasteboard::readRespectingUTIFidelities):
* platform/mac/PasteboardMac.mm:

Teach Pasteboard (on macOS) to respect WebContentReadingPolicy.

(WebCore::Pasteboard::read):
* platform/win/PasteboardWin.cpp:
(WebCore::Pasteboard::read):
* platform/wpe/PasteboardWPE.cpp:
(WebCore::Pasteboard::read):

Adjust non-Cocoa Pasteboard implementations for an interface change.

Tools:

Add new API tests to exercise pasting images with various other content types on macOS, and when dropping images
and HTML markup on iOS. See the WebCore ChangeLog for more detail.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/DataTransfer.html: Added.

Add a new API test harness that dumps various bits of information about a DataTransfer upon paste and drop.
While somewhat similar to some existing harnesses, this makes a distinction between the raw HTML data on the
pasteboard and the actual result of inserting said HTML into the DOM. This allows us to check that the HTML has
been sanitized, while making checks for the actual content of the HTML robust against inline style changes.

* TestWebKitAPI/Tests/WebKitCocoa/PasteImage.mm:
* TestWebKitAPI/Tests/WebKitCocoa/PasteMixedContent.mm: Added.

Add a new test suite to exercise pasting mixed content types. In these test cases, the pasteboard contains a
file, with some combination of plain text, rich text, and URLs.

(imagePath):
(writeTypesAndDataToPasteboard):

Add a helper to write a var-arg list of content types and data to the general NSPasteboard.

(setUpWebView):
(markupString):
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
(TestWebKitAPI::testIconImageData):
(TestWebKitAPI::TEST):
* TestWebKitAPI/cocoa/TestWKWebView.h:

Move a private declaration of -[WKWebView paste:] out to TestWKWebView.h, so that it can be shared across
multiple tests. Currently, it only resides in PasteImage.mm, but I need it in PasteMixedContent.mm as well.

LayoutTests:

Rebaseline some existing layout tests. We now expose "text/html" alongside "Files" on DataTransfer.types() in
some circumstances. This also provides some test coverage for ensuring that the paste codepath iOS allows the
page to request HTML, even if there are files on the pasteboard. See the WebCore ChangeLog for more detail.

* editing/pasteboard/data-transfer-item-list-add-file-multiple-times-expected.txt:
* editing/pasteboard/data-transfer-item-list-add-file-on-copy-expected.txt:
* editing/pasteboard/data-transfer-item-list-add-file-on-drag-expected.txt:

Adjust test expectations for the additional "text/html" type.

* editing/pasteboard/paste-image-does-not-reveal-file-url-expected.txt:
* editing/pasteboard/paste-image-does-not-reveal-file-url.html:

Instead of checking that types is [ "Files" ], just check that types contains "Files". On iOS, copying a
selected image does not also copy HTML, but on macOS it does; this covers both cases.

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

18 months ago[RenderTreeBuilder] Move RenderRubyAsInline/AsBlock::takeChild mutation to a RenderTr...
zalan@apple.com [Fri, 9 Feb 2018 23:23:02 +0000 (23:23 +0000)]
[RenderTreeBuilder] Move RenderRubyAsInline/AsBlock::takeChild mutation to a RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=182651
<rdar://problem/37405042>

Reviewed by Antti Koivisto.

No change in functionality.

* rendering/RenderRuby.cpp:
(WebCore::RenderRubyAsInline::takeChild):
(WebCore::RenderRubyAsBlock::takeChild):
(WebCore::isAnonymousRubyInlineBlock): Deleted.
(WebCore::isRubyChildForNormalRemoval): Deleted.
(WebCore::findRubyRunParent): Deleted.
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::takeChildFromRenderRubyAsInline):
(WebCore::RenderTreeBuilder::takeChildFromRenderRubyAsBlock):
* rendering/updating/RenderTreeBuilder.h:
* rendering/updating/RenderTreeBuilderRuby.cpp:
(WebCore::findRubyRunParent):
(WebCore::RenderTreeBuilder::Ruby::takeChild):
* rendering/updating/RenderTreeBuilderRuby.h:

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

18 months agoAssert that NSApp is not running in the WebProcess.
pvollan@apple.com [Fri, 9 Feb 2018 22:13:00 +0000 (22:13 +0000)]
Assert that NSApp is not running in the WebProcess.
https://bugs.webkit.org/show_bug.cgi?id=182553

Reviewed by Simon Fraser.

In WebCore, there are a few places where NSApp is referenced. Since the WebContent process
is no longer using the NSApplication run loop, and NSApp is no longer guaranteed to be
valid, we should make sure that the NSApp is not referenced by the WebContent process or
the Network process, by asserting that the NSApplication event loop is running when NSApp
is referenced. It is still ok for the UIProcess to reference NSApp. Adding these assert
will help catch NSApp references when the NSApplication run loop is not used.

Also, do not post a fake mouse event in PasteBoard::setDragImage when the NSApplication
run loop is not running, since this is only relevant in WK1.

No new tests, covered by existing tests.

* page/mac/EventHandlerMac.mm:
(WebCore::lastEventIsMouseUp):
(WebCore::EventHandler::sendFakeEventsAfterWidgetTracking):
* platform/mac/PasteboardMac.mm:
(WebCore::Pasteboard::setDragImage):

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

18 months ago[RenderTreeBuilder] Introduce RenderTreeBuilder to willBeDestoryed/removeFromParentAn...
zalan@apple.com [Fri, 9 Feb 2018 20:50:58 +0000 (20:50 +0000)]
[RenderTreeBuilder] Introduce RenderTreeBuilder to willBeDestoryed/removeFromParentAndDestroy
https://bugs.webkit.org/show_bug.cgi?id=182635
<rdar://problem/37377489>

Reviewed by Antti Koivisto.

This patch helps finding callsites where we don't have a RenderTreeBuilder instance.

No change in functionality.

* dom/Document.cpp:
(WebCore::Document::setFullScreenRenderer):
* dom/Document.h:
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::willBeDestroyed):
(WebCore::RenderBlock::takeChild):
* rendering/RenderBlock.h:
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::willBeDestroyed):
* rendering/RenderBlockFlow.h:
* rendering/RenderBox.cpp:
(WebCore::RenderBox::willBeDestroyed):
* rendering/RenderBox.h:
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::willBeDestroyed):
(WebCore::RenderBoxModelObject::removeAndDestroyAllContinuations):
* rendering/RenderBoxModelObject.h:
* rendering/RenderButton.cpp:
(WebCore::RenderButton::setText):
* rendering/RenderCounter.cpp:
(WebCore::RenderCounter::willBeDestroyed):
* rendering/RenderCounter.h:
* rendering/RenderElement.cpp:
(WebCore::RenderElement::willBeDestroyed):
* rendering/RenderElement.h:
* rendering/RenderEmbeddedObject.cpp:
(WebCore::RenderEmbeddedObject::willBeDestroyed):
* rendering/RenderEmbeddedObject.h:
* rendering/RenderFragmentedFlow.cpp:
(WebCore::RenderFragmentedFlow::willBeDestroyed):
* rendering/RenderFragmentedFlow.h:
* rendering/RenderFullScreen.cpp:
(WebCore::RenderFullScreen::willBeDestroyed):
(WebCore::RenderFullScreen::wrapNewRenderer):
(WebCore::RenderFullScreen::wrapExistingRenderer):
(WebCore::RenderFullScreen::unwrapRenderer):
* rendering/RenderFullScreen.h:
* rendering/RenderImage.cpp:
(WebCore::RenderImage::willBeDestroyed):
* rendering/RenderImage.h:
* rendering/RenderInline.cpp:
(WebCore::RenderInline::willBeDestroyed):
* rendering/RenderInline.h:
* rendering/RenderLayerModelObject.cpp:
(WebCore::RenderLayerModelObject::willBeDestroyed):
* rendering/RenderLayerModelObject.h:
* rendering/RenderListBox.cpp:
(WebCore::RenderListBox::willBeDestroyed):
* rendering/RenderListBox.h:
* rendering/RenderListItem.cpp:
(WebCore::RenderListItem::willBeDestroyed):
* rendering/RenderListItem.h:
* rendering/RenderListMarker.cpp:
(WebCore::RenderListMarker::willBeDestroyed):
* rendering/RenderListMarker.h:
* rendering/RenderMenuList.cpp:
(WebCore::RenderMenuList::willBeDestroyed):
* rendering/RenderMenuList.h:
* rendering/RenderMultiColumnFlow.cpp:
(WebCore::RenderMultiColumnFlow::handleSpannerRemoval):
* rendering/RenderObject.cpp:
(WebCore::RenderObject::removeFromParentAndDestroy):
(WebCore::RenderObject::willBeDestroyed):
(WebCore::RenderObject::destroy):
* rendering/RenderObject.h:
* rendering/RenderReplaced.cpp:
(WebCore::RenderReplaced::willBeDestroyed):
* rendering/RenderReplaced.h:
* rendering/RenderRuby.cpp:
(WebCore::RenderRubyAsInline::takeChild):
(WebCore::RenderRubyAsBlock::takeChild):
* rendering/RenderSearchField.cpp:
(WebCore::RenderSearchField::willBeDestroyed):
* rendering/RenderSearchField.h:
* rendering/RenderSnapshottedPlugIn.cpp:
(WebCore::RenderSnapshottedPlugIn::willBeDestroyed):
* rendering/RenderSnapshottedPlugIn.h:
* rendering/RenderText.cpp:
(WebCore::RenderText::willBeDestroyed):
* rendering/RenderText.h:
* rendering/RenderTextControlMultiLine.cpp:
(WebCore::RenderTextControlMultiLine::willBeDestroyed):
* rendering/RenderTextControlMultiLine.h:
* rendering/RenderTextFragment.cpp:
(WebCore::RenderTextFragment::willBeDestroyed):
(WebCore::RenderTextFragment::setText):
* rendering/RenderTextFragment.h:
* rendering/RenderVideo.cpp:
(WebCore::RenderVideo::willBeDestroyed):
* rendering/RenderVideo.h:
* rendering/RenderView.cpp:
(WebCore::RenderView::willBeDestroyed):
* rendering/RenderView.h:
* rendering/RenderWidget.cpp:
(WebCore::RenderWidget::willBeDestroyed):
* rendering/RenderWidget.h:
* rendering/svg/RenderSVGBlock.cpp:
(WebCore::RenderSVGBlock::willBeDestroyed):
* rendering/svg/RenderSVGBlock.h:
* rendering/svg/RenderSVGImage.cpp:
(WebCore::RenderSVGImage::willBeDestroyed):
* rendering/svg/RenderSVGImage.h:
* rendering/svg/RenderSVGInline.cpp:
(WebCore::RenderSVGInline::willBeDestroyed):
* rendering/svg/RenderSVGInline.h:
* rendering/svg/RenderSVGModelObject.cpp:
(WebCore::RenderSVGModelObject::willBeDestroyed):
* rendering/svg/RenderSVGModelObject.h:
* rendering/svg/RenderSVGResourceContainer.cpp:
(WebCore::RenderSVGResourceContainer::willBeDestroyed):
* rendering/svg/RenderSVGResourceContainer.h:
* rendering/svg/RenderSVGRoot.cpp:
(WebCore::RenderSVGRoot::willBeDestroyed):
* rendering/svg/RenderSVGRoot.h:
* rendering/svg/RenderSVGText.cpp:
(WebCore::RenderSVGText::willBeDestroyed):
* rendering/svg/RenderSVGText.h:
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::removeFromParentAndDestroyCleaningUpAnonymousWrappers):
* rendering/updating/RenderTreeBuilderList.cpp:
(WebCore::RenderTreeBuilder::List::updateItemMarker):
* rendering/updating/RenderTreeBuilderMultiColumn.cpp:
(WebCore::RenderTreeBuilder::MultiColumn::destroyFragmentedFlow):
* rendering/updating/RenderTreeBuilderRuby.cpp:
(WebCore::RenderTreeBuilder::Ruby::moveBlockChildren):

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

18 months agoWeb Inspector: Object.shallowEqual always fails when comparing array property values
mattbaker@apple.com [Fri, 9 Feb 2018 20:40:10 +0000 (20:40 +0000)]
Web Inspector: Object.shallowEqual always fails when comparing array property values
https://bugs.webkit.org/show_bug.cgi?id=182634
<rdar://problem/37374639>

Reviewed by Devin Rousso.

Source/WebInspectorUI:

Object.shallowEqual should use Array.shallowEqual when comparing property
values, since strictly comparing objects/arrays is only true if both
operands reference the same Object.

* UserInterface/Base/Utilities.js:
(value):

LayoutTests:

* inspector/unit-tests/object-utilities-expected.txt:
* inspector/unit-tests/object-utilities.html:

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

18 months ago[macOS, iOS] Expose OS marketing version in UserAgent
bfulgham@apple.com [Fri, 9 Feb 2018 19:19:41 +0000 (19:19 +0000)]
[macOS, iOS] Expose OS marketing version in UserAgent
https://bugs.webkit.org/show_bug.cgi?id=182629
<rdar://problem/37370975>

Reviewed by Daniel Bates.

Revert back to dynamically reading the operating system marketing version
rather than using a hard-coded version.

* page/cocoa/UserAgent.mm:
(WebCore::systemMarketingVersionForUserAgentString):

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

18 months ago[Web Animations] Refactor AnimationEffect and KeyframeEffect into AnimationEffectRead...
graouts@webkit.org [Fri, 9 Feb 2018 19:11:32 +0000 (19:11 +0000)]
[Web Animations] Refactor AnimationEffect and KeyframeEffect into AnimationEffectReadOnly, KeyframeEffectReadOnly and KeyframeEffect
https://bugs.webkit.org/show_bug.cgi?id=182608

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Update WPT expectations with progressions and updated failure points for all tests that involved
either AnimationEffectReadOnly or KeyframeEffectReadOnly.

* web-platform-tests/web-animations/interfaces/Animation/constructor-expected.txt:
* web-platform-tests/web-animations/interfaces/Animation/effect-expected.txt:
* web-platform-tests/web-animations/interfaces/AnimationEffectTiming/idlharness-expected.txt:
* web-platform-tests/web-animations/interfaces/Document/getAnimations-expected.txt:
* web-platform-tests/web-animations/interfaces/KeyframeEffect/constructor-expected.txt:
* web-platform-tests/web-animations/interfaces/KeyframeEffect/copy-constructor-expected.txt:
* web-platform-tests/web-animations/interfaces/KeyframeEffect/idlharness-expected.txt:

Source/WebCore:

Currently, we have an AnimationEffect class with read-write members and a KeyframeEffect subclass with read-write
members. The spec has an AnimationEffectReadOnly class, with read-only members, a KeyframeEffectReadOnly subclass,
with read-only members, and then the KeyframeEffect subclass (of KeyframeEffectReadOnly) with read-write members.

Likewise, currently we have an AnimationEffectTiming class with read-write members. While the spec has this class
as well, it also specifies a read-only AnimationEffectTimingReadOnly superclass.

In this patch we refactor the code to match the spec, which gives us a big boost in our WPT pass rate. The vast
majority of the code is just copied from one class to another verbatim. The limited actual code changes, all related
to the new subclassing, are:

- AnimationEffectTimingReadOnly is not actually read-only as far as WebCore is concerned, it actually exposes setters
for all of its properties, but the IDL for this class specifies all properties as read-only, so we match the spec. The
reason for this is that it is necessary to be able to set members of an AnimationEffectTimingReadOnly object based on
a Variant<double, KeyframeEffectOptions> provided to Element.animate() or the KeyframeEffectReadOnly and KeyframeEffect
constructors, and the logic to handle properties in such dictionaries is the same as the logic required to set individual
members in AnimationEffectTiming. So in essence, the sole role of AnimationTimingEffect is to provide an IDL interface
with read-write members, but the parent class is itself read-write as far as WebCore is concerned.

- AnimationEffectTimingReadOnly exposes a new setProperties() method which takes in a nullable Variant<double, KeyframeEffectOptions>
so that code that was previously specific to KeyframeEffect can be factored into this method and both the constructors of
KeyframeEffectReadOnly and KeyframeEffect can make use of it without code duplication.

- The AnimationEffectReadOnly constructor now takes an AnimationEffectTimingReadOnly as input since that class and
KeyframeEffectReadOnly expose an AnimationEffectTimingReadOnly object, while KeyframeEffect exposes an
AnimationEffectTiming read-write object. This allows the KeyframeEffect constructor to provide the right object type.

* CMakeLists.txt:
* DerivedSources.make:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* animation/AnimationEffectReadOnly.cpp: Renamed from Source/WebCore/animation/AnimationEffect.cpp.
(WebCore::AnimationEffectReadOnly::AnimationEffectReadOnly):
(WebCore::AnimationEffectReadOnly::localTime const):
(WebCore::AnimationEffectReadOnly::phase const):
(WebCore::AnimationEffectReadOnly::activeTime const):
(WebCore::AnimationEffectReadOnly::overallProgress const):
(WebCore::AnimationEffectReadOnly::simpleIterationProgress const):
(WebCore::AnimationEffectReadOnly::currentIteration const):
(WebCore::AnimationEffectReadOnly::currentDirection const):
(WebCore::AnimationEffectReadOnly::directedProgress const):
(WebCore::AnimationEffectReadOnly::transformedProgress const):
(WebCore::AnimationEffectReadOnly::iterationProgress const):
(WebCore::AnimationEffectReadOnly::getComputedTiming):
* animation/AnimationEffectReadOnly.h: Renamed from Source/WebCore/animation/AnimationEffect.h.
(WebCore::AnimationEffectReadOnly::isKeyframeEffectReadOnly const):
(WebCore::AnimationEffectReadOnly::timing const):
* animation/AnimationEffectReadOnly.idl: Copied from Source/WebCore/animation/AnimationEffect.idl.
* animation/AnimationEffectTiming.cpp:
(WebCore::AnimationEffectTiming::AnimationEffectTiming):
(WebCore::AnimationEffectTiming::setIterationStart): Deleted.
(WebCore::AnimationEffectTiming::setIterations): Deleted.
(WebCore::AnimationEffectTiming::bindingsDuration const): Deleted.
(WebCore::AnimationEffectTiming::setBindingsDuration): Deleted.
(WebCore::AnimationEffectTiming::endTime const): Deleted.
(WebCore::AnimationEffectTiming::activeDuration const): Deleted.
(WebCore::AnimationEffectTiming::setEasing): Deleted.
* animation/AnimationEffectTiming.h:
(): Deleted.
* animation/AnimationEffectTiming.idl:
* animation/AnimationEffectTimingReadOnly.cpp: Copied from Source/WebCore/animation/AnimationEffectTiming.cpp.
(WebCore::AnimationEffectTimingReadOnly::create):
(WebCore::AnimationEffectTimingReadOnly::AnimationEffectTimingReadOnly):
(WebCore::AnimationEffectTimingReadOnly::~AnimationEffectTimingReadOnly):
(WebCore::AnimationEffectTimingReadOnly::setProperties):
(WebCore::AnimationEffectTimingReadOnly::setIterationStart):
(WebCore::AnimationEffectTimingReadOnly::setIterations):
(WebCore::AnimationEffectTimingReadOnly::bindingsDuration const):
(WebCore::AnimationEffectTimingReadOnly::setBindingsDuration):
(WebCore::AnimationEffectTimingReadOnly::setEasing):
(WebCore::AnimationEffectTimingReadOnly::endTime const):
(WebCore::AnimationEffectTimingReadOnly::activeDuration const):
* animation/AnimationEffectTimingReadOnly.h: Copied from Source/WebCore/animation/AnimationEffectTiming.h.
(WebCore::AnimationEffectTimingReadOnly::isAnimationEffectTiming const):
(WebCore::AnimationEffectTimingReadOnly::bindingsDelay const):
(WebCore::AnimationEffectTimingReadOnly::setBindingsDelay):
(WebCore::AnimationEffectTimingReadOnly::bindingsEndDelay const):
(WebCore::AnimationEffectTimingReadOnly::setBindingsEndDelay):
(WebCore::AnimationEffectTimingReadOnly::delay const):
(WebCore::AnimationEffectTimingReadOnly::setDelay):
(WebCore::AnimationEffectTimingReadOnly::endDelay const):
(WebCore::AnimationEffectTimingReadOnly::setEndDelay):
(WebCore::AnimationEffectTimingReadOnly::fill const):
(WebCore::AnimationEffectTimingReadOnly::setFill):
(WebCore::AnimationEffectTimingReadOnly::iterationStart const):
(WebCore::AnimationEffectTimingReadOnly::iterations const):
(WebCore::AnimationEffectTimingReadOnly::iterationDuration const):
(WebCore::AnimationEffectTimingReadOnly::setIterationDuration):
(WebCore::AnimationEffectTimingReadOnly::direction const):
(WebCore::AnimationEffectTimingReadOnly::setDirection):
(WebCore::AnimationEffectTimingReadOnly::easing const):
(WebCore::AnimationEffectTimingReadOnly::timingFunction const):
(WebCore::AnimationEffectTimingReadOnly::classType const):
* animation/AnimationEffectTimingReadOnly.idl: Renamed from Source/WebCore/animation/AnimationEffect.idl.
* animation/AnimationTimeline.h:
* animation/KeyframeEffect.cpp:
(WebCore::KeyframeEffect::create):
(WebCore::KeyframeEffect::KeyframeEffect):
(WebCore::IDLAttributeNameToAnimationPropertyName): Deleted.
(WebCore::CSSPropertyIDToIDLAttributeName): Deleted.
(WebCore::computeMissingKeyframeOffsets): Deleted.
(WebCore::processIterableKeyframes): Deleted.
(WebCore::processKeyframeLikeObject): Deleted.
(WebCore::processPropertyIndexedKeyframes): Deleted.
(WebCore::KeyframeEffect::getKeyframes): Deleted.
(WebCore::KeyframeEffect::processKeyframes): Deleted.
(WebCore::KeyframeEffect::computeStackingContextImpact): Deleted.
(WebCore::KeyframeEffect::apply): Deleted.
(WebCore::KeyframeEffect::shouldRunAccelerated): Deleted.
(WebCore::KeyframeEffect::getAnimatedStyle): Deleted.
(WebCore::KeyframeEffect::setAnimatedPropertiesInStyle): Deleted.
(WebCore::KeyframeEffect::startOrStopAccelerated): Deleted.
(WebCore::KeyframeEffect::renderer const): Deleted.
(WebCore::KeyframeEffect::currentStyle const): Deleted.
* animation/KeyframeEffect.h:
* animation/KeyframeEffect.idl:
* animation/KeyframeEffectReadOnly.cpp: Copied from Source/WebCore/animation/KeyframeEffect.cpp.
(WebCore::IDLAttributeNameToAnimationPropertyName):
(WebCore::CSSPropertyIDToIDLAttributeName):
(WebCore::computeMissingKeyframeOffsets):
(WebCore::processIterableKeyframes):
(WebCore::processKeyframeLikeObject):
(WebCore::processPropertyIndexedKeyframes):
(WebCore::KeyframeEffectReadOnly::create):
(WebCore::KeyframeEffectReadOnly::KeyframeEffectReadOnly):
(WebCore::KeyframeEffectReadOnly::getKeyframes):
(WebCore::KeyframeEffectReadOnly::processKeyframes):
(WebCore::KeyframeEffectReadOnly::computeStackingContextImpact):
(WebCore::KeyframeEffectReadOnly::apply):
(WebCore::KeyframeEffectReadOnly::shouldRunAccelerated):
(WebCore::KeyframeEffectReadOnly::getAnimatedStyle):
(WebCore::KeyframeEffectReadOnly::setAnimatedPropertiesInStyle):
(WebCore::KeyframeEffectReadOnly::startOrStopAccelerated):
(WebCore::KeyframeEffectReadOnly::renderer const):
(WebCore::KeyframeEffectReadOnly::currentStyle const):
* animation/KeyframeEffectReadOnly.h: Copied from Source/WebCore/animation/KeyframeEffect.h.
(WebCore::KeyframeEffectReadOnly::~KeyframeEffectReadOnly):
(WebCore::KeyframeEffectReadOnly::target const):
(WebCore::KeyframeEffectReadOnly::iterationComposite const):
(WebCore::KeyframeEffectReadOnly::composite const):
(WebCore::KeyframeEffectReadOnly::isRunningAccelerated const):
* animation/KeyframeEffectReadOnly.idl: Copied from Source/WebCore/animation/KeyframeEffect.idl.
* animation/WebAnimation.cpp:
(WebCore::WebAnimation::create):
(WebCore::WebAnimation::setEffect):
* animation/WebAnimation.h:
* animation/WebAnimation.idl:
* bindings/js/JSAnimationEffectReadOnlyCustom.cpp: Copied from Source/WebCore/bindings/js/JSAnimationEffectCustom.cpp.
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
* bindings/js/JSAnimationEffectTimingReadOnlyCustom.cpp: Renamed from Source/WebCore/bindings/js/JSAnimationEffectCustom.cpp.
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
* bindings/js/JSCustomEventCustom.cpp:
(WebCore::JSCustomEvent::detail const): Fix an error introduced in webkit.org/b/179591.
* bindings/js/JSWebAnimationCustom.cpp:
(WebCore::constructJSWebAnimation):
* bindings/js/WebCoreBuiltinNames.h:

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

18 months ago[Payment Request] Crash in PaymentRequest::canMakePayment() when Apple Pay payment...
aestes@apple.com [Fri, 9 Feb 2018 19:07:28 +0000 (19:07 +0000)]
[Payment Request] Crash in PaymentRequest::canMakePayment() when Apple Pay payment method data is missing required fields
https://bugs.webkit.org/show_bug.cgi?id=182631

Reviewed by Mark Lam.

Source/WebCore:

PaymentRequest::canMakePayment() needs to parse each payment method's serialized data to
determine if it is a supported payment method. If parsing fails by raising an exception, we
intend to skip over that payment method and try the next one. If all payment method data
fail to parse, we resolve the returned promise with false. At no point do we intend to
propagate the parsing exception up to the calling script, however.

Even though we intend to swallow any exceptions from parsing, we failed to clear the
JavaScript VM's exception state. The next time WebCore tries to execute JavaScript, a
release assertion is raised due to seeing an unexpected exception in the VM.

Fix this by using a CatchScope in PaymentRequest::canMakePayment(), and calling
CatchScope::clearException() in the places we intend to swallow exceptions.

Added a test case to http/tests/paymentrequest/payment-request-canmakepayment-method.https.html.

* Modules/paymentrequest/PaymentRequest.cpp:
(WebCore::PaymentRequest::canMakePayment):

LayoutTests:

* http/tests/paymentrequest/payment-request-canmakepayment-method.https-expected.txt:
* http/tests/paymentrequest/payment-request-canmakepayment-method.https.html:

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

18 months agoUse REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR on any non-Windows port.
ross.kirsling@sony.com [Fri, 9 Feb 2018 18:59:54 +0000 (18:59 +0000)]
Use REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR on any non-Windows port.
https://bugs.webkit.org/show_bug.cgi?id=182623

Reviewed by Alex Christensen.

PerformanceTests:

* StitchMarker/wtf/Platform.h:
Simplify #if.

Source/WTF:

* wtf/Platform.h:
Simplify #if.

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

18 months agoUpdate TestExpectations for fast/forms/textarea/textarea-state-restore.html
ryanhaddad@apple.com [Fri, 9 Feb 2018 18:47:37 +0000 (18:47 +0000)]
Update TestExpectations for fast/forms/textarea/textarea-state-restore.html
https://bugs.webkit.org/show_bug.cgi?id=90980

Unreviewed test gardening.

* TestExpectations:
* platform/wk2/TestExpectations:

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

18 months agoFollow-up fixes after moving WebVideoFullscreenController from WebCore to WebKitLegacy.
pvollan@apple.com [Fri, 9 Feb 2018 18:40:08 +0000 (18:40 +0000)]
Follow-up fixes after moving WebVideoFullscreenController from WebCore to WebKitLegacy.
https://bugs.webkit.org/show_bug.cgi?id=182641

Reviewed by Dan Bernstein.

Remove incorrect use of WEBCORE_EXPORT and namespace WebCore after the files were moved in
https://trac.webkit.org/changeset/228308.

* WebView/WebVideoFullscreenController.h:
* WebView/WebVideoFullscreenHUDWindowController.mm:
* WebView/WebWindowAnimation.h:
* WebView/WebWindowAnimation.mm:
(WebCore::WebWindowAnimationDurationFromDuration): Deleted.
(WebCore::scaledRect): Deleted.
(WebCore::squaredDistance): Deleted.

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

18 months ago[RenderTreeBuilder] Move multicolumn descendant/sibling removal logic to RenderTreeBu...
zalan@apple.com [Fri, 9 Feb 2018 18:31:29 +0000 (18:31 +0000)]
[RenderTreeBuilder] Move multicolumn descendant/sibling removal logic to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=182628
<rdar://problem/37369528>

Reviewed by Antti Koivisto.

No change in functionality

* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::takeChild):
* rendering/RenderFragmentedFlow.h:
* rendering/RenderMultiColumnFlow.cpp:
(WebCore::RenderMultiColumnFlow::handleSpannerRemoval): Deleted.
(WebCore::RenderMultiColumnFlow::fragmentedFlowRelativeWillBeRemoved): Deleted.
* rendering/RenderMultiColumnFlow.h:
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::multiColumnRelativeWillBeRemoved):
* rendering/updating/RenderTreeBuilder.h:
* rendering/updating/RenderTreeBuilderMultiColumn.cpp:
(WebCore::RenderTreeBuilder::MultiColumn::handleSpannerRemoval):
(WebCore::RenderTreeBuilder::MultiColumn::multiColumnRelativeWillBeRemoved):
* rendering/updating/RenderTreeBuilderMultiColumn.h:

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

18 months agoAdd support for cache storage of blob response
commit-queue@webkit.org [Fri, 9 Feb 2018 18:27:13 +0000 (18:27 +0000)]
Add support for cache storage of blob response
https://bugs.webkit.org/show_bug.cgi?id=182637

Patch by Youenn Fablet <youenn@apple.com> on 2018-02-09
Reviewed by Brady Eidson.

LayoutTests/imported/w3c:

* web-platform-tests/service-workers/cache-storage/script-tests/cache-put.js:
(cache_test.async):
* web-platform-tests/service-workers/cache-storage/serviceworker/cache-put.https-expected.txt:
* web-platform-tests/service-workers/cache-storage/window/cache-put.https-expected.txt:
* web-platform-tests/service-workers/cache-storage/worker/cache-put.https-expected.txt:
* web-platform-tests/service-workers/cache-storage/window/cache-put.https.html:

Source/WebCore:

Covered by updated WPT test.
When putting a blob response in cache, create a readable stream to easily get the body.
Make clear that caching form data is not supported.

* Modules/cache/DOMCache.cpp:
(WebCore::DOMCache::put):
* Modules/fetch/FetchBody.h:
(WebCore::FetchBody::isBlob const):
(WebCore::FetchBody::isFormData const):
* Modules/fetch/FetchResponse.h:

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

18 months agoMake CoreAudioCaptureSource error logging be release logging
commit-queue@webkit.org [Fri, 9 Feb 2018 18:10:53 +0000 (18:10 +0000)]
Make CoreAudioCaptureSource error logging be release logging
https://bugs.webkit.org/show_bug.cgi?id=182614

Patch by Youenn Fablet <youenn@apple.com> on 2018-02-09
Reviewed by Eric Carlson.

No change of behavior.

* platform/mediastream/mac/CoreAudioCaptureSource.cpp:
(WebCore::CoreAudioSharedUnit::addEchoCancellationSource):
(WebCore::CoreAudioSharedUnit::setupAudioUnit):
(WebCore::CoreAudioSharedUnit::configureMicrophoneProc):
(WebCore::CoreAudioSharedUnit::configureSpeakerProc):
(WebCore::CoreAudioSharedUnit::checkTimestamps):
(WebCore::CoreAudioSharedUnit::provideSpeakerData):
(WebCore::CoreAudioSharedUnit::processMicrophoneSamples):
(WebCore::CoreAudioSharedUnit::cleanupAudioUnit):
(WebCore::CoreAudioSharedUnit::reconfigureAudioUnit):
(WebCore::CoreAudioSharedUnit::startInternal):
(WebCore::CoreAudioSharedUnit::verifyIsCapturing):
(WebCore::CoreAudioSharedUnit::stopInternal):
(WebCore::CoreAudioSharedUnit::defaultInputDevice):

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

18 months agoImprove of string.h include after r228317.
clopez@igalia.com [Fri, 9 Feb 2018 18:03:02 +0000 (18:03 +0000)]
Improve of string.h include after r228317.
https://bugs.webkit.org/show_bug.cgi?id=182642

Reviewed by Mark Lam.

* bmalloc/Algorithm.h: Avoid an architecture-specific #include.

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

18 months agoAdd a way to check if a host is an IP address
commit-queue@webkit.org [Fri, 9 Feb 2018 17:32:57 +0000 (17:32 +0000)]
Add a way to check if a host is an IP address
https://bugs.webkit.org/show_bug.cgi?id=182427

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2018-02-09
Reviewed by Alex Christensen.

Source/WebCore:

There are several places where this is needed. We currently just assume that any host ending in a digit is an IP
address, except in PublicSuffix where platform specific code is used. This patch adds URL::hostIsIPAddress()
platform specific implementations, falling back to current assumption if there isn't an implementation for the
platform.

* page/OriginAccessEntry.cpp:
(WebCore::OriginAccessEntry::OriginAccessEntry): Use URL::hostIsIPAddress().
* platform/URL.cpp:
(WebCore::URL::hostIsIPAddress): Fallback implementation.
* platform/URL.h:
* platform/mac/PublicSuffixMac.mm:
(WebCore::topPrivatelyControlledDomain): Use URL::hostIsIPAddress().
* platform/mac/URLMac.mm:
(WebCore::URL::hostIsIPAddress): Move implementation from PublicSuffixMac.mm.
* platform/network/curl/CookieUtil.cpp:
(WebCore::CookieUtil::isIPAddress): Use URL::hostIsIPAddress().
* platform/soup/URLSoup.cpp:
(WebCore::URL::hostIsIPAddress): Use g_hostname_is_ip_address().

Tools:

Add unit test for URL::hostIsIPAddress().

* TestWebKitAPI/Tests/WebCore/URL.cpp:
(TestWebKitAPI::TEST_F):

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

18 months agoUnreviewed 32-bit build fix after <https://trac.webkit.org/changeset/228308>.
pvollan@apple.com [Fri, 9 Feb 2018 17:26:47 +0000 (17:26 +0000)]
Unreviewed 32-bit build fix after <https://trac.webkit.org/changeset/228308>.

* WebView/WebWindowAnimation.mm:
(-[WebWindowScaleAnimation additionalDurationNeededToReachFinalFrame]):

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

18 months ago[GStreamer][WebAudio] Winamp2-js woes
philn@webkit.org [Fri, 9 Feb 2018 16:48:53 +0000 (16:48 +0000)]
[GStreamer][WebAudio] Winamp2-js woes
https://bugs.webkit.org/show_bug.cgi?id=182612

Reviewed by Xabier Rodriguez Calvar and Carlos Alberto Lopez Perez.

Source/WebCore:

Test: webaudio/silence-after-playback.html

* platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:
(WebCore::copyGStreamerBuffersToAudioChannel): Clear the bus if
the adapter can't provide enough data. This prevents a nasty noise
after playing songs in Winamp.
(WebCore::AudioSourceProviderGStreamer::setClient): No need to set
the client more than once, this fixes runtime warnings.

LayoutTests:

* webaudio/silence-after-playback-expected.wav: Added.
* webaudio/silence-after-playback.html: Added.

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

18 months ago[RenderTreeBuilder] Move multicolumn spanner mutation logic to RenderTreeBuilder
zalan@apple.com [Fri, 9 Feb 2018 15:05:15 +0000 (15:05 +0000)]
[RenderTreeBuilder] Move multicolumn spanner mutation logic to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=182627
<rdar://problem/37367284>

Reviewed by Antti Koivisto.

Move spanner triggered mutation logic to RenderTreeBuilder.

No change in functionality.

* rendering/RenderFragmentedFlow.h:
* rendering/RenderMultiColumnFlow.cpp:
(WebCore::RenderMultiColumnFlow::isColumnSpanningDescendant const):
(WebCore::findSetRendering): Deleted.
(WebCore::isValidColumnSpanner): Deleted.
(WebCore::spannerPlacehoderCandidate): Deleted.
(WebCore::RenderMultiColumnFlow::processPossibleSpannerDescendant): Deleted.
(WebCore::RenderMultiColumnFlow::fragmentedFlowDescendantInserted): Deleted.
* rendering/RenderMultiColumnFlow.h:
* rendering/RenderObject.cpp:
(WebCore::RenderObject::insertedIntoTree):
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::multiColumnDescendantInserted):
* rendering/updating/RenderTreeBuilder.h:
* rendering/updating/RenderTreeBuilderMultiColumn.cpp:
(WebCore::findSetRendering):
(WebCore::spannerPlacehoderCandidate):
(WebCore::isValidColumnSpanner):
(WebCore::RenderTreeBuilder::MultiColumn::multiColumnDescendantInserted):
(WebCore::RenderTreeBuilder::MultiColumn::processPossibleSpannerDescendant):
* rendering/updating/RenderTreeBuilderMultiColumn.h:

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

18 months ago[css-align] Implement the new behavior of 'legacy' for justify-items
jfernandez@igalia.com [Fri, 9 Feb 2018 14:57:12 +0000 (14:57 +0000)]
[css-align] Implement the new behavior of 'legacy' for justify-items
https://bugs.webkit.org/show_bug.cgi?id=172712

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Rebaselined Default Alignment related tests because of the new 'legacy' value.

* web-platform-tests/css/css-align/content-distribution/place-content-shorthand-004-expected.txt:
* web-platform-tests/css/css-align/content-distribution/place-content-shorthand-004.html:
* web-platform-tests/css/css-align/default-alignment/parse-justify-items-002-expected.txt:
* web-platform-tests/css/css-align/default-alignment/parse-justify-items-002.html:
* web-platform-tests/css/css-align/default-alignment/parse-justify-items-004-expected.txt:
* web-platform-tests/css/css-align/default-alignment/place-items-shorthand-004-expected.txt:
* web-platform-tests/css/css-align/default-alignment/place-items-shorthand-004.html:

Source/WebCore:

The syntax of the 'justify-items' property accepts a new 'legacy' value,
replacing the 'auto' value which is now parsed as invalid.

https://github.com/w3c/csswg-drafts/issues/1318

This change affects also to the 'place-items' shorthand, which doesn't
accept 'auto' and, for the time being, neither 'legacy'.

Since the new value 'legacy' is also the default value, I don't expect
this change to break content of sites currently using the 'justify-items'
property.

No new tests, rebaselined existing test.

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::valueForItemPositionWithOverflowAlignment):
(WebCore::ComputedStyleExtractor::valueForPropertyinStyle):
* css/CSSPrimitiveValueMappings.h:
(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator ItemPosition const):
* css/CSSProperties.json:
* css/StyleResolver.cpp:
(WebCore::StyleResolver::adjustRenderStyle):
* css/parser/CSSPropertyParser.cpp:
(WebCore::isAuto):
(WebCore::isNormalOrStretch):
(WebCore::consumeSelfPositionOverflowPosition):
(WebCore::consumeJustifyItems):
(WebCore::consumeSimplifiedDefaultPosition):
(WebCore::consumeSimplifiedSelfPosition):
(WebCore::CSSPropertyParser::consumePlaceItemsShorthand):
(WebCore::CSSPropertyParser::consumePlaceSelfShorthand):
* rendering/RenderFlexibleBox.cpp:
(WebCore::alignmentOffset):
* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::columnAxisPositionForChild const):
(WebCore::RenderGrid::rowAxisPositionForChild const):
* rendering/style/RenderStyle.cpp:
(WebCore::resolvedSelfAlignment):
(WebCore::RenderStyle::resolvedJustifyItems const):
* rendering/style/RenderStyle.h:
(WebCore::RenderStyle::initialJustifyItems):
* rendering/style/RenderStyleConstants.h:
* rendering/style/StyleRareNonInheritedData.cpp:
(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):

LayoutTests:

Rebaselined Default Alignment related tests because of the new 'legacy' value.

* css3/parse-alignment-of-root-elements.html:
* css3/parse-place-items.html:
* fast/css/parse-justify-items.html:

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

18 months agoFix build on ARMv7 traditional JSCOnly bot after r228306
clopez@igalia.com [Fri, 9 Feb 2018 13:50:39 +0000 (13:50 +0000)]
Fix build on ARMv7 traditional JSCOnly bot after r228306
https://bugs.webkit.org/show_bug.cgi?id=182563

Unreviewed build fix.

* assembler/AssemblerBuffer.h:

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

18 months agoFix build for !BCPU(X86_64) after r228306
clopez@igalia.com [Fri, 9 Feb 2018 13:37:40 +0000 (13:37 +0000)]
Fix build for !BCPU(X86_64) after r228306
https://bugs.webkit.org/show_bug.cgi?id=182563

Unreviewed build fix.

* bmalloc/Algorithm.h:

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

18 months ago[EME][GStreamer] Add support for encrypted caps in GStreamerUtilities
commit-queue@webkit.org [Fri, 9 Feb 2018 12:11:10 +0000 (12:11 +0000)]
[EME][GStreamer] Add support for encrypted caps in GStreamerUtilities
https://bugs.webkit.org/show_bug.cgi?id=181990

Patch by Yacine Bandou <yacine.bandou_ext@softathome.com> on 2018-02-09
Reviewed by Xabier Rodriguez-Calvar.

Add the support of encrypted caps in GStreamerUtilities.
Refactor the manner that the caps are handled, such as how to extract the resolution
from the video caps or how to check if the caps are encrypted.

The attachTrack function in PlaybackPipeline doesn't need the "structure" parameter,
it is already included in the "caps" parameter.

Replace the "mediaType" parameter by the "caps" parameter in reattachTrack function,
it allows to use the new functions that handle the caps in GStreamerUtilities.

Tests:
    media/encrypted-media/clearKey/clearKey-cenc-audio-playback-mse.html
    media/encrypted-media/clearKey/clearKey-cenc-video-playback-mse.html

* platform/graphics/gstreamer/GStreamerUtilities.cpp:
(WebCore::getVideoSizeAndFormatFromCaps): Add the support of video encrypted caps.
(WebCore::getVideoResolutionFromCaps):
(WebCore::capsMediaType):
(WebCore::doCapsHaveType):
(WebCore::areEncryptedCaps): Add a new functions in order to handle the caps properly.
* platform/graphics/gstreamer/GStreamerUtilities.h:
* platform/graphics/gstreamer/mse/AppendPipeline.cpp:
(WebCore::AppendPipeline::parseDemuxerSrcPadCaps):
* platform/graphics/gstreamer/mse/GStreamerMediaDescription.cpp:
(WebCore::GStreamerMediaDescription::codec const):
(WebCore::GStreamerMediaDescription::isVideo const):
(WebCore::GStreamerMediaDescription::isAudio const):
* platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
(WebCore::MediaPlayerPrivateGStreamerMSE::trackDetected):
* platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:
(WebCore::PlaybackPipeline::attachTrack):
(WebCore::PlaybackPipeline::reattachTrack):
* platform/graphics/gstreamer/mse/PlaybackPipeline.h:
* platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:
(webKitMediaSrcUpdatePresentationSize): Refactor some parts by using the new added functions.

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

18 months ago[GStreamer] Layout test fast/replaced/border-radius-clip.html crashes with GStreamer...
philn@webkit.org [Fri, 9 Feb 2018 09:14:59 +0000 (09:14 +0000)]
[GStreamer] Layout test fast/replaced/border-radius-clip.html crashes with GStreamer-CRITICAL **: gst_segment_to_stream_time: assertion 'segment->format == format' failed in gst_segment_to_stream_time()
https://bugs.webkit.org/show_bug.cgi?id=176802

Source/WebCore:

Reviewed by Xabier Rodriguez Calvar.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::load): Prevent the player from loading animated gifs.

Tools:

Reviewed by Xabier Rodriguez-Calvar.

* gstreamer/jhbuild.modules:
* gstreamer/patches/gst-plugins-good-0001-gstgdkpixbufdec-stop-pretending-to-decode-gifs.patch: Added.

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

18 months ago[JHBuild] Update Mesa to version 17
philn@webkit.org [Fri, 9 Feb 2018 09:12:11 +0000 (09:12 +0000)]
[JHBuild] Update Mesa to version 17
https://bugs.webkit.org/show_bug.cgi?id=182599

Reviewed by Carlos Alberto Lopez Perez.

* gtk/jhbuild.modules: Update Mesa (and its dependencies, hopefully) to version 17.3.3.

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

18 months agoMove compiled selectors to StyleRule
antti@apple.com [Fri, 9 Feb 2018 09:11:05 +0000 (09:11 +0000)]
Move compiled selectors to StyleRule
https://bugs.webkit.org/show_bug.cgi?id=182602

Reviewed by Zalan Bujtas.

Currently they are owned by RuleData. Several RuleData objects can refer to the same StyleRule, requiring recompilation.
Compiled selectors are context-independent so they can be shared between all clients.

* WebCore.xcodeproj/project.pbxproj:
* css/CSSSelectorList.cpp:
(WebCore::CSSSelectorList::listSize const):

Compute the number of complex selectors on the list.

* css/CSSSelectorList.h:
* css/DocumentRuleSets.cpp:
(WebCore::makeRuleSet):
(WebCore::DocumentRuleSets::classInvalidationRuleSets const):

Pass around list index along with the selector index (compiled selectors are found by list index).

* css/ElementRuleCollector.cpp:
(WebCore::ElementRuleCollector::ruleMatches):
* css/RuleSet.cpp:
(WebCore::RuleData::RuleData):
* css/RuleSet.h:
(WebCore::RuleData::compilationStatus const): Deleted.
(WebCore::RuleData::compiledSelectorCodeRef const): Deleted.
(WebCore::RuleData::setCompiledSelector const): Deleted.
(WebCore::RuleData::~RuleData): Deleted.
(WebCore::RuleData::compiledSelectorUsed const): Deleted.
* css/StyleRule.cpp:
(WebCore::StyleRule::StyleRule):
* css/StyleRule.h:

    Add CompiledSelector member.

* cssjit/CompiledSelector.h: Added.

    Move to a header of its own to keeps dependencies simple.

(WebCore::SelectorCompilationStatus::SelectorCompilationStatus):
(WebCore::SelectorCompilationStatus::operator Status const):
* cssjit/SelectorCompiler.h:
(): Deleted.
(WebCore::SelectorCompilationStatus::SelectorCompilationStatus): Deleted.
(WebCore::SelectorCompilationStatus::operator Status const): Deleted.

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

18 months ago[Web Animations] Always expose "composite" in output of getKeyframes()
graouts@webkit.org [Fri, 9 Feb 2018 07:31:16 +0000 (07:31 +0000)]
[Web Animations] Always expose "composite" in output of getKeyframes()
https://bugs.webkit.org/show_bug.cgi?id=182600

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Update expected results to account for a number of progressions.

* web-platform-tests/web-animations/interfaces/Animatable/animate-expected.txt:
* web-platform-tests/web-animations/interfaces/KeyframeEffect/composite-expected.txt:
* web-platform-tests/web-animations/interfaces/KeyframeEffect/setKeyframes-expected.txt:

Source/WebCore:

The Web Animations spec has changed and whereas the output of getKeyframes() would not feature the "composite" property
for "null" values, it now lists "composite" in all cases.

To support this, we needed to fix an issue in the code generator such that a "null" default value for an optional enum
type was supported.

* animation/KeyframeEffect.cpp:
(WebCore::KeyframeEffect::getKeyframes):
* animation/KeyframeEffect.h:
* animation/KeyframeEffect.idl:
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateDefaultValue):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::convertDictionary<TestObj::Dictionary>):
(WebCore::convertDictionaryToJS):
* bindings/scripts/test/TestObj.idl:

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

18 months ago[JSC] Update Test262 to Feb 9 version
utatane.tea@gmail.com [Fri, 9 Feb 2018 06:46:20 +0000 (06:46 +0000)]
[JSC] Update Test262 to Feb 9 version
https://bugs.webkit.org/show_bug.cgi?id=182468

Reviewed by Saam Barati.

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

18 months agoCoreAudioCaptureSourceIOSListener should be a WebProcess singleton
commit-queue@webkit.org [Fri, 9 Feb 2018 05:05:22 +0000 (05:05 +0000)]
CoreAudioCaptureSourceIOSListener should be a WebProcess singleton
https://bugs.webkit.org/show_bug.cgi?id=182606
<rdar://problem/37355283>

Patch by Youenn Fablet <youenn@apple.com> on 2018-02-08
Reviewed by Eric Carlson.

Not testable right now as this relies on iOS specific Core Audio stack.
Efforts should be made to somehow mock that part and mock interruptions.

Made CoreAudioCaptureSourceFactoryIOS responsible to receive iOS interruption messages.
Before the patch, individual capture sources were receiving these messages.
When there is only one capture source per process this is fine but with more capture sources,
this is messing up things as they all share the same shared unit and we would try to interrupt it or resume it several times.

Also, if we are suspended and there is no more capture source, the shared unit will remain suspended indefinitely, as we will
not process the interruption messages.
With the patch, we always process the messages.
We still go through the active source as done now to limit the changes.
In case of no source, we go to the shared unit.
In the future, we should directly go to the shared unit and clients of the shared unit should see their state being updated.

As a way to prevent staying suspended on iOS, we unsuspend ourselves in CoreAudioCaptureSource constructor.
This is fine as this constructor is only called when getUserMedia grants access to the camera which always goes to the UIProcess.
And the UIProcess is only processing getUserMedia calls if the WebProcess is foregrounded.

* platform/mediastream/ios/CoreAudioCaptureSourceIOS.h:
* platform/mediastream/ios/CoreAudioCaptureSourceIOS.mm:
(-[WebCoreAudioCaptureSourceIOSListener initWithCallback:]):
(WebCore::CoreAudioCaptureSourceFactoryIOS::CoreAudioCaptureSourceFactoryIOS):
(WebCore::CoreAudioCaptureSourceFactoryIOS::~CoreAudioCaptureSourceFactoryIOS):
(WebCore::CoreAudioCaptureSourceFactory::singleton):
* platform/mediastream/mac/CoreAudioCaptureSource.cpp:
(WebCore::CoreAudioCaptureSourceFactory::singleton):
(WebCore::CoreAudioCaptureSource::create):
(WebCore::CoreAudioCaptureSourceFactory::beginInterruption):
(WebCore::CoreAudioCaptureSourceFactory::endInterruption):
(WebCore::CoreAudioCaptureSourceFactory::scheduleReconfiguration):
(WebCore::CoreAudioCaptureSource::factory):
(WebCore::CoreAudioCaptureSource::CoreAudioCaptureSource):
(WebCore::CoreAudioCaptureSource::~CoreAudioCaptureSource):
(WebCore::CoreAudioCaptureSource::startProducingData):
(WebCore::CoreAudioCaptureSource::scheduleReconfiguration):
(WebCore::CoreAudioCaptureSource::beginInterruption):
(WebCore::CoreAudioCaptureSource::endInterruption):
* platform/mediastream/mac/CoreAudioCaptureSource.h:
(WebCore::CoreAudioCaptureSourceFactory::setCoreAudioActiveSource):
(WebCore::CoreAudioCaptureSourceFactory::unsetCoreAudioActiveSource):
(WebCore::CoreAudioCaptureSourceFactory::coreAudioActiveSource):

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

18 months agoThere should be a way to disable [OverrideBuiltins] behavior in a given DOMWrapperWorld
cdumez@apple.com [Fri, 9 Feb 2018 04:16:52 +0000 (04:16 +0000)]
There should be a way to disable [OverrideBuiltins] behavior in a given DOMWrapperWorld
https://bugs.webkit.org/show_bug.cgi?id=182524
<rdar://problem/9057327>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Add new flag on DOMWrapperWorld indicating if the [OverrideBuiltins] behavior should
be enabled in this world or not. The behavior is enabled by default for Web-compatibility.
This flag is queried in accessVisibleNamedProperty() when doing the named property
lookup.

Covered by new API test.

* bindings/js/DOMWrapperWorld.h:
(WebCore::DOMWrapperWorld::disableOverrideBuiltinsBehavior):
(WebCore::DOMWrapperWorld::shouldDisableOverrideBuiltinsBehavior const):
* bindings/js/JSDOMAbstractOperations.h:
(WebCore::accessVisibleNamedProperty):

Source/WebKit:

Add C API on WKBundleScriptWorld and Cocoa API on WKWebProcessPlugInScriptWorld to
disable the [OverrideBuiltins] behavior on a given script world.

The [OverrideBuiltins] behavior [1] is legacy behavior that is needed for Web compatibility
but allowing the client to disable this behavior in a given world makes development easier
and running injected script on uncontrolled content a lot more reliable.

[1] https://heycam.github.io/webidl/#OverrideBuiltins

* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm:
(-[WKWebProcessPlugInScriptWorld disableOverrideBuiltinsBehavior]):
* WebProcess/InjectedBundle/API/c/WKBundleScriptWorld.cpp:
(WKBundleScriptWorldDisableOverrideBuiltinsBehavior):
* WebProcess/InjectedBundle/API/c/WKBundleScriptWorld.h:
* WebProcess/InjectedBundle/InjectedBundleScriptWorld.cpp:
(WebKit::InjectedBundleScriptWorld::disableOverrideBuiltinsBehavior):
* WebProcess/InjectedBundle/InjectedBundleScriptWorld.h:

Tools:

Add API test coverage.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit/InjectedBundleDisableOverrideBuiltinsBehavior.cpp: Added.
(TestWebKitAPI::runJavaScriptAlert):
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebKit/InjectedBundleDisableOverrideBuiltinsBehavior_Bundle.cpp: Added.
(TestWebKitAPI::InjectedBundleDisableOverrideBuiltinsBehaviorTest::InjectedBundleDisableOverrideBuiltinsBehaviorTest):
(TestWebKitAPI::InjectedBundleDisableOverrideBuiltinsBehaviorTest::initialize):
* TestWebKitAPI/Tests/WebKit/override-builtins-test.html: Added.

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

18 months agoMove WebVideoFullscreenController from WebCore to WebKitLegacy.
pvollan@apple.com [Fri, 9 Feb 2018 03:30:45 +0000 (03:30 +0000)]
Move WebVideoFullscreenController from WebCore to WebKitLegacy.
https://bugs.webkit.org/show_bug.cgi?id=182615

Reviewed by Eric Carlson.

It is only used by WK1. Also there are a few references to NSApp in WebVideoFullscreenController.mm.
Ideally, we should not reference NSApp in WebCore.

Source/WebCore:

No new tests. No change in behavior.

* SourcesMac.txt:
* WebCore.xcodeproj/project.pbxproj:
* html/HTMLMediaElement.h:
* platform/mac/WebVideoFullscreenController.h: Removed.
* platform/mac/WebVideoFullscreenController.mm: Removed.
* platform/mac/WebVideoFullscreenHUDWindowController.h: Removed.
* platform/mac/WebVideoFullscreenHUDWindowController.mm: Removed.
* platform/mac/WebWindowAnimation.h: Removed.
* platform/mac/WebWindowAnimation.mm: Removed.

Source/WebKitLegacy:

* WebKitLegacy.xcodeproj/project.pbxproj:

Source/WebKitLegacy/mac:

* WebView/WebFullScreenController.mm:
* WebView/WebVideoFullscreenController.h: Copied from Source/WebCore/platform/mac/WebVideoFullscreenController.h.
* WebView/WebVideoFullscreenController.mm: Copied from Source/WebCore/platform/mac/WebVideoFullscreenController.mm.
* WebView/WebVideoFullscreenHUDWindowController.h: Copied from Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.h.
* WebView/WebVideoFullscreenHUDWindowController.mm: Copied from Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.mm.
* WebView/WebView.mm:
* WebView/WebWindowAnimation.h: Copied from Source/WebCore/platform/mac/WebWindowAnimation.h.
* WebView/WebWindowAnimation.mm: Copied from Source/WebCore/platform/mac/WebWindowAnimation.mm.

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

18 months agoRemove WebProcessPool::platformInitialize stub.
ross.kirsling@sony.com [Fri, 9 Feb 2018 02:13:18 +0000 (02:13 +0000)]
Remove WebProcessPool::platformInitialize stub.
https://bugs.webkit.org/show_bug.cgi?id=182621

Reviewed by Alex Christensen.

The #if here could be simplified to PLATFORM(WIN), but Windows too will need a proper implementation
as part of WK2 support, so this stub shouldn't need to exist at all.

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::platformInitialize): Deleted.

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

18 months agoExperiment with alternative implementation of memcpy/memset
fpizlo@apple.com [Fri, 9 Feb 2018 02:13:01 +0000 (02:13 +0000)]
Experiment with alternative implementation of memcpy/memset
https://bugs.webkit.org/show_bug.cgi?id=182563

Reviewed by Michael Saboff and Mark Lam.

Source/bmalloc:

Add a faster x86_64-specific implementation of memcpy and memset. Ideally, this would just be
implemented in WTF, but we have to copy it into bmalloc since bmalloc sits below WTF on the
stack.

* bmalloc/Algorithm.h:
(bmalloc::fastCopy):
(bmalloc::fastZeroFill):
* bmalloc/Allocator.cpp:
(bmalloc::Allocator::reallocate):
* bmalloc/Bits.h:
(bmalloc::BitsWordOwner::operator=):
(bmalloc::BitsWordOwner::clearAll):
(bmalloc::BitsWordOwner::set):
* bmalloc/IsoPageInlines.h:
(bmalloc::IsoPage<Config>::IsoPage):
* bmalloc/Vector.h:
(bmalloc::Vector<T>::reallocateBuffer):

Source/JavaScriptCore:

This adopts new fastCopy/fastZeroFill calls for calls to memcpy/memset that do not take a
constant size argument.

* assembler/AssemblerBuffer.h:
(JSC::AssemblerBuffer::append):
* runtime/ArrayBuffer.cpp:
(JSC::ArrayBufferContents::tryAllocate):
(JSC::ArrayBufferContents::copyTo):
(JSC::ArrayBuffer::createInternal):
* runtime/ArrayBufferView.h:
(JSC::ArrayBufferView::zeroRangeImpl):
* runtime/ArrayConventions.cpp:
* runtime/ArrayConventions.h:
(JSC::clearArray):
* runtime/ArrayPrototype.cpp:
(JSC::arrayProtoPrivateFuncConcatMemcpy):
* runtime/ButterflyInlines.h:
(JSC::Butterfly::tryCreate):
(JSC::Butterfly::createOrGrowPropertyStorage):
(JSC::Butterfly::growArrayRight):
(JSC::Butterfly::resizeArray):
* runtime/GenericTypedArrayViewInlines.h:
(JSC::GenericTypedArrayView<Adaptor>::create):
* runtime/JSArray.cpp:
(JSC::JSArray::appendMemcpy):
(JSC::JSArray::fastSlice):
* runtime/JSArrayBufferView.cpp:
(JSC::JSArrayBufferView::ConstructionContext::ConstructionContext):
* runtime/JSGenericTypedArrayViewInlines.h:
(JSC::JSGenericTypedArrayView<Adaptor>::set):
* runtime/JSObject.cpp:
(JSC::JSObject::constructConvertedArrayStorageWithoutCopyingElements):
(JSC::JSObject::shiftButterflyAfterFlattening):
* runtime/PropertyTable.cpp:
(JSC::PropertyTable::PropertyTable):

Source/WTF:

Adds a faster x86_64-specific implementation of memcpy and memset. These versions go by
different names than memcpy/memset and have a different API:

WTF::fastCopy<T>(T* dst, T* src, size_t N): copies N values of type T from src to dst.
WTF::fastZeroFill(T* dst, size_T N): writes N * sizeof(T) zeroes to dst.

There are also *Bytes variants that take void* for dst and src and size_t numBytes. Those are
most appropriate in places where the code is already computing bytes.

These will just call memcpy/memset on platforms where the optimized versions are not supported.

These new functions are not known to the compiler to be memcpy/memset. This has the effect that
the compiler will not try to replace them with anything else. This could be good or bad:

- It's *good* if the size is *not known* at compile time. In that case, by my benchmarks, these
  versions are faster than either the memcpy/memset call or whatever else the compiler could
  emit. This is because of a combination of inlining and the algorithm itself (see below).

- It's *bad* if the size is *known* at compile time. In that case, the compiler could
  potentially emit a fully unrolled memcpy/memset. That might not happen if the size is large
  (even if it's known), but in this patch I avoid replacing any memcpy/memset calls when the
  size is a constant. In particular, this totally avoids the call overhead -- if the size is
  small, then the compiler will emit a nice inlined copy or set. If the size is large, then the
  most optimal thing to do is emit the shortest piece of code possible, and that's a call to
  memcpy/memset.

It's unfortunate that you have to choose between them on your own. One way to avoid that might
have been to override the memcpy/memset symbols, so that the compiler can still do its
reasoning. But that's not quite right, since then we would lose inlining in the unknonw-size
case. Also, it's possible that for some unknown-size cases, the compiler could choose to emit
something on its own because it might think that some property of aliasing or alignment could
help it. I think it's a bit better to use our own copy/set implementations even in those cases.
Another way that I tried avoiding this is to detect inside fastCopy/fastZeroFill if the size is
constant. But there is no good way to do that in C++. There is a builtin for doing that inside a
macro, but that feels janky, so I didn't want to do it in this patch.

The reason why these new fastCopy/fastZeroFill functions are faster is that:

- They can be inlined. There is no function call. Only a few registers get clobbered. So, the
  impact on the quality of the code surrounding the memcpy/memset is smaller.

- They use type information to select the implementation. For sizes that are multiples of 2, 4,
  or 8, the resulting code performs dramatically better on small arrays than memcpy because it
  uses fewer cycles. The difference is greatest for 2 and 4 byte types, since memcpy usually
  handles small arrays by tiering from a 8-byte word copy loop to a byte copy loop. So, for 2
  or 4 byte arrays, we use an algorithm that tiers from 8-byte word down to a 2-byte or 4-byte
  (depending on type) copy loop. So, for example, when copying a 16-bit string that has 1, 2, or
  3 characters, this means doing 1, 2, or 3 word copies rather than 2, 4, or 6 byte copies. For
  8-byte types, the resulting savings are mainly that there is no check to see if a tier-down to
  the byte-copy loop is needed -- so really that means reducing code size. 1-byte types don't
  get this inherent advantage over memcpy/memset, but they still benefit from all of the other
  advantages of these functions. Of course, this advantage isn't inherent to our approach. The
  compiler could also notice that the arguments to memcpy/memset have some alignment properties.
  It could do it even more generally than we do - for example a copy over bytes where the size
  is a multiple of 4 can use the 4-byte word algorithm. But based on my tests, the compiler does
  not do this (even though it does other things, like turn a memset call with a zero value
  argument into a bzero call).

- They use a very nicely written word copy/set loop for small arrays. I spent a lot of time
  getting the assembly just right. When we use memcpy/memset, sometimes we would optimize the
  call by having a fast path word copy loop for small sizes. That's not necessary with this
  implementation, since the assembly copy loop gets inlined.

- They use `rep movs` or `rep stos` for copies of 200 bytes or more. This decision benchmarks
  poorly on every synthetic memcpy/memset benchmark I have built, and so unsurprisingly, it's
  not what system memcpy/memset does. Most system memcpy/memset implementations end up doing
  some SSE for medium-sized copies,. However, I previously found that this decision is bad for
  one of the memset calls in GC (see clearArray() and friends in ArrayConventions.h|cpp) - I was
  able to make the overhead of that call virtually disappear by doing `rep stos` more
  aggressively. The theory behind this change is that it's not just the GC that prefers smaller
  `rep` threshold and no SSE. I am betting that `rep`ing more is better when the heap gets
  chaotic and the data being copied is used in interesting ways -- hence, synthetic
  memcpy/memset benchmarks think it's bad (they don't do enough chaotic memory accesses) while
  it's good for real-world uses. Also, when I previously worked on JVMs, I had found that the
  best memcpy/memset heuristics when dealing with GC'd objects in a crazy heap were different
  than any memcpy/memset in any system library.

This appears to be a 0.9% speed-up on PLT. I'm not sure if it's more because of the inlining or
the `rep`. I think it's both. I'll leave figuring out the exact tuning for future patches.

* wtf/BitVector.cpp:
(WTF::BitVector::setSlow):
(WTF::BitVector::clearAll):
(WTF::BitVector::resizeOutOfLine):
* wtf/BitVector.h:
(WTF::BitVector::wordCount):
(WTF::BitVector::OutOfLineBits::numWords const):
* wtf/ConcurrentBuffer.h:
(WTF::ConcurrentBuffer::growExact):
* wtf/FastBitVector.h:
(WTF::FastBitVectorWordOwner::operator=):
(WTF::FastBitVectorWordOwner::clearAll):
(WTF::FastBitVectorWordOwner::set):
* wtf/FastCopy.h: Added.
(WTF::fastCopy):
(WTF::fastCopyBytes):
* wtf/FastMalloc.cpp:
(WTF::fastZeroedMalloc):
(WTF::fastStrDup):
(WTF::tryFastZeroedMalloc):
* wtf/FastZeroFill.h: Added.
(WTF::fastZeroFill):
(WTF::fastZeroFillBytes):
* wtf/MD5.cpp:
* wtf/OSAllocator.h:
(WTF::OSAllocator::reallocateCommitted):
* wtf/StringPrintStream.cpp:
(WTF::StringPrintStream::increaseSize):
* wtf/Vector.h:
* wtf/persistence/PersistentDecoder.cpp:
(WTF::Persistence::Decoder::decodeFixedLengthData):
* wtf/persistence/PersistentEncoder.cpp:
(WTF::Persistence::Encoder::encodeFixedLengthData):
* wtf/text/CString.cpp:
(WTF::CString::init):
(WTF::CString::copyBufferIfNeeded):
* wtf/text/LineBreakIteratorPoolICU.h:
(WTF::LineBreakIteratorPool::makeLocaleWithBreakKeyword):
* wtf/text/StringBuilder.cpp:
(WTF::StringBuilder::allocateBuffer):
(WTF::StringBuilder::append):
* wtf/text/StringConcatenate.h:
* wtf/text/StringImpl.h:
(WTF::StringImpl::copyCharacters):
* wtf/text/icu/UTextProvider.cpp:
(WTF::uTextCloneImpl):
* wtf/text/icu/UTextProviderLatin1.cpp:
(WTF::uTextLatin1Clone):
(WTF::openLatin1UTextProvider):
* wtf/threads/Signals.cpp:

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

18 months ago[Meta][Win] Support ICU 59.1+
commit-queue@webkit.org [Fri, 9 Feb 2018 01:58:23 +0000 (01:58 +0000)]
[Meta][Win] Support ICU 59.1+
https://bugs.webkit.org/show_bug.cgi?id=181004

Patch by Fujii Hironori <Hironori.Fujii@sony.com> on 2018-02-08
Reviewed by Alex Christensen.

ICU 59 changed the type of UChar from wchar_t to char16_t on
Windows. We need a lot of conversions between UChar* and wchar_t*
to call Windows API because it takes string as wchar_t*.

Fortunately, ICU is configurable to define UChar as wchar_t as
well as the prior ICU.
<http://icu-project.org/apiref/icu4c/umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac>

* Source/cmake/OptionsWin.cmake: Add a compile option -DUCHAR_TYPE=wchar_t.

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

18 months agoTestController should not exercise cocoa-specific resource load statistics APIs
mcatanzaro@igalia.com [Fri, 9 Feb 2018 01:32:55 +0000 (01:32 +0000)]
TestController should not exercise cocoa-specific resource load statistics APIs
https://bugs.webkit.org/show_bug.cgi?id=182355

Reviewed by Alex Christensen.

Source/WebKit:

Remove the Cocoa testing SPI, since it's redundant with the C API. Also, add a couple
missing cookie partitioning callbacks to the C API.

* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreStatisticsUpdateCookiePartitioning):
(WKWebsiteDataStoreSetStatisticsShouldPartitionCookiesForHost):
* UIProcess/API/C/WKWebsiteDataStoreRef.h:
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _resourceLoadStatisticsSetLastSeen:forHost:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetIsPrevalentResource:forHost:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsIsPrevalentResource:completionHandler:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsIsRegisteredAsSubFrameUnder:topFrameHost:completionHandler:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsIsRegisteredAsRedirectingTo:hostRedirectedTo:completionHandler:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetHadUserInteraction:forHost:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetHasHadNonRecentUserInteractionForHost:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsHadUserInteraction:completionHandler:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetIsGrandfathered:forHost:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsIsGrandfathered:completionHandler:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetSubframeUnderTopFrameOrigin:forHost:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetSubresourceUnderTopFrameOrigin:forHost:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetSubresourceUniqueRedirectTo:forHost:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetTimeToLiveUserInteraction:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetTimeToLiveCookiePartitionFree:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetMinimumTimeBetweenDataRecordsRemoval:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetGrandfatheringTime:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetMaxStatisticsEntries:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetPruneEntriesDownTo:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsProcessStatisticsAndDataRecords]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsUpdateCookiePartitioning]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsUpdateCookiePartitioning:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetShouldPartitionCookies:forHost:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetShouldPartitionCookies:forHost:completionHandler:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSubmitTelemetry]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetNotifyPagesWhenDataRecordsWereScanned:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetShouldClassifyResourcesBeforeDataRecordsRemoval:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetNotifyPagesWhenTelemetryWasCaptured:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsClearInMemoryAndPersistentStore]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsClearInMemoryAndPersistentStore:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours:completionHandler:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsResetToConsistentState]): Deleted.
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:

Tools:

Remove unnecessary use of platform-specific APIs in the TestController, since there are
cross-platform APIs to do the same thing.

Also, ensure callbacks execute before returning from TestController's functions, since
otherwise the tests are guaranteed to be flaky at best, and also since there's nothing to
prevent the TestController from being destroyed before the callbacks execute.

* WebKitTestRunner/TestController.cpp:
(WTR::resourceStatisticsVoidResultCallback):
(WTR::resourceStatisticsBooleanResultCallback):
(WTR::TestController::isStatisticsPrevalentResource):
(WTR::TestController::isStatisticsRegisteredAsSubFrameUnder):
(WTR::TestController::isStatisticsRegisteredAsRedirectingTo):
(WTR::TestController::isStatisticsHasHadUserInteraction):
(WTR::TestController::isStatisticsGrandfathered):
(WTR::TestController::statisticsUpdateCookiePartitioning):
(WTR::TestController::statisticsSetShouldPartitionCookiesForHost):
(WTR::TestController::statisticsClearInMemoryAndPersistentStore):
(WTR::TestController::statisticsClearInMemoryAndPersistentStoreModifiedSinceHours):
(WTR::TestController::statisticsClearThroughWebsiteDataRemoval):
(WTR::resourceStatisticsCallback): Deleted.
(WTR::TestController::statisticsClearThroughWebsiteDataRemovalCallback): Deleted.
* WebKitTestRunner/TestController.h:
* WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(WTR::toNSString): Deleted.
(WTR::TestController::setStatisticsLastSeen): Deleted.
(WTR::TestController::setStatisticsPrevalentResource): Deleted.
(WTR::TestController::isStatisticsPrevalentResource): Deleted.
(WTR::TestController::isStatisticsRegisteredAsSubFrameUnder): Deleted.
(WTR::TestController::isStatisticsRegisteredAsRedirectingTo): Deleted.
(WTR::TestController::setStatisticsHasHadUserInteraction): Deleted.
(WTR::TestController::setStatisticsHasHadNonRecentUserInteraction): Deleted.
(WTR::TestController::isStatisticsHasHadUserInteraction): Deleted.
(WTR::TestController::setStatisticsGrandfathered): Deleted.
(WTR::TestController::isStatisticsGrandfathered): Deleted.
(WTR::TestController::setStatisticsSubframeUnderTopFrameOrigin): Deleted.
(WTR::TestController::setStatisticsSubresourceUnderTopFrameOrigin): Deleted.
(WTR::TestController::setStatisticsSubresourceUniqueRedirectTo): Deleted.
(WTR::TestController::setStatisticsTimeToLiveUserInteraction): Deleted.
(WTR::TestController::setStatisticsTimeToLiveCookiePartitionFree): Deleted.
(WTR::TestController::statisticsProcessStatisticsAndDataRecords): Deleted.
(WTR::TestController::statisticsUpdateCookiePartitioning): Deleted.
(WTR::TestController::statisticsSetShouldPartitionCookiesForHost): Deleted.
(WTR::TestController::statisticsSubmitTelemetry): Deleted.
(WTR::TestController::setStatisticsNotifyPagesWhenDataRecordsWereScanned): Deleted.
(WTR::TestController::setStatisticsShouldClassifyResourcesBeforeDataRecordsRemoval): Deleted.
(WTR::TestController::setStatisticsNotifyPagesWhenTelemetryWasCaptured): Deleted.
(WTR::TestController::setStatisticsMinimumTimeBetweenDataRecordsRemoval): Deleted.
(WTR::TestController::setStatisticsGrandfatheringTime): Deleted.
(WTR::TestController::setStatisticsMaxStatisticsEntries): Deleted.
(WTR::TestController::setStatisticsPruneEntriesDownTo): Deleted.
(WTR::TestController::statisticsClearInMemoryAndPersistentStore): Deleted.
(WTR::TestController::statisticsClearInMemoryAndPersistentStoreModifiedSinceHours): Deleted.
(WTR::TestController::statisticsClearThroughWebsiteDataRemoval): Deleted.
(WTR::TestController::statisticsResetToConsistentState): Deleted.

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

18 months agowebkit-patch suggest-reviewers dies with AttributeError: 'NoneType' object has no...
jbedard@apple.com [Fri, 9 Feb 2018 01:24:36 +0000 (01:24 +0000)]
webkit-patch suggest-reviewers dies with AttributeError: 'NoneType' object has no attribute 'revision'
https://bugs.webkit.org/show_bug.cgi?id=182584

Reviewed by Daniel Bates.

It is possible that a specific revision has an empty ChangeLog. In this case, Checkout.commit_info_for_revision
will return 'None'. Checkout.recent_commit_infos_for_files should never return a set with 'None' in it.

* Scripts/webkitpy/common/checkout/checkout.py:
(Checkout.recent_commit_infos_for_files): Remove any empty commit information from the set.
* Scripts/webkitpy/common/checkout/checkout_unittest.py: Add a file which references an empty ChangeLog.

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

18 months agoRemove JavaScriptCore/ForwardingHeaders directory
don.olmstead@sony.com [Fri, 9 Feb 2018 01:09:37 +0000 (01:09 +0000)]
Remove JavaScriptCore/ForwardingHeaders directory
https://bugs.webkit.org/show_bug.cgi?id=182594

Reviewed by Mark Lam.

Source/JavaScriptCore:

* CMakeLists.txt:
* ForwardingHeaders/JavaScriptCore/APICast.h: Removed.
* ForwardingHeaders/JavaScriptCore/JSBase.h: Removed.
* ForwardingHeaders/JavaScriptCore/JSCTestRunnerUtils.h: Removed.
* ForwardingHeaders/JavaScriptCore/JSContextRef.h: Removed.
* ForwardingHeaders/JavaScriptCore/JSObjectRef.h: Removed.
* ForwardingHeaders/JavaScriptCore/JSObjectRefPrivate.h: Removed.
* ForwardingHeaders/JavaScriptCore/JSRetainPtr.h: Removed.
* ForwardingHeaders/JavaScriptCore/JSStringRef.h: Removed.
* ForwardingHeaders/JavaScriptCore/JSStringRefCF.h: Removed.
* ForwardingHeaders/JavaScriptCore/JSTypedArray.h: Removed.
* ForwardingHeaders/JavaScriptCore/JSValueRef.h: Removed.
* ForwardingHeaders/JavaScriptCore/JavaScript.h: Removed.
* ForwardingHeaders/JavaScriptCore/JavaScriptCore.h: Removed.
* ForwardingHeaders/JavaScriptCore/OpaqueJSString.h: Removed.
* ForwardingHeaders/JavaScriptCore/WebKitAvailability.h: Removed.

Source/WebKit:

* PlatformGTK.cmake:

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

18 months agoWeb Inspector: add listing of Canvases/Programs/Recordings to the NavigationSidebar
mattbaker@apple.com [Fri, 9 Feb 2018 00:52:28 +0000 (00:52 +0000)]
Web Inspector: add listing of Canvases/Programs/Recordings to the NavigationSidebar
https://bugs.webkit.org/show_bug.cgi?id=178744
<rdar://problem/35374379>

Reviewed by Devin Rousso.

* Localizations/en.lproj/localizedStrings.js:

* UserInterface/Images/Canvas2D.svg:
* UserInterface/Images/Canvas3D.svg:
* UserInterface/Images/Recording.svg:
Update canvas icons to be monochrome. Simplified the recording icon.

* UserInterface/Main.html:

* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction.prototype.get state):
(WI.RecordingAction.prototype.set state):
Allow (2D) snapshot state to be associated with the action. Used by
RecordingActionDetailsSidebarPanel to retrieve the snapshot state.

* UserInterface/Views/CanvasContentView.css:
(.content-view.canvas:not(.tab)):
(.content-view.canvas:not(.tab) > .progress): Deleted.
(.content-view.canvas:not(.tab) > .progress > .frame-count): Deleted.

* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView):
(WI.CanvasContentView.prototype.get navigationItems):
(WI.CanvasContentView.prototype.layout):
(WI.CanvasContentView.prototype.shown):
(WI.CanvasContentView.prototype._recordingStarted):
(WI.CanvasContentView.prototype._recordingProgress):
(WI.CanvasContentView.prototype._recordingStopped):
(WI.CanvasContentView.prototype._updateRecordNavigationItem):
(WI.CanvasContentView.prototype._updateProgressView):
Replace progress UI with a reusable ProgressView class.
When in the overview, clicking the CanvasContentView shows a dedicated
CanvasContentView for inspecting shaders and recordings. This behavior
is controlled by CollectionContentView, so we need to prevent it when
clicking inside the header and footer elements, which contain clickable UI.

* UserInterface/Views/CanvasDetailsSidebarPanel.js:
(WI.CanvasDetailsSidebarPanel.prototype.inspect):

* UserInterface/Views/CanvasOverviewContentView.css:
(.content-view.canvas-overview .content-view.canvas):
(.content-view.canvas-overview .content-view.canvas.is-recording):
(.content-view.canvas-overview .content-view.canvas > :matches(header, footer)):
(.content-view.canvas-overview .content-view.canvas > header):
(.content-view.canvas-overview .content-view.canvas.is-recording > header):
(.content-view.canvas-overview .content-view.canvas > header > .navigation-bar):
(.content-view.canvas-overview .content-view.canvas:matches(:hover, .is-recording) > header > .navigation-bar):
(.content-view.canvas-overview .content-view.canvas.is-recording > .progress-view,):
(.content-view.canvas-overview .content-view.canvas.is-recording > .preview):
(.content-view.canvas-overview .content-view.canvas > :matches(header, .progress, .preview, footer)): Deleted.
(.content-view.canvas-overview .content-view.canvas.selected > :matches(.progress, .preview, footer),): Deleted.
(.content-view.canvas-overview .content-view.canvas:not(:hover, .is-recording, .selected) > header > .navigation-bar): Deleted.
(.content-view.canvas-overview .content-view.canvas > :matches(.progress, .preview)): Deleted.
(.content-view.canvas-overview .content-view.canvas > .preview): Deleted.
(.content-view.canvas-overview .content-view.canvas > .progress ~ .preview): Deleted.
Clean up styles, and remove selection styles as canvases are no longer selectable in the overview.

* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView):
(WI.CanvasOverviewContentView.prototype.get navigationItems):
(WI.CanvasOverviewContentView.prototype.attached):
(WI.CanvasOverviewContentView.prototype.detached):
(WI.CanvasOverviewContentView.prototype.get selectionPathComponents): Deleted.
(WI.CanvasOverviewContentView.prototype._changeSelectedItemVertically): Deleted.
(WI.CanvasOverviewContentView.prototype._changeSelectedItemHorizontally): Deleted.
(WI.CanvasOverviewContentView.prototype._selectionPathComponentsChanged): Deleted.
(WI.CanvasOverviewContentView.prototype._handleUp): Deleted.
(WI.CanvasOverviewContentView.prototype._handleRight): Deleted.
(WI.CanvasOverviewContentView.prototype._handleDown): Deleted.
(WI.CanvasOverviewContentView.prototype._handleLeft): Deleted.
(WI.CanvasOverviewContentView.prototype._handleSpace): Deleted.
(WI.CanvasOverviewContentView.prototype._supplementalRepresentedObjectsDidChange): Deleted.
Disable canvas selection. Remove logic for supplemental represented objects,
path components, and selection keyboard shortcuts.

* UserInterface/Views/CanvasSidebarPanel.css: Added.
(.sidebar > .panel.navigation.canvas > .content):
(.sidebar > .panel.navigation.canvas > .navigation-bar > .item.record-start-stop.disabled):
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.canvas.canvas-2d .icon):
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.canvas.webgl .icon):
(.sidebar > .panel.navigation.canvas > .content > .navigation-bar):
(.sidebar > .panel.navigation.canvas.has-recordings > .content > .tree-outline.canvas):
(.sidebar > .panel.navigation.canvas:not(.has-recordings) > .filter-bar,):
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.recording > .icon):
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.shader-program > .icon):
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.folder-icon > .icon):
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.folder-icon > .status):

* UserInterface/Views/CanvasSidebarPanel.js: Added.
(WI.CanvasSidebarPanel):
(WI.CanvasSidebarPanel.prototype.get canvas):
(WI.CanvasSidebarPanel.prototype.set canvas):
(WI.CanvasSidebarPanel.prototype.set recording):
(WI.CanvasSidebarPanel.prototype.set action):
(WI.CanvasSidebarPanel.prototype.shown):
(WI.CanvasSidebarPanel.prototype.hidden):
(WI.CanvasSidebarPanel.prototype.hasCustomFilters):
(WI.CanvasSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
(WI.CanvasSidebarPanel.prototype.initialLayout):
(WI.CanvasSidebarPanel.prototype._recordingAdded):
(WI.CanvasSidebarPanel.prototype._recordingRemoved):
(WI.CanvasSidebarPanel.prototype._scopeBarSelectionChanged):
(WI.CanvasSidebarPanel.prototype._toggleRecording):
(WI.CanvasSidebarPanel.prototype._currentRepresentedObjectsDidChange):
(WI.CanvasSidebarPanel.prototype._treeOutlineSelectionDidChange):
(WI.CanvasSidebarPanel.prototype._canvasChanged):
(WI.CanvasSidebarPanel.prototype._recordingChanged):
(WI.CanvasSidebarPanel.prototype._updateRecordNavigationItem):
(WI.CanvasSidebarPanel.prototype._updateRecordingScopeBar):
Add new navigation sidebar, split into two sections. The upper section
contains a tree with a single element for the current canvas, and child
elements for any shader programs. The maximum height of this section is 50%
of the sidebar's height. The lower section contains a tree for the selected
recording, and a scope bar for choosing between recordings.

* UserInterface/Views/CanvasTabContentView.css:
(.content-view.tab.canvas .navigation-bar > .item .canvas-overview .icon):
(.content-view.tab.canvas .navigation-bar > .item .canvas.canvas-2d .icon):
(.content-view.tab.canvas .navigation-bar > .item .canvas.webgl .icon):
(.content-view.tab.canvas .navigation-bar > .item .shader-program > .icon):
(.content-view.tab.canvas .navigation-bar > .item > .hierarchical-path-component > .icon): Deleted.
(.content-view.tab.canvas .navigation-bar > .item .canvas .icon): Deleted.

* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView):
(WI.CanvasTabContentView.prototype.canShowRepresentedObject):
(WI.CanvasTabContentView.prototype.attached):
(WI.CanvasTabContentView.prototype._addCanvas):
(WI.CanvasTabContentView.prototype._removeCanvas):
(WI.CanvasTabContentView.prototype._canvasTreeOutlineSelectionDidChange):
(WI.CanvasTabContentView.prototype._recordingAdded):
(WI.CanvasTabContentView.prototype._handleSpace):
(WI.CanvasTabContentView.prototype.showRepresentedObject): Deleted.
(WI.CanvasTabContentView.prototype._navigationSidebarTreeOutlineSelectionChanged): Deleted.
(WI.CanvasTabContentView.prototype._recordingActionIndexChanged): Deleted.
(WI.CanvasTabContentView.prototype._updateActionIndex): Deleted.
The canvas tab now maintains a tree outline of all canvases, with an
"Overview" element as the root. The Overview element is always the first
item of content browser's hierarchical path.

* UserInterface/Views/CanvasTreeElement.js:
(WI.CanvasTreeElement.createRecordingTreeElement):
(WI.CanvasTreeElement):
(WI.CanvasTreeElement.prototype.onattach):
(WI.CanvasTreeElement.prototype.onpopulate):
(WI.CanvasTreeElement.prototype._updateStatus):
(WI.CanvasTreeElement.prototype.ondetach): Deleted.
Make it possible to not show recordings under the Canvas element.
Create `isRecording` status element (spinner).

* UserInterface/Views/CollectionContentView.js:
(WI.CollectionContentView.prototype.shown):
(WI.CollectionContentView.prototype.hidden):
Child ContentViews need to be updated when the collection's visibility changes.

* UserInterface/Views/ContentView.js:
(WI.ContentView.isViewable):

* UserInterface/Views/ProgressView.css: Added.
(.progress-view):
(.progress-view > .titles):
(.progress-view > .titles > .title):
(.progress-view > .titles > .subtitle):
(.progress-view > .titles > .subtitle::before):
(.progress-view > .indeterminate-progress-spinner):

* UserInterface/Views/ProgressView.js: Added.
(WI.ProgressView):
(WI.ProgressView.prototype.get title):
(WI.ProgressView.prototype.set title):
(WI.ProgressView.prototype.get subtitle):
(WI.ProgressView.prototype.set subtitle):
(WI.ProgressView.prototype.get visible):
(WI.ProgressView.prototype.set visible):
(WI.ProgressView.prototype.initialLayout):
(WI.ProgressView.prototype._updateTitles):
New view class (not a ContentView) for showing a generic progress message,
with a title, subtitle, and progress spinner.

* UserInterface/Views/RecordingContentView.css:
(.content-view:not(.tab).recording > .preview-container):
Remove unnecessary styles.

* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView):
(WI.RecordingContentView.prototype.get navigationItems):
(WI.RecordingContentView.prototype.get supplementalRepresentedObjects):
(WI.RecordingContentView.prototype.updateActionIndex):
(WI.RecordingContentView.prototype.get saveData):
(WI.RecordingContentView.prototype._exportRecording):
Relocate the recording export logic and UI.
(WI.RecordingContentView.prototype.async._generateContentCanvas2D):
(WI.RecordingContentView.prototype.async._generateContentCanvasWebGL):
(WI.RecordingContentView.prototype._sliderChanged):
Refactor logic for notifying the rest of the UI of changes to the action slider.
The selected action is now exposed as a supplemental represented object, and a
corresponding SupplementalRepresentedObjectsDidChange event.

* UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
(WI.RecordingStateDetailsSidebarPanel.prototype.inspect):
(WI.RecordingStateDetailsSidebarPanel.prototype.set action):
(WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
(WI.RecordingStateDetailsSidebarPanel):
(WI.RecordingStateDetailsSidebarPanel.prototype.updateAction): Deleted.

* UserInterface/Views/RecordingTraceDetailsSidebarPanel.js:
(WI.RecordingTraceDetailsSidebarPanel.prototype.inspect):
(WI.RecordingTraceDetailsSidebarPanel.prototype.set action):
(WI.RecordingTraceDetailsSidebarPanel):
(WI.RecordingTraceDetailsSidebarPanel.prototype.updateAction): Deleted.
Now that the selected action is exposed to the UI as a supplemental
represented object, details sidebars can be more decoupled from the
canvas tab, and be notified of changes to the selection via `inspect()`.

* UserInterface/Views/ResourceIcons.css:
(.canvas > .icon): Deleted.
(.shader-program .icon): Deleted.

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

18 months agoMarked media/W3C/video/events/event_progress_manual.html as flaky on macOS WK2.
jlewis3@apple.com [Fri, 9 Feb 2018 00:00:09 +0000 (00:00 +0000)]
Marked media/W3C/video/events/event_progress_manual.html as flaky on macOS WK2.
https://bugs.webkit.org/show_bug.cgi?id=177663

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

18 months agoForm submission after navigation fails when decidePolicyForNavigationAction is async
cdumez@apple.com [Thu, 8 Feb 2018 23:49:16 +0000 (23:49 +0000)]
Form submission after navigation fails when decidePolicyForNavigationAction is async
https://bugs.webkit.org/show_bug.cgi?id=182412
<rdar://problem/35181099>

Reviewed by Alex Christensen.

Source/WebCore:

When the form is submitted and schedules the load in an iframe that is already loading,
FrameLoader::stopLoading() is called as expected. However, because policy checks can
now be asynchronous, stopLoading() also needs to stop pending policy checks. Otherwise,
continueLoadAfterNavigationPolicy() gets called for a cancelled load and we're in trouble
because the FrameLoader was reused for another load since then.

Test: http/tests/navigation/sync-form-submit-iframe.html

* loader/FrameLoader.cpp:
(WebCore::FrameLoader::stopLoading):

LayoutTests:

Import layout test coverage from Alex's earlier patch.

* http/tests/navigation/resources/a.html: Added.
* http/tests/navigation/resources/b.html: Added.
* http/tests/navigation/sync-form-submit-iframe-expected.txt: Added.
* http/tests/navigation/sync-form-submit-iframe.html: Added.

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

18 months agoWeb Inspector: Styles: Typing value and quickly moving focus away may display outdate...
nvasilyev@apple.com [Thu, 8 Feb 2018 23:18:28 +0000 (23:18 +0000)]
Web Inspector: Styles: Typing value and quickly moving focus away may display outdated value in UI
https://bugs.webkit.org/show_bug.cgi?id=182588
<rdar://problem/37332161>

Reviewed by Matt Baker.

CSSProperty models were updated with a 250ms delay. Quickly adding a blank property after modifying
an existing property could result in outdated values being shown.

This patch removes the 250ms delay.

* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidChange):

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

18 months agoMark accessibility/aria-hidden-updates-alldescendants.html as a failure on Windows.
pvollan@apple.com [Thu, 8 Feb 2018 23:03:20 +0000 (23:03 +0000)]
Mark accessibility/aria-hidden-updates-alldescendants.html as a failure on Windows.
https://bugs.webkit.org/show_bug.cgi?id=182626

Unreviewed test gardening.

* platform/win/TestExpectations:

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

18 months agoSwitch http/tests/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-deletio...
wilander@apple.com [Thu, 8 Feb 2018 22:00:48 +0000 (22:00 +0000)]
Switch http/tests/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-deletion.html from testRunner.installStatisticsDidModifyDataRecordsCallback() to testRunner.installStatisticsDidScanDataRecordsCallback()
https://bugs.webkit.org/show_bug.cgi?id=182624
<rdar://problem/37364749>

Unreviewed test gardening.

* http/tests/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-deletion.html:
* platform/mac-wk2/TestExpectations:
    Changed from [ Pass Timeout ] to [ Pass ] for the given test.

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

18 months agoUnreviewed, switch -pthread to -lpthread per recommendation from Adrian
mcatanzaro@igalia.com [Thu, 8 Feb 2018 21:45:31 +0000 (21:45 +0000)]
Unreviewed, switch -pthread to -lpthread per recommendation from Adrian
https://bugs.webkit.org/show_bug.cgi?id=182400
<rdar://problem/37252242>

This is tested and works fine.

* Source/cmake/WebKitCompilerFlags.cmake:

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

18 months agoMark inspector/console/clearMessages.html as flaky.
ryanhaddad@apple.com [Thu, 8 Feb 2018 21:26:17 +0000 (21:26 +0000)]
Mark inspector/console/clearMessages.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=182620

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

18 months agoMark media/modern-media-controls/tracks-support/tracks-support-show-panel-fullscreen...
ryanhaddad@apple.com [Thu, 8 Feb 2018 21:12:50 +0000 (21:12 +0000)]
Mark media/modern-media-controls/tracks-support/tracks-support-show-panel-fullscreen.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=182571

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

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

18 months agoMark webanimations/animation-opacity-animation-crash.html as flaky.
ryanhaddad@apple.com [Thu, 8 Feb 2018 20:52:54 +0000 (20:52 +0000)]
Mark webanimations/animation-opacity-animation-crash.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=181612

Unreviewed test gardening.

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

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

18 months ago[RenderTreeBuilder] Do not use RenderTreeBuilder::current() in RenderRubyRun::takeChild
zalan@apple.com [Thu, 8 Feb 2018 20:49:50 +0000 (20:49 +0000)]
[RenderTreeBuilder] Do not use RenderTreeBuilder::current() in RenderRubyRun::takeChild
https://bugs.webkit.org/show_bug.cgi?id=182607
<rdar://problem/37355944>

Reviewed by Sam Weinig.

No change in functionality.

* rendering/RenderRubyRun.cpp:
(WebCore::RenderRubyRun::takeChild):

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

18 months agoMark fast/dom/adopt-node-crash-2.html as flaky.
ryanhaddad@apple.com [Thu, 8 Feb 2018 20:48:28 +0000 (20:48 +0000)]
Mark fast/dom/adopt-node-crash-2.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=182589

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

18 months agoMake WebKit public headers modules-safe
timothy_horton@apple.com [Thu, 8 Feb 2018 20:38:13 +0000 (20:38 +0000)]
Make WebKit public headers modules-safe
https://bugs.webkit.org/show_bug.cgi?id=182611
<rdar://problem/37160164>

Reviewed by Dan Bernstein.

* UIProcess/API/Cocoa/WKPreviewElementInfo.h:
* UIProcess/API/Cocoa/WKSnapshotConfiguration.h:
Import headers without which these WebKit headers can not be used alone.

* WebKit.xcodeproj/project.pbxproj:
Make WKWindowFeaturesPrivate a private header like it was supposed to be.

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

18 months agoUse invalidation rulesets for attribute selectors
antti@apple.com [Thu, 8 Feb 2018 19:48:30 +0000 (19:48 +0000)]
Use invalidation rulesets for attribute selectors
https://bugs.webkit.org/show_bug.cgi?id=182569

Reviewed by Zalan Bujtas.

Attribute change style invalidation should use invalidation rulesets, similarly how class change invalidation already does.
We'll invalidate fewer unnecessary elements immediately and enable more significant future gains.

* css/DocumentRuleSets.cpp:
(WebCore::DocumentRuleSets::collectFeatures const):
(WebCore::DocumentRuleSets::classInvalidationRuleSets const):
(WebCore::DocumentRuleSets::attributeInvalidationRuleSets const):

Make and cache invalidation RuleSets for an attribute.

(WebCore::DocumentRuleSets::ancestorAttributeRulesForHTML const): Deleted.
* css/DocumentRuleSets.h:
* css/RuleFeature.cpp:
(WebCore::RuleFeatureSet::recursivelyCollectFeaturesFromSelector):

Collect attribute selectors along with match elements.

(WebCore::RuleFeatureSet::collectFeatures):
(WebCore::RuleFeatureSet::add):
(WebCore::RuleFeatureSet::registerContentAttribute):

Separate hash to deal with invalidation of content:attr(foo) special case.

(WebCore::RuleFeatureSet::clear):
(WebCore::RuleFeatureSet::shrinkToFit):
(WebCore::makeAttributeSelectorKey): Deleted.
* css/RuleFeature.h:
(WebCore::RuleFeature::RuleFeature):
* css/StyleBuilderCustom.h:
(WebCore::StyleBuilderCustom::applyValueContent):
(WebCore::StyleBuilderCustom::applyValueAlt):

Use registerContentAttribute()

* html/HTMLEmbedElement.cpp:
(WebCore::hasTypeOrSrc):
(WebCore::HTMLEmbedElement::parseAttribute):

    Invalidate style if both type and src attributes go missing as this changes result of rendererIsNeeded().
    This was previously relying on any attribute change invalidating style.

(WebCore::HTMLEmbedElement::rendererIsNeeded):
* style/AttributeChangeInvalidation.cpp:
(WebCore::Style::AttributeChangeInvalidation::invalidateStyle):

Collect the invalidation rulesets for this attribute change.
Also check if any attribute selector actually changes state, unlike with classes attribute changes may
often not lead to a selector becoming non-matching.

(WebCore::Style::AttributeChangeInvalidation::invalidateStyleWithRuleSets):
(WebCore::Style::AttributeChangeInvalidation::invalidateDescendants): Deleted.
* style/AttributeChangeInvalidation.h:
(WebCore::Style::AttributeChangeInvalidation::AttributeChangeInvalidation):
(WebCore::Style::AttributeChangeInvalidation::~AttributeChangeInvalidation):
* style/ClassChangeInvalidation.cpp:
(WebCore::Style::ClassChangeInvalidation::computeInvalidation):

Should not bail on shadow tree invalidation as we may also need to invalidate siblings.

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

18 months ago[RenderTreeBuilder] Introduce RenderTreeBuilder to moveChild(ren)To() functions
zalan@apple.com [Thu, 8 Feb 2018 19:42:11 +0000 (19:42 +0000)]
[RenderTreeBuilder] Introduce RenderTreeBuilder to moveChild(ren)To() functions
https://bugs.webkit.org/show_bug.cgi?id=182596
<rdar://problem/37340553>

Reviewed by Sam Weinig.

This is in preparation for moving mutation code out of moveChildTo/moveChildrenTo.

No change in functionality.

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::dropAnonymousBoxChild):
(WebCore::RenderBlock::takeChild):
* rendering/RenderBlock.h:
(WebCore::RenderBlock::moveAllChildrenIncludingFloatsTo):
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::styleDidChange):
(WebCore::RenderBlockFlow::moveAllChildrenIncludingFloatsTo):
* rendering/RenderBlockFlow.h:
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::moveChildTo):
(WebCore::RenderBoxModelObject::moveChildrenTo):
* rendering/RenderBoxModelObject.h:
(WebCore::RenderBoxModelObject::moveChildTo):
(WebCore::RenderBoxModelObject::moveAllChildrenTo):
(WebCore::RenderBoxModelObject::moveChildrenTo):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::styleDidChange):
(WebCore::RenderElement::removeAnonymousWrappersForInlinesIfNecessary): Deleted.
* rendering/RenderElement.h:
* rendering/RenderRubyRun.cpp:
(WebCore::RenderRubyRun::takeChild):
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::makeChildrenNonInline):
(WebCore::RenderTreeBuilder::splitAnonymousBoxesAroundChild):
(WebCore::RenderTreeBuilder::removeAnonymousWrappersForInlineChildrenIfNeeded):
(WebCore::RenderTreeBuilder::childFlowStateChangesAndNoLongerAffectsParentBlock):
(WebCore::RenderTreeBuilder::removeFromParentAndDestroyCleaningUpAnonymousWrappers):
* rendering/updating/RenderTreeBuilder.h:
* rendering/updating/RenderTreeBuilderMultiColumn.cpp:
(WebCore::RenderTreeBuilder::MultiColumn::createFragmentedFlow):
(WebCore::RenderTreeBuilder::MultiColumn::destroyFragmentedFlow):
* rendering/updating/RenderTreeBuilderRuby.cpp:
(WebCore::RenderTreeBuilder::Ruby::moveInlineChildren):
(WebCore::RenderTreeBuilder::Ruby::moveBlockChildren):
* rendering/updating/RenderTreeBuilderTable.cpp:
(WebCore::RenderTreeBuilder::Table::collapseAndDestroyAnonymousSiblingRows):

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

18 months agoUnreviewed, rolling out r228262.
jlewis3@apple.com [Thu, 8 Feb 2018 19:31:00 +0000 (19:31 +0000)]
Unreviewed, rolling out r228262.

This broke an internal build alongside r228261.

Reverted changeset:

"WebDriver: addCookie command should prepend a dot to domain
if missing"
https://bugs.webkit.org/show_bug.cgi?id=182328
https://trac.webkit.org/changeset/228262

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

18 months agoUnreviewed, rolling out r228261.
jlewis3@apple.com [Thu, 8 Feb 2018 18:55:32 +0000 (18:55 +0000)]
Unreviewed, rolling out r228261.

This broke an internal build

Reverted changeset:

"Add a way to check if a host is an IP address"
https://bugs.webkit.org/show_bug.cgi?id=182427
https://trac.webkit.org/changeset/228261

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

18 months ago[GStreamer] WebKit improperly handles missing GStreamer elements
philn@webkit.org [Thu, 8 Feb 2018 18:38:29 +0000 (18:38 +0000)]
[GStreamer] WebKit improperly handles missing GStreamer elements
https://bugs.webkit.org/show_bug.cgi?id=171205

Reviewed by Michael Catanzaro.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin): Add a
test checking the videoflip element was correctly created. It
might not be available on some exotic distros such as Gentoo.

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

18 months agoAX: Defer attribute computation until needed.
cfleizach@apple.com [Thu, 8 Feb 2018 18:10:20 +0000 (18:10 +0000)]
AX: Defer attribute computation until needed.
https://bugs.webkit.org/show_bug.cgi?id=182386
<rdar://problem/37115277>

Reviewed by Zalan Bujtas.

Source/WebCore:

Accessibility is doing too much work when handling attribute changes. Here's how we can improve this:
   1) Defer attribute changes while the tree is dirty (and coalesce them).
   2) Don't create AXObjects when an attribute changes unnecessarily. If no client has requested an ax object, it's likely no work needs to be done
         (with the exception of a few attributes like aria-modal)
   3) Stop calculating the entire accessible ARIA label when trying to decide if an element should be ignored. That's generally wasteful and the
         consequence of including more AX elements in the tree is very minimal.

* accessibility/AXObjectCache.cpp:
(WebCore::rendererNeedsDeferredUpdate):
(WebCore::nodeAndRendererAreValid):
(WebCore::AXObjectCache::remove):
(WebCore::AXObjectCache::handleAriaExpandedChange):
(WebCore::AXObjectCache::handleAriaRoleChanged):
(WebCore::AXObjectCache::deferAttributeChangeIfNeeded):
(WebCore::AXObjectCache::shouldProcessAttributeChange):
(WebCore::AXObjectCache::handleAttributeChange):
(WebCore::AXObjectCache::prepareForDocumentDestruction):
(WebCore::AXObjectCache::performDeferredCacheUpdate):
(WebCore::AXObjectCache::deferRecomputeIsIgnoredIfNeeded):
(WebCore::AXObjectCache::deferRecomputeIsIgnored):
(WebCore::AXObjectCache::deferTextChangedIfNeeded):
(WebCore::AXObjectCache::deferSelectedChildrenChangedIfNeeded):
(WebCore::AXObjectCache::handleAttributeChanged): Deleted.
* accessibility/AXObjectCache.h:
(WebCore::AXObjectCache::deferAttributeChangeIfNeeded):
(WebCore::AXObjectCache::handleAttributeChanged): Deleted.
* accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::hasAttributesRequiredForInclusion const):
* accessibility/AccessibleNode.cpp:
(WebCore::AccessibleNode::notifyAttributeChanged):
* dom/Element.cpp:
(WebCore::Element::attributeChanged):

LayoutTests:

Update tests to reflect new world of delayed attribute handling for accessibility.

* accessibility/canvas-fallback-content.html:
     Make test async so attributes can be checked after deferred handling.
* accessibility/mac/aria-expanded-notifications.html:
     Access elements through AX tree so attribute changes generate notifications.
* accessibility/mac/aria-listbox-selectedchildren-change.html:
     Make test async so attributes can be checked after deferred handling.
* accessibility/mac/aria-menu-item-selected-notification.html:
     Access menu item through AX tree so attribute changes generate notifications.
* accessibility/mac/aria-modal-auto-focus.html:
     Access buttons after delay so attributes have time to be deferred.
* accessibility/mac/element-busy-changed.html:
     Process second attribute change after delay so we generate two notifications.
* accessibility/mac/expanded-notification.html:
     Set attributes after a delay so they generate individual notifications.
* accessibility/notification-listeners.html:
      Access elements through AX tree so attribute changes generate notifications.

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

18 months agoUnreviewed, fix invalid line terminator in old test262 file part 2
utatane.tea@gmail.com [Thu, 8 Feb 2018 17:53:49 +0000 (17:53 +0000)]
Unreviewed, fix invalid line terminator in old test262 file part 2
https://bugs.webkit.org/show_bug.cgi?id=182468

* test262/test/built-ins/Function/prototype/toString/line-terminator-normalisation-CR.js:

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

18 months agoUnreviewed, tiny partial rollout of r228260 as it caused some worker failures
cdumez@apple.com [Thu, 8 Feb 2018 17:49:10 +0000 (17:49 +0000)]
Unreviewed, tiny partial rollout of r228260 as it caused some worker failures

* bindings/js/JSDOMGlobalObject.cpp:
(WebCore::toJSDOMGlobalObject):
* bindings/js/JSDOMGlobalObject.h:
* bindings/js/JSErrorHandler.cpp:
(WebCore::JSErrorHandler::handleEvent):
* bindings/js/JSEventListener.cpp:
(WebCore::toJSDOMGlobalObject): Deleted.

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

18 months agoUnreviewed, fix invalid line terminator in old test262 file
utatane.tea@gmail.com [Thu, 8 Feb 2018 17:11:09 +0000 (17:11 +0000)]
Unreviewed, fix invalid line terminator in old test262 file
https://bugs.webkit.org/show_bug.cgi?id=182468

* test262/test/language/literals/regexp/7.8.5-1.js:

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

18 months ago[RenderTreeBuilder] Move RenderElement::removeAnonymousWrappersForInlinesIfNecessary...
zalan@apple.com [Thu, 8 Feb 2018 15:40:21 +0000 (15:40 +0000)]
[RenderTreeBuilder] Move RenderElement::removeAnonymousWrappersForInlinesIfNecessary to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=182582
<rdar://problem/37327890>

Reviewed by Antti Koivisto.

Tree mutation -> RenderTreeBuilder.

No change in functionality

* rendering/RenderElement.cpp:
(WebCore::RenderElement::styleDidChange):
(WebCore::RenderElement::removeAnonymousWrappersForInlinesIfNecessary): Deleted.
* rendering/RenderElement.h:
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::removeAnonymousWrappersForInlinesIfNecessary):
(WebCore::RenderTreeBuilder::childFlowStateChangesAndNoLongerAffectsParentBlock):
(WebCore::RenderTreeBuilder::removeFromParentAndDestroyCleaningUpAnonymousWrappers):
* rendering/updating/RenderTreeBuilder.h:

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

18 months agoUnreviewed GTK+ gardening after r228270.
magomez@igalia.com [Thu, 8 Feb 2018 15:10:57 +0000 (15:10 +0000)]
Unreviewed GTK+ gardening after r228270.

* platform/gtk/TestExpectations:

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

18 months ago[GTK] WaylandCompositor misusing eglGetProcAddress
magomez@igalia.com [Thu, 8 Feb 2018 14:05:13 +0000 (14:05 +0000)]
[GTK] WaylandCompositor misusing eglGetProcAddress
https://bugs.webkit.org/show_bug.cgi?id=182490

Reviewed by Michael Catanzaro.

Check that the appropriate extensions are available before calling eglGetProcAddress, as even
getting a non null value from it, the functionality can be disabled at runtime.

* UIProcess/gtk/WaylandCompositor.cpp:
(WebKit::WaylandCompositor::initializeEGL):

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

18 months ago[GStreamer] LayoutTest webaudio/silent-audio-interrupted-in-background.html makes...
philn@webkit.org [Thu, 8 Feb 2018 13:10:48 +0000 (13:10 +0000)]
[GStreamer] LayoutTest webaudio/silent-audio-interrupted-in-background.html makes its subsequent test flaky crash
https://bugs.webkit.org/show_bug.cgi?id=173916

Reviewed by Xabier Rodriguez Calvar.

Source/WebCore:

This patch fixes two crashes and a runtime warning:

- The provider client configuration should be done from the main
thread but the no-more-pads signal of deinterleave was fired from
a non-main thread.

- The deinterleave pad-removed signal can be fired for a not fully
configured pipeline if the audio context is interrupted. So the
peer quark of the removed pad needs to be checked, it might be a
null pointer.

- The provider connects to the deinterleave signals only when a
client is provided, so the signal disconnection needs to check
that to avoid runtime warnings.

* platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:
(WebCore::AudioSourceProviderGStreamer::AudioSourceProviderGStreamer):
Create a main thread notifier.
(WebCore::AudioSourceProviderGStreamer::~AudioSourceProviderGStreamer):
Invalidate notifier and check a client was set before
disconnecting from deinterleave signals.
(WebCore::AudioSourceProviderGStreamer::handleRemovedDeinterleavePad):
Check validity of the pad peer.
(WebCore::AudioSourceProviderGStreamer::deinterleavePadsConfigured):
Set client from main thread.
* platform/audio/gstreamer/AudioSourceProviderGStreamer.h:

LayoutTests:

* platform/gtk/TestExpectations: Unskip fixed test.

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