Timeline



Aug 27, 2015:

11:22 PM Changeset in webkit [189088] by Yusuke Suzuki
  • 9 edits in trunk/Source/JavaScriptCore

[ES6] Implement Module execution and Loader's ready / link phase
https://bugs.webkit.org/show_bug.cgi?id=148172

Reviewed by Saam Barati.

This patch adds the link / ready phases to the existing module loader.
They are just the stubs and the actual implementations will be
forthcoming in the subsequnt patch.

And this patch paves the way to instantiate the module environment and
compile the executable code in the link phase. Move declaredVariables /
lexicalVariables from ModuleAnalyzer to JSModuleRecord to use them when
instantiating the module environment. Hold the source code in
JSModuleRecord to construct the executable in the link phase. And to
use HostResolveImportedModule operation from the C++ side, we expose
the JSMap from C++ to JS and use it in the builtin JS module loader
code.

  • builtins/ModuleLoaderObject.js:

(requestResolveDependencies.resolveDependenciesPromise.this.requestInstantiate.then.):
(requestLink):
(requestReady):
(link):
(moduleEvaluation):
(loadModule):

  • parser/ModuleAnalyzer.cpp:

(JSC::ModuleAnalyzer::ModuleAnalyzer):
(JSC::ModuleAnalyzer::analyze):

  • parser/ModuleAnalyzer.h:
  • runtime/Completion.cpp:

(JSC::checkModuleSyntax):

  • runtime/JSModuleRecord.cpp:

(JSC::JSModuleRecord::finishCreation):
(JSC::JSModuleRecord::visitChildren):
(JSC::identifierToJSValue):
(JSC::JSModuleRecord::hostResolveImportedModule):
(JSC::JSModuleRecord::link):
(JSC::JSModuleRecord::execute):

  • runtime/JSModuleRecord.h:

(JSC::JSModuleRecord::create):
(JSC::JSModuleRecord::sourceCode):
(JSC::JSModuleRecord::moduleKey):
(JSC::JSModuleRecord::exportEntries):
(JSC::JSModuleRecord::importEntries):
(JSC::JSModuleRecord::declaredVariables):
(JSC::JSModuleRecord::lexicalVariables):
(JSC::JSModuleRecord::JSModuleRecord):

  • runtime/ModuleLoaderObject.cpp:

(JSC::moduleLoaderObjectParseModule):
(JSC::moduleLoaderObjectRequestedModules):
(JSC::moduleLoaderObjectModuleDeclarationInstantiation):
(JSC::moduleLoaderObjectEvaluate):
(JSC::ModuleLoaderObject::requestInstantiateAll): Deleted.

  • runtime/ModuleLoaderObject.h:
11:03 PM Changeset in webkit [189087] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

[Cocoa] Draw fonts at their native sizes instead of scaling a 1pt font
https://bugs.webkit.org/show_bug.cgi?id=146045

Reviewed by Darin Adler.

In his WWDC talk[1], Antonio Cavedoni describes how painting a font at a particular point size
may yield different visual results than painting a font at a 1pt size into a scaled context.
However, this is something that we currently do in WebKit. This patch migrates from this
behavior to instead drawing text at the appropriate point size.

[1] https://developer.apple.com/videos/wwdc/2015/?id=804

  • platform/graphics/cocoa/FontCascadeCocoa.mm:

(WebCore::FontCascade::drawGlyphs):

10:59 PM Changeset in webkit [189086] by mark.lam@apple.com
  • 9 edits in trunk/Source/JavaScriptCore

Add noDFG() to jsc to prevent DFG compilation of a specified function.
https://bugs.webkit.org/show_bug.cgi?id=148559

Reviewed by Geoffrey Garen and Saam Barati.

  • API/JSCTestRunnerUtils.cpp:

(JSC::setNeverInline):
(JSC::setNeverOptimize):

  • API/JSCTestRunnerUtils.h:
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpAssumingJITType):

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::mightCompileEval):
(JSC::DFG::mightCompileProgram):
(JSC::DFG::mightCompileFunctionForCall):
(JSC::DFG::mightCompileFunctionForConstruct):
(JSC::DFG::mightInlineFunctionForCall):

  • jsc.cpp:

(GlobalObject::finishCreation):
(functionNoDFG):

  • runtime/Executable.h:

(JSC::ScriptExecutable::ecmaMode):
(JSC::ScriptExecutable::setNeverInline):
(JSC::ScriptExecutable::setNeverOptimize):
(JSC::ScriptExecutable::setDidTryToEnterInLoop):
(JSC::ScriptExecutable::neverInline):
(JSC::ScriptExecutable::neverOptimize):
(JSC::ScriptExecutable::didTryToEnterInLoop):
(JSC::ScriptExecutable::isInliningCandidate):
(JSC::ScriptExecutable::isOkToOptimize):
(JSC::ScriptExecutable::addressOfDidTryToEnterInLoop):

  • runtime/TestRunnerUtils.cpp:

(JSC::setNeverInline):
(JSC::setNeverOptimize):
(JSC::optimizeNextInvocation):

  • runtime/TestRunnerUtils.h:
10:19 PM Changeset in webkit [189085] by commit-queue@webkit.org
  • 16 edits
    50 deletes in trunk

Unreviewed, rolling out r189064 and r189084.
https://bugs.webkit.org/show_bug.cgi?id=148560

Breaks 117 JSC tests. (Requested by mlam on #webkit).

Reverted changesets:

"[ES6] Add TypedArray.prototype functionality."
https://bugs.webkit.org/show_bug.cgi?id=148035
http://trac.webkit.org/changeset/189064

"Unbreak JSC tests (broken since r189064)."
http://trac.webkit.org/changeset/189084

9:27 PM Changeset in webkit [189084] by mark.lam@apple.com
  • 2 edits in trunk/LayoutTests

Unbreak JSC tests (broken since r189064).

Not reviewed.

  • js/script-tests/typedarray-test-helper-functions.js:
9:09 PM WebKitGTK/2.8.x edited by philip.chimento@gmail.com
I missed 2.8.4 and 2.8.5, trying again for 2.8.6 (diff)
8:51 PM Changeset in webkit [189083] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

Tiny cleanup in RenderLayer::enclosingCompositingLayerForRepaint()
https://bugs.webkit.org/show_bug.cgi?id=148541

Reviewed by Tim Horton.

No change in functionality.

  • rendering/RenderLayer.cpp:

(WebCore::compositingContainer):
(WebCore::compositedWithOwnBackingStore):
(WebCore::RenderLayer::enclosingCompositingLayer):
(WebCore::RenderLayer::enclosingCompositingLayerForRepaint):
(WebCore::RenderLayer::enclosingFilterRepaintLayer):
(WebCore::RenderLayer::clippingRootForPainting):

  • rendering/RenderLayer.h:
  • rendering/RenderLayerBacking.cpp:

(WebCore::descendantLayerPaintsIntoAncestor):

8:35 PM ImplementingCSSProperty edited by timothy@apple.com
(diff)
7:51 PM ImplementingCSSProperty edited by mmaxfield@apple.com
(diff)
7:28 PM Changeset in webkit [189082] by commit-queue@webkit.org
  • 33 edits in trunk/Source

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

broke the build (Requested by jessieberlin on #webkit).

Reverted changeset:

"Create WebAssembly functions"
https://bugs.webkit.org/show_bug.cgi?id=148373
http://trac.webkit.org/changeset/189079

7:11 PM Changeset in webkit [189081] by timothy_horton@apple.com
  • 5 edits in trunk/Source/WebKit2

Video full-screen shouldn't use the DynamicSizeWithMinimumViewSize layout mode
https://bugs.webkit.org/show_bug.cgi?id=148553

Reviewed by Zalan Bujtas.

  • UIProcess/API/mac/WKView.mm:

(-[WKView _supportsArbitraryLayoutModes]):
(-[WKView _updateSupportsArbitraryLayoutModes]):
(-[WKView _didCommitLoadForMainFrame]):

  • UIProcess/API/mac/WKViewInternal.h:
  • UIProcess/mac/PageClientImpl.mm:

(WebKit::PageClientImpl::beganEnterFullScreen):
(WebKit::PageClientImpl::beganExitFullScreen):

  • UIProcess/mac/WKFullScreenWindowController.mm:

(-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]): Deleted.
(-[WKFullScreenWindowController finishedExitFullScreenAnimation:]): Deleted.
It's not OK to just randomly change the layout mode, because the client
can change it or its properties out from under us, and also because we
weren't resetting it to whatever the client had specified.

I recently implemented a better way to override layout modes, for PDF,
so use that here. Also, we shouldn't use DynamicSizeWithMinimumViewSize,
we should just use the "normal" mode (ViewSize), since we've already ensured
a minimum size by setting contentMinSize.

6:51 PM ImplementingCSSProperty created by mmaxfield@apple.com
6:43 PM Changeset in webkit [189080] by ap@apple.com
  • 2 edits in trunk/Source/WebKit2

pluginInfo.clientLoadPolicy is used uninitialized in WebContent process
https://bugs.webkit.org/show_bug.cgi?id=148550

Reviewed by Tim Horton.

This fixes flakiness on plugins/plugin-javascript-access.html.

  • Shared/WebCoreArgumentCoders.cpp: (IPC::ArgumentCoder<PluginInfo>::decode):
6:13 PM Changeset in webkit [189079] by commit-queue@webkit.org
  • 33 edits in trunk/Source

Create WebAssembly functions
https://bugs.webkit.org/show_bug.cgi?id=148373

Patch by Sukolsak Sakshuwong <Sukolsak Sakshuwong> on 2015-08-27
Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

Create functions from WebAssembly files generated by pack-asmjs
<https://github.com/WebAssembly/polyfill-prototype-1>.
WebAssembly functions created by this patch can only return 0.
Actual code generation will be implemented in subsequent patches.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::hash):
(JSC::CodeBlock::sourceCodeForTools):
(JSC::CodeBlock::dumpAssumingJITType):
(JSC::CodeBlock::dumpSource):
(JSC::CodeBlock::CodeBlock):
(JSC::CodeBlock::finalizeUnconditionally):
(JSC::CodeBlock::lineNumberForBytecodeOffset):
(JSC::CodeBlock::expressionRangeForBytecodeOffset):
(JSC::CodeBlock::install):
(JSC::CodeBlock::newReplacement):
(JSC::WebAssemblyCodeBlock::replacement):
(JSC::WebAssemblyCodeBlock::capabilityLevelInternal):
(JSC::CodeBlock::updateAllPredictions):
(JSC::CodeBlock::insertBasicBlockBoundariesForControlFlowProfiler):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::ownerExecutable):
(JSC::CodeBlock::ownerScriptExecutable):
(JSC::CodeBlock::codeType):
(JSC::WebAssemblyCodeBlock::WebAssemblyCodeBlock):

  • debugger/Debugger.cpp:

(JSC::Debugger::toggleBreakpoint):

  • debugger/DebuggerCallFrame.cpp:

(JSC::DebuggerCallFrame::sourceIDForCallFrame):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::InlineStackEntry::executable):
(JSC::DFG::ByteCodeParser::inliningCost):
(JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry):
(JSC::DFG::ByteCodeParser::parseCodeBlock):

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::isSupportedForInlining):

  • dfg/DFGGraph.h:

(JSC::DFG::Graph::executableFor):

  • dfg/DFGOSREntry.cpp:

(JSC::DFG::prepareOSREntry):

  • inspector/ScriptCallStackFactory.cpp:

(Inspector::CreateScriptCallStackFunctor::operator()):

  • interpreter/Interpreter.cpp:

(JSC::eval):
(JSC::isWebAssemblyExecutable):
(JSC::GetStackTraceFunctor::operator()):
(JSC::UnwindFunctor::operator()):

  • interpreter/StackVisitor.cpp:

(JSC::StackVisitor::Frame::sourceURL):
(JSC::StackVisitor::Frame::computeLineAndColumn):

  • jit/JITOperations.cpp:
  • jit/Repatch.cpp:

(JSC::isWebAssemblyExecutable):
(JSC::linkPolymorphicCall):

  • llint/LLIntData.cpp:

(JSC::LLInt::Data::performAssertions):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::setUpCall):

  • llint/LowLevelInterpreter.asm:
  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/Executable.cpp:

(JSC::WebAssemblyExecutable::WebAssemblyExecutable):
(JSC::WebAssemblyExecutable::destroy):
(JSC::WebAssemblyExecutable::visitChildren):
(JSC::WebAssemblyExecutable::clearCode):
(JSC::WebAssemblyExecutable::prepareForExecution):

  • runtime/Executable.h:

(JSC::ExecutableBase::isEvalExecutable):
(JSC::ExecutableBase::isFunctionExecutable):
(JSC::ExecutableBase::isProgramExecutable):
(JSC::ExecutableBase::isWebAssemblyExecutable):
(JSC::ExecutableBase::clearCodeVirtual):

  • runtime/JSFunction.cpp:

(JSC::JSFunction::create):

  • runtime/JSFunction.h:
  • runtime/JSFunctionInlines.h:

(JSC::JSFunction::JSFunction):
(JSC::JSFunction::isBuiltinFunction):

  • runtime/JSType.h:
  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
  • wasm/JSWASMModule.h:

(JSC::JSWASMModule::functions):

  • wasm/WASMFunctionParser.cpp:

(JSC::WASMFunctionParser::compile):

  • wasm/WASMFunctionParser.h:
  • wasm/WASMModuleParser.cpp:

(JSC::WASMModuleParser::WASMModuleParser):
(JSC::WASMModuleParser::parse):
(JSC::WASMModuleParser::parseFunctionDeclarationSection):
(JSC::WASMModuleParser::parseFunctionDefinition):
(JSC::WASMModuleParser::parseExportSection):
(JSC::parseWebAssembly):

  • wasm/WASMModuleParser.h:

Source/WebCore:

No new tests because it's a function rename.

  • testing/Internals.cpp:

(WebCore::Internals::parserMetaData):

5:36 PM Changeset in webkit [189078] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

iOS Simulator API tests fails as Simulator is not running
https://bugs.webkit.org/show_bug.cgi?id=148501
rdar://problem/22447525

Patch by Aakash Jain <aakash_jain@apple.com> on 2015-08-27
Reviewed by Daniel Bates.

This change is a workaround for <rdar://problem/22388812>.

  • Scripts/run-api-tests: Launch the iOS Simulator before starting the API Tests and quit it on program termination when running tests on the iOS port.
  • Scripts/webkitdirs.pm: Store string "For WebKit Development" in constant SIMULATOR_DEVICE_SUFFIX_FOR_WEBKIT_DEVELOPMENT to make it consistently reusable.
5:20 PM Changeset in webkit [189077] by Brent Fulgham
  • 3 edits in trunk/Source/JavaScriptCore

[Win] Unreviewed build fix after r189064.

JSTypedArrayViewPrototypes.{h,cpp} -> JSTypedArrayViewPrototype.{h,cpp}

5:04 PM Changeset in webkit [189076] by achristensen@apple.com
  • 9 edits in trunk

Make DLLLauncherMain executables dependent on dll
https://bugs.webkit.org/show_bug.cgi?id=148548

Reviewed by Brent Fulgham.

Source/JavaScriptCore:

  • shell/CMakeLists.txt:
  • shell/PlatformWin.cmake:

Tools:

  • DumpRenderTree/CMakeLists.txt:
  • DumpRenderTree/PlatformWin.cmake:
  • MiniBrowser/win/CMakeLists.txt:
  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/PlatformWin.cmake:
5:02 PM WebInspectorTests edited by BJ Burg
Start cleaning up article about testing Web Inspector. (diff)
4:59 PM Changeset in webkit [189075] by fpizlo@apple.com
  • 13 edits in trunk/Source/JavaScriptCore

DFG::StrCat isn't really effectful
https://bugs.webkit.org/show_bug.cgi?id=148443

Reviewed by Geoffrey Garen.

I previously made the DFG StrCat node effectful because it is implemented by calling a
DFGOperations function that could cause arbitrary effects. But, the node is only generated from the
op_strcat bytecode operation, and that operation is only used when we first ensure that its
operands are primitives. Primitive operands to StrCat cannot cause arbitrary side-effects. The
reason why I didn't immediately mark StrCat as pure was because there was nothing in DFG IR that
guaranteed that StrCat's children were primitives.

This change adds a KnownPrimitiveUse use kind, and applies it to StrCat. This allows us to mark
StrCat as being pure. This should be a speed-up because we can CSE StrCat and because it means that
we can OSR exit after a StrCat (a pure node doesn't clobber exit state), so we can convert more
of a large string concatenation into MakeRope's.

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::attemptToMakeFastStringAdd):

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

(JSC::DFG::SafeToExecuteEdge::operator()):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::speculate):

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • dfg/DFGUseKind.cpp:

(WTF::printInternal):

  • dfg/DFGUseKind.h:

(JSC::DFG::typeFilterFor):
(JSC::DFG::shouldNotHaveTypeCheck):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::DFG::LowerDFGToLLVM::compileStrCat):
(JSC::FTL::DFG::LowerDFGToLLVM::speculate):

4:53 PM Changeset in webkit [189074] by msaboff@apple.com
  • 3 edits in branches/jsc-tailcall/Source/JavaScriptCore

jsc-tailcall: ARM64 crashes running most any test
https://bugs.webkit.org/show_bug.cgi?id=148547

Reviewed by Basile Clement.

  • jit/CallFrameShuffler.cpp:

(JSC::CallFrameShuffler::CallFrameShuffler): Exclude all callee save registers instead
of runtime registers as not all callee saves are enumerated in GPRInfo.

  • jit/GPRInfo.h: Increased numberCalleeSaveRegisters for ARM64 to include all

architected callee saves, x19..x28.

4:52 PM Changeset in webkit [189073] by timothy_horton@apple.com
  • 5 edits in trunk/LayoutTests

fast/css/object-fit/object-fit-embed.html isn't testing anything
https://bugs.webkit.org/show_bug.cgi?id=148512

Reviewed by Andy Estes.

  • fast/css/object-fit/object-fit-embed-expected.html:
  • fast/css/object-fit/object-fit-embed.html:
  • fast/replaced/border-radius-clip-content-edge.html:
  • fast/replaced/outline-replaced-elements.html:

These tests load PNGs inside <embeds>. r82001 made it so that
the test plugin handles PNGs, and also so that <embed> prefers
plugins even for types that we know how to handle natively.

Since these tests actually want to load PNGs natively, disable
plugins so we don't get that behavior.

4:50 PM Changeset in webkit [189072] by Brent Fulgham
  • 3 edits in trunk/Source/JavaScriptCore

[Win] Unreviewed build fix after r189064.

4:48 PM Changeset in webkit [189071] by Yusuke Suzuki
  • 4 edits
    1 add in trunk/Source/JavaScriptCore

Add module loader "resolve" hook for local file system to test the loader in JSC shell
https://bugs.webkit.org/show_bug.cgi?id=148543

Reviewed by Filip Pizlo.

Add the module loader "resolve" hook to the JSC shell.
It takes the module name and the referrer module key and resolves the name to the unique module key.

resolve(ModuleName moduleName, ModuleKey referrer) -> Promise<ModuleKey>

In the JSC shell, since we load the module from the local file system, we treat an absolute file path
as a module key. So, in this patch, we implement the "resolve" hook that resolves the module name to
the absolute file path.

This local file system "resolve" functionality makes JSC shell easy to test the module loader.

  • jsc.cpp:

(GlobalObject::finishCreation):
(GlobalObject::moduleLoaderFetch):
(pathSeparator):
(extractDirectoryName):
(currentWorkingDirectory):
(resolvePath):
(GlobalObject::moduleLoaderResolve):
(functionDrainMicrotasks):

  • runtime/JSInternalPromiseDeferred.cpp:

(JSC::JSInternalPromiseDeferred::resolve):
(JSC::JSInternalPromiseDeferred::reject):

  • runtime/JSInternalPromiseDeferred.h:
  • tests/stress/pathname-resolve.js: Added.

(shouldBe):
(shouldThrow):

4:41 PM Changeset in webkit [189070] by fpizlo@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Unreviewed, fix some FIXMEs and add some new ones, based on things we've learned from some
recent OSR exit work.

  • dfg/DFGLICMPhase.cpp:

(JSC::DFG::LICMPhase::run):
(JSC::DFG::LICMPhase::attemptHoist):

  • dfg/DFGMayExit.cpp:
  • dfg/DFGMayExit.h:
4:40 PM Changeset in webkit [189069] by matthew_hanson@apple.com
  • 5 edits in branches/safari-601.1-branch/Source

Versioning

4:39 PM Changeset in webkit [189068] by Lucas Forschler
  • 2 edits in trunk/Tools

Remove Mac slaves 188/189 after being replaced with 400/401.

Unreviewed.

  • BuildSlaveSupport/build.webkit.org-config/config.json:
4:35 PM Changeset in webkit [189067] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-601.1.56

New Tag.

4:26 PM Changeset in webkit [189066] by bshafiei@apple.com
  • 5 edits in branches/safari-601.1.46-branch/Source

Versioning.

4:24 PM Changeset in webkit [189065] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.1.46.21

New tag.

3:57 PM Changeset in webkit [189064] by commit-queue@webkit.org
  • 16 edits
    1 copy
    49 adds in trunk

[ES6] Add TypedArray.prototype functionality.
https://bugs.webkit.org/show_bug.cgi?id=148035

Patch by Keith Miller <keith_miller@apple.com> on 2015-08-27
Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

This patch should add most of the functionality for
the prototype properties of TypedArray objects in ES6.
There are a few exceptions to this, which will be added
in upcoming patches:

1) First we do not use the species constructor for some
of the TypedArray prototype functions (namely: map, filter,
slice, and subarray). That will need to be added when
species constructors are finished.

2) TypedArrays still have a length, byteOffset, byteLength,
and buffer are still attached to the TypedArray instance (in
the spec they are on the TypedArray.prototype instance object)
since the JIT currently assumes those properties are fixed.

3) The TypedArray.constructor property is not added yet
as it should point to the TypedArray instance object,
which will be added in a future patch.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • builtins/TypedArray.prototype.js: Added.

(every):
(find):
(findIndex):
(forEach):
(some):
(sort.min):
(sort.merge):
(sort.mergeSort):
(sort):
(reduce):
(reduceRight):
(map):
(filter):
(toLocaleString):

  • runtime/ArrayPrototype.cpp:
  • runtime/ArrayPrototype.h:
  • runtime/CommonIdentifiers.h:
  • runtime/JSGenericTypedArrayView.h:

(JSC::sortFloat):
(JSC::JSGenericTypedArrayView::toAdaptorNativeFromValue):
(JSC::JSGenericTypedArrayView::setRangeToValue):
(JSC::JSGenericTypedArrayView::sort):

  • runtime/JSGenericTypedArrayViewInlines.h:
  • runtime/JSGenericTypedArrayViewPrototypeFunctions.h: Added.

(JSC::argumentClampedIndexFromStartOrEnd):
(JSC::genericTypedArrayViewProtoFuncSet):
(JSC::genericTypedArrayViewProtoFuncEntries):
(JSC::genericTypedArrayViewProtoFuncCopyWithin):
(JSC::genericTypedArrayViewProtoFuncFill):
(JSC::genericTypedArrayViewProtoFuncIndexOf):
(JSC::genericTypedArrayViewProtoFuncJoin):
(JSC::genericTypedArrayViewProtoFuncKeys):
(JSC::genericTypedArrayViewProtoFuncLastIndexOf):
(JSC::genericTypedArrayViewProtoGetterFuncLength):
(JSC::genericTypedArrayViewProtoGetterFuncByteLength):
(JSC::genericTypedArrayViewProtoGetterFuncByteOffset):
(JSC::genericTypedArrayViewProtoFuncReverse):
(JSC::genericTypedArrayViewPrivateFuncSort):
(JSC::genericTypedArrayViewProtoFuncSlice):
(JSC::genericTypedArrayViewProtoFuncSubarray):
(JSC::typedArrayViewProtoFuncValues):

  • runtime/JSGenericTypedArrayViewPrototypeInlines.h:

(JSC::JSGenericTypedArrayViewPrototype<ViewClass>::finishCreation):
(JSC::genericTypedArrayViewProtoFuncSet): Deleted.
(JSC::genericTypedArrayViewProtoFuncSubarray): Deleted.

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/JSObject.h:
  • runtime/JSTypedArrayPrototypes.cpp:
  • runtime/JSTypedArrayPrototypes.h:
  • runtime/JSTypedArrayViewPrototype.cpp: Added.

(JSC::typedArrayViewPrivateFuncLength):
(JSC::typedArrayViewPrivateFuncSort):
(JSC::typedArrayViewProtoFuncSet):
(JSC::typedArrayViewProtoFuncEntries):
(JSC::typedArrayViewProtoFuncCopyWithin):
(JSC::typedArrayViewProtoFuncFill):
(JSC::typedArrayViewProtoFuncLastIndexOf):
(JSC::typedArrayViewProtoFuncIndexOf):
(JSC::typedArrayViewProtoFuncJoin):
(JSC::typedArrayViewProtoFuncKeys):
(JSC::typedArrayViewProtoGetterFuncLength):
(JSC::typedArrayViewProtoGetterFuncByteLength):
(JSC::typedArrayViewProtoGetterFuncByteOffset):
(JSC::typedArrayViewProtoFuncReverse):
(JSC::typedArrayViewProtoFuncSubarray):
(JSC::typedArrayViewProtoFuncSlice):
(JSC::typedArrayViewProtoFuncValues):
(JSC::JSTypedArrayViewPrototype::JSTypedArrayViewPrototype):
(JSC::JSTypedArrayViewPrototype::finishCreation):
(JSC::JSTypedArrayViewPrototype::create):
(JSC::JSTypedArrayViewPrototype::createStructure):

  • runtime/JSTypedArrayViewPrototype.h: Copied from Source/JavaScriptCore/runtime/JSTypedArrayPrototypes.cpp.

LayoutTests:

Added tests for the TypedArray.prototype functions.
All the tests use the typedarray-test-helper-function.js
to run the test on each TypedArray.

  • fast/canvas/webgl/type-conversion-test-expected.txt:
  • js/script-tests/typedarray-copyWithin.js: Added.
  • js/script-tests/typedarray-every.js: Added.

(isBigEnough):
(isBigEnoughAndChange):
(isBigEnoughAndException):

  • js/script-tests/typedarray-fill.js: Added.
  • js/script-tests/typedarray-filter.js: Added.

(keepEven):
(keepEvenAndChange):
(isBigEnoughAndException):

  • js/script-tests/typedarray-find.js: Added.

(keepEven):
(keepEvenAndChange):
(isBigEnoughAndException):

  • js/script-tests/typedarray-findIndex.js: Added.

(keepEven):
(keepEvenAndChange):
(isBigEnoughAndException):

  • js/script-tests/typedarray-forEach.js: Added.

(.checkCorrect.let.list):
(.checkCorrect):
(createChecker):
(foo):
(changeArray):
(isBigEnoughAndException):

  • js/script-tests/typedarray-indexOf.js: Added.

(keepEven):

  • js/script-tests/typedarray-lastIndexOf.js: Added.
  • js/script-tests/typedarray-map.js: Added.

(even):
(evenAndChange):
(isBigEnoughAndException):

  • js/script-tests/typedarray-reduce.js: Added.

(createArray):
(sum):
(createArrayAndChange):
(isBigEnoughAndException):

  • js/script-tests/typedarray-reduceRight.js: Added.

(createArray):
(sum):
(createArrayAndChange):
(isBigEnoughAndException):

  • js/script-tests/typedarray-slice.js: Added.
  • js/script-tests/typedarray-some.js: Added.

(isBigEnough):
(isBigEnoughAndChange):
(isBigEnoughAndException):

  • js/script-tests/typedarray-sort.js: Added.

(sortBackwards):
(compareException):

  • js/script-tests/typedarray-test-helper-functions.js: Added.

(forEachTypedArray):
(isSameFunctionForEachTypedArrayPrototype.eq):
(isSameFunctionForEachTypedArrayPrototype):
(hasSameValues):
(.foo):
(testPrototypeFunctionHelper):
(testPrototypeFunctionOnSigned):
(testPrototypeFunctionOnFloat):
(testPrototypeFunction):

  • js/typedarray-copyWithin-expected.txt: Added.
  • js/typedarray-copyWithin.html: Added.
  • js/typedarray-every-expected.txt: Added.
  • js/typedarray-every.html: Added.
  • js/typedarray-fill-expected.txt: Added.
  • js/typedarray-fill.html: Added.
  • js/typedarray-filter-expected.txt: Added.
  • js/typedarray-filter.html: Added.
  • js/typedarray-find-expected.txt: Added.
  • js/typedarray-find.html: Added.
  • js/typedarray-findIndex-expected.txt: Added.
  • js/typedarray-findIndex.html: Added.
  • js/typedarray-forEach-expected.txt: Added.
  • js/typedarray-forEach.html: Added.
  • js/typedarray-indexOf-expected.txt: Added.
  • js/typedarray-indexOf.html: Added.
  • js/typedarray-lastIndexOf-expected.txt: Added.
  • js/typedarray-lastIndexOf.html: Added.
  • js/typedarray-map-expected.txt: Added.
  • js/typedarray-map.html: Added.
  • js/typedarray-reduce-expected.txt: Added.
  • js/typedarray-reduce.html: Added.
  • js/typedarray-reduceRight-expected.txt: Added.
  • js/typedarray-reduceRight.html: Added.
  • js/typedarray-slice-expected.txt: Added.
  • js/typedarray-slice.html: Added.
  • js/typedarray-some-expected.txt: Added.
  • js/typedarray-some.html: Added.
  • js/typedarray-sort-expected.txt: Added.
  • js/typedarray-sort.html: Added.
3:35 PM Changeset in webkit [189063] by Chris Dumez
  • 8 edits in trunk/Source/WebCore

A WebIDL callback interface is allowed to have constants
https://bugs.webkit.org/show_bug.cgi?id=148449

Reviewed by Geoffrey Garen.

Our JS bindings generator is now able to:

  1. Handle IDL constants [1] on a callback interfaces [2] and generate a DOMConstructorObject subclass with static properties for these constants [3].
  2. Generate a property on the global object for callback interfaces that have constants and do not have the [NoInterfaceObject] IDL extended attribute [4].

This is a pre-requirement for Bug 148415 as NodeFilter [5] has constants
and should be a callback interface. Once NodeFilter is ported to be
a callback interface, the JS still needs to be able to access
window.NodeFilter.SHOW_ALL for e.g.

[1] https://heycam.github.io/webidl/#dfn-constant
[2] https://heycam.github.io/webidl/#dfn-callback-interface
[3] https://heycam.github.io/webidl/#NoInterfaceObject
[4] https://heycam.github.io/webidl/#es-interfaces
[5] https://dom.spec.whatwg.org/#interface-nodefilter

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateCallbackHeader):
(GenerateCallbackImplementation):
(GenerateConstructorHelperMethods):
(ConstructorHasProperties): Deleted.

  • bindings/scripts/preprocess-idls.pl:

(getInterfaceExtendedAttributesFromIDL):
(interfaceHasConstantAttribute):

  • bindings/scripts/test/GObject/WebKitDOMTestCallback.h:
  • bindings/scripts/test/JS/JSTestCallback.cpp:

(WebCore::JSTestCallbackConstructor::create):
(WebCore::JSTestCallbackConstructor::createStructure):
(WebCore::JSTestCallbackConstructor::JSTestCallbackConstructor):
(WebCore::JSTestCallbackConstructor::finishCreation):
(WebCore::JSTestCallback::getConstructor):

  • bindings/scripts/test/JS/JSTestCallback.h:
  • bindings/scripts/test/ObjC/DOMTestCallback.h:
  • bindings/scripts/test/TestCallback.idl:
3:33 PM Changeset in webkit [189062] by Chris Dumez
  • 9 edits
    2 adds in trunk

Range.compareBoundaryPoints() should throw a NotSupportedError for invalid compareHow values
https://bugs.webkit.org/show_bug.cgi?id=148483

Reviewed by Geoffrey Garen.

Source/WebCore:

Range.compareBoundaryPoints() should throw a NotSupportedError for
invalid compareHow values:
https://dom.spec.whatwg.org/#dom-range-compareboundarypoints (step 1)

Firefox and Chrome conform to the specification already.

Previously, WebKit would not throw and simply cast the value to our
internal CompareHow enum type. This patch aligns WebKit's behavior with
the DOM specificaiton and other browsers.

W3C test suite:
http://w3c-test.org/dom/ranges/Range-compareBoundaryPoints.html

Test: fast/dom/Range/compareBoundaryPoints-compareHow-exception.html

  • bindings/scripts/CodeGenerator.pm:
  • bindings/scripts/CodeGeneratorGObject.pm:
  • bindings/scripts/CodeGeneratorJS.pm:
  • bindings/scripts/CodeGeneratorObjC.pm:

Drop CompareHow special casing from bindings generator as we now use
unsigned short instead in the IDL.

  • dom/Range.cpp:

(WebCore::Range::compareBoundaryPointsForBindings):

  • dom/Range.h:
  • dom/Range.idl:

Use "unsigned short" type instead of WebCore's CompareHow for the
parameter, as per the specification. On implementation side, we
now validate the compareHow value before casting it to a CompareHow
enum type. If the value is not value, we throw and abort early.

LayoutTests:

Add new layout test to confirm that Range.compareBoundaryPoints() throws
when passed in invalid compareHow values.

  • fast/dom/Range/compareBoundaryPoints-compareHow-exception-expected.txt: Added.
  • fast/dom/Range/compareBoundaryPoints-compareHow-exception.html: Added.
3:31 PM Changeset in webkit [189061] by basile_clement@apple.com
  • 18 edits
    2 deletes in branches/jsc-tailcall/Source/JavaScriptCore

Unreviewed, revert r189049 which should never have been committed.

(JSC::ValueRecovery::inGPR): Deleted.

  • dfg/DFGNode.h:

(JSC::DFG::Node::targetBytecodeOffsetDuringParsing): Deleted.
(JSC::DFG::Node::targetBlock): Deleted.
(JSC::DFG::Node::branchData): Deleted.

  • dfg/DFGTierUpCheckInjectionPhase.cpp:

(JSC::DFG::TierUpCheckInjectionPhase::run):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLCompile.cpp:

(JSC::FTL::mmAllocateDataSection): Deleted.

  • ftl/FTLJSCall.cpp:

(JSC::FTL::JSCall::JSCall):

  • ftl/FTLJSCallBase.cpp:

(JSC::FTL::JSCallBase::link):
(JSC::FTL::JSCallBase::emit): Deleted.

  • ftl/FTLJSCallBase.h:
  • ftl/FTLJSCallVarargs.cpp:

(JSC::FTL::JSCallVarargs::JSCallVarargs): Deleted.
(JSC::FTL::JSCallVarargs::emit): Deleted.

  • ftl/FTLJSTailCall.cpp: Removed.
  • ftl/FTLJSTailCall.h: Removed.
  • ftl/FTLLocation.h:

(JSC::FTL::Location::operator!):
(JSC::FTL::Location::isHashTableDeletedValue): Deleted.

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::DFG::LowerDFGToLLVM::callPreflight):
(JSC::FTL::DFG::LowerDFGToLLVM::compileNode): Deleted.
(JSC::FTL::DFG::LowerDFGToLLVM::compileCallOrConstructVarargs): Deleted.
(JSC::FTL::DFG::LowerDFGToLLVM::compileLoadVarargs): Deleted.
(JSC::FTL::DFG::LowerDFGToLLVM::appendOSRExit): Deleted.
(JSC::FTL::DFG::LowerDFGToLLVM::setStrictInt52): Deleted.
(JSC::FTL::DFG::LowerDFGToLLVM::setInt52): Deleted.
(JSC::FTL::DFG::LowerDFGToLLVM::setJSValue): Deleted.
(JSC::FTL::DFG::LowerDFGToLLVM::setBoolean): Deleted.
(JSC::FTL::DFG::LowerDFGToLLVM::setStorage): Deleted.
(JSC::FTL::DFG::LowerDFGToLLVM::setDouble): Deleted.
(JSC::FTL::DFG::LowerDFGToLLVM::setInt32): Deleted.

  • ftl/FTLState.h:
  • jit/CallFrameShuffler.cpp:

(JSC::CallFrameShuffler::spill):
(JSC::CallFrameShuffler::emitDeltaCheck): Deleted.
(JSC::CallFrameShuffler::prepareForSlowPath): Deleted.
(JSC::CallFrameShuffler::prepareForTailCall): Deleted.

  • jit/CallFrameShuffler.h:

(JSC::CallFrameShuffler::addNew):
(JSC::CallFrameShuffler::snapshot): Deleted.
(JSC::CallFrameShuffler::assumeCalleeIsCell): Deleted.
(JSC::CallFrameShuffler::newAsOld): Deleted.
(JSC::CallFrameShuffler::ensureRegister): Deleted.
(JSC::CallFrameShuffler::addressForOld): Deleted.
(JSC::CallFrameShuffler::isDangerNew): Deleted.
(JSC::CallFrameShuffler::updateDangerFrontier): Deleted.

  • jit/CallFrameShuffler64.cpp:

(JSC::CallFrameShuffler::emitDisplace):

  • jit/Reg.h:

(JSC::Reg::Reg): Deleted.
(JSC::Reg::isFPR): Deleted.

3:12 PM Changeset in webkit [189060] by Joseph Pecoraro
  • 3 edits
    2 adds in trunk

Page does not update when <link> media attribute changes to no longer apply to page
https://bugs.webkit.org/show_bug.cgi?id=148392

Reviewed by Antti Koivisto.

Source/WebCore:

Test: fast/css/link-media-attr.html

  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::parseAttribute):
When the media attribute changes, recalculate styles if the link is not disabled.

LayoutTests:

  • fast/css/link-media-attr-expected.txt: Added.
  • fast/css/link-media-attr.html: Added.

Add a test to verify that styles change after a link's media attribute changes.

2:42 PM Changeset in webkit [189059] by Chris Dumez
  • 1 edit
    2 adds in trunk/LayoutTests

Document window.NodeFilter properties
https://bugs.webkit.org/show_bug.cgi?id=148531

Reviewed by Geoffrey Garen.

Document window.NodeFilter properties to detect changes to them. This
is in preparation of Bug 148415 as this will help detect unwanted
changes to the interface when making NodeFilter a callback interface.

  • fast/dom/node-filter-interface-expected.txt: Added.
  • fast/dom/node-filter-interface.html: Added.
2:39 PM Changeset in webkit [189058] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Simple line layout: Text jumps sometimes on naughty strings page
https://bugs.webkit.org/show_bug.cgi?id=148399
rdar://problem/22212568

Reviewed by Antti Koivisto.

The x position we set for tab characters during painting should
be the same as if it was set by the inline box tree painting.

Inline box tree computes the distance from the rootbox for each line
and sets this value as the xPos for the TextRun.
Currently simple line layout does not support cases where a line
would have an offset, so this value is always 0.

Source/WebCore:

Test: fast/text/whitespace/simple-line-layout-tab-position.html

  • rendering/SimpleLineLayoutFunctions.cpp:

(WebCore::SimpleLineLayout::paintFlow):

LayoutTests:

  • fast/text/whitespace/simple-line-layout-tab-position-expected.html: Added.
  • fast/text/whitespace/simple-line-layout-tab-position.html: Added.
2:38 PM Changeset in webkit [189057] by Lucas Forschler
  • 2 edits in trunk/Tools

Add two bots to the Mac Yosemite queue.
This is to eventually replace bots188/189, which will be removed after 400/401 are vetted.

Unreviewed.

  • BuildSlaveSupport/build.webkit.org-config/config.json:
2:36 PM Changeset in webkit [189056] by achristensen@apple.com
  • 13 edits in trunk

Isolate Source directories in CMake build
https://bugs.webkit.org/show_bug.cgi?id=148389

Reviewed by Brent Fulgham.

.:

  • CMakeLists.txt:
  • Source/cmake/WebKitCommon.cmake:

Move package finding to WebKitCommon.

Source/JavaScriptCore:

  • PlatformWin.cmake:

Include ../include/private to find WTF headers in internal build.
Don't use a script to generate forwarding headers.

  • shell/PlatformWin.cmake:

Copy inspector scripts to the forwarding headers directory to be used by WebCore.

Source/WebCore:

  • CMakeLists.txt:

Use the forwarding header copy of the inspector scripts to avoid requiring JavaScriptCore directory to exist.

  • PlatformAppleWin.cmake:

Add AVFoundation sources to build.

  • PlatformEFL.cmake:

Moved WebKitVersion.h generating from CMakeLists.txt because it is now only used in WebCore by EFL.

  • PlatformWin.cmake:

Include ../include/private to find forwarding headers in internal build.

Source/WebKit:

  • PlatformWin.cmake:

Moved WebKitVersion.h generation from WebCore because the scripts required for it are in WebKit.

2:31 PM Changeset in webkit [189055] by achristensen@apple.com
  • 7 edits in trunk

[Win CMake] Fix incremental build after r188673
https://bugs.webkit.org/show_bug.cgi?id=148539

Reviewed by Brent Fulgham.

Source/JavaScriptCore:

  • PlatformWin.cmake:

Use xcopy as a build step instead of file(COPY ...) to copy updated headers.

Source/WebCore:

  • CMakeLists.txt:
  • PlatformWin.cmake:

Use xcopy as a build step instead of file(COPY ...) to copy updated headers.

Tools:

  • TestWebKitAPI/PlatformWin.cmake:

Copy forwarding headers from WebCore before building in case that was not yet done.
It used to be done when running CMake, but now it's a build step.

2:26 PM Changeset in webkit [189054] by Jon Davis
  • 2 edits in trunk/Source/JavaScriptCore

Include ES6 Generators and Proxy object status to feature status page.
https://bugs.webkit.org/show_bug.cgi?id=148095

Reviewed by Timothy Hatcher.

  • features.json:
2:25 PM Changeset in webkit [189053] by matthew_hanson@apple.com
  • 2 edits
    1 add in branches/safari-601.1-branch/Source/JavaScriptCore

Merge r189012. rdar://problem/22084478

2:24 PM Changeset in webkit [189052] by timothy_horton@apple.com
  • 32 edits
    1 add
    3 deletes in trunk/Source

Factor out Lookup invocation
https://bugs.webkit.org/show_bug.cgi?id=148509

Reviewed by Anders Carlsson.

There's a ton of duplicated code in legacy and modern WebKit to talk to
Lookup. And, it's pretty messy. As a first step to making it less messy,
make it so we only have it in one place instead of four (or two).

  • editing/DictionaryPopupInfo.h:

Move DictionaryPopupInfo into WebCore. This was duplicated
in both legacy and modern WebKit.

  • editing/mac/DictionaryLookup.h:
  • editing/mac/DictionaryLookup.mm:

(WebCore::DictionaryLookup::rangeForSelection):
(WebCore::DictionaryLookup::rangeAtHitTestResult):
(WebCore::DictionaryLookup::stringForPDFSelection):
(WebCore::showPopupOrCreateAnimationController):
(WebCore::DictionaryLookup::showPopup):
(WebCore::DictionaryLookup::hidePopup):
(WebCore::DictionaryLookup::animationControllerForPopup):
(WebCore::rangeForDictionaryLookupForSelection): Deleted.
(WebCore::rangeForDictionaryLookupAtHitTestResult): Deleted.
(WebCore::dictionaryLookupForPDFSelection): Deleted.
Move DictionaryLookup stuff into a class for better names.

Move showPopup, hidePopup, and animationControllerForPopup here.
showPopup and animationControllerForPopup both bottleneck through
a single function, where previously we duplicated all of the code
for both of them, and in both legacy and modern WebKit.

showPopup and animationControllerForPopup take a block that they *may*
call if we have support for overriding Lookup's indicator with TextIndicator,
because the installation process is different per WebKit.

  • page/mac/EventHandlerMac.mm:

(WebCore::EventHandler::selectClosestWordFromHitTestResultBasedOnLookup):

  • testing/Internals.cpp:

(WebCore::Internals::rangeForDictionaryLookupAtLocation):
Adjust to the new naming.

  • Shared/DictionaryPopupInfo.cpp: Removed.
  • Shared/DictionaryPopupInfo.h: Removed.

Moved to WebCore.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<DictionaryPopupInfo>::encode):
(IPC::ArgumentCoder<DictionaryPopupInfo>::decode):
Add encode/decoders for DictionaryPopupInfo now that it's in WebCore.

  • Shared/WebCoreArgumentCoders.h:
  • Shared/WebHitTestResult.h:
  • Shared/mac/ArgumentCodersMac.h:
  • UIProcess/API/mac/WKView.mm:

(+[WKView hideWordDefinitionWindow]):
(-[WKView _dismissContentRelativeChildWindows]):

  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/mac/PageClientImpl.h:
  • UIProcess/mac/PageClientImpl.mm:

(WebKit::PageClientImpl::didPerformDictionaryLookup):

  • UIProcess/mac/WKImmediateActionController.mm:

(-[WKImmediateActionController _animationControllerForText]):

  • UIProcess/mac/WebPageProxyMac.mm:
  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::showDefinitionForAttributedString):
(WebKit::PDFPlugin::lookupTextAtLocation):

  • WebProcess/WebCoreSupport/mac/WebContextMenuClientMac.mm:
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::performDictionaryLookupAtLocation):
(WebKit::WebPage::performDictionaryLookupForSelection):
(WebKit::WebPage::dictionaryPopupInfoForRange):
(WebKit::WebPage::dictionaryPopupInfoForSelectionInPDFPlugin):
(WebKit::WebPage::lookupTextAtLocation):
Adjust to new names and move stuff to WebCore.

  • WebKit.xcodeproj/project.pbxproj:
  • WebView/DictionaryPopupInfo.h: Removed.

Move to WebCore.

  • WebView/WebHTMLView.mm:

(-[WebHTMLView _lookUpInDictionaryFromMenu:]):
DictionaryPopupInfo keeps a TextIndicatorData, not a TextIndicator.

  • WebView/WebImmediateActionController.mm:

(-[WebImmediateActionController _animationControllerForDataDetectedLink]):
(dictionaryPopupInfoForRange):
(-[WebImmediateActionController _animationControllerForText]):

  • WebView/WebView.mm:

(-[WebView _prepareForDictionaryLookup]):
(-[WebView _animationControllerForDictionaryLookupPopupInfo:]):
(-[WebView _setTextIndicator:withLifetime:]):
(-[WebView _showDictionaryLookupPopup:]):

  • WebView/WebViewInternal.h:

Move a bunch of code to WebCore.
Factor some that has to stay out into _prepareForDictionaryLookup.

2:23 PM Changeset in webkit [189051] by Jon Davis
  • 2 edits in trunk/Source/WebCore

Add IndexedDB to the feature status page.
https://bugs.webkit.org/show_bug.cgi?id=148094

Reviewed by Timothy Hatcher.

  • features.json:
2:13 PM Changeset in webkit [189050] by basile_clement@apple.com
  • 2 edits in branches/jsc-tailcall/Source/JavaScriptCore

Unreviewed, re-enable the FTL
https://bugs.webkit.org/show_bug.cgi?id=146942

We are not using the register preservation thunk anymore, so we can
have both the FTL and tail calls!

  • runtime/Options.h:
2:13 PM Changeset in webkit [189049] by basile_clement@apple.com
  • 17 edits
    1 copy
    1 add in branches/jsc-tailcall/Source/JavaScriptCore

WIP

2:02 PM Changeset in webkit [189048] by andersca@apple.com
  • 4 edits in trunk

REGRESSION (r188987): imported/mozilla/svg/filters/feConvolveMatrix-1.svg fails
https://bugs.webkit.org/show_bug.cgi?id=148497
<rdar://problem/22459541>

Reviewed by Andy Estes.

Source/WebCore:

Don't return early if iterations is 0.

  • platform/graphics/filters/FEConvolveMatrix.cpp:

(WebCore::FEConvolveMatrix::platformApplySoftware):

LayoutTests:

12:58 PM Changeset in webkit [189047] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, add a comment to describe something I learned about a confusingly-named function.

  • dfg/DFGUseKind.h:

(JSC::DFG::isCell):

12:40 PM Changeset in webkit [189046] by basile_clement@apple.com
  • 3 edits
    3 adds in trunk

REGRESSION(r184779): Possible read-after-free in JavaScriptCore/dfg/DFGClobberize.h
https://bugs.webkit.org/show_bug.cgi?id=148411

Reviewed by Geoffrey Garen and Filip Pizlo.

Source/JavaScriptCore:

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

LayoutTests:

  • js/regress-148411-expected.txt: Added.
  • js/regress-148411.html: Added.
  • js/script-tests/regress-148411.js: Added.

(foo):

12:36 PM Changeset in webkit [189045] by commit-queue@webkit.org
  • 2 edits
    2 deletes in trunk/LayoutTests

AX: Remove accessibility/mac/change-notification-on-scroll.html test
https://bugs.webkit.org/show_bug.cgi?id=148534

Patch by Nan Wang <n_wang@apple.com> on 2015-08-27
Reviewed by Chris Fleizach.

Removed the test since AXValueChange notifications are not being sent
when scrollable regions inside the WebView are scrolled.

  • accessibility/mac/change-notification-on-scroll-expected.txt: Removed.
  • accessibility/mac/change-notification-on-scroll.html: Removed.
  • platform/mac/TestExpectations:
12:21 PM Changeset in webkit [189044] by commit-queue@webkit.org
  • 9 edits
    1 add in trunk

AX: Fix accessibility/select-element-at-index.html test
https://bugs.webkit.org/show_bug.cgi?id=148516

Patch by Nan Wang <n_wang@apple.com> on 2015-08-27
Reviewed by Chris Fleizach.

Tools:

Implemented setSelectedChildAtIndex and removeSelectionAtIndex for mac.

  • DumpRenderTree/AccessibilityUIElement.cpp:

(setSelectedChildCallback):
(setSelectedChildAtIndexCallback):
(removeSelectionAtIndexCallback):
(elementAtPointCallback):
(sentenceAtOffsetCallback):
(stringForSelectionCallback):
(AccessibilityUIElement::getJSClass):

  • DumpRenderTree/mac/AccessibilityUIElementMac.mm:

(AccessibilityUIElement::setSelectedChild):
(AccessibilityUIElement::setSelectedChildAtIndex):
(AccessibilityUIElement::removeSelectionAtIndex):
(AccessibilityUIElement::accessibilityValue):

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:

(WTR::AccessibilityUIElement::wordAtOffset):
(WTR::AccessibilityUIElement::lineAtOffset):
(WTR::AccessibilityUIElement::sentenceAtOffset):
(WTR::AccessibilityUIElement::isSelectable):
(WTR::AccessibilityUIElement::isMultiSelectable):
(WTR::AccessibilityUIElement::setSelectedChild):
(WTR::AccessibilityUIElement::setSelectedChildAtIndex):
(WTR::AccessibilityUIElement::removeSelectionAtIndex):
(WTR::AccessibilityUIElement::selectedChildrenCount):
(WTR::AccessibilityUIElement::selectedChildAtIndex):
(WTR::AccessibilityUIElement::isExpanded):

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::AccessibilityUIElement::setSelectedChild):
(WTR::AccessibilityUIElement::setSelectedChildAtIndex):
(WTR::AccessibilityUIElement::removeSelectionAtIndex):
(WTR::AccessibilityUIElement::accessibilityValue):

LayoutTests:

  • accessibility/select-element-at-index.html:
  • platform/mac/TestExpectations:
  • platform/mac/accessibility/select-element-at-index-expected.txt: Added.
12:10 PM Changeset in webkit [189043] by Antti Koivisto
  • 3 edits in trunk/Source/WebCore

Decode redirected data URLs in web process
https://bugs.webkit.org/show_bug.cgi?id=148386

Reviewed by Zalan Bujtas.

Redirected data URLs still end up to networking layer for decoding. Handle them locally as well.

Covered by existing tests.

  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::~ResourceLoader):
(WebCore::ResourceLoader::finishNetworkLoad):

Factor to a function.

(WebCore::ResourceLoader::releaseResources):
(WebCore::ResourceLoader::willSendRequestInternal):

When receiving redirect to a data URL end the network load and decode it locally.

(WebCore::ResourceLoader::willSendRequest):

  • loader/ResourceLoader.h:
11:45 AM Changeset in webkit [189042] by Brent Fulgham
  • 2 edits in trunk/LayoutTests

[Win] Skip new High DPI test (Windows doesn't quite support this)
Also skip an event test that started failing after r188793.

  • platform/win/TestExpectations:
11:35 AM Changeset in webkit [189041] by ap@apple.com
  • 2 edits in trunk/LayoutTests

REGRESSION (r188820): fast/dom/HTMLObjectElement/object-as-frame.html is flaky.
https://bugs.webkit.org/show_bug.cgi?id=148533

11:32 AM Changeset in webkit [189040] by Brent Fulgham
  • 2 edits in trunk/LayoutTests

[Win] Mark some test failures.

  • platform/win/TestExpectations: Mark some test failures. Images are black instead

of showing the correct output.

11:26 AM Changeset in webkit [189039] by Brent Fulgham
  • 1 edit
    1 delete in trunk/LayoutTests

[Win] Test gardening.

Remove failure case for recent progression.

  • platform/win/sputnik/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Percent: Removed.
  • platform/win/sputnik/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Percent/S11.5.3_A4_T6-expected.txt: Removed.
11:09 AM Changeset in webkit [189038] by mmaxfield@apple.com
  • 9 edits
    4 adds in trunk

[Cocoa] Generic font families do not consult with the user's preferred language
https://bugs.webkit.org/show_bug.cgi?id=148499
<rdar://problem/22407296>

Reviewed by Antti Koivisto.

Source/WebCore:

When WebKit encounters markup like lang="zh" style="font-family: sans-serif;"
we currently always use Simplified Chinese fonts. However, the user may
have specifically selected Traditional Chinese in their user preferences.
In this absence of other signals, we should consult with the user
preferences when determining which font to pick.

Tests: fast/text/international/generic-font-family-language-simplified.html

fast/text/international/generic-font-family-language-traditional.html

  • platform/Language.cpp:

(WebCore::observerMap):
(WebCore::overrideUserPreferredLanguages):

  • platform/graphics/FontGenericFamilies.cpp:

(WebCore::computeUserPrefersSimplified):
(WebCore::cachedUserPrefersSimplified):
(WebCore::languageChanged):
(WebCore::genericFontFamilyForScript):
(WebCore::FontGenericFamilies::FontGenericFamilies):

  • platform/text/LocaleToScriptMappingDefault.cpp:

(WebCore::scriptNameToCode):

LayoutTests:

Mock the user's font preferences.

  • fast/text/international/font-fallback-to-common-script.html:
  • fast/text/international/generic-font-family-language-simplified-expected.html: Added.
  • fast/text/international/generic-font-family-language-simplified.html: Added.
  • fast/text/international/generic-font-family-language-traditional-expected.html: Added.
  • fast/text/international/generic-font-family-language-traditional.html: Added.
  • fast/text/international/lang-sensitive-fonts-xml.xhtml:
  • fast/text/international/lang-sensitive-fonts.html:
  • fast/text/international/locale-sensitive-fonts.html:
11:03 AM Changeset in webkit [189037] by mmaxfield@apple.com
  • 3 edits in trunk/Source/WebCore

Update Grid Layout to use fewer magic -1s
https://bugs.webkit.org/show_bug.cgi?id=148505

Reviewed by Javier Fernandez.

After r188873, there were still some -1s left in Grid Layout code. This patch cleans them
up after consulting with Javier Fernandez.

No new tests because there is no behavior change.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::containingBlockLogicalWidthForContent):
(WebCore::RenderBox::containingBlockLogicalHeightForContent):
(WebCore::RenderBox::perpendicularContainingBlockLogicalHeight):

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::applyStretchAlignmentToChildIfNeeded):

10:54 AM Changeset in webkit [189036] by msaboff@apple.com
  • 2 edits in branches/jsc-tailcall/Source/JavaScriptCore

jsc-tailcall: Test failures with FTL enabled after r188986
https://bugs.webkit.org/show_bug.cgi?id=148494

Reviewed by Basile Clement.

During FTL OSR exit processing, we can't use a callee save register as a temp when
transferring the saved version of that registers from the FTL's stack location to the
baseline's stack location. If we do, we'll overwrite the tag registers that we
materialized previously.

  • ftl/FTLOSRExitCompiler.cpp:

(JSC::FTL::compileStub):

10:51 AM Changeset in webkit [189035] by achristensen@apple.com
  • 2 edits in trunk/Tools

Build fix after r188982

  • MiniBrowser/win/CMakeLists.txt:

The directory structure changed in the move.

10:42 AM Changeset in webkit [189034] by BJ Burg
  • 15 edits in trunk/Source

Web Inspector: FrontendChannel should know its own connection type
https://bugs.webkit.org/show_bug.cgi?id=148482

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

  • inspector/InspectorFrontendChannel.h: Add connectionType().
  • inspector/remote/RemoteInspectorDebuggableConnection.h:

Source/WebCore:

To prepare for multiple attached frontends, the frontend connection should
be able to report its type rather than explicitly setting connection type
via a getter.

No behavior change, no new tests.

  • inspector/InspectorController.cpp:

(WebCore::InspectorController::hasLocalFrontend): Ask the channel what it is.
(WebCore::InspectorController::hasRemoteFrontend): Ask the channel what it is.
(WebCore::InspectorController::connectFrontend): Use hasRemoteFrotend().
(WebCore::InspectorController::disconnectFrontend): Use hasRemoteFrontend().
(WebCore::InspectorController::InspectorController): Deleted.

  • inspector/InspectorController.h: Initialize a few members here.

(WebCore::InspectorController::hasFrontend): Deleted, it was unused.
(WebCore::InspectorController::setHasRemoteFrontend): Deleted.

  • inspector/WorkerInspectorController.cpp:
  • page/PageDebuggable.cpp:

(WebCore::PageDebuggable::connect):
(WebCore::PageDebuggable::disconnect):

  • testing/Internals.cpp: Add connectionType().

Source/WebKit/mac:

  • WebCoreSupport/WebInspectorClient.h: add connectionType().

Source/WebKit/win:

  • WebCoreSupport/WebInspectorClient.h: add connectionType().

Source/WebKit2:

  • WebProcess/WebPage/WebInspector.h: add connectionType().
10:40 AM Changeset in webkit [189033] by andersca@apple.com
  • 2 edits in trunk/Source/WTF

Define legacy main thread calling functions for iOS as well
https://bugs.webkit.org/show_bug.cgi?id=148530

Reviewed by Tim Horton.

  • wtf/mac/DeprecatedSymbolsUsedBySafari.mm:
10:37 AM Changeset in webkit [189032] by commit-queue@webkit.org
  • 14 edits in trunk

Web Inspector: Standardize on CSSStyleSheet.Type enum and move more protocol enum conversion to the manager
https://bugs.webkit.org/show_bug.cgi?id=148515

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-08-27
Reviewed by Brian Burg.

Source/WebInspectorUI:

  • UserInterface/Controllers/CSSStyleManager.js:

(WebInspector.CSSStyleManager.protocolStyleSheetOriginToEnum):
(WebInspector.CSSStyleManager.protocolMediaSourceToEnum):
Protocol enum to frontend enum conversion.

  • UserInterface/Models/DOMNodeStyles.js:

(WebInspector.DOMNodeStyles.prototype.refresh.fetchedComputedStyle):
(WebInspector.DOMNodeStyles.prototype.refresh):
(WebInspector.DOMNodeStyles.prototype._parseRulePayload):
(WebInspector.DOMNodeStyles.prototype._collectStylesInCascadeOrder):
Use the manager to convert from a protocol payload enum to frontend num for css types.

  • UserInterface/Models/CSSRule.js:

(WebInspector.CSSRule.prototype.get editable):

  • UserInterface/Views/CSSStyleDeclarationSection.js:

(WebInspector.CSSStyleDeclarationSection):
(WebInspector.CSSStyleDeclarationSection.prototype.refresh):

  • UserInterface/Views/RulesStyleDetailsPanel.js:

(WebInspector.RulesStyleDetailsPanel.prototype.refresh.appendStyleSection):
(WebInspector.RulesStyleDetailsPanel.prototype.refresh):

  • UserInterface/Views/VisualStyleSelectorSection.js:

(WebInspector.VisualStyleSelectorSection.prototype.update.createSelectorItem):
(WebInspector.VisualStyleSelectorSection.prototype.update.uniqueOrderedRules.set return):
(WebInspector.VisualStyleSelectorSection.prototype.update.uniqueOrderedRules):
(WebInspector.VisualStyleSelectorSection.prototype.update):

  • UserInterface/Views/VisualStyleSelectorTreeItem.js:

(WebInspector.VisualStyleSelectorTreeItem):
Update enum use.

LayoutTests:

  • inspector/css/matched-style-properties.html:
  • inspector/css/pseudo-element-matches.html:
  • inspector/css/selector-dynamic-specificity.html:
  • inspector/css/selector-specificity.html:
  • inspector/css/stylesheet-with-mutations.html:
10:33 AM Changeset in webkit [189031] by eric.carlson@apple.com
  • 11 edits
    1 add in trunk

Media Session: MediaSession constructor 'kind' argument optional
https://bugs.webkit.org/show_bug.cgi?id=148527

Reviewed by Jer Noble.

Source/WebCore:

No new tests, updated media/session/session-creation.html.

  • Modules/mediasession/MediaSession.cpp:

(WebCore::MediaSession::parseKind): Treat null kind "content".
(WebCore::MediaSession::MediaSession): Delete Document* version.

  • Modules/mediasession/MediaSession.h: Make constructor private.
  • Modules/mediasession/MediaSession.idl:
  • WebCore.xcodeproj/project.pbxproj: Add JSMediaSessionCustom.cpp.
  • bindings/js/JSMediaSessionCustom.cpp: Added.

(WebCore::constructJSMediaSession):

  • dom/Document.cpp:

(WebCore::Document::defaultMediaSession): Call MediaSession::create.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::session): Compare session with document.defaultMediaSession, not

its kind.

(WebCore::HTMLMediaElement::setSession): Update comments.

LayoutTests:

  • media/session/content-interruptions.html: Restructure to make less timing dependent. Minor cleanup.
  • media/session/session-creation-expected.txt:
  • media/session/session-creation.html: Test default MediaSession constructor argument.
10:23 AM Changeset in webkit [189030] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

Simple line layout: Use float types wherever possible to match line tree.
https://bugs.webkit.org/show_bug.cgi?id=148444

Reviewed by Antti Koivisto.

To match inline tree output, we should try to match the data types as far as precision goes.

This patch also fixes the confusing mismatch between Run::baseline().x() and Run::rect().x().
They are both supposed to return the left edge of the run. However Run::rect().x() returns a rounded
LayoutUnit of the logical left, while Run::baseline().x() returns the correct logical left.
With this patch

  1. baseline position does not include logical left anymore.
  2. Run::rect().x() does not round the logical left coordinate anymore.
  • rendering/RenderTreeAsText.cpp:

(WebCore::writeSimpleLine):

  • rendering/SimpleLineLayoutFunctions.cpp:

(WebCore::SimpleLineLayout::paintFlow):
(WebCore::SimpleLineLayout::collectFlowOverflow):
(WebCore::SimpleLineLayout::collectAbsoluteRects):
(WebCore::SimpleLineLayout::showLineLayoutForFlow):

  • rendering/SimpleLineLayoutResolver.cpp:

(WebCore::SimpleLineLayout::linePosition):
(WebCore::SimpleLineLayout::lineSize):
(WebCore::SimpleLineLayout::RunResolver::Run::rect):
(WebCore::SimpleLineLayout::LineResolver::Iterator::operator*):
(WebCore::SimpleLineLayout::baselinePosition): Deleted.
(WebCore::SimpleLineLayout::RunResolver::Run::baseline): Deleted.

  • rendering/SimpleLineLayoutResolver.h:

(WebCore::SimpleLineLayout::RunResolver::Run::baselinePosition):
(WebCore::SimpleLineLayout::RunResolver::Run::computeBaselinePosition):

10:09 AM Changeset in webkit [189029] by bshafiei@apple.com
  • 7 edits in branches/safari-601.1.46-branch

Merged r189024. rdar://problem/22426737

9:59 AM Changeset in webkit [189028] by ap@apple.com
  • 2 edits in trunk/LayoutTests

Add an expectation for another momentum scrolling test that became flaky.

  • platform/mac-wk2/TestExpectations:
9:33 AM Changeset in webkit [189027] by Csaba Osztrogonác
  • 2 edits in trunk/PerformanceTests

[EFL] REGRESSION(r188793): It made 200 layout tests and Bindings/event-target-wrapper.html performance test fail
https://bugs.webkit.org/show_bug.cgi?id=148470

Unreviewed gardening, skip the hanging test to make the performance bot work.

  • Skipped:
8:48 AM Changeset in webkit [189026] by Alan Bujtas
  • 5 edits
    1 copy
    1 add in trunk

Subpixel positioned iframe's repaint area calculation problem.
https://bugs.webkit.org/show_bug.cgi?id=148422

When the repaint rect position is floored for iframes, we need
to expand the size so that it still covers the content.

Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/repaint/content-inside-subpixel-positioned-iframe.html

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::computeRectForRepaint):

LayoutTests:

  • fast/repaint/content-inside-subpixel-positioned-iframe-expected.txt: Added.
  • fast/repaint/content-inside-subpixel-positioned-iframe.html: Copied from LayoutTests/fast/repaint/hidpi-content-inside-iframe-leaves-trails.html.
  • fast/repaint/hidpi-content-inside-iframe-leaves-trails.html:
8:35 AM Changeset in webkit [189025] by Michael Catanzaro
  • 2 edits in trunk/Tools

[GTK] Unreviewed, install-dependencies should install geoclue2 on Fedora

geoclue-devel is for obsolete geoclue. Install geoclue2-devel instead.

  • gtk/install-dependencies:
8:15 AM Changeset in webkit [189024] by enrica@apple.com
  • 7 edits in trunk

Add some new emoji with modifiers and new sequence.
https://bugs.webkit.org/show_bug.cgi?id=148202
rdar://problem/21849857

Reviewed by Sam Weinig.

Source/WebCore:

Adding support for some new emoji with modifiers and
one new emoji sequence.

  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::characterRangeCodePath):

  • platform/text/CharacterProperties.h:

(WebCore::isEmojiGroupCandidate):
(WebCore::isEmojiModifier):

  • platform/text/TextBreakIterator.cpp:

(WebCore::cursorMovementIterator):

LayoutTests:

Updated test to reflect the changes.

  • editing/deleting/delete-emoji-expected.txt:
  • editing/deleting/delete-emoji.html:
7:46 AM Changeset in webkit [189023] by dino@apple.com
  • 8 edits
    3 adds in trunk

Initial infrastructure of media controls testing
https://bugs.webkit.org/show_bug.cgi?id=148426
<rdar://problem/22417286>

Reviewed by Eric Carlson.

Source/WebCore:

Expose a JS API from Internals that allows a layout test
to ask the controls instance what it thinks it is
doing.

Test: media/controls/basic.html

  • Modules/mediacontrols/mediaControlsApple.js:

(Controller.prototype.getCurrentControlsStatus): New method. Currently
returns a simple JSON string.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::getCurrentMediaControlsStatus): Call into
the controls instance.

  • html/HTMLMediaElement.h:
  • testing/Internals.cpp:

(WebCore::Internals::getCurrentMediaControlsStatusForElement): Link
between the Internals API and the HTMLMediaElement.

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

LayoutTests:

Very simple test that calls into the status object
of the media controls instance.

  • media/controls/basic-expected.txt: Added.
  • media/controls/basic.html: Added.
7:26 AM Changeset in webkit [189022] by Wenson Hsieh
  • 1 edit
    2 adds in trunk/LayoutTests

Add a Layout test for r188991
https://bugs.webkit.org/show_bug.cgi?id=148507

Reviewed by Tim Horton.

Tests that stopping an animation early and closing the window does
not crash the process. This is a retrospective test added for
https://bugs.webkit.org/show_bug.cgi?id=148442, "Fix crash due to
animationDidEnd called on deallocated RemoteLayerTreeHost."

  • animations/crash-on-removing-animation.html: Added.
  • animations/crash-on-removing-animation-expected.txt: Added.
3:26 AM Changeset in webkit [189021] by Carlos Garcia Campos
  • 2 edits in trunk/Tools

Unreviewed. Mark WTF_WordLock.ContendedShortSection as slow too.

  • Scripts/run-gtk-tests:

(TestRunner):

2:59 AM Changeset in webkit [189020] by Gyuyoung Kim
  • 2 edits
    2 moves in trunk/Source/WebCore

[EFL] Move RenderThemeEfl.cpp|h from WebCore/platform/efl to WebCore/rendering
https://bugs.webkit.org/show_bug.cgi?id=148511

Reviewed by Csaba Osztrogonác.

To be aligned with other ports, move RenderThemeEfl.cpp|h to WebCore/rendering.

Additionally this patch fixes style errors in RenderThemeEfl.cpp

  • PlatformEfl.cmake:
  • rendering/RenderThemeEfl.cpp: Renamed from Source/WebCore/platform/efl/RenderThemeEfl.cpp.

(WebCore::toEdjeGroup):
(WebCore::setSourceGroupForEdjeObject):
(WebCore::RenderThemeEfl::adjustSizeConstraints):
(WebCore::isFormElementTooLargeToDisplay):
(WebCore::RenderThemeEfl::ThemePartCacheEntry::create):
(WebCore::RenderThemeEfl::ThemePartCacheEntry::reuse):
(WebCore::RenderThemeEfl::getThemePartFromCache):
(WebCore::RenderThemeEfl::clearThemePartCache):
(WebCore::RenderThemeEfl::applyEdjeStateFromForm):
(WebCore::RenderThemeEfl::applyEdjeRTLState):
(WebCore::RenderThemeEfl::isControlStyled):
(WebCore::RenderThemeEfl::paintThemePart):
(WebCore::RenderThemeEfl::create):
(WebCore::RenderTheme::themeForPage):
(WebCore::applyColorCallback):
(WebCore::fillColorsFromEdjeClass):
(WebCore::RenderThemeEfl::setColorFromThemeClass):
(WebCore::RenderThemeEfl::setThemePath):
(WebCore::RenderThemeEfl::themePath):
(WebCore::RenderThemeEfl::loadTheme):
(WebCore::RenderThemeEfl::applyPartDescriptionFallback):
(WebCore::RenderThemeEfl::applyPartDescription):
(WebCore::RenderThemeEfl::applyPartDescriptionsFrom):
(WebCore::RenderThemeEfl::RenderThemeEfl):
(WebCore::RenderThemeEfl::~RenderThemeEfl):
(WebCore::supportsFocus):
(WebCore::RenderThemeEfl::supportsFocusRing):
(WebCore::RenderThemeEfl::controlSupportsTints):
(WebCore::RenderThemeEfl::baselinePosition):
(WebCore::RenderThemeEfl::platformActiveSelectionBackgroundColor):
(WebCore::RenderThemeEfl::platformInactiveSelectionBackgroundColor):
(WebCore::RenderThemeEfl::platformActiveSelectionForegroundColor):
(WebCore::RenderThemeEfl::platformInactiveSelectionForegroundColor):
(WebCore::RenderThemeEfl::platformFocusRingColor):
(WebCore::RenderThemeEfl::supportsSelectionForegroundColors):
(WebCore::RenderThemeEfl::paintSliderTrack):
(WebCore::RenderThemeEfl::adjustSliderTrackStyle):
(WebCore::RenderThemeEfl::adjustSliderThumbStyle):
(WebCore::RenderThemeEfl::adjustSliderThumbSize):
(WebCore::RenderThemeEfl::sliderTickSize):
(WebCore::RenderThemeEfl::sliderTickOffsetFromTrackCenter):
(WebCore::RenderThemeEfl::sliderTickSnappingThreshold):
(WebCore::RenderThemeEfl::supportsDataListUI):
(WebCore::RenderThemeEfl::paintSliderThumb):
(WebCore::RenderThemeEfl::adjustCheckboxStyle):
(WebCore::RenderThemeEfl::paintCheckbox):
(WebCore::RenderThemeEfl::adjustRadioStyle):
(WebCore::RenderThemeEfl::paintRadio):
(WebCore::RenderThemeEfl::adjustButtonStyle):
(WebCore::RenderThemeEfl::paintButton):
(WebCore::RenderThemeEfl::adjustMenuListStyle):
(WebCore::RenderThemeEfl::paintMenuList):
(WebCore::RenderThemeEfl::adjustMenuListButtonStyle):
(WebCore::RenderThemeEfl::paintMenuListButtonDecorations):
(WebCore::RenderThemeEfl::adjustTextFieldStyle):
(WebCore::RenderThemeEfl::paintTextField):
(WebCore::RenderThemeEfl::adjustTextAreaStyle):
(WebCore::RenderThemeEfl::paintTextArea):
(WebCore::RenderThemeEfl::adjustSearchFieldResultsButtonStyle):
(WebCore::RenderThemeEfl::paintSearchFieldResultsButton):
(WebCore::RenderThemeEfl::adjustSearchFieldResultsDecorationPartStyle):
(WebCore::RenderThemeEfl::paintSearchFieldResultsDecorationPart):
(WebCore::RenderThemeEfl::adjustSearchFieldCancelButtonStyle):
(WebCore::RenderThemeEfl::paintSearchFieldCancelButton):
(WebCore::RenderThemeEfl::adjustSearchFieldStyle):
(WebCore::RenderThemeEfl::paintSearchField):
(WebCore::RenderThemeEfl::adjustInnerSpinButtonStyle):
(WebCore::RenderThemeEfl::paintInnerSpinButton):
(WebCore::RenderThemeEfl::setDefaultFontSize):
(WebCore::RenderThemeEfl::updateCachedSystemFontDescription):
(WebCore::RenderThemeEfl::adjustProgressBarStyle):
(WebCore::RenderThemeEfl::animationRepeatIntervalForProgressBar):
(WebCore::RenderThemeEfl::animationDurationForProgressBar):
(WebCore::RenderThemeEfl::paintProgressBar):
(WebCore::RenderThemeEfl::mediaControlsStyleSheet):
(WebCore::RenderThemeEfl::mediaControlsScript):

  • rendering/RenderThemeEfl.h: Renamed from Source/WebCore/platform/efl/RenderThemeEfl.h.
2:46 AM Changeset in webkit [189019] by Csaba Osztrogonác
  • 2 edits in trunk/LayoutTests

[EFL] REGRESSION: userscripts tests crash
https://bugs.webkit.org/show_bug.cgi?id=148519

Unreviewed gardening, skip failing tests to make the bot work again.

  • platform/efl/TestExpectations:
2:41 AM Changeset in webkit [189018] by Csaba Osztrogonác
  • 2 edits in trunk/LayoutTests

[EFL] REGRESSION: fullscreen tests fail with timeout
https://bugs.webkit.org/show_bug.cgi?id=148518

Unreviewed gardening, skip failing tests to make the bot work again.

  • platform/efl/TestExpectations:
2:37 AM Changeset in webkit [189017] by Carlos Garcia Campos
  • 3 edits in trunk/Tools

Fix GTK+ WTR crashes in initializeMainRunLoop()

Rubber-stamped by Žan Doberšek.

Initialize threading and main thread before
RunLoop::initializeMainRunLoop(), since the GLib implementation of
the RunLoop uses isMainThread() to decide whether to create a new
GMainContext or use the default one. Also use RunLoop::run() and
::stop() instead of gtk_main/quit.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::initialize):

  • WebKitTestRunner/gtk/TestControllerGtk.cpp:

(WTR::TestController::notifyDone):
(WTR::TestController::platformRunUntil):

2:16 AM Changeset in webkit [189016] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebKit2

[EFL] REGRESSION: 50+ layout tests crash
https://bugs.webkit.org/show_bug.cgi?id=148471

Reviewed by Gyuyoung Kim.

  • UIProcess/CoordinatedGraphics/WebView.cpp:

(WebKit::WebView::WebView):

12:59 AM Changeset in webkit [189015] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebKit2

Fix WKMutableArray creations in WKUserMediaPermissionRequest
https://bugs.webkit.org/show_bug.cgi?id=148489

Reviewed by Carlos Garcia Campos.

Call WKMutableArrayCreate() to create the WKMutableArray objects.
WKMutableArrayRef type is a pointer, so calling 'WKMutableArrayRef()'
just sets a null value to the variable that is then returned and
queried for size in WebKitTestRunner's TestController, resulting
in a crash.

  • UIProcess/API/C/WKUserMediaPermissionRequest.cpp:

(WKUserMediaPermissionRequestDeviceNamesVideo):
(WKUserMediaPermissionRequestDeviceNamesAudio):

12:23 AM Changeset in webkit [189014] by fpizlo@apple.com
  • 2 edits in trunk/Tools

Unreviewed, further shorten a test that times out because it's very long
running.

I've locally run these tests on repeat for 24 hours and found no genuine
failures, like deadlocks. So, the timeouts are probably because the test
machine is slow and debug is slow. We should just run this test for fewer
iterations.

  • TestWebKitAPI/Tests/WTF/Lock.cpp:

(TestWebKitAPI::TEST):

12:16 AM Changeset in webkit [189013] by fpizlo@apple.com
  • 14 edits in trunk/Source/JavaScriptCore

Node::origin should always be set, and the dead zone due to SSA Phis can just use exitOK=false
https://bugs.webkit.org/show_bug.cgi?id=148462

Reviewed by Saam Barati.

The need to label nodes that absolutely cannot exit was first observed when we introduced SSA form.
We indicated this by not setting the CodeOrigin.

But just recently (http://trac.webkit.org/changeset/188979), we added a more comprehensive "exitOK"
bit in NodeOrigin. After that change, there were two ways of indicating that you cannot exit:
!exitOK and an unset NodeOrigin. An unset NodeOrigin implied !exitOK.

Now, this change is about removing the old way so that we only use !exitOK. From now on, all nodes
must have their NodeOrigin set, and the IR validation will check this. This means that I could
remove various pieces of cruft for dealing with unset NodeOrigins, but I did have to add some new
cruft to ensure that all nodes we create have a NodeOrigin.

This change simplifies our IR by having a simpler rule about when NodeOrigin is set: it's always
set.

  • dfg/DFGBasicBlock.cpp:

(JSC::DFG::BasicBlock::isInBlock):
(JSC::DFG::BasicBlock::removePredecessor):
(JSC::DFG::BasicBlock::firstOriginNode): Deleted.
(JSC::DFG::BasicBlock::firstOrigin): Deleted.

  • dfg/DFGBasicBlock.h:

(JSC::DFG::BasicBlock::begin):
(JSC::DFG::BasicBlock::end):
(JSC::DFG::BasicBlock::numSuccessors):
(JSC::DFG::BasicBlock::successor):

  • dfg/DFGCombinedLiveness.cpp:

(JSC::DFG::liveNodesAtHead):

  • dfg/DFGConstantHoistingPhase.cpp:
  • dfg/DFGCriticalEdgeBreakingPhase.cpp:

(JSC::DFG::CriticalEdgeBreakingPhase::breakCriticalEdge):

  • dfg/DFGForAllKills.h:

(JSC::DFG::forAllKilledOperands):

  • dfg/DFGIntegerRangeOptimizationPhase.cpp:
  • dfg/DFGLoopPreHeaderCreationPhase.cpp:

(JSC::DFG::createPreHeader):
(JSC::DFG::LoopPreHeaderCreationPhase::run):

  • dfg/DFGOSRAvailabilityAnalysisPhase.cpp:

(JSC::DFG::OSRAvailabilityAnalysisPhase::run):

  • dfg/DFGObjectAllocationSinkingPhase.cpp:
  • dfg/DFGPutStackSinkingPhase.cpp:
  • dfg/DFGSSAConversionPhase.cpp:

(JSC::DFG::SSAConversionPhase::run):

  • dfg/DFGValidate.cpp:

(JSC::DFG::Validate::validate):
(JSC::DFG::Validate::validateSSA):

Aug 26, 2015:

10:54 PM Changeset in webkit [189012] by saambarati1@gmail.com
  • 2 edits
    1 add in trunk/Source/JavaScriptCore

MarkedBlock::allocateBlock will have the wrong allocation size when (sizeof(MarkedBlock) + bytes) is divisible by WTF::pageSize()
https://bugs.webkit.org/show_bug.cgi?id=148500

Reviewed by Mark Lam.

Consider the following scenario:

  • On OS X, WTF::pageSize() is 4*1024 bytes.
  • JSEnvironmentRecord::allocationSizeForScopeSize(6621) == 53000
  • sizeof(MarkedBlock) == 248
  • (248 + 53000) is a multiple of 4*1024.
  • (248 + 53000)/(4*1024) == 13

We will allocate a chunk of memory of size 53248 bytes that looks like this:
0 248 256 53248 53256
[Marked Block | 8 bytes | payload ...... ] 8 bytes |


Our Environment record starts here.


Our last JSValue in the environment record will go from byte 53248 to 53256. But, we don't own this memory.

We need to ensure that we round up sizeof(MarkedBlock) to an
atomSize boundary. We need to do this because the first atom
inside the MarkedBlock will start at the rounded up multiple
of atomSize past MarkedBlock. If we end up with an allocation
that is perfectly aligned to the page size, then we will be short
8 bytes (in the current implementation where atomSize is 16 bytes,
and MarkedBlock is 248 bytes).

  • heap/MarkedAllocator.cpp:

(JSC::MarkedAllocator::allocateBlock):

  • tests/stress/heap-allocator-allocates-incorrect-size-for-activation.js: Added.

(use):
(makeFunction):

9:40 PM Changeset in webkit [189011] by Nikita Vasilyev
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: [Regression] [Mavericks]: Undocked Web Inspector toolbar is two different colors and has extra space
https://bugs.webkit.org/show_bug.cgi?id=148510

Make body element transparent and remove extra padding above the toolbar only for OS X Mavericks.

Reviewed by Timothy Hatcher.

  • UserInterface/Base/Main.js:

(WebInspector.contentLoaded):

  • UserInterface/Views/Main.css:

(body:not(.mavericks)):
(body): Deleted.

  • UserInterface/Views/Toolbar.css:

(body:not(.mavericks) .toolbar):
(body.window-inactive:not(.mavericks) .toolbar):
(body.mac-platform:not(.docked, .mavericks) .toolbar):
(.toolbar): Deleted.
(body.window-inactive .toolbar): Deleted.
(body.mac-platform:not(.docked) .toolbar): Deleted.

8:32 PM Changeset in webkit [189010] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit2

[ThreadedCompositor] Use WTF::Condition together with WTF::Lock
https://bugs.webkit.org/show_bug.cgi?id=148493

Patch by Emanuele Aina <Emanuele Aina> on 2015-08-26
Reviewed by Gyuyoung Kim.

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:

Replace ThreadCondition::signal() calls with Condition::notifyOne().

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:

Replace ThreadCondition usage with Condition.

7:49 PM Changeset in webkit [189009] by mark.lam@apple.com
  • 22 edits
    1 add in trunk

watchdog m_didFire state erroneously retained.
https://bugs.webkit.org/show_bug.cgi?id=131082

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

The watchdog can fire for 2 reasons:

  1. an external controlling entity (i.e. another thread) has scheduled termination of the script thread via watchdog::terminateSoon().
  2. the allowed CPU time has expired.

For case 1, we're doing away with the m_didFire flag. Watchdog::terminateSoon()
will set the timer deadlines and m_timeLimit to 0, and m_timerDidFire to true.
This will get the script thread to check Watchdog::didFire() and terminate
execution.

Note: the watchdog only guarantees that script execution will terminate as soon
as possible due to a time limit of 0. Once we've exited the VM, the client of the
VM is responsible from keeping a flag to prevent new script execution.

In a race condition, if terminateSoon() is called just after execution has gotten
past the client's reentry check and the client is in the process of re-entering,
the worst that can happen is that we will schedule the watchdog timer to fire
after a period of 0. This will terminate script execution quickly, and thereafter
the client's check should be able to prevent further entry into the VM.

The correctness (i.e. has no race condition) of this type of termination relies
on the termination state being sticky. Once the script thread is terminated this
way, the VM will continue to terminate scripts quickly until the client sets the
time limit to a non-zero value (or clears it which sets the time limit to
noTimeLimit).

For case 2, the watchdog does not alter m_timeLimit. If the CPU deadline has
been reached, the script thread will terminate execution and exit the VM.

If the client of the VM starts new script execution, the watchdog will allow
execution for the specified m_timeLimit. In this case, since m_timeLimit is not
0, the script gets a fresh allowance of CPU time to execute. Hence, terminations
due to watchdog time outs are no longer sticky.

  • API/JSContextRef.cpp:

(JSContextGroupSetExecutionTimeLimit):
(JSContextGroupClearExecutionTimeLimit):

  • API/tests/ExecutionTimeLimitTest.cpp:
  • Add test scenarios to verify that the watchdog is automatically reset by the VM upon throwing the TerminatedExecutionException.

(testResetAfterTimeout):
(testExecutionTimeLimit):

(JSC::DFG::ByteCodeParser::parseBlock):

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::execute):
(JSC::Interpreter::executeCall):
(JSC::Interpreter::executeConstruct):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_loop_hint):
(JSC::JIT::emitSlow_op_loop_hint):

  • jit/JITOperations.cpp:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • runtime/VM.cpp:

(JSC::VM::VM):
(JSC::VM::ensureWatchdog):

  • runtime/VM.h:
  • runtime/VMInlines.h: Added.

(JSC::VM::shouldTriggerTermination):

  • runtime/Watchdog.cpp:

(JSC::Watchdog::Watchdog):
(JSC::Watchdog::setTimeLimit):
(JSC::Watchdog::terminateSoon):
(JSC::Watchdog::didFireSlow):
(JSC::Watchdog::hasTimeLimit):
(JSC::Watchdog::enteredVM):
(JSC::Watchdog::exitedVM):
(JSC::Watchdog::startTimer):
(JSC::Watchdog::stopTimer):
(JSC::Watchdog::hasStartedTimer): Deleted.
(JSC::Watchdog::fire): Deleted.

  • runtime/Watchdog.h:

(JSC::Watchdog::didFire):
(JSC::Watchdog::timerDidFireAddress):

Source/WebCore:

No new tests. The new code is covered by the JSC API tests and an existing test:
fast/workers/worker-terminate-forever.html

  • bindings/js/JSEventListener.cpp:

(WebCore::JSEventListener::handleEvent):

  • bindings/js/WorkerScriptController.cpp:

(WebCore::WorkerScriptController::WorkerScriptController):

  • Always create a watchdog for the Web Worker's VM. We need this in order to support Worker.terminate().

(WebCore::WorkerScriptController::evaluate):
(WebCore::WorkerScriptController::scheduleExecutionTermination):
(WebCore::WorkerScriptController::isTerminatingExecution):
(WebCore::WorkerScriptController::forbidExecution):
(WebCore::WorkerScriptController::isExecutionTerminating): Deleted.

  • bindings/js/WorkerScriptController.h:

LayoutTests:

  • fast/workers/worker-terminate-forever-expected.txt:
  • fast/workers/worker-terminate-forever.html:
  • Updated to check if the worker actually did terminate.
6:28 PM Changeset in webkit [189008] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Uncaught exception in CSS Completion - TypeError: undefined is not an object (evaluating 'this._values[middleIndex].startsWith')
https://bugs.webkit.org/show_bug.cgi?id=148508

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-08-26
Reviewed by Timothy Hatcher.

  • UserInterface/Models/CSSCompletions.js:

(WebInspector.CSSCompletions):
Add a comment explaining that the constructor may be called with
a list of strings or a list of objects from the protocol. Add
a fast path for when this is constructed with a list of strings.

6:10 PM Changeset in webkit [189007] by ryuan.choi@navercorp.com
  • 2 edits in trunk/Tools

Unreviewed build fix attempt on EFL

  • WebKitTestRunner/PlatformEfl.cmake:
6:09 PM Changeset in webkit [189006] by Matt Baker
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Rendering Frames timeline pie chart should use SVG instead of 2D canvas
https://bugs.webkit.org/show_bug.cgi?id=148457

Reviewed by Timothy Hatcher.

  • UserInterface/Views/ChartDetailsSectionRow.css:

(.details-section > .content > .group > .row.chart > .chart-content > svg > path.hidden):
(.details-section > .content > .group > .row.chart > .chart-content > svg > path.chart-segment):
(.details-section > .content > .group > .row.chart > .chart-content > svg > path.empty-chart):
New styles for SVG chart elements.

  • UserInterface/Views/ChartDetailsSectionRow.js:

(WebInspector.ChartDetailsSectionRow):
Calculate radii and create SVG chart elements.
(WebInspector.ChartDetailsSectionRow.prototype.clearItems):
Remove chart segment path elements.
(WebInspector.ChartDetailsSectionRow.prototype._needsLayout):
(WebInspector.ChartDetailsSectionRow.prototype._updateLayout.createSegmentPathData):
Helper function that creates path data for a single pie chart segment.
(WebInspector.ChartDetailsSectionRow.prototype._updateLayout):
Creates path elements as needed, and updates path data for for non-zero data points.
(WebInspector.ChartDetailsSectionRow.prototype.set innerLabel): Deleted.
(WebInspector.ChartDetailsSectionRow.prototype.set innerRadius): Deleted.
These properties are now set during construction.
(WebInspector.ChartDetailsSectionRow.prototype.updateLayout): Deleted.
Renamed to _updateLayout.

  • UserInterface/Views/TimelineSidebarPanel.js:

Chart size and inner radius passed to chart constructor.

5:20 PM Changeset in webkit [189005] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

[Cocoa] PerformanceTest Layout/RegionsShapes.html is failing
https://bugs.webkit.org/show_bug.cgi?id=148464

Reviewed by Andy Estes.

The test is failing because Core Text emits a warning message when you use CTFontCreateWithName()
and it cannot find the name you provide. However, this is exactly the situation we are creating
(by attempting to auto-activate a font if we could not otherwise find it). The fix is to simply
not use that API function in favor of using CTFontCreateWithFontDescriptor(), which does not emit
a warning message..

No new tests because there is no behavior change.

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::autoActivateFont):
(WebCore::FontCache::createFontPlatformData):

5:04 PM Changeset in webkit [189004] by aestes@apple.com
  • 2 edits in trunk/LayoutTests

REGRESSION (r188987): imported/mozilla/svg/filters/feConvolveMatrix-1.svg fails
https://bugs.webkit.org/show_bug.cgi?id=148497

4:52 PM Changeset in webkit [189003] by achristensen@apple.com
  • 2 edits in trunk/Tools

Build fix after r188982

  • MiniBrowser/win/CMakeLists.txt:

Find .rc files in correct directory.

4:48 PM Changeset in webkit [189002] by Joseph Pecoraro
  • 17 edits
    11 adds in trunk

Web Inspector: Implement tracking of active stylesheets in the frontend
https://bugs.webkit.org/show_bug.cgi?id=105828

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

  • inspector/protocol/CSS.json:

Add new events for when a StyleSheet is added or removed.

Source/WebCore:

Tests: inspector/css/stylesheet-events-basic.html

inspector/css/stylesheet-events-imports.html
inspector/css/stylesheet-events-inspector-stylesheet.html

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::documentDetachedImpl):
(WebCore::InspectorInstrumentation::activeStyleSheetsUpdatedImpl):

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::documentDetached):
(WebCore::InspectorInstrumentation::activeStyleSheetsUpdated):
New hooks for when a document is detached or a document's style sheets are updated.

  • dom/Document.cpp:

(WebCore::Document::prepareForDestruction):
Inform the inspector so the CSSAgent can remove document related data.

  • dom/DocumentStyleSheetCollection.h:
  • dom/DocumentStyleSheetCollection.cpp:

(WebCore::DocumentStyleSheetCollection::updateActiveStyleSheets):
Inform the inspector so the CSSAgent can push stylesheet related events.

(WebCore::DocumentStyleSheetCollection::activeStyleSheetsForInspector): Added.
CSSStyleSheets for the inspector include non-disabled author stylesheets
even if they are empty.

  • inspector/InspectorCSSAgent.h:
  • inspector/InspectorCSSAgent.cpp:

(WebCore::InspectorCSSAgent::reset):
(WebCore::InspectorCSSAgent::documentDetached):
Handling for the new list of known document to CSSStyleSheets map.

(WebCore::InspectorCSSAgent::enable):
When the CSS domain is enabled, tell the frontend about known stylesheets.

(WebCore::InspectorCSSAgent::activeStyleSheetsUpdated):
(WebCore::InspectorCSSAgent::setActiveStyleSheetsForDocument):
Diff the old list of known stylesheets to the new list of stylesheets
for an individual document. Then send appropriate added/removed events.

(WebCore::InspectorCSSAgent::collectAllStyleSheets):
(WebCore::InspectorCSSAgent::collectAllDocumentStyleSheets):
(WebCore::InspectorCSSAgent::collectStyleSheets):
Collect stylesheets recursively. A stylesheet may link to other stylesheets
through @import statements.

(WebCore::InspectorCSSAgent::getAllStyleSheets):
Use the new methods, this command should go away as it will no longer be useful.

(WebCore::InspectorCSSAgent::unbindStyleSheet):
(WebCore::InspectorCSSAgent::bindStyleSheet):
Create an InspectorStyleSheet from a CSSStyleSheet and add to the appropriate lists.
Likewise, unbinding will remove from the appropriate lists.

(WebCore::InspectorCSSAgent::viaInspectorStyleSheet):
(WebCore::InspectorCSSAgent::detectOrigin):
When creating the inspector stylesheet, which is a <style> element,
it will push a StyleSheetAdded event. In the process of binding this
new stylesheet use the m_creatingViaInspectorStyleSheet to add it to
out list of Inspector Stylesheets.

Source/WebInspectorUI:

  • UserInterface/Models/CSSStyleSheet.js:

(WebInspector.CSSStyleSheet):
(WebInspector.CSSStyleSheet.prototype.get origin):
(WebInspector.CSSStyleSheet.prototype.updateInfo):
Add a new origin attribute that has been sent from the backend for a while.

  • UserInterface/Controllers/CSSStyleManager.js:

(WebInspector.CSSStyleManager.prototype.styleSheetAdded):
(WebInspector.CSSStyleManager.prototype.styleSheetRemoved):
Handle the new events by managing the new CSSStyleSheets.

(WebInspector.CSSStyleManager):
(WebInspector.CSSStyleManager.prototype._mainResourceDidChange):
Reset the legacy fetching flag. Fetching is only needed for legacy backends.

(WebInspector.CSSStyleManager.prototype._fetchInfoForAllStyleSheets):
Include the new origin property in the legacy updateInfo path.

  • UserInterface/Protocol/CSSObserver.js:

(WebInspector.CSSObserver.prototype.styleSheetAdded):
(WebInspector.CSSObserver.prototype.styleSheetRemoved):
Forward to the manager.

  • UserInterface/Views/CSSStyleDetailsSidebarPanel.js:

(WebInspector.CSSStyleDetailsSidebarPanel):
Refresh the sidebar when stylesheets are added / removed, as that
may affect the style of the select element.

LayoutTests:

  • inspector/css/resources/import-level-1.css: Added.
  • inspector/css/resources/import-level-2.css: Added.
  • inspector/css/resources/stylesheet-events-subframe.html: Added.
  • inspector/css/stylesheet-events-basic-expected.txt: Added.
  • inspector/css/stylesheet-events-basic.html: Added.
  • inspector/css/stylesheet-events-imports-expected.txt: Added.
  • inspector/css/stylesheet-events-imports.html: Added.
  • inspector/css/stylesheet-events-inspector-stylesheet-expected.txt: Added.
  • inspector/css/stylesheet-events-inspector-stylesheet.html: Added.
  • inspector/css/stylesheet-events-multiple-documents-expected.txt: Added.
  • inspector/css/stylesheet-events-multiple-documents.html: Added.

Tests for different ways that StyleSheets can be added / removed.

4:36 PM Changeset in webkit [189001] by aestes@apple.com
  • 10 edits
    4 adds in branches/safari-601.1-branch

Merge r188988.

2015-08-26 Andy Estes <aestes@apple.com>

Crash when following a Google search link to Twitter with Limit Adult Content enabled
https://bugs.webkit.org/show_bug.cgi?id=147651

Rubber-stamped by Brady Eidson.

Tools:

Taught TestRunner how to decide the navigation policy after a delay.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp: (WTR::InjectedBundlePage::decidePolicyForNavigationAction):
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp: (WTR::TestRunner::setShouldDecideNavigationPolicyAfterDelay):
  • WebKitTestRunner/InjectedBundle/TestRunner.h: (WTR::TestRunner::shouldDecideNavigationPolicyAfterDelay):
  • WebKitTestRunner/TestController.cpp: (WTR::TestController::initialize): (WTR::TestController::resetStateToConsistentValues): (WTR::TestController::decidePolicyForNavigationAction):
  • WebKitTestRunner/TestController.h: (WTR::TestController::setShouldDecideNavigationPolicyAfterDelay):
  • WebKitTestRunner/TestInvocation.cpp: (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):

LayoutTests:

Added a layout test.

  • http/tests/contentfiltering/load-substitute-data-from-appcache-expected.txt: Added.
  • http/tests/contentfiltering/load-substitute-data-from-appcache.html: Added.
  • http/tests/contentfiltering/resources/appcache.html: Added.
  • http/tests/contentfiltering/resources/appcache.manifest: Added.
  • platform/mac-wk1/TestExpectations:
4:21 PM Changeset in webkit [189000] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

Add comment to LocaleToScriptMappingDefault.cpp
<rdar://problem/22407296>

Unreviewed.

We currently map lang="zh" to USCRIPT_SIMPLIFIED_HAN, which is incorrect.
Instead, we should consult with an external source, such as the user's
language preferences.

  • platform/text/LocaleToScriptMappingDefault.cpp:
3:24 PM Changeset in webkit [188999] by bshafiei@apple.com
  • 2 edits in branches/safari-601.1.46-branch/Source/WebKit2

Merged r188933. rdar://problem/22441181

3:23 PM Changeset in webkit [188998] by bshafiei@apple.com
  • 2 edits in branches/safari-601.1.46-branch/Source/WebKit2

Merged r188924. rdar://problem/22441181

3:22 PM Changeset in webkit [188997] by bshafiei@apple.com
  • 9 edits
    1 delete in branches/safari-601.1.46-branch

Merged r188311. rdar://problem/22410806

3:20 PM Changeset in webkit [188996] by bshafiei@apple.com
  • 3 edits
    2 copies in branches/safari-601.1.46-branch

Merged r188271. rdar://problem/22425724

3:15 PM Changeset in webkit [188995] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

Correct build after r188982.

  • WebKit.vcxproj/WebKit.sln:
3:09 PM Changeset in webkit [188994] by Chris Dumez
  • 35 edits
    5 copies
    4 adds in trunk/Source

Distinguish Web IDL callback interfaces from Web IDL callback functions
https://bugs.webkit.org/show_bug.cgi?id=148434

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

Add isNull() convenience method on PropertyName.

  • runtime/PropertyName.h:

(JSC::PropertyName::isNull):

Source/WebCore:

Distinguish Web IDL callback interfaces [1] from Web IDL callback
functions [2].

One Web-exposed difference is that when using a callback interface,
the user can pass either a function / callable object or a non-callable
object that has a method with the same name as the callback interface
operation:
https://heycam.github.io/webidl/#es-user-objects

When using a callback function, the user needs to pass a function /
callable object:
https://heycam.github.io/webidl/#es-callback-function

This patch adds a new [Callback=FunctionOnly] IDL extended attribute to
indicate that a callback interface should be function-only (i.e. a callback
function in the latest Web IDL specification). Without this IDL extended
attribute, the callback interface will be treated as a regular callback
interface. This will be needed for Bug 148415, as NodeFilter should be
an actual callback interface.

Note that longer term, we should really drop the old-style
[Callback=FunctionOnly] extendd attribute and use actual IDL callback
functions as per the latest Web IDL specification. However, I did not
do this in this patch to minimize patch size.

This patch adds Callback=FunctionOnly] IDL extended attribute to all
our pre-existing callback interfaces so that there is no behavior
change.

[1] https://heycam.github.io/webidl/#dfn-callback-interface
[2] https://heycam.github.io/webidl/#idl-callback-functions

  • Modules/geolocation/PositionCallback.idl:
  • Modules/geolocation/PositionErrorCallback.idl:
  • Modules/mediastream/MediaStreamTrackSourcesCallback.idl:
  • Modules/mediastream/NavigatorUserMediaErrorCallback.idl:
  • Modules/mediastream/NavigatorUserMediaSuccessCallback.idl:
  • Modules/mediastream/RTCPeerConnectionErrorCallback.idl:
  • Modules/mediastream/RTCSessionDescriptionCallback.idl:
  • Modules/mediastream/RTCStatsCallback.idl:
  • Modules/notifications/NotificationPermissionCallback.idl:
  • Modules/quota/StorageErrorCallback.idl:
  • Modules/quota/StorageQuotaCallback.idl:
  • Modules/quota/StorageUsageCallback.idl:
  • Modules/webaudio/AudioBufferCallback.idl:
  • Modules/webdatabase/DatabaseCallback.idl:
  • Modules/webdatabase/SQLStatementCallback.idl:
  • Modules/webdatabase/SQLStatementErrorCallback.idl:
  • Modules/webdatabase/SQLTransactionCallback.idl:
  • Modules/webdatabase/SQLTransactionErrorCallback.idl:
  • bindings/js/JSCallbackData.cpp:

(WebCore::JSCallbackData::invokeCallback):

  • bindings/js/JSCallbackData.h:
  • bindings/js/JSCustomSQLStatementErrorCallback.cpp:

(WebCore::JSSQLStatementErrorCallback::handleEvent):

  • bindings/scripts/CodeGenerator.pm:

(trim):
(IsFunctionOnlyCallbackInterface):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateParametersCheckExpression):
(GenerateParametersCheck):
(GenerateCallbackImplementation):

  • bindings/scripts/IDLAttributes.txt:
  • bindings/scripts/test/GObject/WebKitDOMTestCallbackFunction.cpp: Added.

(WebKit::kit):
(WebKit::core):
(WebKit::wrapTestCallbackFunction):
(webkit_dom_test_callback_function_finalize):
(webkit_dom_test_callback_function_constructor):
(webkit_dom_test_callback_function_class_init):
(webkit_dom_test_callback_function_init):
(webkit_dom_test_callback_function_callback_with_no_param):
(webkit_dom_test_callback_function_callback_with_array_param):
(webkit_dom_test_callback_function_callback_with_serialized_script_value_param):
(webkit_dom_test_callback_function_callback_with_non_bool_return_type):
(webkit_dom_test_callback_function_callback_with_string_list):
(webkit_dom_test_callback_function_callback_with_boolean):
(webkit_dom_test_callback_function_callback_requires_this_to_pass):

  • bindings/scripts/test/GObject/WebKitDOMTestCallbackFunction.h: Added.
  • bindings/scripts/test/GObject/WebKitDOMTestCallbackFunctionPrivate.h: Copied from Source/WebCore/css/MediaQueryListListener.idl.
  • bindings/scripts/test/JS/JSTestCallback.cpp:

(WebCore::JSTestCallback::callbackWithNoParam):
(WebCore::JSTestCallback::callbackWithArrayParam):
(WebCore::JSTestCallback::callbackWithSerializedScriptValueParam):
(WebCore::JSTestCallback::callbackWithStringList):
(WebCore::JSTestCallback::callbackWithBoolean):
(WebCore::JSTestCallback::callbackRequiresThisToPass):

  • bindings/scripts/test/JS/JSTestCallbackFunction.cpp: Copied from Source/WebCore/bindings/scripts/test/JS/JSTestCallback.cpp.

(WebCore::JSTestCallbackFunction::JSTestCallbackFunction):
(WebCore::JSTestCallbackFunction::~JSTestCallbackFunction):
(WebCore::JSTestCallbackFunction::callbackWithNoParam):
(WebCore::JSTestCallbackFunction::callbackWithArrayParam):
(WebCore::JSTestCallbackFunction::callbackWithSerializedScriptValueParam):
(WebCore::JSTestCallbackFunction::callbackWithStringList):
(WebCore::JSTestCallbackFunction::callbackWithBoolean):
(WebCore::JSTestCallbackFunction::callbackRequiresThisToPass):

  • bindings/scripts/test/JS/JSTestCallbackFunction.h: Added.

(WebCore::JSTestCallbackFunction::create):
(WebCore::JSTestCallbackFunction::scriptExecutionContext):

  • bindings/scripts/test/JS/JSTestObj.cpp:

(WebCore::JSTestObjConstructor::constructJSTestObj):
(WebCore::JSTestObjConstructor::finishCreation):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackAndOptionalArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackFunctionArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackFunctionArg):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackFunctionAndOptionalArg):
(WebCore::jsTestObjConstructorFunctionStaticMethodWithCallbackAndOptionalArg):
(WebCore::jsTestObjConstructorFunctionStaticMethodWithCallbackArg):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod5):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod2): Deleted.
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod10): Deleted.

  • bindings/scripts/test/JS/JSTestTypedefs.cpp:

(WebCore::JSTestTypedefsConstructor::constructJSTestTypedefs):

  • bindings/scripts/test/ObjC/DOMTestCallbackFunction.h: Copied from Source/WebCore/html/VoidCallback.idl.
  • bindings/scripts/test/ObjC/DOMTestCallbackFunction.mm: Added.

(-[DOMTestCallbackFunction dealloc]):
(-[DOMTestCallbackFunction finalize]):
(-[DOMTestCallbackFunction callbackWithNoParam]):
(-[DOMTestCallbackFunction callbackWithArrayParam:]):
(-[DOMTestCallbackFunction callbackWithSerializedScriptValueParam:strArg:]):
(-[DOMTestCallbackFunction callbackWithNonBoolReturnType:]):
(-[DOMTestCallbackFunction customCallback:class6Param:]):
(-[DOMTestCallbackFunction callbackWithStringList:]):
(-[DOMTestCallbackFunction callbackWithBoolean:]):
(-[DOMTestCallbackFunction callbackRequiresThisToPass:testNodeParam:]):
(core):
(kit):

  • bindings/scripts/test/ObjC/DOMTestCallbackFunctionInternal.h: Copied from Source/WebCore/html/VoidCallback.idl.
  • bindings/scripts/test/TestCallbackFunction.idl: Copied from Source/WebCore/Modules/webdatabase/DatabaseCallback.idl.
  • bindings/scripts/test/TestObj.idl:
  • css/MediaQueryListListener.idl:
  • dom/RequestAnimationFrameCallback.idl:
  • dom/StringCallback.idl:
  • html/VoidCallback.idl:
3:07 PM Changeset in webkit [188993] by Joseph Pecoraro
  • 40 edits
    2 deletes in trunk/Source/WebInspectorUI

Web Inspector: Drop iOS 6 Legacy Remote Inspector Support
https://bugs.webkit.org/show_bug.cgi?id=148456

Reviewed by Timothy Hatcher.

  • UserInterface/Base/Main.js:

(WebInspector.loaded):
(WebInspector._updateReloadToolbarButton):
(WebInspector._updateDownloadToolbarButton):
(WebInspector.canArchiveMainFrame):

  • UserInterface/Controllers/CSSStyleManager.js:

(WebInspector.CSSStyleManager.prototype._frameURLMapKey):
(WebInspector.CSSStyleManager.prototype._lookupStyleSheet.styleSheetsFetched):
(WebInspector.CSSStyleManager._updateResourceContent.fetchedStyleSheetContent):
(WebInspector.CSSStyleManager.prototype._clearStyleSheetsForResource): Deleted.

  • UserInterface/Controllers/DOMTreeManager.js:

(WebInspector.DOMTreeManager.prototype.highlightSelector):

  • UserInterface/Controllers/DebuggerManager.js:

(WebInspector.DebuggerManager.prototype._setBreakpoint):

  • UserInterface/Controllers/JavaScriptLogViewController.js:
  • UserInterface/Controllers/RuntimeManager.js:

(WebInspector.RuntimeManager):
(WebInspector.RuntimeManager.prototype.evaluateInInspectedWindow):

  • UserInterface/Controllers/SourceMapManager.js:

(WebInspector.SourceMapManager.prototype._loadAndParseSourceMap):

  • UserInterface/Controllers/StorageManager.js:

(WebInspector.StorageManager):
(WebInspector.StorageManager.prototype._addDOMStorageIfNeeded):
(WebInspector.StorageManager.prototype.domStorageWasUpdated): Deleted.
(WebInspector.StorageManager.prototype._domStorageForIdentifier): Deleted.
(WebInspector.StorageManager.prototype._extraDomainsActivated): Deleted.

  • UserInterface/Controllers/TimelineManager.js:

(WebInspector.TimelineManager.prototype._processRecord):

  • UserInterface/Models/Breakpoint.js:

(WebInspector.Breakpoint.prototype._editBreakpointPopoverContentElement):

  • UserInterface/Models/CSSCompletions.js:

(WebInspector.CSSCompletions):
(WebInspector.CSSCompletions.requestCSSCompletions):

  • UserInterface/Models/CSSKeywordCompletions.js:

(WebInspector.CSSKeywordCompletions.addCustomCompletions): Deleted.

  • UserInterface/Models/CSSProperty.js:

(WebInspector.CSSProperty):
(WebInspector.CSSProperty.prototype.update):

  • UserInterface/Models/CSSRule.js:

(WebInspector.CSSRule.prototype.get matchedSelectors): Deleted.
(WebInspector.CSSRule.prototype.get matchedSelectorText): Deleted.

  • UserInterface/Models/DOMNodeStyles.js:

(WebInspector.DOMNodeStyles.prototype.refresh.parseRuleMatchArrayPayload):
(WebInspector.DOMNodeStyles.prototype.refresh.fetchedMatchedStyles):
(WebInspector.DOMNodeStyles.prototype.changeRule.changeText):
(WebInspector.DOMNodeStyles.prototype.changeStyleText):
(WebInspector.DOMNodeStyles.prototype._parseStylePropertyPayload):
(WebInspector.DOMNodeStyles.prototype._parseRulePayload):
(WebInspector.DOMNodeStyles.prototype.changeStyleText.attributeChanged): Deleted.
(WebInspector.DOMNodeStyles.prototype.changeStyleText.fetchedStyleSheetContent.contentDidChange): Deleted.
(WebInspector.DOMNodeStyles.prototype.changeStyleText.fetchedStyleSheetContent): Deleted.
(WebInspector.DOMNodeStyles.prototype._parseSourceRangePayload): Deleted.
(WebInspector.DOMNodeStyles.prototype._parseSelectorListPayload): Deleted.

  • UserInterface/Models/DOMStorageObject.js:
  • UserInterface/Models/DOMTree.js:

(WebInspector.DOMTree.prototype.requestRootDOMNode):
(WebInspector.DOMTree.prototype._requestRootDOMNode):

  • UserInterface/Models/DatabaseObject.js:

(WebInspector.DatabaseObject.prototype.executeSQL.queryCallback):
(WebInspector.DatabaseObject.prototype.executeSQL):
(WebInspector.DatabaseObject):
(WebInspector.DatabaseObject.prototype.executeSQL.callback): Deleted.

  • UserInterface/Models/ExecutionContext.js:

(WebInspector.ExecutionContext.supported): Deleted.

  • UserInterface/Models/IssueMessage.js:

(WebInspector.IssueMessage): Deleted.

  • UserInterface/Models/LayoutTimelineRecord.js:

(WebInspector.LayoutTimelineRecord):
(WebInspector.LayoutTimelineRecord.prototype.get width):
(WebInspector.LayoutTimelineRecord.prototype.get height):
(WebInspector.LayoutTimelineRecord.prototype.get area):
(WebInspector.LayoutTimelineRecord.prototype.get x): Deleted.
(WebInspector.LayoutTimelineRecord.prototype.get y): Deleted.
(WebInspector.LayoutTimelineRecord.prototype.get rect): Deleted.

  • UserInterface/Models/ProfileNode.js:
  • UserInterface/Models/Resource.js:

(WebInspector.Resource.prototype.associateWithScript):

  • UserInterface/Models/ScriptTimelineRecord.js:

(WebInspector.ScriptTimelineRecord.prototype._initializeProfileFromPayload.profileNodeFromPayload):

  • UserInterface/Models/SourceMapResource.js:

(WebInspector.SourceMapResource.prototype.requestContentFromBackend):

  • UserInterface/Models/TextRange.js:

(WebInspector.TextRange.prototype.resolveLinesAndColumns.countNewLineCharacters): Deleted.
(WebInspector.TextRange.prototype.resolveLinesAndColumns): Deleted.

  • UserInterface/Models/TimelineRecording.js:
  • UserInterface/Protocol/ConsoleObserver.js:

(WebInspector.ConsoleObserver.prototype.messageAdded): Deleted.

  • UserInterface/Protocol/DOMStorageObserver.js:

(WebInspector.DOMStorageObserver.prototype.addDOMStorage): Deleted.
(WebInspector.DOMStorageObserver.prototype.updateDOMStorage): Deleted.

  • UserInterface/Protocol/DatabaseObserver.js:

(WebInspector.DatabaseObserver.prototype.sqlTransactionSucceeded): Deleted.
(WebInspector.DatabaseObserver.prototype.sqlTransactionFailed): Deleted.
(WebInspector.DatabaseObserver): Deleted.

  • UserInterface/Protocol/Legacy/6.0/InspectorBackendCommands.js: Removed.
  • UserInterface/Views/CookieStorageContentView.js:

(WebInspector.CookieStorageContentView.prototype._deleteCallback):
(WebInspector.CookieStorageContentView):

  • UserInterface/Views/DOMTreeContentView.js:

(WebInspector.DOMTreeContentView.prototype._updateCompositingBordersButtonToMatchPageSettings): Deleted.

  • UserInterface/Views/EventListenerSectionGroup.js:

(WebInspector.EventListenerSectionGroup.prototype._functionTextOrLink):
(WebInspector.EventListenerSectionGroup):

  • UserInterface/Views/LayoutTimelineView.js:

(WebInspector.LayoutTimelineView.prototype._showHighlightForRecord):

  • UserInterface/Views/QuickConsole.js:

(WebInspector.QuickConsole):
(WebInspector.QuickConsole.prototype._createExecutionContextPathComponentFromFrame):
(WebInspector.QuickConsole.prototype._frameAdded): Deleted.
(WebInspector.QuickConsole.prototype._frameRemoved): Deleted.
(WebInspector.QuickConsole.prototype._frameMainResourceChanged): Deleted.

  • UserInterface/Views/ScriptTimelineDataGridNode.js:

(WebInspector.ScriptTimelineDataGridNode.prototype.get data):

  • UserInterface/Views/SourceCodeTextEditor.js:

(WebInspector.SourceCodeTextEditor.prototype._makeTypeTokenAnnotator):
(WebInspector.SourceCodeTextEditor.prototype._makeBasicBlockAnnotator):

  • Versions/Inspector-iOS-6.0.json: Removed.
  • WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
  • WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:
2:59 PM Changeset in webkit [188992] by ryuan.choi@navercorp.com
  • 2 edits in trunk/Tools

[EFL] Bump cairo version to 1.14.2
https://bugs.webkit.org/show_bug.cgi?id=148474

Reviewed by Csaba Osztrogonác.

  • efl/jhbuild.modules:
2:54 PM Changeset in webkit [188991] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit2

Fix crash due to animationDidEnd called on deallocated RemoteLayerTreeHost
https://bugs.webkit.org/show_bug.cgi?id=148442
<rdar://problem/21609257>

Reviewed by Tim Horton.

A PlatformCAAnimationRemote's backpointer to a deallocated RemoteLayerTreeHost is not
invalidated when its host removes its reference to it.

  • UIProcess/mac/RemoteLayerTreeHost.mm:

(WebKit::RemoteLayerTreeHost::layerWillBeRemoved): Invalidate a backpointer from the

PlatformCAAnimationRemotes to the RemoteLayerTreeHost.

2:51 PM Changeset in webkit [188990] by Beth Dakin
  • 7 edits in trunk/Source

REGRESSION: Safari navigates after a cancelled force click
https://bugs.webkit.org/show_bug.cgi?id=148491
-and corresponding-
rdar://problem/22394323

Reviewed by Tim Horton.

Source/WebCore:

This regression was introduced on El Capitan because AppKit sends ‘cancel’ to
gesture recognizer BEFORE it sends the mouseUp. So the ImmediateActionStage needs
to track whether a cancel happened after updates or without any updates since they
signify different things.

Don’t perform default behaviors when the stage is ActionCancelledAfterUpdate.

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleMouseReleaseEvent):

New possible stages, and new getter for the current stage.

  • page/EventHandler.h:

(WebCore::EventHandler::immediateActionStage):

Source/WebKit/mac:

Use the current stage to determine which type of cancel this is.

  • WebView/WebImmediateActionController.mm:

(-[WebImmediateActionController immediateActionRecognizerDidCancelAnimation:]):

Source/WebKit2:

Use the current stage to determine which type of cancel this is.

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::immediateActionDidCancel):

2:37 PM Changeset in webkit [188989] by andersca@apple.com
  • 2 edits in trunk/Source/WebCore

Fix failing tests.

Add fallback code for the case when iterations is 0.

  • platform/graphics/filters/FEConvolveMatrix.cpp:

(WebCore::FEConvolveMatrix::platformApplySoftware):

2:15 PM Changeset in webkit [188988] by aestes@apple.com
  • 10 edits
    4 adds in trunk

Crash when following a Google search link to Twitter with Limit Adult Content enabled
https://bugs.webkit.org/show_bug.cgi?id=147651

Rubber-stamped by Brady Eidson.

Tools:

Taught TestRunner how to decide the navigation policy after a delay.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:

(WTR::InjectedBundlePage::decidePolicyForNavigationAction):

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setShouldDecideNavigationPolicyAfterDelay):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:

(WTR::TestRunner::shouldDecideNavigationPolicyAfterDelay):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::initialize):
(WTR::TestController::resetStateToConsistentValues):
(WTR::TestController::decidePolicyForNavigationAction):

  • WebKitTestRunner/TestController.h:

(WTR::TestController::setShouldDecideNavigationPolicyAfterDelay):

  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):

LayoutTests:

Added a layout test.

  • http/tests/contentfiltering/load-substitute-data-from-appcache-expected.txt: Added.
  • http/tests/contentfiltering/load-substitute-data-from-appcache.html: Added.
  • http/tests/contentfiltering/resources/appcache.html: Added.
  • http/tests/contentfiltering/resources/appcache.manifest: Added.
  • platform/mac-wk1/TestExpectations:
1:44 PM Changeset in webkit [188987] by andersca@apple.com
  • 3 edits in trunk/Source/WebCore

Use WorkQueue::concurrentApply in FEConvolveMatrix
https://bugs.webkit.org/show_bug.cgi?id=148490

Reviewed by Tim Horton.

Using WorkQueue::concurrentApply lets us simplify the code a lot, and measurements show
no difference in performance. The striding has been slightly tweaked to make more sense
(we no longer divide up the remainder across some of the iterations, instead we just process
it separately last).

  • platform/graphics/filters/FEConvolveMatrix.cpp:

(WebCore::FEConvolveMatrix::platformApplySoftware):
(WebCore::FEConvolveMatrix::setInteriorPixelsWorker): Deleted.

  • platform/graphics/filters/FEConvolveMatrix.h:
1:43 PM Changeset in webkit [188986] by msaboff@apple.com
  • 5 edits in branches/jsc-tailcall/Source/JavaScriptCore

jsc-tailcall: Integrate FTL OSR entry / exit and exceptions handling of callee save registers with other tiers
https://bugs.webkit.org/show_bug.cgi?id=148099

Reviewed by Basile Clement.

Turned off register preservation thunks for outgoing calls from FTL generated code.
Handled callee saves registers for DFG to FTL OSR entry.
Fxed the FTL OSR exit compiler to restore the callee saves from an FTL function to
either the baseline call frame for callee saves the baseline handles or directly to
the callee save register itself.

  • bytecode/CallLinkInfo.h:

(JSC::CallLinkInfo::setUpCallFromFTL):

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • ftl/FTLCompile.cpp:

(JSC::FTL::fixFunctionBasedOnStackMaps):

  • ftl/FTLOSRExitCompiler.cpp:

(JSC::FTL::compileStub):

1:38 PM Changeset in webkit [188985] by andersca@apple.com
  • 2 edits in trunk/Source/WTF

Fix build.

  • wtf/WorkQueue.cpp:
1:29 PM Changeset in webkit [188984] by Brent Fulgham
  • 2 edits in trunk/Websites/webkit.org

Update Windows tool install instructions.

  • building/tools.html:
1:29 PM Changeset in webkit [188983] by eric.carlson@apple.com
  • 6 edits in trunk/Source

Media Session: make MediaSessionMetadata a class
https://bugs.webkit.org/show_bug.cgi?id=148486

Reviewed by Jer Noble.

Source/WebCore:

No new tests, no observable changes.

  • Modules/mediasession/MediaSessionMetadata.h: Make it a class.
  • page/ChromeClient.h: struct MediaSessionMetadata -> class MediaSessionMetadata.

Source/WebKit2:

  • Shared/WebCoreArgumentCoders.h: struct MediaSessionMetadata -> class MediaSessionMetadata.
  • UIProcess/WebPageProxy.h: Ditto.
1:22 PM Changeset in webkit [188982] by Brent Fulgham
  • 10 edits
    29 copies
    1 move
    29 deletes in trunk/Tools

[Win] Rename 'WinLauncher' to 'MiniBrowser'
https://bugs.webkit.org/show_bug.cgi?id=148485

Reviewed by Alex Christensen

Move the WinLauncher project and source files to a subdirectory
of MiniBrowser. Globally change WinLauncher -> MiniBrowser in the
source code and project files.

  • MiniBrowser/MiniBrowser.vcxproj: Copied from WinLauncher/WinLauncher.vcxproj.
  • MiniBrowser/MiniBrowser.vcxproj/MiniBrowser.ico: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncher.ico.
  • MiniBrowser/MiniBrowser.vcxproj/MiniBrowser.rc: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncher.rc.
  • MiniBrowser/MiniBrowser.vcxproj/MiniBrowser.vcxproj: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj.
  • MiniBrowser/MiniBrowser.vcxproj/MiniBrowser.vcxproj.filters: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj.filters.
  • MiniBrowser/MiniBrowser.vcxproj/MiniBrowserCF.props: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherCF.props.
  • MiniBrowser/MiniBrowser.vcxproj/MiniBrowserCFLite.props: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherCFLite.props.
  • MiniBrowser/MiniBrowser.vcxproj/MiniBrowserCommon.props: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherCommon.props.
  • MiniBrowser/MiniBrowser.vcxproj/MiniBrowserDebug.props: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherDebug.props.
  • MiniBrowser/MiniBrowser.vcxproj/MiniBrowserLib.rc: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherLib.rc.
  • MiniBrowser/MiniBrowser.vcxproj/MiniBrowserLib.vcxproj: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj.
  • MiniBrowser/MiniBrowser.vcxproj/MiniBrowserLib.vcxproj.filters: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj.filters.
  • MiniBrowser/MiniBrowser.vcxproj/MiniBrowserLibCommon.props: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherLibCommon.props.
  • MiniBrowser/MiniBrowser.vcxproj/MiniBrowserLibDebug.props: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherLibDebug.props.
  • MiniBrowser/MiniBrowser.vcxproj/MiniBrowserLibPostBuild.cmd: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherLibPostBuild.cmd.
  • MiniBrowser/MiniBrowser.vcxproj/MiniBrowserLibPreBuild.cmd: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherLibPreBuild.cmd.
  • MiniBrowser/MiniBrowser.vcxproj/MiniBrowserLibProduction.props: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherLibProduction.props.
  • MiniBrowser/MiniBrowser.vcxproj/MiniBrowserLibRelease.props: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherLibRelease.props.
  • MiniBrowser/MiniBrowser.vcxproj/MiniBrowserLibResource.h: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherLibResource.h.
  • MiniBrowser/MiniBrowser.vcxproj/MiniBrowserPostBuild.cmd: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherPostBuild.cmd.
  • MiniBrowser/MiniBrowser.vcxproj/MiniBrowserPreBuild.cmd: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherPreBuild.cmd.
  • MiniBrowser/MiniBrowser.vcxproj/MiniBrowserProduction.props: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherProduction.props.
  • MiniBrowser/MiniBrowser.vcxproj/MiniBrowserRelease.props: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherRelease.props.
  • MiniBrowser/MiniBrowser.vcxproj/MiniBrowserResource.h: Copied from WinLauncher/WinLauncher.vcxproj/WinLauncherResource.h.
  • MiniBrowser/MiniBrowser.vcxproj/WinLauncher.ico: Removed.
  • MiniBrowser/MiniBrowser.vcxproj/WinLauncher.rc: Removed.
  • MiniBrowser/MiniBrowser.vcxproj/WinLauncher.vcxproj: Removed.
  • MiniBrowser/MiniBrowser.vcxproj/WinLauncher.vcxproj.filters: Removed.
  • MiniBrowser/MiniBrowser.vcxproj/WinLauncherCF.props: Removed.
  • MiniBrowser/MiniBrowser.vcxproj/WinLauncherCFLite.props: Removed.
  • MiniBrowser/MiniBrowser.vcxproj/WinLauncherCommon.props: Removed.
  • MiniBrowser/MiniBrowser.vcxproj/WinLauncherDebug.props: Removed.
  • MiniBrowser/MiniBrowser.vcxproj/WinLauncherLib.rc: Removed.
  • MiniBrowser/MiniBrowser.vcxproj/WinLauncherLib.vcxproj: Removed.
  • MiniBrowser/MiniBrowser.vcxproj/WinLauncherLib.vcxproj.filters: Removed.
  • MiniBrowser/MiniBrowser.vcxproj/WinLauncherLibCommon.props: Removed.
  • MiniBrowser/MiniBrowser.vcxproj/WinLauncherLibDebug.props: Removed.
  • MiniBrowser/MiniBrowser.vcxproj/WinLauncherLibPostBuild.cmd: Removed.
  • MiniBrowser/MiniBrowser.vcxproj/WinLauncherLibPreBuild.cmd: Removed.
  • MiniBrowser/MiniBrowser.vcxproj/WinLauncherLibProduction.props: Removed.
  • MiniBrowser/MiniBrowser.vcxproj/WinLauncherLibRelease.props: Removed.
  • MiniBrowser/MiniBrowser.vcxproj/WinLauncherLibResource.h: Removed.
  • MiniBrowser/MiniBrowser.vcxproj/WinLauncherPostBuild.cmd: Removed.
  • MiniBrowser/MiniBrowser.vcxproj/WinLauncherPreBuild.cmd: Removed.
  • MiniBrowser/MiniBrowser.vcxproj/WinLauncherProduction.props: Removed.
  • MiniBrowser/MiniBrowser.vcxproj/WinLauncherRelease.props: Removed.
  • MiniBrowser/MiniBrowser.vcxproj/WinLauncherResource.h: Removed.
  • MiniBrowser/win: Copied from WinLauncher.
  • MiniBrowser/win/Common.cpp:
  • MiniBrowser/win/MiniBrowser.cpp: Copied from WinLauncher/WinLauncher.cpp.
  • MiniBrowser/win/MiniBrowser.h: Copied from WinLauncher/WinLauncher.h.
  • MiniBrowser/win/MiniBrowserReplace.h: Copied from WinLauncher/WinLauncherReplace.h.
  • MiniBrowser/win/MiniBrowserWebHost.cpp: Copied from WinLauncher/WinLauncherWebHost.cpp.
  • MiniBrowser/win/MiniBrowserWebHost.h: Copied from WinLauncher/WinLauncherWebHost.h.
  • MiniBrowser/win/PageLoadTestClient.cpp:
  • MiniBrowser/win/PageLoadTestClient.h:
  • MiniBrowser/win/ResourceLoadDelegate.cpp:
  • MiniBrowser/win/ResourceLoadDelegate.h:
  • MiniBrowser/win/WinLauncher.cpp: Removed.
  • MiniBrowser/win/WinLauncher.h: Removed.
  • MiniBrowser/win/WinLauncher.vcxproj: Removed.
  • MiniBrowser/win/WinLauncher.vcxproj/WinLauncher.ico: Removed.
  • MiniBrowser/win/WinLauncher.vcxproj/WinLauncher.rc: Removed.
  • MiniBrowser/win/WinLauncher.vcxproj/WinLauncher.vcxproj: Removed.
  • MiniBrowser/win/WinLauncher.vcxproj/WinLauncher.vcxproj.filters: Removed.
  • MiniBrowser/win/WinLauncher.vcxproj/WinLauncherCF.props: Removed.
  • MiniBrowser/win/WinLauncher.vcxproj/WinLauncherCFLite.props: Removed.
  • MiniBrowser/win/WinLauncher.vcxproj/WinLauncherCommon.props: Removed.
  • MiniBrowser/win/WinLauncher.vcxproj/WinLauncherDebug.props: Removed.
  • MiniBrowser/win/WinLauncher.vcxproj/WinLauncherLib.rc: Removed.
  • MiniBrowser/win/WinLauncher.vcxproj/WinLauncherLib.vcxproj: Removed.
  • MiniBrowser/win/WinLauncher.vcxproj/WinLauncherLib.vcxproj.filters: Removed.
  • MiniBrowser/win/WinLauncher.vcxproj/WinLauncherLibCommon.props: Removed.
  • MiniBrowser/win/WinLauncher.vcxproj/WinLauncherLibDebug.props: Removed.
  • MiniBrowser/win/WinLauncher.vcxproj/WinLauncherLibPostBuild.cmd: Removed.
  • MiniBrowser/win/WinLauncher.vcxproj/WinLauncherLibPreBuild.cmd: Removed.
  • MiniBrowser/win/WinLauncher.vcxproj/WinLauncherLibProduction.props: Removed.
  • MiniBrowser/win/WinLauncher.vcxproj/WinLauncherLibRelease.props: Removed.
  • MiniBrowser/win/WinLauncher.vcxproj/WinLauncherLibResource.h: Removed.
  • MiniBrowser/win/WinLauncher.vcxproj/WinLauncherPostBuild.cmd: Removed.
  • MiniBrowser/win/WinLauncher.vcxproj/WinLauncherPreBuild.cmd: Removed.
  • MiniBrowser/win/WinLauncher.vcxproj/WinLauncherProduction.props: Removed.
  • MiniBrowser/win/WinLauncher.vcxproj/WinLauncherRelease.props: Removed.
  • MiniBrowser/win/WinLauncher.vcxproj/WinLauncherResource.h: Removed.
  • MiniBrowser/win/WinLauncher.vcxproj/small.ico: Removed.
  • MiniBrowser/win/WinLauncherReplace.h: Removed.
  • MiniBrowser/win/WinLauncherWebHost.cpp: Removed.
  • MiniBrowser/win/WinLauncherWebHost.h: Removed.
  • MiniBrowser/win/WinMain.cpp:
  • WinLauncher: Removed.
  • WinLauncher/AccessibilityDelegate.cpp: Removed.
  • WinLauncher/AccessibilityDelegate.h: Removed.
  • WinLauncher/CMakeLists.txt: Removed.
  • WinLauncher/Common.cpp: Removed.
  • WinLauncher/DOMDefaultImpl.cpp: Removed.
  • WinLauncher/DOMDefaultImpl.h: Removed.
  • WinLauncher/PageLoadTestClient.cpp: Removed.
  • WinLauncher/PageLoadTestClient.h: Removed.
  • WinLauncher/PrintWebUIDelegate.cpp: Removed.
  • WinLauncher/PrintWebUIDelegate.h: Removed.
  • WinLauncher/ResourceLoadDelegate.cpp: Removed.
  • WinLauncher/ResourceLoadDelegate.h: Removed.
  • WinLauncher/WebDownloadDelegate.cpp: Removed.
  • WinLauncher/WebDownloadDelegate.h: Removed.
  • WinLauncher/WinLauncher.cpp: Removed.
  • WinLauncher/WinLauncher.h: Removed.
  • WinLauncher/WinLauncher.vcxproj: Removed.
  • WinLauncher/WinLauncher.vcxproj/WinLauncher.ico: Removed.
  • WinLauncher/WinLauncher.vcxproj/WinLauncher.rc: Removed.
  • WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj: Removed.
  • WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj.filters: Removed.
  • WinLauncher/WinLauncher.vcxproj/WinLauncherCF.props: Removed.
  • WinLauncher/WinLauncher.vcxproj/WinLauncherCFLite.props: Removed.
  • WinLauncher/WinLauncher.vcxproj/WinLauncherCommon.props: Removed.
  • WinLauncher/WinLauncher.vcxproj/WinLauncherDebug.props: Removed.
  • WinLauncher/WinLauncher.vcxproj/WinLauncherLib.rc: Removed.
  • WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj: Removed.
  • WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj.filters: Removed.
  • WinLauncher/WinLauncher.vcxproj/WinLauncherLibCommon.props: Removed.
  • WinLauncher/WinLauncher.vcxproj/WinLauncherLibDebug.props: Removed.
  • WinLauncher/WinLauncher.vcxproj/WinLauncherLibPostBuild.cmd: Removed.
  • WinLauncher/WinLauncher.vcxproj/WinLauncherLibPreBuild.cmd: Removed.
  • WinLauncher/WinLauncher.vcxproj/WinLauncherLibProduction.props: Removed.
  • WinLauncher/WinLauncher.vcxproj/WinLauncherLibRelease.props: Removed.
  • WinLauncher/WinLauncher.vcxproj/WinLauncherLibResource.h: Removed.
  • WinLauncher/WinLauncher.vcxproj/WinLauncherPostBuild.cmd: Removed.
  • WinLauncher/WinLauncher.vcxproj/WinLauncherPreBuild.cmd: Removed.
  • WinLauncher/WinLauncher.vcxproj/WinLauncherProduction.props: Removed.
  • WinLauncher/WinLauncher.vcxproj/WinLauncherRelease.props: Removed.
  • WinLauncher/WinLauncher.vcxproj/WinLauncherResource.h: Removed.
  • WinLauncher/WinLauncher.vcxproj/small.ico: Removed.
  • WinLauncher/WinLauncherReplace.h: Removed.
  • WinLauncher/WinLauncherWebHost.cpp: Removed.
  • WinLauncher/WinLauncherWebHost.h: Removed.
  • WinLauncher/WinMain.cpp: Removed.
  • WinLauncher/resource.h: Removed.
  • WinLauncher/stdafx.cpp: Removed.
  • WinLauncher/stdafx.h: Removed.
  • win/AssembleBuildLogs/AssembleLogs.cmd:
12:44 PM Changeset in webkit [188981] by andersca@apple.com
  • 5 edits in trunk/Source/WTF

Add and implement WorkQueue::concurrentApply
https://bugs.webkit.org/show_bug.cgi?id=148488

Reviewed by Geoffrey Garen.

WorkQueue::concurrentApply is modeled after dispatch_apply, and on Cocoa it uses dispatch_apply directly.
For other ports there's a generic concurrentApply implemented using our threading primitives.

  • wtf/NeverDestroyed.h:

(WTF::LazyNeverDestroyed::operator->):

  • wtf/WorkQueue.cpp:

(WTF::WorkQueue::concurrentApply):

  • wtf/WorkQueue.h:
  • wtf/cocoa/WorkQueueCocoa.cpp:

(WTF::WorkQueue::concurrentApply):

12:30 PM Changeset in webkit [188980] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebKit2

Unreviewed.

Fix the crashes in GTK+'s WebKitTestRunner by setting the process pool
on the API::PageConfiguration object in webkitWebViewBaseCreate().

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseCreate):

12:24 PM Changeset in webkit [188979] by fpizlo@apple.com
  • 45 edits
    3 adds in trunk/Source

Node::origin should be able to tell you if it's OK to exit
https://bugs.webkit.org/show_bug.cgi?id=145204

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

This is a major change to DFG IR, that makes it easier to reason about where nodes with
speculations can be soundly hoisted.

A program in DFG IR is a sequence of operations that compute the values of SSA variables,
perform effects on the heap or stack, and perform updates to the OSR exit state. Because
effects and OSR exit updates are interleaved, there are points in execution where exiting
simply won't work. For example, we may have some bytecode operation:

[ 24] op_foo loc42 does something, and puts a value in loc42.

that gets compiled down to a sequence of DFG IR nodes like:

a: Foo(W:Heap, R:World, bc#24) writes heap, reads world - i.e. an observable effect.
b: MovHint(@a, loc42, bc#24)
c: SetLocal(Check:Int32:@a, loc42, bc#24, exit: bc#26)

Note that we can OSR exit at @a because we haven't yet performed any effects for bc#24 yet and
we have performed all effects for prior bytecode operations. That's what the origin.forExit
being set to "bc#24" guarantees. So, an OSR exit at @a would transfer execution to bc#24 and
this would not be observable. But at @b, if we try to exit to bc#24 as indicated by forExit, we
would end up causing the side effect of bc#24 to execute a second time. This would be
observable, so we cannot do it. And we cannot exit to the next instruction - bc#26 - either,
because @b is responsible for updating the OSR state to indicate that the result of @a should
be put into loc42. It's not until we get to @c that we can exit again.

This is a confusing, but useful, property of DFG IR. It's useful because it allows us to use IR
to spell out how we would have affected the bytecode state, and we use this to implement hard
things like object allocation elimination, where we use IR instructions to indicate what object
allocation and mutation operations we would have performed, and which bytecode variables would
have pointed to those objects. So long as IR allows us to describe how OSR exit state is
updated, there will be points in execution where that state is invalid - especially if the IR
to update exit state is separate from the IR to perform actual effects.

But this property is super confusing! It's difficult to explain that somehow magically, @b is a
bad place to put OSR exits, and that magically we will only have OSR exits at @a. Of course, it
all kind of makes sense - we insert OSR exit checks in phases that *know* where it's safe to
exit - but it's just too opaque. This also gets in the way of more sophisticated
transformations. For example, LICM barely works - it magically knows that loop pre-headers are
good places to exit from, but it has no way of determining if that is actually true. It would
be odd to introduce a restriction that anytime some block qualifies as a pre-header according
to our loop calculator, it must end with a terminal at which it is OK to exit. So, our choices
are to either leave LICM in a magical state and exercise extreme caution when introducing new
optimizations that hoist checks, or to do something to make the "can I exit here" property more
explicit in IR.

We have already, in a separate change, added a NodeOrigin::exitOK property, though it didn't do
anything yet. This change puts exitOK to work, and makes it an integral part of IR. The key
intuition behind this change is that if we know which nodes clobber exit state - i.e. after the
node, it's no longer possible to OSR exit until the exit state is fixed up - then we can figure
out where it's fine to exit. This change mostly adopts the already implicit rule that it's
always safe to exit right at the boundary of exit origins (in between two nodes where
origin.forExit differs), and adds a new node, called ExitOK, which is a kind of declaration
that exit state is good again. When making this change, I struggled with the question of
whether to make origin.exitOK be explicit, or something that we can compute with an analysis.
Of course if we are armed with a clobbersExitState(Node*) function, we can find the places
where it's fine to exit. But this kind of computation could get quite sophisticated if the
nodes belonging to an exit origin are lowered to a control-flow construct. It would also be
harder to see what the original intent was, if we found an error: is the bug that we shouldn't
be clobbering exit state, or that we shouldn't be exiting? This change opts to make exitOK be
an explicit property of IR, so that DFG IR validation will reject any program where exitOK is
true after a node that clobbersExitState(), or if exitOK is true after a node has exitOK set to
false - unless the latter node has a different exit origin or is an ExitOK node. It will also
reject any program where a node mayExit() with !exitOK.

It turns out that this revealed a lot of sloppiness and what almost looked like an outright
bug: the callee property of an inline closure call frame was being set up "as if" by the
callee's op_enter. If we did hoist a check per the old rule - to the boundary of exit origins -
then we would crash because the callee is unknown. It also revealed that LICM could *almost*
get hosed by having a pre-header where there are effects before the jump. I wasn't able to
construct a test case that would crash trunk, but I also couldn't quite prove why such a
program couldn't be constructed. I did fix the issue in loop pre-header creation, and the
validater does catch the issue because of its exitOK assertions.

This doesn't yet add any other safeguards to LICM - that phase still expects that pre-headers
are in place and that they were created in such a way that their terminal origins have exitOK.
It also still keeps the old way of saying "not OK to exit" - having a clear NodeOrigin. In a
later patch I'll remove that and use !exitOK everywhere. Note that I did consider using clear
NodeOrigins to signify that it's not OK to exit, but that would make DFGForAllKills a lot more
expensive - it would have to sometimes search to find nearby forExit origins if the current
node doesn't have it set - and that's a critical phase for DFG compilation performance.
Requiring that forExit is usually set to *something* and that properly shadows the original
bytecode is cheap and easy, so it seemed like a good trade-off.

This change has no performance effect. Its only effect is that it makes the compiler easier to
understand by turning a previously magical concept into an explicit one.

  • CMakeLists.txt:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • dfg/DFGAbstractHeap.h:
  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGArgumentsEliminationPhase.cpp:
  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::setDirect):
(JSC::DFG::ByteCodeParser::currentNodeOrigin):
(JSC::DFG::ByteCodeParser::branchData):
(JSC::DFG::ByteCodeParser::addToGraph):
(JSC::DFG::ByteCodeParser::handleCall):
(JSC::DFG::ByteCodeParser::inlineCall):
(JSC::DFG::ByteCodeParser::handleInlining):
(JSC::DFG::ByteCodeParser::handleGetById):
(JSC::DFG::ByteCodeParser::handlePutById):
(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGCFGSimplificationPhase.cpp:

(JSC::DFG::CFGSimplificationPhase::run):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGClobbersExitState.cpp: Added.

(JSC::DFG::clobbersExitState):

  • dfg/DFGClobbersExitState.h: Added.
  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::emitPutByOffset):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::convertStringAddUse):
(JSC::DFG::FixupPhase::attemptToMakeFastStringAdd):
(JSC::DFG::FixupPhase::fixupGetAndSetLocalsInBlock):
(JSC::DFG::FixupPhase::fixupChecksInBlock):

  • dfg/DFGFlushFormat.h:

(JSC::DFG::useKindFor):
(JSC::DFG::uncheckedUseKindFor):
(JSC::DFG::typeFilterFor):

  • dfg/DFGGraph.cpp:

(JSC::DFG::printWhiteSpace):
(JSC::DFG::Graph::dumpCodeOrigin):
(JSC::DFG::Graph::dump):

  • dfg/DFGGraph.h:

(JSC::DFG::Graph::addSpeculationMode):

  • dfg/DFGInsertionSet.cpp:

(JSC::DFG::InsertionSet::insertSlow):
(JSC::DFG::InsertionSet::execute):

  • dfg/DFGLoopPreHeaderCreationPhase.cpp:

(JSC::DFG::LoopPreHeaderCreationPhase::run):

  • dfg/DFGMayExit.cpp:

(JSC::DFG::mayExit):
(WTF::printInternal):

  • dfg/DFGMayExit.h:
  • dfg/DFGMovHintRemovalPhase.cpp:
  • dfg/DFGNodeOrigin.cpp: Added.

(JSC::DFG::NodeOrigin::dump):

  • dfg/DFGNodeOrigin.h:

(JSC::DFG::NodeOrigin::NodeOrigin):
(JSC::DFG::NodeOrigin::isSet):
(JSC::DFG::NodeOrigin::withSemantic):
(JSC::DFG::NodeOrigin::withExitOK):
(JSC::DFG::NodeOrigin::withInvalidExit):
(JSC::DFG::NodeOrigin::takeValidExit):
(JSC::DFG::NodeOrigin::forInsertingAfter):
(JSC::DFG::NodeOrigin::operator==):
(JSC::DFG::NodeOrigin::operator!=):

  • dfg/DFGNodeType.h:
  • dfg/DFGOSREntrypointCreationPhase.cpp:

(JSC::DFG::OSREntrypointCreationPhase::run):

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::OSRExit::OSRExit):
(JSC::DFG::OSRExit::setPatchableCodeOffset):

  • dfg/DFGOSRExitBase.h:
  • dfg/DFGObjectAllocationSinkingPhase.cpp:
  • dfg/DFGPhantomInsertionPhase.cpp:
  • dfg/DFGPhase.cpp:

(JSC::DFG::Phase::validate):
(JSC::DFG::Phase::beginPhase):
(JSC::DFG::Phase::endPhase):

  • dfg/DFGPhase.h:

(JSC::DFG::Phase::vm):
(JSC::DFG::Phase::codeBlock):
(JSC::DFG::Phase::profiledBlock):

  • dfg/DFGPredictionPropagationPhase.cpp:

(JSC::DFG::PredictionPropagationPhase::propagate):

  • dfg/DFGPutStackSinkingPhase.cpp:
  • dfg/DFGSSAConversionPhase.cpp:

(JSC::DFG::SSAConversionPhase::run):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::SpeculativeJIT):
(JSC::DFG::SpeculativeJIT::speculationCheck):
(JSC::DFG::SpeculativeJIT::emitInvalidationPoint):
(JSC::DFG::SpeculativeJIT::terminateSpeculativeExecution):
(JSC::DFG::SpeculativeJIT::compileCurrentBlock):
(JSC::DFG::SpeculativeJIT::checkArgumentTypes):
(JSC::DFG::SpeculativeJIT::compile):

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

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • dfg/DFGStoreBarrierInsertionPhase.cpp:
  • dfg/DFGTypeCheckHoistingPhase.cpp:

(JSC::DFG::TypeCheckHoistingPhase::run):

  • dfg/DFGValidate.cpp:

(JSC::DFG::Validate::validate):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::DFG::LowerDFGToLLVM::lower):
(JSC::FTL::DFG::LowerDFGToLLVM::compileNode):
(JSC::FTL::DFG::LowerDFGToLLVM::compileUpsilon):
(JSC::FTL::DFG::LowerDFGToLLVM::compileInvalidationPoint):
(JSC::FTL::DFG::LowerDFGToLLVM::appendOSRExit):

Source/WTF:

  • wtf/Insertion.h:

(WTF::executeInsertions): Add a useful assertion. This come into play because JSC will use UINT_MAX as "invalid index", and that ought to trigger this assertion.

12:21 PM Changeset in webkit [188978] by akling@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] StructureTransitionTable should eagerly deallocate single-transition WeakImpls.
<https://webkit.org/b/148478>

Reviewed by Geoffrey Garen.

Use a WeakHandleOwner to eagerly deallocate StructureTransitionTable's Weak pointers
when it's using the single-transition optimization and the Structure it transitioned
to has been GC'd.

This prevents Structures from keeping WeakBlocks alive longer than necessary when
they've been transitioned away from but are still in use themselves.

  • runtime/Structure.cpp:

(JSC::singleSlotTransitionWeakOwner):
(JSC::StructureTransitionTable::singleTransition):
(JSC::StructureTransitionTable::setSingleTransition):
(JSC::StructureTransitionTable::add):

  • runtime/StructureTransitionTable.h:

(JSC::StructureTransitionTable::singleTransition): Deleted.
(JSC::StructureTransitionTable::setSingleTransition): Deleted.

12:01 PM Changeset in webkit [188977] by peavo@outlook.com
  • 3 edits in trunk/Source/WebCore

[Curl] Deadlock when downloading.
https://bugs.webkit.org/show_bug.cgi?id=148438

Reviewed by Alex Christensen.

A thread should not try locking when it already has got the lock,
this will create a deadlock.

  • platform/network/curl/CurlDownload.cpp:

(WebCore::CurlDownloadManager::startThreadIfNeeded):
(WebCore::CurlDownloadManager::stopThread):
(WebCore::CurlDownloadManager::stopThreadIfIdle):
(WebCore::CurlDownload::~CurlDownload):
(WebCore::CurlDownload::moveFileToDestination):
(WebCore::CurlDownload::didFail):

  • platform/network/curl/CurlDownload.h:

(WebCore::CurlDownloadManager::getMultiHandle):
(WebCore::CurlDownloadManager::runThread):
(WebCore::CurlDownloadManager::setRunThread):

11:53 AM Changeset in webkit [188976] by BJ Burg
  • 2 edits in trunk/Source/JavaScriptCore

Web Inspector: REGRESSION(r188965): BackendDispatcher loses request ids when called re-entrantly
https://bugs.webkit.org/show_bug.cgi?id=148480

Reviewed by Joseph Pecoraro.

I added an assertion that m_currentRequestId is Nullopt when dispatch() is called, but this should
not hold if dispatching a backend command while debugger is paused. I will remove the assertion
and add proper scoping for all dispatch() branches.

No new tests, this wrong assert caused inspector/dom-debugger/node-removed.html to crash reliably.

  • inspector/InspectorBackendDispatcher.cpp:

(Inspector::BackendDispatcher::dispatch): Cover each exit with an appropriate TemporaryChange scope.

11:52 AM Changeset in webkit [188975] by bshafiei@apple.com
  • 5 edits in branches/safari-601.1.46-branch/Source

Versioning.

11:50 AM Changeset in webkit [188974] by peavo@outlook.com
  • 2 edits in trunk

[Win] Build does not generate debug info.
https://bugs.webkit.org/show_bug.cgi?id=148431

Reviewed by Alex Christensen.

Generate debug info for Windows builds.

  • Source/cmake/OptionsWin.cmake:
11:46 AM Changeset in webkit [188973] by Michael Catanzaro
  • 2 edits in trunk

[GTK] Disable ACCELERATED_2D_CANVAS by default
https://bugs.webkit.org/show_bug.cgi?id=148473

Reviewed by Martin Robinson.

Currently ACCELERATED_2D_CANVAS is enabled by default on most systems (which have CairoGL)
but not on Debian (which does not). We've known this was problematic for a while, since it
means we have two different sets of distro-dependent bugs, but never decided whether that
outweighed the benefits of CarioGL or not. I'm making the call now: it's more important to
have the same bugs everywhere. We can turn this on again for other distros when we're ready
to turn it on for Debian.

Also, properly fail the build if ENABLE_ACCELERATED_2D_CANVAS is enabled but CairoGL is not
available.

  • Source/cmake/OptionsGTK.cmake:
11:34 AM Changeset in webkit [188972] by commit-queue@webkit.org
  • 5 edits in trunk/Source/JavaScriptCore

Remove the unused *Executable::unlinkCalls() and CodeBlock::unlinkCalls()
https://bugs.webkit.org/show_bug.cgi?id=148469

Patch by Sukolsak Sakshuwong <Sukolsak Sakshuwong> on 2015-08-26
Reviewed by Geoffrey Garen.

We use CodeBlock::unlinkIncomingCalls() to unlink calls.
(...)Executable::unlinkCalls() and CodeBlock::unlinkCalls() are no longer used.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::unlinkCalls): Deleted.

  • bytecode/CodeBlock.h:
  • runtime/Executable.cpp:

(JSC::EvalExecutable::unlinkCalls): Deleted.
(JSC::ProgramExecutable::unlinkCalls): Deleted.
(JSC::FunctionExecutable::unlinkCalls): Deleted.

  • runtime/Executable.h:

(JSC::ScriptExecutable::unlinkCalls): Deleted.

11:18 AM Changeset in webkit [188971] by timothy_horton@apple.com
  • 4 edits in trunk

Layout Test platform/mac/fast/events/content-inset-hit-testing-in-frame.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=148409

Reviewed by Beth Dakin.

  • WebView/WebDynamicScrollBarsView.mm:

(-[WebDynamicScrollBarsView setContentInsets:]):
Explicitly force our NSScrollView to lay out after updating
content insets. We depend on this happening synchronously (specifically,
we need our frame/bounds change callbacks to fire), because the layout
which will happen subsequently needs up-to-date information in order to
correctly a) enable scrollbars and then b) update the scroll position.

  • platform/mac/fast/events/resources/iframe-to-hit-test.html:

Adjust the test so that it logs something useful if it fails
instead of complaining about not being run in WKTR/DRT.

10:54 AM Changeset in webkit [188970] by msaboff@apple.com
  • 5 edits in branches/jsc-tailcall/Source/JavaScriptCore

Unreviewed build fix for release builds after r188937.

  • jit/CallFrameShuffler.cpp:

(JSC::CallFrameShuffler::prepareAny): Changed ASSERT to ASSERT_UNUSED.

  • jit/CallFrameShuffler.h:

(JSC::CallFrameShuffler::removeTarget): Changed ASSERT to ASSERT_UNUSED.
(JSC::CachedRecovery::removeTarget):

  • jit/CallFrameShuffler32_64.cpp: Added #include "JSCJSValueInline.h".
  • jit/CallFrameShuffler64.cpp: Added #include "JSCJSValueInline.h".
10:33 AM Changeset in webkit [188969] by Brent Fulgham
  • 2 edits in trunk/Tools

[Win] Simplify menu handling code in WinLauncher
https://bugs.webkit.org/show_bug.cgi?id=148461

Reviewed by Zalan Bujtas.

Revise 'ToggleMenuItem' to return a boolean value indicating if
it handled the message. Revise WndProc to use this to decide if it
should pass the message on to the default handler, rather than
duplicating the logic in both places.

  • WinLauncher/Common.cpp:

(ToggleMenuItem): Return true if the menu item message was handled.
(WndProc): If 'ToggleMenuItem' did not handle the message, pass
the message tothe default handler.

9:44 AM Changeset in webkit [188968] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[Cairo] Accelerated canvas should fall back to non-accelerated canvas on creation failure
https://bugs.webkit.org/show_bug.cgi?id=148476

Patch by Jinyoung Hur <hur.ims@navercorp.com> on 2015-08-26
Reviewed by Brent Fulgham.

Cairo-gl backed surface might fail to be created with large dimensions, e.g., 50x32000, depending on
the gl implementations. In case of Mac port, ImageBufferCG falls back to a software surface when it fails to create
IOSurface, an accelerated surface. Though the unaccelerated surface could be slower, it would be better
to create a working surface than nothing.

Because the max dimensions of gl texture might vary among the OpenGL implementations, below test can't guarantee
the verification of behavior difference depending on the running platform.

Test: fast/canvas/canvas-large-dimensions.html

  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::ImageBuffer::ImageBuffer):

9:06 AM Changeset in webkit [188967] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Command-Enter should evaluate selected JS in Debugger/Sources
https://bugs.webkit.org/show_bug.cgi?id=148368

Reviewed by Timothy Hatcher.

  • UserInterface/Controllers/CodeMirrorCompletionController.js:

(WebInspector.CodeMirrorCompletionController):
(WebInspector.CodeMirrorCompletionController.prototype._generateJavaScriptCompletions):
Evaluate selected text in the console only for JS and HTML resources. HTML resources
should be allowed because they can have commented out (inside <!-- -->) and
inline (onclick="") JavaScript.

8:53 AM Changeset in webkit [188966] by commit-queue@webkit.org
  • 7 edits in trunk

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

Broke all the tests (Requested by ap on #webkit).

Reverted changeset:

"Add some new emoji with modifiers and new sequence."
https://bugs.webkit.org/show_bug.cgi?id=148202
http://trac.webkit.org/changeset/188960

7:34 AM Changeset in webkit [188965] by BJ Burg
  • 27 edits in trunk

Web Inspector: no need to allocate protocolErrors array for every dispatched backend command
https://bugs.webkit.org/show_bug.cgi?id=146466

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

Clean up some of the backend dispatcher code, with a focus on eliminating useless allocations
of objects in the common case when no protocol errors happen. This is done by saving the
current id of each request as it is being processed by the backend dispatcher, and tagging any
subsequent errors with that id. This also means we don't have to thread the requestId except
in the async command code path.

This patch also lifts some common code shared between all generated backend command
implementatations into the per-domain dispatch method instead. This reduces generated code size.

To be consistent, this patch standardizes on calling the id of a backend message its 'requestId'.
Requests can be handled synchronously or asynchronously (triggered via the 'async' property).

No new tests, covered by existing protocol tests.

  • inspector/InspectorBackendDispatcher.cpp:

(Inspector::BackendDispatcher::CallbackBase::CallbackBase): Split the two code paths for reporting
success and failure.

(Inspector::BackendDispatcher::CallbackBase::sendFailure):
(Inspector::BackendDispatcher::CallbackBase::sendSuccess): Renamed from sendIfActive.
(Inspector::BackendDispatcher::dispatch): Reset counters and current requestId before dispatching.
No need to manually thread the requestId to all reportProtocolError calls.

(Inspector::BackendDispatcher::hasProtocolErrors): Added.
(Inspector::BackendDispatcher::sendResponse):
(Inspector::BackendDispatcher::sendPendingErrors): Send any saved protocol errors to the frontend.
Always send a 'data' member with all of the errors, even if there's just one. We might want to add
more information about errors later.

(Inspector::BackendDispatcher::reportProtocolError): Enqueue a protocol error to be sent later.
(Inspector::BackendDispatcher::getPropertyValue): Remove useless type parameters and nuke most of
the type conversion methods. Use std::function types instead of function pointer types.

(Inspector::castToInteger): Added.
(Inspector::castToNumber): Added.
(Inspector::BackendDispatcher::getInteger):
(Inspector::BackendDispatcher::getDouble):
(Inspector::BackendDispatcher::getString):
(Inspector::BackendDispatcher::getBoolean):
(Inspector::BackendDispatcher::getObject):
(Inspector::BackendDispatcher::getArray):
(Inspector::BackendDispatcher::getValue):
(Inspector::getPropertyValue): Deleted.
(Inspector::AsMethodBridges::asInteger): Deleted.
(Inspector::AsMethodBridges::asDouble): Deleted.
(Inspector::AsMethodBridges::asString): Deleted.
(Inspector::AsMethodBridges::asBoolean): Deleted.
(Inspector::AsMethodBridges::asObject): Deleted.
(Inspector::AsMethodBridges::asArray): Deleted.
(Inspector::AsMethodBridges::asValue): Deleted.

  • inspector/InspectorBackendDispatcher.h:
  • inspector/scripts/codegen/cpp_generator_templates.py: Extract 'params' object in domain dispatch method.

Omit requestIds where possible. Convert dispatch tables to use NeverDestroyed. Check the protocol error count
to decide whether to abort the dispatch or not, rather than allocating our own errors array.

  • inspector/scripts/codegen/cpp_generator_templates.py:

(void):

  • inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py: Revert to passing RefPtr<InspectorObject>

since parameters are now being passed rather than the message object. Some commands do not require parameters.

  • inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py:

(CppBackendDispatcherImplementationGenerator.generate_output):
(CppBackendDispatcherImplementationGenerator._generate_small_dispatcher_switch_implementation_for_domain):
(CppBackendDispatcherImplementationGenerator._generate_dispatcher_implementation_for_command):

  • inspector/scripts/codegen/generate_objc_backend_dispatcher_header.py:

(ObjCBackendDispatcherHeaderGenerator._generate_objc_handler_declaration_for_command):

  • inspector/scripts/codegen/generate_objc_backend_dispatcher_implementation.py:

(ObjCConfigurationImplementationGenerator._generate_handler_implementation_for_command):
(ObjCConfigurationImplementationGenerator._generate_success_block_for_command):

  • inspector/scripts/codegen/objc_generator_templates.py:

Rebaseline some protocol generator tests.

  • inspector/scripts/tests/expected/commands-with-async-attribute.json-result:
  • inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
  • inspector/scripts/tests/expected/domains-with-varying-command-sizes.json-result:
  • inspector/scripts/tests/expected/enum-values.json-result:
  • inspector/scripts/tests/expected/events-with-optional-parameters.json-result:
  • inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result:
  • inspector/scripts/tests/expected/same-type-id-different-domain.json-result:
  • inspector/scripts/tests/expected/shadowed-optional-type-setters.json-result:
  • inspector/scripts/tests/expected/type-declaration-aliased-primitive-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-array-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-enum-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-object-type.json-result:
  • inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result:

Source/WebInspectorUI:

  • UserInterface/TestStub.html: Fix a typo, this property exists on ProtocolTest.

LayoutTests:

  • inspector/protocol/backend-dispatcher-argument-errors-expected.txt:
  • inspector/protocol/backend-dispatcher-argument-errors.html:

Stringify the 'data' member before dumping, since it now contains JSON. Rebaseline it.

7:25 AM WebKitGTK/2.10.x edited by Michael Catanzaro
Propose bug #148473 (diff)
3:24 AM Changeset in webkit [188964] by Matt Baker
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Rendering Frames legend item checkbox colors are too light
https://bugs.webkit.org/show_bug.cgi?id=148465

Reviewed by Timothy Hatcher.

  • UserInterface/Views/ChartDetailsSectionRow.js:

(WebInspector.ChartDetailsSectionRow.prototype._addCheckboxColorFilter):
Gamma primitive should use an "exponent" attribute instead of "value".
Increased gamma exponent to 1.4.

3:22 AM Changeset in webkit [188963] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Make DOM node attribute changes highlighting less obnoxious
https://bugs.webkit.org/show_bug.cgi?id=148050

Reviewed by Timothy Hatcher.

  • UserInterface/Views/DOMTreeOutline.css:

(@keyframes node-state-changed): Change color to a light green.
(.node-state-changed): Add a slight ease-in for the animation function.

3:18 AM Changeset in webkit [188962] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Add Refresh button to Cookie Content View
https://bugs.webkit.org/show_bug.cgi?id=148468

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-08-26
Reviewed by Timothy Hatcher.

  • UserInterface/Views/CookieStorageContentView.js:

(WebInspector.CookieStorageContentView):
(WebInspector.CookieStorageContentView.prototype.get navigationItems):
(WebInspector.CookieStorageContentView.prototype._refreshButtonClicked):

2:51 AM Changeset in webkit [188961] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

[GStreamer] "method" property for the webkitwebsrc element
https://bugs.webkit.org/show_bug.cgi?id=148433

Reviewed by Carlos Garcia Campos.

This new property is sometimes used by the GStreamer uridownloader
when time synchronization is required for DASH. The same property
was added to the souphttpsrc element.

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(webKitWebSrcSetProperty):
(webKitWebSrcGetProperty):
(webKitWebSrcStart):

2:26 AM Changeset in webkit [188960] by enrica@apple.com
  • 7 edits in trunk

Add some new emoji with modifiers and new sequence.
https://bugs.webkit.org/show_bug.cgi?id=148202
rdar://problem/21849857

Reviewed by Sam Weinig.

Source/WebCore:

Adding support for some new emoji with modifiers and
one new emoji sequence.

  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::characterRangeCodePath):

  • platform/text/CharacterProperties.h:

(WebCore::isEmojiGroupCandidate):
(WebCore::isEmojiModifier):

  • platform/text/TextBreakIterator.cpp:

(WebCore::cursorMovementIterator):

LayoutTests:

Updated test to reflect the changes.

  • editing/deleting/delete-emoji-expected.txt:
  • editing/deleting/delete-emoji.html:
2:11 AM Changeset in webkit [188959] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.9.91

WebKitGTK+ 2.9.91

1:38 AM Changeset in webkit [188958] by Csaba Osztrogonác
  • 2 edits in trunk/Tools

Remove unused code after r188948
https://bugs.webkit.org/show_bug.cgi?id=148467

Reviewed by Gyuyoung Kim.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::platformPreferences): Deleted.

1:34 AM Changeset in webkit [188957] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.10

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.9.91 release.

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit2:

  • gtk/NEWS: Add release notes for 2.9.91.
1:08 AM WebKitGTK/2.10.x edited by Carlos Garcia Campos
(diff)
1:04 AM Changeset in webkit [188956] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.10/Source/WebCore

Merge r188472 - [GStreamer] Handle missing plugins better at runtime
https://bugs.webkit.org/show_bug.cgi?id=146999

Reviewed by Carlos Garcia Campos.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::createAudioSink): Warn the
user if autoaudiosink wasn't found at runtime. In that case
playbin will try to be smart by itself, hopefully. Also moved a
couple GST_WARNING calls to WARN_MEDIA_MESSAGE.
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin): Use
WARN_MEDIA_MESSAGE here as well.

1:03 AM Changeset in webkit [188955] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.10/Source/WebCore

Merge r188902 - Clear cairo-gl surface for initialization
https://bugs.webkit.org/show_bug.cgi?id=148307

Patch by Jinyoung Hur <hur.ims@navercorp.com> on 2015-08-24
Reviewed by Martin Robinson.

A cairo-gl surface that is created from an uninitialized texture, should be cleared before use.
A texture memory created by calling glTexImage2D with null data parameter, is uninitialized.
And cairo_gl_surface_create_for_texture doesn't clear the provided texture for initialization.
So it seems safe to clear the surface explicitly.

It is hard to verify this behavior change because the texture memory status is undefined. Undefined means
it can be either initialized or not, though mostly initialized in my experiences.

  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::clearSurface):
(WebCore::createCairoGLSurface):

12:52 AM Changeset in webkit [188954] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.10

Merge r188929 - [GTK] r186800 broke the build on Ubuntu 14.04
https://bugs.webkit.org/show_bug.cgi?id=147559

Reviewed by Martin Robinson.

  • Source/cmake/FindGTK3.cmake: Always define GTK3_SUPPORTS_X11 and GTK3_SUPPORTS_WAYLAND.
  • Source/cmake/OptionsGTK.cmake: Autodetect support for X11 and Wayland backends.
12:49 AM Changeset in webkit [188953] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.10

Merge r188755 - Regression(r188698): http/tests/cache/disk-cache/disk-cache-revalidation-new-expire-header.html is very flaky
https://bugs.webkit.org/show_bug.cgi?id=148205

Reviewed by Antti Koivisto.

Source/WebKit2:

After r188640, successful revalidation of resources in the memory cache
would cause us to drop the corresponding resource in the disk cache.
This patch addresses the issue by not removing the cache entry if the
response is a successful revalidation (i.e. status code == 304).

Longer term, we should probably update the entry in the disk cache (if
it exists) when it is revalidated by the memory cache. Currently,
revalidation by the memory cache bypasses the disk cache and goes
straight to the network. Then, when the response comes back as a 304,
we try and store the response in the cache. However, a 304 status code
is not cacheable so the cache rejects it.

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::store):

LayoutTests:

  • http/tests/cache/disk-cache/disk-cache-revalidation-new-expire-header.html:

Drop temporary fix landed in r188698 to make the test less flaky.

12:44 AM Changeset in webkit [188952] by Carlos Garcia Campos
  • 7 edits
    3 adds in releases/WebKitGTK/webkit-2.10

Merge r188640 - WebKit may keep outdated entry in the disk cache after a reload
https://bugs.webkit.org/show_bug.cgi?id=148137
<rdar://problem/22299547>

Reviewed by Antti Koivisto.

Source/WebKit2:

WebKit would keep outdated entry in the disk cache after a reload
in the following scenario:

  1. We have an entry in the cache
  2. The user reloads
  3. We get a fresh resource from the network but this one is not cacheable

In this case, we now remove the stale entry from the cache to make sure
it is not served to following requests (e.g. history navigations).

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::didFinishLoading):
Remove the entry from the cache if its redirection is no longer
cacheable.

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::store):
If we make the decision not to store the response, then remove the
entry in the cache for this resource if it exists.

(WebKit::NetworkCache::Cache::remove):

  • NetworkProcess/cache/NetworkCache.h:

Add new remove() overload taking a ResourceRequest argument so the
call site does not have the compute the key.

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::Storage::removeFromPendingWriteOperations):
(WebKit::NetworkCache::Storage::remove):

  • NetworkProcess/cache/NetworkCacheStorage.h:

When we're asked to remove an entry with a given key, also remove
it from the pending write operations. This pre-existing bug would
prevent the new layout test from passing.

LayoutTests:

Add layout test to make sure that stale disk cached entries are removed
when it becomes uncacheable.

  • http/tests/cache/disk-cache/resource-becomes-uncacheable-expected.txt: Added.
  • http/tests/cache/disk-cache/resource-becomes-uncacheable.html: Added.
  • http/tests/cache/disk-cache/resources/generate-response-optionally-cacheable.cgi: Added.
12:44 AM Changeset in webkit [188951] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.10/Source/WebCore

Merge r188931 - IconDatabase: syncThreadMainLoop() is unlocking m_syncLock twice when thread termination is requested
https://bugs.webkit.org/show_bug.cgi?id=148429

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2015-08-25
Reviewed by Filip Pizlo.

The lock is released an locked on every loop iteration, and then
unlocked again after the loop. There's an early break in the loop
when thread termination is requested that happens after the lock
is released but before is locked again, so that the unlock after
the loop is trying to unlock the lock again. This was not a
problem before, but the new Lock has an assertion to ensure that a
lock is not released twice.

  • loader/icon/IconDatabase.cpp:

(WebCore::IconDatabase::syncThreadMainLoop): Clean up the thread
and return instead of breaking the loop when thread termination is
requested.

12:32 AM Changeset in webkit [188950] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.10/Tools

Merge r188618 - Fix conversion-null warning in conversion.cpp of TestWebKitAPI
https://bugs.webkit.org/show_bug.cgi?id=148073

Reviewed by Alexey Proskuryakov.

  • TestWebKitAPI/Tests/WTF/Condition.cpp: Use EXPECT_FALSE instead of EXPECT_EQ.

(TestWebKitAPI::TEST):

12:31 AM Changeset in webkit [188949] by Carlos Garcia Campos
  • 7 edits in releases/WebKitGTK/webkit-2.10/Source

Merge r188633 - [GLib] GMainLoopSource should receive the std::function<> objects through rvalue references
https://bugs.webkit.org/show_bug.cgi?id=147981

Reviewed by Carlos Garcia Campos.

Source/WebKit2:

  • NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:

(WebKit::NetworkCache::runTaskInQueue): Move the std::function<> into the scheduling call.

Source/WTF:

Scheduling methods on GMainLoopSource and GThreadSafeMainLoopSource should
have the std::function<> objects passed through rvalue references, and should
move the passed-in objects forward when required.

  • wtf/glib/GMainLoopSource.cpp:

(WTF::GMainLoopSource::schedule):
(WTF::GMainLoopSource::scheduleAfterDelay):
(WTF::GMainLoopSource::scheduleAndDeleteOnDestroy):
(WTF::GMainLoopSource::scheduleAfterDelayAndDeleteOnDestroy):

  • wtf/glib/GMainLoopSource.h:
  • wtf/glib/GThreadSafeMainLoopSource.cpp:

(WTF::GThreadSafeMainLoopSource::schedule):
(WTF::GThreadSafeMainLoopSource::scheduleAfterDelay):

  • wtf/glib/GThreadSafeMainLoopSource.h:
12:03 AM Changeset in webkit [188948] by Gyuyoung Kim
  • 4 edits in trunk/Tools

[EFL][GTK] REGRESSION(r188828): All performance tests and almost all layout tests crash
https://bugs.webkit.org/show_bug.cgi?id=148377

Reviewed by Carlos Garcia Campos.

EFL and GTK don't support TestController::platformPreferences() yet which was introduced by r188828.
It caused all crashes of layout test and performance test on EFL and GTK. So this patch implements
TestController::platformPreferences() using WKPageGroupGetPreferences() which was previous thing for
EFL and GTK at the moment.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::platformWillRunTest):

  • WebKitTestRunner/efl/TestControllerEfl.cpp:

(WTR::TestController::platformPreferences):

  • WebKitTestRunner/gtk/TestControllerGtk.cpp:

(WTR::TestController::platformPreferences):

Aug 25, 2015:

11:49 PM Changeset in webkit [188947] by commit-queue@webkit.org
  • 8 edits
    1 add in trunk

AX: Enable accessibility/aria-controls.html test for mac
https://bugs.webkit.org/show_bug.cgi?id=148458

Patch by Nan Wang <n_wang@apple.com> on 2015-08-25
Reviewed by Chris Fleizach.

Source/WebCore:

Re-enabled accessibility/aria-controls.html test for mac.

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

Tools:

Implemented ariaControlsElementAtIndex(unsigned index).

  • DumpRenderTree/mac/AccessibilityUIElementMac.mm:

(AccessibilityUIElement::ariaControlsElementAtIndex):
(AccessibilityUIElement::disclosedRowAtIndex):

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::AccessibilityUIElement::ariaControlsElementAtIndex):

LayoutTests:

  • accessibility/aria-controls.html:
  • platform/mac/TestExpectations:
  • platform/mac/accessibility/aria-controls-expected.txt: Added.
11:29 PM Changeset in webkit [188946] by BJ Burg
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: message dispatch metrics should use high-resolution timing data
https://bugs.webkit.org/show_bug.cgi?id=135467

Reviewed by Timothy Hatcher.

Use performance.now if it's available, otherwise fallback to Date.now().
Format timestamps with fixed decimal point, and sprinkle some ES6.

  • UserInterface/Base/Utilities.js:

(timestamp): Added.

  • UserInterface/Protocol/InspectorBackend.js:

(InspectorBackendClass):
(InspectorBackendClass.prototype._sendCommandToBackendWithCallback):
(InspectorBackendClass.prototype._dispatchEvent):

  • UserInterface/Protocol/MessageDispatcher.js:

(WebInspector.dispatchNextQueuedMessageFromBackend):
(WebInspector.dispatchMessageFromBackend): Be consistent about using this.

10:47 PM Changeset in webkit [188945] by Gyuyoung Kim
  • 2 edits in trunk/Tools

Remove python tests for PassRefPtr
https://bugs.webkit.org/show_bug.cgi?id=148463

Reviewed by Andy Estes.

As we're removing uses of PassRefPtr, we need to remove all python tests for PassRefPtr as well.

  • Scripts/webkitpy/style/checkers/cpp_unittest.py:

(PassPtrTest): Deleted.
(PassPtrTest.assert_pass_ptr_check): Deleted.
(PassPtrTest.test_pass_ref_ptr_in_function): Deleted.
(PassPtrTest.test_pass_other_type_ptr_in_function): Deleted.
(PassPtrTest.test_pass_ref_ptr_return_value): Deleted.
(PassPtrTest.test_ref_ptr_parameter_value): Deleted.
(PassPtrTest.test_ref_ptr_member_variable): Deleted.
(PassPtrTest.test_ref_ptr_member_variable.Foo): Deleted.

10:17 PM Changeset in webkit [188944] by mmaxfield@apple.com
  • 5 edits in trunk/LayoutTests

More test gardening of css3/line-break-language-sensitive.

Unreviewed.

  • css3/line-break-language-sensitive/line-break-auto-hyphens-expected.html:
  • css3/line-break-language-sensitive/line-break-auto-hyphens.html:
  • css3/line-break-language-sensitive/line-break-auto-sound-marks-expected.html:
  • css3/line-break-language-sensitive/line-break-auto-sound-marks.html:
8:41 PM Changeset in webkit [188943] by aestes@apple.com
  • 3 edits in trunk/Tools

[iOS] run-webkit-tests fails if watchOS SDK is installed
https://bugs.webkit.org/show_bug.cgi?id=148453

Reviewed by David Kilzer.

  • Scripts/webkitpy/xcode/simulator.py:

(Simulator): Taught Simulator how to parse watchOS runtimes and devices.

  • Scripts/webkitpy/xcode/simulator_unittest.py: Added tests.
7:01 PM Changeset in webkit [188942] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

iOS Simulator layout-tests fail to start while cleaning a directory structure if simulator is already running
https://bugs.webkit.org/show_bug.cgi?id=148197
rdar://problem/22334382

Patch by Aakash Jain <aakash_jain@apple.com> on 2015-08-25
Reviewed by Daniel Bates.

  • BuildSlaveSupport/kill-old-processes: Add Simulator to the list of processes to kill (for iOS builders).
  • Scripts/webkitpy/port/ios.py:

(IOSSimulatorPort): Converted bundle id com.apple.iphonesimulator to a variable SIMULATOR_BUNDLE_ID.
(IOSSimulatorPort._quitIOSSimulator): Common function to quit iOS Simulator.
(IOSSimulatorPort.clean_up_test_run): Quit the simulator during the cleanup.
(IOSSimulatorPort.check_sys_deps): No need to quit the simulator here as its now being quit in reset_preferences().
(IOSSimulatorPort.reset_preferences): Quit the simulator before trying to delete associated data directory.

6:35 PM Changeset in webkit [188941] by commit-queue@webkit.org
  • 4 edits in trunk/LayoutTests

AX: accessibility/mac/misspelled-attributed-string.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=148455

Patch by Nan Wang <n_wang@apple.com> on 2015-08-25
Reviewed by Chris Fleizach.

Updated the test case to be more stable since the client's text checker
might change over time.

  • accessibility/mac/misspelled-attributed-string-expected.txt:
  • accessibility/mac/misspelled-attributed-string.html:
  • platform/mac/TestExpectations:
6:02 PM Changeset in webkit [188940] by Gyuyoung Kim
  • 2 edits in trunk/Tools

Remove PassRefPtr style check rule
https://bugs.webkit.org/show_bug.cgi?id=148432

Reviewed by Andreas Kling.

PassRefPtr is being removed. Thus style rule needs to be removed as well.

  • Scripts/webkitpy/style/checkers/cpp.py:

(_check_parameter_name_against_text): Deleted.
(check_function_definition_and_pass_ptr): Deleted.
(check_function_definition): Deleted.
(check_pass_ptr_usage): Deleted.
(process_line): Deleted.
(CppChecker): Deleted.

5:16 PM Changeset in webkit [188939] by Brent Fulgham
  • 5 edits in trunk/Tools

[Win] Expose "Inverted Colors" option in WinLauncher
https://bugs.webkit.org/show_bug.cgi?id=148451

Reviewed by Tim Horton.

Add the ability to toggle the "Inverted Colors" preference
in WinLauncher.

  • WinLauncher/Common.cpp:

(ToggleMenuItem): Toggle the feature when the menu item
is selected.
(WndProc): Recognize the new menu option.

  • WinLauncher/WinLauncher.cpp:

(WinLauncher::setToDefaultPreferences): Launch with "Invert
Colors" turned off.

  • WinLauncher/WinLauncher.vcxproj/WinLauncherLib.rc: Add menu

entry for "Invert Colors".

  • WinLauncher/WinLauncher.vcxproj/WinLauncherLibResource.h:
4:45 PM Changeset in webkit [188938] by commit-queue@webkit.org
  • 2 edits in trunk

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

broke build (Requested by alexchristensen on #webkit).

Reverted changeset:

"[Win] Build does not generate debug info."
https://bugs.webkit.org/show_bug.cgi?id=148431
http://trac.webkit.org/changeset/188919

3:59 PM Changeset in webkit [188937] by basile_clement@apple.com
  • 13 edits
    6 adds in branches/jsc-tailcall/Source/JavaScriptCore

jsc-tailcall: We should reuse the frame efficiently in the DFG instead of doing a memmove
https://bugs.webkit.org/show_bug.cgi?id=147508

Reviewed by Michael Saboff.

This introduces a new class (CallFrameShuffler) that is responsible for
efficiently building the new frames when performing a tail call. In
order for Repatch to know about the position of arguments on the
stack/registers (e.g. for polymorphic call inline caches), we store a
CallFrameShuffleData in the CallLinkInfo. Otherwise, the JIT and DFG
compiler are now using CallFrameShuffler instead of
CCallHelpers::prepareForTailCallSlow() to build the frame for a tail
call.

When taking a slow path, we still build the frame as if doing a regular
call, because we could throw an exception and need the caller's frame
at that point. This means that for virtual calls, we don't benefit from
the efficient frame move. We will take care of this in a subsequent patch.

  • CMakeLists.txt:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/AbortReason.h:
  • bytecode/CallLinkInfo.h:

(JSC::CallLinkInfo::setFrameShuffleData):
(JSC::CallLinkInfo::frameShuffleData):

  • dfg/DFGGenerationInfo.h:

(JSC::DFG::GenerationInfo::recovery):

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • jit/CallFrameShuffleData.cpp: Added.

(JSC::CallFrameShuffleData::setupCalleeSaveRegisters):

  • jit/CallFrameShuffleData.h: Added.
  • jit/CallFrameShuffler.cpp: Added.

(JSC::CallFrameShuffler::CallFrameShuffler):
(JSC::CallFrameShuffler::dump):
(JSC::CallFrameShuffler::getCachedRecovery):
(JSC::CallFrameShuffler::setCachedRecovery):
(JSC::CallFrameShuffler::spill):
(JSC::CallFrameShuffler::emitDeltaCheck):
(JSC::CallFrameShuffler::prepareForSlowPath):
(JSC::CallFrameShuffler::prepareForTailCall):
(JSC::CallFrameShuffler::tryWrites):
(JSC::CallFrameShuffler::performSafeWrites):
(JSC::CallFrameShuffler::prepareAny):

  • jit/CallFrameShuffler.h: Added.

(JSC::CachedRecovery::CachedRecovery):
(JSC::CachedRecovery::targets):
(JSC::CachedRecovery::addTarget):
(JSC::CachedRecovery::removeTarget):
(JSC::CachedRecovery::clearTargets):
(JSC::CachedRecovery::setWantedJSValueRegs):
(JSC::CachedRecovery::boxingRequiresGPR):
(JSC::CachedRecovery::boxingRequiresFPR):
(JSC::CachedRecovery::recovery):
(JSC::CachedRecovery::setRecovery):
(JSC::CachedRecovery::wantedJSValueRegs):
(JSC::CallFrameShuffler::lockGPR):
(JSC::CallFrameShuffler::acquireGPR):
(JSC::CallFrameShuffler::releaseGPR):
(JSC::CallFrameShuffler::snapshot):
(JSC::CallFrameShuffler::setCalleeJSValueRegs):
(JSC::CallFrameShuffler::assumeCalleeIsCell):
(JSC::CallFrameShuffler::canBox):
(JSC::CallFrameShuffler::ensureBox):
(JSC::CallFrameShuffler::ensureLoad):
(JSC::CallFrameShuffler::canLoadAndBox):
(JSC::CallFrameShuffler::updateRecovery):
(JSC::CallFrameShuffler::clearCachedRecovery):
(JSC::CallFrameShuffler::addCachedRecovery):
(JSC::CallFrameShuffler::numLocals):
(JSC::CallFrameShuffler::getOld):
(JSC::CallFrameShuffler::setOld):
(JSC::CallFrameShuffler::firstOld):
(JSC::CallFrameShuffler::lastOld):
(JSC::CallFrameShuffler::isValidOld):
(JSC::CallFrameShuffler::argCount):
(JSC::CallFrameShuffler::getNew):
(JSC::CallFrameShuffler::setNew):
(JSC::CallFrameShuffler::addNew):
(JSC::CallFrameShuffler::firstNew):
(JSC::CallFrameShuffler::lastNew):
(JSC::CallFrameShuffler::isValidNew):
(JSC::CallFrameShuffler::newAsOld):
(JSC::CallFrameShuffler::getFreeRegister):
(JSC::CallFrameShuffler::getFreeGPR):
(JSC::CallFrameShuffler::getFreeFPR):
(JSC::CallFrameShuffler::hasFreeRegister):
(JSC::CallFrameShuffler::ensureRegister):
(JSC::CallFrameShuffler::ensureGPR):
(JSC::CallFrameShuffler::ensureFPR):
(JSC::CallFrameShuffler::addressForOld):
(JSC::CallFrameShuffler::isUndecided):
(JSC::CallFrameShuffler::isSlowPath):
(JSC::CallFrameShuffler::addressForNew):
(JSC::CallFrameShuffler::dangerFrontier):
(JSC::CallFrameShuffler::isDangerNew):
(JSC::CallFrameShuffler::updateDangerFrontier):
(JSC::CallFrameShuffler::hasOnlySafeWrites):

  • jit/CallFrameShuffler32_64.cpp: Added.

(JSC::CallFrameShuffler::emitStore):
(JSC::CallFrameShuffler::emitBox):
(JSC::CallFrameShuffler::emitLoad):
(JSC::CallFrameShuffler::canLoad):
(JSC::CachedRecovery::loadsIntoFPR):
(JSC::CachedRecovery::loadsIntoGPR):
(JSC::CallFrameShuffler::emitDisplace):

  • jit/CallFrameShuffler64.cpp: Added.

(JSC::CallFrameShuffler::emitStore):
(JSC::CallFrameShuffler::emitBox):
(JSC::CallFrameShuffler::emitLoad):
(JSC::CallFrameShuffler::canLoad):
(JSC::CachedRecovery::loadsIntoFPR):
(JSC::CachedRecovery::loadsIntoGPR):
(JSC::CallFrameShuffler::emitDisplace):

  • jit/JITCall.cpp:

(JSC::JIT::compileOpCall):
(JSC::JIT::compileOpCallSlowCase):

  • jit/RegisterMap.h:
  • jit/Repatch.cpp:

(JSC::linkPolymorphicCall):

3:50 PM Changeset in webkit [188936] by basile_clement@apple.com
  • 15 edits
    1 move
    1 delete in branches/jsc-tailcall/Source/JavaScriptCore

jsc-tailcall: Get rid of FTLValueFormat
https://bugs.webkit.org/show_bug.cgi?id=148448

Reviewed by Michael Saboff.

FTL::ValueFormat is nothing more than DataFormat (and is actually
slightly less). Let's get rid of it.

  • CMakeLists.txt:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/DataFormat.cpp: Renamed from Source/JavaScriptCore/ftl/FTLValueFormat.h.

(WTF::printInternal):

  • bytecode/DataFormat.h:
  • ftl/FTLAvailableRecovery.h:

(JSC::FTL::AvailableRecovery::AvailableRecovery):
(JSC::FTL::AvailableRecovery::format):

  • ftl/FTLExitArgument.h:

(JSC::FTL::ExitArgument::ExitArgument):
(JSC::FTL::ExitArgument::operator!):
(JSC::FTL::ExitArgument::format):
(JSC::FTL::ExitArgument::withFormat):

  • ftl/FTLExitValue.cpp:

(JSC::FTL::ExitValue::dataFormat):

  • ftl/FTLExitValue.h:

(JSC::FTL::ExitValue::recovery):
(JSC::FTL::ExitValue::recoveryFormat):

  • ftl/FTLFormattedValue.h:

(JSC::FTL::FormattedValue::FormattedValue):
(JSC::FTL::FormattedValue::operator!):
(JSC::FTL::FormattedValue::format):
(JSC::FTL::int32Value):
(JSC::FTL::booleanValue):
(JSC::FTL::jsValueValue):
(JSC::FTL::doubleValue):

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::DFG::LowerDFGToLLVM::compileArithAddOrSub):
(JSC::FTL::DFG::LowerDFGToLLVM::compileInvalidationPoint):
(JSC::FTL::DFG::LowerDFGToLLVM::convertDoubleToInt32):
(JSC::FTL::DFG::LowerDFGToLLVM::exitValueForNode):
(JSC::FTL::DFG::LowerDFGToLLVM::exitArgument):
(JSC::FTL::DFG::LowerDFGToLLVM::addAvailableRecovery):

  • ftl/FTLOSRExit.cpp:

(JSC::FTL::OSRExit::OSRExit):

  • ftl/FTLOSRExit.h:
  • ftl/FTLOSRExitCompiler.cpp:

(JSC::FTL::reboxAccordingToFormat):
(JSC::FTL::compileRecovery):
(JSC::FTL::compileStub):

  • ftl/FTLValueFormat.cpp: Removed.
3:44 PM Changeset in webkit [188935] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Using the filter functional notation for background images results in wrong background-size rendering
https://bugs.webkit.org/show_bug.cgi?id=148221
rdar://problem/22379518

Reviewed by Daniel Bates.

Do not ignore the size argument, when the filter image is being drawn onto the context.
When the size is ignored, we end up painting the image with its native size while the filter
is applied on the size of the generated image.

Source/WebCore:

Test: fast/filter-image/background-filter-image.html

  • css/CSSFilterImageValue.cpp:

(WebCore::CSSFilterImageValue::image):

LayoutTests:

  • fast/filter-image/background-filter-image-expected.html: Added.
  • fast/filter-image/background-filter-image.html: Added.
3:09 PM Changeset in webkit [188934] by basile_clement@apple.com
  • 3 edits in branches/jsc-tailcall/Source/JavaScriptCore

jsc-tailcall: Add an option to disable tail calls
https://bugs.webkit.org/show_bug.cgi?id=148447

Reviewed by Michael Saboff.

  • bytecompiler/NodesCodegen.cpp:

(JSC::FunctionNode::emitBytecode):

  • runtime/Options.h:
3:01 PM Changeset in webkit [188933] by Beth Dakin
  • 2 edits in trunk/Source/WebKit2

Speculative build fix.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView setupInteraction]):

12:40 PM Changeset in webkit [188932] by saambarati1@gmail.com
  • 28 edits in trunk/Source/JavaScriptCore

Lets rename codeOriginIndex to callSiteIndex and get rid of CallFrame::Location.
https://bugs.webkit.org/show_bug.cgi?id=148213

Reviewed by Filip Pizlo.

This patch introduces a struct called CallSiteIndex which is
used as a wrapper for a 32-bit int to place things in the tag for ArgumentCount
in the call frame. On 32-bit we place Instruction* into this slot for LLInt and Basline.
For 32-bit DFG we place a an index into the code origin table in this slot.
On 64-bit we place a bytecode offset into this slot for LLInt and Baseline.
On 64-bit we place the index into the code origin table in this slot in the
DFG/FTL.

This patch also gets rid of the encoding scheme that describes if something is a
bytecode index or a code origin table index. This information can always
be determined based on the CodeBlock's' JITType.

StructureStubInfo now also has a CallSiteIndex which it stores to
the call frame when making a call.

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::hasCodeOrigins):
(JSC::CodeBlock::canGetCodeOrigin):
(JSC::CodeBlock::codeOrigin):
(JSC::CodeBlock::addFrequentExitSite):

  • bytecode/StructureStubInfo.h:

(JSC::StructureStubInfo::StructureStubInfo):

  • dfg/DFGCommonData.cpp:

(JSC::DFG::CommonData::notifyCompilingStructureTransition):
(JSC::DFG::CommonData::addCodeOrigin):
(JSC::DFG::CommonData::shrinkToFit):

  • dfg/DFGCommonData.h:

(JSC::DFG::CommonData::CommonData):

  • dfg/DFGJITCompiler.h:

(JSC::DFG::JITCompiler::setEndOfCode):
(JSC::DFG::JITCompiler::addCallSite):
(JSC::DFG::JITCompiler::emitStoreCodeOrigin):

  • dfg/DFGOSRExitCompilerCommon.cpp:

(JSC::DFG::reifyInlinedCallFrames):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileIn):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::cachedGetById):
(JSC::DFG::SpeculativeJIT::cachedPutById):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::cachedGetById):
(JSC::DFG::SpeculativeJIT::cachedPutById):

  • ftl/FTLCompile.cpp:

(JSC::FTL::mmAllocateDataSection):

  • ftl/FTLInlineCacheDescriptor.h:

(JSC::FTL::InlineCacheDescriptor::InlineCacheDescriptor):
(JSC::FTL::InlineCacheDescriptor::stackmapID):
(JSC::FTL::InlineCacheDescriptor::callSiteIndex):
(JSC::FTL::InlineCacheDescriptor::uid):
(JSC::FTL::GetByIdDescriptor::GetByIdDescriptor):
(JSC::FTL::PutByIdDescriptor::PutByIdDescriptor):
(JSC::FTL::CheckInDescriptor::CheckInDescriptor):
(JSC::FTL::InlineCacheDescriptor::codeOrigin): Deleted.

  • ftl/FTLLink.cpp:

(JSC::FTL::link):

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::DFG::LowerDFGToLLVM::compilePutById):
(JSC::FTL::DFG::LowerDFGToLLVM::compileIn):
(JSC::FTL::DFG::LowerDFGToLLVM::getById):
(JSC::FTL::DFG::LowerDFGToLLVM::callPreflight):

  • ftl/FTLSlowPathCall.cpp:

(JSC::FTL::storeCodeOrigin):

  • interpreter/CallFrame.cpp:

(JSC::CallFrame::currentVPC):
(JSC::CallFrame::setCurrentVPC):
(JSC::CallFrame::callSiteBitsAsBytecodeOffset):
(JSC::CallFrame::bytecodeOffset):
(JSC::CallFrame::codeOrigin):
(JSC::CallFrame::topOfFrameInternal):
(JSC::CallFrame::locationAsBytecodeOffset): Deleted.
(JSC::CallFrame::setLocationAsBytecodeOffset): Deleted.
(JSC::CallFrame::bytecodeOffsetFromCodeOriginIndex): Deleted.

  • interpreter/CallFrame.h:

(JSC::CallSiteIndex::CallSiteIndex):
(JSC::CallSiteIndex::bits):
(JSC::ExecState::returnPCOffset):
(JSC::ExecState::abstractReturnPC):
(JSC::ExecState::topOfFrame):
(JSC::ExecState::setCallerFrame):
(JSC::ExecState::setScope):
(JSC::ExecState::currentVPC): Deleted.
(JSC::ExecState::setCurrentVPC): Deleted.

  • interpreter/CallFrameInlines.h:

(JSC::CallFrame::callSiteBitsAreBytecodeOffset):
(JSC::CallFrame::callSiteBitsAreCodeOriginIndex):
(JSC::CallFrame::callSiteAsRawBits):
(JSC::CallFrame::callSiteIndex):
(JSC::CallFrame::hasActivation):
(JSC::CallFrame::Location::encode): Deleted.
(JSC::CallFrame::Location::decode): Deleted.
(JSC::CallFrame::Location::encodeAsBytecodeOffset): Deleted.
(JSC::CallFrame::Location::encodeAsBytecodeInstruction): Deleted.
(JSC::CallFrame::Location::encodeAsCodeOriginIndex): Deleted.
(JSC::CallFrame::Location::isBytecodeLocation): Deleted.
(JSC::CallFrame::Location::isCodeOriginIndex): Deleted.
(JSC::CallFrame::hasLocationAsBytecodeOffset): Deleted.
(JSC::CallFrame::hasLocationAsCodeOriginIndex): Deleted.
(JSC::CallFrame::locationAsRawBits): Deleted.
(JSC::CallFrame::setLocationAsRawBits): Deleted.
(JSC::CallFrame::locationAsBytecodeOffset): Deleted.
(JSC::CallFrame::setLocationAsBytecodeOffset): Deleted.
(JSC::CallFrame::locationAsCodeOriginIndex): Deleted.

  • interpreter/StackVisitor.cpp:

(JSC::StackVisitor::readFrame):
(JSC::StackVisitor::readNonInlinedFrame):
(JSC::StackVisitor::Frame::print):

  • jit/JITCall.cpp:

(JSC::JIT::compileOpCall):

  • jit/JITCall32_64.cpp:

(JSC::JIT::compileOpCall):

  • jit/JITInlineCacheGenerator.cpp:

(JSC::garbageStubInfo):
(JSC::JITInlineCacheGenerator::JITInlineCacheGenerator):
(JSC::JITByIdGenerator::JITByIdGenerator):
(JSC::JITByIdGenerator::generateFastPathChecks):
(JSC::JITGetByIdGenerator::JITGetByIdGenerator):
(JSC::JITGetByIdGenerator::generateFastPath):
(JSC::JITPutByIdGenerator::JITPutByIdGenerator):

  • jit/JITInlineCacheGenerator.h:

(JSC::JITInlineCacheGenerator::JITInlineCacheGenerator):
(JSC::JITInlineCacheGenerator::stubInfo):
(JSC::JITByIdGenerator::JITByIdGenerator):
(JSC::JITGetByIdGenerator::JITGetByIdGenerator):
(JSC::JITPutByIdGenerator::JITPutByIdGenerator):

  • jit/JITInlines.h:

(JSC::JIT::updateTopCallFrame):

  • jit/JITOperations.cpp:

(JSC::getByVal):
(JSC::tryGetByValOptimize):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emitGetByValWithCachedId):
(JSC::JIT::emitPutByValWithCachedId):
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emit_op_put_by_id):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emitGetByValWithCachedId):
(JSC::JIT::emitPutByValWithCachedId):
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emit_op_put_by_id):

  • jit/Repatch.cpp:

(JSC::generateByIdStub):

12:16 PM Changeset in webkit [188931] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

IconDatabase: syncThreadMainLoop() is unlocking m_syncLock twice when thread termination is requested
https://bugs.webkit.org/show_bug.cgi?id=148429

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2015-08-25
Reviewed by Filip Pizlo.

The lock is released an locked on every loop iteration, and then
unlocked again after the loop. There's an early break in the loop
when thread termination is requested that happens after the lock
is released but before is locked again, so that the unlock after
the loop is trying to unlock the lock again. This was not a
problem before, but the new Lock has an assertion to ensure that a
lock is not released twice.

  • loader/icon/IconDatabase.cpp:

(WebCore::IconDatabase::syncThreadMainLoop): Clean up the thread
and return instead of breaking the loop when thread termination is
requested.

12:14 PM Changeset in webkit [188930] by commit-queue@webkit.org
  • 7 edits in trunk

[Mac] accessibility/document-attributes.html fails
https://bugs.webkit.org/show_bug.cgi?id=116636

Patch by Nan Wang <n_wang@apple.com> on 2015-08-25
Reviewed by Chris Fleizach.

Source/WebCore:

Re-enabled accessibility/document-attributes.html test.

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

Tools:

Implemented documentURI() and documentEncoding().

  • DumpRenderTree/mac/AccessibilityUIElementMac.mm:

(AccessibilityUIElement::documentEncoding):
(AccessibilityUIElement::documentURI):

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::AccessibilityUIElement::documentEncoding):
(WTR::AccessibilityUIElement::documentURI):

LayoutTests:

  • platform/mac/TestExpectations:
12:13 PM Changeset in webkit [188929] by Michael Catanzaro
  • 3 edits in trunk

[GTK] r186800 broke the build on Ubuntu 14.04
https://bugs.webkit.org/show_bug.cgi?id=147559

Reviewed by Martin Robinson.

  • Source/cmake/FindGTK3.cmake: Always define GTK3_SUPPORTS_X11 and GTK3_SUPPORTS_WAYLAND.
  • Source/cmake/OptionsGTK.cmake: Autodetect support for X11 and Wayland backends.
12:10 PM Changeset in webkit [188928] by commit-queue@webkit.org
  • 8 edits
    4 adds in trunk

Function.prototype.toString is incorrect for ArrowFunction
https://bugs.webkit.org/show_bug.cgi?id=148148

Source/JavaScriptCore:

Patch by Aleksandr Skachkov <gskachkov@gmail.com> on 2015-08-25
Reviewed by Saam Barati.

Added correct support of toString() method for arrow function.

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createFunctionMetadata):
(JSC::ASTBuilder::createArrowFunctionExpr):

  • parser/Nodes.cpp:

(JSC::FunctionMetadataNode::FunctionMetadataNode):

  • parser/Nodes.h:
  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseFunctionBody):
(JSC::Parser<LexerType>::parseFunctionInfo):

  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::createFunctionMetadata):

  • runtime/FunctionPrototype.cpp:

(JSC::functionProtoFuncToString):

  • tests/stress/arrowfunction-tostring.js: Added.

LayoutTests:

Patch by Skachkov Oleksandr <gskachkov@gmail.com> on 2015-08-25
Reviewed by Saam Barati.

Added test of toString() method.

  • js/arrowfunction-tostring-expected.txt: Added.
  • js/arrowfunction-tostring.html: Added.
  • js/script-tests/arrowfunction-tostring.js: Added.
12:07 PM Changeset in webkit [188927] by mmaxfield@apple.com
  • 5 edits in trunk/LayoutTests

Test gardening
<rdar://problem/22420410>

Unreviewed.

Updating test expected results according to Kinsoku Shori.

  • css3/line-break-language-sensitive/line-break-auto-hyphens-expected.html:
  • css3/line-break-language-sensitive/line-break-auto-sound-marks-expected.html:
11:40 AM Changeset in webkit [188926] by saambarati1@gmail.com
  • 4 edits
    2 adds in trunk/Source/JavaScriptCore

Callee can be incorrectly overridden when it's captured
https://bugs.webkit.org/show_bug.cgi?id=148400

Reviewed by Filip Pizlo.

We now resort to always creating the function name scope
when the function name is in scope. Because the bytecode
generator now has a notion of local lexical scoping,
this incurs no runtime penalty for function expression names
that aren't heap allocated. If they are heap allocated,
this means we may now have one more scope on the runtime
scope stack than before. This modification simplifies the
callee initialization code and uses the lexical scoping constructs
to implement this. This implementation also ensures
that everything Just Works for function's with default
parameter values. Before this patch, IIFE functions
with default parameter values and a captured function
name would crash JSC.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::pushLexicalScopeInternal):
(JSC::BytecodeGenerator::popLexicalScopeInternal):
(JSC::BytecodeGenerator::variable):
(JSC::BytecodeGenerator::resolveType):
(JSC::BytecodeGenerator::emitThrowTypeError):
(JSC::BytecodeGenerator::emitPushFunctionNameScope):
(JSC::BytecodeGenerator::emitReadOnlyExceptionIfNeeded):

  • bytecompiler/BytecodeGenerator.h:

(JSC::Variable::isReadOnly):
(JSC::Variable::isSpecial):
(JSC::Variable::isConst):
(JSC::Variable::setIsReadOnly):

  • bytecompiler/NodesCodegen.cpp:

(JSC::PostfixNode::emitResolve):
(JSC::PrefixNode::emitResolve):
(JSC::ReadModifyResolveNode::emitBytecode):
(JSC::AssignResolveNode::emitBytecode):
(JSC::BindingNode::bindValue):

  • tests/stress/IIFE-es6-default-parameters.js: Added.

(assert):
(.):

  • tests/stress/IIFE-function-name-captured.js: Added.

(assert):
(.):

11:38 AM Changeset in webkit [188925] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Unreviewed, fix typo introduced in r188917

11:19 AM Changeset in webkit [188924] by Beth Dakin
  • 2 edits in trunk/Source/WebKit2

Long press gesture recognizer should adjust delay based on other recognizers
https://bugs.webkit.org/show_bug.cgi?id=148402
-and corresponding-
rdar://problem/22278723

Reviewed by Tim Horton.

Call _setAdjustsDelayBasedOnOtherRecognizers with a value of YES.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView setupInteraction]):

11:13 AM Changeset in webkit [188923] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebCore

Fix the !ENABLE(VIDEO) build after r188693
https://bugs.webkit.org/show_bug.cgi?id=148424

Reviewed by Tim Horton.

  • page/ChromeClient.h:
11:10 AM Changeset in webkit [188922] by eric.carlson@apple.com
  • 3 edits in trunk/Source/WebCore

[iOS] Don't clear AVPlayerItem when pausing if AirPlay is active
https://bugs.webkit.org/show_bug.cgi?id=148319

Reviewed by Jer Noble.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::purgeBufferedDataIfPossible): Do nothing if the session

is allowed to load data when in the background and we are not under memory pressure.

  • platform/audio/ios/MediaSessionManagerIOS.mm:

(WebCore::MediaSessionManageriOS::sessionCanLoadMedia): Call base class.

11:04 AM Changeset in webkit [188921] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebCore

Fix the !ENABLE(CSS_REGIONS) build after r188663
https://bugs.webkit.org/show_bug.cgi?id=148425

Reviewed by Chris Dumez.

  • bindings/js/JSDOMNamedFlowCollectionCustom.cpp:
11:03 AM Changeset in webkit [188920] by Brent Fulgham
  • 5 edits
    2 adds in trunk

Wheel events stop propagating when target element is removed from DOM
https://bugs.webkit.org/show_bug.cgi?id=148384
<rdar://problem/19732211>

Reviewed by David Hyatt.

Source/WebCore:

Tested by tiled-drawing/scrolling/latched-to-deleted-node.html

We need to reset our latching state if the targeted node is removed from the DOM.
Add a check in 'platformPrepareForWheelEvents' that checks if the expected latching
target node was already removed from the DOM. If it was, we should not send events
to it, and should reset latching state so we can attach to the next relevant node.

  • dom/Element.cpp:

(WebCore::Element::removedFrom): Remove any latched wheel event state objects that
match the current element.

  • page/MainFrame.cpp:

(WebCore::MainFrame::removeLatchingStateForTarget): Remove any latched wheel event
state structures that match the passed wheel event target.

  • page/MainFrame.h:

LayoutTests:

  • tiled-drawing/scrolling/latched-to-deleted-node-expected.txt: Added.
  • tiled-drawing/scrolling/latched-to-deleted-node.html: Added.
11:01 AM Changeset in webkit [188919] by peavo@outlook.com
  • 2 edits in trunk

[Win] Build does not generate debug info.
https://bugs.webkit.org/show_bug.cgi?id=148431

Reviewed by Brent Fulgham.

Generate debug info for Windows builds.

  • Source/cmake/OptionsWin.cmake:
11:00 AM Changeset in webkit [188918] by Wenson Hsieh
  • 4 edits
    2 adds in trunk

Fix crash due to search field disappearing when showing results menu
https://bugs.webkit.org/show_bug.cgi?id=148410
<rdar://problem/22399850>

Reviewed by Brent Fulgham.

When clicking on the results button of a search field that hides upon being focused, WebKit will crash because we
attempt to toggle the results menu using the search field's renderer which is null. This is addressed by adding a null
check to make sure the search field has not been hidden before toggling the menu.

Test: fast/forms/search/search-results-hidden-crash.html

  • html/shadow/TextControlInnerElements.cpp:

(WebCore::SearchFieldResultsButtonElement::defaultEventHandler): Add a null check for the search field's renderer.

10:58 AM Changeset in webkit [188917] by Chris Dumez
  • 9 edits in trunk

compareDocumentPosition() should report PRECEDING or FOLLOWING information even if nodes are disconnected
https://bugs.webkit.org/show_bug.cgi?id=119316

Reviewed by Darin Adler.

Source/WebCore:

As the latest DOM specification, compareDocumentPosition() should report
PRECEDING or FOLLOWING information even if nodes are disconnected:

This behavior is consistent with both IE10, Firefox and Chrome.

The implementation relies on the comparison of cryptographic hashes
(SHA1) of the Node pointers so that the results returned by the function
are consistent. We don't compare Node pointers directly as it was done
previously in r153660 to avoid leaking information about our memory
model to the Web.

Test: fast/dom/compare-document-position-disconnected-nodes.html
W3C Test suite: http://w3c-test.org/dom/nodes/Node-compareDocumentPosition.html

  • dom/Node.cpp:

(WebCore::hashPointer):
(WebCore::compareDetachedElementsPosition):
(WebCore::Node::compareDocumentPosition):

LayoutTests:

Update fast/dom/compare-document-position-disconnected-nodes.html to check that compareDocumentPosition()
now returns one of the following values for disconnected nodes:

  • DOCUMENT_POSITION_DISCONNECTED | DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC | DOCUMENT_POSITION_PRECEDING
  • DOCUMENT_POSITION_DISCONNECTED | DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC | DOCUMENT_POSITION_FOLLOWING

Several dom/xhtml/level3 are skipped and marked as WonfFix because they are outdated and no longer match
the latest DOM specification. They expect compareDocumentPosition() not to return PRECEDING / FOLLOWING
information for disconnected nodes.

  • dom/xhtml/level3/core/nodecomparedocumentposition38-expected.txt:
  • fast/dom/compare-document-position-disconnected-nodes-expected.txt:
  • fast/dom/compare-document-position-disconnected-nodes.html:
  • fast/dom/shadow/compare-document-position-expected.txt:
  • fast/dom/shadow/compare-document-position.html:
10:55 AM Changeset in webkit [188916] by Matt Baker
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Rendering Frames pie chart should use the needsLayout/updateLayout idiom
https://bugs.webkit.org/show_bug.cgi?id=148412

Reviewed by Timothy Hatcher.

  • UserInterface/Views/ChartDetailsSectionRow.js:

(WebInspector.ChartDetailsSectionRow):
(WebInspector.ChartDetailsSectionRow.prototype.set innerLabel):
(WebInspector.ChartDetailsSectionRow.prototype.set innerRadius):
Schedule a layout.
(WebInspector.ChartDetailsSectionRow.prototype.set data): Deleted.
Replaced by addItem, setItemValue, and clearItems.
(WebInspector.ChartDetailsSectionRow.prototype.addItem):
(WebInspector.ChartDetailsSectionRow.prototype.setItemValue):
(WebInspector.ChartDetailsSectionRow.prototype.clearItems):
Add/update data points and schedule a layout.
(WebInspector.ChartDetailsSectionRow.prototype._needsLayout):
(WebInspector.ChartDetailsSectionRow.prototype.updateLayout):
Update legend and draw pie chart.
(WebInspector.ChartDetailsSectionRow.prototype._createLegend): Deleted.
Refactored as _updateLegend.
(WebInspector.ChartDetailsSectionRow.prototype._refresh): Deleted.
Refactored as updateLayout.

  • UserInterface/Views/TimelineSidebarPanel.js:

(WebInspector.TimelineSidebarPanel):
Add chart data points once.
(WebInspector.TimelineSidebarPanel._refreshFrameSelectionChart):
Update chart values.

10:36 AM Changeset in webkit [188915] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.10/Tools

Merge r188701 - Unreviewed, shorten a test that runs too long and times out.

  • TestWebKitAPI/Tests/WTF/Lock.cpp:

(TestWebKitAPI::TEST):

10:35 AM Changeset in webkit [188914] by Carlos Garcia Campos
  • 8 edits
    1 delete in releases/WebKitGTK/webkit-2.10/Source

Merge r188677 - Remove WTF::SpinLock
https://bugs.webkit.org/show_bug.cgi?id=148208

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

Remove the one remaining use of SpinLock.

  • API/JSValue.mm:

(handerForStructTag):

Source/WTF:

Remove the SpinLock.h file and remove references to the SpinLock class. Put the old SpinLock
algorithm in LockSpeedTest.cpp - which isn't compiled as part of a WTF or WebKit build - just
so we can still benchmark our locking algorithms against a spinlock baseline.

  • WTF.vcxproj/WTF.vcxproj:
  • WTF.xcodeproj/project.pbxproj:
  • benchmarks/LockSpeedTest.cpp:
  • wtf/CMakeLists.txt:
  • wtf/Lock.h:
  • wtf/SpinLock.h: Removed.
  • wtf/WordLock.h:
10:04 AM Changeset in webkit [188913] by Chris Dumez
  • 6 edits in trunk/Source/WebCore

Add support for callback interfaces using other callback names than "handleEvent"
https://bugs.webkit.org/show_bug.cgi?id=148418

Reviewed by Ryosuke Niwa.

Add support for callback interfaces using other callback names than
"handleEvent" [1].

This is a pre-requirement for Bug 148415, as NodeFilter's callback
function name is "acceptNode":

[1] https://heycam.github.io/webidl/#es-user-objects

  • bindings/js/JSCallbackData.cpp:

(WebCore::JSCallbackData::invokeCallback):

  • bindings/js/JSCallbackData.h:
  • bindings/js/JSCustomSQLStatementErrorCallback.cpp:

(WebCore::JSSQLStatementErrorCallback::handleEvent):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateCallbackImplementation):

  • bindings/scripts/test/JS/JSTestCallback.cpp:

(WebCore::JSTestCallback::callbackWithNoParam):
(WebCore::JSTestCallback::callbackWithArrayParam):
(WebCore::JSTestCallback::callbackWithSerializedScriptValueParam):
(WebCore::JSTestCallback::callbackWithStringList):
(WebCore::JSTestCallback::callbackWithBoolean):
(WebCore::JSTestCallback::callbackRequiresThisToPass):

10:02 AM Changeset in webkit [188912] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WTF

Require GCC version at least 4.9
https://bugs.webkit.org/show_bug.cgi?id=148430

Reviewed by Darin Adler.

  • wtf/Compiler.h:
10:01 AM WebKitGTK/2.10.x edited by Michael Catanzaro
propose r188902 (diff)
9:53 AM Changeset in webkit [188911] by Carlos Garcia Campos
  • 67 edits in releases/WebKitGTK/webkit-2.10/Source

Merge r188642 - Replace all uses of std::mutex/std::condition_variable with WTF::Lock/WTF::Condition
https://bugs.webkit.org/show_bug.cgi?id=148140

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

  • inspector/remote/RemoteInspector.h:
  • inspector/remote/RemoteInspector.mm:

(Inspector::RemoteInspector::registerDebuggable):
(Inspector::RemoteInspector::unregisterDebuggable):
(Inspector::RemoteInspector::updateDebuggable):
(Inspector::RemoteInspector::updateDebuggableAutomaticInspectCandidate):
(Inspector::RemoteInspector::sendMessageToRemoteFrontend):
(Inspector::RemoteInspector::setupFailed):
(Inspector::RemoteInspector::setupCompleted):
(Inspector::RemoteInspector::start):
(Inspector::RemoteInspector::stop):
(Inspector::RemoteInspector::setupXPCConnectionIfNeeded):
(Inspector::RemoteInspector::setParentProcessInformation):
(Inspector::RemoteInspector::xpcConnectionReceivedMessage):
(Inspector::RemoteInspector::xpcConnectionFailed):
(Inspector::RemoteInspector::pushListingSoon):
(Inspector::RemoteInspector::receivedIndicateMessage):
(Inspector::RemoteInspector::receivedProxyApplicationSetupMessage):

  • inspector/remote/RemoteInspectorXPCConnection.h:
  • inspector/remote/RemoteInspectorXPCConnection.mm:

(Inspector::RemoteInspectorXPCConnection::close):
(Inspector::RemoteInspectorXPCConnection::closeFromMessage):
(Inspector::RemoteInspectorXPCConnection::deserializeMessage):
(Inspector::RemoteInspectorXPCConnection::handleEvent):

Source/WebCore:

No new tests because no new behavior.

  • Modules/webaudio/AudioBufferSourceNode.cpp:

(WebCore::AudioBufferSourceNode::process):
(WebCore::AudioBufferSourceNode::setBuffer):

  • Modules/webaudio/AudioBufferSourceNode.h:
  • Modules/webaudio/AudioParamTimeline.cpp:

(WebCore::AudioParamTimeline::insertEvent):
(WebCore::AudioParamTimeline::cancelScheduledValues):
(WebCore::AudioParamTimeline::valueForContextTime):
(WebCore::AudioParamTimeline::valuesForTimeRange):

  • Modules/webaudio/AudioParamTimeline.h:
  • Modules/webaudio/ConvolverNode.cpp:

(WebCore::ConvolverNode::process):
(WebCore::ConvolverNode::reset):
(WebCore::ConvolverNode::setBuffer):

  • Modules/webaudio/ConvolverNode.h:
  • Modules/webaudio/MediaElementAudioSourceNode.cpp:

(WebCore::MediaElementAudioSourceNode::process):

  • Modules/webaudio/MediaElementAudioSourceNode.h:
  • Modules/webaudio/MediaStreamAudioSourceNode.cpp:

(WebCore::MediaStreamAudioSourceNode::setFormat):
(WebCore::MediaStreamAudioSourceNode::process):

  • Modules/webaudio/MediaStreamAudioSourceNode.h:
  • Modules/webaudio/OscillatorNode.cpp:

(WebCore::OscillatorNode::process):
(WebCore::OscillatorNode::setPeriodicWave):

  • Modules/webaudio/OscillatorNode.h:
  • Modules/webaudio/PannerNode.cpp:

(WebCore::PannerNode::process):
(WebCore::PannerNode::setPanningModel):

  • Modules/webaudio/PannerNode.h:
  • Modules/webaudio/WaveShaperProcessor.cpp:

(WebCore::WaveShaperProcessor::setCurve):
(WebCore::WaveShaperProcessor::setOversample):
(WebCore::WaveShaperProcessor::process):

  • Modules/webaudio/WaveShaperProcessor.h:
  • Modules/webdatabase/Database.cpp:

(WebCore::retrieveTextResultFromDatabase):
(WebCore::guidToVersionMap):
(WebCore::Database::Database):
(WebCore::Database::performOpenAndVerify):
(WebCore::Database::closeDatabase):
(WebCore::Database::getCachedVersion):
(WebCore::Database::setCachedVersion):
(WebCore::guidMutex): Deleted.

  • Modules/webdatabase/DatabaseManager.cpp:

(WebCore::DatabaseManager::existingDatabaseContextFor):
(WebCore::DatabaseManager::registerDatabaseContext):
(WebCore::DatabaseManager::unregisterDatabaseContext):
(WebCore::DatabaseManager::didConstructDatabaseContext):
(WebCore::DatabaseManager::didDestructDatabaseContext):
(WebCore::DatabaseManager::addProposedDatabase):
(WebCore::DatabaseManager::removeProposedDatabase):
(WebCore::DatabaseManager::fullPathForDatabase):
(WebCore::DatabaseManager::detailsForNameAndOrigin):

  • Modules/webdatabase/DatabaseManager.h:
  • bindings/objc/DOMInternal.mm:

(getDOMWrapper):
(addDOMWrapper):
(removeDOMWrapper):
(wrapperCacheLock): Deleted.

  • crypto/CryptoAlgorithmRegistry.cpp:

(WebCore::CryptoAlgorithmRegistry::singleton):
(WebCore::CryptoAlgorithmRegistry::CryptoAlgorithmRegistry):
(WebCore::CryptoAlgorithmRegistry::getIdentifierForName):
(WebCore::CryptoAlgorithmRegistry::nameForIdentifier):
(WebCore::CryptoAlgorithmRegistry::create):
(WebCore::CryptoAlgorithmRegistry::registerAlgorithm):
(WebCore::registryMutex): Deleted.

  • inspector/WorkerDebuggerAgent.cpp:

(WebCore::WorkerDebuggerAgent::WorkerDebuggerAgent):
(WebCore::WorkerDebuggerAgent::~WorkerDebuggerAgent):
(WebCore::WorkerDebuggerAgent::interruptAndDispatchInspectorCommands):

  • page/WheelEventTestTrigger.cpp:

(WebCore::WheelEventTestTrigger::clearAllTestDeferrals):
(WebCore::WheelEventTestTrigger::setTestCallbackAndStartNotificationTimer):
(WebCore::WheelEventTestTrigger::deferTestsForReason):
(WebCore::WheelEventTestTrigger::removeTestDeferralForReason):
(WebCore::WheelEventTestTrigger::triggerTestTimerFired):

  • page/WheelEventTestTrigger.h:
  • page/scrolling/ScrollingThread.cpp:

(WebCore::ScrollingThread::dispatch):
(WebCore::ScrollingThread::createThreadIfNeeded):
(WebCore::ScrollingThread::dispatchFunctionsFromScrollingThread):

  • page/scrolling/ScrollingThread.h:
  • page/scrolling/mac/ScrollingThreadMac.mm:

(WebCore::ScrollingThread::initializeRunLoop):

  • platform/audio/ReverbConvolver.cpp:

(WebCore::ReverbConvolver::~ReverbConvolver):
(WebCore::ReverbConvolver::backgroundThreadEntry):
(WebCore::ReverbConvolver::process):
(WebCore::ReverbConvolver::reset):

  • platform/audio/ReverbConvolver.h:
  • platform/ios/wak/WebCoreThreadRun.cpp:
  • platform/mac/Language.mm:

(WebCore::preferredLanguages):
(+[WebLanguageChangeObserver languagePreferencesDidChange:]):
(WebCore::platformUserPreferredLanguages):
(WebCore::preferredLanguagesMutex): Deleted.

  • platform/network/cf/LoaderRunLoopCF.cpp:

(WebCore::emptyPerform):
(WebCore::runLoaderThread):
(WebCore::loaderRunLoop):
(WebCore::loaderRunLoopMutex): Deleted.
(WebCore::loaderRunLoopConditionVariable): Deleted.

  • platform/network/cf/SocketStreamHandleCFNet.cpp:

(WebCore::callOnMainThreadAndWait):

  • platform/network/curl/SocketStreamHandle.h:
  • platform/network/curl/SocketStreamHandleCurl.cpp:

(WebCore::SocketStreamHandle::platformSend):
(WebCore::SocketStreamHandle::sendData):

  • platform/sql/SQLiteDatabaseTracker.cpp:

(WebCore::SQLiteDatabaseTracker::setClient):
(WebCore::SQLiteDatabaseTracker::incrementTransactionInProgressCount):
(WebCore::SQLiteDatabaseTracker::decrementTransactionInProgressCount):
(WebCore::SQLiteDatabaseTracker::transactionInProgressMutex): Deleted.

  • platform/text/TextBreakIterator.cpp:

(WebCore::compareAndSwapNonSharedCharacterBreakIterator):

  • platform/text/TextEncodingRegistry.cpp:

(WebCore::newTextCodec):
(WebCore::atomicCanonicalTextEncodingName):
(WebCore::dumpTextEncodingNameMap):
(WebCore::encodingRegistryMutex): Deleted.

  • workers/WorkerThread.cpp:

(WebCore::workerThreads):
(WebCore::WorkerThread::workerThreadCount):
(WebCore::WorkerThread::WorkerThread):
(WebCore::WorkerThread::~WorkerThread):
(WebCore::WorkerThread::releaseFastMallocFreeMemoryInAllThreads):
(WebCore::threadSetMutex): Deleted.

Source/WebKit2:

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::Storage::traverse):

  • Platform/IPC/Connection.cpp:

(IPC::Connection::SyncMessageState::processIncomingMessage):
(IPC::Connection::SyncMessageState::dispatchMessages):
(IPC::Connection::SyncMessageState::dispatchMessageAndResetDidScheduleDispatchMessagesForConnection):
(IPC::Connection::sendMessage):
(IPC::Connection::waitForMessage):
(IPC::Connection::processIncomingMessage):
(IPC::Connection::installIncomingSyncMessageCallback):
(IPC::Connection::uninstallIncomingSyncMessageCallback):
(IPC::Connection::hasIncomingSyncMessage):
(IPC::Connection::connectionDidClose):
(IPC::Connection::sendOutgoingMessages):
(IPC::Connection::enqueueIncomingMessage):
(IPC::Connection::dispatchOneMessage):

  • Platform/IPC/Connection.h:
  • Shared/BlockingResponseMap.h:

(BlockingResponseMap::waitForResponse):
(BlockingResponseMap::didReceiveResponse):
(BlockingResponseMap::cancel):

  • UIProcess/Plugins/gtk/PluginInfoCache.cpp:

(WebKit::PluginInfoCache::saveToFile):
(WebKit::PluginInfoCache::updatePluginInfo):

  • UIProcess/Plugins/gtk/PluginInfoCache.h:
  • UIProcess/mac/WKPrintingView.h:
  • UIProcess/mac/WKPrintingView.mm:

(-[WKPrintingView _preparePDFDataForPrintingOnSecondaryThread]):
(prepareDataForPrintingOnSecondaryThread):
(-[WKPrintingView knowsPageRange:]):

Source/WTF:

Also beef up Condition by giving it a StaticCondition variant.

  • wtf/Condition.h:

(WTF::ConditionBase::notifyAll):
(WTF::ConditionBase::waitForSecondsImpl):
(WTF::ConditionBase::absoluteFromRelative):
(WTF::Condition::Condition):
(WTF::Condition::notifyAll): Deleted.
(WTF::Condition::waitForSecondsImpl): Deleted.
(WTF::Condition::absoluteFromRelative): Deleted.

  • wtf/CryptographicallyRandomNumber.cpp:
  • wtf/HashTable.cpp:

(WTF::HashTableStats::recordCollisionAtCount):
(WTF::HashTableStats::dumpStats):
(WTF::hashTableStatsMutex): Deleted.

  • wtf/HashTable.h:

(WTF::KeyTraits>::HashTable):
(WTF::KeyTraits>::invalidateIterators):
(WTF::addIterator):
(WTF::removeIterator):

  • wtf/Lock.h:
  • wtf/MainThread.cpp:

(WTF::functionQueue):
(WTF::dispatchFunctionsFromMainThread):
(WTF::callOnMainThread):
(WTF::cancelCallOnMainThread):
(WTF::mainThreadFunctionQueueMutex): Deleted.

  • wtf/StackStats.cpp:

(WTF::StackStats::PerThreadStats::PerThreadStats):
(WTF::StackStats::CheckPoint::CheckPoint):
(WTF::StackStats::CheckPoint::~CheckPoint):
(WTF::StackStats::probe):
(WTF::StackStats::LayoutCheckPoint::LayoutCheckPoint):
(WTF::StackStats::LayoutCheckPoint::~LayoutCheckPoint):
(WTF::StackStats::initialize): Deleted.

  • wtf/StackStats.h:

(WTF::StackStats::LayoutCheckPoint::LayoutCheckPoint):
(WTF::StackStats::probe):
(WTF::StackStats::initialize): Deleted.

  • wtf/ThreadingPthreads.cpp:

(WTF::initializeThreading):

  • wtf/mac/DeprecatedSymbolsUsedBySafari.mm:

(WTF::callOnMainThread):
(WTF::lockAtomicallyInitializedStaticMutex):
(WTF::unlockAtomicallyInitializedStaticMutex):
(WTF::atomicallyInitializedStaticMutex): Deleted.

  • wtf/text/StringView.cpp:

(WTF::StringView::UnderlyingString::UnderlyingString):
(WTF::underlyingStrings):
(WTF::StringView::invalidate):
(WTF::StringView::adoptUnderlyingString):
(WTF::StringView::setUnderlyingString):
(WTF::underlyingStringsMutex): Deleted.

  • wtf/unicode/icu/CollatorICU.cpp:

(WTF::Collator::Collator):
(WTF::Collator::~Collator):
(WTF::cachedCollatorMutex): Deleted.

9:17 AM Changeset in webkit [188910] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.10/Source/WTF

Merge r188605 - WTF::Condition should have a fast path for notifyOne/notifyAll that avoids calling unparkOne/unparkAll
https://bugs.webkit.org/show_bug.cgi?id=148090

Reviewed by Geoffrey Garen.

This change makes notifyOne()/notifyAll() blazing fast when nobody is waiting, by using the
various hooks that ParkingLot gives us to maintain a m_hasWaiters variable. When it's false, it
means that any unpark operation would simply return immediately.

This is a 45% speed-up for the 1-producer/1-consumer scenario with a 100-element queue when you
use the notifyOne()-per-enqueue style. What's cool about this change is that you can now safely
call notifyOne() (or notifyAll()) out of paranoia, just in case someone might be waiting. It's
free to do so if nobody is waiting!

  • wtf/Condition.h:

(WTF::Condition::Condition):
(WTF::Condition::waitUntil):
(WTF::Condition::notifyOne):
(WTF::Condition::notifyAll):

8:53 AM WebKitGTK/2.10.x edited by Michael Catanzaro
Propose bug #148430 (diff)
8:50 AM Changeset in webkit [188909] by Carlos Garcia Campos
  • 108 edits
    1 add in releases/WebKitGTK/webkit-2.10

Merge r188594 - Replace all remaining uses of WTF::Mutex with WTF::Lock
https://bugs.webkit.org/show_bug.cgi?id=148089

Reviewed by Geoffrey Garen.

Source/WebCore:

No new tests because no new behavior.

  • Modules/webaudio/AsyncAudioDecoder.cpp:

(WebCore::AsyncAudioDecoder::AsyncAudioDecoder):
(WebCore::AsyncAudioDecoder::runLoop):

  • Modules/webaudio/AsyncAudioDecoder.h:
  • Modules/webaudio/AudioContext.h:
  • Modules/webaudio/MediaStreamAudioSource.cpp:

(WebCore::MediaStreamAudioSource::addAudioConsumer):
(WebCore::MediaStreamAudioSource::removeAudioConsumer):
(WebCore::MediaStreamAudioSource::setAudioFormat):
(WebCore::MediaStreamAudioSource::consumeAudio):

  • Modules/webaudio/MediaStreamAudioSource.h:
  • Modules/webdatabase/Database.cpp:

(WebCore::Database::close):
(WebCore::Database::runTransaction):
(WebCore::Database::inProgressTransactionCompleted):
(WebCore::Database::hasPendingTransaction):

  • Modules/webdatabase/Database.h:
  • Modules/webdatabase/DatabaseTask.cpp:

(WebCore::DatabaseTaskSynchronizer::taskCompleted):

  • Modules/webdatabase/DatabaseTask.h:
  • Modules/webdatabase/DatabaseThread.cpp:

(WebCore::DatabaseThread::start):
(WebCore::DatabaseThread::databaseThread):

  • Modules/webdatabase/DatabaseThread.h:
  • Modules/webdatabase/DatabaseTracker.cpp:

(WebCore::DatabaseTracker::setDatabaseDirectoryPath):
(WebCore::DatabaseTracker::canEstablishDatabase):
(WebCore::DatabaseTracker::retryCanEstablishDatabase):
(WebCore::DatabaseTracker::hasEntryForOrigin):
(WebCore::DatabaseTracker::getMaxSizeForDatabase):
(WebCore::DatabaseTracker::closeAllDatabases):
(WebCore::DatabaseTracker::fullPathForDatabase):
(WebCore::DatabaseTracker::origins):
(WebCore::DatabaseTracker::databaseNamesForOrigin):
(WebCore::DatabaseTracker::detailsForNameAndOrigin):
(WebCore::DatabaseTracker::setDatabaseDetails):
(WebCore::DatabaseTracker::doneCreatingDatabase):
(WebCore::DatabaseTracker::addOpenDatabase):
(WebCore::DatabaseTracker::removeOpenDatabase):
(WebCore::DatabaseTracker::getOpenDatabases):
(WebCore::DatabaseTracker::originLockFor):
(WebCore::DatabaseTracker::quotaForOrigin):
(WebCore::DatabaseTracker::setQuota):
(WebCore::DatabaseTracker::deleteOrigin):
(WebCore::DatabaseTracker::deleteDatabase):
(WebCore::DatabaseTracker::deleteDatabaseFile):
(WebCore::DatabaseTracker::removeDeletedOpenedDatabases):
(WebCore::DatabaseTracker::deleteDatabaseFileIfEmpty):
(WebCore::DatabaseTracker::openDatabaseMutex):
(WebCore::DatabaseTracker::setClient):
(WebCore::notificationMutex):
(WebCore::DatabaseTracker::scheduleNotifyDatabaseChanged):
(WebCore::DatabaseTracker::notifyDatabasesChanged):

  • Modules/webdatabase/DatabaseTracker.h:
  • Modules/webdatabase/OriginLock.h:
  • Modules/webdatabase/SQLCallbackWrapper.h:

(WebCore::SQLCallbackWrapper::clear):
(WebCore::SQLCallbackWrapper::unwrap):
(WebCore::SQLCallbackWrapper::hasCallback):

  • Modules/webdatabase/SQLTransactionBackend.cpp:

(WebCore::SQLTransactionBackend::doCleanup):
(WebCore::SQLTransactionBackend::enqueueStatementBackend):
(WebCore::SQLTransactionBackend::getNextStatement):

  • Modules/webdatabase/SQLTransactionBackend.h:
  • bindings/js/WorkerScriptController.cpp:

(WebCore::WorkerScriptController::scheduleExecutionTermination):
(WebCore::WorkerScriptController::isExecutionTerminating):

  • bindings/js/WorkerScriptController.h:
  • dom/default/PlatformMessagePortChannel.cpp:

(WebCore::MessagePortChannel::postMessageToRemote):
(WebCore::MessagePortChannel::tryGetMessageFromRemote):
(WebCore::MessagePortChannel::isConnectedTo):
(WebCore::MessagePortChannel::hasPendingActivity):
(WebCore::MessagePortChannel::locallyEntangledPort):
(WebCore::PlatformMessagePortChannel::setRemotePort):
(WebCore::PlatformMessagePortChannel::entangledChannel):
(WebCore::PlatformMessagePortChannel::closeInternal):

  • dom/default/PlatformMessagePortChannel.h:
  • loader/icon/IconDatabase.cpp:

(WebCore::IconDatabase::removeAllIcons):
(WebCore::IconDatabase::synchronousIconForPageURL):
(WebCore::IconDatabase::synchronousNativeIconForPageURL):
(WebCore::IconDatabase::synchronousIconURLForPageURL):
(WebCore::IconDatabase::retainIconForPageURL):
(WebCore::IconDatabase::performRetainIconForPageURL):
(WebCore::IconDatabase::releaseIconForPageURL):
(WebCore::IconDatabase::performReleaseIconForPageURL):
(WebCore::IconDatabase::setIconDataForIconURL):
(WebCore::IconDatabase::setIconURLForPageURL):
(WebCore::IconDatabase::synchronousLoadDecisionForIconURL):
(WebCore::IconDatabase::synchronousIconDataKnownForIconURL):
(WebCore::IconDatabase::pageURLMappingCount):
(WebCore::IconDatabase::retainedPageURLCount):
(WebCore::IconDatabase::iconRecordCount):
(WebCore::IconDatabase::iconRecordCountWithData):
(WebCore::IconDatabase::wakeSyncThread):
(WebCore::IconDatabase::scheduleOrDeferSyncTimer):
(WebCore::IconDatabase::isOpenBesidesMainThreadCallbacks):
(WebCore::IconDatabase::databasePath):
(WebCore::IconDatabase::getOrCreatePageURLRecord):
(WebCore::IconDatabase::iconDatabaseSyncThread):
(WebCore::IconDatabase::performOpenInitialization):
(WebCore::IconDatabase::performURLImport):
(WebCore::IconDatabase::syncThreadMainLoop):
(WebCore::IconDatabase::performPendingRetainAndReleaseOperations):
(WebCore::IconDatabase::readFromDatabase):
(WebCore::IconDatabase::writeToDatabase):
(WebCore::IconDatabase::pruneUnretainedIcons):
(WebCore::IconDatabase::cleanupSyncThread):

  • loader/icon/IconDatabase.h:
  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::shouldHandleWheelEventSynchronously):
(WebCore::ScrollingTree::commitNewTreeState):
(WebCore::ScrollingTree::setMainFramePinState):
(WebCore::ScrollingTree::mainFrameScrollPosition):
(WebCore::ScrollingTree::setMainFrameScrollPosition):
(WebCore::ScrollingTree::isPointInNonFastScrollableRegion):
(WebCore::ScrollingTree::isRubberBandInProgress):
(WebCore::ScrollingTree::setMainFrameIsRubberBanding):
(WebCore::ScrollingTree::isScrollSnapInProgress):
(WebCore::ScrollingTree::setMainFrameIsScrollSnapping):
(WebCore::ScrollingTree::setCanRubberBandState):
(WebCore::ScrollingTree::rubberBandsAtLeft):
(WebCore::ScrollingTree::rubberBandsAtRight):
(WebCore::ScrollingTree::rubberBandsAtBottom):
(WebCore::ScrollingTree::rubberBandsAtTop):
(WebCore::ScrollingTree::setScrollPinningBehavior):
(WebCore::ScrollingTree::scrollPinningBehavior):
(WebCore::ScrollingTree::willWheelEventStartSwipeGesture):
(WebCore::ScrollingTree::latchedNode):
(WebCore::ScrollingTree::setLatchedNode):
(WebCore::ScrollingTree::clearLatchedNode):

  • page/scrolling/ScrollingTree.h:
  • platform/MemoryPressureHandler.h:
  • platform/audio/HRTFDatabaseLoader.cpp:

(WebCore::HRTFDatabaseLoader::loadAsynchronously):
(WebCore::HRTFDatabaseLoader::waitForLoaderThreadCompletion):

  • platform/audio/HRTFDatabaseLoader.h:
  • platform/cocoa/MemoryPressureHandlerCocoa.mm:

(WebCore::MemoryPressureHandler::setReceivedMemoryPressure):
(WebCore::MemoryPressureHandler::clearMemoryPressure):
(WebCore::MemoryPressureHandler::shouldWaitForMemoryClearMessage):
(WebCore::MemoryPressureHandler::respondToMemoryPressureIfNeeded):

  • platform/graphics/DisplayRefreshMonitor.cpp:

(WebCore::DisplayRefreshMonitor::displayDidRefresh):

  • platform/graphics/DisplayRefreshMonitor.h:

(WebCore::DisplayRefreshMonitor::setMonotonicAnimationStartTime):
(WebCore::DisplayRefreshMonitor::mutex):

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:

(WebCore::MediaPlayerPrivateAVFoundation::setDelayCallbacks):
(WebCore::MediaPlayerPrivateAVFoundation::clearMainThreadPendingFlag):
(WebCore::MediaPlayerPrivateAVFoundation::dispatchNotification):

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
  • platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:

(WebCore::AVFWrapper::callbackContext):
(WebCore::AVFWrapper::~AVFWrapper):
(WebCore::AVFWrapper::mapLock):
(WebCore::AVFWrapper::addToMap):
(WebCore::AVFWrapper::removeFromMap):
(WebCore::AVFWrapper::periodicTimeObserverCallback):
(WebCore::AVFWrapper::processNotification):
(WebCore::AVFWrapper::loadPlayableCompletionCallback):
(WebCore::AVFWrapper::loadMetadataCompletionCallback):
(WebCore::AVFWrapper::seekCompletedCallback):
(WebCore::AVFWrapper::processCue):
(WebCore::AVFWrapper::legibleOutputCallback):
(WebCore::AVFWrapper::processShouldWaitForLoadingOfResource):
(WebCore::AVFWrapper::resourceLoaderShouldWaitForLoadingOfRequestedResource):

  • platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.cpp:

(WebCore::InbandTextTrackPrivateGStreamer::handleSample):
(WebCore::InbandTextTrackPrivateGStreamer::notifyTrackOfSample):

  • platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.h:
  • platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp:

(WebCore::TrackPrivateBaseGStreamer::tagsChanged):
(WebCore::TrackPrivateBaseGStreamer::notifyTrackOfTagsChanged):

  • platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h:
  • platform/graphics/mac/DisplayRefreshMonitorMac.cpp:

(WebCore::DisplayRefreshMonitorMac::requestRefreshCallback):
(WebCore::DisplayRefreshMonitorMac::displayLinkFired):

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:

(WebCore::MediaPlayerPrivateMediaFoundation::addListener):
(WebCore::MediaPlayerPrivateMediaFoundation::removeListener):
(WebCore::MediaPlayerPrivateMediaFoundation::notifyDeleted):
(WebCore::MediaPlayerPrivateMediaFoundation::AsyncCallback::Invoke):
(WebCore::MediaPlayerPrivateMediaFoundation::AsyncCallback::onMediaPlayerDeleted):

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:
  • platform/ios/LegacyTileCache.h:
  • platform/ios/LegacyTileCache.mm:

(WebCore::LegacyTileCache::setTilesOpaque):
(WebCore::LegacyTileCache::doLayoutTiles):
(WebCore::LegacyTileCache::setCurrentScale):
(WebCore::LegacyTileCache::commitScaleChange):
(WebCore::LegacyTileCache::layoutTilesNow):
(WebCore::LegacyTileCache::layoutTilesNowForRect):
(WebCore::LegacyTileCache::removeAllNonVisibleTiles):
(WebCore::LegacyTileCache::removeAllTiles):
(WebCore::LegacyTileCache::removeForegroundTiles):
(WebCore::LegacyTileCache::setContentReplacementImage):
(WebCore::LegacyTileCache::contentReplacementImage):
(WebCore::LegacyTileCache::tileCreationTimerFired):
(WebCore::LegacyTileCache::setNeedsDisplayInRect):
(WebCore::LegacyTileCache::updateTilingMode):
(WebCore::LegacyTileCache::setTilingMode):
(WebCore::LegacyTileCache::doPendingRepaints):
(WebCore::LegacyTileCache::flushSavedDisplayRects):
(WebCore::LegacyTileCache::prepareToDraw):

  • platform/ios/LegacyTileLayerPool.h:
  • platform/ios/LegacyTileLayerPool.mm:

(WebCore::LegacyTileLayerPool::addLayer):
(WebCore::LegacyTileLayerPool::takeLayerWithSize):
(WebCore::LegacyTileLayerPool::setCapacity):
(WebCore::LegacyTileLayerPool::prune):
(WebCore::LegacyTileLayerPool::drain):

  • platform/network/curl/CurlDownload.cpp:

(WebCore::CurlDownloadManager::add):
(WebCore::CurlDownloadManager::remove):
(WebCore::CurlDownloadManager::getActiveDownloadCount):
(WebCore::CurlDownloadManager::getPendingDownloadCount):
(WebCore::CurlDownloadManager::stopThreadIfIdle):
(WebCore::CurlDownloadManager::updateHandleList):
(WebCore::CurlDownload::~CurlDownload):
(WebCore::CurlDownload::init):
(WebCore::CurlDownload::getTempPath):
(WebCore::CurlDownload::getUrl):
(WebCore::CurlDownload::getResponse):
(WebCore::CurlDownload::closeFile):
(WebCore::CurlDownload::didReceiveHeader):
(WebCore::CurlDownload::didReceiveData):
(WebCore::CurlDownload::didFail):

  • platform/network/curl/CurlDownload.h:
  • platform/network/curl/ResourceHandleManager.cpp:

(WebCore::cookieJarPath):
(WebCore::sharedResourceMutex):
(WebCore::curl_lock_callback):
(WebCore::curl_unlock_callback):

  • platform/network/ios/QuickLook.mm:

(WebCore::QLDirectoryAttributes):
(qlPreviewConverterDictionaryMutex):
(WebCore::addQLPreviewConverterWithFileForURL):
(WebCore::qlPreviewConverterUTIForURL):
(WebCore::removeQLPreviewConverterForURL):
(WebCore::safeQLURLForDocumentURLAndResourceURL):

  • platform/sql/SQLiteDatabase.cpp:

(WebCore::SQLiteDatabase::close):
(WebCore::SQLiteDatabase::maximumSize):
(WebCore::SQLiteDatabase::setMaximumSize):
(WebCore::SQLiteDatabase::pageSize):
(WebCore::SQLiteDatabase::freeSpaceSize):
(WebCore::SQLiteDatabase::totalSize):
(WebCore::SQLiteDatabase::runIncrementalVacuumCommand):
(WebCore::SQLiteDatabase::setAuthorizer):

  • platform/sql/SQLiteDatabase.h:

(WebCore::SQLiteDatabase::databaseMutex):

  • platform/sql/SQLiteStatement.cpp:

(WebCore::SQLiteStatement::prepare):
(WebCore::SQLiteStatement::step):

  • workers/WorkerThread.cpp:

(WebCore::WorkerThread::start):
(WebCore::WorkerThread::workerThread):
(WebCore::WorkerThread::stop):

  • workers/WorkerThread.h:

Source/WebKit:

  • Storage/StorageAreaSync.cpp:

(WebCore::StorageAreaSync::syncTimerFired):
(WebCore::StorageAreaSync::markImported):
(WebCore::StorageAreaSync::blockUntilImportComplete):
(WebCore::StorageAreaSync::performSync):

  • Storage/StorageAreaSync.h:
  • Storage/StorageTracker.cpp:

(WebCore::StorageTracker::setDatabaseDirectoryPath):
(WebCore::StorageTracker::finishedImportingOriginIdentifiers):
(WebCore::StorageTracker::syncImportOriginIdentifiers):
(WebCore::StorageTracker::syncFileSystemAndTrackerDatabase):
(WebCore::StorageTracker::setOriginDetails):
(WebCore::StorageTracker::syncSetOriginDetails):
(WebCore::StorageTracker::origins):
(WebCore::StorageTracker::deleteAllOrigins):
(WebCore::StorageTracker::syncDeleteAllOrigins):
(WebCore::StorageTracker::deleteOrigin):
(WebCore::StorageTracker::syncDeleteOrigin):
(WebCore::StorageTracker::canDeleteOrigin):
(WebCore::StorageTracker::cancelDeletingOrigin):
(WebCore::StorageTracker::diskUsageForOrigin):

  • Storage/StorageTracker.h:

Source/WebKit/ios:

  • WebCoreSupport/WebFixedPositionContent.mm:

(WebFixedPositionContentDataLock):
(-[WebFixedPositionContent scrollOrZoomChanged:]):
(-[WebFixedPositionContent overflowScrollPositionForLayer:changedTo:]):
(-[WebFixedPositionContent setViewportConstrainedLayers:stickyContainerMap:]):
(-[WebFixedPositionContent hasFixedOrStickyPositionLayers]):
(-[WebFixedPositionContent minimumOffsetFromFixedPositionLayersToAnchorEdge:ofRect:inLayer:]):

Source/WebKit/mac:

  • Storage/WebDatabaseManager.mm:

(transactionBackgroundTaskIdentifierLock):
(+[WebDatabaseManager startBackgroundTask]):
(+[WebDatabaseManager endBackgroundTask]):

  • WebView/WebView.mm:

(-[WebView _synchronizeCustomFixedPositionLayoutRect]):
(-[WebView _setCustomFixedPositionLayoutRectInWebThread:synchronize:]):
(-[WebView _setCustomFixedPositionLayoutRect:]):
(-[WebView _fetchCustomFixedPositionLayoutRect:]):

  • WebView/WebViewData.h:

Source/WebKit/win:

  • Plugins/PluginMainThreadScheduler.cpp:

(WebCore::PluginMainThreadScheduler::scheduleCall):
(WebCore::PluginMainThreadScheduler::registerPlugin):
(WebCore::PluginMainThreadScheduler::unregisterPlugin):
(WebCore::PluginMainThreadScheduler::dispatchCallsForPlugin):

  • Plugins/PluginMainThreadScheduler.h:
  • WebIconDatabase.cpp:

(WebIconDatabase::didRemoveAllIcons):
(WebIconDatabase::didImportIconURLForPageURL):
(WebIconDatabase::deliverNotifications):

  • WebIconDatabase.h:
  • WebLocalizableStrings.cpp:

(mainBundleLocStrings):
(frameworkLocStringsMutex):
(findCachedString):
(cacheString):

Source/WebKit2:

  • DatabaseProcess/DatabaseProcess.cpp:

(WebKit::DatabaseProcess::postDatabaseTask):
(WebKit::DatabaseProcess::performNextDatabaseTask):

  • DatabaseProcess/DatabaseProcess.h:
  • DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:

(WebKit::UniqueIDBDatabase::shutdown):
(WebKit::UniqueIDBDatabase::postMainThreadTask):
(WebKit::UniqueIDBDatabase::performNextMainThreadTask):
(WebKit::UniqueIDBDatabase::postDatabaseTask):
(WebKit::UniqueIDBDatabase::performNextDatabaseTask):

  • DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:
  • Platform/IPC/Connection.cpp:

(IPC::Connection::sendSyncMessage):
(IPC::Connection::sendSyncMessageFromSecondaryThread):
(IPC::Connection::waitForSyncReply):
(IPC::Connection::processIncomingSyncReply):
(IPC::Connection::connectionDidClose):

  • Platform/IPC/Connection.h:
  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:

(WebKit::CoordinatedGraphicsScene::appendUpdate):

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:

(WebKit::ThreadedCompositor::createCompositingThread):
(WebKit::ThreadedCompositor::runCompositingThread):
(WebKit::ThreadedCompositor::terminateCompositingThread):

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
  • Shared/Network/CustomProtocols/Cocoa/CustomProtocolManagerCocoa.mm:

(WebKit::CustomProtocolManager::addCustomProtocol):
(WebKit::CustomProtocolManager::removeCustomProtocol):
(WebKit::CustomProtocolManager::registerScheme):
(WebKit::CustomProtocolManager::unregisterScheme):
(WebKit::CustomProtocolManager::supportsScheme):
(WebKit::CustomProtocolManager::protocolForID):

  • Shared/Network/CustomProtocols/CustomProtocolManager.h:
  • Shared/linux/SeccompFilters/SeccompBroker.cpp:
  • WebProcess/Plugins/PluginProcessConnectionManager.cpp:

(WebKit::PluginProcessConnectionManager::getPluginProcessConnection):
(WebKit::PluginProcessConnectionManager::removePluginProcessConnection):
(WebKit::PluginProcessConnectionManager::pluginProcessCrashed):

  • WebProcess/Plugins/PluginProcessConnectionManager.h:
  • WebProcess/WebPage/EventDispatcher.cpp:

(WebKit::EventDispatcher::addScrollingTreeForPage):
(WebKit::EventDispatcher::removeScrollingTreeForPage):
(WebKit::EventDispatcher::wheelEvent):

  • WebProcess/WebPage/EventDispatcher.h:
  • WebProcess/soup/WebKitSoupRequestInputStream.cpp:

(webkitSoupRequestInputStreamReadAsync):
(webkitSoupRequestInputStreamAddData):

Source/WTF:

This also beefs up and rationalizes the Condition API, so that it can deal with units of time
other than just steady_clock. This makes it easier to port ThreadCondition and
std::condition_variable code over to Condition. This patch does not take a position on what
kind of time is best; from reading a lot of the uses in WebCore, it seems like our use of
double to measure seconds is often nicer than the many different classes in std::chrono.

Also added a Condition speed test, to make sure that all of this is a good idea. And indeed it
is. The 1-producer/1-consumer scenario with a 100-element queue runs 36x faster using
Lock/Condition than Mutex/ThreadCondition when you use the notifyOne()-per-enqueue style. It
runs 58x faster with Lock/Condition when you use the notifyAll()-at-boundary style. Note that
I have a bug open for making the notifyOne()-per-enqueue style even faster:
https://bugs.webkit.org/show_bug.cgi?id=148090. Also, the 10-consumer/10-producer scenario with
a 100-element queue runs 20x faster with Lock/Condition for notifyOne()-per-enqueue and 30x
faster with notifyAll()-at-boundary. The only way to tweak the test to get
Mutex/ThreadCondition to win is to have one producer, one consumer, a 1-element queue, and use
the notifyOne()-per-enqueue style. In that case, one of the two threads is going to be waiting
most of the time and the test basically measures wake-up latency and nothing else. Because
Condition::wait() does a little bit more work than ThreadCondition::wait(),
Mutex/ThreadCondition end up running 3% faster in this test case. But if you vary any of the
parameters of the test, Mutex/ThreadCondition ends up losing - all it takes is more threads or
a queue size of 5 or more. To my knowledge, we never do producer/consumer with a queue bounded
to one element precisely because that approach is the least efficient regardless of locking
algorithm. For example, neither WTF::MessageQueue nor DFG::Worklist have any bounds on their
queue size. So, it seems that replacing all uses of system mutexes and condition variables with
our own thing is a great idea.

  • benchmarks/LockSpeedTest.cpp:
  • benchmarks/ConditionSpeedTest.cpp: Added.
  • wtf/Condition.h:

(WTF::Condition::Condition):
(WTF::Condition::waitUntil):
(WTF::Condition::waitFor):
(WTF::Condition::wait):
(WTF::Condition::waitUntilWallClockSeconds):
(WTF::Condition::waitUntilMonotonicClockSeconds):
(WTF::Condition::notifyOne):
(WTF::Condition::notifyAll):
(WTF::Condition::waitForSecondsImpl):
(WTF::Condition::waitForImpl):
(WTF::Condition::absoluteFromRelative):

  • wtf/MessageQueue.h:

(WTF::MessageQueue::infiniteTime):
(WTF::MessageQueue<DataType>::append):
(WTF::MessageQueue<DataType>::appendAndKill):
(WTF::MessageQueue<DataType>::appendAndCheckEmpty):
(WTF::MessageQueue<DataType>::prepend):
(WTF::MessageQueue<DataType>::removeIf):
(WTF::MessageQueue<DataType>::isEmpty):
(WTF::MessageQueue<DataType>::kill):
(WTF::MessageQueue<DataType>::killed):

  • wtf/ParallelJobsGeneric.cpp:

(WTF::ParallelEnvironment::ThreadPrivate::execute):
(WTF::ParallelEnvironment::ThreadPrivate::waitForFinish):
(WTF::ParallelEnvironment::ThreadPrivate::workerThread):

  • wtf/ParallelJobsGeneric.h:
  • wtf/ParkingLot.cpp:

(WTF::ParkingLot::parkConditionally):

  • wtf/ParkingLot.h:

(WTF::ParkingLot::compareAndPark):

  • wtf/ThreadingPthreads.cpp:

(WTF::initializeThreading):

  • wtf/ThreadingWin.cpp:

(WTF::initializeThreading):

  • wtf/dtoa.cpp:

(WTF::pow5mult):

  • wtf/dtoa.h:

Tools:

  • DumpRenderTree/JavaScriptThreading.cpp:

(javaScriptThreadsMutex):
(runJavaScriptThread):
(startJavaScriptThreads):
(stopJavaScriptThreads):

  • TestWebKitAPI/Tests/WTF/Condition.cpp: Fixed a bug in the test that I found from turning the test into a benchmark.
  • TestWebKitAPI/Tests/WTF/WorkQueue.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WTF/glib/WorkQueueGLib.cpp:

(TestWebKitAPI::TEST):

5:41 AM Changeset in webkit [188908] by Carlos Garcia Campos
  • 35 edits in releases/WebKitGTK/webkit-2.10/Source

Merge r188499 - Use WTF::Lock and WTF::Condition instead of WTF::Mutex, WTF::ThreadCondition, std::mutex, and std::condition_variable
https://bugs.webkit.org/show_bug.cgi?id=147999

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

  • API/JSVirtualMachine.mm:

(initWrapperCache):
(+[JSVMWrapperCache addWrapper:forJSContextGroupRef:]):
(+[JSVMWrapperCache wrapperForJSContextGroupRef:]):
(wrapperCacheMutex): Deleted.

  • bytecode/SamplingTool.cpp:

(JSC::SamplingTool::doRun):
(JSC::SamplingTool::notifyOfScope):

  • bytecode/SamplingTool.h:
  • dfg/DFGThreadData.h:
  • dfg/DFGWorklist.cpp:

(JSC::DFG::Worklist::~Worklist):
(JSC::DFG::Worklist::isActiveForVM):
(JSC::DFG::Worklist::enqueue):
(JSC::DFG::Worklist::compilationState):
(JSC::DFG::Worklist::waitUntilAllPlansForVMAreReady):
(JSC::DFG::Worklist::removeAllReadyPlansForVM):
(JSC::DFG::Worklist::completeAllReadyPlansForVM):
(JSC::DFG::Worklist::visitWeakReferences):
(JSC::DFG::Worklist::removeDeadPlans):
(JSC::DFG::Worklist::queueLength):
(JSC::DFG::Worklist::dump):
(JSC::DFG::Worklist::runThread):

  • dfg/DFGWorklist.h:
  • disassembler/Disassembler.cpp:
  • heap/CopiedSpace.cpp:

(JSC::CopiedSpace::doneFillingBlock):
(JSC::CopiedSpace::doneCopying):

  • heap/CopiedSpace.h:
  • heap/CopiedSpaceInlines.h:

(JSC::CopiedSpace::recycleBorrowedBlock):
(JSC::CopiedSpace::allocateBlockForCopyingPhase):

  • heap/GCThread.cpp:

(JSC::GCThread::waitForNextPhase):
(JSC::GCThread::gcThreadMain):

  • heap/GCThreadSharedData.cpp:

(JSC::GCThreadSharedData::GCThreadSharedData):
(JSC::GCThreadSharedData::~GCThreadSharedData):
(JSC::GCThreadSharedData::startNextPhase):
(JSC::GCThreadSharedData::endCurrentPhase):
(JSC::GCThreadSharedData::didStartMarking):
(JSC::GCThreadSharedData::didFinishMarking):

  • heap/GCThreadSharedData.h:
  • heap/HeapTimer.h:
  • heap/MachineStackMarker.cpp:

(JSC::ActiveMachineThreadsManager::Locker::Locker):
(JSC::ActiveMachineThreadsManager::add):
(JSC::ActiveMachineThreadsManager::remove):
(JSC::ActiveMachineThreadsManager::ActiveMachineThreadsManager):
(JSC::MachineThreads::~MachineThreads):
(JSC::MachineThreads::addCurrentThread):
(JSC::MachineThreads::removeThreadIfFound):
(JSC::MachineThreads::tryCopyOtherThreadStack):
(JSC::MachineThreads::tryCopyOtherThreadStacks):
(JSC::MachineThreads::gatherConservativeRoots):

  • heap/MachineStackMarker.h:
  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::donateKnownParallel):
(JSC::SlotVisitor::drain):
(JSC::SlotVisitor::drainFromShared):
(JSC::SlotVisitor::mergeOpaqueRoots):

  • heap/SlotVisitorInlines.h:

(JSC::SlotVisitor::containsOpaqueRootTriState):

  • inspector/remote/RemoteInspectorDebuggableConnection.h:
  • inspector/remote/RemoteInspectorDebuggableConnection.mm:

(Inspector::RemoteInspectorHandleRunSourceGlobal):
(Inspector::RemoteInspectorQueueTaskOnGlobalQueue):
(Inspector::RemoteInspectorInitializeGlobalQueue):
(Inspector::RemoteInspectorHandleRunSourceWithInfo):
(Inspector::RemoteInspectorDebuggableConnection::setup):
(Inspector::RemoteInspectorDebuggableConnection::closeFromDebuggable):
(Inspector::RemoteInspectorDebuggableConnection::close):
(Inspector::RemoteInspectorDebuggableConnection::sendMessageToBackend):
(Inspector::RemoteInspectorDebuggableConnection::queueTaskOnPrivateRunLoop):

  • interpreter/JSStack.cpp:

(JSC::JSStack::JSStack):
(JSC::JSStack::releaseExcessCapacity):
(JSC::JSStack::addToCommittedByteCount):
(JSC::JSStack::committedByteCount):
(JSC::stackStatisticsMutex): Deleted.
(JSC::JSStack::initializeThreading): Deleted.

  • interpreter/JSStack.h:

(JSC::JSStack::gatherConservativeRoots):
(JSC::JSStack::sanitizeStack):
(JSC::JSStack::size):
(JSC::JSStack::initializeThreading): Deleted.

  • jit/ExecutableAllocator.cpp:

(JSC::DemandExecutableAllocator::DemandExecutableAllocator):
(JSC::DemandExecutableAllocator::~DemandExecutableAllocator):
(JSC::DemandExecutableAllocator::bytesAllocatedByAllAllocators):
(JSC::DemandExecutableAllocator::bytesCommittedByAllocactors):
(JSC::DemandExecutableAllocator::dumpProfileFromAllAllocators):
(JSC::DemandExecutableAllocator::allocators):
(JSC::DemandExecutableAllocator::allocatorsMutex):

  • jit/JITThunks.cpp:

(JSC::JITThunks::ctiStub):

  • jit/JITThunks.h:
  • profiler/ProfilerDatabase.cpp:

(JSC::Profiler::Database::ensureBytecodesFor):
(JSC::Profiler::Database::notifyDestruction):

  • profiler/ProfilerDatabase.h:
  • runtime/InitializeThreading.cpp:

(JSC::initializeThreading):

  • runtime/JSLock.cpp:

(JSC::GlobalJSLock::GlobalJSLock):
(JSC::GlobalJSLock::~GlobalJSLock):
(JSC::JSLockHolder::JSLockHolder):
(JSC::GlobalJSLock::initialize): Deleted.

  • runtime/JSLock.h:

Source/WTF:

Relanding after fixing a deadlock on Linux.

  • wtf/Condition.h: "using WTF::Condition".
  • wtf/Lock.h:

(WTF::LockBase::lock):
(WTF::LockBase::tryLock): Add tryLock() because it turns out that we use it sometimes.
(WTF::LockBase::try_lock): unique_lock needs this.
(WTF::LockBase::unlock):

  • wtf/ParkingLot.cpp:

(WTF::ParkingLot::parkConditionally): Work around a Linux C++ bug where wait_until with time_point::max() immediately returns and doesn't flash the lock.

5:40 AM Changeset in webkit [188907] by Carlos Garcia Campos
  • 12 edits
    2 adds in releases/WebKitGTK/webkit-2.10

Merge r188400 - WTF should have a compact Condition object to use with Lock
https://bugs.webkit.org/show_bug.cgi?id=147986

Reviewed by Geoffrey Garen.

Source/WTF:

Adds a condition variable implementation based on ParkingLot, called simply WTF::Condition.
It can be used with WTF::Lock or actually any lock implementation. It should even work with
WTF::SpinLock, WTF::Mutex, or std::mutex. Best of all, Condition only requires one byte.

ParkingLot almost contained all of the functionality needed to implemenet wait/notify. We
could have implemented Condition using a 32-bit (or even 64-bit) version that protects
against a notify that happens just before we park. But, this changes the ParkingLot API to
give us the ability to run some code between when ParkingLot enqueues the current thread
and when it actually sleeps. This callback is called with no locks held, so it can call
unlock() on any kind of lock, so long as that lock's unlock() method doesn't recurse into
ParkingLot::parkConditionally(). That seems unlikely; unlock() is more likely to call
ParkingLot::unparkOne() or unparkAll(). WTF::Lock will never call parkConditionally()
inside unlock(), so WTF::Lock is definitely appropriate for use with Condition.

Condition supports most of the API that std::condition_variable supports. It does some
things to try to reduce footgun potential. The preferred timeout form is waitUntil() which
takes an absolute time from the steady_clock. The only relative timeout form also takes a
predicate callback, so it's impossible to write the subtly incorrect
"while (...) wait_for(...)" idiom.

This patch doesn't actually introduce any uses of WTF::Condition other than the unit tests.
I'll start switching code over to using WTF::Condition in another patch.

  • WTF.vcxproj/WTF.vcxproj:
  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/Condition.h: Added.

(WTF::Condition::Condition):
(WTF::Condition::waitUntil):
(WTF::Condition::waitFor):
(WTF::Condition::wait):
(WTF::Condition::notifyOne):
(WTF::Condition::notifyAll):

  • wtf/Lock.cpp:

(WTF::LockBase::unlockSlow): Make this useful assertion be a release assertion. It catches cases where you unlock the lock even though you don't hold it.

  • wtf/ParkingLot.cpp:

(WTF::ParkingLot::parkConditionally): Add the beforeSleep() callback.
(WTF::ParkingLot::unparkOne):

  • wtf/ParkingLot.h:

(WTF::ParkingLot::compareAndPark):

Tools:

Add a test for WTF::Condition.

  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WTF/Condition.cpp: Added.

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WTF/Lock.cpp:

(TestWebKitAPI::runLockTest): Change the name of the thread.

3:42 AM Changeset in webkit [188906] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.10/Source/WebCore

Merge r188858 - Unreviewed. Fix cairo performance regression introduced in r188379.

A missing break in a switch was making us to use High image
interpolation quality by default.

  • platform/graphics/cairo/PlatformContextCairo.cpp:

(WebCore::PlatformContextCairo::drawSurfaceToContext): Add the
missing break.

3:11 AM Changeset in webkit [188905] by Chris Dumez
  • 9 edits
    1 delete in trunk/Source/WebCore

Get rid of custom bindings for RequestAnimationFrameCallback.handleEvent()
https://bugs.webkit.org/show_bug.cgi?id=148417

Reviewed by Sam Weinig.

Get rid of custom bindings for RequestAnimationFrameCallback.handleEvent()
by improving the bindings generator. In this case, the problem was that the
bindings generator did not know how to convert a double parameter into a
JSValue. The new code leverages the pre-existing NativeToJSValue subroutine
to do the conversion instead of duplicating complex support here.

  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSRequestAnimationFrameCallbackCustom.cpp: Removed.
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateCallbackImplementation):

  • bindings/scripts/test/JS/JSTestCallback.cpp:

(WebCore::JSTestCallback::callbackWithArrayParam):
(WebCore::JSTestCallback::callbackWithSerializedScriptValueParam):
(WebCore::JSTestCallback::callbackWithStringList):
(WebCore::JSTestCallback::callbackWithBoolean):
(WebCore::JSTestCallback::callbackRequiresThisToPass):

  • dom/RequestAnimationFrameCallback.idl:

Aug 24, 2015:

10:31 PM Changeset in webkit [188904] by saambarati1@gmail.com
  • 1 edit
    1 add in trunk/Websites/webkit.org

Add mp4 version of types-changing video.

  • blog-files/type-profiler-and-code-coverage-profiler/types-changing.mp4: Added.
8:25 PM Changeset in webkit [188903] by Brent Fulgham
  • 2 edits in trunk/Tools

[Win] Unreviewed test gardening.

Fix another case where the logging string is constructed using the variable 'frame',
but the method argument is not given a name. This causes the global 'frame' value to
be used, producing incorrect output.

  • DumpRenderTree/win/FrameLoadDelegate.cpp:

(FrameLoadDelegate::didReceiveServerRedirectForProvisionalLoadForFrame): Use 'frame'
argument.

6:56 PM Changeset in webkit [188902] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Clear cairo-gl surface for initialization
https://bugs.webkit.org/show_bug.cgi?id=148307

Patch by Jinyoung Hur <hur.ims@navercorp.com> on 2015-08-24
Reviewed by Martin Robinson.

A cairo-gl surface that is created from an uninitialized texture, should be cleared before use.
A texture memory created by calling glTexImage2D with null data parameter, is uninitialized.
And cairo_gl_surface_create_for_texture doesn't clear the provided texture for initialization.
So it seems safe to clear the surface explicitly.

It is hard to verify this behavior change because the texture memory status is undefined. Undefined means
it can be either initialized or not, though mostly initialized in my experiences.

  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::clearSurface):
(WebCore::createCairoGLSurface):

6:48 PM Changeset in webkit [188901] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

AX: Fix accessibility/mac/search-with-frames.html test
https://bugs.webkit.org/show_bug.cgi?id=148313

Patch by Nan Wang <n_wang@apple.com> on 2015-08-24
Reviewed by Chris Fleizach.

Fixed the test by making sure that search is performed after all frames
have been loaded.

  • accessibility/mac/search-with-frames.html:
  • platform/mac/TestExpectations:
6:22 PM Changeset in webkit [188900] by Gyuyoung Kim
  • 2 edits in trunk/Source/WebKit2

Unreviewed, EFL and GTK build fix since r188895.

  • CMakeLists.txt: Rename Rename VisitedLinkProvider to VisitedLinkStore.
5:33 PM Changeset in webkit [188899] by ap@apple.com
  • 2 edits in trunk/LayoutTests

Marking more scroll-snap tests as flaky.

  • platform/mac-wk2/TestExpectations:
5:22 PM Changeset in webkit [188898] by ap@apple.com
  • 2 edits in trunk/LayoutTests

Roll out r188827, because it didn't help.

  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-borders.html:
4:58 PM Changeset in webkit [188897] by BJ Burg
  • 5 edits
    4 adds in trunk

Web Inspector: add protocol test for existing error handling performed by the backend
https://bugs.webkit.org/show_bug.cgi?id=147097

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

A new test revealed that the protocol "method" parameter was being parsed in a naive way.
Rewrite it to use String::split and improve error checking to avoid failing later.

  • inspector/InspectorBackendDispatcher.cpp:

(Inspector::BackendDispatcher::dispatch):

Source/WebInspectorUI:

Add a way to send raw messages to the backend while still awaiting on responses.
This is necessary to test protocol error handling in the inspector backend.

  • UserInterface/Test/InspectorProtocol.js:

(InspectorProtocol.sendCommand):
(InspectorProtocol.awaitCommand): Use awaitMessage internally.
(InspectorProtocol.awaitMessage): Added. Use a dummy requestId if none is supplied.
(InspectorProtocol._sendMessage): Added.
(InspectorProtocol.dispatchMessageFromBackend):
Reject with the error object instead of the error message, so error code/data can be checked.
(InspectorProtocol.sendMessage): Deleted, it is now a private method.

LayoutTests:

Add a bunch of test cases to cover existing error handling by the backend dispatcher.

  • inspector/protocol/backend-dispatcher-argument-errors-expected.txt: Added.
  • inspector/protocol/backend-dispatcher-argument-errors.html: Added.
  • inspector/protocol/backend-dispatcher-malformed-message-errors-expected.txt: Added.
  • inspector/protocol/backend-dispatcher-malformed-message-errors.html: Added.
4:53 PM Changeset in webkit [188896] by ap@apple.com
  • 2 edits in trunk/LayoutTests

Mark flaky scrolling tests as such.

  • platform/mac-wk2/TestExpectations:
4:51 PM Changeset in webkit [188895] by andersca@apple.com
  • 18 edits
    3 moves in trunk/Source/WebKit2

Rename VisitedLinkProvider to VisitedLinkStore
https://bugs.webkit.org/show_bug.cgi?id=148406

Reviewed by Tim Horton.

  • DerivedSources.make:
  • Shared/API/APIObject.h:
  • Shared/Cocoa/APIObject.mm:

(API::Object::newObject):

  • UIProcess/API/APIPageConfiguration.cpp:

(API::PageConfiguration::copy):
(API::PageConfiguration::visitedLinkStore):
(API::PageConfiguration::setVisitedLinkStore):
(API::PageConfiguration::visitedLinkProvider): Deleted.
(API::PageConfiguration::setVisitedLinkProvider): Deleted.

  • UIProcess/API/APIPageConfiguration.h:
  • UIProcess/API/C/WKContext.cpp:

(WKContextAddVisitedLink):
(WKContextClearVisitedLinks):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView initWithFrame:configuration:]):

  • UIProcess/API/Cocoa/_WKVisitedLinkStore.mm:

(-[_WKVisitedLinkStore init]):
(-[_WKVisitedLinkStore dealloc]):
(-[_WKVisitedLinkStore addVisitedLinkWithURL:]):
(-[_WKVisitedLinkStore removeAll]):
(-[_WKVisitedLinkStore _apiObject]):

  • UIProcess/API/Cocoa/_WKVisitedLinkStoreInternal.h:

(WebKit::wrapper):

  • UIProcess/VisitedLinkProvider.cpp:

(WebKit::generateIdentifier): Deleted.
(WebKit::VisitedLinkProvider::create): Deleted.
(WebKit::VisitedLinkProvider::~VisitedLinkProvider): Deleted.
(WebKit::VisitedLinkProvider::VisitedLinkProvider): Deleted.
(WebKit::VisitedLinkProvider::addProcess): Deleted.
(WebKit::VisitedLinkProvider::removeProcess): Deleted.
(WebKit::VisitedLinkProvider::addVisitedLinkHash): Deleted.
(WebKit::VisitedLinkProvider::removeAll): Deleted.
(WebKit::VisitedLinkProvider::webProcessWillOpenConnection): Deleted.
(WebKit::VisitedLinkProvider::webProcessDidCloseConnection): Deleted.
(WebKit::VisitedLinkProvider::addVisitedLinkHashFromPage): Deleted.
(WebKit::nextPowerOf2): Deleted.
(WebKit::tableSizeForKeyCount): Deleted.
(WebKit::VisitedLinkProvider::pendingVisitedLinksTimerFired): Deleted.
(WebKit::VisitedLinkProvider::resizeTable): Deleted.
(WebKit::VisitedLinkProvider::sendTable): Deleted.

  • UIProcess/VisitedLinkStore.cpp: Renamed from Source/WebKit2/UIProcess/VisitedLinkProvider.cpp.

(WebKit::generateIdentifier):
(WebKit::VisitedLinkStore::create):
(WebKit::VisitedLinkStore::~VisitedLinkStore):
(WebKit::VisitedLinkStore::VisitedLinkStore):
(WebKit::VisitedLinkStore::addProcess):
(WebKit::VisitedLinkStore::removeProcess):
(WebKit::VisitedLinkStore::addVisitedLinkHash):
(WebKit::VisitedLinkStore::removeAll):
(WebKit::VisitedLinkStore::webProcessWillOpenConnection):
(WebKit::VisitedLinkStore::webProcessDidCloseConnection):
(WebKit::VisitedLinkStore::addVisitedLinkHashFromPage):
(WebKit::nextPowerOf2):
(WebKit::tableSizeForKeyCount):
(WebKit::VisitedLinkStore::pendingVisitedLinksTimerFired):
(WebKit::VisitedLinkStore::resizeTable):
(WebKit::VisitedLinkStore::sendTable):

  • UIProcess/VisitedLinkStore.h: Renamed from Source/WebKit2/UIProcess/VisitedLinkProvider.h.
  • UIProcess/VisitedLinkStore.messages.in: Renamed from Source/WebKit2/UIProcess/VisitedLinkProvider.messages.in.
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::WebPageProxy):
(WebKit::WebPageProxy::processDidFinishLaunching):
(WebKit::WebPageProxy::creationParameters):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::WebProcessPool):
(WebKit::WebProcessPool::createWebPage):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::shutDown):
(WebKit::WebProcessProxy::addVisitedLinkStore):
(WebKit::WebProcessProxy::didDestroyVisitedLinkStore):
(WebKit::WebProcessProxy::addVisitedLinkProvider): Deleted.
(WebKit::WebProcessProxy::didDestroyVisitedLinkProvider): Deleted.

  • UIProcess/WebProcessProxy.h:
  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/VisitedLinkTableController.cpp:

(WebKit::VisitedLinkTableController::addVisitedLink):

4:48 PM Changeset in webkit [188894] by Yusuke Suzuki
  • 9 edits in trunk/Source/JavaScriptCore

[ES6] Return JSInternalPromise as result of evaluateModule
https://bugs.webkit.org/show_bug.cgi?id=148173

Reviewed by Saam Barati.

Now evaluateModule returns JSInternalPromise* as its result value.
When an error occurs while loading or executing the modules,
this promise is rejected by that error. By leveraging this, we implemented
asynchronous error reporting when executing the modules in JSC shell.

And this patch also changes the evaluateModule signature to accept the entry
point by the moduleName. By using it, JSC shell can start executing the modules
with the entry point module name.

  • builtins/ModuleLoaderObject.js:

(loadModule):

  • jsc.cpp:

(dumpException):
(runWithScripts):

  • runtime/Completion.cpp:

(JSC::evaluateModule):

  • runtime/Completion.h:
  • runtime/JSInternalPromise.cpp:

(JSC::JSInternalPromise::then):

  • runtime/JSInternalPromise.h:
  • runtime/ModuleLoaderObject.cpp:

(JSC::ModuleLoaderObject::requestInstantiateAll):
(JSC::ModuleLoaderObject::loadModule):
(JSC::ModuleLoaderObject::resolve):
(JSC::ModuleLoaderObject::fetch):
(JSC::ModuleLoaderObject::translate):
(JSC::ModuleLoaderObject::instantiate):
(JSC::moduleLoaderObjectParseModule):

  • runtime/ModuleLoaderObject.h:
4:31 PM Changeset in webkit [188893] by commit-queue@webkit.org
  • 4 edits in trunk/LayoutTests

AX: Fix accessibility/mac/mathml-elements.html test
https://bugs.webkit.org/show_bug.cgi?id=148393

Patch by Nan Wang <n_wang@apple.com> on 2015-08-24
Reviewed by Chris Fleizach.

Updated the test to match the structure changes of mfenced/mo operators in bug 124838.

  • accessibility/mac/mathml-elements-expected.txt:
  • accessibility/mac/mathml-elements.html:
  • platform/mac/TestExpectations:
4:11 PM Changeset in webkit [188892] by timothy_horton@apple.com
  • 25 edits
    1 delete in trunk

(Finally...) get rid of WKViewIOS
https://bugs.webkit.org/show_bug.cgi?id=148404

Reviewed by Anders Carlsson.

  • UIProcess/API/Cocoa/WKView.h:
  • UIProcess/API/ios/WKViewIOS.mm: Removed.
  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::PageClientImpl): Deleted.
(WebKit::PageClientImpl::didRelaunchProcess): Deleted.
(WebKit::PageClientImpl::refView): Deleted.
(WebKit::PageClientImpl::derefView): Deleted.

  • UIProcess/ios/WKContentView.h:
  • UIProcess/ios/WKContentView.mm:

(-[WKContentView initWithFrame:processPool:configuration:wkView:]): Deleted.

  • WebKit2.xcodeproj/project.pbxproj:

Get rid of WKViewIOS and references to it.

  • DatabaseProcess/ios/DatabaseProcessIOS.mm:

(WebKit::DatabaseProcess::initializeSandbox):

  • NetworkProcess/ios/NetworkProcessIOS.mm:

(WebKit::NetworkProcess::initializeSandbox):

  • Shared/Plugins/mac/PluginSandboxProfile.mm:

(WebKit::pluginSandboxProfileDirectory):

  • Shared/ios/ChildProcessIOS.mm:

(WebKit::ChildProcess::initializeSandbox):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::initializeSandbox):
Look for WKWebView instead of WKView if we have it.

  • TestWebKitAPI/Tests/CustomProtocolsSyncXHRTest.mm:
  • TestWebKitAPI/Tests/WebKit2Cocoa/ContentFiltering.mm:
  • TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsInvalidScheme.mm:
  • TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsTest.mm:
  • TestWebKitAPI/Tests/WebKit2ObjC/PreventImageLoadWithAutoResizing.mm:
  • TestWebKitAPI/Tests/WebKit2ObjC/UserContentTest.mm:
  • TestWebKitAPI/Tests/WebKit2ObjC/WKBrowsingContextGroupTest.mm:
  • TestWebKitAPI/Tests/WebKit2ObjC/WKBrowsingContextLoadDelegateTest.mm:
  • TestWebKitAPI/mac/TestBrowsingContextLoadDelegate.h:
  • TestWebKitAPI/mac/TestBrowsingContextLoadDelegate.mm:

Mark tests that use WKBrowsingContextController as Mac-only.

  • WebKitTestRunner/InjectedBundle/ios/AccessibilityControllerIOS.mm:

(WTR::AccessibilityController::addNotificationListener):

  • WebKitTestRunner/ios/mainIOS.mm:

(-[WebKitTestRunnerApp applicationDidEnterBackground:]):
Import UIKit instead of depending on WKView.h to do so.

3:45 PM Changeset in webkit [188891] by andersca@apple.com
  • 9 edits
    2 copies
    1 move in trunk/Source/WebKit2

Rename _WKVisitedLinkProvider to _WKVisitedLinkStore for consistency
https://bugs.webkit.org/show_bug.cgi?id=148398

Reviewed by Tim Horton.

We'd like to call the abstract classes providers and the concrete classes stores in WebKit. Begin by renaming
_WKVisitedLinkProvider to _WKVisitedLinkStore, but keep the former around as a deprecated class.

  • Shared/API/Cocoa/WebKitPrivate.h:
  • Shared/Cocoa/APIObject.mm:

(API::Object::newObject):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView initWithFrame:configuration:]):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _visitedLinkStore]):
(-[WKWebViewConfiguration _setVisitedLinkStore:]):
(-[WKWebViewConfiguration _visitedLinkProvider]):
(-[WKWebViewConfiguration _setVisitedLinkProvider:]):
(-[WKWebViewConfiguration _validate]):

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • UIProcess/API/Cocoa/_WKVisitedLinkProvider.h:
  • UIProcess/API/Cocoa/_WKVisitedLinkProvider.mm:

(-[_WKVisitedLinkProvider init]): Deleted.
(-[_WKVisitedLinkProvider dealloc]): Deleted.
(-[_WKVisitedLinkProvider addVisitedLinkWithURL:]): Deleted.
(-[_WKVisitedLinkProvider removeAll]): Deleted.
(-[_WKVisitedLinkProvider _apiObject]): Deleted.

  • UIProcess/API/Cocoa/_WKVisitedLinkStore.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/_WKVisitedLinkProvider.h.
  • UIProcess/API/Cocoa/_WKVisitedLinkStore.mm: Copied from Source/WebKit2/UIProcess/API/Cocoa/_WKVisitedLinkProvider.mm.

(-[_WKVisitedLinkStore init]):
(-[_WKVisitedLinkStore dealloc]):
(-[_WKVisitedLinkStore addVisitedLinkWithURL:]):
(-[_WKVisitedLinkStore removeAll]):
(-[_WKVisitedLinkStore _apiObject]):

  • UIProcess/API/Cocoa/_WKVisitedLinkStoreInternal.h: Renamed from Source/WebKit2/UIProcess/API/Cocoa/_WKVisitedLinkProviderInternal.h.

(WebKit::wrapper):

  • WebKit2.xcodeproj/project.pbxproj:
3:42 PM Changeset in webkit [188890] by commit-queue@webkit.org
  • 4 edits in trunk/Tools

Add support to dashboard for displaying Git SHA's as revisions.
https://bugs.webkit.org/show_bug.cgi?id=148387

Patch by Jason Marcell <jmarcell@apple.com> on 2015-08-24
Reviewed by Daniel Bates.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotIteration.js:

(parseRevisionProperty): Added support to dashboard for displaying Git SHA's as revisions.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueueView.js:

(BuildbotQueueView.prototype._revisionContentWithPopoverForIteration): Ditto.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Dashboard.js: Added

"isSVN" property to Dashboard.Repository.(OpenSource|Internal).

3:40 PM Changeset in webkit [188889] by msaboff@apple.com
  • 3 edits in branches/jsc-tailcall/Source/JavaScriptCore

jsc-tailcall: Specialized thunks need to save / restore callee save "tag" registers
https://bugs.webkit.org/show_bug.cgi?id=148345

Reviewed by Basile Clement.

Since these thunks can be called by FTL compiled functions, we can't count on the
tagTypeNumberRegister and tagMaskRegister. In fact, the same registers could be used
for other purposes. Since they are callee saves, save the current values on entry to
these thunks and materialize the tag constant values. On function exit we restore
the caller's values.

  • jit/SpecializedThunkJIT.h:

(JSC::SpecializedThunkJIT::SpecializedThunkJIT):
(JSC::SpecializedThunkJIT::loadDoubleArgument):
(JSC::SpecializedThunkJIT::returnJSValue):
(JSC::SpecializedThunkJIT::returnDouble):
(JSC::SpecializedThunkJIT::returnInt32):
(JSC::SpecializedThunkJIT::returnJSCell):
(JSC::SpecializedThunkJIT::callDoubleToDoublePreservingReturn):
(JSC::SpecializedThunkJIT::emitSaveThenMaterializeTagRegisters):
(JSC::SpecializedThunkJIT::emitRestoreSavedTagRegisters):
(JSC::SpecializedThunkJIT::tagReturnAsInt32):

  • jit/ThunkGenerators.cpp:

(JSC::nativeForGenerator): Since the nativeForGenerator can be called via a tail call
by various specialized thunks, we need to restore the values of the tag constant callee
save registers. The specialized thunks is the only code that make such tail calls
to nativeForGenerator generated code.

2:56 PM Changeset in webkit [188888] by basile_clement@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

REPTACH is not a word
https://bugs.webkit.org/show_bug.cgi?id=148401

Reviewed by Saam Barati.

  • assembler/MacroAssemblerX86_64.h:

(JSC::MacroAssemblerX86_64::callWithSlowPathReturnType):
(JSC::MacroAssemblerX86_64::call):
(JSC::MacroAssemblerX86_64::tailRecursiveCall):
(JSC::MacroAssemblerX86_64::makeTailRecursiveCall):
(JSC::MacroAssemblerX86_64::readCallTarget):
(JSC::MacroAssemblerX86_64::linkCall):
(JSC::MacroAssemblerX86_64::repatchCall):

2:51 PM Changeset in webkit [188887] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Add support for setting JSC options from a file.
https://bugs.webkit.org/show_bug.cgi?id=148394

Reviewed by Saam Barati.

This is needed for environments where the JSC executable does not have access to
environmental variables. This is only needed for debugging, and is currently
guarded under a #define USE_OPTIONS_FILE in Options.cpp, and is disabled by
default.

Also fixed Options::setOptions() to be allow for whitespace that is not a single
' '. This makes setOptions() much more flexible and friendlier to use for loading
options in general.

For example, this current use case of loading options from a file may have '\n's
in the character stream, and this feature is easier to implement if setOptions()
just support more than 1 whitespace char between options, and recognize whitespace
characters other than ' '.

  • runtime/Options.cpp:

(JSC::parse):
(JSC::Options::initialize):
(JSC::Options::setOptions):

2:44 PM Changeset in webkit [188886] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

DFG::FixupPhase should use the lambda form of m_graph.doToChildren() rather than the old macro
https://bugs.webkit.org/show_bug.cgi?id=148397

Reviewed by Geoffrey Garen.

We used to iterate the edges of a node by using the DFG_NODE_DO_TO_CHILDREN macro. We
don't need to do that anymore since we have the lambda-based m_graph.doToChildren(). This
allows us to get rid of a bunch of helper methods in DFG::FixupPhase.

I also took the opportunity to give the injectTypeConversionsInBlock() method a more
generic name, since after https://bugs.webkit.org/show_bug.cgi?id=145204 it will be used
for fix-up of checks more broadly.

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::run):
(JSC::DFG::FixupPhase::attemptToMakeGetTypedArrayByteOffset):
(JSC::DFG::FixupPhase::fixupChecksInBlock):
(JSC::DFG::FixupPhase::injectTypeConversionsInBlock): Deleted.
(JSC::DFG::FixupPhase::tryToRelaxRepresentation): Deleted.
(JSC::DFG::FixupPhase::fixEdgeRepresentation): Deleted.
(JSC::DFG::FixupPhase::injectTypeConversionsForEdge): Deleted.

2:44 PM Changeset in webkit [188885] by Chris Dumez
  • 1 edit
    2 adds in trunk/LayoutTests

NodeList should not have a named getter
https://bugs.webkit.org/show_bug.cgi?id=148117

Reviewed by Geoffrey Garen.

Add a layout test to check that NodeList no longer has a named property
getter after r188829.

  • fast/dom/NodeList/no-named-getter-expected.txt: Added.
  • fast/dom/NodeList/no-named-getter.html: Added.
2:43 PM Changeset in webkit [188884] by ggaren@apple.com
  • 10 edits in trunk/Source/JavaScriptCore

Some renaming to clarify CodeBlock and UnlinkedCodeBlock
https://bugs.webkit.org/show_bug.cgi?id=148391

Reviewed by Saam Barati.

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::generateUnlinkedFunctionCodeBlock):
(JSC::UnlinkedFunctionExecutable::visitChildren):
(JSC::UnlinkedFunctionExecutable::fromGlobalCode):
(JSC::UnlinkedFunctionExecutable::unlinkedCodeBlockFor):
(JSC::generateFunctionCodeBlock): Deleted.
(JSC::UnlinkedFunctionExecutable::codeBlockFor): Deleted.

  • bytecode/UnlinkedFunctionExecutable.h: Call our CodeBlocks "unlinked"

in the name for clarity, since we are unlinked.

  • heap/Heap.cpp:

(JSC::Heap::objectTypeCounts):
(JSC::Heap::deleteAllCodeBlocks):
(JSC::Heap::deleteAllUnlinkedCodeBlocks):
(JSC::Heap::clearUnmarkedExecutables):
(JSC::Heap::deleteOldCode):
(JSC::Heap::FinalizerOwner::finalize):
(JSC::Heap::addExecutable):
(JSC::Heap::collectAllGarbageIfNotDoneRecently):
(JSC::Heap::deleteAllCompiledCode): Deleted.
(JSC::Heap::deleteAllUnlinkedFunctionCode): Deleted.
(JSC::Heap::addCompiledCode): Deleted.

  • heap/Heap.h:

(JSC::Heap::notifyIsSafeToCollect):
(JSC::Heap::isSafeToCollect):
(JSC::Heap::sizeBeforeLastFullCollection):
(JSC::Heap::sizeAfterLastFullCollection):
(JSC::Heap::compiledCode): Deleted.

deleteAllCompiledCode => deleteAllCodeBlocks because "compiled"
is a broad phrase these days.

m_compiledCode => m_executables for the same reason.

addCompiledCode => addExecutable for the same reason.

deleteAllUnlinkedFunctionCode => deleteAllUnlinkedCodeBlocks
for consistency.

  • jsc.cpp:

(functionDeleteAllCompiledCode):

  • runtime/Executable.cpp:

(JSC::ScriptExecutable::newCodeBlockFor): codeBlockFor => unlinkedCodeBlockFor

(JSC::FunctionExecutable::clearUnlinkedCodeForRecompilation): Deleted.
It was strange to put this function on executable, since its name implied
that it only changed the executable, but it actually changed all cached
code. Now, a client that wants to change cached code must do so explicitly.

  • runtime/Executable.h:

(JSC::ScriptExecutable::finishCreation):

  • runtime/VM.cpp:

(JSC::VM::deleteAllCode):

  • runtime/VMEntryScope.cpp:

(JSC::VMEntryScope::VMEntryScope): Updated for renames above.

2:41 PM Changeset in webkit [188883] by basile_clement@apple.com
  • 3 edits in branches/jsc-tailcall/Source/JavaScriptCore

jsc-tailcall: We can't assert that registers are flushed when making a tail call
https://bugs.webkit.org/show_bug.cgi?id=148396

Reviewed by Michael Saboff.

We should be able to assert that registers are flushed when making a
tail call, since no additional code should ever be executed after the
tail call. However, because we can have Phantom() nodes keeping values
alive across a tail call, this assertion can (and does) fail in some
cases - even though those nodes are dead nodes that will not actually
generate any code. So we can't have the assertion.

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

2:39 PM Changeset in webkit [188882] by basile_clement@apple.com
  • 4 edits in branches/jsc-tailcall/Source/JavaScriptCore

jsc-tailcall: TailCallForwardVarargs must be considered as a terminal node
https://bugs.webkit.org/show_bug.cgi?id=148395

Reviewed by Michael Saboff.

  • dfg/DFGBasicBlock.h:

(JSC::DFG::BasicBlock::findTerminal):

  • dfg/DFGInPlaceAbstractState.cpp:

(JSC::DFG::InPlaceAbstractState::mergeToSuccessors):

  • dfg/DFGNode.h:

(JSC::DFG::Node::isTerminal):

2:31 PM Changeset in webkit [188881] by aestes@apple.com
  • 1 edit in trunk/Tools/ChangeLog

Specify the corrent regression revision.

2:25 PM Changeset in webkit [188880] by aestes@apple.com
  • 2 edits in trunk/Tools

REGRESSION (r182356): WebKit2.BundleParameters fails on iOS

  • TestWebKitAPI/Configurations/WebProcessPlugIn.xcconfig: Specify LD_RUNPATH_SEARCH_PATHS correctly for iOS.
2:11 PM Changeset in webkit [188879] by fpizlo@apple.com
  • 5 edits
    1 add in trunk/Source/JavaScriptCore

DFG::InsertionSet should be tolerant of occasional out-of-order insertions
https://bugs.webkit.org/show_bug.cgi?id=148367

Reviewed by Geoffrey Garen and Saam Barati.

Since forever, the DFG::InsertionSet has been the way we insert nodes into DFG IR, and it
requires that you walk a block in order and perform insertions in order: you can't insert
something at index J, then at index I where I < J, except if you do a second pass.

This restriction makes sense, because it enables a very fast algorithm. And it's very
rare that a phase would need to insert things out of order.

But sometimes - rarely - we need to insert things slightly out-of-order. For example we
may want to insert a node at index J, but to insert a check associated with that node, we
may need to use index I where I < J. This will come up from the work on
https://bugs.webkit.org/show_bug.cgi?id=145204. And it has already come up in the past.
It seems like it would be best to just lift this restriction.

(JSC::DFG::InsertionSet::insertSlow):

  • dfg/DFGInsertionSet.h:

(JSC::DFG::InsertionSet::InsertionSet):
(JSC::DFG::InsertionSet::graph):
(JSC::DFG::InsertionSet::insert):
(JSC::DFG::InsertionSet::execute):

1:26 PM Changeset in webkit [188878] by Yusuke Suzuki
  • 16 edits in trunk

Create ById IC for ByVal operation only when the specific Id comes more than once
https://bugs.webkit.org/show_bug.cgi?id=148288

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

After introducing byId ICs into byVal ops, byVal ops creates much ICs than before.
The failure fixed in r188767 figures out these ICs are created even if this op is executed only once.

The situation is the following;
In the current code, when byVal op is executed with the Id, we immediately set up the byId IC for that byVal op.
But setting up JITGetByIdGenerator generates the fast path IC code and consumes executable memory.
As a result, if we call eval("contains byVal ops") with the different strings repeatedly under no-llint environment, each eval call creates byId IC for byVal and consumes executable memory.

To solve it, we will add "seen" flag to ByValInfo.
And we will create the IC on the second byVal op call with the same Id.

  • bytecode/ByValInfo.h:

(JSC::ByValInfo::ByValInfo):

  • jit/JITOperations.cpp:

(JSC::tryGetByValOptimize):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::privateCompileGetByValWithCachedId): Deleted.
(JSC::JIT::privateCompilePutByValWithCachedId): Deleted.

LayoutTests:

Revert the skip marks introduced in r188767.

  • js/script-tests/dfg-float32array.js:
  • js/script-tests/dfg-int16array.js:
  • js/script-tests/dfg-int32array-overflow-values.js:
  • js/script-tests/dfg-int32array.js:
  • js/script-tests/dfg-int8array.js:
  • js/script-tests/dfg-uint16array.js:
  • js/script-tests/dfg-uint32array-overflow-values.js:
  • js/script-tests/dfg-uint32array.js:
  • js/script-tests/dfg-uint8array.js:
  • js/script-tests/dfg-uint8clampedarray.js:
  • js/script-tests/regress-141098.js:
1:18 PM Changeset in webkit [188877] by mmaxfield@apple.com
  • 3 edits in trunk/Source/WebCore

Fix the build fixes in r188875 and r188874

Unreviewed.

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::FontCache::createFontPlatformData):

  • platform/graphics/mac/FontCacheMac.mm:

(WebCore::toNSFontTraits):

12:52 PM Changeset in webkit [188876] by timothy@apple.com
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Change webkitAnimationEnd use, should be animationEnd
https://bugs.webkit.org/show_bug.cgi?id=148385

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/DOMTreeElement.js:

(WebInspector.DOMTreeElement.prototype.emphasizeSearchHighlight):

  • UserInterface/Views/DashboardContainerView.js:

(WebInspector.DashboardContainerView.prototype._showDashboardView.animationEnded):
(WebInspector.DashboardContainerView.prototype._showDashboardView):
(WebInspector.DashboardContainerView.prototype._hideDashboardView.animationEnded):
(WebInspector.DashboardContainerView.prototype._hideDashboardView):

  • UserInterface/Views/DefaultDashboardView.js:

(WebInspector.DefaultDashboardView.prototype._setConsoleItemValue.animationEnded):
(WebInspector.DefaultDashboardView.prototype._setConsoleItemValue):

  • UserInterface/Views/TextEditor.js:

(WebInspector.TextEditor.prototype.revealPosition.revealAndHighlightLine):
(WebInspector.TextEditor.prototype.revealPosition):
(WebInspector.TextEditor.prototype._revealSearchResult):

12:03 PM Changeset in webkit [188875] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

Try to fix the build.

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::FontCache::createFontPlatformData):

11:50 AM Changeset in webkit [188874] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

Fix the build.

  • platform/graphics/mac/FontCacheMac.mm:

(WebCore::toNSFontWeight):
(WebCore::toNSFontTraits):
(WebCore::platformFontWithFamilySpecialCase):

11:48 AM Changeset in webkit [188873] by mmaxfield@apple.com
  • 9 edits in trunk/Source/WebCore

Use Optionals in RenderBox height computations
https://bugs.webkit.org/show_bug.cgi?id=147253

Reviewed by David Hyatt.

No new tests because there is no behavior change.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::constrainLogicalHeightByMinMax):
(WebCore::RenderBox::constrainContentBoxLogicalHeightByMinMax):
(WebCore::RenderBox::overrideContainingBlockContentLogicalWidth):
(WebCore::RenderBox::overrideContainingBlockContentLogicalHeight):
(WebCore::RenderBox::setOverrideContainingBlockContentLogicalWidth):
(WebCore::RenderBox::setOverrideContainingBlockContentLogicalHeight):
(WebCore::RenderBox::adjustContentBoxLogicalHeightForBoxSizing):
(WebCore::RenderBox::containingBlockLogicalWidthForContent):
(WebCore::RenderBox::containingBlockLogicalHeightForContent):
(WebCore::RenderBox::perpendicularContainingBlockLogicalHeight):
(WebCore::RenderBox::computeLogicalHeight):
(WebCore::RenderBox::computeLogicalHeightUsing):
(WebCore::RenderBox::computeContentLogicalHeight):
(WebCore::RenderBox::computeIntrinsicLogicalContentHeightUsing):
(WebCore::RenderBox::computeContentAndScrollbarLogicalHeightUsing):
(WebCore::RenderBox::computePercentageLogicalHeight):
(WebCore::RenderBox::computeReplacedLogicalHeightUsing):
(WebCore::RenderBox::availableLogicalHeight):
(WebCore::RenderBox::availableLogicalHeightUsing):
(WebCore::RenderBox::computePositionedLogicalHeightUsing):
(WebCore::logicalWidthIsResolvable):
(WebCore::RenderBox::percentageLogicalHeightIsResolvableFromBlock):
(WebCore::RenderBox::hasDefiniteLogicalHeight):

  • rendering/RenderBox.h:
  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::computeMainAxisExtentForChild):
(WebCore::RenderFlexibleBox::preferredMainAxisContentExtentForChild):
(WebCore::RenderFlexibleBox::adjustChildSizeForMinAndMax):

  • rendering/RenderFlexibleBox.h:
  • rendering/RenderFlowThread.cpp:

(WebCore::RenderFlowThread::addForcedRegionBreak):

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::computeUsedBreadthOfSpecifiedLength):
(WebCore::RenderGrid::logicalContentHeightForChild):
(WebCore::RenderGrid::minContentForChild):
(WebCore::RenderGrid::maxContentForChild):
(WebCore::RenderGrid::layoutGridItems):
(WebCore::RenderGrid::applyStretchAlignmentToChildIfNeeded):

  • rendering/RenderMultiColumnSet.cpp:

(WebCore::RenderMultiColumnSet::calculateMaxColumnHeight):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::convertStyleLogicalHeightToComputedHeight):

11:46 AM Changeset in webkit [188872] by andersca@apple.com
  • 2 edits in trunk/Source/WebCore

Fix failing tests.

It's OK to call runStateMachine with an idle state. Just bail early when that happens.

  • Modules/webdatabase/SQLTransactionStateMachine.h:

(WebCore::SQLTransactionStateMachine<T>::runStateMachine):

11:37 AM Changeset in webkit [188871] by mmaxfield@apple.com
  • 6 edits in trunk/Source/WebCore

[Cocoa] Unify FontCache
https://bugs.webkit.org/show_bug.cgi?id=148358

Reviewed by Antti Koivisto.

Move all the duplicate code to FontCacheCoreText.

No new tests because there is no behavior change.

  • platform/graphics/FontCache.h:
  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::fontWeightFromCoreText):
(WebCore::toTraitsMask):
(WebCore::isFontWeightBold):
(WebCore::toCoreTextFontWeight):
(WebCore::invalidateFontCache):
(WebCore::fontCacheRegisteredFontsChangedNotificationCallback):
(WebCore::FontCache::platformInit):
(WebCore::FontCache::systemFontFamilies):
(WebCore::computeTraits):
(WebCore::computeNecessarySynthesis):
(WebCore::fontWhitelist):
(WebCore::FontCache::setFontWhitelist):
(WebCore::platformFontLookupWithFamily):
(WebCore::fontWithFamily):
(WebCore::shouldAutoActivateFontIfNeeded):
(WebCore::FontCache::createFontPlatformData):
(WebCore::fallbackDedupSet):
(WebCore::FontCache::platformPurgeInactiveFontData):
(WebCore::FontCache::systemFallbackForCharacters):

  • platform/graphics/ios/FontCacheIOS.mm:

(WebCore::platformInvalidateFontCache):
(WebCore::getSystemFontFallbackForCharacters):
(WebCore::platformLookupFallbackFont):
(WebCore::FontCache::lastResortFallbackFont):
(WebCore::FontCache::weightOfCTFont):
(WebCore::platformFontWithFamilySpecialCase):
(WebCore::FontCache::platformInit): Deleted.
(WebCore::isFontWeightBold): Deleted.
(WebCore::FontCache::getSystemFontFallbackForCharacters): Deleted.
(WebCore::FontCache::systemFallbackForCharacters): Deleted.
(WebCore::FontCache::systemFontFamilies): Deleted.
(WebCore::createCTFontWithTextStyle): Deleted.
(WebCore::createCTFontWithFamilyNameAndWeight): Deleted.
(WebCore::toCTFontWeight): Deleted.
(WebCore::FontCache::createFontPlatformData): Deleted.

  • platform/graphics/mac/FontCacheMac.mm:

(WebCore::appkitWeightToFontWeight):
(WebCore::toNSFontTraits):
(WebCore::platformFontWithFamilySpecialCase):
(WebCore::platformFontWithFamily):
(WebCore::platformInvalidateFontCache):
(WebCore::platformLookupFallbackFont):
(WebCore::FontCache::lastResortFallbackFont):
(WebCore::toCoreTextFontWeight): Deleted.
(WebCore::fontWhitelist): Deleted.
(WebCore::FontCache::setFontWhitelist): Deleted.
(WebCore::fontWithFamilySpecialCase): Deleted.
(WebCore::fontWithFamily): Deleted.
(WebCore::invalidateFontCache): Deleted.
(WebCore::fontCacheRegisteredFontsChangedNotificationCallback): Deleted.
(WebCore::FontCache::platformInit): Deleted.
(WebCore::isAppKitFontWeightBold): Deleted.
(WebCore::shouldAutoActivateFontIfNeeded): Deleted.
(WebCore::fallbackDedupSet): Deleted.
(WebCore::FontCache::platformPurgeInactiveFontData): Deleted.
(WebCore::lookupCTFont): Deleted.
(WebCore::FontCache::systemFallbackForCharacters): Deleted.
(WebCore::FontCache::systemFontFamilies): Deleted.
(WebCore::FontCache::createFontPlatformData): Deleted.

  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::updateCachedSystemFontDescription):
(WebCore::fromCTFontWeight): Deleted.

11:07 AM Changeset in webkit [188870] by basile_clement@apple.com
  • 3 edits in branches/jsc-tailcall/Source/JavaScriptCore

jsc-tailcall: Add a bunch of operators
https://bugs.webkit.org/show_bug.cgi?id=148337

Reviewed by Saam Barati.

  • jit/GPRInfo.h:

(JSC::JSValueRegs::operator bool):
(JSC::JSValueRegs::operator==):
(JSC::JSValueRegs::operator!=):
(JSC::JSValueSource::operator bool):
(JSC::JSValueRegs::operator!):
(JSC::JSValueSource::operator!):

  • jit/Reg.h:

(JSC::Reg::operator bool):

10:38 AM Changeset in webkit [188869] by Wenson Hsieh
  • 3 edits in trunk/Source/WebCore

Unreviewed, attempt to fix iOS build after r188860

  • page/WheelEventDeltaFilter.cpp:

(WebCore::WheelEventDeltaFilter::isFilteringDeltas): Moved implementation out of header.
(WebCore::WheelEventDeltaFilter::filteredDelta): Moved implementation out of header.

  • page/WheelEventDeltaFilter.h:

(WebCore::WheelEventDeltaFilter::isFilteringDeltas): Deleted.
(WebCore::WheelEventDeltaFilter::filteredDelta): Deleted.

10:31 AM Changeset in webkit [188868] by basile_clement@apple.com
  • 6 edits in branches/jsc-tailcall/Source/JavaScriptCore

jsc-tailcall: ValueRecovery should distinguish between doubles in an FPR and JSValues in an FPR
https://bugs.webkit.org/show_bug.cgi?id=148336

Reviewed by Michael Saboff.

Currently, ValueRecovery::InFPR means "this is a *double* value in an
FPR". Let's change the semantics to be "this is a *JSVAlue* in an FPR"
(to match ValueRecovery::InGPR), and introduce
ValueRecovery::UnboxedDoubleInFPR to mean "this is a double value in an
FPR".

  • bytecode/ValueRecovery.cpp:

(JSC::ValueRecovery::dumpInContext):

  • bytecode/ValueRecovery.h:

(JSC::ValueRecovery::operator bool):
(JSC::ValueRecovery::inFPR):
(JSC::ValueRecovery::isInGPR):
(JSC::ValueRecovery::isInFPR):
(JSC::ValueRecovery::isInRegisters):
(JSC::ValueRecovery::isInJSStack):
(JSC::ValueRecovery::dataFormat):
(JSC::ValueRecovery::gpr):
(JSC::ValueRecovery::isInJSValueRegs):
(JSC::ValueRecovery::jsValueRegs):
(JSC::ValueRecovery::fpr):
(JSC::ValueRecovery::virtualRegister):
(JSC::ValueRecovery::constant):

  • dfg/DFGOSRExitCompiler32_64.cpp:

(JSC::DFG::OSRExitCompiler::compileExit):

  • dfg/DFGOSRExitCompiler64.cpp:

(JSC::DFG::OSRExitCompiler::compileExit):

  • dfg/DFGVariableEventStream.cpp:

(JSC::DFG::VariableEventStream::reconstruct):

10:25 AM Changeset in webkit [188867] by basile_clement@apple.com
  • 4 edits
    1 add in branches/jsc-tailcall/Source/JavaScriptCore

jsc-tailcall: Introduce RegisterMap<T>
https://bugs.webkit.org/show_bug.cgi?id=148335

Reviewed by Michael Saboff.

Introduce RegisterMap<T>, GPRMap<T> and FPRMap<T> dense mappings for
Reg, GPRReg and FPRReg.

(JSC::RegisterMap::operator[]):
(JSC::GPRMap::operator[]):
(JSC::FPRMap::operator[]):

10:24 AM Changeset in webkit [188866] by basile_clement@apple.com
  • 8 edits in branches/jsc-tailcall/Source/JavaScriptCore

jsc-tailcall: Make a bunch of MacroAssembler operations constexpr
https://bugs.webkit.org/show_bug.cgi?id=148334

Reviewed by Saam Barati.

This is in preparation of https://bugs.webkit.org/show_bug.cgi?id=148335 .

  • assembler/ARM64Assembler.h:

(JSC::ARM64Registers::isSp):
(JSC::ARM64Registers::isZr):
(JSC::ARM64Assembler::firstRegister):
(JSC::ARM64Assembler::lastRegister):
(JSC::ARM64Assembler::firstFPRegister):
(JSC::ARM64Assembler::lastFPRegister):
(JSC::ARM64Assembler::isSp):
(JSC::ARM64Assembler::isZr):

  • assembler/ARMAssembler.h:

(JSC::ARMAssembler::firstRegister):
(JSC::ARMAssembler::lastRegister):
(JSC::ARMAssembler::firstFPRegister):
(JSC::ARMAssembler::lastFPRegister):

  • assembler/AbstractMacroAssembler.h:

(JSC::AbstractMacroAssembler::firstRegister):
(JSC::AbstractMacroAssembler::lastRegister):
(JSC::AbstractMacroAssembler::firstFPRegister):
(JSC::AbstractMacroAssembler::lastFPRegister):

  • assembler/MIPSAssembler.h:

(JSC::MIPSAssembler::firstRegister):
(JSC::MIPSAssembler::lastRegister):
(JSC::MIPSAssembler::firstFPRegister):
(JSC::MIPSAssembler::lastFPRegister):

  • assembler/MacroAssembler.h:

(JSC::MacroAssembler::nextRegister):
(JSC::MacroAssembler::nextFPRegister):
(JSC::MacroAssembler::numberOfRegisters):
(JSC::MacroAssembler::registerIndex):
(JSC::MacroAssembler::numberOfFPRegisters):
(JSC::MacroAssembler::fpRegisterIndex):
(JSC::MacroAssembler::totalNumberOfRegisters):

  • assembler/SH4Assembler.h:

(JSC::SH4Assembler::firstRegister):
(JSC::SH4Assembler::lastRegister):
(JSC::SH4Assembler::firstFPRegister):
(JSC::SH4Assembler::lastFPRegister):

  • assembler/X86Assembler.h:

(JSC::X86Assembler::firstRegister):
(JSC::X86Assembler::lastRegister):
(JSC::X86Assembler::firstFPRegister):
(JSC::X86Assembler::lastFPRegister):

10:16 AM Changeset in webkit [188865] by andersca@apple.com
  • 6 edits in trunk/Source/WebCore

Remove unused return values from SQLTransaction state functions
https://bugs.webkit.org/show_bug.cgi?id=148344

Reviewed by Tim Horton.

  • Modules/webdatabase/SQLTransaction.cpp:

(WebCore::SQLTransaction::deliverTransactionCallback):
(WebCore::SQLTransaction::deliverTransactionErrorCallback):
(WebCore::SQLTransaction::deliverStatementCallback):
(WebCore::SQLTransaction::deliverQuotaIncreaseCallback):
(WebCore::SQLTransaction::deliverSuccessCallback):
(WebCore::SQLTransaction::unreachableState):

  • Modules/webdatabase/SQLTransaction.h:
  • Modules/webdatabase/SQLTransactionBackend.cpp:

(WebCore::SQLTransactionBackend::acquireLock):
(WebCore::SQLTransactionBackend::openTransactionAndPreflight):
(WebCore::SQLTransactionBackend::runStatements):
(WebCore::SQLTransactionBackend::cleanupAndTerminate):
(WebCore::SQLTransactionBackend::cleanupAfterTransactionErrorCallback):
(WebCore::SQLTransactionBackend::unreachableState):

  • Modules/webdatabase/SQLTransactionBackend.h:
  • Modules/webdatabase/SQLTransactionStateMachine.h:

(WebCore::SQLTransactionStateMachine<T>::runStateMachine):

10:13 AM Changeset in webkit [188864] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix build after r188860

  • page/mac/WheelEventDeltaFilterMac.mm:

(WebCore::WheelEventDeltaFilterMac::updateFromDelta): Convert argument explicitly to an NSPoint.

10:03 AM WebInspectorCodingStyleGuide edited by BJ Burg
Update style guide (diff)
10:02 AM Changeset in webkit [188863] by Chris Dumez
  • 3 edits in trunk/LayoutTests

Unreviewed, slight layout test clean up after r188829.

Remove a useless blank line.

  • fast/dom/named-items-with-symbol-name-expected.txt:
  • fast/dom/named-items-with-symbol-name.html:
8:57 AM Changeset in webkit [188862] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

REGRESSION (r188581): Web Inspector: Console user command isn't visible when it's expected to be
https://bugs.webkit.org/show_bug.cgi?id=148283

One of the improvements of r188581 "Option-Enter should commit console command
without erasing the prompt" was not to show a console user command if it's the
same as the previous one.

However, there could be a lot of other messages between the last two user
commands - console.log, CSS warnings, etc. In that case we should show a console
user command again by resetting _lastCommitted.

Reviewed by Timothy Hatcher.

  • UserInterface/Controllers/JavaScriptLogViewController.js:

(WebInspector.JavaScriptLogViewController):
(WebInspector.JavaScriptLogViewController.prototype.startNewSession):
(WebInspector.JavaScriptLogViewController.prototype._appendConsoleMessageView):
Reset _lastCommitted for all messages except for user commands and use command results.

8:55 AM Changeset in webkit [188861] by Matt Baker
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Rendering Frames filter checkboxes all become checked during recording
https://bugs.webkit.org/show_bug.cgi?id=148375

Reviewed by Timothy Hatcher.

  • UserInterface/Views/ChartDetailsSectionRow.js:

(WebInspector.ChartDetailsSectionRow.prototype._createLegend):
Removed incorrect code that forced checked to true.

  • UserInterface/Views/TimelineSidebarPanel.js:

(WebInspector.TimelineSidebarPanel._refreshFrameSelectionChart):
Persist legend item checkbox state when updating the chart.

8:23 AM Changeset in webkit [188860] by Wenson Hsieh
  • 14 edits
    1 copy
    2 moves
    2 adds in trunk/Source

Use _NSScrollingPredominantAxisFilter for wheel event filtering on Mac
https://bugs.webkit.org/show_bug.cgi?id=147320

Reviewed by Simon Fraser.

Refactored to use a predominant axis filter instead of a predominant axis tracker. This allows us to
employ AppKit's _NSScrollingPredominantAxisFilter when possible, and use the wheel event delta tracker
Source/WebCore:

as a fallback. Here, we refactor EventHandler to use the new filters for overflow scrolling and replace
the MainFrame's WheelEventDeltaTracker with an appropriate type of WheelEventDeltaFilter.

In the case where an _NSScrollingPredominantAxisFilter is unavailable, the platform-invariant wheel
event delta filter simply uses the existing wheel event delta tracker to compute the current predominant
axis. It uses the predominant axis to determine which axis (if any) should have its delta zeroed out.

This patch also introduces NSScrollingInputFilterSPI.h, which either imports the internal input filter
header from AppKit or declares relevant interfaces and functions.

No new tests, since this change does not add new functionality.

  • CMakeLists.txt: Add page/WheelEventDeltaFilter.cpp.
  • WebCore.vcxproj/WebCore.vcxproj: Add WheelEventDeltaFilter.cpp and WheelEventDeltaFilter.h.
  • WebCore.vcxproj/WebCore.vcxproj.filters: Add WheelEventDeltaFilter.cpp and WheelEventDeltaFilter.h.
  • WebCore.xcodeproj/project.pbxproj: Add WheelEventDeltaFilter.cpp, WheelEventDeltaFilter.h, and their Mac counterparts.
  • page/EventHandler.cpp:

(WebCore::didScrollInScrollableArea): Refactored to no longer handle axes separately.
(WebCore::handleWheelEventInAppropriateEnclosingBox): Ditto.
(WebCore::EventHandler::platformRecordWheelEvent): Refactored to update the wheel delta filter.
(WebCore::EventHandler::clearLatchedState): Ditto.
(WebCore::EventHandler::defaultWheelEventHandler): Refactored to use wheel delta filters. No longer splits wheel events

and handles them on separate axes.

(WebCore::didScrollInScrollableAreaForSingleAxis): Deleted.
(WebCore::handleWheelEventInAppropriateEnclosingBoxForSingleAxis): Deleted.

  • page/EventHandler.h:
  • page/MainFrame.cpp:

(WebCore::MainFrame::MainFrame): Initializes the appropriate type of WheelEventDeltaFilter.

  • page/MainFrame.h:
  • page/WheelEventDeltaFilter.cpp: Added.

(WebCore::WheelEventDeltaFilter::WheelEventDeltaFilter):
(WebCore::WheelEventDeltaFilter::~WheelEventDeltaFilter):
(WebCore::WheelEventDeltaFilter::create):
(WebCore::BasicWheelEventDeltaFilter::BasicWheelEventDeltaFilter):
(WebCore::BasicWheelEventDeltaFilter::updateFromDelta):
(WebCore::BasicWheelEventDeltaFilter::beginFilteringDeltas):
(WebCore::BasicWheelEventDeltaFilter::endFilteringDeltas):
(WebCore::deltaIsPredominantlyVertical):
(WebCore::BasicWheelEventDeltaFilter::dominantScrollGestureDirection):

  • page/WheelEventDeltaFilter.h: Refactored WheelEventDeltaTracker logic to work as a filter instead.
  • page/mac/EventHandlerMac.mm:

(WebCore::EventHandler::platformPrepareForWheelEvents): Refactored to use wheel delta filters.
(WebCore::EventHandler::platformRecordWheelEvent): Ditto.

  • page/mac/WheelEventDeltaFilterMac.h: Wraps the new _NSScrollingPredominantAxisFilter.
  • page/mac/WheelEventDeltaFilterMac.mm: Added.

(WebCore::WheelEventDeltaFilterMac::WheelEventDeltaFilterMac):
(WebCore::WheelEventDeltaFilterMac::beginFilteringDeltas):
(WebCore::WheelEventDeltaFilterMac::updateFromDelta):
(WebCore::WheelEventDeltaFilterMac::endFilteringDeltas):

  • platform/PlatformWheelEvent.h:

(WebCore::PlatformWheelEvent::copyWithDeltas): Used to create a copy of the platform wheel event with filtered deltas.
(WebCore::PlatformWheelEvent::copyIgnoringHorizontalDelta): Deleted. No longer necessary, since we won't be handling wheel

events on separate axes.

(WebCore::PlatformWheelEvent::copyIgnoringVerticalDelta): Ditto.

  • platform/spi/mac/NSScrollingInputFilterSPI.h: Added.

Source/WebKit2:

as a fallback. Here, we refactor EventDispatcher to use the new filters for mainframe scrolling.

No new tests, since this change does not add new functionality.

  • WebProcess/WebPage/EventDispatcher.cpp: Include WheelEventDeltaFilterMac.h when necessary.

(WebKit::EventDispatcher::EventDispatcher): Initialize a WheelEventDeltaFilterMac when possible. Otherwise,

fall back to a BasicWheelEventDeltaFilter.

(WebKit::EventDispatcher::wheelEvent): Use filtered deltas to initialize the platform wheel event instead

of zeroing out non-predominant axes.

  • WebProcess/WebPage/EventDispatcher.h: Replace m_recentWheelEventDeltaTracker with m_recentWheelEventDeltaFilter.
6:39 AM Changeset in webkit [188859] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix typo in a comment ("unsused" -> "unused")

  • bindings/scripts/CodeGeneratorGObject.pm:

(GenerateFunction):

6:23 AM Changeset in webkit [188858] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

Unreviewed. Fix cairo performance regression introduced in r188379.

A missing break in a switch was making us to use High image
interpolation quality by default.

  • platform/graphics/cairo/PlatformContextCairo.cpp:

(WebCore::PlatformContextCairo::drawSurfaceToContext): Add the
missing break.

4:33 AM Changeset in webkit [188857] by Carlos Garcia Campos
  • 6 edits in trunk/Source/WebCore

Unreviewed. Fix GObject DOM bindings API break test after r188809.

element.getElementsByTagName and element.getElementsByClassName
were also changed in r188809 to return an HTMLCollection. The
build didn't fail because we don't use those in our tests, but the
API breaks need to be fixed too.

  • bindings/gobject/WebKitDOMDeprecated.cpp:

(webkit_dom_element_get_elements_by_tag_name):
(webkit_dom_element_get_elements_by_tag_name_ns):
(webkit_dom_element_get_elements_by_class_name):

  • bindings/gobject/WebKitDOMDeprecated.h:
  • bindings/gobject/WebKitDOMDeprecated.symbols:
  • bindings/gobject/webkitdom.symbols:
  • bindings/scripts/CodeGeneratorGObject.pm:

(GetEffectiveFunctionName):

4:15 AM Changeset in webkit [188856] by Carlos Garcia Campos
  • 6 edits in trunk/Source/WebCore

Unreviewed. Fix GObject DOM bindings API break test after r188735.

document.getElementsByClassName returns an HTMLCollection since
r188735. So, rename it as
webkit_dom_document_get_elements_by_class_name_as_html_collection,
and deprecate the old method returning a NodeList.

  • bindings/gobject/WebKitDOMDeprecated.cpp:

(webkit_dom_document_get_elements_by_class_name): Use the
implementation returning a NodeList.

  • bindings/gobject/WebKitDOMDeprecated.h:
  • bindings/gobject/WebKitDOMDeprecated.symbols: Add new symbols.
  • bindings/gobject/webkitdom.symbols: Ditto.
  • bindings/scripts/CodeGeneratorGObject.pm:

(GetEffectiveFunctionName): Also check getElementsByClassName.

3:23 AM Changeset in webkit [188855] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

Unreviewed. Fix GTK+ build after r188711.

Since r188711 document.createNodeIterator and
document.createTreeWalker, don't raise exceptions anymore. Keep
the GError parameter even if it's ignored to not break the API
compatibility.

  • bindings/scripts/CodeGeneratorGObject.pm:

(FunctionUsedToRaiseException):
(GenerateFunction):

3:19 AM Changeset in webkit [188854] by Carlos Garcia Campos
  • 6 edits in trunk/Source/WebCore

Unreviewed. Fix GTK+ build after r188809.

document.getElementsByTagName returns an HTMLCollection since
r188809. So, rename it as
webkit_dom_document_get_elements_by_tag_name_as_html_collection,
and deprecate the old methods returning a NodeList.

  • bindings/gobject/WebKitDOMDeprecated.cpp:

(webkit_dom_document_get_elements_by_tag_name): Use the
implementation returning a NodeList.
(webkit_dom_document_get_elements_by_tag_name_ns): Ditto.

  • bindings/gobject/WebKitDOMDeprecated.h:
  • bindings/gobject/WebKitDOMDeprecated.symbols: Add new symbols.
  • bindings/gobject/webkitdom.symbols: Ditto.
  • bindings/scripts/CodeGeneratorGObject.pm:

(GetEffectiveFunctionName): Bring back this method, now that we
have deprecated API again and add the checks for
getElementsByTagName methods.
(GenerateFunction): Use GetEffectiveFunctionName().

1:06 AM Changeset in webkit [188853] by mmaxfield@apple.com
  • 12 edits in trunk/Source/WebCore

@font-face related cleanup
https://bugs.webkit.org/show_bug.cgi?id=148355

Reviewed by Darin Adler.

This patch cleans up much of our code related to web fonts. In general, it
migrates to using C++ for-each style loops, uses Ref instead of RefPtr when
things can't be nullptr, migrates to C++ Rvalue-references instead of
PassRefPtr, and refactors CSSFontSelector::addFontFaceRule() to use helper
functions.

No new tests because there is no behavior change.

  • css/CSSFontFace.cpp:

(WebCore::CSSFontFace::fontLoaded): Use a C++ for-each loop.

  • css/CSSFontFace.h:

(WebCore::CSSFontFace::create): Use C++ Rvalue-references instead of
PassRefPtr.
(WebCore::CSSFontFace::CSSFontFace): Ditto.

  • css/CSSFontSelector.cpp:

(WebCore::computeTraitsMask): Migrated a chunk of
CSSFontSelector::addFontFaceRule() into this helper function.
(WebCore::createFontFace): Ditto.
(WebCore::familyNameFromPrimitive): Ditto.
(WebCore::CSSFontSelector::addFontFaceRule): Call the newly-created helper
functions. In addition, migrate to Refs instead of RefPtrs.
(WebCore::compareFontFaces): Migrate to references instead of pointers.
(WebCore::CSSFontSelector::getFontFace): Migrate to Refs instead of
RefPtrs. Also use C++ for-each loops.

  • css/CSSFontSelector.h:
  • css/CSSSegmentedFontFace.cpp:

(WebCore::CSSSegmentedFontFace::~CSSSegmentedFontFace): Use C++ for-each
loops.
(WebCore::CSSSegmentedFontFace::isValid): Ditto.
(WebCore::CSSSegmentedFontFace::appendFontFace): Migrate to Rvalue-
references instead of PassRefPtr.

  • css/CSSSegmentedFontFace.h:
  • platform/graphics/FontCache.h:
  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::FontCache::getTraitsInFamily): Return the result instead of being
passed an out parameter.

  • platform/graphics/freetype/FontCacheFreeType.cpp:

(WebCore::FontCache::getTraitsInFamily): Ditto.

  • platform/graphics/win/FontCacheWin.cpp:

(WebCore::traitsInFamilyEnumProc): Ditto.
(WebCore::FontCache::getTraitsInFamily): Ditto.

Aug 23, 2015:

11:54 PM Changeset in webkit [188852] by aestes@apple.com
  • 2 edits in trunk/Tools

Addressed a missed piece of review feedback from r188851.

  • TestWebKitAPI/Tests/WebKit2Cocoa/ContentFiltering.mm:
11:48 PM Changeset in webkit [188851] by aestes@apple.com
  • 20 edits
    1 copy
    2 moves
    1 add in trunk

[Content Filtering] REGRESSION (r182356): Provisional URL is incorrect in didReceiveServerRedirectForProvisionalLoadForFrame when Content Filtering is enabled
https://bugs.webkit.org/show_bug.cgi?id=147872
rdar://problem/22044000

Reviewed by Dan Bernstein.
Source/WebCore:

Passed the ResourceLoader request URL to dispatchDidReceiveServerRedirectForProvisionalLoad().

New API test: ContentFiltering.ServerRedirect

  • WebCore.xcodeproj/project.pbxproj:
  • loader/EmptyClients.h:
  • loader/FrameLoaderClient.h: Added a URL argument to dispatchDidReceiveServerRedirectForProvisionalLoad().
  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::willSendRequestInternal): Passed the request URL to dispatchDidReceiveServerRedirectForProvisionalLoad().

  • testing/Internals.cpp:

(WebCore::Internals::Internals): Stopped calling MockContentFilter::ensureInstalled().

  • testing/MockContentFilterSettings.cpp:

(WebCore::MockContentFilterSettings::setEnabled): Called MockContentFilter::ensureInstalled() to ensure the
mock is installed whenever the filter is enabled.

  • testing/MockContentFilterSettings.h: Exported member functions used by TestWebKitAPI.

Source/WebKit/mac:

  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad): Set provisionalURL using the URL argument.

Source/WebKit/win:

  • WebCoreSupport/WebFrameLoaderClient.cpp:

(WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad): Added the URL argument.

  • WebCoreSupport/WebFrameLoaderClient.h:

Source/WebKit2:

The provisional DocumentLoader request URL does not reflect redirects when content filtering is enabled, but
the URL argument passed to dispatchDidReceiveServerRedirectForProvisionalLoad() does, so use it intead.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad):
Sent DidReceiveServerRedirectForProvisionalLoadForFrame using the URL argument.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

Tools:

Added an API test.

  • TestWebKitAPI/Configurations/WebProcessPlugIn.xcconfig: Linked libWebCoreTestSupport in order to use MockContentFilter.
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/ContentFiltering.mm: Added.

(-[ServerRedirectNavigationDelegate webView:didStartProvisionalNavigation:]): Expect the initial request URL.
(-[ServerRedirectNavigationDelegate webView:didReceiveServerRedirectForProvisionalNavigation:]): Expect the redirect URL.
(-[ServerRedirectNavigationDelegate webView:didCommitNavigation:]):
(TEST): Tested that -[WKWebView URL] is updated after a redirect when content filtering is enabled.

  • TestWebKitAPI/Tests/WebKit2Cocoa/ContentFilteringPlugIn.mm: Added.

(+[ServerRedirectPlugIn initialize]): Enable MockContentFilter.

  • TestWebKitAPI/cocoa/TestProtocol.h: Renamed from Tools/TestWebKitAPI/mac/TestProtocol.h.
  • TestWebKitAPI/cocoa/TestProtocol.mm: Renamed from Tools/TestWebKitAPI/mac/TestProtocol.mm.
11:32 PM WebKitGTK/2.8.x edited by berto@igalia.com
(diff)
11:19 PM Changeset in webkit [188850] by benjamin@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] Get rid of NodePointerTraits
https://bugs.webkit.org/show_bug.cgi?id=148340

Patch by Benjamin Poulain <bpoulain@apple.com> on 2015-08-23
Reviewed by Anders Carlsson.

NodePointerTraits does exactly the same thing has the default trait.

  • dfg/DFGBasicBlock.h:
  • dfg/DFGCommon.h:

(JSC::DFG::NodePointerTraits::defaultValue): Deleted.
(JSC::DFG::NodePointerTraits::isEmptyForDump): Deleted.

11:18 PM Changeset in webkit [188849] by benjamin@webkit.org
  • 7 edits in trunk/Source/JavaScriptCore

[JSC] Reduce the memory usage of BytecodeLivenessAnalysis
https://bugs.webkit.org/show_bug.cgi?id=148353

Patch by Benjamin Poulain <bpoulain@apple.com> on 2015-08-23
Reviewed by Darin Adler.

BytecodeLivenessAnalysis easily takes kilobytes of memory for
non trivial blocks and that memory sticks around because
it stored on CodeBlock.

This patch reduces that memory use a bit.

Most of the memory is in the array of BytecodeBasicBlock.
BytecodeBasicBlock is shrunk by:
-Making it not ref-counted.
-Removing m_predecessors, it was only used for debugging and

is usually big.

-Added a shrinkToFit() phase to shrink the vectors once we are

done building the BytecodeBasicBlock.

There are more things we should do in the future:
-Store all the BytecodeBasicBlock direclty in the array.

We know the size ahead of time, this would be a pure win.
The only tricky part is changing m_successors to have the
index of the successor instead of a pointer.

-Stop putting duplicates in m_successors.

  • bytecode/BytecodeBasicBlock.cpp:

(JSC::computeBytecodeBasicBlocks):
(JSC::BytecodeBasicBlock::shrinkToFit): Deleted.
(JSC::linkBlocks): Deleted.

  • bytecode/BytecodeBasicBlock.h:

(JSC::BytecodeBasicBlock::addSuccessor):
(JSC::BytecodeBasicBlock::addPredecessor): Deleted.
(JSC::BytecodeBasicBlock::predecessors): Deleted.

  • bytecode/BytecodeLivenessAnalysis.cpp:

(JSC::getLeaderOffsetForBasicBlock):
(JSC::findBasicBlockWithLeaderOffset):
(JSC::findBasicBlockForBytecodeOffset):
(JSC::stepOverInstruction):
(JSC::computeLocalLivenessForBytecodeOffset):
(JSC::computeLocalLivenessForBlock):
(JSC::BytecodeLivenessAnalysis::dumpResults): Deleted.

  • bytecode/BytecodeLivenessAnalysis.h:
10:33 PM Changeset in webkit [188848] by Matt Baker
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Filtered style not applied to graph elements during timeline recording
https://bugs.webkit.org/show_bug.cgi?id=148339

Reviewed by Brian Burg.

  • UserInterface/Views/NavigationSidebarPanel.js:

(WebInspector.NavigationSidebarPanel.prototype._treeElementAddedOrChanged):
Check for hidden state change when applying filters to newly added tree elements.

10:27 PM Changeset in webkit [188847] by saambarati1@gmail.com
  • 1 edit
    2 adds
    1 delete in trunk/Websites/webkit.org

Change compiler-pipeline image for type profiler and code coverage profiler blog post.

  • blog-files/type-profiler-and-code-coverage-profiler/compiler-pipeline-1x.png: Added.
  • blog-files/type-profiler-and-code-coverage-profiler/compiler-pipeline-2x.png: Added.
  • blog-files/type-profiler-and-code-coverage-profiler/compiler-pipeline.png: Removed.
7:07 PM Changeset in webkit [188846] by ggaren@apple.com
  • 8 edits in trunk/Source/JavaScriptCore

Unreviewed, rolling back in r188792.
https://bugs.webkit.org/show_bug.cgi?id=148347

Previously reverted changesets:

"Unify code paths for manually deleting all code"
https://bugs.webkit.org/show_bug.cgi?id=148280
http://trac.webkit.org/changeset/188792

The previous patch caused some inspector tests to hang because it
introduced extra calls to sourceParsed, and sourceParsed is
pathologically slow in WK1 debug builds. This patch restores pre-existing
code to limit calls to sourceParsed, excluding code not being debugged
(i.e., inspector code).

3:51 PM Changeset in webkit [188845] by aestes@apple.com
  • 3 edits in trunk/Tools

Fixed the 32-bit Mac build after r188844.

  • TestWebKitAPI/WKWebViewConfigurationExtras.h:
  • TestWebKitAPI/WKWebViewConfigurationExtras.mm:
3:31 PM Changeset in webkit [188844] by aestes@apple.com
  • 4 edits
    2 copies
    6 adds in trunk/Tools

[Cocoa] API tests using the Modern WebKit API should be able to create web process plug-ins
https://bugs.webkit.org/show_bug.cgi?id=148317

Reviewed by Dan Bernstein.

Added the ability for Modern WebKit API tests to create WKWebProcessPlugIns. A test can create a plug-in by
creating a class that conforms to WKWebProcessPlugIn, adding it to the WebProcessPlugIn target, and using the
WKWebViewConfiguration returned by +[WKWebViewConfiguration testwebkitapi_configurationWithTestPlugInClassName:]
when creating WKWebViews.

Since TestWebKitAPI relies on a bundle parameter to know which test class to instantiate in the plug-in, I also
added a new API test for bundle parameters.

  • TestWebKitAPI/Configurations/WebProcessPlugIn.xcconfig: Added. Named the bundle TestWebKitAPI.wkbundle and

named its executable TestWebKitAPI.bundle.

  • TestWebKitAPI/PlatformUtilities.h: Declared TestPlugInClassNameParameter.
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Added the WebProcessPlugIn target.
  • TestWebKitAPI/Tests/WebKit2Cocoa/BundleParameters.mm: Added.

(TEST): Tested bundle parameters by verifying that parameter changes in the UI process are observed in the bundle.

  • TestWebKitAPI/Tests/WebKit2Cocoa/BundleParametersPlugIn.mm: Added.

(-[BundleParametersPlugIn webProcessPlugIn:didCreateBrowserContextController:]): Started observing changes to a
bundle parameter and asked for an initial notification.
(-[BundleParametersPlugIn dealloc]): Stopped observing changes to a bundle parameter.
(-[BundleParametersPlugIn observeValueForKeyPath:ofObject:change:context:]): When a bundle parameter changes,
mirror its value in the main frame's JSContext.

  • TestWebKitAPI/WKWebViewConfigurationExtras.h: Added.
  • TestWebKitAPI/WKWebViewConfigurationExtras.mm: Added.

(+[WKWebViewConfiguration testwebkitapi_configurationWithTestPlugInClassName:]): Created a configuration with
TestWebKitAPI's bundle URL and set a bundle parameter indicating the test plug-in's class name.

  • TestWebKitAPI/cocoa/PlatformUtilitiesCocoa.mm: Defined TestPlugInClassNameParameter.
  • TestWebKitAPI/cocoa/WebProcessPlugIn/Info.plist: Added. Set the principal class to WebProcessPlugIn.
  • TestWebKitAPI/cocoa/WebProcessPlugIn/WebProcessPlugIn.mm: Added.

(-[WebProcessPlugIn webProcessPlugIn:initializeWithObject:]): Forwarded to a newly-created test class instance.
(-[WebProcessPlugIn respondsToSelector:]): Returned YES if the test class instance response.
(-[WebProcessPlugIn forwardingTargetForSelector:]): Forwarded unimplemented methods to the test class instance.

2:42 PM Changeset in webkit [188843] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebKit2

Typo fix after r188842.

  • CMakeLists.txt:
2:37 PM Changeset in webkit [188842] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebKit2

Speculative buildfix after r188828.

  • CMakeLists.txt:
2:28 PM Changeset in webkit [188841] by ggaren@apple.com
  • 12 edits in trunk/Source

Unreviewed, rolling back in r188803.

"Debugger's VM should never be null"
https://bugs.webkit.org/show_bug.cgi?id=148341
http://trac.webkit.org/changeset/188803

Source/JavaScriptCore:

  • debugger/Debugger.cpp:

(JSC::Debugger::Debugger):
(JSC::Debugger::attach):
(JSC::Debugger::detach):
(JSC::Debugger::isAttached):
(JSC::Debugger::setSteppingMode):
(JSC::Debugger::registerCodeBlock):
(JSC::Debugger::toggleBreakpoint):
(JSC::Debugger::recompileAllJSFunctions):
(JSC::Debugger::setBreakpoint):
(JSC::Debugger::clearBreakpoints):
(JSC::Debugger::clearDebuggerRequests):
(JSC::Debugger::setBreakpointsActivated):
(JSC::Debugger::breakProgram):
(JSC::Debugger::stepOutOfFunction):
(JSC::Debugger::returnEvent):
(JSC::Debugger::didExecuteProgram):

  • debugger/Debugger.h:
  • inspector/JSGlobalObjectScriptDebugServer.cpp:

(Inspector::JSGlobalObjectScriptDebugServer::JSGlobalObjectScriptDebugServer):
(Inspector::JSGlobalObjectScriptDebugServer::removeListener):
(Inspector::JSGlobalObjectScriptDebugServer::runEventLoopWhilePaused):
(Inspector::JSGlobalObjectScriptDebugServer::recompileAllJSFunctions): Deleted.

  • inspector/JSGlobalObjectScriptDebugServer.h:
  • inspector/ScriptDebugServer.cpp:

(Inspector::ScriptDebugServer::ScriptDebugServer):

  • inspector/ScriptDebugServer.h:

Source/WebCore:

  • bindings/js/WorkerScriptDebugServer.cpp:

(WebCore::WorkerScriptDebugServer::WorkerScriptDebugServer):
(WebCore::WorkerScriptDebugServer::recompileAllJSFunctions):
(WebCore::WorkerScriptDebugServer::runEventLoopWhilePaused):

  • inspector/PageScriptDebugServer.cpp:

(WebCore::PageScriptDebugServer::PageScriptDebugServer):
(WebCore::PageScriptDebugServer::recompileAllJSFunctions):
(WebCore::PageScriptDebugServer::didPause):
(WebCore::PageScriptDebugServer::runEventLoopWhilePaused):

Source/WebKit/mac:

  • WebView/WebScriptDebugger.mm:

(toWebFrame):
(WebScriptDebugger::WebScriptDebugger):

2:27 PM Changeset in webkit [188840] by Csaba Osztrogonác
  • 2 edits in trunk/Tools

URTBF after r188828.

  • WebKitTestRunner/PlatformWebView.h:
9:37 AM Changeset in webkit [188839] by Antti Koivisto
  • 8 edits in trunk/Source/WebCore

Remove SVGFrameLoaderClient and dataProtocolFrameLoader
https://bugs.webkit.org/show_bug.cgi?id=148370

Reviewed by Darin Adler.

With data protocol handled internally in WebKit these are no longer needed.

This mostly reverts code changes from http://trac.webkit.org/179626 keeping the tests.

  • loader/FrameLoaderClient.h:
  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::loadDataURL):
(WebCore::ResourceLoader::setDataBufferingPolicy):
(WebCore::ResourceLoader::dataProtocolFrameLoader): Deleted.

  • loader/ResourceLoader.h:

(WebCore::ResourceLoader::documentLoader):
(WebCore::ResourceLoader::originalRequest):

  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::finishLoading):

  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::dataChanged):

  • svg/graphics/SVGImage.h:
  • svg/graphics/SVGImageClients.h:
9:33 AM Changeset in webkit [188838] by ap@apple.com
  • 2 edits in trunk/Tools

build.webkit.org/dashboard: Combined queues don't turn orange on internal failure
https://bugs.webkit.org/show_bug.cgi?id=148356

Reviewed by Darin Adler.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotCombinedQueueView.js:

(BuildbotCombinedQueueView.prototype.update):

9:31 AM Changeset in webkit [188837] by timothy@apple.com
  • 14 edits in trunk/Source/WebInspectorUI

Web Inspector: Drop webkit prefixes from animation, keyframes and transform
https://bugs.webkit.org/show_bug.cgi?id=148364

Reviewed by Darin Adler.

  • UserInterface/Views/BreakpointTreeElement.css:

(.breakpoint-generic-line-icon .icon > span):
(.data-updated.breakpoint-generic-line-icon .icon > span):

  • UserInterface/Views/ColorPicker.css:

(.color-picker > .slider):

  • UserInterface/Views/DashboardContainerView.css:

(.toolbar .dashboard):
(.toolbar .dashboard.slide-out-up):
(.toolbar .dashboard.slide-out-down):
(.toolbar .dashboard.slide-in-up):
(.toolbar .dashboard.slide-in-down):
(@keyframes slide-top-edge):
(@keyframes slide-bottom-edge):
(@-webkit-keyframes slide-top-edge): Deleted.
(@-webkit-keyframes slide-bottom-edge): Deleted.

  • UserInterface/Views/DebuggerDashboardView.css:

(.dashboard.debugger .navigation-bar .item.button > .glyph):
(@keyframes pulse-pause-button):
(@-webkit-keyframes pulse-pause-button): Deleted.

  • UserInterface/Views/DefaultDashboardView.css:

(.toolbar .dashboard.default > .item.pulsing):
(@keyframes console-item-pulse):
(@-webkit-keyframes console-item-pulse): Deleted.

  • UserInterface/Views/GoToLineDialog.css:

(.go-to-line-dialog):

  • UserInterface/Views/HoverMenu.css:

(.hover-menu):

  • UserInterface/Views/IndeterminateProgressSpinner.css:

(@keyframes discrete-spinner):
(.indeterminate-progress-spinner):
(@-webkit-keyframes discrete-spinner): Deleted.

  • UserInterface/Views/Main.css:

(.bouncy-highlight):
(@keyframes bouncy-highlight-animation):
(@-webkit-keyframes bouncy-highlight-animation): Deleted.

  • UserInterface/Views/ProbeSetDataGrid.css:

(.details-section.probe-set .data-grid tr.revealed.highlighted):
(@keyframes blink-frame-highlight):
(.details-section.probe-set .data-grid > tr.data-updated):
(@keyframes blink-probe-frame):
(@-webkit-keyframes blink-frame-highlight): Deleted.
(@-webkit-keyframes blink-probe-frame): Deleted.

  • UserInterface/Views/TextEditor.css:

(.text-editor > .CodeMirror .highlighted):
(@keyframes text-editor-highlight-fadeout):
(.text-editor > .CodeMirror .hovered-expression-highlight):
(@keyframes text-editor-hovered-expression-highlight-fadeout):
(@-webkit-keyframes text-editor-highlight-fadeout): Deleted.
(@-webkit-keyframes text-editor-hovered-expression-highlight-fadeout): Deleted.

  • UserInterface/Views/TimelineOverview.css:

(.timeline-overview.frames > .timeline-ruler > .markers > .divider):
(.timeline-overview.frames > .timeline-ruler:not(.both-handles-clamped) > .selection-handle.right):
(.timeline-overview.frames > .timeline-ruler:not(.both-handles-clamped) > .shaded-area.right):

  • UserInterface/Views/TimelineRuler.css:

(.timeline-ruler > .header > .divider):
(.timeline-ruler > .markers > .divider):
(.timeline-ruler > .markers > .marker):
(.timeline-ruler > .selection-handle.left):
(.timeline-ruler > .selection-handle.right):

9:29 AM Changeset in webkit [188836] by ap@apple.com
  • 2 edits in trunk/Tools

build.webkit.org/dashboard: Respect step's hidden flag
https://bugs.webkit.org/show_bug.cgi?id=148357

Reviewed by Darin Adler.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotIteration.js:

(BuildbotIteration.prototype._parseData):

9:26 AM Changeset in webkit [188835] by commit-queue@webkit.org
  • 5 edits in trunk

AX: Fix accessibility/deleting-iframe-destroys-axcache.html test
https://bugs.webkit.org/show_bug.cgi?id=148328

Patch by Nan Wang <n_wang@apple.com> on 2015-08-23
Reviewed by Darin Adler.

Tools:

We should only expose stringValue() when value attribute is set.

  • DumpRenderTree/mac/AccessibilityUIElementMac.mm:

(AccessibilityUIElement::stringValue):

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::AccessibilityUIElement::stringValue):

LayoutTests:

  • platform/mac/TestExpectations:
3:35 AM Changeset in webkit [188834] by Gyuyoung Kim
  • 3 edits in trunk/Tools

Remove style checking rule regarding OwnPtr and PassOwnPtr
https://bugs.webkit.org/show_bug.cgi?id=148360

Reviewed by Darin Adler.

OwnPtr and PassOwnPtr were totally removed though, style rule is still alive.
Removed it.

  • Scripts/do-webcore-rename:
  • Scripts/webkitpy/style/checkers/cpp_unittest.py:

(PassPtrTest.test_pass_own_ptr_in_function): Deleted.
(PassPtrTest.test_pass_ref_ptr_return_value): Deleted.
(PassPtrTest.test_own_ptr_parameter_value): Deleted.
(WebKitStyleTest.test_names): Deleted.

Note: See TracTimeline for information about the timeline view.