WebKit-https.git
4 years agoMake @Array(size) a bytecode intrinsic
sbarati@apple.com [Thu, 18 Aug 2016 17:17:41 +0000 (17:17 +0000)]
Make @Array(size) a bytecode intrinsic
https://bugs.webkit.org/show_bug.cgi?id=160867

Reviewed by Mark Lam.

There were a few places in the code where we were emitting `@Array(size)`
or `new @Array(size)`. Since we have a bytecode operation that already
represents this, called new_array_with_size, it's faster to just make a
bytecode intrinsic for the this operation. This patch does that and
the intrinsic is called `@newArrayWithSize`. This might be around a
1% speedup on ES6 sample bench, but it's within the noise. This is just
a good bytecode operation to have because it's common enough to
create arrays and it's good to make that fast in all tiers.

* builtins/ArrayConstructor.js:
(of):
(from):
* builtins/ArrayPrototype.js:
(filter):
(map):
(sort.stringSort):
(sort):
(concatSlowPath):
* bytecode/BytecodeIntrinsicRegistry.h:
* bytecompiler/NodesCodegen.cpp:
(JSC::BytecodeIntrinsicNode::emit_intrinsic_isObject):
(JSC::BytecodeIntrinsicNode::emit_intrinsic_newArrayWithSize):

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

4 years agoRebaseline js/dom/global-constructors-attributes.html after r204594.
ryanhaddad@apple.com [Thu, 18 Aug 2016 16:10:26 +0000 (16:10 +0000)]
Rebaseline js/dom/global-constructors-attributes.html after r204594.

Unreviewed test gardening.

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

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

4 years ago[MediaStream] cleanup MediaConstraints
eric.carlson@apple.com [Thu, 18 Aug 2016 16:06:19 +0000 (16:06 +0000)]
[MediaStream] cleanup MediaConstraints
https://bugs.webkit.org/show_bug.cgi?id=160957

Reviewed by Antoine Quint.

No new tests, no behavior change.

* Modules/mediastream/CaptureDeviceManager.cpp:
(CaptureDeviceManager::sessionSupportsConstraint): Use MediaConstraint::type

* bindings/js/JSMediaDevicesCustom.cpp:
(WebCore::initializeStringConstraintWithList): MediaConstraint::create now takes the constraint
type, not name.
(WebCore::createStringConstraint): Ditto.
(WebCore::createBooleanConstraint): Ditto.
(WebCore::createDoubleConstraint): Ditto.
(WebCore::createIntConstraint): Ditto.
(WebCore::parseMediaTrackConstraintSetForKey): Pass constraint type.

* platform/mediastream/MediaConstraints.cpp:
(WebCore::MediaConstraint::create): MediaConstraint constructor now takes the constraint.
(WebCore::IntConstraint::create): Take type, not name.
(WebCore::IntConstraint::setMin): Ditto.
(WebCore::DoubleConstraint::create): Ditto.
(WebCore::BooleanConstraint::create): Ditto.
(WebCore::StringConstraint::create): Ditto.
* platform/mediastream/MediaConstraints.h:

* platform/mediastream/RealtimeMediaSourceSupportedConstraints.cpp:
(WebCore::RealtimeMediaSourceSupportedConstraints::nameForConstraint): Make static.
(WebCore::RealtimeMediaSourceSupportedConstraints::constraintFromName): Ditto.
* platform/mediastream/RealtimeMediaSourceSupportedConstraints.h:

* platform/mediastream/mac/AVCaptureDeviceManager.mm:
(WebCore::AVCaptureDeviceManager::sessionSupportsConstraint): Use MediaConstraint::type

* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::applyConstraints): nameForConstraint is a static method. Add
error logging.

* platform/mock/MediaConstraintsMock.cpp:
(WebCore::isSatisfiable): Use constraint type.

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

4 years ago[web-animations] Add Animatable, AnimationEffect, KeyframeEffect and Animation interface
commit-queue@webkit.org [Thu, 18 Aug 2016 13:58:37 +0000 (13:58 +0000)]
[web-animations] Add Animatable, AnimationEffect, KeyframeEffect and Animation interface
https://bugs.webkit.org/show_bug.cgi?id=156096

Patch by Rawinder Singh <rawinder.singh-webkit@cisra.canon.com.au> on 2016-08-18
Reviewed by Dean Jackson.

Adds:
Source/JavaScriptCore:

- Animatable interface and implementation of getAnimations in Element.
- Interface and implementation for Document getAnimations method.
- AnimationEffect interface and class stub.
- KeyframeEffect interface and constructor implementation.
- 'Animation' interface, constructor and query methods for effect and timeline.
- Remove runtime condition on Web animation interfaces (compile time flag is specified).

* runtime/CommonIdentifiers.h:

Source/WebCore:

- Animatable interface and implementation of getAnimations in Element.
- Interface and implementation for Document getAnimations method.
- AnimationEffect interface and class stub.
- KeyframeEffect interface and constructor implementation.
- 'Animation' interface, constructor and query methods for effect and timeline.
- Remove runtime condition on Web animation interfaces (compile time flag is specified).

Test: webanimations/Document.html

* CMakeLists.txt:
* DerivedSources.make:
* PlatformGTK.cmake:
* WebCore.xcodeproj/project.pbxproj:
* animation/Animatable.idl: Copied from Source/WebCore/animation/AnimationTimeline.idl.
* animation/AnimationEffect.cpp: Copied from Source/WebCore/animation/AnimationTimeline.cpp.
(WebCore::AnimationEffect::AnimationEffect):
(WebCore::AnimationEffect::~AnimationEffect):
(WebCore::AnimationEffect::setAnimation):
(WebCore::AnimationEffect::isCurrent):
(WebCore::AnimationEffect::isInEffect):
* animation/AnimationEffect.h: Copied from Source/WebCore/animation/DocumentTimeline.cpp.
* animation/AnimationEffect.idl: Copied from Source/WebCore/animation/DocumentAnimation.idl.
* animation/AnimationTimeline.cpp:
(WebCore::AnimationTimeline::destroy):
(WebCore::AnimationTimeline::attachAnimation):
(WebCore::AnimationTimeline::detachAnimation):
* animation/AnimationTimeline.h:
* animation/AnimationTimeline.idl:
* animation/DocumentAnimation.cpp:
(WebCore::DocumentAnimation::timeline):
(WebCore::DocumentAnimation::getAnimations):
(WebCore::DocumentAnimation::addAnimation):
(WebCore::DocumentAnimation::removeAnimation):
* animation/DocumentAnimation.h:
(WebCore::DocumentAnimation::getAnimations):
* animation/DocumentAnimation.idl:
* animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::create):
(WebCore::DocumentTimeline::DocumentTimeline):
(WebCore::DocumentTimeline::attach):
(WebCore::DocumentTimeline::detach):
* animation/DocumentTimeline.h:
* animation/DocumentTimeline.idl:
* animation/KeyframeEffect.cpp: Copied from Source/WebCore/animation/DocumentTimeline.cpp.
(WebCore::KeyframeEffect::create):
(WebCore::KeyframeEffect::KeyframeEffect):
(WebCore::KeyframeEffect::~KeyframeEffect):
* animation/KeyframeEffect.h: Copied from Source/WebCore/animation/DocumentTimeline.h.
* animation/KeyframeEffect.idl: Copied from Source/WebCore/animation/DocumentTimeline.idl.
* animation/WebAnimation.cpp: Copied from Source/WebCore/animation/DocumentAnimation.cpp.
(WebCore::WebAnimation::create):
(WebCore::WebAnimation::WebAnimation):
(WebCore::WebAnimation::~WebAnimation):
* animation/WebAnimation.h: Copied from Source/WebCore/animation/DocumentAnimation.h.
* animation/WebAnimation.idl: Copied from Source/WebCore/animation/DocumentTimeline.idl.
* bindings/scripts/CodeGeneratorGObject.pm:
* dom/Element.cpp:
(WebCore::Element::getAnimations):
* dom/Element.h:
* dom/Element.idl:

Source/WebKit/mac:

- Setup interface for enabling runtime flag for Web animations through preferences.

* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences webAnimationsEnabled]):
(-[WebPreferences setWebAnimationsEnabled:]):
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):

LayoutTests:

- Animatable interface and implementation of getAnimations in Element.
- Interface and implementation for Document getAnimations method.
- AnimationEffect interface and class stub.
- KeyframeEffect interface and constructor implementation.
- 'Animation' interface, constructor and query methods for effect and timeline.
- Remove runtime condition on Web animation interfaces (compile time flag is specified).

* platform/gtk/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
* webanimations/Document-expected.txt: Added.
* webanimations/Document.html: Added.
* webanimations/script-tests/Document.js: Added.

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

4 years agoUnreviewed test gardening.
pvollan@apple.com [Thu, 18 Aug 2016 09:23:32 +0000 (09:23 +0000)]
Unreviewed test gardening.

Update test expectations on Windows for failing tests. These failures are tracked in
https://bugs.webkit.org/show_bug.cgi?id=160447.

* platform/win/TestExpectations:

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

4 years ago[Cocoa] Migrate off of deprecated CoreGraphics API CGContextSelectFont() and CGContex...
mmaxfield@apple.com [Thu, 18 Aug 2016 06:38:14 +0000 (06:38 +0000)]
[Cocoa] Migrate off of deprecated CoreGraphics API CGContextSelectFont() and CGContextShowTextAtPoint()
https://bugs.webkit.org/show_bug.cgi?id=160895

Reviewed by Dean Jackson.

Source/WebCore:

Migrate to CTLineDraw() instead.

This patch also adds support for linking to the existing CoreText framework on Windows.

No new tests because there is no behavior change.

* PlatformWin.cmake:
* page/cocoa/ResourceUsageOverlayCocoa.mm:
(WebCore::showText):
* platform/graphics/ca/PlatformCALayer.cpp:
(WebCore::PlatformCALayer::drawTextAtPoint):
* platform/ios/LegacyTileCache.mm:
(WebCore::LegacyTileCache::drawLayer):
* platform/spi/win/CoreTextSPIWin.cpp: Added.
* platform/spi/win/CoreTextSPIWin.h: Added.

Source/WebKit:

Link to the existing CoreText framework.

* PlatformWin.cmake:

Tools:

Link to the existing CoreText framework.

* DumpRenderTree/PlatformWin.cmake:
* TestWebKitAPI/PlatformWin.cmake:

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

4 years ago[CSS] The parser should not get rid of empty namespace specification in front of...
benjamin@webkit.org [Thu, 18 Aug 2016 06:22:40 +0000 (06:22 +0000)]
[CSS] The parser should not get rid of empty namespace specification in front of element name selectors
https://bugs.webkit.org/show_bug.cgi?id=160936

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

* web-platform-tests/dom/nodes/ParentNode-querySelector-All-expected.txt:
* web-platform-tests/dom/nodes/ParentNode-querySelector-All-xht-expected.txt:

Source/WebCore:

There are two places where you can specify an empty namespace
in selectors:
    - Element name (e.g. "|name")
    - Attribute name (e.g. "[|name]")
In the first case, if we have an empty namespace, the selector
should match that.
In the second case, the default namespace of attribute is already
empty so it is just the same as "[name]".

Our code was just discarding any empty namespace. This is fine
for attributes but for names that is transforming "|name" into "name"
which is invalid.

This patch updates those cases to differentiate:
- Null prefix -> There was no namespace specified.
- Empty prefix -> There was a namespace prefix and it is empty.

Test: fast/selectors/empty-namespace-with-element-selector.html

* css/CSSGrammar.y.in:
* css/CSSParser.cpp:
(WebCore::CSSParser::determineNameInNamespace):
(WebCore::CSSParser::rewriteSpecifiersWithNamespaceIfNeeded):
(WebCore::CSSParser::rewriteSpecifiersWithElementName):
* css/CSSParser.h:
* css/CSSSelector.cpp:
(WebCore::CSSSelector::selectorText):
* css/CSSSelectorList.cpp:
(WebCore::SelectorNeedsNamespaceResolutionFunctor::operator()):
* css/StyleSheetContents.cpp:
(WebCore::StyleSheetContents::determineNamespace): Deleted.

LayoutTests:

* fast/css/css-selector-text-expected.txt:
* fast/css/css-selector-text.html:
* fast/css/css-set-selector-text-expected.txt:
* fast/css/css-set-selector-text.html:
* fast/selectors/empty-namespace-with-element-selector-expected.txt: Added.
* fast/selectors/empty-namespace-with-element-selector.html: Added.

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

4 years ago[Web IDL] Add support for dictionary members of dictionary types
cdumez@apple.com [Thu, 18 Aug 2016 03:07:31 +0000 (03:07 +0000)]
[Web IDL] Add support for dictionary members of dictionary types
https://bugs.webkit.org/show_bug.cgi?id=160902

Reviewed by Sam Weinig.

Add support for dictionary members of dictionary types.

No new tests, updated bindings tests.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateDictionaryImplementationContent):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::convertDictionary<TestObj::Dictionary>):
(WebCore::convertDictionary<TestObj::DictionaryThatShouldNotTolerateNull>):
* bindings/scripts/test/TestObj.idl:

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

4 years agoAdd WASM support for i64 simple opcodes.
keith_miller@apple.com [Thu, 18 Aug 2016 01:35:55 +0000 (01:35 +0000)]
Add WASM support for i64 simple opcodes.
https://bugs.webkit.org/show_bug.cgi?id=160928

Reviewed by Michael Saboff.

This patch also removes the unsigned int32 mod operator, which is not supported by B3 yet.

* wasm/WASMB3IRGenerator.cpp:
(JSC::WASM::toB3Op):
(JSC::WASM::B3IRGenerator::unaryOp):
* wasm/WASMFunctionParser.h:
(JSC::WASM::WASMFunctionParser<Context>::parseExpression):
* wasm/WASMOps.h:

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

4 years agoAdd support for additional networks
andersca@apple.com [Thu, 18 Aug 2016 00:46:17 +0000 (00:46 +0000)]
Add support for additional networks
https://bugs.webkit.org/show_bug.cgi?id=160951
rdar://problem/27807479

Reviewed by Sam Weinig.

Source/WebCore:

* Modules/applepay/ApplePaySession.cpp:
(WebCore::createSupportedNetworks):
(WebCore::createPaymentRequest):
(WebCore::ApplePaySession::create):
* Modules/applepay/PaymentRequest.cpp:
(WebCore::isAdditionalValidSupportedNetwork):
(WebCore::PaymentRequest::isValidSupportedNetwork):
* Modules/applepay/PaymentRequest.h:
(WebCore::PaymentRequest::supportedNetworks):
(WebCore::PaymentRequest::setSupportedNetworks):
* Modules/applepay/PaymentRequestValidator.cpp:
(WebCore::PaymentRequestValidator::validateSupportedNetworks):
* Modules/applepay/PaymentRequestValidator.h:

Source/WebKit2:

* Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
(IPC::ArgumentCoder<PaymentRequest>::decode):
(IPC::ArgumentCoder<PaymentRequest::SupportedNetworks>::encode): Deleted.
(IPC::ArgumentCoder<PaymentRequest::SupportedNetworks>::decode): Deleted.
* Shared/WebCoreArgumentCoders.h:
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::toAdditionalSupportedNetwork):
(WebKit::toSupportedNetwork):
(WebKit::toSupportedNetworks):
* WebProcess/ApplePay/WebPaymentCoordinator.cpp:
(WebKit::WebPaymentCoordinator::supportsVersion):

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

4 years agoWe allow assignments to const variables when in a for-in/for-of loop
commit-queue@webkit.org [Wed, 17 Aug 2016 23:57:03 +0000 (23:57 +0000)]
We allow assignments to const variables when in a for-in/for-of loop
https://bugs.webkit.org/show_bug.cgi?id=156673

Patch by JF Bastien <jfbastien@apple.com> on 2016-08-17
Reviewed by Filip Pizlo.

JSTests:

* stress/for-in-of-const.js: Added.
(expect_nothrow):
(expect_throw):
(capture):

Source/JavaScriptCore:

for-in and for-of weren't checking whether iteration variable from
parent scopes were const. Assigning to such variables should
throw, but used not to.

* bytecompiler/NodesCodegen.cpp:
(JSC::ForInNode::emitLoopHeader):
(JSC::ForOfNode::emitBytecode):

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

4 years agoUse find_library within Windows build
commit-queue@webkit.org [Wed, 17 Aug 2016 23:29:50 +0000 (23:29 +0000)]
Use find_library within Windows build
https://bugs.webkit.org/show_bug.cgi?id=160904

Patch by Don Olmstead <don.olmstead@am.sony.com> on 2016-08-17
Reviewed by Brent Fulgham.

.:

* Source/cmake/FindICU.cmake:
* Source/cmake/OptionsWin.cmake:

Source/WTF:

* wtf/CMakeLists.txt:

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

4 years ago[Win] Remove old libraries from build inputs
bfulgham@apple.com [Wed, 17 Aug 2016 23:08:26 +0000 (23:08 +0000)]
[Win] Remove old libraries from build inputs
https://bugs.webkit.org/show_bug.cgi?id=160949

Reviewed by Dean Jackson.

Modify the download script to remove the old 'icuuc.lib' and
'icuin.lib' files for Windows builds.

* Scripts/update-webkit-auxiliary-libs:

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

4 years agoWeb Inspector: Network Tab should not layout if not visible
mattbaker@apple.com [Wed, 17 Aug 2016 23:02:08 +0000 (23:02 +0000)]
Web Inspector: Network Tab should not layout if not visible
https://bugs.webkit.org/show_bug.cgi?id=160920
<rdar://problem/27876629>

Reviewed by Timothy Hatcher.

Avoid updating the current time when the Network tab is hidden.
The timer, and any debounced timer cancellations, need to be stopped
as soon as the view is hidden.

* UserInterface/Views/NetworkGridContentView.js:
(WebInspector.NetworkGridContentView.prototype.hidden):
(WebInspector.NetworkGridContentView.prototype._networkTimelineRecordAdded):
(WebInspector.NetworkGridContentView.prototype._stopUpdatingCurrentTime):
(WebInspector.NetworkGridContentView):

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

4 years agoExtra logging for crash reason
commit-queue@webkit.org [Wed, 17 Aug 2016 22:18:36 +0000 (22:18 +0000)]
Extra logging for crash reason
https://bugs.webkit.org/show_bug.cgi?id=160943

Patch by Jonathan Bedard <jbedard@apple.com> on 2016-08-17
Reviewed by Alexey Proskuryakov.

A number of tests have been erroneously marked as crashed, this should help diagnose these false crashes.

* Scripts/webkitpy/port/server_process.py:
(ServerProcess.write): Add extra logging to determine why a process has been marked as crashed.
(ServerProcess._wait_for_data_and_update_buffers_using_select): Ditto.
(ServerProcess.has_crashed): Ditto.

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

4 years agoFixed a potential bug in MarkedArgumentBuffer.
ggaren@apple.com [Wed, 17 Aug 2016 21:22:46 +0000 (21:22 +0000)]
Fixed a potential bug in MarkedArgumentBuffer.
https://bugs.webkit.org/show_bug.cgi?id=160948
<rdar://problem/27889416>

Reviewed by Oliver Hunt.

I haven't been able to produce an observable test case after some trying.

* runtime/ArgList.cpp:
(JSC::MarkedArgumentBuffer::addMarkSet): New helper function -- I broke
this out from existing code for clarity, but the behavior is the same.

(JSC::MarkedArgumentBuffer::expandCapacity): Ditto.

(JSC::MarkedArgumentBuffer::slowAppend): Always addMarkSet() on the slow
path. This is faster than the old linear scan, and I think it might
avoid cases the old scan could miss.

* runtime/ArgList.h:
(JSC::MarkedArgumentBuffer::append): Account for the case where someone
has called clear() or removeLast().

(JSC::MarkedArgumentBuffer::mallocBase): No behavior change -- but it's
clearer to test the buffers directly instead of inferring what they
might be based on capacity.

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

4 years agoWeb Inspector: Select elements in DOM hierarchy are misaligned
commit-queue@webkit.org [Wed, 17 Aug 2016 21:20:59 +0000 (21:20 +0000)]
Web Inspector: Select elements in DOM hierarchy are misaligned
https://bugs.webkit.org/show_bug.cgi?id=160885

Patch by Devin Rousso <dcrousso+webkit@gmail.com> on 2016-08-17
Reviewed by Timothy Hatcher.

* UserInterface/Views/HierarchicalPathComponent.css:
(.hierarchical-path-component > select):

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

4 years agoRemove an invalid assertion in the DFG backend's GetById emitter.
mark.lam@apple.com [Wed, 17 Aug 2016 21:00:45 +0000 (21:00 +0000)]
Remove an invalid assertion in the DFG backend's GetById emitter.
https://bugs.webkit.org/show_bug.cgi?id=160925
<rdar://problem/27248961>

Reviewed by Filip Pizlo.

JSTests:

* stress/dfg-get-by-id-should-not-assert-non-null-prediction.js: Added.

Source/JavaScriptCore:

The DFG backend's GetById assertion that the node's prediction not be SpecNone
is just plain wrong.  It assumes that we can never have a GetById node without a
type prediction, but this is not true.  The following test case proves otherwise:

    function foo() {
        "use strict";
        return --arguments["callee"];
    }

Will remove the assertion.  Nothing else needs to change as the DFG is working
correctly without the assertion.

* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):

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

4 years agoRemove a couple of unused WKSI function pointers
andersca@apple.com [Wed, 17 Aug 2016 20:22:24 +0000 (20:22 +0000)]
Remove a couple of unused WKSI function pointers
https://bugs.webkit.org/show_bug.cgi?id=160946

Reviewed by Dan Bernstein.

Source/WebCore:

* platform/mac/WebCoreSystemInterface.h:
* platform/mac/WebCoreSystemInterface.mm:

Source/WebKit/mac:

* WebCoreSupport/WebSystemInterface.mm:
(InitWebCoreSystemInterface): Deleted.

Source/WebKit2:

* WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:
(InitWebCoreSystemInterface): Deleted.

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

4 years agoMove WKSignedPublicKeyAndChallengeString into WebCore and make it proper C++
andersca@apple.com [Wed, 17 Aug 2016 19:58:00 +0000 (19:58 +0000)]
Move WKSignedPublicKeyAndChallengeString into WebCore and make it proper C++
https://bugs.webkit.org/show_bug.cgi?id=160945

Reviewed by Dan Bernstein.

Source/WebCore:

* platform/mac/SSLKeyGeneratorMac.mm:
(WebCore::getSubjectPublicKey):
(WebCore::signPublicKeyAndChallenge):
(WebCore::signedPublicKeyAndChallengeString):

Source/WTF:

* wtf/RetainPtr.h:
(WTF::RetainPtr::operator&):
Cast this to the right type.

* wtf/spi/cocoa/SecuritySPI.h:
Add new SPI.

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

4 years agoRemove CSS_IMAGE_SET feature define
antti@apple.com [Wed, 17 Aug 2016 19:56:28 +0000 (19:56 +0000)]
Remove CSS_IMAGE_SET feature define
https://bugs.webkit.org/show_bug.cgi?id=160944

Reviewed by Dean Jackson.

Source/WebCore:

This seems to be enabled everywhere already (except Mac cmake build which it keep breaking).

* css/CSSCursorImageValue.cpp:
(WebCore::CSSCursorImageValue::CSSCursorImageValue):
(WebCore::CSSCursorImageValue::cachedImage):
(WebCore::CSSCursorImageValue::cachedOrPendingImage):
* css/CSSImageSetValue.cpp:
(WebCore::CSSImageSetValue::cloneForCSSOM):
* css/CSSImageSetValue.h:
* css/CSSParser.cpp:
(WebCore::CSSParser::parseVariableDependentValue):
(WebCore::isImageSetFunctionValue):
(WebCore::CSSParser::parseValue):
(WebCore::CSSParser::parseContent):
(WebCore::CSSParser::parseFillImage):
(WebCore::CSSParser::parseBorderImage):
(WebCore::CSSParser::parseImageResolution):
(WebCore::CSSParser::parseImageSet):
* css/CSSParser.h:
* css/CSSToStyleMap.cpp:
(WebCore::CSSToStyleMap::mapNinePieceImage):
* css/CSSValue.cpp:
(WebCore::CSSValue::traverseSubresources):
(WebCore::CSSValue::equals):
(WebCore::CSSValue::cssText):
(WebCore::CSSValue::destroy):
(WebCore::CSSValue::cloneForCSSOM):
* css/CSSValue.h:
(WebCore::CSSValue::isImageGeneratorValue):
(WebCore::CSSValue::isGradientValue):
(WebCore::CSSValue::isNamedImageValue):
(WebCore::CSSValue::isImageSetValue):
(WebCore::CSSValue::isImageValue):
(WebCore::CSSValue::isInheritedValue):
* css/StyleBuilderConverter.h:
(WebCore::isImageShape):
* css/StyleBuilderCustom.h:
(WebCore::StyleBuilderCustom::applyValueContent):
* css/StyleResolver.cpp:
(WebCore::StyleResolver::styleImage):
(WebCore::StyleResolver::generatedOrPendingFromValue):
(WebCore::StyleResolver::setOrPendingFromValue):
(WebCore::StyleResolver::cursorOrPendingFromValue):
* css/StyleResolver.h:
(WebCore::StyleResolver::applyPropertyToRegularStyle):
* css/makeprop.pl:
(generateFillLayerPropertyValueSetter):
* rendering/style/StyleCachedImage.cpp:
(WebCore::StyleCachedImage::cssValue):
* rendering/style/StylePendingImage.h:
* style/StylePendingResources.cpp:
(WebCore::Style::loadPendingImage):

Source/WTF:

* wtf/FeatureDefines.h:

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

4 years ago[Cocoa] -[NSString isEqualToString:] returns NO for any WKNSString argument
mitz@apple.com [Wed, 17 Aug 2016 19:19:05 +0000 (19:19 +0000)]
[Cocoa] -[NSString isEqualToString:] returns NO for any WKNSString argument
https://bugs.webkit.org/show_bug.cgi?id=160938
<rdar://problem/27876652>

Reviewed by Anders Carlsson.

Source/WebKit2:

-[NSString isEqualToString:] calls an internal NSObject method on its argument, which
NSString subclasses override to return YES, but WKObject does not override and does not
forward to its target NSString.

To fix this issue and other similar issues, we make WKObject a root class instead of an
NSObject subclass.

Test: TestWebKitAPI/Tests/WebKit2Cocoa/WKObject.mm

* Platform/spi/Cocoa/objcSPI.h: Added.

* Shared/Cocoa/WKObject.h: Make WKObject a root class instead of inhereting from NSObject.

* Shared/Cocoa/WKObject.mm:
(+[WKObject class]): Return self.
(-[WKObject allowsWeakReference]): Added. Called by the Objective-C runtime.
(-[WKObject retainWeakReference]): Ditto.
(-[WKObject hash]): If we don’t have a target, return our address.
(-[WKObject superclass]): Implement this NSObject protocol method.
(-[WKObject class]): Ditto.
(-[WKObject self]): Ditto.
(-[WKObject performSelector:]): Ditto.
(-[WKObject performSelector:withObject:]): Ditto.
(-[WKObject performSelector:withObject:withObject:]): Ditto.
(-[WKObject isProxy]): Ditto.
(-[WKObject respondsToSelector:]): Changed to not call super.
(-[WKObject conformsToProtocol:]): Ditto.
(-[WKObject description]): Ditto.
(-[WKObject retain]): Implement this NSObject protocol method.
(-[WKObject release]): Ditto.
(-[WKObject autorelease]): Ditto.
(-[WKObject retainCount]): Ditto.
(-[WKObject zone]): Ditto.
(-[WKObject dealloc]): Deleted.
(-[WKObject classForCoder]): Deleted.
(-[WKObject classForKeyedArchiver]): Deleted.
(-[WKObject _cfTypeID]): Deleted.

* WebKit2.xcodeproj/project.pbxproj: Added reference to new file.

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit2Cocoa/WKObject.mm: Added.
(TestWebKitAPI::TEST):

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

4 years agoTry to fix CMake build.
antti@apple.com [Wed, 17 Aug 2016 18:15:58 +0000 (18:15 +0000)]
Try to fix CMake build.

* rendering/style/StyleCachedImage.cpp:
(WebCore::StyleCachedImage::cssValue):

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

4 years agoAX: Support abbreviations in iOS
cfleizach@apple.com [Wed, 17 Aug 2016 18:01:41 +0000 (18:01 +0000)]
AX: Support abbreviations in iOS
https://bugs.webkit.org/show_bug.cgi?id=160907

Reviewed by Joanmarie Diggs.

Source/WebCore:

Expose the expandedTextValue attribute for iOS, so that VoiceOver can speak abbreviations correctly.

Test: accessibility/ios-simulator/abbreviation.html

* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper textMarkersForRange:]):
(-[WebAccessibilityObjectWrapper accessibilityExpandedTextValue]):
(-[WebAccessibilityObjectWrapper accessibilityIdentifier]):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(AXAttributeStringSetSpelling):
(AXAttributeStringSetExpandedTextValue):
(AXAttributedStringAppendText):
(AXAttributeStringSetexpandedTextValue): Deleted.

Tools:

* DumpRenderTree/ios/AccessibilityUIElementIOS.mm:
(AccessibilityUIElement::stringAttributeValue):
* WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:
(WTR::AccessibilityUIElement::stringAttributeValue):

LayoutTests:

* accessibility/ios-simulator/abbreviation-expected.txt: Added.
* accessibility/ios-simulator/abbreviation.html: Added.

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

4 years agoWeb Inspector: rapid updates to status icons in Visual Styles sidebar causes flicker
commit-queue@webkit.org [Wed, 17 Aug 2016 17:48:59 +0000 (17:48 +0000)]
Web Inspector: rapid updates to status icons in Visual Styles sidebar causes flicker
https://bugs.webkit.org/show_bug.cgi?id=160887

Patch by Devin Rousso <dcrousso+webkit@gmail.com> on 2016-08-17
Reviewed by Timothy Hatcher.

* UserInterface/Views/VisualStyleBasicInput.js:
(WebInspector.VisualStyleBasicInput):

* UserInterface/Views/VisualStyleColorPicker.js:
(WebInspector.VisualStyleColorPicker):

* UserInterface/Views/VisualStyleNumberInputBox.js:
(WebInspector.VisualStyleNumberInputBox):
(WebInspector.VisualStyleNumberInputBox.prototype._valueNumberInputKeyDown):

* UserInterface/Views/VisualStylePropertyNameInput.js:
(WebInspector.VisualStylePropertyNameInput):

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

4 years agoRemove StyleCachedImageSet
antti@apple.com [Wed, 17 Aug 2016 16:37:45 +0000 (16:37 +0000)]
Remove StyleCachedImageSet
https://bugs.webkit.org/show_bug.cgi?id=160941

Reviewed by Simon Fraser.

It is almost the same as StyleCachedImage. Just use that.

* CMakeLists.txt:
* WebCore.xcodeproj/project.pbxproj:
* css/CSSCursorImageValue.cpp:
(WebCore::CSSCursorImageValue::cachedImage):
* css/CSSImageSetValue.cpp:
(WebCore::CSSImageSetValue::detachPendingImage):
(WebCore::CSSImageSetValue::~CSSImageSetValue):
(WebCore::CSSImageSetValue::fillImageSet):
(WebCore::CSSImageSetValue::bestImageForScaleFactor):
(WebCore::CSSImageSetValue::bestFitImage):
(WebCore::CSSImageSetValue::cachedOrPendingImageSet):
(WebCore::CSSImageSetValue::customCSSText):
(WebCore::CSSImageSetValue::traverseSubresources):
(WebCore::CSSImageSetValue::cachedImageSet): Deleted.
* css/CSSImageSetValue.h:
(WebCore::CSSImageSetValue::create):
(WebCore::CSSImageSetValue::compareByScaleFactor):
* css/StyleResolver.cpp:
* page/EventHandler.cpp:
* rendering/style/ShapeValue.cpp:
(WebCore::ShapeValue::isImageValid):
* rendering/style/StyleAllInOne.cpp:
* rendering/style/StyleCachedImage.cpp:
(WebCore::StyleCachedImage::StyleCachedImage):

    Add scale factor and CSSImageSetValue backpointer, the only additional features of StyleCachedImageSet.

(WebCore::StyleCachedImage::cssValue):
(WebCore::StyleCachedImage::imageSize):
(WebCore::StyleCachedImage::imageHasRelativeWidth):
* rendering/style/StyleCachedImage.h:
* rendering/style/StyleCachedImageSet.cpp: Removed.
* rendering/style/StyleCachedImageSet.h: Removed.
* rendering/style/StyleImage.h:
(WebCore::StyleImage::isCachedImage):
(WebCore::StyleImage::isPendingImage):
(WebCore::StyleImage::isGeneratedImage):
(WebCore::StyleImage::StyleImage):
(WebCore::StyleImage::isCachedImageSet): Deleted.
* style/StylePendingResources.cpp:
(WebCore::Style::loadPendingImage):

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

4 years ago[EFL] Bump efl version from 1.17 to 1.18
commit-queue@webkit.org [Wed, 17 Aug 2016 14:59:18 +0000 (14:59 +0000)]
[EFL] Bump efl version from 1.17 to 1.18
https://bugs.webkit.org/show_bug.cgi?id=160899

Patch by Gyuyoung Kim <gyuyoung.kim@navercorp.com> on 2016-08-17
Reviewed by Antonio Gomes.

.:

* Source/cmake/OptionsEfl.cmake: Update ewebkit version to 1.18.0.

Tools:

To use efl-1.18, EFL port needs to update install dependencies as well.

* efl/install-dependencies:
* efl/jhbuild.modules:

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

4 years ago[Win] Add tests for linked fonts.
pvollan@apple.com [Wed, 17 Aug 2016 14:39:23 +0000 (14:39 +0000)]
[Win] Add tests for linked fonts.
https://bugs.webkit.org/show_bug.cgi?id=160898

Reviewed by Brent Fulgham.

Add tests for https://trac.webkit.org/changeset/204502.

Source/WebCore:

* platform/graphics/win/FontCacheWin.cpp:
(WebCore::appendLinkedFonts):
(WebCore::getLinkedFonts):

Tools:

* TestWebKitAPI/PlatformWin.cmake:
* TestWebKitAPI/Tests/WebCore/win/LinkedFonts.cpp: Added.
(TestWebKitAPI::TEST):

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

4 years ago[EFL] Fix test_ewk2_view after r203612
hs85.jeong@samsung.com [Wed, 17 Aug 2016 11:12:46 +0000 (11:12 +0000)]
[EFL] Fix test_ewk2_view after r203612
https://bugs.webkit.org/show_bug.cgi?id=160937

Reviewed by Gyuyoung Kim.

Default parameter values for window.alert() / prompt() / confirm() was
changed from "undefined" to the empty string after r203612.

* UIProcess/API/efl/tests/test_ewk2_view.cpp:
(TEST_F):

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

4 years agoUnreviewed. Fix GObject DOM bindings API break after r204449, r204450 and r204451.
carlosgc@webkit.org [Wed, 17 Aug 2016 11:07:06 +0000 (11:07 +0000)]
Unreviewed. Fix GObject DOM bindings API break after r204449, r204450 and r204451.

Attributes designMode, embeds, plugins, scripts and compatMode have been moved from HTMLDocument to Document.

* bindings/gobject/WebKitDOMDeprecated.cpp:
(webkit_dom_html_document_get_design_mode):
(webkit_dom_html_document_set_design_mode):
(webkit_dom_html_document_get_compat_mode):
(webkit_dom_html_document_get_embeds):
(webkit_dom_html_document_get_plugins):
(webkit_dom_html_document_get_scripts):
* bindings/gobject/WebKitDOMDeprecated.h:
* bindings/gobject/WebKitDOMDeprecated.symbols:
* bindings/gobject/webkitdom.symbols:

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

4 years agoUnreviewed. Fix GObject DOM bindings API break after r204312.
carlosgc@webkit.org [Wed, 17 Aug 2016 08:50:11 +0000 (08:50 +0000)]
Unreviewed. Fix GObject DOM bindings API break after r204312.

HTMLInputElement capture attribute now returns the actual capture value, instead of whether it's present or
not. This patch renames webkit_dom_html_input_element_get_capture as
webkit_dom_html_input_element_get_capture_type and deprecates webkit_dom_html_input_element_get_capture.

* bindings/gobject/WebKitDOMDeprecated.cpp:
(webkit_dom_html_input_element_get_capture):
* bindings/gobject/WebKitDOMDeprecated.h:
* bindings/gobject/WebKitDOMDeprecated.symbols:
* bindings/gobject/webkitdom.symbols:
* bindings/scripts/CodeGeneratorGObject.pm:
(GenerateProperty):
(GetEffectiveFunctionName):

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

4 years ago[iOS WK2] Don't throw touchMove events on the floor
simon.fraser@apple.com [Wed, 17 Aug 2016 05:48:27 +0000 (05:48 +0000)]
[iOS WK2] Don't throw touchMove events on the floor
https://bugs.webkit.org/show_bug.cgi?id=160935

Reviewed by Tim Horton.

Source/WebKit2:

EventDispatcher claimed to coalesce touchMove events, but actually threw away any
touchMove if there was one in the queue when the next non-move event came along.

Fix to strictly coalesce touchMove events, so a start/move/end stream always fires
a move event. This is necessary for move-based interaction to work in testing,
for example the added range slider test.

Test: fast/forms/ios/drag-range-thumb.html

* WebProcess/WebPage/EventDispatcher.cpp:
(WebKit::EventDispatcher::touchEvent):

LayoutTests:

Test for range slider interaction with synthesized touch events.

* fast/forms/ios/drag-range-thumb-expected.txt: Added.
* fast/forms/ios/drag-range-thumb.html: Added.

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

4 years agocustomElements.define should retrieve lifecycle callbacks
rniwa@webkit.org [Wed, 17 Aug 2016 04:42:53 +0000 (04:42 +0000)]
customElements.define should retrieve lifecycle callbacks
https://bugs.webkit.org/show_bug.cgi?id=160797

Reviewed by Chris Dumez.

Source/WebCore:

Updated JSCustomElementInterface to invoke Get(constructor, "prototype") and Get(prototype, callbackName)
for each lifecycle callback as required by the latest specification:
https://html.spec.whatwg.org/#dom-customelementsregistry-define

Also added the support for "observedAttributes" property on the custom elements constructor which defines
the list of attributes for which attributeChangedCallback is invoked.

Test: fast/custom-elements/CustomElementsRegistry.html

* bindings/js/JSCustomElementInterface.cpp:
(WebCore::JSCustomElementInterface::setAttributeChangedCallback): Added.
(WebCore::JSCustomElementInterface::attributeChanged): Invoke m_attributeChangedCallback instead of on the
result of Get(element, "attributeChangedCallback").
* bindings/js/JSCustomElementInterface.h:
(WebCore::JSCustomElementInterface::observesAttribute): Added.

* bindings/js/JSCustomElementsRegistryCustom.cpp:
(WebCore::getLifecycleCallback): Added.
(WebCore::JSCustomElementsRegistry::define): Invoke Get(prototype, callbackName) for each callback. Also
store attributedChangedCallback and observedAttributes to JSCustomElementInterface. Other callbacks will
be stored in the future when the support for those callbacks are added.

* dom/Element.cpp:
(WebCore::Element::attributeChanged): Moved more code into enqueueAttributeChangedCallbackIfNeeded.

* dom/LifecycleCallbackQueue.cpp:
(WebCore::LifecycleCallbackQueue::enqueueAttributeChangedCallbackIfNeeded): Added an early exit for when
the given attribute is not observed by the custom element. Also moved the logic to retrieve
JSCustomElementInterface from Element::attributeChanged and renamed it from enqueueAttributeChangedCallback.

* bindings/js/JSDOMBinding.h:
(WebCore::toNativeArray): Throw a TypeError when the argument is not an object.
* bindings/js/JSDOMConvert.h:
(WebCore::Converter<Vector<T>>::convert): Removed a FIXME comment.

LayoutTests:

Added test cases for CustomElementsRegistry.define to make sure it invokes Get(constructor, "prototype")
and Get(prototype, callbackName) for each lifecycle callback.

Also updated the tests to reflect the support for observedAttributes which specifies the list of attributes
for which attributeChangedCallback is invoked.

* fast/custom-elements/CustomElementsRegistry-expected.txt: Renamed from Document-defineElement-expected.txt.
* fast/custom-elements/CustomElementsRegistry.html: Renamed from Document-defineElement.html.
* fast/custom-elements/Document-defineElement-expected.txt: Removed.
* fast/custom-elements/Document-defineElement.html: Removed.
* fast/custom-elements/attribute-changed-callback-expected.txt:
* fast/custom-elements/attribute-changed-callback.html: Added test cases for "observedAttributes".
* fast/custom-elements/lifecycle-callback-timing.html:

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

4 years agoSubpixel rendering: Cleanup RenderLayerBacking::updateGeometry.
zalan@apple.com [Wed, 17 Aug 2016 03:18:21 +0000 (03:18 +0000)]
Subpixel rendering: Cleanup RenderLayerBacking::updateGeometry.
https://bugs.webkit.org/show_bug.cgi?id=156860
<rdar://problem/25432352>

Reviewed by Simon Fraser.

Source/WebCore:

This patch cleans up the subpixel adjustment computation for the graphics layers
in RenderLayerBacking::updateGeometry.
It also fixes subpixel jiggling with clipping layers (both ancestor and child containment layers).

Tests: compositing/hidpi-ancestor-subpixel-clipping.html
       compositing/hidpi-sibling-composited-content-offset.html
       compositing/hidpi-subpixel-transform-origin.html
       fast/scrolling/ios/subpixel-overflow-scrolling-with-ancestor.html

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::beginTransparencyLayers):
(WebCore::RenderLayer::paint):
(WebCore::RenderLayer::clipToRect):
(WebCore::RenderLayer::setupClipPath):
(WebCore::RenderLayer::paintLayerByApplyingTransform):
(WebCore::RenderLayer::paintBackgroundForFragments):
(WebCore::RenderLayer::paintForegroundForFragmentsWithPhase):
(WebCore::RenderLayer::paintOutlineForFragments):
(WebCore::RenderLayer::paintMaskForFragments):
(WebCore::RenderLayer::paintChildClippingMaskForFragments):
(WebCore::RenderLayer::paintOverflowControlsForFragments):
(WebCore::RenderLayer::calculateClipRects):
* rendering/RenderLayer.h:
* rendering/RenderLayerBacking.cpp:
(WebCore::subpixelOffsetFromRendererChanged):
(WebCore::subpixelForLayerPainting):
(WebCore::computeOffsetFromRenderer):
(WebCore::snappedGraphicsLayerRect):
(WebCore::computeOffsetFromAncestorGraphicsLayer):
(WebCore::ComputedOffsets::ComputedOffsets): This is a helper class to hold offset values.
(WebCore::ComputedOffsets::fromAncestorGraphicsLayer):
(WebCore::ComputedOffsets::fromParentGraphicsLayer):
(WebCore::ComputedOffsets::fromPrimaryGraphicsLayer):
(WebCore::RenderLayerBacking::computePrimaryGraphicsLayerRect):
(WebCore::RenderLayerBacking::computeParentGraphicsLayerRect):
(WebCore::RenderLayerBacking::updateGeometry):
(WebCore::RenderLayerBacking::updateMaskingLayerGeometry):
(WebCore::RenderLayerBacking::contentOffsetInCompostingLayer):
(WebCore::RenderLayerBacking::setContentsNeedDisplayInRect):
(WebCore::RenderLayerBacking::paintIntoLayer):
(WebCore::RenderLayerBacking::paintContents):
(WebCore::devicePixelFractionGapFromRendererChanged): Deleted.
(WebCore::pixelFractionForLayerPainting): Deleted.
(WebCore::calculateDevicePixelOffsetFromRenderer): Deleted.
(WebCore::RenderLayerBacking::adjustAncestorCompositingBoundsForFlowThread): Deleted.
* rendering/RenderLayerBacking.h:

LayoutTests:

* compositing/hidpi-ancestor-subpixel-clipping-expected.html: Added.
* compositing/hidpi-ancestor-subpixel-clipping.html: Added.
* compositing/hidpi-sibling-composited-content-offset-expected.html: Added.
* compositing/hidpi-sibling-composited-content-offset.html: Added.
* compositing/hidpi-subpixel-transform-origin-expected.html: Added.
* compositing/hidpi-subpixel-transform-origin.html: Added.
* fast/scrolling/ios/subpixel-overflow-scrolling-with-ancestor-expected.txt: Added.
* fast/scrolling/ios/subpixel-overflow-scrolling-with-ancestor.html: Added.

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

4 years agoUnreviewed, rolling out r204540, r204545, and r204547.
commit-queue@webkit.org [Wed, 17 Aug 2016 03:17:04 +0000 (03:17 +0000)]
Unreviewed, rolling out r204540, r204545, and r204547.
https://bugs.webkit.org/show_bug.cgi?id=160932

Broke Windows builds (Requested by rniwa on #webkit).

Reverted changesets:

"customElements.define should retrieve lifecycle callbacks"
https://bugs.webkit.org/show_bug.cgi?id=160797
http://trac.webkit.org/changeset/204540

"Windows build fix attempt after r204540."
http://trac.webkit.org/changeset/204545

"Another Windows build fix attempt. The error message doesn't
make any sense to me."
http://trac.webkit.org/changeset/204547

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

4 years agoUnreviewed, CMake build fix after r204532
hs85.jeong@samsung.com [Wed, 17 Aug 2016 02:42:51 +0000 (02:42 +0000)]
Unreviewed, CMake build fix after r204532

* PlatformMac.cmake:

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

4 years agoprepare-ChangeLog: Extract logic from generateFunctionLists() into a function that...
dbates@webkit.org [Wed, 17 Aug 2016 02:30:27 +0000 (02:30 +0000)]
prepare-ChangeLog: Extract logic from generateFunctionLists() into a function that takes a delegate object
https://bugs.webkit.org/show_bug.cgi?id=160924

Reviewed by Stephanie Lewis.

Towards adding unit tests for generateFunctionLists() we move its logic into actuallyGenerateFunctionLists()
and have actuallyGenerateFunctionLists() take a delegate object to use to query the file system and SCM.
We modify generateFunctionLists() to call actuallyGenerateFunctionLists(). This will make is possible to
test the generate function list machinery without requiring a SCM checkout by substituting a delegate
object that mocks out the file system and SCM operations.

* Scripts/VCSUtils.pm:
(parseDiffStartLine): Parses an SVN or Git start line and returns the path to the target file.
* Scripts/prepare-ChangeLog:
(generateFunctionLists): Move functionality to actually generate the function lists to actuallyGenerateFunctionLists(),
abstracting the logic to query the file system and SCM into functions on a delegate object that
we pass to it.
(actuallyGenerateFunctionLists): Extracted from generateFunctionLists().
(diffHeaderFormat): Deleted.

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

4 years agoUnreviewed, CMake build fix
hs85.jeong@samsung.com [Wed, 17 Aug 2016 02:29:30 +0000 (02:29 +0000)]
Unreviewed, CMake build fix

* PlatformMac.cmake:

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

4 years agoAnother Windows build fix attempt. The error message doesn't make any sense to me.
rniwa@webkit.org [Wed, 17 Aug 2016 02:23:23 +0000 (02:23 +0000)]
Another Windows build fix attempt. The error message doesn't make any sense to me.

* bindings/js/JSCustomElementsRegistryCustom.cpp:
(WebCore::JSCustomElementsRegistry::define):

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

4 years ago[JSC] Update the documentation of B3's Return opcode
commit-queue@webkit.org [Wed, 17 Aug 2016 02:01:03 +0000 (02:01 +0000)]
[JSC] Update the documentation of B3's Return opcode
https://bugs.webkit.org/show_bug.cgi?id=160912

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-08-16
Reviewed by Filip Pizlo.

* docs/b3/intermediate-representation.html:

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

4 years agoWindows build fix attempt after r204540.
rniwa@webkit.org [Wed, 17 Aug 2016 01:55:14 +0000 (01:55 +0000)]
Windows build fix attempt after r204540.

* bindings/js/JSBindingsAllInOne.cpp:

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

4 years agoURLParser should parse URLs without credentials
achristensen@apple.com [Wed, 17 Aug 2016 00:41:30 +0000 (00:41 +0000)]
URLParser should parse URLs without credentials
https://bugs.webkit.org/show_bug.cgi?id=160913

Reviewed by Brady Eidson.

Source/WebCore:

When parsing a URL, after the scheme we do not know if we are parsing a username and password
or if we are parsing the host until we hit a '@' indicating the end of the credentials or a /, ?, or #
indicating the end of the host.  Because there are significantly different rules for serializing usernames,
passwords, and hosts (all of which have yet to be implemented in URLParser) we put the code points after the
scheme in a special buffer that will be processed once we know what we are parsing.

In the future, this could be optimized by assuming that we are parsing the host and if we encounter a '@' character,
then do some extra work.  This would save us the effort of copying the host twice because most URLs don't have credentials.

This is covered by a new URLParser API test.

* platform/Logging.h:
* platform/URLParser.cpp:
(WebCore::isC0Control):
(WebCore::isC0ControlOrSpace):
(WebCore::isTabOrNewline):
(WebCore::isSpecialScheme):
(WebCore::URLParser::parse):
(WebCore::URLParser::authorityEndReached):
(WebCore::URLParser::hostEndReached):
(WebCore::URLParser::allValuesEqual):
(WebCore::isASCIIDigit): Deleted.
(WebCore::isASCIIAlpha): Deleted.
(WebCore::isASCIIAlphanumeric): Deleted.
* platform/URLParser.h:
(WebCore::URLParser::parse):

Tools:

* TestWebKitAPI/Tests/WebCore/URLParser.cpp:
(TestWebKitAPI::s):
(TestWebKitAPI::checkURL):
(TestWebKitAPI::TEST_F):

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

4 years agoAdd support for ShadowRoot.mode attribute
cdumez@apple.com [Wed, 17 Aug 2016 00:25:36 +0000 (00:25 +0000)]
Add support for ShadowRoot.mode attribute
https://bugs.webkit.org/show_bug.cgi?id=160919

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C test now that one more check is passing.

* web-platform-tests/dom/interfaces-expected.txt:

Source/WebCore:

Add support for ShadowRoot.mode attribute:
- https://dom.spec.whatwg.org/#interface-shadowroot

Test: fast/shadow-dom/ShadowRoot-mode.html

* css/ElementRuleCollector.cpp:
(WebCore::ElementRuleCollector::collectMatchingRules):
* css/SelectorChecker.cpp:
(WebCore::SelectorChecker::matchRecursively):
* dom/Element.cpp:
(WebCore::Element::bindingsOffsetParent):
(WebCore::Element::addShadowRoot):
(WebCore::Element::attachShadow):
(WebCore::Element::shadowRootForBindings):
(WebCore::Element::userAgentShadowRoot):
(WebCore::Element::ensureUserAgentShadowRoot):
* dom/Node.cpp:
(WebCore::Node::isUnclosedNode):
(WebCore::Node::assignedSlotForBindings):
(WebCore::Node::isInUserAgentShadowTree):
* dom/ShadowRoot.cpp:
(WebCore::ShadowRoot::ShadowRoot):
(WebCore::ShadowRoot::styleResolver):
* dom/ShadowRoot.h:
* dom/ShadowRoot.idl:
* dom/SlotAssignment.cpp:
(WebCore::SlotAssignment::didChangeSlot):
* html/HTMLSummaryElement.cpp:
(WebCore::HTMLSummaryElement::create):
* inspector/InspectorDOMAgent.cpp:
(WebCore::shadowRootType):
(WebCore::InspectorDOMAgent::buildObjectForNode):
* rendering/HitTestResult.cpp:
(WebCore::moveOutOfUserAgentShadowTree):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::selectionPseudoStyle):
* rendering/RenderLayer.cpp:
(WebCore::rendererForScrollbar):
* svg/SVGElement.cpp:
(WebCore::SVGElement::correspondingUseElement):
* testing/Internals.cpp:
(WebCore::Internals::shadowRootType):

LayoutTests:

Add layout test coverage.

* fast/shadow-dom/ShadowRoot-mode-expected.txt: Added.
* fast/shadow-dom/ShadowRoot-mode.html: Added.

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

4 years agoHeap::collectAllGarbage() should work with JSC_useImmortalObjects=true.
mark.lam@apple.com [Wed, 17 Aug 2016 00:18:43 +0000 (00:18 +0000)]
Heap::collectAllGarbage() should work with JSC_useImmortalObjects=true.
https://bugs.webkit.org/show_bug.cgi?id=160917

Reviewed by Filip Pizlo.

If we do an synchronous GC when JSC_useImmortalObjects=true, we'll get a
RELEASE_ASSERT failure:

    $ JSC_useImmortalObjects=true jsc
    >>> gc()
    Trace/BPT trap: 5

This is because Heap::collectAllGarbage() is doing an explicit sweep of the
MarkedSpace, and the sweeper is expecting to see no RetiredBlocks.  However, we
make objects immortal by retiring their blocks.  As a result, there is a mismatch
in expectancy.

The fix is simply to not run the sweeper when JSC_useImmortalObjects=true.

* heap/Heap.cpp:
(JSC::Heap::collectAllGarbage):

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

4 years agoEnable WebAssembly in the build.
keith_miller@apple.com [Tue, 16 Aug 2016 23:59:19 +0000 (23:59 +0000)]
Enable WebAssembly in the build.
https://bugs.webkit.org/show_bug.cgi?id=160916

Reviewed by Benjamin Poulain.

This patch turns on WebAssembly on all the platforms that support B3.
Turning on WebAssembly by default lets us check the build on every
platform.

* wtf/FeatureDefines.h:

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

4 years agocustomElements.define should retrieve lifecycle callbacks
rniwa@webkit.org [Tue, 16 Aug 2016 23:55:49 +0000 (23:55 +0000)]
customElements.define should retrieve lifecycle callbacks
https://bugs.webkit.org/show_bug.cgi?id=160797

Reviewed by Chris Dumez.

Source/WebCore:

Updated JSCustomElementInterface to invoke Get(constructor, "prototype") and Get(prototype, callbackName)
for each lifecycle callback as required by the latest specification:
https://html.spec.whatwg.org/#dom-customelementsregistry-define

Also added the support for "observedAttributes" property on the custom elements constructor which defines
the list of attributes for which attributeChangedCallback is invoked.

Test: fast/custom-elements/CustomElementsRegistry.html

* bindings/js/JSCustomElementInterface.cpp:
(WebCore::JSCustomElementInterface::setAttributeChangedCallback): Added.
(WebCore::JSCustomElementInterface::attributeChanged): Invoke m_attributeChangedCallback instead of on the
result of Get(element, "attributeChangedCallback").
* bindings/js/JSCustomElementInterface.h:
(WebCore::JSCustomElementInterface::observesAttribute): Added.

* bindings/js/JSCustomElementsRegistryCustom.cpp:
(WebCore::getLifecycleCallback): Added.
(WebCore::JSCustomElementsRegistry::define): Invoke Get(prototype, callbackName) for each callback. Also
store attributedChangedCallback and observedAttributes to JSCustomElementInterface. Other callbacks will
be stored in the future when the support for those callbacks are added.

* dom/Element.cpp:
(WebCore::Element::attributeChanged): Moved more code into enqueueAttributeChangedCallbackIfNeeded.

* dom/LifecycleCallbackQueue.cpp:
(WebCore::LifecycleCallbackQueue::enqueueAttributeChangedCallbackIfNeeded): Added an early exit for when
the given attribute is not observed by the custom element. Also moved the logic to retrieve
JSCustomElementInterface from Element::attributeChanged and renamed it from enqueueAttributeChangedCallback.

* bindings/js/JSDOMBinding.h:
(WebCore::toNativeArray): Throw a TypeError when the argument is not an object.
* bindings/js/JSDOMConvert.h:
(WebCore::Converter<Vector<T>>::convert): Removed a FIXME comment.

LayoutTests:

Added test cases for CustomElementsRegistry.define to make sure it invokes Get(constructor, "prototype")
and Get(prototype, callbackName) for each lifecycle callback.

Also updated the tests to reflect the support for observedAttributes which specifies the list of attributes
for which attributeChangedCallback is invoked.

* fast/custom-elements/CustomElementsRegistry-expected.txt: Renamed from Document-defineElement-expected.txt.
* fast/custom-elements/CustomElementsRegistry.html: Renamed from Document-defineElement.html.
* fast/custom-elements/Document-defineElement-expected.txt: Removed.
* fast/custom-elements/Document-defineElement.html: Removed.
* fast/custom-elements/attribute-changed-callback-expected.txt:
* fast/custom-elements/attribute-changed-callback.html: Added test cases for "observedAttributes".
* fast/custom-elements/lifecycle-callback-timing.html:

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

4 years agoAdd WASM I32 simple operators.
keith_miller@apple.com [Tue, 16 Aug 2016 23:31:38 +0000 (23:31 +0000)]
Add WASM I32 simple operators.
https://bugs.webkit.org/show_bug.cgi?id=160914

Reviewed by Benjamin Poulain.

This patch adds support for the i32 simple binary operators.

* wasm/WASMB3IRGenerator.cpp:
(JSC::WASM::toB3Op):
(JSC::WASM::B3IRGenerator::binaryOp):
* wasm/WASMFunctionParser.h:
(JSC::WASM::WASMFunctionParser<Context>::parseExpression):
* wasm/WASMOps.h:

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

4 years agoFix a thinko.
andersca@apple.com [Tue, 16 Aug 2016 23:05:59 +0000 (23:05 +0000)]
Fix a thinko.

* wtf/Scope.h:

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

4 years agoFix build.
andersca@apple.com [Tue, 16 Aug 2016 23:00:33 +0000 (23:00 +0000)]
Fix build.

* Configurations/WebCore.xcconfig:

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

4 years agoAlign isDefaultNamespace() / lookupPrefix() / lookupNamespaceURI() with the specification
cdumez@apple.com [Tue, 16 Aug 2016 22:56:02 +0000 (22:56 +0000)]
Align isDefaultNamespace() / lookupPrefix() / lookupNamespaceURI() with the specification
https://bugs.webkit.org/show_bug.cgi?id=160911

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

* web-platform-tests/dom/nodes/Node-lookupNamespaceURI-expected.txt:

Source/WebCore:

Align isDefaultNamespace() / lookupPrefix() / lookupNamespaceURI() with the specification:
- https://dom.spec.whatwg.org/#dom-node-isdefaultnamespace
- https://dom.spec.whatwg.org/#dom-node-lookupprefix
- https://dom.spec.whatwg.org/#dom-node-lookupnamespaceuri

Our implementation now matches closely the text of the DOM specification
and we pass more W3C tests as it fixes the following bug:
- isDefaultNamespace(null) / isDefaultNamespace('') was not returning true for in cases
  where the node's default namespace was null. Our implementation was returning false
  instead of comparing the node's default namespace (in this case null) with the input
  namespace (in this case null).

No new tests, rebaselined existing test.

* dom/Node.cpp:
(WebCore::locateDefaultNamespace):
(WebCore::Node::isDefaultNamespace):
(WebCore::Node::lookupNamespaceURI):
(WebCore::locateNamespacePrefix):
(WebCore::Node::lookupPrefix):
(WebCore::appendTextContent): Deleted.
(WebCore::Node::textContent): Deleted.
(WebCore::Node::setTextContent): Deleted.
* dom/Node.h:
* xml/NativeXPathNSResolver.cpp:
(WebCore::NativeXPathNSResolver::lookupNamespaceURI):

LayoutTests:

Drop several outdated tests.

* dom/xhtml/level3/core/nodeisdefaultnamespace03-expected.txt: Removed.
* dom/xhtml/level3/core/nodeisdefaultnamespace03.js: Removed.
* dom/xhtml/level3/core/nodeisdefaultnamespace03.xhtml: Removed.
* dom/xhtml/level3/core/nodelookupnamespaceuri08-expected.txt: Removed.
* dom/xhtml/level3/core/nodelookupnamespaceuri08.js: Removed.
* dom/xhtml/level3/core/nodelookupnamespaceuri08.xhtml: Removed.
* dom/xhtml/level3/core/nodelookupnamespaceuri09-expected.txt: Removed.
* dom/xhtml/level3/core/nodelookupnamespaceuri09.js: Removed.
* dom/xhtml/level3/core/nodelookupnamespaceuri09.xhtml: Removed.

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

4 years ago[iOS WK2] Clean up form select code
simon.fraser@apple.com [Tue, 16 Aug 2016 22:51:27 +0000 (22:51 +0000)]
[iOS WK2] Clean up form select code
https://bugs.webkit.org/show_bug.cgi?id=160915

Reviewed by Enrica Casucci.

Some minor forms-related cleanup:
1. Give WKFormSelectPopover and WKFormSelectPicker their own header files, making
things easier to find.

2. Remove WKContentView *_view member variables from classes which also stored
the view in their base classes.

Sort the project file.

* UIProcess/ios/forms/WKFormPopover.h:
* UIProcess/ios/forms/WKFormPopover.mm:
(-[WKFormRotatingAccessoryPopover accessoryDone]):
(-[WKFormRotatingAccessoryPopover initWithView:]): Deleted.
* UIProcess/ios/forms/WKFormSelectControl.h:
* UIProcess/ios/forms/WKFormSelectControl.mm:
* UIProcess/ios/forms/WKFormSelectPicker.h: Copied from Source/WebKit2/UIProcess/ios/forms/WKFormSelectControl.h.
* UIProcess/ios/forms/WKFormSelectPicker.mm:
* UIProcess/ios/forms/WKFormSelectPopover.h: Copied from Source/WebKit2/UIProcess/ios/forms/WKFormSelectControl.h.
* UIProcess/ios/forms/WKFormSelectPopover.mm:
(-[WKSelectPopover initWithView:hasGroups:]):
* WebKit2.xcodeproj/project.pbxproj:

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

4 years agoPlaceholder does not show the first time going into picture-in-picture on video witho...
adachan@apple.com [Tue, 16 Aug 2016 22:48:58 +0000 (22:48 +0000)]
Placeholder does not show the first time going into picture-in-picture on video without controls
https://bugs.webkit.org/show_bug.cgi?id=160868

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/controls/pip-placeholder-without-video-controls.html

If the media controls script is not injected by the time webkitpresentationmodechanged
event fires, the script that updates the stylesheet to show the placeholder won't execute.

To fix this, doing one of the following would work:
- Ensure the shadow dom for the video is set up when we schedule the
webkitpresentationmodechanged event.
- Make sure the styles are set up correctly to show the placeholder if needed
when the Controller object (in mediaControlsApple.js) is created.

Doing both here following what we did for the wireless playback status.

* Modules/mediacontrols/mediaControlsApple.js:
(Controller):
Call updatePictureInPicturePlaceholder() so it updates the styles to show the
placeholder if needed.
(Controller.prototype.updatePictureInPicturePlaceholder):
Extract the logic that updates the placeholder into a separate method so it can
be called when we initialize Controller.
(Controller.prototype.handlePresentationModeChange):
Call updatePictureInPicturePlaceholder().
* Modules/mediacontrols/mediaControlsiOS.js:
(ControllerIOS.prototype.updatePictureInPicturePlaceholder):
Renamed from handlePresentationModeChange().
(ControllerIOS.prototype.handlePresentationModeChange): Deleted.
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::enterFullscreen):
Call configureMediaControls() which ensures the shadow root gets added if needed.

LayoutTests:

Test that a video without controls attribute does show after going into picture-in-picture.

* TestExpectations:
* media/controls/pip-placeholder-without-video-controls-expected.txt: Added.
* media/controls/pip-placeholder-without-video-controls.html: Added.
* platform/mac-wk2/TestExpectations:

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

4 years agoRename FrameView::m_layoutDisallowed to m_layoutDisallowedCount
simon.fraser@apple.com [Tue, 16 Aug 2016 22:44:21 +0000 (22:44 +0000)]
Rename FrameView::m_layoutDisallowed to m_layoutDisallowedCount
https://bugs.webkit.org/show_bug.cgi?id=160918

Reviewed by Zalan Bujtas.

m_layoutDisallowedCount makes it clearer that it's accumulated.

* page/FrameView.h:

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

4 years agoRename SSLKeyGeneratorMac.cpp to SSLKeyGeneratorMac.mm.
andersca@apple.com [Tue, 16 Aug 2016 22:41:19 +0000 (22:41 +0000)]
Rename SSLKeyGeneratorMac.cpp to SSLKeyGeneratorMac.mm.

Rubber-stamped by Dan Bernstein.

* platform/mac/SSLKeyGeneratorMac.mm: Renamed from platform/mac/SSLKeyGeneratorMac.cpp.

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

4 years agoMigrate line breaking code from ints to Optional<unsigned>s
mmaxfield@apple.com [Tue, 16 Aug 2016 22:39:10 +0000 (22:39 +0000)]
Migrate line breaking code from ints to Optional<unsigned>s
https://bugs.webkit.org/show_bug.cgi?id=160859

Reviewed by Darin Adler.

Source/WebCore:

Previously, we were using -1 to mean "before the beginning of the string". Now,
Nullopt means that.

This patch also renames break_lines.{h,cpp} to BreakLines.{h.cpp}. This file was
originally named during the KHTML days.

No new tests because there is no behavior change.

* CMakeLists.txt:
* WebCore.xcodeproj/project.pbxproj:
* rendering/BreakLines.cpp: Renamed from Source/WebCore/rendering/break_lines.cpp.
* rendering/BreakLines.h: Renamed from Source/WebCore/rendering/break_lines.h.
(WebCore::isBreakableSpace):
(WebCore::shouldBreakAfter):
(WebCore::needsLineBreakIterator):
(WebCore::nextBreakablePositionNonLoosely):
(WebCore::nextBreakablePositionLoosely):
(WebCore::nextBreakablePositionKeepingAllWords):
(WebCore::nextBreakablePositionKeepingAllWordsIgnoringNBSP):
(WebCore::nextBreakablePosition):
(WebCore::nextBreakablePositionIgnoringNBSP):
(WebCore::nextBreakablePositionLoose):
(WebCore::nextBreakablePositionIgnoringNBSPLoose):
(WebCore::isBreakable):
* rendering/InlineIterator.h:
(WebCore::InlineIterator::moveTo):
(WebCore::InlineIterator::nextBreakablePosition):
(WebCore::InlineIterator::setNextBreakablePosition):
(WebCore::InlineIterator::InlineIterator): Deleted.
* rendering/InlineTextBox.cpp:
* rendering/RenderText.cpp:
(WebCore::RenderText::computePreferredLogicalWidths):
* rendering/RenderingAllInOne.cpp:
* rendering/SimpleLineLayoutTextFragmentIterator.h:
* rendering/break_lines.h:
(WebCore::isBreakableSpace): Deleted.
(WebCore::shouldBreakAfter): Deleted.
(WebCore::needsLineBreakIterator): Deleted.
(WebCore::nextBreakablePositionNonLoosely): Deleted.
(WebCore::nextBreakablePositionLoosely): Deleted.
(WebCore::nextBreakablePositionKeepingAllWords): Deleted.
(WebCore::nextBreakablePositionKeepingAllWordsIgnoringNBSP): Deleted.
(WebCore::nextBreakablePosition): Deleted.
(WebCore::nextBreakablePositionIgnoringNBSP): Deleted.
(WebCore::nextBreakablePositionLoose): Deleted.
(WebCore::nextBreakablePositionIgnoringNBSPLoose): Deleted.
(WebCore::isBreakable): Deleted.
* rendering/line/BreakingContext.h:
(WebCore::BreakingContext::commitLineBreakAtCurrentWidth):
(WebCore::BreakingContext::InlineIteratorHistory::nextBreakablePosition):
(WebCore::BreakingContext::InlineIteratorHistory::moveTo):
(WebCore::tryHyphenating):
(WebCore::BreakingContext::handleText):
(WebCore::BreakingContext::optimalLineBreakLocationForTrailingWord):

Source/WebKit/ios:

* Misc/WebUIKitSupport.mm:
(WebKitGetLastLineBreakInBuffer):

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

4 years agoRe-sync imported/w3c/web-platform-tests/dom/ranges/Range-mutations.html with upstream
cdumez@apple.com [Tue, 16 Aug 2016 22:33:32 +0000 (22:33 +0000)]
Re-sync imported/w3c/web-platform-tests/dom/ranges/Range-mutations.html with upstream
https://bugs.webkit.org/show_bug.cgi?id=160903

Reviewed by Ryosuke Niwa.

Re-sync imported/w3c/web-platform-tests/dom/ranges/Range-mutations.html with upstream
after https://github.com/w3c/web-platform-tests/pull/3468.

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

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

4 years agoAdd WTF::ScopeExit
andersca@apple.com [Tue, 16 Aug 2016 22:32:50 +0000 (22:32 +0000)]
Add WTF::ScopeExit
https://bugs.webkit.org/show_bug.cgi?id=160908

Reviewed by Geoffrey Garen.

Source/WTF:

WTF::ScopeExit and WTF::makeScopeExit let you define an object that will invoke a function when the
object goes out of scope. This is going to be used to avoid spagetti-code and gotos in a future patch.

The class is modeled after the LWG paper "P0052 - Generic Scope Guard and RAII Wrapper for the Standard Library".

* WTF.xcodeproj/project.pbxproj:
* wtf/Scope.h: Added.
(WTF::makeScopeExit):

Tools:

* TestWebKitAPI/CMakeLists.txt:
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WTF/Scope.cpp: Added.
(TestWebKitAPI::TEST):

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

4 years agoDOM4: getElementsByClassName should include non StyledElements
cdumez@apple.com [Tue, 16 Aug 2016 22:26:40 +0000 (22:26 +0000)]
DOM4: getElementsByClassName should include non StyledElements
https://bugs.webkit.org/show_bug.cgi?id=94718

Reviewed by Ryosuke Niwa.

Source/WebCore:

getElementsByClassName() now includes non StyledElements as per the latest
DOM specification:
- https://dom.spec.whatwg.org/#concept-getelementsbyclassname

The new behavior is consistent with Firefox and Chrome.

Test: fast/dom/getElementsByClassName/non-styled-element.html

* dom/ClassCollection.h:
(WebCore::ClassCollection::elementMatches):

LayoutTests:

* fast/dom/getElementsByClassName/011-expected.txt: Removed.
* fast/dom/getElementsByClassName/011.xml: Removed.
Drop outdated test. It is failing in Firefox and Chrome.

* fast/dom/getElementsByClassName/non-styled-element-expected.txt: Added.
* fast/dom/getElementsByClassName/non-styled-element.html: Added.
Add layout test coverage.

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

4 years agoEWS logs file are rotated too quickly
aakash_jain@apple.com [Tue, 16 Aug 2016 22:24:23 +0000 (22:24 +0000)]
EWS logs file are rotated too quickly
https://bugs.webkit.org/show_bug.cgi?id=160724

Reviewed by Daniel Bates.

Currently we are rotating the log file after 10 iterations of queue. If the queue
doesn't have any pending patches, these iterations result in very small amount of
logs (1 KB log file). Even if the queue process some patches, logs are few KBs.
This results in a lot of log files in a day. This patch ensures that we rotate the
log file when its file size is greater than or equal to 100 KB.

* EWSTools/start-queue-mac.sh: Added check for file size before rotating log file.

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

4 years agoWKSI static library should be named by major iOS revision, not individual updates
dbates@webkit.org [Tue, 16 Aug 2016 22:20:05 +0000 (22:20 +0000)]
WKSI static library should be named by major iOS revision, not individual updates
https://bugs.webkit.org/show_bug.cgi?id=160727
<rdar://problem/22274848>

Reviewed by Alexey Proskuryakov.

Source/WebKit/mac:

* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
* Configurations/WebKitLegacy.xcconfig:

Source/WebKit2:

* Configurations/Base.xcconfig:
* Configurations/BaseTarget.xcconfig:
* Configurations/DebugRelease.xcconfig:

Tools:

* DumpRenderTree/mac/Configurations/Base.xcconfig:
* DumpRenderTree/mac/Configurations/DebugRelease.xcconfig:
* Scripts/copy-webkitlibraries-to-product-directory:
* WebKitTestRunner/Configurations/Base.xcconfig:
* WebKitTestRunner/Configurations/DebugRelease.xcconfig:

WebKitLibraries:

* libWebKitSystemInterfaceIOSDevice9.0.a: Removed.
* libWebKitSystemInterfaceIOSDevice9.2.a: Removed.
* libWebKitSystemInterfaceIOSDevice9.a: Renamed from WebKitLibraries/libWebKitSystemInterfaceIOSDevice9.3.a.
* libWebKitSystemInterfaceIOSSimulator9.0.a: Removed.
* libWebKitSystemInterfaceIOSSimulator9.2.a: Removed.
* libWebKitSystemInterfaceIOSSimulator9.a: Renamed from WebKitLibraries/libWebKitSystemInterfaceIOSSimulator9.3.a.

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

4 years agoMake it possible to test iOS select elements, and add iPhone and iPad tests for them
simon.fraser@apple.com [Tue, 16 Aug 2016 22:15:47 +0000 (22:15 +0000)]
Make it possible to test iOS select elements, and add iPhone and iPad tests for them
https://bugs.webkit.org/show_bug.cgi?id=160909

Reviewed by Enrica Casucci.

Source/WebKit2:

Hook up form-related UIScriptController functions, and plumb through the various
<select> pickers the ability to select a row.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView dismissFormAccessoryView]):
(-[WKWebView selectFormAccessoryPickerRow:]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView selectFormAccessoryPickerRow:]):
* UIProcess/ios/forms/WKFormSelectControl.h:
* UIProcess/ios/forms/WKFormSelectControl.mm:
(-[WKFormSelectControl selectRow:inComponent:extendingSelection:]):
* UIProcess/ios/forms/WKFormSelectPicker.mm:
(-[WKMultipleSelectPicker selectRow:inComponent:extendingSelection:]):
(-[WKSelectSinglePicker selectRow:inComponent:extendingSelection:]):
* UIProcess/ios/forms/WKFormSelectPopover.mm:
(-[WKSelectPopover selectRow:inComponent:extendingSelection:]):

Tools:

Add functions to UIScriptController to dismiss the form accessory view for iOS,
and to programmatically pick a row from a <select> picker.

* WebKitTestRunner/UIScriptContext/Bindings/UIScriptController.idl:
* WebKitTestRunner/UIScriptContext/UIScriptController.cpp:
(WTR::UIScriptController::dismissFormAccessoryView):
(WTR::UIScriptController::selectFormAccessoryPickerRow):
* WebKitTestRunner/UIScriptContext/UIScriptController.h:
* WebKitTestRunner/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptController::dismissFormAccessoryView):
(WTR::UIScriptController::selectFormAccessoryPickerRow):

LayoutTests:

Add iPhone and iPad tests for the <select> pickers. The iPhone test has to
use a didShowKeyboardCallback to know when to select the appropriate row,
and to dismiss the picker. The iPad test can just select the row, which also
dismisses the popover.

* fast/forms/ios/choose-select-option-expected.txt: Added.
* fast/forms/ios/choose-select-option.html: Added.
* fast/forms/ios/ipad/choose-select-option-expected.txt: Added.
* fast/forms/ios/ipad/choose-select-option.html: Added.

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

4 years agoCleanup WK2 platform gamepad handling.
beidson@apple.com [Tue, 16 Aug 2016 21:44:25 +0000 (21:44 +0000)]
Cleanup WK2 platform gamepad handling.
https://bugs.webkit.org/show_bug.cgi?id=160871

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (No currently testable change in behavior).

This patch does a few things:
1 - Separates the concepts of "monitoring gamepads" and "monitoring gamepad inputs"
2 - Uses this new concept to much more cleanly handle the case where we are not currently
    monitoring gamepad inputs because an interested WKWebView is not front and center.
3 - Pre-populates the "initial set of gamepads" in WebProcesses that start listening for gamepads.

* platform/gamepad/GamepadProviderClient.h:
(WebCore::GamepadProviderClient::setInitialConnectedGamepads):

* platform/gamepad/mac/HIDGamepadProvider.cpp:
(WebCore::HIDGamepadProvider::HIDGamepadProvider):
(WebCore::HIDGamepadProvider::stopMonitoringInput):
(WebCore::HIDGamepadProvider::startMonitoringInput):
(WebCore::HIDGamepadProvider::connectionDelayTimerFired):
* platform/gamepad/mac/HIDGamepadProvider.h:

Source/WebKit2:

This patch does a few things:
1 - Separates the concepts of "monitoring gamepads" and "monitoring gamepad inputs"
2 - Uses this new concept to much more cleanly handle the case where we are not currently
    monitoring gamepad inputs because an interested WKWebView is not front and center.
3 - Pre-populates the "initial set of gamepads" in WebProcesses that start listening for gamepads.

* Platform/Logging.h:

* UIProcess/Gamepad/UIGamepadProvider.cpp:
(WebKit::UIGamepadProvider::gamepadSyncTimerFired):
(WebKit::UIGamepadProvider::setInitialConnectedGamepads):
(WebKit::UIGamepadProvider::processPoolStoppedUsingGamepads):
(WebKit::UIGamepadProvider::viewBecameActive):
(WebKit::UIGamepadProvider::viewBecameInactive):
(WebKit::UIGamepadProvider::stopMonitoringGamepads):
(WebKit::UIGamepadProvider::snapshotGamepads):
(WebKit::UIGamepadProvider::platformStopMonitoringInput):
(WebKit::UIGamepadProvider::platformStartMonitoringInput):
(WebKit::UIGamepadProvider::UIGamepadProvider): Deleted.
(WebKit::UIGamepadProvider::scheduleDisableGamepadMonitoring): Deleted.
(WebKit::UIGamepadProvider::disableMonitoringTimerFired): Deleted.
* UIProcess/Gamepad/UIGamepadProvider.h:

* UIProcess/Gamepad/mac/UIGamepadProviderHID.cpp:
(WebKit::UIGamepadProvider::platformStopMonitoringInput):
(WebKit::UIGamepadProvider::platformStartMonitoringInput):

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

* WebProcess/Gamepad/WebGamepadProvider.cpp:
(WebKit::WebGamepadProvider::setInitialGamepads):
* WebProcess/Gamepad/WebGamepadProvider.h:

* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::setInitialGamepads):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:

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

4 years ago[iOS] Add iPad viewport and form tests, and revert the iPad-testing part of r202132
simon.fraser@apple.com [Tue, 16 Aug 2016 21:18:44 +0000 (21:18 +0000)]
[iOS] Add iPad viewport and form tests, and revert the iPad-testing part of r202132
https://bugs.webkit.org/show_bug.cgi?id=160878

Reviewed by Tim Horton.
Source/WebKit2:

Remove testing-specific "forceIPadStyleZoomOnInputFocus" behavior added in r202132
now that we have the ability to run tests in the iPad simulator.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView forceIPadStyleZoomOnInputFocus]): Deleted.
(-[WKWebView setForceIPadStyleZoomOnInputFocus:]): Deleted.
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _displayFormNodeInputView]):
(-[WKContentView requiresAccessoryView]):
(-[WKContentView inputAccessoryView]):
(-[WKContentView requiresAccessoryView:]): Deleted.
(-[WKContentView forceIPadStyleZoomOnInputFocus]): Deleted.
(-[WKContentView setForceIPadStyleZoomOnInputFocus:]): Deleted.

Tools:

Remove testing-specific "forceIPadStyleZoomOnInputFocus" behavior added in r202132
now that we have the ability to run tests in the iPad simulator.

* WebKitTestRunner/UIScriptContext/Bindings/UIScriptController.idl:
* WebKitTestRunner/UIScriptContext/UIScriptController.cpp:
(WTR::UIScriptController::forceIPadStyleZoomOnInputFocus): Deleted.
(WTR::UIScriptController::setForceIPadStyleZoomOnInputFocus): Deleted.
* WebKitTestRunner/UIScriptContext/UIScriptController.h:
* WebKitTestRunner/ios/TestControllerIOS.mm:
(WTR::TestController::platformResetStateToConsistentValues): Deleted.
* WebKitTestRunner/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptController::forceIPadStyleZoomOnInputFocus): Deleted.
(WTR::UIScriptController::setForceIPadStyleZoomOnInputFocus): Deleted.

LayoutTests:

Move forms/ios/focus-input-via-button-ipad.html into fast/forms/ios/ipad, making it
an iPad test, which allows for the removal of the "useIPadBehavior" flag.

Add fast/viewport/ios/ipad/width-is-device-width.html with iPad-specific results.

* fast/forms/ios/ipad/focus-input-via-button-expected.txt: Renamed from LayoutTests/fast/forms/ios/focus-input-via-button-ipad-expected.txt.
* fast/forms/ios/ipad/focus-input-via-button.html: Renamed from LayoutTests/fast/forms/ios/focus-input-via-button-ipad.html.
* fast/forms/ios/resources/zooming-test-utils.js:
(testZoomAfterTap):
* fast/viewport/ios/ipad/width-is-device-width-expected.txt: Added.
* fast/viewport/ios/ipad/width-is-device-width.html: Added.
* platform/ios-simulator-wk2/TestExpectations: Enable fast/viewport/ios, because leaving
them skipped from the base TestExpectations is evil.

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

4 years agoquerySelector() / querySelectorAll() should always throw a SyntaxError when failing...
cdumez@apple.com [Tue, 16 Aug 2016 20:58:00 +0000 (20:58 +0000)]
querySelector() / querySelectorAll() should always throw a SyntaxError when failing to parse selector string
https://bugs.webkit.org/show_bug.cgi?id=160906

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline several W3C tests now that more checks are passing.

* web-platform-tests/dom/nodes/Element-matches-expected.txt:
* web-platform-tests/dom/nodes/ParentNode-querySelector-All-expected.txt:
* web-platform-tests/dom/nodes/ParentNode-querySelector-All-xht-expected.txt:

Source/WebCore:

querySelector() / querySelectorAll() should always throw a SyntaxError
when failing to parse selector string:
- https://dom.spec.whatwg.org/#dom-parentnode-queryselector
- https://dom.spec.whatwg.org/#scope-match-a-selectors-string

In some cases, WebKit was throwing a NamespaceError instead.

No new tests, rebaselined existing tests.

* dom/SelectorQuery.cpp:
(WebCore::SelectorQueryCache::add):

LayoutTests:

Rebaseline several layout tests now that we throw a different exception type.

* fast/css/parsing-css-attribute-case-insensitive-value-1-expected.txt:
* fast/css/parsing-css-attribute-case-insensitive-value-2-expected.txt:
* fast/dom/SelectorAPI/not-supported-namespace-in-selector-expected.txt:

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

4 years agoUpgrade-Insecure-Request state is improperly retained between navigations
bfulgham@apple.com [Tue, 16 Aug 2016 20:32:57 +0000 (20:32 +0000)]
Upgrade-Insecure-Request state is improperly retained between navigations
https://bugs.webkit.org/show_bug.cgi?id=160905
<rdar://problem/27075526>

Reviewed by Andy Estes.

Source/WebCore:

Correct the handling of Upgrade-Insecure-Request state to match the specification, so that
performing top-level navigation to sites that do not have the Upgrade-Insecure-Request header
does not automatically upgrade insecure loads. The same loads performed in an iframe should
be upgraded.

The iframe case was already handled in our tests, but a new test is added that models the top-level
navigation and confirms that an upgrade is not performed.

Tests: http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/proper-uir-on-navigation.html

* dom/Document.cpp:
(WebCore::Document::initContentSecurityPolicy): Properly inherit Upgrade-Insecure-Request state for children
of existing frames.
* loader/DocumentWriter.cpp:
(WebCore::DocumentWriter::begin): Retain the history of upgraded resources (per the specification) so that
we continue to upgrade resources that were upgraded during earlier navigations. Note that we do NOT want to
retain the state of the Upgrade-Insecure-Requests header itself.
* page/csp/ContentSecurityPolicy.cpp:
(WebCore::ContentSecurityPolicy::copyStateFrom): Update to use new helper function.
(WebCore::ContentSecurityPolicy::copyUpgradeInsecureRequestStateFrom): New helper function.
* page/csp/ContentSecurityPolicy.h:

LayoutTests:

* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/proper-uir-on-navigation-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/proper-uir-on-navigation.html: Added.
* http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/resources/insecure-site.html: Added.

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

4 years agoWeb Inspector: DOM nodes shift when hovering over them in Console
nvasilyev@apple.com [Tue, 16 Aug 2016 19:57:00 +0000 (19:57 +0000)]
Web Inspector: DOM nodes shift when hovering over them in Console
https://bugs.webkit.org/show_bug.cgi?id=160789
<rdar://problem/27815600>

Reviewed by Matt Baker.

* UserInterface/Views/FormattedValue.css:
(.formatted-node > .tree-outline.dom ol): Deleted.

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

4 years agoAdd an address-of operator to RetainPtr
andersca@apple.com [Tue, 16 Aug 2016 19:29:35 +0000 (19:29 +0000)]
Add an address-of operator to RetainPtr
https://bugs.webkit.org/show_bug.cgi?id=160879

Reviewed by Tim Horton.

Source/WTF:

This will make some security-related code from WebKitSystemInterface easier to port.

* wtf/HashIterators.h:
(WTF::HashTableValuesIterator::get):
* wtf/HashTable.h:
(WTF::HashTableBucketInitializer<true>::initialize):
Use std::addressof instead of &, in case & is overloaded.

* wtf/RetainPtr.h:
(WTF::RetainPtr::operator&):
Implement this.

Tools:

Test HashMap and HashSet with an object whose operator& is deleted.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
Sort the Xcode project.

* TestWebKitAPI/Tests/WTF/DeletedAddressOfOperator.h: Added.
(DeletedAddressOfOperator::DeletedAddressOfOperator):
(DeletedAddressOfOperator::value):
(DeletedAddressOfOperator::operator==):
(WTF::HashTraits<DeletedAddressOfOperator>::constructDeletedValue):
(WTF::HashTraits<DeletedAddressOfOperator>::isDeletedValue):
(WTF::DefaultHash<DeletedAddressOfOperator>::Hash::hash):
(WTF::DefaultHash<DeletedAddressOfOperator>::Hash::equal):
* TestWebKitAPI/Tests/WTF/HashMap.cpp:
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WTF/HashSet.cpp:
(TestWebKitAPI::TEST):

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

4 years agoWeb Inspector: Data grid has a double left border when the first column is hidden
nvasilyev@apple.com [Tue, 16 Aug 2016 19:25:57 +0000 (19:25 +0000)]
Web Inspector: Data grid has a double left border when the first column is hidden
https://bugs.webkit.org/show_bug.cgi?id=160723
<rdar://problem/27778081>

Reviewed by Timothy Hatcher.

This patch exploits the fact hiding columns that aren't first in DataGrid don't create double
borders.

* UserInterface/Views/DataGrid.css:
(.data-grid table.header,):
(.data-grid :matches(th, td):first-child):
(@media (-webkit-min-device-pixel-ratio: 2)):
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype._setTypeTokenAnnotatorEnabledState):

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

4 years agoctx.drawImage should clip source rect if it is outside the source image
cdumez@apple.com [Tue, 16 Aug 2016 19:08:58 +0000 (19:08 +0000)]
ctx.drawImage should clip source rect if it is outside the source image
https://bugs.webkit.org/show_bug.cgi?id=160804

Reviewed by Simon Fraser.

Source/WebCore:

According to the specification [1]"
"When the source rectangle is outside the source image, the source rectangle
must be clipped to the source image and the destination rectangle must be
clipped in the same proportion."

Firefox and Chrome behave according to the specification. This patch aligns
our behavior.

[1] https://html.spec.whatwg.org/multipage/scripting.html#dom-context-2d-drawimage

Test: fast/canvas/drawImage-srcRect-clipping.html

* html/canvas/CanvasRenderingContext2D.cpp:
(WebCore::CanvasRenderingContext2D::drawImage):

LayoutTests:

Add layout test coverage.

* fast/canvas/drawImage-srcRect-clipping-expected.html: Added.
* fast/canvas/drawImage-srcRect-clipping.html: Added.

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

4 years ago⛱ : Implement parsing of Media Constraints for getUserMedia algorithm in Media Captur...
commit-queue@webkit.org [Tue, 16 Aug 2016 19:04:06 +0000 (19:04 +0000)]
⛱ : Implement parsing of Media Constraints for getUserMedia algorithm in Media Capture and Streaming Spec
https://bugs.webkit.org/show_bug.cgi?id=160533
<rdar://problem/27688483>

Patch by George Ruan <gruan@apple.com> on 2016-08-16
Reviewed by Chris Dumez.

Source/WebCore:

Two getUserMedia tests have been updated to reflect changes and cover limited
testing of the parsing of media constraints when given to getUserMedia().
Current testing infrastructure doesn't support full testing of the parsing
of media constraints. Either a mock needs to be created or the selectSettings()
algorithm will need to be implemented so we can see the constraints reflected
by the settings of media stream tracks. See https://bugs.webkit.org/show_bug.cgi?id=160791.

The specification on media constraints and how they are provided to getUserMedia() and
applyConstraints() has changed. These constraints are parsed in the bindings and are
stored in a new class MediaConstraint with derived classes LongConstraint, DoubleConstraint,
BooleanConstraint, and StringConstraint, each holding their respective type of constraint
value.

* CMakeLists.txt: Add JSMediaDevicesCustom.cpp and MediaConstraints.cpp.
* Modules/mediastream/CaptureDeviceManager.cpp:
(CaptureDeviceManager::verifyConstraintsForMediaType): Make changes according
to how format of MediaConstraint was changed.
(CaptureDeviceManager::sessionSupportsConstraint): Ditto.
(CaptureDeviceManager::isSupportedFrameRate): Ditto. Also for the time being
support constraint validation with a static acceptable frame rate range of 0-60.
See relevant https://bugs.webkit.org/show_bug.cgi?id=160794 for supporting
constraint validation of frame rate dynamically.
* Modules/mediastream/CaptureDeviceManager.h: Make changes according to how
format of MediaConstraint was changed.
* Modules/mediastream/MediaConstraintsImpl.cpp: Remove code for parsing media
constraints in the legacy format with keys 'mandatory' and 'optional'. Removal
of legacy code is fine since MEDIA_STREAM feature flag is not enabled for any port.
(WebCore::MediaConstraintsImpl::create): Ditto
(WebCore::MediaConstraintsImpl::initialize): Still used by applyConstraints().
Added FIXME to remove after applyConstraints implementation is changed according
to w3c spec changes.
(WebCore::MediaConstraintsImpl::mandatoryConstraints): Make changes according to
how media constraint data is now stored.
(WebCore::MediaConstraintsImpl::advancedConstraints): Ditto.
(WebCore::MediaConstraintsImpl::getMandatoryConstraints): Deleted.
(WebCore::MediaConstraintsImpl::getOptionalConstraints): Deleted.
(WebCore::MediaConstraintsImpl::getMandatoryConstraintValue): Deleted.
(WebCore::MediaConstraintsImpl::getOptionalConstraintValue): Deleted.
* Modules/mediastream/MediaConstraintsImpl.h:
(WebCore::MediaConstraintsImpl::MediaConstraintsImpl): Add a constructor to allow
construction of MediaConstraintsImpl object based on how the custom binding code
for MediaDevices would parse the media constraints given to getUserMedia().
* Modules/mediastream/MediaDevices.cpp:
(WebCore::MediaDevices::getUserMedia): Make changes according to how media constraint
data is now stored.
* Modules/mediastream/MediaDevices.h: Ditto.
* Modules/mediastream/MediaDevices.idl: Add custom binding to parse media constraints,
since we do not have support for automatic binding generation of sequence of dictionaries,
dictionary inheritance, dictionaries inside of dictionaries, disjunctions, or dictionaries
without an interface.
* Modules/mediastream/MediaStreamTrack.cpp: Add FIXME with related bug.
(WebCore::MediaStreamTrack::applyConstraints): Ditto.
* Modules/mediastream/UserMediaRequest.cpp: Make changes according to how media constraint
data is now parsed and stored.
(WebCore::UserMediaRequest::start): Ditto.
(WebCore::UserMediaRequest::UserMediaRequest): Ditto.
(WebCore::UserMediaRequest::didCreateStream): Ditto.
(WebCore::parseOptions): Deleted.
* Modules/mediastream/UserMediaRequest.h: Ditto.
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSBindingsAllInOne.cpp: Added JSMediaDevicesCustom.cpp.
* bindings/js/JSMediaDevicesCustom.cpp: Added. Custom bindings to parse media constraints.
(WebCore::initializeStringConstraintWithList): Initialize string constraint 'exact' or 'ideal'
value according to an ArrayValue.
(WebCore::createStringConstraint): Given a dictionary acting as a 'MediaTrackConstraintSet'
and a string constraint key (e.g for facingMode), creates a native StringConstraint class to hold
the data.
(WebCore::createBooleanConstraint): Ditto but for constraints of type boolean.
(WebCore::createDoubleConstraint): Ditto but for constraints of type double.
(WebCore::createIntConstraint): Ditto but for constraints of type long.
(WebCore::parseMediaTrackConstraintSetForKey): Parses a given dictionary acting as a
'MediaTrackConstraintSet' for a constraint as the key and creates the correct native object to hold
the data.
(WebCore::parseAdvancedConstraints): Parses the advanced constraints.
(WebCore::parseConstraints): Parses the constraints of a Dictionary acting as a
'MediaTrackConstraints'.
(WebCore::JSMediaDevices::getUserMedia): Parses the constraint input to getUserMedia.
* platform/mediastream/MediaConstraints.cpp: Added. Add MediaConstraint classes with derived
classes IntConstraint, DoubleConstraint, BooleanConstraint, and StringConstraint to act as
containers for the parsed data from getUserMedia().
(WebCore::MediaConstraint::create): Factory that creates the correct derived class based on the
name of a media constraint.
(WebCore::MediaConstraint::getMin): Interface for getting the min value for a constraint.
ASSERT checks are in place to prevent calling getMin with the incorrect constraint type.
(WebCore::MediaConstraint::getMax): Ditto but for max value of constraint.
(WebCore::MediaConstraint::getExact): Ditto but for exact value of constraint.
(WebCore::MediaConstraint::getIdeal): Ditto but for ideal value of constraint.
(WebCore::IntConstraint::create): Creates a long constraint.
(WebCore::IntConstraint::setMin): Sets min value of constraint.
(WebCore::IntConstraint::setMax): Sets max value of constraint.
(WebCore::IntConstraint::setExact): Sets exact value of constraint.
(WebCore::IntConstraint::setIdeal): Sets ideal value of constraint.
(WebCore::IntConstraint::getMin): Overrides interface function and gets min value of constraint.
(WebCore::IntConstraint::getMax): Ditto but for max value of constraint.
(WebCore::IntConstraint::getExact): Ditto but for exact value of constraint.
(WebCore::IntConstraint::getIdeal): Ditto but for ideal value of constraint.
(WebCore::DoubleConstraint::create): Ditto, DoubleConstraint instead of IntConstraint.
(WebCore::DoubleConstraint::setMin): Ditto.
(WebCore::DoubleConstraint::setMax): Ditto.
(WebCore::DoubleConstraint::setExact): Ditto.
(WebCore::DoubleConstraint::setIdeal): Ditto.
(WebCore::DoubleConstraint::getMin): Ditto.
(WebCore::DoubleConstraint::getMax): Ditto.
(WebCore::DoubleConstraint::getExact): Ditto.
(WebCore::DoubleConstraint::getIdeal): Ditto.
(WebCore::BooleanConstraint::create): Ditto, BooleanConstraint instead of IntConstraint.
(WebCore::BooleanConstraint::setExact): Ditto.
(WebCore::BooleanConstraint::setIdeal): Ditto.
(WebCore::BooleanConstraint::getExact): Ditto.
(WebCore::BooleanConstraint::getIdeal): Ditto.
(WebCore::StringConstraint::create): Ditto, StringConstraint instead of IntConstraint.
(WebCore::StringConstraint::setExact): Ditto.
(WebCore::StringConstraint::appendExact): Appends string to 'exact' value of StringConstraint.
(WebCore::StringConstraint::setIdeal): Ditto.
(WebCore::StringConstraint::appendIdeal): Appends string to 'ideal' value of StringConstraint.
(WebCore::StringConstraint::getExact): Ditto.
(WebCore::StringConstraint::getIdeal): Ditto.
* platform/mediastream/MediaConstraints.h: Add MediaConstraint classes with derived
classes IntConstraint, DoubleConstraint, BooleanConstraint, and StringConstraint to act as
containers for the parsed data from getUserMedia().
(WebCore::MediaConstraint::~MediaConstraint):
(WebCore::MediaConstraint::name): Get name of constraint.
(WebCore::MediaConstraint::MediaConstraint): Constructor.
(WebCore::NumericConstraint::NumericConstraint): Base class of DoubleConstraint and IntConstraint.
(WebCore::NumericConstraint::setHasMin): Sets whether object has min vlaue.
(WebCore::NumericConstraint::setHasMax): Ditto but for max.
(WebCore::NumericConstraint::setHasExact): Ditto but for exact.
(WebCore::NumericConstraint::setHasIdeal): Ditto but for ideal.
(WebCore::NumericConstraint::hasMin): Gets whether object has min value.
(WebCore::NumericConstraint::hasMax): Ditto but for max.
(WebCore::NumericConstraint::hasExact): Ditto but for exact.
(WebCore::NumericConstraint::hasIdeal): Ditto but for ideal.
* platform/mediastream/RealtimeMediaSourceCenter.h: Parameters can be reference since
lifetime is guaranteed and ownership is not taken.
* platform/mediastream/mac/AVCaptureDeviceManager.h: Ditto.
* platform/mediastream/mac/AVCaptureDeviceManager.mm: Ditto.
(WebCore::AVCaptureDeviceManager::verifyConstraintsForMediaType): Ditto.
(WebCore::AVCaptureDeviceManager::sessionSupportsConstraint): Make changes according to
how media constraint data is stored.
(WebCore::AVCaptureDeviceManager::createMediaSourceForCaptureDeviceWithConstraints):
Ditto.
(WebCore::AVCaptureDeviceManager::isSupportedFrameRate): Ditto.
* platform/mediastream/mac/AVVideoCaptureSource.h: Change frame rate from 'float' to 'double'.
* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::setFrameRateConstraint): Ditto.
(WebCore::AVVideoCaptureSource::applyConstraints): Make changes according to how media constraint
data is stored. The implementation of applyConstraints has also drastically changed, and a FIXME
is associated.
* platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
(WebCore::RealtimeMediaSourceCenterMac::validateRequestConstraints):
The bindings will always pass a non-null MediaConstraints object to
getUserMedia() so a pointer MediaConstraints parameter is not necessary.
(WebCore::RealtimeMediaSourceCenterMac::createMediaStream): Ditto.
* platform/mediastream/mac/RealtimeMediaSourceCenterMac.h: Change 'override' to 'final'
since RealtimeMediaSourceCenterMac is a 'final' class.
* platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.cpp: Ditto to
RealtimeMediaSourceCenterMac.
(WebCore::RealtimeMediaSourceCenterOwr::createMediaStream): Ditto.
(WebCore::RealtimeMediaSourceCenterOwr::validateRequestConstraints):
* platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.h: Ditto.
* platform/mock/MediaConstraintsMock.cpp: Change how constraint validation is mocked.
(WebCore::isLongMediaConstraintSatisfiable): Sets arbitrary min and max supported value to be 0 and 10,
respectively. Then checks if constraint is satisfiable.
(WebCore::isDoubleMediaConstraintSatisfiable): Ditto but with double.
(WebCore::isBooleanMediaConstraintSatisfiable): Mock a boolean constraint to only be satisfiable if the
'exact' value is true.
(WebCore::isStringMediaConstraintSatisfiable): Mock a string constraint to only be satisfiable if the
'exact' value has the string 'valid'
(WebCore::isSatisfiable): Checks if a certain constraint is satisfiable.
(WebCore::MediaConstraintsMock::verifyConstraints): Verifies if the constraints are satisfiable.
(WebCore::isSupported): Deleted.
(WebCore::isValid): Deleted.
* platform/mock/MediaConstraintsMock.h: Change argument of MediaConstraints to raw pointer.
* platform/mock/MockRealtimeMediaSourceCenter.cpp: Change arguments of MediaConstraints to a raw pointer
and make changes according to how the MediaConstraint was changed.
(WebCore::MockRealtimeMediaSourceCenter::validateRequestConstraints):
(WebCore::MockRealtimeMediaSourceCenter::createMediaStream):
* platform/mock/MockRealtimeMediaSourceCenter.h: Change argument of MediaConstraints to raw pointer.

LayoutTests:

Implementation of parsing of media constraints passed to getUserMedia has changed to meet
the current w3c standards. Three major changes have been introduced
- If the parameter in getUserMedia is missing a TypeError is thrown, according to the IDL spec
- Given a Dictionary value with neither 'audio' nor 'video' keys having dictionary values
or 'true', the promise is rejected with a TypeError
- If the constraints cannot be satisfied the promise is rejected with a DataError. This should
be changed to an OverConstrainedError in the future. See
https://bugs.webkit.org/show_bug.cgi?id=160790

* fast/mediastream/MediaDevices-getUserMedia-expected.txt:
* fast/mediastream/MediaDevices-getUserMedia.html: Added limited testing of parsing of
media constraints for getUserMedia(), this includes only testing of mandatory constraints
and whether the promise is rejected if the constraints cannot be satisfied.
* fast/mediastream/getusermedia-expected.txt:
* fast/mediastream/getusermedia.html: As format of media constraints have changed, the test
has been updated to reflect those changes.

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

4 years agoFix WinCairo build after r204512.
achristensen@apple.com [Tue, 16 Aug 2016 18:11:55 +0000 (18:11 +0000)]
Fix WinCairo build after r204512.

* platform/network/curl/SocketStreamHandleImpl.h:
* platform/network/curl/SocketStreamHandleImplCurl.cpp:
(WebCore::createCopy):
(WebCore::SocketStreamHandleImpl::createCopy): Deleted.

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

4 years agoFalse crashes in fast/text/emoji-gender-* tests
commit-queue@webkit.org [Tue, 16 Aug 2016 18:03:38 +0000 (18:03 +0000)]
False crashes in fast/text/emoji-gender-* tests
https://bugs.webkit.org/show_bug.cgi?id=160779

Patch by Jonathan Bedard <jbedard@apple.com> on 2016-08-16
Reviewed by Alexey Proskuryakov.

Fix from <rdar://problem/27786762>, where timed out tests falsely report as crashed.

* Scripts/webkitpy/port/driver.py:
(Driver._check_for_driver_crash_or_unresponsiveness): Change call to ‘write’ to disable crash flag.
* Scripts/webkitpy/port/driver_unittest.py: Added 3 variable to test version of ‘write.’
* Scripts/webkitpy/port/server_process.py:
(ServerProcess.write): Allow caller to disable crash flag on exception.

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

4 years agoWeb Inspector: Do not request Scope Chain lists if section is collapsed (mainly Globa...
commit-queue@webkit.org [Tue, 16 Aug 2016 17:26:16 +0000 (17:26 +0000)]
Web Inspector: Do not request Scope Chain lists if section is collapsed (mainly Global Variables)
https://bugs.webkit.org/show_bug.cgi?id=140567
<rdar://problem/19504745>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-08-16
Reviewed by Timothy Hatcher.

* UserInterface/Main.html:
New file name.

* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.fillSection):
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshProperties):
Avoid fetching object properties until the user expands the section.

* UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
(WebInspector.ScopeChainDetailsSidebarPanel.prototype._generateCallFramesSection):
(WebInspector.ScopeChainDetailsSidebarPanel.prototype._generateWatchExpressionsSection):
Avoid fetching scope variable properties until the user expands the section.

* UserInterface/Views/ObjectPropertiesDetailSectionRow.js: Renamed from Source/WebInspectorUI/UserInterface/Views/DetailsSectionPropertiesRow.js.
(WebInspector.ObjectPropertiesDetailSectionRow):
(WebInspector.ObjectPropertiesDetailSectionRow.prototype.get objectTree):
(WebInspector.ObjectPropertiesDetailSectionRow.prototype._detailsSectionCollapsedStateChanged):
Rename and simplify the class since it always has an ObjectTreeView.
By default the section will auto-expand the ObjectTreeView, however
if provided a details section group, it will defer expanion until
the group expands.

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

4 years agoClean up WebSockets
achristensen@apple.com [Tue, 16 Aug 2016 17:14:42 +0000 (17:14 +0000)]
Clean up WebSockets
https://bugs.webkit.org/show_bug.cgi?id=160889

Reviewed by Darin Adler.

Source/WebCore:

We should use size_t's instead of ints for data lengths.
SocketStreamHandleClient is now purely virtual.
A few places that will need SocketStreamHandleImpls instead of SocketStreamHandles now have them.
This patch doesn't change behavior.

* Modules/websockets/WebSocketChannel.cpp:
(WebCore::WebSocketChannel::didCloseSocketStream):
(WebCore::WebSocketChannel::didReceiveSocketStreamData):
* Modules/websockets/WebSocketChannel.h:
* platform/network/SocketStreamHandle.cpp:
(WebCore::SocketStreamHandle::state):
(WebCore::SocketStreamHandle::send):
* platform/network/SocketStreamHandle.h:
(WebCore::SocketStreamHandle::~SocketStreamHandle):
(WebCore::SocketStreamHandle::bufferedAmount):
(WebCore::SocketStreamHandle::client): Deleted.
* platform/network/SocketStreamHandleClient.h:
(WebCore::SocketStreamHandleClient::~SocketStreamHandleClient):
(WebCore::SocketStreamHandleClient::didOpenSocketStream): Deleted.
(WebCore::SocketStreamHandleClient::didCloseSocketStream): Deleted.
(WebCore::SocketStreamHandleClient::didReceiveSocketStreamData): Deleted.
(WebCore::SocketStreamHandleClient::didUpdateBufferedAmount): Deleted.
(WebCore::SocketStreamHandleClient::didFailSocketStream): Deleted.
* platform/network/cf/SocketStreamHandleImpl.h:
(WebCore::SocketStreamHandleImpl::create):
* platform/network/cf/SocketStreamHandleImplCFNet.cpp:
(WebCore::SocketStreamHandleImpl::~SocketStreamHandleImpl):
(WebCore::SocketStreamHandleImpl::platformSend):
(WebCore::SocketStreamHandleImpl::platformClose):
* platform/network/curl/SocketStreamHandleImpl.h:
(WebCore::SocketStreamHandleImpl::create):
* platform/network/soup/SocketStreamHandleImpl.h:
* platform/network/soup/SocketStreamHandleImplSoup.cpp:
(WebCore::SocketStreamHandleImpl::create):

Source/WebKit2:

* UIProcess/InspectorServer/WebSocketServerConnection.cpp:
(WebKit::WebSocketServerConnection::didCloseSocketStream):
(WebKit::WebSocketServerConnection::didReceiveSocketStreamData):
* UIProcess/InspectorServer/WebSocketServerConnection.h:

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

4 years agoWeb Inspector: add "Copy Selected" context menu item to Console
commit-queue@webkit.org [Tue, 16 Aug 2016 17:05:54 +0000 (17:05 +0000)]
Web Inspector: add "Copy Selected" context menu item to Console
https://bugs.webkit.org/show_bug.cgi?id=151836

Patch by Devin Rousso <dcrousso+webkit@gmail.com> on 2016-08-16
Reviewed by Timothy Hatcher.

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/LogContentView.js:
(WebInspector.LogContentView.prototype._previousMessageRepeatCountUpdated):
(WebInspector.LogContentView.prototype._handleContextMenuEvent):
(WebInspector.LogContentView.prototype._mousedown):

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

4 years agoWeb Inspector: Visual Styles: "Text -> Content" isn't escaped
commit-queue@webkit.org [Tue, 16 Aug 2016 16:57:27 +0000 (16:57 +0000)]
Web Inspector: Visual Styles: "Text -> Content" isn't escaped
https://bugs.webkit.org/show_bug.cgi?id=158271

Patch by Devin Rousso <dcrousso+webkit@gmail.com> on 2016-08-16
Reviewed by Timothy Hatcher.

* UserInterface/Base/Utilities.js:
(String.prototype.hasMatchingEscapedQuotes):
Checks that the given string has property escaped quotes (single or double).

* UserInterface/Views/VisualStyleBasicInput.js:
(WebInspector.VisualStyleBasicInput):
(WebInspector.VisualStyleBasicInput.prototype._handleInputElementInput):

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

4 years agoUnreviewed, rolling out r204506.
cdumez@apple.com [Tue, 16 Aug 2016 16:57:17 +0000 (16:57 +0000)]
Unreviewed, rolling out r204506.

Broke the build

Reverted changeset:

"Cleanup WK2 platform gamepad handling."
https://bugs.webkit.org/show_bug.cgi?id=160871
http://trac.webkit.org/changeset/204506

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

4 years ago[Cocoa] Remove dependency on Objective-C bindings in WebKit2 editing code
darin@apple.com [Tue, 16 Aug 2016 16:56:07 +0000 (16:56 +0000)]
[Cocoa] Remove dependency on Objective-C bindings in WebKit2 editing code
https://bugs.webkit.org/show_bug.cgi?id=160891

Reviewed by Anders Carlsson.

Source/WebCore:

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

* editing/Editor.cpp: Removed member initialization for members now
initialized in the class definition.

* editing/Editor.h: Added FragmentAndResources struct, createFragment
member function, and _WebCreateFragment function. Also initialize all the
scalar data members here instead of in the constructor.

* editing/cocoa/EditorCocoa.h: Removed. This was unused.

* editing/cocoa/EditorCocoa.mm:
(WebCore::Editor::createFragment): Added. Calls through to WebKitLegacy
using soft linking for now, but later should be implemented here in WebCore.

* editing/ios/EditorIOS.mm:
(WebCore::Editor::createFragmentAndAddResources): Call createFragment.

* editing/mac/EditorMac.mm:
(WebCore::Editor::createFragmentAndAddResources): Call createFragment.

* loader/EmptyClients.h: Removed documentFragmentFromAttributedString
implementation.

* page/EditorClient.h: Removed documentFragmentFromAttributedString.
Two reasons: The first is that this is now implemented in WebCore. While
there is a call through to WebKitLegacy, it's a temporary thing and done
with soft linking. The second reason is that this returned a raw pointer,
which is not safe in general. Was safe here because it was returning a
pointer owned by an autoreleased Objective-C object.

Source/WebKit/mac:

* WebCoreSupport/WebEditorClient.h: Removed documentFragmentFromAttributedString.

* WebCoreSupport/WebEditorClient.mm:
(attributesForAttributedStringConversion): Replaced the
createExcludedElementsForAttributedStringConversion function with this one.
No good reason to keep the array around instead of the dictionary.
(_WebCreateFragment): Renamed from documentFragmentFromAttributedString.
This is now a global function exported so it can be called by WebCore with
a different way of returning its value.

* WebKit.exp: Added _WebCreateFragment.

* WebView/WebHTMLView.mm:
(-[WebHTMLView _documentFragmentFromPasteboard:forType:inContext:subresources:]):
Removed long-ago-obsolete workaround for Radar bug 5052369.

Source/WebKit2:

* WebProcess/WebCoreSupport/WebEditorClient.h: Removed documentFragmentFromAttributedString.
* WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm:
(WebKit::WebEditorClient::documentFragmentFromAttributedString): Deleted.
* WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm:
(WebKit::createExcludedElementsForAttributedStringConversion): Deleted.
(WebKit::WebEditorClient::documentFragmentFromAttributedString): Deleted.

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

4 years agoModernize model objects simple getters
commit-queue@webkit.org [Tue, 16 Aug 2016 16:52:45 +0000 (16:52 +0000)]
Modernize model objects simple getters
https://bugs.webkit.org/show_bug.cgi?id=160863

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-08-16
Reviewed by Timothy Hatcher.

Simplify the style of many Model objects with basic accessors.
We reduce them to a single line and group them together so
that they can be more easily read at a glance.

* UserInterface/Models/AnalyzerMessage.js:
* UserInterface/Models/ApplicationCacheFrame.js:
* UserInterface/Models/ApplicationCacheManifest.js:
* UserInterface/Models/BreakpointAction.js:
* UserInterface/Models/CSSMedia.js:
* UserInterface/Models/CSSSelector.js:
* UserInterface/Models/CollectionEntry.js:
* UserInterface/Models/CollectionEntryPreview.js:
* UserInterface/Models/DOMStorageObject.js:
* UserInterface/Models/DatabaseObject.js:
* UserInterface/Models/DatabaseTableObject.js:
* UserInterface/Models/ExecutionContext.js:
* UserInterface/Models/GarbageCollection.js:
* UserInterface/Models/IndexedDatabase.js:
* UserInterface/Models/IndexedDatabaseObjectStore.js:
* UserInterface/Models/IndexedDatabaseObjectStoreIndex.js:
* UserInterface/Models/ObjectPreview.js:
* UserInterface/Models/ProbeSet.js:
* UserInterface/Models/PropertyDescriptor.js:
* UserInterface/Models/PropertyPath.js:
* UserInterface/Models/PropertyPreview.js:
* UserInterface/Models/SourceCodePosition.js:
* UserInterface/Models/SourceCodeSearchMatchObject.js:
* UserInterface/Models/SourceCodeTimeline.js:
* UserInterface/Models/StructureDescription.js:
* UserInterface/Models/TextRange.js:
* UserInterface/Models/Timeline.js:
* UserInterface/Models/TimelineRecording.js:
* UserInterface/Models/TypeDescription.js:

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

4 years agoCleanup WK2 platform gamepad handling.
beidson@apple.com [Tue, 16 Aug 2016 16:27:48 +0000 (16:27 +0000)]
Cleanup WK2 platform gamepad handling.
https://bugs.webkit.org/show_bug.cgi?id=160871

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (No currently testable change in behavior).

This patch does a few things:
1 - Separates the concepts of "monitoring gamepads" and "monitoring gamepad inputs"
2 - Uses this new concept to much more cleanly handle the case where we are not currently
    monitoring gamepad inputs because an interested WKWebView is not front and center.
3 - Pre-populates the "initial set of gamepads" in WebProcesses that start listening for gamepads.

* platform/gamepad/GamepadProviderClient.h:
(WebCore::GamepadProviderClient::setInitialConnectedGamepads):

* platform/gamepad/mac/HIDGamepadProvider.cpp:
(WebCore::HIDGamepadProvider::HIDGamepadProvider):
(WebCore::HIDGamepadProvider::stopMonitoringInput):
(WebCore::HIDGamepadProvider::startMonitoringInput):
(WebCore::HIDGamepadProvider::connectionDelayTimerFired):
* platform/gamepad/mac/HIDGamepadProvider.h:

Source/WebKit2:

This patch does a few things:
1 - Separates the concepts of "monitoring gamepads" and "monitoring gamepad inputs"
2 - Uses this new concept to much more cleanly handle the case where we are not currently
    monitoring gamepad inputs because an interested WKWebView is not front and center.
3 - Pre-populates the "initial set of gamepads" in WebProcesses that start listening for gamepads.

* Platform/Logging.h:

* UIProcess/Gamepad/UIGamepadProvider.cpp:
(WebKit::UIGamepadProvider::gamepadSyncTimerFired):
(WebKit::UIGamepadProvider::setInitialConnectedGamepads):
(WebKit::UIGamepadProvider::processPoolStoppedUsingGamepads):
(WebKit::UIGamepadProvider::viewBecameActive):
(WebKit::UIGamepadProvider::viewBecameInactive):
(WebKit::UIGamepadProvider::stopMonitoringGamepads):
(WebKit::UIGamepadProvider::snapshotGamepads):
(WebKit::UIGamepadProvider::platformStopMonitoringInput):
(WebKit::UIGamepadProvider::platformStartMonitoringInput):
(WebKit::UIGamepadProvider::UIGamepadProvider): Deleted.
(WebKit::UIGamepadProvider::scheduleDisableGamepadMonitoring): Deleted.
(WebKit::UIGamepadProvider::disableMonitoringTimerFired): Deleted.
* UIProcess/Gamepad/UIGamepadProvider.h:

* UIProcess/Gamepad/mac/UIGamepadProviderHID.cpp:
(WebKit::UIGamepadProvider::platformStopMonitoringInput):
(WebKit::UIGamepadProvider::platformStartMonitoringInput):

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

* WebProcess/Gamepad/WebGamepadProvider.cpp:
(WebKit::WebGamepadProvider::setInitialGamepads):
* WebProcess/Gamepad/WebGamepadProvider.h:

* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::setInitialGamepads):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:

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

4 years agoUnreviewed, rolling out r204494.
cdumez@apple.com [Tue, 16 Aug 2016 16:23:45 +0000 (16:23 +0000)]
Unreviewed, rolling out r204494.
https://bugs.webkit.org/show_bug.cgi?id=160901

Broke the iOS build (Requested by cdumez on #webkit).

Reverted changeset:

"Drop unused EventTarget::hasActiveEventListeners()"
https://bugs.webkit.org/show_bug.cgi?id=160869
http://trac.webkit.org/changeset/204494

Patch by Commit Queue <commit-queue@webkit.org> on 2016-08-16

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

4 years agoUnreviewed, rolling out r204464.
ryanhaddad@apple.com [Tue, 16 Aug 2016 15:58:31 +0000 (15:58 +0000)]
Unreviewed, rolling out r204464.

This is no longer needed after r204495.

Reverted changeset:

"Skip failing test mozilla/ecma/LexicalConventions/7.7.3.js"
https://bugs.webkit.org/show_bug.cgi?id=160662
http://trac.webkit.org/changeset/204464

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

4 years ago * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
darin@apple.com [Tue, 16 Aug 2016 15:53:52 +0000 (15:53 +0000)]
    * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
        Regenerated results, which were affected by the sequence<T> change last night.

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

4 years ago[Win] Hardening of getLinkedFonts function.
pvollan@apple.com [Tue, 16 Aug 2016 09:43:04 +0000 (09:43 +0000)]
[Win] Hardening of getLinkedFonts function.
https://bugs.webkit.org/show_bug.cgi?id=160850

The SUCCEEDED macro should only be used for functions returning a HRESULT type.
Also, make sure a string array index will not exceed the string length.

* platform/graphics/win/FontCacheWin.cpp:
(WebCore::getLinkedFonts):

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

4 years agoSimplify SocketStreamError
commit-queue@webkit.org [Tue, 16 Aug 2016 07:55:12 +0000 (07:55 +0000)]
Simplify SocketStreamError
https://bugs.webkit.org/show_bug.cgi?id=160888

Patch by Alex Christensen <achristensen@webkit.org> on 2016-08-16
Reviewed by Darin Adler.

SocketStreamErrorBase and platform-specific SocketStreamError were overly complicated.
They had many functions that were never used.  There's no reason to have two separate classes.

* WebCore.xcodeproj/project.pbxproj:
* platform/network/SocketStreamError.h: Copied from Source/WebCore/platform/network/SocketStreamErrorBase.h.
(WebCore::SocketStreamError::SocketStreamError):
(WebCore::SocketStreamError::isNull):
(WebCore::SocketStreamError::errorCode):
(WebCore::SocketStreamError::failingURL):
(WebCore::SocketStreamError::localizedDescription):
(WebCore::SocketStreamErrorBase::isNull): Deleted.
(WebCore::SocketStreamErrorBase::errorCode): Deleted.
(WebCore::SocketStreamErrorBase::failingURL): Deleted.
(WebCore::SocketStreamErrorBase::localizedDescription): Deleted.
(WebCore::SocketStreamErrorBase::SocketStreamErrorBase): Deleted.
(WebCore::operator==): Deleted.
(WebCore::operator!=): Deleted.
* platform/network/SocketStreamErrorBase.cpp: Removed.
* platform/network/SocketStreamErrorBase.h: Removed.
* platform/network/cf/SocketStreamError.h: Removed.
* platform/network/curl/SocketStreamError.h: Removed.
* platform/network/soup/SocketStreamError.h: Removed.

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

4 years agoConversion to sequence<T> is broken for iterable objects
rniwa@webkit.org [Tue, 16 Aug 2016 06:50:58 +0000 (06:50 +0000)]
Conversion to sequence<T> is broken for iterable objects
https://bugs.webkit.org/show_bug.cgi?id=160801

Reviewed by Darin Adler.

Source/JavaScriptCore:

Export functions used to iterate over iterable objects.

* runtime/IteratorOperations.h:
(JSC::forEachInIterable):

Source/WebCore:

Added the proper iterator support for sequence<T> with one caveat that we don't check for RegExp object
per https://github.com/heycam/webidl/issues/145.

See http://heycam.github.io/webidl/#es-sequence and http://heycam.github.io/webidl/#es-overloads

Tests: bindings/scripts/test/TestOverloadedConstructorsWithSequence.idl

* bindings/js/JSDOMBinding.cpp:
(WebCore::hasIteratorMethod): Added. A helper function for checking whether a JSValue is iterable or not.
* bindings/js/JSDOMBinding.h:
(WebCore::NativeValueTraits<unsigned>::nativeValue): Removed the check for isNumber to match the spec'ed
behavior at http://heycam.github.io/webidl/#es-unsigned-long which calls ToNumber first without checking
whether the value is a number or not.
(WebCore::toRefPtrNativeArray): Replaced isJSArray check by isObject check and throw a TypeError. Deployed
forEachInIterable to support non-JSArray iterable objects. Also removed the function pointer from the third
argument since we were always calling JSCT::toWrapped.
(WebCore::toNativeArray): Ditto.
* bindings/js/JSDOMConvert.h:
(WebCore::Converter<Vector<T>>::convert): Removed the comment about toNativeArray not throwing when value
is not an object.
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateOverloadedFunctionOrConstructor): Removed the check for isJSArray for sequence<T> as an iterable
object is not necessary a JSArray.
(WillConvertUndefinedToDefaultParameterValue): Don't return 1 for all sequences since toNativeArray and
toRefPtrNativeArray now throws on undefined due to isObject check.
(JSValueToNative): Removed the third argument from toRefPtrNativeArray.

* bindings/scripts/test/GObject/WebKitDOMTestOverloadedConstructorsWithSequence.cpp: Added.
* bindings/scripts/test/GObject/WebKitDOMTestOverloadedConstructorsWithSequence.h: Added.
* bindings/scripts/test/GObject/WebKitDOMTestOverloadedConstructorsWithSequencePrivate.h: Added.
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalSequenceIsEmpty):
* bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp: Added.
* bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h: Added.
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::jsTestTypedefsPrototypeFunctionFunc):
* bindings/scripts/test/TestOverloadedConstructorsWithSequence.idl: Added.

LayoutTests:

Added test cases for converting non-JSArray objects to sequence<T> for MutationObserver, FontFaceSet, and WebSocket.

* fast/dom/MutationObserver/observe-exceptions-expected.txt:
* fast/dom/MutationObserver/observe-exceptions.html:
* fast/text/font-face-set-javascript-expected.txt:
* fast/text/font-face-set-javascript.html:
* http/tests/dom/window-open-about-webkit-org-and-access-document-expected.txt: Rebaselined due to js-test-pre.js change.
* http/tests/resources/js-test-pre.js: Merged ToT from resources/js-test-pre.js.
* http/tests/security/xssAuditor/block-does-not-leak-location-expected.txt: Rebaselined due to js-test-pre.js change.
* http/tests/security/xssAuditor/block-does-not-leak-referrer-expected.txt: Ditto.
* http/tests/websocket/tests/hybi/websocket-constructor-protocols-expected.txt: Added.
* http/tests/websocket/tests/hybi/websocket-constructor-protocols.html: Added.

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

4 years agoRename RegisteredEventListener::listener() to callback() for clarity
cdumez@apple.com [Tue, 16 Aug 2016 06:48:34 +0000 (06:48 +0000)]
Rename RegisteredEventListener::listener() to callback() for clarity
https://bugs.webkit.org/show_bug.cgi?id=160873

Reviewed by Darin Adler.

Rename RegisteredEventListener::listener() to callback() for clarity
and to match the specification:
- https://dom.spec.whatwg.org/#concept-event-listener

Always calling listener->listener() seems wrong.

* bindings/js/JSCommandLineAPIHostCustom.cpp:
(WebCore::getJSListenerFunctions):
* dom/EventListenerMap.cpp:
(WebCore::findListener):
(WebCore::removeFirstListenerCreatedFromMarkup):
(WebCore::copyListenersNotCreatedFromMarkupToTarget):
(WebCore::EventListenerIterator::nextListener):
* dom/EventTarget.cpp:
(WebCore::EventTarget::getAttributeEventListener):
(WebCore::EventTarget::fireEventListeners):
* dom/RegisteredEventListener.h:
(WebCore::RegisteredEventListener::callback):
(WebCore::RegisteredEventListener::RegisteredEventListener):
(WebCore::RegisteredEventListener::listener): Deleted.
* inspector/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::getEventListeners):
(WebCore::InspectorDOMAgent::buildObjectForEventListener):

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

4 years agowebkitpy error in TestRunResults.merge()
simon.fraser@apple.com [Tue, 16 Aug 2016 06:41:33 +0000 (06:41 +0000)]
webkitpy error in TestRunResults.merge()
https://bugs.webkit.org/show_bug.cgi?id=160882

Reviewed by Daniel Bates.

The argument to TestRunResults.merge() can be None if there are no device-specifc
initial results or retry results in Manager.run(), so just return early in that case.

* Scripts/webkitpy/layout_tests/models/test_run_results.py:
(TestRunResults.merge):

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

4 years agoAdd support for dictionary members of non nullable wrapper types
cdumez@apple.com [Tue, 16 Aug 2016 06:24:39 +0000 (06:24 +0000)]
Add support for dictionary members of non nullable wrapper types
https://bugs.webkit.org/show_bug.cgi?id=160876

Reviewed by Darin Adler.

Add support for dictionary members of non nullable wrapper types. We
only supported nullable wrapper types as dictionary members so far.

No new tests, updated bindings tests.

* bindings/js/JSDOMConvert.h:
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateDictionaryImplementationContent):
(GenerateParametersCheck):
(JSValueToNative):
(GenerateConstructorDefinition):
* bindings/scripts/test/JS/JSTestInterface.cpp:
(WebCore::JSTestInterfaceConstructor::construct):
* bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
(WebCore::JSTestNamedConstructorNamedConstructor::construct):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::convertDictionary<TestObj::Dictionary>):
(WebCore::convertDictionary<TestObj::DictionaryThatShouldNotTolerateNull>):
(WebCore::convertDictionary<TestObj::DictionaryThatShouldTolerateNull>):
(WebCore::jsTestObjPrototypeFunctionAttachShadowRoot):
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
(WebCore::constructJSTestOverloadedConstructors4):
(WebCore::constructJSTestOverloadedConstructors5):
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::JSTestTypedefsConstructor::construct):
* bindings/scripts/test/TestObj.idl:

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

4 years agoWeb Inspector: Large class lists are not easily discoverable with "Classes" quick...
commit-queue@webkit.org [Tue, 16 Aug 2016 05:14:17 +0000 (05:14 +0000)]
Web Inspector: Large class lists are not easily discoverable with "Classes" quick-toggle
https://bugs.webkit.org/show_bug.cgi?id=160856

Patch by Devin Rousso <dcrousso+webkit@gmail.com> on 2016-08-15
Reviewed by Joseph Pecoraro.

* UserInterface/Base/DOMUtilities.js:
(WebInspector.linkifyNodeReference):
Add option to truncate the text of the linkified node.

* UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
(.sidebar > .panel.details.css-style > .content ~ .class-list-container):
Increase the max-height to partially show additional classes if many are set.

* UserInterface/Views/RulesStyleDetailsPanel.js:
(WebInspector.RulesStyleDetailsPanel.prototype.refresh.insertMediaOrInheritanceLabel):
Trucate the name of inherited nodes so they don't take up as much space in the sidebar.

* UserInterface/Views/VisualStyleSelectorSection.css:
(.details-section.visual-style-selector-section > .header > .current-selector): Deleted.
(.details-section.visual-style-selector-section > .content > .selectors > .selector-list > .section-divider > .titles): Deleted.
Removed since they are already inherited.

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

4 years ago[Regression 204203-204210] 32-bit ASSERTION FAILED: !m_data[index].name.isValid()
commit-queue@webkit.org [Tue, 16 Aug 2016 04:17:36 +0000 (04:17 +0000)]
[Regression 204203-204210] 32-bit ASSERTION FAILED: !m_data[index].name.isValid()
https://bugs.webkit.org/show_bug.cgi?id=160881

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-08-15
Reviewed by Mark Lam.

* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
We were trying to set the result of the Identity node to the same
value as the source of the Identity.
That is pretty messed up.

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

4 years agoDrop unused EventTarget::hasActiveEventListeners()
cdumez@apple.com [Tue, 16 Aug 2016 03:32:38 +0000 (03:32 +0000)]
Drop unused EventTarget::hasActiveEventListeners()
https://bugs.webkit.org/show_bug.cgi?id=160869

Reviewed by Alex Christensen.

* dom/EventListenerMap.cpp:
(WebCore::EventListenerMap::containsActive): Deleted.
* dom/EventListenerMap.h:
* dom/EventTarget.cpp:
(WebCore::EventTarget::hasActiveEventListeners): Deleted.
* dom/EventTarget.h:

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

4 years agoSpeed up compile times by not including wtf/Variant.h so much
commit-queue@webkit.org [Tue, 16 Aug 2016 02:27:09 +0000 (02:27 +0000)]
Speed up compile times by not including wtf/Variant.h so much
https://bugs.webkit.org/show_bug.cgi?id=160847

Patch by Sam Weinig <sam@webkit.org> on 2016-08-15
Reviewed by Alex Christensen and Saam Barati.

Source/WebCore:

"using std::experimental::variant" caused internal compiler errors in MSVC2015,
so we are just writing std::experimental where we use it for now.
We should move variant into the std::experimental namespace.

* bindings/js/JSNodeOrString.cpp:
(WebCore::toNodeOrStringVector):
* bindings/js/JSNodeOrString.h:
* dom/ContainerNode.cpp:
(WebCore::ContainerNode::childElementCount):
(WebCore::ContainerNode::append):
(WebCore::ContainerNode::prepend):
* dom/ContainerNode.h:
* dom/Node.cpp:
(WebCore::Node::appendChild):
(WebCore::nodeSetPreTransformedFromNodeOrStringVector):
(WebCore::firstFollowingSiblingNotInNodeSet):
(WebCore::Node::convertNodesOrStringsIntoNode):
(WebCore::Node::before):
(WebCore::Node::after):
(WebCore::Node::replaceWith):
* dom/Node.h:
(WebCore::Node::setStyleChange):
(WebCore::Node::customPseudoId):

Source/WTF:

* wtf/Forward.h:
Add forward declaration of std::variant.

* wtf/StdLibExtras.h:
Remove references to std::variant. Move them to wtf/Variant.h

Tools:

* TestWebKitAPI/Tests/WTF/Variant.cpp:
(TestWebKitAPI::TEST):
Explicitly use std::experimental::variant.

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

4 years agoASSERTION FAILURE: [[videoLayer delegate] isKindOfClass:getUIViewClass()] in WebAVPla...
dbates@webkit.org [Tue, 16 Aug 2016 02:06:45 +0000 (02:06 +0000)]
ASSERTION FAILURE: [[videoLayer delegate] isKindOfClass:getUIViewClass()] in WebAVPlayerLayerView_videoView()
https://bugs.webkit.org/show_bug.cgi?id=160433

Reviewed by Eric Carlson.

Source/WebCore:

Early return from WebAVPlayerLayerView_videoView() if the PiP layer does not have a non-nil delegate view.

Test: media/controls/close-page-with-picture-in-picture-video-assertion-failure.html

* platform/ios/WebVideoFullscreenInterfaceAVKit.mm:
(WebAVPlayerLayerView_videoView):

LayoutTests:

Add a layout test to ensure that we do not cause an assertion failure when exiting PiP by closing the tab.

* TestExpectations: Skip media/control/ipad tests on all ports. We will re-enable these tests for iOS.
* media/controls/close-page-with-picture-in-picture-video-assertion-failure-expected.txt: Added.
* media/controls/close-page-with-picture-in-picture-video-assertion-failure.html: Added.
* media/controls/resources/picture-in-picture.html: Added.
* platform/ios-simulator/TestExpectations: Mark tests media/control/ipad  as Pass so that we run them
in the iPad simulator.

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

4 years agoWeb Inspector: Close button on selected item in Network tab is misaligned
commit-queue@webkit.org [Tue, 16 Aug 2016 01:43:31 +0000 (01:43 +0000)]
Web Inspector: Close button on selected item in Network tab is misaligned
https://bugs.webkit.org/show_bug.cgi?id=160884

Patch by Devin Rousso <dcrousso+webkit@gmail.com> on 2016-08-15
Reviewed by Matt Baker.

* UserInterface/Views/NetworkSidebarPanel.css:
(.sidebar > .panel.navigation.network .status .close.status-button):

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

4 years agoWeb Inspector: Error/Warning icons are misplaced in the Visual sidebar
commit-queue@webkit.org [Tue, 16 Aug 2016 01:34:36 +0000 (01:34 +0000)]
Web Inspector: Error/Warning icons are misplaced in the Visual sidebar
https://bugs.webkit.org/show_bug.cgi?id=160875

Patch by Devin Rousso <dcrousso+webkit@gmail.com> on 2016-08-15
Reviewed by Matt Baker.

* UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.css:
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-special-property-placeholder): Deleted.
Reworked to apply more generally to editors without titles.

* UserInterface/Views/VisualStylePropertyEditor.css:
(.visual-style-property-container.missing-dependency > .visual-style-property-editor-warning):
(.visual-style-property-container.invalid-value > .visual-style-property-editor-warning):
(.visual-style-property-container:matches(.missing-dependency, .invalid-value) > *:first-child:matches(.visual-style-property-value-container)):
(.visual-style-property-container > *:first-child:matches(.visual-style-property-value-container) > .visual-style-special-property-placeholder):
(.visual-style-property-container > .visual-style-property-editor-warning.missing-dependency): Deleted.
(.visual-style-property-container > .visual-style-property-editor-warning.invalid-value): Deleted.
Reworked class names to be on the element container instead of the icon.

* UserInterface/Views/VisualStylePropertyEditor.js:
(WebInspector.VisualStylePropertyEditor.prototype.update):
(WebInspector.VisualStylePropertyEditor.prototype.updateEditorValues):
(WebInspector.VisualStylePropertyEditor.prototype._valueDidChange):
(WebInspector.VisualStylePropertyEditor.prototype._checkDependencies):

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

4 years agoWeb Inspector: Introduce a method to enable code coverage profiler without enabling...
sbarati@apple.com [Mon, 15 Aug 2016 23:32:03 +0000 (23:32 +0000)]
Web Inspector: Introduce a method to enable code coverage profiler without enabling type profiler
https://bugs.webkit.org/show_bug.cgi?id=160750
<rdar://problem/27793469>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

* inspector/agents/InspectorRuntimeAgent.cpp:
(Inspector::InspectorRuntimeAgent::disableTypeProfiler):
(Inspector::InspectorRuntimeAgent::enableControlFlowProfiler):
(Inspector::InspectorRuntimeAgent::disableControlFlowProfiler):
(Inspector::InspectorRuntimeAgent::setTypeProfilerEnabledState):
(Inspector::InspectorRuntimeAgent::setControlFlowProfilerEnabledState):
* inspector/agents/InspectorRuntimeAgent.h:
* inspector/protocol/Runtime.json:

Source/WebInspectorUI:

* UserInterface/Base/Main.js:
(WebInspector.loaded):
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype._setTypeTokenAnnotatorEnabledState):

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

4 years agoArray.prototype.map builtin should go on the fast path when constructor===@Array
sbarati@apple.com [Mon, 15 Aug 2016 23:31:39 +0000 (23:31 +0000)]
Array.prototype.map builtin should go on the fast path when constructor===@Array
https://bugs.webkit.org/show_bug.cgi?id=160836

Reviewed by Keith Miller.

In the FTL, we were not compiling the result array in Array.prototype.map
efficiently when the result array should use the Array constructor
(which is the common case). We used to compile it as:
x: JSConstant(Array)
y: Construct(@x, ...)
instead of
y: NewArrayWithSize(...)

This patch changes the builtin to go down the fast path when certain
conditions are met. Often, the check to go down the fast path will
be constant folded because we always create a normal array from the
Array constructor.

This is around a 5% speedup on ES6 Sample Bench.

I also made similar changes for Array.prototype.filter
and Array.prototype.concat on its slow path.

* builtins/ArrayPrototype.js:

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

4 years agoMake JSValue::strictEqual() handle failures to resolve JSRopeStrings.
mark.lam@apple.com [Mon, 15 Aug 2016 21:52:22 +0000 (21:52 +0000)]
Make JSValue::strictEqual() handle failures to resolve JSRopeStrings.
https://bugs.webkit.org/show_bug.cgi?id=160832
<rdar://problem/27577556>

Reviewed by Geoffrey Garen.

Currently, JSValue::strictEqualSlowCaseInline() (and peers) will blindly try to
access the StringImpl of a JSRopeString that fails to resolve its rope.  As a
result, we'll crash with null pointer dereferences.

We can fix this by introducing a JSString::equal() method that will do the
equality comparison, but is aware of the potential failures to resolve ropes.
JSValue::strictEqualSlowCaseInline() (and peers) will now call JSString::equal()
instead of accessing the underlying StringImpl directly.

Also added some exception checks.

* JavaScriptCore.xcodeproj/project.pbxproj:
* jit/JITOperations.cpp:
* runtime/ArrayPrototype.cpp:
(JSC::arrayProtoFuncIndexOf):
(JSC::arrayProtoFuncLastIndexOf):
* runtime/JSCJSValueInlines.h:
(JSC::JSValue::equalSlowCaseInline):
(JSC::JSValue::strictEqualSlowCaseInline):
* runtime/JSString.cpp:
(JSC::JSString::equalSlowCase):
* runtime/JSString.h:
* runtime/JSStringInlines.h: Added.
(JSC::JSString::equal):

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

4 years agoImplement WASM Parser and B3 IR generator
keith_miller@apple.com [Mon, 15 Aug 2016 21:35:07 +0000 (21:35 +0000)]
Implement WASM Parser and B3 IR generator
https://bugs.webkit.org/show_bug.cgi?id=160681

Reviewed by Benjamin Poulain.

Source/JavaScriptCore:

This patch adds the skeleton for a WebAssembly pipeline. The
pipeline is designed in order to make it easy to have as much of
the compilation process threaded as possible. The flow of the
pipeline roughly goes as follows:

1) Create a WASMPlan with the VM and a Vector of the
assembly. Currently the plan will process all the work
synchronously, however, in the future this can be offloaded to
other threads.

2) The plan will run the WASMModuleParser, which collates all the
information needed to compile each module function
independently. Since, we are still in the early phases, the only
information is the starting and ending byte of the function's
body. The module parser, however, still scans both and
semi-validates the type and the function sections.

3) Each function is decoded and compiled. In the future this
should also include a opcode validation phase. The
WASMFunctionParser is templatized so that a validator should be
able to use most of the same code the B3 IR generator does.

4) When the plan has finished it will fill a Vector of
B3::Compilation objects that correspond to the respective function
in the WASM module.

The current testing plan for the modules is to inline the the
binary generated by the spec's OCaml prototype. The inlined binary
is passed to a WASMPlan then invoked to check the result of the
function. In the future we should add a more robust testing
infrastructure.

* JavaScriptCore.xcodeproj/project.pbxproj:
* testWASM.cpp:
(printUsageStatement):
(CommandLine::parseArguments):
(invoke):
(runWASMTests):
(main):
* wasm/JSWASMModule.h:
(JSC::JSWASMModule::globalVariableTypes):
* wasm/WASMB3IRGenerator.cpp: Added.
(JSC::WASM::B3IRGenerator::B3IRGenerator):
(JSC::WASM::B3IRGenerator::addLocal):
(JSC::WASM::B3IRGenerator::binaryOp):
(JSC::WASM::B3IRGenerator::addConstant):
(JSC::WASM::B3IRGenerator::addBlock):
(JSC::WASM::B3IRGenerator::endBlock):
(JSC::WASM::B3IRGenerator::addReturn):
(JSC::WASM::B3IRGenerator::unify):
(JSC::WASM::B3IRGenerator::initializeIncommingTypes):
(JSC::WASM::B3IRGenerator::unifyValuesWithLevel):
(JSC::WASM::B3IRGenerator::stackForControlLevel):
(JSC::WASM::B3IRGenerator::blockForControlLevel):
(JSC::WASM::parseAndCompile):
* wasm/WASMB3IRGenerator.h: Copied from Source/WTF/wtf/DataLog.h.
* wasm/WASMFormat.h:
* wasm/WASMFunctionParser.h: Added.
(JSC::WASM::WASMFunctionParser<Context>::WASMFunctionParser):
(JSC::WASM::WASMFunctionParser<Context>::parse):
(JSC::WASM::WASMFunctionParser<Context>::parseBlock):
(JSC::WASM::WASMFunctionParser<Context>::parseExpression):
* wasm/WASMModuleParser.cpp: Added.
(JSC::WASM::WASMModuleParser::parse):
(JSC::WASM::WASMModuleParser::parseFunctionTypes):
(JSC::WASM::WASMModuleParser::parseFunctionSignatures):
(JSC::WASM::WASMModuleParser::parseFunctionDefinitions):
* wasm/WASMModuleParser.h: Copied from Source/WTF/wtf/DataLog.h.
(JSC::WASM::WASMModuleParser::WASMModuleParser):
(JSC::WASM::WASMModuleParser::functionInformation):
* wasm/WASMOps.h: Copied from Source/WTF/wtf/DataLog.h.
* wasm/WASMParser.h: Added.
(JSC::WASM::WASMParser::parseVarUInt32):
(JSC::WASM::WASMParser::WASMParser):
(JSC::WASM::WASMParser::consumeCharacter):
(JSC::WASM::WASMParser::consumeString):
(JSC::WASM::WASMParser::parseUInt32):
(JSC::WASM::WASMParser::parseUInt7):
(JSC::WASM::WASMParser::parseVarUInt1):
(JSC::WASM::WASMParser::parseValueType):
* wasm/WASMPlan.cpp: Copied from Source/WTF/wtf/DataLog.h.
(JSC::WASM::Plan::Plan):
* wasm/WASMPlan.h: Copied from Source/WTF/wtf/DataLog.h.
* wasm/WASMSections.cpp: Copied from Source/WTF/wtf/DataLog.h.
(JSC::WASM::WASMSections::lookup):
* wasm/WASMSections.h: Copied from Source/WTF/wtf/DataLog.h.
(JSC::WASM::WASMSections::validateOrder):

Source/WTF:

* wtf/DataLog.h:
(WTF::dataLogLn): Add a new dataLog function, dataLogLn that
automagically includes a new line at the end of the print.
* wtf/LEBDecoder.h:
(decodeUInt32):
(decodeInt32): Change the LEBDecoder to take a pointer and length
rather than a Vector.

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