WebKit-https.git
2 years agoRebaseline media/modern-media-controls/fullscreen-support
graouts@webkit.org [Wed, 14 Jun 2017 01:03:31 +0000 (01:03 +0000)]
Rebaseline media/modern-media-controls/fullscreen-support
https://bugs.webkit.org/show_bug.cgi?id=173199

Reviewed by Simon Fraser.

Source/WebCore:

Test: media/modern-media-controls/fullscreen-support/fullscreen-support-press.html

We no longer need to track the "error" event for FullscreenSupport since we don't actually
enable or disable the fullscreen button when an error happens, instead the media controls
code will simply not present it since we'll be showing a placard instead.

* Modules/modern-media-controls/media/fullscreen-support.js:
(FullscreenSupport.prototype.get mediaEvents):

LayoutTests:

We no longer need to test the "error" event for FullscreenSupport since we don't actually
enable or disable the fullscreen button when an error happens, instead the media controls
code will simply not present it since we'll be showing a placard instead.

We also remove the iPad-specific test since the fullscreen button is now accessible on an
iPhone as well, so it no longer needs a special iPad test.

* media/modern-media-controls/fullscreen-support/fullscreen-support-enabled-expected.txt:
* media/modern-media-controls/fullscreen-support/fullscreen-support-enabled.html:
* media/modern-media-controls/fullscreen-support/fullscreen-support-press-expected.txt: Renamed from LayoutTests/media/modern-media-controls/fullscreen-support/fullscreen-support-click-expected.txt.
* media/modern-media-controls/fullscreen-support/fullscreen-support-press.html: Renamed from LayoutTests/media/modern-media-controls/fullscreen-support/fullscreen-support-click.html.
* media/modern-media-controls/fullscreen-support/ipad/fullscreen-support-tap-expected.txt: Removed.
* media/modern-media-controls/fullscreen-support/ipad/fullscreen-support-tap.html: Removed.
* platform/ios-simulator/TestExpectations:
* platform/mac/TestExpectations:

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

2 years ago[GTK] Fix linter warnings on the GTK Debug TestExpectation file and update some expec...
clopez@igalia.com [Wed, 14 Jun 2017 00:36:29 +0000 (00:36 +0000)]
[GTK] Fix linter warnings on the GTK Debug TestExpectation file and update some expectations for Debug.

Unreviewed test gardening.

* TestExpectations: Merge expectations for imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.worker.html
* platform/gtk/TestExpectations: Mark observed timeouts on Debug and fix linter warnings related to tests renamed or deleted.
* platform/gtk/imported/w3c/web-platform-tests/fetch/api/basic/request-headers-expected.txt: Removed.
* platform/gtk/imported/w3c/web-platform-tests/fetch/api/basic/request-headers-worker-expected.txt: Removed.

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

2 years agoWebsitePolicies: let clients select specific autoplay quirks
mrajca@apple.com [Wed, 14 Jun 2017 00:32:21 +0000 (00:32 +0000)]
WebsitePolicies: let clients select specific autoplay quirks
https://bugs.webkit.org/show_bug.cgi?id=173343

Reviewed by Alex Christensen.
Source/WebCore:

Tests: Updated API tests accordingly to use new values.

Replace the 'allowsAutoplayQuirks' bool with an OptionSet so clients can selectively
pick auto-play quirks.

* dom/Document.cpp:
(WebCore::Document::processingUserGestureForMedia):
* html/HTMLMediaElement.cpp:
(WebCore::needsAutoplayPlayPauseEventsQuirk):
* loader/DocumentLoader.h:
(WebCore::DocumentLoader::allowedAutoplayQuirks):
(WebCore::DocumentLoader::setAllowedAutoplayQuirks):
(WebCore::DocumentLoader::allowsAutoplayQuirks): Deleted.
(WebCore::DocumentLoader::setAllowsAutoplayQuirks): Deleted.

Source/WebKit2:

Replace the 'allowsAutoplayQuirks' bool with an OptionSet so clients can selectively
pick auto-play quirks.

* Shared/WebsitePolicies.h:
(WebKit::WebsitePolicies::encode):
(WebKit::WebsitePolicies::decode):
* UIProcess/API/APIWebsitePolicies.h:
* UIProcess/API/C/WKWebsitePolicies.cpp:
(WKWebsitePoliciesSetAllowedAutoplayQuirks):
(WKWebsitePoliciesGetAllowedAutoplayQuirks):
(WKWebsitePoliciesSetAllowsAutoplayQuirks): Deleted.
(WKWebsitePoliciesGetAllowsAutoplayQuirks): Deleted.
* UIProcess/API/C/WKWebsitePolicies.h:
* UIProcess/API/Cocoa/_WKWebsitePolicies.h:
* UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
(-[_WKWebsitePolicies setAllowedAutoplayQuirks:]):
(-[_WKWebsitePolicies allowedAutoplayQuirks]):
(-[_WKWebsitePolicies setAllowsAutoplayQuirks:]): Deleted.
(-[_WKWebsitePolicies allowsAutoplayQuirks]): Deleted.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updateWebsitePolicies):

Tools:

* TestWebKitAPI/Tests/WebKit2Cocoa/WebsitePolicies.mm:
(-[AutoplayPoliciesDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]):
(TEST): Updated tests.

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

2 years agoSynchronous media query callbacks on nested frames could produced a detached FrameView.
zalan@apple.com [Wed, 14 Jun 2017 00:19:21 +0000 (00:19 +0000)]
Synchronous media query callbacks on nested frames could produced a detached FrameView.
https://bugs.webkit.org/show_bug.cgi?id=173330

Reviewed by Simon Fraser.

Source/WebCore:

This patch fixes the crash when the nested frame's media query callback triggers navigation on the mainframe.
webkit.org/b/173329 is to track whether we should allow synchronous callback firing from FrameView::layout().

Covered by show-modal-dialog-during-execCommand.html.

* page/FrameView.cpp:
(WebCore::FrameView::layout):

LayoutTests:

* TestExpectations: ASSERT(frame()->view() == this) still fires due to the unexpected navigation, but we clearly
manage to recover from it. Unskip it (debug) when webkit.org/b/173329 is resolved.

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

2 years agoAX[macOS]: Expose Inline property as an accessibility attribute
cfleizach@apple.com [Wed, 14 Jun 2017 00:12:29 +0000 (00:12 +0000)]
AX[macOS]: Expose Inline property as an accessibility attribute
https://bugs.webkit.org/show_bug.cgi?id=173131
<rdar://problem/32667686>

Reviewed by Joanmarie Diggs.

Source/WebCore:

Expose whether a renderer is inline so that VoiceOver can make better use of that data when deciding what to output.

Test: accessibility/mac/inline-text-attribute.html

* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

LayoutTests:

* accessibility/mac/inline-text-attribute.html: Added.
* accessibility/mac/inline-text-attribute-expected.txt: Added.

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

2 years agoAdd missing availability declarations to SPI in WKUIDelegatePrivate.h
wenson_hsieh@apple.com [Wed, 14 Jun 2017 00:10:06 +0000 (00:10 +0000)]
Add missing availability declarations to SPI in WKUIDelegatePrivate.h
https://bugs.webkit.org/show_bug.cgi?id=173336

Reviewed by Tim Horton.

Add missing availability macros to two recently-introduced SPI delegate methods.
No change in behavior.

* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:

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

2 years agoDebugger has unexpected effect on program correctness
commit-queue@webkit.org [Tue, 13 Jun 2017 23:57:55 +0000 (23:57 +0000)]
Debugger has unexpected effect on program correctness
https://bugs.webkit.org/show_bug.cgi?id=172683

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-06-13
Reviewed by Saam Barati.

Source/JavaScriptCore:

* inspector/InjectedScriptSource.js:
(InjectedScript.RemoteObject.prototype._appendPropertyPreviews):
(InjectedScript.RemoteObject.prototype._isPreviewableObjectInternal):
(BasicCommandLineAPI):
Eliminate for..of use with Arrays from InjectedScriptSource as it can be observable.
We still use it for Set / Map iteration which we can eliminate when moving to builtins.

LayoutTests:

* inspector/injected-script/observable-expected.txt: Added.
* inspector/injected-script/observable.html: Added.

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

2 years agoUpdated test expectations for imported/w3c/web-platform-tests/dom/nodes/Document...
jlewis3@apple.com [Tue, 13 Jun 2017 23:51:35 +0000 (23:51 +0000)]
Updated test expectations for imported/w3c/web-platform-tests/dom/nodes/Document-constructor-svg.svg.
https://bugs.webkit.org/show_bug.cgi?id=173333

Unreviewed test gardening.

* TestExpectations:

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

2 years agoLayoutTests/imported/w3c:
jlewis3@apple.com [Tue, 13 Jun 2017 23:26:15 +0000 (23:26 +0000)]
LayoutTests/imported/w3c:
Re-baselined imported/w3c/web-platform-tests/WebCryptoAPI/import_export/test_rsa_importKey.https.html.
https://bugs.webkit.org/show_bug.cgi?id=173335

Unreviewed test gardening.

* web-platform-tests/WebCryptoAPI/import_export/test_rsa_importKey.https-expected.txt:

LayoutTests:
Re-baselined imported/w3c/web-platform-tests/WebCryptoAPI/import_export/test_rsa_importKey.https.html and fixed text expectations.
https://bugs.webkit.org/show_bug.cgi?id=173335

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

2 years agoWebAssembly: fix erroneous signature comment
jfbastien@apple.com [Tue, 13 Jun 2017 22:45:59 +0000 (22:45 +0000)]
WebAssembly: fix erroneous signature comment
https://bugs.webkit.org/show_bug.cgi?id=173334

Reviewed by Keith Miller.

* wasm/WasmSignature.h:

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

2 years agoUpdate Subresource Integrity status to Supported In Preview
jond@apple.com [Tue, 13 Jun 2017 22:44:06 +0000 (22:44 +0000)]
Update Subresource Integrity status to Supported In Preview
https://bugs.webkit.org/show_bug.cgi?id=173324

Reviewed by Sam Weinig.

* features.json:

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

2 years agoRefactor AbsenceOfSetter to AbsenceOfSetEffects
msaboff@apple.com [Tue, 13 Jun 2017 22:39:34 +0000 (22:39 +0000)]
Refactor AbsenceOfSetter to AbsenceOfSetEffects
https://bugs.webkit.org/show_bug.cgi?id=173322

Reviewed by Filip Pizlo.

* bytecode/ObjectPropertyCondition.h:
(JSC::ObjectPropertyCondition::absenceOfSetEffectWithoutBarrier):
(JSC::ObjectPropertyCondition::absenceOfSetEffect):
(JSC::ObjectPropertyCondition::absenceOfSetterWithoutBarrier): Deleted.
(JSC::ObjectPropertyCondition::absenceOfSetter): Deleted.
* bytecode/ObjectPropertyConditionSet.cpp:
(JSC::generateConditionsForPropertySetterMiss):
(JSC::generateConditionsForPropertySetterMissConcurrently):
* bytecode/PropertyCondition.cpp:
(JSC::PropertyCondition::dumpInContext):
(JSC::PropertyCondition::isStillValidAssumingImpurePropertyWatchpoint):
(JSC::PropertyCondition::isStillValid):
(WTF::printInternal):
* bytecode/PropertyCondition.h:
(JSC::PropertyCondition::absenceOfSetEffectWithoutBarrier):
(JSC::PropertyCondition::absenceOfSetEffect):
(JSC::PropertyCondition::hasPrototype):
(JSC::PropertyCondition::hash):
(JSC::PropertyCondition::operator==):
(JSC::PropertyCondition::absenceOfSetterWithoutBarrier): Deleted.
(JSC::PropertyCondition::absenceOfSetter): Deleted.

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

2 years agoAdd API::InjectedBundle::PageLoaderClient
cdumez@apple.com [Tue, 13 Jun 2017 22:31:49 +0000 (22:31 +0000)]
Add API::InjectedBundle::PageLoaderClient
https://bugs.webkit.org/show_bug.cgi?id=173265

Reviewed by Alex Christensen.

Add missing null check that is causing crashes on iOS.

* WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
(WebKit::InjectedBundlePageLoaderClient::userAgentForURL):

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

2 years agoWebAssembly: import updated spec tests
jfbastien@apple.com [Tue, 13 Jun 2017 22:31:04 +0000 (22:31 +0000)]
WebAssembly: import updated spec tests
https://bugs.webkit.org/show_bug.cgi?id=173287
<rdar://problem/32725975>

Reviewed by Saam Barati.

Import spec tests as of 31c641cc15f2aedbec2fa45a5185f68416df578b,
with a few modifications so things work.

Fix a bunch of bugs found through this process, and punt a few tests (which I
marked as blocked by this bug).

Fixes:

Fix load / store alignment: r216908 erroneously implemented it as bit alignment
instead of byte alignment. It was also missing memory-alignment.js despite it
being in the ChangeLog, so add it too. This allows spec-test/align.wast.js to
pass.

Tables can be imported or in a section. There can be only one, but sections can
be empty. An Elements section can exist if there's no Table, as long as it is
also empty.

Memories can be imported or in a section. There can be only one, but sections
can be empty. A Data section can exist if there's no Memory, as long as it is
also empty.

Prototypes: stringify without .prototype. in the string.

WebAssembly.Table.prototype.grow was plain wrong: it takes a delta parameter,
not a final size, and throws a RangeError on failure, not a TypeError.

Fix compile / instantiate so the reject the promise if given an argument of the
wrong type (instead of failing instantly).

Fix async on neuter test.

Element section shouldn't affect any Table if any of the elements are out of
bounds. We need to process it in two passes.

Segment section shouldn't affect any Data if any of the segments are out of
bounds. We need to process it in two passes.

Empty data segments are valid, but only when there is no memory. Their index
still gets validated, and has to be zero.

Punts:

Error messages with context, the test seems overly restrictive but this is
minor.

compile/instantiate/validate property descriptors.

UTF-8 bugs.

Temporarily disable NaN tests. We need to go back and implement the following
semantics: https://github.com/WebAssembly/spec/pull/414 This doesn't matter as
much as getting all the other tests passing.

Worth noting for NaNs: f64.no_fold_mul_one (also a NaN test) as well as
no_fold_promote_demote (an interesting corner case which we get wrong). mul by
one is (assert_return (invoke \"f64.no_fold_mul_one\" (i64.const
0x7ff4000000000000)) (i64.const 0x7ff8000000000000)) which means converting sNaN
to qNaN, and promote/demote is (assert_return (invoke \"no_fold_promote_demote\"
(i32.const 0x7fa00000)) (i32.const 0x7fc00000)) which is the same. I'm not sure
why they're not allowed.

JSTests:

* wasm.yaml:
* wasm/function-tests/i32-load8-s.js:
* wasm/function-tests/memory-access-past-4gib.js:
(const.op.of.WASM.opcodes):
* wasm/function-tests/memory-alignment.js: Added.
(const.op.of.WASM.opcodes):
* wasm/function-tests/memory-section-and-import.js:
* wasm/js-api/Module-compile.js:
(async.testPromiseAPI):
* wasm/js-api/dont-mmap-zero-byte-memory.js:
(testMems):
* wasm/js-api/element.js:
(assert.throws.new.WebAssembly.Module.builder.WebAssembly):
* wasm/js-api/neutered-inputs.js:
(const.testFunction): Deleted.
(const.testConstructor): Deleted.
* wasm/js-api/table.js:
(assert.throws.new.WebAssembly.Module.builder.WebAssembly):
(new.WebAssembly.Module):
(assert.throws):
(assertBadTableImport):
(assert.throws.WebAssembly.Table.prototype.grow):
(assertBadTableInstance): Deleted.
* wasm/js-api/test_Data.js:
(DataSectionWithoutMemory):
* wasm/spec-harness/index.js:
(module):
(uniqueTest): Deleted.
(assert_invalid): Deleted.
(assert_soft_invalid): Deleted.
(register): Deleted.
(call): Deleted.
(get instance): Deleted.
(exports): Deleted.
(run): Deleted.
(assert_unlinkable): Deleted.
(assert_uninstantiable): Deleted.
(assert_trap): Deleted.
(try.f): Deleted.
(catch): Deleted.
(assert_exhaustion): Deleted.
(assert_return): Deleted.
(assert_return_nan): Deleted.
* wasm/spec-harness/testharness.css: Removed.
* wasm/spec-harness/testharness.js: Removed.
* wasm/spec-harness/testharnessreport.js: Removed.
* wasm/spec-harness/wasm-constants.js:
(assertTraps):
(assertWasmThrows):
* wasm/spec-harness/wasm-module-builder.js:
(Binary.prototype.emit_section):
(Binary):
(WasmFunctionBuilder.prototype.addBody):
(WasmFunctionBuilder.prototype.end):
(WasmFunctionBuilder):
(WasmModuleBuilder.prototype.stringToBytes):
(WasmModuleBuilder.prototype.addCustomSection):
(WasmModuleBuilder.prototype.addFunctionTableInit):
(WasmModuleBuilder.prototype.appendToTable):
(WasmModuleBuilder.prototype.toArray):
(WasmModuleBuilder.prototype.toBuffer):
(WasmModuleBuilder.prototype.instantiate):
(WasmModuleBuilder):
* wasm/spec-tests/address.wast.js:
* wasm/spec-tests/align.wast.js: Added.
* wasm/spec-tests/binary.wast.js:
* wasm/spec-tests/block.wast.js:
* wasm/spec-tests/br.wast.js:
* wasm/spec-tests/br_if.wast.js:
* wasm/spec-tests/br_table.wast.js:
* wasm/spec-tests/call.wast.js:
* wasm/spec-tests/call_indirect.wast.js:
* wasm/spec-tests/comments.wast.js:
* wasm/spec-tests/const.wast.js: Added.
* wasm/spec-tests/conversions.wast.js: Added.
* wasm/spec-tests/custom_section.wast.js:
* wasm/spec-tests/exports.wast.js:
* wasm/spec-tests/f32.wast.js: Added.
* wasm/spec-tests/f64.wast.js: Added.
* wasm/spec-tests/fac.wast.js:
* wasm/spec-tests/float_exprs.wast.js: Added.
* wasm/spec-tests/float_misc.wast.js: Added.
* wasm/spec-tests/func.wast.js:
* wasm/spec-tests/globals.wast.js:
* wasm/spec-tests/if.wast.js:
* wasm/spec-tests/imports.wast.js:
* wasm/spec-tests/inline-module.wast.js: Added.
* wasm/spec-tests/jsapi.js:
(testJSAPI.test):
(testJSAPI):
* wasm/spec-tests/labels.wast.js:
* wasm/spec-tests/loop.wast.js:
* wasm/spec-tests/memory.wast.js:
* wasm/spec-tests/memory_trap.wast.js: Added.
* wasm/spec-tests/names.wast.js:
* wasm/spec-tests/nop.wast.js:
* wasm/spec-tests/return.wast.js:
* wasm/spec-tests/stack.wast.js:
* wasm/spec-tests/token.wast.js: Added.
* wasm/spec-tests/type.wast.js: Added.
* wasm/spec-tests/typecheck.wast.js:
* wasm/spec-tests/unreachable.wast.js:
* wasm/spec-tests/unreached-invalid.wast.js:
* wasm/spec-tests/unwind.wast.js:
* wasm/spec-tests/utf8-custom-section-id.wast.js: Added.
* wasm/spec-tests/utf8-import-field.wast.js: Added.
* wasm/spec-tests/utf8-import-module.wast.js: Added.

Source/JavaScriptCore:

* wasm/WasmB3IRGenerator.cpp:
* wasm/WasmFunctionParser.h:
* wasm/WasmModuleParser.cpp:
* wasm/WasmModuleParser.h:
* wasm/WasmParser.h:
(JSC::Wasm::Parser<SuccessType>::consumeUTF8String):
* wasm/generateWasm.py:
(memoryLog2Alignment):
* wasm/js/JSWebAssemblyTable.cpp:
(JSC::JSWebAssemblyTable::grow):
* wasm/js/JSWebAssemblyTable.h:
* wasm/js/WebAssemblyCompileErrorPrototype.cpp:
* wasm/js/WebAssemblyInstancePrototype.cpp:
* wasm/js/WebAssemblyLinkErrorPrototype.cpp:
* wasm/js/WebAssemblyMemoryPrototype.cpp:
* wasm/js/WebAssemblyModulePrototype.cpp:
* wasm/js/WebAssemblyModuleRecord.cpp:
(JSC::WebAssemblyModuleRecord::evaluate):
* wasm/js/WebAssemblyPrototype.cpp:
(JSC::webAssemblyCompileFunc):
(JSC::resolve):
(JSC::instantiate):
(JSC::compileAndInstantiate):
(JSC::webAssemblyInstantiateFunc):
* wasm/js/WebAssemblyRuntimeErrorPrototype.cpp:
* wasm/js/WebAssemblyTablePrototype.cpp:
(JSC::webAssemblyTableProtoFuncGrow):

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

2 years agoMarked imported/w3c/web-platform-tests/WebCryptoAPI/import_export/test_rsa_importKey...
jlewis3@apple.com [Tue, 13 Jun 2017 22:27:22 +0000 (22:27 +0000)]
Marked imported/w3c/web-platform-tests/WebCryptoAPI/import_export/test_rsa_importKey.https.html as failing.
https://bugs.webkit.org/show_bug.cgi?id=173335

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

2 years agoAdd logging for layout tests when rAF callbacks get suspended and resumed
commit-queue@webkit.org [Tue, 13 Jun 2017 22:23:09 +0000 (22:23 +0000)]
Add logging for layout tests when rAF callbacks get suspended and resumed
https://bugs.webkit.org/show_bug.cgi?id=173326

Patch by Antoine Quint <graouts@apple.com> on 2017-06-13
Reviewed by Simon Fraser.

In order to help diagnose webkit.org/b/168409 we log the ScriptedAnimationController
suspend count when it changes and log the backtrace so that we may understand why it
fails to be set back to 0 when some modern-media-controls tests run.

* dom/ScriptedAnimationController.cpp:
(WebCore::ScriptedAnimationController::suspend):
(WebCore::ScriptedAnimationController::resume):
(WebCore::ScriptedAnimationController::logSuspendCount):
* dom/ScriptedAnimationController.h:
* page/Settings.in:
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::resetToConsistentState):
(WebCore::InternalSettings::shouldLogScritedAnimationControllerSuspensionChange):
(WebCore::InternalSettings::setShouldLogScritedAnimationControllerSuspensionChange):
* testing/InternalSettings.h:
* testing/InternalSettings.idl:

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

2 years agoCrash when MSE backed media element changes src/srcObject during PiP
jer.noble@apple.com [Tue, 13 Jun 2017 22:07:50 +0000 (22:07 +0000)]
Crash when MSE backed media element changes src/srcObject during PiP
https://bugs.webkit.org/show_bug.cgi?id=173288

Reviewed by Alex Christensen.

Tear down the MediaPlayerPrivateMediaSourceAVFObjC's layers fully whe the player
is destroyed, which includes removing the player's AVSampleBufferDisplayLayer from
the HTMLMediaElement's fullscreen layer.

* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::~MediaPlayerPrivateMediaSourceAVFObjC):

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

2 years agoMarked imported/w3c/web-platform-tests/dom/nodes/Document-constructor-svg.svg as...
jlewis3@apple.com [Tue, 13 Jun 2017 22:03:26 +0000 (22:03 +0000)]
Marked imported/w3c/web-platform-tests/dom/nodes/Document-constructor-svg.svg as a timeout.
https://bugs.webkit.org/show_bug.cgi?id=173333

Unreviewed test gardening.

* TestExpectations:

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

2 years ago[WK2][macOS] Allow AppleEvents in Citrix View Plugin
bfulgham@apple.com [Tue, 13 Jun 2017 21:58:36 +0000 (21:58 +0000)]
[WK2][macOS] Allow AppleEvents in Citrix View Plugin
https://bugs.webkit.org/show_bug.cgi?id=173280
<rdar://problem/31913624>

Reviewed by Alexey Proskuryakov.

A slightly better fix: Allow AppleEvents for non-sandboxed plugins. This should
avoid inadvertently breaking custom plugins, etc.

* PluginProcess/mac/PluginProcessMac.mm:
(WebKit::PluginProcess::platformInitializeProcess): Switch check from a specific Citrix
test, to just allowing non-sandboxed plugins to use AppleEvents.

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

2 years agoUnreviewed JSC test gardening.
ryanhaddad@apple.com [Tue, 13 Jun 2017 21:54:57 +0000 (21:54 +0000)]
Unreviewed JSC test gardening.

* stress/check-string-ident.js:
* stress/new-largeish-contiguous-array-with-size.js:

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

2 years agoDFG doesn't properly handle a property that is change to read only in a prototype
msaboff@apple.com [Tue, 13 Jun 2017 21:52:04 +0000 (21:52 +0000)]
DFG doesn't properly handle a property that is change to read only in a prototype
https://bugs.webkit.org/show_bug.cgi?id=173321

Reviewed by Filip Pizlo.

JSTests:

* ChakraCore.yaml: Renabled fieldopts/objtypespec-newobj-invalidation.1.js.
* stress/regress-173321.js: Added new regression test.
(shouldBe):
(SimpleObject):
(test):

Source/JavaScriptCore:

We need to check for ReadOnly as well as a not being a Setter when checking
an AbsenceOfSetter.

* bytecode/PropertyCondition.cpp:
(JSC::PropertyCondition::isStillValidAssumingImpurePropertyWatchpoint):

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

2 years agoWeb Inspector: Don't use -webkit-user-modify CSS property
nvasilyev@apple.com [Tue, 13 Jun 2017 21:03:52 +0000 (21:03 +0000)]
Web Inspector: Don't use -webkit-user-modify CSS property
https://bugs.webkit.org/show_bug.cgi?id=173232

Reviewed by Devin Rousso.

Replace -webkit-user-modify CSS property with contentEditable HTML attribute.

* UserInterface/Views/Editing.css:
(.editing):
* UserInterface/Views/EditingSupport.js:
(cleanUpAfterEditing):
* UserInterface/Views/VisualStyleSelectorTreeItem.css:
(.item.visual-style-selector-item:not(.dom-element-icon).editable > .titles > .title):
* UserInterface/Views/VisualStyleSelectorTreeItem.js:
(WebInspector.VisualStyleSelectorTreeItem.prototype.ondeselect):
(WebInspector.VisualStyleSelectorTreeItem.prototype._handleMainTitleMouseDown):
(WebInspector.VisualStyleSelectorTreeItem.prototype._commitSelector):

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

2 years agoInclude PID in some UIProcess-side release logging that relates to a particular WebPr...
cdumez@apple.com [Tue, 13 Jun 2017 20:58:15 +0000 (20:58 +0000)]
Include PID in some UIProcess-side release logging that relates to a particular WebProcess
https://bugs.webkit.org/show_bug.cgi?id=173299

Reviewed by Ryosuke Niwa.

* UIProcess/BackgroundProcessResponsivenessTimer.cpp:
(WebKit::BackgroundProcessResponsivenessTimer::setResponsive):
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::didExceedActiveMemoryLimit):
(WebKit::WebProcessProxy::didExceedInactiveMemoryLimit):
(WebKit::WebProcessProxy::didExceedCPULimit):

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

2 years agoImplement W3C Secure Contexts Draft Specification
dbates@webkit.org [Tue, 13 Jun 2017 20:21:00 +0000 (20:21 +0000)]
Implement W3C Secure Contexts Draft Specification
https://bugs.webkit.org/show_bug.cgi?id=158121
<rdar://problem/26012994>

Reviewed by Brent Fulgham.

Part 4

Source/JavaScriptCore:

Adds isSecureContext to the list of common identifiers as needed to support
toggling its exposure from a runtime enabled feature flag.

* runtime/CommonIdentifiers.h:

Source/WebCore:

Adds runtime enabled feature flag, isSecureContextAttributeEnabled, to toggle exposing
the global object property isSecureContext (defaults: true - expose the property).

Test: security/isSecureContext-disabled.html

* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setIsSecureContextAttributeEnabled):
(WebCore::RuntimeEnabledFeatures::isSecureContextAttributeEnabled):
* page/WindowOrWorkerGlobalScope.idl:

Source/WebKit/mac:

Adds a preference to toggle the runtime enabled feature flag isSecureContextAttributeEnabled.

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

Source/WebKit/win:

Adds a preference to toggle the runtime enabled feature flag isSecureContextAttributeEnabled.

* Interfaces/IWebPreferencesPrivate.idl: Bump the version.
* WebPreferenceKeysPrivate.h:
* WebPreferences.cpp:
(WebPreferences::initializeDefaultSettings):
(WebPreferences::QueryInterface):
(WebPreferences::setIsSecureContextAttributeEnabled):
(WebPreferences::isSecureContextAttributeEnabled):
* WebPreferences.h:
* WebView.cpp:
(WebView::notifyPreferencesChanged):

Source/WebKit2:

Adds a preference to toggle the runtime enabled feature flag isSecureContextAttributeEnabled.

* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetIsSecureContextAttributeEnabled):
(WKPreferencesGetIsSecureContextAttributeEnabled):
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):

Tools:

Expose the isSecureContext attribute by default in DumpRenderTree and WebKitTestRunner.
Teach DumpRenderTree for Mac and WebKitTestRunner to parse the test option enableIsSecureContextAttribute
to toggle the runtime enabled feature flag isSecureContextAttributeEnabled.

* DumpRenderTree/TestOptions.h:
* DumpRenderTree/TestOptions.mm:
(TestOptions::TestOptions):
* DumpRenderTree/mac/DumpRenderTree.mm:
(setWebPreferencesForTestOptions):
* DumpRenderTree/win/DumpRenderTree.cpp:
(enableExperimentalFeatures):
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetPreferencesToConsistentValues):
(WTR::updateTestOptionsFromTestHeader):
* WebKitTestRunner/TestOptions.h:
(WTR::TestOptions::hasSameInitializationOptions):

LayoutTests:

Adds a test to ensure that the global object property isSecureContext is not
exposed (is undefined) when the runtime enabled feature flag isSecureContextAttributeEnabled
is disabled.

* platform/win/TestExpectations: Skip the test as DumpRenderTree on Windows does not support
parsing of test options. See <https://bugs.webkit.org/show_bug.cgi?id=173281> for more details.
* security/isSecureContext-disabled-expected.txt: Added.
* security/isSecureContext-disabled.html: Added.
* security/resources/worker-isSecureContext-disabled.js: Added.

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

2 years agoTest persistent WKHTTPCookieStorages on iOS
commit-queue@webkit.org [Tue, 13 Jun 2017 20:12:29 +0000 (20:12 +0000)]
Test persistent WKHTTPCookieStorages on iOS
https://bugs.webkit.org/show_bug.cgi?id=173284
<rdar://problem/32260156>

Patch by Alex Christensen <achristensen@webkit.org> on 2017-06-13
Reviewed by Alexey Proskuryakov.

* TestWebKitAPI/Tests/WebKit2Cocoa/WKHTTPCookieStore.mm:
(TEST):

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

2 years agoProtect lifetime of media element during HTMLMediaElement::notifyAboutPlaying()
jer.noble@apple.com [Tue, 13 Jun 2017 19:14:23 +0000 (19:14 +0000)]
Protect lifetime of media element during HTMLMediaElement::notifyAboutPlaying()
https://bugs.webkit.org/show_bug.cgi?id=173320
<rdar://problem/32590276>

Reviewed by Brent Fulgham.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::notifyAboutPlaying):

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

2 years ago[WK2][macOS] Allow AppleEvents in Citrix View Plugin
bfulgham@apple.com [Tue, 13 Jun 2017 18:39:26 +0000 (18:39 +0000)]
[WK2][macOS] Allow AppleEvents in Citrix View Plugin
https://bugs.webkit.org/show_bug.cgi?id=173280
<rdar://problem/31913624>

Reviewed by Alexey Proskuryakov.

Allow the Citrix Viewer plugin to issue Apple Events.

* PluginProcess/mac/PluginProcessMac.mm:
(WebKit::PluginProcess::platformInitializeProcess): Allow AppleEvents for the Citrix Viewer plugin.

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

2 years ago[Win] WebKit fails to paint the bottom lines of the window at 125% scale.
pvollan@apple.com [Tue, 13 Jun 2017 18:03:16 +0000 (18:03 +0000)]
[Win] WebKit fails to paint the bottom lines of the window at 125% scale.
https://bugs.webkit.org/show_bug.cgi?id=173318

Reviewed by Alex Christensen.

The logical frame size is currently calculated by scaling the frame size in pixels,
and rounding the coordinates to the nearest integers. The computed logical frame
size will in some cases be smaller than the scaled frame size in pixels, since it is
represented as an IntSize. In these cases, the bottom line will not be painted.
Instead of calculating the logical frame size by rounding the scaled frame in
pixels, find the enclosing rectangle of the scaled frame rectangle in pixels.

* WebView.cpp:
(WebView::sizeChanged):

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

2 years ago[GTK] Blob download doesn't work
carlosgc@webkit.org [Tue, 13 Jun 2017 17:55:25 +0000 (17:55 +0000)]
[GTK] Blob download doesn't work
https://bugs.webkit.org/show_bug.cgi?id=172442

Reviewed by Carlos Alberto Lopez Perez.

Source/WebKit2:

GTK+ API uses URIs for download destination paths, and passes that URIs to the WebKit internals. But WebKit
expects download destination location to be a local path. This is not a problem for normal downloads, because
the soup backend handles the cases of download destination being a URI and a path. For blob downloads
NetworkDataTaskBlob is used, and it always expects the download destination to be a local path, failing in
FileSystem::openFile() when a URI is passed. We need to keep using local files internally and convert to URIs
only when exposing those paths to the API.

* NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::NetworkDataTaskSoup::download): Stop handling URIs here, we should always expect local files.
* UIProcess/API/gtk/WebKitDownload.cpp:
(webkitDownloadDecideDestinationWithSuggestedFilename): Convert destination URI to filanme before pasing it to DownloadClient.
(webkitDownloadDestinationCreated): Convert the destination path to a URI before passing it to WebKitDownload::created-destionation signal.
* UIProcess/API/gtk/WebKitDownloadClient.cpp:
* UIProcess/API/gtk/WebKitDownloadPrivate.h:

Tools:

Add a unit test to check blob downloads.

* TestWebKitAPI/Tests/WebKit2Gtk/TestDownloads.cpp:
(testBlobDownload):
(beforeAll):

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

2 years ago[GTK] Do not include WTR, DumpRendererTree and ImageDiff in tarballs
carlosgc@webkit.org [Tue, 13 Jun 2017 17:50:55 +0000 (17:50 +0000)]
[GTK] Do not include WTR, DumpRendererTree and ImageDiff in tarballs
https://bugs.webkit.org/show_bug.cgi?id=173316

Reviewed by Alex Christensen.

It's not really possible to run layout tests from the tarball, so it's better not to include those files.

* gtk/manifest.txt.in:

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

2 years ago[WTR] Crash in WebGeolocationManagerProxy::~WebGeolocationManagerProxy() when running...
carlosgc@webkit.org [Tue, 13 Jun 2017 17:48:50 +0000 (17:48 +0000)]
[WTR] Crash in WebGeolocationManagerProxy::~WebGeolocationManagerProxy() when running several tests
https://bugs.webkit.org/show_bug.cgi?id=173315

Reviewed by Darin Adler.

This has started to happen after r218165, but I don't think it's a regression, but that r218165 revealed the bug
somehow in WTR. The problem is that GeolocationProviderMock keeps a pointer to the WKGeolocationManagerRef
returned by WKContextGetGeolocationManager. But in TestController::generatePageConfiguration() the context is
freed before the GeolocationProviderMock. When the GeolocationProviderMock is then destroyed, it calls
WKGeolocationManagerSetProvider(m_geolocationManager, 0); but the WKGeolocationManagerRef has already been
destroyed. GeolocationProviderMock should keep a reference to the WKContext to ensure the
WKGeolocationManagerRef is not destroyed.

* WebKitTestRunner/GeolocationProviderMock.cpp:
(WTR::GeolocationProviderMock::GeolocationProviderMock):
* WebKitTestRunner/GeolocationProviderMock.h:

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

2 years agogetReceivers() should return transceivers that have only an active receiver
commit-queue@webkit.org [Tue, 13 Jun 2017 17:41:13 +0000 (17:41 +0000)]
getReceivers() should return transceivers that have only an active receiver
https://bugs.webkit.org/show_bug.cgi?id=173313

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

Source/WebCore:

Test: webrtc/video-receivers.html

Creating transceivers for receivers created from an offer.
Setting these as recvonly.

* Modules/mediastream/RTCRtpTransceiver.h:
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::LibWebRTCPeerConnectionBackend::videoReceiver):
(WebCore::LibWebRTCPeerConnectionBackend::audioReceiver):

LayoutTests:

* fast/mediastream/RTCPeerConnection-addTrack-reuse-sender-expected.txt:
* webrtc/video-receivers-expected.txt: Added.
* webrtc/video-receivers.html: Added.

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

2 years agoRefresh WPT tests up to cb7017e654fb4daddb9dee8d654c78b26e61fa9f
commit-queue@webkit.org [Tue, 13 Jun 2017 17:31:18 +0000 (17:31 +0000)]
Refresh WPT tests up to cb7017e654fb4daddb9dee8d654c78b26e61fa9f
https://bugs.webkit.org/show_bug.cgi?id=173260

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

LayoutTests/imported/w3c:

* resources/TestRepositories:
* resources/import-expectations.json:
* resources/resource-files.json:
* web-platform-tests/FileAPI/BlobURL/support/file_test2.txt: Added.
* web-platform-tests/FileAPI/FileReader/support/file_test1.txt: Added.
* web-platform-tests/IndexedDB/large-nested-cloning-expected.txt: Added.
* web-platform-tests/IndexedDB/large-nested-cloning.html: Added.
* web-platform-tests/IndexedDB/large-requests-abort-expected.txt: Added.
* web-platform-tests/IndexedDB/large-requests-abort.html: Added.
* web-platform-tests/IndexedDB/request-event-ordering-expected.txt: Added.
* web-platform-tests/IndexedDB/request-event-ordering.html: Added.
* web-platform-tests/IndexedDB/support-promises.js:
* web-platform-tests/IndexedDB/w3c-import.log:
* web-platform-tests/README.md:
* web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.worker-expected.txt:
* web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.worker-expected.txt:
* web-platform-tests/WebCryptoAPI/generateKey/test_failures.https-expected.txt:
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_RSA-PSS.https-expected.txt:
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_RSA-PSS.https-expected.txt:
* web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.worker-expected.txt:
* web-platform-tests/WebCryptoAPI/import_export/test_rsa_importKey.https-expected.txt:
* web-platform-tests/WebCryptoAPI/sign_verify/rsa_pkcs.worker-expected.txt:
* web-platform-tests/WebCryptoAPI/sign_verify/rsa_pss.worker-expected.txt:
* web-platform-tests/WebCryptoAPI/sign_verify/test_rsa_pkcs.https-expected.txt:
* web-platform-tests/WebCryptoAPI/sign_verify/test_rsa_pss.https-expected.txt:
* web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.https-expected.txt:
* web-platform-tests/XMLHttpRequest/anonymous-mode-unsupported-expected.txt:
* web-platform-tests/XMLHttpRequest/open-after-setrequestheader-expected.txt:
* web-platform-tests/XMLHttpRequest/open-referer-expected.txt:
* web-platform-tests/XMLHttpRequest/open-url-redirected-worker-origin-expected.txt:
* web-platform-tests/XMLHttpRequest/resources/infinite-redirects.py:
(main):
* web-platform-tests/XMLHttpRequest/responsetype-expected.txt:
* web-platform-tests/XMLHttpRequest/send-accept-language-expected.txt:
* web-platform-tests/XMLHttpRequest/send-blob-with-no-mime-type-expected.txt:
* web-platform-tests/XMLHttpRequest/setrequestheader-allow-empty-value-expected.txt:
* web-platform-tests/XMLHttpRequest/setrequestheader-allow-whitespace-in-value-expected.txt:
* web-platform-tests/XMLHttpRequest/setrequestheader-case-insensitive-expected.txt:
* web-platform-tests/XMLHttpRequest/setrequestheader-content-type-expected.txt:
* web-platform-tests/XMLHttpRequest/setrequestheader-header-allowed-expected.txt:
* web-platform-tests/XMLHttpRequest/setrequestheader-header-forbidden-expected.txt:
* web-platform-tests/XMLHttpRequest/setrequestheader-open-setrequestheader-expected.txt:
* web-platform-tests/XMLHttpRequest/timeout-sync-expected.txt:
* web-platform-tests/check_stability.py:
(Browser.wptrunner_args):
(Chrome.wptrunner_args):
(main):
* web-platform-tests/ci_unittest.sh:
* web-platform-tests/css/css-scoping-1/css-scoping-shadow-host-namespace-expected.html: Added.
* web-platform-tests/css/css-scoping-1/css-scoping-shadow-host-namespace.html: Added.
* web-platform-tests/css/css-scoping-1/w3c-import.log:
* web-platform-tests/css/css-shapes-1/OWNERS: Added.
* web-platform-tests/css/selectors4/w3c-import.log:
* web-platform-tests/cssom/w3c-import.log:
* web-platform-tests/custom-elements/parser/parser-fallsback-to-unknown-element-expected.txt:
* web-platform-tests/dom/nodes/Document-constructor-svg-expected.txt: Added.
* web-platform-tests/dom/nodes/Document-constructor-svg.svg: Added.
* web-platform-tests/dom/nodes/Document-constructor-xml-expected.txt: Added.
* web-platform-tests/dom/nodes/Document-constructor-xml.xml: Copied from LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-constructor.html.
* web-platform-tests/dom/nodes/Document-constructor.html:
* web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_datauri_01-expected.txt:
* web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_datauri_02-expected.txt:
* web-platform-tests/dom/nodes/Element-matches-expected.txt:
* web-platform-tests/dom/nodes/Element-webkitMatchesSelector-expected.txt:
* web-platform-tests/dom/nodes/ParentNode-querySelector-All-content.html:
* web-platform-tests/dom/nodes/ParentNode-querySelector-All-content.xht:
* web-platform-tests/dom/nodes/ParentNode-querySelector-All-expected.txt:
* web-platform-tests/dom/nodes/ParentNode-querySelector-All-xht-expected.txt:
* web-platform-tests/dom/nodes/ParentNode-querySelector-All.js:
(setupSpecialElements):
* web-platform-tests/dom/nodes/getElementsByClassName-14-expected.txt:
* web-platform-tests/dom/nodes/getElementsByClassName-14.htm:
* web-platform-tests/dom/nodes/selectors.js:
* web-platform-tests/dom/nodes/w3c-import.log:
* web-platform-tests/encrypted-media/scripts/requestmediakeysystemaccess.js:
* web-platform-tests/fetch/api/basic/request-headers.any-expected.txt:
* web-platform-tests/fetch/api/basic/request-headers.any.worker-expected.txt:
* web-platform-tests/fetch/api/headers/headers-record-expected.txt:
* web-platform-tests/fetch/api/headers/headers-record.html:
* web-platform-tests/fetch/dangling-markup-mitigation.tentative-expected.txt: Added.
* web-platform-tests/fetch/dangling-markup-mitigation.tentative.html: Added.
* web-platform-tests/fetch/w3c-import.log:
* web-platform-tests/html/browsers/history/the-location-interface/location-origin-idna.sub.window.js: Added.
* web-platform-tests/html/browsers/history/the-location-interface/resources/post-your-origin.html: Added.
* web-platform-tests/html/browsers/history/the-location-interface/resources/w3c-import.log:
* web-platform-tests/html/browsers/history/the-location-interface/w3c-import.log:
* web-platform-tests/html/browsers/the-window-object/window-open-noopener-expected.txt:
* web-platform-tests/html/dom/documents/resource-metadata-management/document-lastModified-expected.txt:
* web-platform-tests/html/dom/elements-metadata.js:
* web-platform-tests/html/dom/elements-misc.js:
* web-platform-tests/html/dom/elements/elements-in-the-dom/historical-expected.txt:
* web-platform-tests/html/dom/elements/elements-in-the-dom/historical.html:
* web-platform-tests/html/dom/interfaces.worker-expected.txt:
* web-platform-tests/html/dom/reflection.js:
(ReflectionTests.reflects):
(ReflectionTests.enumExpected):
* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/not-in-shadow-tree-expected.txt:
* web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/srclang-expected.txt:
* web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/TextTrack/language-expected.txt:
* web-platform-tests/html/semantics/embedded-content/the-img-element/ismap/img-ismap-coordinates-iframe-after.html: Added.
* web-platform-tests/html/semantics/embedded-content/the-img-element/ismap/img-ismap-coordinates-iframe-before.html: Added.
* web-platform-tests/html/semantics/embedded-content/the-img-element/ismap/img-ismap-coordinates-iframe-inside.html: Added.
* web-platform-tests/html/semantics/embedded-content/the-img-element/ismap/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/resources/w3c-import.log.
* web-platform-tests/html/semantics/forms/the-input-element/valueMode-expected.txt:
* web-platform-tests/html/semantics/forms/the-input-element/valueMode.html:
* web-platform-tests/html/semantics/forms/the-option-element/option-element-constructor-expected.txt:
* web-platform-tests/html/semantics/forms/the-option-element/option-element-constructor.html:
* web-platform-tests/html/semantics/interactive-elements/contextmenu-historical-expected.txt: Added.
* web-platform-tests/html/semantics/interactive-elements/contextmenu-historical.html: Added.
* web-platform-tests/html/semantics/interactive-elements/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/fetch/w3c-import.log.
* web-platform-tests/html/semantics/interfaces.js:
* web-platform-tests/html/semantics/selectors/pseudo-classes/checked-expected.txt:
* web-platform-tests/html/semantics/selectors/pseudo-classes/checked.html:
* web-platform-tests/html/semantics/selectors/pseudo-classes/enabled-expected.txt:
* web-platform-tests/html/semantics/selectors/pseudo-classes/enabled.html:
* web-platform-tests/html/webappapis/scripting/events/event-handler-all-global-events-expected.txt: Added.
* web-platform-tests/html/webappapis/scripting/events/event-handler-all-global-events.html: Added.
* web-platform-tests/html/webappapis/scripting/events/event-handler-onauxclick-expected.txt: Removed.
* web-platform-tests/html/webappapis/scripting/events/event-handler-onauxclick.html: Removed.
* web-platform-tests/html/webappapis/scripting/events/inline-event-handler-ordering-expected.txt:
* web-platform-tests/html/webappapis/scripting/events/inline-event-handler-ordering.html:
* web-platform-tests/html/webappapis/scripting/events/invalid-uncompiled-raw-handler-compiled-late.html:
* web-platform-tests/html/webappapis/scripting/events/w3c-import.log:
* web-platform-tests/html/webappapis/scripting/processing-model-2/window-onerror-parse-error-expected.txt:
* web-platform-tests/html/webappapis/scripting/processing-model-2/window-onerror-runtime-error-expected.txt:
* web-platform-tests/html/webappapis/scripting/processing-model-2/window-onerror-runtime-error-throw-expected.txt:
* web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/NavigatorID.worker-expected.txt:
* web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator-pluginarray-expected.txt: Added.
* web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator-pluginarray.html: Added.
* web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/w3c-import.log:
* web-platform-tests/lint.whitelist:
* web-platform-tests/resources/OWNERS: Added.
* web-platform-tests/resources/idlharness.js:
(IdlArray.prototype.assert_type_is):
(IdlInterface.prototype.test_self):
(IdlInterface.prototype.test_member_const):
(IdlInterface.prototype.test_member_attribute):
(IdlInterface.prototype.do_member_operation_asserts):
(IdlInterface.prototype.test_member_iterable):
(IdlInterface.prototype.test_member_stringifier):
(IdlInterface.prototype.do_interface_attribute_asserts):
* web-platform-tests/resources/test/README.md: Added.
* web-platform-tests/resources/test/config.test.json: Added.
* web-platform-tests/resources/test/conftest.py: Added.
(pytest_collect_file):
(pytest_configure):
(HTMLItem):
(HTMLItem.__init__):
(HTMLItem.reportinfo):
(HTMLItem.repr_failure):
(HTMLItem.runtest):
(HTMLItem._assert_sequence):
(HTMLItem._scrub_stack):
(HTMLItem._expand_status):
(HTMLItem._summarize_test):
(HTMLItem._summarize_status):
* web-platform-tests/resources/test/harness.html: Added.
* web-platform-tests/resources/test/tests/add_cleanup.html: Added.
* web-platform-tests/resources/test/tests/add_cleanup_err.html: Added.
* web-platform-tests/resources/test/tests/add_cleanup_err_multi.html: Added.
* web-platform-tests/resources/test/tests/api-tests-1.html: Added.
* web-platform-tests/resources/test/tests/api-tests-2.html: Added.
* web-platform-tests/resources/test/tests/api-tests-3.html: Added.
* web-platform-tests/resources/test/tests/generate-callback.html: Added.
* web-platform-tests/resources/test/tests/iframe-callback.html: Added.
* web-platform-tests/resources/test/tests/iframe-consolidate-errors.html: Added.
* web-platform-tests/resources/test/tests/iframe-consolidate-tests.html: Added.
* web-platform-tests/resources/test/tests/iframe-msg.html: Added.
* web-platform-tests/resources/test/tests/order.html: Added.
* web-platform-tests/resources/test/tests/promise-async.html: Added.
* web-platform-tests/resources/test/tests/promise.html: Added.
* web-platform-tests/resources/test/tests/single-page-test-fail.html: Added.
* web-platform-tests/resources/test/tests/single-page-test-no-assertions.html: Added.
* web-platform-tests/resources/test/tests/single-page-test-no-body.html: Added.
* web-platform-tests/resources/test/tests/single-page-test-pass.html: Added.
* web-platform-tests/resources/test/tests/uncaught-exception-handle.html: Added.
* web-platform-tests/resources/test/tests/uncaught-exception-ignore.html: Added.
* web-platform-tests/resources/test/tests/w3c-import.log: Added.
* web-platform-tests/resources/test/tests/worker-dedicated.html: Added.
* web-platform-tests/resources/test/tests/worker-error.js: Added.
* web-platform-tests/resources/test/tests/worker-service.html: Added.
* web-platform-tests/resources/test/tests/worker-shared.html: Added.
* web-platform-tests/resources/test/tests/worker.js: Added.
(test):
(async_test):
* web-platform-tests/resources/test/tox.ini: Added.
* web-platform-tests/resources/test/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/fetch/w3c-import.log.
* web-platform-tests/resources/test/wptserver.py: Added.
(WPTServer):
(WPTServer.__init__):
(WPTServer.start):
(WPTServer.stop):
(WPTServer.url):
* web-platform-tests/resources/testharness.js:
* web-platform-tests/resources/w3c-import.log:
* web-platform-tests/shadow-dom/slotchange-event-expected.txt:
* web-platform-tests/shadow-dom/slotchange-event.html:
* web-platform-tests/shadow-dom/slots-expected.txt:
* web-platform-tests/shadow-dom/slots-fallback-expected.txt:
* web-platform-tests/shadow-dom/slots-fallback-in-document-expected.txt:
* web-platform-tests/shadow-dom/slots-fallback-in-document.html:
* web-platform-tests/shadow-dom/slots-fallback.html:
* web-platform-tests/shadow-dom/slots.html:
* web-platform-tests/streams/piping/general-expected.txt:
* web-platform-tests/tools/OWNERS: Added.
* web-platform-tests/tools/browserutils/browser.py:
(Firefox.install):
(Firefox.find_certutil):
(Firefox.install_webdriver):
(Chrome.install_webdriver):
(Chrome.prepare_environment):
(Edge):
(Edge.install):
(Edge.find_webdriver):
(Edge.install_webdriver):
(Edge.version):
(Servo):
(Servo.install):
(Servo.find_binary):
(Servo.find_webdriver):
(Servo.install_webdriver):
(Servo.version):
* web-platform-tests/tools/browserutils/install.py: Added.
* web-platform-tests/tools/browserutils/requirements.txt: Added.
* web-platform-tests/tools/browserutils/utils.py:
(get):
* web-platform-tests/tools/browserutils/virtualenv.py:
(Virtualenv.create):
(Virtualenv.install):
* web-platform-tests/tools/browserutils/w3c-import.log:
* web-platform-tests/tools/runner/index.html:
* web-platform-tests/tools/runner/runner.css:
(#current_test):
(#current_test a):
(#current_test .match):
* web-platform-tests/tools/runner/runner.js:
(ManifestIterator.prototype.match_location):
(ManifestIterator.prototype.matches):
(VisualOutput.prototype.on_result):
(VisualOutput.prototype.steady_status):
(this.skip_button.onclick):
(Runner):
(Runner.prototype.run_next_test):
(Runner.prototype.display_current_test):
* web-platform-tests/tools/w3c-import.log:
* web-platform-tests/tools/wptrun.py:
(args_general):
(check_environ):
(args_edge):
(setup_edge):
(args_servo):
(setup_servo):
(setup_wptrunner):
(main):
* web-platform-tests/tools/wptrunner/OWNERS: Added.
* web-platform-tests/tools/wptrunner/requirements_edge.txt: Added.
* web-platform-tests/tools/wptrunner/tox.ini:
* web-platform-tests/tools/wptrunner/w3c-import.log:
* web-platform-tests/tools/wptrunner/wptrunner/browsers/edge.py:
(browser_kwargs):
* web-platform-tests/tools/wptrunner/wptrunner/environment.py:
(TestEnvironment.ensure_started):
(TestEnvironment):
(TestEnvironment.test_servers):
* web-platform-tests/tools/wptrunner/wptrunner/executors/executorservo.py:
(ServoTestharnessExecutor.__init__):
* web-platform-tests/update-built-tests.sh:
* web-platform-tests/url/interfaces.any-expected.txt:
* web-platform-tests/url/interfaces.any.js:
* web-platform-tests/url/interfaces.any.worker-expected.txt:
* web-platform-tests/url/toascii.json: Added.
* web-platform-tests/url/toascii.window.js: Added.
(async_test.t.string_appeared_here.request.send.request.responseType.string_appeared_here.request.onload.t.step_func_done):
(string_appeared_here.makeURL):
(runTests):
* web-platform-tests/url/w3c-import.log:
* web-platform-tests/webrtc/OWNERS:
* web-platform-tests/webrtc/RTCCertificate-expected.txt: Added.
* web-platform-tests/webrtc/RTCCertificate.html: Added.
* web-platform-tests/webrtc/RTCPeerConnection-addTransceiver-expected.txt: Added.
* web-platform-tests/webrtc/RTCPeerConnection-addTransceiver.html: Added.
* web-platform-tests/webrtc/RTCPeerConnection-constructor-expected.txt:
* web-platform-tests/webrtc/RTCPeerConnection-constructor.html:
* web-platform-tests/webrtc/RTCPeerConnection-createAnswer-expected.txt: Added.
* web-platform-tests/webrtc/RTCPeerConnection-createAnswer.html: Added.
* web-platform-tests/webrtc/RTCPeerConnection-createDataChannel-expected.txt:
* web-platform-tests/webrtc/RTCPeerConnection-createDataChannel.html:
* web-platform-tests/webrtc/RTCPeerConnection-createOffer-expected.txt: Added.
* web-platform-tests/webrtc/RTCPeerConnection-createOffer.html: Added.
* web-platform-tests/webrtc/RTCPeerConnection-generateCertificate-expected.txt: Added.
* web-platform-tests/webrtc/RTCPeerConnection-generateCertificate.html: Added.
* web-platform-tests/webrtc/RTCPeerConnection-getTransceivers-expected.txt: Added.
* web-platform-tests/webrtc/RTCPeerConnection-getTransceivers.html: Added.
* web-platform-tests/webrtc/RTCPeerConnection-helper.js: Added.
(countLine):
(countAudioLine):
(countVideoLine):
(countApplicationLine):
(similarMediaDescriptions):
(assert_is_session_description):
(assert_session_desc_equals):
(assert_session_desc_not_equals):
(generateOffer):
* web-platform-tests/webrtc/RTCPeerConnection-onnegotiationneeded-expected.txt: Added.
* web-platform-tests/webrtc/RTCPeerConnection-onnegotiationneeded.html: Added.
* web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-expected.txt: Added.
* web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription.html: Added.
* web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-expected.txt:
* web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription.html:
* web-platform-tests/webrtc/RTCPeerConnectionIceEvent-constructor-expected.txt:
* web-platform-tests/webrtc/RTCPeerConnectionIceEvent-constructor.html:
* web-platform-tests/webrtc/RTCSctpTransport-constructor-expected.txt: Added.
* web-platform-tests/webrtc/RTCSctpTransport-constructor.html: Added.
* web-platform-tests/webrtc/w3c-import.log:
* web-platform-tests/wptrun:

LayoutTests:

* TestExpectations:
* platform/ios-simulator-wk2/TestExpectations:
* platform/mac-wk1/imported/w3c/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.https-expected.txt: Added.
* platform/mac/imported/w3c/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/NavigatorID.worker-expected.png: Added.
* tests-options.json:

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

2 years agoUnable to paste text that was copied from a page into the universal search field
wenson_hsieh@apple.com [Tue, 13 Jun 2017 16:58:13 +0000 (16:58 +0000)]
Unable to paste text that was copied from a page into the universal search field
https://bugs.webkit.org/show_bug.cgi?id=173293
<rdar://problem/32440918>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Vend "public.utf8-plain-text" and "public.utf16-plain-text" as additional representations on the pasteboard when
copying both rich and plain web content in PlatformPasteboardIOS.mm. This is because UITextView no longer
supports pasting "public.text" as text in iOS 11.

Tests:
UIPasteboardTests.CopyPlainTextWritesConcreteTypes
UIPasteboardTests.CopyRichTextWritesConcreteTypes

* platform/ios/PasteboardIOS.mm:
(WebCore::Pasteboard::writePlainText):
* platform/ios/PlatformPasteboardIOS.mm:
(WebCore::PlatformPasteboard::write):

Source/WebKit2:

Add boilerplate SPI on WKPreferences to enable JavaScript access to copy and paste.

* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _setJavaScriptCanAccessClipboard:]):
(-[WKPreferences _javaScriptCanAccessClipboard]):
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:

Tools:

Adds 2 new unit tests for copying plain and rich selected web content.
See WebCore and WebKit ChangeLogs for more detail.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit2Cocoa/rich-and-plain-text.html: Added.
* TestWebKitAPI/Tests/ios/UIPasteboardTests.mm: Added.
(TestWebKitAPI::dataForPasteboardType):
(TestWebKitAPI::setUpWebViewForPasteboardTests):
(TestWebKitAPI::TEST):

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

2 years agoRename JSDOMWindowShell to JSDOMWindowProxy to match the HTML5 spec.
commit-queue@webkit.org [Tue, 13 Jun 2017 16:47:42 +0000 (16:47 +0000)]
Rename JSDOMWindowShell to JSDOMWindowProxy to match the HTML5 spec.
https://bugs.webkit.org/show_bug.cgi?id=80733

Patch by Sam Weinig <sam@webkit.org> on 2017-06-13
Reviewed by Chris Dumez.

Source/WebCore:

Goodbye dear shell.

* CMakeLists.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/DOMWrapperWorld.cpp:
(WebCore::DOMWrapperWorld::~DOMWrapperWorld):
(WebCore::DOMWrapperWorld::clearWrappers):
* bindings/js/DOMWrapperWorld.h:
(WebCore::DOMWrapperWorld::didCreateWindowProxy):
(WebCore::DOMWrapperWorld::didDestroyWindowProxy):
(WebCore::DOMWrapperWorld::didCreateWindowShell): Deleted.
(WebCore::DOMWrapperWorld::didDestroyWindowShell): Deleted.
* bindings/js/JSBindingsAllInOne.cpp:
* bindings/js/JSDOMWindowBase.cpp:
(WebCore::JSDOMWindowBase::JSDOMWindowBase):
(WebCore::JSDOMWindowBase::finishCreation):
(WebCore::JSDOMWindowBase::willRemoveFromWindowProxy):
(WebCore::JSDOMWindowBase::proxy):
(WebCore::toJSDOMWindow):
(WebCore::JSDOMWindowBase::willRemoveFromWindowShell): Deleted.
(WebCore::JSDOMWindowBase::shell): Deleted.
* bindings/js/JSDOMWindowBase.h:
(WebCore::toJS):
(WebCore::toJSDOMWindow):
* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::JSDOMWindow::toWrapped):
* bindings/js/JSDOMWindowCustom.h:
* bindings/js/JSDOMWindowProperties.h:
(WebCore::JSDOMWindowProperties::JSDOMWindowProperties):
* bindings/js/JSDOMWindowProxy.cpp: Copied from WebCore/bindings/js/JSDOMWindowShell.cpp.
(WebCore::JSDOMWindowProxy::JSDOMWindowProxy):
(WebCore::JSDOMWindowProxy::finishCreation):
(WebCore::JSDOMWindowProxy::destroy):
(WebCore::JSDOMWindowProxy::setWindow):
(WebCore::JSDOMWindowProxy::wrapped):
(WebCore::JSDOMWindowProxy::toWrapped):
(WebCore::toJS):
(WebCore::toJSDOMWindowProxy):
(WebCore::JSDOMWindowShell::JSDOMWindowShell): Deleted.
(WebCore::JSDOMWindowShell::finishCreation): Deleted.
(WebCore::JSDOMWindowShell::destroy): Deleted.
(WebCore::JSDOMWindowShell::setWindow): Deleted.
(WebCore::JSDOMWindowShell::wrapped): Deleted.
(WebCore::JSDOMWindowShell::toWrapped): Deleted.
(WebCore::toJSDOMWindowShell): Deleted.
* bindings/js/JSDOMWindowProxy.h: Copied from WebCore/bindings/js/JSDOMWindowShell.h.
(WebCore::JSDOMWindowProxy::create):
(WebCore::toJSDOMWindowProxy):
(WebCore::JSDOMWindowShell::window): Deleted.
(WebCore::JSDOMWindowShell::create): Deleted.
(WebCore::JSDOMWindowShell::createStructure): Deleted.
(WebCore::JSDOMWindowShell::world): Deleted.
(WebCore::toJSDOMWindowShell): Deleted.
* bindings/js/JSDOMWindowShell.cpp: Removed.
* bindings/js/JSDOMWindowShell.h: Removed.
* bindings/js/JSEventTargetCustom.cpp:
(WebCore::JSEventTarget::toWrapped):
* bindings/js/JSHTMLDocumentCustom.cpp:
(WebCore::JSHTMLDocument::open):
* bindings/js/ScheduledAction.cpp:
(WebCore::ScheduledAction::execute):
* bindings/js/ScriptCachedFrameData.cpp:
(WebCore::ScriptCachedFrameData::ScriptCachedFrameData):
(WebCore::ScriptCachedFrameData::restore):
* bindings/js/ScriptController.cpp:
(WebCore::collectGarbageAfterWindowProxyDestruction):
(WebCore::ScriptController::~ScriptController):
(WebCore::ScriptController::destroyWindowProxy):
(WebCore::ScriptController::createWindowProxy):
(WebCore::ScriptController::evaluateInWorld):
(WebCore::ScriptController::loadModuleScriptInWorld):
(WebCore::ScriptController::linkAndEvaluateModuleScriptInWorld):
(WebCore::ScriptController::evaluateModule):
(WebCore::ScriptController::windowProxies):
(WebCore::ScriptController::clearWindowProxiesNotMatchingDOMWindow):
(WebCore::ScriptController::setDOMWindowForWindowProxy):
(WebCore::ScriptController::initScript):
(WebCore::ScriptController::setupModuleScriptHandlers):
(WebCore::ScriptController::eventHandlerPosition):
(WebCore::ScriptController::enableEval):
(WebCore::ScriptController::disableEval):
(WebCore::ScriptController::canAccessFromCurrentOrigin):
(WebCore::ScriptController::attachDebugger):
(WebCore::ScriptController::updateDocument):
(WebCore::ScriptController::cacheableBindingRootObject):
(WebCore::ScriptController::bindingRootObject):
(WebCore::ScriptController::createRootObject):
(WebCore::ScriptController::collectIsolatedContexts):
(WebCore::ScriptController::windowScriptNPObject):
(WebCore::ScriptController::jsObjectForPluginElement):
(WebCore::ScriptController::cleanupScriptObjectsForPlugin):
(WebCore::ScriptController::clearScriptObjects):
(WebCore::ScriptController::executeIfJavaScriptURL):
(WebCore::collectGarbageAfterWindowShellDestruction): Deleted.
(WebCore::ScriptController::destroyWindowShell): Deleted.
(WebCore::ScriptController::createWindowShell): Deleted.
(WebCore::ScriptController::windowShells): Deleted.
(WebCore::ScriptController::clearWindowShellsNotMatchingDOMWindow): Deleted.
(WebCore::ScriptController::setDOMWindowForWindowShell): Deleted.
* bindings/js/ScriptController.h:
(WebCore::ScriptController::windowProxy):
(WebCore::ScriptController::existingWindowProxy):
(WebCore::ScriptController::globalObject):
(WebCore::ScriptController::windowShell): Deleted.
(WebCore::ScriptController::existingWindowShell): Deleted.
* bindings/js/ScriptControllerMac.mm:
(WebCore::ScriptController::windowScriptObject):
* bindings/js/ScriptState.cpp:
(WebCore::mainWorldExecState):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateHeader):
(GenerateOverloadDispatcher):
(GenerateImplementation):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodOverloadDispatcher):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::clear):
(WebCore::FrameLoader::dispatchDidClearWindowObjectInWorld):
* page/Frame.cpp:
* page/csp/ContentSecurityPolicy.cpp:
(WebCore::ContentSecurityPolicy::didCreateWindowProxy):
(WebCore::ContentSecurityPolicy::didCreateWindowShell): Deleted.
* page/csp/ContentSecurityPolicy.h:

Source/WebInspectorUI:

* UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:
(HeapSnapshot.prototype._isNodeGlobalObject):

Source/WebKit/mac:

* DOM/DOMUtility.mm:
(createDOMWrapper):
* Plugins/Hosted/NetscapePluginInstanceProxy.mm:
(WebKit::NetscapePluginInstanceProxy::getWindowNPObject):
* WebView/WebFrame.mm:
(-[WebFrame _attachScriptDebugger]):
(-[WebFrame _stringByEvaluatingJavaScriptFromString:withGlobalObject:inScriptWorld:]):

Source/WebKit/win:

* WebFrame.cpp:
(WebFrame::stringByEvaluatingJavaScriptInScriptWorld):

Source/WebKit2:

* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::windowScriptNPObject):

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

2 years agoUnreviewed, fix typo in variable introduced in r218108.
cdumez@apple.com [Tue, 13 Jun 2017 16:21:09 +0000 (16:21 +0000)]
Unreviewed, fix typo in variable introduced in r218108.

* page/cocoa/MemoryReleaseCocoa.mm:
(WebCore::platformReleaseMemory):
(WebCore::registerSQLiteMemoryPressureHandler):

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

2 years agoAX: [ATK] Implement missing AtkRelation types
jdiggs@igalia.com [Tue, 13 Jun 2017 12:42:04 +0000 (12:42 +0000)]
AX: [ATK] Implement missing AtkRelation types
https://bugs.webkit.org/show_bug.cgi?id=155494

Reviewed by Darin Adler.

Source/WebCore:

Add methods for getting the element(s) which reference a particular element via an
ARIA attribute. Then use those methods to identify and expose the expected reverse/
reciprocal AtkRelationType and targets. Also add ATK support for aria-owns.

Use SpaceSplitString in AccessibilityObject::elementsFromAttribute() so that unexpected
whitespace characters in an attribute's list of ids does not prevent the desired element
from being found.

Lastly, change the return type of AccessibilityObject::identifierAttribute() from a String
to a const AtomicString& for better efficiency.

Tests: accessibility/aria-owns.html
       accessibility/gtk/relation-types.html

* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::identifierAttribute):
(WebCore::AccessibilityObject::elementsFromAttribute):
(WebCore::AccessibilityObject::ariaElementsReferencedByAttribute):
(WebCore::AccessibilityObject::ariaControlsReferencingElements):
(WebCore::AccessibilityObject::ariaDescribedByReferencingElements):
(WebCore::AccessibilityObject::ariaFlowToReferencingElements):
(WebCore::AccessibilityObject::ariaLabelledByReferencingElements):
(WebCore::AccessibilityObject::ariaOwnsReferencingElements):
* accessibility/AccessibilityObject.h:
* accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
(setAtkRelationSetFromCoreObject):

Tools:

Add additional methods to test ARIA properties which are exposed via
AtkRelation. Implement ATK support for ariaOwnsElementAtIndex().

* WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
(WTR::AccessibilityUIElement::ariaLabelledByElementAtIndex):
(WTR::AccessibilityUIElement::ariaDescribedByElementAtIndex):
(WTR::AccessibilityUIElement::ariaOwnsReferencingElementAtIndex):
(WTR::AccessibilityUIElement::ariaFlowToReferencingElementAtIndex):
(WTR::AccessibilityUIElement::ariaControlsReferencingElementAtIndex):
(WTR::AccessibilityUIElement::ariaLabelledByReferencingElementAtIndex):
(WTR::AccessibilityUIElement::ariaDescribedByReferencingElementAtIndex):
* WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
* WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
(WTR::AccessibilityUIElement::ariaOwnsElementAtIndex):
(WTR::AccessibilityUIElement::ariaOwnsReferencingElementAtIndex):
(WTR::AccessibilityUIElement::ariaFlowToReferencingElementAtIndex):
(WTR::AccessibilityUIElement::ariaControlsReferencingElementAtIndex):
(WTR::AccessibilityUIElement::ariaLabelledByElementAtIndex):
(WTR::AccessibilityUIElement::ariaLabelledByReferencingElementAtIndex):
(WTR::AccessibilityUIElement::ariaDescribedByElementAtIndex):
(WTR::AccessibilityUIElement::ariaDescribedByReferencingElementAtIndex):

LayoutTests:

* accessibility/aria-owns-expected.txt: Renamed from LayoutTests/accessibility/mac/aria-owns-expected.txt.
* accessibility/aria-owns.html: Renamed from LayoutTests/accessibility/mac/aria-owns.html.
* accessibility/gtk/relation-types-expected.txt: Added.
* accessibility/gtk/relation-types.html: Added.

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

2 years agoUnreviewed. Remove unused code from GTK+ WebKitPrivate.
carlosgc@webkit.org [Tue, 13 Jun 2017 12:39:55 +0000 (12:39 +0000)]
Unreviewed. Remove unused code from GTK+ WebKitPrivate.

* UIProcess/API/gtk/WebKitPrivate.cpp:
(wkEventModifiersToGdkModifiers): Deleted.
(wkEventMouseButtonToWebKitMouseButton): Deleted.
* UIProcess/API/gtk/WebKitPrivate.h:

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

2 years ago[WPE] Ensure that fast/url/user-visible tests are skipped
csaavedra@igalia.com [Tue, 13 Jun 2017 12:19:29 +0000 (12:19 +0000)]
[WPE] Ensure that fast/url/user-visible tests are skipped

Unreviewed gardening.

Tests under this directory are currently Mac specific, so skip the
directory altogether.
* platform/wpe/TestExpectations:

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

2 years agoUnreviewed. Fix return value of PageLoaderClient::shouldGoToBackForwardListItem after...
carlosgc@webkit.org [Tue, 13 Jun 2017 12:00:43 +0000 (12:00 +0000)]
Unreviewed. Fix return value of PageLoaderClient::shouldGoToBackForwardListItem after r218164.

It should return true as InjectedBundlePageLoaderClient does. This caused several timeouts in GTK+ unit tests
after r218171.

* WebProcess/InjectedBundle/API/APIInjectedBundlePageLoaderClient.h:
(API::InjectedBundle::PageLoaderClient::shouldGoToBackForwardListItem):

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

2 years ago[GTK] Use API::GeolocationProvider in WebKitGeolocationProvider
carlosgc@webkit.org [Tue, 13 Jun 2017 10:34:55 +0000 (10:34 +0000)]
[GTK] Use API::GeolocationProvider in WebKitGeolocationProvider
https://bugs.webkit.org/show_bug.cgi?id=173151

Reviewed by Žan Doberšek.

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

* UIProcess/API/gtk/WebKitGeolocationProvider.cpp:
(WebKit::GeolocationProvider::GeolocationProvider):
(WebKit::WebKitGeolocationProvider::~WebKitGeolocationProvider):
(WebKit::WebKitGeolocationProvider::WebKitGeolocationProvider):
(toGeolocationProvider): Deleted.
(startUpdatingCallback): Deleted.
(stopUpdatingCallback): Deleted.
(WebKitGeolocationProvider::~WebKitGeolocationProvider): Deleted.
(WebKitGeolocationProvider::create): Deleted.
(WebKitGeolocationProvider::WebKitGeolocationProvider): Deleted.
(WebKitGeolocationProvider::startUpdating): Deleted.
(WebKitGeolocationProvider::stopUpdating): Deleted.
(WebKitGeolocationProvider::notifyPositionChanged): Deleted.
(WebKitGeolocationProvider::notifyErrorOccurred): Deleted.
* UIProcess/API/gtk/WebKitGeolocationProvider.h:
* UIProcess/API/gtk/WebKitWebContext.cpp:
(webkitWebContextConstructed):

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

2 years ago[GTK] Use API::IconDatabaseClient in WebKitFaviconDatabase
carlosgc@webkit.org [Tue, 13 Jun 2017 10:31:38 +0000 (10:31 +0000)]
[GTK] Use API::IconDatabaseClient in WebKitFaviconDatabase
https://bugs.webkit.org/show_bug.cgi?id=173146

Reviewed by Žan Doberšek.

* UIProcess/API/gtk/WebKitFaviconDatabase.cpp:
(_WebKitFaviconDatabasePrivate::~_WebKitFaviconDatabasePrivate):
(webkitFaviconDatabaseCreate):
(didChangeIconForPageURLCallback): Deleted.
(iconDataReadyForPageURLCallback): Deleted.

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

2 years ago[GTK] Use API::InjectedBundle::PageLoaderClient in WebKitWebPage
carlosgc@webkit.org [Tue, 13 Jun 2017 10:30:26 +0000 (10:30 +0000)]
[GTK] Use API::InjectedBundle::PageLoaderClient in WebKitWebPage
https://bugs.webkit.org/show_bug.cgi?id=173304

Reviewed by Alex Christensen.

* WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
(webkitWebPageCreate):
(getDocumentLoaderURL): Deleted.
(didStartProvisionalLoadForFrame): Deleted.
(didReceiveServerRedirectForProvisionalLoadForFrame): Deleted.
(didSameDocumentNavigationForFrame): Deleted.
(didCommitLoadForFrame): Deleted.
(didFinishDocumentLoadForFrame): Deleted.
(didClearWindowObjectForFrame): Deleted.

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

2 years ago[GStreamerGL] Release GstVideoFrame when there is a flush event from the pipeline
yoon@igalia.com [Tue, 13 Jun 2017 08:29:06 +0000 (08:29 +0000)]
[GStreamerGL] Release GstVideoFrame when there is a flush event from the pipeline
https://bugs.webkit.org/show_bug.cgi?id=172427

Reviewed by Žan Doberšek.

Source/WebCore:

Without GStreamerGL MediaPlayerPrivateGStreamer copies the video frame from
the decoder's buffer to the texture to display a video. So it makes possible
to release the GstSample when it got a flush start event to free the decoder's
buffer to the decoder without side-effects.

Unlike the traditional way to render video, GStreamer GL does not copy a
texture from the decoder to the texture mapper's buffer to draw video frame.
It uses same GstMemory with the gst pipeline to manage the texture to prevent
copy operations. So without releasing a layer buffer, there is no way to
return GstMemory to the buffer pool.

This patch releases current GstSample when the player got the flush start
event.  It destructs the platform layer buffer any time there is a flush start
event.

However, it is not enough to release the GstMemory. The platform layer proxy
should copy current buffer to show it to the compositor instead of a blank
frame. It prevents flickerings until getting a new frame after handling flush
events.

No new tests, there shouldn't be behavior changes

* platform/graphics/cairo/ImageBufferCairo.cpp:
(WebCore::ImageBufferData::swapBuffersIfNeeded):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor):
(WebCore::MediaPlayerPrivateGStreamerBase::flushCurrentBuffer):
(WebCore::MediaPlayerPrivateGStreamerBase::createGLAppSink): Adds
handler for the flush event.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
* platform/graphics/texmap/BitmapTextureGL.cpp:
(WebCore::BitmapTextureGL::BitmapTextureGL):
(WebCore::BitmapTextureGL::copyFromExternalTexture): Copies
a external texture to the managed texture.
* platform/graphics/texmap/BitmapTextureGL.h:
(WebCore::BitmapTextureGL::create):
To create the managed texture with specific format, this patch adds a
optional parameter for a texture format.
* platform/graphics/texmap/TextureMapper.h:
* platform/graphics/texmap/TextureMapperGC3DPlatformLayer.cpp:
(WebCore::TextureMapperGC3DPlatformLayer::swapBuffersIfNeeded):
* platform/graphics/texmap/TextureMapperGL.cpp:
(WebCore::TextureMapperGL::createTexture):
* platform/graphics/texmap/TextureMapperGL.h:
* platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:
(WebCore::TextureMapperPlatformLayerBuffer::TextureMapperPlatformLayerBuffer):
(WebCore::TextureMapperPlatformLayerBuffer::clone):
* platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h:
* platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:
(WebCore::TextureMapperPlatformLayerProxy::appendToUnusedBuffers): Added
to schedule releasing unused buffers in main thread.
(WebCore::TextureMapperPlatformLayerProxy::swapBuffer):
(WebCore::TextureMapperPlatformLayerProxy::dropCurrentBufferWhilePreservingTexture):
* platform/graphics/texmap/TextureMapperPlatformLayerProxy.h:

Source/WebKit2:

* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::texmapGL):
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
Provides current texmapGL to platform layer proxies to create and copy
bitmap textures.

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

2 years agoSwitch off Legacy WebRTC API flag by default
commit-queue@webkit.org [Tue, 13 Jun 2017 08:19:36 +0000 (08:19 +0000)]
Switch off Legacy WebRTC API flag by default
https://bugs.webkit.org/show_bug.cgi?id=173241

Patch by Youenn Fablet <youenn@apple.com> on 2017-06-13
Reviewed by Sam Weinig.

* Shared/WebPreferencesDefinitions.h:

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

2 years agoFilter SDP from ICE candidates in case of local ICE candidate filtering
commit-queue@webkit.org [Tue, 13 Jun 2017 08:13:26 +0000 (08:13 +0000)]
Filter SDP from ICE candidates in case of local ICE candidate filtering
https://bugs.webkit.org/show_bug.cgi?id=173120

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

Source/WebCore:

Covered by updated test.

Adding filtering of local description in getters and createOffer promise.

* Modules/mediastream/MediaEndpointSessionDescription.cpp:
(WebCore::MediaEndpointSessionDescription::toRTCSessionDescription):
* Modules/mediastream/PeerConnectionBackend.cpp:
(WebCore::PeerConnectionBackend::createOfferSucceeded):
(WebCore::filterICECandidate):
(WebCore::PeerConnectionBackend::filterSDP):
* Modules/mediastream/PeerConnectionBackend.h:
* Modules/mediastream/RTCSessionDescription.h:
(WebCore::RTCSessionDescription::setSdp):
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::LibWebRTCPeerConnectionBackend::currentLocalDescription):
(WebCore::LibWebRTCPeerConnectionBackend::pendingLocalDescription):
(WebCore::LibWebRTCPeerConnectionBackend::localDescription):

Source/WTF:

Adding split helper routine with functor parameter.

* wtf/text/WTFString.cpp:
(WTF::String::split):
* wtf/text/WTFString.h:
(WTF::String::contains):

LayoutTests:

* webrtc/datachannel/filter-ice-candidate.html: Minor clean-up and
adding assertions to ensure that ICE candidates are also filtered out.

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

2 years ago[JSC] Remove redundant includes in config.h
don.olmstead@sony.com [Tue, 13 Jun 2017 08:04:58 +0000 (08:04 +0000)]
[JSC] Remove redundant includes in config.h
https://bugs.webkit.org/show_bug.cgi?id=173294

Reviewed by Alex Christensen.

* config.h:

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

2 years ago[WTF] Remove redundant includes in config.h
don.olmstead@sony.com [Tue, 13 Jun 2017 07:55:03 +0000 (07:55 +0000)]
[WTF] Remove redundant includes in config.h
https://bugs.webkit.org/show_bug.cgi?id=173292

Reviewed by Alex Christensen.

* config.h:
* wtf/ExportMacros.h:

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

2 years agoAdd API::GeolocationProvider
carlosgc@webkit.org [Tue, 13 Jun 2017 06:59:23 +0000 (06:59 +0000)]
Add API::GeolocationProvider
https://bugs.webkit.org/show_bug.cgi?id=173150

Reviewed by Alex Christensen.

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

* UIProcess/API/APIGeolocationProvider.h: Added.
(API::GeolocationProvider::~GeolocationProvider):
(API::GeolocationProvider::startUpdating):
(API::GeolocationProvider::stopUpdating):
(API::GeolocationProvider::setEnableHighAccuracy):
* UIProcess/API/C/WKGeolocationManager.cpp:
(WKGeolocationManagerSetProvider):
* UIProcess/WebGeolocationManagerProxy.cpp:
(WebKit::WebGeolocationManagerProxy::WebGeolocationManagerProxy):
(WebKit::WebGeolocationManagerProxy::setProvider):
(WebKit::WebGeolocationManagerProxy::processPoolDestroyed):
(WebKit::WebGeolocationManagerProxy::startUpdating):
(WebKit::WebGeolocationManagerProxy::removeRequester):
(WebKit::WebGeolocationManagerProxy::setEnableHighAccuracy):
* UIProcess/WebGeolocationManagerProxy.h:
* UIProcess/WebGeolocationProvider.cpp:
(WebKit::WebGeolocationProvider::WebGeolocationProvider):
(WebKit::WebGeolocationProvider::startUpdating):
(WebKit::WebGeolocationProvider::stopUpdating):
(WebKit::WebGeolocationProvider::setEnableHighAccuracy):
* UIProcess/WebGeolocationProvider.h:
* WebKit2.xcodeproj/project.pbxproj:

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

2 years agoAdd API::InjectedBundle::PageLoaderClient
carlosgc@webkit.org [Tue, 13 Jun 2017 06:28:48 +0000 (06:28 +0000)]
Add API::InjectedBundle::PageLoaderClient
https://bugs.webkit.org/show_bug.cgi?id=173265

Reviewed by Alex Christensen.

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

* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/InjectedBundle/API/APIInjectedBundlePageLoaderClient.h: Added.
(API::InjectedBundle::PageLoaderClient::willLoadURLRequest):
(API::InjectedBundle::PageLoaderClient::willLoadDataRequest):
(API::InjectedBundle::PageLoaderClient::shouldGoToBackForwardListItem):
(API::InjectedBundle::PageLoaderClient::didStartProvisionalLoadForFrame):
(API::InjectedBundle::PageLoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame):
(API::InjectedBundle::PageLoaderClient::didFailProvisionalLoadWithErrorForFrame):
(API::InjectedBundle::PageLoaderClient::didCommitLoadForFrame):
(API::InjectedBundle::PageLoaderClient::didFinishDocumentLoadForFrame):
(API::InjectedBundle::PageLoaderClient::didFinishLoadForFrame):
(API::InjectedBundle::PageLoaderClient::didFinishProgress):
(API::InjectedBundle::PageLoaderClient::didFailLoadWithErrorForFrame):
(API::InjectedBundle::PageLoaderClient::didSameDocumentNavigationForFrame):
(API::InjectedBundle::PageLoaderClient::didReceiveTitleForFrame):
(API::InjectedBundle::PageLoaderClient::didRemoveFrameFromHierarchy):
(API::InjectedBundle::PageLoaderClient::didDisplayInsecureContentForFrame):
(API::InjectedBundle::PageLoaderClient::didRunInsecureContentForFrame):
(API::InjectedBundle::PageLoaderClient::didDetectXSSForFrame):
(API::InjectedBundle::PageLoaderClient::didFirstLayoutForFrame):
(API::InjectedBundle::PageLoaderClient::didFirstVisuallyNonEmptyLayoutForFrame):
(API::InjectedBundle::PageLoaderClient::didLayoutForFrame):
(API::InjectedBundle::PageLoaderClient::didReachLayoutMilestone):
(API::InjectedBundle::PageLoaderClient::didClearWindowObjectForFrame):
(API::InjectedBundle::PageLoaderClient::didCancelClientRedirectForFrame):
(API::InjectedBundle::PageLoaderClient::willPerformClientRedirectForFrame):
(API::InjectedBundle::PageLoaderClient::didHandleOnloadEventsForFrame):
(API::InjectedBundle::PageLoaderClient::globalObjectIsAvailableForFrame):
(API::InjectedBundle::PageLoaderClient::willDisconnectDOMWindowExtensionFromGlobalObject):
(API::InjectedBundle::PageLoaderClient::didReconnectDOMWindowExtensionToGlobalObject):
(API::InjectedBundle::PageLoaderClient::willDestroyGlobalObjectForDOMWindowExtension):
(API::InjectedBundle::PageLoaderClient::shouldForceUniversalAccessFromLocalURL):
(API::InjectedBundle::PageLoaderClient::featuresUsedInPage):
(API::InjectedBundle::PageLoaderClient::willDestroyFrame):
(API::InjectedBundle::PageLoaderClient::userAgentForURL):
(API::InjectedBundle::PageLoaderClient::layoutMilestones):
* WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKBundlePageSetPageLoaderClient):
* WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
(WebKit::InjectedBundlePageLoaderClient::InjectedBundlePageLoaderClient):
(WebKit::InjectedBundlePageLoaderClient::willLoadURLRequest):
(WebKit::InjectedBundlePageLoaderClient::willLoadDataRequest):
(WebKit::InjectedBundlePageLoaderClient::shouldGoToBackForwardListItem):
(WebKit::InjectedBundlePageLoaderClient::didStartProvisionalLoadForFrame):
(WebKit::InjectedBundlePageLoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame):
(WebKit::InjectedBundlePageLoaderClient::didFailProvisionalLoadWithErrorForFrame):
(WebKit::InjectedBundlePageLoaderClient::didCommitLoadForFrame):
(WebKit::InjectedBundlePageLoaderClient::didFinishDocumentLoadForFrame):
(WebKit::InjectedBundlePageLoaderClient::didFinishLoadForFrame):
(WebKit::InjectedBundlePageLoaderClient::didFinishProgress):
(WebKit::InjectedBundlePageLoaderClient::didFailLoadWithErrorForFrame):
(WebKit::InjectedBundlePageLoaderClient::didSameDocumentNavigationForFrame):
(WebKit::InjectedBundlePageLoaderClient::didReceiveTitleForFrame):
(WebKit::InjectedBundlePageLoaderClient::didRemoveFrameFromHierarchy):
(WebKit::InjectedBundlePageLoaderClient::didDisplayInsecureContentForFrame):
(WebKit::InjectedBundlePageLoaderClient::didRunInsecureContentForFrame):
(WebKit::InjectedBundlePageLoaderClient::didDetectXSSForFrame):
(WebKit::InjectedBundlePageLoaderClient::didFirstLayoutForFrame):
(WebKit::InjectedBundlePageLoaderClient::didFirstVisuallyNonEmptyLayoutForFrame):
(WebKit::InjectedBundlePageLoaderClient::didLayoutForFrame):
(WebKit::InjectedBundlePageLoaderClient::didReachLayoutMilestone):
(WebKit::InjectedBundlePageLoaderClient::didClearWindowObjectForFrame):
(WebKit::InjectedBundlePageLoaderClient::didCancelClientRedirectForFrame):
(WebKit::InjectedBundlePageLoaderClient::willPerformClientRedirectForFrame):
(WebKit::InjectedBundlePageLoaderClient::didHandleOnloadEventsForFrame):
(WebKit::InjectedBundlePageLoaderClient::globalObjectIsAvailableForFrame):
(WebKit::InjectedBundlePageLoaderClient::willDisconnectDOMWindowExtensionFromGlobalObject):
(WebKit::InjectedBundlePageLoaderClient::didReconnectDOMWindowExtensionToGlobalObject):
(WebKit::InjectedBundlePageLoaderClient::willDestroyGlobalObjectForDOMWindowExtension):
(WebKit::InjectedBundlePageLoaderClient::shouldForceUniversalAccessFromLocalURL):
(WebKit::InjectedBundlePageLoaderClient::featuresUsedInPage):
(WebKit::InjectedBundlePageLoaderClient::userAgentForURL):
(WebKit::InjectedBundlePageLoaderClient::layoutMilestones):
* WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::detachedFromParent2):
(WebKit::WebFrameLoaderClient::dispatchDidDispatchOnloadEvents):
(WebKit::WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad):
(WebKit::WebFrameLoaderClient::dispatchDidCancelClientRedirect):
(WebKit::WebFrameLoaderClient::dispatchWillPerformClientRedirect):
(WebKit::WebFrameLoaderClient::dispatchDidChangeLocationWithinPage):
(WebKit::WebFrameLoaderClient::dispatchDidPushStateWithinPage):
(WebKit::WebFrameLoaderClient::dispatchDidReplaceStateWithinPage):
(WebKit::WebFrameLoaderClient::dispatchDidPopStateWithinPage):
(WebKit::WebFrameLoaderClient::dispatchDidStartProvisionalLoad):
(WebKit::WebFrameLoaderClient::dispatchDidReceiveTitle):
(WebKit::WebFrameLoaderClient::dispatchDidCommitLoad):
(WebKit::WebFrameLoaderClient::dispatchDidFailProvisionalLoad):
(WebKit::WebFrameLoaderClient::dispatchDidFailLoad):
(WebKit::WebFrameLoaderClient::dispatchDidFinishDocumentLoad):
(WebKit::WebFrameLoaderClient::dispatchDidFinishLoad):
(WebKit::WebFrameLoaderClient::dispatchDidReachLayoutMilestone):
(WebKit::WebFrameLoaderClient::dispatchDidLayout):
(WebKit::WebFrameLoaderClient::shouldGoToHistoryItem):
(WebKit::WebFrameLoaderClient::didDisplayInsecureContent):
(WebKit::WebFrameLoaderClient::didRunInsecureContent):
(WebKit::WebFrameLoaderClient::didDetectXSS):
(WebKit::WebFrameLoaderClient::dispatchDidClearWindowObjectInWorld):
(WebKit::WebFrameLoaderClient::dispatchGlobalObjectAvailable):
(WebKit::WebFrameLoaderClient::dispatchWillDisconnectDOMWindowExtensionFromGlobalObject):
(WebKit::WebFrameLoaderClient::dispatchDidReconnectDOMWindowExtensionToGlobalObject):
(WebKit::WebFrameLoaderClient::dispatchWillDestroyGlobalObjectForDOMWindowExtension):
(WebKit::WebFrameLoaderClient::shouldForceUniversalAccessFromLocalURL):
* WebProcess/WebCoreSupport/WebProgressTrackerClient.cpp:
(WebKit::WebProgressTrackerClient::progressFinished):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setInjectedBundlePageLoaderClient):
(WebKit::WebPage::close):
(WebKit::WebPage::loadRequest):
(WebKit::WebPage::loadDataImpl):
(WebKit::WebPage::userAgent):
(WebKit::WebPage::reportUsedFeatures):
(WebKit::WebPage::dispatchDidReachLayoutMilestone):
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::injectedBundleLoaderClient):

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

2 years ago[iOS] [macOS] Stop soft-linking Core Text function in iOS 11 and macOS High Sierra
mmaxfield@apple.com [Tue, 13 Jun 2017 03:14:21 +0000 (03:14 +0000)]
[iOS] [macOS] Stop soft-linking Core Text function in iOS 11 and macOS High Sierra
https://bugs.webkit.org/show_bug.cgi?id=173289

Reviewed by Lucas Forschler.

No new tests because there is no behavior change.

* platform/graphics/ios/FontCacheIOS.mm:
(WebCore::platformFontWithFamilySpecialCase):
* platform/graphics/mac/FontCacheMac.mm:
(WebCore::platformFontWithFamilySpecialCase):

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

2 years ago[GTK] skip fast/scrolling/scrolling-tree-includes-frame.html
commit-queue@webkit.org [Tue, 13 Jun 2017 03:10:24 +0000 (03:10 +0000)]
[GTK] skip fast/scrolling/scrolling-tree-includes-frame.html
https://bugs.webkit.org/show_bug.cgi?id=173258

Unreviewed gardening.

GTK doesn't appear to use the scrolling tree, only WK2 Mac and iOS do. Skip it here.

Patch by Charlie Turner <cturner@igalia.com> on 2017-06-12

* platform/gtk/TestExpectations:

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

2 years ago[Cocoa] Expand system-ui to include every item in the Core Text cascade list
mmaxfield@apple.com [Tue, 13 Jun 2017 01:35:05 +0000 (01:35 +0000)]
[Cocoa] Expand system-ui to include every item in the Core Text cascade list
https://bugs.webkit.org/show_bug.cgi?id=173043
<rdar://problem/21125708>

Reviewed by Simon Fraser.

Source/WebCore:

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

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

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

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

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

* WebCore.xcodeproj/project.pbxproj:
* page/MemoryRelease.cpp:
(WebCore::releaseNoncriticalMemory):
* platform/graphics/FontCascadeFonts.cpp:
(WebCore::realizeNextFallback): The consumer of our new data type. Now uses WTF::visit().
(WebCore::FontCascadeFonts::realizeFallbackRangesAt): Now that the number of items to test
against the current character is larger than the number of strings in the font-family list,
we need to update the existing code to use the correct value.
* platform/graphics/FontDescription.cpp: Default implementation for non-Cocoa ports.
(WebCore::FontDescription::invalidateCaches):
(WebCore::FontCascadeDescription::effectiveFamilyCount):
(WebCore::FontCascadeDescription::effectiveFamilyAt):
* platform/graphics/FontDescription.h: Our new data type is a Variant of AtomicString and a
platform-specific class. Cocoa uses a class that holds a CTFontDescriptorRef and other ports
use an empty non-constructable class.
* platform/graphics/FontFamilySpecificationNull.h: Added. The empty non-constructable
class.
(WebCore::FontFamilySpecificationNull::fontRanges):
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontCache::platformInit): Changing the system language will change the system font
fallback list, so we need to listen to this notification. This also matters for
FontCache::systemFallbackForCharacters(), so we should build off the same callback we are
already using for font installation.
(WebCore::invalidateFontCache):
* platform/graphics/cocoa/FontDescriptionCocoa.cpp: Added. The platform-specific creation of
our CTFontDescriptorRefs. We hold them cached in a SystemFontDatabase.
(WebCore::SystemFontDatabase::CoreTextCascadeListParameters::CoreTextCascadeListParameters):
(WebCore::SystemFontDatabase::CoreTextCascadeListParameters::isHashTableDeletedValue):
(WebCore::SystemFontDatabase::CoreTextCascadeListParameters::operator==):
(WebCore::SystemFontDatabase::CoreTextCascadeListParameters::hash):
(WebCore::SystemFontDatabase::singleton):
(WebCore::SystemFontDatabase::systemFontCascadeList):
(WebCore::SystemFontDatabase::clear):
(WebCore::SystemFontDatabase::SystemFontDatabase):
(WebCore::SystemFontDatabase::applyWeightAndItalics):
(WebCore::SystemFontDatabase::removeCascadeList):
(WebCore::SystemFontDatabase::computeCascadeList):
(WebCore::SystemFontDatabase::CoreTextCascadeListParametersHash::hash):
(WebCore::SystemFontDatabase::CoreTextCascadeListParametersHash::equal):
(WebCore::isSystemFontString):
(WebCore::systemFontParameters):
(WebCore::FontDescription::invalidateCaches):
(WebCore::FontCascadeDescription::effectiveFamilyCount): We don't store the result of this
because it would probably be a bad idea to increase the size of every single FontCascade just
in case it might ask for the system font. Most fonts never mention system-ui. Because it's so
rare, we can just recalculate the result of this as necessary. This shouldn't be slow because
the results are cached.
(WebCore::FontCascadeDescription::effectiveFamilyAt):
* platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp: Added.
(WebCore::FontFamilySpecificationCoreText::fontRanges): Create a FontRanges from a
CTFontDescriptorRef.
* platform/graphics/cocoa/FontFamilySpecificationCoreText.h: Added.
(WebCore::FontFamilySpecificationCoreText::FontFamilySpecificationCoreText):
* platform/graphics/ios/FontCacheIOS.mm: Delete the old handling for system-ui.
(WebCore::platformFontWithFamilySpecialCase):
(WebCore::baseSystemFontDescriptor): Deleted.
(WebCore::systemFontModificationAttributes): Deleted.
(WebCore::systemFontDescriptor): Deleted.
* platform/graphics/mac/FontCacheMac.mm: Ditto.
(WebCore::platformFontWithFamilySpecialCase):
(WebCore::toNSFontWeight): Deleted.

LayoutTests:

Rebaseline tests which use non-English text in form controls

* fast/text/system-font-fallback-emoji-expected.txt: Added.
* fast/text/system-font-fallback-emoji.html: Added.
* fast/text/system-font-fallback-expected.html: Added.
* fast/text/system-font-fallback.html: Added.
* platform/mac-elcapitan/fast/forms/listbox-bidi-align-expected.png: Added.
* platform/mac-elcapitan/fast/forms/listbox-bidi-align-expected.txt:
* platform/mac-elcapitan/fast/forms/search-rtl-expected.png: Added.
* platform/mac-elcapitan/fast/forms/search-rtl-expected.txt:
* platform/mac-elcapitan/fast/forms/searchfield-heights-expected.png: Added.
* platform/mac-elcapitan/fast/forms/searchfield-heights-expected.txt:
* platform/mac-elcapitan/fast/forms/visual-hebrew-text-field-expected.txt:
* platform/mac-elcapitan/fast/text/drawBidiText-expected.png: Added.
* platform/mac-elcapitan/fast/text/drawBidiText-expected.txt:
* platform/mac-elcapitan/fast/text/international/pop-up-button-text-alignment-and-direction-expected.png: Added.
* platform/mac-elcapitan/fast/text/international/pop-up-button-text-alignment-and-direction-expected.txt:
* platform/mac/TestExpectations:
* platform/mac/fast/css/rtl-ordering-expected.png:
* platform/mac/fast/css/rtl-ordering-expected.txt:
* platform/mac/fast/forms/listbox-bidi-align-expected.png:
* platform/mac/fast/forms/listbox-bidi-align-expected.txt:
* platform/mac/fast/forms/listbox-hit-test-zoomed-expected.png:
* platform/mac/fast/forms/listbox-hit-test-zoomed-expected.txt:
* platform/mac/fast/forms/search-rtl-expected.png:
* platform/mac/fast/forms/search-rtl-expected.txt:
* platform/mac/fast/forms/searchfield-heights-expected.txt:
* platform/mac/fast/forms/select-visual-hebrew-expected.png:
* platform/mac/fast/forms/select-visual-hebrew-expected.txt:
* platform/mac/fast/forms/visual-hebrew-text-field-expected.png:
* platform/mac/fast/forms/visual-hebrew-text-field-expected.txt:
* platform/mac/fast/text/drawBidiText-expected.png:
* platform/mac/fast/text/drawBidiText-expected.txt:
* platform/mac/fast/text/international/pop-up-button-text-alignment-and-direction-expected.png:
* platform/mac/fast/text/international/pop-up-button-text-alignment-and-direction-expected.txt:
* platform/mac/fast/text/updateNewFont-expected.png:
* platform/mac/fast/text/updateNewFont-expected.txt:

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

2 years agoRemove WebCore::unloadModule and related data types
commit-queue@webkit.org [Tue, 13 Jun 2017 01:28:37 +0000 (01:28 +0000)]
Remove WebCore::unloadModule and related data types
https://bugs.webkit.org/show_bug.cgi?id=173231

Patch by Daewoong Jang <daewoong.jang@navercorp.com> on 2017-06-12
Reviewed by Darin Adler.

Source/WebCore:

* platform/FileSystem.h:
(WebCore::PlatformModuleVersion::PlatformModuleVersion): Deleted.
* platform/glib/FileSystemGlib.cpp:
(WebCore::unloadModule): Deleted.
* platform/win/FileSystemWin.cpp:
(WebCore::unloadModule): Deleted.

Source/WebKit/win:

* Plugins/PlatformModule.h: Added.
(WebCore::PlatformModuleVersion::PlatformModuleVersion):
* Plugins/PluginPackage.cpp:
(WebCore::PluginPackage::freeLibraryTimerFired):
* Plugins/PluginPackage.h:

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

2 years agoWeb Inspector: Add grid to images to clarify transparency and image size
drousso@apple.com [Tue, 13 Jun 2017 00:34:48 +0000 (00:34 +0000)]
Web Inspector: Add grid to images to clarify transparency and image size
https://bugs.webkit.org/show_bug.cgi?id=173184

Reviewed by Matt Baker.

* Localizations/en.lproj/localizedStrings.js:

* UserInterface/Base/Setting.js:
Add setting for controlling the image grid.

* UserInterface/Images/NavigationItemCheckers.svg: Added.

* UserInterface/Views/ImageResourceContentView.css:
(.content-view.resource.image):
(.content-view.resource.image img):
Replace the border spacing around the image with padding on the container.  This is required
because a border will extend the area that is effected by `background-image`, meaning that
the checkerboard would appear in that area as well, giving misleading information as to the
size of the image.

* UserInterface/Views/ImageResourceContentView.js:
(WebInspector.ImageResourceContentView):
(WebInspector.ImageResourceContentView.prototype.get navigationItems): Added.
(WebInspector.ImageResourceContentView.prototype.contentAvailable):
(WebInspector.ImageResourceContentView.prototype.shown): Added.
(WebInspector.ImageResourceContentView.prototype._toggleImageGrid): Added.
(WebInspector.ImageResourceContentView.prototype._showGridButtonClicked): Added.
(WebInspector.ImageResourceContentView.prototype.get imageElement): Deleted.
Apply the CSS class for showing the grid when the added navigation item is activated.

* UserInterface/Views/Main.css:
(img.show-grid):
Generates a checkerboard pattern via `background-image` using the following process:
 - four `linear-gradients` are drawn, one in each corner
 - each draws one half of a 20x20 square, specified by `background-size`
 - they are then repositioned using `background-position` so that the two halfs align
    +------+      \--2
    |1 /\ 2|      |\ |
    | /  \ |  =>  | \|
    |/    \|  =>  4--\
    |\    /|  =>      1--/
    | \  / |  =>      | /|
    |4 \/ 3|          |/ |
    +------+          /--3

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

2 years agoUnreviewed build fix; fix a misspelling in CoreMediaSoftLink.{h,cpp}.
jlewis3@apple.com [Tue, 13 Jun 2017 00:10:01 +0000 (00:10 +0000)]
Unreviewed build fix; fix a misspelling in CoreMediaSoftLink.{h,cpp}.

Patch by Jer Noble <jer.noble@apple.com> on 2017-06-12

* platform/cf/CoreMediaSoftLink.cpp:
* platform/cf/CoreMediaSoftLink.h:

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

2 years ago@font-face rules with invalid primary fonts never download their secondary fonts
mmaxfield@apple.com [Tue, 13 Jun 2017 00:05:55 +0000 (00:05 +0000)]
@font-face rules with invalid primary fonts never download their secondary fonts
https://bugs.webkit.org/show_bug.cgi?id=173138
<rdar://problem/32554450>

Reviewed by Simon Fraser.

Source/WebCore:

We have logic in CSSFontAccessor::font() which disallows downloading a CSSFontFace if that CSSFontFace
is already in the Succeeded state. However, it was possible for a succeeded CSSFontFace to still fail
to create a font. In this situation, we wouldn't be able to use the downloaded font, and we wouldn't
try to download the next item in the src: list because the CSSFontFace is succeeded.

This patch strengthens the meaning of the Succeeded state. Previously, it just meant that the bytes
in the file were downloaded successfully. This patch extends this to also mean that the bytes in the
file can be successfully interpreted as a font. This way, the CSSFontFace in the example above won't be
set to the Succeeded state, so we will continue follow the src: list and download the secondary fonts.

This has an added benefit that the CSS Font Loading API's promises will be called more appropriately.
The transition to the Succeeded state will trigger a resolve of the promise. Now, these promises will
only be resolved if the fonts are actually parsed and understood by our text system.

Test: fast/text/font-fallback-invalid-load.html

* css/CSSFontFaceSource.cpp:
(WebCore::CSSFontFaceSource::fontLoaded): Move to the failed state if we can't understand the font
data. This is the crux of this patch.
(WebCore::CSSFontFaceSource::font): This function should only be called if we are in the Succeeded
state, which means now we know we should always be able to understand the bytes of the file. Therefore,
we can change some if statements into ASSERT()s.
* loader/cache/CachedSVGFont.cpp:
(WebCore::CachedSVGFont::createFont): Ditto.
(WebCore::CachedSVGFont::platformDataFromCustomData): Similarly to CSSFontFaceSource::fontLoaded(), this
adds another check to our criteria for transitioning into the Succeeded state, which will guarantee that
later we will always be able to create the font object.

LayoutTests:

* fast/text/font-fallback-invalid-load-expected.html: Added.
* fast/text/font-fallback-invalid-load.html: Added.
* fast/text/resources/bogus.svg: Added.

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

2 years agoImplement W3C Secure Contexts Draft Specification
dbates@webkit.org [Mon, 12 Jun 2017 23:55:04 +0000 (23:55 +0000)]
Implement W3C Secure Contexts Draft Specification
https://bugs.webkit.org/show_bug.cgi?id=158121
<rdar://problem/26012994>

Reviewed by Ryosuke Niwa.

Part 3

LayoutTests/imported/w3c:

Import the Secure Contexts Web Platform Tests.

* resources/import-expectations.json:
* resources/resource-files.json:
* web-platform-tests/secure-contexts/basic-dedicated-worker.html: Added.
* web-platform-tests/secure-contexts/basic-dedicated-worker.https.html: Added.
* web-platform-tests/secure-contexts/basic-popup-and-iframe-tests-expected.txt: Added.
* web-platform-tests/secure-contexts/basic-popup-and-iframe-tests.html: Added.
* web-platform-tests/secure-contexts/basic-popup-and-iframe-tests.https-expected.txt: Added.
* web-platform-tests/secure-contexts/basic-popup-and-iframe-tests.https.html: Added.
* web-platform-tests/secure-contexts/basic-popup-and-iframe-tests.https.js: Added.
(LoadType):
(LoadTarget):
(LoadTarget.prototype.open):
(LoadTarget.prototype.close):
(LoadTarget.prototype.load_and_get_result_for):
(run_next_test.):
(run_next_test):
(begin):
* web-platform-tests/secure-contexts/basic-shared-worker.html: Added.
* web-platform-tests/secure-contexts/basic-shared-worker.https.html: Added.
* web-platform-tests/secure-contexts/postMessage-helper.html: Added.
* web-platform-tests/secure-contexts/postMessage-helper.https.html: Added.
* web-platform-tests/secure-contexts/server-locations.sub.js: Added.
* web-platform-tests/secure-contexts/shared-worker-insecure-first.https.html: Added.
* web-platform-tests/secure-contexts/shared-worker-secure-first.https.html: Added.
* web-platform-tests/secure-contexts/support/dedicated-worker-script.js: Added.
* web-platform-tests/secure-contexts/support/https-subframe-dedicated.html: Added.
* web-platform-tests/secure-contexts/support/https-subframe-shared.html: Added.
* web-platform-tests/secure-contexts/support/parent-dedicated-worker-script.js: Added.
(w.onmessage):
* web-platform-tests/secure-contexts/support/parent-shared-worker-script.js: Added.
(w.onmessage):
* web-platform-tests/secure-contexts/support/shared-worker-insecure-popup.html: Added.
* web-platform-tests/secure-contexts/support/shared-worker-script.js: Added.
* web-platform-tests/secure-contexts/support/w3c-import.log: Added.
* web-platform-tests/secure-contexts/w3c-import.log: Added.

LayoutTests:

Skip tests that exercise Shared Workers as WebKit does not support them. With the exception
of web-platform-tests/secure-contexts/basic-popup-and-iframe-tests.html all other tests are
skipped because they time out. The following sub-tests in web-platform-tests/secure-contexts/basic-popup-and-iframe-tests.html
are expected to fail:
    - "Test Window.isSecureContext for HTTP creator"
        Reason: Sub-test must be run from non-localhost server
    - "Test Window.isSecureContext in an iframe loading an http"
        Reason: Sub-test must be run from non-localhost server
    - "Test Window.isSecureContext in a sandboxed iframe loading an http"
        Reason: We do not implement the allow-secure-context flag
    - "Test Window.isSecureContext in a popup loading about:blank"
        Reason: Times out; further investigation needed.

We will investigate the test failures and fix them in subsequent commits.

* TestExpectations:

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

2 years agoAdd unit tests for SecurityOrigin::IsPotentiallyTrustworthy()
dbates@webkit.org [Mon, 12 Jun 2017 23:52:25 +0000 (23:52 +0000)]
Add unit tests for SecurityOrigin::IsPotentiallyTrustworthy()
https://bugs.webkit.org/show_bug.cgi?id=173286
<rdar://problem/32726102>

Reviewed by Brent Fulgham.

* TestWebKitAPI/Tests/WebCore/SecurityOrigin.cpp:
(TestWebKitAPI::TEST_F):

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

2 years agoAdd Arabic Kasra to list of blacklisted characters when puny-decoding URL
cdumez@apple.com [Mon, 12 Jun 2017 23:39:27 +0000 (23:39 +0000)]
Add Arabic Kasra to list of blacklisted characters when puny-decoding URL
https://bugs.webkit.org/show_bug.cgi?id=173283
<rdar://problem/32725659>

Reviewed by Brent Fulgham.

Source/WebCore:

Add Arabic Kasra to list of blacklisted characters when puny-decoding URL as
it is almost invisible in the URL bar.

Test: fast/url/user-visible/arabic_kasra.html

* platform/mac/WebCoreNSURLExtras.mm:
(WebCore::isLookalikeCharacter):

LayoutTests:

Add layout test coverage.

* fast/url/user-visible/arabic_kasra-expected.txt: Added.
* fast/url/user-visible/arabic_kasra.html: Added.

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

2 years ago<rdar://problem/32683422>
lforschler@apple.com [Mon, 12 Jun 2017 23:29:19 +0000 (23:29 +0000)]
<rdar://problem/32683422>
Tools:

Teach copy-webkitlibraries-to-product-directory script about updated libraries.

Reviewed by Conrad Schultz.

* Scripts/copy-webkitlibraries-to-product-directory:

WebKitLibraries:

Update existing WebKitSystemInterface libraries.
Add macOS 10.13 libraries.
Remove macOS 10.10 libraries.
Remove iOS 10.9 libraries.

Reviewed by Conrad Schultz.

* libWebKitSystemInterfaceElCapitan.a:
* libWebKitSystemInterfaceIOSDevice10.a:
* libWebKitSystemInterfaceIOSDevice9.a: Removed.
* libWebKitSystemInterfaceIOSSimulator10.a:
* libWebKitSystemInterfaceIOSSimulator9.a: Removed.
* libWebKitSystemInterfaceOSX10.12.a:
* libWebKitSystemInterfaceOSX10.13.a: Added.
* libWebKitSystemInterfaceYosemite.a: Removed.

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

2 years agoScreen sleeps while doing WebRTC video
jer.noble@apple.com [Mon, 12 Jun 2017 23:01:55 +0000 (23:01 +0000)]
Screen sleeps while doing WebRTC video
https://bugs.webkit.org/show_bug.cgi?id=173278

Reviewed by Eric Carlson.

Source/WebCore:

HTMLMediaElement triggers changing the sleep disabler token when the media engine
says that its rate has changed; the MediaPlayerPrivateMediaStreamAVFObjC needs to
notify its client (the HTMLMediaElement) that the rate has changed when the stream
is played or paused.

Drive-by fix: Don't set a sleep disabler token (i.e., allow the system and display
to sleep) if the stream is strictly local-capture.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::shouldDisableSleep):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::play):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::pause):

Source/WTF:

Drive-by fix: add some generic methods for iterating over collections.

* WTF.xcodeproj/project.pbxproj:
* wtf/Algorithms.h: Added.
(WTF::forEach):
(WTF::anyOf):
(WTF::allOf):

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

2 years agoSeeking an MSE video will begin playing audio long before rendering video
jer.noble@apple.com [Mon, 12 Jun 2017 22:57:18 +0000 (22:57 +0000)]
Seeking an MSE video will begin playing audio long before rendering video
https://bugs.webkit.org/show_bug.cgi?id=173269

Reviewed by Eric Carlson.

Add a notification listener which will be messaged when a to-be-displayed sample
is decoded to signal that the 'seeked' event should fire. Consolidate all the various
flush methods to funnel into a single flushVideo().

* platform/cf/CoreMediaSoftLink.cpp:
* platform/cf/CoreMediaSoftLink.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(-[WebBufferConsumedContext initWithParent:buffer:]):
(-[WebBufferConsumedContext dealloc]):
(-[WebBufferConsumedContext parent]):
(-[WebBufferConsumedContext buffer]):
(WebCore::bufferWasConsumedCallback):
(WebCore::SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC):
(WebCore::SourceBufferPrivateAVFObjC::~SourceBufferPrivateAVFObjC):
(WebCore::SourceBufferPrivateAVFObjC::flush):
(WebCore::SourceBufferPrivateAVFObjC::flushVideo):
(WebCore::SourceBufferPrivateAVFObjC::enqueueSample):
(WebCore::SourceBufferPrivateAVFObjC::bufferWasConsumed):
(WebCore::SourceBufferPrivateAVFObjC::willSeek):

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

2 years ago[iOS WK2] Peeking on an image could result in a preview at the wrong size
simon.fraser@apple.com [Mon, 12 Jun 2017 22:48:11 +0000 (22:48 +0000)]
[iOS WK2] Peeking on an image could result in a preview at the wrong size
https://bugs.webkit.org/show_bug.cgi?id=173274
rdar://problem/30404627

Reviewed by Tim Horton.

There were a couple of issues with the way the page scale is communicated between the web process
and the UI process.

Generally, the page scale is computed by the web process, and sent to the UI process via
layer tree commits. UI-side scale is them communicated back to the web process via visibleContentRect
updates. When receiving a new scale, WebPage has a "scale was set by the UI process" flag to handle
the case where user interaction overrides the viewport-computed page scale. However, this flag would
get set erroneously in a couple of situations.

First, during page loading, layer flushing is suspended temporarily, so web process scale changes never
make it to the UI process. In that scenario, the UI process could send an old scale back to the web process,
setting the "scale was set by the UI process" when it really wasn't.

Secondly, web -> UI layer commit messages, and UI -> web updateVisibleContentRect messages can be in flight at the
same time, again causing a stale scale to reach the web process.

Fix this by only setting the "scale was set by the UI process" when we know the UI scale should be in sync, by comparing
commit IDs of sent and received scales.

* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::scaleFromUIProcess):
(WebKit::WebPage::updateVisibleContentRects):
* WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
(WebKit::RemoteLayerTreeDrawingArea::lastCommittedTransactionID):

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

2 years ago[MediaStream iOS] Set audio session mode and options when capturing
eric.carlson@apple.com [Mon, 12 Jun 2017 22:41:43 +0000 (22:41 +0000)]
[MediaStream iOS] Set audio session mode and options when capturing
https://bugs.webkit.org/show_bug.cgi?id=173276
<rdar://problem/32059254>

Reviewed by Jer Noble.

* platform/audio/ios/AudioSessionIOS.mm:
(WebCore::AudioSession::setCategory): Set mode and options so the default output is to the speaker,
and so audio will be routed to bluetooth when appropriate.

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

2 years agoRemove watchdog timer from WebVideoFullscreenInterfaceAVKit
commit-queue@webkit.org [Mon, 12 Jun 2017 22:39:11 +0000 (22:39 +0000)]
Remove watchdog timer from WebVideoFullscreenInterfaceAVKit
https://bugs.webkit.org/show_bug.cgi?id=173272
rdar://problem/32260378

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

No new tests because no effect on DOM.

WebVideoFullscreenInterfaceAVKit's watchdog attempts to clean-up fullscreen if the page becomes unresponsive.
However, it is just calling exitfullscreen(), which initiates the animation, but leaves the fullscreen window
in place and doesn't initiate cleanup. This leaves the browser in an unusable state since all events will still
be captured by the fullscren window.

This change uses the same method of hiding fullscreen window as switching tabs does. This will
hide the fullscreen winodw and controller, leaving the browser available for interaction, and the page
can take its time to properly cleanup the fullscreen window while hidden.

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

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

2 years agoModernize UserScript.h
achristensen@apple.com [Mon, 12 Jun 2017 22:37:59 +0000 (22:37 +0000)]
Modernize UserScript.h
https://bugs.webkit.org/show_bug.cgi?id=173273

Reviewed by Tim Horton.

Source/WebCore:

No change in behavior. Moved encoders to UserScript.h. Use more Rvalues.

* page/UserScript.h:
(WebCore::UserScript::UserScript):
(WebCore::UserScript::encode):
(WebCore::UserScript::decode):

Source/WebKit2:

* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<UserScript>::encode): Deleted.
(IPC::ArgumentCoder<UserScript>::decode): Deleted.
* Shared/WebCoreArgumentCoders.h:
* UIProcess/API/C/WKPageGroup.cpp:
(WKPageGroupAddUserScript):
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::addUserScript):
* WebProcess/InjectedBundle/InjectedBundle.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::addUserScript):
* WebProcess/WebPage/WebPage.h:

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

2 years agoAX: Video/Audio Player Controls missing group container.
commit-queue@webkit.org [Mon, 12 Jun 2017 22:37:07 +0000 (22:37 +0000)]
AX: Video/Audio Player Controls missing group container.
https://bugs.webkit.org/show_bug.cgi?id=171790
<rdar://problem/32008994>

Patch by Aaron Chu <aaron_chu@apple.com> on 2017-06-12
Reviewed by Antoine Quint.

Source/WebCore:

Added aria-label to group controls in media controls.

* English.lproj/modern-media-controls-localized-strings.js:
* Modules/modern-media-controls/controls/controls-bar.js:
* Modules/modern-media-controls/controls/inline-media-controls.js:
(InlineMediaControls):
(InlineMediaControls.prototype.set shouldUseAudioLayout):
(InlineMediaControls.prototype._updateBottomControlsBarLabel):

LayoutTests:

Modified existing test cases to accommodate testing for controls bar aria-label.

* media/modern-media-controls/audio/audio-controls-buttons-expected.txt:
* media/modern-media-controls/audio/audio-controls-buttons.html:
* media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-constructor-expected.txt:
* media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-constructor.html:
* media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-constructor-expected.txt:
* media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-constructor.html:

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

2 years ago[iOS] Cmd-C doesn't copy text from WKWebView
timothy_horton@apple.com [Mon, 12 Jun 2017 22:28:25 +0000 (22:28 +0000)]
[iOS] Cmd-C doesn't copy text from WKWebView
https://bugs.webkit.org/show_bug.cgi?id=173277
<rdar://problem/32396742>

Reviewed by Dan Bernstein.

* UIProcess/API/Cocoa/WKWebView.mm:
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _lookupForWebView:]):
(-[WKContentView _shareForWebView:]):
(-[WKContentView _addShortcutForWebView:]):
(-[WKContentView _promptForReplaceForWebView:]):
(-[WKContentView _transliterateChineseForWebView:]):
(-[WKContentView _reanalyzeForWebView:]):
(-[WKContentView replaceForWebView:]):
(-[WKContentView canPerformAction:withSender:]):
(-[WKContentView copyForWebView:]):
(-[WKContentView cutForWebView:]):
(-[WKContentView pasteForWebView:]):
(-[WKContentView selectForWebView:]):
(-[WKContentView selectAllForWebView:]):
(-[WKContentView toggleBoldfaceForWebView:]):
(-[WKContentView toggleItalicsForWebView:]):
(-[WKContentView toggleUnderlineForWebView:]):
(-[WKContentView _showTextStyleOptionsForWebView:]):
(-[WKContentView _defineForWebView:]):
(-[WKContentView _arrowKeyForWebView:]):
(-[WKContentView _lookup:]): Deleted.
(-[WKContentView _share:]): Deleted.
(-[WKContentView _addShortcut:]): Deleted.
(-[WKContentView _promptForReplace:]): Deleted.
(-[WKContentView _transliterateChinese:]): Deleted.
(-[WKContentView _reanalyze:]): Deleted.
(-[WKContentView replace:]): Deleted.
(-[WKContentView copy:]): Deleted.
(-[WKContentView cut:]): Deleted.
(-[WKContentView paste:]): Deleted.
(-[WKContentView select:]): Deleted.
(-[WKContentView selectAll:]): Deleted.
(-[WKContentView toggleBoldface:]): Deleted.
(-[WKContentView toggleItalics:]): Deleted.
(-[WKContentView toggleUnderline:]): Deleted.
(-[WKContentView _showTextStyleOptions:]): Deleted.
(-[WKContentView _define:]): Deleted.
(-[WKContentView _arrowKey:]): Deleted.
Similar to what r211897 did for canPerformAction, and other patches
have done for other selectors, forward methods for standard editing
commands from WKContentView up to WKWebView, and back down to WKContentView.

This is necessary because these are not treated as normal
responder-chain-respecting methods, so they do not bubble up the view tree.

In 211897, WKContentView (who is usually first responder and thus receives
the actions) stopped claiming to be able to perform these actions, depending
on this non-existent bubbling behavior to keep them working.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* Tests/WebKit2Cocoa/WKContentViewEditingActions.mm:
Add a test ensuring that -copy on WKContentView will cause text to be copied.

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

2 years ago[Curl] Use SynchronousLoaderClient for platformLoadResourceSynchronously on WinCairo
commit-queue@webkit.org [Mon, 12 Jun 2017 22:09:56 +0000 (22:09 +0000)]
[Curl] Use SynchronousLoaderClient for platformLoadResourceSynchronously on WinCairo
https://bugs.webkit.org/show_bug.cgi?id=173195

Patch by Basuke Suzuki <Basuke.Suzuki@sony.com> on 2017-06-12
Reviewed by Alex Christensen.

* PlatformWinCairo.cmake:
* platform/network/curl/ResourceHandleCurl.cpp:
(WebCore::ResourceHandle::platformLoadResourceSynchronously):
* platform/network/curl/SynchronousLoaderClientCurl.cpp: Added.
(WebCore::SynchronousLoaderClient::didReceiveAuthenticationChallenge):
(WebCore::SynchronousLoaderClient::platformBadResponseError):

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

2 years agoUpdate test262 test expectation since r218082 makes new tests pass.
sbarati@apple.com [Mon, 12 Jun 2017 22:07:18 +0000 (22:07 +0000)]
Update test262 test expectation since r218082 makes new tests pass.

* test262.yaml:

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

2 years ago[MediaStream iOS] If a capturing tab is muted while it is in the background, it can...
eric.carlson@apple.com [Mon, 12 Jun 2017 21:56:55 +0000 (21:56 +0000)]
[MediaStream iOS] If a capturing tab is muted while it is in the background, it can not be unmuted
https://bugs.webkit.org/show_bug.cgi?id=173268
<rdar://problem/32259809>

Reviewed by Jer Noble.

No new tests, tested manually.

* Modules/mediastream/MediaStream.cpp:
(WebCore::MediaStream::startProducingData): Mute the private stream if page capture is muted.
(WebCore::MediaStream::mediaState): Set new interrupted state.

* dom/Document.cpp:
(WebCore::Document::notifyMediaCaptureOfVisibilityChanged): Don't track "muted for visibility"
state, let the source center deal with it.
* dom/Document.h:

* page/MediaProducer.h: Add bits for interrupted audio and video capture.

* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::RealtimeMediaSource): Drive-by fix: delete m_suppressNotifications,
it isn't used.
(WebCore::RealtimeMediaSource::setInterrupted): New. Mute capture when an interruption begins,
and unmute when it ends in an unmuted page.
(WebCore::RealtimeMediaSource::setMuted): Do not unmute if interrupted.
(WebCore::RealtimeMediaSource::settingsDidChange): Don't check m_suppressNotifications, it is
never set.
* platform/mediastream/RealtimeMediaSource.h:

* platform/mediastream/RealtimeMediaSourceCenter.cpp:
(WebCore::RealtimeMediaSourceCenter::setVideoCapturePageState): Renamed from
setVideoCaptureMutedForPageVisibility.
(WebCore::RealtimeMediaSourceCenter::setVideoCaptureMutedForPageVisibility): Deleted.
* platform/mediastream/RealtimeMediaSourceCenter.h:

* platform/mediastream/mac/AVMediaCaptureSource.h:
* platform/mediastream/mac/AVMediaCaptureSource.mm:
(WebCore::AVMediaCaptureSource::stopProducingData): Clear m_interruption because the session
has been deleted, so we will never get an "end interruption" notification.
(WebCore::AVMediaCaptureSource::captureSessionIsRunningDidChange): Don't return early if
the muted state needs to be updated.
(WebCore::AVMediaCaptureSource::captureSessionEndInterruption): Return early if the session
has been cleared.
(WebCore::AVMediaCaptureSource::interrupted): New.

* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSourceFactory::setVideoCapturePageState): Renamed from
setVideoCaptureMutedForPageVisibility.
(WebCore::AVVideoCaptureSourceFactory::setVideoCaptureMutedForPageVisibility): Deleted.

* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSourceFactory::setVideoCapturePageState): Ditto.
(WebCore::MockRealtimeVideoSourceFactory::setVideoCaptureMutedForPageVisibility): Deleted.

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

2 years agoGarden tests for on-device testing
jbedard@apple.com [Mon, 12 Jun 2017 21:35:25 +0000 (21:35 +0000)]
Garden tests for on-device testing

Unreviewed test gardening.

The tests gardened here have not been investigated. https://bugs.webkit.org/show_bug.cgi?id=173275
tracks the investigation of the tests marked as failing, crashing or skipped because they timeout
when running layout tests on-device in this revision.

* platform/ios-device/TestExpectations: Initial gardening of expectations for on-device testing.
* platform/ios-simulator-wk2/TestExpectations: Moved simulator specific expectations from platfrom/ios-wk2.
* platform/ios-simulator/TestExpectations: Moved simulator specific expectations from platfrom/ios.
* platform/ios-simulator/compositing: Removed.
* platform/ios-wk2/TestExpectations: Moved simulator specific expectation to platform/ios-simulator-wk2.
* platform/ios/TestExpectations: Moved simulator specific expectation to platform/ios.
* platform/ios/compositing/iframes/compositing-for-scrollable-iframe-expected.txt: Copied from
LayoutTests/platform/ios-simulator/compositing/iframes/compositing-for-scrollable-iframe-expected.txt.

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

2 years agoNull dereference under WebProcessPool::pageRemovedFromProcess()
cdumez@apple.com [Mon, 12 Jun 2017 21:31:59 +0000 (21:31 +0000)]
Null dereference under WebProcessPool::pageRemovedFromProcess()
https://bugs.webkit.org/show_bug.cgi?id=173271
<rdar://problem/32038814>

Reviewed by Ryosuke Niwa.

Null-check networkProcess() before dereferencing it in WebProcessPool::pageRemovedFromProcess().
This is the only place in this class where we failed to null check before dereferencing
networkProcess(). To my knowledge, there is no guarantee there is a network process.

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::pageRemovedFromProcess):

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

2 years agoWe should not claim that SpecEmpty is filtered out of cell checks on 64 bit platforms
sbarati@apple.com [Mon, 12 Jun 2017 21:01:52 +0000 (21:01 +0000)]
We should not claim that SpecEmpty is filtered out of cell checks on 64 bit platforms
https://bugs.webkit.org/show_bug.cgi?id=172957
<rdar://problem/32602704>

Reviewed by Filip Pizlo.

JSTests:

* stress/spec-empty-flows-through-cell-checks.js: Added.
(A):
(B):
(i.catch):

Source/JavaScriptCore:

Consider this program:
```
block#1:
n: GetClosureVar(..., |this|) // this will load empty JSValue()
SetLocal(Cell:@n, locFoo) // Cell check succeeds because JSValue() looks like a cell
Branch(#2, #3)

Block#3:
x: GetLocal(locFoo)
y: CheckNotEmpty(@x)
```

If we claim that a cell check filters out the empty value, we will
incorrectly eliminate the CheckNotEmpty node @y. This patch fixes AI,
FTLLowerDFGToB3, and DFGSpeculativeJIT to no longer make this claim.

On 64 bit platforms:
- Cell use kind *now allows* the empty value to pass through.
- CellOrOther use kind *now allows* for the empty value to pass through
- NotCell use kind *no longer allows* the empty value to pass through.

* assembler/CPU.h:
(JSC::isARMv7IDIVSupported):
(JSC::isARM64):
(JSC::isX86):
(JSC::isX86_64):
(JSC::is64Bit):
(JSC::is32Bit):
(JSC::isMIPS):
Make these functions constexpr so we can use them in static variable assignment.

* bytecode/SpeculatedType.h:
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileValueToInt32):
(JSC::DFG::SpeculativeJIT::compileDoubleRep):
(JSC::DFG::SpeculativeJIT::compileLogicalNotStringOrOther):
(JSC::DFG::SpeculativeJIT::emitStringOrOtherBranch):
(JSC::DFG::SpeculativeJIT::speculateCell):
(JSC::DFG::SpeculativeJIT::speculateCellOrOther):
(JSC::DFG::SpeculativeJIT::speculateObjectOrOther):
(JSC::DFG::SpeculativeJIT::speculateString):
(JSC::DFG::SpeculativeJIT::speculateStringOrOther):
(JSC::DFG::SpeculativeJIT::speculateSymbol):
(JSC::DFG::SpeculativeJIT::speculateNotCell):
* dfg/DFGSpeculativeJIT32_64.cpp:
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::fillSpeculateCell):
(JSC::DFG::SpeculativeJIT::compileObjectToObjectOrOtherEquality):
(JSC::DFG::SpeculativeJIT::compilePeepHoleObjectToObjectOrOtherEquality):
(JSC::DFG::SpeculativeJIT::compileObjectOrOtherLogicalNot):
(JSC::DFG::SpeculativeJIT::emitObjectOrOtherBranch):
* dfg/DFGUseKind.h:
(JSC::DFG::typeFilterFor):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileDoubleRep):
(JSC::FTL::DFG::LowerDFGToB3::numberOrNotCellToInt32):
(JSC::FTL::DFG::LowerDFGToB3::compareEqObjectOrOtherToObject):
(JSC::FTL::DFG::LowerDFGToB3::boolify):
(JSC::FTL::DFG::LowerDFGToB3::equalNullOrUndefined):
(JSC::FTL::DFG::LowerDFGToB3::lowCell):
(JSC::FTL::DFG::LowerDFGToB3::lowNotCell):
(JSC::FTL::DFG::LowerDFGToB3::isCellOrMisc):
(JSC::FTL::DFG::LowerDFGToB3::isNotCellOrMisc):
(JSC::FTL::DFG::LowerDFGToB3::isNotCell):
(JSC::FTL::DFG::LowerDFGToB3::isCell):
(JSC::FTL::DFG::LowerDFGToB3::speculateCellOrOther):
(JSC::FTL::DFG::LowerDFGToB3::speculateObjectOrOther):
(JSC::FTL::DFG::LowerDFGToB3::speculateString):
(JSC::FTL::DFG::LowerDFGToB3::speculateStringOrOther):
(JSC::FTL::DFG::LowerDFGToB3::speculateSymbol):

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

2 years ago[WebCrypto] Remove experimental feature flag of SubtleCrypto
jiewen_tan@apple.com [Mon, 12 Jun 2017 20:27:00 +0000 (20:27 +0000)]
[WebCrypto] Remove experimental feature flag of SubtleCrypto
https://bugs.webkit.org/show_bug.cgi?id=173197
<rdar://problem/32688148>

Reviewed by Brent Fulgham.

Source/WebCore:

The SubtleCrypto implementation is no longer experimental and is ready for production use. We are therefore removing the runtime flag.

No tests.

* page/Crypto.idl:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setSubtleCryptoEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::subtleCryptoEnabled): Deleted.

Source/WebKit/mac:

* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences subtleCryptoEnabled]): Deleted.
(-[WebPreferences setSubtleCryptoEnabled:]): Deleted.
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):

Source/WebKit2:

* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetSubtleCryptoEnabled): Deleted.
(WKPreferencesGetSubtleCryptoEnabled): Deleted.
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):

Tools:

* DumpRenderTree/mac/DumpRenderTree.mm:
(enableExperimentalFeatures):
* WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
(WTR::InjectedBundle::beginTesting):
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setSubtleCryptoEnabled): Deleted.
* WebKitTestRunner/InjectedBundle/TestRunner.h:

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

2 years ago[iOS DnD] Allow the injected bundle to add client data when writing an image to the...
wenson_hsieh@apple.com [Mon, 12 Jun 2017 20:05:07 +0000 (20:05 +0000)]
[iOS DnD] Allow the injected bundle to add client data when writing an image to the pasteboard
https://bugs.webkit.org/show_bug.cgi?id=173238
<rdar://problem/31943370>

Reviewed by Ryosuke Niwa and Tim Horton.

Source/WebCore:

Add clientTypes and clientData to PasteboardImage, and call out to the injected bundle using
getClientPasteboardDataForRange when writing a PasteboardImage. When generating item providers for dragging in
the UI process in PlatformPasteboard, add any available client data as representations to the initialization
list used to set the WebItemProviderPasteboard.

Test: DataInteraction.InjectedBundleImageElementData

* editing/ios/EditorIOS.mm:
(WebCore::Editor::writeImageToPasteboard):
* platform/Pasteboard.h:
* platform/ios/PlatformPasteboardIOS.mm:
(WebCore::PlatformPasteboard::writeObjectRepresentations):

Source/WebKit2:

Send PasteboardImage.clientTypes and PasteboardImage.clientData over IPC.

* Shared/WebCoreArgumentCoders.cpp:
(IPC::encodeClientTypesAndData):
(IPC::decodeClientTypesAndData):

Factor out common logic used to encode and decode client types and data into static helpers.

(IPC::ArgumentCoder<PasteboardWebContent>::encode):
(IPC::ArgumentCoder<PasteboardWebContent>::decode):
(IPC::ArgumentCoder<PasteboardImage>::encode):
(IPC::ArgumentCoder<PasteboardImage>::decode):

Tools:

Add a new unit test to verify that data inserted by the injected bundle when beginning a drag on an image
element is plumbed across to the UI delegate. Also refactors injected bundle unit tests to use the new version
of adjustedDataInteractionItemProvidersForItemProvider: that takes representing objects and additional data.

* TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
(TestWebKitAPI::TEST):
* TestWebKitAPI/ios/DataInteractionSimulator.h:
* TestWebKitAPI/ios/DataInteractionSimulator.mm:
(-[DataInteractionSimulator _webView:adjustedDataInteractionItemProvidersForItemProvider:representingObjects:additionalData:]):
(-[DataInteractionSimulator _webView:adjustedDataInteractionItemProviders:]): Deleted.

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

2 years agoAdd tests for the SkipForwardButton class
graouts@webkit.org [Mon, 12 Jun 2017 19:52:05 +0000 (19:52 +0000)]
Add tests for the SkipForwardButton class
https://bugs.webkit.org/show_bug.cgi?id=173214

Reviewed by Jon Lee.

* media/modern-media-controls/skip-forward-button/skip-forward-button-expected.txt: Added.
* media/modern-media-controls/skip-forward-button/skip-forward-button.html: Added.
* platform/ios-simulator/TestExpectations:
* platform/mac/TestExpectations:

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

2 years ago[WebIDL] Re-implement GetOwnPropertySlot[ByIndex] generation to more closely follow...
commit-queue@webkit.org [Mon, 12 Jun 2017 19:50:39 +0000 (19:50 +0000)]
[WebIDL] Re-implement GetOwnPropertySlot[ByIndex] generation to more closely follow WebIDL
https://bugs.webkit.org/show_bug.cgi?id=173229

Patch by Sam Weinig <sam@webkit.org> on 2017-06-12
Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

* web-platform-tests/html/semantics/forms/the-form-element/form-nameditem-expected.txt:
Update results for more passing tests.

Source/WebCore:

* WebCore.xcodeproj/project.pbxproj:
* CMakeLists.txt:
* bindings/js/JSBindingsAllInOne.cpp:
Remove JSHTMLFrameSetElementCustom.cpp which is no longer needed.

* bindings/js/JSDOMAbstractOperations.h:
(WebCore::isVisibleNamedProperty):
Add OverrideBuiltins enum as requested by a previous review (and I forgot address) and adopt it
in isVisibleNamedProperty, switch to VMInquiry as we use elsewhere and add a missing FIXME.

(WebCore::accessVisibleNamedProperty):
Add variation of isVisibleNamedProperty that takes a functor and returns either the value the
functor returns, or std::nullopt. This allows getOwnPropertySlot to avoid doing two lookups for
property, once in the named property visibility algorithm and again when it needs the value.

* bindings/js/JSDOMWindowBase.cpp:
* bindings/js/JSDOMWindowBase.h:
* bindings/js/JSDOMWindowShell.cpp:
* bindings/js/JSDOMWindowShell.h:
Standardize toJS functions to match generated code (have one that takes a reference, and does the
cast, and one that takes a pointer, does a null check and calls the one that takes a reference).

* bindings/js/JSHTMLDocumentCustom.cpp:
(WebCore::JSHTMLDocument::getOwnPropertySlot):.
Update to use the implementation namedItem (which is also used by the generated getOwnPropertySlotByIndex)
and match the updated bindings rules. This cannot yet be generated due to the odd case of the 'open'
property requiring custom treatment. I tried removing this, but it cause tests to fail in a way that indicated
that accessing the lexical global object in the open implementation was not working correctly.

* bindings/js/JSHTMLFrameSetElementCustom.cpp: Removed.
Now generated.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateIndexedGetter):
Add description from the spec and change to return the computed values rather than
print them to the output array. This will be useful for some clients going forward,
who only want the attributes.

(GenerateNamedGetter):
Add description from the spec and change to return the computed values rather than
print them to the output array. This will be useful for some clients going forward,
who only want the attributes. Also greatly simplifies things as [CustomNamedGetter]s
are no longer needed/supported and the exception / null value checks are performed
elsewhere.

(GenerateNamedGetterLambda):
This generates a lambda functor for use in accessVisibleNamedProperty(...). It
handles calling the named getter implementation, and transforming the result into
an one that can be reasoned about by accessVisibleNamedProperty, specifically,
converting it from using IDL's notion of nullability to std::optional.

(GenerateGetOwnPropertySlot):
(GenerateGetOwnPropertySlotByIndex):
Add spec annotations and use helper functions.

(GenerateGetOwnPropertyNames):
Add FIXME about supporting non-contiguous indices (should that ever come up)
and use JSObject explicitly, rather than base, to get the default getOwnPropertyNames
implementation.

(GeneratePut):
Use JSObject explicitly, rather than base, to get the default put implementation.

(GeneratePutByIndex):
Use JSObject explicitly, rather than base, to get the default putByIndex implementation.

(GenerateDefineOwnProperty):
Use JSObject explicitly, rather than base, to get the default getOwnPropertySlot/defineOwnProperty
implementations.

(GenerateDeletePropertyCommon):
Adopt new OverrideBuiltins enum.

(GenerateDeletePropertyDefinition):
Use JSObject explicitly, rather than base, to get the default deleteProperty implementation.

(GenerateDeletePropertyByIndexDefinition):
Use JSObject explicitly, rather than base, to get the default deletePropertyByIndex implementation.

(InstanceOverridesGetOwnPropertySlot):
Remove [CustomNamedGetter] use.

(GenerateHeader):
Remove [CustomNamedGetter] use and merge InstanceOverridesGetOwnPropertySlotByIndex into
InstanceOverridesGetOwnPropertySlot. Specifying either [CustomGetOwnPropertySlot] or
[CustomGetOwnPropertySlotByIndex] will now declare both hooks.

(GenerateImplementation):
Rename GenerateGetOwnPropertySlotBody/GenerateGetOwnPropertySlotByIndexBody to remove the 'Body',
and predicate their generation purely on InstanceOverridesGetOwnPropertySlot as noted for the
reasons above.

(GenerateGetOwnPropertySlotBody): Deleted.
(GenerateGetOwnPropertySlotBodyByIndex): Deleted.
(InstanceOverridesGetOwnPropertySlotByIndex): Deleted.

* bindings/scripts/IDLAttributes.json:
Remove [CustomNamedGetter].

* dom/ExceptionOr.h:
(WebCore::ExceptionOr<ReturnType>::returnValue):
Add a function to peek at the return value

* html/HTMLDocument.h:
* html/HTMLDocument.cpp:
(WebCore::HTMLDocument::clear):
(WebCore::HTMLDocument::captureEvents):
(WebCore::HTMLDocument::releaseEvents):
Move clear up to be with the other obsolete no-op functions. Add spec annotations
to clear up any confusion about why they are no-ops.

(WebCore::HTMLDocument::namedItem):
Add implementation of namedItem based on the one that was in JSDOMHTMLDocumentCustom.cpp.

(WebCore::HTMLDocument::supportedPropertyNames):
Add stub version of supportedPropertyNames with the algorithm we need to implement.
I don't want to change behavior in this patch, and since we have not enumerated the
properties of document in the past, I left this unimplemented for now.

* html/HTMLDocument.idl:
Remove [CustomNamedGetter] and add named getter.

* html/HTMLFrameSetElement.h:
* html/HTMLFrameSetElement.cpp:
(WebCore::HTMLFrameSetElement::namedItem):
Add named getter based on the implementation in JSHTMLFrameSetElementCustom.cpp.

(WebCore::HTMLFrameSetElement::supportedPropertyNames):
As noted above, I don't want to change behavior with this change, so I have left this unimplemented
for now. However, we may not want to implement it at all, as this named getter is not specified and
at least Firefox does not support it.

* html/HTMLFrameSetElement.idl:
Remove [CustomNamedGetter] and add named getter.

* bindings/scripts/test/JS/JSTestEventTarget.cpp:
* bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:
* bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:
* bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:
* bindings/scripts/test/JS/JSTestInterface.cpp:
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:
* bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:
* bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:
* bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp:
* bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp:
* bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp:
* bindings/scripts/test/JS/JSTestNode.cpp:
* bindings/scripts/test/JS/JSTestObj.cpp:
* bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
Update test results.

* bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp: Removed.
* bindings/scripts/test/JS/JSTestCustomNamedGetter.h: Removed.
* bindings/scripts/test/TestCustomNamedGetter.idl: Removed.
Remove test of [CustomNamedGetter] which no longer exists.

LayoutTests:

* fast/dom/HTMLDocument/document-special-properties-expected.txt:
Update results. Named properties on HTMLDocument no longer override own properties, they
only override properties from the prototype chain (as per the WebIDL specification for
OverrideBuiltins). These results now also match Firefox.

* js/dom/dfg-prototype-chain-caching-with-impure-get-own-property-slot-traps-4.html:
* js/dom/dfg-prototype-chain-caching-with-impure-get-own-property-slot-traps-5.html:
* js/dom/prototype-chain-caching-with-impure-get-own-property-slot-traps-4.html:
* js/dom/prototype-chain-caching-with-impure-get-own-property-slot-traps-5-short.html:
* js/dom/prototype-chain-caching-with-impure-get-own-property-slot-traps-5.html:
Update tests to use a property on the prototype, rather than the instance, to test
overriding the [GetOwnProperty] hook. This is needed now that HTMLDocument correctly
follows the OverrideBuiltins rules as explained above.

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

2 years agoWebItemProviderPasteboard should call its completion block immediately after a synchr...
wenson_hsieh@apple.com [Mon, 12 Jun 2017 19:34:37 +0000 (19:34 +0000)]
WebItemProviderPasteboard should call its completion block immediately after a synchronous load
https://bugs.webkit.org/show_bug.cgi?id=173225
<rdar://problem/32713144>

Reviewed by Tim Horton.

Source/WebCore:

Ensures that a completion block passed to doAfterLoadingProvidedContentIntoFileURLs:synchronousTimeout: will be
invoked immediately, if a synchronous timeout is specified and loading finishes before the synchronous timeout
is reached. To do this, we first factor out the completion logic into a new block. If the synchronous timeout
exists and dispatch_group_wait returns 0 (indicating that the dispatch group finished without hitting the
wait timeout) we simply invoke the block and return early; otherwise, we will register the completion block
using dispatch_group_notify.

Test: DataInteractionTests.WebItemProviderPasteboardLoading

* platform/ios/WebItemProviderPasteboard.mm:
(-[WebItemProviderPasteboard doAfterLoadingProvidedContentIntoFileURLs:synchronousTimeout:]):

Tools:

Adds a new unit test to verify whether the completion block is called synchronously or asynchronously, in both
cases where the synchronous timeout is very large, and the synchronous timeout is not used (0).

* TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
(TestWebKitAPI::TEST):

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

2 years ago[iOS DnD] Introduce hooks to override targeted drag previews when lifting and cancelling
wenson_hsieh@apple.com [Mon, 12 Jun 2017 19:19:38 +0000 (19:19 +0000)]
[iOS DnD] Introduce hooks to override targeted drag previews when lifting and cancelling
https://bugs.webkit.org/show_bug.cgi?id=173240
<rdar://problem/31943370>

Reviewed by Ryosuke Niwa and Tim Horton.

Adds two new delegate hooks: _webView:previewForLiftingItem:session: and
_webView:previewForCancellingItem:withDefault:.

* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:

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

2 years agoReturn correct process names for iOS on-device testing
jbedard@apple.com [Mon, 12 Jun 2017 19:07:07 +0000 (19:07 +0000)]
Return correct process names for iOS on-device testing
https://bugs.webkit.org/show_bug.cgi?id=173263

Reviewed by Alex Christensen.

When running tests on iOS devices, process names do not end with '.Development'
as they do on Mac and iOS simulator.

* WebKitTestRunner/TestController.cpp:
(WTR::TestController::webProcessName): Return correct process name without '.Development'
for iOS on-device testing.
(WTR::TestController::networkProcessName): Ditto.
(WTR::TestController::databaseProcessName): Ditto.

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

2 years agoUnreviewed. Unmark test as flaky after fix in r217944. The test should now pass.
sbarati@apple.com [Mon, 12 Jun 2017 19:00:23 +0000 (19:00 +0000)]
Unreviewed. Unmark test as flaky after fix in r217944. The test should now pass.

* platform/mac/TestExpectations:

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

2 years agoRegression(r217867): Legacy SessionHistoryEntryData format should not change
cdumez@apple.com [Mon, 12 Jun 2017 18:55:32 +0000 (18:55 +0000)]
Regression(r217867): Legacy SessionHistoryEntryData format should not change
https://bugs.webkit.org/show_bug.cgi?id=173267
<rdar://problem/32701257>

Reviewed by Simon Fraser.

Source/WebKit2:

Revert changes to Legacy SessionHistoryEntryData format that were made in r217867,
as this apparently breaks compatiblity.

* UIProcess/mac/LegacySessionStateCoding.cpp:
(WebKit::encodeFrameStateNode):
(WebKit::decodeBackForwardTreeNode):

Tools:

Restrict test to stop covering saving / restore of scrollRestoration via the legacy
SessionHistoryEntryData. Maintain coverage for the default value of scrollRestoration
though as this covers the crash that r217867 was fixing.

* TestWebKitAPI/Tests/WebKit2/RestoreSessionState.cpp:
(TestWebKitAPI::createSessionStateData):
(TestWebKitAPI::TEST):
(TestWebKitAPI::createSessionStateDataContainingScrollRestoration): Deleted.

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

2 years agoWebAVPlayerController minTime and maxTime should be calculated properties to provide...
commit-queue@webkit.org [Mon, 12 Jun 2017 18:45:38 +0000 (18:45 +0000)]
WebAVPlayerController minTime and maxTime should be calculated properties to provide correct values when streaming.
https://bugs.webkit.org/show_bug.cgi?id=173193
rdar://problem/32684807

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

No new tests because no affect on the DOM. This only affects properties consumed to AVKit.

-minTime and -maxTime should be calculated properties so they supply the exptected values to AVKit while streaming.

* platform/ios/WebAVPlayerController.h:
* platform/ios/WebAVPlayerController.mm:
(-[WebAVPlayerController maxTime]):
(+[WebAVPlayerController keyPathsForValuesAffectingMaxTime]):
(-[WebAVPlayerController minTime]):
(+[WebAVPlayerController keyPathsForValuesAffectingMinTime]):
(-[WebAVPlayerController resetMediaState]):
* platform/ios/WebPlaybackSessionInterfaceAVKit.mm:
(WebCore::WebPlaybackSessionInterfaceAVKit::durationChanged):

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

2 years agoUnreviewed, suppress invalid register alloation validation assertion in 32 bit
utatane.tea@gmail.com [Mon, 12 Jun 2017 18:42:47 +0000 (18:42 +0000)]
Unreviewed, suppress invalid register alloation validation assertion in 32 bit
https://bugs.webkit.org/show_bug.cgi?id=172421

* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileArrayIndexOf):

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

2 years agoWe incorrectly allow escaped characters in keyword tokens
gskachkov@gmail.com [Mon, 12 Jun 2017 18:23:59 +0000 (18:23 +0000)]
We incorrectly allow escaped characters in keyword tokens
https://bugs.webkit.org/show_bug.cgi?id=171310

Reviewed by Yusuke Suzuki.

JSTests:

* stress/destructuring-assignment-syntax.js:
* stress/error-messages-for-in-operator-should-not-crash.js:
(catch):
* stress/reserved-word-with-escape.js:
(testSyntaxError.String.raw.v):
(String.raw.SyntaxError.Cannot.use.the.keyword.string_appeared_here.as.a.name):
(testSyntaxError.String.raw.a):
* JSTests/ChakraCore/test/Basics/IdsWithEscapes.baseline-jsc:

Source/JavaScriptCore:

According spec it is not allow to use escaped characters in
keywords. https://tc39.github.io/ecma262/#sec-reserved-words
Current patch implements this requirements.

* parser/Lexer.cpp:
(JSC::Lexer<CharacterType>::parseIdentifierSlowCase):
* parser/Parser.cpp:
(JSC::Parser<LexerType>::printUnexpectedTokenText):
* parser/ParserTokens.h:

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

2 years agoUpdated test expectations for fast/mediastream/getUserMedia-webaudio.html.
jlewis3@apple.com [Mon, 12 Jun 2017 17:40:04 +0000 (17:40 +0000)]
Updated test expectations for fast/mediastream/getUserMedia-webaudio.html.
https://bugs.webkit.org/show_bug.cgi?id=170960

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

2 years ago[WK2][macOS] Alow iokit-get-properties for additional media features
bfulgham@apple.com [Mon, 12 Jun 2017 17:38:42 +0000 (17:38 +0000)]
[WK2][macOS] Alow iokit-get-properties for additional media features
https://bugs.webkit.org/show_bug.cgi?id=173082
<rdar://problem/32597547>

Reviewed by Alex Christensen.

* WebProcess/com.apple.WebProcess.sb.in:

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

2 years agoCall _sqlite3_purgeEligiblePagerCacheMemory() on memory pressure only if sqlite is...
cdumez@apple.com [Mon, 12 Jun 2017 17:28:39 +0000 (17:28 +0000)]
Call _sqlite3_purgeEligiblePagerCacheMemory() on memory pressure only if sqlite is initialized
https://bugs.webkit.org/show_bug.cgi?id=173264

Reviewed by Ryosuke Niwa.

Call _sqlite3_purgeEligiblePagerCacheMemory() on memory pressure only if sqlite is initialized.
Otherwise, not only is it no needed, it is also potentially unsafe.

* page/MemoryRelease.cpp:
(WebCore::registerSQLiteMemoryPressureHandler):
* page/MemoryRelease.h:
* page/cocoa/MemoryReleaseCocoa.mm:
(WebCore::platformReleaseMemory):
(WebCore::registerSQLiteMemoryPressureHandler):
* platform/sql/SQLiteDatabase.cpp:
(WebCore::initializeSQLiteIfNecessary):

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

2 years agoAdd API::IconDatabaseClient
carlosgc@webkit.org [Mon, 12 Jun 2017 17:19:22 +0000 (17:19 +0000)]
Add API::IconDatabaseClient
https://bugs.webkit.org/show_bug.cgi?id=173145

Reviewed by Alex Christensen.

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

* UIProcess/API/APIIconDatabaseClient.h:
(API::IconDatabaseClient::~IconDatabaseClient):
(API::IconDatabaseClient::didChangeIconForPageURL):
(API::IconDatabaseClient::didRemoveAllIcons):
(API::IconDatabaseClient::iconDataReadyForPageURL):
* UIProcess/API/C/WKIconDatabase.cpp:
(WKIconDatabaseSetIconDatabaseClient):
* UIProcess/WebIconDatabase.cpp:
(WebKit::WebIconDatabase::WebIconDatabase):
(WebKit::WebIconDatabase::setClient):
(WebKit::WebIconDatabase::didChangeIconForPageURL):
(WebKit::WebIconDatabase::didRemoveAllIcons):
(WebKit::WebIconDatabase::notifyIconDataReadyForPageURL):
* UIProcess/WebIconDatabase.h:
* UIProcess/WebIconDatabaseClient.cpp:
(WebKit::WebIconDatabaseClient::WebIconDatabaseClient):
(WebKit::WebIconDatabaseClient::didChangeIconForPageURL):
(WebKit::WebIconDatabaseClient::didRemoveAllIcons):
(WebKit::WebIconDatabaseClient::iconDataReadyForPageURL):
* UIProcess/WebIconDatabaseClient.h:
* WebKit2.xcodeproj/project.pbxproj:

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

2 years ago[GTK] Stop dismissing menus attached to the web view for every injected event
carlosgc@webkit.org [Mon, 12 Jun 2017 17:10:54 +0000 (17:10 +0000)]
[GTK] Stop dismissing menus attached to the web view for every injected event
https://bugs.webkit.org/show_bug.cgi?id=172708

Reviewed by Alex Christensen.

Source/WebKit2:

To actually simulate a right-click event we should also send the button release after the press, and let the page
handle the events in addition to sending the event to the context menu controller, like we do with normal
events. So, this is mostly the same as a real right-click event but without actually showing the menu.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::contextMenuAtPointInWindow):

Tools:

It's a workaround we added in r184015 that has worked so far for the context menu, but doesn't really work now
that we also attach popup menus to the web view. We really need to be able to show a popup menu, and then send
events while the menu is open.

* WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
(WTR::EventSendingController::contextClick): Use WKBundlePageCopyContextMenuAtPointInWindow() also in GTK+ port.
* WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:
(WTR::EventSenderProxy::dispatchEvent): Stop calling PlatformWebView::dismissAllPopupMenus().

LayoutTests:

* editing/selection/5354455-1.html: No need to click on editable area to focus it, contextClick already focuses
it, we even have another test to ensure it. Those fast clicks were causing a double click in GTK+ port which
selected the whole line. We don't need to dismiss the context menu either, because contextClick() doesn't really
show the menu.
* fast/events/context-activated-by-key-event.html: Dismiss the context menu every time we show it.
* fast/events/mouse-click-events.html: Dimiss the context menu when testing right click events.

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

2 years agoMark fast/mediastream/getUserMedia-webaudio.html as flaky on mac-wk2.
ryanhaddad@apple.com [Mon, 12 Jun 2017 17:02:52 +0000 (17:02 +0000)]
Mark fast/mediastream/getUserMedia-webaudio.html as flaky on mac-wk2.
https://bugs.webkit.org/show_bug.cgi?id=170960

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

2 years agoMarked imported/w3c/web-platform-tests/html/browsers/windows/browsing-context.html...
jlewis3@apple.com [Mon, 12 Jun 2017 16:01:19 +0000 (16:01 +0000)]
Marked imported/w3c/web-platform-tests/html/browsers/windows/browsing-context.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=172255

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

2 years agotransforms/hittest-translated-content-off-to-infinity-and-back.html is passing
csaavedra@igalia.com [Mon, 12 Jun 2017 15:48:43 +0000 (15:48 +0000)]
transforms/hittest-translated-content-off-to-infinity-and-back.html is passing

Ureviewed gardening.
* platform/wpe/TestExpectations: This started passing lately, remove.

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

2 years ago[CoordinatedGraphics] Behavior change of DrawingAreaImpl after r217779
commit-queue@webkit.org [Mon, 12 Jun 2017 15:27:30 +0000 (15:27 +0000)]
[CoordinatedGraphics] Behavior change of DrawingAreaImpl after r217779
https://bugs.webkit.org/show_bug.cgi?id=173153

Patch by Daewoong Jang <daewoong.jang@navercorp.com> on 2017-06-12
Reviewed by Carlos Garcia Campos.

* WebProcess/WebPage/AcceleratedDrawingArea.cpp:
(WebKit::AcceleratedDrawingArea::mainFrameContentSizeChanged):

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

2 years ago[WPE][GTK] Rebaseline js/dom/global-constructors-attributes.html
csaavedra@igalia.com [Mon, 12 Jun 2017 15:19:56 +0000 (15:19 +0000)]
[WPE][GTK] Rebaseline js/dom/global-constructors-attributes.html

Unreviewed gardening.

Needs to be updated in WPE due to enabling ENCRYPTED_MEDIA. GTK+
port was skipping this but it just needs an updated expectations.
* platform/gtk/TestExpectations: Unskip.
* platform/gtk/js/dom/global-constructors-attributes-expected.txt:
* platform/wpe/js/dom/global-constructors-attributes-expected.txt:

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

2 years ago[GCrypt] Use utility functions in CryptoKeyEC, CryptoKeyRSA
zandobersek@gmail.com [Mon, 12 Jun 2017 14:56:36 +0000 (14:56 +0000)]
[GCrypt] Use utility functions in CryptoKeyEC, CryptoKeyRSA
https://bugs.webkit.org/show_bug.cgi?id=173253

Reviewed by Michael Catanzaro.

Use the utility functions from the GCryptUtilities.h header instead
of writing the same code in both CryptoKeyEC and CryptoKeyRSA
implementations. The switches are straightforward, the only difference
is that the GCryptUtilities functions return a std::optional<> object,
meaning we have to address possibly invalid return value.

The mpiData() function is overloaded, making it possible to pass to it
either a gcry_sexp_t or gcry_mpi_t object. Additionally, mpiLength()
function is added, overloading again for gcry_sexp_t and gcry_mpi_t.
This function is used from mpiData() as well as in CryptoKeyRSA when
retrieving the RSA modulus length.

No new tests -- no changes in behavior.

* crypto/gcrypt/CryptoKeyECGCrypt.cpp:
(WebCore::CryptoKeyEC::platformExportRaw):
(WebCore::CryptoKeyEC::platformAddFieldElements):
(WebCore::extractMPIData): Deleted.
* crypto/gcrypt/CryptoKeyRSAGCrypt.cpp:
(WebCore::getRSAModulusLength):
(WebCore::getRSAKeyParameter):
(WebCore::CryptoKeyRSA::exportData):
(WebCore::getParameterMPIData): Deleted.
* crypto/gcrypt/GCryptUtilities.h:
(WebCore::mpiLength):
(WebCore::mpiData):

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

2 years agoUnreviewed, add branch64(Cond, BaseIndex, RegisterID) for ARM64
utatane.tea@gmail.com [Mon, 12 Jun 2017 13:27:56 +0000 (13:27 +0000)]
Unreviewed, add branch64(Cond, BaseIndex, RegisterID) for ARM64
https://bugs.webkit.org/show_bug.cgi?id=172421

* assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::branch64):
(JSC::MacroAssemblerARM64::branchPtr):

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

2 years ago[GTK] Prefer to use private WebKitWebView API over WebKitWebViewBase
carlosgc@webkit.org [Mon, 12 Jun 2017 12:58:50 +0000 (12:58 +0000)]
[GTK] Prefer to use private WebKitWebView API over WebKitWebViewBase
https://bugs.webkit.org/show_bug.cgi?id=173254

Reviewed by Žan Doberšek.

WebKitWebViewBase is specific to the GTK+ API, but WebKitWebView should be present in any glib-based API. Add
webkitWebViewCreatePage() and webkitWebViewGetPage() and use them when possible instead of the WebKitWebViewBase
ones.

* UIProcess/API/gtk/WebKitAutomationSession.cpp:
* UIProcess/API/gtk/WebKitContextMenuClient.cpp:
(attachContextMenuClientToView):
* UIProcess/API/gtk/WebKitFindController.cpp:
(getPage):
(webkitFindControllerDispose):
(webkitFindControllerConstructed):
(webKitFindControllerPerform):
(webkit_find_controller_search_finish):
* UIProcess/API/gtk/WebKitFormClient.cpp:
(attachFormClientToView):
* UIProcess/API/gtk/WebKitLoaderClient.cpp:
(attachLoaderClientToView):
* UIProcess/API/gtk/WebKitPolicyClient.cpp:
(attachPolicyClientToView):
* UIProcess/API/gtk/WebKitPrintOperation.cpp:
(drawPagesForPrintingCompleted):
(webkitPrintOperationPrintPagesForFrame):
(webkit_print_operation_run_dialog):
(webkit_print_operation_print):
* UIProcess/API/gtk/WebKitUIClient.cpp:
(attachUIClientToView):
* UIProcess/API/gtk/WebKitWebContext.cpp:
(webkitWebContextCreatePageForWebView):
(webkitWebContextWebViewDestroyed):
* UIProcess/API/gtk/WebKitWebView.cpp:
(webkitWebViewCreatePage):
(webkitWebViewGetPage):
* UIProcess/API/gtk/WebKitWebViewPrivate.h:

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