Timeline



Dec 26, 2017:

6:12 PM Changeset in webkit [226297] by Matt Lewis
  • 3 edits in trunk/LayoutTests

Marked imported/w3c/web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/update.https.html as failing on macOS and iOS WK2.
https://bugs.webkit.org/show_bug.cgi?id=181167

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
5:52 PM Changeset in webkit [226296] by Matt Lewis
  • 3 edits in trunk/LayoutTests

Marked imported/w3c/web-platform-tests/service-workers/service-worker/register-same-scope-different-script-url.https.html as flaky on macOS and iOS WK2.
https://bugs.webkit.org/show_bug.cgi?id=181166

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
4:33 PM Changeset in webkit [226295] by Yusuke Suzuki
  • 13 edits in trunk/Source

[JSC] Remove std::chrono completely
https://bugs.webkit.org/show_bug.cgi?id=181165

Reviewed by Konstantin Tokarev.

Source/JavaScriptCore:

This patch removes std::chrono use completely from JSC.

  • API/JSContextRef.cpp:

(JSContextGroupSetExecutionTimeLimit):

  • API/tests/ExecutionTimeLimitTest.cpp:

(currentCPUTimeAsJSFunctionCallback):
(testExecutionTimeLimit):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::CodeBlock):
(JSC::timeToLive):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::timeSinceCreation):

  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::SamplingProfiler):
(JSC::SamplingProfiler::timerLoop):
(JSC::SamplingProfiler::takeSample):
(JSC::SamplingProfiler::reportTopFunctions):
(JSC::SamplingProfiler::reportTopBytecodes):

  • runtime/SamplingProfiler.h:

(JSC::SamplingProfiler::setTimingInterval):

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/Watchdog.cpp:

(JSC::Watchdog::Watchdog):
(JSC::Watchdog::setTimeLimit):
(JSC::Watchdog::shouldTerminate):
(JSC::Watchdog::startTimer):
(JSC::currentWallClockTime): Deleted.

  • runtime/Watchdog.h:

Source/WTF:

WTF::currentCPUTime now returns WTF::Seconds.
We also add the implementaiton for Linux and FreeBSD.

  • wtf/CurrentTime.cpp:

(WTF::currentCPUTime):

  • wtf/CurrentTime.h:
10:54 AM Changeset in webkit [226294] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION(r226269): 60 JSC test failures on ARMv7
https://bugs.webkit.org/show_bug.cgi?id=181163

Patch by Zan Dobersek <zdobersek@igalia.com> on 2017-12-26
Reviewed by Yusuke Suzuki.

In r226269, DFG::SpeculativeJIT::compile() changed behavior for the
GetDirectPname operation on non-x86 platforms, switching to using
GPRFlushedCallResult registers for the payload and tag pair of the
return value (through the JSValueRegsFlushedCallResult struct). This
tripped about 60 test cases on ARMv7.

As before this change, GPRTemporary registers should be used, but this
can now be done through a JSValueRegsTemporary object.

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

10:21 AM Changeset in webkit [226293] by Michael Catanzaro
  • 2 edits in trunk/LayoutTests

Unreviewed GTK test gardening

  • platform/gtk/TestExpectations:
8:24 AM WebKitGTK/Gardening/Calendar edited by clopez@igalia.com
(diff)

Dec 25, 2017:

3:35 PM Changeset in webkit [226292] by mitz@apple.com
  • 2 edits in trunk/Source/WebCore

[macOS] On Retina displays, icon used as drag image for large image is scaled down
https://bugs.webkit.org/show_bug.cgi?id=181154

Reviewed by Wenson Hsieh.

  • page/DragController.cpp:

(WebCore::DragController::doImageDrag): When using an icon for the drag image, also adjust

its size for the device scale factor, like we do in the not-icon case.

Dec 24, 2017:

1:34 PM Changeset in webkit [226291] by ddkilzer@apple.com
  • 12 edits in trunk/Source

WebKit fixes to enable -Wstrict-prototypes for Safari
<https://webkit.org/b/181146>

Reviewed by Dan Bernstein.

Source/WebCore:

  • platform/ios/wak/WebCoreThread.h:

(WebThreadLockFromAnyThread):
(WebThreadLockFromAnyThreadNoLog):
(WebThreadUnlockFromAnyThread):
(WebThreadUnlockGuardForMail):
(WebThreadSetShouldYield):

  • Add 'void' to C function declarations.
  • platform/ios/wak/WebCoreThread.mm:

(WebThreadLockFromAnyThread):
(WebThreadLockFromAnyThreadNoLog):
(WebThreadUnlockFromAnyThread):
(WebThreadUnlockGuardForMail):

  • Add 'void' to C function implementations.
  • platform/ios/wak/WebCoreThreadRun.cpp:

(class WebThreadBlock): Add 'void' to block declarations.
Rename 'task' to 'block' for consistency.
(_WebThreadRun): Add 'void' to block declaration. Make
argument name match declaration by changing 'task' to 'block'.
(WebThreadRun): Ditto.

  • platform/ios/wak/WebCoreThreadRun.h:

(WebThreadRun): Add 'void' to block declaration.

Source/WebKit:

  • Shared/API/c/WKGeometry.cpp:

(WKSizeGetTypeID):
(WKPointGetTypeID):
(WKRectGetTypeID):

  • Shared/API/c/WKGeometry.h:

(WKSizeGetTypeID):
(WKPointGetTypeID):
(WKRectGetTypeID):

  • Shared/API/c/WKImage.cpp:

(WKImageGetTypeID):

  • Shared/API/c/WKImage.h:

(WKImageGetTypeID):

  • Add 'void' to C function declarations and implementations as necessary.
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView applyAutocorrection:toString:withCompletionHandler:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • Add 'void' to block declarations as necessary.
11:07 AM Changeset in webkit [226290] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION (r224313): Fix build warning when compiling WebKit.xcassets
<https://webkit.org/b/181148>

Reviewed by Dan Bernstein.

Fixes the following build warning:

Opensource/Source/WebKit/WebKit.xcassets: warning: Failed to read file attributes for "Opensource/Source/WebKit/WebKit.xcassets"

Failure Reason: No such file or directory

  • WebKit.xcodeproj/project.pbxproj: Fix relative path with

case-insensitive filesystem and repository name assumptions.

5:57 AM Changeset in webkit [226289] by graouts@webkit.org
  • 73 edits
    13 copies
    1 add
    1 delete in trunk

[Web Animations] Implement Element.animate()
https://bugs.webkit.org/show_bug.cgi?id=180402
<rdar://problem/35851353>

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Rebaselining a few tests using Element.animate(). They still fail, but no longer on
the Element.animate() calls.

  • web-platform-tests/css-timing-1/cubic-bezier-timing-functions-output-expected.txt:
  • web-platform-tests/css-timing-1/frames-timing-functions-output-expected.txt:
  • web-platform-tests/css-timing-1/step-timing-functions-output-expected.txt:

Source/WebCore:

Now that we have added support for play() (webkit.org/b/178932) on Animation and parsing of multiple keyframes
(webkit.org/b/179708), we can add support Element.animate(). To support this simple task, we must add a series
of new IDL interfaces to support option parameters for Element.animate() (KeyframeAnimationOptions),
AnimationEffect (AnimationEffectTimingProperties), KeyframeEffect (KeyframeEffectOptions) and supporting
types CompositeOperation, FillMode, IterationCompositeOperation and PlaybackDirection. While we do not support
most parameters of those types, we at least define them for future support.

To support the most used form of the Element.animate() constructor across the WPT tests, we add support for
specifying the duration of an animation when constructing both a KeyframeEffect and calling Element.animate(),
either via a property on an options dictionary or as a double value.

The implementation of Element.animate() itself is relatively straightforward, we just need to create a supporting
KeyframeEffect based on the options provided, then an Animation with that effect set on it, and finally call play().

We also fix one crash that came up in WPT tests where we would try to access the DOMWindow when none was available
in http/wpt/web-animations/interfaces/Animatable/animate-no-browsing-context.html.

  • CMakeLists.txt: Add new IDL files.
  • DerivedSources.make: Add new IDL files.
  • Sources.txt: Add new generated JS bindings.
  • WebCore.xcodeproj/project.pbxproj: Add new IDL, header and C++ files.
  • animation/Animatable.idl: Expose the animate() method.
  • animation/AnimationEffectTiming.cpp:

(WebCore::AnimationEffectTiming::setBindingsDuration): Make the duration property spec-compliant and expect the right
kind of type (unrestricted double or DOMString).

  • animation/AnimationEffectTiming.h:
  • animation/AnimationEffectTiming.idl:
  • animation/AnimationEffectTimingProperties.h: Added.
  • animation/AnimationEffectTimingProperties.idl: Added.
  • animation/CompositeOperation.h: Added.
  • animation/CompositeOperation.idl: Added.
  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::currentTime): Check that there is DOMWindow before proceeding to querying the current time
through it, fixes a newly-apparent crash.

  • animation/FillMode.h: Added.
  • animation/FillMode.idl: Added.
  • animation/IterationCompositeOperation.h: Added.
  • animation/IterationCompositeOperation.idl: Added.
  • animation/KeyframeAnimationOptions.h: Added.
  • animation/KeyframeAnimationOptions.idl: Added.
  • animation/KeyframeEffect.cpp: Update types that are no longer defined under KeyframeEffect.

(WebCore::processIterableKeyframes):
(WebCore::processPropertyIndexedKeyframes):
(WebCore::KeyframeEffect::create): Add support for duration provided either directly as a double or through KeyframeEffectOptions.

  • animation/KeyframeEffect.h:
  • animation/KeyframeEffect.idl:
  • animation/KeyframeEffectOptions.h: Added.
  • animation/KeyframeEffectOptions.idl: Added.
  • animation/PlaybackDirection.h: Added.
  • animation/PlaybackDirection.idl: Added.
  • dom/Element.cpp:

(WebCore::Element::animate): Implement Element.animate().

  • dom/Element.h:

LayoutTests:

Turning on Element.animate() means that a ton of WPT tests that would immediately fail when Element.animate()
was used now progressed to either PASS, FAIL or TIMEOUT. We update the output to match the updated behavior
and TestExpectations for some cases of flaky outputs due to incomplete implementations that had not surfaced
until now.

We're also removing a Blink test that uses Web Animations to animate a bogus "rotate" property.

  • TestExpectations:
  • http/wpt/web-animations/animation-model/animation-types/discrete-animation-expected.txt:
  • http/wpt/web-animations/animation-model/combining-effects/effect-composition-expected.txt:
  • http/wpt/web-animations/animation-model/keyframe-effects/effect-value-context-expected.txt:
  • http/wpt/web-animations/animation-model/keyframe-effects/effect-value-overlapping-keyframes-expected.txt:
  • http/wpt/web-animations/animation-model/keyframe-effects/effect-value-transformed-distance-expected.txt:
  • http/wpt/web-animations/animation-model/keyframe-effects/effect-value-visibility-expected.txt:
  • http/wpt/web-animations/interfaces/Animatable/animate-expected.txt:
  • http/wpt/web-animations/interfaces/Animatable/animate-no-browsing-context-expected.txt:
  • http/wpt/web-animations/interfaces/Animatable/getAnimations-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/cancel-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/effect-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/finish-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/finished-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/id-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/oncancel-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/onfinish-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/pause-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/play-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/playState-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/playbackRate-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/ready-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/startTime-expected.txt:
  • http/wpt/web-animations/interfaces/AnimationEffectTiming/delay-expected.txt:
  • http/wpt/web-animations/interfaces/AnimationEffectTiming/direction-expected.txt:
  • http/wpt/web-animations/interfaces/AnimationEffectTiming/duration-expected.txt:
  • http/wpt/web-animations/interfaces/AnimationEffectTiming/easing-expected.txt:
  • http/wpt/web-animations/interfaces/AnimationEffectTiming/endDelay-expected.txt:
  • http/wpt/web-animations/interfaces/AnimationEffectTiming/fill-expected.txt:
  • http/wpt/web-animations/interfaces/AnimationEffectTiming/getAnimations-expected.txt:
  • http/wpt/web-animations/interfaces/AnimationEffectTiming/getComputedStyle-expected.txt:
  • http/wpt/web-animations/interfaces/AnimationEffectTiming/iterationStart-expected.txt:
  • http/wpt/web-animations/interfaces/AnimationEffectTiming/iterations-expected.txt:
  • http/wpt/web-animations/interfaces/AnimationTimeline/document-timeline-expected.txt:
  • http/wpt/web-animations/interfaces/Document/getAnimations-expected.txt:
  • http/wpt/web-animations/interfaces/KeyframeEffect/composite-expected.txt:
  • http/wpt/web-animations/interfaces/KeyframeEffect/iterationComposite-expected.txt:
  • http/wpt/web-animations/interfaces/KeyframeEffect/setTarget-expected.txt:
  • http/wpt/web-animations/timing-model/animation-effects/active-time-expected.txt:
  • http/wpt/web-animations/timing-model/animation-effects/current-iteration-expected.txt:
  • http/wpt/web-animations/timing-model/animation-effects/local-time-expected.txt:
  • http/wpt/web-animations/timing-model/animation-effects/phases-and-states-expected.txt:
  • http/wpt/web-animations/timing-model/animation-effects/simple-iteration-progress-expected.txt:
  • http/wpt/web-animations/timing-model/animations/canceling-an-animation-expected.txt:
  • http/wpt/web-animations/timing-model/animations/finishing-an-animation-expected.txt:
  • http/wpt/web-animations/timing-model/animations/pausing-an-animation-expected.txt:
  • http/wpt/web-animations/timing-model/animations/playing-an-animation-expected.txt:
  • http/wpt/web-animations/timing-model/animations/reversing-an-animation-expected.txt:
  • http/wpt/web-animations/timing-model/animations/set-the-animation-start-time-expected.txt:
  • http/wpt/web-animations/timing-model/animations/set-the-target-effect-of-an-animation-expected.txt:
  • http/wpt/web-animations/timing-model/animations/set-the-timeline-of-an-animation-expected.txt:
  • http/wpt/web-animations/timing-model/animations/updating-the-finished-state-expected.txt:
  • http/wpt/web-animations/timing-model/time-transformations/transformed-progress-expected.txt:
  • imported/blink/virtual/threaded/animations/compositor-rotate-zero-degrees-expected.html: Removed.
  • imported/blink/virtual/threaded/animations/compositor-rotate-zero-degrees.html: Removed.

Dec 23, 2017:

7:59 PM Changeset in webkit [226288] by Michael Catanzaro
  • 2 edits in trunk/LayoutTests

Unreviewed GTK layout test gardening

  • platform/gtk/TestExpectations:
8:05 AM Changeset in webkit [226287] by commit-queue@webkit.org
  • 12 edits in trunk

Add comments and improve code styles for RenderMathMLUnderOver::stretchHorizontalOperatorsAndLayoutChildren() and related functions
https://bugs.webkit.org/show_bug.cgi?id=180923

Patch by Minsheng Liu <lambda@liu.ms> on 2017-12-23
Reviewed by Frédéric Wang.

Source/WebCore:

The patch improves the code for RenderMathMLUnderOver::stretchHorizontalOperatorsAndLayoutChildren()
and related function, incorporating the following suggestions from bug 179682:

  • Remove several lines of trailing spaces.
  • Change several pointers to references.
  • Rewrite horizontalStretchyOperator() (formerly toHorizontalStretchyOperator()) to make it more conforming to WebKit's coding style.
  • Make unembellishedOperator() a const method.
  • Add comments for stretchHorizontalOperatorsAndLayoutChildren().
  • Eliminate an unnecessary call to fixLayoutAfterStretch() in stretchHorizontalOperatorsAndLayoutChildren().

Add one more case for the test "mathml/opentype/munderover-stretch-width.html"
to handle the corner case where all components of <munderover>/<munder>/<mover> are stretchy.

Since there is no behavior change, no new test is required.

  • rendering/mathml/RenderMathMLBlock.h:

(WebCore::RenderMathMLBlock::unembellishedOperator const):
(WebCore::RenderMathMLBlock::unembellishedOperator): Deleted.

  • rendering/mathml/RenderMathMLFraction.cpp:

(WebCore::RenderMathMLFraction::unembellishedOperator const):
(WebCore::RenderMathMLFraction::unembellishedOperator): Deleted.

  • rendering/mathml/RenderMathMLFraction.h:
  • rendering/mathml/RenderMathMLOperator.cpp:

(WebCore::RenderMathMLOperator::resetStretchSize):

  • rendering/mathml/RenderMathMLOperator.h:
  • rendering/mathml/RenderMathMLScripts.cpp:

(WebCore::RenderMathMLScripts::unembellishedOperator const):
(WebCore::RenderMathMLScripts::unembellishedOperator): Deleted.

  • rendering/mathml/RenderMathMLScripts.h:
  • rendering/mathml/RenderMathMLUnderOver.cpp:

(WebCore::horizontalStretchyOperator):
(WebCore::fixLayoutAfterStretch):
(WebCore::RenderMathMLUnderOver::stretchHorizontalOperatorsAndLayoutChildren):
(WebCore::RenderMathMLUnderOver::layoutBlock):
(WebCore::toHorizontalStretchyOperator): Deleted.

LayoutTests:

Add one more case for the test "mathml/opentype/munderover-stretch-width.html"
to handle the corner case where all components of <munderover>/<munder>/<mover> are stretchy.

Since there is no behavior change, no new test is required.

  • mathml/opentype/munderover-stretch-width-expected.txt:
  • mathml/opentype/munderover-stretch-width.html:

Dec 22, 2017:

4:00 PM Changeset in webkit [226286] by jeffm@apple.com
  • 2 edits in trunk/Source/WebKit

Allow WebsitePolicies API object to be bridged to _WKWebsitePolicies
https://bugs.webkit.org/show_bug.cgi?id=181135

Reviewed by Dan Bernstein.

_WKWebsitePolicies already wraps WebsitePolicies, we just never hooked this up in newObject().

  • Shared/Cocoa/APIObject.mm:

(API::Object::newObject):

3:50 PM Changeset in webkit [226285] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKitLegacy/mac

Unreviewed, continue to fix build failures due to AppKit API deprecation

Wraps more code in -Wdeprecated-declarations.

  • Carbon/HIWebView.mm:

(overrideCGContext):

3:34 PM Changeset in webkit [226284] by Wenson Hsieh
  • 3 edits in trunk/Source/WebKitLegacy/mac

Unreviewed, fix build failures due to using deprecated AppKit symbols when building 32-bit

Wrap some more code in -Wdeprecated-declarations to try and fix the 32-bit build using the newest SDK.

  • Carbon/CarbonWindowAdapter.mm:

(-[CarbonWindowAdapter setViewsNeedDisplay:]):

  • Plugins/WebNetscapePluginView.mm:

(-[WebNetscapePluginView saveAndSetNewPortStateForUpdate:]):
(-[WebNetscapePluginView sendDrawRectEvent:]):
(-[WebNetscapePluginView drawRect:]):

3:33 PM Changeset in webkit [226283] by Caio Lima
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] IntlCollator and IntlNumberFormat has static fields with same name
https://bugs.webkit.org/show_bug.cgi?id=181128

Reviewed by Yusuke Suzuki.

Minor fixes into IntlNumberFormat::initializeNumberFormat and
IntlCollator::initializeCollator that makes JSC unified sources
compile. These files were generating compilation error when placed at
the same UnifiedSource.cpp, because they had static variables with same name.

  • runtime/IntlCollator.cpp:

(JSC::IntlCollator::initializeCollator):

  • runtime/IntlNumberFormat.cpp:

(JSC::IntlNumberFormat::initializeNumberFormat):

3:32 PM WebKitGTK/Gardening/Calendar edited by Michael Catanzaro
(diff)
3:29 PM Changeset in webkit [226282] by Michael Catanzaro
  • 3 edits in trunk/LayoutTests

Unreviewed GTK layout test gardening

3:11 PM Changeset in webkit [226281] by Wenson Hsieh
  • 2 edits in trunk/Tools

Unreviewed, try to fix the Sierra build again after r226277.

The macOS 10.12 SDK does not know about NSControlStateValue. Apply the same tweak in r226279, but to MiniBrowser
this time.

  • MiniBrowser/AppKitCompatibilityDeclarations.h:
3:05 PM Changeset in webkit [226280] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

Unreviewed, try to fix the build on recent SDKs after r226274.

Unused variables captured in a lambda now cause warnings the latest SDKs. It seems that after r226274, the block
in SWContextManager::terminateWorker no longer accesses this->m_workerMap, so this is now unused.

  • workers/service/context/SWContextManager.cpp:

(WebCore::SWContextManager::terminateWorker):

2:53 PM Changeset in webkit [226279] by Wenson Hsieh
  • 2 edits in trunk/Source/WTF

Unreviewed, try to fix the Sierra build after r226277.

The macOS 10.12 SDK does not know about NSControlStateValue and some types of NSLevelIndicatorStyles, so these
need to be declared in a separate section in AppKitCompatibilityDeclarations.h (rather than in the < macOS 10.12
SDK #ifdef).

  • wtf/mac/AppKitCompatibilityDeclarations.h:
2:34 PM Changeset in webkit [226278] by Michael Catanzaro
  • 5 edits
    4 deletes in trunk/LayoutTests

Unreviewed, rolling out r225899
https://bugs.webkit.org/show_bug.cgi?id=180430

  • media/content/encrypted/VideoClearKeyCenc.mp4: Removed.
  • media/content/encrypted/segments/VideoClearKeyCenc-seg-0.mp4: Removed.
  • media/encrypted-media/clearKey/clearKey-encrypted-cenc-event-expected.txt: Removed.
  • media/encrypted-media/clearKey/clearKey-encrypted-cenc-event-mse-expected.txt: Removed.
  • media/encrypted-media/clearKey/clearKey-encrypted-cenc-event-mse.html: Removed.
  • media/encrypted-media/clearKey/clearKey-encrypted-cenc-event.html: Removed.
  • media/encrypted-media/medias-enc.js: Removed.
  • media/media-source/media-source-loader-simple.js: Removed.
  • platform/gtk/TestExpectations:
  • platform/mac-elcapitan/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/wpe/TestExpectations:
2:23 PM Changeset in webkit [226277] by Wenson Hsieh
  • 45 edits
    2 adds in trunk

Fix build failures due to using deprecated AppKit symbols
https://bugs.webkit.org/show_bug.cgi?id=181110
<rdar://problem/36162865>

Reviewed by Dan Bernstein and Tim Horton.

Source/WebCore:

Fixes the build for recent SDKs (post-AppKit-deprecation) via a combination of adopting modern AppKit versions
of deprecated interfaces, or folding deprecated symbols behind helper functions (for deprecated pasteboard
types). Introduces LegacyNSPasteboardTypes.h, which contains functions to wrap around deprecated NSPasteboard
types. This allows us to replace all deprecated NS*PboardTypes with calls to the helper functions, and limit
-Wdeprecated-declarations of legacy pasteboard types to this new header.

  • WebCore.xcodeproj/project.pbxproj:
  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(CreateCGColorIfDifferent):

  • editing/mac/EditorMac.mm:

(WebCore::Editor::takeFindStringFromSelection):
(WebCore::Editor::dataSelectionForPasteboard):

  • platform/cocoa/PasteboardCocoa.mm:

(WebCore::bitmapPNGFileType):
(WebCore::cocoaTypeToImageType):
(WebCore::convertTIFFToPNG):

  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:

(PlatformCALayer::drawLayerContents):

  • platform/graphics/cocoa/GraphicsContextCocoa.mm:

(WebCore::GraphicsContext::drawLineForDocumentMarker):

  • platform/ios/wak/WAKAppKitStubs.h:
  • platform/mac/DragDataMac.mm:

(WebCore::rtfPasteboardType):
(WebCore::rtfdPasteboardType):
(WebCore::stringPasteboardType):
(WebCore::urlPasteboardType):
(WebCore::htmlPasteboardType):
(WebCore::colorPasteboardType):
(WebCore::pdfPasteboardType):
(WebCore::tiffPasteboardType):
(WebCore::DragData::asFilenames const):
(WebCore::DragData::containsPlainText const):
(WebCore::DragData::containsCompatibleContent const):
(WebCore::DragData::containsPromise const):
(WebCore::DragData::asURL const):

  • platform/mac/DragImageMac.mm:

(WebCore::createDragImageForLink):

  • platform/mac/LegacyNSPasteboardTypes.h: Added.

(WebCore::legacyStringPasteboardType):
(WebCore::legacyFilenamesPasteboardType):
(WebCore::legacyTIFFPasteboardType):
(WebCore::legacyRTFPasteboardType):
(WebCore::legacyFontPasteboardType):
(WebCore::legacyColorPasteboardType):
(WebCore::legacyRTFDPasteboardType):
(WebCore::legacyHTMLPasteboardType):
(WebCore::legacyURLPasteboardType):
(WebCore::legacyPDFPasteboardType):
(WebCore::legacyFilesPromisePasteboardType):

  • platform/mac/LocalCurrentGraphicsContext.mm:

(WebCore::LocalCurrentGraphicsContext::LocalCurrentGraphicsContext):

  • platform/mac/PasteboardMac.mm:

(WebCore::writableTypesForURL):
(WebCore::writableTypesForImage):
(WebCore::Pasteboard::supportedFileUploadPasteboardTypes):
(WebCore::Pasteboard::write):
(WebCore::Pasteboard::writePlainText):
(WebCore::writeURLForTypes):
(WebCore::writeFileWrapperAsRTFDAttachment):
(WebCore::Pasteboard::read):
(WebCore::absoluteURLsFromPasteboardFilenames):
(WebCore::Pasteboard::readPlatformValueAsString):
(WebCore::Pasteboard::addHTMLClipboardTypesForCocoaType):
(WebCore::Pasteboard::writeString):

  • platform/mac/PasteboardWriter.mm:

(WebCore::createPasteboardWriter):

  • platform/mac/PlatformPasteboardMac.mm:

(WebCore::PlatformPasteboard::numberOfFiles const):
(WebCore::pasteboardMayContainFilePaths):
(WebCore::PlatformPasteboard::stringForType const):
(WebCore::safeTypeForDOMToReadAndWriteForPlatformType):
(WebCore::PlatformPasteboard::typesSafeForDOMToReadAndWrite const):
(WebCore::PlatformPasteboard::platformPasteboardTypeForSafeTypeForDOMToReadAndWrite):
(WebCore::PlatformPasteboard::color):
(WebCore::PlatformPasteboard::setStringForType):

  • platform/mac/ThemeMac.mm:

(WebCore::updateStates):
(WebCore::createToggleButtonCell):
(WebCore::drawCellFocusRingWithFrameAtTime):
(WebCore::leakButtonCell):
(WebCore::setUpButtonCell):
(WebCore::paintButton):
(WebCore::ThemeMac::inflateControlPaintRect const):

  • platform/mac/WebWindowAnimation.mm:

(setScaledFrameForWindow):

  • platform/mac/WidgetMac.mm:

(WebCore::Widget::paint):

  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::platformActiveSelectionBackgroundColor const):
(WebCore::RenderThemeMac::platformInactiveSelectionBackgroundColor const):
(WebCore::RenderThemeMac::platformActiveListBoxSelectionBackgroundColor const):
(WebCore::convertNSColorToColor):
(WebCore::menuBackgroundColor):
(WebCore::RenderThemeMac::updateCheckedState):
(WebCore::RenderThemeMac::levelIndicatorStyleFor const):
(WebCore::RenderThemeMac::levelIndicatorFor const):
(WebCore::RenderThemeMac::servicesRolloverButtonCell const):

Source/WebKit:

See WebCore ChangeLog for more details.

  • Shared/mac/PasteboardTypes.mm:

(WebKit::PasteboardTypes::forEditing):
(WebKit::PasteboardTypes::forURL):
(WebKit::PasteboardTypes::forImages):
(WebKit::PasteboardTypes::forImagesWithArchive):
(WebKit::PasteboardTypes::forSelection):

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::WebViewImpl):
(WebKit::WebViewImpl::setIntrinsicContentSize):
(WebKit::WebViewImpl::writeSelectionToPasteboard):
(WebKit::WebViewImpl::validRequestorForSendAndReturnTypes):
(WebKit::WebViewImpl::validateUserInterfaceItem):
(WebKit::WebViewImpl::performDragOperation):
(WebKit::WebViewImpl::setFileAndURLTypes):
(WebKit::WebViewImpl::setPromisedDataForImage):
(WebKit::WebViewImpl::setPromisedDataForAttachment):
(WebKit::WebViewImpl::provideDataForPasteboard):

  • UIProcess/mac/WKPrintingView.mm:

(-[WKPrintingView _drawPDFDocument:page:atPoint:]):
(-[WKPrintingView _drawPreview:]):

  • UIProcess/mac/WKSharingServicePickerDelegate.mm:

(-[WKSharingServicePickerDelegate sharingService:didShareItems:]):

  • UIProcess/mac/WebContextMenuProxyMac.mm:

(-[WKMenuTarget forwardContextMenuAction:]):
(WebKit::WebContextMenuProxyMac::createContextMenuItem):

  • UIProcess/mac/WebPageProxyMac.mm:

(WebKit::WebPageProxy::searchTheWeb):

  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::writeItemsToPasteboard):

  • WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:

(WebKit::convertImageToBitmap):

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::drawPDFPage):

Source/WebKitLegacy/mac:

See WebCore ChangeLog for more details. Additionally makes a few minor adjustments to pass our style checker.

  • Misc/WebKitNSStringExtras.mm:

(-[NSString _web_drawAtPoint:font:textColor:]):

  • Misc/WebNSPasteboardExtras.h:
  • Misc/WebNSPasteboardExtras.mm:

(+[NSPasteboard _web_writableTypesForURL]):
(_createWritableTypesForImageWithoutArchive):
(_createWritableTypesForImageWithArchive):
(+[NSPasteboard _web_dragTypesForURL]):
(-[NSPasteboard _web_bestURL]):
(-[NSPasteboard _web_writeURL:andTitle:types:]):
(+[NSPasteboard _web_setFindPasteboardString:withOwner:]):
(-[NSPasteboard _web_writeFileWrapperAsRTFDAttachment:]):
(-[NSPasteboard _web_writeImage:element:URL:title:archive:types:source:]):
(-[NSPasteboard _web_declareAndWriteDragImageForElement:URL:title:archive:source:]):

  • Panels/WebAuthenticationPanel.m:

(-[WebAuthenticationPanel runAsModalDialogWithChallenge:]):
(-[WebAuthenticationPanel sheetDidEnd:returnCode:contextInfo:]):

  • Plugins/Hosted/WebHostedNetscapePluginView.mm:

(-[WebHostedNetscapePluginView drawRect:]):

  • WebInspector/WebNodeHighlightView.mm:

(-[WebNodeHighlightView drawRect:]):

  • WebView/WebFrame.mm:

(-[WebFrame _updateBackgroundAndUpdatesWhileOffscreen]):
(-[WebFrame _drawRect:contentsOnly:]):

  • WebView/WebHTMLView.mm:

(kit):
(-[WebHTMLView _documentFragmentFromPasteboard:inContext:allowPlainText:]):
(-[WebHTMLView _plainTextFromPasteboard:]):
(-[WebHTMLView _writeSelectionWithPasteboardTypes:toPasteboard:cachedAttributedString:]):
(+[WebHTMLView _insertablePasteboardTypes]):
(+[WebHTMLView _selectionPasteboardTypes]):
(-[WebHTMLView pasteboard:provideDataForType:]):
(-[WebHTMLView _writeSelectionToPasteboard:]):
(-[WebHTMLView _documentFragmentFromPasteboard:forType:inContext:subresources:]):
(-[WebHTMLView validRequestorForSendType:returnType:]):
(-[WebHTMLView validateUserInterfaceItemWithoutDelegate:]):
(createMenuItem):
(-[WebHTMLView _fontAttributesFromFontPasteboard]):
(-[WebHTMLView _colorAsString:]):
(-[WebHTMLView copyFont:]):

  • WebView/WebPDFView.mm:

(-[WebPDFView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]):
(-[WebPDFView _recursiveDisplayAllDirtyWithLockFocus:visRect:]):
(-[WebPDFView _recursive:displayRectIgnoringOpacity:inContext:topView:]):
(-[WebPDFView pasteboardTypesForSelection]):
(-[WebPDFView writeSelectionWithPasteboardTypes:toPasteboard:]):

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

(-[WebView performDragOperation:]):
(-[WebView validateUserInterfaceItemWithoutDelegate:]):
(-[WebView _searchWithGoogleFromMenu:]):

Source/WTF:

When building with older macOS SDKs where some AppKit constants don't exist, define the modern constants to be
equal to their deprecated counterparts. This allows us to just have the modern types in WebKit sources while
avoiding breakage on old SDKs.

This, along with many other symbols in the compability header, can be removed once WebKit stops supporting macOS
10.11.

  • wtf/mac/AppKitCompatibilityDeclarations.h:

Tools:

Transition to non-deprecated AppKit constants in MiniBrowser.

  • MiniBrowser/AppKitCompatibilityDeclarations.h: Added.
  • MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
  • MiniBrowser/mac/SettingsController.m:

(-[SettingsController validateMenuItem:]):

  • MiniBrowser/mac/WK1BrowserWindowController.m:

(-[WK1BrowserWindowController validateMenuItem:]):

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController validateMenuItem:]):

1:41 PM Changeset in webkit [226276] by mitz@apple.com
  • 3 edits
    2 adds in trunk

Crash beneath ScriptedAnimationController::serviceScriptedAnimations after a requestAnimationFrame callback removes the requesting iframe
https://bugs.webkit.org/show_bug.cgi?id=181132
<rdar://problem/35143540>

Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/animation/request-animation-frame-remove-iframe-in-callback.html

  • dom/ScriptedAnimationController.cpp:

(WebCore::ScriptedAnimationController::serviceScriptedAnimations): Hold a reference to the

document and pass that along to InspectorInstrumentation::willFireAnimationFrame rather
than dereferencing the m_document member, which may have gotten cleared by an earlier
callback.

LayoutTests:

  • fast/animation/request-animation-frame-remove-iframe-in-callback-expected.txt: Added.
  • fast/animation/request-animation-frame-remove-iframe-in-callback.html: Added.
1:23 PM Changeset in webkit [226275] by Chris Dumez
  • 6 edits in trunk

importScripts() inside a service worker should ensure that the response has a JavaScript MIME type
https://bugs.webkit.org/show_bug.cgi?id=181103

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Rebaseline WPT test now that it fails later. The test expects that the registration promise be
rejected with a SecurityError. However, we reject it with a TypeError instead, which is the
result of the Network error from importScripts().

The spec does say that importScripts() should report a network error when the MIME type is
invalid:

Later on, the spec says that if "an uncaught runtime script error occurs" when running the script,
we should resolve the registration with a TypeError:

Therefore, our behavior seems correct and I cannot find in the spec a reason why the test would
expect a SecurityError here.

  • web-platform-tests/service-workers/service-worker/registration-mime-types.https-expected.txt:

Source/WebCore:

importScripts() inside a service worker should ensure that the response has a JavaScript
MIME type, as per:

No new tests, rebaselined existing test.

  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::importScripts):

  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::didReceiveResponse):

  • workers/WorkerScriptLoader.h:

(WebCore::WorkerScriptLoader::responseMIMEType const):

1:17 PM Changeset in webkit [226274] by Chris Dumez
  • 26 edits in trunk

[Service Workers] Implement "Soft Update" algorithm
https://bugs.webkit.org/show_bug.cgi?id=180702
<rdar://problem/36163461>

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Rebaseline Soft Update WPT test now that it is passing.

  • web-platform-tests/service-workers/service-worker/update-after-navigation-fetch-event.https-expected.txt:

Source/WebCore:

Implement "Soft Update" algorithm:

Call softUpdate at the end of "Handle Fetch", as per:

No new tests, rebaselined existing test.

  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::postTaskTo):

  • dom/ScriptExecutionContext.h:
  • workers/service/SWClientConnection.cpp:

(WebCore::SWClientConnection::failedFetchingScript):
(WebCore::SWClientConnection::registrationJobResolvedInServer):
(WebCore::SWClientConnection::startScriptFetchForServer):

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

(WebCore::ServiceWorkerContainer::updateRegistration):
(WebCore::ServiceWorkerContainer::jobFailedWithException):
(WebCore::ServiceWorkerContainer::jobResolvedWithRegistration):
(WebCore::ServiceWorkerContainer::jobResolvedWithUnregistrationResult):
(WebCore::ServiceWorkerContainer::startScriptFetchForJob):
(WebCore::ServiceWorkerContainer::jobFailedLoadingScript):

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

(WebCore::ServiceWorkerJob::ServiceWorkerJob):

  • workers/service/ServiceWorkerJob.h:

(WebCore::ServiceWorkerJob::create):
(WebCore::ServiceWorkerJob::data const):
(WebCore::ServiceWorkerJob::promise):

  • workers/service/ServiceWorkerRegistration.cpp:

(WebCore::ServiceWorkerRegistration::softUpdate):

  • workers/service/ServiceWorkerRegistration.h:
  • workers/service/context/SWContextManager.cpp:

(WebCore::SWContextManager::terminateWorker):
(WebCore::SWContextManager::postTaskToServiceWorker):

  • workers/service/context/SWContextManager.h:
  • workers/service/context/ServiceWorkerFetch.cpp:

(WebCore::ServiceWorkerFetch::dispatchFetchEvent):

  • workers/service/context/ServiceWorkerFetch.h:
  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::startScriptFetch):

  • workers/service/server/SWServer.h:

Source/WebKit:

  • StorageProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::startScriptFetchInClient):

  • StorageProcess/ServiceWorker/WebSWServerConnection.h:
  • WebProcess/Storage/WebSWClientConnection.messages.in:

LayoutTests:

Unskip soft update WPT test that no longer times out.

12:43 PM Changeset in webkit [226273] by Alan Bujtas
  • 8 edits
    2 copies in trunk/Source/WebCore

[RenderTreeBuilder] Move RenderMenuList::addChild() tree mutation to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=181130
<rdar://problem/36196266>

Reviewed by Antti Koivisto.

This patch also creates a dedicated class for form control related tree mutations.

Covered by existing tests.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • rendering/RenderButton.cpp:

(WebCore::RenderButton::setInnerRenderer): Update the style here instead.

  • rendering/RenderMenuList.cpp:

(WebCore::RenderMenuList::setInnerRenderer):
(RenderMenuList::addChild):
(RenderMenuList::showPopup): We should't really call showPopup on a detached renderer.
(WebCore::RenderMenuList::createInnerBlock): Deleted.

  • rendering/RenderMenuList.h:
  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::RenderTreeBuilder):
(WebCore::RenderTreeBuilder::insertChild):
(WebCore::createInnerRendererForButtonIfNeeded): Deleted.

  • rendering/updating/RenderTreeBuilder.h:

(WebCore::RenderTreeBuilder::formControlsBuilder):

  • rendering/updating/RenderTreeBuilderFormControls.cpp: Copied from Source/WebCore/rendering/updating/RenderTreeBuilder.h.

(WebCore::RenderTreeBuilder::FormControls::FormControls):
(WebCore::RenderTreeBuilder::FormControls::createInnerRendererIfNeeded):

  • rendering/updating/RenderTreeBuilderFormControls.h: Copied from Source/WebCore/rendering/updating/RenderTreeBuilder.h.
12:41 PM Changeset in webkit [226272] by rniwa@webkit.org
  • 8 edits
    1 add in trunk

REGRESSION(r223678): Cannot copy & paste a web page content into Yahoo! Mail
https://bugs.webkit.org/show_bug.cgi?id=181114

Reviewed by Geoffrey Garen.

Source/WebCore:

Turns out converting all URLs to blob isn't Web compatible. Don't do this conversion on HTTP, HTTP, and data URLs
since websites tend to have access to contents accessible via those protocols, and blob URL conversion would break
Yahoo! Mail, Gmail, and other major online email services.

We've also considered using data URLs instead of blob URLs for conversion but pasting a large image converted into
a data URL seems to break WordPress (it stores an empty post instead of the one with the image) so it's not likely
to be Web compatible either.

This patch therefore disables the blob conversion in sanitizeMarkupWithArchive for HTTP, HTTPS, data URLs for
cross-origin content, restoring the behavior prior to r223678. For contents converted from attributed strings,
we continue to convert to blob URL since there is no other way for websites to read local files or images references
by an in-memory web archive.

Tests: http/tests/security/clipboard/copy-paste-html-cross-in-origin-iframe-across-origin.html

  • editing/cocoa/WebContentReaderCocoa.mm:

(WebCore::shouldConvertToBlob): Added.
(WebCore::sanitizeMarkupWithArchive):

LayoutTests:

Updated http/tests/security/clipboard/copy-paste-html-cross-origin-iframe-across-origin.html to test the new behavior
whereby which HTTP/HTTPs and data URLs are not converted to blob URLs.

  • http/tests/security/clipboard/copy-paste-html-across-origin-sanitizes-html.html:
  • http/tests/security/clipboard/copy-paste-html-cross-origin-iframe-across-origin-expected.txt: Renamed.
  • http/tests/security/clipboard/copy-paste-html-cross-origin-iframe-across-origin.html: Added more test cases for data URLs.
  • http/tests/security/clipboard/resources/content-to-copy.html: Notify the parent that the page had finished loading.
  • http/tests/security/clipboard/resources/data-url-content-to-copy.html: Added.
  • http/tests/security/clipboard/resources/subdirectory/paste-html.html: Since we can no longer access contents

in the pasted frames but scripts DO run in the pasted cross-origin iframes, rely on those frames to postMessage
this frame when the image had finished loading.

12:40 PM Changeset in webkit [226271] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

Credentials warning spam when running CodeGenerator.pm
https://bugs.webkit.org/show_bug.cgi?id=181127

Unreviewed, update WebCore_IDL_INCLUDES.

  • CMakeLists.txt:
12:30 PM Changeset in webkit [226270] by Michael Catanzaro
  • 2 edits in trunk/Source/JavaScriptCore

generate_offset_extractor.rb should not print to stderr by default
https://bugs.webkit.org/show_bug.cgi?id=181133

Reviewed by Mark Lam.

Remove unneeded print output.

  • offlineasm/generate_offset_extractor.rb:
11:51 AM Changeset in webkit [226269] by Yusuke Suzuki
  • 12 edits in trunk/Source/JavaScriptCore

[DFG] Cleaning up and unifying 32bit code more
https://bugs.webkit.org/show_bug.cgi?id=181124

Reviewed by Mark Lam.

This patch unifies DFG 32bit code into 64bit code more. In this patch, we move RegExp DFG nodes
from 32bit / 64bit code to the common code. We change some RegExp operations to returning JSCell*
instead of EncodedJSValue. This simplifies DFG implementation.

And we also move HasGenericProperty since we now have JSValueRegsFlushedCallResult. ToPrimive,
LogShadowChickenPrologue, and LogShadowChickenTail are almost the same in 32bit and 64bit.
Thus, it is unified easily.

And we also move some GPRFlushedCallResult from the original places to the places just after
flushRegisters() not to spill unnecessary registers.

  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileRegExpExec):
(JSC::DFG::SpeculativeJIT::compileRegExpTest):
(JSC::DFG::SpeculativeJIT::compileStringReplace):
(JSC::DFG::SpeculativeJIT::compileHasGenericProperty):
(JSC::DFG::SpeculativeJIT::compileToPrimitive):
(JSC::DFG::SpeculativeJIT::compileLogShadowChickenPrologue):
(JSC::DFG::SpeculativeJIT::compileLogShadowChickenTail):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::callOperation):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::speculateDoubleRepAnyInt):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileStringReplace):

  • jit/JITOperations.cpp:
  • jit/JITOperations.h:
  • runtime/StringPrototype.cpp:

(JSC::jsSpliceSubstrings):
(JSC::jsSpliceSubstringsWithSeparators):
(JSC::removeUsingRegExpSearch):
(JSC::replaceUsingRegExpSearch):
(JSC::operationStringProtoFuncReplaceRegExpEmptyStr):
(JSC::operationStringProtoFuncReplaceRegExpString):
(JSC::replaceUsingStringSearch):
(JSC::replace):
(JSC::stringProtoFuncReplaceUsingRegExp):
(JSC::stringProtoFuncReplaceUsingStringSearch):
(JSC::operationStringProtoFuncReplaceGeneric):

  • runtime/StringPrototype.h:
10:12 AM Changeset in webkit [226268] by Michael Catanzaro
  • 5 edits in trunk/Source

[GTK] Duplicated symbols in libjavascriptcoregtk and libwebkit2gtk can cause crashes in production builds
https://bugs.webkit.org/show_bug.cgi?id=179914
<rdar://problem/36196039>

Unreviewed.

Source/JavaScriptCore:

  • PlatformGTK.cmake:

Source/WebKit:

I messed up a last-minute change, and inverted the conditional that determines whether to
use the version script. I did test this change to ensure that it worked properly by checking
that the library size was correct, but only in non-developer mode. My test was thwarted by
-fvisibility=hidden. It looks like so few internal symbols are exported that missing the
version script had little impact on the size of the resulting libraries. That's good, I
suppose.

  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
10:06 AM Changeset in webkit [226267] by Michael Catanzaro
  • 1 edit in trunk/ChangeLog

[GTK] Duplicated symbols in libjavascriptcoregtk and libwebkit2gtk can cause crashes in production builds
https://bugs.webkit.org/show_bug.cgi?id=179914

Reviewed by Carlos Garcia Campos.

Let's build JSC as a static library, and link that static lib to *both* our shared
libjavascriptcoregtk and libwebkit2gtk. Then we can fix this and also filter out all the
private symbols that we're currently exposing in libjavascriptcoregtk, which wouldn't be
possible otherwise. The cost of this is disk space. I think this trade-off is reasonable,
because it's the best way I could think of that accomplishes all our goals: (a) install two
shared libs, (b) export only public API symbols, (c) does not require any linker hacks.

Additionally, build with -fvisibility=hidden so that the compiler knows that many symbols
will be stripped out. This should improve code generation. It's actually how WPE was
previously compiled, but I removed this when I added the version script for WPE, because I
thought it was redundant with the version script. It is not, and we should use both,
according to Ulrich Drepper's "How to Write Shared Libraries." We will use
-fvisibility=hidden on all ports; this should be fine, as long as export macros are used
where needed. This is actually a totally separate change, but it makes sense to do it now if
we consider this bug a catch-all "fix how we link WebKit" issue.

  • CMakeLists.txt: Rejigger the default library types, and remove the SHARED_CORE option, which is not likely to work properly in ports that are not expecting it. These changes are only mildly-related and certainly not required, but it makes sense to clean them up now.
  • Source/cmake/OptionsGTK.cmake: Don't set the version script here.
  • Source/cmake/OptionsJSCOnly.cmake: Adjust to changes in default library types.
  • Source/cmake/OptionsMac.cmake: Adjust to changes in default library types. Override the library type variables only when required.
  • Source/cmake/OptionsWPE.cmake: Overriding the library type variables is no longer required. Also, don't set the version script here.
  • Source/cmake/OptionsWin.cmake: Adjust to changes in default library types. Override the library type variables only when required.
  • Source/cmake/WebKitCompilerFlags.cmake: Build with -fvisibility=hidden, -fvisibility-inlines-hidden, and -Wno-attributes.
  • Source/cmake/wpesymbols.filter: Removed.
9:18 AM Changeset in webkit [226266] by Michael Catanzaro
  • 18 edits
    1 move
    1 add
    1 delete in trunk

[GTK] Duplicated symbols in libjavascriptcoregtk and libwebkit2gtk can cause crashes in production builds
https://bugs.webkit.org/show_bug.cgi?id=179914

Reviewed by Carlos Garcia Campos.

.:

  • CMakeLists.txt:
  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/OptionsJSCOnly.cmake:
  • Source/cmake/OptionsMac.cmake:
  • Source/cmake/OptionsWPE.cmake:
  • Source/cmake/OptionsWin.cmake:
  • Source/cmake/WebKitCompilerFlags.cmake:
  • Source/cmake/wpesymbols.filter: Removed.

Source/JavaScriptCore:

Add a new JavaScriptCoreGTK build target, to build JSC as a shared library. Link the
original JavaScriptCore build target, which is now a static library, to it. Use
--whole-archive to prevent all the JavaScriptCore symbols from being dropped, since none are
used directly by JavaScriptCoreGTK.

The installed libjavascriptcoregtk-4.0 now corresponds to the JavaScriptCoreGTK target,
instead of the JavaScriptCore target. There is almost no difference on the installed system,
except that we now use a version script when linking, to hide private symbols, since they're
no longer needed by libwebkit2gtk-4.0.so.

Also, move the symbols map here.

  • PlatformGTK.cmake:
  • javascriptcoregtk-symbols.map: Added.

Source/WebCore:

  • CMakeLists.txt: Test for WebCore_LIBRARY_TYPE rather than SHARED_CORE.

Source/WebKit:

Mark a few InjectedBundle symbols with default visibility, so they don't get hidden by
-fvisibility=hidden. Also, remove Windows conditionals, since Windows is not supported by
any GLib ports.

Also, move the symbols map to here, and share it between WPE and GTK.

  • CMakeLists.txt:
  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
  • WebProcess/InjectedBundle/API/glib/WebKitExtensionManager.h:
  • WebProcess/InjectedBundle/API/glib/WebKitInjectedBundleMain.cpp:
  • webkitglib-symbols.map: Renamed from Source/cmake/gtksymbols.filter.
8:28 AM Changeset in webkit [226265] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[RenderTreeBuilder] Move RenderButton::addChild() tree mutation to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=181109
<rdar://problem/36188262>

Reviewed by Antti Koivisto.

Covered by existing tests.

  • rendering/RenderButton.cpp:

(WebCore::RenderButton::setInnerRenderer):
(WebCore::RenderButton::updateAnonymousChildStyle const):
(WebCore::RenderButton::addChild): Deleted.

  • rendering/RenderButton.h:
  • rendering/RenderElement.cpp:

(WebCore::RenderElement::propagateStyleToAnonymousChildren):

  • rendering/RenderElement.h:

(WebCore::RenderElement::updateAnonymousChildStyle const):

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::insertChild):

8:11 AM Changeset in webkit [226264] by Michael Catanzaro
  • 7 edits in trunk

[WPE][GTK] Deprecate and replace webkit_form_submission_request_get_text_fields
https://bugs.webkit.org/show_bug.cgi?id=176725

Reviewed by Carlos Garcia Campos.

Source/WebKit:

The problem is this function returns results in a GHashTable, but many fields can have the
same name, or no name at all, and those fields are currently just dropped. It's impossible
to fix, since the GHashTable is part of the API, so deprecate it and add a new function that
returns two GPtrArrays instead.

  • UIProcess/API/glib/WebKitFormSubmissionRequest.cpp:

(webkitFormSubmissionRequestCreate):
(webkit_form_submission_request_get_text_fields):
(webkit_form_submission_request_list_text_fields):

  • UIProcess/API/gtk/WebKitFormSubmissionRequest.h:
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
  • UIProcess/API/wpe/WebKitFormSubmissionRequest.h:

Tools:

Test the new function.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp:

(testWebViewSubmitForm):

6:43 AM Changeset in webkit [226263] by Jonathan Bedard
  • 2 edits
    4 adds in trunk/Tools

webkitpy: Refactor simulator code (Part 1)
https://bugs.webkit.org/show_bug.cgi?id=180555
<rdar://problem/36131381>

Reviewed by Alexey Proskuryakov.

The new SimulatedDeviceManager defined in this patch is designed to
act as a singleton. Consumers may request devices with certain
attributes, the the manager will then return a list of devices fulfilling the
request. The manager will pick between:

  • Existing and booted simulators
  • Existing simulators currently shut down
  • Custom constructed simulators

These simulators will then be globally available.

This patch duplicates code in webkitpy/xcode/simulated_device.py,
webkitpy/xcode/simulator.py and webkitpy/port/ios_simulator.py. This duplicated
code will be removed in parts 2 and 3.

  • Scripts/webkitpy/common/version_name_map.py:

(VersionNameMap.init): Add tvOS and watchOS.

  • Scripts/webkitpy/xcode/device_type.py: Added.

(DeviceType): Holds the software and hardware information for a specific device.
Designed to allow for partial matching.
(DeviceType.from_string): Parses a string (such as iPhone 6s) into a DeviceType
object.
(DeviceType._define_software_variant_from_hardware_family): The software_variant
of a device can usually be implied from its hardware_family.
(DeviceType.check_consistency): Verify that the software_variant matches the
hardware_family and that software_version and hardware_variant have their
respective prerequisites.
(DeviceType.init):
(DeviceType.str): Converts a DeviceType object into a human readable string.
(DeviceType.eq): Compares two DeviceType objects treating None as a wildcard.
(DeviceType.contains): Allow partial version mapping.

  • Scripts/webkitpy/xcode/device_type_unittest.py: Added.

(DeviceTypeTest):
(DeviceTypeTest.test_iphone_initialization):
(DeviceTypeTest.test_ipad_initialization):
(DeviceTypeTest.test_generic_ios_device):
(DeviceTypeTest.test_watch_initialization):
(DeviceTypeTest.test_tv_initialization):
(DeviceTypeTest.test_from_string):
(DeviceTypeTest.test_comparison):
(DeviceTypeTest.test_contained_in):

  • Scripts/webkitpy/xcode/new_simulated_device.py: Added.

(DeviceRequest): Adds additional options to be used when requesting a device.
(DeviceRequest.init):
(SimulatedDeviceManager):
(SimulatedDeviceManager.Runtime): Representation of a supported simulated runtime.
Designed as an internal representation, not to be used outside this class.
(SimulatedDeviceManager.Runtime.init):
(SimulatedDeviceManager._create_runtimes): Extract a list of available runtimes.
(SimulatedDeviceManager._create_device_with_runtime): Return a new or existing device
with the provided runtime matching the provided dictionary.
(SimulatedDeviceManager.populate_available_devices): Use simctl to update the list of devices
available on this machine.
(SimulatedDeviceManager.available_devices): Populate the list of available device if empty
and return that list.
(SimulatedDeviceManager._find_exisiting_device_for_request): Return an existing device matching
the provided request if one exists.
(SimulatedDeviceManager._find_available_name): Given a name base, return a string which
does not match the name of an initialized device.
(SimulatedDeviceManager. get_runtime_for_device_type): Map device type to runtime object.
(SimulatedDeviceManager._disambiguate_device_type): The user may have requested a DeviceType
with only partial definitions. In this case, use existing runtimes and devices to generate
a DeviceType to build.
(SimulatedDeviceManager._get_device_identifier_for_type): Return a simctl device type string
given a DeviceType object.
(SimulatedDeviceManager._create_or_find_device_for_request): Given a DeviceRequest object,
either find an existing device which matches the request or create one matching
(SimulatedDeviceManager._does_fulfill_request): Given a device and list of requests, return
the request which the provided device matches, if there are any.
(SimulatedDeviceManager._wait_until_device_in_state): Wait until a device enters a specific
state.
(SimulatedDeviceManager.initialize_devices): Given a list of requests, return a list
of devices which fulfill the requests. This function will use both existing devices
and create devices. This function will also start the Simulator.app.
(SimulatedDeviceManager.max_supported_simulators): Uses the number of available cores,
maximum number of processes and the available RAM to calculate the number of
simulated devices this machine can support.
(SimulatorManager.swap): Shuts down the specified device and boots a new one which
matches the specified request.
(SimulatorManager.tear_down): Shut down any simulators managed by this class.
(SimulatedDevice):
(SimulatedDevice.DeviceState): Copied from webkitpy/xcode/simulator.py.
(SimulatedDevice.init):
(SimulatedDevice.state): Use the device's plist to determine the current state of
the device. Note that this function will cache the result for a second.
(SimulatedDevice.is_booted_or_booting):
(SimulatedDevice._shut_down): Shut down this device and remove it from the list of
initialized devices.
(SimulatedDevice._delete): Delete this device and remove it from the list of
available devices.
(SimulatedDevice._tear_down): Shut down and delete this device, if it is managed by
the SimulatorManager.
(SimulatedDevice.install_app): Copied from webkitpy/xcode/simulated_device.py.
(SimulatedDevice.launch_app): Ditto.
(SimulatedDevice.eq): Ditto.
(SimulatedDevice.ne): Ditto.
(SimulatedDevice.repr): Map state to string and include device type.

  • Scripts/webkitpy/xcode/new_simulated_device_unittest.py: Added.

(SimulatedDeviceTest):
(SimulatedDeviceTest.reset_simulated_device_manager):
(SimulatedDeviceTest.tear_down):
(SimulatedDeviceTest.mock_host_for_simctl):
(device_by_criteria):
(test_available_devices):
(test_existing_simulator):
(change_state_to):
(test_swapping_devices):

2:12 AM Changeset in webkit [226262] by Ms2ger@igalia.com
  • 2 edits in trunk/Source/WebCore

REGRESSION(r226228) Build error with unqualified isfinite() in MediaCapabilities.cpp
https://bugs.webkit.org/show_bug.cgi?id=181118

Unreviewed build fix.

  • Modules/mediacapabilities/MediaCapabilities.cpp:

(WebCore::isValidVideoConfiguration): qualify the one unqualified isfinite() call.

1:07 AM Changeset in webkit [226261] by Yusuke Suzuki
  • 5 edits in trunk/Source/JavaScriptCore

[DFG] Unify bunch of DFG 32bit code into 64bit code
https://bugs.webkit.org/show_bug.cgi?id=181083

Reviewed by Mark Lam.

There are bunch of the completely same code in 32bit and 64bit DFG.
This is largely because of the old DFG code. At that time, we do not
have enough abstraction to describe them in one code. But now, we have
JSValueRegs, JSValueRegsTemporary etc. They allow DFG to write 32bit and
64bit handling in one code.

This patch unifies easy ones. This is nice since basically 32bit code is
a bit old and not maintained so much compared to 64bit. If we can drop
32bit specific code as much as possible, it would be nice. Furthermore,
we can find various mistakes in 32bit: For example, NewObject does not have
mutatorFence in 32bit while 64bit has it. This unification is a chance
to fix miscellaneous bugs in 32bit while reducing maintenance burden.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileNewTypedArrayWithSize):
(JSC::DFG::SpeculativeJIT::compileGetEnumerableLength):
(JSC::DFG::SpeculativeJIT::compileToIndexString):
(JSC::DFG::SpeculativeJIT::compilePutByIdWithThis):
(JSC::DFG::SpeculativeJIT::compileHasStructureProperty):
(JSC::DFG::SpeculativeJIT::compileGetPropertyEnumerator):
(JSC::DFG::SpeculativeJIT::compileGetEnumeratorPname):
(JSC::DFG::SpeculativeJIT::compileGetGetter):
(JSC::DFG::SpeculativeJIT::compileGetSetter):
(JSC::DFG::SpeculativeJIT::compileGetCallee):
(JSC::DFG::SpeculativeJIT::compileGetArgumentCountIncludingThis):
(JSC::DFG::SpeculativeJIT::compileStrCat):
(JSC::DFG::SpeculativeJIT::compileNewArrayWithSize):
(JSC::DFG::SpeculativeJIT::compileNewTypedArray):
(JSC::DFG::SpeculativeJIT::compileCreateThis):
(JSC::DFG::SpeculativeJIT::compileNewObject):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::callOperation):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

12:19 AM Changeset in webkit [226260] by Yusuke Suzuki
  • 3 edits in trunk/Source/JavaScriptCore

[DFG] Add JSValueRegsFlushedCallResult
https://bugs.webkit.org/show_bug.cgi?id=181075

Reviewed by Mark Lam.

Add JSValueRegsFlushedCallResult, which is appropriate for the JSValueRegs result
of the function call after flushing. We can remove bunch of #if USE(JSVALUE32_64)
code and simplify them.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileFromCharCode):
(JSC::DFG::SpeculativeJIT::compileGetByValForObjectWithString):
(JSC::DFG::SpeculativeJIT::compileGetByValForObjectWithSymbol):
(JSC::DFG::SpeculativeJIT::compileParseInt):
(JSC::DFG::SpeculativeJIT::emitUntypedBitOp):
(JSC::DFG::SpeculativeJIT::emitUntypedRightShiftBitOp):
(JSC::DFG::SpeculativeJIT::compileValueAdd):
(JSC::DFG::SpeculativeJIT::compileArithMul):
(JSC::DFG::SpeculativeJIT::compileArithDiv):
(JSC::DFG::SpeculativeJIT::compileArithRounding):
(JSC::DFG::SpeculativeJIT::compileResolveScopeForHoistingFuncDeclInEval):
(JSC::DFG::SpeculativeJIT::compileGetDynamicVar):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::callOperation):
(JSC::DFG::JSValueRegsFlushedCallResult::JSValueRegsFlushedCallResult):
(JSC::DFG::JSValueRegsFlushedCallResult::regs):

Note: See TracTimeline for information about the timeline view.