WebKit-https.git
2 years agoRemove excessive include directives from WebCore/css
annulen@yandex.ru [Tue, 20 Jun 2017 11:38:49 +0000 (11:38 +0000)]
Remove excessive include directives from WebCore/css
https://bugs.webkit.org/show_bug.cgi?id=173554

Reviewed by Alex Christensen.

No new tests needed.

* css/CSSComputedStyleDeclaration.h:
* css/CSSContentDistributionValue.h:
* css/CSSCursorImageValue.h:
* css/CSSFilterImageValue.h:
* css/CSSFontFace.h:
* css/CSSFontFeatureValue.h:
* css/CSSFontStyleRangeValue.h:
* css/CSSFontVariationValue.h:
* css/CSSImageGeneratorValue.h:
* css/CSSImageSetValue.h:
* css/CSSInheritedValue.h:
* css/CSSInitialValue.h:
* css/CSSKeyframeRule.cpp:
* css/CSSKeyframeRule.h:
* css/CSSLineBoxContainValue.h:
* css/CSSPrimitiveValue.h:
* css/CSSPrimitiveValueMappings.h:
* css/CSSPropertySourceData.h:
* css/CSSReflectValue.h:
* css/CSSRevertValue.h:
* css/CSSSelector.h:
* css/CSSStyleSheet.h:
* css/CSSToLengthConversionData.h:
* css/CSSUnsetValue.h:
* css/CSSValue.h:
* css/CSSValuePool.h:
* css/CSSVariableData.h:
* css/DeprecatedCSSOMCounter.h:
* css/DeprecatedCSSOMRGBColor.h:
* css/DeprecatedCSSOMRect.h:
* css/DeprecatedCSSOMValue.h:
* css/RuleSet.h:
* css/SelectorChecker.h:
* css/StyleBuilderConverter.h:
* css/StyleBuilderCustom.h:
* css/StyleProperties.h:
* css/StyleResolver.cpp:
* css/StyleResolver.h:
* css/StyleSheet.h:
* css/StyleSheetContents.h:
* css/ViewportStyleResolver.h:
* css/parser/CSSDeferredParser.h:
* css/parser/CSSParserIdioms.h:
* css/parser/CSSParserImpl.cpp:
* css/parser/CSSParserImpl.h:
* css/parser/CSSParserObserver.h:
* css/parser/CSSParserSelector.h:
* css/parser/CSSPropertyParserHelpers.h:
* css/parser/MediaQueryParser.cpp:
* css/parser/MediaQueryParser.h:
* css/parser/SizesAttributeParser.cpp:
* css/parser/SizesAttributeParser.h:
* html/BaseCheckableInputType.cpp:
* html/MediaController.cpp:
* html/track/TextTrack.cpp:
* html/track/TextTrackCue.cpp:
* html/track/VideoTrack.cpp:
* loader/TextTrackLoader.cpp:

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

2 years agoRevert changes in bug#160417 about extending `null` not being a derived class https...
gskachkov@gmail.com [Tue, 20 Jun 2017 10:27:41 +0000 (10:27 +0000)]
Revert changes in bug#160417 about extending `null` not being a derived class https://bugs.webkit.org/show_bug.cgi?id=169293

Reviewed by Saam Barati.

Source/JavaScriptCore:

Reverted changes in bug#160417 about extending `null` not being a derived class
according to changes in spec:
https://github.com/tc39/ecma262/commit/c57ef95c45a371f9c9485bb1c3881dbdc04524a2

* builtins/BuiltinNames.h:
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::emitReturn):
* bytecompiler/NodesCodegen.cpp:
(JSC::ClassExprNode::emitBytecode):

JSTests:

* stress/class-derived-from-null.js:

LayoutTests:

* js/class-syntax-extends-expected.txt:
* js/class-syntax-super-expected.txt:
* js/script-tests/class-syntax-extends.js:
* js/script-tests/class-syntax-super.js:

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

2 years ago[WTF] Enable WTF::Signals only when HAVE(MACHINE_CONTEXT) is true
utatane.tea@gmail.com [Tue, 20 Jun 2017 10:10:51 +0000 (10:10 +0000)]
[WTF] Enable WTF::Signals only when HAVE(MACHINE_CONTEXT) is true
https://bugs.webkit.org/show_bug.cgi?id=173590

Reviewed by Carlos Garcia Campos.

WTF::Signals require a feature rewriting a value of a machine context.
This is only available under HAVE(MACHINE_CONTEXT).
This patch disables WTF::Signals on !HAVE(MACHINE_CONTEXT) environments.

* wtf/threads/Signals.cpp:
* wtf/threads/Signals.h:

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

2 years ago[iOS DnD] [WK2] Remove custom logic for disambiguating long press action sheet gestur...
wenson_hsieh@apple.com [Tue, 20 Jun 2017 10:09:04 +0000 (10:09 +0000)]
[iOS DnD] [WK2] Remove custom logic for disambiguating long press action sheet gestures and drag lift
https://bugs.webkit.org/show_bug.cgi?id=173578
<rdar://problem/32825028>

Reviewed by Tim Horton.

Source/WebKit2:

Custom logic to cancel the long press action gesture recognizer in WebKit2 was added months ago to achieve
spec'ed behavior when initiating a drag on an element with an action sheet to show on long press. Now that UIKit
defers firing long-press gesture recognizers while a drag lift is recognizing, no extra work in WebKit is needed
to achieve expected behavior.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _simulateLongPressActionAtLocation:]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:

Add testing SPI for showing an action sheet popover at a given location in content view coordinates.

* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _startDataInteractionWithImage:withIndicatorData:atClientPosition:anchorPoint:action:]):
(-[WKContentView _didHandleStartDataInteractionRequest:]):
(-[WKContentView _dragInteraction:prepareForSession:completion:]):
(-[WKContentView dragInteraction:sessionWillBegin:]):
(-[WKContentView _api_dragInteraction:session:didEndWithOperation:]):
(-[WKContentView _simulateLongPressActionAtLocation:]):
(longPressActionDelayAfterLift): Deleted.
(-[WKContentView performDeferredActionAtDragOrigin]): Deleted.
(-[WKContentView cancelDeferredActionAtDragOrigin]): Deleted.

Tools:

Slight tweak to ensure that DataInteractionTests.CustomActionSheetPopover still passes and verifies that showing
a custom popover does not cause dragging to fail when the popover is presented.

* TestWebKitAPI/ios/DataInteractionSimulator.mm:
(-[DataInteractionSimulator _advanceProgress]):

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

2 years agoUnreviewed WPE gardening.
zandobersek@gmail.com [Tue, 20 Jun 2017 07:56:31 +0000 (07:56 +0000)]
Unreviewed WPE gardening.

Unskipping AES-CTR and RSA-PSS layout tests that already pass.

Adding layout test baselines for two imported W3C tests that cover AES-CBC.
The subtests there pass, but the generic baseline expects failures, so we
work around that by adding baselines that expect passing tests.

* platform/wpe/TestExpectations:
* platform/wpe/imported/w3c/web-platform-tests/WebCryptoAPI/encrypt_decrypt: Added.
* platform/wpe/imported/w3c/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_cbc.worker-expected.txt: Added.
* platform/wpe/imported/w3c/web-platform-tests/WebCryptoAPI/encrypt_decrypt/test_aes_cbc.https-expected.txt: Added.

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

2 years ago[GTK] Layout Test fast/canvas/webgl/tex-image-and-sub-image-2d-with-video.html makes...
magomez@igalia.com [Tue, 20 Jun 2017 07:45:40 +0000 (07:45 +0000)]
[GTK] Layout Test fast/canvas/webgl/tex-image-and-sub-image-2d-with-video.html makes the subsequent test case flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=173459

Reviewed by Carlos Garcia Campos.

Source/WebCore:

When destructing the VideoTextureCopierGStreamer, ensure that there's a previous gl context before trying
to make it current again. There are situations where no previous context may exist, which can trigger a crash.
Also, add DefaultImageOrientation to the switch that handles the video frame possible orientations, as it's the
value used when no rotation needs to be performed, and it's currently triggering an assertion.

Covered by existent tests.

* platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:
(WebCore::VideoTextureCopierGStreamer::~VideoTextureCopierGStreamer):
(WebCore::VideoTextureCopierGStreamer::updateTextureSpaceMatrix):

LayoutTests:

Unskip fast/canvas/webgl/tex-image-and-sub-image-2d-with-video.html.

* platform/gtk/TestExpectations:

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

2 years ago[WTF] Rebaseline std::optional
utatane.tea@gmail.com [Tue, 20 Jun 2017 07:39:20 +0000 (07:39 +0000)]
[WTF] Rebaseline std::optional
https://bugs.webkit.org/show_bug.cgi?id=173582

Reviewed by JF Bastien.

Update the copy of our std::optional to the latest version.
It adds std::optional::has_value() and std::optional::reset().

* wtf/Optional.h:

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

2 years ago[WPE] Add initial implementation of glib API
carlosgc@webkit.org [Tue, 20 Jun 2017 07:20:16 +0000 (07:20 +0000)]
[WPE] Add initial implementation of glib API
https://bugs.webkit.org/show_bug.cgi?id=173546

Reviewed by Žan Doberšek.

.:

Add some definitions required to build WPE glib API.

* Source/cmake/OptionsWPE.cmake:

Source/WebCore/platform/gtk/po:

Add WebKitWebViewGtk.cpp to the list of files with translatable strings.

* POTFILES.in:

Source/WebKit2:

Make current API files under glib directories build in WPE, and add the minimum implementation to make it
work. For now it doesn't have web extensions API, and there are a few FIXMEs that will be fixed in follow up
commits. It doesn't include install rules yet, since it's still not ready to be installed.

* PlatformGTK.cmake:
* PlatformWPE.cmake:
* Shared/API/glib/WebKitContextMenuActions.cpp:
(webkitContextMenuActionGetActionTag):
(webkitContextMenuActionGetForContextMenuItem):
(webkitContextMenuActionGetLabel):
* Shared/API/glib/WebKitContextMenuItem.cpp:
* UIProcess/API/glib/WebKitEditorState.cpp:
(webkitEditorStateChanged):
* UIProcess/API/glib/WebKitError.cpp:
* UIProcess/API/glib/WebKitFileChooserRequest.cpp:
(webkitFileChooserRequestGetProperty):
(webkit_file_chooser_request_class_init):
* UIProcess/API/glib/WebKitInstallMissingMediaPluginsPermissionRequest.cpp:
(createGstInstallPluginsContext):
(webkitInstallMissingMediaPluginsPermissionRequestAllow):
* UIProcess/API/glib/WebKitNavigationAction.cpp:
* UIProcess/API/glib/WebKitNavigationActionPrivate.h:
(_WebKitNavigationAction::_WebKitNavigationAction):
* UIProcess/API/glib/WebKitNotificationPrivate.h:
* UIProcess/API/glib/WebKitNotificationProvider.cpp:
(WebKitNotificationProvider::show):
* UIProcess/API/glib/WebKitPrivate.cpp:
(toPlatformModifiers):
(toWebKitError):
(toWebCoreError):
* UIProcess/API/glib/WebKitPrivate.h:
* UIProcess/API/glib/WebKitSettings.cpp:
(webKitSettingsSetProperty):
(webKitSettingsGetProperty):
(webkit_settings_class_init):
(webkit_settings_set_user_agent):
(webkit_settings_set_user_agent_with_application_details):
* UIProcess/API/glib/WebKitUIClient.cpp:
* UIProcess/API/glib/WebKitURISchemeRequest.cpp:
(webkit_uri_scheme_request_get_web_view):
* UIProcess/API/glib/WebKitUserContentManager.cpp:
* UIProcess/API/glib/WebKitWebContext.cpp:
(webkitWebContextConstructed):
* UIProcess/API/glib/WebKitWebView.cpp:
(webkitWebViewCreate):
(webkit_web_view_class_init):
(webkitWebViewCreatePage):
(webkitWebViewRunAsModal):
(webkitWebViewMouseTargetChanged):
(webkitWebViewEnterFullScreen):
(webkitWebViewExitFullScreen):
(webkitWebViewPopulateContextMenu):
* UIProcess/API/glib/WebKitWebViewPrivate.h:
* UIProcess/API/glib/WebKitWindowProperties.cpp:
(webkitWindowPropertiesGetProperty):
(webkitWindowPropertiesSetProperty):
(webkit_window_properties_class_init):
(webkitWindowPropertiesUpdateFromWebWindowFeatures):
* UIProcess/API/glib/WebKitWindowPropertiesPrivate.h:
* UIProcess/API/gtk/WebKitWebViewGtk.cpp: Added.
(webkitWebViewAuthenticate):
(webkitWebViewCreateJavaScriptDialog):
(webkitWebViewScriptDialog):
(fileChooserDialogResponseCallback):
(webkitWebViewRunFileChooser):
(webkit_web_view_new):
(webkit_web_view_new_with_context):
(webkit_web_view_new_with_related_view):
(webkit_web_view_new_with_settings):
(webkit_web_view_new_with_user_content_manager):
* UIProcess/API/wpe/WPEView.h:
* UIProcess/API/wpe/WebKitAuthenticationRequest.h: Added.
* UIProcess/API/wpe/WebKitAutomationSession.h: Added.
* UIProcess/API/wpe/WebKitBackForwardList.h: Added.
* UIProcess/API/wpe/WebKitBackForwardListItem.h: Added.
* UIProcess/API/wpe/WebKitContextMenu.h: Added.
* UIProcess/API/wpe/WebKitContextMenuActions.h: Added.
* UIProcess/API/wpe/WebKitContextMenuItem.h: Added.
* UIProcess/API/wpe/WebKitCookieManager.h: Added.
* UIProcess/API/wpe/WebKitCredential.h: Added.
* UIProcess/API/wpe/WebKitDefines.h: Copied from Source/WebKit2/UIProcess/API/glib/WebKitPrivate.h.
* UIProcess/API/wpe/WebKitDownload.h: Added.
* UIProcess/API/wpe/WebKitEditingCommands.h: Added.
* UIProcess/API/wpe/WebKitEditorState.h: Added.
* UIProcess/API/wpe/WebKitEnumTypes.cpp.template: Added.
* UIProcess/API/wpe/WebKitEnumTypes.h.template: Copied from Source/WebKit2/UIProcess/API/glib/WebKitNotificationPrivate.h.
* UIProcess/API/wpe/WebKitError.h: Added.
* UIProcess/API/wpe/WebKitFaviconDatabase.h: Added.
* UIProcess/API/wpe/WebKitFileChooserRequest.h: Added.
* UIProcess/API/wpe/WebKitFindController.h: Added.
* UIProcess/API/wpe/WebKitFormSubmissionRequest.h: Added.
* UIProcess/API/wpe/WebKitGeolocationPermissionRequest.h: Added.
* UIProcess/API/wpe/WebKitHitTestResult.h: Added.
* UIProcess/API/wpe/WebKitInstallMissingMediaPluginsPermissionRequest.h: Added.
* UIProcess/API/wpe/WebKitJavascriptResult.h: Added.
* UIProcess/API/wpe/WebKitMimeInfo.h: Added.
* UIProcess/API/wpe/WebKitNavigationAction.h: Added.
* UIProcess/API/wpe/WebKitNavigationPolicyDecision.h: Added.
* UIProcess/API/wpe/WebKitNetworkProxySettings.h: Added.
* UIProcess/API/wpe/WebKitNotification.h: Added.
* UIProcess/API/wpe/WebKitNotificationPermissionRequest.h: Added.
* UIProcess/API/wpe/WebKitPermissionRequest.h: Added.
* UIProcess/API/wpe/WebKitPlugin.h: Added.
* UIProcess/API/wpe/WebKitPolicyDecision.h: Added.
* UIProcess/API/wpe/WebKitResponsePolicyDecision.h: Added.
* UIProcess/API/wpe/WebKitScriptDialog.h: Added.
* UIProcess/API/wpe/WebKitSecurityManager.h: Added.
* UIProcess/API/wpe/WebKitSecurityOrigin.h: Added.
* UIProcess/API/wpe/WebKitSettings.h: Added.
* UIProcess/API/wpe/WebKitURIRequest.h: Added.
* UIProcess/API/wpe/WebKitURIResponse.h: Added.
* UIProcess/API/wpe/WebKitURISchemeRequest.h: Added.
* UIProcess/API/wpe/WebKitUserContent.h: Added.
* UIProcess/API/wpe/WebKitUserContentManager.h: Added.
* UIProcess/API/wpe/WebKitUserMediaPermissionRequest.h: Added.
* UIProcess/API/wpe/WebKitWebContext.h: Added.
* UIProcess/API/wpe/WebKitWebResource.h: Added.
* UIProcess/API/wpe/WebKitWebView.h: Added.
* UIProcess/API/wpe/WebKitWebViewSessionState.h: Added.
* UIProcess/API/wpe/WebKitWebViewWPE.cpp: Added.
(webkitWebViewAuthenticate):
(webkitWebViewScriptDialog):
(webkitWebViewRunFileChooser):
(webkit_web_view_new):
(webkit_web_view_new_with_context):
(webkit_web_view_new_with_related_view):
(webkit_web_view_new_with_settings):
(webkit_web_view_new_with_user_content_manager):
* UIProcess/API/wpe/WebKitWebsiteData.h: Added.
* UIProcess/API/wpe/WebKitWebsiteDataManager.h: Added.
* UIProcess/API/wpe/WebKitWindowProperties.h: Added.
* UIProcess/API/wpe/webkit.h: Added.

Tools:

Disable geolocation because WPE doesn't implement any provider and update the style checker exceptions to
include WPE glib API files.

* Scripts/webkitperl/FeatureList.pm:
* Scripts/webkitpy/style/checker.py:
* Scripts/webkitpy/style/checkers/cpp.py:
(check_identifier_name_in_declaration):

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

2 years agorepatchIn needs to lock the CodeBlock's lock
sbarati@apple.com [Tue, 20 Jun 2017 07:15:19 +0000 (07:15 +0000)]
repatchIn needs to lock the CodeBlock's lock
https://bugs.webkit.org/show_bug.cgi?id=173573

Reviewed by Yusuke Suzuki.

CodeBlock::propagateTransitions and CodeBlock::visitWeakly grab the CodeBlock's
lock before modifying the StructureStubInfo/PolymorphicAccess. When regenerating
an IC, we must hold the CodeBlock's to prevent the executing thread from racing
with the marking thread. repatchIn was not grabbing the lock. I haven't been
able to get it to crash, but this is needed for the same reasons that get and put IC
regeneration grab the lock.

* jit/Repatch.cpp:
(JSC::repatchIn):

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

2 years ago[GTK] Upgrade to ICU to version 57.1
carlosgc@webkit.org [Tue, 20 Jun 2017 07:11:10 +0000 (07:11 +0000)]
[GTK] Upgrade to ICU to version 57.1
https://bugs.webkit.org/show_bug.cgi?id=173538

Reviewed by Žan Doberšek.

* gtk/jhbuild.modules:

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

2 years ago[GTK] Remove unneeded modules from the jhbuild
carlosgc@webkit.org [Tue, 20 Jun 2017 07:10:02 +0000 (07:10 +0000)]
[GTK] Remove unneeded modules from the jhbuild
https://bugs.webkit.org/show_bug.cgi?id=170540

Reviewed by Michael Catanzaro.

We are building libxslt and libffi that we don't really need to build from sources.

* gtk/jhbuild.modules:

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

2 years agoWeb Inspector: create canvas content view and details sidebar panel
drousso@apple.com [Tue, 20 Jun 2017 06:48:10 +0000 (06:48 +0000)]
Web Inspector: create canvas content view and details sidebar panel
https://bugs.webkit.org/show_bug.cgi?id=138941
<rdar://problem/19051672>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

* inspector/protocol/Canvas.json:
 - Add an optional `nodeId` attribute to the `Canvas` type.
 - Add `requestNode` command for getting the node id of the backing canvas element.
 - Add `requestContent` command for getting the current image content of the canvas.

Source/WebCore:

Tests: inspector/canvas/requestContent.html
       inspector/canvas/requestNode.html

* inspector/InspectorCanvasAgent.h:
* inspector/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::requestNode):
Gets the node id of the backing canvas element.

(WebCore::InspectorCanvasAgent::requestContent):
Gets the current image content of the canvas.

(WebCore::InspectorCanvasAgent::frameNavigated):
(WebCore::InspectorCanvasAgent::didCreateCanvasRenderingContext):
Minor fixes from r218376 <https://webkit.org/b/172623>.

(WebCore::InspectorCanvasAgent::buildObjectForCanvas):
Optionally send the `nodeId` of the backing canvas element if it is available.

* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::didCommitLoadImpl):

Source/WebInspectorUI:

* UserInterface/Models/Canvas.js:
(WebInspector.Canvas):
(WebInspector.Canvas.fromPayload):
(WebInspector.Canvas.prototype.get displayName):
(WebInspector.Canvas.requestNode): Added.
(WebInspector.Canvas.prototype.requestContent): Added.
(WebInspector.Canvas.prototype.saveIdentityToCookie):

* UserInterface/Controllers/CanvasManager.js:
(WebInspector.CanvasManager.prototype.canvasAdded):
(WebInspector.CanvasManager.prototype.canvasRemoved):
* UserInterface/Models/Collection.js:
* UserInterface/Models/Frame.js:
(WebInspector.Frame):
(WebInspector.Frame.prototype.get canvasCollection):
(WebInspector.Frame.prototype.commitProvisionalLoad):
Create a Collection for Canvas in each Frame, and modify it when canvas events are fired.

* UserInterface/Views/CanvasContentView.css: Added.
(.content-view.canvas > .preview):
(.content-view.canvas > .preview > img):
* UserInterface/Views/CanvasContentView.js: Added.
(WebInspector.CanvasContentView):
(WebInspector.CanvasContentView.prototype.get navigationItems):
(WebInspector.CanvasContentView.prototype.shown):
(WebInspector.CanvasContentView.prototype.hidden):
(WebInspector.CanvasContentView.prototype._showPreview):
(WebInspector.CanvasContentView.prototype._updateImageGrid):
(WebInspector.CanvasContentView.prototype._showGridButtonClicked):
* UserInterface/Views/CanvasDetailsSidebarPanel.js: Added.
(WebInspector.CanvasDetailsSidebarPanel):
(WebInspector.CanvasDetailsSidebarPanel.prototype.inspect):
(WebInspector.CanvasDetailsSidebarPanel.prototype.get canvas):
(WebInspector.CanvasDetailsSidebarPanel.prototype.set canvas):
(WebInspector.CanvasDetailsSidebarPanel.prototype.initialLayout):
(WebInspector.CanvasDetailsSidebarPanel.prototype.layout):
(WebInspector.CanvasDetailsSidebarPanel.prototype._refreshIdentitySection):
(WebInspector.CanvasDetailsSidebarPanel.prototype._refreshSourceSection.this._canvas.requestNode.):
(WebInspector.CanvasDetailsSidebarPanel.prototype._refreshSourceSection):
* UserInterface/Views/CanvasTreeElement.js: Added.
(WebInspector.CanvasTreeElement):

* UserInterface/Views/FrameTreeElement.js:
(WebInspector.FrameTreeElement.prototype.onattach):
(WebInspector.FrameTreeElement.prototype.ondetach):
(WebInspector.FrameTreeElement.prototype.onpopulate):
(WebInspector.FrameTreeElement.prototype._canvasWasAdded):
(WebInspector.FrameTreeElement.prototype._canvasWasRemoved):
(WebInspector.FrameTreeElement):
* UserInterface/Base/Main.js:
* UserInterface/Views/ContentView.js:
(WebInspector.ContentView.createFromRepresentedObject):
(WebInspector.ContentView.isViewable):
* UserInterface/Views/ResourceSidebarPanel.js:
(WebInspector.ResourceSidebarPanel):
(WebInspector.ResourceSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match):
(WebInspector.ResourceSidebarPanel.prototype._treeSelectionDidChange):
* UserInterface/Views/ResourcesTabContentView.js:
(WebInspector.ResourcesTabContentView):
(WebInspector.ResourcesTabContentView.prototype.canShowRepresentedObject):
Show Canvas objects and tie them to the correct ContentView and TreeElement subclasses.

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
* UserInterface/Images/Canvas.svg: Added.
* UserInterface/Views/ResourceIcons.css:
(.canvas .icon):
Added new files/rules/strings related to Canvas UI.

* UserInterface/Views/SettingsTabContentView.css:
(.content-view.settings .navigation-bar):

* UserInterface/Base/Setting.js:
* UserInterface/Views/SettingsTabContentView.js:
(WebInspector.SettingsTabContentView.prototype.initialLayout):
(WebInspector.SettingsTabContentView.prototype._createGeneralSettingsView):
(WebInspector.SettingsTabContentView.prototype._createDebugSettingsView):
Add an experimental settings toggle in the Debug view for showing canvas contexts.

* UserInterface/Views/FolderizedTreeElement.js:
(WebInspector.FolderizedTreeElement.prototype._compareTreeElementsByMainTitle):
Drive-by fix: ensure that sorting also includes numbers, so that 1 < 2 < 10.

* UserInterface/Views/ImageResourceContentView.js:
(WebInspector.ImageResourceContentView.prototype.shown):
(WebInspector.ImageResourceContentView.prototype.hidden):
(WebInspector.ImageResourceContentView.prototype._updateImageGrid):
(WebInspector.ImageResourceContentView.prototype._showGridButtonClicked):
(WebInspector.ImageResourceContentView):
Drive-by fix: change the activated state of the Show Grid navigation item if it changes
in another view.

LayoutTests:

* inspector/canvas/requestContent-expected.txt: Added.
* inspector/canvas/requestContent.html: Added.
* inspector/canvas/requestNode-expected.txt: Added.
* inspector/canvas/requestNode.html: Added.

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

2 years ago[iOS] Always include frames in the scrolling tree when async frame scrolling is enabled
fred.wang@free.fr [Tue, 20 Jun 2017 06:06:16 +0000 (06:06 +0000)]
[iOS] Always include frames in the scrolling tree when async frame scrolling is enabled
https://bugs.webkit.org/show_bug.cgi?id=173405

Patch by Frederic Wang <fwang@igalia.com> on 2017-06-19
Reviewed by Simon Fraser.

Source/WebCore:

Currently "async frame scrolling" is ignored on iOS. This commit changes that behavior to
align on macOS and is a preliminary step to implement iframe scrolling on iOS (bug 149264).

Test: compositing/iframes/compositing-for-scrollable-iframe.html
      fast/scrolling/scrolling-tree-includes-frame.html

* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::requiresCompositingForScrollableFrame): Do not require
compositing when "async frame scrolling" is enabled on iOS.

Source/WebKit2:

* WebProcess/WebCoreSupport/WebChromeClient.h: Set the ScrollableNonMainFrameTrigger bit by
default on iOS too. RenderLayerCompositor::requiresCompositingForScrollableFrame will ignore
this change when async frame scrolling is disabled.

LayoutTests:

Add some new expectations for iOS/WK2 now that the "async frame scrolling" setting is taken
into account for the layer and scrolling trees.

* platform/ios-wk2/compositing/iframes/compositing-for-scrollable-iframe-expected.txt: Added.
A specific layer is created for the iframe.
* platform/ios-wk2/fast/scrolling/scrolling-tree-includes-frame-expected.txt: Added.
The frame appears in the scrolling tree.
* platform/ios/fast/scrolling/scrolling-tree-includes-frame-expected.txt: Renamed from LayoutTests/platform/ios-simulator/fast/scrolling/scrolling-tree-includes-frame-expected.txt.
Use this as a generic expectation for iOS.

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

2 years ago[Mac] Add an experimental feature setting for async frame scrolling
fred.wang@free.fr [Tue, 20 Jun 2017 06:04:55 +0000 (06:04 +0000)]
[Mac] Add an experimental feature setting for async frame scrolling
https://bugs.webkit.org/show_bug.cgi?id=173359

Source/WebCore:

Patch by Frederic Wang <fwang@igalia.com> on 2017-06-19
Reviewed by Simon Fraser.

The necessary work to use compositing for frames and include them in the scrolling tree on
macOS was performed in r217726 and r217730. ScrollingTreeIncludesFrames was used to
determine when this behavior should be enabled. However, this does not work well on iOS where
ScrollingTreeIncludesFrames defaults to true and really means "include the frames in the
scrolling tree when necessary". Hence we instead introduce a new "async frame scrolling"
switch to enable the behavior on macOS, which will also be used in a follow-up commit on iOS.
This new setting is also made an "experimental feature", so that it will be more convenient
for developer to try it.

Test: compositing/iframes/compositing-for-scrollable-iframe.html
      fast/scrolling/scrolling-tree-includes-frame.html

* page/Settings.in: Declare new setting for async frame scrolling.
* page/scrolling/ScrollingCoordinator.cpp:
(WebCore::ScrollingCoordinator::coordinatesScrollingForFrameView): Also include frames in
scrolling tree when async frame scrolling is enabled.
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::requiresCompositingForScrollableFrame): Rely on async frame
scrolling to decide when compositing is needed.

Source/WebKit/mac:

Patch by Frederic Wang <fwang@igalia.com> on 2017-06-19
Reviewed by Simon Fraser.

* WebView/WebPreferenceKeysPrivate.h: Declare key for async frame scrolling preference.
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]): Initialize async frame scrolling preference to false.
(-[WebPreferences asyncFrameScrollingEnabled]): Define getter for async frame scrolling.
(-[WebPreferences setAsyncFrameScrollingEnabled:]): Define setter for async frame scrolling.
* WebView/WebPreferencesPrivate.h: Declare setter and getter.
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]): Take into account preference update for async frame
scrolling.

Source/WebKit2:

Reviewed by Simon Fraser.

* Shared/WebPreferencesDefinitions.h: Add experimental feature "async frame scrolling".
* WebProcess/InjectedBundle/API/c/WKBundle.cpp:
(WKBundleSetAsyncFrameScrollingEnabled): Add setter for async frame scrolling.
* WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: Declare setter.
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::setAsyncFrameScrollingEnabled): Add setter for async frame scrolling.
* WebProcess/InjectedBundle/InjectedBundle.h: Declare setter.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences): Take into account preference update for async frame
scrolling.

Tools:

Patch by Frederic Wang <fwang@igalia.com> on 2017-06-19
Reviewed by Simon Fraser.

* DumpRenderTree/mac/DumpRenderTree.mm:
(enableExperimentalFeatures): Do not enable async frame scrolling for now.
(resetWebPreferencesToConsistentValues): Disable async frame scrolling by default.
* WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
(WTR::InjectedBundle::beginTesting): Initalize to async frame scrolling to false.

LayoutTests:

Patch by Frederic Wang <fwang@igalia.com> on 2017-06-19
Reviewed by Simon Fraser.

* compositing/iframes/compositing-for-scrollable-iframe.html: Use "async frame scrolling" for
this test.
* fast/scrolling/scrolling-tree-includes-frame.html: Ditto.

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

2 years ago[WebCrypto] Add test for ECDH SPKI imports using the ecDH algorithm identifier
zandobersek@gmail.com [Tue, 20 Jun 2017 06:00:01 +0000 (06:00 +0000)]
[WebCrypto] Add test for ECDH SPKI imports using the ecDH algorithm identifier
https://bugs.webkit.org/show_bug.cgi?id=173543

Reviewed by Jiewen Tan.

Add the ecdh-import-spki-key-ecdh-identifier.html layout test which
tests for successful import of EC keys through the SPKI format when
using the ecDH algorithm identifier (OID 1.3.132.1.12) and following
the ECDH algorithm import steps.

No implementation supports this yet, so the test is skipped on all ports.

* TestExpectations:
* crypto/subtle/ecdh-import-spki-key-ecdh-identifier-expected.txt: Added.
* crypto/subtle/ecdh-import-spki-key-ecdh-identifier.html: Added.

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

2 years agoAX: Remove redundant AXObjectCache::textChanged(RenderObject*).
zalan@apple.com [Tue, 20 Jun 2017 05:19:44 +0000 (05:19 +0000)]
AX: Remove redundant AXObjectCache::textChanged(RenderObject*).
https://bugs.webkit.org/show_bug.cgi?id=173579
<rdar://problem/32865367>

Reviewed by Antti Koivisto.

All calls go through textChanged(Node*) method.

* accessibility/AXObjectCache.cpp:
* accessibility/AXObjectCache.h:
(WebCore::AXObjectCache::getOrCreate):

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

2 years agofixed change log
darin@apple.com [Tue, 20 Jun 2017 04:20:52 +0000 (04:20 +0000)]
fixed change log

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

2 years agoMerge MediaDevicesRequest and MediaDevicesEnumerationRequest to tighten up code and...
darin@apple.com [Tue, 20 Jun 2017 04:18:47 +0000 (04:18 +0000)]
Merge MediaDevicesRequest and MediaDevicesEnumerationRequest to tighten up code and object lifetime
https://bugs.webkit.org/show_bug.cgi?id=173527

Reviewed by Sam Weinig.

Source/WebCore:

* CMakeLists.txt: Removed MediaDevicesRequest.cpp.

* Modules/mediastream/MediaDeviceInfo.cpp:
(WebCore::MediaDeviceInfo::MediaDeviceInfo): Removed unneeded ScriptExecutionContext.
(WebCore::MediaDeviceInfo::create): Ditto.
* Modules/mediastream/MediaDeviceInfo.h: Removed unnecessary derivation from
ContextDestructionObserver and ScriptExecutionContext arguments. Also removed
unused MediaDeviceInfoVector typedef.
* Modules/mediastream/MediaDeviceInfo.idl: Added ImplementationLacksVTable.

* Modules/mediastream/MediaDevices.cpp:
(WebCore::MediaDevices::enumerateDevices): Call MediaDevicesEnumerationRequest
directly here instead of going through MediaDevicesRequest.

* Modules/mediastream/MediaDevicesEnumerationRequest.cpp: Moved code from
MediaDevicesRequest in here. Put the typical counts at the top of the file.
(WebCore::MediaDevicesEnumerationRequest::MediaDevicesEnumerationRequest):
Marked inline and changed to take a DOM promise directly rather than having
a separate class do the mapping to DOM promises.
(WebCore::MediaDevicesEnumerationRequest::start): Replaced the create function
with this. The caller doesn't actually keep a reference to the object.
Added a FIXME about the behavior, not new, where we neither resolve nor reject
the promise if there is no page object present. Updated to use the new version
of UserMediaController::from.
(WebCore::MediaDevicesEnumerationRequest::~MediaDevicesEnumerationRequest):
Added a FIXME about the issue that we don't resolve or reject the promise if
the client drops the last reference to the request without calling setDeviceInfo.
(WebCore::MediaDevicesEnumerationRequest::document): Added. Private helper.
Returns nullptr if the request is no longer active.
(WebCore::MediaDevicesEnumerationRequest::frame): Added. For use by a caller
that was getting to the frame. Uses the document function so it will return
nullptr if the request is no longer active.
(WebCore::MediaDevicesEnumerationRequest::userMediaDocumentOrigin): Changed
to do the work using the document function.
(WebCore::MediaDevicesEnumerationRequest::topLevelDocumentOrigin): Ditto.
(WebCore::MediaDevicesEnumerationRequest::contextDestroyed): Simplified. We
now can simply set a boolean when the context is destroyed, so there are no
side effects and the code is simpler.
(WebCore::removeAtypicalDevices): Renamed and tightened up the code a bit.
(WebCore::MediaDevicesEnumerationRequest::setDeviceInfo): Moved the code
here from MediaDevicesEnumerationRequest to pass the devices along.

* Modules/mediastream/MediaDevicesEnumerationRequest.h: Made the
ContextDestructionObserver use private inheritance. Cut down the includes
and removed various unneeded functions.

* Modules/mediastream/MediaDevicesRequest.cpp: Removed.
* Modules/mediastream/MediaDevicesRequest.h: Removed.

* Modules/mediastream/UserMediaController.cpp:
(WebCore::UserMediaController::UserMediaController): Use reference rather
than pointer for the client.
(WebCore::UserMediaController::~UserMediaController): Ditto.
(WebCore::provideUserMediaTo): Ditto.

* Modules/mediastream/UserMediaController.h:
Changed constructor to take a refeference, removed client function, and
changed data member to be a reference rather than a pointer.
(WebCore::UserMediaController::from): Take and return a reference rather
than taking a pointer that is checked for null.
(WebCore::UserMediaController::requestUserMediaAccess): Use reference.
(WebCore::UserMediaController::cancelUserMediaAccessRequest): Ditto.
(WebCore::UserMediaController::enumerateMediaDevices): Ditto.
(WebCore::UserMediaController::cancelMediaDevicesEnumerationRequest): Ditto.

* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::start): Updated to use the new version
of UserMediaController::from.

* WebCore.xcodeproj/project.pbxproj: Updated for file removals.

* testing/Internals.cpp: Removed unneeded include of UserMediaController.h.

Source/WebKit2:

* UIProcess/API/C/WKUserMediaPermissionCheck.h: Fixed incorrect file name in comment.

* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
(WebKit::UserMediaPermissionRequestManager::enumerateMediaDevices): Use the new frame
function from MediaDevicesEnumerationRequest rather than finding the frame with our
own code.

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

2 years ago[WebIDL] Move Touch related bindings in Document to their own IDL file
weinig@apple.com [Tue, 20 Jun 2017 03:25:45 +0000 (03:25 +0000)]
[WebIDL] Move Touch related bindings in Document to their own IDL file
https://bugs.webkit.org/show_bug.cgi?id=173521

Reviewed by Alex Christensen.

Rather than #including in the middle of an IDL file, this moves the touch related
bindings in Document.idl to a new partial interface for Document in DocumentTouch.idl.
While here, remove the custom binding for createTouchList.

* CMakeLists.txt:
* DerivedSources.make:
* WebCore.xcodeproj/project.pbxproj:
Add new files.

* bindings/js/JSDocumentCustom.cpp:
(WebCore::JSDocument::createTouchList): Deleted.
Remove createTouchList. It can be generated now.

* dom/Document.cpp:
(WebCore::Document::createTouch): Deleted.
* dom/Document.h:
Move touch related bindings code to DocumentTouch.h/cpp.
Remove DocumentIOSForward as it is no longer needed.

* dom/Document.idl:
Move touch related bindings to DocumentTouch.idl

* dom/DocumentTouch.h: Added.
* dom/DocumentTouch.cpp: Added.
(WebCore::DocumentTouch::createTouch):
Moved from Document.

(WebCore::DocumentTouch::createTouchList):
Added to aid generated binding.

* dom/DocumentTouch.idl: Added.
Moved operations from Document.h

* dom/TouchList.h:
(WebCore::TouchList::create):
(WebCore::TouchList::TouchList):
Added create that works with the bindings.

* dom/ios/TouchEvents.cpp:
Add DocumentTouchIOS.h and sort.

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

2 years agoRegression(r217570): com.apple.WebKit.Networking crash at com.apple.WebKit: WebKit...
cdumez@apple.com [Tue, 20 Jun 2017 03:17:05 +0000 (03:17 +0000)]
Regression(r217570): com.apple.WebKit.Networking crash at com.apple.WebKit: WebKit::ChildProcess::didReceiveInvalidMessage (Breaks 32-bit apps)
https://bugs.webkit.org/show_bug.cgi?id=173576
<rdar://problem/32416291>

Reviewed by Tim Horton.

The IPC encoding / decoding code cannot be architecture-specific because a 32bit UIProcess
talks to a 64bit NetworkProcess. The WEB_RTC build time flag is enabled on 64bit only.
Therefore, we should not use #if ENABLE(WEB_RTC) in IPC encoding / decoding code.

* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:

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

2 years agoUnreviewed, build fix for ARM
utatane.tea@gmail.com [Tue, 20 Jun 2017 03:14:30 +0000 (03:14 +0000)]
Unreviewed, build fix for ARM

* assembler/MacroAssemblerARM.h:
(JSC::MacroAssemblerARM::internalCompare32):

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

2 years ago[WTF] Include execinfo.h and dlfcn.h based on platform defines
utatane.tea@gmail.com [Tue, 20 Jun 2017 02:59:31 +0000 (02:59 +0000)]
[WTF] Include execinfo.h and dlfcn.h based on platform defines
https://bugs.webkit.org/show_bug.cgi?id=173531

Reviewed by Alex Christensen.

execinfo.h and dlfcn.h can be missing in some libc libraries.
When including it, we should honor platform defines like HAVE(DLADDR).

* wtf/StackTrace.cpp:

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

2 years ago[DFG] More ArrayIndexOf fixups for various types
utatane.tea@gmail.com [Tue, 20 Jun 2017 02:46:08 +0000 (02:46 +0000)]
[DFG] More ArrayIndexOf fixups for various types
https://bugs.webkit.org/show_bug.cgi?id=173176

Reviewed by Saam Barati.

JSTests:

* stress/array-indexof-arraystorage.js: Added.
(shouldBe):
(indexOfInt32Other):
(indexOfInt32Cell):
(indexOfInt32Boolean):
(indexOfDoubleOther):
(indexOfDoubleCell):
(indexOfDoubleBoolean):
(indexOfInt32):
(indexOfDouble):
* stress/array-indexof-constant-folding.js: Added.
(shouldBe):
(indexOfInt32Other):
(indexOfInt32Cell):
(indexOfInt32Boolean):
(indexOfDoubleOther):
(indexOfDoubleCell):
(indexOfDoubleBoolean):
* stress/array-indexof-hole-and-other.js: Added.
(shouldBe):
(indexOf):
* stress/array-indexof-other.js: Added.
(shouldBe):
(indexOfInt32):
(indexOfDouble):
(indexOfString):
(indexOfObject):
* stress/array-indexof-symbol.js: Added.
(shouldBe):
(indexOfInt32):
(indexOfDouble):
(indexOfString):
(indexOfObject):

Source/JavaScriptCore:

This patch further expands coverage of ArrayIndexOf optimization in DFG and FTL.

1. We attempt to fold ArrayIndexOf to constant (-1) if we know that its array
never contains the given search value.

2. We support Symbol and Other specialization additionally. Especially, Other is
useful because null/undefined can be used as a sentinel value.

One interesting thing is that Array.prototype.indexOf does not consider holes as
undefineds. Thus,

    var array = [,,,,,,,];
    array.indexOf(undefined); // => -1

This can be trivially achieved in JSC because Empty and Undefined are different values.

* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::fixupArrayIndexOf):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileArrayIndexOf):
(JSC::DFG::SpeculativeJIT::speculateOther):
* dfg/DFGSpeculativeJIT.h:
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileArrayIndexOf):

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

2 years ago[Cocoa] The system Japanese font cannot be italicized
mmaxfield@apple.com [Tue, 20 Jun 2017 02:28:18 +0000 (02:28 +0000)]
[Cocoa] The system Japanese font cannot be italicized
https://bugs.webkit.org/show_bug.cgi?id=173300
<rdar://problem/31805407>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Items in the system font cascade list may lie about whether or not they support italics.
In order to get the truth, we need to use the physical font underlying the font in question,
because this one won't lie. Then, we can interrogate this physical font about its traits
in order to synthesize italics correctly.

Test: fast/text/system-font-japanese-synthetic-italic.html

* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::lookupFallbackFont):
* platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:
(WebCore::FontFamilySpecificationCoreText::fontRanges):

LayoutTests:

* fast/text/system-font-japanese-synthetic-italic-expected-mismatch.html: Added.
* fast/text/system-font-japanese-synthetic-italic.html: Added.
* platform/mac/TestExpectations: This codepath doesn't work in El Capitan.

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

2 years ago[cURL] Move file scope static variables into function scopes
commit-queue@webkit.org [Tue, 20 Jun 2017 01:47:00 +0000 (01:47 +0000)]
[cURL] Move file scope static variables into function scopes
https://bugs.webkit.org/show_bug.cgi?id=173567

Patch by Daewoong Jang <daewoong.jang@navercorp.com> on 2017-06-19
Reviewed by Alex Christensen.

* platform/network/curl/SSLHandle.cpp:
(WebCore::allowedHosts):
(WebCore::allowedClientHosts):
(WebCore::allowsAnyHTTPSCertificateHosts):
(WebCore::addAllowedClientCertificate):
(WebCore::setSSLClientCertificate):
(WebCore::sslIgnoreHTTPSCertificate):
(WebCore::certVerifyCallback):

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

2 years agoUnreviewed, partial rollout of r218501 to address crashes on iOS.
cdumez@apple.com [Tue, 20 Jun 2017 01:23:34 +0000 (01:23 +0000)]
Unreviewed, partial rollout of r218501 to address crashes on iOS.

* UIProcess/Cocoa/NavigationState.mm:
(WebKit::tryAppLink):

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

2 years agoWeb Inspector: Unify contextmenu items for all node links/previews
drousso@apple.com [Tue, 20 Jun 2017 01:17:02 +0000 (01:17 +0000)]
Web Inspector: Unify contextmenu items for all node links/previews
https://bugs.webkit.org/show_bug.cgi?id=173187

Reviewed by Joseph Pecoraro.

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/ContextMenuUtilities.js:
(WebInspector.appendContextMenuItemsForDOMNode.didGetFunctionDetails): Added.
(WebInspector.appendContextMenuItemsForDOMNode.didGetProperty): Added.
(WebInspector.appendContextMenuItemsForDOMNode.didResolveNode): Added.
(WebInspector.appendContextMenuItemsForDOMNode): Added.
* UserInterface/Views/DOMTreeElement.js:
(WebInspector.DOMTreeElement.prototype._populateTagContextMenu):
(WebInspector.DOMTreeElement.prototype._populateNodeContextMenu):
(WebInspector.DOMTreeElement.prototype._showCustomElementDefinition): Deleted.
* UserInterface/Views/DOMTreeOutline.js:
(WebInspector.DOMTreeOutline.prototype.populateContextMenu):
(WebInspector.DOMTreeOutline.prototype._populateContextMenu.revealElement): Deleted.
(WebInspector.DOMTreeOutline.prototype._populateContextMenu.logElement): Deleted.
(WebInspector.DOMTreeOutline.prototype._populateContextMenu): Deleted.
* UserInterface/Views/RulesStyleDetailsPanel.js:
(WebInspector.RulesStyleDetailsPanel.prototype.refresh.insertMediaOrInheritanceLabel):
Unify common DOM node context menu actions into a single helper function.

* UserInterface/Base/DOMUtilities.js:
(WebInspector.linkifyNodeReference):
(WebInspector.linkifyNodeReferenceElement):
Rework parameters to use options dictionary.

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

2 years agoUnreviewed, adding myself to contributors.json
guijemont@igalia.com [Tue, 20 Jun 2017 01:04:15 +0000 (01:04 +0000)]
Unreviewed, adding myself to contributors.json

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

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

2 years ago[ARMv6][DFG] ARM MacroAssembler is always emitting cmn when immediate is 0
ticaiolima@gmail.com [Tue, 20 Jun 2017 00:50:23 +0000 (00:50 +0000)]
[ARMv6][DFG] ARM MacroAssembler is always emitting cmn when immediate is 0
https://bugs.webkit.org/show_bug.cgi?id=172972

Reviewed by Mark Lam.

We are changing internalCompare32 implementation in ARM
MacroAssembler to emit "cmp" when the "right.value" is 0.
It is generating wrong comparison cases, since the
semantics of cmn is opposite of cmp[1]. One case that it's breaking is
"branch32(MacroAssembler::Above, gpr, TrustedImm32(0))", where ends
resulting in following assembly code:

```
cmn $r0, #0
bhi <address>
```

However, as cmn is similar to "adds", it will never take the branch
when $r0 > 0. In that case, the correct opcode is "cmp". With this
patch we will fix current broken tests that uses
"branch32(MacroAssembler::Above, gpr, TrustedImm32(0))",
such as ForwardVarargs, Spread and GetRestLength.

[1] - http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204j/Cihiddid.html

* assembler/MacroAssemblerARM.h:
(JSC::MacroAssemblerARM::internalCompare32):

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

2 years agoImprove debugging ability of some webrtc tests
commit-queue@webkit.org [Mon, 19 Jun 2017 23:53:00 +0000 (23:53 +0000)]
Improve debugging ability of some webrtc tests
https://bugs.webkit.org/show_bug.cgi?id=173549

Patch by Youenn Fablet <youenn@apple.com> on 2017-06-19
Reviewed by Eric Carlson.

Improve debugging ability for first two tests.
Improve reliability for the next three tests.

* webrtc/audio-replace-track-expected.txt:
* webrtc/audio-replace-track.html: Checking connected state.
* webrtc/video-mute-expected.txt:
* webrtc/video-mute.html: Ditto.
* webrtc/video-replace-track-to-null.html: Improving reliability of test.
* webrtc/video-rotation.html: Adding some delay before testing black frames and increasing delay between the tests..
* webrtc/video-unmute.html: Using counter based testing of black frames.

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

2 years ago[Cocoa] implement URLSession:task:needNewBodyStream: delegate method
darin@apple.com [Mon, 19 Jun 2017 23:51:00 +0000 (23:51 +0000)]
[Cocoa] implement URLSession:task:needNewBodyStream: delegate method
https://bugs.webkit.org/show_bug.cgi?id=173551
rdar://problem/32250512

Source/WebCore:

Reviewed by Alex Christensen.

Covered by http/tests/misc/form-blob-challenge.html

* WebCore.xcodeproj/project.pbxproj: Removed NSURLRequestSPI.h.

* platform/network/cf/FormDataStreamCFNet.cpp:
(WebCore::createHTTPBodyCFReadStream): Factored this out from setHTTPBody.
(WebCore::setHTTPBody): Factored out the function above.
* platform/network/cf/FormDataStreamCFNet.h: Added createHTTPBodyCFReadStream.

* platform/network/cocoa/ResourceRequestCocoa.mm: Use CFNetworkSPI.h.
* platform/network/ios/ResourceRequestIOS.mm: Ditto.

* platform/network/mac/FormDataStreamMac.h: Added createHTTPBodyNSInputStream.
* platform/network/mac/FormDataStreamMac.mm:
(WebCore::createHTTPBodyNSInputStream): Added/

* platform/network/mac/ResourceHandleMac.mm: Use CFNetworkSPI.h.
* platform/network/mac/ResourceRequestMac.mm: Ditto.
* platform/network/mac/WebCoreResourceHandleAsDelegate.mm: Ditto.
* platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm: Ditto.

* platform/network/mac/WebCoreURLResponse.h: Moved SPI declarations from
here into CFNetworkSPI.h.

* platform/spi/cf/CFNetworkSPI.h: Use #pragma once, consolidated SPI that was
defined in scattered locations.

* platform/spi/cocoa/NSURLRequestSPI.h: Removed. Superceded by CFNetworkSPI.h.

Source/WebKit2:

Reviewed by Alex Christensen.

* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate existingTask:]): Added helper method.
(-[WKNetworkSessionDelegate URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:]):
Updated to use existingTask: method.
(-[WKNetworkSessionDelegate URLSession:task:needNewBodyStream:]): Added.
(-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
Updated to use existingTask: method.
(-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]): Ditto.
(-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]): Ditto.
(-[WKNetworkSessionDelegate URLSession:task:didCompleteWithError:]): Ditto.
(-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]): Ditto.
(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]): Ditto.
(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveData:]): Ditto.
(-[WKNetworkSessionDelegate URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:]): Ditto.
(-[WKNetworkSessionDelegate URLSession:dataTask:didBecomeDownloadTask:]): Ditto.
(WebKit::globalAllowsCellularAccess): Deleted. Just use a normal global.
(WebKit::globalLegacyCustomProtocolManager): Deleted. Just use a normal global.
(WebKit::NetworkSessionCocoa::setLegacyCustomProtocolManager): Updated for normal global.
(WebKit::NetworkSessionCocoa::setAllowsCellularAccess): Ditto.
(WebKit::NetworkSessionCocoa::defaultSession): Ditto.
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa): Ditto.

LayoutTests:

Reviewed by Alex Christensen.

* http/tests/misc/form-blob-challenge-expected.txt: Added.
* http/tests/misc/form-blob-challenge.html: Added.
* http/tests/misc/resources/basic-echo-post.php: Added.

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

2 years agoVarious IndexedDB crashes as an after effect of previous test.
beidson@apple.com [Mon, 19 Jun 2017 23:19:11 +0000 (23:19 +0000)]
Various IndexedDB crashes as an after effect of previous test.
<rdar://problem/31418761> and https://bugs.webkit.org/show_bug.cgi?id=170436

Reviewed by Chris Dumez.

No new test (No consistent test possible, in practice covered by all existing IDB tests)

This is timing related, where a UniqueIDBDatabase can be destroyed on the main thread while
it still has one task left to try to execute on the IDBServer thread.

The background thread tasks don't Ref<> the UniqueIDBDatabase, so even though task execution
took a Ref<> protector, there was still a small window for a race.

Should be closed up by making the background thread tasks themselves protect this.

* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::postDatabaseTask):
(WebCore::IDBServer::UniqueIDBDatabase::postDatabaseTaskReply):
(WebCore::IDBServer::UniqueIDBDatabase::executeNextDatabaseTask):
(WebCore::IDBServer::UniqueIDBDatabase::executeNextDatabaseTaskReply):
* Modules/indexeddb/server/UniqueIDBDatabase.h:

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

2 years agoAdjusted test ecpectaions for webrtc/libwebrtc/descriptionGetters.html.
jlewis3@apple.com [Mon, 19 Jun 2017 22:47:43 +0000 (22:47 +0000)]
Adjusted test ecpectaions for webrtc/libwebrtc/descriptionGetters.html.
https://bugs.webkit.org/show_bug.cgi?id=171703

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

2 years agotest262: Completion values for control flow do not match the spec
commit-queue@webkit.org [Mon, 19 Jun 2017 22:04:20 +0000 (22:04 +0000)]
test262: Completion values for control flow do not match the spec
https://bugs.webkit.org/show_bug.cgi?id=171265

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-06-19
Reviewed by Saam Barati.

JSTests:

* stress/completion-value.js:
Condensed test for completion values in top level statements.

* stress/super-get-by-id.js:
ClassDeclaration when evaled no longer produce values. Convert
these to ClassExpressions so they produce the class value.

* ChakraCore/test/GlobalFunctions/evalreturns3.baseline-jsc:
This is a progression for currect spec behavior.

* mozilla/mozilla-tests.yaml:
This test is now outdated, so mark it as failing for that reason.

* test262.yaml:
Passing all "cptn" completion value tests.

Source/JavaScriptCore:

* bytecompiler/BytecodeGenerator.h:
(JSC::BytecodeGenerator::shouldBeConcernedWithCompletionValue):
When we care about having proper completion values (global code
in programs, modules, and eval) insert undefined results for
control flow statements.

* bytecompiler/NodesCodegen.cpp:
(JSC::SourceElements::emitBytecode):
Reduce writing a default `undefined` value to the completion result to
only once before the last statement we know will produce a value.

(JSC::IfElseNode::emitBytecode):
(JSC::WithNode::emitBytecode):
(JSC::WhileNode::emitBytecode):
(JSC::ForNode::emitBytecode):
(JSC::ForInNode::emitBytecode):
(JSC::ForOfNode::emitBytecode):
(JSC::SwitchNode::emitBytecode):
Insert an undefined to handle cases where code may break out of an
if/else or with statement (break/continue).

(JSC::TryNode::emitBytecode):
Same handling for break cases. Also, finally block statement completion
values are always ignored for the try statement result.

(JSC::ClassDeclNode::emitBytecode):
Class declarations, like function declarations, produce an empty result.

* parser/Nodes.cpp:
(JSC::SourceElements::lastStatement):
(JSC::SourceElements::hasCompletionValue):
(JSC::SourceElements::hasEarlyBreakOrContinue):
(JSC::BlockNode::lastStatement):
(JSC::BlockNode::singleStatement):
(JSC::BlockNode::hasCompletionValue):
(JSC::BlockNode::hasEarlyBreakOrContinue):
(JSC::ScopeNode::singleStatement):
(JSC::ScopeNode::hasCompletionValue):
(JSC::ScopeNode::hasEarlyBreakOrContinue):
The only non-trivial cases need to loop through their list of statements
to determine if this has a completion value or not. Likewise for
determining if there is an early break / continue, meaning a break or
continue statement with no preceding statement that has a completion value.

* parser/Nodes.h:
(JSC::StatementNode::next):
(JSC::StatementNode::hasCompletionValue):
Helper to check if a statement nodes produces a completion value or not.

Tools:

* Scripts/run-jsc-stress-tests:
Include a :failDueToOutdatedOrBadTest to mark failures with justification.

LayoutTests:

* js/eval-throw-return-expected.txt:
* js/kde/completion-expected.txt:
* js/kde/script-tests/completion.js:
* js/script-tests/eval-throw-return.js:
* sputnik/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A9-expected.txt:
* sputnik/Conformance/12_Statement/12.6_Iteration_Statements/12.6.3_The_for_Statement/S12.6.3_A9.1-expected.txt:
Rebaseline expectations. These are all outdated. In fact the sputnik
tests were imported into test262 and modified for ES2015.

* js/script-tests/function-toString-vs-name.js:
ClassDeclarations on their own don't produce a value. So output
the class value so the test behaves as expected.

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

2 years ago[WebIDL] Add support for serializers that have members that are themselves serializer...
commit-queue@webkit.org [Mon, 19 Jun 2017 21:55:00 +0000 (21:55 +0000)]
[WebIDL] Add support for serializers that have members that are themselves serializers (or inherit being a serializer from a parent)
https://bugs.webkit.org/show_bug.cgi?id=173395

Patch by Sam Weinig <sam@webkit.org> on 2017-06-19
Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/css/DOMQuad-serialization.html

* bindings/scripts/CodeGenerator.pm:
(InheritsSerializable):
Helper to determine if an interface inherits from any interfaces
that are serializable. This is necessary because an attribute is
serializable even if its interface is not marked as serializable.

(IsSerializableAttribute):
Check ancestor interfaces as well to determine serializability.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateSerializerDefinition):
Specialize attributes that are serializable interfaces to call its interfaces
serialize function, thus allowing nested objects to be serialized.

* dom/DOMQuad.idl:
Add serializer.

* bindings/scripts/test/JS/JSTestSerialization.cpp:
* bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp: Added.
* bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.h: Added.
* bindings/scripts/test/TestSerialization.idl:
* bindings/scripts/test/TestSerializationIndirectInheritance.idl: Added.
Add and update tests.

LayoutTests:

* fast/css/DOMQuad-serialization-expected.txt: Added.
* fast/css/DOMQuad-serialization.html: Added.
Add test for DOMQuad serialization, now that it is supported.

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

2 years agoUnreviewed, rolling out r218505.
commit-queue@webkit.org [Mon, 19 Jun 2017 21:27:05 +0000 (21:27 +0000)]
Unreviewed, rolling out r218505.
https://bugs.webkit.org/show_bug.cgi?id=173563

"It would break internal builds" (Requested by youenn on
#webkit).

Reverted changeset:

"[WebRTC] Prevent capturing at unconventional resolutions when
using the SW encoder on Mac"
https://bugs.webkit.org/show_bug.cgi?id=172602
http://trac.webkit.org/changeset/218505

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

2 years agoOpening certain mails brings up a mail that grows indefinitely.
zalan@apple.com [Mon, 19 Jun 2017 21:22:56 +0000 (21:22 +0000)]
Opening certain mails brings up a mail that grows indefinitely.
https://bugs.webkit.org/show_bug.cgi?id=173562
<rdar://problem/32766579>

Reviewed by Tim Horton.

Source/WebCore:

This reverts the logic where m_autoSizeContentSize always reflects the final layout's.
When the ICB's height is 100%, it causes infinite recursion.
See also webkit.org/b/173561.

* page/FrameView.cpp:
(WebCore::FrameView::autoSizeIfEnabled):

Tools:

* TestWebKitAPI/Tests/WebKit2Cocoa/AutoLayoutIntegration.mm:
(TEST):

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

2 years ago[iOS DnD] Support .zip archives for file uploads via drag and drop
wenson_hsieh@apple.com [Mon, 19 Jun 2017 21:12:28 +0000 (21:12 +0000)]
[iOS DnD] Support .zip archives for file uploads via drag and drop
https://bugs.webkit.org/show_bug.cgi?id=173511
<rdar://problem/32521025>

Reviewed by Tim Horton.

Source/WebCore:

Allows dropped .zip archives to be uploaded as files by accepting types conforming to either
"public.zip-archive" or "public.content" as potential file types. Initially, I opted to accept the more general
"public.data" type; however, this includes UTIs such as "public.url" that should not be represented as files, so
this is a more targeted fix that allows us to very easily add additional content types in the future by adding
more types to supportedFileUploadPasteboardTypes.

Tests:
DataInteractionTests.ExternalSourceZIPArchiveToUploadArea
DataInteractionTests.ExternalSourceZIPArchiveAndURLToSingleFileInput

* page/mac/DragControllerMac.mm:
(WebCore::DragController::updateSupportedTypeIdentifiersForDragHandlingMethod):
* platform/Pasteboard.h:
* platform/ios/PasteboardIOS.mm:
(WebCore::Pasteboard::read):
(WebCore::Pasteboard::supportedWebContentPasteboardTypes):
(WebCore::Pasteboard::supportedFileUploadPasteboardTypes):

Rename supportedPasteboardTypes to supportedWebContentPasteboardTypes, and also introduce
supportedFileUploadPasteboardTypes which returns an list of types, such that if a type conforms to any type in
this array, that type may be represented as a file. So far, this list contains "public.content" and
"public.zip-archive".

(WebCore::Pasteboard::types):
(WebCore::Pasteboard::supportedPasteboardTypes): Deleted.
* platform/ios/WebItemProviderPasteboard.mm:
(typeConformsToTypes):

Remove -typeIsAppropriateForSupportedTypes: and replace it with typeConformsToTypes. Use this both when
determining the number of files on the pasteboard, and when determining preferred UTIs to load when dropping.

(-[WebItemProviderPasteboard numberOfFiles]):
(-[WebItemProviderPasteboard typeIdentifierToLoadForRegisteredTypeIdentfiers:]):
(-[WebItemProviderPasteboard typeIsAppropriateForSupportedTypes:]): Deleted.
* platform/mac/DragDataMac.mm:
(WebCore::DragData::containsFiles):
* platform/mac/PasteboardMac.mm:
(WebCore::Pasteboard::supportedFileUploadPasteboardTypes):

Tools:

Adds tests for dropping .zip archives into a JavaScript-based file upload area, as well as into a file input.
Also verifies that URLs are not handled as file drops. See WebCore ChangeLog for more details.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit2Cocoa/compressed-files.zip: Added.
* TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
(testZIPArchive):
(TestWebKitAPI::TEST):

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

2 years ago[WebIDL] Remove custom binding for Document.getCSSCanvasContext()
commit-queue@webkit.org [Mon, 19 Jun 2017 21:01:19 +0000 (21:01 +0000)]
[WebIDL] Remove custom binding for Document.getCSSCanvasContext()
https://bugs.webkit.org/show_bug.cgi?id=173516

Patch by Sam Weinig <sam@webkit.org> on 2017-06-19
Reviewed by Chris Dumez.

* bindings/js/JSDocumentCustom.cpp:
(WebCore::JSDocument::visitAdditionalChildren):
(WebCore::JSDocument::getCSSCanvasContext): Deleted.
* dom/Document.cpp:
(WebCore::Document::getCSSCanvasContext):
* dom/Document.h:
* dom/Document.idl:
Use a Variant to pass the context and type to the bindings.

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

2 years agoUnreviewed, rolling out r218503.
ryanhaddad@apple.com [Mon, 19 Jun 2017 20:54:14 +0000 (20:54 +0000)]
Unreviewed, rolling out r218503.

This change broke the macOS Sierra build.

Reverted changeset:

"Removed unused lambda captures from WebKit2"
https://bugs.webkit.org/show_bug.cgi?id=173555
http://trac.webkit.org/changeset/218503

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

2 years ago[WebRTC] Prevent capturing at unconventional resolutions when using the SW encoder...
commit-queue@webkit.org [Mon, 19 Jun 2017 20:42:04 +0000 (20:42 +0000)]
[WebRTC] Prevent capturing at unconventional resolutions when using the SW encoder on Mac
https://bugs.webkit.org/show_bug.cgi?id=172602
<rdar://problem/32407693>

Patch by Youenn Fablet <youenn@apple.com> on 2017-06-19
Reviewed by Eric Carlson.

Source/ThirdParty/libwebrtc:

Adding a parameter to disable hardware encoder.

* Source/webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_encoder.h:
* Source/webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_encoder.mm:
(webrtc::H264VideoToolboxEncoder::CreateCompressionSession):

Source/WebCore:

Test: platform/mac/webrtc/captureCanvas-webrtc-software-encoder.html

Add internal API to switch on/off hardware H264 encoder.
Add checks for standard size. If using a software encoder and frame size is not standard,
the session is destroyed and no frame is sent at all.

Added tests based on captureStream.
Fixed the case of capturing a canvas which size is changing.

* Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
(WebCore::CanvasCaptureMediaStreamTrack::Source::canvasResized):
* platform/mediastream/libwebrtc/H264VideoToolBoxEncoder.h:
* platform/mediastream/libwebrtc/H264VideoToolBoxEncoder.mm:
(WebCore::H264VideoToolboxEncoder::setHardwareEncoderForWebRTCAllowed):
(WebCore::H264VideoToolboxEncoder::hardwareEncoderForWebRTCAllowed):
(WebCore::isUsingSoftwareEncoder):
(WebCore::H264VideoToolboxEncoder::CreateCompressionSession):
(isStandardFrameSize): Added.
(isUsingSoftwareEncoder): Added.
* testing/Internals.cpp:
(WebCore::Internals::setH264HardwareEncoderAllowed):
* testing/Internals.h:
* testing/Internals.idl:

LayoutTests:

* platform/mac-wk1/TestExpectations: Mark captureCanvas as flaky due to AVDCreateGPUAccelerator: Error loading GPU renderer" appearing on some bots.
* platform/mac/webrtc/captureCanvas-webrtc-software-encoder-expected.txt: Copied from LayoutTests/webrtc/captureCanvas-webrtc-expected.txt.
* platform/mac/webrtc/captureCanvas-webrtc-software-encoder.html: Added.
* webrtc/captureCanvas-webrtc-expected.txt:
* webrtc/captureCanvas-webrtc.html:

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

2 years ago[iOS DnD] [WK2] Add an internal hook to change the drag lift delay
wenson_hsieh@apple.com [Mon, 19 Jun 2017 20:25:50 +0000 (20:25 +0000)]
[iOS DnD] [WK2] Add an internal hook to change the drag lift delay
https://bugs.webkit.org/show_bug.cgi?id=173523
<rdar://problem/32224510>

Reviewed by Tim Horton.

Add a new private property on WKWebViewConfiguration, _dragLiftDelay, for changing the UIDragInteraction's lift
delay to one of three values: short, medium or long. The short setting simply uses UIKit's default drag lift
delay (at the time of writing, this is 325ms); medium and long are 500ms and 650ms, respectively.

In combination with an internal switch to toggle between lift delays, the purpose of this change is to make it
easier to choose a drag lift delay for web content that doesn't easily cause unintended dragging while panning.

* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(toDragLiftDelay):

Converts an integer (e.g. retrieved from user defaults) to a drag lift delay type.

(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration encodeWithCoder:]):
(-[WKWebViewConfiguration initWithCoder:]):
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _dragLiftDelay]):

Add boilerplate plumbing for the _dragLiftDelay setting.

(-[WKWebViewConfiguration _setDragLiftDelay:]):
* UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:

Add _dragLiftDelay to as a private property of WKWebViewConiguration.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView dragLiftDelay]):

Convert the web view configuration's _WKDragLiftDelay to an actual time interval.

(-[WKContentView setupDataInteractionDelegates]):

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

2 years agoRemoved unused lambda captures from WebKit2
annulen@yandex.ru [Mon, 19 Jun 2017 20:14:54 +0000 (20:14 +0000)]
Removed unused lambda captures from WebKit2
https://bugs.webkit.org/show_bug.cgi?id=173555

Reviewed by Alex Christensen.

* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::fetchWebsiteData):
(WebKit::NetworkProcessProxy::deleteWebsiteData):
(WebKit::NetworkProcessProxy::deleteWebsiteDataForOrigins):
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::fetchWebsiteData):
(WebKit::WebProcessProxy::deleteWebsiteData):
(WebKit::WebProcessProxy::deleteWebsiteDataForOrigins):
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::topPrivatelyControlledDomainsWithWebsiteData):

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

2 years agoCleanup IconLoader stuff when a DocumentLoader detaches from its frame.
beidson@apple.com [Mon, 19 Jun 2017 20:12:41 +0000 (20:12 +0000)]
Cleanup IconLoader stuff when a DocumentLoader detaches from its frame.
<rdar://problem/31418761> and https://bugs.webkit.org/show_bug.cgi?id=173473

Reviewed by Alex Christensen.

No new tests (No known change in behavior)

I discovered the need to make these changes here due to a transient bug
introduced in r218015 but already explicitly fixed in r218409.

This change adds an assert to guard against a detached DocumentLoader having active IconLoaders.

It also clears out all pending IconLoader and icon load decisions when stopLoading() is called,
as even attempting to start an icon load after detachment is a waste of cycles.

* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::stopLoading): Also explicitly clear all IconLoaders and icons pending
  load decision.
(WebCore::DocumentLoader::finishedLoadingIcon): Assert that this DocumentLoader is not detached.

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

2 years agoUse WTF::Function instead of std::function in more places in WebCore/
cdumez@apple.com [Mon, 19 Jun 2017 19:53:16 +0000 (19:53 +0000)]
Use WTF::Function instead of std::function in more places in WebCore/
https://bugs.webkit.org/show_bug.cgi?id=173535

Reviewed by Antti Koivisto.

Use WTF::Function instead of std::function in more places in WebCore/ to avoid copying.

Source/WebCore:

* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::matchedParent):
* accessibility/AccessibilityObject.h:
* animation/DocumentAnimation.cpp:
(WebCore::DocumentAnimation::getAnimations):
* animation/DocumentAnimation.h:
(WebCore::DocumentAnimation::getAnimations):
* contentextensions/CombinedURLFilters.cpp:
(WebCore::ContentExtensions::CombinedURLFilters::processNFAs):
* contentextensions/CombinedURLFilters.h:
* contentextensions/DFACombiner.cpp:
(WebCore::ContentExtensions::DFACombiner::combineDFAs):
* contentextensions/DFACombiner.h:
* css/CSSCrossfadeValue.cpp:
(WebCore::CSSCrossfadeValue::traverseSubresources):
* css/CSSCrossfadeValue.h:
* css/CSSFilterImageValue.cpp:
(WebCore::CSSFilterImageValue::traverseSubresources):
* css/CSSFilterImageValue.h:
* css/CSSFontFaceSrcValue.cpp:
(WebCore::CSSFontFaceSrcValue::traverseSubresources):
* css/CSSFontFaceSrcValue.h:
* css/CSSImageSetValue.cpp:
(WebCore::CSSImageSetValue::traverseSubresources):
* css/CSSImageSetValue.h:
* css/CSSImageValue.cpp:
(WebCore::CSSImageValue::traverseSubresources):
* css/CSSImageValue.h:
* css/CSSValue.cpp:
(WebCore::CSSValue::traverseSubresources):
* css/CSSValue.h:
* css/CSSValueList.cpp:
(WebCore::CSSValueList::traverseSubresources):
* css/CSSValueList.h:
* css/StyleProperties.cpp:
(WebCore::StyleProperties::traverseSubresources):
* css/StyleProperties.h:
* css/StyleSheetContents.cpp:
(WebCore::traverseSubresourcesInRules):
(WebCore::StyleSheetContents::traverseSubresources):
* css/StyleSheetContents.h:
* dom/Element.cpp:
(WebCore::Element::getAnimations):
* editing/TextIterator.cpp:
(WebCore::findPlainTextMatches):
(WebCore::findClosestPlainText):
(WebCore::findPlainText):
* editing/mac/DictionaryLookup.h:
* editing/mac/DictionaryLookup.mm:
(WebCore::showPopupOrCreateAnimationController):
(WebCore::DictionaryLookup::showPopup):
(WebCore::DictionaryLookup::animationControllerForPopup):
* fileapi/AsyncFileStream.cpp:
(WebCore::AsyncFileStream::perform):
(WebCore::AsyncFileStream::getSize):
(WebCore::AsyncFileStream::openForRead):
(WebCore::AsyncFileStream::read):
* fileapi/AsyncFileStream.h:
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::waitForPreparedForInlineThen):
(WebCore::HTMLMediaElement::setVideoFullscreenLayer):
* html/HTMLMediaElement.h:
(WebCore::HTMLMediaElement::waitForPreparedForInlineThen):
(WebCore::HTMLMediaElement::setVideoFullscreenLayer):
* loader/EmptyClients.cpp:
(WebCore::EmptyFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
(WebCore::EmptyFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
(WebCore::EmptyFrameLoaderClient::dispatchWillSubmitForm):
* loader/FrameLoaderClient.h:
* loader/archive/cf/LegacyWebArchive.cpp:
(WebCore::LegacyWebArchive::create):
* loader/archive/cf/LegacyWebArchive.h:
* loader/cache/MemoryCache.cpp:
(WebCore::MemoryCache::forEachResource):
(WebCore::MemoryCache::forEachSessionResource):
* loader/cache/MemoryCache.h:
* page/DOMWindow.cpp:
(WebCore::DOMWindow::createWindow):
(WebCore::DOMWindow::showModalDialog):
* page/DOMWindow.h:
* page/FrameView.cpp:
(WebCore::FrameView::applyRecursivelyWithVisibleRect):
* page/FrameView.h:
* page/Page.cpp:
(WebCore::Page::forEachPage):
(WebCore::Page::decrementNestedRunLoopCount):
(WebCore::Page::whenUnnested):
* page/Page.h:
* page/WheelEventTestTrigger.cpp:
(WebCore::WheelEventTestTrigger::clearAllTestDeferrals):
(WebCore::WheelEventTestTrigger::setTestCallbackAndStartNotificationTimer):
(WebCore::WheelEventTestTrigger::triggerTestTimerFired):
* page/WheelEventTestTrigger.h:
* page/WindowFeatures.cpp:
(WebCore::processFeaturesString):
* page/WindowFeatures.h:
* page/cocoa/ResourceUsageOverlayCocoa.mm:
(WebCore::RingBuffer::forEach):
* platform/cocoa/WebVideoFullscreenModelVideoElement.h:
(WebCore::WebVideoFullscreenModelVideoElement::setVideoFullscreenLayer):
(WebCore::WebVideoFullscreenModelVideoElement::waitForPreparedForInlineThen):
* platform/cocoa/WebVideoFullscreenModelVideoElement.mm:
(WebVideoFullscreenModelVideoElement::setVideoFullscreenLayer):
(WebVideoFullscreenModelVideoElement::waitForPreparedForInlineThen):
* platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::setVideoFullscreenLayer):
* platform/graphics/MediaPlayer.h:
(WebCore::MediaPlayer::setVideoFullscreenLayer):
* platform/graphics/MediaPlayerPrivate.h:
(WebCore::MediaPlayerPrivateInterface::setVideoFullscreenLayer):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenLayer):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setVideoFullscreenLayer):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setVideoFullscreenLayer):
* platform/graphics/avfoundation/objc/VideoFullscreenLayerManager.h:
* platform/graphics/avfoundation/objc/VideoFullscreenLayerManager.mm:
(WebCore::VideoFullscreenLayerManager::setVideoFullscreenLayer):

Source/WebKit/mac:

* WebCoreSupport/WebFrameLoaderClient.h:
* WebCoreSupport/WebFrameLoaderClient.mm:
(WebFrameLoaderClient::dispatchDecidePolicyForResponse):
(WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
(WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
(WebFrameLoaderClient::dispatchWillSubmitForm):
(WebFrameLoaderClient::setUpPolicyListener):
(-[WebFramePolicyListener initWithFrame:policyFunction:]):
(-[WebFramePolicyListener initWithFrame:policyFunction:appLinkURL:]):

Source/WebKit/win:

* WebCoreSupport/WebFrameLoaderClient.cpp:
(WebFrameLoaderClient::dispatchDecidePolicyForResponse):
(WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
(WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
(WebFrameLoaderClient::dispatchWillSubmitForm):
(WebFrameLoaderClient::setUpPolicyListener):
(WebFrameLoaderClient::receivedPolicyDecision):
* WebCoreSupport/WebFrameLoaderClient.h:

Source/WebKit2:

* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
(WebKit::WebFrameLoaderClient::dispatchWillSubmitForm):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::setUpPolicyListener):
(WebKit::WebFrame::invalidatePolicyListener):
* WebProcess/WebPage/WebFrame.h:

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

2 years agoRebaseline js/dom/global-constructors-attributes.html.
ryanhaddad@apple.com [Mon, 19 Jun 2017 18:41:42 +0000 (18:41 +0000)]
Rebaseline js/dom/global-constructors-attributes.html.

Unreviewed test gardening.

* platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:

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

2 years ago[WK2] Add WKProcessPool SPI to efficiently reset all plugin load client policies
cdumez@apple.com [Mon, 19 Jun 2017 18:21:58 +0000 (18:21 +0000)]
[WK2] Add WKProcessPool SPI to efficiently reset all plugin load client policies
https://bugs.webkit.org/show_bug.cgi?id=173472
<rdar://problem/28858817>

Reviewed by Antti Koivisto.

Follow-up to r218419 to avoid copying the HashMap unnecessarily.

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::resetPluginLoadClientPolicies):
* UIProcess/WebProcessPool.h:

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

2 years agoUse WTF::Function instead of std::function in WebCore/Modules
cdumez@apple.com [Mon, 19 Jun 2017 17:44:20 +0000 (17:44 +0000)]
Use WTF::Function instead of std::function in WebCore/Modules
https://bugs.webkit.org/show_bug.cgi?id=173534

Reviewed by Alex Christensen.

Use WTF::Function instead of std::function in WebCore/Modules to avoid
copying.

* Modules/applepay/PaymentCoordinatorClient.h:
* Modules/encryptedmedia/CDM.h:
* Modules/encryptedmedia/legacy/LegacyCDM.cpp:
(WebCore::CDMFactory::CDMFactory):
(WebCore::CDM::registerCDMFactory):
* Modules/encryptedmedia/legacy/LegacyCDM.h:
* Modules/mediasession/MediaSession.cpp:
(WebCore::MediaSession::changeActiveMediaElements):
(WebCore::MediaSession::safelyIterateActiveMediaElements):
* Modules/mediasession/MediaSession.h:
* Modules/mediastream/MediaEndpointPeerConnection.cpp:
(WebCore::matchTransceiver):
* Modules/mediastream/MediaStreamRegistry.cpp:
(WebCore::MediaStreamRegistry::forEach):
* Modules/mediastream/MediaStreamRegistry.h:

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

2 years agoA cloned MediaStreamTrack should mute independently other tracks using the same source
commit-queue@webkit.org [Mon, 19 Jun 2017 17:12:57 +0000 (17:12 +0000)]
A cloned MediaStreamTrack should mute independently other tracks using the same source
https://bugs.webkit.org/show_bug.cgi?id=172831
<rdar://problem/32518527>

Patch by Youenn Fablet <youenn@apple.com> on 2017-06-19
Reviewed by Eric Carlson.

Source/WebCore:

Test: webrtc/clone-audio-track.html

Move enabled handling in MediaStreamTrackPrivate instead of RealtimeMediaSource.
Move WebRTC and WebAudio customers of RealtimeMediaSource to MediaStreamTrackPrivate.
Move creation of WebAudio provider to MediaStreamTrackPrivate.

This allows changing some parameters of tracks having the same source independently.
Using this for enabled track attribute.

We no longer stop generating frames in case track is disabled.
This should be added back as an optimization in a follow-up.

* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::addTrack):
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::LibWebRTCPeerConnectionBackend::replaceTrack):
* Modules/webaudio/MediaStreamAudioSource.cpp:
* Modules/webaudio/MediaStreamAudioSource.h:
* WebCore.xcodeproj/project.pbxproj:
* platform/mediastream/MediaStreamTrackPrivate.cpp:
(WebCore::MediaStreamTrackPrivate::create):
(WebCore::MediaStreamTrackPrivate::~MediaStreamTrackPrivate):
(WebCore::MediaStreamTrackPrivate::setEnabled):
(WebCore::MediaStreamTrackPrivate::audioSourceProvider):
(WebCore::MediaStreamTrackPrivate::videoSampleAvailable):
(WebCore::MediaStreamTrackPrivate::audioSamplesAvailable):
* platform/mediastream/MediaStreamTrackPrivate.h:
(WebCore::MediaStreamTrackPrivate::Observer::audioSamplesAvailable):
* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::removeObserver):
* platform/mediastream/RealtimeMediaSource.h:
* platform/mediastream/mac/AVMediaCaptureSource.h:
* platform/mediastream/mac/AVMediaCaptureSource.mm:
* platform/mediastream/mac/CoreAudioCaptureSource.cpp:
(WebCore::CoreAudioCaptureSource::startProducingData):
(WebCore::CoreAudioCaptureSource::stopProducingData):
* platform/mediastream/mac/CoreAudioCaptureSource.h:
* platform/mediastream/mac/MockRealtimeAudioSourceMac.h:
* platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:
(WebCore::MockRealtimeAudioSourceMac::render):
* platform/mediastream/mac/RealtimeIncomingAudioSource.cpp:
(WebCore::RealtimeIncomingAudioSource::~RealtimeIncomingAudioSource):
(WebCore::RealtimeIncomingAudioSource::OnData):
* platform/mediastream/mac/RealtimeIncomingAudioSource.h:
* platform/mediastream/mac/RealtimeIncomingVideoSource.cpp:
(WebCore::RealtimeIncomingVideoSource::pixelBufferFromVideoFrame):
* platform/mediastream/mac/RealtimeOutgoingAudioSource.cpp:
(WebCore::RealtimeOutgoingAudioSource::RealtimeOutgoingAudioSource):
(WebCore::RealtimeOutgoingAudioSource::setSource):
* platform/mediastream/mac/RealtimeOutgoingAudioSource.h:
* platform/mediastream/mac/RealtimeOutgoingVideoSource.cpp:
(WebCore::RealtimeOutgoingVideoSource::RealtimeOutgoingVideoSource):
(WebCore::RealtimeOutgoingVideoSource::setSource):
(WebCore::RealtimeOutgoingVideoSource::initializeFromSource):
* platform/mediastream/mac/RealtimeOutgoingVideoSource.h:
* platform/mediastream/mac/WebAudioSourceProviderAVFObjC.h:
* platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm:
(WebCore::WebAudioSourceProviderAVFObjC::create):
(WebCore::WebAudioSourceProviderAVFObjC::WebAudioSourceProviderAVFObjC):
(WebCore::WebAudioSourceProviderAVFObjC::setClient):
(WebCore::WebAudioSourceProviderAVFObjC::audioSamplesAvailable):
* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::generateFrame):
* platform/spi/cocoa/PassKitSPI.h:

Source/WebKit2:

* WebProcess/cocoa/UserMediaCaptureManager.cpp:
(WebKit::UserMediaCaptureManager::Source::setStorage):

LayoutTests:

* webrtc/clone-audio-track.html: Added.
* webrtc/video-disabled-black.html:
* webrtc/video-unmute-expected.txt:
* webrtc/video-unmute.html:

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

2 years agoFix Ref to deref before assignment, add tests for this to RefPtr, Ref, Function
darin@apple.com [Mon, 19 Jun 2017 17:01:14 +0000 (17:01 +0000)]
Fix Ref to deref before assignment, add tests for this to RefPtr, Ref, Function
https://bugs.webkit.org/show_bug.cgi?id=173526

Reviewed by Sam Weinig.

Source/WTF:

* wtf/Ref.h: Changed operator= to not be defined inside the class definition.
Added swap functions. Changed operator= implementations to use swap in the
conventional manner, the same way that RefPtr does.

Tools:

* TestWebKitAPI/CMakeLists.txt: Added Function.cpp.
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Ditto.

* TestWebKitAPI/Tests/WTF/Function.cpp: Added. Contains basic tests and some
tests for assignment before destruction ones.

* TestWebKitAPI/Tests/WTF/MoveOnly.h: Added a () operator so this can be used
as a function, so it can be used in WTF::Function tests.

* TestWebKitAPI/Tests/WTF/Ref.cpp: Use EXPECT macros insead of ASSERT.
Added tests for swap and for assignment before deref.

* TestWebKitAPI/Tests/WTF/RefLogger.cpp: Stopped using inlining; no good reason
to inline everything. Also removed the unnecessary clearing of the log every time
the DerivedRefLogger constructor is called.
* TestWebKitAPI/Tests/WTF/RefLogger.h: Ditto.

* TestWebKitAPI/Tests/WTF/RefPtr.cpp: Use EXPECT macros instead of ASSERT.
Added tests for assignment before deref and similar for releaseNonNull.

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

2 years ago[WebIDL] Properly model buffer source / typed arrays as their own IDL types
commit-queue@webkit.org [Mon, 19 Jun 2017 16:47:06 +0000 (16:47 +0000)]
[WebIDL] Properly model buffer source / typed arrays as their own IDL types
https://bugs.webkit.org/show_bug.cgi?id=173513

Patch by Sam Weinig <sam@webkit.org> on 2017-06-19
Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

* web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.worker-expected.txt:
* web-platform-tests/WebCryptoAPI/derive_bits_keys/test_hkdf.https-expected.txt:
Update results for changed exception language.

Source/WebCore:

- Adds IDL type hierarchy for buffer source types.
- Includes a special type, IDLArrayBufferView, which WebIDL defines as the union
  of DataView and all the typed array types, but we model as shared base class.
  This should not be observable, and allows us to avoid using a Variant for ArrayBufferView
  and instead use the existing base class.
- Add builtin typedefs for BufferSource and DOMTimeStamp as defined in WebIDL. As noted
  above, rather than define a typedef of ArrayBufferView that maps to a union, we treat
  it as a special type.

* bindings/IDLTypes.h:
Add type hierarchy for buffer source types.
- IDLBufferSource is the root
- IDLArrayBuffer, IDLArrayBufferView, IDLDataView, IDLTypedArray derive from it.
- And then the specific typed array types derive from IDLTypedArray, and are defined
  in JSDOMConvertBufferSource so we don't have to include a ton of typed array includes
  in this file, as they cannot be forward declared.

* bindings/js/JSDOMConvertBufferSource.h:
(WebCore::Detail::BufferSourceConverter::convert):
(WebCore::Converter<IDLArrayBuffer>::convert):
(WebCore::JSConverter<IDLArrayBuffer>::convert):
(WebCore::Converter<IDLDataView>::convert):
(WebCore::JSConverter<IDLDataView>::convert):
(WebCore::Converter<IDLInt8Array>::convert):
(WebCore::JSConverter<IDLInt8Array>::convert):
(WebCore::Converter<IDLInt16Array>::convert):
(WebCore::JSConverter<IDLInt16Array>::convert):
(WebCore::Converter<IDLInt32Array>::convert):
(WebCore::JSConverter<IDLInt32Array>::convert):
(WebCore::Converter<IDLUint8Array>::convert):
(WebCore::JSConverter<IDLUint8Array>::convert):
(WebCore::Converter<IDLUint16Array>::convert):
(WebCore::JSConverter<IDLUint16Array>::convert):
(WebCore::Converter<IDLUint32Array>::convert):
(WebCore::JSConverter<IDLUint32Array>::convert):
(WebCore::Converter<IDLUint8ClampedArray>::convert):
(WebCore::JSConverter<IDLUint8ClampedArray>::convert):
(WebCore::Converter<IDLFloat32Array>::convert):
(WebCore::JSConverter<IDLFloat32Array>::convert):
(WebCore::Converter<IDLFloat64Array>::convert):
(WebCore::JSConverter<IDLFloat64Array>::convert):
(WebCore::Converter<IDLArrayBufferView>::convert):
(WebCore::JSConverter<IDLArrayBufferView>::convert):
Add native and javascript conversion for all the new types.

* bindings/js/JSDOMConvertUnion.h:
Add support for steps 7, 8, and 9 of the union conversion algorithm now that
buffer source types are properly modeled.

* bindings/js/JSSubtleCryptoCustom.cpp:
* bindings/js/JSWebKitSubtleCryptoCustom.cpp:
Replace use of now repurposed IDLBufferSource, with its definition, IDLUnion<IDLArrayBufferView, IDLArrayBuffer>.

* bindings/scripts/CodeGenerator.pm:
(IsBufferSourceType):
Renamed from IsTypedArrayType.

(IsNonPointerType): Deleted.
Was only used by DumpRenderTree and WebKitTestRunner generators. They have
been switched to the equivalent IsPrimitiveType.

(IsTypedArrayType): Deleted.
Renamed to IsBufferSourceType.

(IsRefPtrType): Deleted. Unused.

* bindings/scripts/CodeGeneratorJS.pm:
(AddToIncludesForIDLType):
(AddClassForwardIfNeeded):
(GetArgumentExceptionFunction):
(GetAttributeExceptionFunction):
(PassArgumentExpression):
(GenerateDefaultValue):
(GenerateOverloadDispatcher):
(ShouldPassArgumentByReference):
(NativeToJSValueDOMConvertNeedsState):
(NativeToJSValueDOMConvertNeedsGlobalObject):
Update for rename of IsTypedArrayType -> IsBufferSourceType and remove specialized BufferSource
condition.

(GetBaseIDLType):
Add mappings for new buffer source types.

* bindings/scripts/IDLParser.pm:
(Parse):
Insert builtin typedefs to the typedef map before parsing.

(addBuiltinTypedefs):
Generate typedefs for BufferSource and DOMTimeStamp as specified by WebIDL.

(applyTypedefs):
Add support for applying typedefs to iterable and maplike, necessary now because BufferSource
is used as the key to iterable in MediaKeyStatusMap.idl

* bindings/scripts/test/JS/JSTestCallbackInterface.cpp:
* bindings/scripts/test/JS/JSTestCallbackInterface.h:
* bindings/scripts/test/JS/JSTestObj.cpp:
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
* bindings/scripts/test/JS/JSTestVoidCallbackFunction.cpp:
* bindings/scripts/test/JS/JSTestVoidCallbackFunction.h:
Update test results.

* bindings/scripts/test/TestTypedefs.idl:
Add tests for builtin typedefs.

* Modules/geolocation/Geoposition.idl:
* dom/Event.idl:
* fileapi/Blob.idl:
* fileapi/File.idl:
* page/FrameView.h:
* xml/XMLHttpRequest.idl:
Remove typedef for DOMTimeStamp and BufferSource which are now automatically included.

Tools:

* DumpRenderTree/Bindings/CodeGeneratorDumpRenderTree.pm:
* WebKitTestRunner/InjectedBundle/Bindings/CodeGeneratorTestRunner.pm:
Replace IsNonPointerType subroutine with IsPrimitiveType so we can remove IsNonPointerType.

LayoutTests:

* crypto/subtle/aes-cbc-cfb-encrypt-malformed-parameters-expected.txt:
* crypto/subtle/hkdf-derive-bits-malformed-parametrs-expected.txt:
* crypto/subtle/pbkdf2-derive-bits-malformed-parametrs-expected.txt:
Update results for changed exception language.

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

2 years ago[Win] fast/dom/assign-to-window-status.html is flaky.
pvollan@apple.com [Mon, 19 Jun 2017 16:34:44 +0000 (16:34 +0000)]
[Win] fast/dom/assign-to-window-status.html is flaky.
https://bugs.webkit.org/show_bug.cgi?id=173512

Reviewed by Alex Christensen.

We should not dump status callbacks when test is done.

* DumpRenderTree/win/UIDelegate.cpp:
(UIDelegate::setStatusText):

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

2 years agoUnreviewed GTK+ gardening
csaavedra@igalia.com [Mon, 19 Jun 2017 15:50:40 +0000 (15:50 +0000)]
Unreviewed GTK+ gardening

Unmarked a bunch of http multimedia tests that were failing with gst 1.6.3.
We're now depending on 1.10.4 and these are passing. Also marked as slow
a couple more.
* platform/gtk/TestExpectations:

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

2 years agoUnreviewed GTK+ gardening.
zandobersek@gmail.com [Mon, 19 Jun 2017 13:22:19 +0000 (13:22 +0000)]
Unreviewed GTK+ gardening.

Enable RSA-PSS tests on the GTK+ port. Tests covering this Web Crypto
algorithm are skipped on all platforms, but since the libgcrypt-based
implementation is operating properly, we can enable the majority of
these tests for GTK+. The tests that remain skipped cover SPKI and
PKCS#8 import and export capabilities that still have to be landed.

WPE will enable these tests in a separate patch.

* platform/gtk/TestExpectations:

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

2 years ago[WPE][JHBuild] Update WPEBackend-mesa
clopez@igalia.com [Mon, 19 Jun 2017 13:09:45 +0000 (13:09 +0000)]
[WPE][JHBuild] Update WPEBackend-mesa
https://bugs.webkit.org/show_bug.cgi?id=173433

Unreviewed.

Update WPEBackend-mesa back (like it was done originally in r218344)
after fixing the issue with the DISPLAY environment variables that
caused the crashes.

* wpe/jhbuild.modules:

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

2 years agoRename unit test file after r218482
clopez@igalia.com [Mon, 19 Jun 2017 13:01:18 +0000 (13:01 +0000)]
Rename unit test file after r218482
https://bugs.webkit.org/show_bug.cgi?id=173483

Unreviewed.

* Scripts/webkitpy/port/waylanddriver_unittest.py: Renamed from Tools/Scripts/webkitpy/port/wayland_unittest.py.

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

2 years agoUnreviewed. Fix wrong style checker condition added in r218487.
carlosgc@webkit.org [Mon, 19 Jun 2017 12:54:21 +0000 (12:54 +0000)]
Unreviewed. Fix wrong style checker condition added in r218487.

* Scripts/webkitpy/style/checkers/cpp.py:
(check_identifier_name_in_declaration):

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

2 years agoMissing <functional> includes make builds fail with GCC 7.x
aperez@igalia.com [Mon, 19 Jun 2017 12:51:51 +0000 (12:51 +0000)]
Missing <functional> includes make builds fail with GCC 7.x
https://bugs.webkit.org/show_bug.cgi?id=173544

Unreviewed gardening.

Fix compilation with GCC 7.

Source/JavaScriptCore:

* API/tests/CompareAndSwapTest.cpp:
* runtime/VMEntryScope.h:

Source/WebCore:

* Modules/mediastream/MediaStreamRegistry.h:
* animation/DocumentAnimation.h:
* page/WheelEventTestTrigger.h:
* page/csp/ContentSecurityPolicy.h:
* platform/Timer.h:
* platform/graphics/gstreamer/MainThreadNotifier.h:
* platform/network/NetworkStorageSession.h:

Tools:

* TestWebKitAPI/Tests/WTF/HashSet.cpp:
* TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.h:

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

2 years ago[GTK] Move GTK+ API files that could be shared to glib dirs
carlosgc@webkit.org [Mon, 19 Jun 2017 12:45:19 +0000 (12:45 +0000)]
[GTK] Move GTK+ API files that could be shared to glib dirs
https://bugs.webkit.org/show_bug.cgi?id=173545

Reviewed by Žan Doberšek.

Source/WebCore/platform/gtk/po:

Update paths on files with translatable string.

* POTFILES.in:

Source/WebKit2:

Most of the files don't use GTK+ at all, or only for a few things that could be ifdefed. Public headers can
never be shared, so move only private headers and cpp files. This patch moves the files without any
modification to make everything easier, in follow up commits we will add the required ifdefs and refactorings to
ensure the code can actually be shared.

* PlatformGTK.cmake:
* Shared/API/glib/WebKitContextMenu.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitContextMenu.cpp.
* Shared/API/glib/WebKitContextMenuActions.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuActions.cpp.
* Shared/API/glib/WebKitContextMenuActionsPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuActionsPrivate.h.
* Shared/API/glib/WebKitContextMenuItem.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuItem.cpp.
* Shared/API/glib/WebKitContextMenuItemPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuItemPrivate.h.
* Shared/API/glib/WebKitContextMenuPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuPrivate.h.
* Shared/API/glib/WebKitHitTestResult.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp.
* Shared/API/glib/WebKitHitTestResultPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitHitTestResultPrivate.h.
* Shared/API/glib/WebKitURIRequest.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitURIRequest.cpp.
* Shared/API/glib/WebKitURIRequestPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitURIRequestPrivate.h.
* Shared/API/glib/WebKitURIResponse.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp.
* Shared/API/glib/WebKitURIResponsePrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitURIResponsePrivate.h.
* UIProcess/API/glib/WebKitAuthenticationRequest.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitAuthenticationRequest.cpp.
* UIProcess/API/glib/WebKitAuthenticationRequestPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitAuthenticationRequestPrivate.h.
* UIProcess/API/glib/WebKitAutomationSession.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitAutomationSession.cpp.
* UIProcess/API/glib/WebKitAutomationSessionPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitAutomationSessionPrivate.h.
* UIProcess/API/glib/WebKitBackForwardList.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardList.cpp.
* UIProcess/API/glib/WebKitBackForwardListItem.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardListItem.cpp.
* UIProcess/API/glib/WebKitBackForwardListPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardListPrivate.h.
* UIProcess/API/glib/WebKitContextMenuClient.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuClient.cpp.
* UIProcess/API/glib/WebKitContextMenuClient.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuClient.h.
* UIProcess/API/glib/WebKitCookieManager.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitCookieManager.cpp.
* UIProcess/API/glib/WebKitCookieManagerPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitCookieManagerPrivate.h.
* UIProcess/API/glib/WebKitCredential.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitCredential.cpp.
* UIProcess/API/glib/WebKitCredentialPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitCredentialPrivate.h.
* UIProcess/API/glib/WebKitCustomProtocolManagerClient.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitCustomProtocolManagerClient.cpp.
* UIProcess/API/glib/WebKitCustomProtocolManagerClient.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitCustomProtocolManagerClient.h.
* UIProcess/API/glib/WebKitDownload.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitDownload.cpp.
* UIProcess/API/glib/WebKitDownloadClient.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitDownloadClient.cpp.
* UIProcess/API/glib/WebKitDownloadClient.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitDownloadClient.h.
* UIProcess/API/glib/WebKitDownloadPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitDownloadPrivate.h.
* UIProcess/API/glib/WebKitEditorState.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitEditorState.cpp.
* UIProcess/API/glib/WebKitEditorStatePrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitEditorStatePrivate.h.
* UIProcess/API/glib/WebKitError.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitError.cpp.
* UIProcess/API/glib/WebKitFaviconDatabase.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp.
* UIProcess/API/glib/WebKitFaviconDatabasePrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabasePrivate.h.
* UIProcess/API/glib/WebKitFileChooserRequest.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp.
* UIProcess/API/glib/WebKitFileChooserRequestPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitFileChooserRequestPrivate.h.
* UIProcess/API/glib/WebKitFindController.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitFindController.cpp.
* UIProcess/API/glib/WebKitFormClient.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitFormClient.cpp.
* UIProcess/API/glib/WebKitFormClient.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitFormClient.h.
* UIProcess/API/glib/WebKitFormSubmissionRequest.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitFormSubmissionRequest.cpp.
* UIProcess/API/glib/WebKitFormSubmissionRequestPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitFormSubmissionRequestPrivate.h.
* UIProcess/API/glib/WebKitGeolocationPermissionRequest.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp.
* UIProcess/API/glib/WebKitGeolocationPermissionRequestPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequestPrivate.h.
* UIProcess/API/glib/WebKitGeolocationProvider.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationProvider.cpp.
* UIProcess/API/glib/WebKitGeolocationProvider.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationProvider.h.
* UIProcess/API/glib/WebKitInjectedBundleClient.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitInjectedBundleClient.cpp.
* UIProcess/API/glib/WebKitInjectedBundleClient.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitInjectedBundleClient.h.
* UIProcess/API/glib/WebKitInstallMissingMediaPluginsPermissionRequest.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitInstallMissingMediaPluginsPermissionRequest.cpp.
* UIProcess/API/glib/WebKitInstallMissingMediaPluginsPermissionRequestPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitInstallMissingMediaPluginsPermissionRequestPrivate.h.
* UIProcess/API/glib/WebKitJavascriptResult.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResult.cpp.
* UIProcess/API/glib/WebKitJavascriptResultPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitJavascriptResultPrivate.h.
* UIProcess/API/glib/WebKitLoaderClient.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitLoaderClient.cpp.
* UIProcess/API/glib/WebKitLoaderClient.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitLoaderClient.h.
* UIProcess/API/glib/WebKitMimeInfo.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitMimeInfo.cpp.
* UIProcess/API/glib/WebKitMimeInfoPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitMimeInfoPrivate.h.
* UIProcess/API/glib/WebKitNavigationAction.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitNavigationAction.cpp.
* UIProcess/API/glib/WebKitNavigationActionPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitNavigationActionPrivate.h.
* UIProcess/API/glib/WebKitNavigationPolicyDecision.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp.
* UIProcess/API/glib/WebKitNavigationPolicyDecisionPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecisionPrivate.h.
* UIProcess/API/glib/WebKitNetworkProxySettings.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitNetworkProxySettings.cpp.
* UIProcess/API/glib/WebKitNetworkProxySettingsPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitNetworkProxySettingsPrivate.h.
* UIProcess/API/glib/WebKitNotification.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitNotification.cpp.
* UIProcess/API/glib/WebKitNotificationPermissionRequest.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitNotificationPermissionRequest.cpp.
* UIProcess/API/glib/WebKitNotificationPermissionRequestPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitNotificationPermissionRequestPrivate.h.
* UIProcess/API/glib/WebKitNotificationPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitNotificationPrivate.h.
* UIProcess/API/glib/WebKitNotificationProvider.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitNotificationProvider.cpp.
* UIProcess/API/glib/WebKitNotificationProvider.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitNotificationProvider.h.
* UIProcess/API/glib/WebKitPermissionRequest.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitPermissionRequest.cpp.
* UIProcess/API/glib/WebKitPlugin.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitPlugin.cpp.
* UIProcess/API/glib/WebKitPluginPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitPluginPrivate.h.
* UIProcess/API/glib/WebKitPolicyClient.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitPolicyClient.cpp.
* UIProcess/API/glib/WebKitPolicyClient.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitPolicyClient.h.
* UIProcess/API/glib/WebKitPolicyDecision.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitPolicyDecision.cpp.
* UIProcess/API/glib/WebKitPolicyDecisionPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitPolicyDecisionPrivate.h.
* UIProcess/API/glib/WebKitPrivate.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.cpp.
* UIProcess/API/glib/WebKitPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h.
* UIProcess/API/glib/WebKitResponsePolicyDecision.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp.
* UIProcess/API/glib/WebKitResponsePolicyDecisionPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecisionPrivate.h.
* UIProcess/API/glib/WebKitScriptDialog.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitScriptDialog.cpp.
* UIProcess/API/glib/WebKitScriptDialogPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitScriptDialogPrivate.h.
* UIProcess/API/glib/WebKitSecurityManager.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp.
* UIProcess/API/glib/WebKitSecurityManagerPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManagerPrivate.h.
* UIProcess/API/glib/WebKitSecurityOrigin.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOrigin.cpp.
* UIProcess/API/glib/WebKitSecurityOriginPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitSecurityOriginPrivate.h.
* UIProcess/API/glib/WebKitSettings.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp.
* UIProcess/API/glib/WebKitSettingsPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitSettingsPrivate.h.
* UIProcess/API/glib/WebKitUIClient.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp.
* UIProcess/API/glib/WebKitUIClient.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.h.
* UIProcess/API/glib/WebKitURISchemeRequest.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitURISchemeRequest.cpp.
* UIProcess/API/glib/WebKitURISchemeRequestPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitURISchemeRequestPrivate.h.
* UIProcess/API/glib/WebKitUserContent.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitUserContent.cpp.
* UIProcess/API/glib/WebKitUserContentManager.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitUserContentManager.cpp.
* UIProcess/API/glib/WebKitUserContentManagerPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitUserContentManagerPrivate.h.
* UIProcess/API/glib/WebKitUserContentPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitUserContentPrivate.h.
* UIProcess/API/glib/WebKitUserMediaPermissionRequest.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp.
* UIProcess/API/glib/WebKitUserMediaPermissionRequestPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequestPrivate.h.
* UIProcess/API/glib/WebKitWebContext.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp.
* UIProcess/API/glib/WebKitWebContextPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWebContextPrivate.h.
* UIProcess/API/glib/WebKitWebResource.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWebResource.cpp.
* UIProcess/API/glib/WebKitWebResourcePrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWebResourcePrivate.h.
* UIProcess/API/glib/WebKitWebView.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp.
* UIProcess/API/glib/WebKitWebViewPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h.
* UIProcess/API/glib/WebKitWebViewSessionState.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWebViewSessionState.cpp.
* UIProcess/API/glib/WebKitWebViewSessionStatePrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWebViewSessionStatePrivate.h.
* UIProcess/API/glib/WebKitWebsiteData.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteData.cpp.
* UIProcess/API/glib/WebKitWebsiteDataManager.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManager.cpp.
* UIProcess/API/glib/WebKitWebsiteDataManagerPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataManagerPrivate.h.
* UIProcess/API/glib/WebKitWebsiteDataPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWebsiteDataPrivate.h.
* UIProcess/API/glib/WebKitWindowProperties.cpp: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp.
* UIProcess/API/glib/WebKitWindowPropertiesPrivate.h: Renamed from Source/WebKit2/UIProcess/API/gtk/WebKitWindowPropertiesPrivate.h.
* WebProcess/InjectedBundle/API/glib/WebKitConsoleMessage.cpp: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitConsoleMessage.cpp.
* WebProcess/InjectedBundle/API/glib/WebKitConsoleMessagePrivate.h: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitConsoleMessagePrivate.h.
* WebProcess/InjectedBundle/API/glib/WebKitFrame.cpp: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitFrame.cpp.
* WebProcess/InjectedBundle/API/glib/WebKitFramePrivate.h: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitFramePrivate.h.
* WebProcess/InjectedBundle/API/glib/WebKitScriptWorld.cpp: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitScriptWorld.cpp.
* WebProcess/InjectedBundle/API/glib/WebKitScriptWorldPrivate.h: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitScriptWorldPrivate.h.
* WebProcess/InjectedBundle/API/glib/WebKitWebEditor.cpp: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp.
* WebProcess/InjectedBundle/API/glib/WebKitWebEditorPrivate.h: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditorPrivate.h.
* WebProcess/InjectedBundle/API/glib/WebKitWebExtension.cpp: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp.
* WebProcess/InjectedBundle/API/glib/WebKitWebExtensionPrivate.h: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtensionPrivate.h.
* WebProcess/InjectedBundle/API/glib/WebKitWebHitTestResult.cpp: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebHitTestResult.cpp.
* WebProcess/InjectedBundle/API/glib/WebKitWebHitTestResultPrivate.h: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebHitTestResultPrivate.h.
* WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp.
* WebProcess/InjectedBundle/API/glib/WebKitWebPagePrivate.h: Renamed from Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPagePrivate.h.

Tools:

Update paths of GTK+ API in watchlist and style checker.

* Scripts/webkitpy/common/config/watchlist:
* Scripts/webkitpy/style/checker.py:
* Scripts/webkitpy/style/checkers/cpp.py:
(check_identifier_name_in_declaration):

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

2 years ago[GTK] Rebaseline js/dom/dom-static-property-for-in-iteration.html
csaavedra@igalia.com [Mon, 19 Jun 2017 12:44:41 +0000 (12:44 +0000)]
[GTK] Rebaseline js/dom/dom-static-property-for-in-iteration.html
https://bugs.webkit.org/show_bug.cgi?id=133868

Unreviewed gardening

This test needs expectations to be updated after changes to DOM
static properties. Update and unskip.
* platform/gtk/TestExpectations: Unskip.
* platform/gtk/js/dom/dom-static-property-for-in-iteration-expected.txt:

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

2 years agoUnreviewed build fix after r218484.
zandobersek@gmail.com [Mon, 19 Jun 2017 12:03:45 +0000 (12:03 +0000)]
Unreviewed build fix after r218484.

Source/WebCore:

Properly access the GCryptCipherOperation type (now CipherOperation)
in the PAL::GCrypt namespace. This somehow worked in local builds.

* crypto/gcrypt/CryptoAlgorithmAES_CTRGCrypt.cpp:
(WebCore::callOperation):
(WebCore::gcryptAES_CTR):

Source/WebCore/PAL:

* pal/crypto/gcrypt/Utilities.h: Drop the GCrypt prefix from the
GCryptCipherOperation type definition, since it's already nested
in the PAL::GCrypt namespace.

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

2 years ago[GCrypt] AES_CTR support
zandobersek@gmail.com [Mon, 19 Jun 2017 11:56:26 +0000 (11:56 +0000)]
[GCrypt] AES_CTR support
https://bugs.webkit.org/show_bug.cgi?id=171420

Reviewed by Michael Catanzaro.

Source/WebCore:

Implement AES_CTR support for build configurations that use libgcrypt.

Both encryption and decryption operations are handled in a single gcryptAES_CTR() function,
with the specific operation being passed as the first argument. The appropriate AES
algorithm is picked, and a gcry_cipher_hd_t object is created and has the given key set.
This key will remain the same throughout the gcry_cipher_hd_t lifetime, even after
gcry_cipher_reset() calls.

The encrypt/decrypt operation is wrapped into a helper lambda functor that accepts the
given counter and input data. It resets the cipher object, sets the counter data, and
performs the specified operation, returning the output data.

libgcrypt doesn't support setting counter data on a gcry_cipher_hd_t object with only
part of that data being used as the actual counter, with the rest acting as a nonce, like
the Web Crypto specification allows. We have to implement the support for that on our own.

We compute the number of blocks we'll be processing and the upper exclusive limit for the
given counter length. We immediately bail if the counter limit is less than the computed
block count, since that would mean that the counter values would be repeated.

We short-cut to a direct operation call if the counter length matches size of the counter
data -- we don't have to adjust the counter data in any way if that's the case.

Otherwise we move counter data into the MPI format. The nonce and the actual counter MPIs
can split out of the counter data MPI with the modulus operation and the counter limit MPI.

We take another shortcut straight to the operation call if we're able to determine that the
'counter leeway' value, i.e. the difference between the initial counter MPI and the counter
limit MPI, is larger or equal to the predicted block size -- if that's the case, the counter
won't wrap around and change the nonce data.

In worst-case scenario the counter data will wrap around and we have to address that. The
current implementation takes the slowest possible path for the moment, encrypting/decrypting
each block separately. For each step the counter is combined with the nonce, the resulting
MPI data retrieved and passed to the operation function, and the returned block output
appended to the final output vector. The counter MPI is then incremented and ran through the
modulus operation, limiting the MPI value to the previously-computed counter limit.

No new tests -- relevant tests are passing and are unskipped.

* crypto/gcrypt/CryptoAlgorithmAES_CTRGCrypt.cpp:
(WebCore::callOperation):
(WebCore::gcryptAES_CTR):
(WebCore::CryptoAlgorithmAES_CTR::platformEncrypt):
(WebCore::CryptoAlgorithmAES_CTR::platformDecrypt):

Source/WebCore/PAL:

* pal/crypto/gcrypt/Utilities.h: Add a GCryptCipherOperation type alias that can be used
for the gcry_cipher_decrypt or gcry_cipher_encrypt function pointers.

LayoutTests:

* platform/gtk/TestExpectations: Unskip the relevant AES_CTR tests.

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

2 years ago[GTK] Layout Test imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-createOffe...
commit-queue@webkit.org [Mon, 19 Jun 2017 11:39:52 +0000 (11:39 +0000)]
[GTK] Layout Test imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-createOffer.html crashes
https://bugs.webkit.org/show_bug.cgi?id=173456

Unreviewed gardening.

Patch by Fujii Hironori <Hironori.Fujii@sony.com> on 2017-06-19

* platform/gtk/TestExpectations: Marked
imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-createOffer.html,
webrtc/createOfferAnswer.html and webrtc/video-addTransceiver.html Crash.

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

2 years agoPort setup_environ_for_server should not set environment variables related with the...
clopez@igalia.com [Mon, 19 Jun 2017 10:39:23 +0000 (10:39 +0000)]
Port setup_environ_for_server should not set environment variables related with the driver.
https://bugs.webkit.org/show_bug.cgi?id=173483

Reviewed by Carlos Garcia Campos.

The port setup_environ_for_server() should not set environment variables
that depend on the type of driver (like DISPLAY or GDK_BACKEND).
This varibles should be only set on the driver setup_environ_for_test().

This causes that (for example) the variable DISPLAY or XAUTHORITY leaks
into the test environment even when running the tests with a driver
that is not the Xorg or Xvfb one.

* Scripts/webkitpy/port/base.py: Stop setting XAUTHORITY and DISPLAY here.
(Port.to.setup_environ_for_server):
* Scripts/webkitpy/port/driver.py: Remove unneded WEBKIT_OUTPUTDIR that is already set on base.py
(Driver._setup_environ_for_driver):
* Scripts/webkitpy/port/driver_unittest.py:
(DriverTest.test_setup_environ_for_test):
(DriverTest):
(DriverTest.test_setup_environ_base_vars):
* Scripts/webkitpy/port/gtk.py: Stop setting GDK_BACKEND here and do that on the driver (Xvfb).
(GtkPort.setup_environ_for_server):
* Scripts/webkitpy/port/wayland_unittest.py: Added.
(WaylandDriverTest):
(WaylandDriverTest.make_driver):
(WaylandDriverTest.make_environment):
(WaylandDriverTest.test_checkdriver):
(WaylandDriverTest.test_environment_needed_variables):
(WaylandDriverTest.test_environment_forbidden_variables):
(WaylandDriverTest.test_environment_optional_variables):
* Scripts/webkitpy/port/waylanddriver.py: Allow the driver to run also with WAYLAND_SOCKET.
(WaylandDriver.check_driver):
(WaylandDriver._setup_environ_for_test):
* Scripts/webkitpy/port/xorgdriver.py:
(XorgDriver.check_driver):
(XorgDriver._setup_environ_for_test):
* Scripts/webkitpy/port/xorgdriver_unittest.py: Added.
(XorgDriverTest):
(XorgDriverTest.make_driver):
(XorgDriverTest.make_environment):
(XorgDriverTest.test_checkdriver):
(XorgDriverTest.test_environment_needed_variables):
(XorgDriverTest.test_environment_forbidden_variables):
(XorgDriverTest.test_environment_optional_variables):
* Scripts/webkitpy/port/xvfbdriver.py:
(XvfbDriver._setup_environ_for_test):
* Scripts/webkitpy/port/xvfbdriver_unittest.py:
(XvfbDriverTest.assertDriverStartSuccessful):

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

2 years ago[GTK][WPE] Rebaseline after r218458
csaavedra@igalia.com [Mon, 19 Jun 2017 10:03:40 +0000 (10:03 +0000)]
[GTK][WPE] Rebaseline after r218458

Unreviewed gardening.

Add new DOMQuad attribute to the test expectations.
* platform/gtk/js/dom/global-constructors-attributes-expected.txt:
* platform/wpe/js/dom/global-constructors-attributes-dedicated-worker-expected.txt:
* platform/wpe/js/dom/global-constructors-attributes-expected.txt:

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

2 years agoAdd heuristic to avoid flattening "fullscreen" iframes
commit-queue@webkit.org [Mon, 19 Jun 2017 07:41:11 +0000 (07:41 +0000)]
Add heuristic to avoid flattening "fullscreen" iframes
https://bugs.webkit.org/show_bug.cgi?id=171914

Patch by Frederic Wang <fwang@igalia.com> on 2017-05-14
Reviewed by Simon Fraser.

Source/WebCore:

Some authors implement fullscreen popups as out-of-flow iframes with size set to full viewport (using vw/vh CSS units).
When iframe flattening is enabled, such iframes may unexpectedly become larger than the viewport.
This commit adds a simple heuristic to avoid frame flattening in that case.
It is experimented by introducing a "enable for non-fullscreen iframes" state for the frame
flattening setting.
The default frame flattening is still either disabled or (fully) enabled on all platforms.
InternalSettings is also adjusted so that the tests can still set the frame flattening setting.

Test: fast/frames/flattening/iframe-flattening-fullscreen.html

* page/FrameView.cpp:
(WebCore::FrameView::frameFlatteningEnabled): Use the frame flattening enum setting.
* page/Settings.h: Define a frame flattening enum that includes a "enable for non-fullscreen
iframes" state.
* page/Settings.in: Redefine frame flattening using that enum.
* rendering/RenderFrameSet.cpp:
(WebCore::RenderFrameSet::flattenFrameSet): Use the frame flattening enum setting.
* rendering/RenderIFrame.cpp:
(WebCore::RenderIFrame::isFullScreenIFrame): Add a heuristic when partial frame flattening
is enabled setting is enabled.
There is not a strict comparison against the viewport size since authors may not exactly use
100vw/100vh.
Anyway, it is hard to do such comparison using the resolved width & height on RenderStyle.
(WebCore::RenderIFrame::flattenFrame): Add a comment for the existing "zero size" heuristic.
Use isFullScreenIFrame heuristic.
* rendering/RenderView.cpp:
(WebCore::FrameFlatteningLayoutDisallower::FrameFlatteningLayoutDisallower): Use the frame flattening enum setting.
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::Backup::Backup): Add backup for frame flattening.
(WebCore::InternalSettings::Backup::restoreTo): Ditto.
(WebCore::internalSettingsToWebCoreValue): Helper function to cast the frame flattening values.
(WebCore::InternalSettings::setFrameFlattening): Redefine setFrameFlattening to accept an enum.
* testing/InternalSettings.h: Define new enum & setter for frame flattening as well as a backup value.
* testing/InternalSettings.idl: Define new enum & setter for frame flattening.

Source/WebKit/mac:

This commit adjusts the mac/ios preference interface to treat frame flattening as an enum.

* WebView/WebPreferenceKeysPrivate.h: Rename the key.
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]): Handle frame flattening as an enum.
(-[WebPreferences isFrameFlatteningEnabled]): Ditto.
(-[WebPreferences setFrameFlatteningEnabled:]): Ditto.
(-[WebPreferences frameFlattening]): New function to get frame flattening as an enum.
(-[WebPreferences setFrameFlattening:]): New function to set frame flattening as an enum.
* WebView/WebPreferencesPrivate.h: Ditto.
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]): Ditto.
* WebView/WebPreferencesPrivate.h: Add new enum definition.

Source/WebKit/win:

This commit ajusts the window port to internally use the new preference type for frame flattening.
However, the "partial frame flattening" value is not exposed yet.

* WebView.cpp:
(WebView::notifyPreferencesChanged): Use the new type for frame flattening.

Source/WebKit2:

This commit ajusts the preference API to internally treat frame flattening as an enum.
However, the "partial frame flattening" value is not exposed to GTK, C or InjectedBundle APIs yet.

* Shared/WebPreferencesDefinitions.h: Define frame flattening as an enum.
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetFrameFlatteningEnabled): Treat frame flattening as an enum.
(WKPreferencesGetFrameFlatteningEnabled): Ditto.
* UIProcess/API/gtk/WebKitSettings.cpp:
(webkit_settings_get_enable_frame_flattening): Ditto.
(webkit_settings_set_enable_frame_flattening): Ditto.
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): Do not handle frame flattening since it is an enum.
For now, this breaks one test checking preference overriding because of bug 128594.
(WebKit::InjectedBundle::setFrameFlatteningEnabled): Treat frame flattening as an enum.
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::contentsSizeChanged): Use enum value.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences): Ditto.

Tools:

* DumpRenderTree/mac/DumpRenderTree.mm:
(resetWebPreferencesToConsistentValues): Use WebKitFrameFlatteningDisabled.

LayoutTests:

This commit adjusts tests to work when frame flattening is an enum.
It also adds a test to check the new heuristic when "frame flattening for non-fullscreen
iframes" is enabled.
set-preference.html is disabled for now, as the test suite does not support overridePreference()
for non-boolean values (bug 128594).

* fast/forms/ios/delete-in-input-in-iframe.html: Use enum value "FullyEnabled".
* fast/forms/ios/focus-input-in-iframe.html: Ditto.
* fast/forms/ios/programmatic-focus-input-in-iframe.html: Ditto.
* fast/forms/ios/typing-in-input-in-iframe.html: Ditto.
* fast/frames/flattening/crash-remove-iframe-during-object-beforeload.html: Ditto.
* fast/frames/flattening/crash-svg-document.html: Ditto.
* fast/frames/flattening/crash-when-sibling-iframe-is-destroyed-with-subtree-layoutroot.html: Ditto.
* fast/frames/flattening/frameset-flattening-advanced.html: Ditto.
* fast/frames/flattening/frameset-flattening-grid.html: Ditto.
* fast/frames/flattening/frameset-flattening-simple.html: Ditto.
* fast/frames/flattening/frameset-flattening-subframe-resize.html: Ditto.
* fast/frames/flattening/frameset-flattening-subframesets.html: Ditto.
* fast/frames/flattening/hittest-iframe-while-style-changes-crash.html: Ditto.
Be sure to use single quotes for the inline iframe page.
* fast/frames/flattening/iframe-flattening-crash.html: Use enum value "FullyEnabled".
* fast/frames/flattening/iframe-flattening-fixed-height.html: Ditto.
* fast/frames/flattening/iframe-flattening-fixed-width-and-height-no-scrolling-with-js-forced-layout.html: Ditto.
* fast/frames/flattening/iframe-flattening-fixed-width-and-height-no-scrolling.html: Ditto.
* fast/frames/flattening/iframe-flattening-fixed-width-and-height-zero-size.html: Ditto.
* fast/frames/flattening/iframe-flattening-fixed-width-and-height.html: Ditto.
* fast/frames/flattening/iframe-flattening-fixed-width.html: Ditto.
* fast/frames/flattening/iframe-flattening-fullscreen.html: Added. Check the new heuristic.
* fast/frames/flattening/iframe-flattening-fullscreen-expected.txt: Added.
* fast/frames/flattening/iframe-flattening-inside-flexbox-with-delayed-scroll-update.html: Use enum value "FullyEnabled".
* fast/frames/flattening/iframe-flattening-nested.html: Ditto.
* fast/frames/flattening/iframe-flattening-offscreen.html: Ditto.
* fast/frames/flattening/iframe-flattening-out-of-view-and-scroll.html: Ditto.
* fast/frames/flattening/iframe-flattening-out-of-view-scroll-and-relayout.html: Ditto.
* fast/frames/flattening/iframe-flattening-out-of-view.html: Ditto.
* fast/frames/flattening/iframe-flattening-resize-event-count.html: Ditto.
* fast/frames/flattening/iframe-flattening-selection-crash.html: Ditto.
* fast/frames/flattening/iframe-flattening-simple.html: Ditto.
* fast/frames/flattening/iframe-tiny.html: Ditto.
* fast/frames/flattening/scrollable-flexbox-inside-iframe-with-zero-height-and-needs-full-repaint-crash.html: Ditto.
* fast/frames/flattening/scrollable-flexbox-inside-iframe-with-zero-height-assertion-failure.html: Ditto.
* fast/frames/flattening/scrolling-in-object.html: Ditto.
* fast/spatial-navigation/snav-iframe-flattening-simple.html: Ditto.
* http/tests/misc/iframe-flattening-3level-nesting-with-blocking-resource.html: Ditto.
* platform/mac/TestExpectations: Disable this due to limitation in the test infrastructure.
* plugins/frameset-with-plugin-frame.html: Use enum value "FullyEnabled".

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

2 years agoUnreviewed. Update OptionsGTK.cmake and NEWS for 2.17.4 release.
carlosgc@webkit.org [Mon, 19 Jun 2017 06:37:07 +0000 (06:37 +0000)]
Unreviewed. Update OptionsGTK.cmake and NEWS for 2.17.4 release.

.:

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

Source/WebKit2:

* gtk/NEWS: Add release notes for 2.17.4.

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

2 years agoREGRESSION(r218253): Infinite animated gifs no longer loop
carlosgc@webkit.org [Mon, 19 Jun 2017 05:22:47 +0000 (05:22 +0000)]
REGRESSION(r218253): Infinite animated gifs no longer loop
https://bugs.webkit.org/show_bug.cgi?id=173464

Reviewed by Carlos Alberto Lopez Perez.

After the first loop iteration we keep rendering the same frame all the time, so it looks like if the animation
stopped. This is because in r218253 we changed to use SharedBuffer instead of a Vector in ImageBackingStore, but
we are not correctly copying the data in the copy constructor. We are using SharedBuffer::copy() that doesn't
actually copy the data of the segments.

* platform/graphics/ImageBackingStore.h:
(WebCore::ImageBackingStore::ImageBackingStore): Copy the data of the other SharedBuffer.

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

2 years ago[GStreamer] MainThreadNotifier ASSERTION FAILED: m_boundThread == currentThread(...
carlosgc@webkit.org [Mon, 19 Jun 2017 05:12:37 +0000 (05:12 +0000)]
[GStreamer] MainThreadNotifier ASSERTION FAILED: m_boundThread == currentThread() in _WebKitWebSrcPrivate::~_WebKitWebSrcPrivate
https://bugs.webkit.org/show_bug.cgi?id=152043

Reviewed by Xabier Rodriguez-Calvar.

Stop using a WeakPtr in MainThreadNotifier, because it's not thread safe, which causes a crash in debug builds when
the notifier is destroyed in a different thread. Make MainThreadNotifier thread safe refcounted instead, and add
an invalidate() method to mark it as invalid.

* platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.cpp:
(WebCore::InbandTextTrackPrivateGStreamer::handleSample):
(WebCore::InbandTextTrackPrivateGStreamer::streamChanged):
* platform/graphics/gstreamer/MainThreadNotifier.h:
(WebCore::MainThreadNotifier::MainThreadNotifier): Deleted.
(WebCore::MainThreadNotifier::notify): Deleted.
(WebCore::MainThreadNotifier::cancelPendingNotifications): Deleted.
(WebCore::MainThreadNotifier::addPendingNotification): Deleted.
(WebCore::MainThreadNotifier::removePendingNotification): Deleted.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::videoChangedCallback):
(WebCore::MediaPlayerPrivateGStreamer::videoSinkCapsChangedCallback):
(WebCore::MediaPlayerPrivateGStreamer::audioChangedCallback):
(WebCore::MediaPlayerPrivateGStreamer::textChangedCallback):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::volumeChangedCallback):
(WebCore::MediaPlayerPrivateGStreamerBase::muteChangedCallback):
(WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
* platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp:
(WebCore::TrackPrivateBaseGStreamer::TrackPrivateBaseGStreamer):
(WebCore::TrackPrivateBaseGStreamer::~TrackPrivateBaseGStreamer):
(WebCore::TrackPrivateBaseGStreamer::disconnect):
(WebCore::TrackPrivateBaseGStreamer::activeChangedCallback):
(WebCore::TrackPrivateBaseGStreamer::tagsChanged):
* platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h:
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(webkit_web_src_init):
(webKitWebSrcDispose):
(webKitWebSrcStop):
(webKitWebSrcStart):
(webKitWebSrcNeedData):
(webKitWebSrcEnoughData):
(webKitWebSrcSeek):

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

2 years agoDrop redundant IPC in WebPage::tryClose()
cdumez@apple.com [Mon, 19 Jun 2017 04:53:08 +0000 (04:53 +0000)]
Drop redundant IPC in WebPage::tryClose()
https://bugs.webkit.org/show_bug.cgi?id=173533

Reviewed by Sam Weinig.

Drop redundant IPC to stop the responsiveness timer in WebPage::tryClose(). The
destructor for the SendStopResponsivenessTimer already takes care of sending the
IPC.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::tryClose):

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

2 years agoMeter element doesn't respect the writing direction
rniwa@webkit.org [Mon, 19 Jun 2017 04:00:49 +0000 (04:00 +0000)]
Meter element doesn't respect the writing direction
https://bugs.webkit.org/show_bug.cgi?id=173507

Reviewed by Sam Weinig.

Source/WebCore:

The bug was caused by NSLevelIndicatorCell no longer using the value of baseWritingDirection
to determine the direction of rendering in macOS Sierra and later. It instead relies on
the value of userInterfaceLayoutDirection.

Fixed the bug by setting both values. Once we dropped the support for macOS El Capitan
and earlier, we can remove the code to set baseWritingDirection.

Test: fast/dom/HTMLMeterElement/meter-rtl.html

* rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::levelIndicatorFor):

LayoutTests:

A regression ref test since existing tests were pixel tests and did not catch this regression.
Note that black border was added to workaround the anti-aliasing differences in macOS High Sierra.

* fast/dom/HTMLMeterElement/meter-rtl-expected.html: Added.
* fast/dom/HTMLMeterElement/meter-rtl.html: Added.

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

2 years agoRemove 'EditCommand::isEditCommandComposition'.
dewei_zhu@apple.com [Mon, 19 Jun 2017 03:12:15 +0000 (03:12 +0000)]
Remove 'EditCommand::isEditCommandComposition'.
https://bugs.webkit.org/show_bug.cgi?id=173525

Reviewed by Wenson Hsieh.

Should remove 'isEditCommandComposition' from 'EditCommand' for:
    1. 'EditCommandComposition' is no longer a subclass of EditCommand.
    2. 'isEditCommandComposition' is not used at all.

* editing/EditCommand.h:
(WebCore::EditCommand::isCompositeEditCommand):
(WebCore::EditCommand::isEditCommandComposition): Deleted.

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

2 years agoDrop unused UserMediaPermissionRequestManager::cancelPendingRequests()
cdumez@apple.com [Mon, 19 Jun 2017 01:59:17 +0000 (01:59 +0000)]
Drop unused UserMediaPermissionRequestManager::cancelPendingRequests()
https://bugs.webkit.org/show_bug.cgi?id=173529
<rdar://problem/32836986>

Reviewed by Sam Weinig.

Drop UserMediaPermissionRequestManager::cancelPendingRequests() as it is unused
and its implementation is wrong (modifies the hash maps it is iterating on).

* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
(WebKit::UserMediaPermissionRequestManager::cancelPendingRequests): Deleted.
* WebProcess/MediaStream/UserMediaPermissionRequestManager.h:

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

2 years agoCrash when re-entering MediaDevicesEnumerationRequest::cancel()
cdumez@apple.com [Sun, 18 Jun 2017 20:25:19 +0000 (20:25 +0000)]
Crash when re-entering MediaDevicesEnumerationRequest::cancel()
https://bugs.webkit.org/show_bug.cgi?id=173522
<rdar://problem/31185739>

Reviewed by Darin Adler.

Source/WebCore:

When a MediaDevicesRequest is started, it creates a MediaDevicesEnumerationRequest
object and passes a completion handler to that MediaDevicesEnumerationRequest
object. The completion handler holds a reference to the MediaDevicesRequest object
so that its stays alive until the MediaDevicesEnumerationRequest either completes
or is canceled. MediaDevicesRequest also holds a reference to the
MediaDevicesEnumerationRequest object via its m_enumerationRequest data member.

When the document is destroyed, both MediaDevicesRequest::contextDestroyed() and
MediaDevicesEnumerationRequest::contextDestroyed() gets called and the other is not
pre-determined. If MediaDevicesEnumerationRequest::contextDestroyed() gets called
first then it calls MediaDevicesEnumerationRequest::cancel(). Calling cancel() ends
up destroying the completion handler. Destroying the completion handler ends up
dereferencing and destroying the MediaDevicesRequest object. The MediaDevicesRequest
destructor would call MediaDevicesEnumerationRequest::cancel() again, causing us to
re-enter it and assign nullptr to the completion callback again. Re-entering
std::function's operator=(nullptr_t) is not safe because of the way it is implemented
as we end up trying to destroy the lambda twice and crashing. Using a WTF::Function
instead fixes this particular issue because re-entering WTF::Function's operator=(nullptr_t)
is safe.

However, this fix is not sufficient. Calling the MediaDevicesRequest destructor also
dereferencing and destroys the MediaDevicesEnumerationRequest object. As a result,
when MediaDevicesEnumerationRequest::contextDestroyed() returns from its call to cancel
|this| is already dead when we call ContextDestructionObserver::contextDestroyed().
To address this issue, we now protect |this| in MediaDevicesEnumerationRequest::contextDestroyed().

Test: fast/mediastream/destroy-document-while-enumerating-devices.html

* Modules/mediastream/MediaDevicesEnumerationRequest.cpp:
(WebCore::MediaDevicesEnumerationRequest::contextDestroyed):
Protect |this| as the call to cancel() may destroy |this| before calling
ContextDestructionObserver::contextDestroyed() otherwise.

* Modules/mediastream/MediaDevicesEnumerationRequest.h:
Use WTF::Function instead of std::function for the completion handler as
it is safer (in terms of re-entrency) and avoids unnecessary copying.

* Modules/mediastream/MediaDevicesRequest.cpp:
(WebCore::MediaDevicesRequest::~MediaDevicesRequest):
Stop calling MediaDevicesEnumerationRequest::cancel(). When the destructor
is called, the MediaDevicesEnumerationRequest has either completed or been
canceled so there is no need to cancel again. I added an assertion to
make sure it is the case. This avoids re-entering
MediaDevicesEnumerationRequest::cancel() is some cases, which was risky.

(WebCore::MediaDevicesRequest::start):
Add comment for clarity and capture a Ref<> instead of a RefPtr<> now that
we can since we use WTF::Function.

Tools:

Add API test for re-entering Function's assignment operators.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WTF/Function.cpp: Added.
(TestWebKitAPI::TestObject::TestObject):
(TestWebKitAPI::TestObject::~TestObject):
(TestWebKitAPI::TestObject::operator()):
(TestWebKitAPI::TEST):

LayoutTests:

Add layout test coverage. This test would flakily crash before the fix because it
relies on the order in which contextDestroyed() is called for MediaDevicesRequest
and MediaDevicesEnumerationRequest.

* fast/mediastream/destroy-document-while-enumerating-devices-expected.txt: Added.
* fast/mediastream/destroy-document-while-enumerating-devices.html: Added.
* fast/mediastream/resources/enumerate-devices-frame.html: Added.

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

2 years agoUse WTF::Function instead of std::function in WTF/
cdumez@apple.com [Sun, 18 Jun 2017 19:49:12 +0000 (19:49 +0000)]
Use WTF::Function instead of std::function in WTF/
https://bugs.webkit.org/show_bug.cgi?id=173519

Reviewed by Sam Weinig.

Source/WebCore:

Replace a few uses of std::function with WTF::Function in WebCore/
as well. It was either this or including <functional> and I decided
it made more sense to port the code.

* platform/graphics/FontSelectionAlgorithm.h:
(WebCore::FontSelectionAlgorithm::iterateActiveCapabilitiesWithReturn):
* platform/mediastream/MediaConstraints.cpp:
(WebCore::StringConstraint::find):
(WebCore::MediaTrackConstraintSetMap::forEach):
(WebCore::MediaTrackConstraintSetMap::filter):
(WebCore::MediaConstraints::isConstraintSet):
* platform/mediastream/MediaConstraints.h:
(WebCore::NumericConstraint::find):
* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::applyConstraint):

Source/WTF:

Use WTF::Function instead of std::function in WTF/ to avoid
copying.

* wtf/Brigand.h:
* wtf/Condition.h:
* wtf/Expected.h:
* wtf/FunctionDispatcher.h:
* wtf/MainThread.h:
* wtf/MemoryPressureHandler.h:
(WTF::MemoryPressureHandler::setMemoryKillCallback):
(WTF::MemoryPressureHandler::setMemoryPressureStatusChangedCallback):
(WTF::MemoryPressureHandler::setDidExceedInactiveLimitWhileActiveCallback):
* wtf/Optional.h:
* wtf/ParkingLot.h:
* wtf/RefCounter.h:
(WTF::RefCounter<T>::RefCounter):
* wtf/WorkQueue.h:
* wtf/linux/MemoryPressureHandlerLinux.cpp:
(WTF::MemoryPressureHandler::EventFDPoller::EventFDPoller):
* wtf/text/WTFString.cpp:
(WTF::String::split):
* wtf/text/WTFString.h:

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

2 years ago[MSE] Seeking or entering fullscreen can cause extreme CPU usage
jer.noble@apple.com [Sun, 18 Jun 2017 15:55:55 +0000 (15:55 +0000)]
[MSE] Seeking or entering fullscreen can cause extreme CPU usage
https://bugs.webkit.org/show_bug.cgi?id=173505

Reviewed by Tim Horton.

When support for painting MSE to WebGL was added in r217185, the implementation of
SourceBufferPrivateAVFObjC::isReadyForMoreSamples() was modified to support asking
the decompression session if it was ready. That change, however, caused an extreme
performance regression in the normal playback path, where WebKit will effectively
append samples endlessly to the AVSampleBufferDisplayLayer, which admirably enqueued
each of them for decoding. Eventually, the cost of iterating over the CMBufferQueue
overwhelmed the cost of decoding, and caused the extreme lag seen when seeking.

Make sure to property query the AVSampleBufferDisplayLayer for isReadyForMoreMediaData
before enqueuing.

A previous version of this patch exposed some errors which caused failing tests:

In sourceBufferPrivateDidReceiveSample(), we were using local versions of
presentationTimestamp and decodeTimestamp as keys to the decodeQueue; those local versions
were floating point values (because MediaTime + float = float), but the sample itself uses
non-floating point MediaTimes. This causes samples to be left in the queue when they should
be removed.

In didBecomeReadyForMoreSamples(), we were getting spurious assertions when a
AVSampleBufferDisplayLayer or a AVSampleBufferAudioRenderer would fire a callback from
-requestMediaDataWhenReadyOnQueue:usingBlock: even after it had been told to
-stopRequestingMediaData. Apparently it's expected behavior and so an ASSERT_NOT_REACHED is
inappropriate here.

* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(WebCore::SourceBufferPrivateAVFObjC::isReadyForMoreSamples):
(WebCore::SourceBufferPrivateAVFObjC::didBecomeReadyForMoreSamples):

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

2 years agoAddressing post-review comment after r218456.
zalan@apple.com [Sun, 18 Jun 2017 03:57:26 +0000 (03:57 +0000)]
Addressing post-review comment after r218456.
https://bugs.webkit.org/show_bug.cgi?id=173509

Reviewed by Darin Adler.

* dom/Document.cpp:
(WebCore::Document::destroyRenderTree):

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

2 years agoDOMQuad::getBounds() should return a Ref<>
cdumez@apple.com [Sun, 18 Jun 2017 01:36:07 +0000 (01:36 +0000)]
DOMQuad::getBounds() should return a Ref<>
https://bugs.webkit.org/show_bug.cgi?id=173517

Reviewed by Simon Fraser.

DOMQuad::getBounds() should return a Ref<> as it cannot return
null.

* dom/DOMQuad.cpp:
(WebCore::DOMQuad::getBounds):
* dom/DOMQuad.h:

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

2 years agoUnreviewed, follow-up build fix after r218457.
cdumez@apple.com [Sun, 18 Jun 2017 00:10:41 +0000 (00:10 +0000)]
Unreviewed, follow-up build fix after r218457.

* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):

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

2 years agoUnreviewed, follow-up build fix after r218457.
cdumez@apple.com [Sat, 17 Jun 2017 23:55:41 +0000 (23:55 +0000)]
Unreviewed, follow-up build fix after r218457.

* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):

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

2 years agoImplement DOMQuad
simon.fraser@apple.com [Sat, 17 Jun 2017 22:34:28 +0000 (22:34 +0000)]
Implement DOMQuad
https://bugs.webkit.org/show_bug.cgi?id=163534

Reviewed by Sam Weinig.
LayoutTests/imported/w3c:

Implement DOMQuad per https://drafts.fxtf.org/geometry/#DOMQuad.

* web-platform-tests/css/geometry-1/DOMQuad-001-expected.txt: Tests against an older version
of the spec, so some failures.
* web-platform-tests/css/geometry-1/DOMQuad-002-expected.txt: All tests pass other than a NaN
propagation issue which needs spec clarification.
* web-platform-tests/css/geometry-1/structured-serialization-expected.txt:

Source/WebCore:

Implement DOMQuad per https://drafts.fxtf.org/geometry/#DOMQuad, other than serialization
which requires some bindings changes.

web-platform-tests/css/geometry-1/DOMRect-001.html tests against an older version of the spec,
so has some failures. DOMQuad-002.html passes, other than a NaN propagation issue that requires
spec clarification.

* CMakeLists.txt:
* DerivedSources.make:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSDOMQuadCustom.cpp: Added.
(WebCore::JSDOMQuad::getBounds):
* bindings/scripts/CodeGenerator.pm:
(IsSerializableDOMType):
(IsSerializableAttribute):
* dom/DOMPoint.h:
* dom/DOMQuad.cpp: Added.
(WebCore::DOMQuad::DOMQuad):
(WebCore::DOMQuad::getBounds):
* dom/DOMQuad.h: Added.
(WebCore::DOMQuad::create):
(WebCore::DOMQuad::fromRect):
(WebCore::DOMQuad::fromQuad):
(WebCore::DOMQuad::p1):
(WebCore::DOMQuad::p2):
(WebCore::DOMQuad::p3):
(WebCore::DOMQuad::p4):
* dom/DOMQuad.idl: Added.
* dom/DOMQuadInit.h: Added.
* dom/DOMQuadInit.idl: Added.

LayoutTests:

Implement DOMQuad per https://drafts.fxtf.org/geometry/#DOMQuad.

* js/dom/global-constructors-attributes-dedicated-worker-expected.txt:
* platform/mac/js/dom/global-constructors-attributes-expected.txt:

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

2 years agoUse WTF::Function instead of std::function in WebKit2/
cdumez@apple.com [Sat, 17 Jun 2017 20:55:56 +0000 (20:55 +0000)]
Use WTF::Function instead of std::function in WebKit2/
https://bugs.webkit.org/show_bug.cgi?id=173504

Reviewed by Darin Adler.

Use WTF::Function instead of std::function in WebKit2/ to avoid
unnecessary copying.

Source/WebCore:

* Modules/applepay/PaymentCoordinator.cpp:
(WebCore::PaymentCoordinator::canMakePaymentsWithActiveCard):
(WebCore::PaymentCoordinator::openPaymentSetup):
* Modules/applepay/PaymentCoordinator.h:
* Modules/applepay/PaymentCoordinatorClient.h:
* loader/EmptyClients.cpp:
* loader/NetscapePlugInStreamLoader.cpp:
(WebCore::NetscapePlugInStreamLoader::willSendRequest):
* loader/NetscapePlugInStreamLoader.h:
* loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::willSendRequest):
* loader/ResourceLoader.h:

Source/WebKit/mac:

* Plugins/Hosted/HostedNetscapePluginStream.h:
* Plugins/Hosted/HostedNetscapePluginStream.mm:
(WebKit::HostedNetscapePluginStream::willSendRequest):
* Plugins/WebNetscapePluginStream.h:
* Plugins/WebNetscapePluginStream.mm:
(WebNetscapePluginStream::willSendRequest):
* WebCoreSupport/WebPaymentCoordinatorClient.h:
* WebCoreSupport/WebPaymentCoordinatorClient.mm:
(WebPaymentCoordinatorClient::canMakePaymentsWithActiveCard):
(WebPaymentCoordinatorClient::openPaymentSetup):

Source/WebKit/win:

* Plugins/PluginStream.cpp:
(WebCore::PluginStream::willSendRequest):
* Plugins/PluginStream.h:

Source/WebKit2:

* DatabaseProcess/DatabaseProcess.cpp:
(WebKit::DatabaseProcess::getSandboxExtensionsForBlobFiles):
* DatabaseProcess/DatabaseProcess.h:
* NetworkProcess/cache/NetworkCacheData.h:
* NetworkProcess/cache/NetworkCacheFileSystem.h:
* Platform/IPC/Connection.cpp:
(IPC::Connection::installIncomingSyncMessageCallback):
* Platform/IPC/Connection.h:
* Platform/IPC/glib/GSocketMonitor.h:
* Platform/Logging.h:
* Shared/API/APIObject.h:
* Shared/AsyncRequest.cpp:
(WebKit::AsyncRequest::AsyncRequest):
(WebKit::AsyncRequest::setAbortHandler):
* Shared/AsyncRequest.h:
* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
(WebKit::CompositingRunLoop::CompositingRunLoop):
* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:
* Shared/WebContextMenuItemData.h:
* UIProcess/API/APIDownloadClient.h:
(API::DownloadClient::willSendRequest):
* UIProcess/API/APIIconLoadingClient.h:
(API::IconLoadingClient::getLoadDecisionForIcon):
* UIProcess/API/APIUIClient.h:
(API::UIClient::createNewPageAsync):
* UIProcess/API/C/WKPage.cpp:
(toGenericCallbackFunction):
* UIProcess/API/Cocoa/WKWebView.mm:
* UIProcess/API/mac/WKView.mm:
(-[WKView maybeInstallIconLoadingClient]):
* UIProcess/AcceleratedDrawingAreaProxy.cpp:
(WebKit::AcceleratedDrawingAreaProxy::dispatchAfterEnsuringDrawing):
* UIProcess/AcceleratedDrawingAreaProxy.h:
* UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):
(WebKit::WebPaymentCoordinatorProxy::platformOpenPaymentSetup):
* UIProcess/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:
(WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):
* UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
(WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::performKeyboardInteractions):
* UIProcess/Cocoa/IconLoadingDelegate.h:
* UIProcess/Cocoa/IconLoadingDelegate.mm:
(WebKit::IconLoadingDelegate::IconLoadingClient::getLoadDecisionForIcon):
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::tryAppLink):
* UIProcess/Cocoa/UIDelegate.h:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::UIClient::createNewPageCommon):
(WebKit::UIDelegate::UIClient::createNewPageAsync):
* UIProcess/Cocoa/ViewGestureController.cpp:
(WebKit::ViewGestureController::SnapshotRemovalTracker::start):
* UIProcess/Cocoa/ViewGestureController.h:
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::prepareForMoveToWindow):
* UIProcess/Databases/DatabaseProcessProxy.cpp:
(WebKit::DatabaseProcessProxy::fetchWebsiteData):
(WebKit::DatabaseProcessProxy::deleteWebsiteData):
(WebKit::DatabaseProcessProxy::deleteWebsiteDataForOrigins):
* UIProcess/Databases/DatabaseProcessProxy.h:
* UIProcess/DrawingAreaProxy.h:
(WebKit::DrawingAreaProxy::dispatchAfterEnsuringDrawing):
* UIProcess/DrawingAreaProxyImpl.cpp:
(WebKit::DrawingAreaProxyImpl::DrawingMonitor::start):
(WebKit::DrawingAreaProxyImpl::dispatchAfterEnsuringDrawing):
* UIProcess/DrawingAreaProxyImpl.h:
* UIProcess/GenericCallback.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::fetchWebsiteData):
(WebKit::NetworkProcessProxy::deleteWebsiteData):
(WebKit::NetworkProcessProxy::deleteWebsiteDataForOrigins):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/PageClient.h:
* UIProcess/Plugins/PlugInAutoStartProvider.cpp:
(WebKit::PlugInAutoStartProvider::setAutoStartOriginsTableWithItemsPassingTest):
* UIProcess/Plugins/PlugInAutoStartProvider.h:
* UIProcess/Plugins/PluginProcessManager.cpp:
(WebKit::PluginProcessManager::fetchWebsiteData):
(WebKit::PluginProcessManager::deleteWebsiteData):
(WebKit::PluginProcessManager::deleteWebsiteDataForHostNames):
* UIProcess/Plugins/PluginProcessManager.h:
* UIProcess/Plugins/PluginProcessProxy.cpp:
(WebKit::PluginProcessProxy::fetchWebsiteData):
(WebKit::PluginProcessProxy::deleteWebsiteData):
(WebKit::PluginProcessProxy::deleteWebsiteDataForHostNames):
* UIProcess/Plugins/PluginProcessProxy.h:
* UIProcess/ProcessAssertion.h:
* UIProcess/WebBackForwardList.cpp:
(WebKit::WebBackForwardList::backForwardListState):
* UIProcess/WebBackForwardList.h:
* UIProcess/WebCookieManagerProxy.cpp:
(WebKit::WebCookieManagerProxy::setCookieObserverCallback):
(WebKit::WebCookieManagerProxy::cookiesDidChange):
* UIProcess/WebCookieManagerProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::setInitialFocus):
(WebKit::WebPageProxy::validateCommand):
(WebKit::WebPageProxy::sessionState):
(WebKit::WebPageProxy::runJavaScriptInMainFrame):
(WebKit::WebPageProxy::getRenderTreeExternalRepresentation):
(WebKit::WebPageProxy::getSourceForFrame):
(WebKit::WebPageProxy::getContentsAsString):
(WebKit::WebPageProxy::getBytecodeProfile):
(WebKit::WebPageProxy::getSamplingProfilerOutput):
(WebKit::WebPageProxy::isWebProcessResponsive):
(WebKit::WebPageProxy::getSelectionOrContentsAsString):
(WebKit::WebPageProxy::createNewPage):
(WebKit::WebPageProxy::getMarkedRangeAsync):
(WebKit::WebPageProxy::getSelectedRangeAsync):
(WebKit::WebPageProxy::characterIndexForPointAsync):
(WebKit::WebPageProxy::firstRectForCharacterRangeAsync):
(WebKit::WebPageProxy::takeSnapshot):
(WebKit::WebPageProxy::installActivityStateChangeCompletionHandler):
(WebKit::WebPageProxy::callAfterNextPresentationUpdate):
(WebKit::WebPageProxy::getLoadDecisionForIcon):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::isResponsive):
* UIProcess/WebProcessProxy.h:
* UIProcess/WebsiteData/WebsiteDataStore.h:
* UIProcess/gtk/AcceleratedBackingStoreX11.cpp:
(WebKit::XDamageNotifier::add):
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::requestPasswordForQuickLookDocument):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::selectWithGesture):
(WebKit::WebPageProxy::updateSelectionWithTouches):
(WebKit::WebPageProxy::requestAutocorrectionData):
(WebKit::WebPageProxy::applyAutocorrection):
(WebKit::WebPageProxy::executeEditCommand):
(WebKit::WebPageProxy::selectTextWithGranularityAtPoint):
(WebKit::WebPageProxy::selectPositionAtBoundaryWithDirection):
(WebKit::WebPageProxy::moveSelectionAtBoundaryWithDirection):
(WebKit::WebPageProxy::selectPositionAtPoint):
(WebKit::WebPageProxy::beginSelectionInDirection):
(WebKit::WebPageProxy::updateSelectionWithExtentPoint):
(WebKit::WebPageProxy::updateSelectionWithExtentPointAndBoundary):
(WebKit::WebPageProxy::requestDictationContext):
(WebKit::WebPageProxy::requestAutocorrectionContext):
(WebKit::WebPageProxy::getSelectionContext):
(WebKit::WebPageProxy::selectWithTwoTouches):
(WebKit::WebPageProxy::requestRectsForGranularityWithSelectionOffset):
(WebKit::WebPageProxy::requestRectsAtSelectionOffsetWithText):
(WebKit::WebPageProxy::moveSelectionByOffset):
(WebKit::WebPageProxy::focusNextAssistedNode):
(WebKit::WebPageProxy::didRequestPasswordForQuickLookDocumentInMainFrame):
* UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h:
* UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::dispatchAfterEnsuringDrawing):
* UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
* UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
(WebKit::TiledCoreAnimationDrawingAreaProxy::dispatchAfterEnsuringDrawing):
* UIProcess/mac/WKTextFinderClient.mm:
* UIProcess/mac/WebContextMenuProxyMac.mm:
(-[WKSelectionHandlerWrapper initWithSelectionHandler:]):
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::attributedSubstringForCharacterRangeAsync):
(WebKit::WebPageProxy::fontAtSelection):
* WebProcess/ApplePay/WebPaymentCoordinator.cpp:
(WebKit::WebPaymentCoordinator::canMakePaymentsWithActiveCard):
(WebKit::WebPaymentCoordinator::openPaymentSetup):
* WebProcess/ApplePay/WebPaymentCoordinator.h:
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::Stream::willSendRequest):
* WebProcess/WebPage/DrawingArea.cpp:
(WebKit::DrawingArea::dispatchAfterEnsuringUpdatedScrollPosition):
* WebProcess/WebPage/DrawingArea.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::markLayersVolatile):
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::markLayersVolatile):
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::dispatchAfterEnsuringUpdatedScrollPosition):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::markAllLayersVolatile):
* WebProcess/WebProcess.h:

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

2 years agoDemote the "we have navigated away" check to an assertion.
zalan@apple.com [Sat, 17 Jun 2017 20:37:07 +0000 (20:37 +0000)]
Demote the "we have navigated away" check to an assertion.
https://bugs.webkit.org/show_bug.cgi?id=173509

Reviewed by Simon Fraser.

Now that the expected behavior is that the render tree can't get to the page cache, it's ok to assert.
TODO: We should also have view() check removed at some point.

* dom/Document.cpp:
(WebCore::Document::destroyRenderTree):

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

2 years agoFix CMake build
achristensen@apple.com [Sat, 17 Jun 2017 20:03:58 +0000 (20:03 +0000)]
Fix CMake build

Source/WebCore:

* PlatformMac.cmake:
* bindings/js/ScriptGlobalObject.cpp:

Source/WebKit2:

* CMakeLists.txt:
* NetworkProcess/capture/NetworkCaptureEvent.cpp:
* PlatformGTK.cmake:
* PlatformWPE.cmake:

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

2 years agoUnreviewed, rolling out r218438.
commit-queue@webkit.org [Sat, 17 Jun 2017 19:50:51 +0000 (19:50 +0000)]
Unreviewed, rolling out r218438.
https://bugs.webkit.org/show_bug.cgi?id=173515

Caused imported/w3c/web-platform-tests/media-
source/mediasource* tests to fail (Requested by smfr on
#webkit).

Reverted changeset:

"[MSE] Seeking or entering fullscreen can cause extreme CPU
usage"
https://bugs.webkit.org/show_bug.cgi?id=173505
http://trac.webkit.org/changeset/218438

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

2 years agoTried to fix non-iOS builds.
mitz@apple.com [Sat, 17 Jun 2017 15:49:32 +0000 (15:49 +0000)]
Tried to fix non-iOS builds.

* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:

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

2 years agoArrayBuffer constructor needs to create subclass structures before its buffer
keith_miller@apple.com [Sat, 17 Jun 2017 14:13:13 +0000 (14:13 +0000)]
ArrayBuffer constructor needs to create subclass structures before its buffer
https://bugs.webkit.org/show_bug.cgi?id=173510

Reviewed by Yusuke Suzuki.

JSTests:

* test262.yaml:

Source/JavaScriptCore:

* runtime/JSArrayBufferConstructor.cpp:
(JSC::constructArrayBuffer):

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

2 years agoCrash due to infinite recursion via FrameSelection::updateAppearanceAfterLayout
antti@apple.com [Sat, 17 Jun 2017 13:02:08 +0000 (13:02 +0000)]
Crash due to infinite recursion via FrameSelection::updateAppearanceAfterLayout
https://bugs.webkit.org/show_bug.cgi?id=173468

Reviewed by Ryosuke Niwa.

Source/WebCore:

Test: editing/selection/updateAppearanceAfterLayout-recursion.html

Calling FrameSelection::updateAppearanceAfterLayout() from Document::resolveStyle is unsafe
because it may cause another call to resolveStyle. We have some cases where the style
is still unclean when updateAppearanceAfterLayout() is called. This can lead to infinite
recursion.

The test case is not the common stack seen in CrashTracer (couldn't quit replicate it) but
the updateAppearanceAfterLayout/resolveStyle recursion is the same.

* dom/Document.cpp:
(WebCore::Document::resolveStyle):

    Normally selection appearance update is done in post-layout but not all style resolutions schedule a layout.
    Invoke it asynchronously in that case instead of the previous synchronous call.

* editing/FrameSelection.cpp:
(WebCore::FrameSelection::FrameSelection):
(WebCore::FrameSelection::updateAppearanceAfterLayout):
(WebCore::FrameSelection::scheduleAppearanceUpdateAfterStyleChange):
(WebCore::FrameSelection::appearanceUpdateTimerFired):
(WebCore::FrameSelection::updateAppearanceAfterLayoutOrStyleChange):
* editing/FrameSelection.h:

LayoutTests:

* editing/selection/updateAppearanceAfterLayout-recursion-expected.txt: Added.
* editing/selection/updateAppearanceAfterLayout-recursion.html: Added.

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

2 years ago[Win] Update expectations for layout tests.
pvollan@apple.com [Sat, 17 Jun 2017 12:31:13 +0000 (12:31 +0000)]
[Win] Update expectations for layout tests.
https://bugs.webkit.org/show_bug.cgi?id=172437

Unreviewed test gardening, update test expectations for failing tests.

* platform/win/TestExpectations:

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

2 years agoArrayPrototype methods should use JSValue::toLength for non-Arrays.
keith_miller@apple.com [Sat, 17 Jun 2017 10:52:34 +0000 (10:52 +0000)]
ArrayPrototype methods should use JSValue::toLength for non-Arrays.
https://bugs.webkit.org/show_bug.cgi?id=173506

JSTests:

Reviewed by Ryosuke Niwa.

Re-baseline tests.

* ChakraCore/test/Function/apply3.baseline-jsc:
* test262.yaml:

Source/JavaScriptCore:

Reviewed by Ryosuke Niwa.

This patch changes the result of unshift if old length +
unshift.arguments.length > (2 ** 53) - 1 to be a type error. Also,
the getLength function, which was always incorrect to use, has
been removed. Additionally, some cases where we were using a
constant for (2 ** 53) - 1 have been replaced with
maxSafeInteger()

* interpreter/Interpreter.cpp:
(JSC::sizeOfVarargs):
* runtime/ArrayPrototype.cpp:
(JSC::arrayProtoFuncToLocaleString):
(JSC::arrayProtoFuncPop):
(JSC::arrayProtoFuncPush):
(JSC::arrayProtoFuncReverse):
(JSC::arrayProtoFuncShift):
(JSC::arrayProtoFuncSlice):
(JSC::arrayProtoFuncSplice):
(JSC::arrayProtoFuncUnShift):
(JSC::arrayProtoFuncIndexOf):
(JSC::arrayProtoFuncLastIndexOf):
* runtime/JSArrayInlines.h:
(JSC::getLength): Deleted.
* runtime/JSCJSValue.cpp:
(JSC::JSValue::toLength):
* runtime/NumberConstructor.cpp:
(JSC::numberConstructorFuncIsSafeInteger):

LayoutTests:

Unreviewed test gardening.

* TestExpectations:

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

2 years agoUnreviewed test gardening. Remove duplicate entries for tests.
pvollan@apple.com [Sat, 17 Jun 2017 07:54:42 +0000 (07:54 +0000)]
Unreviewed test gardening. Remove duplicate entries for tests.

* platform/win/TestExpectations:

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

2 years agoFix Mac CMake build.
achristensen@apple.com [Sat, 17 Jun 2017 07:47:16 +0000 (07:47 +0000)]
Fix Mac CMake build.

* PlatformMac.cmake:

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

2 years agoREGRESSION(r209495): materiauxlaverdure.com fails to load
rniwa@webkit.org [Sat, 17 Jun 2017 07:21:13 +0000 (07:21 +0000)]
REGRESSION(r209495): materiauxlaverdure.com fails to load
https://bugs.webkit.org/show_bug.cgi?id=173301
<rdar://problem/32624850>

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Rebaselined the tests that are now passing.

* web-platform-tests/cssom/CSSNamespaceRule-expected.txt:
* web-platform-tests/cssom/serialize-values-expected.txt:

Source/WebCore:

The bug was caused by WebKit wrapping CSS string values with single quotation marks instead of
double quotation marks as spec'ed in https://drafts.csswg.org/cssom/#serialize-a-string and
implemented in Firefox and Chrome.

The website eval's the computed value of the `content` CSS property with the value `'{name: "flat"}'`
after stripping single quotation marks from both ends. Prior to r209495, WebKit serialized this CSS value
in single quotations without escaping double quotations. After r209495, double quotations are escaped
with backslashes as `'{name: \"flat\"}'`. As a result, `eval` is invoked with `{name: \"flat\"}`
after stripping single quotations from both ends, which resulted in an exception.

Chrome and Firefox don't encounter this exception despite of the fact they escape double quotations
as well because serialize with double quotations as `"{name: \"flat\"}"`. Because there is no code
to strip double quotations, eval is invoked with the same string, resulting in the entire value as
being parsed as string, instead of an object with a single key "name" with the value of "flat" as
was the case in WebKit prior to r209495. While this behavior was most certainly not the intent of
the website author, Chrome and Firefox don't encounter an exception and the website continues to work.

This patch aligns WebKit's behavior to that of the CSS OM specification, Firefox, and Chrome by
serializing CSS string values using double quotation marks instead of single quotation marks.

Note: inline change log comments are added below for every call site of serializeString for clarity.

Test: fast/css/getPropertyValue-serialization-with-double-quotes.html

* css/CSSBasicShapes.cpp:
(WebCore::buildPathString): Use double quotation marks in path(~) of shapes.
* css/CSSMarkup.cpp:
(WebCore::serializeString):
(WebCore::serializeURL): Use double quotation marks to serialize URLs.
(WebCore::serializeAsStringOrCustomIdent): Use double quotation marks to serialize strings. We still avoid
using wrapping the value with double quotations when the value can be an identifier. See r209495.
(WebCore::serializeFontFamily): Ditto for font-family names such as "San Francisco".
* css/CSSMarkup.h:
* css/CSSNamespaceRule.cpp:
(WebCore::CSSNamespaceRule::cssText): Use double quotation marks to serialize namespace URIs.
* css/CSSPrimitiveValue.cpp:
(WebCore::CSSPrimitiveValue::formatNumberForCustomCSSText): Use double quotation marks to serialize
the separators; e.g. counter(sectionNumber, ".") to produce "1.".
* css/CSSSelector.cpp:
(WebCore::CSSSelector::selectorText): Use double quotation marks to serialize attribute values.
* css/parser/CSSParserToken.cpp:
(WebCore::CSSParserToken::serialize): Use double quotation marks to serialize strings in @support.
* editing/EditingStyle.cpp:
(WebCore::StyleChange::extractTextStyles): Updated to strip double quotation marks in font family names to
maintain the compatibility with old versions of Microsoft Outlook.
* html/HTMLElement.cpp:
(WebCore::HTMLElement::mapLanguageAttributeToLocale): Use double quotations marks to serialize the value
of the lang content attribute. It doesn't matter which one is used here because it's only a temporary value
only fed into the CSS parser to set the equivalent CSS value from the content attribute.

LayoutTests:

Rebaselined the existing tests and added a new regression test for serializing CSS properties and values.

* accessibility/mac/alt-for-css-content-expected.txt:
* accessibility/mac/webkit-alt-for-css-content-expected.txt:
* editing/pasteboard/cjk-line-height-expected.txt:
* fast/css/alt-inherit-initial-expected.txt:
* fast/css/alt-inherit-initial.html:
* fast/css/content-language-comma-separated-list-expected.txt:
* fast/css/content-language-empty-expected.txt:
* fast/css/content-language-only-whitespace-expected.txt:
* fast/css/content-language-with-whitespace-expected.txt:
* fast/css/counters/counter-cssText-expected.txt:
* fast/css/counters/counter-cssText.html:
* fast/css/font-family-trailing-bracket-gunk-expected.txt:
* fast/css/font-family-trailing-bracket-gunk.html:
* fast/css/getComputedStyle/computed-style-font-family-expected.txt:
* fast/css/getComputedStyle/computed-style-properties-expected.txt:
* fast/css/getComputedStyle/computed-style-properties.html:
* fast/css/getComputedStyle/font-family-fallback-reset-expected.txt:
* fast/css/getComputedStyle/font-family-fallback-reset.html:
* fast/css/lang-mapped-to-webkit-locale-expected.txt:
* fast/css/lang-mapped-to-webkit-locale.xhtml:
* fast/css/serialization-with-double-quotes-expected.txt: Added.
* fast/css/serialization-with-double-quotes.html: Added.
* fast/css/uri-token-parsing-expected.txt:
* fast/css/uri-token-parsing.html:
* fast/inspector-support/cssURLQuotes-expected.txt:
* fast/inspector-support/style-expected.txt:
* fast/text/font-stretch-parse-expected.txt:
* fast/text/font-stretch-parse.html:
* fast/text/font-style-parse-expected.txt:
* fast/text/font-style-parse.html:
* fast/text/font-weight-parse-expected.txt:
* fast/text/font-weight-parse.html:
* media/controls/track-menu.html:
* platform/mac-elcapitan/fast/css/getComputedStyle/computed-style-font-family-expected.txt:
* platform/mac-elcapitan/fast/text/font-stretch-parse-expected.txt:
* platform/mac-elcapitan/fast/text/font-style-parse-expected.txt:
* platform/mac-elcapitan/fast/text/font-weight-parse-expected.txt:

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

2 years ago[GTK] Rename WebContextMenuItemGtk as WebContextMenuItemGlib
carlosgc@webkit.org [Sat, 17 Jun 2017 07:21:03 +0000 (07:21 +0000)]
[GTK] Rename WebContextMenuItemGtk as WebContextMenuItemGlib
https://bugs.webkit.org/show_bug.cgi?id=173469

Reviewed by Michael Catanzaro.

Now that we switched to GAction this is actually a glib implementation, we keep the GtkAction support only for
backwards compatibility. We could rename the file and make the GtkAction action conditional to the GTK+ port.

* PlatformGTK.cmake:
* Shared/glib/WebContextMenuItemGlib.cpp: Renamed from Source/WebKit2/Shared/gtk/WebContextMenuItemGtk.cpp.
(WebKit::gtkStockIDFromContextMenuAction):
(WebKit::WebContextMenuItemGlib::WebContextMenuItemGlib):
(WebKit::WebContextMenuItemGlib::~WebContextMenuItemGlib):
(WebKit::WebContextMenuItemGlib::buildActionName):
(WebKit::WebContextMenuItemGlib::createActionIfNeeded):
* Shared/glib/WebContextMenuItemGlib.h: Renamed from Source/WebKit2/Shared/gtk/WebContextMenuItemGtk.h.
* UIProcess/API/gtk/WebKitContextMenu.cpp:
(webkitContextMenuPopulate):
* UIProcess/API/gtk/WebKitContextMenuActions.cpp:
(webkitContextMenuActionGetForContextMenuItem):
* UIProcess/API/gtk/WebKitContextMenuActionsPrivate.h:
* UIProcess/API/gtk/WebKitContextMenuItem.cpp:
(webkitContextMenuItemCreate):
(webkitContextMenuItemToWebContextMenuItemGlib):
(webkit_context_menu_item_new):
(webkit_context_menu_item_new_from_gaction):
(webkit_context_menu_item_new_from_stock_action):
(webkit_context_menu_item_new_from_stock_action_with_label):
(webkit_context_menu_item_new_with_submenu):
(webkit_context_menu_item_new_separator):
* UIProcess/API/gtk/WebKitContextMenuItemPrivate.h:
* UIProcess/API/gtk/WebKitContextMenuPrivate.h:
* UIProcess/API/gtk/WebKitWebView.cpp:
(webkitWebViewPopulateContextMenu):
* UIProcess/gtk/WebContextMenuProxyGtk.cpp:
(WebKit::WebContextMenuProxyGtk::append):
(WebKit::WebContextMenuProxyGtk::buildMenu):
(WebKit::WebContextMenuProxyGtk::populate):
* UIProcess/gtk/WebContextMenuProxyGtk.h:

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

2 years ago[Cocoa] Some declarations have missing or incorrect availability attributes
mitz@apple.com [Sat, 17 Jun 2017 06:28:09 +0000 (06:28 +0000)]
[Cocoa] Some declarations have missing or incorrect availability attributes
https://bugs.webkit.org/show_bug.cgi?id=173508

Reviewed by Tim Horton.

Source/WebKit2:

* UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h: Removed a redundant attribute.

In all of the below files, added missing availability attributes for declarations that have
not appeared yet in any GM SDK, and fixed availability attributes for declarations that
have already appeared in the macOS 10.12.3 and iOS 10.3 SDKs.

* UIProcess/API/Cocoa/WKBackForwardListItemPrivate.h:
* UIProcess/API/Cocoa/WKHTTPCookieStore.h:
* UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
* UIProcess/API/Cocoa/WKPreferences.h: Also fixed capitalization in a comment.
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h: Also removed unnecessary conditionals.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _draggableElementAtPosition:]): Prepended an underscore to this private method’s name.
(-[WKWebView _requestDraggableElementAtPosition:completionBlock:]): Ditto.
* UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
* UIProcess/API/Cocoa/WKWebViewPrivate.h: Also updated for renames.
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
* UIProcess/API/Cocoa/_WKActivatedElementInfo.h:
* UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h:
* UIProcess/API/Cocoa/_WKDiagnosticLoggingDelegate.h:
* UIProcess/API/Cocoa/_WKGeolocationCoreLocationProvider.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.h:
* UIProcess/API/Cocoa/_WKUserContentExtensionStorePrivate.h:
* UIProcess/API/Cocoa/_WKUserContentFilterPrivate.h:
* UIProcess/API/Cocoa/_WKWebsitePolicies.h:
* UIProcess/_WKWebViewPrintFormatter.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInEditingDelegate.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandle.h:

Tools:

* TestWebKitAPI/Tests/ios/PositionInformationTests.mm:
(TestWebKitAPI::TEST): Updated for renames.

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

2 years ago[Win] Update expectations for layout tests.
pvollan@apple.com [Sat, 17 Jun 2017 06:07:14 +0000 (06:07 +0000)]
[Win] Update expectations for layout tests.
https://bugs.webkit.org/show_bug.cgi?id=172437

Unreviewed test gardening, update test expectations for failing tests.

* platform/win/TestExpectations:

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

2 years agoUnreviewed test gardening. Update test expectations for failing tests.
pvollan@apple.com [Sat, 17 Jun 2017 05:47:08 +0000 (05:47 +0000)]
Unreviewed test gardening. Update test expectations for failing tests.

* platform/win/TestExpectations:

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

2 years ago[WebRTC] CrashTracer: Regression : com.apple.WebKit.Networking at WebKit: WebKit...
commit-queue@webkit.org [Sat, 17 Jun 2017 03:42:34 +0000 (03:42 +0000)]
[WebRTC] CrashTracer: Regression : com.apple.WebKit.Networking at WebKit: WebKit::LibWebRTCSocketClient::sendTo
https://bugs.webkit.org/show_bug.cgi?id=173501

Patch by Youenn Fablet <youenn@apple.com> on 2017-06-16
Reviewed by Eric Carlson.

When a libwebrtc socket fails to be created in the network process,
the network process sends back a close message, but it keeps it in a map.
If the web process sends a message dedicated to this socket, we will try
processing it and calling the socket which is null, hence the cache.
This patch makes it so that if the socket is null, it is not added to the map.

* NetworkProcess/webrtc/LibWebRTCSocketClient.cpp:
(WebKit::LibWebRTCSocketClient::LibWebRTCSocketClient):
* NetworkProcess/webrtc/NetworkRTCProvider.cpp:
(WebKit::NetworkRTCProvider::createSocket):
(WebKit::NetworkRTCProvider::createUDPSocket):
(WebKit::NetworkRTCProvider::createServerTCPSocket):
(WebKit::NetworkRTCProvider::createClientTCPSocket):
* NetworkProcess/webrtc/NetworkRTCProvider.h:

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

2 years agoWeb Inspector: Instrument 2D/WebGL canvas contexts in the backend
mattbaker@apple.com [Sat, 17 Jun 2017 02:58:24 +0000 (02:58 +0000)]
Web Inspector: Instrument 2D/WebGL canvas contexts in the backend
https://bugs.webkit.org/show_bug.cgi?id=172623
<rdar://problem/32415986>

Reviewed by Devin Rousso and Joseph Pecoraro.

Source/JavaScriptCore:

This patch adds a basic Canvas protocol. It includes Canvas and related
types and events for monitoring the lifetime of canvases in the page.

* CMakeLists.txt:
* DerivedSources.make:
* inspector/protocol/Canvas.json: Added.

* inspector/scripts/codegen/generator.py:
(Generator.stylized_name_for_enum_value):
Add special handling for Canvas.ContextType protocol enumeration,
so that "canvas-2d" and "webgl" map to `Canvas2D` and `WebGL`.

Source/WebCore:

Test: inspector/canvas/create-canvas-contexts.html

* CMakeLists.txt:
* WebCore.xcodeproj/project.pbxproj:

* dom/Document.cpp:
(WebCore::Document::getCSSCanvasElement):
Instrument creation of CSS canvases. This merely registers the canvas
element with InspectorCanvasAgent and stores the name (identifier passed
to getCSSCanvasContext) for later use. It isn't until the context is
actually created that the frontend receives a notification.

* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::getContext2d):
(WebCore::HTMLCanvasElement::getContextWebGL):
Instrument creation of 2D and WebGL canvas contexts.

* inspector/InspectorAllInOne.cpp:

* inspector/InspectorCanvasAgent.cpp: Added.
New backend agent for canvas inspection. Canvas creation and destruction
are continuously monitored by the agent, regardless of the presence of
a frontend. This is necessary since there is no way to retrieve the
rendering contexts for with a given frame once they've been created.

(WebCore::InspectorCanvasAgent::InspectorCanvasAgent):
(WebCore::InspectorCanvasAgent::didCreateFrontendAndBackend):
(WebCore::InspectorCanvasAgent::willDestroyFrontendAndBackend):
(WebCore::InspectorCanvasAgent::discardAgent):
Unregister canvas observers to prevent dangling agent pointer.
(WebCore::InspectorCanvasAgent::enable):
Dispatch events for existing canvases, now that the frontend exists.
(WebCore::InspectorCanvasAgent::disable):
(WebCore::InspectorCanvasAgent::frameNavigated):
(WebCore::InspectorCanvasAgent::didCreateCSSCanvas):
Register the name/identifier associated with the CSS canvas, so that it
can be retrieved and associated with the rendering context later.

(WebCore::InspectorCanvasAgent::didCreateCanvasRenderingContext):
(WebCore::InspectorCanvasAgent::canvasDestroyed):
Removes the canvas from the agent, and queues it for notifying the
frontend during the next event loop.

(WebCore::InspectorCanvasAgent::canvasDestroyedTimerFired):
(WebCore::InspectorCanvasAgent::clearCanvasData):
(WebCore::InspectorCanvasAgent::getCanvasEntry):
(WebCore::InspectorCanvasAgent::buildObjectForCanvas):
* inspector/InspectorCanvasAgent.h: Added.

* inspector/InspectorController.cpp:
(WebCore::InspectorController::InspectorController):

* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::didCommitLoadImpl):
(WebCore::InspectorInstrumentation::didCreateCSSCanvasImpl):
(WebCore::InspectorInstrumentation::didCreateCanvasRenderingContextImpl):

* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::didCreateCSSCanvas):
(WebCore::InspectorInstrumentation::didCreateCanvasRenderingContext):
These instrumentation points should not fast return when no frontend
is attached.

* inspector/InstrumentingAgents.cpp:
(WebCore::InstrumentingAgents::reset):

* inspector/InstrumentingAgents.h:
(WebCore::InstrumentingAgents::inspectorCanvasAgent):
(WebCore::InstrumentingAgents::setInspectorCanvasAgent):
Plumbing for the new agent.

Source/WebInspectorUI:

* UserInterface/Base/Main.js:
(WebInspector.loaded):

* UserInterface/Controllers/CanvasManager.js: Added.
New frontend manager for the Canvas domain.
(WebInspector.CanvasManager):
(WebInspector.CanvasManager.prototype.get canvases):
(WebInspector.CanvasManager.prototype.canvasAdded):
(WebInspector.CanvasManager.prototype.canvasRemoved):
(WebInspector.CanvasManager.prototype._mainResourceDidChange):

* UserInterface/Main.html:
New files.

* UserInterface/Models/Canvas.js: Added.
(WebInspector.Canvas):
(WebInspector.Canvas.fromPayload):
(WebInspector.Canvas.displayNameForContextType):
Get displayable text "2D" or "WebGL" based on context type.
(WebInspector.Canvas.resetUniqueDisplayNameNumbers):
Called by CanvasManager when canvases are cleared.
(WebInspector.Canvas.prototype.get identifier):
(WebInspector.Canvas.prototype.get contextType):
(WebInspector.Canvas.prototype.get frame):
(WebInspector.Canvas.prototype.get cssCanvasName):
For CSS canvases, the identifier passed to getCSSCanvasContext.
(WebInspector.Canvas.prototype.get displayName):
Get displayable canvas name. The name depends on how the canvas was
created, and the information available:
  - getCSSCanvasContext: "CSS Canvas <identifier>"
  - getContext: "Canvas #<DOM id attribute value>"
  - Otherwise: "Canvas 1", "Canvas 2", ...

(WebInspector.Canvas.saveIdentityToCookie):

* UserInterface/Protocol/CanvasObserver.js: Added.
(WebInspector.CanvasObserver.prototype.canvasAdded):
(WebInspector.CanvasObserver.prototype.canvasRemoved):
(WebInspector.CanvasObserver):

* UserInterface/Test.html:
* UserInterface/Test/Test.js:
(WebInspector.loaded):

LayoutTests:

Test that CanvasAgent dispatches events for canvas lifecycle events.

* inspector/canvas/create-canvas-contexts-expected.txt: Added.
* inspector/canvas/create-canvas-contexts.html: Added.

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

2 years agoAdd a WebKit2 setting to control whether media documents should automatically enter...
commit-queue@webkit.org [Sat, 17 Jun 2017 02:39:20 +0000 (02:39 +0000)]
Add a WebKit2 setting to control whether media documents should automatically enter fullscreen
https://bugs.webkit.org/show_bug.cgi?id=173503

Patch by Antoine Quint <graouts@apple.com> on 2017-06-16
Reviewed by Tim Horton.

Source/WebCore:

New WebCore setting to specify whether a media document should automatically enter fullscreen.

* page/Settings.in:

Source/WebKit2:

New WebKit2 setting to specify whether a media document should automatically enter fullscreen.

* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _setMediaDocumentEntersFullscreenAutomatically:]):
(-[WKPreferences _mediaDocumentEntersFullscreenAutomatically]):
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):

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