WebKit-https.git
2 years ago[CacheAPI] Introduce a WebKit::CacheStorage namespace
commit-queue@webkit.org [Wed, 23 Aug 2017 19:45:48 +0000 (19:45 +0000)]
[CacheAPI] Introduce a WebKit::CacheStorage namespace
https://bugs.webkit.org/show_bug.cgi?id=175885

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

Introducing WebKit::CacheStorage namespace.
Splitting CacheStorageEngine.h in three files.
Updating client code accordingly.

* NetworkProcess/cache/CacheStorage.h: Added.
* NetworkProcess/cache/CacheStorageEngine.cpp:
(WebKit::CacheStorage::globalEngineMap):
(WebKit::CacheStorage::Engine::from):
(WebKit::CacheStorage::Engine::destroyEngine):
(WebKit::CacheStorage::Engine::defaultEngine):
(WebKit::CacheStorage::Engine::open):
(WebKit::CacheStorage::Engine::remove):
(WebKit::CacheStorage::Engine::retrieveCaches):
(WebKit::CacheStorage::Engine::retrieveRecords):
(WebKit::CacheStorage::Engine::putRecords):
(WebKit::CacheStorage::Engine::deleteMatchingRecords):
(WebKit::CacheStorage::Engine::writeCachesToDisk):
(WebKit::CacheStorage::Engine::readCachesFromDisk):
(WebKit::CacheStorage::Engine::readCache):
(WebKit::CacheStorage::Engine::writeCacheRecords):
(WebKit::CacheStorage::Engine::removeCacheRecords):
(WebKit::CacheStorage::Engine::cache):
(WebKit::CacheStorage::Engine::caches const):
(WebKit::CacheStorage::Engine::queryCache):
* NetworkProcess/cache/CacheStorageEngineCache.h: Added.
* NetworkProcess/cache/CacheStorageEngineConnection.cpp:
(WebKit::CacheStorageEngineConnection::open):
(WebKit::CacheStorageEngineConnection::remove):
(WebKit::CacheStorageEngineConnection::caches):
(WebKit::CacheStorageEngineConnection::records):
(WebKit::CacheStorageEngineConnection::deleteMatchingRecords):
(WebKit::CacheStorageEngineConnection::putRecords):
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/Cache/WebCacheStorageConnection.cpp:
(WebKit::WebCacheStorageConnection::openCompleted):
(WebKit::WebCacheStorageConnection::removeCompleted):
(WebKit::WebCacheStorageConnection::updateCaches):
(WebKit::WebCacheStorageConnection::updateRecords):
(WebKit::WebCacheStorageConnection::deleteRecordsCompleted):
(WebKit::WebCacheStorageConnection::putRecordsCompleted):
* WebProcess/Cache/WebCacheStorageConnection.h:

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

2 years agoDefault passive touch event listeners on the root
dino@apple.com [Wed, 23 Aug 2017 19:22:28 +0000 (19:22 +0000)]
Default passive touch event listeners on the root
https://bugs.webkit.org/show_bug.cgi?id=175346
<rdar://problem/33164597>

Reviewed by Sam Weinig.

Source/WebCore:

Make any touchstart or touchmove event listeners passive by default
if they are on the document, window, body or document element targets.
This follows the "intervention" first implemented by Chrome/Blink:

https://github.com/WICG/interventions/issues/35
https://docs.google.com/document/d/1II7oSIpd8pK91V5kEM3tDLKcIj398jOJn8Niqy6_loI/edit
https://github.com/whatwg/dom/issues/365

If the event listener explicitly defines "passive" to false in their
options dictionary, then they'll still get a non-passive listener.

NOTE: Any fallout from this bug should be collected in:
https://bugs.webkit.org/show_bug.cgi?id=175869
Please do not revert this change just because a site is broken. We'll
gather the issues and see if we can evangelise or detect via code.

Tests: fast/events/touch/ios/passive-by-default-on-document-and-window.html
       fast/events/touch/ios/passive-by-default-overridden-on-document-and-window.html

* dom/EventNames.h:
(WebCore::EventNames::isTouchScrollBlockingEventType const): Added this helper
to identify the types of touches we want to check for.
* dom/EventTarget.cpp:
(WebCore::EventTarget::addEventListener): Check for the event being one of the touch-types
that we care about, and the target being one of the Node/Window types we care about. If
so, tell the event listener to be passive.
* dom/EventTarget.h: Use an optional for the passive member.
(WebCore::EventTarget::AddEventListenerOptions::AddEventListenerOptions):
* dom/EventTarget.idl: Change "passive" to not have a default value, so we
can detect if it was explicitly set to false.

LayoutTests:

* fast/events/touch/ios/passive-by-default-on-document-and-window-expected.txt: Added.
* fast/events/touch/ios/passive-by-default-on-document-and-window.html: Added.
* fast/events/touch/ios/passive-by-default-overridden-on-document-and-window-expected.txt: Added.
* fast/events/touch/ios/passive-by-default-overridden-on-document-and-window.html: Added.
* fast/events/touch/ios/tap-with-active-listener-on-window.html: Explicitly set passive to false.
* fast/events/touch/ios/touch-event-regions/document.html: Ditto.

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

2 years agoWeb Inspector: Make lock icon crispier
nvasilyev@apple.com [Wed, 23 Aug 2017 18:47:34 +0000 (18:47 +0000)]
Web Inspector: Make lock icon crispier
https://bugs.webkit.org/show_bug.cgi?id=175868

Reviewed by Matt Baker.

* UserInterface/Images/Locked.svg:

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

2 years agoAccess expectations path through apple_additions
jbedard@apple.com [Wed, 23 Aug 2017 18:35:15 +0000 (18:35 +0000)]
Access expectations path through apple_additions
https://bugs.webkit.org/show_bug.cgi?id=174800
<rdar://problem/33498899>

Unreviewed follow-up fix for r221087.

* Scripts/webkitpy/port/ios.py:
(IOSPort._apple_additions_path): Use iOS mapping instead of Mac mapping.

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

2 years agoTry to fix the WinCairo build after r221068
timothy_horton@apple.com [Wed, 23 Aug 2017 18:14:39 +0000 (18:14 +0000)]
Try to fix the WinCairo build after r221068

* platform/win/PlatformScreenWin.cpp:

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

2 years agoAccess expectations path through apple_additions
jbedard@apple.com [Wed, 23 Aug 2017 18:09:06 +0000 (18:09 +0000)]
Access expectations path through apple_additions
https://bugs.webkit.org/show_bug.cgi?id=174800
<rdar://problem/33498899>

Reviewed by David Kilzer.

Follow-up fix. Mapping of operating system names was done incorrectly.

* Scripts/webkitpy/port/ios.py:
(IOSPort._apple_additions_path): Correctly find the operating system to be replaced.
* Scripts/webkitpy/port/ios_device_unittest.py:
(IOSDeviceTest.test_layout_test_searchpath_with_apple_additions): Add test for operating
system name replacement.
* Scripts/webkitpy/port/ios_simulator_unittest.py:
(IOSSimulatorTest.test_layout_test_searchpath_with_apple_additions): Add test for operating
system name replacement.
* Scripts/webkitpy/port/mac.py: Correctly find the operating system to be replaced.
(MacPort._apple_additions_path):
* Scripts/webkitpy/port/mac_unittest.py:
(MacTest.test_layout_test_searchpath_with_apple_additions): Add test for operating system
name replacement.
* Scripts/webkitpy/port/port_testcase.py:
(bind_mock_apple_additions.MockAppleAdditions.ios_os_name): Change the passed name so that
operating system name replacement can be tested.
(bind_mock_apple_additions.MockAppleAdditions.mac_os_name): Ditto.

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

2 years ago[Cache API] Enable persistent coder to encode FetchOptions
commit-queue@webkit.org [Wed, 23 Aug 2017 17:54:03 +0000 (17:54 +0000)]
[Cache API] Enable persistent coder to encode FetchOptions
https://bugs.webkit.org/show_bug.cgi?id=175883

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

Source/WebCore:

No change of behavior.
Adding encode/decode routines for FetchOptions.

* loader/FetchOptions.h:
(WebCore::FetchOptions::encode const):
(WebCore::FetchOptions::decode):
* platform/ReferrerPolicy.h:

Source/WebKit:

Removing FetchOptions related ArgumentCoders specific code.

* Shared/WebCoreArgumentCoders.cpp:
* Shared/WebCoreArgumentCoders.h:

Source/WTF:

Enabling encoding/decoding of enums with EnumTraits.
This code is similar to the one of IPC encoder/decoder.

* wtf/persistence/PersistentDecoder.h:
(WTF::Persistence::Decoder::decode):
* wtf/persistence/PersistentEncoder.h:
(WTF::Persistence::Encoder::encode):

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

2 years agoCacheStorageEngine readCachesFromDisk callback should return the read Caches
commit-queue@webkit.org [Wed, 23 Aug 2017 17:52:56 +0000 (17:52 +0000)]
CacheStorageEngine readCachesFromDisk callback should return the read Caches
https://bugs.webkit.org/show_bug.cgi?id=175882

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

Callback of readCachesFromDisk takes now a Caches or error parameter.

* NetworkProcess/cache/CacheStorageEngine.cpp:
(WebKit::CacheStorageEngine::open):
(WebKit::CacheStorageEngine::retrieveCaches):
(WebKit::CacheStorageEngine::readCachesFromDisk):
* NetworkProcess/cache/CacheStorageEngine.h:

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

2 years agoJSTests:
commit-queue@webkit.org [Wed, 23 Aug 2017 17:41:48 +0000 (17:41 +0000)]
JSTests:
Add a micro-benchmark for checking that accessing a variable within a 'with'
block does not automatically prevent type prediction.
https://bugs.webkit.org/show_bug.cgi?id=175738

Patch by Robin Morisset <rmorisset@apple.com> on 2017-08-23
Reviewed by Saam Barati.

* stress/with_and_arith.js: Added.
(with):

Source/JavaScriptCore:
Make GetDynamicVar propagate heap predictions instead of saying HeapTop
https://bugs.webkit.org/show_bug.cgi?id=175738

Patch by Robin Morisset <rmorisset@apple.com> on 2017-08-23
Reviewed by Saam Barati.

The heap prediction always end up in m_opInfo2. But GetDynamicVar was already storing getPutInfo in there.
So we move that one into m_opInfo. We can do this because it is 32-bit, and the already present identifierNumber
is also 32-bit, so we can pack both in m_opInfo (which is 64 bits).

* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::makeDynamicVarOpInfo):
(JSC::DFG::ByteCodeParser::parseBlock):
* dfg/DFGNode.h:
(JSC::DFG::Node::getPutInfo):
(JSC::DFG::Node::hasHeapPrediction):
* dfg/DFGPredictionPropagationPhase.cpp:

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

2 years agoRace condition in StartWebThread causing crash
utatane.tea@gmail.com [Wed, 23 Aug 2017 17:41:39 +0000 (17:41 +0000)]
Race condition in StartWebThread causing crash
https://bugs.webkit.org/show_bug.cgi?id=175852

Reviewed by Mark Lam.

When starting web thread, the main thread waits for completion of web thread initialization
by using pthread_cond_t. However, the main thread may be woken up due to the existence of
the spurious wake up of pthread_cond_t.

Instead, we should use WTF::Lock and WTF::Condition. Since our StartWebThread already calls
WTF::initializeThreading, it is safe to use WTF::Lock and WTF::Condition. And our WTF::Condition
does not have the spurious wake up problem as described in Condition.h.

* platform/ios/wak/WebCoreThread.mm:
(RunWebThread):
(StartWebThread):

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

2 years agoMarked imported/w3c/web-platform-tests/html/webappapis/timers/type-long-settimeout...
jlewis3@apple.com [Wed, 23 Aug 2017 17:16:51 +0000 (17:16 +0000)]
Marked imported/w3c/web-platform-tests/html/webappapis/timers/type-long-settimeout.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=173780

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

2 years agoRegression(r221059): NetworkDataTask::didReceiveResponse() should not use PolicyUse...
cdumez@apple.com [Wed, 23 Aug 2017 17:14:09 +0000 (17:14 +0000)]
Regression(r221059): NetworkDataTask::didReceiveResponse() should not use PolicyUse for HTTP/0.9
https://bugs.webkit.org/show_bug.cgi?id=175872

Reviewed by Daniel Bates.

r221059 was calling the ResponseCompletionHandler with {} which ended up being
PolicyUse. Since this is an error case and do not want to receive the data, it
makes more sense to use PolicyIgnore instead. There should not be a behavior
change on WebKit side though since we are cancelling the load right after
calling the completion handler anyway.

Tests under http/tests/security/http-0.9/ are still passing.

* NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::didReceiveResponse):

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

2 years ago[ESNext] Async iteration - Implement Async Generator - runtime
gskachkov@gmail.com [Wed, 23 Aug 2017 17:05:33 +0000 (17:05 +0000)]
[ESNext] Async iteration - Implement Async Generator - runtime
https://bugs.webkit.org/show_bug.cgi?id=175240

Reviewed by Yusuke Suzuki.

JSTests:

* stress/async-iteration-async-from-sync.js: Added.
(assert):
(const.Logger):
(this.fullfilled):
(this.fullfilledDone):
(this.rejected):
(this.catched):
(this.isFinal):
(_assertLogger):
(const.assertLogger):
(const.getPromise.promiseHolder.return.new.Promise):
(foo):
(async.boo):
(bar):
(async.baz):
(async.goo):
* stress/async-iteration-basic.js: Added.
(assert):
(const.Logger):
(this.fullfilled):
(this.fullfilledDone):
(this.rejected):
(this.catched):
(this.isFinal):
(_assertLogger):
(const.assertLogger):
(const.getPromise.promiseHolder.return.new.Promise):
(async.generator):
(iterator.next.then):
(async.baz):
(async.boo):
(async.foo):
(async.goo):
(A.prototype.async.foo):
(A.prototype.async.boo):
(A):
(asyncGenExp.async):
(async.joo):
(j.next.then):
(then):
(async.koo):
(async.loo):
(async.moo):
(async.noo):
(async.ooo):
(async.roo):
(async.poo):
(async.soo):
(async.too):
* stress/async-iteration-evaluation.js: Added.
(assert):
(async.foo):
(catch):
* stress/async-iteration-syntax.js:
* stress/async-iteration-yield-promise.js: Added.
(assert):
(const.Logger):
(this.fullfilled):
(this.fullfilledDone):
(this.rejected):
(this.catched):
(this.isFinal):
(_assertLogger):
(const.assertLogger):
(const.getPromise.promiseHolder.return.new.Promise):
(async.foo):
(async.boo):
(async.bar):
* stress/async-iteration-yield-star-interface.js: Added.
(assert):
(const.getPromise.promiseHolder.return.new.Promise):
(const.Logger):
(this.fullfilled):
(this.fullfilledDone):
(this.rejected):
(this.catched):
(this.custom):
(this.isFinal):
(_assertLogger):
(const.assertLogger):
(let.asyncIter.Symbol.asyncIterator):
(let.asyncIter.next):
(let.asyncIter.throw):
(let.asyncIter.return):
(async.foo):
(asyncIter.Symbol.asyncIterator):
(asyncIter.next):
(async.boo):
(asyncIter.return):
(async.bar):
(async.baz):
(async.foobar):
* stress/async-iteration-yield-star.js: Added.
(assert):
(const.Logger):
(this.fullfilled):
(this.fullfilledDone):
(this.rejected):
(this.catched):
(this.custom):
(this.isFinal):
(_assertLogger):
(const.assertLogger):
(const.getPromise.promiseHolder.return.new.Promise):
(async.foo):
(async.boo):
(async.bar):
(async.baz):
(async.joo):
(async.goo):
(async.koo):
(async.loo):
(let.asyncIter.Symbol.asyncIterator):
(let.asyncIter.next):
(let.asyncIter.throw):
(let.asyncIter.return):
(async.moo):
(async.noo):
* test262.yaml:

Source/JavaScriptCore:

Current implementation is draft version of Async Iteration.
Link to spec https://tc39.github.io/proposal-async-iteration/

To implement async generator added new states that show reason why async generator was suspended:

The main difference between async function and async generator is that,
async function returns promise but async generator returns
object with methods (next, throw and return) that return promise that
can be resolved with pair of properties value and done.
Async generator functions are similar to generator functions, with the following differences:
whose methods (next, throw, and return) return promises for { value, done },
instead of directly returning { value, done }.
This automatically makes the returned async generator objects async iterators.
  delegation to sync and async iterables

* CMakeLists.txt:
* DerivedSources.make:
* JavaScriptCore.xcodeproj/project.pbxproj:
* builtins/AsyncFromSyncIteratorPrototype.js: Added.
(next.try):
(next):
(return.try):
(return):
(throw.try):
(throw):
(globalPrivate.createAsyncFromSyncIterator):
(globalPrivate.AsyncFromSyncIteratorConstructor):
* builtins/AsyncGeneratorPrototype.js: Added.
(globalPrivate.createAsyncGeneratorQueue):
(globalPrivate.asyncGeneratorQueueIsEmpty):
(globalPrivate.asyncGeneratorQueueCreateItem):
(globalPrivate.asyncGeneratorQueueEnqueue):
(globalPrivate.asyncGeneratorQueueDequeue):
(globalPrivate.asyncGeneratorQueueGetFirstValue):
(globalPrivate.asyncGeneratorDequeue):
(globalPrivate.isExecutionState):
(globalPrivate.isSuspendYieldState):
(globalPrivate.asyncGeneratorReject):
(globalPrivate.asyncGeneratorResolve):
(asyncGeneratorYieldAwaited):
(globalPrivate.asyncGeneratorYield):
(const.onRejected):
(globalPrivate.awaitValue):
(const.onFulfilled):
(globalPrivate.doAsyncGeneratorBodyCall):
(globalPrivate.asyncGeneratorResumeNext.):
(globalPrivate.asyncGeneratorResumeNext):
(globalPrivate.asyncGeneratorEnqueue):
(next):
(return):
(throw):
* builtins/AsyncIteratorPrototype.js: Added.
(symbolAsyncIteratorGetter):
* builtins/BuiltinNames.h:
* bytecode/BytecodeDumper.cpp:
(JSC::BytecodeDumper<Block>::dumpBytecode):
* bytecode/BytecodeIntrinsicRegistry.cpp:
(JSC::BytecodeIntrinsicRegistry::BytecodeIntrinsicRegistry):
* bytecode/BytecodeIntrinsicRegistry.h:
* bytecode/BytecodeList.json:
* bytecode/BytecodeUseDef.h:
(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::emitCreateAsyncGeneratorQueue):
(JSC::BytecodeGenerator::emitPutAsyncGeneratorFields):
(JSC::BytecodeGenerator::emitNewFunctionExpressionCommon):
(JSC::BytecodeGenerator::emitNewFunction):
(JSC::BytecodeGenerator::emitIteratorNextWithValue):
(JSC::BytecodeGenerator::emitIteratorClose):
(JSC::BytecodeGenerator::emitYieldPoint):
(JSC::BytecodeGenerator::emitYield):
(JSC::BytecodeGenerator::emitCallIterator):
(JSC::BytecodeGenerator::emitAwait):
(JSC::BytecodeGenerator::emitGetIterator):
(JSC::BytecodeGenerator::emitGetAsyncIterator):
(JSC::BytecodeGenerator::emitDelegateYield):
* bytecompiler/BytecodeGenerator.h:
* bytecompiler/NodesCodegen.cpp:
(JSC::ReturnNode::emitBytecode):
(JSC::FunctionNode::emitBytecode):
(JSC::YieldExprNode::emitBytecode):
(JSC::AwaitExprNode::emitBytecode):
* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock):
* dfg/DFGCapabilities.cpp:
(JSC::DFG::capabilityLevel):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGClobbersExitState.cpp:
(JSC::DFG::clobbersExitState):
* dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
* dfg/DFGMayExit.cpp:
* dfg/DFGNode.h:
(JSC::DFG::Node::convertToPhantomNewFunction):
(JSC::DFG::Node::convertToPhantomNewAsyncGeneratorFunction):
(JSC::DFG::Node::hasCellOperand):
(JSC::DFG::Node::isFunctionAllocation):
(JSC::DFG::Node::isPhantomFunctionAllocation):
(JSC::DFG::Node::isPhantomAllocation):
* dfg/DFGNodeType.h:
* dfg/DFGObjectAllocationSinkingPhase.cpp:
* dfg/DFGPredictionPropagationPhase.cpp:
* dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileNewFunction):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGStoreBarrierInsertionPhase.cpp:
* dfg/DFGValidate.cpp:
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileNewFunction):
* ftl/FTLOperations.cpp:
(JSC::FTL::operationPopulateObjectInOSR):
(JSC::FTL::operationMaterializeObjectInOSR):
* jit/JIT.cpp:
(JSC::JIT::privateCompileMainPass):
* jit/JIT.h:
* jit/JITOpcodes.cpp:
(JSC::JIT::emitNewFuncCommon):
(JSC::JIT::emit_op_new_async_generator_func):
(JSC::JIT::emit_op_new_async_func):
(JSC::JIT::emitNewFuncExprCommon):
(JSC::JIT::emit_op_new_async_generator_func_exp):
* jit/JITOperations.cpp:
* jit/JITOperations.h:
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
* llint/LLIntSlowPaths.h:
* llint/LowLevelInterpreter.asm:
* parser/ASTBuilder.h:
(JSC::ASTBuilder::createFunctionMetadata):
* runtime/AsyncFromSyncIteratorPrototype.cpp: Added.
(JSC::AsyncFromSyncIteratorPrototype::AsyncFromSyncIteratorPrototype):
(JSC::AsyncFromSyncIteratorPrototype::finishCreation):
(JSC::AsyncFromSyncIteratorPrototype::create):
* runtime/AsyncFromSyncIteratorPrototype.h: Added.
(JSC::AsyncFromSyncIteratorPrototype::createStructure):
* runtime/AsyncGeneratorFunctionConstructor.cpp: Added.
(JSC::AsyncGeneratorFunctionConstructor::AsyncGeneratorFunctionConstructor):
(JSC::AsyncGeneratorFunctionConstructor::finishCreation):
(JSC::callAsyncGeneratorFunctionConstructor):
(JSC::constructAsyncGeneratorFunctionConstructor):
(JSC::AsyncGeneratorFunctionConstructor::getCallData):
(JSC::AsyncGeneratorFunctionConstructor::getConstructData):
* runtime/AsyncGeneratorFunctionConstructor.h: Added.
(JSC::AsyncGeneratorFunctionConstructor::create):
(JSC::AsyncGeneratorFunctionConstructor::createStructure):
* runtime/AsyncGeneratorFunctionPrototype.cpp: Added.
(JSC::AsyncGeneratorFunctionPrototype::AsyncGeneratorFunctionPrototype):
(JSC::AsyncGeneratorFunctionPrototype::finishCreation):
* runtime/AsyncGeneratorFunctionPrototype.h: Added.
(JSC::AsyncGeneratorFunctionPrototype::create):
(JSC::AsyncGeneratorFunctionPrototype::createStructure):
* runtime/AsyncGeneratorPrototype.cpp: Added.
(JSC::AsyncGeneratorPrototype::finishCreation):
* runtime/AsyncGeneratorPrototype.h: Added.
(JSC::AsyncGeneratorPrototype::create):
(JSC::AsyncGeneratorPrototype::createStructure):
(JSC::AsyncGeneratorPrototype::AsyncGeneratorPrototype):
* runtime/AsyncIteratorPrototype.cpp: Added.
(JSC::AsyncIteratorPrototype::finishCreation):
* runtime/AsyncIteratorPrototype.h: Added.
(JSC::AsyncIteratorPrototype::create):
(JSC::AsyncIteratorPrototype::createStructure):
(JSC::AsyncIteratorPrototype::AsyncIteratorPrototype):
* runtime/CommonIdentifiers.h:
* runtime/FunctionConstructor.cpp:
(JSC::constructFunctionSkippingEvalEnabledCheck):
* runtime/FunctionConstructor.h:
* runtime/FunctionExecutable.h:
* runtime/JSAsyncGeneratorFunction.cpp: Added.
(JSC::JSAsyncGeneratorFunction::JSAsyncGeneratorFunction):
(JSC::JSAsyncGeneratorFunction::createImpl):
(JSC::JSAsyncGeneratorFunction::create):
(JSC::JSAsyncGeneratorFunction::createWithInvalidatedReallocationWatchpoint):
* runtime/JSAsyncGeneratorFunction.h: Added.
(JSC::JSAsyncGeneratorFunction::allocationSize):
(JSC::JSAsyncGeneratorFunction::createStructure):
* runtime/JSFunction.cpp:
(JSC::JSFunction::getOwnPropertySlot):
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):
* runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::asyncIteratorPrototype const):
(JSC::JSGlobalObject::asyncGeneratorPrototype const):
(JSC::JSGlobalObject::asyncGeneratorFunctionPrototype const):
(JSC::JSGlobalObject::asyncGeneratorFunctionStructure const):
* runtime/Options.h:

LayoutTests:

* js/Object-getOwnPropertyNames-expected.txt:
* js/script-tests/Object-getOwnPropertyNames.js:

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

2 years agoAccess expectations path through apple_additions
jbedard@apple.com [Wed, 23 Aug 2017 17:04:25 +0000 (17:04 +0000)]
Access expectations path through apple_additions
https://bugs.webkit.org/show_bug.cgi?id=174800
<rdar://problem/33498899>

Reviewed by Alexey Proskuryakov.

When external test expectations are imported through additional-platform-directory, they will
over-write any WebKit expectations. Access some expectations from apple_additions to correct
these precedence issues.

* Scripts/webkitpy/port/ios.py:
(IOSPort._apple_additions_path): Convert test expectation directory to a path
coming from apple_additions.
(IOSPort.default_baseline_search_path): Alternate between WebKit path and apple_additions
path for layout test expectations.
* Scripts/webkitpy/port/ios_device_unittest.py:
(IOSDeviceTest.test_layout_test_searchpath_with_apple_additions): Added to test layout-test search paths.
* Scripts/webkitpy/port/ios_simulator_unittest.py:
(IOSSimulatorTest.test_layout_test_searchpath_with_apple_additions): Added to test layout-test search paths.
* Scripts/webkitpy/port/mac.py:
(MacPort._apple_additions_path): Convert test expectation directory to a path
coming from apple_additions.
(MacPort.default_baseline_search_path): Alternate between WebKit path and apple_additions
path for layout test expectations.
* Scripts/webkitpy/port/mac_unittest.py:
(MacTest.test_layout_test_searchpath_with_apple_additions): Added to test layout-test search paths.
* Scripts/webkitpy/port/port_testcase.py:
(bind_mock_apple_additions): Added to create mock apple_additions for a block.
(bind_mock_apple_additions.MockAppleAdditions): Contains apple_addition stubs for testing.
* Scripts/webkitpy/port/win.py:
(WinPort.default_baseline_search_path): Include apple_additions test expectation for Windows.

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

2 years agoFix verbose in tests
jfbastien@apple.com [Wed, 23 Aug 2017 16:28:29 +0000 (16:28 +0000)]
Fix verbose in tests

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

2 years agoEnsure media controls host exists before using it
bfulgham@apple.com [Wed, 23 Aug 2017 16:25:21 +0000 (16:25 +0000)]
Ensure media controls host exists before using it
https://bugs.webkit.org/show_bug.cgi?id=175833
<rdar://problem/34001219>

Reviewed by Jer Noble.

Source/WebCore:

Although we ensure that the media controls shadow root exists before updating the text track
container, we don't check that the media controls host has been created yet. We do check
and create in other places in HTMLMediaElement.

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

LayoutTests:

* media/track/track-display-before-controls-crash-expected.txt: Added.
* media/track/track-display-before-controls-crash.html: Added.

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

2 years ago[Win] Compile error, include file <wtf/AVFoundationHeaderDetection.h> is not found.
pvollan@apple.com [Wed, 23 Aug 2017 16:21:43 +0000 (16:21 +0000)]
[Win] Compile error, include file <wtf/AVFoundationHeaderDetection.h> is not found.
https://bugs.webkit.org/show_bug.cgi?id=175853

Reviewed by Brent Fulgham.

Copy generated WTF header files to the same place as we copy forwarding headers.

* WTF.vcxproj/WTF.proj:

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

2 years ago[WPE] Some event handlers not working.
clopez@igalia.com [Wed, 23 Aug 2017 15:16:23 +0000 (15:16 +0000)]
[WPE] Some event handlers not working.
https://bugs.webkit.org/show_bug.cgi?id=175864

Reviewed by Michael Catanzaro.

Source/WebCore:

Share the EventHandler implementation with the GTK port and add ifdefs where needed.

Covered by existing tests.

* PlatformGTK.cmake:
* PlatformWPE.cmake:
* page/wpe/EventHandlerWPE.cpp: Removed.
* platform/glib/EventHandlerGlib.cpp: Renamed from Source/WebCore/page/gtk/EventHandlerGtk.cpp.
(WebCore::EventHandler::shouldTurnVerticalTicksIntoHorizontal const):

LayoutTests:

Remove expected failures for tests that now pass, add new expectation
for a test that is failing also on GTK+ and rebaseline a test with
the same expected result than on GTK+.

* platform/wpe/TestExpectations:
* platform/wpe/fast/events/focus-label-legend-elements-with-tab-expected.txt: Added.

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

2 years ago[GTK] Remove some flaky annotations for passing tests.
commit-queue@webkit.org [Wed, 23 Aug 2017 13:02:00 +0000 (13:02 +0000)]
[GTK] Remove some flaky annotations for passing tests.
https://bugs.webkit.org/show_bug.cgi?id=175881

Unreviewed test gardening.

None of these tests have had their alternative status in months.

Patch by Ms2ger <Ms2ger@igalia.com> on 2017-08-23

* platform/gtk/TestExpectations:

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

2 years agoUnreviewed WPE gardening. Unskipping tests under fast/canvas/, adding
zandobersek@gmail.com [Wed, 23 Aug 2017 12:56:27 +0000 (12:56 +0000)]
Unreviewed WPE gardening. Unskipping tests under fast/canvas/, adding
failure expectations for actual failures, and providing port-specific
baselines for tests that require them.

* platform/wpe/TestExpectations:
* platform/wpe/fast/canvas: Added.
* platform/wpe/fast/canvas/canvas-size-change-after-layout-expected.txt: Added.
* platform/wpe/fast/canvas/canvas-zoom-expected.txt: Added.
* platform/wpe/fast/canvas/webgl: Added.
* platform/wpe/fast/canvas/webgl/angle-instanced-arrays-expected.txt: Added.
* platform/wpe/fast/canvas/webgl/angle-instanced-arrays-out-of-bounds-expected.txt: Added.
* platform/wpe/fast/canvas/webgl/css-webkit-canvas-expected.txt: Added.
* platform/wpe/fast/canvas/webgl/css-webkit-canvas-repaint-expected.txt: Added.
* platform/wpe/fast/canvas/webgl/framebuffer-object-attachment-expected.txt: Added.
* platform/wpe/fast/canvas/webgl/glsl-conformance-expected.txt: Added.
* platform/wpe/fast/canvas/webgl/oes-texture-half-float-expected.txt: Added.
* platform/wpe/fast/canvas/webgl/webgl-draw-buffers-expected.txt: Added.

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

2 years ago[GStreamer][GTK][WPE] Move common things to GStreamer cmake files
calvaris@igalia.com [Wed, 23 Aug 2017 12:42:48 +0000 (12:42 +0000)]
[GStreamer][GTK][WPE] Move common things to GStreamer cmake files
https://bugs.webkit.org/show_bug.cgi?id=175625

Three files were created as kind of hooks for the GTK and WPE
CMake option files. The definitions one is to enable, disable and
create the common options (that can be and are actually overriden
in some cases. The dependencies one adds dependencies for the
option switches that are set. The checks one ensure the
dependencies are met depending on the option switches.

Reviewed by Carlos Alberto Lopez Perez.

* Source/cmake/GStreamerChecks.cmake: Added.
* Source/cmake/GStreamerDefinitions.cmake: Added.
* Source/cmake/GStreamerDependencies.cmake: Added.
* Source/cmake/OptionsGTK.cmake:
* Source/cmake/OptionsWPE.cmake:

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

2 years ago[GTK][WPE] Unreviewed test gardening
commit-queue@webkit.org [Wed, 23 Aug 2017 09:17:28 +0000 (09:17 +0000)]
[GTK][WPE] Unreviewed test gardening
https://bugs.webkit.org/show_bug.cgi?id=175878

Unreviewed test gardening.

Patch by Ms2ger <Ms2ger@igalia.com> on 2017-08-23

* platform/gtk/TestExpectations:
  - Mark fast/mediastream/captureStream/canvas2d-heavy-drawing.html as flaky.
  - Add crash annotations for cache-storage tests.
* platform/gtk/http/wpt/beacon/beacon-async-error-logging-expected.txt:
  Added: logs a different error message to the console on GTK.
* platform/gtk/js/dom/global-constructors-attributes-expected.txt:
  Update for the disabling of the CSS Regions code in r220870.
* platform/wpe/js/dom/global-constructors-attributes-expected.txt:
  Update for the disabling of the CSS Regions code in r220870.

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

2 years agoDisable intermittently crashing CSS Regions tests.
commit-queue@webkit.org [Wed, 23 Aug 2017 09:16:18 +0000 (09:16 +0000)]
Disable intermittently crashing CSS Regions tests.
https://bugs.webkit.org/show_bug.cgi?id=135051

Unreviewed test gardening.

They have been failing since the CSS Regions code was disabled in r220870.
That commit also skipped these tests, but the older crash expectation
overrode the skipping.

Patch by Ms2ger <Ms2ger@igalia.com> on 2017-08-23

* platform/gtk/TestExpectations:

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

2 years agoUnreviewed. The WPE port should build TestWebKitAPI with the same
zandobersek@gmail.com [Wed, 23 Aug 2017 06:45:42 +0000 (06:45 +0000)]
Unreviewed. The WPE port should build TestWebKitAPI with the same
compiler flags as the GTK+ port, disabling a few flags that are
sprouting a lot of warning output.

* TestWebKitAPI/PlatformWPE.cmake:

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

2 years ago_WKThumbnailView should use the screen color space instead of sRGB
timothy_horton@apple.com [Wed, 23 Aug 2017 04:59:30 +0000 (04:59 +0000)]
_WKThumbnailView should use the screen color space instead of sRGB
https://bugs.webkit.org/show_bug.cgi?id=175858
<rdar://problem/33925559>

Reviewed by Dean Jackson.

Currently, _WKThumbnailView uses software snapshotting via
WebPage's takeSnapshot and friends, which always use sRGB.
However, it is immediately presented in display space, which
causes an expensive color conversion, which could have been avoided
if the snapshot was instead originally taken in display space.

To solve this, add:

- a mechanism allowing ShareableBitmap to be constructed with a
  configuration, which can include a color space as well as the
  existing flags (flipping SupportsAlpha to be IsOpaque instead
  because most callers want alpha)

- a WebImage constructor allowing callers to pass a ShareableBitmap
  configuration through

- a bit in SnapshotOptions for callers to indicate that they
  want to snapshot in the display's color space (repurposed
  from the ExtendedColor bit)

And then make use of that bit in _WKThumbnailView.

* Shared/API/c/WKSharedAPICast.h:
(WebKit::snapshotOptionsFromImageOptions):
Remove this incorrect conversion (WKImageOptions doesn't include
kWKSnapshotOptionsExtendedColor).

(WebKit::toSnapshotOptions):
Plumb kWKSnapshotOptionsExtendedColor to WebKit::SnapshotOptions
as the "UseScreenColorSpace". Leave the SPI name intact because
it has clients, but the difference isn't so huge that it will be
a problem.

* Shared/ImageOptions.h:
(WebKit::snapshotOptionsToImageOptions):
Remove ImageOptionsExtendedColor, and rename
SnapshotOptionsExtendedColor to SnapshotOptionsUseScreenColorSpace.

* Shared/ShareableBitmap.cpp:
(WebKit::ShareableBitmap::Handle::Handle):
(WebKit::ShareableBitmap::Handle::encode const):
(WebKit::ShareableBitmap::Handle::decode):
(WebKit::ShareableBitmap::Handle::clear):
(WebKit::ShareableBitmap::Configuration::encode const):
(WebKit::ShareableBitmap::Configuration::decode):
(WebKit::ShareableBitmap::create):
(WebKit::ShareableBitmap::createShareable):
(WebKit::ShareableBitmap::createHandle const):
(WebKit::ShareableBitmap::ShareableBitmap):
(WebKit::ShareableBitmap::calculateBytesPerPixel):
(WebKit::calculateBytesPerPixel): Deleted.
* Shared/ShareableBitmap.h:
(WebKit::ShareableBitmap::numBytesForSize):
(WebKit::ShareableBitmap::sizeInBytes const):
* Shared/cg/ShareableBitmapCG.cpp:
(WebKit::colorSpace):
(WebKit::bitmapInfo):
(WebKit::ShareableBitmap::calculateBytesPerPixel):
(WebKit::ShareableBitmap::createGraphicsContext):
(WebKit::ShareableBitmap::createCGImage const):
Remove ShareableBitmap's flags parameter, and replace it with
a configuration parameter. Configuration is a struct that currently
encompasses the newly-flipped IsOpaque bit and (on Cocoa platforms)
a platform colorspace object. Compute bytesPerPixel dynamically
based on the colorspace and whether it uses extended colors or not.

* Shared/WebImage.cpp:
(WebKit::WebImage::create):
* Shared/WebImage.h:
Pass ShareableBitmap::Configuration through to the ShareableBitmap
constructor, if provided.

* UIProcess/API/Cocoa/_WKThumbnailView.mm:
(-[_WKThumbnailView requestSnapshot]):
Make use of the new bit, and use the screen's color space.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::snapshotOptionsToBitmapConfiguration):
(WebKit::WebPage::snapshotAtSize):
(WebKit::WebPage::snapshotNode):
If the snapshot option to use the display color space is set,
fill in the colorSpace field in the ShareableBitmap::Configuration
with the screen's color space.

(WebKit::WebPage::drawRectToImage):
* Shared/WebCoreArgumentCoders.cpp:
(IPC::encodeImage):
* Shared/ContextMenuContextData.cpp:
(WebKit::ContextMenuContextData::ContextMenuContextData):
* Shared/mac/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::swapToValidFrontBuffer):
* WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
(WebKit::InjectedBundleRangeHandle::renderedImage):
* WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
(WebKit::NetscapePlugin::snapshot):
* WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::snapshot):
* WebProcess/Plugins/PluginProxy.cpp:
(WebKit::PluginProxy::geometryDidChange):
(WebKit::PluginProxy::updateBackingStore):
* WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
(WebKit::convertImageToBitmap):
(WebKit::convertCGImageToBitmap):
* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::createSelectionSnapshot const):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::getPositionInformation):
Adopt ShareableBitmap::Configuration. Since IsOpaque
defaults to false, all callers who previously constructed
ShareableBitmap with SupportsAlpha now don't have to do anything.

* platform/PlatformScreen.h:
* platform/ios/PlatformScreenIOS.mm:
(WebCore::screenColorSpace):
* platform/mac/PlatformScreenMac.mm:
(WebCore::screenColorSpace):
(WebCore::screenSupportsExtendedColor):
* platform/win/PlatformScreenWin.cpp:
(WebCore::screenColorSpace):
Add screenColorSpace, which returns the active color space for the
given Widget's screen. On Windows, just fall back to sRGB like we usually do.

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

2 years agoConsolidate the code to normalize MIME type in DataTransfer
rniwa@webkit.org [Wed, 23 Aug 2017 04:54:59 +0000 (04:54 +0000)]
Consolidate the code to normalize MIME type in DataTransfer
https://bugs.webkit.org/show_bug.cgi?id=175810

Rubber-stamped by Wenson Hsieh.

Address the forgotten review comment by Wenson.

Source/WebCore:

Tests: editing/pasteboard/datatransfer-getdata-plaintext.html

* dom/DataTransfer.cpp:
(WebCore::DataTransfer::clearData):

LayoutTests:

* editing/pasteboard/datatransfer-getdata-plaintext-expected.txt:
* editing/pasteboard/datatransfer-getdata-plaintext.html:

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

2 years agoUnreviewed, try to fix the Windows build after r221064
wenson_hsieh@apple.com [Wed, 23 Aug 2017 04:47:26 +0000 (04:47 +0000)]
Unreviewed, try to fix the Windows build after r221064

didEndUserTriggeredSelectionChanges is virtual, and needs to be overridden in WebEditorClient.

* WebCoreSupport/WebEditorClient.h:

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

2 years ago[iOS WK2] WKWebView schedules nonstop layout after pressing cmb+b,i,u inside a conten...
wenson_hsieh@apple.com [Wed, 23 Aug 2017 03:16:55 +0000 (03:16 +0000)]
[iOS WK2] WKWebView schedules nonstop layout after pressing cmb+b,i,u inside a contenteditable div
https://bugs.webkit.org/show_bug.cgi?id=175116
<rdar://problem/28279301>

Reviewed by Darin Adler and Ryosuke Niwa.

Source/WebCore:

WebCore support for WebPage::editorState refactoring. See WebKit ChangeLogs for more detail.

Tests: EditorStateTests.TypingAttributesBold
       EditorStateTests.TypingAttributesItalic
       EditorStateTests.TypingAttributesUnderline
       EditorStateTests.TypingAttributesTextAlignmentAbsoluteAlignmentOptions
       EditorStateTests.TypingAttributesTextAlignmentStartEnd
       EditorStateTests.TypingAttributesTextAlignmentDirectionalText
       EditorStateTests.TypingAttributesTextColor
       EditorStateTests.TypingAttributesMixedStyles
       EditorStateTests.TypingAttributesLinkColor

* css/StyleProperties.cpp:
(WebCore::StyleProperties::propertyAsColor const):
(WebCore::StyleProperties::propertyAsValueID const):

Introduces some helper functions in StyleProperties to convert CSS property values to Color or a CSSValueID.

* css/StyleProperties.h:
* editing/EditingStyle.cpp:
(WebCore::EditingStyle::hasStyle):

Pull out logic in selectionStartHasStyle that asks for a style TriState into EditingStyle::hasStyle. This is
because WebPage::editorState will now query for multiple styles at the selection start, but
selectionStartHasStyle currently recomputes styleAtSelectionStart every time it is called. To prevent extra work
from being done, we can just call selectionStartHasStyle once and use ask for EditingStyle::hasStyle on the
computed EditingStyle at selection start.

* editing/EditingStyle.h:
* editing/Editor.cpp:
(WebCore::Editor::selectionStartHasStyle const):

Source/WebKit:

Refactors WebPage::editorState to only use the StyleProperties derived from EditingStyle, instead of inserting
and removing a temporary node to figure out the style. Also adds hooks to notify the UI delegate of EditorState
changes.

* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(nsTextAlignment):
(dictionaryRepresentationForEditorState):
(-[WKWebView _didChangeEditorState]):

Alerts the private UI delegate of UI-side EditorState updates.

(-[WKWebView _web_editorStateDidChange]):
(-[WKWebView _executeEditCommand:argument:completion:]):
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/API/mac/WKView.mm:
(-[WKView _web_editorStateDidChange]):
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::selectionDidChange):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::executeEditCommand):

Change executeEditCommand(name, callback) to executeEditCommand(name, argument, callback) and lift out of iOS
platform code and into WebPage.cpp.

* UIProcess/WebPageProxy.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView executeEditCommandWithCallback:]):
(-[WKContentView _selectionChanged]):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::executeEditCommand): Deleted.

Move the iOS-specific implementation of executeEditCommand that invokes a callback when the web process responds
out of WebPageProxyIOS, and into cross-platform WebPageProxy code. Additionally, add a parameter for the edit
command's argument.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::editorState const):

Use EditingStyle::styleAtSelectionStart instead of Editor::styleForSelectionStart when computing an EditorState.
Tweak bold, italic and underline to use EditingStyle TriStates.

(WebKit::WebPage::executeEditCommandWithCallback):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::executeEditCommandWithCallback): Deleted.

Tools:

Introduces new testing infrastructure and API tests to test EditorState updates in the UI process. The new
EditorStateTests run on both iOS and Mac.

* TestWebKitAPI/EditingTestHarness.h: Added.
* TestWebKitAPI/EditingTestHarness.mm: Added.

EditingTestHarness is a helper object that API tests may use to apply editing commands and store EditorState
history. This test harness adds sugaring around various editing commands, and simplifies the process of checking
the state of the latest observed EditorState.

(-[EditingTestHarness initWithWebView:]):
(-[EditingTestHarness dealloc]):
(-[EditingTestHarness webView]):
(-[EditingTestHarness latestEditorState]):
(-[EditingTestHarness editorStateHistory]):
(-[EditingTestHarness insertText:andExpectEditorStateWith:]):
(-[EditingTestHarness insertHTML:andExpectEditorStateWith:]):
(-[EditingTestHarness selectAllAndExpectEditorStateWith:]):
(-[EditingTestHarness moveBackwardAndExpectEditorStateWith:]):
(-[EditingTestHarness moveWordBackwardAndExpectEditorStateWith:]):
(-[EditingTestHarness toggleBold]):
(-[EditingTestHarness toggleItalic]):
(-[EditingTestHarness toggleUnderline]):
(-[EditingTestHarness setForegroundColor:]):
(-[EditingTestHarness alignJustifiedAndExpectEditorStateWith:]):
(-[EditingTestHarness alignLeftAndExpectEditorStateWith:]):
(-[EditingTestHarness alignCenterAndExpectEditorStateWith:]):
(-[EditingTestHarness alignRightAndExpectEditorStateWith:]):
(-[EditingTestHarness insertParagraphAndExpectEditorStateWith:]):
(-[EditingTestHarness deleteBackwardAndExpectEditorStateWith:]):
(-[EditingTestHarness _execCommand:argument:expectEntries:]):

Dispatches an editing command to the web process, and blocks until a response is received. If an expected
entries dictionary is given, this will additionally verify that the latest EditorState contains all the expected
keys and values.

(-[EditingTestHarness latestEditorStateContains:]):
(-[EditingTestHarness _webView:editorStateDidChange:]):
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit2Cocoa/EditorStateTests.mm: Added.
(TestWebKitAPI::setUpEditorStateTestHarness):
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebKit2Cocoa/editor-state-test-harness.html: Added.

LayoutTests:

* platform/ios-wk2/editing/style/unbold-in-bold-expected.txt:
* platform/mac-wk2/editing/style/unbold-in-bold-expected.txt:

Rebaseline a WK2 LayoutTest expectations. This test currently expects an empty anonymous RenderBlock to be
inserted into the render tree, but this is only a result of us adding and removing a temporary <span> when
computing a RenderStyle in WebPage::editorState -- this patch removes these empty RenderBlocks, making these
expectations' RenderTrees consistent with WebKit1.

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

2 years ago[WK2] EditorState updates should be rolled into the layer update lifecycle when possible
wenson_hsieh@apple.com [Wed, 23 Aug 2017 03:15:38 +0000 (03:15 +0000)]
[WK2] EditorState updates should be rolled into the layer update lifecycle when possible
https://bugs.webkit.org/show_bug.cgi?id=175370
<rdar://problem/33799806>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Remove didChangeSelectionAndUpdateLayout -- EditorState updates that are scheduled due to missing post-layout
data will now be scheduled for the next presentation update. Additionally, add editor client hooks to notify the
WebKit layer when we've updated the current composition. See WebKit ChangeLog for more details. This patch
adjusts and rebaselines existing layout tests.

* editing/Editor.cpp:
(WebCore::SetCompositionScope::SetCompositionScope):
(WebCore::SetCompositionScope::~SetCompositionScope):

Introduce a helper RAII class to ensure that we ignore selection changes during the scope of
Editor::setComposition and call out to the client with WebEditorClient::didUpdateComposition afterwards. This
also maintains a UserTypingGestureIndicator over its lifetime, so we don't additionally need to create a
UserTypingGestureIndicator in Editor::setComposition.

(WebCore::Editor::setComposition):
* editing/FrameSelection.cpp:
(WebCore::FrameSelection::setSelection):
(WebCore::FrameSelection::updateAndRevealSelection):
(WebCore::FrameSelection::setSelectedRange):
* editing/FrameSelection.h:
(WebCore::FrameSelection::defaultSetSelectionOptions):

Plumb state about whether or not the selection change was triggered by the user to FrameSelection::setSelection,
and if so, notify the editing client. A separate SetSelectionOptions flag is used here instead of
RevealSelection to avoid calling out to the client in places where we want to reveal the selection regardless of
whether or not the selection is user triggered.

* loader/EmptyClients.cpp:
* page/EditorClient.h:

Source/WebKit:

See per-method comments for more detail. WebPage::didChangeSelection now schedules EditorState updates to be sent
during the next layer tree transaction rather than sending them synchronously. To ensure that iOS and Mac continue
to behave correctly w.r.t. EditorState updates, we immediately dispatch EditorStates in the following cases:
- After the composition changes, is confirmed, or is canceled.
- After an edit command is executed.
- After ending user-triggered selection changes.

* Shared/mac/RemoteLayerTreeTransaction.h:
(WebKit::RemoteLayerTreeTransaction::hasEditorState const):
(WebKit::RemoteLayerTreeTransaction::editorState const):
(WebKit::RemoteLayerTreeTransaction::setEditorState):

Attaches an optional EditorState to the RemoteLayerTreeTransaction. This EditorState is computed and sent over
when setting up the transaction in WebPage, if something previously scheduled an EditorState update.

* Shared/mac/RemoteLayerTreeTransaction.mm:
(WebKit::RemoteLayerTreeTransaction::encode const):
(WebKit::RemoteLayerTreeTransaction::decode):

Add coder support for sending over a layer tree transaction's EditorState.

* UIProcess/API/Cocoa/WKViewPrivate.h:
* UIProcess/API/mac/WKView.mm:
(-[WKView _doAfterNextPresentationUpdate:]):

Add _doAfterNextPresentationUpdate to WKView (used in TestWebKitAPI -- refer to
WebKitAgnosticTest::waitForNextPresentationUpdate).

* UIProcess/DrawingAreaProxy.h:
(WebKit::DrawingAreaProxy::dispatchPresentationCallbacksAfterFlushingLayers):
* UIProcess/DrawingAreaProxy.messages.in:

Add a new IPC messages, DispatchPresentationCallbacksAfterFlushingLayers, to invoke in-flight presentation
callbacks in the UI process following a layer flush in the web process.

* UIProcess/WebPageProxy.h:
* UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
* UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
* UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
(WebKit::TiledCoreAnimationDrawingAreaProxy::~TiledCoreAnimationDrawingAreaProxy):
(WebKit::TiledCoreAnimationDrawingAreaProxy::dispatchAfterEnsuringDrawing):
(WebKit::TiledCoreAnimationDrawingAreaProxy::dispatchPresentationCallbacksAfterFlushingLayers):

Run all pending _doAfterNextPresentationUpdate callbacks.

* WebProcess/WebCoreSupport/WebEditorClient.cpp:
(WebKit::WebEditorClient::didApplyStyle):
(WebKit::WebEditorClient::respondToChangedContents):
(WebKit::WebEditorClient::didEndUserTriggeredSelectionChanges):
(WebKit::WebEditorClient::didUpdateComposition):

Forward editor client calls to the WebPage.

(WebKit::WebEditorClient::didChangeSelectionAndUpdateLayout): Deleted.
* WebProcess/WebCoreSupport/WebEditorClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::editorState const):
(WebKit::WebPage::updateEditorStateAfterLayoutIfEditabilityChanged):
(WebKit::WebPage::willCommitLayerTree):
(WebKit::WebPage::didApplyStyle):

Allow style application to immediately trigger EditorState updates, if we're not currently ignoring selection
changes in the Editor.

(WebKit::WebPage::didChangeContents):

Allow applying top-level edit commands to immediately trigger EditorState updates, if we're not currently
ignoring selection changes in the Editor.

(WebKit::WebPage::didChangeSelection):
(WebKit::WebPage::didUpdateComposition):
(WebKit::WebPage::didEndUserTriggeredSelectionChanges):
(WebKit::WebPage::discardedComposition):
(WebKit::WebPage::canceledComposition):

When handling composition updates, always send an EditorState to the UI process. Unlike other cases, IME
requires immediate EditorState data, so we need to be explicit here in sending updates right away.

(WebKit::WebPage::sendEditorStateUpdate):
(WebKit::WebPage::sendPartialEditorStateAndSchedulePostLayoutUpdate):
(WebKit::WebPage::flushPendingEditorStateUpdate):

Helper methods to schedule an EditorState update to be sent upon the next layer tree update, or flush any
pending EditorState update that has been scheduled. The private, more aggressive variant of this is
sendEditorStateUpdate, which ignores whether or not there was already an EditorState update scheduled, and sends
one anyways (this still fulfills any EditorState update that was previously scheduled).

These helper methods are treated as no-ops when invoked while ignoring selection changes. This is to prevent
temporary selection state and editor commands during operations such as text indicator snapshotting from pushing
bogus information about transient editor states to the UI process.

(WebKit::WebPage::sendPostLayoutEditorStateIfNeeded): Deleted.
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::platformEditorState const):
(WebKit::WebPage::executeEditCommandWithCallback):
(WebKit::selectionIsInsideFixedPositionContainer):
(WebKit::WebPage::updateVisibleContentRects):

Fix a hack that was computing an EditorState to figure out whether the current selection starts or ends in a
fixed position container. Factors out relevant logic into a separate helper, and also schedules an EditorState
update instead of immediately computing it.

* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::addTransactionCallbackID):

Add support for registering and dispatching presentation callbacks that hook into the layer flush lifecycle,
using the tiled CA drawing area. These are used by Mac LayoutTests and API tests that need to wait until the
next flush before checking for state that depends on EditorState updates in the UI process.

(WebKit::TiledCoreAnimationDrawingArea::flushLayers):

Tell the WebPage to flush any pending EditorState updates.

* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::platformEditorState const):

Source/WebKitLegacy/mac:

Adjust WebEditorClient for interface changes.

* WebCoreSupport/WebEditorClient.h:

Source/WebKitLegacy/win:

Adjust WebEditorClient for interface changes.

* WebCoreSupport/WebEditorClient.h:

Tools:

Tweaks API tests that involve editing to wait for a presentation update before checking against UI process-side
information sent via EditorState updates. This allows any EditorState update scheduled by the test to propagate
to the UI process.

* TestWebKitAPI/Tests/WebKit2Cocoa/WKWebViewCandidateTests.mm:
(-[CandidateTestWebView typeString:inputMessage:]):
(+[CandidateTestWebView setUpWithFrame:testPage:]):
* TestWebKitAPI/Tests/WebKit2Cocoa/WKWebViewTextInput.mm:
* TestWebKitAPI/Tests/mac/AcceptsFirstMouse.mm:
(TestWebKitAPI::AcceptsFirstMouse::runTest):
* TestWebKitAPI/Tests/mac/WKWebViewMacEditingTests.mm:
* TestWebKitAPI/cocoa/TestWKWebView.h:
* TestWebKitAPI/cocoa/TestWKWebView.mm:
(-[TestWKWebView waitForNextPresentationUpdate]):

Add a new helper method to spin until the next presentation update.

* TestWebKitAPI/mac/WebKitAgnosticTest.h:
* TestWebKitAPI/mac/WebKitAgnosticTest.mm:
(TestWebKitAPI::WebKitAgnosticTest::waitForNextPresentationUpdate):

LayoutTests:

Rebaseline and adjust LayoutTests.

* editing/caret/ios/absolute-caret-position-after-scroll-expected.txt:
* editing/caret/ios/absolute-caret-position-after-scroll.html:
* editing/caret/ios/fixed-caret-position-after-scroll-expected.txt:
* editing/caret/ios/fixed-caret-position-after-scroll.html:
* editing/secure-input/password-input-changed-type.html:
* editing/secure-input/password-input-focusing.html:
* editing/secure-input/removed-password-input.html:
* editing/secure-input/reset-state-on-navigation.html:
* editing/selection/character-granularity-rect.html:

Delay checking for secure input state and caret rects until after the next presentation update.

* editing/selection/ios/absolute-selection-after-scroll-expected.txt:
* editing/selection/ios/absolute-selection-after-scroll.html:
* editing/selection/ios/fixed-selection-after-scroll-expected.txt:
* editing/selection/ios/fixed-selection-after-scroll.html:

Refactor and simplify these tests. These tests are not run on the OpenSource bots, since they depend on long
press and tap gestures.

* platform/ios-wk2/editing/inserting/insert-div-024-expected.txt:
* platform/ios-wk2/editing/inserting/insert-div-026-expected.txt:
* platform/ios-wk2/editing/style/5084241-expected.txt:

Rebaselines these tests, removing an anonymous RenderBlock inserted as a result of inserting and removing a
dummy span in order to compute a RenderStyle in WebPage::editorState. This is because editorState is no longer
invoked immediately on page load; https://bugs.webkit.org/show_bug.cgi?id=175116 tracks preventing this render
tree thrashing altogether.

* platform/mac-wk2/TestExpectations:
* platform/mac-wk2/editing/style/unbold-in-bold-expected.txt:
* resources/ui-helper.js:

Introduce new UIHelper functions.

(window.UIHelper.ensurePresentationUpdate.return.new.Promise):
(window.UIHelper.ensurePresentationUpdate):

Returns a Promise, resolved after the next presentation update.

(window.UIHelper.activateAndWaitForInputSessionAt.return.new.Promise.):
(window.UIHelper.activateAndWaitForInputSessionAt.return.new.Promise):
(window.UIHelper.activateAndWaitForInputSessionAt):

Returns a Promise, resolved after tapping at the given location and waiting for the keyboard to appear on iOS.

(window.UIHelper.getUICaretRect.return.new.Promise.):
(window.UIHelper.getUICaretRect.return.new.Promise):
(window.UIHelper.getUICaretRect):
(window.UIHelper.getUISelectionRects.return.new.Promise.):
(window.UIHelper.getUISelectionRects.return.new.Promise):
(window.UIHelper.getUISelectionRects):

Helpers to fetch selection and caret rect information in the UI process.

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

2 years agoConsolidate the code to normalize MIME type in DataTransfer
rniwa@webkit.org [Wed, 23 Aug 2017 02:57:21 +0000 (02:57 +0000)]
Consolidate the code to normalize MIME type in DataTransfer
https://bugs.webkit.org/show_bug.cgi?id=175810

Reviewed by Wenson Hsieh.

Source/WebCore:

Factored out the code to convert MIME type to lowercase after stripping whitespace,
and treat "text" as "text/plain" and "url" as "text/uri-list".

Specifications:
https://html.spec.whatwg.org/multipage/dnd.html#dom-datatransfer-getdata-2
https://html.spec.whatwg.org/multipage/dnd.html#dom-datatransfer-setdata-2
https://html.spec.whatwg.org/multipage/dnd.html#dom-datatransfer-cleardata-2

Stripping of whitespace only happens in WebKit/Blink but it's probably required for compatbility.
Spec bug: https://github.com/whatwg/html/issues/2946

Test: editing/pasteboard/datatransfer-getdata-plaintext.html

* dom/DataTransfer.cpp:
(WebCore::normalizeType):
(WebCore::DataTransfer::clearData):
(WebCore::DataTransfer::getData const):
(WebCore::DataTransfer::setData):
* platform/gtk/PasteboardGtk.cpp:
(WebCore::selectionDataTypeFromHTMLClipboardType):
* platform/ios/PasteboardIOS.mm:
(WebCore::cocoaTypeFromHTMLClipboardType):
* platform/mac/PasteboardMac.mm:
(WebCore::cocoaTypeFromHTMLClipboardType):
* platform/win/PasteboardWin.cpp:
(WebCore::clipboardTypeFromMIMEType):

LayoutTests:

Added a regression test. Some test cases were failing on some platforms.

* editing/pasteboard/datatransfer-getdata-plaintext-expected.txt: Added.
* editing/pasteboard/datatransfer-getdata-plaintext.html: Added.

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

2 years agoUnreviewed, rolling out r221033.
jlewis3@apple.com [Wed, 23 Aug 2017 01:12:09 +0000 (01:12 +0000)]
Unreviewed, rolling out r221033.

This revision caused assertion failures on all Open Source
Debug testers. See Radar for more information.

Reverted changeset:

"Ensure media controls host exists before using it"
https://bugs.webkit.org/show_bug.cgi?id=175833
http://trac.webkit.org/changeset/221033

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

2 years agoRelax keychain access to permit users to permanently allow client certificates
bfulgham@apple.com [Wed, 23 Aug 2017 01:05:22 +0000 (01:05 +0000)]
Relax keychain access to permit users to permanently allow client certificates
https://bugs.webkit.org/show_bug.cgi?id=175857
<rdar://problem/32293867>

Reviewed by Alex Christensen.

* NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
* WebProcess/com.apple.WebProcess.sb.in:

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

2 years agoMarked http/tests/loading/basic-auth-remove-credentials.html as falky on macOS.
jlewis3@apple.com [Wed, 23 Aug 2017 00:32:55 +0000 (00:32 +0000)]
Marked http/tests/loading/basic-auth-remove-credentials.html as falky on macOS.
https://bugs.webkit.org/show_bug.cgi?id=173500

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

2 years agoIntroduce a new CompletionHandler type and use it for NetworkDataTaskClient's complet...
cdumez@apple.com [Wed, 23 Aug 2017 00:09:40 +0000 (00:09 +0000)]
Introduce a new CompletionHandler type and use it for NetworkDataTaskClient's completion handlers to help catch bugs
https://bugs.webkit.org/show_bug.cgi?id=175832

Reviewed by Alex Christensen.

Source/WebKit:

Use new CompletionHandler type for NetworkDataTaskClient's completion handlers to help catch bugs.
It actually already found a bug in our HTTP 0.9 error handling which is fixed in this patch
as well.

* NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::didReceiveResponse):
* NetworkProcess/NetworkDataTask.h:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::tryPasswordBasedAuthentication):
* Shared/Authentication/AuthenticationManager.cpp:
(WebKit::AuthenticationManager::tryUseCertificateInfoForChallenge):
* Shared/Authentication/AuthenticationManager.h:
* Shared/Authentication/mac/AuthenticationManager.mac.mm:
(WebKit::AuthenticationManager::tryUseCertificateInfoForChallenge):

Source/WTF:

Introduce a new CompletionHandler type which wraps a WTF::Function and ensures via assertions
that the function is always called once and only once.

* WTF.xcodeproj/project.pbxproj:
* wtf/CompletionHandler.h: Added.
(WTF::CompletionHandler<Out):

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

2 years ago[Win] Fix compile errors.
pvollan@apple.com [Wed, 23 Aug 2017 00:06:50 +0000 (00:06 +0000)]
[Win] Fix compile errors.
https://bugs.webkit.org/show_bug.cgi?id=175860

Reviewed by Brent Fulgham.

Add required header files.

* platform/network/cf/CookieJarCFNet.cpp:

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

2 years agoMerge the latest version of Speedometer 2.0 to browserbench.org against at r221056.
rniwa@webkit.org [Wed, 23 Aug 2017 00:00:06 +0000 (00:00 +0000)]
Merge the latest version of Speedometer 2.0 to browserbench.org against at r221056.

Rubber-stamped by Joseph Pecoraro.

* Speedometer2.0: Replaced with PerformanceTests/Speedometer.
* Speedometer2.0/resources/main.js:
(window.benchmarkClient.didFinishLastIteration):
* Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.app.9debb1b0a94f14d0ebe9.js: Removed.
* Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.app.9debb1b0a94f14d0ebe9.js.map: Removed.
* Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.manifest.a55034b424c795b1a9a8.js: Removed.
* Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.manifest.a55034b424c795b1a9a8.js.map: Removed.
* Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.vendor.bade2cb8992d8a68d0d7.js: Removed.
* Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.vendor.bade2cb8992d8a68d0d7.js.map: Removed.
* Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.app.9debb1b0a94f14d0ebe9.css: Removed.
* Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.app.9debb1b0a94f14d0ebe9.css.map: Removed.
* Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.vendor.bade2cb8992d8a68d0d7.css: Removed.
* Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.vendor.bade2cb8992d8a68d0d7.css.map: Removed.
* Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/store.js:
* Speedometer2.0/resources/todomvc/vanilla-examples/es2015/src/store.js:

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

2 years agoCorrect SOUP builds after r221017 and r221050.
bfulgham@apple.com [Tue, 22 Aug 2017 23:46:29 +0000 (23:46 +0000)]
Correct SOUP builds after r221017 and r221050.
https://bugs.webkit.org/show_bug.cgi?id=175846

Reviewed by Michael Catanzaro.

* platform/network/soup/CookieJarSoup.cpp:
(WebCore::cookiesForDOM): Revise return type.

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

2 years agoAdd UIDelegatePrivate SPI corresponding to WKPageUIClient.showPage
achristensen@apple.com [Tue, 22 Aug 2017 23:15:05 +0000 (23:15 +0000)]
Add UIDelegatePrivate SPI corresponding to WKPageUIClient.showPage
https://bugs.webkit.org/show_bug.cgi?id=175797
<rdar://problem/29270035>

Reviewed by Geoffrey Garen.

Source/WebKit:

* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/Cocoa/UIDelegate.h:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::showPage):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::registerURLSchemeHandler):
window.open, createWebViewWithConfiguration, and WKURLSchemeHandlers all used together
make it so that URLSchemeHandlers are added to WebPages that already have them.  The
assertions are no longer valid.

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit2Cocoa/UIDelegate.mm: Added.
(-[UITestDelegate webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:]):
(-[UITestDelegate _showPage:]):
(-[UITestDelegate webView:startURLSchemeTask:]):
(-[UITestDelegate webView:stopURLSchemeTask:]):
(TEST):

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

2 years agoREGRESSION(R220043): Speedometer 2.0: Fix vanilla JS examples
rniwa@webkit.org [Tue, 22 Aug 2017 23:11:05 +0000 (23:11 +0000)]
REGRESSION(R220043): Speedometer 2.0: Fix vanilla JS examples
https://bugs.webkit.org/show_bug.cgi?id=175815

Reviewed by Saam Barati.

Both vanilla ES2015 and Babel + WebPack test cases were failing to mark Todo items as completed since they were relying on
`new Date().getTime()` to generate an unique ID. That's not going to work if mulitple todo items are added within 1ms.

* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.app.71bb1f671e4e65604d05.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.app.71bb1f671e4e65604d05.js.map: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.app.9debb1b0a94f14d0ebe9.js: Removed.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.app.9debb1b0a94f14d0ebe9.js.map: Removed.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.manifest.2102040c9a6e04cc046e.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.manifest.2102040c9a6e04cc046e.js.map: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.vendor.b16cc08e016d07886f5f.js: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.vendor.b16cc08e016d07886f5f.js.map: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/index.html:
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.app.71bb1f671e4e65604d05.css: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.app.71bb1f671e4e65604d05.css.map: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.vendor.b16cc08e016d07886f5f.css: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.vendor.b16cc08e016d07886f5f.css.map: Added.
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/store.js:
* Speedometer/resources/todomvc/vanilla-examples/es2015/src/store.js:

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

2 years agoPerformance Dashboard should be compatible with PHP 7.
dewei_zhu@apple.com [Tue, 22 Aug 2017 23:04:19 +0000 (23:04 +0000)]
Performance Dashboard should be compatible with PHP 7.
https://bugs.webkit.org/show_bug.cgi?id=175813

Reviewed by Ryosuke Niwa.

Use `file_get_contents('php://input')` instead of '$HTTP_RAW_POST_DATA'.
Update test harness script to load right php module in httpd.

* ReadMe.md: JSON example format fix.
* public/api/report-commits.php: Stop using '$HTTP_RAW_POST_DATA'.
* public/api/report.php: Stop using '$HTTP_RAW_POST_DATA'.
* public/api/update-triggerable.php: Stop using '$HTTP_RAW_POST_DATA'.
* public/include/json-header.php: Stop using '$HTTP_RAW_POST_DATA'.
* public/include/report-processor.php: Stop using '$HTTP_RAW_POST_DATA'.
* server-tests/resources/test-server.conf: Load php5 or php7 module conditionally.
* server-tests/resources/test-server.js: Pass PHP version info while launching httpd.
(TestServer.prototype._startApache):
* tools/remote-cache-server.py: Pass PHP version info while launching httpd.
(start_httpd):
* tools/remote-server-relay.conf: Load php5 or php7 module conditionally.
* tools/sync-buildbot.js:
(syncLoop.const.makeTriggerable):
(syncLoop):

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

2 years agoImplement Unicode RegExp support in the YARR JIT
msaboff@apple.com [Tue, 22 Aug 2017 22:43:08 +0000 (22:43 +0000)]
Implement Unicode RegExp support in the YARR JIT
https://bugs.webkit.org/show_bug.cgi?id=174646

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

This support is only implemented for 64 bit platforms.  It wouldn't be too hard to add support
for 32 bit platforms with a reasonable number of spare registers.  This code slightly refactors
register usage to reduce the number of callee save registers used for non-Unicode expressions.
For Unicode expressions, there are several more registers used to store constants values for
processing surrogate pairs as well as discerning whether a character belongs to the Basic
Multilingual Plane (BMP) or one of the Supplemental Planes.

This implements JIT support for Unicode expressions very similar to how the interpreter works.
Just like in the interpreter, backtracking code uses more space on the stack to save positions.
Moved the BackTrackInfo* structs to YarrPattern as separate functions.  Added xxxIndex()
functions to each of these to simplify how the JIT code reads and writes the structure fields.

Given that reading surrogate pairs and transforming them into a single code point takes a
little processing, the code that implements reading a Unicode character is implemented as a
leaf function added to the end of the JIT'ed code.  The calling convention for
"tryReadUnicodeCharacterHelper()" is non-standard given that the rest of the code assumes
that argument values stay in argument registers for most of the generated code.
That helper takes the starting character address in one register, regUnicodeInputAndTrail,
and uses another dedicated temporary register, regUnicodeTemp.  The result is typically
returned in regT0.  If another return register is requested, we'll create an inline copy of
that function.

Added a new flag to CharacterClass to signify if a class has non-BMP characters.  This flag
is used in optimizeAlternative() where we swap the order of a fixed character class term with
a fixed character term that immediately follows it.  Since the non-BMP character class may
increment "index" when matching, that must be done first before trying to match a fixed
character term later in the string.

Given the usefulness of the LEA instruction on X86 to create a single pointer value from a
base with index and offset, which the YARR JIT uses heavily, I added a new macroAssembler
function, getEffectiveAddress64(), with an ARM64 implementation.  It just calls x86Lea64()
on X86-64.  Also added an ImplicitAddress version of load16Unaligned().

(JSC::MacroAssemblerARM64::load16Unaligned):
(JSC::MacroAssemblerARM64::getEffectiveAddress64):
* assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::load16Unaligned):
(JSC::MacroAssemblerX86Common::load16):
* assembler/MacroAssemblerX86_64.h:
(JSC::MacroAssemblerX86_64::getEffectiveAddress64):
* create_regex_tables:
* runtime/RegExp.cpp:
(JSC::RegExp::compile):
* yarr/YarrInterpreter.cpp:
* yarr/YarrJIT.cpp:
(JSC::Yarr::YarrGenerator::optimizeAlternative):
(JSC::Yarr::YarrGenerator::matchCharacterClass):
(JSC::Yarr::YarrGenerator::tryReadUnicodeCharImpl):
(JSC::Yarr::YarrGenerator::tryReadUnicodeChar):
(JSC::Yarr::YarrGenerator::readCharacter):
(JSC::Yarr::YarrGenerator::jumpIfCharNotEquals):
(JSC::Yarr::YarrGenerator::matchAssertionWordchar):
(JSC::Yarr::YarrGenerator::generateAssertionWordBoundary):
(JSC::Yarr::YarrGenerator::generatePatternCharacterOnce):
(JSC::Yarr::YarrGenerator::generatePatternCharacterFixed):
(JSC::Yarr::YarrGenerator::generatePatternCharacterGreedy):
(JSC::Yarr::YarrGenerator::backtrackPatternCharacterGreedy):
(JSC::Yarr::YarrGenerator::generatePatternCharacterNonGreedy):
(JSC::Yarr::YarrGenerator::backtrackPatternCharacterNonGreedy):
(JSC::Yarr::YarrGenerator::generateCharacterClassOnce):
(JSC::Yarr::YarrGenerator::backtrackCharacterClassOnce):
(JSC::Yarr::YarrGenerator::generateCharacterClassFixed):
(JSC::Yarr::YarrGenerator::generateCharacterClassGreedy):
(JSC::Yarr::YarrGenerator::backtrackCharacterClassGreedy):
(JSC::Yarr::YarrGenerator::generateCharacterClassNonGreedy):
(JSC::Yarr::YarrGenerator::backtrackCharacterClassNonGreedy):
(JSC::Yarr::YarrGenerator::generate):
(JSC::Yarr::YarrGenerator::backtrack):
(JSC::Yarr::YarrGenerator::generateTryReadUnicodeCharacterHelper):
(JSC::Yarr::YarrGenerator::generateEnter):
(JSC::Yarr::YarrGenerator::generateReturn):
(JSC::Yarr::YarrGenerator::YarrGenerator):
(JSC::Yarr::YarrGenerator::compile):
* yarr/YarrJIT.h:
* yarr/YarrPattern.cpp:
(JSC::Yarr::CharacterClassConstructor::CharacterClassConstructor):
(JSC::Yarr::CharacterClassConstructor::reset):
(JSC::Yarr::CharacterClassConstructor::charClass):
(JSC::Yarr::CharacterClassConstructor::addSorted):
(JSC::Yarr::CharacterClassConstructor::addSortedRange):
(JSC::Yarr::CharacterClassConstructor::hasNonBMPCharacters):
(JSC::Yarr::YarrPatternConstructor::setupAlternativeOffsets):
* yarr/YarrPattern.h:
(JSC::Yarr::CharacterClass::CharacterClass):
(JSC::Yarr::BackTrackInfoPatternCharacter::beginIndex):
(JSC::Yarr::BackTrackInfoPatternCharacter::matchAmountIndex):
(JSC::Yarr::BackTrackInfoCharacterClass::beginIndex):
(JSC::Yarr::BackTrackInfoCharacterClass::matchAmountIndex):
(JSC::Yarr::BackTrackInfoBackReference::beginIndex):
(JSC::Yarr::BackTrackInfoBackReference::matchAmountIndex):
(JSC::Yarr::BackTrackInfoAlternative::offsetIndex):
(JSC::Yarr::BackTrackInfoParentheticalAssertion::beginIndex):
(JSC::Yarr::BackTrackInfoParenthesesOnce::beginIndex):
(JSC::Yarr::BackTrackInfoParenthesesTerminal::beginIndex):

LayoutTests:

Updated tests.

* js/regexp-unicode-expected.txt:
* js/script-tests/regexp-unicode.js:

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

2 years agoStitchMarker: threading, locking, and atomics benchmark
jfbastien@apple.com [Tue, 22 Aug 2017 21:54:59 +0000 (21:54 +0000)]
StitchMarker: threading, locking, and atomics benchmark

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

2 years agoCorrect SOUP and cURL builds after r221017.
bfulgham@apple.com [Tue, 22 Aug 2017 21:54:40 +0000 (21:54 +0000)]
Correct SOUP and cURL builds after r221017.
https://bugs.webkit.org/show_bug.cgi?id=175846

Reviewed by Michael Catanzaro.

Correct the method signatures for 'cookiesForDOM' on the SOUP and cURL backends.
Note that these ports will need to add specific logic to find/filter secure cookies
if requested by the caller.

* platform/network/curl/CookieJarCurl.cpp:
(WebCore::CookieJarCurlFileSystem::cookiesForDOM):
(WebCore::cookiesForDOM):
* platform/network/curl/CookieJarCurl.h:
* platform/network/soup/CookieJarSoup.cpp:
(WebCore::cookiesForDOM):

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

2 years agoUnreviewed, change my IRC nick.
webkit@devinrousso.com [Tue, 22 Aug 2017 21:37:59 +0000 (21:37 +0000)]
Unreviewed, change my IRC nick.

* Scripts/webkitpy/common/config/contributors.json:

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

2 years ago[EnabledBySetting] in WebIDL uses Document but does not include Document.h
cdumez@apple.com [Tue, 22 Aug 2017 21:31:33 +0000 (21:31 +0000)]
[EnabledBySetting] in WebIDL uses Document but does not include Document.h
https://bugs.webkit.org/show_bug.cgi?id=175843

Reviewed by Sam Weinig.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation):

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

2 years agoUnreviewed, rolling out r221026.
jlewis3@apple.com [Tue, 22 Aug 2017 21:10:12 +0000 (21:10 +0000)]
Unreviewed, rolling out r221026.

This caused a consistent API failure on iOS Simulator.

Reverted changeset:

"Add UIDelegatePrivate SPI corresponding to
WKPageUIClient.showPage"
https://bugs.webkit.org/show_bug.cgi?id=175797
http://trac.webkit.org/changeset/221026

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

2 years agoRefactor videoPerformanceQuality() MediaPlayer methods into single call.
jer.noble@apple.com [Tue, 22 Aug 2017 21:04:59 +0000 (21:04 +0000)]
Refactor videoPerformanceQuality() MediaPlayer methods into single call.
https://bugs.webkit.org/show_bug.cgi?id=175830

Reviewed by Eric Carlson.

Allow MediaPlayerPrivate subclasses to return all the metrics required for VideoPerformanceQuality in
a single call. For clients which incur significant overhead to request this data, this reduces the cost
of requesting data by the number of calls removed.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::getVideoPlaybackQuality):
* platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::videoPlaybackQualityMetrics):
(WebCore::MediaPlayer::totalVideoFrames): Deleted.
(WebCore::MediaPlayer::droppedVideoFrames): Deleted.
(WebCore::MediaPlayer::corruptedVideoFrames): Deleted.
(WebCore::MediaPlayer::totalFrameDelay): Deleted.
* platform/graphics/MediaPlayer.h:
(WebCore::PlatformVideoPlaybackQualityMetrics::PlatformVideoPlaybackQualityMetrics):
* platform/graphics/MediaPlayerPrivate.h:
(WebCore::MediaPlayerPrivateInterface::videoPlaybackQualityMetrics):
(WebCore::MediaPlayerPrivateInterface::totalVideoFrames): Deleted.
(WebCore::MediaPlayerPrivateInterface::droppedVideoFrames): Deleted.
(WebCore::MediaPlayerPrivateInterface::corruptedVideoFrames): Deleted.
(WebCore::MediaPlayerPrivateInterface::totalFrameDelay): Deleted.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::videoPlaybackQualityMetrics):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::totalVideoFrames): Deleted.
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::droppedVideoFrames): Deleted.
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::corruptedVideoFrames): Deleted.
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::totalFrameDelay): Deleted.
* platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.h:
* platform/mock/mediasource/MockMediaPlayerMediaSource.cpp:
(WebCore::MockMediaPlayerMediaSource::videoPlaybackQualityMetrics):
(WebCore::MockMediaPlayerMediaSource::totalVideoFrames): Deleted.
(WebCore::MockMediaPlayerMediaSource::droppedVideoFrames): Deleted.
(WebCore::MockMediaPlayerMediaSource::corruptedVideoFrames): Deleted.
(WebCore::MockMediaPlayerMediaSource::totalFrameDelay): Deleted.
* platform/mock/mediasource/MockMediaPlayerMediaSource.h:
* platform/mock/mediasource/MockMediaSourcePrivate.cpp:
(WebCore::MockMediaSourcePrivate::videoPlaybackQualityMetrics):
* platform/mock/mediasource/MockMediaSourcePrivate.h:

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

2 years agoCommit the change meant to be included in the previous commit.
rniwa@webkit.org [Tue, 22 Aug 2017 21:03:53 +0000 (21:03 +0000)]
Commit the change meant to be included in the previous commit.

* Speedometer/resources/main.js:
(startBenchmark):

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

2 years agoSpeedometer 2.0: Make it possible to change the iteration count via query string
rniwa@webkit.org [Tue, 22 Aug 2017 21:00:49 +0000 (21:00 +0000)]
Speedometer 2.0: Make it possible to change the iteration count via query string
https://bugs.webkit.org/show_bug.cgi?id=175811

Reviewed by Saam Barati.

Added the support for specifying the iteration count by "iterationCount" query parameter, and replaced "ms"
query parameter by "unit=ms".

Finally, reduced the number of iterations from 20 to 10 to reduce the time needed to run the benchmark
since Speedometer 2.0 contains more than twice the number of libraries and frameworks than Speedometer 1.0.

* Speedometer/resources/main.js:
(window.benchmarkClient.didFinishLastIteration):
(startBenchmark):

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

2 years agoUnreviewed, rolling out r221027.
ryanhaddad@apple.com [Tue, 22 Aug 2017 20:53:15 +0000 (20:53 +0000)]
Unreviewed, rolling out r221027.

This change caused LayoutTests to exit early with assertion
failures.

Reverted changeset:

"Add sanity check for source origin in
WebLoaderStrategy::startPingLoad()"
https://bugs.webkit.org/show_bug.cgi?id=175827
http://trac.webkit.org/changeset/221027

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

2 years agoSpeedometer: Add missing stylesheet to Angular example
commit-queue@webkit.org [Tue, 22 Aug 2017 20:53:08 +0000 (20:53 +0000)]
Speedometer: Add missing stylesheet to Angular example
https://bugs.webkit.org/show_bug.cgi?id=175820

Patch by Mathias Bynens <mathias@qiwi.be> on 2017-08-22
Reviewed by Ryosuke Niwa.

* Speedometer/resources/todomvc/architecture-examples/angular/dist/styles.d41d8cd98f00b204e980.bundle.css: Added.

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

2 years ago[WK2] Enable Beacon API by default
cdumez@apple.com [Tue, 22 Aug 2017 20:48:10 +0000 (20:48 +0000)]
[WK2] Enable Beacon API by default
https://bugs.webkit.org/show_bug.cgi?id=175839

Reviewed by Youenn Fablet.

* Shared/WebPreferencesDefinitions.h:

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

2 years agoSpeedometer 2.0: Add button to select and unselect all tests to InteractiveRunner...
rniwa@webkit.org [Tue, 22 Aug 2017 20:42:23 +0000 (20:42 +0000)]
Speedometer 2.0: Add button to select and unselect all tests to InteractiveRunner.html
https://bugs.webkit.org/show_bug.cgi?id=175816

Reviewed by Saam Barati.

Added buttons to select and unselect all subtests to aid debugging.

* Speedometer/InteractiveRunner.html:
(createUIForSuites):

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

2 years agoUnreviewed build fix after r221017.
bfulgham@apple.com [Tue, 22 Aug 2017 20:19:31 +0000 (20:19 +0000)]
Unreviewed build fix after r221017.

Correct copy/paste error.

* WebCoreSupport/WebPlatformStrategies.cpp:
(WebPlatformStrategies::cookiesForDOM):

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

2 years agoFix Windows build after r221017.
achristensen@apple.com [Tue, 22 Aug 2017 20:13:54 +0000 (20:13 +0000)]
Fix Windows build after r221017.
https://bugs.webkit.org/show_bug.cgi?id=157053

* wtf/PlatformWin.cmake:

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

2 years agoREGRESSION (High Sierra): PDFPlugin won't render PostScript Files
timothy_horton@apple.com [Tue, 22 Aug 2017 20:10:28 +0000 (20:10 +0000)]
REGRESSION (High Sierra): PDFPlugin won't render PostScript Files
https://bugs.webkit.org/show_bug.cgi?id=175840
<rdar://problem/33877923>

Reviewed by Brent Fulgham.

* WebProcess/com.apple.WebProcess.sb.in:
Add a sandbox exception for the PostScript conversion process.

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

2 years agoUnreviewed build fix after r221017.
bfulgham@apple.com [Tue, 22 Aug 2017 20:09:38 +0000 (20:09 +0000)]
Unreviewed build fix after r221017.

* WebCoreSupport/WebPlatformStrategies.cpp:
(WebPlatformStrategies::cookiesForDOM): Update for new signature.
* WebCoreSupport/WebPlatformStrategies.h:

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

2 years agoUnreviewed test fix after r221017.
bfulgham@apple.com [Tue, 22 Aug 2017 19:56:39 +0000 (19:56 +0000)]
Unreviewed test fix after r221017.

I forgot to check-in the expected result!

* http/tests/security/mixedContent/insecure-executable-css-with-secure-cookies-expected.txt: Added.

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

2 years agoEnsure media controls host exists before using it
bfulgham@apple.com [Tue, 22 Aug 2017 19:54:09 +0000 (19:54 +0000)]
Ensure media controls host exists before using it
https://bugs.webkit.org/show_bug.cgi?id=175833
<rdar://problem/34001219>

Reviewed by Jer Noble.

Source/WebCore:

Although we ensure that the media controls shadow root exists before updating the text track
container, we don't check that the media controls host has been created yet. We do check
and create in other places in HTMLMediaElement.

Tests: media/track/track-display-before-controls-crash.html

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

LayoutTests:

* media/track/track-display-before-controls-crash-expected.txt: Added.
* media/track/track-display-before-controls-crash.html: Added.

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

2 years agoImplement 64-bit MacroAssembler::probe support for Windows.
pvollan@apple.com [Tue, 22 Aug 2017 19:22:48 +0000 (19:22 +0000)]
Implement 64-bit MacroAssembler::probe support for Windows.
https://bugs.webkit.org/show_bug.cgi?id=175724

Reviewed by Mark Lam.

Source/JavaScriptCore:

This is needed to enable the DFG. MSVC does no longer support inline assembly
for 64-bit, which means we have to put the code in an asm file.

* assembler/MacroAssemblerX86Common.cpp:
(JSC::booleanTrueForAvoidingNoReturnDeclaration): Deleted.
* jit/JITStubsMSVC64.asm:

Source/WTF:

Enable masm probe and DFG.

* wtf/Platform.h:

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

2 years ago[Cache API] Optimize whitespace trimming in Vary header values
commit-queue@webkit.org [Tue, 22 Aug 2017 18:46:17 +0000 (18:46 +0000)]
[Cache API] Optimize whitespace trimming in Vary header values
https://bugs.webkit.org/show_bug.cgi?id=175837

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

No change of behavior.

Introducing a StringView version of stripLeadingAndTrailingHTTPSpaces.

* Modules/cache/Cache.cpp:
(WebCore::hasResponseVaryStarHeaderValue):
* platform/network/HTTPParsers.h:
(WebCore::stripLeadingAndTrailingHTTPSpaces):

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

2 years ago Unreviewed, beacon/contentextensions is only expected to work on Sierra+.
cdumez@apple.com [Tue, 22 Aug 2017 18:45:06 +0000 (18:45 +0000)]
   Unreviewed, beacon/contentextensions is only expected to work on Sierra+.

* platform/mac-wk2/TestExpectations:

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

2 years agoClean up PingLoad::processContentExtensionRulesForLoad()
cdumez@apple.com [Tue, 22 Aug 2017 18:27:04 +0000 (18:27 +0000)]
Clean up PingLoad::processContentExtensionRulesForLoad()
https://bugs.webkit.org/show_bug.cgi?id=175834

Reviewed by Alex Christensen.

* NetworkProcess/PingLoad.cpp:
(WebKit::PingLoad::willPerformHTTPRedirection):
(WebKit::PingLoad::processContentExtensionRulesForLoad):
* NetworkProcess/PingLoad.h:

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

2 years agoRemove ChromeClient::scrollbarsModeDidChange
commit-queue@webkit.org [Tue, 22 Aug 2017 18:19:33 +0000 (18:19 +0000)]
Remove ChromeClient::scrollbarsModeDidChange
https://bugs.webkit.org/show_bug.cgi?id=175805

Patch by Alex Christensen <achristensen@webkit.org> on 2017-08-22
Reviewed by Daniel Bates.

Source/WebCore:

No change in behavior.  It was never called, and no implementations did anything.

* loader/EmptyClients.h:
* page/Chrome.cpp:
(WebCore::Chrome::scrollbarsModeDidChange const): Deleted.
* page/Chrome.h:
* page/ChromeClient.h:
* platform/HostWindow.h:

Source/WebKit:

* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::scrollbarsModeDidChange const): Deleted.
* WebProcess/WebCoreSupport/WebChromeClient.h:

Source/WebKitLegacy/mac:

* WebCoreSupport/WebChromeClient.h:

Source/WebKitLegacy/win:

* WebCoreSupport/WebChromeClient.h:

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

2 years agoAdd sanity check for source origin in WebLoaderStrategy::startPingLoad()
cdumez@apple.com [Tue, 22 Aug 2017 18:16:39 +0000 (18:16 +0000)]
Add sanity check for source origin in WebLoaderStrategy::startPingLoad()
https://bugs.webkit.org/show_bug.cgi?id=175827

Reviewed by Geoffrey Garen.

* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::startPingLoad):

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

2 years agoAdd UIDelegatePrivate SPI corresponding to WKPageUIClient.showPage
commit-queue@webkit.org [Tue, 22 Aug 2017 18:12:10 +0000 (18:12 +0000)]
Add UIDelegatePrivate SPI corresponding to WKPageUIClient.showPage
https://bugs.webkit.org/show_bug.cgi?id=175797
<rdar://problem/29270035>

Patch by Alex Christensen <achristensen@webkit.org> on 2017-08-22
Reviewed by Geoffrey Garen.

Source/WebKit:

* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/Cocoa/UIDelegate.h:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::showPage):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::registerURLSchemeHandler):
window.open, createWebViewWithConfiguration, and WKURLSchemeHandlers all used together
make it so that URLSchemeHandlers are added to WebPages that already have them.  The
assertions are no longer valid.

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit2Cocoa/UIDelegate.mm: Added.
(-[UITestDelegate webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:]):
(-[UITestDelegate _showPage:]):
(-[UITestDelegate webView:startURLSchemeTask:]):
(-[UITestDelegate webView:stopURLSchemeTask:]):
(TEST):

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

2 years agoWeb Inspector: provide way for ShaderPrograms to be enabled/disabled
webkit@devinrousso.com [Tue, 22 Aug 2017 18:08:50 +0000 (18:08 +0000)]
Web Inspector: provide way for ShaderPrograms to be enabled/disabled
https://bugs.webkit.org/show_bug.cgi?id=175400

Reviewed by Matt Baker.

Source/JavaScriptCore:

* inspector/protocol/Canvas.json:
Add `setShaderProgramDisabled` command that sets the `disabled` flag on the given shader
program to the supplied boolean value. If this value is true, calls to `drawArrays` and
`drawElements` when that program is in use will have no effect.

Source/WebCore:

Test: inspector/canvas/setShaderProgramDisabled.html

* inspector/InspectorShaderProgram.h:
(WebCore::InspectorShaderProgram::disabled):
(WebCore::InspectorShaderProgram::setDisabled):

* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::drawArrays):
(WebCore::WebGLRenderingContextBase::drawElements):
If the current program is disabled, return early. This will prevent the current shader
program from drawing anything to the canvas.

* inspector/InspectorCanvasAgent.h:
* inspector/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::setShaderProgramDisabled):
(WebCore::InspectorCanvasAgent::isShaderProgramDisabled):
* inspector/InspectorInstrumentation.h:
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::isShaderProgramDisabled):
(WebCore::InspectorInstrumentation::isShaderProgramDisabledImpl):

Source/WebInspectorUI:

Adds a status element to ShaderProgramTreeElement that, when clicked, will toggle the
disabled state of the corresponding ShaderProgram. Disabled shader programs will not draw
anything to the context.

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:

* UserInterface/Models/ShaderProgram.js:
(WI.ShaderProgram):
(WI.ShaderProgram.prototype.get disabled):
(WI.ShaderProgram.prototype.toggleDisabled):

* UserInterface/Views/ShaderProgramTreeElement.js:
(WI.ShaderProgramTreeElement):
(WI.ShaderProgramTreeElement.prototype.selectOnMouseDown):
(WI.ShaderProgramTreeElement.prototype._disabledImageElementClicked):
* UserInterface/Views/ShaderProgramTreeElement.css: Added.
(.item.shader-program .status > img):
(.item.shader-program:not(:hover, .selected, .disabled) .status > img):
(.tree-outline:matches(:focus, .force-focus) .item.shader-program.selected .status > img):
(.item.shader-program.disabled > *):

LayoutTests:

* inspector/canvas/setShaderProgramDisabled-expected.txt: Added.
* inspector/canvas/setShaderProgramDisabled.html: Added.

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

2 years ago[Cache API] Add support for overwriting responses with put on an existing record
commit-queue@webkit.org [Tue, 22 Aug 2017 18:02:43 +0000 (18:02 +0000)]
[Cache API] Add support for overwriting responses with put on an existing record
https://bugs.webkit.org/show_bug.cgi?id=175825

Patch by Youenn Fablet <youenn@apple.com> on 2017-08-22
Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

* web-platform-tests/service-workers/cache-storage/window/cache-put.https-expected.txt:
* web-platform-tests/service-workers/cache-storage/worker/cache-put.https-expected.txt:

Source/WebCore:

Tests: http/wpt/cache-storage/cache-put-keys.https.any.html
       http/wpt/cache-storage/cache-put-keys.https.any.worker.html

Adding support for the new response update counter.
Overwriting local cached response with new retrieved response when the counter is different.
Adding support for passing this value from/to workers.

* Modules/cache/Cache.cpp:
(WebCore::Cache::queryCacheWithTargetStorage):
(WebCore::toConnectionRecord):
(WebCore::Cache::updateRecords):
* Modules/cache/CacheStorageConnection.cpp:
(WebCore::CacheStorageConnection::Record::copy const):
* Modules/cache/CacheStorageConnection.h:
* Modules/cache/CacheStorageRecord.h:
* Modules/cache/WorkerCacheStorageConnection.cpp:
(WebCore::toCrossThreadRecordData):
(WebCore::fromCrossThreadRecordData):

Source/WebKit:

Add support for encoding/decoding the update counter.
Incrementing it when overwriting an existing response.
Storing the new body in addition to the new response.

* NetworkProcess/cache/CacheStorageEngine.cpp:
(WebKit::CacheStorageEngine::putRecords):
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<CacheStorageConnection::Record>::encode):
(IPC::ArgumentCoder<CacheStorageConnection::Record>::decode):

LayoutTests:

Adding update counter for response
Skipping new test on WK1.

* platform/ios-wk1/TestExpectations:
* platform/mac-wk1/TestExpectations:
* http/wpt/cache-storage/cache-put-keys.https.any-expected.txt: Added.
* http/wpt/cache-storage/cache-put-keys.https.any.html: Added.
* http/wpt/cache-storage/cache-put-keys.https.any.js: Added.
(cache_test):
* http/wpt/cache-storage/cache-put-keys.https.any.worker-expected.txt: Added.
* http/wpt/cache-storage/cache-put-keys.https.any.worker.html: Added.

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

2 years agoMarked imported/w3c/web-platform-tests/fetch/http-cache/invalidate.html as flaky...
jlewis3@apple.com [Tue, 22 Aug 2017 17:56:48 +0000 (17:56 +0000)]
Marked imported/w3c/web-platform-tests/fetch/http-cache/invalidate.html as flaky on macOS WK2.
https://bugs.webkit.org/show_bug.cgi?id=173672

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

2 years agoRemove ChromeClient::hasOpenedPopup
achristensen@apple.com [Tue, 22 Aug 2017 17:38:14 +0000 (17:38 +0000)]
Remove ChromeClient::hasOpenedPopup
https://bugs.webkit.org/show_bug.cgi?id=175804

Reviewed by Sam Weinig.

Source/WebCore:

No change in behavior.  All implementations just returned false.

* loader/EmptyClients.h:
* page/Chrome.cpp:
(WebCore::Chrome::hasOpenedPopup const): Deleted.
* page/Chrome.h:
* page/ChromeClient.h:
* rendering/RenderMenuList.cpp:
(RenderMenuList::showPopup):

Source/WebKit:

* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::hasOpenedPopup const): Deleted.
* WebProcess/WebCoreSupport/WebChromeClient.h:

Source/WebKitLegacy/mac:

* WebCoreSupport/WebChromeClient.h:
* WebCoreSupport/WebChromeClient.mm:
(WebChromeClient::hasOpenedPopup const): Deleted.

Source/WebKitLegacy/win:

* WebCoreSupport/WebChromeClient.cpp:
(WebChromeClient::hasOpenedPopup const): Deleted.
* WebCoreSupport/WebChromeClient.h:

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

2 years agoUnriviewed, fix windows build... for realz.
keith_miller@apple.com [Tue, 22 Aug 2017 17:31:39 +0000 (17:31 +0000)]
Unriviewed, fix windows build... for realz.

* CMakeLists.txt:

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

2 years ago[Payment Request] Implement error checking for show(), abort(), and canMakePayment()
aestes@apple.com [Tue, 22 Aug 2017 16:59:49 +0000 (16:59 +0000)]
[Payment Request] Implement error checking for show(), abort(), and canMakePayment()
https://bugs.webkit.org/show_bug.cgi?id=175789

Reviewed by Brady Eidson.
LayoutTests/imported/w3c:

* web-platform-tests/payment-request/payment-request-abort-method.https-expected.txt:
* web-platform-tests/payment-request/payment-request-show-method.https-expected.txt:

Source/WebCore:

Implement many of the exceptions and promise rejections specified for PaymentRequest's
show(), abort(), and canMakePayment() methods. Also implement basic state tracking.

* Modules/paymentrequest/PaymentRequest.cpp:
(WebCore::PaymentRequest::create): Changed serializedMethodData from a
HashMap<String, String> to a Vector<PaymentRequest::Method>.
(WebCore::PaymentRequest::PaymentRequest):
(WebCore::PaymentRequest::show): Added promise rejection for invalid state, updated the
state to Interactive, stored the promise in m_showPromise, and dispatched finishShowing().
(WebCore::PaymentRequest::finishShowing): Added JSON parsing of payment method serialized
data and exception propagation. If there are no exceptions, rejected m_showPromise with
NotSupportedError since we don't yet support any payment methods.
(WebCore::PaymentRequest::abort): Added promise rejection for invalid state and stored the
promise in m_abortPromise. Dispatched a lambda to update the state to Closed, reject
m_showPromise, and resolve m_abortPromise.
(WebCore::PaymentRequest::canMakePayment): Added promise rejection for invalid state and
stored the promise in m_canMakePaymentPromise. Dispatched a lambda to resolve
m_canMakePaymentPromise with false since we don't yet support any payment methods.
* Modules/paymentrequest/PaymentRequest.h:
* Modules/paymentrequest/PaymentRequest.idl: Annotated abort() with MayThrowException.

LayoutTests:

Stopped marking payment-request-abort-method.https.html and payment-request-show-method.https.html  as flaky.

* platform/ios-wk2/TestExpectations:
* platform/mac-wk2/TestExpectations:

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

2 years agoUnreviewed, enable http/wpt/beacon/contentextensions on Mac WK2 only.
cdumez@apple.com [Tue, 22 Aug 2017 16:29:12 +0000 (16:29 +0000)]
Unreviewed, enable http/wpt/beacon/contentextensions on Mac WK2 only.

It seems content extensions are not supported by WKTR on iOS.

* TestExpectations:
* platform/mac-wk2/TestExpectations:

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

2 years agoWe are using valueProfileForBytecodeOffset when there may not be a value profile
sbarati@apple.com [Tue, 22 Aug 2017 16:28:13 +0000 (16:28 +0000)]
We are using valueProfileForBytecodeOffset when there may not be a value profile
https://bugs.webkit.org/show_bug.cgi?id=175812

Reviewed by Michael Saboff.

This patch uses the type system to aid the code around CodeBlock's ValueProfile
accessor methods. valueProfileForBytecodeOffset used to return ValueProfile*,
so there were callers of this that thought it could return nullptr when there
was no such ValueProfile. This was not the case, it always returned a non-null
pointer. This patch changes valueProfileForBytecodeOffset to return ValueProfile&
and adds a new tryGetValueProfileForBytecodeOffset method that returns ValueProfile*
and does the right thing if there is no such ValueProfile.

This patch also changes the other ValueProfile accessors on CodeBlock to
return ValueProfile& instead of ValueProfile*. Some callers handled the null
case unnecessarily, and using the type system to specify the result can't be
null removes these useless branches.

* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::updateAllPredictionsAndCountLiveness):
(JSC::CodeBlock::dumpValueProfiles):
(JSC::CodeBlock::tryGetValueProfileForBytecodeOffset):
(JSC::CodeBlock::valueProfileForBytecodeOffset):
(JSC::CodeBlock::validate):
* bytecode/CodeBlock.h:
(JSC::CodeBlock::valueProfileForArgument):
(JSC::CodeBlock::valueProfile):
(JSC::CodeBlock::valueProfilePredictionForBytecodeOffset):
(JSC::CodeBlock::getFromAllValueProfiles):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::handleInlining):
* dfg/DFGGraph.cpp:
(JSC::DFG::Graph::methodOfGettingAValueProfileFor):
* dfg/DFGPredictionInjectionPhase.cpp:
(JSC::DFG::PredictionInjectionPhase::run):
* jit/JIT.h:
* jit/JITInlines.h:
(JSC::JIT::emitValueProfilingSite):
* profiler/ProfilerBytecodeSequence.cpp:
(JSC::Profiler::BytecodeSequence::BytecodeSequence):
* tools/HeapVerifier.cpp:
(JSC::HeapVerifier::validateJSCell):

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

2 years agoDisable access to secure cookies if an HTTPS site loads mixed content
bfulgham@apple.com [Tue, 22 Aug 2017 16:22:22 +0000 (16:22 +0000)]
Disable access to secure cookies if an HTTPS site loads mixed content
https://bugs.webkit.org/show_bug.cgi?id=157053
<rdar://problem/11290808>

Patch by Brent Fulgham  <bfulgham@apple.com> and Pranjal Jumde <pjumde@apple.com> on 2017-08-22
Reviewed by Dan Bates.

Source/WebCore:

Tests: http/tests/security/mixedContent/insecure-css-with-secure-cookies.html
       http/tests/security/mixedContent/insecure-image-with-securecookie-block.html
       http/tests/security/mixedContent/insecure-image-with-securecookie.html
       http/tests/security/mixedContent/insecure-script-with-secure-cookies.html
       http/tests/security/mixedContent/redirect-https-to-http-image-secure-cookies-block.html
       http/tests/security/mixedContent/redirect-https-to-http-image-secure-cookies.html

* dom/SecurityContext.h:
(WebCore::SecurityContext::secureCookiesAccessed): Added.
(WebCore::SecurityContext::setSecureCookiesAccessed): Added.
* loader/CookieJar.cpp:
(WebCore::cookies): Pass Document as non-const so we can call 'setSecureCookiesAccessed' if necessary.
* loader/CookieJar.h:
* loader/MixedContentChecker.cpp:
(WebCore::MixedContentChecker::canRunInsecureContent): Updated checks to avoid running insecure content
if secure cookies were accessed.
* platform/CookiesStrategy.h:
(WebCore::CookiesStrategy::cookiesForDOM): Pass new argument indicating whether secure cookies should be included in the response.
* platform/network/PlatformCookieJar.h:
* platform/network/cf/CookieJarCFNet.cpp:
(copyCookiesForURLWithFirstPartyURL): Revise to accept new 'IncludeSecureCookiesOrNot' argument.
(WebCore::cookiesForSession): Updated to accept new 'IncludeSecureCookiesOrNot' argument. Also determine if secure cookies were
included in the response, and return this to the caller.
(WebCore::cookieRequestHeaderFieldValue): Revise for new 'copyCookiesForURLWithFirstPartyURL' signature.
(WebCore::getRawCookies): Ditto.
* platform/network/mac/CookieJarMac.mm:
(WebCore::cookiesForSession): Updated checks to keep track of secure cookies and filter out secure cookies if insecure content
was accessed.
(WebCore::cookiesForDOM): Update for new arguments and to return a pair.
(WebCore::cookieRequestHeaderFieldValue): Ditto.

Source/WebKit:

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::cookiesForDOM): Pass new arguments needed by WebCore.
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in: Updated the CookiesForDOM message with the new foundMixedContent
argument and the new didAccessSecureCookies reply.
* Shared/mac/CookieStorageShim.mm:
(WebKit::webKitCookieStorageCopyRequestHeaderFieldsForURL): Drive-by fix to use the right message.
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::cookiesForDOM): Check and return whether secure cookies were accessed. Accept a new argument
indicating whether secure cookies should be included in the response.
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:

Source/WebKitLegacy/mac:

* WebCoreSupport/WebPlatformStrategies.h:
* WebCoreSupport/WebPlatformStrategies.mm:
(WebPlatformStrategies::cookiesForDOM): Check and return whether secure cookies were accessed. Accept a new argument
indicating whether secure cookies should be included in the response.

LayoutTests:

* http/tests/security/mixedContent/insecure-css-with-secure-cookies-expected.txt: Added.
* http/tests/security/mixedContent/insecure-css-with-secure-cookies.html: Added.
* http/tests/security/mixedContent/insecure-executable-css-with-secure-cookies.html: Added.
* http/tests/security/mixedContent/insecure-executable-css-with-secure-cookies-expected.txt: Added.
* http/tests/security/mixedContent/insecure-image-with-securecookie-block-expected.txt: Added.
* http/tests/security/mixedContent/insecure-image-with-securecookie-block.html: Added.
* http/tests/security/mixedContent/insecure-image-with-securecookie-expected.txt: Added.
* http/tests/security/mixedContent/insecure-image-with-securecookie.html: Added.
* http/tests/security/mixedContent/insecure-script-with-secure-cookies-expected.txt: Added.
* http/tests/security/mixedContent/insecure-script-with-secure-cookies.html: Added.
* http/tests/security/mixedContent/redirect-https-to-http-image-secure-cookies-block-expected.txt: Added.
* http/tests/security/mixedContent/redirect-https-to-http-image-secure-cookies-block.html: Added.
* http/tests/security/mixedContent/redirect-https-to-http-image-secure-cookies-expected.txt: Added.
* http/tests/security/mixedContent/redirect-https-to-http-image-secure-cookies.html: Added.
* http/tests/security/mixedContent/resources/frame-with-insecure-css-secure-cookies.html: Added.
* http/tests/security/mixedContent/resources/frame-with-insecure-executable-css-with-secure-cookies.html: Added.
* http/tests/security/mixedContent/resources/frame-with-insecure-image-secure-cookie-block.html: Added.
* http/tests/security/mixedContent/resources/frame-with-insecure-image-secure-cookie.html: Added.
* http/tests/security/mixedContent/resources/frame-with-insecure-script-secure-cookies.html: Added.
* http/tests/security/mixedContent/resources/frame-with-redirect-https-to-http-image-secure-cookie-block.html: Added.
* http/tests/security/mixedContent/resources/frame-with-redirect-https-to-http-image-secure-cookie.html: Added.
* http/tests/security/mixedContent/resources/insecure-executable.css: Added.
* http/tests/security/mixedContent/resources/insecure.css: Added.
* http/tests/security/resources/greenbox-hotspot5-4.cur: Added.

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

2 years agoAutoplay Muted Videos Don't Play When Outside Viewport
jer.noble@apple.com [Tue, 22 Aug 2017 16:13:22 +0000 (16:13 +0000)]
Autoplay Muted Videos Don't Play When Outside Viewport
https://bugs.webkit.org/show_bug.cgi?id=175748
<rdar://problem/33974383>

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/video-restricted-invisible-autoplay-not-allowed-source.html

The media session is notified that its client (the media element) will begin autoplaying inside
prepareForLoad(), where the m_autoplaying flag is also set. But loading via <source> elements does not go
through prepareForLoad(); the HTML standard states that the <source> element loading path does not trigger the
"media element load algorithm" which is implemented in prepareForLoad(). Since the m_autoplaying flag is
initially set to true, notify the media session that the element will begin autoplaying inside the element's
constructor.

Drive-by fix: Doing the above causes other tests to crash, as purturbing play state during style change can cause
re-entrancy in the native controls code, or fail, since we will transition from autoplay -> play even if there's
not yet a src or source to the media element. Add a task queue for updating the autoplay state and check the ready
state before allowing autoplay to transition to play.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::HTMLMediaElement):
(WebCore::HTMLMediaElement::~HTMLMediaElement):
(WebCore::HTMLMediaElement::canTransitionFromAutoplayToPlay const):
(WebCore::HTMLMediaElement::isVisibleInViewportChanged):

LayoutTests:

* media/video-restricted-invisible-autoplay-not-allowed-source-expected.txt: Added.
* media/video-restricted-invisible-autoplay-not-allowed-source.html: Added.

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

2 years agoUnreviewed, fix windows build... maybe.
keith_miller@apple.com [Tue, 22 Aug 2017 16:03:26 +0000 (16:03 +0000)]
Unreviewed, fix windows build... maybe.

* CMakeLists.txt:

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

2 years agoCall updateIsPlayingMedia whenever m_userHasInteractedWithMediaElement changes
mrajca@apple.com [Tue, 22 Aug 2017 15:56:32 +0000 (15:56 +0000)]
Call updateIsPlayingMedia whenever m_userHasInteractedWithMediaElement changes
https://bugs.webkit.org/show_bug.cgi?id=175796

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/video-user-gesture-tracking.html

The page media state depends on m_userHasInteractedWithMediaElement, so force it to update
as soon as m_userHasInteractedWithMediaElement changes. This fixes an issue where the media
state would not reflect the user interaction flag until a call to updateIsPlayingMedia was made.

* dom/Document.cpp:
(WebCore::Document::noteUserInteractionWithMediaElement):
* dom/Document.h:
(WebCore::Document::noteUserInteractionWithMediaElement): Deleted.
* testing/Internals.cpp:
(WebCore::Internals::pageMediaState):

LayoutTests:

Skip the test on iOS like all the other tests that use runWithKeyDown.

* media/video-user-gesture-tracking-expected.txt: Added.
* media/video-user-gesture-tracking.html: Added.

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

2 years agoUnreviewed, fix cloop build.
keith_miller@apple.com [Tue, 22 Aug 2017 15:54:17 +0000 (15:54 +0000)]
Unreviewed, fix cloop build.

* JavaScriptCore.xcodeproj/project.pbxproj:

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

2 years ago[Win][Release] Crash when running testmasm executable.
pvollan@apple.com [Tue, 22 Aug 2017 15:50:50 +0000 (15:50 +0000)]
[Win][Release] Crash when running testmasm executable.
https://bugs.webkit.org/show_bug.cgi?id=175772

Reviewed by Mark Lam.

We need to save and restore the modified registers in case one or more registers are callee saved
on the relevant platforms.

* assembler/testmasm.cpp:
(JSC::testProbeReadsArgumentRegisters):
(JSC::testProbeWritesArgumentRegisters):

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

2 years agoFix leak-checking for iOS Simulators
jbedard@apple.com [Tue, 22 Aug 2017 15:46:30 +0000 (15:46 +0000)]
Fix leak-checking for iOS Simulators
https://bugs.webkit.org/show_bug.cgi?id=175735

Reviewed by David Kilzer.

Follow-up fix to r220942. _proc may be undefined.

* Scripts/webkitpy/port/server_process.py:
(ServerProcess._wait_for_stop): Handle case where _proc is undefined.

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

2 years ago[GTK][WPE] install-dependencies should install the required gstreamer packages needed...
clopez@igalia.com [Tue, 22 Aug 2017 13:47:05 +0000 (13:47 +0000)]
[GTK][WPE] install-dependencies should install the required gstreamer packages needed for production builds.
https://bugs.webkit.org/show_bug.cgi?id=175822

Reviewed by Xabier Rodriguez-Calvar.

* gtk/install-dependencies: Add the bad plugins to the list.
* wpe/install-dependencies: Add all the gst related packages (copied from GTK listing).

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

2 years agoUnreviewed, rolling out r221006.
commit-queue@webkit.org [Tue, 22 Aug 2017 09:54:16 +0000 (09:54 +0000)]
Unreviewed, rolling out r221006.
https://bugs.webkit.org/show_bug.cgi?id=175821

generates build failures in the bots (Requested by calvaris[m]
on #webkit).

Reverted changeset:

"[GStreamer][GTK][WPE] Move common things to GStreamer cmake
files"
https://bugs.webkit.org/show_bug.cgi?id=175625
http://trac.webkit.org/changeset/221006

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

2 years agoGLContext: zero-initialize the GLContext pointer in ThreadGlobalGLContext
zandobersek@gmail.com [Tue, 22 Aug 2017 09:51:22 +0000 (09:51 +0000)]
GLContext: zero-initialize the GLContext pointer in ThreadGlobalGLContext
https://bugs.webkit.org/show_bug.cgi?id=175819

Reviewed by Xabier Rodriguez-Calvar.

* platform/graphics/GLContext.cpp: The ThreadGlobalGLContext object is
allocated on heap, so the embedded GLContext pointer can contain a
non-null value that can cause problems when e.g. checking for a current
GLContext on some specific thread on which a GLContext hasn't yet been
made current. Zero-initializing this pointer will avoid false positives
that can occur in these circumstances.

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

2 years ago[GTK][WPE] Rename StorageProcessMainGtk.cpp to StorageProcessMainGLib.cpp
zandobersek@gmail.com [Tue, 22 Aug 2017 09:13:47 +0000 (09:13 +0000)]
[GTK][WPE] Rename StorageProcessMainGtk.cpp to StorageProcessMainGLib.cpp
https://bugs.webkit.org/show_bug.cgi?id=175814

Reviewed by Gyuyoung Kim.

Both GTK+ and WPE ports already compile the StorageProcessMainGtk.cpp
file, but it should be renamed to StorageProcessMainGLib and moved into
the StorageProcess/glib/ directory.

* PlatformGTK.cmake:
* PlatformWPE.cmake:
* StorageProcess/glib/StorageProcessMainGLib.cpp: Renamed from Source/WebKit/StorageProcess/gtk/StorageProcessMainGtk.cpp.

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

2 years ago[GStreamer][GTK][WPE] Move common things to GStreamer cmake files
calvaris@igalia.com [Tue, 22 Aug 2017 08:44:36 +0000 (08:44 +0000)]
[GStreamer][GTK][WPE] Move common things to GStreamer cmake files
https://bugs.webkit.org/show_bug.cgi?id=175625

Three files were created as kind of hooks for the GTK and WPE
CMake option files. The definitions one is to enable, disable and
create the common options (that can be and are actually overriden
in some cases. The dependencies one adds dependencies for the
option switches that are set. The checks one ensure the
dependencies are met depending on the option switches.

Reviewed by Žan Doberšek.

* Source/cmake/GStreamerChecks.cmake: Added.
* Source/cmake/GStreamerDefinitions.cmake: Added.
* Source/cmake/GStreamerDependencies.cmake: Added.
* Source/cmake/OptionsGTK.cmake:
* Source/cmake/OptionsWPE.cmake:

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

2 years ago[WK] Add missing ENABLE(NETWORK_CACHE) build guards
zandobersek@gmail.com [Tue, 22 Aug 2017 06:31:49 +0000 (06:31 +0000)]
[WK] Add missing ENABLE(NETWORK_CACHE) build guards
https://bugs.webkit.org/show_bug.cgi?id=175769

Reviewed by Carlos Alberto Lopez Perez.

Given that the build guard exists, it should be possible to
compile the WebKit layer with the feature disabled. Missing
guards are added in order to achieve that.

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::NetworkResourceLoader):
* NetworkProcess/soup/NetworkProcessSoup.cpp:
(WebKit::NetworkProcess::platformInitializeNetworkProcess):
(WebKit::NetworkProcess::clearDiskCache):
* UIProcess/soup/WebProcessPoolSoup.cpp:
(WebKit::WebProcessPool::platformInitializeNetworkProcess):
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::storeDerivedDataToCache):

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

2 years ago[Follow up]: Add back the ability to disable MASM_PROBE from the build.
mark.lam@apple.com [Tue, 22 Aug 2017 04:57:27 +0000 (04:57 +0000)]
[Follow up]: Add back the ability to disable MASM_PROBE from the build.
https://bugs.webkit.org/show_bug.cgi?id=175656
<rdar://problem/33933720>

Not reviewed.

Fixed a typo: should be "OS(WINDOWS)", not "OS(WINDOW)".

* wtf/Platform.h:

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

2 years agoChange probe code to use static_assert instead of COMPILE_ASSERT.
mark.lam@apple.com [Tue, 22 Aug 2017 04:41:25 +0000 (04:41 +0000)]
Change probe code to use static_assert instead of COMPILE_ASSERT.
https://bugs.webkit.org/show_bug.cgi?id=175762

Reviewed by JF Bastien.

* assembler/MacroAssemblerARM.cpp:
* assembler/MacroAssemblerARM64.cpp:
(JSC::MacroAssembler::probe): Deleted.
* assembler/MacroAssemblerARMv7.cpp:
* assembler/MacroAssemblerX86Common.cpp:

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

2 years agoMerge the latest version of Speedometer 2.0 to browserbench.org
rniwa@webkit.org [Tue, 22 Aug 2017 04:12:14 +0000 (04:12 +0000)]
Merge the latest version of Speedometer 2.0 to browserbench.org

Rubber-stamped by Joseph Pecoraro.

* Speedometer2.0: Replaced with PerformanceTests/Speedometer.
* Speedometer2.0/resources/benchmark-runner.js:
* Speedometer2.0/resources/todomvc/architecture-examples/angular/dist/inline.b342d102ba4a53bf2002.bundle.js: Removed.
* Speedometer2.0/resources/todomvc/architecture-examples/angular/dist/main.779eb2f1ddbe23ac61c7.bundle.js: Removed.
* Speedometer2.0/resources/todomvc/architecture-examples/angular/dist/polyfills.2d45a4c73c85e24fe474.bundle.js: Removed.
* Speedometer2.0/resources/todomvc/architecture-examples/angular/dist/vendor.b4be818cb6d8028f9192.bundle.js: Removed.
* Speedometer2.0/resources/todomvc/architecture-examples/angular/e2e: Removed.
* Speedometer2.0/resources/todomvc/architecture-examples/angular/e2e/app.e2e-spec.ts: Removed.
* Speedometer2.0/resources/todomvc/architecture-examples/angular/e2e/app.po.ts: Removed.
* Speedometer2.0/resources/todomvc/architecture-examples/angular/e2e/tsconfig.e2e.json: Removed.
* Speedometer2.0/resources/todomvc/architecture-examples/angularjs/node_modules/angular-resource/angular-resource.js:
* Speedometer2.0/resources/todomvc/architecture-examples/angularjs/node_modules/angular-route/angular-route.js:
* Speedometer2.0/resources/todomvc/architecture-examples/angularjs/node_modules/angular/angular.js:
* Speedometer2.0/resources/todomvc/architecture-examples/backbone/node_modules/jquery/dist/jquery.js:
* Speedometer2.0/resources/todomvc/architecture-examples/backbone/node_modules/todomvc-app-css/index.css:
* Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/app/instance-initializers: Removed.
* Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/app/instance-initializers/global.js: Removed.
* Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/config/environment.js:
* Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/tests/.jshintrc: Removed.
* Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/tests/helpers/module-for-acceptance.js:
* Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/tests/helpers/start-app.js:
* Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/static/css/main.d43d2909.css: Removed.
* Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/static/js/main.946269ff.js: Removed.
* Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/dist/static/css/app.677b45842d9f8b96e5b23c18969233b7.css: Removed.
* Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/app.b0e835874bc8949670d1.js: Removed.
* Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/manifest.84b2b4fceb74ab1f91f3.js: Removed.
* Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/vendor.a52517c5aa98e7fbea2e.js: Removed.
* Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.app.73bcc5d3c1d07180f0e3.js: Removed.
* Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.app.73bcc5d3c1d07180f0e3.js.map: Removed.
* Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.manifest.112bf70a7f3deebf1f93.js: Removed.
* Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.manifest.112bf70a7f3deebf1f93.js.map: Removed.
* Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.vendor.efaa3e0e20077c8e7471.js: Removed.
* Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.vendor.efaa3e0e20077c8e7471.js.map: Removed.
* Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.app.73bcc5d3c1d07180f0e3.css: Removed.
* Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.app.73bcc5d3c1d07180f0e3.css.map: Removed.
* Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.vendor.efaa3e0e20077c8e7471.css: Removed.
* Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.vendor.efaa3e0e20077c8e7471.css.map: Removed.
* Speedometer2.0/resources/todomvc/vanilla-examples/vanillajs/js/store.js:

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

2 years agoMake generate_offset_extractor.rb architectures argument more robust
keith_miller@apple.com [Tue, 22 Aug 2017 03:19:46 +0000 (03:19 +0000)]
Make generate_offset_extractor.rb architectures argument more robust
https://bugs.webkit.org/show_bug.cgi?id=175809

Reviewed by Joseph Pecoraro.

It turns out that some of our builders pass their architectures as
space separated lists.  I decided to just make the splitting of
our list robust to any reasonable combination of spaces and
commas.

* offlineasm/generate_offset_extractor.rb:

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

2 years agoAdd Sony to domain affiliations on team page
commit-queue@webkit.org [Tue, 22 Aug 2017 02:25:12 +0000 (02:25 +0000)]
Add Sony to domain affiliations on team page
https://bugs.webkit.org/show_bug.cgi?id=175806

Patch by Ross Kirsling <ross.kirsling@sony.com> on 2017-08-21
Reviewed by Alex Christensen.

* wp-content/themes/webkit/team.php:

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

2 years ago[Cache API] Add support for Cache.add/addAll
commit-queue@webkit.org [Tue, 22 Aug 2017 02:03:24 +0000 (02:03 +0000)]
[Cache API] Add support for Cache.add/addAll
https://bugs.webkit.org/show_bug.cgi?id=175677

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

LayoutTests/imported/w3c:

* web-platform-tests/service-workers/cache-storage/window/cache-add.https-expected.txt:
* web-platform-tests/service-workers/cache-storage/window/cache-storage.https-expected.txt:
* web-platform-tests/service-workers/cache-storage/worker/cache-add.https-expected.txt:
* web-platform-tests/service-workers/cache-storage/worker/cache-storage.https-expected.txt:

Source/WebCore:

Covered by rebased tests.

Cache.addAll implementation is then as follow:
- Fetch the resources in parallel.
- Wait for all them to complete using FetchTaskCounter.
- If an error happens in any load or if the response is not as expected for Cache API, reject the promise.
- Call the batch put operation with all received FetchResponse objects.

FetchTaskCounter is responsible to wait for each response to arrive.
It then checks whether the response is fine,
If not, the addAll promise is rejected.
Otherwise, it waits for the body to be received.

Introducing a helper routine to create a FetchRequest from a given RequestInfo.
Introducing a helper routine to check for Vary Header '*' value in response headers.

* Modules/cache/Cache.cpp:
(WebCore::Cache::doMatch):
(WebCore::Cache::add):
(WebCore::queryCacheMatch):
(WebCore::hasResponseVaryStarHeaderValue):
(WebCore::FetchTaskCounter::FetchTaskCounter):
(WebCore::FetchTaskCounter::~FetchTaskCounter):
(WebCore::FetchTaskCounter::addRecord):
(WebCore::FetchTaskCounter::isDone const):
(WebCore::FetchTaskCounter::reject):
(WebCore::Cache::requestFromInfo):
(WebCore::Cache::addAll):
(WebCore::Cache::put):
(WebCore::Cache::remove):
(WebCore::Cache::keys):
(WebCore::toConnectionRecord):
(WebCore::Cache::batchPutOperation):
* Modules/cache/Cache.h:

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

2 years agoDataInteractionTests.ExternalSourceAttributedStringToContentEditable hits a debug...
mmaxfield@apple.com [Tue, 22 Aug 2017 01:50:34 +0000 (01:50 +0000)]
DataInteractionTests.ExternalSourceAttributedStringToContentEditable hits a debug assertion
https://bugs.webkit.org/show_bug.cgi?id=175787
<rdar://problem/33996612>

Reviewed by Wenson Hsieh.

Source/WebCore:

The variation axis values of San Francisco changed from the GX-style scale to the CSS-style
scale. Previously, we were normalizing the values we got from Core Text to fit the CSS scale;
however, this is no longer necessary since the font now does this itself.

The assertion was getting hit because the normalized values were huge and were overflowing
a single FontSelectionValue (and going negative). This patch adds handling for this
situation.

Test: DataInteractionTests.ExternalSourceBoldSystemAttributedStringToContentEditable

* platform/graphics/FontSelectionAlgorithm.h: Typedef the backing type for a FontSelectionValue.
(WebCore::FontSelectionValue::rawValue const):
(WebCore::FontSelectionValue::maximumValue):
(WebCore::FontSelectionValue::minimumValue):
(WebCore::FontSelectionValue::FontSelectionValue):
* platform/graphics/cocoa/FontCacheCoreText.cpp: Opt-out of normalization for San Francisco.
(WebCore::variationCapabilitiesForFontDescriptor):
(WebCore::capabilitiesForFontDescriptor):

Tools:

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

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

2 years ago[Beacon] Content extensions should be able to intercept Beacon / Ping redirects
cdumez@apple.com [Tue, 22 Aug 2017 01:32:24 +0000 (01:32 +0000)]
[Beacon] Content extensions should be able to intercept Beacon / Ping redirects
https://bugs.webkit.org/show_bug.cgi?id=175746
<rdar://problem/33946050>

Reviewed by Alex Christensen.

Source/WebCore:

Update PingLoad to process content extension rules upon redirect. This allows content
extensions to block and upgrade to HTTPS beacon / ping loads.

Because ping loads can outlive the WebProcess, the content extensions rules are passed
to the NetworkProcess when starting the Ping load. The PingLoad can then consult those
rules upon redirect, on the NetworkProcess side.

Tests: http/wpt/beacon/contentextensions/beacon-blocked.html
       http/wpt/beacon/contentextensions/beacon-redirect-blocked.html

* contentextensions/ContentExtensionActions.h:
* contentextensions/ContentExtensionsBackend.cpp:
(WebCore::ContentExtensions::ContentExtensionsBackend::forEach):
(WebCore::ContentExtensions::ContentExtensionsBackend::processContentExtensionRulesForPingLoad):
* contentextensions/ContentExtensionsBackend.h:
* page/Page.h:
* page/UserContentProvider.cpp:
(WebCore::UserContentProvider::forEachContentExtension):
* page/UserContentProvider.h:

Source/WebKit:

Update PingLoad to process content extension rules upon redirect. This allows content
extensions to block and upgrade to HTTPS beacon / ping loads.

Because ping loads can outlive the WebProcess, the content extensions rules are passed
to the NetworkProcess when starting the Ping load. The PingLoad can then consult those
rules upon redirect, on the NetworkProcess side.

* NetworkProcess/NetworkResourceLoadParameters.cpp:
(WebKit::NetworkResourceLoadParameters::encode const):
(WebKit::NetworkResourceLoadParameters::decode):
* NetworkProcess/NetworkResourceLoadParameters.h:
* NetworkProcess/PingLoad.cpp:
(WebKit::PingLoad::willPerformHTTPRedirection):
(WebKit::PingLoad::contentExtensionsBackend):
(WebKit::PingLoad::processContentExtensionRulesForLoad):
* NetworkProcess/PingLoad.h:
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::startPingLoad):

LayoutTests:

Add layout test coverage for blocking beacon loads via content extensions.

* http/wpt/beacon/connect-src-beacon-redirect-blocked.sub-expected.txt:
* http/wpt/beacon/connect-src-beacon-redirect-blocked.sub.html:
* http/wpt/beacon/contentextensions/beacon-blocked-expected.txt: Added.
* http/wpt/beacon/contentextensions/beacon-blocked.html: Added.
* http/wpt/beacon/contentextensions/beacon-blocked.html.json: Added.
* http/wpt/beacon/contentextensions/beacon-redirect-blocked-expected.txt: Added.
* http/wpt/beacon/contentextensions/beacon-redirect-blocked.html: Added.
* http/wpt/beacon/contentextensions/beacon-redirect-blocked.html.json: Added.

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

2 years ago[WPE][GTK] Unused variables in UserMediaProcessManager.cpp
aperez@igalia.com [Tue, 22 Aug 2017 01:14:15 +0000 (01:14 +0000)]
[WPE][GTK] Unused variables in UserMediaProcessManager.cpp
https://bugs.webkit.org/show_bug.cgi?id=175799

Reviewed by Alex Christensen.

The code which uses the "audioExtensionPath" and "videoExtensionPath" variables is guarded
with "#if ENABLE(SANDBOX_EXTENSIONS)”, so do the same for the variables themselves.

* UIProcess/UserMediaProcessManager.cpp: Add missing guards.

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

2 years agoOnly generate offline asm for the ARCHS (xcodebuild) or the current system (CMake)
keith_miller@apple.com [Tue, 22 Aug 2017 01:07:32 +0000 (01:07 +0000)]
Only generate offline asm for the ARCHS (xcodebuild) or the current system (CMake)
https://bugs.webkit.org/show_bug.cgi?id=175690

Reviewed by Michael Saboff.

This should reduce some of the time we spend building offline asm
in our builds (except for linux since they already did this).

* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* offlineasm/backends.rb:
* offlineasm/generate_offset_extractor.rb:

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

2 years ago[GTK] ARMv7 build fails to build MacroAssemblerARMv7.cpp.
clopez@igalia.com [Tue, 22 Aug 2017 01:07:17 +0000 (01:07 +0000)]
[GTK] ARMv7 build fails to build MacroAssemblerARMv7.cpp.
https://bugs.webkit.org/show_bug.cgi?id=175514

Reviewed by Keith Miller.

* wtf/Platform.h: Enable DFG and MASM_PROBE back for GTK ARM_THUMB2.

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

2 years agoASSERTION FAILED: !m_connections.contains(&connection) in WebCore::SWServer::unregist...
beidson@apple.com [Tue, 22 Aug 2017 00:23:39 +0000 (00:23 +0000)]
ASSERTION FAILED: !m_connections.contains(&connection) in WebCore::SWServer::unregisterConnection(WebCore::SWServer::Connection&).
https://bugs.webkit.org/show_bug.cgi?id=175795

Rubber-stamped by Andy Estes.

* workers/service/server/SWServer.cpp:
(WebCore::SWServer::unregisterConnection): Flip the ASSERT to be... correct.

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

2 years agoTypo in "webkit-patch land"
mmaxfield@apple.com [Mon, 21 Aug 2017 23:39:53 +0000 (23:39 +0000)]
Typo in "webkit-patch land"
https://bugs.webkit.org/show_bug.cgi?id=175788

Reviewed by Tim Horton.

* Scripts/webkitpy/tool/steps/commit.py:
(Commit._commit_warning):

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