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

Timeline



Nov 5, 2017:

11:53 PM Changeset in webkit [224482] by mjs@apple.com
  • 1 edit in trunk/Source/WebCore/ChangeLog

Unreviewed. Remove stray conflict markers from ChangeLog.

11:04 PM Changeset in webkit [224481] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

REGRESSION (r221338): Web Inspector: NavigationBar incorrectly calculates minimumWidth
https://bugs.webkit.org/show_bug.cgi?id=179292

Reviewed by Devin Rousso.

  • UserInterface/Views/NavigationBar.js:

(WI.NavigationBar.prototype._calculateMinimumWidth):
totalItemWidth was the minimumWidth of the last item.

10:56 PM Changeset in webkit [224480] by jmarcell@apple.com
  • 3 edits in branches/safari-604.4.7.10-branch/Source/JavaScriptCore

Cherry-pick r224416. rdar://problem/35339831

10:47 PM Changeset in webkit [224479] by jmarcell@apple.com
  • 3 edits in branches/safari-604.4.7.0-branch/Source/JavaScriptCore

Cherry-pick r224416. rdar://problem/35296415

8:46 PM Changeset in webkit [224478] by jmarcell@apple.com
  • 3 edits in branches/safari-604.4.7.1-branch/Source/JavaScriptCore

Cherry-pick r224416. rdar://problem/35296413

8:10 PM Changeset in webkit [224477] by jmarcell@apple.com
  • 3 edits in branches/safari-604.4.7.1-branch/Source/JavaScriptCore

Revert r224473. rdar://problem/35296413

7:59 PM Changeset in webkit [224476] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[WinCairo] Fix build after r224463
https://bugs.webkit.org/show_bug.cgi?id=179310

Unreviewed build fix.

No new tests (No behavior change).

Patch by Fujii Hironori <Fujii Hironori> on 2017-11-05

  • platform/graphics/win/GraphicsContextCairoWin.cpp: Include "GraphicsContextImpl.h".
7:47 PM Changeset in webkit [224475] by webkit@devinrousso.com
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Canvas Tab: selecting Frame tree element should update preview/slider, does nothing
https://bugs.webkit.org/show_bug.cgi?id=179072
<rdar://problem/35278711>

Reviewed by Matt Baker.

  • UserInterface/Views/CanvasTabContentView.js:

(WI.CanvasTabContentView.prototype._navigationSidebarTreeOutlineSelectionChanged):

  • UserInterface/Views/RecordingActionTreeElement.css:

(.item.action > .titles .parameter.swizzled):
(.tree-outline:not(:focus, .force-focus) .item.action:not(.initial-state, .parent, .invalid) > .icon): Deleted.
(body:not(.window-inactive, .window-docked-inactive) .item.action > .titles .parameter.swizzled): Deleted.
Drive-by: remove extra :focus selectors to prevent icon flashing when the window is blurred.

6:17 PM Changeset in webkit [224474] by jmarcell@apple.com
  • 7 edits in branches/safari-604.4.7.1-branch/Source

Versioning.

6:17 PM Changeset in webkit [224473] by jmarcell@apple.com
  • 3 edits in branches/safari-604.4.7.1-branch/Source/JavaScriptCore

Cherry-pick r224416. rdar://problem/35296413

2:34 PM Changeset in webkit [224472] by graouts@webkit.org
  • 27 edits in trunk

[Web Animations] Schedule animations registered on the document timeline
https://bugs.webkit.org/show_bug.cgi?id=179236
<rdar://problem/35332669>

Reviewed by Dean Jackson.

Source/WebCore:

We now schedule animations contained in the document timeline using a three-step approach.

  1. Each time an object that is part of the timing model changes one of its timing properties, we call animationTimingModelDidChange() on the document timeline. This schedules performInvalidationTask() to be called when the current run loop completes, such that we invalidate the timing model just once per run loop.
  1. Once performInvalidationTask() is called, the timing model is invalidated in updateAnimationSchedule(). We iterate over the registered animations on the timineline and identify the shortest interval between the current time and the next moment one of the animations requires a tick to update its value. If we find a value below 15ms, we schedule animations to be resolved with scheduleAnimationResolution() right away. If the value is above 15ms, and not inifinity, we schedule a one-shot timer for that interval to call scheduleAnimationResolution().
  1. Once scheduleAnimationResolution() is called, we call scheduleAnimation() on the shared DisplayRefreshMonitorManager to be notified when the next display refresh occurs to actually resolve animations with resolveAnimations().

Note that, in this patch, resolveAnimations() does nothing, we will add support for interpolating values in
a future patch.

Another important thing to note is that every time the document timeline's current time is requested, we cache
it for the duration of the run loop such that the timing model always uses the same value during a given run loop.

Finally, to support tests where we check the state of the timing model by manually advancing time, we expose a
new pause() method on AnimationTimeline for tests to call to avoid the timeline to self-advance.

  • animation/AnimationTimeline.cpp:

(WebCore::AnimationTimeline::addAnimation): Mark that the timing model changed as a result of adding an animation.
(WebCore::AnimationTimeline::removeAnimation): Mark that the timing model changed as a result of removing an animation.
(WebCore::AnimationTimeline::bindingsCurrentTime): Update the method signature to no longer be const and call into
currentTime() instead of reading directly from the m_currentTime member variable since a subclass, like DocumentTimeline,
may have a custom currentTime() implementation.
(WebCore::AnimationTimeline::setCurrentTime): Mark that the timing model changed as a result of the timeline current time
changing.
(WebCore::AnimationTimeline::bindingsCurrentTime const): Deleted.

  • animation/AnimationTimeline.h:

(WebCore::AnimationTimeline::currentTime): Change both methods signatures to no longer be const so that DocumentTimeline's
implementation of currentTime() may cache the current time in a member variable, enqueuing a callback when the run loop
completes for this member variable to be reset, and updating some states.
(WebCore::AnimationTimeline::pause): To be implemented by subclasses.
(WebCore::AnimationTimeline::animationTimingModelDidChange): Add a new virtual method to indicate that the timing model
needs invalidating.
(WebCore::AnimationTimeline::animations const): Add an accessor to allow animations to be accessed by a subclass.

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::create):
(WebCore::DocumentTimeline::DocumentTimeline): Update the constructor signature to receive a Document and a PlatformDisplayID
since we need a reference to the Document to get at the nowTime() and a PlatformDisplayID to create the DisplayRefreshMonitor.
(WebCore::DocumentTimeline::~DocumentTimeline): Close the task queue when the timeline gets destroyed.
(WebCore::DocumentTimeline::currentTime): If we don't have a current cahed current time, compute one and schedule
the invalidation task if needed so that we may reset the cached value as the run loop completes.
(WebCore::DocumentTimeline::pause): Allows the timeline not to self-advance, for testing purposes only.
(WebCore::DocumentTimeline::animationTimingModelDidChange): If we haven't already done so, mark that we need to update our
animation schedule in the invalidation task and schedule that task if not scheduled yet.
(WebCore::DocumentTimeline::scheduleInvalidationTaskIfNeeded): Schedule the invalidation task to run as the run loop completes
if we haven't already done so.
(WebCore::DocumentTimeline::performInvalidationTask): Update the animation schedule if needed and reset the cached current
time value.
(WebCore::DocumentTimeline::updateAnimationSchedule): Iterate over registed animations and find the shortest interval until
one of them needs to update their animation. If the shortest interval is below 15ms, schedule the animation resolution right
away. If the shortest inverval is finite and above 15ms, then schedule a one-shot timer for that interval to perform the
animation resolution then.
(WebCore::DocumentTimeline::animationScheduleTimerFired): The one-shot timer to perform the animation resolution has fired,
we call scheduleAnimationResolution().
(WebCore::DocumentTimeline::scheduleAnimationResolution): We call scheduleAnimation() on the shared DisplayRefreshMonitorManager
so that we may resolve animations on the next display refresh, or start a timer if the DisplayRefreshMonitorManager is not available.
(WebCore::DocumentTimeline::displayRefreshFired): The display is about to refresh, we call resolveAnimations().
(WebCore::DocumentTimeline::animationResolutionTimerFired): The fallback animation resolution timer has fired, we call resolveAnimations().
(WebCore::DocumentTimeline::resolveAnimations): Currently do nothing, this is where we'll iterate over registered animations to
update them with the current time.
(WebCore::DocumentTimeline::windowScreenDidChange): Notify the shared DisplayRefreshMonitorManager that the PlatformDisplayID
changed.
(WebCore::DocumentTimeline::createDisplayRefreshMonitor const): Provide a DisplayRefreshMonitor as part of the
DisplayRefreshMonitorClient protocol.

  • animation/DocumentTimeline.h:
  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::create): Remove extra white space.
(WebCore::WebAnimation::setStartTime): Mark that the timing model changed as a result of changing this animation's start time.
(WebCore::WebAnimation::timeToNextRequiredTick const): Compute the interval until the next time we need to resolve this animation.
If the provided current time is before this animation's start time, compute the delay until the start time. If the current time
is after the animation's start time but before the animation's end time, indicate that we want to resolve the animation again
right away and return 0ms. In any other case, return an infinite interval to indicate that we don't need to be refreshed after
the provided time.

  • animation/WebAnimation.h:
  • dom/Document.cpp:

(WebCore::Document::windowScreenDidChange): Notify the document timeline that the PlatformDisplayID changed.
(WebCore::Document::timeline): Provide the Document and the PlatformDisplayID to the DocumentTimeline.

  • testing/Internals.cpp:

(WebCore::Internals::pauseTimeline):

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

LayoutTests:

Adopt the new internals.pauseTimeline() method to ensure that the existing
tests do not have a self-advancing timeline since we're interested in checking
the timing model state based on manually setting the timeline current time.

Also update some WPT expectations with some progressions.

in the failure.

  • http/wpt/web-animations/interfaces/AnimationTimeline/document-timeline-expected.txt:
  • http/wpt/web-animations/timing-model/animations/current-time-expected.txt:
  • http/wpt/web-animations/timing-model/animations/set-the-animation-start-time-expected.txt:
  • http/wpt/wk-web-animations/timing-model/animation-creation-basic.html:
  • http/wpt/wk-web-animations/timing-model/animation-current-time.html:
  • http/wpt/wk-web-animations/timing-model/animation-effect-timing.html:
  • http/wpt/wk-web-animations/timing-model/animation-effect.html:
  • http/wpt/wk-web-animations/timing-model/animation-interface-effect-property.html:
  • http/wpt/wk-web-animations/timing-model/animation-interface-start-time-property.html:
  • http/wpt/wk-web-animations/timing-model/animation-playback-rate.html:
  • http/wpt/wk-web-animations/timing-model/document-timeline.html:
  • http/wpt/wk-web-animations/timing-model/keyframe-effect-interface-timing-duration.html:
  • http/wpt/wk-web-animations/timing-model/keyframe-effect.html:
  • http/wpt/wk-web-animations/timing-model/timeline-current-time.html:
2:17 PM Changeset in webkit [224471] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark http/tests/security/xss-DENIED-xsl-external-entity.xml as a flaky failure on Windows.
https://bugs.webkit.org/show_bug.cgi?id=179301

Unreviewed test gardening.

  • platform/win/TestExpectations:
12:32 PM Changeset in webkit [224470] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark fast/html/menuitem-element.html as failure on Windows.
https://bugs.webkit.org/show_bug.cgi?id=179299

Unreviewed test gardening.

  • platform/win/TestExpectations:
12:18 PM Changeset in webkit [224469] by Chris Dumez
  • 23 edits in trunk

Implement ServiceWorkerRegistration.update()
https://bugs.webkit.org/show_bug.cgi?id=179270

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that more are passing or at least failing later.

  • web-platform-tests/service-workers/service-worker/claim-affect-other-registration.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/claim-with-redirect.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/import-scripts-redirect.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/multiple-register.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/multiple-update.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/postmessage-from-waiting-serviceworker.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/ready.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/registration-script.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/skip-waiting.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/unregister-then-register.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/update.https-expected.txt:

I investigated this test and it is still failing later on because we clear registrations too
aggressively on the StorageProcess side we are supposed to make sure the registration does
not have a newestWorker before clearing it when a script fetch fails or a script syntax error
occurs. We properly have those if (!newestWorker) checks in the code but service workers
are not yet populated on the SWServerRegistration object so SWServerRegistration::getNewestWorker()
alwasy returns null.

Source/WebCore:

Implement ServiceWorkerRegistration.update():

We already had support for the Update algorithm in SWServerJobQueue but
this patch enhances our support a bit to get us closer to the specification:

No new tests, rebaselined existing tests.

  • workers/service/ServiceWorker.h:
  • workers/service/ServiceWorkerContainer.cpp:

(WebCore::ServiceWorkerContainer::updateRegistration):
(WebCore::ServiceWorkerContainer::getRegistration):
(WebCore::ServiceWorkerContainer::jobResolvedWithRegistration):

  • workers/service/ServiceWorkerContainer.h:
  • workers/service/ServiceWorkerJobData.h:

(WebCore::ServiceWorkerJobData::encode const):
(WebCore::ServiceWorkerJobData::decode):

  • workers/service/ServiceWorkerJobType.h:
  • workers/service/ServiceWorkerRegistration.cpp:

(WebCore::ServiceWorkerRegistration::ServiceWorkerRegistration):
(WebCore::ServiceWorkerRegistration::installing):
(WebCore::ServiceWorkerRegistration::waiting):
(WebCore::ServiceWorkerRegistration::active):
(WebCore::ServiceWorkerRegistration::setInstallingWorker):
(WebCore::ServiceWorkerRegistration::setWaitingWorker):
(WebCore::ServiceWorkerRegistration::setActiveWorker):
(WebCore::ServiceWorkerRegistration::getNewestWorker):
(WebCore::ServiceWorkerRegistration::update):

  • workers/service/ServiceWorkerRegistration.h:
  • workers/service/server/SWServerJobQueue.cpp:

(WebCore::SWServerJobQueue::scriptFetchFinished):
(WebCore::SWServerJobQueue::scriptContextFailedToStart):
(WebCore::SWServerJobQueue::runNextJobSynchronously):
(WebCore::SWServerJobQueue::runUpdateJob):

11:20 AM Changeset in webkit [224468] by pvollan@apple.com
  • 2 edits in trunk/JSTests

[Win] Skip stress/regress-178385.js.
https://bugs.webkit.org/show_bug.cgi?id=179298

Unreviewed test gardening.

  • stress/regress-178385.js:
9:51 AM Changeset in webkit [224467] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark fast/loader/empty-embed-src-attribute.html as a flaky crash on Windows.
https://bugs.webkit.org/show_bug.cgi?id=179297

Unreviewed test gardening.

  • platform/win/TestExpectations:
9:06 AM Changeset in webkit [224466] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark fast/css/object-fit/object-fit-embed.html and related tests as failing on Windows.
https://bugs.webkit.org/show_bug.cgi?id=179296

Unreviewed test gardening.

  • platform/win/TestExpectations:

Nov 4, 2017:

10:40 PM Changeset in webkit [224465] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

Move code that maps a CompositeOperator and BlendMode to a CGBlendMode into a helper function
https://bugs.webkit.org/show_bug.cgi?id=179290

Reviewed by Darin Adler.

Move the code, and use nested switch rather than conditionals.

  • platform/graphics/GraphicsTypes.h:
  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::compositeAndBlendToCGBlendMode):
(WebCore::GraphicsContext::setPlatformCompositeOperation):

5:54 PM Changeset in webkit [224464] by Chris Dumez
  • 9 edits in trunk

Index properties on cross origin Window objects should be enumerable
https://bugs.webkit.org/show_bug.cgi?id=179289

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Re-sync WPT test after:

Rebaseline a couple of WPT tests now that more checks are passing.

  • web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt:
  • web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html:
  • web-platform-tests/html/browsers/the-window-object/window-indexed-properties-expected.txt:

Source/WebCore:

Index properties on cross origin Window objects should be enumerable:

All exposed properties used to be enumerable but we had to revert this in
r224287 because it was not Web-compatible. The HTML specification has now
been updated so that only index properties are enumerable cross origin.

No new tests, rebaselined existing tests.

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::getOwnPropertySlotByIndex):
(WebCore::JSDOMWindow::getOwnPropertyNames):

LayoutTests:

Update / rebaseline existing test to match new expected behavior.

  • js/dom/getOwnPropertyDescriptor-expected.txt:
  • js/resources/getOwnPropertyDescriptor.js:
4:43 PM Changeset in webkit [224463] by Simon Fraser
  • 14 edits
    2 adds in trunk/Source/WebCore

Add a GraphicsContextImpl and use it for DispayList::Recorder
https://bugs.webkit.org/show_bug.cgi?id=179286

Reviewed by Sam Weinig.

Start moving towards a model when GraphicsContext has a pointer to an implementation
("pimpl") by adding GraphicsContextImpl, and converting display list recording to
be an implementation of a GraphicsContextImpl.

No behavior change.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::DisplayListDrawingContext::DisplayListDrawingContext):

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::GraphicsContext):
(WebCore::GraphicsContext::save):
(WebCore::GraphicsContext::restore):
(WebCore::GraphicsContext::setStrokeThickness):
(WebCore::GraphicsContext::setStrokeStyle):
(WebCore::GraphicsContext::setStrokeColor):
(WebCore::GraphicsContext::setShadow):
(WebCore::GraphicsContext::setLegacyShadow):
(WebCore::GraphicsContext::clearShadow):
(WebCore::GraphicsContext::setFillColor):
(WebCore::GraphicsContext::setShadowsIgnoreTransforms):
(WebCore::GraphicsContext::setShouldAntialias):
(WebCore::GraphicsContext::setShouldSmoothFonts):
(WebCore::GraphicsContext::setShouldSubpixelQuantizeFonts):
(WebCore::GraphicsContext::setImageInterpolationQuality):
(WebCore::GraphicsContext::setStrokePattern):
(WebCore::GraphicsContext::setFillPattern):
(WebCore::GraphicsContext::setStrokeGradient):
(WebCore::GraphicsContext::setFillRule):
(WebCore::GraphicsContext::setFillGradient):
(WebCore::GraphicsContext::beginTransparencyLayer):
(WebCore::GraphicsContext::endTransparencyLayer):
(WebCore::GraphicsContext::drawGlyphs):
(WebCore::GraphicsContext::drawImage):
(WebCore::GraphicsContext::drawTiledImage):
(WebCore::GraphicsContext::setTextDrawingMode):
(WebCore::GraphicsContext::fillRect):
(WebCore::GraphicsContext::fillRoundedRect):
(WebCore::GraphicsContext::setAlpha):
(WebCore::GraphicsContext::setCompositeOperation):
(WebCore::GraphicsContext::setDrawLuminanceMask):
(WebCore::GraphicsContext::applyDeviceScaleFactor):
(WebCore::GraphicsContext::fillEllipse):
(WebCore::GraphicsContext::strokeEllipse):

  • platform/graphics/GraphicsContext.h:

(WebCore::GraphicsContext::hasPlatformContext const):
(WebCore::GraphicsContext::paintingDisabled const):
(WebCore::GraphicsContext::setDisplayListRecorder): Deleted.
(WebCore::GraphicsContext::isRecording const): Deleted.

  • platform/graphics/GraphicsContextImpl.cpp: Added.

(WebCore::GraphicsContextImpl::GraphicsContextImpl):
(WebCore::GraphicsContextImpl::~GraphicsContextImpl):

  • platform/graphics/GraphicsContextImpl.h: Added.

(WebCore::GraphicsContextImpl::graphicsContext const):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::recursiveCommitChanges):

  • platform/graphics/cairo/GraphicsContextCairo.cpp:

(WebCore::GraphicsContext::getCTM const):
(WebCore::GraphicsContext::savePlatformState):
(WebCore::GraphicsContext::restorePlatformState):
(WebCore::GraphicsContext::drawRect):
(WebCore::GraphicsContext::drawNativeImage):
(WebCore::GraphicsContext::drawLine):
(WebCore::GraphicsContext::drawEllipse):
(WebCore::GraphicsContext::fillPath):
(WebCore::GraphicsContext::strokePath):
(WebCore::GraphicsContext::fillRect):
(WebCore::GraphicsContext::clip):
(WebCore::GraphicsContext::clipPath):
(WebCore::GraphicsContext::clipBounds const):
(WebCore::GraphicsContext::drawLinesForText):
(WebCore::GraphicsContext::roundToDevicePixels):
(WebCore::GraphicsContext::translate):
(WebCore::GraphicsContext::setPlatformStrokeThickness):
(WebCore::GraphicsContext::setPlatformStrokeStyle):
(WebCore::GraphicsContext::concatCTM):
(WebCore::GraphicsContext::setCTM):
(WebCore::GraphicsContext::beginPlatformTransparencyLayer):
(WebCore::GraphicsContext::endPlatformTransparencyLayer):
(WebCore::GraphicsContext::clearRect):
(WebCore::GraphicsContext::strokeRect):
(WebCore::GraphicsContext::setLineCap):
(WebCore::GraphicsContext::setLineDash):
(WebCore::GraphicsContext::setLineJoin):
(WebCore::GraphicsContext::setMiterLimit):
(WebCore::GraphicsContext::clipOut):
(WebCore::GraphicsContext::rotate):
(WebCore::GraphicsContext::scale):
(WebCore::GraphicsContext::platformFillRoundedRect):
(WebCore::GraphicsContext::fillRectWithRoundedHole):
(WebCore::GraphicsContext::drawPattern):
(WebCore::GraphicsContext::setPlatformShouldAntialias):
(WebCore::GraphicsContext::setPlatformImageInterpolationQuality):
(WebCore::GraphicsContext::isAcceleratedContext const):

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::GraphicsContext::savePlatformState):
(WebCore::GraphicsContext::restorePlatformState):
(WebCore::GraphicsContext::drawNativeImage):
(WebCore::GraphicsContext::drawPattern):
(WebCore::GraphicsContext::drawRect):
(WebCore::GraphicsContext::drawLine):
(WebCore::GraphicsContext::drawEllipse):
(WebCore::GraphicsContext::applyStrokePattern):
(WebCore::GraphicsContext::applyFillPattern):
(WebCore::GraphicsContext::drawPath):
(WebCore::GraphicsContext::fillPath):
(WebCore::GraphicsContext::strokePath):
(WebCore::GraphicsContext::fillRect):
(WebCore::GraphicsContext::platformFillRoundedRect):
(WebCore::GraphicsContext::fillRectWithRoundedHole):
(WebCore::GraphicsContext::clip):
(WebCore::GraphicsContext::clipOut):
(WebCore::GraphicsContext::clipPath):
(WebCore::GraphicsContext::clipBounds const):
(WebCore::GraphicsContext::beginPlatformTransparencyLayer):
(WebCore::GraphicsContext::endPlatformTransparencyLayer):
(WebCore::GraphicsContext::setPlatformShadow):
(WebCore::GraphicsContext::setMiterLimit):
(WebCore::GraphicsContext::clearRect):
(WebCore::GraphicsContext::strokeRect):
(WebCore::GraphicsContext::setLineCap):
(WebCore::GraphicsContext::setLineDash):
(WebCore::GraphicsContext::setLineJoin):
(WebCore::GraphicsContext::scale):
(WebCore::GraphicsContext::rotate):
(WebCore::GraphicsContext::translate):
(WebCore::GraphicsContext::concatCTM):
(WebCore::GraphicsContext::setCTM):
(WebCore::GraphicsContext::getCTM const):
(WebCore::GraphicsContext::roundToDevicePixels):
(WebCore::GraphicsContext::drawLinesForText):
(WebCore::GraphicsContext::setURLForRect):
(WebCore::GraphicsContext::setIsCALayerContext):
(WebCore::GraphicsContext::isCALayerContext const):
(WebCore::GraphicsContext::setIsAcceleratedContext):
(WebCore::GraphicsContext::isAcceleratedContext const):
(WebCore::GraphicsContext::setPlatformTextDrawingMode):
(WebCore::GraphicsContext::setPlatformStrokeColor):
(WebCore::GraphicsContext::setPlatformStrokeThickness):
(WebCore::GraphicsContext::setPlatformFillColor):
(WebCore::GraphicsContext::setPlatformShouldAntialias):
(WebCore::GraphicsContext::setPlatformShouldSmoothFonts):
(WebCore::GraphicsContext::setPlatformAlpha):
(WebCore::GraphicsContext::setPlatformCompositeOperation):
(WebCore::GraphicsContext::platformApplyDeviceScaleFactor):
(WebCore::GraphicsContext::platformFillEllipse):
(WebCore::GraphicsContext::platformStrokeEllipse):
(WebCore::GraphicsContext::setDestinationForRect):
(WebCore::GraphicsContext::addDestinationAtPoint):

  • platform/graphics/cocoa/GraphicsContextCocoa.mm:

(WebCore::GraphicsContext::drawFocusRing):

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::Recorder):
(WebCore::DisplayList::Recorder::updateItemExtent const):
(WebCore::DisplayList::Recorder::extentFromLocalBounds const):

  • platform/graphics/displaylists/DisplayListRecorder.h:

(WebCore::DisplayList::Recorder::itemCount const):

  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::paint):

4:01 PM Changeset in webkit [224462] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

REGRESSION(r223718): Leaking WebProcessPool after reconfiguration
https://bugs.webkit.org/show_bug.cgi?id=179123
<rdar://problem/35294685>

Reviewed by Geoff Garen.

Make sure we destroy the ServiceWorker WebProcess once all other WebProcesses
go away at there is no use keeping it running at this point. Also, this prevents
leaking the WebProcessPool since the WebProcessProxy holds a strong reference
to the WebProcessPool.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::disconnectProcess):

3:02 PM Changeset in webkit [224461] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LayoutState cleanup] Move all LayoutState* classes to LayoutState.h/cpp
https://bugs.webkit.org/show_bug.cgi?id=179280
<rdar://problem/35348452>

Reviewed by Antti Koivisto.

No change in functionality.

  • page/LayoutContext.cpp:

(WebCore::SubtreeLayoutStateMaintainer::SubtreeLayoutStateMaintainer): Deleted.
(WebCore::SubtreeLayoutStateMaintainer::~SubtreeLayoutStateMaintainer): Deleted.
(WebCore::SubtreeLayoutStateMaintainer::shouldDisableLayoutStateForSubtree): Deleted.

  • rendering/LayoutState.cpp:

(WebCore::LayoutStateMaintainer::LayoutStateMaintainer):
(WebCore::LayoutStateMaintainer::~LayoutStateMaintainer):
(WebCore::LayoutStateMaintainer::push):
(WebCore::LayoutStateMaintainer::pop):
(WebCore::LayoutStateDisabler::LayoutStateDisabler):
(WebCore::LayoutStateDisabler::~LayoutStateDisabler):
(WebCore::shouldDisableLayoutStateForSubtree):
(WebCore::SubtreeLayoutStateMaintainer::SubtreeLayoutStateMaintainer):
(WebCore::SubtreeLayoutStateMaintainer::~SubtreeLayoutStateMaintainer):
(WebCore::PaginatedLayoutStateMaintainer::PaginatedLayoutStateMaintainer):
(WebCore::PaginatedLayoutStateMaintainer::~PaginatedLayoutStateMaintainer):

  • rendering/LayoutState.h:

(WebCore::LayoutStateMaintainer::didPush const):

  • rendering/RenderBlockFlow.cpp:

(WebCore::PaginatedLayoutStateMaintainer::PaginatedLayoutStateMaintainer): Deleted.
(WebCore::PaginatedLayoutStateMaintainer::~PaginatedLayoutStateMaintainer): Deleted.
(): Deleted.

  • rendering/RenderView.h:

(WebCore::LayoutStateMaintainer::LayoutStateMaintainer): Deleted.
(WebCore::LayoutStateMaintainer::~LayoutStateMaintainer): Deleted.
(WebCore::LayoutStateMaintainer::push): Deleted.
(WebCore::LayoutStateMaintainer::pop): Deleted.
(WebCore::LayoutStateMaintainer::didPush const): Deleted.
(WebCore::LayoutStateDisabler::LayoutStateDisabler): Deleted.
(WebCore::LayoutStateDisabler::~LayoutStateDisabler): Deleted.

2:41 PM Changeset in webkit [224460] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LayoutState cleanup] Move offset/cliprect/pagination code to dedicate methods
https://bugs.webkit.org/show_bug.cgi?id=179279
<rdar://problem/35348171>

Reviewed by Antti Koivisto.

This is in preparation for creating the initial LayoutSate through LayoutStateMaintainer.

Moving code around. No change in functionality.

  • rendering/LayoutState.cpp:

(WebCore::LayoutState::LayoutState):
(WebCore::LayoutState::computeOffsets):
(WebCore::LayoutState::computeClipRect):
(WebCore::LayoutState::computePaginationInformation):

  • rendering/LayoutState.h:
2:19 PM Changeset in webkit [224459] by Darin Adler
  • 61 edits
    2 deletes in trunk/Source

Simplify event dispatch code and make it a bit more consistent
https://bugs.webkit.org/show_bug.cgi?id=178991

Reviewed by Chris Dumez.

Source/WebCore:

Straighten out event dispatch code in three ways:

1) Add an Event::resetAfterDispatch function, and use it instead of the multiple

separate functions that were used before to reset after dispatching. This fixed
an extremely minor bug where we would leave some kinds of state on some event
objects in unusual cases after dispatching the events.

2) Remove IDBEventDispatcher and make its callers use EventDispatcher instead.

This leaves us with one less event dispatch code path to maintain, more shared code.

3) Remove boolean return values from functions that take event objects and

dispatch the events. The return values are redundant with various things that
can be checked by looking at the event itself. The legacy return value indicates
whether the event has its "canceled flag" set, which means that the default
behavior should be prevented. If that is what we need to check, it's easier
to read the code and see that it's correct if it calls the named function
"defaultPrevented" directly. More importantly, callers can also call whatever
other function is appropriate to ask the specific relevant question to their needs.
The general rule is that default behavior that we want to allow even with an
untrusted event can be inside a default event handler function. Default behavior
that should only happen for the browser-generated event can and should be done
after dispatching the event, in the code that dispatches it; but that requires
explicitly checking "defaultPrevented".

  • Modules/indexeddb/IDBDatabase.cpp:

(WebCore::IDBDatabase::dispatchEvent): Removed boolean return value.

  • Modules/indexeddb/IDBDatabase.h: Ditto.
  • Modules/indexeddb/IDBEventDispatcher.cpp: Removed.
  • Modules/indexeddb/IDBEventDispatcher.h: Removed.
  • Modules/indexeddb/IDBOpenDBRequest.cpp:

(WebCore::IDBOpenDBRequest::dispatchEvent): Removed boolean return value.
Added protection for "this" since the function accesses it after dispatching the event.

  • Modules/indexeddb/IDBOpenDBRequest.h: Ditto.
  • Modules/indexeddb/IDBRequest.cpp:

(WebCore::IDBRequest::dispatchEvent): Removed boolean return value. Instead of using
IDBEventDispatcher, use EventDispatcher's new function that takes an initializer_list
with a list of event targets. Added protection for "this" since the function accesses
it after dispatching the event.

  • Modules/indexeddb/IDBRequest.h: Ditto.
  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::dispatchEvent): Ditto.

  • Modules/indexeddb/IDBTransaction.h: Ditto.
  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::dispatchEvent): Removed boolean return value.

  • Modules/mediastream/RTCPeerConnection.h: Ditto.
  • Modules/paymentrequest/PaymentRequest.cpp:

(WebCore::PaymentRequest::shippingAddressChanged): Don't dispatch an event if
m_isUpdating is true; preserves behavior that was implemented in
PaymentRequest::dispatchEvent before. Since this is the source of the trusted
event, cleaner to implement the rule here instead of overriding dispatchEvent.
(WebCore::PaymentRequest::shippingOptionChanged): Ditto.
(WebCore::PaymentRequest::dispatchEvent): Deleted.

  • Modules/paymentrequest/PaymentRequest.h: Ditto.
  • Sources.txt: Removed IDBEventDispatcher.cpp.
  • WebCore.xcodeproj/project.pbxproj: Removed IDBEventDispatcher.h/cpp.
  • dom/Element.cpp:

(WebCore::Element::dispatchMouseEvent): Updated to call defaultPrevented
directly instead of using the return value of dispatchEvent.
(WebCore::Element::dispatchWheelEvent): Ditto.
(WebCore::Element::dispatchKeyEvent): Ditto.
(WebCore::Element::dispatchFocusInEvent): Removed assertion, since the
underlying event dispatching takes care of it.
(WebCore::Element::dispatchFocusOutEvent): Ditto.
(WebCore::Element::dispatchFocusEvent): Call dispatchEvent instead of
calling EventDispatcher::dispatchEvent. There is no good reason to use
EventDispatcher directly.
(WebCore::Element::dispatchBlurEvent): Ditto.

  • dom/Event.cpp:

(WebCore::Event::eventInterface const): Deleted. Moved into header since this is
short and if called in a non-polymorphic context it's good to have it be inlined.
(WebCore::Event::isUIEvent const): Ditto.
(WebCore::Event::isMouseEvent const): Ditto.
(WebCore::Event::isFocusEvent const): Ditto.
(WebCore::Event::isKeyboardEvent const): Ditto.
(WebCore::Event::isInputEvent const): Ditto.
(WebCore::Event::isCompositionEvent const): Ditto.
(WebCore::Event::isTouchEvent const): Ditto.
(WebCore::Event::isClipboardEvent const): Ditto.
(WebCore::Event::isBeforeTextInsertedEvent const): Ditto.
(WebCore::Event::isBeforeUnloadEvent const): Ditto.
(WebCore::Event::isErrorEvent const): Ditto.
(WebCore::Event::isTextEvent const): Ditto.
(WebCore::Event::isWheelEvent const): Ditto.
(WebCore::Event::receivedTarget): Ditto.
(WebCore::Event::resetAfterDispatch): Added. Replaces functions like
clearEventPath and resetPropagationFlags, covering all the things we need to clear
after dispatching an event.

  • dom/Event.h: Removed some unneeded includes and forward declarations. Moved bodies

of multi-line inline member functions out of the class definition. Changed argument
type of setEventPhase and m_eventPhase to an enum rather than just an integer, since
only the getter is for use from the bindings. Removed clearEventPath, srcElement, and
resetPropagationFlags. Sorted the isXXX functions alphabetically and removed previous
attempts to make categories out of them. Marked the constructor explicit since it has
a single argument. Moved trivially short bodies into the class definition.

  • dom/Event.idl: Use ImplementedAs to implement srcElement so we don't need it in

the C++ code.

  • dom/EventContext.cpp:

(WebCore::EventContext::EventContext): Removed assertion since we now handle event
contexts without nodes so we can use this to dispatch events for IDB, for example.
(WebCore::EventContext::handleLocalEvents const): Add code to handle non-node event
targets by calling fireEventListeners directly.
(WebCore::MouseOrFocusEventContext::MouseOrFocusEventContext): Take a reference
insetad of a pointer for the node.
(WebCore::TouchEventContext::TouchEventContext): Ditto.
(WebCore::TouchEventContext::handleLocalEvents const): Streamline a bit by improving
the checkReachability function to be easier to call. Also removed an unneeded assertion
just before calling downcast<>, the same assertion that downcast<> itself does.
(WebCore::TouchEventContext::checkReachability const): Chagned argument type to take
a Ref& so the caller doesn't have to call get() or ptr().

  • dom/EventContext.h: Removed unneeded FIXME and currentTargetSameAsTarget function.

Changed arguemnt types to use Node& instead of Node* as appropriate. Removed unused
functions from TouchEventContext, made more private, and changed data members to Ref
instead of RefPtr. Removed unused NotTouchList value from TouchListType enumeration.
Changed touchList function to return a reference instead of a pointer.

  • dom/EventDispatcher.cpp: Removed unneeded includes.

(WebCore::dispatchEventInDOM): Removed use of currentTargetSameAsTarget since it's
clearer if written out.
(WebCore::EventDispatcher::dispatchEvent): Changed no-event dispatch assertion to
use RELEASE_ASSERT_WITH_SECURITY_IMPLICATION since the style checker says so, but
it still doesn't assert anything in release builds because the check in
NoEventDispatchAssertion itself is debug-only. Moved the calls to EventPath's
setRelatedTarget and retargetTouchLists functions inside the EventPath constructor.
Removed the second no-event dispatch assertion because we only need one. Replaced
calls to clearEventPath, setCurrentTarget(nullptr), resetPropagationFlags,
and setEventPhase(NONE) and with a call to resetAfterDispatch. Moved the code that
temporarily sets the target to a different value when calling default event handlers
into the block that calls the default event handlers. Added a new overload that
takes an initializer list of event targets so we can dispatch events that are not
being sent to nodes.

  • dom/EventDispatcher.h: Fixed misleading copyright dates and names since this file

just contains a couple of function declarations. Added new overload of dispatchEvent.

  • dom/EventPath.cpp:

(WebCore::WindowEventContext::WindowEventContext): Take references instead of pointers.
(WebCore::EventPath::EventPath): Moved the bulk of construction into a new function
named buildPath, so it can still use "return" without skipping the additions here.
Added calls to setRelatedTarget and retargetTouchLists and now both can be private.
Also added a new overload that takes event targets that are not nodes.
(WebCore::EventPath::buildPath): Added. Contains what used to be in the constructor.
But use some references instead of pointers and refactor a bit using lambdas.
(WebCore::EventPath::retargetTouchList): Added. Makes the retargetTouchLists function
shorter and less repetetive.
(WebCore::EventPath::retargetTouchLists): Updated to call retargetTouchList.
(WebCore::EventPath::hasEventListeners const): Deleted. This was unused.

  • dom/EventPath.h: Added a constructor that takes an initializer list of event targets.

Made retargetTouchEvents and setRelatedTarget private and used them in the constructor
insead of expecting clients to call them. Removed unused hasEventListeners and
lastContextIfExists functions. Moved body of the eventTargetRespectingTargetRules
function out of the class definition.

  • dom/EventTarget.cpp:

(WebCore::EventTarget::dispatchEventForBindings): Updated so it does not expect
dispatchEvent to return a boolean. Instead call a function on the event after dispatching.
Decided to use legacyReturnValue instead of !defaultPrevented, because this is exactly
the return value that the returnValue property is referring to.
(WebCore::EventTarget::dispatchEvent): Removed return value. Replaced calls to
resetPropagationFlags and setEventPhase(NONE) with a call to resetAfterDispatch.
I noticed that there was a local boolean here named "defaultPrevented", which was
backwards; the value in that local was "default not prevented". Doesn't matter since
the boolean return value was removed.
(WebCore::EventTarget::fireEventListeners): Removed the boolean return value.

  • dom/EventTarget.h: Added initial values to members of ListenerOptions and

AddEventListenerOptions; maybe we can get rid of the constructors some day.
Removed booelan return values from dispatchEvent and fireEventListeners.

  • dom/KeyboardEvent.cpp: Removed unneeded include of EventDispatcher.h.
  • dom/Node.cpp:

(WebCore::Node::dispatchEvent): Got rid of boolean return value.
Removed special case code that sometimes called dispatchTouchEvent, since that
just turns around and calls EventDispatcher::dispatchEvent just like this function.
(WebCore::Node::dispatchDOMActivateEvent): Removed boolean return value, removed
integer detail argument and moved the logic to compute the value of the detail
peroprty and to call setDefaultHandled on the underlying click event in here.
This is a private helper function used only in one place.
(WebCore::Node::dispatchTouchEvent): Deleted.
(WebCore::Node::defaultEventHandler): Updated for change to dispatchDOMActivateEvent.

  • dom/Node.h: Updated for the above changes.
  • dom/RejectedPromiseTracker.cpp:

(WebCore::RejectedPromiseTracker::reportUnhandledRejections): Use defaultPrevented
directly instead of the return value from dispatchEvent.

  • dom/ScopedEventQueue.cpp:

(WebCore::ScopedEventQueue::enqueueEvent): Moved assertions here ...
(WebCore::ScopedEventQueue::dispatchEvent const): ... from here. Also changed this
to call Node::dispatchEvent instead of calling EventDispatcher::dispatchEvent directly.

  • dom/SimulatedClick.cpp:

(WebCore::simulateMouseEvent): Call Element::dispatchEvent instead of calling
EventDispatcher::dispatchEvent directly.

  • editing/Editor.cpp:

(WebCore::dispatchBeforeInputEvent): Use defaultPrevented directly instead of the
return value from dispatchEvent.

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::selectAll): Ditto.
(WebCore::FrameSelection::dispatchSelectStart): Ditto.

  • html/CheckboxInputType.cpp:

(WebCore::CheckboxInputType::didDispatchClick): Take a reference instead of a pointer.

  • html/CheckboxInputType.h: Updated for above and to use final instead of override.
  • html/HTMLFormControlElement.cpp:

(WebCore::HTMLFormControlElement::checkValidity): Use defaultPrevented directly instead
of the return value from dispatchEvent.

  • html/HTMLFormElement.cpp:

(WebCore::HTMLFormElement::prepareForSubmission): Use defaultPrevented directly instead
of the return value from dispatchEvent.
(WebCore::HTMLFormElement::reset): Ditto.

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::didDispatchClickEvent): Updated to pass references instead
of pointer.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::dispatchEvent): Got rid of boolean return value.

  • html/HTMLMediaElement.h: Ditto.
  • html/HTMLPlugInElement.h: Use "delete" instead of just a private function for something

that should never be called.

  • html/InputType.cpp:

(WebCore::InputType::didDispatchClick): Take a reference instead of a pointer.

  • html/InputType.h: Ditto.
  • html/RadioInputType.cpp:

(WebCore::RadioInputType::didDispatchClick): Ditto.

  • html/RadioInputType.h: Updated for above and to use final instead of override.
  • html/track/TextTrackCue.cpp:

(WebCore::TextTrackCue::dispatchEvent): Got rid of boolean return value.

  • html/track/TextTrackCue.h: Ditto.
  • inspector/InspectorInstrumentation.cpp: Removed unneeded include of EventDispatcher.h.
  • page/DOMWindow.cpp:

(WebCore::DOMWindow::dispatchLoadEvent): Streamlined code a bit so we only have a single
call to dispatchEvent. Improved comments.
(WebCore::DOMWindow::dispatchEvent): Removed return value. Added comments. Replaced
calls to setCurrentTarget(null), setEventPhase(NONE), and resetPropagationFlags with
a call to resetAfterDispatch.

  • page/DOMWindow.h: Updated to get rid of the boolean return value.
  • page/DragController.cpp:

(WebCore::DragController::dispatchTextInputEventFor): Use defaultPrevented directly instead
of the return value from dispatchEvent.

  • page/EventHandler.cpp:

(WebCore::dispatchSelectStart): Use defaultPrevented directly instead
of the return value from dispatchEvent.
(WebCore::EventHandler::accessibilityPreventsEventPropagation): Fixed spelling error in the
name of this function.
(WebCore::EventHandler::dispatchDragSrcEvent): Got rid of boolean return value.
(WebCore::EventHandler::handleTouchEvent): Call dispatchEvent instead of dispatchTouchEvent;
there was no difference between the two except that dispatchTouchEvent required downcasting
and might some day lead to us missing some behavior implemented in an override to dispatchEvent.

  • page/EventHandler.h: Updated for above changes.
  • platform/graphics/filters/FilterOperation.h:

(WebCore::FilterOperation::clone): Removed dead code that was causing a compiler warning.

  • workers/WorkerMessagingProxy.cpp:

(WebCore::WorkerMessagingProxy::postExceptionToWorkerObject): Use defaultPrevented
directly instead of the return value from dispatchEvent.

Source/WebKit:

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

(webkit_dom_event_get_src_element): Call target instead of srcElement.

Source/WebKitLegacy/mac:

  • DOM/DOMEvent.mm:

(-[DOMEvent srcElement]): Call target instead of srcElement.

9:47 AM Changeset in webkit [224458] by Michael Catanzaro
  • 2 edits in trunk/Tools

[GTK] Fix gtk-doc generation with gtk-doc master
https://bugs.webkit.org/show_bug.cgi?id=179252

Reviewed by Carlos Garcia Campos.

gtkdoc-scangobj has changed to no longer use a shell when executing its subcommands. In
particular, this means we can no longer rely on shell stuff in our run command that we use
to run the scanner. We currently use the RUN envvar to set LD_LIBRARY_PATH, and the end
result is gtkdoc-scangobj now attempts to execute our environment variable instead of the
scanner itself. We can just set LD_LIBRARY_PATH directly, instead of using RUN, in order to
make documentation generation work again.

  • gtk/gtkdoc.py:

(GTKDoc._run_gtkdoc_scangobj):

1:20 AM Changeset in webkit [224457] by commit-queue@webkit.org
  • 26 edits
    3 copies
    2 adds in trunk

[Touch Bar Web API] Add support for menuitem tag
https://bugs.webkit.org/show_bug.cgi?id=179020

Patch by Aishwarya Nirmal <anirmal@apple.com> on 2017-11-04
Reviewed by Ryosuke Niwa.

Source/WebCore:

The Touch Bar Web API will make use of the menu and menuitem tags
to represent the NSTouchBar and NSTouchBarItem respectively.
Since WebKit currently does not offer support for the menuitem tag,
this change adds it in. There is a runtime flag for this tag, which
is set to false by default.

A specification for the menuitem element can be found at
https://www.w3.org/TR/2013/WD-html51-20130528/interactive-elements.html#the-menuitem-element.
More attributes of this element will be implemented in future patches.

Test: fast/html/menuitem-element.html

  • CMakeLists.txt:
  • DerivedSources.cpp:
  • DerivedSources.make:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/WebCoreBuiltinNames.h:
  • html/HTMLElementsAllInOne.cpp:
  • html/HTMLMenuItemElement.cpp: Added.

(WebCore::HTMLMenuItemElement::HTMLMenuItemElement):
(WebCore::HTMLMenuItemElement::create):

  • html/HTMLMenuItemElement.h: Added.
  • html/HTMLMenuItemElement.idl: Added.
  • html/HTMLTagNames.in:
  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::setMenuItemElementEnabled):
(WebCore::RuntimeEnabledFeatures::menuItemElementEnabled const):

Source/WebKit:

Adds in the MenuItemElementEnabled flag so that the menu item element is a runtime-
enabled feature. It has a default value of false.

  • Shared/WebPreferences.yaml:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetMenuItemElementEnabled):
(WKPreferencesGetMenuItemElementEnabled):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:

Source/WebKitLegacy/mac:

Adds in properties and methods that allow the menuitem runtime feature
to be enabled or disabled.

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(-[WebPreferences menuItemElementEnabled]):
(-[WebPreferences setMenuItemElementEnabled:]):

  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

Tools:

Defines flags for the menu item test so that the element is recognized
only while its test is being run.

  • DumpRenderTree/TestOptions.h:
  • DumpRenderTree/TestOptions.mm:

(TestOptions::TestOptions):

  • DumpRenderTree/mac/DumpRenderTree.mm:

(setWebPreferencesForTestOptions):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):
(WTR::updateTestOptionsFromTestHeader):

  • WebKitTestRunner/TestOptions.h:

(WTR::TestOptions::hasSameInitializationOptions const):

LayoutTests:

This test ensures that the menuitem element is recognized when
its runtime feature is turned on.

  • fast/html/menuitem-element-expected.txt: Added.
  • fast/html/menuitem-element.html: Added.
1:03 AM Changeset in webkit [224456] by webkit@devinrousso.com
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: add contextmenu item to arbitrarily add HTML/Child to DOMTree
https://bugs.webkit.org/show_bug.cgi?id=179042

Reviewed by Joseph Pecoraro.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Models/DOMNode.js:

(WI.DOMNode.prototype.insertAdjacentHTML.inspectedPage_node_insertAdjacentHTML):
(WI.DOMNode.prototype.insertAdjacentHTML):
Call-through to insertAdjacentHTML on the corresponding node in the inspected page.

  • UserInterface/Views/DOMTreeElement.js:

(WI.DOMTreeElement):
(WI.DOMTreeElement.prototype._populateNodeContextMenu):
(WI.DOMTreeElement.prototype._startEditingAsHTML.dispose):
(WI.DOMTreeElement.prototype._startEditingAsHTML):
(WI.DOMTreeElement.prototype._insertAdjacentHTML.commitCallback):
(WI.DOMTreeElement.prototype._insertAdjacentHTML):
(WI.DOMTreeElement.prototype.updateTitle):
(WI.DOMTreeElement.prototype._singleTextChild):
(WI.DOMTreeElement.prototype._nodeTitleInfo):
(WI.DOMTreeElement.prototype._addHTML):
(WI.DOMTreeElement.prototype._addPreviousSibling):
(WI.DOMTreeElement.prototype._addNextSibling):
(WI.DOMTreeElement.prototype._editAsHTML):
Adjust where the editing element is placed depending on the options passed to _editAsHTML.
If the placement is as a child, put it inside the child list. If the placement is as a
sibling, place it before/after the selected TreeElement. Otherwise, add it as a child.

  • UserInterface/Views/DOMTreeOutline.css:

(.tree-outline.dom):
(.tree-outline.dom li):
(.tree-outline.dom li:not(.editing)):
(.tree-outline.dom li.editing):
(body[dir=ltr] .tree-outline.dom li): Deleted.
(body[dir=rtl] .tree-outline.dom li): Deleted.
Don't add padding when the list item is being edited.

Note: See TracTimeline for information about the timeline view.