⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Timeline



Aug 9, 2016:

10:44 PM Changeset in webkit [204326] by Chris Dumez
  • 5 edits in trunk

Optimization in Node.replaceChild() is not spec-compliant
https://bugs.webkit.org/show_bug.cgi?id=160730

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline several W3C tests now that more checks are passing.

  • web-platform-tests/dom/nodes/MutationObserver-childList-expected.txt:
  • web-platform-tests/dom/ranges/Range-mutations-expected.txt:

Source/WebCore:

We have an optimization in Node.replaceChild() to avoid doing any work
when the reference child and the new child are the same node. This
optimization is not spec-compliant:

This is an issue because it is observable via Mutation observers /
listeners or DOM ranges.

To address the issue, this patch drops the optimization. This is
probably not common enough to be worth optimizing for. However,
if it turns out to regress performance of things we care about,
we can fall back to do the optimization only in cases where it
is not observable.

No new tests, rebaselined existing tests.

  • dom/ContainerNode.cpp:

(WebCore::ContainerNode::replaceChild):

  1. Drop the oldChild == newChild optimization which is not in the specification.
  2. Add a null check for oldChild.parentNode() before trying to remove it from its parent, as per step 12 of the specification. oldChild.parentNode() is null when oldChild is newChild.
  3. Make sure we enqueue separate mutation records for the adoption of newNode into parent's node document and for the removal of oldChild / insertion of newChild. This is mandated by the specification (steps 10 and 15). Without this change, the following test would still not pass after dropping the optimization: imported/w3c/web-platform-tests/dom/nodes/MutationObserver-childList.html
9:08 PM Changeset in webkit [204325] by bshafiei@apple.com
  • 5 edits in branches/safari-602-branch/Source

Versioning.

8:58 PM Changeset in webkit [204324] by bshafiei@apple.com
  • 2 edits in branches/safari-602-branch/Source/WebCore

Merge r204274. rdar://problem/27688892

8:55 PM Changeset in webkit [204323] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Fix iOS build.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::setPluginLoadClientPolicy): Deleted.
(WebKit::WebProcessPool::clearPluginClientPolicies): Deleted.

8:47 PM Changeset in webkit [204322] by Chris Dumez
  • 5 edits
    2 adds in trunk

Optimization in Node::appendChild() is not spec-compliant
https://bugs.webkit.org/show_bug.cgi?id=160728

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

  • web-platform-tests/dom/ranges/Range-mutations-expected.txt:

Source/WebCore:

We have an optimization in Node::appendChild() that avoid doing any work
if the node to be appended is already the last child. This optimization
is not spec-compliant:

The issue is that this is observable via DOM Mutation observers / listeners
or DOM ranges.

To address the issue, this patch drops the optimization in appendChild().
This seems like an odd case to optimize for as I am not convinced it is
common to call parent.appendChild(parent.lastChild). If it turns out to
regress the performance of things we care about though, we could fall
back to do the optimization only when it is not observable.

Test: fast/dom/Node/appendChild-no-op-mutationobserver.html

  • dom/ContainerNode.cpp:

(WebCore::ContainerNode::appendChild): Deleted.

LayoutTests:

Add layout test to make sure that mutation events are always fired
when calling Node::appendChild(), even if the new node is already
the last child.

  • fast/dom/Node/appendChild-no-op-mutationobserver-expected.txt: Added.
  • fast/dom/Node/appendChild-no-op-mutationobserver.html: Added.
8:39 PM Changeset in webkit [204321] by sbarati@apple.com
  • 8 edits
    4 adds in trunk

JSBoundFunction should lazily generate its name string
https://bugs.webkit.org/show_bug.cgi?id=160678
<rdar://problem/27043194>

Reviewed by Mark Lam.

JSTests:

  • stress/bound-function-lazy-name-generation.js: Added.

(assert):
(test.let.f):
(test.f):
(test):

Source/JavaScriptCore:

We were eagerly allocating the BoundFunction's 'name' string
by prepending the "bound " prefix. This patch makes the 'name'
string creation lazy like we do with ordinary JSFunctions.

This is a 25% speedup on the microbenchmark I added that measures
bound function creation speed. Hopefully this also helps us recover
from a 1% Speedometer regression that was introduced in the original
bound function "bound " prefixing patch.

  • runtime/JSBoundFunction.cpp:

(JSC::JSBoundFunction::create):
(JSC::JSBoundFunction::JSBoundFunction):
(JSC::JSBoundFunction::finishCreation):

  • runtime/JSBoundFunction.h:
  • runtime/JSFunction.cpp:

(JSC::JSFunction::finishCreation):
(JSC::JSFunction::getOwnPropertySlot):
(JSC::JSFunction::getOwnNonIndexPropertyNames):
(JSC::JSFunction::put):
(JSC::JSFunction::deleteProperty):
(JSC::JSFunction::defineOwnProperty):
(JSC::JSFunction::reifyLazyPropertyIfNeeded):
(JSC::JSFunction::reifyBoundNameIfNeeded):

  • runtime/JSFunction.h:

LayoutTests:

  • js/regress/bound-function-construction-performance-expected.txt: Added.
  • js/regress/bound-function-construction-performance.html: Added.
  • js/regress/script-tests/bound-function-construction-performance.js: Added.

(makeBoundFunc):
(foo.f):
(foo):

6:31 PM Changeset in webkit [204320] by andersca@apple.com
  • 19 edits in trunk/Source

Instantiate WebKit plug-ins at layout time, instead of at style resolution time
https://bugs.webkit.org/show_bug.cgi?id=160715

Reviewed by Tim Horton.

Source/WebCore:

This gets rid of the differentiation of WebKit plug-ins and Netscape plug-ins, and
always instantiates plug-ins at layout time.

Initially, plug-ins were always instantiated after style recalc, but that lead to bugs
where plug-ins wouldn't be instantiated with their correct size. Fixing that bug lead
to a regression in the Web Clip widget which is why the special casing was introduced.

The Web Clip widget has now been fixed, so we can get rid of the special case.

  • html/HTMLAppletElement.cpp:

(WebCore::HTMLAppletElement::updateWidget):

  • html/HTMLAppletElement.h:
  • html/HTMLEmbedElement.cpp:

(WebCore::HTMLEmbedElement::updateWidget):

  • html/HTMLEmbedElement.h:
  • html/HTMLObjectElement.cpp:

(WebCore::HTMLObjectElement::updateWidget):

  • html/HTMLObjectElement.h:
  • html/HTMLPlugInImageElement.cpp:

(WebCore::HTMLPlugInImageElement::isImageType):
(WebCore::HTMLPlugInImageElement::wouldLoadAsPlugIn):
(WebCore::HTMLPlugInImageElement::updateWidgetIfNecessary):
(WebCore::HTMLPlugInImageElement::wouldLoadAsNetscapePlugin): Deleted.

  • html/HTMLPlugInImageElement.h:
  • loader/EmptyClients.h:
  • loader/FrameLoaderTypes.h:
  • loader/SubframeLoader.cpp:

(WebCore::SubframeLoader::shouldUsePlugin):

  • page/FrameView.cpp:

(WebCore::FrameView::updateEmbeddedObject):

Source/WebKit/mac:

  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::objectContentType):

Source/WebKit/win:

  • WebCoreSupport/WebFrameLoaderClient.cpp:

(WebFrameLoaderClient::objectContentType):

Source/WebKit2:

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::objectContentType):

6:16 PM Changeset in webkit [204319] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix assertions after r204311.

Range::textNodeSplit() can now get called with a node that
does not have a nextSibling(), in the case where this node
does not have a parent.

  • dom/Range.cpp:

(WebCore::Range::textNodeSplit):

5:49 PM Changeset in webkit [204318] by beidson@apple.com
  • 14 edits
    1 copy in trunk/Source/WebKit2

[WK2] Only send gamepad input events to the currently focused page.
https://bugs.webkit.org/show_bug.cgi?id=160699

Reviewed by Tim Horton.

  • UIProcess/Gamepad/UIGamepadProvider.cpp:

(WebKit::UIGamepadProvider::updateTimerFired):
(WebKit::UIGamepadProvider::platformWebProcessProxyForGamepadInput):

  • UIProcess/Gamepad/UIGamepadProvider.h:
  • UIProcess/Gamepad/mac/UIGamepadProviderMac.mm: Copied from Source/WebKit2/UIProcess/API/mac/WKViewInternal.h.

(WebKit::UIGamepadProvider::platformWebPageProxyForGamepadInput):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::gamepadActivity):

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

(WebKit::WebProcessPool::gamepadActivity): Deleted.

  • UIProcess/WebProcessPool.h:
  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::gamepadActivity):

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

(WebKit::WebProcess::gamepadActivity): Deleted.

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
5:31 PM Changeset in webkit [204317] by andersca@apple.com
  • 7 edits in trunk/Source/WebKit2

Remove code that would tell clients whenever the list of installed plug-ins changes
https://bugs.webkit.org/show_bug.cgi?id=160719

Reviewed by Tim Horton.

  • UIProcess/Plugins/PluginInfoStore.cpp:

(WebKit::PluginInfoStore::PluginInfoStore): Deleted.
(WebKit::PluginInfoStore::loadPluginsIfNecessary): Deleted.

  • UIProcess/Plugins/PluginInfoStore.h:

(WebKit::PluginInfoStoreClient::~PluginInfoStoreClient): Deleted.
(WebKit::PluginInfoStoreClient::PluginInfoStoreClient): Deleted.
(WebKit::PluginInfoStore::setClient): Deleted.
(WebKit::PluginInfoStore::client): Deleted.

  • UIProcess/WebContextClient.cpp:

(WebKit::WebContextClient::plugInInformationBecameAvailable): Deleted.

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

(WebKit::m_hiddenPageThrottlingTimer): Deleted.
(WebKit::WebProcessPool::pluginInfoStoreDidLoadPlugins): Deleted.

  • UIProcess/WebProcessPool.h:
5:10 PM Changeset in webkit [204316] by Chris Dumez
  • 6 edits
    2 adds in trunk

CharacterData.data setter optimization is not spec-compliant and is observable
https://bugs.webkit.org/show_bug.cgi?id=160712

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

  • web-platform-tests/dom/ranges/Range-mutations-expected.txt:

Source/WebCore:

We have an optimization in CharacterData.setData() that avoid doing any
work if the new data is identical to the old data. However, this
optimization is not spec-compliant:

This is an issue because this is observable using DOM mutation observer
or ranges.

To address the issue, we now:

  1. Only use the optimization if there are not DOM mutation observers / listeners on the page.
  2. We now update the associated range when we use the fast path as well.

Test: fast/dom/Text/setData-no-op-mutation.html

  • dom/CharacterData.cpp:

(WebCore::canUseSetDataOptimization):
(WebCore::CharacterData::setData):

LayoutTests:

Add test coverage to make sure that DOM Mutation observers get notified
when CharacterData.data is set to the same data.

  • fast/dom/Text/setData-no-op-mutation-expected.txt: Added.
  • fast/dom/Text/setData-no-op-mutation.html: Added.
4:32 PM Changeset in webkit [204315] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.50.1.1

New tag.

4:31 PM Changeset in webkit [204314] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.50.0.1

New tag.

4:22 PM Changeset in webkit [204313] by rniwa@webkit.org
  • 3 edits in trunk/Websites/perf.webkit.org

Don't filter out the latest data point in chart data sampling
https://bugs.webkit.org/show_bug.cgi?id=160714

Reviewed by Chris Dumez.

Exclude the last data point from sampling so that it's always included in the "sampled" charts data.
Without this, the last data point can change as we zoom out the time domain.

Luckily, we already had a mechanism to exclude the user selected point from sampling. Extend this
feature by supporting an array of point IDs instead of a single ID to exclude from filering.

  • public/v3/components/interactive-time-series-chart.js:

(InteractiveTimeSeriesChart.prototype._sampleTimeSeries): Replaced exclusionPointID by excludedPoints.

  • public/v3/components/time-series-chart.js:

(TimeSeriesChart.prototype._ensureSampledTimeSeries): Put the last data point in excludedPoints.
(TimeSeriesChart.prototype._sampleTimeSeries): Check point's id against the list of IDs.

3:58 PM Changeset in webkit [204312] by commit-queue@webkit.org
  • 26 edits in trunk

Implement functionality of media capture on iOS
https://bugs.webkit.org/show_bug.cgi?id=158945
<rdar://problem/26893343>

Patch by George Ruan <gruan@apple.com> on 2016-08-09
Reviewed by Tim Horton.

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig: Enable media capture feature

for iOS.

Source/WebCore:

No new tests, feature requires user gesture which we are unable to
test currently.

  • Configurations/FeatureDefines.xcconfig: Enable Media Capture feature

for iOS.

  • html/FileInputType.cpp:

(WebCore::FileInputType::handleDOMActivateEvent): Modified call for
mediaCaptureType property.

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::mediaCaptureType): Returns
MediaCaptureType according to the value of the capture attribute on
the HTMLInputElement.
(WebCore::HTMLInputElement::shouldUseMediaCapture): Deleted.

  • html/HTMLInputElement.h:
  • html/HTMLInputElement.idl: As the capture attribute is specified as

a boolean attribute in the Media Capture spec, this is a non-standard
web-facing change with accordance to the proposal #1102. We would like
to be able to specify a capture device to pull up upon interaction
with the input type file element. In favor of not introducing a new
attribute to specify the capture device, we reuse the capture
attribute with a set of enumerated values (user, environment, none) to
specify the desired media capture behavior.

  • platform/FileChooser.h: Created enum MediaCaptureType representing

whether the front or rear camera shoul dbe shown when the capture
attribute is specified.

Source/WebKit/ios:

  • DefaultDelegates/WebDefaultUIKitDelegate.m:

(-[WebDefaultUIKitDelegate
webView:runOpenPanelForFileButtonWithResultListener:configuration:]):
Use a dictionary instead of passing each parameter in separately.
(-[WebDefaultUIKitDelegate webView:runOpenPanelForFileButtonWithResultListener:allowMultipleFiles:acceptMIMETypes:]): Deleted.

  • WebCoreSupport/WebChromeClientIOS.mm:

(webMediaCaptureType): Converts from WebCore::MediaCaptureType to
WebMediaCaptureType.
(WebChromeClientIOS::runOpenPanel):

  • WebKit.iOS.exp: Expose NSDictionary keys for

runOpenPanelForFileButtonWithResultListener.

  • WebView/WebUIKitDelegate.h: Add WebMediaCaptureType enum and

NSDictionary keys for
runOpenPanelForFileButtonWithResultListener.

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig: Enable Media Capture feature

for iOS.

Source/WebKit2:

For a input type file element on iOS, the media capture attribute can
now be used to specify which camera to pull up immediately, as opposed
to having to select the camera from a file picker menu. If the
specified capture type camera device is unavailable, the other
built-in camera will be pulled up instead. If no camera is available,
then the file picker menu will be presented to the user.

  • Configurations/FeatureDefines.xcconfig: Enable Media Capture feature

on iOS.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<FileChooserSettings>::encode): Encode enum
MediaCaptureType.
(IPC::ArgumentCoder<FileChooserSettings>::decode): Decode enum
MediaCaptureType.

  • UIProcess/API/APIOpenPanelParameters.cpp:

(API::OpenPanelParameters::mediaCaptureType):
(API::OpenPanelParameters::capture): Deleted.

  • UIProcess/API/APIOpenPanelParameters.h: Capture attribute is now

represented with MediaCaptureType instead of boolean.

  • UIProcess/API/C/WKOpenPanelParametersRef.cpp:

(WKOpenPanelParametersGetMediaCaptureType): Change function name to
better represent function.
(WKOpenPanelParametersGetCaptureEnabled): Deleted.

  • UIProcess/API/C/WKOpenPanelParametersRef.h:
  • UIProcess/ios/forms/WKFileUploadPanel.mm:

(cameraDeviceForMediaCaptureType): Translate MediaCaptureType to media
device.
(-[WKFileUploadPanel presentWithParameters:resultListener:]):
Immediately pull up media capture device if devices are available and
capture attribute is present.
(-[WKFileUploadPanel _showDocumentPickerMenu]): Only show option to
use media capture device if it is available for the source type.
(-[WKFileUploadPanel _adjustMediaCaptureType]): Determines correct
fallback option for the media capture device.
(-[WKFileUploadPanel _shouldMediaCaptureOpenMediaDevice]): Checks if
the media capture device should be immediately pulled up.
(-[WKFileUploadPanel _showPhotoPickerWithSourceType:]): Specified the
media capture device to use.

Tools:

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig: Enable Media

Capture feature on iOS.

3:30 PM Changeset in webkit [204311] by Chris Dumez
  • 5 edits in trunk

Calling splitText() on a parent-less Text node should update associated ranges
https://bugs.webkit.org/show_bug.cgi?id=160710

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

  • web-platform-tests/dom/ranges/Range-mutations-expected.txt:

Source/WebCore:

Calling splitText() on a parent-less Text node should update associated ranges:

Previously, we would only update ranges for Text nodes that have a parent.

No new tests, rebaselined existing test.

  • dom/Range.cpp:

(WebCore::boundaryTextNodesSplit):
(WebCore::Range::textNodeSplit): Deleted.

  • dom/Text.cpp:

(WebCore::Text::splitText):

3:25 PM Changeset in webkit [204310] by bshafiei@apple.com
  • 2 edits in branches/safari-602.1.50.1-branch/Source/WebCore

Merge r204274. rdar://problem/27688892

3:20 PM Changeset in webkit [204309] by bshafiei@apple.com
  • 2 edits in branches/safari-602.1.50.1-branch/LayoutTests

Merge r203458. rdar://problem/27434307

3:20 PM Changeset in webkit [204308] by bshafiei@apple.com
  • 2 edits in branches/safari-602.1.50.1-branch/LayoutTests

Merge r204201. rdar://problem/27710755

3:20 PM Changeset in webkit [204307] by bshafiei@apple.com
  • 2 edits
    1 delete in branches/safari-602.1.50.1-branch/LayoutTests

Merge r204267. rdar://problem/27595142

3:08 PM Changeset in webkit [204306] by bshafiei@apple.com
  • 5 edits in branches/safari-602.1.50.1-branch/Source

Versioning.

3:03 PM Changeset in webkit [204305] by sbarati@apple.com
  • 6 edits in trunk

Parser<LexerType>::parseFunctionInfo() has the wrong info about captured vars when a function is not cached.
https://bugs.webkit.org/show_bug.cgi?id=160671
<rdar://problem/27756112>

Reviewed by Mark Lam.

Source/JavaScriptCore:

There was a bug in our captured variable analysis when a function has a default
parameter expression that is a function that captures something from the parent scope.
The bug was that we were relying on the SourceProviderCache to succeed for the
analysis to work. This is obviously wrong. I've fixed this to work regardless
of getting a cache hit. To prevent future bugs that rely on the success of the
SourceProviderCache, I've made the validate testing mode disable the SourceProviderCache

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseFunctionInfo):

  • parser/Parser.h:

(JSC::Scope::setInnerArrowFunctionUsesEvalAndUseArgumentsIfNeeded):
(JSC::Scope::addClosedVariableCandidateUnconditionally):
(JSC::Scope::collectFreeVariables):

  • runtime/Options.h:

Tools:

  • Scripts/run-jsc-stress-tests:
2:54 PM Changeset in webkit [204304] by adachan@apple.com
  • 3 edits in trunk/LayoutTests

[macOS Sierra] Fix flaky test: media/controls/picture-in-picture.html
https://bugs.webkit.org/show_bug.cgi?id=160707

Reviewed by Eric Carlson.

This test became flaky after r201474 when we started to delay showing
the inline placeholder until we are sure the video layer has been moved
into the video fullscreen layer. This means we can't guarantee that the
placeholder is visible right away after the video's presentation mode
changes to "picture-in-picture".

To fix this, we'll update the test so that we'll wait until the placeholder
becomes visible before testing its visibility without the "controls" attribute.

  • media/controls/picture-in-picture.html:
  • platform/mac-wk2/TestExpectations:
2:50 PM Changeset in webkit [204303] by rniwa@webkit.org
  • 3 edits in trunk/Websites/perf.webkit.org

Build fix after r204187. interval has to be a getter, not a method.

  • public/v3/components/time-series-chart.js:

(TimeSeriesChart.prototype._renderTimeSeries):

  • public/v3/models/measurement-adaptor.js:

(MeasurementAdaptor.prototype.applyTo):

2:36 PM Changeset in webkit [204302] by weinig@apple.com
  • 2 edits in trunk/Source/WTF

Fix windows build.

  • wtf/Variant.h:

(std::experimental::visit_helper2::visit):
MSVC does not support extended constexpr. Use a ternary operator instead of an if statement.

2:35 PM Changeset in webkit [204301] by bshafiei@apple.com
  • 2 edits in branches/safari-602.1.50.0-branch/LayoutTests

Merge r203458. rdar://problem/27434307

2:35 PM Changeset in webkit [204300] by bshafiei@apple.com
  • 2 edits in branches/safari-602.1.50.0-branch/LayoutTests

Merge r204201. rdar://problem/27710755

2:35 PM Changeset in webkit [204299] by bshafiei@apple.com
  • 2 edits
    1 delete in branches/safari-602.1.50.0-branch/LayoutTests

Merge r204267. rdar://problem/27595142

2:34 PM Changeset in webkit [204298] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Fix a typo that was supposed to be fixed in r204296 before landing.

  • public/v3/pages/chart-pane.js:

(ChartPane):
(ChartPane.prototype.updateFromSerializedState):
(ChartPane.prototype._analyzeRange):
(ChartPane.prototype._renderTrendLinePopover):
(ChartPane.prototype._trendLineTypeDidChange):

2:29 PM Changeset in webkit [204297] by beidson@apple.com
  • 15 edits
    4 copies
    1 add in trunk/Source/WebKit2

Implement "dumb" WK2 support for gamepads.
https://bugs.webkit.org/show_bug.cgi?id=160700

Reviewed by Alex Christensen.

With this patch, gamepads work in WK2.

Things known to be missing to make this mechanism more "smart":

  • Refresh values along with display sync instead of on a 60hz timer (bug 160673)
  • Only send updated values to the current focused web page (bug 160699)
  • CMakeLists.txt:
  • WebKit2.xcodeproj/project.pbxproj:
  • Shared/Gamepad/GamepadData.cpp: Copied from Source/WebKit2/UIProcess/Gamepad/mac/UIGamepadProviderHID.cpp.

(WebKit::GamepadData::encode):
(WebKit::GamepadData::decode):
(WebKit::GamepadData::isNull):
(WebKit::GamepadData::loggingString):

  • Shared/Gamepad/GamepadData.h: Copied from Source/WebKit2/WebProcess/Gamepad/WebGamepad.h.
  • UIProcess/Gamepad/UIGamepad.cpp: Copied from Source/WebKit2/UIProcess/Gamepad/mac/UIGamepadProviderHID.cpp.

(WebKit::UIGamepad::UIGamepad):
(WebKit::UIGamepad::updateFromPlatformGamepad):
(WebKit::UIGamepad::gamepadData):

  • UIProcess/Gamepad/UIGamepad.h: Copied from Source/WebKit2/WebProcess/Gamepad/WebGamepad.h.

(WebKit::UIGamepad::index):

  • UIProcess/Gamepad/UIGamepadProvider.cpp:

(WebKit::UIGamepadProvider::UIGamepadProvider):
(WebKit::UIGamepadProvider::updateTimerFired):
(WebKit::UIGamepadProvider::startOrStopSynchingGamepadState):
(WebKit::UIGamepadProvider::platformGamepadConnected):
(WebKit::UIGamepadProvider::platformGamepadDisconnected):
(WebKit::UIGamepadProvider::platformGamepadInputActivity):
(WebKit::UIGamepadProvider::processPoolStartedUsingGamepads):
(WebKit::UIGamepadProvider::processPoolStoppedUsingGamepads):
(WebKit::UIGamepadProvider::platformGamepads):

  • UIProcess/Gamepad/UIGamepadProvider.h:
  • UIProcess/Gamepad/mac/UIGamepadProviderHID.cpp:

(WebKit::UIGamepadProvider::platformGamepads):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::gamepadConnected):
(WebKit::WebProcessPool::gamepadDisconnected):
(WebKit::WebProcessPool::gamepadActivity):

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

(WebKit::WebGamepad::WebGamepad):
(WebKit::WebGamepad::axisValues):
(WebKit::WebGamepad::buttonValues):
(WebKit::WebGamepad::updateValues):

  • WebProcess/Gamepad/WebGamepad.h:
  • WebProcess/Gamepad/WebGamepadProvider.cpp:

(WebKit::WebGamepadProvider::gamepadConnected):
(WebKit::WebGamepadProvider::gamepadDisconnected):
(WebKit::WebGamepadProvider::gamepadActivity):
(WebKit::WebGamepadProvider::platformGamepads):

  • WebProcess/Gamepad/WebGamepadProvider.h:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::gamepadConnected):
(WebKit::WebProcess::gamepadDisconnected):
(WebKit::WebProcess::gamepadActivity):

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
2:22 PM Changeset in webkit [204296] by rniwa@webkit.org
  • 14 edits
    2 adds in trunk/Websites/perf.webkit.org

Always show segmentation on v3 charts page
https://bugs.webkit.org/show_bug.cgi?id=160576

Rubber-stamped by Chris Dumez.

Added "Trend Lines" popover to select and customize a moving average or a segmentation to show on charts page
and made Schwarz criterion segmentation the default trend line for all charts.

Because computing the segmentation is expensive, we use WebWorker to parallelize the computation via AsyncTask.
We also compute and cache the segmentation for each cluster separately to avoid processing the entire measurement
set as that could take 10-20s total, which was a huge problem in v2 UI. v3 UI's approach is more incremental and
even opens up an opportunity to cache the results in the server side.

Also brought back "shading" for the confidence interval drawing as done in v1 and v2 UI.

  • public/shared/statistics.js:

(Statistics.segmentTimeSeriesByMaximizingSchwarzCriterion): Added segmentCountWeight and gridSize as arguments
to customize the algorithm.
(Statistics.splitIntoSegmentsUntilGoodEnough): Takes segmentCountWeight as BirgeAndMassartC.

  • public/v3/async-task.js: Added.

(AsyncTask): Added. This class represents a task such as computing segmentation to be executed in a worker.
(AsyncTask.prototype.execute): Added. Returns a promise that gets resolved when the specified task completes.
(AsyncTaskWorker.waitForAvailableWorker): Added. Calls the given callback with the first available worker. When
all workers are processing some tasks, it waits until one becomes available by putting the callback into a queue.
_didRecieveMessage pops an item out of this queue when a worker completes a task. We don't use a promise here
because calling this function multiple times synchronously could result in all the returned promises getting
resolved with the same worker as none of the callers get to lock away the first available worker until the end
of the current micro-task.
(AsyncTaskWorker._makeWorkerEventuallyAvailable): Added. A helper function for waitForAvailableWorker. Start
a new worker if the number of workers we've started is less than the number of extra cores (e.g. 7 if there are
8 cores on the machine). Avoid starting a new worker if we've started a new worker within the last 50 ms since
starting a new worker takes some time.
(AsyncTaskWorker._findAvailableWorker): Added. Finds a worker that's available right now if there is any.
(AsyncTaskWorker): Added. An instance of AsyncTaskWorker represents a Web worker.
(AsyncTaskWorker.prototype.id): Added.
(AsyncTaskWorker.prototype.sendTask): Added. Sends a task represented by AsyncTask to the worker.
(AsyncTaskWorker.prototype._didRecieveMessage): Added. This function gets called when the current task completes
in the worker. Pop the next callback if some caller of waitForAvailableWorker is still waiting. Otherwise stop
the worker after one second of waiting to avoid worker churning.
(AsyncTaskWorker.workerDidRecieveMessage): Added. Called by onmessage on the worker. Executes the specified task
and sends back a message upon completion with the appropriate timing data.

  • public/v3/components/chart-pane-base.js:

(ChartPaneBase.prototype.configure): Uses _createSourceList.
(ChartPaneBase.prototype._createSourceList): Added. Extracted from configure to customize the source list for
the main chart and the overview chart.
(ChartPaneBase.prototype._updateSourceList): Uses _createSourceList.

  • public/v3/components/chart-styles.js:

(ChartStyles.createSourceList): Added a boolean showPoint as an extra argument. This specifies whether circles
are drawn for each data point.
(ChartStyles.baselineStyle): Added styles for foreground lines and background lines. They're used for trend lines
and underlying raw data respectively when trend lines are shown.
(ChartStyles.targetStyle): Ditto.
(ChartStyles.currentStyle): Ditto.

  • public/v3/components/time-series-chart.js:

(TimeSeriesChart): Added _trendLines, _renderedTrendLines, and _fetchedTimeSeries as instance variables.
(TimeSeriesChart.prototype.setSourceList): Clear _fetchedTimeSeries before calling setSourceList for consistency.
(TimeSeriesChart.prototype.sourceList): Added.
(TimeSeriesChart.prototype.clearTrendLines): Added.
(TimeSeriesChart.prototype.setTrendLine): Added. Preserves the existing trend lines for other sources. This is
necessary because segmentation for "current" and "baseline" lines may become available at different times, and we
don't want to clear one or the other when setting one.
(TimeSeriesChart.prototype._layout): Added a call to _ensureTrendLines.
(TimeSeriesChart.prototype._renderChartContent): Call _renderTimeSeries for trend lines. Trend lines are always
foreground lines and "regular" raw data points are drawn as background if there are trend lines.
(TimeSeriesChart.prototype._renderTimeSeries): Added layerName as an argument. It could be an empty string,
"foreground", or "background". Draw a "shade" just like v1 and v2 UI instead of vertical lines for the confidence
intervals. Pick "foreground", "background", or "regular" chart style based on layerName. Also avoid drawing data
points when *PointRadius is set to zero to reduce the runtime of this function.
(TimeSeriesChart.prototype._sourceOptionWithFallback): Added.
(TimeSeriesChart.prototype._ensureSampledTimeSeries): When *PointRadius is 0, show as many points as there are x
coordinates as a fallback instead of showing every point.
(TimeSeriesChart.prototype._ensureTrendLines): Added. Returns true if the chart contents haven't been re-rendered
since the last update to trend lines. This flag is unset by setTrendLine.

  • public/v3/index.html:
  • public/v3/models/measurement-cluster.js:

(MeasurementCluster.prototype.addToSeries): Store the data points' index to idMap to help aid MeasurementSet's
_cachedClusterSegmentation efficiently re-create the segmentation from the cache.

  • public/v3/models/measurement-set.js:

(MeasurementSet): Added _segmentationCache as an instance variable.
(MeasurementSet.prototype.fetchSegmentation): Added. Calls _cachedClusterSegmentation on each cluster, and
constructs the time series representation of the segmentation from the results.
(MeasurementSet.prototype._cachedClusterSegmentation): Computes and caches the segmentation for each cluster.
The cache of segmentation stores ID of each measurement set at which segment changes instead of its index since
the latter could change in any moment when a new test result is reported, or an existing test result is removed
from the time series; e.g. when it's marked as an outlier.
(MeasurementSet.prototype._validateSegmentationCache): Added. Checks whether the cached segmentation's name and
its parameters match that of the requested one.
(MeasurementSet.prototype._invokeSegmentationAlgorithm): Added. Invokes the segmentation algorithm either in the
main thread or in a Web worker via AsyncTask API based on the size of the time series. While parallelizing the
work is beneficial when the data set is large, the overhead can add up if we keep processing a very small data
set in a worker.

  • public/v3/models/time-series.js: Made the file compatible with Node.

(TimeSeries.prototype.length): Added.
(TimeSeries.prototype.valuesBetweenRange): Added.

  • public/v3/pages/chart-pane.js:

(createTrendLineExecutableFromAveragingFunction): Added.
(ChartTrendLineTypes): Added. Similar to StatisticsStrategies (statistics-strategies.js) in v2 UI.
(ChartPane): Added _trendLineType, _trendLineParameters, _trendLineVersion, and _renderedTrendLineOptions as
instance variables.
(ChartPane.prototype.serializeState): Serialize the trend line option. This format is compatible with v2 UI.
(ChartPane.prototype.updateFromSerializedState): Ditto. Parsing is compatible with v2 UI except that we now have
the default trend line set when the specified ID doesn't match an existing type ID.
(ChartPane.prototype._renderActionToolbar): Added a call to _renderTrendLinePopover. This is the popover that
specifies the type of a trend line to show as well as its parameters.
(ChartPane.prototype._renderTrendLinePopover): Added. A popover for specifying and customizing a trend line.
(ChartPane.prototype._trendLineTypeDidChange): Added. Called when a new trend line is selected.
(ChartPane.prototype._defaultParametersForTrendLine): Added.
(ChartPane.prototype._trendLineParameterDidChange): Added. Called when the trend lines' parameters are changed.
(ChartPane.prototype._didFetchData): Added. Overrides the one in ChartPaneBase to trigger a trend line update.
(ChartPane.prototype._updateTrendLine): Added. Update the trend line. Since segmentation can take an arbitrary
long time, avoid updating trend lines if this function had been called again (possibly for a different trend line
type or with different parameters) before the results become available; hence the versioning.
(ChartPane.paneHeaderTemplate): Added the trend line popover.
(ChartPane.cssTemplate): Added styles for the trend line popover. Also use a more opaque background color behind
popovers when the -webkit-backdrop-filter property is not supported.

  • public/v3/pages/dashboard-page.js:

(DashboardPage.prototype._createChartForCell): Call createSourceList with showPoints set to true to preserve the
existing behavior.

  • tools/js/v3-models.js: Include TimeSeries object.
  • unit-tests/measurement-set-tests.js: Added two test cases for MeasurementSet's fetchSegmentation.
  • unit-tests/resources/almost-equal.js: Added.

(almostEqual): Extracted out of statistics-tests.js.

  • unit-tests/statistics-tests.js:
2:22 PM Changeset in webkit [204295] by bshafiei@apple.com
  • 5 edits in branches/safari-602.1.50.0-branch/Source

Versioning.

2:13 PM Changeset in webkit [204294] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Drop unused NodeListsNodeData::isEmpty()
https://bugs.webkit.org/show_bug.cgi?id=160704

Reviewed by Ryosuke Niwa.

Drop unused NodeListsNodeData::isEmpty(). Its implementation is incorrect
anyway because it fails to check if the m_childNodeList / m_emptyChildNodeList
members are null.

  • dom/NodeRareData.h:

(WebCore::NodeListsNodeData::isEmpty): Deleted.

1:59 PM Changeset in webkit [204293] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit/win

[Win] Crash in MiniBrowser.
https://bugs.webkit.org/show_bug.cgi?id=160686

Reviewed by Sam Weinig.

We need to specify a plugin info provider object in the page configuration.

  • WebView.cpp:

(WebView::initWithFrame):

1:33 PM Changeset in webkit [204292] by ap@apple.com
  • 2 edits in trunk/Tools

Make directory reading code in iOSSimulatorDevices() more strict
https://bugs.webkit.org/show_bug.cgi?id=160702

Reviewed by Tim Horton.

  • Scripts/webkitdirs.pm:

(iOSSimulatorDevices):

1:31 PM Changeset in webkit [204291] by weinig@apple.com
  • 16 edits
    2 deletes in trunk

Source/WebCore:
Replace NodeOrString with std::variant<Ref<Node>, String>
https://bugs.webkit.org/show_bug.cgi?id=160638

Reviewed by Anders Carlsson.

  • WebCore.xcodeproj/project.pbxproj:

Remove NodeOrString.h/cpp

  • bindings/js/JSNodeOrString.cpp:
  • bindings/js/JSNodeOrString.h:
  • dom/ContainerNode.cpp:

(WebCore::ContainerNode::append):
(WebCore::ContainerNode::prepend):

  • dom/ContainerNode.h:
  • dom/Node.cpp:

(WebCore::nodeSetPreTransformedFromNodeOrStringVector):
(WebCore::firstFollowingSiblingNotInNodeSet):
(WebCore::Node::convertNodesOrStringsIntoNode):
(WebCore::Node::before):
(WebCore::Node::after):
(WebCore::Node::replaceWith):

  • dom/Node.h:

Replace NodeOrString with std::variant<Ref<Node>, String> and move convertNodesOrStringsIntoNode
into Node.

  • dom/NodeOrString.cpp: Removed.
  • dom/NodeOrString.h: Removed.

Source/WTF:
Replace NodeOrString with std::variant<RefPtr<Node>, String>
https://bugs.webkit.org/show_bug.cgi?id=160638

Reviewed by Anders Carlsson.

  • wtf/StdLibExtras.h:

(WTF::Visitor::Visitor):
(WTF::makeVisitor):
Add WTF::makeVisitor() which takes a list of lambdas to use
an an overload set for a visitor object.

Also, re-export std::experimental::variant (and helpers) in the std
namespace using type aliasing.

  • wtf/Variant.h:

Make std::experimental::variant work in WebCore.

Tools:
Replace NodeOrString with std::variant<RefPtr<Node>, String>
https://bugs.webkit.org/show_bug.cgi?id=160638

Reviewed by Anders Carlsson.

  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/Tests/WTF/Variant.cpp:

Add additional tests for the initial state of std::variant and using
makeVisitor for visiting.

12:57 PM Changeset in webkit [204290] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit/win

Fix build.

  • WebCoreSupport/WebPlatformStrategies.h:
12:30 PM Changeset in webkit [204289] by aakash_jain@apple.com
  • 6 edits in trunk/Tools

EWS logging should ensure the logging to file is stopped on queue termination
https://bugs.webkit.org/show_bug.cgi?id=160698
rdar://problem/24464570

Reviewed by Daniel Bates.

  • Scripts/webkitpy/tool/bot/queueengine.py:

(QueueEngine._stopping): Stop logging to file on queue termination.
(QueueEngine._begin_logging): Configure the Python logger to log to file.

  • Scripts/webkitpy/common/system/logutils.py:

(configure_logger_to_log_to_file): Return the handler so as to enable caller to remove it later.

  • Scripts/webkitpy/tool/bot/queueengine_unittest.py:

(QueueEngineTest._run_engine): Removed extra newline character to improve log readability.

  • Scripts/webkitpy/tool/commands/queues.py:

(AbstractQueue._log_directory): Reverting to os.path.join as we don't have host object.
(AbstractQueue.queue_log_path): Same.
(AbstractQueue.begin_work_queue): Removed logging initialization, it is now being done in QueueEngine.
(AbstractQueue.init): Removed host parameter, not required anymore, it was required by logging initialization
which moved to QueueEngine now.
(PatchProcessingQueue.init): Same.
(CommitQueue.init): Same.
(AbstractReviewQueue.init): Same.
(StyleQueue.init): Same.

  • Scripts/webkitpy/tool/commands/queues_unittest.py:

(TestCommitQueue): Removed host parameter.
(TestCommitQueue.init): Same.
(AbstractPatchQueueTest.test_next_patch): Same.
(PatchProcessingQueueTest.test_upload_results_archive_for_patch): Same.
(test_commit_queue_failure): Same.
(mock_run_webkit_patch):
(MockCommitQueueTask.results_from_patch_test_run): Same.
(test_rollout_lands): Same.
(test_non_valid_patch): Same.
(test_auto_retry): Same.
(test_style_queue_with_watch_list_exception): Same.
(TestQueue.init): Deleted.
(TestReviewQueue.init): Deleted.
(TestFeederQueue.init): Deleted.

11:52 AM Changeset in webkit [204288] by Chris Dumez
  • 5 edits
    2 copies in trunk

It should be possible to re-initialize a CustomEvent after it's been dispatched
https://bugs.webkit.org/show_bug.cgi?id=160664

Reviewed by Darin Adler.

Source/WebCore:

It should be possible to re-initialize a CustomEvent after it's been dispatched:

Test: fast/events/initCustomEvent-after-dispatch.html

  • dom/CustomEvent.cpp:

(WebCore::CustomEvent::initCustomEvent):

LayoutTests:

  • fast/events/initCustomEvent-after-dispatch-expected.txt: Copied from LayoutTests/fast/events/initEvent-after-dispatch-expected.txt.
  • fast/events/initCustomEvent-after-dispatch.html: Copied from LayoutTests/fast/events/initEvent-after-dispatch.html.

Add layout test coverage.

  • fast/events/initEvent-after-dispatch-expected.txt:
  • fast/events/initEvent-after-dispatch.html:

Fix related layout test.

11:06 AM Changeset in webkit [204287] by andersca@apple.com
  • 18 edits
    1 delete in trunk/Source

Get rid of PluginStrategy
https://bugs.webkit.org/show_bug.cgi?id=160696

Reviewed by Dan Bernstein.

Source/WebCore:

  • WebCore.xcodeproj/project.pbxproj:
  • loader/EmptyClients.cpp:
  • platform/PlatformStrategies.h:

(WebCore::PlatformStrategies::pluginStrategy): Deleted.

  • plugins/PluginInfoProvider.h:
  • plugins/PluginStrategy.h: Removed.

(WebCore::PluginStrategy::~PluginStrategy): Deleted.

Source/WebKit/mac:

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

(WebPlatformStrategies::createPluginStrategy): Deleted.

  • WebCoreSupport/WebPluginInfoProvider.h:
  • WebCoreSupport/WebPluginInfoProvider.mm:

(WebPluginInfoProvider::setPluginLoadClientPolicy): Deleted.
(WebPluginInfoProvider::clearPluginClientPolicies): Deleted.

Source/WebKit/win:

  • WebCoreSupport/WebPlatformStrategies.cpp:

(WebPlatformStrategies::createPluginStrategy): Deleted.

Source/WebKit2:

  • NetworkProcess/NetworkProcessPlatformStrategies.cpp:

(WebKit::NetworkProcessPlatformStrategies::createPluginStrategy): Deleted.

  • NetworkProcess/NetworkProcessPlatformStrategies.h:
  • WebProcess/Plugins/WebPluginInfoProvider.h:
  • WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:

(WebKit::WebPlatformStrategies::createPluginStrategy): Deleted.

  • WebProcess/WebCoreSupport/WebPlatformStrategies.h:
10:47 AM Changeset in webkit [204286] by bshafiei@apple.com
  • 1 copy in branches/safari-602.1.50.1-branch

New Branch.

10:46 AM Changeset in webkit [204285] by bshafiei@apple.com
  • 1 copy in branches/safari-602.1.50.0-branch

New Branch.

10:01 AM Changeset in webkit [204284] by mitz@apple.com
  • 3 edits in trunk/Source/WebKit2

Add WKPage SPI for looking up a WKFrame given a WKFrameHandle
https://bugs.webkit.org/show_bug.cgi?id=160695

Reviewed by Anders Carlsson.

  • UIProcess/API/C/WKPage.cpp:

(WKPageLookUpFrameFromHandle): Added. Gets the frame from the map in the page’s process and

returns it if it belongs to the page.

  • UIProcess/API/C/WKPagePrivate.h:
9:57 AM Changeset in webkit [204283] by Konstantin Tokarev
  • 2 edits in trunk/Tools

webkit-gtk tarball fails to build due to missing files
https://bugs.webkit.org/show_bug.cgi?id=160684

Reviewed by Alex Christensen.

  • gtk/manifest.txt.in: Added back spi directories.
9:57 AM Changeset in webkit [204282] by andersca@apple.com
  • 8 edits in trunk/Source/WebKit

Move plug-in enumeration from WebPlatformStrategies to WebPluginInfoProvider
https://bugs.webkit.org/show_bug.cgi?id=160694

Reviewed by Dan Bernstein.

Source/WebKit/mac:

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

(WebPlatformStrategies::createPluginStrategy):
(WebPlatformStrategies::refreshPlugins): Deleted.
(WebPlatformStrategies::getPluginInfo): Deleted.
(WebPlatformStrategies::getWebVisiblePluginInfo): Deleted.
(WebPlatformStrategies::setPluginLoadClientPolicy): Deleted.
(WebPlatformStrategies::clearPluginClientPolicies): Deleted.

  • WebCoreSupport/WebPluginInfoProvider.mm:

(WebPluginInfoProvider::refreshPlugins):
(WebPluginInfoProvider::getPluginInfo):
(WebPluginInfoProvider::getWebVisiblePluginInfo):

Source/WebKit/win:

  • WebCoreSupport/WebPlatformStrategies.cpp:

(WebPlatformStrategies::createPluginStrategy):
(WebPlatformStrategies::refreshPlugins): Deleted.
(WebPlatformStrategies::getPluginInfo): Deleted.
(WebPlatformStrategies::getWebVisiblePluginInfo): Deleted.

  • WebCoreSupport/WebPlatformStrategies.h:
  • WebCoreSupport/WebPluginInfoProvider.cpp:

(WebPluginInfoProvider::refreshPlugins):
(WebPluginInfoProvider::getPluginInfo):
(WebPluginInfoProvider::getWebVisiblePluginInfo):

9:26 AM Changeset in webkit [204281] by andersca@apple.com
  • 6 edits in trunk/Source/WebKit2

Move plug-in code from WebPlatformStrategies to WebPluginInfoProvider
https://bugs.webkit.org/show_bug.cgi?id=160679

Reviewed by Alex Christensen.

  • WebProcess/Plugins/WebPluginInfoProvider.cpp:

(WebKit::WebPluginInfoProvider::setPluginLoadClientPolicy):
(WebKit::WebPluginInfoProvider::clearPluginClientPolicies):
(WebKit::WebPluginInfoProvider::refreshPlugins):
(WebKit::WebPluginInfoProvider::getPluginInfo):
(WebKit::WebPluginInfoProvider::getWebVisiblePluginInfo):
(WebKit::WebPluginInfoProvider::populatePluginCache):
(WebKit::WebPluginInfoProvider::pluginLoadClientPolicyForHost):
(WebKit::WebPluginInfoProvider::longestMatchedWildcardHostForHost):
(WebKit::WebPluginInfoProvider::replaceHostWithMatchedWildcardHost):

  • WebProcess/Plugins/WebPluginInfoProvider.h:
  • WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:

(WebKit::WebPlatformStrategies::createPluginStrategy):
(WebKit::WebPlatformStrategies::WebPlatformStrategies): Deleted.
(WebKit::WebPlatformStrategies::refreshPlugins): Deleted.
(WebKit::WebPlatformStrategies::getPluginInfo): Deleted.
(WebKit::WebPlatformStrategies::getWebVisiblePluginInfo): Deleted.
(WebKit::WebPlatformStrategies::setPluginLoadClientPolicy): Deleted.
(WebKit::WebPlatformStrategies::clearPluginClientPolicies): Deleted.
(WebKit::WebPlatformStrategies::longestMatchedWildcardHostForHost): Deleted.
(WebKit::WebPlatformStrategies::replaceHostWithMatchedWildcardHost): Deleted.
(WebKit::WebPlatformStrategies::pluginLoadClientPolicyForHost): Deleted.
(WebKit::WebPlatformStrategies::populatePluginCache): Deleted.

  • WebProcess/WebCoreSupport/WebPlatformStrategies.h:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):
(WebKit::WebProcess::setPluginLoadClientPolicy):
(WebKit::WebProcess::clearPluginClientPolicies):

8:51 AM Changeset in webkit [204280] by Ryan Haddad
  • 2 edits in branches/safari-602-branch/LayoutTests

Merge r203458. rdar://problem/27434307

3:37 AM Changeset in webkit [204279] by clopez@igalia.com
  • 2 edits in trunk/Tools

[GTK] Build the jhbuild with -O2 optimization level by default
https://bugs.webkit.org/show_bug.cgi?id=160544

Reviewed by Michael Catanzaro.

  • gtk/jhbuildrc: Pass -O2 when building the JHBuild, as also -g1

which don't increases the required disk space significatively and
provides better debug information than no passing it.

2:11 AM Changeset in webkit [204278] by Csaba Osztrogonác
  • 3 edits in trunk/Tools

Allow more --cmakeargs option in build-jsc and build-webkit
https://bugs.webkit.org/show_bug.cgi?id=160340

Reviewed by Michael Catanzaro.

  • Scripts/build-jsc:
  • Scripts/build-webkit:
12:25 AM Changeset in webkit [204277] by Gyuyoung Kim
  • 2 edits in trunk/Tools

Do not check if WebKitLibraries folder exists on EFL and GTK
https://bugs.webkit.org/show_bug.cgi?id=160659

Reviewed by Csaba Osztrogonác.

Though WebKitLibraries is only needed by mac and win ports,
EFL and GTK ports have checked whether it exists.

  • Scripts/build-webkit:

Aug 8, 2016:

8:26 PM Changeset in webkit [204276] by mmaxfield@apple.com
  • 5 edits in trunk/Source/WebCore

Ensure StringView lifetime is correct inside InlineTextBox
https://bugs.webkit.org/show_bug.cgi?id=160584

Reviewed by Darin Adler.

A TextRun contains a StringView. Previously, we had a helper function which
could possibly create a new string, and then create a TextRun whose StringView
pointed inside this new string. Then, the string would be destroyed because it
was on the stack.

Luckily, this is benign because this new string would always share a
StringImpl with the string passed into the function (and the StringView
would point into this StringImpl). However, relying on this is dangerous
and we are trying to enforce StringView lifetime checks in
https://bugs.webkit.org/show_bug.cgi?id=160384.

The solution is to make a helper function which returns this built string
so that the caller can own this built string, thereby extending its lifetime.
Unfortunately, this built string can't be a StringView because the same
mechanism must be used for text-combine, which returns originalText(), which
may return a built string if it is a RenderCounter. Perhaps it would be
valuable to migrate RenderCounter::originalText() to something else, or to
divorce text-combine from originalText(), but that is out of scope for this
patch. Similarly, hyphenation uses this same mechanism, but because the
hyphenated string needs to be created, we must own the string storage (so
StringView is incorrect here).

Another reason is for performance: StringView::substring() is faster to use
than String::substringSharingImpl(), since it does not allocate and destroy a
StringImpl on the heap. This patch migrates away from
String::substringSharingImpl() and onto StringView::substring().

No new tests because there is no behavior change.

  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::localSelectionRect):
(WebCore::InlineTextBox::paint):
(WebCore::InlineTextBox::selectionStartEnd):
(WebCore::InlineTextBox::paintSelection):
(WebCore::InlineTextBox::hyphenatedStringForTextRun):
(WebCore::InlineTextBox::constructTextRun):

  • rendering/InlineTextBox.h:
  • rendering/RenderCombineText.cpp:

(WebCore::RenderCombineText::maybeGetCombinedStringForRendering):
(WebCore::RenderCombineText::getStringToRender): Deleted.

  • rendering/RenderCombineText.h:
6:17 PM Changeset in webkit [204275] by aakash_jain@apple.com
  • 6 edits in trunk/Tools

Some EWS console logs doesn't go to log file
https://bugs.webkit.org/show_bug.cgi?id=160585
rdar://problem/24464570

Reviewed by Daniel Bates.

  • Scripts/webkitpy/common/system/logutils.py:

(FileSystemHandler._open): Ensure that we open logfile in append mode in order to avoid
any possible overwriting.

  • Scripts/webkitpy/common/system/filesystem.py:

(FileSystem.open_text_file_for_writing): Add should_append parameter to append to file.

  • Scripts/webkitpy/common/system/filesystem_mock.py:

(MockFileSystem.open_text_file_for_writing): Same.

  • Scripts/webkitpy/common/system/filesystem_unittest.py:

(RealFileSystemTest.test_read_and_write_text_file): Removed unused variable 'hex_equivalent'.
(RealFileSystemTest.test_append_to_text_file): Added new unit test for testing append functionality.

  • Scripts/webkitpy/tool/commands/queues.py:

(AbstractQueue.begin_work_queue): Configure the logger for overall webkitpy to log to file.
This will ensure that all the sub-modules inside webkitpy will log to file.

6:06 PM Changeset in webkit [204274] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Clear fullscreen mode state after exiting fullscreen mode to keep state in sync.
https://bugs.webkit.org/show_bug.cgi?id=160668

Patch by Jeremy Jones <jeremyj@apple.com> on 2016-08-08
Reviewed by Jon Lee.

When exiting fullscreen while in auto picture in picture mode, fullscreen mode gets
out of sync, causing exit fullscreen to fail. This change updates the state
to keep it correct.

  • platform/ios/WebVideoFullscreenInterfaceAVKit.mm:

(WebVideoFullscreenInterfaceAVKit::exitFullscreen):

5:52 PM Changeset in webkit [204273] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

[Web IDL] We should resolve typedefs for dictionary members
https://bugs.webkit.org/show_bug.cgi?id=160675

Reviewed by Sam Weinig.

Resolve typedefs for dictionary member types.

Added bindings test coverage.

  • bindings/scripts/IDLParser.pm:

(applyTypedefs):

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

(WebCore::convert<TestObj::Dictionary>):

  • bindings/scripts/test/TestObj.idl:
5:48 PM Changeset in webkit [204272] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Update test expectations for rdar://problem/27711048.

  • platform/mac/TestExpectations:
5:22 PM Changeset in webkit [204271] by Simon Fraser
  • 6 edits in trunk/Tools

Have the iOS platform interit from the Apple platform in webkitpy
https://bugs.webkit.org/show_bug.cgi?id=160672

Reviewed by Dan Bates.

The IOSSimulatorPort used to inherit from Port, rather than ApplePort.
Fix this, and move duplicated code from IOSSimulatorPort and MacPort into
ApplePort.

Since WinPort also inherits from ApplePort, it needs to stub out some things
that are unavailable on Windows (leaks, sampling).

Some SnowLeopard-related code and the associated test were removed.

  • Scripts/webkitpy/port/apple.py:

(ApplePort.init):
(ApplePort):
(ApplePort._make_leak_detector):
(ApplePort.default_timeout_ms):
(ApplePort.supports_per_test_timeout):
(ApplePort.should_retry_crashes):
(ApplePort._generate_all_test_configurations):
(ApplePort.check_for_leaks):
(ApplePort.print_leaks_summary):
(ApplePort._path_to_webcore_library):
(ApplePort.show_results_html_file):
(ApplePort._merge_crash_logs):
(ApplePort._look_for_all_crash_logs_in_log_dir):
(ApplePort._get_crash_log):
(ApplePort.look_for_new_crash_logs):
(ApplePort.sample_process):
(ApplePort.sample_file_path):
(ApplePort.look_for_new_samples):
(ApplePort._path_to_helper):
(ApplePort.determine_full_port_name): Deleted.

  • Scripts/webkitpy/port/ios.py:

(IOSSimulatorPort):
(IOSSimulatorPort.init):
(IOSSimulatorPort.default_timeout_ms): Deleted.
(IOSSimulatorPort.supports_per_test_timeout): Deleted.
(IOSSimulatorPort.should_retry_crashes): Deleted.
(IOSSimulatorPort.check_for_leaks): Deleted.
(IOSSimulatorPort.print_leaks_summary): Deleted.
(IOSSimulatorPort._path_to_webcore_library): Deleted.
(IOSSimulatorPort.show_results_html_file): Deleted.
(IOSSimulatorPort.sample_file_path): Deleted.
(IOSSimulatorPort._merge_crash_logs): Deleted.
(IOSSimulatorPort._look_for_all_crash_logs_in_log_dir): Deleted.
(IOSSimulatorPort.look_for_new_crash_logs): Deleted.
(IOSSimulatorPort.look_for_new_samples): Deleted.
(IOSSimulatorPort.sample_process): Deleted.
(IOSSimulatorPort._path_to_helper): Deleted.
(IOSSimulatorPort.make_command): Deleted.

  • Scripts/webkitpy/port/mac.py:

(MacPort.init):
(MacPort.make_command):
(MacPort._build_java_test_support):
(MacPort): Deleted.
(MacPort.default_timeout_ms): Deleted.
(MacPort.supports_per_test_timeout): Deleted.
(MacPort.should_retry_crashes): Deleted.
(MacPort.default_child_processes): Deleted.
(MacPort.check_for_leaks): Deleted.
(MacPort.print_leaks_summary): Deleted.
(MacPort._path_to_webcore_library): Deleted.
(MacPort.show_results_html_file): Deleted.
(MacPort.sample_file_path): Deleted.
(MacPort._merge_crash_logs): Deleted.
(MacPort._look_for_all_crash_logs_in_log_dir): Deleted.
(MacPort.look_for_new_crash_logs): Deleted.
(MacPort.look_for_new_samples): Deleted.
(MacPort.sample_process): Deleted.
(MacPort._path_to_helper): Deleted.

  • Scripts/webkitpy/port/mac_unittest.py:

(MacTest.test_default_child_processes): Deleted.

  • Scripts/webkitpy/port/win.py:

(WinPort.look_for_new_samples):
(WinPort):
(WinPort.sample_process):
(WinPort._make_leak_detector):
(WinPort.check_for_leaks):
(WinPort.print_leaks_summary):
(WinPort._path_to_webcore_library):

5:08 PM Changeset in webkit [204270] by andersca@apple.com
  • 2 edits in trunk/Source/WebCore

Fix the Windows build.

  • plugins/PluginInfoProvider.h:
5:01 PM Changeset in webkit [204269] by Ryan Haddad
  • 2 edits in branches/safari-602-branch/LayoutTests

Merge r204201. rdar://problem/27710755

4:43 PM Changeset in webkit [204268] by andersca@apple.com
  • 23 edits
    8 adds in trunk/Source

Add a new PluginInfoProvider class, to replace PluginStrategy
https://bugs.webkit.org/show_bug.cgi?id=160670

Reviewed by Sam Weinig.

Source/WebCore:

Add a per page PluginInfoProvider class that's going to ultimately replace the plug-in strategy.

  • WebCore.xcodeproj/project.pbxproj:
  • loader/EmptyClients.cpp:

(WebCore::fillWithEmptyClients):

  • page/Page.cpp:

(WebCore::Page::Page):
(WebCore::Page::~Page):
(WebCore::Page::refreshPlugins):
(WebCore::Page::pluginData):
(WebCore::Page::pluginInfoProvider):

  • page/Page.h:
  • page/PageConfiguration.cpp:
  • page/PageConfiguration.h:
  • plugins/DOMPluginArray.cpp:

(WebCore::DOMPluginArray::refresh):

  • plugins/DOMPluginArray.h:
  • plugins/PluginData.cpp:

(WebCore::PluginData::PluginData):
(WebCore::PluginData::webVisiblePlugins):
(WebCore::PluginData::publiclyVisiblePlugins):
(WebCore::PluginData::initPlugins):
(WebCore::PluginData::refresh): Deleted.

  • plugins/PluginData.h:

(WebCore::PluginData::create):
(WebCore::PluginData::PluginData): Deleted.

  • plugins/PluginInfoProvider.cpp: Added.

(WebCore::PluginInfoProvider::~PluginInfoProvider):
(WebCore::PluginInfoProvider::addPage):
(WebCore::PluginInfoProvider::removePage):

  • plugins/PluginInfoProvider.h: Added.
  • replay/SerializationMethods.cpp:

(JSC::EncodingTraits<PluginData>::decodeValue):
(JSC::DeserializedPluginData::DeserializedPluginData): Deleted.

Source/WebKit:

Add new files.

  • PlatformWin.cmake:
  • WebKit.xcodeproj/project.pbxproj:

Source/WebKit/mac:

Add a new WebPluginInfoProvider - it just calls through to the plug-in strategy for now.

  • WebCoreSupport/WebPluginInfoProvider.h: Added.
  • WebCoreSupport/WebPluginInfoProvider.mm: Added.

(WebPluginInfoProvider::singleton):
(WebPluginInfoProvider::WebPluginInfoProvider):
(WebPluginInfoProvider::~WebPluginInfoProvider):
(WebPluginInfoProvider::refreshPlugins):
(WebPluginInfoProvider::getPluginInfo):
(WebPluginInfoProvider::getWebVisiblePluginInfo):
(WebPluginInfoProvider::setPluginLoadClientPolicy):
(WebPluginInfoProvider::clearPluginClientPolicies):

  • WebView/WebView.mm:

(-[WebView _commonInitializationWithFrameName:groupName:]):

Source/WebKit/win:

Add a new WebPluginInfoProvider - it just calls through to the plug-in strategy for now.

  • WebCoreSupport/WebPluginInfoProvider.cpp: Added.

(WebPluginInfoProvider::singleton):
(WebPluginInfoProvider::WebPluginInfoProvider):
(WebPluginInfoProvider::~WebPluginInfoProvider):
(WebPluginInfoProvider::refreshPlugins):
(WebPluginInfoProvider::getPluginInfo):
(WebPluginInfoProvider::getWebVisiblePluginInfo):

  • WebCoreSupport/WebPluginInfoProvider.h: Added.

Source/WebKit2:

Add a new WebPluginInfoProvider - it just calls through to the plug-in strategy for now.

  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/Plugins/WebPluginInfoProvider.cpp: Added.

(WebKit::WebPluginInfoProvider::singleton):
(WebKit::WebPluginInfoProvider::WebPluginInfoProvider):
(WebKit::WebPluginInfoProvider::~WebPluginInfoProvider):
(WebKit::WebPluginInfoProvider::refreshPlugins):
(WebKit::WebPluginInfoProvider::getPluginInfo):
(WebKit::WebPluginInfoProvider::getWebVisiblePluginInfo):
(WebKit::WebPluginInfoProvider::setPluginLoadClientPolicy):
(WebKit::WebPluginInfoProvider::clearPluginClientPolicies):

  • WebProcess/Plugins/WebPluginInfoProvider.h: Added.
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_userInterfaceLayoutDirection):

3:57 PM Changeset in webkit [204267] by Ryan Haddad
  • 2 edits
    1 delete in branches/safari-602-branch/LayoutTests

Test gardening for rdar://problem/27595142.

2:43 PM Changeset in webkit [204266] by wilander@apple.com
  • 3 edits
    4 adds in trunk

Popups opened from a sandboxed iframe should themselves be sandboxed
https://bugs.webkit.org/show_bug.cgi?id=134850
<rdar://problem/27375388>

Reviewed by Brent Fulgham.

Source/WebCore:

Test: http/tests/security/window-opened-from-sandboxed-iframe-should-inherit-sandbox.html

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::continueLoadAfterNewWindowPolicy):

Now copies the opener's frame loader effective sandbox flags to the
new frame loader.

LayoutTests:

  • http/tests/security/resources/anchor-tag-with-blank-target.html: Added.
  • http/tests/security/resources/page-executing-javascript.html: Added.
  • http/tests/security/window-opened-from-sandboxed-iframe-should-inherit-sandbox-expected.txt: Added.
  • http/tests/security/window-opened-from-sandboxed-iframe-should-inherit-sandbox.html: Added.
2:41 PM Changeset in webkit [204265] by Matt Baker
  • 2 edits in trunk/Tools

Unreviewed: moved myself to the reviewers list.

  • Scripts/webkitpy/common/config/contributors.json:
1:56 PM Changeset in webkit [204264] by Joseph Pecoraro
  • 10 edits in trunk/Source/WebInspectorUI

Web Inspector: Popover for Color Picker should update position when window resizes
https://bugs.webkit.org/show_bug.cgi?id=160321

Reviewed by Brian Burg.

  • UserInterface/Views/Popover.js:

(WebInspector.Popover):
(WebInspector.Popover.prototype.set windowResizeHandler):
(WebInspector.Popover.prototype.dismiss):
(WebInspector.Popover.prototype.handleEvent):
(WebInspector.Popover.prototype._addListenersIfNeeded):
The popover already has a set of window listeners, add "resize" to
the list. If there is a resize, invoke a resize handler. The resize
handler will only be called while the popover is visible.

  • UserInterface/Views/HeapSnapshotDataGridTree.js:

(WebInspector.HeapSnapshotDataGridTree):
(WebInspector.HeapSnapshotDataGridTree.prototype.get visible):
(WebInspector.HeapSnapshotDataGridTree.prototype.get popoverNode):
(WebInspector.HeapSnapshotDataGridTree.prototype.set popoverNode):
(WebInspector.HeapSnapshotDataGridTree.prototype.get popoverTargetElement):
(WebInspector.HeapSnapshotDataGridTree.prototype.set popoverTargetElement):
(WebInspector.HeapSnapshotDataGridTree.prototype.get popover):
(WebInspector.HeapSnapshotDataGridTree.prototype.willDismissPopover):

  • UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:

Update heap snapshot popovers to reposition on window resize.
Set a target to reposition around, since the popover is shared.

  • UserInterface/Views/ProbeSetDetailsSection.js:

(WebInspector.ProbeSetDetailsSection.prototype._addProbeButtonClicked):
Update probe expression popover to respect window resizes.

  • UserInterface/Views/VisualStylePropertyEditor.js:

(WebInspector.VisualStylePropertyEditor.prototype._showPropertyInfoPopover):
Though not yet visible, update this to respect window resizes.

  • UserInterface/Views/InlineSwatch.js:

(WebInspector.InlineSwatch.prototype._swatchElementClicked):
Add a window resize handler to reposition over the swatch element.

  • UserInterface/Views/LayerTreeDetailsSidebarPanel.js:

(WebInspector.LayerTreeDetailsSidebarPanel.prototype._updatePopoverForSelectedNode):
(WebInspector.LayerTreeDetailsSidebarPanel): Deleted.
(WebInspector.LayerTreeDetailsSidebarPanel.prototype._windowResized): Deleted.

  • UserInterface/Views/TimelineDataGrid.js:

(WebInspector.TimelineDataGrid.prototype._showPopoverForSelectedNodeSoon):
(WebInspector.TimelineDataGrid): Deleted.
(WebInspector.TimelineDataGrid.prototype.closed): Deleted.
(WebInspector.TimelineDataGrid.prototype.handleEvent): Deleted.
(WebInspector.TimelineDataGrid.prototype._windowResized): Deleted.

  • UserInterface/Views/ScopeChainDetailsSidebarPanel.js:

(WebInspector.ScopeChainDetailsSidebarPanel.prototype._addWatchExpressionButtonClicked):
(WebInspector.ScopeChainDetailsSidebarPanel.prototype.willDismissPopover): Deleted.
Replace custom popover repositioning with standard Popover handling.

1:30 PM Changeset in webkit [204263] by Chris Dumez
  • 34 edits
    2 adds in trunk

Align Selection API with the specification
https://bugs.webkit.org/show_bug.cgi?id=160663

Reviewed by Ryosuke Niwa.

Source/WebCore:

Align Selection API with the specification:

In particular, the following changes were made:

  • Mark parameters as non-nullable when they should be.
  • Mark parameters as mandatory when they should be.
  • Use "unsigned long" type for offsets instead of "long".

This aligns our behavior with Firefox and Chrome.

Note that the Node parameters to setBaseAndExtent() operation were kept
nullable, which does not match the specification. This is intentional
as I worry about compatibility risk, especially considering they are
still nullable in Chrome. Only Firefox marks them as non-nullable.

Test: editing/selection/bad-input.html

  • dom/Position.h:

(WebCore::Position::LegacyEditingOffset::value):
(WebCore::Position::LegacyEditingOffset::LegacyEditingOffset):
(WebCore::createLegacyEditingPosition):

  • page/DOMSelection.cpp:

(WebCore::DOMSelection::anchorOffset):
(WebCore::DOMSelection::focusOffset):
(WebCore::DOMSelection::baseOffset):
(WebCore::DOMSelection::extentOffset):
(WebCore::DOMSelection::rangeCount):
(WebCore::DOMSelection::collapse):
(WebCore::DOMSelection::setBaseAndExtent):
(WebCore::DOMSelection::setPosition):
(WebCore::DOMSelection::extend):
(WebCore::DOMSelection::getRangeAt):
(WebCore::DOMSelection::addRange):
(WebCore::DOMSelection::deleteFromDocument):
(WebCore::DOMSelection::containsNode):
(WebCore::DOMSelection::selectAllChildren):
(WebCore::DOMSelection::shadowAdjustedOffset):
(WebCore::DOMSelection::modify): Deleted.
(WebCore::DOMSelection::shadowAdjustedNode): Deleted.
(WebCore::DOMSelection::isValidForPosition): Deleted.

  • page/DOMSelection.h:
  • page/DOMSelection.idl:

LayoutTests:

  • editing/selection/bad-input-expected.txt: Added.
  • editing/selection/bad-input.html: Added.

Add new layout test to cover passing bad input to the Selection API.
This new test is passing completely in Firefox and Chrome.

  • editing/execCommand/apply-style-text-decoration-crash.html:
  • editing/execCommand/applyblockelement-visiblepositionforindex-crash.html:
  • editing/execCommand/ident-crashes-topnode-is-text.html:
  • editing/execCommand/indent-pre-expected.txt:
  • editing/execCommand/indent-pre.html:
  • editing/execCommand/overtype.html:
  • editing/selection/containsNode-expected.txt:
  • editing/selection/containsNode.html:
  • editing/selection/move-by-line-003.html:
  • editing/selection/script-tests/DOMSelection-DocumentType.js:
  • editing/selection/script-tests/DOMSelection-crossing-document.js:

(clear):

  • editing/selection/selection-invalid-offset-expected.txt:
  • fast/block/float/float-list-changed-before-layout-crash.html:
  • fast/dom/non-numeric-values-numeric-parameters-expected.txt:
  • fast/dom/script-tests/non-numeric-values-numeric-parameters.js:
  • fast/events/selectstart-by-arrow-keys.html:
  • fast/html/nav-element.html:
  • fast/html/script-tests/article-element.js:
  • fast/html/script-tests/aside-element.js:
  • fast/html/script-tests/footer-element.js:
  • fast/html/script-tests/header-element.js:
  • fast/html/script-tests/hgroup-element.js:
  • fast/html/script-tests/main-element.js:
  • fast/html/script-tests/section-element.js:
  • imported/blink/accessibility/event-on-deleted-iframe-causes-crash.html:
  • imported/blink/editing/apply-inline-style-to-element-with-no-renderer-crash.html:
  • svg/custom/unicode-in-tspan-multi-svg-crash.html:

Update existing tests to use the Selection API properly.

12:39 PM Changeset in webkit [204262] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Regression(r204239): Caused flaky crashes under ~Database()
https://bugs.webkit.org/show_bug.cgi?id=160665
<rdar://problem/27748065>

Reviewed by Brady Eidson.

Make sure the scriptExecution context only gets ref'd / deref'd
on the context thread. Document / WorkerGlobalScope are not
ThreadSafeRefCounted.

No new tests, already covered by:
storage/websql/open-database-creation-callback.html

  • Modules/webdatabase/Database.cpp:

(WebCore::Database::~Database):

11:56 AM Changeset in webkit [204261] by mark.lam@apple.com
  • 4 edits in trunk

ASSERTION FAILED: hasInlineStorage() in JSFinalObject::visitChildren().
https://bugs.webkit.org/show_bug.cgi?id=160666

Reviewed by Keith Miller.

JSTests:

  • stress/object-constructor-should-be-new-target-aware.js:

Source/JavaScriptCore:

This assertion is benign. JSFinalObject::visitChildren() calls
JSObject::inlineStorage() to get a pointer to the object's inline storage, and
later passes it to visitor.appendValuesHidden() with a previously computed
storageSize. When storageSize is 0, appendValuesHidden() ends up doing nothing.
However, before we get there, JSObject::inlineStorage() will be asserting
hasInlineStorage() and this assertion will fail when storageSize is 0.

We can fix this assertion failure by simply adding a storageSize check before
calling hasInlineStorage() and visitor.appendValuesHidden().

  • runtime/JSObject.cpp:

(JSC::JSFinalObject::visitChildren):

11:38 AM Changeset in webkit [204260] by wilander@apple.com
  • 13 edits
    2 adds in trunk

Don't set document.domain to an IP address fragment
https://bugs.webkit.org/show_bug.cgi?id=126045
<rdar://problem/27331794>

Reviewed by Daniel Bates.

Source/WebCore:

This patch matches the following Blink one:
https://chromium.googlesource.com/chromium/blink//b19a57fdb323d5a80d3a1cb0a6b343558c4237b0

IP address octets should not be treated as subdomains when setting
document.domain. The specs say:
'The domain attribute's setter must run these steps: ...

  1. If host is not equal to effectiveDomain, then run these substeps:
    1. If host or effectiveDomain is not a domain, then throw a "SecurityError" DOMException.'

https://html.spec.whatwg.org/multipage/browsers.html#relaxing-the-same-origin-restriction
Last Updated 5 August 2016

'A host is a domain, an IPv4 address, or an IPv6 address.'
https://url.spec.whatwg.org/#concept-domain
Last Updated 28 July 2016

Test: http/tests/security/set-domain-remove-subdomain-for-ip-address.html

  • dom/Document.cpp:

(WebCore::Document::setDomain):

Now checks whether the security origin is allowed to remove
subdomains. If not, it throws a security error.

  • page/OriginAccessEntry.cpp:

(WebCore::OriginAccessEntry::OriginAccessEntry):

Constructor now expects an IP address setting.

(WebCore::OriginAccessEntry::matchesOrigin):

Now also checks whether the host in an IP address and returns
false if IP addresses aren't configured to be treated as domains.

  • page/OriginAccessEntry.h:

Introduced new enum for IP address setting.
Constructor now expects an IP address setting.

(WebCore::OriginAccessEntry::ipAddressSettings):

New getter.

(WebCore::operator==):

Now also requires IP address settings to match.

  • page/SecurityPolicy.cpp:

(WebCore::SecurityPolicy::addOriginAccessWhitelistEntry):

Changes to match OriginAccessEntry's new constructor.

(WebCore::SecurityPolicy::removeOriginAccessWhitelistEntry):

Changes to match OriginAccessEntry's new constructor.

  • page/Settings.in:

Added a setting to allow IP address octets to be treated as
subdomains. This way our existing tests setting document.domain
still work.

LayoutTests:

IP address octets should not be treated as subdomains when setting document.domain.

  • http/tests/security/aboutBlank/security-context-alias.html:

Now enables the new setting treatIPAddressesAsDomains.

  • http/tests/security/aboutBlank/security-context-grandchildren-alias.html:

Now enables the new setting treatIPAddressesAsDomains.

  • http/tests/security/postMessage/origin-unaffected-by-document-domain.html:

Now enables the new setting treatIPAddressesAsDomains.

  • http/tests/security/set-domain-remove-subdomain-for-ip-address-expected.txt: Added.
  • http/tests/security/set-domain-remove-subdomain-for-ip-address.html: Added.
  • http/tests/security/setDomainRelaxationForbiddenForURLScheme.html:

Now enables the new setting treatIPAddressesAsDomains.

  • http/tests/workers/worker-document-domain-security.html:

Now enables the new setting treatIPAddressesAsDomains.

  • http/tests/xmlhttprequest/document-domain-set.html:

Now enables the new setting treatIPAddressesAsDomains.

10:54 AM Changeset in webkit [204259] by andersca@apple.com
  • 57 edits
    5 deletes in trunk/Source/WebCore

Remove more unused bindings code
https://bugs.webkit.org/show_bug.cgi?id=160568

Reviewed by Sam Weinig.

  • CMakeLists.txt:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/objc/DOMDocument.mm:

(-[DOMDocument execCommand:userInterface:]):
(-[DOMDocument execCommand:]):
(-[DOMDocument getMatchedCSSRules:pseudoElement:]):

  • bindings/objc/DOMHTMLBaseFontElement.mm:
  • bindings/objc/DOMHTMLCollection.mm:

(-[DOMHTMLCollection tags:]):

  • bindings/objc/DOMWheelEvent.mm:

(-[DOMWheelEvent isHorizontal]):

  • css/RGBColor.idl:
  • dom/Attr.idl:
  • dom/DOMImplementation.idl:
  • dom/Document.h:
  • dom/Document.idl:
  • dom/Element.idl:
  • dom/EventException.h: Removed.

(WebCore::EventException::EventException): Deleted.

  • dom/EventException.idl: Removed.
  • dom/KeyboardEvent.idl:
  • dom/MessageEvent.cpp:

(WebCore::MessageEvent::messagePort): Deleted.
(WebCore::MessageEvent::initMessageEvent): Deleted.

  • dom/MessageEvent.h:
  • dom/MessagePort.cpp:

(WebCore::MessagePort::postMessage): Deleted.

  • dom/MessagePort.h:
  • dom/Node.idl:
  • dom/NodeFilter.idl:
  • dom/OverflowEvent.idl:
  • dom/WheelEvent.h:
  • dom/WheelEvent.idl:
  • html/HTMLAllCollection.cpp:

(WebCore::HTMLAllCollection::tags):

  • html/HTMLAllCollection.h:
  • html/HTMLAnchorElement.idl:
  • html/HTMLAreaElement.idl:
  • html/HTMLBaseFontElement.cpp: Removed.

(WebCore::HTMLBaseFontElement::HTMLBaseFontElement): Deleted.

  • html/HTMLBaseFontElement.h: Removed.
  • html/HTMLBaseFontElement.idl: Removed.
  • html/HTMLButtonElement.idl:
  • html/HTMLCanvasElement.idl:
  • html/HTMLCollection.cpp:

(WebCore::HTMLCollection::tags): Deleted.

  • html/HTMLCollection.h:
  • html/HTMLCollection.idl:
  • html/HTMLElement.idl:
  • html/HTMLFieldSetElement.idl:
  • html/HTMLFormElement.idl:
  • html/HTMLHyperlinkElementUtils.idl:
  • html/HTMLIFrameElement.idl:
  • html/HTMLImageElement.idl:
  • html/HTMLInputElement.idl:
  • html/HTMLLabelElement.idl:
  • html/HTMLLegendElement.idl:
  • html/HTMLLinkElement.idl:
  • html/HTMLMediaElement.idl:
  • html/HTMLObjectElement.idl:
  • html/HTMLOptionsCollection.idl:
  • html/HTMLSelectElement.idl:
  • html/HTMLTableCellElement.idl:
  • html/HTMLTextAreaElement.idl:
  • page/DOMWindow.cpp:

(WebCore::DOMWindow::postMessage): Deleted.

  • page/DOMWindow.h:
  • workers/DedicatedWorkerGlobalScope.cpp:

(WebCore::DedicatedWorkerGlobalScope::postMessage): Deleted.

  • workers/DedicatedWorkerGlobalScope.h:
  • workers/Worker.cpp:

(WebCore::Worker::postMessage): Deleted.

  • workers/Worker.h:
10:26 AM Changeset in webkit [204258] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Land test expectations for rdar://problem/27711048.

  • platform/mac/TestExpectations:
10:25 AM Changeset in webkit [204257] by beidson@apple.com
  • 15 edits in trunk/Source

Addressing late review feedback in bug 160605
https://bugs.webkit.org/show_bug.cgi?id=160605

Reviewed by Darin's suggestions.

Source/WebCore:

  • Modules/gamepad/GamepadManager.cpp:

(WebCore::GamepadManager::maybeStartMonitoringGamepads):
(WebCore::GamepadManager::maybeStopMonitoringGamepads):

  • platform/gamepad/EmptyGamepadProvider.cpp:

(WebCore::EmptyGamepadProvider::startMonitoringGamepads):
(WebCore::EmptyGamepadProvider::stopMonitoringGamepads):

  • platform/gamepad/EmptyGamepadProvider.h:
  • platform/gamepad/GamepadProvider.h:
  • platform/gamepad/mac/HIDGamepadProvider.cpp:

(WebCore::HIDGamepadProvider::startMonitoringGamepads):
(WebCore::HIDGamepadProvider::stopMonitoringGamepads):

  • platform/gamepad/mac/HIDGamepadProvider.h:

(WebCore::HIDGamepadProvider::platformGamepads): Deleted.

Source/WebKit2:

  • UIProcess/Gamepad/UIGamepadProvider.cpp:

(WebKit::UIGamepadProvider::processPoolStartedUsingGamepads):
(WebKit::UIGamepadProvider::processPoolStoppedUsingGamepads):

  • UIProcess/Gamepad/UIGamepadProvider.h:
  • UIProcess/Gamepad/mac/UIGamepadProviderHID.cpp:

(WebKit::UIGamepadProvider::platformStartMonitoringGamepads):
(WebKit::UIGamepadProvider::platformStopMonitoringGamepads):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::disconnectProcess):
(WebKit::WebProcessPool::startedUsingGamepads):
(WebKit::WebProcessPool::stoppedUsingGamepads):
(WebKit::WebProcessPool::processStoppedUsingGamepads):

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

(WebKit::WebGamepadProvider::startMonitoringGamepads):
(WebKit::WebGamepadProvider::stopMonitoringGamepads):

  • WebProcess/Gamepad/WebGamepadProvider.h:
10:24 AM Changeset in webkit [204256] by Chris Dumez
  • 2 edits in trunk/Tools

Update API tests in mac/SetDocumentURI.mm after r204247
https://bugs.webkit.org/show_bug.cgi?id=160660

Reviewed by Alex Christensen.

  • TestWebKitAPI/Tests/mac/SetDocumentURI.mm:

(TestWebKitAPI::TEST):

9:43 AM Changeset in webkit [204255] by BJ Burg
  • 18 edits in trunk/Source/JavaScriptCore

Web Inspector: clean up prefixing of Automation protocol generated files
https://bugs.webkit.org/show_bug.cgi?id=160635
<rdar://problem/27735327>

Reviewed by Timothy Hatcher.

Introduce different settings for the 'protocol group' name for C++ vs. Objective-C.

Use 'WD' as the prefix for generated Objective-C frontend dispatchers and helpers.
Continue using 'Automation' as the prefix for generated C++ backend dispatchers.

  • inspector/scripts/codegen/cpp_generator.py:

(CppGenerator.protocol_name):

  • inspector/scripts/codegen/generate_objc_protocol_type_conversions_implementation.py:

(ObjCProtocolTypeConversionsImplementationGenerator.generate_output):
(ObjCProtocolTypeConversionsImplementationGenerator._generate_type_factory_category_interface):
(ObjCProtocolTypeConversionsImplementationGenerator._generate_type_factory_category_implementation):
Adjust the class name. Generate one category per protocol domain to keep it easy to read.

  • inspector/scripts/codegen/models.py:
  • inspector/scripts/codegen/objc_generator.py:

(ObjCGenerator.protocol_name):

  • inspector/scripts/tests/expected/commands-with-async-attribute.json-result:
  • inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
  • inspector/scripts/tests/expected/domains-with-varying-command-sizes.json-result:
  • inspector/scripts/tests/expected/enum-values.json-result:
  • inspector/scripts/tests/expected/events-with-optional-parameters.json-result:
  • inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result:
  • inspector/scripts/tests/expected/same-type-id-different-domain.json-result:
  • inspector/scripts/tests/expected/shadowed-optional-type-setters.json-result:
  • inspector/scripts/tests/expected/type-declaration-aliased-primitive-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-array-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-enum-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-object-type.json-result:
  • inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result:

Rebaseline test results.

9:35 AM Changeset in webkit [204254] by Chris Dumez
  • 5 edits
    2 adds in trunk

It should be possible to re-initialize an Event after it's been dispatched
https://bugs.webkit.org/show_bug.cgi?id=160651

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

  • web-platform-tests/dom/events/Event-propagation-expected.txt:

Source/WebCore:

Allow re-initialization of an Event that's already been dispatched, as
per the latest DOM specification:

Firefox already follows the specification here.

No new tests, rebaselined existing test.

Test: fast/events/initEvent-after-dispatch.html

  • dom/Event.cpp:

(WebCore::Event::initEvent):

LayoutTests:

Add layout test coverage.

  • fast/events/initEvent-after-dispatch-expected.txt: Added.
  • fast/events/initEvent-after-dispatch.html: Added.
9:18 AM Changeset in webkit [204253] by commit-queue@webkit.org
  • 8 edits in trunk/Tools

run-webkit-tests should trigger a spindump when WebContent process is unresponsive
https://bugs.webkit.org/show_bug.cgi?id=159827

Patch by Jonathan Bedard <Jonathan Bedard> on 2016-08-08
Reviewed by Daniel Bates.

This change was spurred by a process hang which occurred between tests and did
not produce a meaningful crashlog.

  • Scripts/webkitpy/port/driver.py:

(Driver._check_for_driver_crash_or_unresponsiveness): Notify test controller when finished through stdin.

  • Scripts/webkitpy/port/ios.py:

(IOSSimulatorPort):
(IOSSimulatorPort.sample_process): Attempt spindump, but use sample if spindump fails.

  • Scripts/webkitpy/port/mac.py:

(MacPort):
(MacPort.sample_process): Attempt spindump, but use sample if spindump fails.

  • Scripts/webkitpy/port/mac_unittest.py: Changed expected values to match spindump calls, added specific spindump test.
  • Scripts/webkitpy/port/driver_unittest.py: Added dummy write function.
  • WebKitTestRunner/TestController.h:

(WTR::TestController::usingServerMode): Added accessor for m_usingServerMode.

  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::dumpWebProcessUnresponsiveness): Wait for stdin before continuing when in server mode.

Note: See TracTimeline for information about the timeline view.