Timeline



Jun 19, 2017:

11:48 PM Changeset in webkit [218544] by Devin Rousso
  • 24 edits
    9 adds in trunk

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.
11:45 PM Changeset in webkit [218543] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.16

Merge r217521 - enclosingIntRect returns a rect with -1 width/height when the input FloatRect overflows integer.
https://bugs.webkit.org/show_bug.cgi?id=172676

Reviewed by Simon Fraser.

Source/WebCore:

Clamp integer values soon after the enclosing rectangle is resolved.

  • platform/graphics/FloatRect.cpp:

(WebCore::enclosingIntRect):

Tools:

  • TestWebKitAPI/Tests/WebCore/FloatRect.cpp:

(TestWebKitAPI::TEST):

11:41 PM Changeset in webkit [218542] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.16/Source/WebCore

Merge r217494 - Minor clean-up related to DocumentThreadableLoader redirections
https://bugs.webkit.org/show_bug.cgi?id=172647

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

No change of behavior.

Decrementing m_options redirect count directly instead of using an
additional counter.

To compare whether two URLs are same-origin, use scheme+host+port check
as per the spec.
This is fine as only the initial origin may have specific rules and we
are using the scheme+host+port checks when already being gone to
another origin.

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::redirectReceived):

  • loader/DocumentThreadableLoader.h:
  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::checkRedirectionCrossOriginAccessControl):

11:37 PM Changeset in webkit [218541] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.16

Merge r217473 - imported/w3c/web-platform-tests/html/semantics/forms/form-control-infrastructure/form_owner_and_table_2.html is crashing
https://bugs.webkit.org/show_bug.cgi?id=172628
<rdar://problem/32418707>

Reviewed by Sam Weinig.

Source/WebCore:

In the event where a form is removed synchronously by a script during parsing,
FormAssociatedElement::m_formSetByParser may end up referring to a form that
is no longer in the document. As a result, we should make sure m_formSetByParser
is still connected in FormAssociatedElement::insertedInto() before we call
FormAssociatedElement::setForm(m_formSetByParser).

Test: fast/dom/HTMLFormElement/form-removed-during-parsing-crash.html

  • html/FormAssociatedElement.cpp:

(WebCore::FormAssociatedElement::insertedInto):

LayoutTests:

Add reduced test case.

Unskip test that is no longer crashing in debug builds.

  • fast/dom/HTMLFormElement/form-removed-during-parsing-crash-expected.txt: Added.
  • fast/dom/HTMLFormElement/form-removed-during-parsing-crash.html: Added.
11:35 PM Changeset in webkit [218540] by Carlos Garcia Campos
  • 3 edits
    7 adds in releases/WebKitGTK/webkit-2.16

Merge r217472 - Frame's composited content is visible when the frame has visibility: hidden.
https://bugs.webkit.org/show_bug.cgi?id=125565
<rdar://problem/32196849>

Reviewed by Simon Fraser.

Source/WebCore:

Do not construct composited layers for hidden RenderWidgets (frameset, iframe, object).
Note that we still construct layers for the associated renderers as usual.

Tests: compositing/visibility/frameset-visibility-hidden.html

compositing/visibility/iframe-visibility-hidden.html
compositing/visibility/object-visibility-hidden.html

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::requiresCompositingForPlugin):
(WebCore::RenderLayerCompositor::requiresCompositingForFrame):

LayoutTests:

  • compositing/resources/visibility.html: Added.
  • compositing/visibility/frameset-visibility-hidden-expected.html: Added.
  • compositing/visibility/frameset-visibility-hidden.html: Added.
  • compositing/visibility/iframe-visibility-hidden-expected.html: Added.
  • compositing/visibility/iframe-visibility-hidden.html: Added.
  • compositing/visibility/object-visibility-hidden-expected.html: Added.
  • compositing/visibility/object-visibility-hidden.html: Added.
11:31 PM Changeset in webkit [218539] by Carlos Garcia Campos
  • 4 edits
    2 adds in releases/WebKitGTK/webkit-2.16

Merge r217445 - DocumentThreadableLoader::redirectReceived() should not rely on the resource's loader
https://bugs.webkit.org/show_bug.cgi?id=172578
<rdar://problem/30754582>

Reviewed by Youenn Fablet.

Source/WebCore:

DocumentThreadableLoader::redirectReceived() should not rely on the resource's loader. The rest of the methods do not.
It is unsafe for it to rely on the resource's loader because it gets cleared when the load completes. A CachedRawresource
may be reused from the memory cache once its load has completed.

This would cause crashes in CachedRawResource::didAddClient() when replaying the redirects because it would call
DocumentThreadableLoader::redirectReceived() and potentially not have a loader anymore. To hit this exact code path,
you would need to make repeated XHR to a cacheable simple cross-origin resource that has cacheable redirect.

Test: http/tests/xmlhttprequest/cacheable-cross-origin-redirect-crash.html

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::redirectReceived):

  • loader/DocumentThreadableLoader.h:

LayoutTests:

Add layout test coverage.

  • http/tests/xmlhttprequest/cacheable-cross-origin-redirect-crash-expected.txt: Added.
  • http/tests/xmlhttprequest/cacheable-cross-origin-redirect-crash.html: Added.
11:24 PM Changeset in webkit [218538] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.16/Source/WebCore
Merge r217441 - ASSERTION FAILED: !needsStyleRecalc()
!document().childNeedsStyleRecalc()

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

Reviewed by Brent Fulgham.

Ensure that we clean the subframe's document before start searching for a focusable element.

Covered by existing test.

  • page/FocusController.cpp:

(WebCore::FocusController::findFocusableElementDescendingDownIntoFrameDocument):

11:23 PM Changeset in webkit [218537] by Carlos Garcia Campos
  • 3 edits
    3 adds in releases/WebKitGTK/webkit-2.16

Merge r217439 - Crash on WebCore::FrameSelection::setSelectionWithoutUpdatingAppearance + 1195
https://bugs.webkit.org/show_bug.cgi?id=172555
<rdar://problem/32004724>

Reviewed by Ryosuke Niwa.

Source/WebCore:

setSelectionWithoutUpdatingAppearance could dispatch a synchronous focusin event,
which could invoke an event handler that deteles the frame. Therefore, add a
protector before the call.

Test: editing/selection/select-iframe-focusin-document-crash.html

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::setSelection):

LayoutTests:

  • editing/selection/resources/select-iframe-focusin-document-crash-frame.html: Added.
  • editing/selection/select-iframe-focusin-document-crash-expected.txt: Added.
  • editing/selection/select-iframe-focusin-document-crash.html: Added.
11:14 PM Changeset in webkit [218536] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.16/Source/WebCore

Merge r217286 - ASSERTION FAILED: !renderer().view().needsLayout() while running media/video-main-content-autoplay.html
https://bugs.webkit.org/show_bug.cgi?id=172476

Reviewed by Simon Fraser.

This patch decouples the layout call logic from the post layout task timer setup.
Just because we are switching over to asynchronous performPostLayoutTasks() it should not stop us from
running layout on a dirty tree (we could encounter a forced layout (which sets m_postLayoutTasksTimer active)
and a subsequent tree mutation during performPostLayoutTasks()).

There are a few different ways to end up here:
root layout is done -> call performPostLayoutTasks() synchronously ->

  1. tree stays clean -> no action needed.
  2. tree gets dirty -> setup performPostLayoutTasks timer -> run nested layout -> since m_postLayoutTasksTimer is active()

we don't try to run performPostLayoutTasks() while in the nested layout and we return with a clean tree.

  • page/FrameView.cpp:

(WebCore::FrameView::layout):

11:06 PM Changeset in webkit [218535] by fred.wang@free.fr
  • 5 edits
    1 copy
    3 adds
    1 delete in trunk

[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.

11:04 PM Changeset in webkit [218534] by fred.wang@free.fr
  • 22 edits in trunk

[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.
11:00 PM Changeset in webkit [218533] by zandobersek@gmail.com
  • 2 edits
    2 adds in trunk/LayoutTests

[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.
10:19 PM Changeset in webkit [218532] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

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):

9:20 PM Changeset in webkit [218531] by Darin Adler
  • 1 edit in trunk/Source/WebKit2/ChangeLog

fixed change log

9:18 PM Changeset in webkit [218530] by Darin Adler
  • 17 edits
    2 deletes in trunk/Source

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.

8:25 PM Changeset in webkit [218529] by weinig@apple.com
  • 10 edits
    3 adds in trunk/Source/WebCore

[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.

8:17 PM Changeset in webkit [218528] by Chris Dumez
  • 3 edits in trunk/Source/WebKit2

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:
8:14 PM Changeset in webkit [218527] by Yusuke Suzuki
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, build fix for ARM

  • assembler/MacroAssemblerARM.h:

(JSC::MacroAssemblerARM::internalCompare32):

7:59 PM Changeset in webkit [218526] by Yusuke Suzuki
  • 2 edits in trunk/Source/WTF

[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:
7:46 PM Changeset in webkit [218525] by Yusuke Suzuki
  • 6 edits
    5 adds in trunk

[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.

  1. 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):

7:28 PM Changeset in webkit [218524] by mmaxfield@apple.com
  • 5 edits
    2 adds in trunk

[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.
6:47 PM Changeset in webkit [218523] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[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):

6:23 PM Changeset in webkit [218522] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

Unreviewed, partial rollout of r218501 to address crashes on iOS.

  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::tryAppLink):

6:17 PM Changeset in webkit [218521] by Devin Rousso
  • 7 edits in trunk/Source/WebInspectorUI

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.

6:04 PM Changeset in webkit [218520] by guijemont@igalia.com
  • 2 edits in trunk/Tools

Unreviewed, adding myself to contributors.json

  • Scripts/webkitpy/common/config/contributors.json:
5:50 PM Changeset in webkit [218519] by Caio Lima
  • 2 edits in trunk/Source/JavaScriptCore

[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):

4:53 PM Changeset in webkit [218518] by commit-queue@webkit.org
  • 8 edits in trunk/LayoutTests

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.
4:51 PM Changeset in webkit [218517] by Darin Adler
  • 17 edits
    3 adds
    1 delete in trunk

[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.
4:19 PM Changeset in webkit [218516] by beidson@apple.com
  • 3 edits in trunk/Source/WebCore

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:
4:08 PM Changeset in webkit [218515] by jmarcell@apple.com
  • 5 edits in branches/safari-603-branch/Source

Versioning.

3:47 PM Changeset in webkit [218514] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Adjusted test ecpectaions for webrtc/libwebrtc/descriptionGetters.html.
https://bugs.webkit.org/show_bug.cgi?id=171703

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
3:25 PM Changeset in webkit [218513] by jmarcell@apple.com
  • 1 copy in tags/Safari-603.3.6

Tag Safari-603.3.6.

3:04 PM Changeset in webkit [218512] by commit-queue@webkit.org
  • 20 edits
    1 add in trunk

test262: Completion values for control flow do not match the spec
https://bugs.webkit.org/show_bug.cgi?id=171265

Patch by Joseph Pecoraro <Joseph Pecoraro> 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.

2:55 PM Changeset in webkit [218511] by commit-queue@webkit.org
  • 7 edits
    1 copy
    4 adds in trunk

[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.

2:27 PM Changeset in webkit [218510] by commit-queue@webkit.org
  • 16 edits
    1 delete in trunk

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

2:22 PM Changeset in webkit [218509] by Alan Bujtas
  • 4 edits in trunk

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):

2:12 PM Changeset in webkit [218508] by Wenson Hsieh
  • 10 edits
    1 add in trunk

[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):

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

[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.

1:54 PM Changeset in webkit [218506] by Ryan Haddad
  • 5 edits in trunk/Source/WebKit2

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

1:42 PM Changeset in webkit [218505] by commit-queue@webkit.org
  • 16 edits
    3 adds in trunk

[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:
1:25 PM Changeset in webkit [218504] by Wenson Hsieh
  • 4 edits in trunk/Source/WebKit2

[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]):

1:14 PM Changeset in webkit [218503] by Konstantin Tokarev
  • 5 edits in trunk/Source/WebKit2

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):

1:12 PM Changeset in webkit [218502] by beidson@apple.com
  • 2 edits in trunk/Source/WebCore

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.

12:53 PM Changeset in webkit [218501] by Chris Dumez
  • 77 edits in trunk/Source

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:
11:41 AM Changeset in webkit [218500] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

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:
11:21 AM Changeset in webkit [218499] by Chris Dumez
  • 3 edits in trunk/Source/WebKit2

[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:
10:44 AM Changeset in webkit [218498] by Chris Dumez
  • 12 edits in trunk/Source/WebCore

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:
10:12 AM Changeset in webkit [218497] by commit-queue@webkit.org
  • 37 edits
    3 adds in trunk

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:
10:01 AM Changeset in webkit [218496] by Darin Adler
  • 11 edits in trunk

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.

9:47 AM Changeset in webkit [218495] by commit-queue@webkit.org
  • 34 edits in trunk

[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.

9:34 AM Changeset in webkit [218494] by pvollan@apple.com
  • 2 edits in trunk/Tools

[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):

8:50 AM Changeset in webkit [218493] by Claudio Saavedra
  • 2 edits in trunk/LayoutTests

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:
6:22 AM Changeset in webkit [218492] by zandobersek@gmail.com
  • 2 edits in trunk/LayoutTests

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:
6:09 AM Changeset in webkit [218491] by clopez@igalia.com
  • 2 edits in trunk/Tools

[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:
6:01 AM Changeset in webkit [218490] by clopez@igalia.com
  • 1 edit
    1 move in trunk/Tools

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.
5:54 AM Changeset in webkit [218489] by Carlos Garcia Campos
  • 2 edits in trunk/Tools

Unreviewed. Fix wrong style checker condition added in r218487.

  • Scripts/webkitpy/style/checkers/cpp.py:

(check_identifier_name_in_declaration):

5:51 AM Changeset in webkit [218488] by Adrian Perez de Castro
  • 14 edits in trunk

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:
5:45 AM Changeset in webkit [218487] by Carlos Garcia Campos
  • 8 edits
    126 moves
    3 adds in trunk

[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):

5:44 AM Changeset in webkit [218486] by Claudio Saavedra
  • 3 edits in trunk/LayoutTests

[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:
5:03 AM Changeset in webkit [218485] by zandobersek@gmail.com
  • 4 edits in trunk/Source/WebCore

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.

4:56 AM Changeset in webkit [218484] by zandobersek@gmail.com
  • 6 edits in trunk

[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.
4:39 AM Changeset in webkit [218483] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[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 <Fujii Hironori> 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.

3:39 AM Changeset in webkit [218482] by clopez@igalia.com
  • 9 edits
    2 adds in trunk/Tools

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):

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

[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:
12:41 AM Changeset in webkit [218480] by commit-queue@webkit.org
  • 65 edits
    2 adds in trunk

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".
12:21 AM Changeset in webkit [218479] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.17.4

WebKitGTK+ 2.17.4

Jun 18, 2017:

11:37 PM Changeset in webkit [218478] by Carlos Garcia Campos
  • 4 edits in trunk

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.
10:40 PM Changeset in webkit [218477] by bshafiei@apple.com
  • 8 edits in branches/safari-603-branch/Source/WebCore

Roll out r210226 via r217676. rdar://problem/32842498

10:39 PM Changeset in webkit [218476] by bshafiei@apple.com
  • 7 edits in branches/safari-603-branch

Roll out r211501 via r217677. rdar://problem/32842498

10:36 PM Changeset in webkit [218475] by bshafiei@apple.com
  • 39 edits
    1 delete in branches/safari-603-branch

Roll out r212173 via r217678. rdar://problem/32842498

10:32 PM Changeset in webkit [218474] by bshafiei@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebCore

Roll out r212174 via r217679. rdar://problem/32842498

10:26 PM Changeset in webkit [218473] by bshafiei@apple.com
  • 6 edits
    8 deletes in branches/safari-603-branch/LayoutTests

Roll out r216126 via r217788. rdar://problem/32842615

10:22 PM Changeset in webkit [218472] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

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.

10:12 PM Changeset in webkit [218471] by Carlos Garcia Campos
  • 9 edits in trunk/Source/WebCore

[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):

9:53 PM Changeset in webkit [218470] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

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):

9:19 PM Changeset in webkit [218469] by bshafiei@apple.com
  • 5 edits in branches/safari-603-branch/Source

Versioning.

9:00 PM Changeset in webkit [218468] by rniwa@webkit.org
  • 3 edits
    2 adds in trunk

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.
8:12 PM Changeset in webkit [218467] by Dewei Zhu
  • 2 edits in trunk/Source/WebCore

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.

6:59 PM Changeset in webkit [218466] by Chris Dumez
  • 3 edits in trunk/Source/WebKit2

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:
1:25 PM Changeset in webkit [218465] by Chris Dumez
  • 7 edits
    4 adds in trunk

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.
12:49 PM Changeset in webkit [218464] by Chris Dumez
  • 19 edits in trunk/Source

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:
8:55 AM Changeset in webkit [218463] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebCore

[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):

Jun 17, 2017:

8:57 PM Changeset in webkit [218462] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

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):

6:36 PM Changeset in webkit [218461] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

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:
5:10 PM Changeset in webkit [218460] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

Unreviewed, follow-up build fix after r218457.

  • UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:

(WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):

4:55 PM Changeset in webkit [218459] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

Unreviewed, follow-up build fix after r218457.

  • UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:

(WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):

3:34 PM Changeset in webkit [218458] by Simon Fraser
  • 12 edits
    6 adds in trunk

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:
1:55 PM Changeset in webkit [218457] by Chris Dumez
  • 103 edits in trunk/Source

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:
1:37 PM Changeset in webkit [218456] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

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):

1:03 PM Changeset in webkit [218455] by achristensen@apple.com
  • 8 edits in trunk/Source

Fix CMake build

Source/WebCore:

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

Source/WebKit2:

  • CMakeLists.txt:
  • NetworkProcess/capture/NetworkCaptureEvent.cpp:
  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
12:50 PM Changeset in webkit [218454] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

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

8:49 AM Changeset in webkit [218453] by mitz@apple.com
  • 2 edits in trunk/Source/WebKit2

Tried to fix non-iOS builds.

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
7:13 AM Changeset in webkit [218452] by keith_miller@apple.com
  • 4 edits in trunk

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):

6:02 AM Changeset in webkit [218451] by Antti Koivisto
  • 5 edits
    2 adds in trunk

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.
5:31 AM Changeset in webkit [218450] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

[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:
3:52 AM Changeset in webkit [218449] by keith_miller@apple.com
  • 11 edits in trunk

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.

12:54 AM Changeset in webkit [218448] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening. Remove duplicate entries for tests.

  • platform/win/TestExpectations:
12:47 AM Changeset in webkit [218447] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix Mac CMake build.

  • PlatformMac.cmake:
12:21 AM Changeset in webkit [218446] by rniwa@webkit.org
  • 44 edits
    2 adds in trunk

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:
12:21 AM Changeset in webkit [218445] by Carlos Garcia Campos
  • 11 edits
    2 moves in trunk/Source/WebKit2

[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:

Jun 16, 2017:

11:28 PM Changeset in webkit [218444] by mitz@apple.com
  • 28 edits in trunk

[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.

11:07 PM Changeset in webkit [218443] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

[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:
10:47 PM Changeset in webkit [218442] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening. Update test expectations for failing tests.

  • platform/win/TestExpectations:
8:42 PM Changeset in webkit [218441] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebKit2

[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:
7:58 PM Changeset in webkit [218440] by Matt Baker
  • 21 edits
    9 adds in trunk

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.
7:39 PM Changeset in webkit [218439] by commit-queue@webkit.org
  • 7 edits in trunk/Source

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 <Antoine Quint> 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):

7:20 PM Changeset in webkit [218438] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

[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.

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

(WebCore::SourceBufferPrivateAVFObjC::isReadyForMoreSamples):

6:19 PM Changeset in webkit [218437] by weinig@apple.com
  • 38 edits
    4 deletes in trunk

[WebIDL] Remove custom bindings for HTMLDocument
https://bugs.webkit.org/show_bug.cgi?id=173444

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/html/dom/dynamic-markup-insertion/closing-the-input-stream/document.close-01-expected.txt:
  • web-platform-tests/html/dom/dynamic-markup-insertion/document-write/document.write-01-expected.txt:
  • web-platform-tests/html/dom/dynamic-markup-insertion/document-writeln/document.writeln-01-expected.txt:
  • web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/document.open-01-expected.txt:
  • web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/document.open-02-expected.txt:

Update now passing results.

Source/WebCore:

  • bindings/js/JSDOMBindingSecurity.cpp:

(WebCore::canAccessDocument):
(WebCore::BindingSecurity::shouldAllowAccessToFrame):
(WebCore::BindingSecurity::shouldAllowAccessToDOMWindow):

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::showModalDialog):
Pass ExecState by reference to window accessors.

  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::incumbentDOMWindow):
(WebCore::activeDOMWindow):
(WebCore::firstDOMWindow):
(WebCore::callerDocument):

  • bindings/js/JSDOMWindowBase.h:

Pass ExecState by reference to window accessors and add callerDocument.

  • bindings/js/JSHTMLDocumentCustom.cpp:

(WebCore::JSHTMLDocument::getOwnPropertySlot): Deleted.
(WebCore::JSHTMLDocument::all): Deleted.
(WebCore::JSHTMLDocument::setAll): Deleted.
(WebCore::findCallingDocument): Deleted.
(WebCore::JSHTMLDocument::open): Deleted.
(WebCore::documentWrite): Deleted.
(WebCore::JSHTMLDocument::write): Deleted.
Remove custom bindings.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateCallWith):
Add support CallWith=CallerDocument

  • bindings/scripts/IDLAttributes.json:

Remove CallerWindow, which has not been supported for a while. CallerDocument, despite
having it's support removed in the past, was still listed, so keep it.

  • bindings/scripts/test/JS/JSTestObj.cpp:

Update test results.

  • dom/DOMImplementation.cpp:

(WebCore::DOMImplementation::createHTMLDocument):
Update for new signature of Document.write().

  • dom/Document.h:
  • dom/Document.idl:
  • dom/Document.cpp:

(WebCore::Document::open):
Add DOMWindow returning overload that calls through to the DOMWindow.
Add return value and currently not utilized parameters to the Document returning overload.
Update to return exceptions as specified.

(WebCore::Document::close):
Update to return exceptions as specified.

(WebCore::Document::write):
(WebCore::Document::writeln):
Update to take a Vector<String> argument and the caller Document first
as per convention and return exceptions as specified.

(WebCore::Document::bgColor):
(WebCore::Document::setBgColor):
(WebCore::Document::fgColor):
(WebCore::Document::setFgColor):
(WebCore::Document::alinkColor):
(WebCore::Document::setAlinkColor):
(WebCore::Document::linkColorForBindings):
(WebCore::Document::setLinkColorForBindings):
(WebCore::Document::vlinkColor):
(WebCore::Document::setVlinkColor):
(WebCore::Document::clear):
(WebCore::Document::captureEvents):
(WebCore::Document::releaseEvents):
Move from HTMLDocument.

  • html/HTMLDocument.cpp:

(WebCore::HTMLDocument::bgColor): Deleted.
(WebCore::HTMLDocument::setBgColor): Deleted.
(WebCore::HTMLDocument::fgColor): Deleted.
(WebCore::HTMLDocument::setFgColor): Deleted.
(WebCore::HTMLDocument::alinkColor): Deleted.
(WebCore::HTMLDocument::setAlinkColor): Deleted.
(WebCore::HTMLDocument::linkColor): Deleted.
(WebCore::HTMLDocument::setLinkColor): Deleted.
(WebCore::HTMLDocument::vlinkColor): Deleted.
(WebCore::HTMLDocument::setVlinkColor): Deleted.
(WebCore::HTMLDocument::clear): Deleted.
(WebCore::HTMLDocument::captureEvents): Deleted.
(WebCore::HTMLDocument::releaseEvents): Deleted.

  • html/HTMLDocument.h:
  • html/HTMLDocument.idl:

Moved operations and attributes to Document.

  • inspector/DOMPatchSupport.cpp:

(WebCore::DOMPatchSupport::patchDocument):
Update for new signature of Document.write().

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::postMessage):
(WebCore::DOMWindow::focus):

  • page/DOMWindow.h:

Use the term incumbentWindow, matching IDL, and so not to be confused
with the callerWindow, which is slightly different.

Source/WebKit/mac:

  • DOM/DOMHTMLDocument.mm:

(-[DOMHTMLDocument linkColor]):
(-[DOMHTMLDocument setLinkColor:]):
(-[DOMHTMLDocument write:]):
(-[DOMHTMLDocument writeln:]):
Update for new signature of write/writeln and rename of linkColor to linkColorForBindings.

Source/WebKit/win:

  • DOMHTMLClasses.cpp:

(DOMHTMLDocument::write):
(DOMHTMLDocument::writeln):
Update for new signature of write/writeln.

Source/WebKit2:

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDocument.cpp:

(webkit_dom_html_document_get_link_color):
(webkit_dom_html_document_set_link_color):
Update for rename of linkColor to linkColorForBindings.

LayoutTests:

  • dom/xhtml/level2/html/HTMLDocument17-expected.txt:
  • dom/xhtml/level2/html/HTMLDocument18-expected.txt:
  • dom/xhtml/level2/html/HTMLDocument19-expected.txt:
  • dom/xhtml/level2/html/HTMLDocument20-expected.txt:
  • dom/xhtml/level2/html/HTMLDocument21-expected.txt:

Update test results for correct exception being thrown.

  • fast/dom/frame-deleted-in-document-open-expected.txt: Removed.
  • fast/dom/frame-deleted-in-document-open.html: Removed.
  • http/tests/security/isolatedWorld/document-open-expected.txt: Removed.
  • http/tests/security/isolatedWorld/document-open.html: Removed.

Remove two tests that were testing the behavior of document.open using javascript
to call the window.open operation. This is not how it is specified and no
longer how it is implemented.

6:10 PM Changeset in webkit [218436] by achristensen@apple.com
  • 4 edits in trunk

Fix Mac CMake build.

.:

  • Source/cmake/WebKitFS.cmake:

Add new DerivedSources/WTF directory.

Source/WTF:

  • wtf/PlatformMac.cmake:

Generate MachExceptionsServer.h

5:55 PM Changeset in webkit [218435] by dbates@webkit.org
  • 4 edits in trunk/Source

Cleanup: WebContextMenuClient::searchWithGoogle() should parse URL using URL { URL { }, ... }
instead of URL { ParsedURLString, ... }
https://bugs.webkit.org/show_bug.cgi?id=173495
<rdar://problem/32827445>

Reviewed by Alex Christensen.

URL(ParsedURLString, ...) should only be used with a string that was the result of URL::string().
Otherwise, it will cause an assertion failure if the canonicalized URL differs from the string.
Although it is unlikely that the hardcoded string in WebContextMenuClient::searchWithGoogle()
would differ from the canonicalized URL it is best practice to use URL(URL(), ...) to
parse an arbitrary string that looks like a URL.

Also modernize the code using C++14 idioms.

Source/WebKit/win:

  • WebCoreSupport/WebContextMenuClient.cpp:

(WebContextMenuClient::searchWithGoogle):

Source/WebKit2:

  • WebProcess/WebCoreSupport/WebContextMenuClient.cpp:

(WebKit::WebContextMenuClient::searchWithGoogle):

5:50 PM Changeset in webkit [218434] by dbates@webkit.org
  • 5 edits in trunk/Source/WebCore

Remove header OptionSet.h from FrameLoaderTypes.h
https://bugs.webkit.org/show_bug.cgi?id=173489

Reviewed by Joseph Pecoraro.

Although the header FrameLoaderTypes.h defines exactly one enum class, ReloadOption, whose
enumerators conform the power of two prerequisite for parameterizing an OptionSet for it
FrameLoaderTypes.h does not actually make use of the functionality provided by header
OptionSet.h. And not all source files that include FrameLoaderTypes.h need to use an OptionSet.

  • loader/DocumentLoader.h: Include <wtf/OptionSet.h>.
  • loader/FrameLoader.h: Ditto.
  • loader/FrameLoaderTypes.h: Remove header <wtf/OptionSet.h>.
  • replay/UserInputBridge.h: Include <wtf/Forward.h>.
5:33 PM Changeset in webkit [218433] by Wenson Hsieh
  • 29 edits
    12 adds in trunk

[iOS DnD] Upstream iOS drag and drop implementation into OpenSource WebKit
https://bugs.webkit.org/show_bug.cgi?id=173366
<rdar://problem/32767014>

Reviewed by Tim Horton.

Source/JavaScriptCore:

Introduce ENABLE_DATA_INTERACTION and ENABLE_DRAG_SUPPORT to FeatureDefines.xcconfig.

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Moves all drag and drop logic previously hidden behind WebKitAdditions into the open source repository, along
with unit test pages in TestWebKitAPI. Also removes all #includes and #imports of dragging-related files in
WebKitAdditions from the open source repository.

This initial upstreaming phase is only concerned with moving code out of WebKitAdditions, and attempts to
preserve the code as-is, with the exception of trivial style changes so that the open source linter passes.
Future patches will remove the DATA_INTERACTION feature flag altogether and unobscure all variable and function
names referencing "data interaction".

No change in behavior from the internal build.

  • Configurations/FeatureDefines.xcconfig:
  • page/ios/EventHandlerIOS.mm:

(WebCore::EventHandler::createDraggingDataTransfer):
(WebCore::EventHandler::eventLoopHandleMouseDragged):
(WebCore::EventHandler::tryToBeginDataInteractionAtPoint):

  • platform/ios/DragImageIOS.mm:

(WebCore::dragImageSize):
(WebCore::scaleDragImage):
(WebCore::createDragImageFromImage):
(WebCore::deleteDragImage):
(WebCore::createDragImageForLink):
(WebCore::createDragImageIconForCachedImageFilename):
(WebCore::platformAdjustDragImageForDeviceScaleFactor):
(WebCore::createDragImageForSelection):
(WebCore::dissolveDragImageToFraction):

  • platform/ios/PasteboardIOS.mm:

(WebCore::Pasteboard::Pasteboard):
(WebCore::Pasteboard::setDragImage):
(WebCore::Pasteboard::createForDragAndDrop):

  • platform/mac/DragDataMac.mm:

(WebCore::rtfPasteboardType):
(WebCore::rtfdPasteboardType):
(WebCore::stringPasteboardType):
(WebCore::urlPasteboardType):
(WebCore::htmlPasteboardType):
(WebCore::colorPasteboardType):
(WebCore::pdfPasteboardType):
(WebCore::tiffPasteboardType):
(WebCore::DragData::asFilenames):
(WebCore::DragData::containsURL):
(rtfPasteboardType): Deleted.
(rtfdPasteboardType): Deleted.
(stringPasteboardType): Deleted.
(urlPasteboardType): Deleted.
(htmlPasteboardType): Deleted.
(colorPasteboardType): Deleted.
(pdfPasteboardType): Deleted.
(tiffPasteboardType): Deleted.

Source/WebCore/PAL:

Introduce ENABLE_DATA_INTERACTION and ENABLE_DRAG_SUPPORT to FeatureDefines.xcconfig.

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

Move pieces of iOS WebKit1 drag and drop implementation into OpenSource. No change in behavior.

  • Configurations/FeatureDefines.xcconfig:
  • WebCoreSupport/WebDragClient.mm:

(WebDragClient::useLegacyDragClient):
(WebDragClient::willPerformDragDestinationAction):
(WebDragClient::dragSourceActionMaskForPoint):
(WebDragClient::willPerformDragSourceAction):
(WebDragClient::startDrag):
(WebDragClient::beginDrag):
(WebDragClient::declareAndWriteDragImage):
(WebDragClient::declareAndWriteAttachment):
(WebDragClient::didConcludeEditDrag):

  • WebView/WebView.mm:

(-[WebView _setDataInteractionData:textIndicator:atClientPosition:anchorPoint:action:]):
(-[WebView _getDataInteractionData]):
(-[WebView dragDataForSession:client:global:operation:]):
(-[WebView _enteredDataInteraction:client:global:operation:]):
(-[WebView _updatedDataInteraction:client:global:operation:]):
(-[WebView _exitedDataInteraction:client:global:operation:]):
(-[WebView _performDataInteraction:client:global:operation:]):
(-[WebView _tryToPerformDataInteraction:client:global:operation:]):
(-[WebView _endedDataInteraction:global:]):
(-[WebView _didConcludeEditDataInteraction]):
(floatRectsForCGRectArray): Deleted.
(-[WebView _createImageWithPlatterForImage:boundingRect:contentScaleFactor:clippingRects:]): Deleted.

  • WebView/WebViewData.h:
  • WebView/WebViewData.mm:

(-[WebViewPrivate dealloc]):

  • WebView/WebViewPrivate.h:

Source/WebKit2:

Move pieces of iOS WebKit2 drag and drop implementation into OpenSource. No change in behavior.

  • Configurations/FeatureDefines.xcconfig:
  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::setDragImage):
(WebKit::WebPageProxy::setPromisedDataForImage):
(WebKit::WebPageProxy::setPromisedDataForAttachment):
(WebKit::WebPageProxy::setDragCaretRect):

  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(longPressActionDelayAfterLift):
(-[WKContentView webViewUIDelegate]):
(-[WKContentView setupDataInteractionDelegates]):
(-[WKContentView teardownDataInteractionDelegates]):
(-[WKContentView _startDataInteractionWithImage:withIndicatorData:atClientPosition:anchorPoint:action:]):
(-[WKContentView _didHandleStartDataInteractionRequest:]):
(uiImageForImage):
(shouldUseTextIndicatorToCreatePreviewForDragAction):
(-[WKContentView dragPreviewForImage:frameInRootViewCoordinates:clippingRectsInFrameCoordinates:backgroundColor:]):
(-[WKContentView dragPreviewForCurrentDataInteractionState]):
(-[WKContentView performDeferredActionAtDragOrigin]):
(-[WKContentView cancelDeferredActionAtDragOrigin]):
(-[WKContentView computeClientAndGlobalPointsForDropSession:outClientPoint:outGlobalPoint:]):
(dropOperationForWebCoreDragOperation):
(-[WKContentView dragDataForDropSession:dragDestinationAction:]):
(-[WKContentView cleanUpDragSourceSessionState]):
(extractItemProvidersFromDragItems):
(extractItemProvidersFromDropSession):
(-[WKContentView _didConcludeEditDataInteraction:]):
(-[WKContentView _didPerformDataInteractionControllerOperation:]):
(-[WKContentView _transitionDragPreviewToImageIfNecessary:]):
(-[WKContentView _didChangeDataInteractionCaretRect:currentRect:]):
(-[WKContentView _dragDestinationActionForDropSession:]):
(positionInformationMayStartDataInteraction):
(-[WKContentView currentDragOrDropSession]):
(-[WKContentView _dragInteraction:prepareForSession:completion:]):
(-[WKContentView dragInteraction:itemsForBeginningSession:]):
(-[WKContentView _api_dragInteraction:previewForLiftingItem:session:]):
(-[WKContentView dragInteraction:sessionWillBegin:]):
(-[WKContentView _api_dragInteraction:session:didEndWithOperation:]):
(-[WKContentView dragInteraction:previewForCancellingItem:withDefault:]):
(-[WKContentView _api_dragInteraction:item:willAnimateCancelWithAnimator:]):
(-[WKContentView dropInteraction:canHandleSession:]):
(-[WKContentView _api_dropInteraction:sessionDidEnter:]):
(-[WKContentView _api_dropInteraction:sessionDidUpdate:]):
(-[WKContentView dropInteraction:sessionDidExit:]):
(-[WKContentView dropInteraction:performDrop:]):
(-[WKContentView dropInteraction:previewForDroppingItem:withDefault:]):
(-[WKContentView dropInteraction:sessionDidEnd:]):
(-[WKContentView _simulateDataInteractionEntered:]):
(-[WKContentView _simulateDataInteractionUpdated:]):
(-[WKContentView _simulateDataInteractionEnded:]):
(-[WKContentView _simulateDataInteractionPerformOperation:]):
(-[WKContentView _simulateDataInteractionSessionDidEnd:]):
(-[WKContentView _simulateWillBeginDataInteractionWithSession:]):
(-[WKContentView _simulatedItemsForSession:]):
(-[WKContentView _simulatePrepareForDataInteractionSession:completion:]):

  • WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:

(WebKit::convertCGImageToBitmap):
(WebKit::WebDragClient::startDrag):
(WebKit::WebDragClient::declareAndWriteDragImage):
(WebKit::WebDragClient::didConcludeEditDrag):
(WebKit::WebDragClient::declareAndWriteAttachment):

Source/WTF:

Define ENABLE_DRAG_SUPPORT as 1 by default and 0 for iOS, and define ENABLE_DATA_INTERACTION as 0 by default.
These are overridden to both be 1 for iOS 11+ in the FeatureDefines.xcconfig within each individual project.

  • wtf/Platform.h:

Tools:

Move test pages and pieces of DataInteractionSimulator hidden behind WebKitAdditions into TestWebKitAPI. No
change in behavior.

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/autofocus-contenteditable.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/background-image-link-and-input.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/contenteditable-and-textarea.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/div-and-large-image.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/file-uploading.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/image-and-contenteditable.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/image-and-textarea.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/link-and-input.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/link-and-target-div.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/prevent-operation.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/prevent-start.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/textarea-to-input.html: Added.
  • TestWebKitAPI/ios/DataInteractionSimulator.mm:

(-[MockDragDropSession initWithItems:location:window:]):
(-[MockDragDropSession allowsMoveOperation]):
(-[MockDragDropSession isRestrictedToDraggingApplication]):
(-[MockDragDropSession hasItemsConformingToTypeIdentifiers:]):
(-[MockDragDropSession canLoadObjectsOfClass:]):
(-[MockDragDropSession canLoadObjectsOfClasses:]):
(-[MockDragDropSession items]):
(-[MockDragDropSession setItems:]):
(-[MockDragDropSession locationInView:]):
(-[MockDataOperationSession initWithProviders:location:window:]):
(-[MockDataOperationSession session]):
(-[MockDataOperationSession isLocal]):
(-[MockDataOperationSession progress]):
(-[MockDataOperationSession setProgressIndicatorStyle:]):
(-[MockDataOperationSession progressIndicatorStyle]):
(-[MockDataOperationSession operationMask]):
(-[MockDataOperationSession localDragSession]):
(-[MockDataOperationSession hasItemsConformingToTypeIdentifier:]):
(-[MockDataOperationSession canCreateItemsOfClass:]):
(-[MockDataOperationSession loadObjectsOfClass:completion:]):
(-[MockDataInteractionSession initWithWindow:]):
(-[MockDataInteractionSession localOperationMask]):
(-[MockDataInteractionSession externalOperationMask]):
(-[MockDataInteractionSession session]):
(-[DataInteractionSimulator _advanceProgress]):

5:29 PM Changeset in webkit [218432] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

WebRTC sockets should be closed at destruction time if not closed explicitly
https://bugs.webkit.org/show_bug.cgi?id=173479

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

Source/WebKit2:

  • WebProcess/Network/webrtc/LibWebRTCSocket.cpp:

(WebKit::LibWebRTCSocket::~LibWebRTCSocket):
(WebKit::LibWebRTCSocket::Close):

LayoutTests:

  • webrtc/datachannel/multiple-connections-expected.txt: Added.
  • webrtc/datachannel/multiple-connections.html: Added.
5:27 PM Changeset in webkit [218431] by commit-queue@webkit.org
  • 7 edits
    2 adds in trunk

addTransceiver should trigger mid generation in the SDP
https://bugs.webkit.org/show_bug.cgi?id=173452

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

Source/WebCore:

Test: webrtc/video-addTransceiver.html

Adding support for recvonly SDP based on call to addTransceiver.
Using offer_to_receive options of libwebrtc for that purpose.

Making sure that addTransceiver and using a real track afterwards is working too.

  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::enqueueReplaceTrackTask): notify the backend that a track is added in case the sender has no track.

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::LibWebRTCMediaEndpoint::shouldOfferAllowToReceiveAudio): Detect whether some audio mid should be recvonly.
(WebCore::LibWebRTCMediaEndpoint::shouldOfferAllowToReceiveVideo): Detect whether some video mid should be recvonly.
(WebCore::LibWebRTCMediaEndpoint::doCreateOffer):

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:

LayoutTests:

  • webrtc/routines.js:

(createConnections):

  • webrtc/video-addTransceiver-expected.txt: Added.
  • webrtc/video-addTransceiver.html: Added.
5:20 PM Changeset in webkit [218430] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Fix Visual Studio 2017 64-bit build after r218258
https://bugs.webkit.org/show_bug.cgi?id=173308

  • PlatformWin.cmake:

We still need the enable_language(ASM_MASM) even if we explicitly call ml64 with VS2017.
Otherwise CMake complains about a missing variable CMAKE_ASM_MASM_COMPILE_OBJECT.

4:50 PM Changeset in webkit [218429] by Jonathan Bedard
  • 4 edits in trunk/LayoutTests

Clean-up lint-test-expectation errors

Unreviewed test gardening

  • platform/ios-wk1/TestExpectations:
  • platform/ios-wk2/TestExpectations:
  • platform/win/TestExpectations:
4:49 PM Changeset in webkit [218428] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

WebCore::LibWebRTCMediaEndpoint::gatherStatsForLogging is crashing
https://bugs.webkit.org/show_bug.cgi?id=173493

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

Speculative preventive fix.

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::LibWebRTCMediaEndpoint::gatherStatsForLogging):

4:43 PM Changeset in webkit [218427] by achristensen@apple.com
  • 4 edits in trunk

Show punycode to user if a URL has dotless i or j followed by diacritic dot
https://bugs.webkit.org/show_bug.cgi?id=173431

Reviewed by Darin Adler.

Source/WebCore:

Covered by new API tests.

  • platform/mac/WebCoreNSURLExtras.mm:

(WebCore::isLookalikeCharacter):
(WebCore::allCharactersInIDNScriptWhiteList):
(WebCore::createStringWithEscapedUnsafeCharacters):

Tools:

  • TestWebKitAPI/Tests/WebCore/cocoa/URLExtras.mm:

(TestWebKitAPI::TEST):

4:16 PM Changeset in webkit [218426] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

[iOS] Switching cameras in a WebRTC call makes black frames being sent
https://bugs.webkit.org/show_bug.cgi?id=173486

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

Source/WebCore:

Test: webrtc/video-replace-muted-track.html

  • platform/mediastream/mac/RealtimeOutgoingVideoSource.cpp:

(WebCore::RealtimeOutgoingVideoSource::updateBlackFramesSending):
Ensuring the timer is stopped if needed.
(WebCore::RealtimeOutgoingVideoSource::initializeFromSource):
Calling updateBlackFramesSending to stop sending frame if needed.

LayoutTests:

  • webrtc/video-replace-muted-track-expected.txt: Added.
  • webrtc/video-replace-muted-track.html: Added.
4:15 PM Changeset in webkit [218425] by Ryan Haddad
  • 1 edit
    1 delete in trunk/LayoutTests

Remove a test that was accidentally checked in with r218408.

Unreviewed test gardening.

  • webrtc/datachannel/test.html: Removed.
4:13 PM Changeset in webkit [218424] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Marked imported/w3c/web-platform-tests/IndexedDB/large-nested-cloning.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=173487

Unreviewed test gardening.

  • platform/mac/TestExpectations:
4:10 PM Changeset in webkit [218423] by commit-queue@webkit.org
  • 5 edits in trunk

Remove replaceTrack restriction about video resolution
https://bugs.webkit.org/show_bug.cgi?id=173490

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

Source/WebCore:

Covered by updated tests.

  • platform/mediastream/mac/RealtimeOutgoingVideoSource.cpp:

(WebCore::RealtimeOutgoingVideoSource::setSource):

LayoutTests:

  • webrtc/video-replace-track-expected.txt:
  • webrtc/video-replace-track.html:
3:56 PM Changeset in webkit [218422] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Handle timeout of prepareForPictureInPictureStopWithCompletionHandler.
https://bugs.webkit.org/show_bug.cgi?id=173462
rdar://problem/32128170

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-06-16
Reviewed by Jer Noble.

No new tests because no effect on the DOM.

If WebVideoFullscreenInterfaceAVKit::prepareForPictureInPictureStopWithCompletionHandler doesn't respond fast enough,
the caller will timeout and call will/didStopPictureInPicture.

This is getting fullscreen state confused.

This change keeps state consistent by handling will/didStopPictureInPicture possibly being called before
prepareForPictureInPictureStopWithCompletionHandler calls its callback.

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

(WebVideoFullscreenInterfaceAVKit::willStopPictureInPicture):
(WebVideoFullscreenInterfaceAVKit::didStopPictureInPicture):
(WebVideoFullscreenInterfaceAVKit::prepareForPictureInPictureStopWithCompletionHandler):
(WebVideoFullscreenInterfaceAVKit::watchdogTimerFired):

3:46 PM Changeset in webkit [218421] by mmaxfield@apple.com
  • 6 edits
    1 copy in trunk/Source/WebCore

Make builds faster after r218371
https://bugs.webkit.org/show_bug.cgi?id=173453

Reviewed by Tim Horton.

Remove #includes from .h files.

No new tests because there is no behavior change.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj: Add new .cpp file, and sort the project file
  • platform/graphics/FontFamilySpecificationNull.cpp: Copied from Source/WebCore/platform/graphics/FontFamilySpecificationNull.h.

(WebCore::FontFamilySpecificationNull::fontRanges):

  • platform/graphics/FontFamilySpecificationNull.h:

(WebCore::FontFamilySpecificationNull::fontRanges): Deleted.

  • platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:

(WebCore::FontFamilySpecificationCoreText::FontFamilySpecificationCoreText):
(WebCore::FontFamilySpecificationCoreText::~FontFamilySpecificationCoreText):

  • platform/graphics/cocoa/FontFamilySpecificationCoreText.h:

(WebCore::FontFamilySpecificationCoreText::FontFamilySpecificationCoreText): Deleted.

3:35 PM Changeset in webkit [218420] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Marked multiple imported/w3c/web-platform-tests/IndexedDB as flaky.
https://bugs.webkit.org/show_bug.cgi?id=172834

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
3:32 PM Changeset in webkit [218419] by Chris Dumez
  • 12 edits
    1 add in trunk

[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 Brady Eidson.

Source/WebCore:

Add PluginLoadClientPolicyMaximum value to PluginLoadClientPolicy enumeration
to facilitate input value validation on API side.

  • plugins/PluginData.h:

Source/WebKit2:

Add WKProcessPool SPI to efficiently reset all plugin load client policies:
[WKProcessPool _resetPluginLoadClientPolicies]. This new SPI clears all
existing policies and then sets all of them with new values, with a
minimal amount of IPC.

To achieve this, clients would previously have to call

  1. WKContextClearPluginClientPolicies() which would cause a broadcast IPC to every WebContent process.
  2. WKContextSetPluginLoadClientPolicy() repeatedly to add each policy one by one. Each call to WKContextSetPluginLoadClientPolicy() would cause a broadcast IPC to every WebContent process.

The new SPI does the same job with a single broadcast IPC to every WebContent
process.

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(isPluginLoadClientPolicyAcceptable):
(toPluginLoadClientPoliciesHashMap):
(policiesHashMapToDictionary):
(-[WKProcessPool _resetPluginLoadClientPolicies:]):
(-[WKProcessPool _pluginLoadClientPolicies]):

  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::setPluginLoadClientPolicy):
(WebKit::WebProcessPool::resetPluginLoadClientPolicies):

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

(WebKit::WebProcess::initializeWebProcess):
(WebKit::WebProcess::resetPluginLoadClientPolicies):

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:

Tools:

Add API test coverage.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/PluginLoadClientPolicies.mm: Added.

(TEST):

3:28 PM Changeset in webkit [218418] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit2

[WK2][macOS] Expand sandbox to better support video playback on mac mini
https://bugs.webkit.org/show_bug.cgi?id=173492
<rdar://problem/32804073>

Reviewed by Alex Christensen.

Hardware differences in Mac Mini's require some different IOKit preferences to be accessible.

  • WebProcess/com.apple.WebProcess.sb.in:
2:59 PM Changeset in webkit [218417] by jer.noble@apple.com
  • 15 edits
    2 adds in trunk

[iOS] Do not pause playing video when application resigns active state.
https://bugs.webkit.org/show_bug.cgi?id=173474

Reviewed by Tim Horton.

Source/WebCore:

Test: media/video-inactive-playback.html

Separate out the concept of "inactive" playback from "process background" playback.
Move the implementation of applicationDidEnterBackground() from MediaSessionManagerIOS
into it's superclass, PlatformMediaSessionManager, and add a new set of restrictions
for "InactiveProcessPlaybackRestricted" and "SuspendedUnderLockPlaybackRestricted".
Leave the default restriction set for iOS as "BackgroundProcessPlaybackRestricted" and
"SuspendedUnderLockPlaybackRestricted", to preserve the existing behavior of suspending
playback when switching apps or when locking the device.

  • platform/audio/PlatformMediaSession.cpp:

(WebCore::interruptionName):

  • platform/audio/PlatformMediaSession.h:
  • platform/audio/PlatformMediaSessionManager.cpp:

(WebCore::PlatformMediaSessionManager::applicationWillBecomeInactive):
(WebCore::PlatformMediaSessionManager::applicationDidBecomeActive):
(WebCore::PlatformMediaSessionManager::applicationDidEnterBackground):
(WebCore::PlatformMediaSessionManager::applicationWillEnterForeground):
(WebCore::PlatformMediaSessionManager::applicationWillEnterBackground): Deleted.
(WebCore::PlatformMediaSessionManager::applicationDidEnterForeground): Deleted.

  • platform/audio/PlatformMediaSessionManager.h:
  • platform/audio/ios/MediaSessionManagerIOS.h:
  • platform/audio/ios/MediaSessionManagerIOS.mm:

(WebCore::MediaSessionManageriOS::resetRestrictions):
(-[WebMediaSessionHelper applicationDidBecomeActive:]):
(-[WebMediaSessionHelper applicationWillResignActive:]):
(WebCore::MediaSessionManageriOS::applicationDidEnterBackground): Deleted.
(WebCore::MediaSessionManageriOS::applicationWillEnterForeground): Deleted.

  • testing/Internals.cpp:

(WebCore::Internals::applicationWillBecomeInactive):
(WebCore::Internals::applicationDidBecomeActive):
(WebCore::Internals::applicationWillEnterForeground):
(WebCore::Internals::applicationDidEnterBackground):
(WebCore::Internals::setMediaSessionRestrictions):
(WebCore::Internals::applicationDidEnterForeground): Deleted.
(WebCore::Internals::applicationWillEnterBackground): Deleted.

  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

  • media/video-background-playback-expected.txt:
  • media/video-background-playback.html:
  • media/video-background-tab-playback-expected.txt:
  • media/video-background-tab-playback.html:
  • media/video-inactive-playback-expected.txt: Added.
  • media/video-inactive-playback.html: Added.
2:43 PM Changeset in webkit [218416] by achristensen@apple.com
  • 3 edits
    2 adds in trunk

REGRESSION (r213126): Sync XHR needs partition for cache and credentials
https://bugs.webkit.org/show_bug.cgi?id=173496
<rdar://problem/31943596>

Reviewed by Darin Adler.

Source/WebCore:

Test: http/tests/security/sync-xhr-partition.html

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::createRequest):

LayoutTests:

  • http/tests/security/sync-xhr-partition-expected.txt: Added.
  • http/tests/security/sync-xhr-partition.html: Added.
2:32 PM Changeset in webkit [218415] by Yusuke Suzuki
  • 3 edits
    2 adds in trunk

[JSC] Add fast path for Object.assign
https://bugs.webkit.org/show_bug.cgi?id=173416

Reviewed by Mark Lam.

JSTests:

  • stress/object-assign-changing-properties.js: Added.

(shouldBe):
(throw.new.Error.let.source.get x):
(throw.new.Error):
(shouldBe.let.source.get x):
(shouldBe.let.target.set x):
(shouldBe.let.target.get x):

  • stress/object-assign-proxy.js: Added.

(shouldBe):
(throw.new.Error.let.handler.get order):

Source/JavaScriptCore:

In Object.assign implementation, we need to ensure that given key is still enumerable own key.
This seems duplicate look up. And we want to avoid this. However, we still need to perform this
check in the face of Proxy. Proxy can observe that this check is done correctly.

In almost all the cases, the above check is duplicate to the subsequent Get? operation.
In this patch, we perform this check. But at that time, we investigate isTaintedByOpaqueObject().
If it is false, we can say that getOwnPropertySlot is pure. In that case, we can just retrieve the
value by calling slot.getValue().

This further improves performance of Object.assign.

baseline patched

object-assign.es6 363.6706+-6.4381 324.1769+-6.9624 definitely 1.1218x faster

  • runtime/ObjectConstructor.cpp:

(JSC::objectConstructorAssign):

2:12 PM Changeset in webkit [218414] by msaboff@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Intermittent crash running Internal/Tests/InternalJSTests/Regress/radar-24300617.js
https://bugs.webkit.org/show_bug.cgi?id=173488

Reviewed by Filip Pizlo.

ClonedArguments lazily sets its callee and interator properties and it used its own inline
code to initialize its butterfly. This means that these lazily set properties can have
bogus values in those slots. Instead, let's use the standard BUtterfly:tryCreate() method
to create the butterfly as it clears out of line properties.

  • runtime/ClonedArguments.cpp:

(JSC::ClonedArguments::createEmpty):

2:08 PM Changeset in webkit [218413] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Marked imported/w3c/web-platform-tests/fetch/nosniff/importscripts.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=173432

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
2:02 PM Changeset in webkit [218412] by mark.lam@apple.com
  • 22 edits in trunk/Source/JavaScriptCore

Interpreter methods for mapping between Opcode and OpcodeID need not be instance methods.
https://bugs.webkit.org/show_bug.cgi?id=173491

Reviewed by Keith Miller.

The implementation are based on static data. There's no need to get the
interpreter instance. Hence, we can make these methods static and avoid doing
unnecessary work to compute the interpreter this pointer.

Also removed the unused isCallBytecode method.

  • bytecode/BytecodeBasicBlock.cpp:

(JSC::BytecodeBasicBlock::computeImpl):

  • bytecode/BytecodeDumper.cpp:

(JSC::BytecodeDumper<Block>::printGetByIdOp):
(JSC::BytecodeDumper<Block>::printGetByIdCacheStatus):
(JSC::BytecodeDumper<Block>::dumpBytecode):
(JSC::BytecodeDumper<Block>::dumpBlock):

  • bytecode/BytecodeLivenessAnalysis.cpp:

(JSC::BytecodeLivenessAnalysis::dumpResults):

  • bytecode/BytecodeLivenessAnalysisInlines.h:

(JSC::BytecodeLivenessPropagation<DerivedAnalysis>::stepOverInstruction):

  • bytecode/BytecodeRewriter.cpp:

(JSC::BytecodeRewriter::adjustJumpTargetsInFragment):

  • bytecode/CallLinkStatus.cpp:

(JSC::CallLinkStatus::computeFromLLInt):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::propagateTransitions):
(JSC::CodeBlock::finalizeLLIntInlineCaches):
(JSC::CodeBlock::hasOpDebugForLineAndColumn):
(JSC::CodeBlock::usesOpcode):
(JSC::CodeBlock::valueProfileForBytecodeOffset):
(JSC::CodeBlock::arithProfileForPC):
(JSC::CodeBlock::insertBasicBlockBoundariesForControlFlowProfiler):

  • bytecode/PreciseJumpTargets.cpp:

(JSC::getJumpTargetsForBytecodeOffset):
(JSC::computePreciseJumpTargetsInternal):
(JSC::findJumpTargetsForBytecodeOffset):

  • bytecode/PreciseJumpTargetsInlines.h:

(JSC::extractStoredJumpTargetsForBytecodeOffset):

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::applyModification):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::getPredictionWithoutOSRExit):
(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::Interpreter):
(JSC::Interpreter::isOpcode):
(): Deleted.

  • interpreter/Interpreter.h:

(JSC::Interpreter::getOpcode): Deleted.
(JSC::Interpreter::getOpcodeID): Deleted.
(JSC::Interpreter::isCallBytecode): Deleted.

  • interpreter/InterpreterInlines.h:

(JSC::Interpreter::getOpcode):
(JSC::Interpreter::getOpcodeID):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):
(JSC::JIT::privateCompileSlowCases):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emitNewFuncCommon):
(JSC::JIT::emitNewFuncExprCommon):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emitSlow_op_put_by_val):
(JSC::JIT::privateCompilePutByVal):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emitSlow_op_put_by_val):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::llint_trace_operand):
(JSC::LLInt::llint_trace_value):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • profiler/ProfilerBytecodeSequence.cpp:

(JSC::Profiler::BytecodeSequence::BytecodeSequence):

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

Unreviewed, rolling out r218402 and r218404.
https://bugs.webkit.org/show_bug.cgi?id=173494

Seems to have mysteriously broken the build in bizarre ways
(Requested by thorton on #webkit).

Reverted changesets:

"Include a few widespread WTF headers in WebCorePrefix.h"
https://bugs.webkit.org/show_bug.cgi?id=173481
http://trac.webkit.org/changeset/218402

"Fix the Windows build after r218402"
http://trac.webkit.org/changeset/218404

1:41 PM Changeset in webkit [218410] by Matt Lewis
  • 3 edits in trunk/LayoutTests

Adjusted test expectations for media/track/track-in-band-cues-added-once.html.
https://bugs.webkit.org/show_bug.cgi?id=142152

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac/TestExpectations:
1:34 PM Changeset in webkit [218409] by beidson@apple.com
  • 4 edits in trunk

REGRESSION (r218015) IconLoaders for already-cached resources expect to be asynchronous, no longer are.
<rdar://problem/32817519> and https://bugs.webkit.org/show_bug.cgi?id=173478

Reviewed by Daniel Bates.

Source/WebCore:

Covered by API test.

Being synchronous is actually better as it's resolved another issue or two.
But only if we can actually deliver the data without crashing first.
So let's do that.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::didGetLoadDecisionForIcon): Put the IconLoader in the set of active icon loaders

before actually starting the icon loading.

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/IconLoadingDelegate.mm:
1:24 PM Changeset in webkit [218408] by commit-queue@webkit.org
  • 9 edits
    2 copies
    3 adds in trunk/LayoutTests

Make some WebRTC tests easier to debug when failing
https://bugs.webkit.org/show_bug.cgi?id=173480

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

  • webrtc/captureCanvas-webrtc-expected.txt:
  • webrtc/captureCanvas-webrtc.html: Splitting test in smaller tests.
  • webrtc/datachannel/basic-expected.txt:
  • webrtc/datachannel/basic-tcp-expected.txt: Added.
  • webrtc/datachannel/basic-tcp.html: Test from basic.html
  • webrtc/datachannel/basic.html: Moving TCP specifict test and other creation tests to their own files.
  • webrtc/datachannel/bufferedAmountLowThreshold.html: Removing console log message in case of unhandled promise.
  • webrtc/datachannel/creation-expected.txt:
  • webrtc/datachannel/creation.html: Test from basic.html
  • webrtc/datachannel/filter-ice-candidate-expected.txt:
  • webrtc/datachannel/filter-ice-candidate.html: Exchanging the tests.
  • webrtc/video-stats.html: Improving test that timestamp is milliseconds and not microseconds.
1:22 PM Changeset in webkit [218407] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Don't use WebCore Timer from code that runs in the UI process.
https://bugs.webkit.org/show_bug.cgi?id=173460
rdar://problem/32750731

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-06-16
Reviewed by Jer Noble.

If a WebCore Timer is fired from the WebKit2 UI process, it will
create a web thread, which can cause a crash in this instance.

It was also causing the timer to be called back on the wrong thread.

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

(WebVideoFullscreenInterfaceAVKit::WebVideoFullscreenInterfaceAVKit):

1:09 PM Changeset in webkit [218406] by Chris Dumez
  • 2 edits in trunk/Tools

DRT fails to reset page visibility between tests
https://bugs.webkit.org/show_bug.cgi?id=173485

Reviewed by Alexey Proskuryakov.

DRT fails to reset page visibility between tests and relies on tests calling testRunner.resetPageVisibility().
Fix this to address flakiness.

I confirmed this by commenting out the call to testRunner.resetPageVisibility() in
fast/events/page-visibility-onvisibilitychange.html and running the test in a loop.
The test became flaky without the DRT change and was no longer flaky with the DRT
change.

WebKitTestRunner already does this.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebViewToConsistentStateBeforeTesting):

12:55 PM Changeset in webkit [218405] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit2

[WK2][iOS][macOS] Extend the sandbox to allow reading of AVFoundation's VideoPerformanceHUD preference
https://bugs.webkit.org/show_bug.cgi?id=173476
<rdar://problem/31594568>

Reviewed by Alex Christensen.

Update the sandbox to permit WebContent process to read the AVFoundation preferences for the performance HUD.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • WebProcess/com.apple.WebProcess.sb.in:
12:51 PM Changeset in webkit [218404] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

Fix the Windows build after r218402

  • WebCorePrefix.h:

I typed #import instead of #include on auto-pilot, and ... it mostly worked!
Except Windows.

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

Hide inline captions in fullscreen. Remove fullscreen captions when no longer needed.
https://bugs.webkit.org/show_bug.cgi?id=173482

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-06-16
Reviewed by Eric Carlson.

Hide the inline captions while they are presenting to fullscreen.
Remove the text track representation as soon as it is no longer needed.
This allows the text track to render properly when returning to inline.

  • html/shadow/MediaControlElements.cpp:

(WebCore::MediaControlTextTrackContainerElement::updateTextTrackRepresentation):

12:44 PM Changeset in webkit [218402] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

Include a few widespread WTF headers in WebCorePrefix.h
https://bugs.webkit.org/show_bug.cgi?id=173481

Reviewed by Alex Christensen.

  • WebCorePrefix.h:

These are four of the headers that contribute the most pre-processed
source to the WebCore build. They (and their dependents) change infrequently
enough that a world rebuild of WebCore when they change seems like an
acceptable tradeoff for the ~9% reduction in WebCore build time that I
measure from this change.

12:20 PM Changeset in webkit [218401] by achristensen@apple.com
  • 2 edits in trunk/Tools

Implement basic authentication in MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=173443

Reviewed by Tim Horton.

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController webView:didReceiveAuthenticationChallenge:completionHandler:]):

11:55 AM Changeset in webkit [218400] by commit-queue@webkit.org
  • 7 edits
    2 adds in trunk

REGRESSION: AirPlay placard is not shown when in fullscreen
https://bugs.webkit.org/show_bug.cgi?id=173447
<rdar://problem/32803773>

Patch by Antoine Quint <Antoine Quint> on 2017-06-16
Reviewed by Jon Lee.

Source/WebCore:

We only allowed a placard to be set on inline controls, but that was an oversight: placards
should be displayed in fullscreen as well. As such, we move the "placard" property up from
InlineMediaControls to MediaControls, and update the layout() logic in MacOSFullscreenMediaControls
to display a placard.

Test: media/modern-media-controls/placard-support/placard-support-airplay-fullscreen.html

  • Modules/modern-media-controls/controls/inline-media-controls.js:

(InlineMediaControls):
(InlineMediaControls.prototype.layout):
(InlineMediaControls.prototype.get placard): Deleted.
(InlineMediaControls.prototype.set placard): Deleted.

  • Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js:

(MacOSFullscreenMediaControls.prototype.layout):

  • Modules/modern-media-controls/controls/media-controls.js:

(MediaControls.prototype.get placard):
(MediaControls.prototype.set placard):
(MediaControls.prototype.placardPreventsControlsBarDisplay):
(MediaControls.prototype.layout):

  • Modules/modern-media-controls/media/placard-support.js:

(PlacardSupport.prototype._updatePlacard):
(PlacardSupport):

LayoutTests:

Add a new test to check that we display the AirPlay placard on macOS in fullscreen.

  • media/modern-media-controls/placard-support/placard-support-airplay-fullscreen-expected.txt: Added.
  • media/modern-media-controls/placard-support/placard-support-airplay-fullscreen.html: Added.
  • platform/ios-simulator/TestExpectations:
11:46 AM Changeset in webkit [218399] by jer.noble@apple.com
  • 14 edits
    2 adds in trunk

[WebRTC] Removing a MediaStreamTrack from a MediaStream reports no recording to WebKit clients
https://bugs.webkit.org/show_bug.cgi?id=173398
<rdar://problem/32592961>

Reviewed by Eric Carlson.

Source/WebCore:

API Test: Tests/WebKit2/MediaStreamTrackDetached.mm

Move the definition of a MediaStream as a MediaProducer from the stream itself to its constituent
MediaStreamTracks. This ensures that, even if a MediaStreamTrack is removed from its stream, the
document (and thus the clients) are notified that media capture is still occurring.

Though MediaStream is no longer a MediaProducer, it still uses the MediaProducer's state concept
to determine when to fire events. However it's mediaState() implementation will be moved into
MediaStreamTrack, and will instead simply bitwise-or together each of it's track's mediaState().

The MediaStream notifies the document that its state has changed asynchronously, so do the same
for MediaStreamTrack (which reduces the number of calls to the client when changes all occur
during a single run loop).

Because the MediaStreamTrackPrivate may be started externally (not by the MediaStreamTrack directly),
add a new client method that notifies observers when the track has been started, and the
MediaStreamTrack will use this notification to update the document with it's new mediaState().

  • Modules/mediastream/MediaStream.cpp:

(WebCore::MediaStream::MediaStream):
(WebCore::MediaStream::~MediaStream):
(WebCore::MediaStream::mediaState):
(WebCore::MediaStream::statusDidChange):
(WebCore::MediaStream::characteristicsChanged):
(WebCore::MediaStream::pageMutedStateDidChange): Deleted.

  • Modules/mediastream/MediaStream.h:
  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::MediaStreamTrack::MediaStreamTrack):
(WebCore::MediaStreamTrack::~MediaStreamTrack):
(WebCore::MediaStreamTrack::pageMutedStateDidChange):
(WebCore::MediaStreamTrack::mediaState):
(WebCore::MediaStreamTrack::trackStarted):
(WebCore::MediaStreamTrack::configureTrackRendering):
(WebCore::MediaStreamTrack::stop):
(WebCore::MediaStreamTrack::document):

  • Modules/mediastream/MediaStreamTrack.h:

(WebCore::MediaStreamTrack::source):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
  • platform/mediastream/MediaStreamPrivate.cpp:

(WebCore::MediaStreamPrivate::trackStarted):

  • platform/mediastream/MediaStreamPrivate.h:
  • platform/mediastream/MediaStreamTrackPrivate.cpp:

(WebCore::MediaStreamTrackPrivate::sourceStarted):

  • platform/mediastream/MediaStreamTrackPrivate.h:
  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::start):

  • platform/mediastream/RealtimeMediaSource.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2/MediaStreamTrackDetached.mm: Added.

(-[MediaStreamTrackDetachedUIDelegate _webView:requestUserMediaAuthorizationForDevices:url:mainFrameURL:decisionHandler:]):
(-[MediaStreamTrackDetachedUIDelegate _webView:checkUserMediaPermissionForURL:mainFrameURL:frameIdentifier:decisionHandler:]):
(-[MediaStreamTrackDetachedUIDelegate _webView:mediaCaptureStateDidChange:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit2/mediastreamtrack-detached.html: Added.
10:42 AM Changeset in webkit [218398] by commit-queue@webkit.org
  • 5 edits
    3 adds in trunk

Backdrop blur missing in media controls bar on Sierra
https://bugs.webkit.org/show_bug.cgi?id=173451

Patch by Antoine Quint <Antoine Quint> on 2017-06-16
Reviewed by Simon Fraser.

Source/WebCore:

On Sierra, we need to enforce a stacking context on controls bars to guarantee that
the backdrop filters on the BackgroundTint are applied correctly.

Test: media/modern-media-controls/controls-bar/controls-bar-stacking-context.html

  • Modules/modern-media-controls/controls/controls-bar.css:

(.controls-bar):

LayoutTests:

Add a new test that checks that a ControlsBar establishes a stacking context.

  • media/modern-media-controls/controls-bar/controls-bar-stacking-context-expected.txt: Added.
  • media/modern-media-controls/controls-bar/controls-bar-stacking-context.html: Added.
  • platform/ios-simulator/TestExpectations:
  • platform/mac/TestExpectations:
10:40 AM Changeset in webkit [218397] by Matt Lewis
  • 14 edits
    2 deletes in trunk

Unreviewed, rolling out r218375.

The API test MediaStreamTrackDetached is still timing out
after the patch

Reverted changeset:

"[WebRTC] Removing a MediaStreamTrack from a MediaStream
reports no recording to WebKit clients"
https://bugs.webkit.org/show_bug.cgi?id=173398
http://trac.webkit.org/changeset/218375

10:20 AM Changeset in webkit [218396] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

REGRESSION: Media control glyphs appear to invert colors when video is dragged
https://bugs.webkit.org/show_bug.cgi?id=173455
rdar://problem/32726887

Reviewed by Tim Horton.

Masks on composited layers were not correctly painted in drag images, because RenderLayer::paintLayerContents()
failed to pass the PaintBehaviorFlattenCompositingLayers flag down through the mask drawing code, causing
RenderBox::paintMaskImages() to fall into the composited mask code path.

Fix by making a local copy of PaintBehavior, and setting the PaintBehaviorFlattenCompositingLayers and PaintBehaviorSnapshotting
bits on it as appropriate, and passing it into paintMaskForFragments() and paintChildClippingMaskForFragments(). This is similar
to code above.

Can't test drag images.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::paintLayerContents):
(WebCore::RenderLayer::paintMaskForFragments):
(WebCore::RenderLayer::paintChildClippingMaskForFragments):

  • rendering/RenderLayer.h:
9:47 AM Changeset in webkit [218395] by Matt Lewis
  • 21 edits
    7 deletes in trunk

Unreviewed, rolling out r218376.

The patch cause multiple Layout Test Crashes.

Reverted changeset:

"Web Inspector: Instrument 2D/WebGL canvas contexts in the
backend"
https://bugs.webkit.org/show_bug.cgi?id=172623
http://trac.webkit.org/changeset/218376

9:34 AM Changeset in webkit [218394] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GTK] Layout Test fast/events/tabindex-focus-blur-all.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=145171

Unreviewed gardening.

Recently, this test case results in flaky crash, no flaky timeout.

Patch by Fujii Hironori <Fujii Hironori> on 2017-06-16

  • platform/gtk/TestExpectations: Marked it Crash Pass.
9:12 AM Changeset in webkit [218393] by commit-queue@webkit.org
  • 14 edits in trunk/Source

Use the term icon instead of favicon
https://bugs.webkit.org/show_bug.cgi?id=173400

Patch by Daniel Bates <dabates@apple.com> on 2017-06-16
Reviewed by Alex Christensen.

Source/WebCore:

  • inspector/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::cachedResourceContent):
(WebCore::InspectorPageAgent::cachedResourceType):

  • loader/LinkLoader.cpp:

(WebCore::createLinkPreloadResourceClient):

  • loader/ResourceLoadInfo.cpp:

(WebCore::toResourceType):

  • loader/SubresourceLoader.cpp:

(WebCore::logResourceLoaded):

  • loader/cache/CachedRawResource.cpp:

(WebCore::CachedRawResource::CachedRawResource):

  • loader/cache/CachedRawResource.h:

(isType):

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::defaultPriorityForResourceType):

  • loader/cache/CachedResource.h:

(WebCore::CachedResource::isMainOrMediaOrIconOrRawResource):
(WebCore::CachedResource::ignoreForRequestCount):
(WebCore::CachedResource::isMainOrMediaOrFaviconOrRawResource): Deleted.

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::createResource):
(WebCore::CachedResourceLoader::requestIcon):
(WebCore::contentTypeFromResourceType):
(WebCore::CachedResourceLoader::checkInsecureContent):
(WebCore::CachedResourceLoader::allowedByContentSecurityPolicy):
(WebCore::CachedResourceLoader::determineRevalidationPolicy):
(WebCore::CachedResourceLoader::requestFavicon): Deleted.

  • loader/cache/CachedResourceLoader.h:
  • loader/icon/IconLoader.cpp:

(WebCore::IconLoader::startLoading):

Source/WebKit2:

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::maximumBufferingTime):

9:08 AM Changeset in webkit [218392] by Konstantin Tokarev
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION(r166799): LogsPageMessagesToSystemConsoleEnabled corrupts non-ASCII characters
https://bugs.webkit.org/show_bug.cgi?id=173470

Reviewed by Joseph Pecoraro.

ConsoleClient::printConsoleMessageWithArguments() incorrectly uses
const char* overload of StringBuilder::append() that assummes Latin1
encoding, not UTF8.

  • runtime/ConsoleClient.cpp:

(JSC::ConsoleClient::printConsoleMessageWithArguments):

8:34 AM Changeset in webkit [218391] by Adrian Perez de Castro
  • 2 edits in trunk/LayoutTests

REGRESSION(r215188?): Test platform/gtk/fast/forms/menulist-typeahead-find.html is failing
https://bugs.webkit.org/show_bug.cgi?id=171492

Unreviewed gardening.

  • platform/gtk/TestExpectations: The fixes needed for the test to pass

have landed, so the test can be unskipped.

7:35 AM Changeset in webkit [218390] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore/platform/gtk/po

Updated Spanish translation for WebKitGTK+
https://bugs.webkit.org/show_bug.cgi?id=173465

Patch by Daniel Mustieles <daniel.mustieles@gmail.com> on 2017-06-16
Rubber-stamped by Michael Catanzaro.

  • es.po:
7:17 AM Changeset in webkit [218389] by Carlos Garcia Campos
  • 3 edits
    1 delete in trunk/Source/WebKit2

[GTK][WPE] Remove WKCookieManagerSoup
https://bugs.webkit.org/show_bug.cgi?id=173467

Reviewed by Michael Catanzaro.

It's unused.

  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
  • UIProcess/API/C/soup/WKCookieManagerSoup.cpp: Removed.
  • UIProcess/API/C/soup/WKCookieManagerSoup.h: Removed.
7:16 AM Changeset in webkit [218388] by pvollan@apple.com
  • 3 edits in trunk/Source/WebCore

WebKit does not honor closed caption stroke width.
https://bugs.webkit.org/show_bug.cgi?id=173402

Reviewed by Eric Carlson.

WebKit currently has an upper limit on the stroke width returned from MACaptionAppearanceCopyFontDescriptorWithStrokeForStyle.
Since only half the stroke is visible because the stroke is drawn before the fill, double the stroke width from
MediaAccessibility to get the correct visual stroke width. Also, the stroke width returned from this function should not be
interpreted as CSS points, but as CSS pixels.

  • html/shadow/MediaControlElements.cpp:

(WebCore::MediaControlTextTrackContainerElement::updateTextStrokeStyle):

  • page/CaptionUserPreferencesMediaAF.cpp:

(WebCore::CaptionUserPreferencesMediaAF::captionStrokeWidthForFont):

4:24 AM Changeset in webkit [218387] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[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

Unreviewed gardening.

Patch by Fujii Hironori <Fujii Hironori> on 2017-06-16

  • platform/gtk/TestExpectations: Marked it Skip.
3:13 AM Changeset in webkit [218386] by Carlos Garcia Campos
  • 4 edits in trunk/Source/WebKit2

Unreviewed. Remove wrong headers check from some GTK+ API files.

Remove the WEBKIT_WEB_EXTENSION_H_INSIDE check since these are not actually shared.

  • UIProcess/API/gtk/WebKitEditorState.h:
  • UIProcess/API/gtk/WebKitOptionMenu.h:
  • UIProcess/API/gtk/WebKitPrintCustomWidget.h:
3:03 AM Changeset in webkit [218385] by Claudio Saavedra
  • 2 edits in trunk/LayoutTests

[WPE] fast/animation gardening

Unreviewed gardening.

fast/animation tests are flaky, report and mark.
fast/animation/height-auto-transition-computed-value.html is not really failing, unmark.
storage/domstorage/sessionstorage/set-item-synchronous-keydown.html
depends on event injection in WTR that is not implemented in WPE
yet, reported and marked as failing.

  • platform/wpe/TestExpectations:
12:36 AM Changeset in webkit [218384] by pvollan@apple.com
  • 2 edits in trunk/Source/WebCore

[Win] WebKit renders scrollbar wrong at 125% scale.
https://bugs.webkit.org/show_bug.cgi?id=173363

Reviewed by Darin Adler.

Scrollbars are drawn with the GDI function DrawThemeBackground. Sometimes, the GDI clip
rectangle will be too small since we clamp a FloatRect to integer values when setting the
GDI clip rectangle.

  • platform/graphics/win/GraphicsContextWin.cpp:

(WebCore::GraphicsContextPlatformPrivate::clip):

Jun 15, 2017:

11:15 PM Changeset in webkit [218383] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

[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:
11:03 PM Changeset in webkit [218382] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

REGRESSION(r218325): [GTK] Runtime critical warnings running layout tests that show a popup menu
https://bugs.webkit.org/show_bug.cgi?id=173421

Reviewed by Carlos Alberto Lopez Perez.

In r218325 I forgot to create a WebKitPopupMenu or WebPopupMenuProxyGtk depending on whether the view is a
WebKitWebView or not.

  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::createPopupMenuProxy):

9:38 PM Changeset in webkit [218381] by mark.lam@apple.com
  • 8 edits in trunk/Source

Add a JSRunLoopTimer registry in VM.
https://bugs.webkit.org/show_bug.cgi?id=173429
<rdar://problem/31287961>

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

This way, we can be sure we've got every JSRunLoopTimer instance covered if we
need to change their run loop (e.g. when setting to the WebThread's run loop).

  • heap/Heap.cpp:

(JSC::Heap::Heap):
(JSC::Heap::setRunLoop): Deleted.

  • heap/Heap.h:

(JSC::Heap::runLoop): Deleted.

  • runtime/JSRunLoopTimer.cpp:

(JSC::JSRunLoopTimer::JSRunLoopTimer):
(JSC::JSRunLoopTimer::setRunLoop):
(JSC::JSRunLoopTimer::~JSRunLoopTimer):

  • runtime/VM.cpp:

(JSC::VM::VM):
(JSC::VM::registerRunLoopTimer):
(JSC::VM::unregisterRunLoopTimer):
(JSC::VM::setRunLoop):

  • runtime/VM.h:

(JSC::VM::runLoop):

Source/WebCore:

No new tests needed because:

  1. it's already covered: it was also originally discovered by our API tests while running on the iOS simulator. The test was intermittently failing on a debug build.
  2. the issue is racy (it depends on a JSRunLoopTimer firing at the right time). Hence, it's non trivial to write a better test than the one we already have.
  • bindings/js/CommonVM.cpp:

(WebCore::commonVMSlow):

9:06 PM Changeset in webkit [218380] by Wenson Hsieh
  • 4 edits in trunk/Source/WebKit/mac

[iOS DnD] [WK1] Dropping links onto UIWebViews should not trigger navigation by default
https://bugs.webkit.org/show_bug.cgi?id=173454
<rdar://problem/31720671>

Reviewed by Tim Horton.

Adds -webView:dragDestinationActionMaskForSession: as SPI to WebUIDelegate.
If unimplemented, the default UI delegate allows all actions except for URL loading.

  • DefaultDelegates/WebDefaultUIDelegate.mm:

(-[WebDefaultUIDelegate webView:dragDestinationActionMaskForSession:]):

  • WebView/WebUIDelegatePrivate.h:
  • WebView/WebView.mm:

(-[WebView dragDestinationActionMaskForSession:]):

8:55 PM Changeset in webkit [218379] by commit-queue@webkit.org
  • 4 edits in trunk/Source/JavaScriptCore

[Cocoa] Modernize some internal initializers to use instancetype instead of id
https://bugs.webkit.org/show_bug.cgi?id=173112

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-06-15
Reviewed by Wenson Hsieh.

  • API/JSContextInternal.h:
  • API/JSWrapperMap.h:
  • API/JSWrapperMap.mm:

(-[JSObjCClassInfo initForClass:]):
(-[JSWrapperMap initWithGlobalContextRef:]):

8:26 PM Changeset in webkit [218378] by timothy_horton@apple.com
  • 5 edits in trunk/Source/WebKit2

Null deref under ViewGestureController::endSwipeGesture (navigationGestureDidEnd)
https://bugs.webkit.org/show_bug.cgi?id=173441
<rdar://problem/25876512>

Reviewed by Simon Fraser.

This is a speculative fix for a crash that we don't have repro steps for.

In a few places, ViewGestureController looks itself up by pageID (in cases
where we're in an asynchronous callback), and then calls some
function on it (endSwipeGesture, or something that will get there).
However, if in the meantime an API client has turned the swipe gesture
on and off, the page's ViewGestureController will be a different one
than the one that originally started this process, with fresh state,
and nullptrs in all sorts of places, ripe for dereferencing.

To fix this, instead of just looking ViewGestureController up by
pageID, also keep track of the current gestureID, process-wide (previously
the gestureID was per-ViewGestureController), and only return the
ViewGestureController if it's currently processing the same gesture
that started the asynchronous task.

  • UIProcess/Cocoa/ViewGestureController.cpp:

(WebKit::ViewGestureController::controllerForGesture):
(WebKit::ViewGestureController::takeNextGestureID):
(WebKit::ViewGestureController::willBeginGesture):
(WebKit::ViewGestureController::didEndGesture):
(WebKit::ViewGestureController::gestureControllerForPage): Deleted.

  • UIProcess/Cocoa/ViewGestureController.h:

Add helpers that set and reset activeGestureType and currentGestureID together.
Make gesture IDs process global, to avoid two ViewGestureControllers using the same IDs.

  • UIProcess/ios/ViewGestureControllerIOS.mm:

(WebKit::ViewGestureController::beginSwipeGesture):
(WebKit::ViewGestureController::endSwipeGesture):
(WebKit::ViewGestureController::removeSwipeSnapshot):

  • UIProcess/mac/ViewGestureControllerMac.mm:

(WebKit::ViewGestureController::didCollectGeometryForMagnificationGesture):
(WebKit::ViewGestureController::handleMagnificationGestureEvent):
(WebKit::ViewGestureController::endMagnificationGesture):
(WebKit::ViewGestureController::beginSwipeGesture):
(WebKit::ViewGestureController::forceRepaintIfNeeded):
(WebKit::ViewGestureController::removeSwipeSnapshot):
Adopt willBeginGesture/didEndGesture and controllerForGesture.

8:08 PM Changeset in webkit [218377] by commit-queue@webkit.org
  • 5 edits
    1 delete in trunk

REGRESSION: AirPlay button is incorrectly highlighted in inline and fullscreen
https://bugs.webkit.org/show_bug.cgi?id=173446

Patch by Antoine Quint <Antoine Quint> on 2017-06-15
Reviewed by Dean Jackson.

Source/WebCore:

A button's color should be applied to its <picture> element, not the containing
<button> element.

  • Modules/modern-media-controls/controls/airplay-button.css:

(button.airplay.on > picture):
(button.airplay.on): Deleted.

LayoutTests:

Update the test to explicitly check the color on the <picture>. We also make the test check
the color with a value depending on the platform, so we can use a single expectation file.

  • media/modern-media-controls/airplay-button/airplay-button-on-expected.txt:
  • media/modern-media-controls/airplay-button/airplay-button-on.html:
  • platform/ios/media/modern-media-controls/airplay-button/airplay-button-on-expected.txt: Removed.
7:55 PM Changeset in webkit [218376] by Matt Baker
  • 21 edits
    9 adds in trunk

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.

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.
7:49 PM Changeset in webkit [218375] by jer.noble@apple.com
  • 14 edits
    2 adds in trunk

[WebRTC] Removing a MediaStreamTrack from a MediaStream reports no recording to WebKit clients
https://bugs.webkit.org/show_bug.cgi?id=173398
<rdar://problem/32592961>

Reviewed by Eric Carlson.

Source/WebCore:

API Test: Tests/WebKit2/MediaStreamTrackDetached.mm

Move the definition of a MediaStream as a MediaProducer from the stream itself to its constituent
MediaStreamTracks. This ensures that, even if a MediaStreamTrack is removed from its stream, the
document (and thus the clients) are notified that media capture is still occurring.

Though MediaStream is no longer a MediaProducer, it still uses the MediaProducer's state concept
to determine when to fire events. However it's mediaState() implementation will be moved into
MediaStreamTrack, and will instead simply bitwise-or together each of it's track's mediaState().

The MediaStream notifies the document that its state has changed asynchronously, so do the same
for MediaStreamTrack (which reduces the number of calls to the client when changes all occur
during a single run loop).

Because the MediaStreamTrackPrivate may be started externally (not by the MediaStreamTrack directly),
add a new client method that notifies observers when the track has been started, and the
MediaStreamTrack will use this notification to update the document with it's new mediaState().

  • Modules/mediastream/MediaStream.cpp:

(WebCore::MediaStream::MediaStream):
(WebCore::MediaStream::~MediaStream):
(WebCore::MediaStream::mediaState):
(WebCore::MediaStream::statusDidChange):
(WebCore::MediaStream::characteristicsChanged):
(WebCore::MediaStream::pageMutedStateDidChange): Deleted.

  • Modules/mediastream/MediaStream.h:
  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::MediaStreamTrack::MediaStreamTrack):
(WebCore::MediaStreamTrack::~MediaStreamTrack):
(WebCore::MediaStreamTrack::pageMutedStateDidChange):
(WebCore::MediaStreamTrack::mediaState):
(WebCore::MediaStreamTrack::trackStarted):
(WebCore::MediaStreamTrack::configureTrackRendering):
(WebCore::MediaStreamTrack::stop):
(WebCore::MediaStreamTrack::document):

  • Modules/mediastream/MediaStreamTrack.h:

(WebCore::MediaStreamTrack::source):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
  • platform/mediastream/MediaStreamPrivate.cpp:

(WebCore::MediaStreamPrivate::trackStarted):

  • platform/mediastream/MediaStreamPrivate.h:
  • platform/mediastream/MediaStreamTrackPrivate.cpp:

(WebCore::MediaStreamTrackPrivate::sourceStarted):

  • platform/mediastream/MediaStreamTrackPrivate.h:
  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::start):

  • platform/mediastream/RealtimeMediaSource.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2/MediaStreamTrackDetached.mm: Added.

(-[MediaStreamTrackDetachedUIDelegate _webView:requestUserMediaAuthorizationForDevices:url:mainFrameURL:decisionHandler:]):
(-[MediaStreamTrackDetachedUIDelegate _webView:checkUserMediaPermissionForURL:mainFrameURL:frameIdentifier:decisionHandler:]):
(-[MediaStreamTrackDetachedUIDelegate _webView:mediaCaptureStateDidChange:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit2/mediastreamtrack-detached.html: Added.
6:43 PM Changeset in webkit [218374] by Simon Fraser
  • 3 edits in trunk/Source/WebKit2

[iOS WK2] YouTube videos flash at the wrong place at the end of rotation
https://bugs.webkit.org/show_bug.cgi?id=173445
rdar://problem/31584852

Reviewed by Tim Horton.

In MobileSafari where WKWebView rotation uses _dynamicViewportUpdateModes, we could do a
visibleContentRect update at the end of rotation which computed a bad layoutViewportRect,
because it used a m_baseLayoutViewportSize from the old orientation.

We have actually sent a new m_baseLayoutViewportSize to the UI process by this point in
a layer tree commit, but _didCommitLayerTree: ignored it because we had a _dynamicViewportUpdateMode.

Fix is to always update the layout viewport data from the web process, since during dynamic
viewport updates, we still need these data to compute rectangles sent back to the web process via
visible content rect updates.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _didCommitLayerTree:]):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::computeCustomFixedPositionRect):
(WebKit::WebPageProxy::updateLayoutViewportParameters): Cleanup.

6:39 PM Changeset in webkit [218373] by Simon Fraser
  • 35 edits in trunk/Source/WebCore

Use WTFLogAlways for debug logging so that it shows up in device system logs
https://bugs.webkit.org/show_bug.cgi?id=173450

Reviewed by Tim Horton.

If you want to showRenderTree() on-device, the result doesn't show in system log so you can't see it
Switch to WTFLogAlways to fix this, for all the debug logging in WebCore.

Also WKError () -> WKError() in the old WAK code, to allow for easier searching pending cleanup.

  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::~AudioContext):

  • Modules/webaudio/AudioNode.cpp:

(WebCore::AudioNode::~AudioNode):
(WebCore::AudioNode::ref):
(WebCore::AudioNode::finishDeref):
(WebCore::AudioNode::printNodeCounts):

  • bridge/objc/objc_instance.mm:

(ObjcInstance::invokeObjcMethod):

  • bridge/objc/objc_utility.mm:

(JSC::Bindings::convertObjcValueToValue):

  • css/StyleProperties.cpp:

(WebCore::StyleProperties::showStyle):

  • dom/DocumentMarkerController.cpp:

(DocumentMarkerController::showMarkers):

  • dom/Node.cpp:

(WebCore::Node::showNode):
(WebCore::Node::showNodePathForThis):
(WebCore::traverseTreeAndMark):

  • dom/Position.cpp:

(WebCore::Position::debugPosition):
(WebCore::Position::showAnchorTypeAndOffset):

  • dom/Range.cpp:

(showTree):

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::debugRenderer):

  • editing/VisiblePosition.cpp:

(WebCore::VisiblePosition::debugPosition):

  • editing/VisibleSelection.cpp:

(WebCore::VisibleSelection::debugPosition):

  • history/HistoryItem.cpp:

(WebCore::HistoryItem::showTreeWithIndent):

  • html/parser/HTMLFormattingElementList.cpp:

(WebCore::HTMLFormattingElementList::show):

  • inspector/DOMPatchSupport.cpp:

(WebCore::DOMPatchSupport::dumpMap):

  • page/scrolling/ScrollingStateTree.cpp:

(showScrollingStateTree):

  • platform/audio/ios/AudioDestinationIOS.cpp:

(WebCore::AudioDestinationIOS::frameSizeChangedProc):

  • platform/graphics/GraphicsLayer.cpp:

(showGraphicsLayerTree):

  • platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::dump):

  • platform/ios/wak/WAKView.mm:

(+[WAKView _wrapperForViewRef:]):
(-[WAKView displayRect:]):
(-[WAKView displayRectIgnoringOpacity:inContext:]):

  • platform/ios/wak/WKUtilities.c:

(WKRelease):

  • platform/ios/wak/WKView.mm:

(_WKViewSetViewContext):
(WKViewGetBounds):
(WKViewGetFrame):
(_WKViewRecursivelyInvalidateGState):
(WKViewSetFrameOrigin):
(WKViewSetFrameSize):
(WKViewGetWindow):
(WKViewGetSubviews):
(WKViewAddSubview):
(WKViewRemoveFromSuperview):
(WKViewFirstChild):
(WKViewNextSibling):
(WKViewTraverseNext):
(WKViewGetVisibleRect):
(WKViewConvertRectToSuperview):
(WKViewConvertRectToBase):
(WKViewConvertPointToSuperview):
(WKViewConvertPointFromSuperview):
(WKViewConvertPointToBase):
(_WKViewGetAncestorViewsIncludingView):
(WKViewConvertPointFromBase):
(WKViewConvertRectFromSuperview):
(WKViewConvertRectFromBase):
(WKViewGetAutoresizingMask):
(WKViewSetAutoresizingMask):

  • platform/text/TextEncodingRegistry.cpp:

(WebCore::dumpTextEncodingNameMap):

  • rendering/CounterNode.cpp:

(WebCore::showTreeAndMark):

  • rendering/InlineBox.cpp:

(WebCore::InlineBox::showLineBox):

  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::showLineBox):

  • rendering/RenderCounter.cpp:

(showCounterRendererTree):

  • rendering/RenderLayer.cpp:

(WebCore::showLayerTree):

  • rendering/RenderObject.cpp:

(WebCore::showRenderTreeLegend):
(WebCore::RenderObject::showRegionsInformation):
(WebCore::RenderObject::showRenderObject):
(WebCore::printRenderTreeForLiveDocuments):
(WebCore::printLayerTreeForLiveDocuments):

  • rendering/SimpleLineLayoutFunctions.cpp:

(WebCore::SimpleLineLayout::printPrefix):
(WebCore::SimpleLineLayout::showLineLayoutForFlow):

  • rendering/svg/SVGResources.cpp:

(WebCore::SVGResources::dump):

  • rendering/svg/SVGResourcesCycleSolver.cpp:

(WebCore::SVGResourcesCycleSolver::resolveCycles):

  • rendering/svg/SVGTextLayoutAttributes.cpp:

(WebCore::dumpSVGCharacterDataMapValue):
(WebCore::SVGTextLayoutAttributes::dump):

  • rendering/svg/SVGTextLayoutEngine.cpp:

(WebCore::dumpTextBoxes):
(WebCore::SVGTextLayoutEngine::finishLayout):

6:07 PM Changeset in webkit [218372] by mmaxfield@apple.com
  • 8 edits in trunk/Source/WebCore

Removing stray whitespace after r218371
https://bugs.webkit.org/show_bug.cgi?id=173043

Unreviewed.

No new tests because there is no behavior change.

  • platform/graphics/FontCascadeFonts.cpp:

(WebCore::shouldIgnoreRotation):
(WebCore::glyphDataForNonCJKCharacterWithGlyphOrientation):

  • platform/graphics/FontDescription.cpp:
  • platform/graphics/FontDescription.h:
  • platform/graphics/FontFamilySpecificationNull.h:
  • platform/graphics/cocoa/FontDescriptionCocoa.cpp:

(WebCore::SystemFontDatabase::systemFontCascadeList):
(WebCore::systemFontParameters):

  • platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:

(WebCore::FontFamilySpecificationCoreText::fontRanges):

  • platform/graphics/cocoa/FontFamilySpecificationCoreText.h:
5:56 PM Changeset in webkit [218371] by mmaxfield@apple.com
  • 12 edits
    11 adds in trunk

[Cocoa] Expand system-ui to include every item in the Core Text cascade list
https://bugs.webkit.org/show_bug.cgi?id=173043
<rdar://problem/21125708>

Reviewed by Simon Fraser.

Source/WebCore:

The concept of the system font on Cocoa platforms represents the entire Core Text cascade list.
However, previously, WebKit only represented system-ui by pulling out the first item in the Core
Text cascade list. Instead, we should make all text rendered with "system-ui" match what the
platform would natively render.

Previously, we walked through the strings in the font-family property and looked them up one by
one. However, now we want to abstract this idea of a font family to possibly hold a
CTFontDescriptorRef instead of a string. This way, we expand a font-family list of ["fontA",
"system-ui", "fontB"] to ["fontA", ... a bunch of CTFontDescriptorRefs ..., "FontB"]. We can
then modify the consumer of this object to have two codepaths: the old string-based codepath,
and a new, platform-specific codepath which simply embeds the CTFontDesriptorRefs inside a Font
object.

We don't want to simply pull out the family name from each item in the Core Text fallback list
because that is a lossy translation. There is more information in these font descriptors which
cannot be represented by CSS. Therefore, we must keep the descriptors alive and add the new
codepath for them.

We also don't want to run the CSS font matching algorithm on each member of the Core Text
fallback list because it may yield different results from Core Text's font matching algorithm.
Our goal is to draw text as closely as possible to the system APIs. If we ran it, we may find
a font which is closer to the requested traits, but it would look out of place on the system.

This new codepath is only enabled on macOS High Sierra and iOS 11, because enabling it on all
operating systems would make fixing https://bugs.webkit.org/show_bug.cgi?id=173300 impossible.

Tests: fast/text/system-font-fallback-emoji.html

fast/text/system-font-fallback.html
fast/text/system-font-zero-size.html

  • WebCore.xcodeproj/project.pbxproj:
  • page/MemoryRelease.cpp:

(WebCore::releaseNoncriticalMemory):

  • platform/graphics/FontCascadeFonts.cpp:

(WebCore::realizeNextFallback): The consumer of our new data type. Now uses WTF::visit().
(WebCore::FontCascadeFonts::realizeFallbackRangesAt): Now that the number of items to test
against the current character is larger than the number of strings in the font-family list,
we need to update the existing code to use the correct value.

  • platform/graphics/FontDescription.cpp: Default implementation for non-Cocoa ports.

(WebCore::FontDescription::invalidateCaches):
(WebCore::FontCascadeDescription::effectiveFamilyCount):
(WebCore::FontCascadeDescription::effectiveFamilyAt):

  • platform/graphics/FontDescription.h: Our new data type is a Variant of AtomicString and a

platform-specific class. Cocoa uses a class that holds a CTFontDescriptorRef and other ports
use an empty non-constructable class.

  • platform/graphics/FontFamilySpecificationNull.h: Added. The empty non-constructable

class.
(WebCore::FontFamilySpecificationNull::fontRanges):

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::fontCacheRegisteredFontsChangedNotificationCallback):
(WebCore::FontCache::platformInit): Changing the system language will change the system font
fallback list, so we need to listen to this notification. This also matters for
FontCache::systemFallbackForCharacters(), so we should build off the same callback we are
already using for font installation.
(WebCore::invalidateFontCache):

  • platform/graphics/cocoa/FontDescriptionCocoa.cpp: Added. The platform-specific creation of

our CTFontDescriptorRefs. We hold them cached in a SystemFontDatabase.
(WebCore::SystemFontDatabase::CoreTextCascadeListParameters::CoreTextCascadeListParameters):
(WebCore::SystemFontDatabase::CoreTextCascadeListParameters::isHashTableDeletedValue):
(WebCore::SystemFontDatabase::CoreTextCascadeListParameters::operator==):
(WebCore::SystemFontDatabase::CoreTextCascadeListParameters::hash):
(WebCore::SystemFontDatabase::singleton):
(WebCore::SystemFontDatabase::systemFontCascadeList):
(WebCore::SystemFontDatabase::clear):
(WebCore::SystemFontDatabase::SystemFontDatabase):
(WebCore::SystemFontDatabase::applyWeightAndItalics):
(WebCore::SystemFontDatabase::removeCascadeList):
(WebCore::SystemFontDatabase::computeCascadeList):
(WebCore::SystemFontDatabase::CoreTextCascadeListParametersHash::hash):
(WebCore::SystemFontDatabase::CoreTextCascadeListParametersHash::equal):
(WebCore::isSystemFontString):
(WebCore::systemFontParameters):
(WebCore::FontDescription::invalidateCaches):
(WebCore::FontCascadeDescription::effectiveFamilyCount): We don't store the result of this
because it would probably be a bad idea to increase the size of every single FontCascade just
in case it might ask for the system font. Most fonts never mention system-ui. Because it's so
rare, we can just recalculate the result of this as necessary. This shouldn't be slow because
the results are cached.
(WebCore::FontCascadeDescription::effectiveFamilyAt):

  • platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp: Added.

(WebCore::FontFamilySpecificationCoreText::fontRanges): Create a FontRanges from a
CTFontDescriptorRef.

  • platform/graphics/cocoa/FontFamilySpecificationCoreText.h: Added.

(WebCore::FontFamilySpecificationCoreText::FontFamilySpecificationCoreText):

  • platform/graphics/ios/FontCacheIOS.mm:

(WebCore::platformFontWithFamilySpecialCase):

  • platform/graphics/mac/FontCacheMac.mm:

(WebCore::platformFontWithFamilySpecialCase):

LayoutTests:

  • fast/text/system-font-fallback-emoji-expected.txt: Added.
  • fast/text/system-font-fallback-emoji.html: Added.
  • fast/text/system-font-fallback-expected.html: Added.
  • fast/text/system-font-fallback.html: Added.
  • fast/text/system-font-zero-size-expected.txt: Added.
  • fast/text/system-font-zero-size.html: Added.
  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/mac/fast/text/international/system-language/system-font-punctuation-expected.png: Added.
5:45 PM Changeset in webkit [218370] by ddkilzer@apple.com
  • 3 edits
    3 deletes in trunk/Source/WebCore

Revert: [iOS] Generate a simulated crash when the WebThread starts in MobileSafari
<https://webkit.org/b/173386>
<rdar://problem/32776426>

Revert r218347 and r218339 since we're going to take a different
approach to investigating a crash on the WebThread.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/ios/CrashReporterSupportSoftLink.h: Remove.
  • platform/ios/CrashReporterSupportSoftLink.mm: Remove.
  • platform/ios/wak/WebCoreThread.mm:

(WebThreadEnable):

  • platform/spi/ios/CrashReporterSupportSPI.h: Remove.
5:16 PM Changeset in webkit [218369] by Matt Lewis
  • 14 edits
    2 deletes in trunk

Unreviewed, rolling out r218365.

The revision caused API timeouts on all builds.

Reverted changeset:

"[WebRTC] Removing a MediaStreamTrack from a MediaStream
reports no recording to WebKit clients"
https://bugs.webkit.org/show_bug.cgi?id=173398
http://trac.webkit.org/changeset/218365

4:49 PM Changeset in webkit [218368] by Simon Fraser
  • 10 edits in trunk/Source/WebCore

Allow use of Layout* TextStream operators in WebKit2
https://bugs.webkit.org/show_bug.cgi?id=173440

Reviewed by Zalan Bujtas.

Export TextStream& operator<< for LayoutPoint, LayoutSize and LayoutRect so that
WebKit2 can log them.

Use #pragma once in these geometry headers.

  • platform/graphics/FloatPoint.h:
  • platform/graphics/FloatRect.h:
  • platform/graphics/FloatSize.h:
  • platform/graphics/IntPoint.h:
  • platform/graphics/IntRect.h:
  • platform/graphics/IntSize.h:
  • platform/graphics/LayoutPoint.h:
  • platform/graphics/LayoutRect.h:
  • platform/graphics/LayoutSize.h:
4:34 PM Changeset in webkit [218367] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Modern media controls tests error in Button.js
https://bugs.webkit.org/show_bug.cgi?id=173439

Patch by Antoine Quint <Antoine Quint> on 2017-06-15
Reviewed by Dean Jackson.

Tests would sometime yield an error when commit() would be called and the _imageSource
ivar hadn't been set. To more safely commit the mask image when it's loaded, we now use
a markDirtyProperty() call and a commitProperty() override to ensure that we cover the
case where we want to commit the mask image, and for other commits not to have to worry
about the mask image being defined.

  • Modules/modern-media-controls/controls/button.js:

(Button.prototype.commitProperty):
(Button.prototype._updateImage):
(Button.prototype.commit): Deleted.

3:54 PM Changeset in webkit [218366] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Marked webrtc/video-unmute.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=172879

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
3:48 PM Changeset in webkit [218365] by jer.noble@apple.com
  • 14 edits
    2 adds in trunk

[WebRTC] Removing a MediaStreamTrack from a MediaStream reports no recording to WebKit clients
https://bugs.webkit.org/show_bug.cgi?id=173398
<rdar://problem/32592961>

Reviewed by Eric Carlson.

Source/WebCore:

API Test: Tests/WebKit2/MediaStreamTrackDetached.mm

Move the definition of a MediaStream as a MediaProducer from the stream itself to its constituent
MediaStreamTracks. This ensures that, even if a MediaStreamTrack is removed from its stream, the
document (and thus the clients) are notified that media capture is still occurring.

Though MediaStream is no longer a MediaProducer, it still uses the MediaProducer's state concept
to determine when to fire events. However it's mediaState() implementation will be moved into
MediaStreamTrack, and will instead simply bitwise-or together each of it's track's mediaState().

The MediaStream notifies the document that its state has changed asynchronously, so do the same
for MediaStreamTrack (which reduces the number of calls to the client when changes all occur
during a single run loop).

Because the MediaStreamTrackPrivate may be started externally (not by the MediaStreamTrack directly),
add a new client method that notifies observers when the track has been started, and the
MediaStreamTrack will use this notification to update the document with it's new mediaState().

  • Modules/mediastream/MediaStream.cpp:

(WebCore::MediaStream::MediaStream):
(WebCore::MediaStream::~MediaStream):
(WebCore::MediaStream::mediaState):
(WebCore::MediaStream::statusDidChange):
(WebCore::MediaStream::characteristicsChanged):
(WebCore::MediaStream::pageMutedStateDidChange): Deleted.

  • Modules/mediastream/MediaStream.h:
  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::MediaStreamTrack::MediaStreamTrack):
(WebCore::MediaStreamTrack::~MediaStreamTrack):
(WebCore::MediaStreamTrack::pageMutedStateDidChange):
(WebCore::MediaStreamTrack::mediaState):
(WebCore::MediaStreamTrack::trackStarted):
(WebCore::MediaStreamTrack::configureTrackRendering):
(WebCore::MediaStreamTrack::stop):
(WebCore::MediaStreamTrack::document):

  • Modules/mediastream/MediaStreamTrack.h:

(WebCore::MediaStreamTrack::source):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
  • platform/mediastream/MediaStreamPrivate.cpp:

(WebCore::MediaStreamPrivate::trackStarted):

  • platform/mediastream/MediaStreamPrivate.h:
  • platform/mediastream/MediaStreamTrackPrivate.cpp:

(WebCore::MediaStreamTrackPrivate::sourceStarted):

  • platform/mediastream/MediaStreamTrackPrivate.h:
  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::start):

  • platform/mediastream/RealtimeMediaSource.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2/MediaStreamTrackDetached.mm: Added.

(-[MediaStreamTrackDetachedUIDelegate _webView:requestUserMediaAuthorizationForDevices:url:mainFrameURL:decisionHandler:]):
(-[MediaStreamTrackDetachedUIDelegate _webView:checkUserMediaPermissionForURL:mainFrameURL:frameIdentifier:decisionHandler:]):
(-[MediaStreamTrackDetachedUIDelegate _webView:mediaCaptureStateDidChange:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit2/mediastreamtrack-detached.html: Added.
3:26 PM Changeset in webkit [218364] by sbarati@apple.com
  • 3 edits in trunk/LayoutTests

[iOS wk2] Layout Test perf/object-keys.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=171617
<rdar://problem/31977874>

Reviewed by Mark Lam.

Increase the starting magnitude of the object-keys test to
remove variance from having objects with a very few number of keys.

  • perf/object-keys.html:
  • platform/ios-wk2/TestExpectations:
3:24 PM Changeset in webkit [218363] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.3.5

Tag Safari-603.3.5.

3:23 PM Changeset in webkit [218362] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-604.1.25.3.2

Tag Safari-604.1.25.3.2.

3:20 PM Changeset in webkit [218361] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-604.1.25.4.2

Tag Safari-604.1.25.4.2.

3:08 PM Changeset in webkit [218360] by Matt Lewis
  • 3 edits in trunk/LayoutTests

Marked webrtc/datachannel/basic.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=172922

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
  • platform/wk2/TestExpectations:
2:50 PM Changeset in webkit [218359] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Search highlight doesn't show up in resources when paused
https://bugs.webkit.org/show_bug.cgi?id=173438
<rdar://problem/32800114>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-06-15
Reviewed by Matt Baker.

  • UserInterface/Views/TextEditor.js:

(WebInspector.TextEditor.prototype.revealPosition.revealAndHighlightLine):
Previously we were bailing if executionLineNumber was NaN, which means that when
we were paused we were incorrectly disabling highlights in any resource that does
not have the active callframe. Relax this and make it match the intended behavior
of only disabling highlights if the highlight line matches the execution line.

2:38 PM Changeset in webkit [218358] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit/win

[Win] WebKit shouldn't include the forwarding header of WebKit itself
https://bugs.webkit.org/show_bug.cgi?id=173352

Patch by Fujii Hironori <Fujii Hironori> on 2017-06-15
Reviewed by Alex Christensen.

  • WebKitPrefix.h: Include WebKit.h of DerivedSources/WebKit instead of DerivedSources/ForwardingHeaders.
2:35 PM Changeset in webkit [218357] by Konstantin Tokarev
  • 2 edits in trunk

[cmake] ADD_PRECOMPILED_HEADER should append OBJECT_DEPENDS, not overwrite it
https://bugs.webkit.org/show_bug.cgi?id=173428

Reviewed by Michael Catanzaro.

Right now, if any of source files that are passed to
ADD_PRECOMPILED_HEADER have non-empty OBJECT_DEPENDS property (e.g.
changed with ADD_SOURCE_DEPENDENCIES call), its value is lost.

  • Source/cmake/WebKitMacros.cmake:
2:26 PM Changeset in webkit [218356] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

Uncaught Exception: TypeError: null is not an object (evaluating 'this.contentBrowser.contentViewForRepresentedObject')
https://bugs.webkit.org/show_bug.cgi?id=173425
<rdar://problem/32744172>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-06-15
Reviewed by Devin Rousso.

  • UserInterface/Views/ContentBrowserTabContentView.js:

(WebInspector.ContentBrowserTabContentView.prototype.shown):
Reorder slightly so the NavigationSidebar has its ContentBrowser set
before anyone tries to restore views in the sidebar.

  • UserInterface/Views/DebuggerSidebarPanel.js:

(WebInspector.DebuggerSidebarPanel.prototype.showDefaultContentView):
Try to select a script/resource content view instead of nothing.

(WebInspector.DebuggerSidebarPanel.prototype.saveStateToCookie):
When a resource is selected, save it using the normal path.

  • UserInterface/Views/NetworkSidebarPanel.js:

(WebInspector.NetworkSidebarPanel.prototype.canShowDifferentContentView):
Remove a reference to an unused / stale member variable.

2:19 PM Changeset in webkit [218355] by clopez@igalia.com
  • 2 edits in trunk/Tools

REGRESSION(r218344): [WPE] Thousands of layout test crashes
https://bugs.webkit.org/show_bug.cgi?id=173433

Unreviewed.

  • wpe/jhbuild.modules: Revert the update of WPEBackend-mesa.
1:25 PM Changeset in webkit [218354] by matthew_hanson@apple.com
  • 1 edit in branches/safari-604.1.25.4-branch/Source/WebCore/page/Settings.in

Follow-up fix for rdar://problem/32621736

1:22 PM Changeset in webkit [218353] by matthew_hanson@apple.com
  • 1 edit in branches/safari-604.1.25.3-branch/Source/WebCore/page/Settings.in

Follow-up fix for rdar://problem/32621736

1:15 PM Changeset in webkit [218352] by Jonathan Bedard
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix after r218336

  • platform/spi/cocoa/PassKitSPI.h: Add missing #ifdefs for Internal builds.
1:08 PM Changeset in webkit [218351] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebCore

Ensure we only log changes to the ScriptedAnimationController suspended state in debug builds
https://bugs.webkit.org/show_bug.cgi?id=173423

Patch by Antoine Quint <Antoine Quint> on 2017-06-15
Reviewed by Tim Horton.

We added logging for when the suspended state of the scripted animation controller would change in
webkit.org/b/173326. It was meant to only be enabled in debug builds and we actually did the wrong
thing and enabled it in non-debug builds.

We also added a setting that wasn't used and that we are removing here.

  • dom/ScriptedAnimationController.cpp:

(WebCore::ScriptedAnimationController::logSuspendCount):

  • page/Settings.in:
  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::resetToConsistentState):
(WebCore::InternalSettings::shouldLogScritedAnimationControllerSuspensionChange): Deleted.
(WebCore::InternalSettings::setShouldLogScritedAnimationControllerSuspensionChange): Deleted.

  • testing/InternalSettings.h:
  • testing/InternalSettings.idl:
1:02 PM Changeset in webkit [218350] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Add logging to MachineStackMarker to try to diagnose crashes in the wild
https://bugs.webkit.org/show_bug.cgi?id=173427

Reviewed by Mark Lam.

This patch adds some logging to the MachineStackMarker constructor
to help figure out where we are seeing crashes. Since macOS does
not support os_log_info my hope is that if we set all the callee
save registers before making any calls in the C++ code we can
figure out which calls is the source of the crash. We also, set
all the caller save registers before returning in case some
weirdness is happening in the Heap constructor.

This logging should not matter from a performance perspective. We
only create MachineStackMarkers when we are creating a new VM,
which is already expensive.

  • heap/MachineStackMarker.cpp:

(JSC::MachineThreads::MachineThreads):

12:49 PM Changeset in webkit [218349] by Chris Dumez
  • 2 edits in trunk/Source/WTF

Fix typo in XPCSPI.h
https://bugs.webkit.org/show_bug.cgi?id=173426

Reviewed by Alex Christensen.

We should check if xpc_release is defined before defining it,
not xpc_retain.

  • wtf/spi/darwin/XPCSPI.h:
12:37 PM Changeset in webkit [218348] by Yusuke Suzuki
  • 10 edits
    1 add in trunk

[JSC] Implement Object.assign in C++
https://bugs.webkit.org/show_bug.cgi?id=173414

Reviewed by Saam Barati.

JSTests:

  • stress/object-assign-string-first.js: Added.

(shouldBe):
(source.get Symbol):
(source.get 1):
(source.get cocoa):

Source/JavaScriptCore:

Implementing Object.assign in JS is not so good compared to C++ version because,

  1. JS version allocates JS array for object own keys. And we allocate JSString / Symbol for each key.

But basically, they can be handled as UniquedStringImpl in C++. Allocating these cells are wasteful.

  1. While implementing builtins in JS offers some good type speculation chances, Object.assign is inherently super polymorphic.

So JS's type profile doesn't help well.

  1. We have a chance to introduce various fast path for Object.assign in C++.

This patch moves implementation from JS to C++. It achieves the above (1) and (2). (3) is filed in [1].

We can see 1.65x improvement in SixSpeed object-assign.es6.

baseline patched

object-assign.es6 643.3253+-8.0521 389.1075+-8.8840 definitely 1.6533x faster

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

  • builtins/ObjectConstructor.js:

(entries):
(assign): Deleted.

  • runtime/JSCJSValueInlines.h:

(JSC::JSValue::putInline):

  • runtime/JSCell.h:
  • runtime/JSCellInlines.h:

(JSC::JSCell::putInline):

  • runtime/JSObject.cpp:

(JSC::JSObject::put):

  • runtime/JSObject.h:
  • runtime/JSObjectInlines.h:

(JSC::JSObject::putInlineForJSObject):
(JSC::JSObject::putInline): Deleted.

  • runtime/ObjectConstructor.cpp:

(JSC::objectConstructorAssign):

12:29 PM Changeset in webkit [218347] by ddkilzer@apple.com
  • 5 edits in trunk/Source/WebCore

Build fix: [iOS] Generate a simulated crash when the WebThread starts in MobileSafari
<https://webkit.org/b/173386>
<rdar://problem/32776426>

  • platform/ios/CrashReporterSupportSoftLink.h:
  • platform/ios/CrashReporterSupportSoftLink.mm:
  • platform/ios/wak/WebCoreThread.mm:

(WebThreadEnable): Log to the console on iOS Simulator.

  • platform/spi/ios/CrashReporterSupportSPI.h:
  • CrashReporterSupport.h is not available on iOS Simulator, so restrict to iOS hardware only.
12:00 PM Changeset in webkit [218346] by Matt Lewis
  • 2 edits
    2 deletes in trunk/LayoutTests

REGRESSION (r218228): Layout Test editing/execCommand/strikethrough-uses-strike-tag.html is failing
https://bugs.webkit.org/show_bug.cgi?id=173375

Unreviewed test gardening.

Reverted an incorrect baseline and skipped a test causing test failures.

  • TestExpectations:
  • platform/mac-wk1/editing/execCommand/strikethrough-uses-strike-tag-expected.txt: Removed.
  • platform/win/editing/execCommand/strikethrough-uses-strike-tag-expected.txt: Removed.
11:59 AM Changeset in webkit [218345] by Chris Dumez
  • 5 edits in trunk/Source/WebCore

Unreviewed, rolling out r218318.

Seems to have caused an 11% PLT regression. Rolling out to
confirm.

Reverted changeset:

"Don't always recalc the style of display: contents elements."
https://bugs.webkit.org/show_bug.cgi?id=172753
http://trac.webkit.org/changeset/218318

11:44 AM Changeset in webkit [218344] by clopez@igalia.com
  • 5 edits in trunk/Tools

[WPE] The run-minibrowser script should allow to execute also a WPE launcher
https://bugs.webkit.org/show_bug.cgi?id=173061

Reviewed by Žan Doberšek.

Launch dyz <https://github.com/Igalia/dyz> with the script
run-minibrowser for the wpe port. It is now built as part of the
WPE dependencies with JHBuild.

  • Scripts/run-minibrowser:
  • Scripts/webkitdirs.pm:

(launcherPath):
(launcherName):

  • wpe/install-dependencies: Luajit is needed for building dyz.
  • wpe/jhbuild.modules: Add dyz and update the revision for WPEBackend-mesa.
11:11 AM Changeset in webkit [218343] by Wenson Hsieh
  • 25 edits in trunk

Using -[WebItemProviderPasteboard setItemProviders:] to swap out item providers before a drop breaks item provider loading
https://bugs.webkit.org/show_bug.cgi?id=173338
<rdar://problem/32777720>

Reviewed by Tim Horton.

Source/WebCore:

Currently, replacing the list of UIItemProviders right before a drop is handled results in
WebItemProviderPasteboard failing to load non-"public.content"-conformant items. This is because DragController
computes and sends to the UI process a list of UTIs to load (preferredTypeIdentifiers: one type identifier for
each item provider in WebItemProviderPasteboard). However, if the list of item providers changes immediately
before a drop is performed, WebItemProviderPasteboard will get into an inconsistent state where it has a
different number of preferred type identifiers to load than available item providers. This causes
WebItemProviderPasteboard to fail when choosing what type identifiers to load from each item provider.

To fix this, we instead have the web process propagate a list of supported type identifiers to the UI process,
which is a property of only the drop destination rather than both the destination and item providers. When
performing a drop, we then use the current item providers on WebItemProviderPasteboard to consult this list of
supported type identifiers to resolve our list of preferred type identifiers to load.

Globally renames updatePreferredTypeIdentifiers to updateSupportedTypeIdentifiers.

Tests:
DataInteractionTests.ExternalSourceOverrideDropFileUpload
DataInteractionTests.ExternalSourceOverrideDropInsertURL

  • page/DragController.cpp:

(WebCore::DragController::dragEnteredOrUpdated):
(WebCore::DragController::updateSupportedTypeIdentifiersForDragHandlingMethod):
(WebCore::DragController::updatePreferredTypeIdentifiersForDragHandlingMethod): Deleted.

  • page/DragController.h:
  • page/mac/DragControllerMac.mm:

(WebCore::DragController::updateSupportedTypeIdentifiersForDragHandlingMethod):
(WebCore::DragController::updatePreferredTypeIdentifiersForDragHandlingMethod): Deleted.

  • platform/DragData.h:
  • platform/PasteboardStrategy.h:
  • platform/PlatformPasteboard.h:
  • platform/ios/AbstractPasteboard.h:
  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::PlatformPasteboard::updateSupportedTypeIdentifiers):
(WebCore::PlatformPasteboard::updatePreferredTypeIdentifiers): Deleted.

  • platform/ios/WebItemProviderPasteboard.mm:

(-[WebItemProviderPasteboard init]):
(-[WebItemProviderPasteboard updateSupportedTypeIdentifiers:]):
(-[WebItemProviderPasteboard setItemProviders:]):
(-[WebItemProviderPasteboard typeIsAppropriateForSupportedTypes:]):
(-[WebItemProviderPasteboard typeIdentifierToLoadForRegisteredTypeIdentfiers:]):

Add logic to resolve preferred type identifiers from an item providers list of registered type identifiers.
This formerly existed on DragData.

(-[WebItemProviderPasteboard doAfterLoadingProvidedContentIntoFileURLs:synchronousTimeout:]):
(-[WebItemProviderPasteboard updatePreferredTypeIdentifiers:]): Deleted.

  • platform/mac/DragDataMac.mm:

Remove preferred type identifier resolution logic from DragData.

(WebCore::typeIsAppropriateForSupportedTypes): Deleted.
(WebCore::DragData::updatePreferredTypeIdentifiers): Deleted.

Source/WebKit/mac:

Rename updatePreferredTypeIdentifiers to updateSupportedTypeIdentifiers.

  • WebCoreSupport/WebPlatformStrategies.h:
  • WebCoreSupport/WebPlatformStrategies.mm:

(WebPlatformStrategies::updateSupportedTypeIdentifiers):
(WebPlatformStrategies::updatePreferredTypeIdentifiers): Deleted.

Source/WebKit2:

Rename updatePreferredTypeIdentifiers to updateSupportedTypeIdentifiers. Also, introduce
_webView:willPerformDropWithSession: as SPI on WKUIDelegate.

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:

(WebKit::WebPasteboardProxy::updateSupportedTypeIdentifiers):
(WebKit::WebPasteboardProxy::updatePreferredTypeIdentifiers): Deleted.

  • UIProcess/WebPasteboardProxy.h:
  • UIProcess/WebPasteboardProxy.messages.in:
  • WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:

(WebKit::WebPlatformStrategies::updateSupportedTypeIdentifiers):
(WebKit::WebPlatformStrategies::updatePreferredTypeIdentifiers): Deleted.

  • WebProcess/WebCoreSupport/WebPlatformStrategies.h:

Tools:

Adds new unit tests to ensure that -_webView:willPerformDropWithSession: can be used to filter out drag items
used by WebKit when handling a drop. These tests ensure that WebItemProviderPasteboard is still able to handle
these remaining items on drop.

  • TestWebKitAPI/Tests/ios/DataInteractionTests.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/ios/DataInteractionSimulator.h:
  • TestWebKitAPI/ios/DataInteractionSimulator.mm:

Add -overridePerformDropBlock, which can be set to provide custom handling of dropped items.

(-[DataInteractionSimulator _webView:willPerformDropWithSession:]):

10:49 AM Changeset in webkit [218342] by commit-queue@webkit.org
  • 96 edits in trunk/Source/WebCore

[WebIDL] Replace general inclusion of JSDOMConvert.h with inclusion of individual converter files to reduce unnecessary inclusion
https://bugs.webkit.org/show_bug.cgi?id=173392

Patch by Sam Weinig <sam@webkit.org> on 2017-06-15
Reviewed by Tim Horton.

Stop including the umbrella header JSDOMConvert.h in every generated bindings and
instead only include the specific converter needed. Then, go around and add all the
now missing includes that used to be obtained transitively.

  • Modules/indexeddb/IDBRequest.cpp:
  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
  • Modules/plugins/QuickTimePluginReplacement.mm:
  • bindings/js/IDBBindingUtilities.cpp:
  • bindings/js/JSCSSStyleDeclarationCustom.cpp:
  • bindings/js/JSCryptoAlgorithmDictionary.cpp:
  • bindings/js/JSCustomElementInterface.cpp:
  • bindings/js/JSCustomElementRegistryCustom.cpp:
  • bindings/js/JSDOMConvertBase.h:
  • bindings/js/JSDOMConvertInterface.h:
  • bindings/js/JSDOMConvertRecord.h:
  • bindings/js/JSDOMConvertSequences.h:
  • bindings/js/JSDOMConvertUnion.h:
  • bindings/js/JSDOMGlobalObject.h:
  • bindings/js/JSDOMWindowCustom.cpp:
  • bindings/js/JSDOMWindowProperties.cpp:
  • bindings/js/JSDocumentCustom.cpp:
  • bindings/js/JSErrorHandler.cpp:
  • bindings/js/JSEventListener.cpp:
  • bindings/js/JSHTMLCanvasElementCustom.cpp:
  • bindings/js/JSHTMLDocumentCustom.cpp:
  • bindings/js/JSHistoryCustom.cpp:
  • bindings/js/JSMessageEventCustom.cpp:

(WebCore::JSMessageEvent::data):

  • bindings/js/JSMockContentFilterSettingsCustom.cpp:
  • bindings/js/JSMutationCallback.cpp:
  • bindings/js/JSXMLHttpRequestCustom.cpp:

(WebCore::JSXMLHttpRequest::retrieveResponse):

  • bindings/js/ScriptGlobalObject.cpp:
  • bindings/js/SerializedScriptValue.cpp:
  • bindings/scripts/CodeGeneratorJS.pm:

(AddToIncludesForIDLType):
(GetJSCAttributesForAttribute):
(GenerateEnumerationHeader):
(GenerateEnumerationImplementation):
(GenerateEnumerationImplementationContent):
(GenerateEnumerationsImplementationContent):
(GenerateEnumerationHeaderContent):
(GenerateEnumerationsHeaderContent):
(GenerateDictionaryHeaderContent):
(GenerateDictionariesHeaderContent):
(GenerateDictionaryImplementationContent):
(GenerateDictionariesImplementationContent):
(GenerateHeader):
(GeneratePropertiesHashTable):
(GenerateOverloadDispatcher):
(GenerateImplementation):
(GenerateAttributeGetterDefinition):
(GenerateSerializerDefinition):
(GenerateDictionaryHeader):
(JSValueToNative):
(NativeToJSValueUsingReferences):
(NativeToJSValueUsingPointers):
(IsValidContextForNativeToJSValue):
(NativeToJSValue):
(GenerateConstructorDefinition):
(ComputeFunctionSpecial):

  • bindings/scripts/test/JS/JSMapLike.cpp:
  • bindings/scripts/test/JS/JSReadOnlyMapLike.cpp:
  • bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
  • bindings/scripts/test/JS/JSTestCEReactions.cpp:
  • bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
  • bindings/scripts/test/JS/JSTestCallbackFunction.cpp:
  • bindings/scripts/test/JS/JSTestCallbackFunctionRethrow.cpp:
  • bindings/scripts/test/JS/JSTestCallbackFunctionWithTypedefs.cpp:
  • bindings/scripts/test/JS/JSTestCallbackInterface.cpp:
  • bindings/scripts/test/JS/JSTestCallbackInterface.h:
  • bindings/scripts/test/JS/JSTestDOMJIT.cpp:
  • bindings/scripts/test/JS/JSTestEventConstructor.cpp:
  • bindings/scripts/test/JS/JSTestEventConstructor.h:
  • bindings/scripts/test/JS/JSTestEventTarget.cpp:
  • bindings/scripts/test/JS/JSTestException.cpp:
  • bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
  • bindings/scripts/test/JS/JSTestGlobalObject.cpp:
  • bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:
  • bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:
  • bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:
  • bindings/scripts/test/JS/JSTestInterface.cpp:
  • bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
  • bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:
  • bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
  • bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:
  • bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:
  • bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:
  • bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:
  • bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:
  • bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:
  • bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:
  • bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp:
  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp:
  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp:
  • bindings/scripts/test/JS/JSTestNode.cpp:
  • bindings/scripts/test/JS/JSTestNode.h:
  • bindings/scripts/test/JS/JSTestObj.cpp:
  • bindings/scripts/test/JS/JSTestObj.h:
  • bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
  • bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
  • bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
  • bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:
  • bindings/scripts/test/JS/JSTestPromiseRejectionEvent.h:
  • bindings/scripts/test/JS/JSTestSerialization.cpp:
  • bindings/scripts/test/JS/JSTestSerialization.h:
  • bindings/scripts/test/JS/JSTestSerializationInherit.cpp:
  • bindings/scripts/test/JS/JSTestSerializationInherit.h:
  • bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp:
  • bindings/scripts/test/JS/JSTestSerializationInheritFinal.h:
  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
  • bindings/scripts/test/JS/JSTestStandaloneDictionary.cpp:
  • bindings/scripts/test/JS/JSTestStandaloneDictionary.h:
  • bindings/scripts/test/JS/JSTestStandaloneEnumeration.h:
  • bindings/scripts/test/JS/JSTestTypedefs.cpp:
  • bindings/scripts/test/JS/JSTestVoidCallbackFunction.cpp:
  • dom/MouseEvent.cpp:
  • html/HTMLPlugInImageElement.cpp:
10:05 AM Changeset in webkit [218341] by matthew_hanson@apple.com
  • 1 edit in branches/safari-604.1.25.4-branch/Source/WebCore/page/Settings.in

rdar://problem/32621736

10:05 AM Changeset in webkit [218340] by matthew_hanson@apple.com
  • 7 edits in branches/safari-604.1.25.4-branch/Source

Versioning.

10:05 AM Changeset in webkit [218339] by ddkilzer@apple.com
  • 3 edits
    3 adds in trunk/Source/WebCore

[iOS] Generate a simulated crash when the WebThread starts in MobileSafari
<https://webkit.org/b/173386>
<rdar://problem/32776426>

Reviewed by Andy Estes.

  • WebCore.xcodeproj/project.pbxproj: Add new files to project.
  • platform/ios/CrashReporterSupportSoftLink.h: Add. The using

statement is so that we don't have to write
WebCore::SimulateCrash() in WebCoreThread.mm since it's
functions are not defined inside a WebCore namespace. I also
kept the 'pid' argument despite the style checker warning
because it matches the internal method definition.

  • platform/ios/CrashReporterSupportSoftLink.mm: Add.
  • platform/ios/wak/WebCoreThread.mm: Sort headers. Soft link to

CrashReporterSupport.framework.
(WebThreadEnable): Generate a simulated crash log if the
WebThread ever starts in MobileSafari.

  • platform/spi/ios/CrashReporterSupportSPI.h: Add. The header

isn't safe to include in C++ source, so wrap the import in
extern "C" macros.

10:01 AM Changeset in webkit [218338] by matthew_hanson@apple.com
  • 1 edit in branches/safari-604.1.25.3-branch/Source/WebCore/page/Settings.in

rdar://problem/32621736

10:01 AM Changeset in webkit [218337] by pvollan@apple.com
  • 2 edits in trunk/Tools

[Win] Crash in accessibility layout test.
https://bugs.webkit.org/show_bug.cgi?id=173401

Reviewed by Brent Fulgham.

We should not manually release the punkVal IUnknown member in a _variant_t object, since the punkVal
member will be automatically released when the _variant_t object goes out of scope if the vt member
does not equal VT_UNKNOWN | VT_BYREF.
See https://msdn.microsoft.com/en-us/library/windows/desktop/ms221165(v=vs.85).aspx.

  • DumpRenderTree/win/AccessibilityUIElementWin.cpp:

(AccessibilityUIElement::titleUIElement):

9:57 AM Changeset in webkit [218336] by Jonathan Bedard
  • 4 edits in trunk/Source/WebCore

Build WebKit with High Sierra (Seed 1)
https://bugs.webkit.org/show_bug.cgi?id=173371

Reviewed by Andy Estes.

  • crypto/CommonCryptoUtilities.h: Added ccRSAPSSPadding to CCAsymmetricPading enum.
  • platform/spi/cocoa/AVKitSPI.h: Declare AVKit SPI used by WebKit in High Sierra.

(-[AVTouchBarPlaybackControlsControlling NS_ENUM]): Added AVTouchBarMediaSelectionOptionType
SPI used in WebPlaybackControlManager in High Sierra.

  • platform/spi/cocoa/PassKitSPI.h: Declare PassKit SPI used by WebKit in High Sierra.

(NS_ERROR_ENUM): Added PKPaymentErrorCode used in WebPayment in High Sierra.

9:24 AM Changeset in webkit [218335] by commit-queue@webkit.org
  • 9 edits
    2 adds in trunk

RTCPeerConnection returns RTCSessionDescription where RTCSessionDescriptionInit would be appropriate
https://bugs.webkit.org/show_bug.cgi?id=173118
<rdar://problem/32746761>

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

LayoutTests/imported/w3c:

  • web-platform-tests/webrtc/RTCPeerConnection-createOffer-expected.txt:

Source/WebCore:

Test: webrtc/createOfferAnswer.html

Making the promise return a RTCSessionDescription::Init instead of a RTCSessionDescription.
This aligns with the spec and is more optimal.

  • Modules/mediastream/PeerConnectionBackend.cpp:

(WebCore::PeerConnectionBackend::createOfferSucceeded):
(WebCore::PeerConnectionBackend::createAnswerSucceeded):

  • Modules/mediastream/PeerConnectionBackend.h:
  • Modules/mediastream/RTCSessionDescription.idl:

LayoutTests:

  • fast/mediastream/RTCPeerConnection-setLocalDescription-offer-expected.txt:
  • fast/mediastream/RTCPeerConnection-setRemoteDescription-offer-expected.txt:
  • webrtc/createOfferAnswer-expected.txt: Added.
  • webrtc/createOfferAnswer.html: Added.
9:19 AM Changeset in webkit [218334] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Marked imported/w3c/web-platform-tests/dom/nodes/Document-constructor-svg.svg as skip.
https://bugs.webkit.org/show_bug.cgi?id=173333

Unreviewed test gardening.

9:14 AM Changeset in webkit [218333] by Konstantin Tokarev
  • 2 edits in trunk/Source/WTF

Implement FALLTHROUGH macro for compilers other than Clang
https://bugs.webkit.org/show_bug.cgi?id=173385

Reviewed by Alex Christensen.

FALLTHROUGH should be able to use [[gnu::fallthrough]] attribute of
GCC, and fallthrough? from C++17, whichever is available.

  • wtf/Compiler.h:
8:40 AM Changeset in webkit [218332] by Carlos Garcia Campos
  • 93 edits in trunk/Source/WebKit2

[GTK] Cleanup headers includes in GTK+ API files
https://bugs.webkit.org/show_bug.cgi?id=173415

Reviewed by Michael Catanzaro.

  • Remove WTFGType.h from WebKitPrivate.h and include it in all other files instead of WebKitPrivate if needed.
  • Stop including WebKitPrivate.h in all other private headers.
  • Remove all C API includes.
  • UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:
  • UIProcess/API/gtk/WebKitAuthenticationRequest.cpp:
  • UIProcess/API/gtk/WebKitAuthenticationRequestPrivate.h:
  • UIProcess/API/gtk/WebKitAutomationSession.cpp:
  • UIProcess/API/gtk/WebKitBackForwardList.cpp:
  • UIProcess/API/gtk/WebKitBackForwardListItem.cpp:
  • UIProcess/API/gtk/WebKitColorChooser.h:
  • UIProcess/API/gtk/WebKitColorChooserRequest.cpp:
  • UIProcess/API/gtk/WebKitContextMenu.cpp:
  • UIProcess/API/gtk/WebKitContextMenuItem.cpp:
  • UIProcess/API/gtk/WebKitContextMenuItemPrivate.h:
  • UIProcess/API/gtk/WebKitContextMenuPrivate.h:
  • UIProcess/API/gtk/WebKitCookieManager.cpp:
  • UIProcess/API/gtk/WebKitCookieManagerPrivate.h:
  • UIProcess/API/gtk/WebKitCredentialPrivate.h:
  • UIProcess/API/gtk/WebKitDownload.cpp:
  • UIProcess/API/gtk/WebKitDownloadClient.cpp:
  • UIProcess/API/gtk/WebKitDownloadPrivate.h:
  • UIProcess/API/gtk/WebKitEditorState.cpp:
  • UIProcess/API/gtk/WebKitEditorStatePrivate.h:
  • UIProcess/API/gtk/WebKitError.cpp:
  • UIProcess/API/gtk/WebKitFaviconDatabase.cpp:
  • UIProcess/API/gtk/WebKitFileChooserRequest.cpp:
  • UIProcess/API/gtk/WebKitFileChooserRequestPrivate.h:
  • UIProcess/API/gtk/WebKitFindController.cpp:
  • UIProcess/API/gtk/WebKitFormClient.cpp:
  • UIProcess/API/gtk/WebKitFormSubmissionRequest.cpp:
  • UIProcess/API/gtk/WebKitFormSubmissionRequestPrivate.h:
  • UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:
  • UIProcess/API/gtk/WebKitGeolocationPermissionRequestPrivate.h:
  • UIProcess/API/gtk/WebKitHitTestResult.cpp:
  • UIProcess/API/gtk/WebKitHitTestResultPrivate.h:
  • UIProcess/API/gtk/WebKitInstallMissingMediaPluginsPermissionRequest.cpp:
  • UIProcess/API/gtk/WebKitInstallMissingMediaPluginsPermissionRequestPrivate.h:
  • UIProcess/API/gtk/WebKitJavascriptResult.cpp:
  • UIProcess/API/gtk/WebKitJavascriptResultPrivate.h:
  • UIProcess/API/gtk/WebKitMimeInfoPrivate.h:
  • UIProcess/API/gtk/WebKitNavigationActionPrivate.h:
  • UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:
  • UIProcess/API/gtk/WebKitNavigationPolicyDecisionPrivate.h:
  • UIProcess/API/gtk/WebKitNetworkProxySettings.cpp:
  • UIProcess/API/gtk/WebKitNetworkProxySettingsPrivate.h:
  • UIProcess/API/gtk/WebKitNotification.cpp:
  • UIProcess/API/gtk/WebKitNotificationPermissionRequest.cpp:
  • UIProcess/API/gtk/WebKitNotificationPermissionRequestPrivate.h:
  • UIProcess/API/gtk/WebKitNotificationPrivate.h:
  • UIProcess/API/gtk/WebKitOptionMenu.cpp:
  • UIProcess/API/gtk/WebKitPlugin.cpp:
  • UIProcess/API/gtk/WebKitPluginPrivate.h:
  • UIProcess/API/gtk/WebKitPolicyDecision.cpp:
  • UIProcess/API/gtk/WebKitPolicyDecisionPrivate.h:
  • UIProcess/API/gtk/WebKitPrintCustomWidget.cpp:
  • UIProcess/API/gtk/WebKitPrintCustomWidgetPrivate.h:
  • UIProcess/API/gtk/WebKitPrintOperation.cpp:
  • UIProcess/API/gtk/WebKitPrivate.h:
  • UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:
  • UIProcess/API/gtk/WebKitResponsePolicyDecisionPrivate.h:
  • UIProcess/API/gtk/WebKitSecurityManager.cpp:
  • UIProcess/API/gtk/WebKitSecurityOrigin.cpp:
  • UIProcess/API/gtk/WebKitSecurityOriginPrivate.h:
  • UIProcess/API/gtk/WebKitSettings.cpp:
  • UIProcess/API/gtk/WebKitUIClient.cpp:
  • UIProcess/API/gtk/WebKitURIRequest.cpp:
  • UIProcess/API/gtk/WebKitURIResponse.cpp:
  • UIProcess/API/gtk/WebKitURISchemeRequest.cpp:
  • UIProcess/API/gtk/WebKitURISchemeRequestPrivate.h:
  • UIProcess/API/gtk/WebKitUserContent.cpp:
  • UIProcess/API/gtk/WebKitUserContentManager.cpp:
  • UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:
  • UIProcess/API/gtk/WebKitUserMediaPermissionRequestPrivate.h:
  • UIProcess/API/gtk/WebKitWebContext.cpp:
  • UIProcess/API/gtk/WebKitWebContextPrivate.h:
  • UIProcess/API/gtk/WebKitWebInspector.cpp:
  • UIProcess/API/gtk/WebKitWebInspectorPrivate.h:
  • UIProcess/API/gtk/WebKitWebResource.cpp:
  • UIProcess/API/gtk/WebKitWebResourcePrivate.h:
  • UIProcess/API/gtk/WebKitWebView.cpp:
  • UIProcess/API/gtk/WebKitWebViewBase.cpp:
  • UIProcess/API/gtk/WebKitWebViewBaseAccessible.cpp:
  • UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
  • UIProcess/API/gtk/WebKitWebViewPrivate.h:
  • UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:
  • UIProcess/API/gtk/WebKitWebsiteDataManagerPrivate.h:
  • UIProcess/API/gtk/WebKitWebsiteDataPrivate.h:
  • UIProcess/API/gtk/WebKitWindowProperties.cpp:
  • UIProcess/API/gtk/WebKitWindowPropertiesPrivate.h:
  • WebProcess/InjectedBundle/API/gtk/WebKitFrame.cpp:
  • WebProcess/InjectedBundle/API/gtk/WebKitScriptWorld.cpp:
  • WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:
  • WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:
  • WebProcess/InjectedBundle/API/gtk/WebKitWebHitTestResult.cpp:
  • WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
8:37 AM Changeset in webkit [218331] by Carlos Garcia Campos
  • 6 edits in trunk

[GTK] Do not use the C API in WebGtkExtensionManager
https://bugs.webkit.org/show_bug.cgi?id=173408

Reviewed by Michael Catanzaro.

.:

Update exported symbol signature.

  • Source/cmake/gtksymbols.filter:

Source/WebKit2:

Use the C++ API instead.

  • WebProcess/gtk/WebGtkExtensionManager.cpp:

(WebKit::parseUserData):
(WebKit::WebGtkExtensionManager::initialize):

  • WebProcess/gtk/WebGtkExtensionManager.h:
  • WebProcess/gtk/WebGtkInjectedBundleMain.cpp:

(WKBundleInitialize):

8:15 AM Changeset in webkit [218330] by matthew_hanson@apple.com
  • 6 edits
    1 copy
    1 move
    3 adds in branches/safari-603-branch

Cherry-pick r218300. rdar://problem/31971362

7:03 AM Changeset in webkit [218329] by Adrian Perez de Castro
  • 3 edits in trunk/Source/WebKit2

[GTK] Stop using GtkAction in WebPopupMenuProxyGtk
https://bugs.webkit.org/show_bug.cgi?id=173417

Reviewed by Carlos Garcia Campos.

This gets rid of GtkAction in WebPopupMenuProxyGtk, which was deprecated in GTK+ 3.10
and will not be available in GTK+ 4.0. Using GtkMenuItem directly makes populating
long menus slightly faster, which can be noticeable in lower-end machines.

  • UIProcess/gtk/WebPopupMenuProxyGtk.cpp:

(WebKit::WebPopupMenuProxyGtk::populatePopupMenu):
(WebKit::WebPopupMenuProxyGtk::menuItemActivated):
(WebKit::WebPopupMenuProxyGtk::createGtkActionForMenuItem): Deleted.

  • UIProcess/gtk/WebPopupMenuProxyGtk.h:

(WebKit::WebPopupMenuProxyGtk::setCurrentlySelectedMenuItem):
Instantiate GtkMenuItem objects directly when populating the menu.

5:56 AM Changeset in webkit [218328] by magomez@igalia.com
  • 2 edits in trunk/LayoutTests

Unreviewed GTK+ gardening. Update expectations of several tests failing after r218320.

  • platform/gtk/TestExpectations:
2:58 AM Changeset in webkit [218327] by Claudio Saavedra
  • 2 edits in trunk/LayoutTests

[WPE] dom storage gardening

Unreviewed gardening.

Two dom storage tests marked as failing have been passing always,
so remove them.

  • platform/wpe/TestExpectations:
2:49 AM Changeset in webkit [218326] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

Unreviewed. Fix copy-paste error in GTK+ WEBKIT_JAVASCRIPT_ERROR definition.

The print one was copied there.

  • UIProcess/API/gtk/WebKitError.h:
2:41 AM Changeset in webkit [218325] by Carlos Garcia Campos
  • 14 edits
    9 adds in trunk

[GTK] Add API to allow overriding popup menus
https://bugs.webkit.org/show_bug.cgi?id=172905

Reviewed by Michael Catanzaro.

Source/WebKit2:

The GTK+ API uses GTK+ for the default implementation of several UI elements like the file chooser, print dialog,
color picker, context menu, etc. but in all those cases it allows to override the default implementation. It's
not possible to override the popup menu used for select elements. This patch adds WebKitOptionMenu to represent
a select dropdown menu. It's passed as an argument of the new signal WebKitWebView::show-option-menu, and
contains WebKitOptionMenuItem elements representing the items to be displayed.

  • PlatformGTK.cmake:
  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::createPopupMenuProxy): Create a WebKitPopupMenu.

  • UIProcess/API/gtk/WebKitOptionMenu.cpp: Added.

(webkitOptionMenuCreate):
(webkit_option_menu_get_n_items):
(webkit_option_menu_get_item):
(webkit_option_menu_select_item):
(webkit_option_menu_activate_item):
(webkit_option_menu_close):

  • UIProcess/API/gtk/WebKitOptionMenu.h: Added.
  • UIProcess/API/gtk/WebKitOptionMenuItem.cpp: Added.

(webkit_option_menu_item_copy):
(webkit_option_menu_item_free):
(webkit_option_menu_item_get_label):
(webkit_option_menu_item_get_tooltip):
(webkit_option_menu_item_is_group_label):
(webkit_option_menu_item_is_group_child):
(webkit_option_menu_item_is_enabled):
(webkit_option_menu_item_is_selected):

  • UIProcess/API/gtk/WebKitOptionMenuItem.h: Added.
  • UIProcess/API/gtk/WebKitOptionMenuItemPrivate.h: Added.

(_WebKitOptionMenuItem::_WebKitOptionMenuItem):

  • UIProcess/API/gtk/WebKitOptionMenuPrivate.h: Added.
  • UIProcess/API/gtk/WebKitPopupMenu.cpp: Added.

(WebKit::WebKitPopupMenu::WebKitPopupMenu):
(WebKit::menuCloseCallback):
(WebKit::WebKitPopupMenu::showPopupMenu): Call webkitWebViewShowOptionMenu() falling back to default
implementation if the user didn't handle the signal.
(WebKit::WebKitPopupMenu::hidePopupMenu):
(WebKit::WebKitPopupMenu::cancelTracking):
(WebKit::WebKitPopupMenu::selectItem):
(WebKit::WebKitPopupMenu::activateItem):

  • UIProcess/API/gtk/WebKitPopupMenu.h: Added.
  • UIProcess/API/gtk/WebKitWebView.cpp:

(webkit_web_view_class_init):
(webkitWebViewShowOptionMenu): Emit WebKitWebView::show-option-menu.

  • UIProcess/API/gtk/WebKitWebView.h:
  • UIProcess/API/gtk/WebKitWebViewPrivate.h:
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: Add new symbols.
  • UIProcess/API/gtk/docs/webkit2gtk-4.0.types: Add new get_type functions.
  • UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add new sections.
  • UIProcess/API/gtk/webkit2.h: Add new public headers.
  • UIProcess/gtk/WebPopupMenuProxyGtk.cpp:

(WebKit::WebPopupMenuProxyGtk::WebPopupMenuProxyGtk): Do not create the GtkMenu in constructor.
(WebKit::WebPopupMenuProxyGtk::showPopupMenu): Create the GtkMenu and connect to the signals here.
(WebKit::WebPopupMenuProxyGtk::hidePopupMenu): Return early if the Gtk hasn't been shown.

  • UIProcess/gtk/WebPopupMenuProxyGtk.h: Make constructor and webview protected.

Tools:

Add a unit test to check the new API.

  • TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt:
  • TestWebKitAPI/Tests/WebKit2Gtk/TestOptionMenu.cpp: Added.

(OptionMenuTest::OptionMenuTest):
(OptionMenuTest::~OptionMenuTest):
(OptionMenuTest::destroyMenu):
(OptionMenuTest::showOptionMenuCallback):
(OptionMenuTest::menuCloseCallback):
(OptionMenuTest::showOptionMenu):
(OptionMenuTest::clickAtPositionAndWaitUntilOptionMenuShown):
(OptionMenuTest::close):
(OptionMenuTest::activateItem):
(OptionMenuTest::selectItem):
(testOptionMenuSimple):
(testOptionMenuGroups):
(testOptionMenuActivate):
(testOptionMenuSelect):
(beforeAll):
(afterAll):

2:19 AM Changeset in webkit [218324] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

[GTK] Use API::InjectedBundle::ResourceLoadClient in WebKitWebPage
https://bugs.webkit.org/show_bug.cgi?id=173364

Reviewed by Michael Catanzaro.

Instead of the C API.

  • WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:

(webkitWebPageCreate):
(didInitiateLoadForResource): Deleted.
(willSendRequestForFrame): Deleted.
(didReceiveResponseForResource): Deleted.
(didReceiveContentLengthForResource): Deleted.
(didFinishLoadForResource): Deleted.
(didFailLoadForResource): Deleted.

2:10 AM Changeset in webkit [218323] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

[GTK] Use API::InjectedBundle::Client in WebKitWebExtension
https://bugs.webkit.org/show_bug.cgi?id=173358

Reviewed by Michael Catanzaro.

Instead of the C API.

  • WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:

(webkitWebExtensionCreate):
(webkitWebExtensionPageCreated): Deleted.
(webkitWebExtensionPageDestroy): Deleted.
(webkitWebExtensionDidReceiveMessage): Deleted.
(didCreatePage): Deleted.
(willDestroyPage): Deleted.
(didReceiveMessage): Deleted.
(didReceiveMessageToPage): Deleted.

1:31 AM Changeset in webkit [218322] by Carlos Garcia Campos
  • 4 edits in trunk/Source/WebKit2

[GTK] Use API::NotificationProvider
https://bugs.webkit.org/show_bug.cgi?id=173312

Reviewed by Žan Doberšek.

Also cleanup a bit the WebKitNotificationProvider implementation, it doesn't need to be refcounted.

  • UIProcess/API/gtk/WebKitNotificationProvider.cpp:

(WebKitNotificationProvider::WebKitNotificationProvider):
(WebKitNotificationProvider::~WebKitNotificationProvider):
(WebKitNotificationProvider::show):
(WebKitNotificationProvider::clearNotifications):
(WebKitNotificationProvider::notificationPermissions):
(WebKitNotificationProvider::setNotificationPermissions):

  • UIProcess/API/gtk/WebKitNotificationProvider.h:
  • UIProcess/API/gtk/WebKitWebContext.cpp:

(webkitWebContextConstructed):
(addOriginToMap):
(webkit_web_context_initialize_notification_permissions):

1:20 AM Changeset in webkit [218321] by Carlos Garcia Campos
  • 9 edits
    1 copy in trunk/Source/WebKit2

Add API::InjectedBundle::ResourceLoadClient
https://bugs.webkit.org/show_bug.cgi?id=173362

Reviewed by Alex Christensen.

It will be used by the GTK+ port instead of the C API.

  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/InjectedBundle/API/APIInjectedBundlePageResourceLoadClient.h: Copied from Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.h.

(API::InjectedBundle::ResourceLoadClient::didInitiateLoadForResource):
(API::InjectedBundle::ResourceLoadClient::willSendRequestForFrame):
(API::InjectedBundle::ResourceLoadClient::didReceiveResponseForResource):
(API::InjectedBundle::ResourceLoadClient::didReceiveContentLengthForResource):
(API::InjectedBundle::ResourceLoadClient::didFinishLoadForResource):
(API::InjectedBundle::ResourceLoadClient::didFailLoadForResource):
(API::InjectedBundle::ResourceLoadClient::shouldCacheResponse):
(API::InjectedBundle::ResourceLoadClient::shouldUseCredentialStorage):

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

(WKBundlePageSetResourceLoadClient):

  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:

(setUpResourceLoadClient):
(-[WKWebProcessPlugInBrowserContextController setLoadDelegate:]):

  • WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.cpp:

(WebKit::InjectedBundlePageResourceLoadClient::InjectedBundlePageResourceLoadClient):
(WebKit::InjectedBundlePageResourceLoadClient::didInitiateLoadForResource):
(WebKit::InjectedBundlePageResourceLoadClient::willSendRequestForFrame):
(WebKit::InjectedBundlePageResourceLoadClient::didReceiveResponseForResource):
(WebKit::InjectedBundlePageResourceLoadClient::didReceiveContentLengthForResource):
(WebKit::InjectedBundlePageResourceLoadClient::didFinishLoadForResource):
(WebKit::InjectedBundlePageResourceLoadClient::didFailLoadForResource):
(WebKit::InjectedBundlePageResourceLoadClient::shouldCacheResponse):
(WebKit::InjectedBundlePageResourceLoadClient::shouldUseCredentialStorage):

  • WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.h:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::assignIdentifierToInitialRequest):
(WebKit::WebFrameLoaderClient::dispatchWillSendRequest):
(WebKit::WebFrameLoaderClient::shouldUseCredentialStorage):
(WebKit::WebFrameLoaderClient::dispatchDidReceiveResponse):
(WebKit::WebFrameLoaderClient::dispatchDidReceiveContentLength):
(WebKit::WebFrameLoaderClient::dispatchDidFinishLoading):
(WebKit::WebFrameLoaderClient::dispatchDidFailLoading):
(WebKit::WebFrameLoaderClient::willCacheResponse):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::setInjectedBundleResourceLoadClient):
(WebKit::WebPage::close):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::injectedBundleResourceLoadClient):

12:18 AM Changeset in webkit [218320] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[WinCairo] DumpRenderTree.cpp: error C3861: 'CFURLCacheCreate': identifier not found
https://bugs.webkit.org/show_bug.cgi?id=173399

Patch by Fujii Hironori <Fujii Hironori> on 2017-06-15
Reviewed by Per Arne Vollan.

OpenCFLite doesn't have CFURLCacheCreate and CFURLCacheSetSharedURLCache.
Curl port needs to do nothing because libcurl doesn't have disk cache.

  • DumpRenderTree/win/DumpRenderTree.cpp:

(prepareConsistentTestingEnvironment): Call CFURLCacheCreate() and
CFURLCacheSetSharedURLCache() only if USE(CFURLCONNECTION).

12:02 AM Changeset in webkit [218319] by Carlos Garcia Campos
  • 9 edits
    1 copy in trunk/Source/WebKit2

Add API::InjectedBundle::Client
https://bugs.webkit.org/show_bug.cgi?id=173357

Reviewed by Alex Christensen.

It will be used by the GTK+ port instead of the C API.

  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/InjectedBundle/API/APIInjectedBundleBundleClient.h: Copied from Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleClient.h.

(API::InjectedBundle::Client::didCreatePage):
(API::InjectedBundle::Client::willDestroyPage):
(API::InjectedBundle::Client::didInitializePageGroup):
(API::InjectedBundle::Client::didReceiveMessage):
(API::InjectedBundle::Client::didReceiveMessageToPage):

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

(WKBundleSetClient):

  • WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:

(webkitWebExtensionPageCreated): Deleted.
(webkitWebExtensionPageDestroy): Deleted.
(webkitWebExtensionDidReceiveMessage): Deleted.
(didCreatePage): Deleted.
(willDestroyPage): Deleted.
(didReceiveMessage): Deleted.
(didReceiveMessageToPage): Deleted.

  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::setClient):
(WebKit::InjectedBundle::didCreatePage):
(WebKit::InjectedBundle::willDestroyPage):
(WebKit::InjectedBundle::didInitializePageGroup):
(WebKit::InjectedBundle::didReceiveMessage):
(WebKit::InjectedBundle::didReceiveMessageToPage):

  • WebProcess/InjectedBundle/InjectedBundle.h:
  • WebProcess/InjectedBundle/InjectedBundleClient.cpp:

(WebKit::InjectedBundleClient::InjectedBundleClient):
(WebKit::InjectedBundleClient::didCreatePage):
(WebKit::InjectedBundleClient::willDestroyPage):
(WebKit::InjectedBundleClient::didInitializePageGroup):
(WebKit::InjectedBundleClient::didReceiveMessage):
(WebKit::InjectedBundleClient::didReceiveMessageToPage):

  • WebProcess/InjectedBundle/InjectedBundleClient.h:
Note: See TracTimeline for information about the timeline view.