⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Timeline



Jan 9, 2017:

11:02 PM Changeset in webkit [210538] by rniwa@webkit.org
  • 4 edits
    2 adds in trunk/LayoutTests

Add an iOS test for tapping on a text node assigned to a slot
https://bugs.webkit.org/show_bug.cgi?id=166877

Reviewed by Andy Estes.

Add a test for tapping on a text node assigned to a slot.
touchstart event must be fired on a parent of the slot with a touch event handler.

  • TestExpectations:
  • fast/shadow-dom/touch-event-on-text-assigned-to-slot-expected.txt: Added.
  • fast/shadow-dom/touch-event-on-text-assigned-to-slot.html: Added.
  • resources/ui-helper.js:

(window.UIHelper.tapAt): Added.

9:58 PM Changeset in webkit [210537] by Yusuke Suzuki
  • 19 edits
    3 adds in trunk

Implement JSSourceCode to propagate SourceCode in module pipeline
https://bugs.webkit.org/show_bug.cgi?id=166861

Reviewed by Saam Barati.

Source/JavaScriptCore:

Instead of propagating source code string, we propagate JSSourceCode
cell in the module pipeline. This allows us to attach a metadata
to the propagated source code string. In particular, it propagates
SourceOrigin through the module pipeline.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • builtins/ModuleLoaderPrototype.js:

(fulfillFetch):
(requestFetch):

  • jsc.cpp:

(GlobalObject::moduleLoaderFetch):

  • llint/LLIntData.cpp:

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

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

(JSC::loadAndEvaluateModule):
(JSC::loadModule):

  • runtime/JSModuleLoader.cpp:

(JSC::JSModuleLoader::provide):

  • runtime/JSModuleLoader.h:
  • runtime/JSSourceCode.cpp: Added.

(JSC::JSSourceCode::destroy):

  • runtime/JSSourceCode.h: Added.

(JSC::JSSourceCode::createStructure):
(JSC::JSSourceCode::create):
(JSC::JSSourceCode::sourceCode):
(JSC::JSSourceCode::JSSourceCode):

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

(JSC::moduleLoaderPrototypeParseModule):

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:

Source/WebCore:

Now SourceOrigin is correctly propagated through the module pipeline.
So the error reported by http/tests/security/contentSecurityPolicy/module-eval-blocked-expected.html
is updated.

  • ForwardingHeaders/runtime/JSSourceCode.h: Added.
  • bindings/js/JSDOMPromise.h:

(WebCore::DeferredPromise::resolveWithCallback):

  • bindings/js/ScriptModuleLoader.cpp:

(WebCore::ScriptModuleLoader::notifyFinished):

LayoutTests:

  • http/tests/security/contentSecurityPolicy/module-eval-blocked-expected.txt:
9:04 PM Changeset in webkit [210536] by Chris Dumez
  • 3 edits
    2 adds in trunk

REGRESSION(r189555): ImageDocument title no longer includes the size of the image
https://bugs.webkit.org/show_bug.cgi?id=166876
<rdar://problem/29939970>

Reviewed by Tim Horton.

Source/WebCore:

ImageDocument title no longer included the size of the image after r189555.
This is because Document::setTitle() is a no-op if the document does not
have a <head> element. To address the issue, we now include a <head>
element in ImageDocuments so that their title element properly gets added
to it.

Test: fast/images/imageDocument-title.html

  • html/ImageDocument.cpp:

(WebCore::ImageDocument::createDocumentStructure):

LayoutTests:

Add layout test coverage.

  • fast/images/imageDocument-title-expected.txt: Added.
  • fast/images/imageDocument-title.html: Added.
8:19 PM Changeset in webkit [210535] by Yusuke Suzuki
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION (r210522): ASSERTION FAILED: divot.offset >= divotStart.offset seen with stress/import-basic.js and stress/import-from-eval.js
https://bugs.webkit.org/show_bug.cgi?id=166873

Reviewed by Saam Barati.

The divot should be the end of import token.

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseMemberExpression):

6:17 PM Changeset in webkit [210534] by Alan Bujtas
  • 3 edits
    2 adds in trunk

ASSERTION FAILED: newLogicalTop >= logicalTop in WebCore::RenderBlockFlow::getClearDelta
https://bugs.webkit.org/show_bug.cgi?id=151202
<rdar://problem/27711822>

Reviewed by Myles C. Maxfield.

Source/WebCore:

FindNextFloatLogicalBottomAdapter uses LayoutUnit::max() to flag m_nextLogicalBottom uninitialized.
However LayoutUnit::max() can also be a valid value for m_nextLogicalBottom.
FindNextFloatLogicalBottomAdapter::nextLogicalBottom() returns 0 instead of the actual value when
it sees m_nextLogicalBottom uninitialized. In certain cases, it confuses the caller and we end up
with a runaway loop.

Test: fast/block/float/assert-when-line-has-not-enough-space-left.html

  • rendering/FloatingObjects.cpp:

(WebCore::FindNextFloatLogicalBottomAdapter::FindNextFloatLogicalBottomAdapter):
(WebCore::FindNextFloatLogicalBottomAdapter::highValue):
(WebCore::FindNextFloatLogicalBottomAdapter::nextLogicalBottom):
(WebCore::FindNextFloatLogicalBottomAdapter::nextShapeLogicalBottom):
(WebCore::FindNextFloatLogicalBottomAdapter::collectIfNeeded):

LayoutTests:

  • fast/block/float/assert-when-line-has-not-enough-space-left-expected.txt: Added.
  • fast/block/float/assert-when-line-has-not-enough-space-left.html: Added.
5:28 PM Changeset in webkit [210533] by Ryan Haddad
  • 10 edits
    2 deletes in trunk

Unreviewed, rolling out r210531.

This change broke the 32-bit macOS build and caused LayoutTest
failures.

Reverted changeset:

"File scheme should not allow access of a resource on a
different volume."
https://bugs.webkit.org/show_bug.cgi?id=158552
http://trac.webkit.org/changeset/210531

4:46 PM Changeset in webkit [210532] by Chris Dumez
  • 8 edits
    3 deletes in trunk/Source

[iOS] Drop VNodeTracker
https://bugs.webkit.org/show_bug.cgi?id=166868
<rdar://problem/29937587>

Reviewed by Andreas Kling.

Source/WebCore:

Drop VNodeTracker on iOS. This was introduced a while back to try and
address vnode exhaustion issues in long running page load tests.
However, there was no evidence that the VNodeTracker functionality
helped so there is little point in keeping the extra code complexity.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/SharedBuffer.h:
  • platform/VNodeTracker.cpp: Removed.
  • platform/VNodeTracker.h: Removed.
  • platform/cf/SharedBufferCF.cpp:

(WebCore::SharedBuffer::SharedBuffer):

  • platform/cocoa/VNodeTrackerCocoa.cpp: Removed.

Source/WebKit2:

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

4:32 PM Changeset in webkit [210531] by Brent Fulgham
  • 10 edits
    2 adds in trunk

File scheme should not allow access of a resource on a different volume.
https://bugs.webkit.org/show_bug.cgi?id=158552
<rdar://problem/15307582>

Reviewed by Alex Christensen.

Source/WebCore:

Revise SecurityOrigin to prevent files from one storage device (volume) from accessing content
on a different storage device (volume) unless universal access is enabled.

Pass the current file device as part of the NSURLRequest so that CFNetwork can reject loads
where the device changes in the midst of a load.

Also properly reflect that SecurityOrigin is never null by passing as a reference,
rather than as a pointer.

Tests: Tools/TestWebKitAPI/Tests/mac/CrossPartitionFileSchemeAccess.mm

  • page/SecurityOrigin.cpp:

(WebCore::SecurityOrigin::canAccess): Pass argument as reference.
(WebCore::SecurityOrigin::passesFileCheck): Add check that file URLs refer to files in
the same storage volume.
(WebCore::SecurityOrigin::canDisplay): Add check that files share the same volume.
(WebCore::SecurityOrigin::isSameSchemeHostPort): Pass argument as reference.

  • page/SecurityOrigin.h:
  • platform/FileSystem.cpp:

(WebCore::filesHaveSameVolume): Added.

  • platform/FileSystem.h:
  • platform/network/cocoa/ResourceRequestCocoa.mm:

(WebCore::ResourceRequest::doUpdatePlatformRequest): If loading a file URL, tell CFNetwork
the storage device at the time of the start of the load so we can trigger a failure if this
changes during the load operation.

  • platform/posix/FileSystemPOSIX.cpp:

(WebCore::getFileDeviceId): Added.

  • platform/win/FileSystemWin.cpp:

(WebCore::getFileDeviceId): Added.

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Add new files.
  • TestWebKitAPI/Tests/mac/CrossPartitionFileSchemeAccess.html: Added.
  • TestWebKitAPI/Tests/mac/CrossPartitionFileSchemeAccess.mm: Added.
4:15 PM Changeset in webkit [210530] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix cloop.

  • dfg/DFGPlanInlines.h:
4:11 PM Changeset in webkit [210529] by bshafiei@apple.com
  • 3 edits in branches/safari-603-branch/Source/JavaScriptCore

Merge r210458. rdar://problem/29911919

3:58 PM Changeset in webkit [210528] by bshafiei@apple.com
  • 3 edits in tags/Safari-603.1.19.1/Source/JavaScriptCore

Merge r210458. rdar://problem/29911919

3:24 PM Changeset in webkit [210527] by bshafiei@apple.com
  • 5 edits in tags/Safari-603.1.19.1/Source

Versioning.

3:22 PM Changeset in webkit [210526] by bshafiei@apple.com
  • 1 copy in tags/Safari-603.1.19.1

New tag.

3:17 PM Changeset in webkit [210525] by enrica@apple.com
  • 2 edits in trunk/Source/WebKit2

Selection animation flashing on editable content when zooming.
https://bugs.webkit.org/show_bug.cgi?id=166863
rdar://problem/29931470

Reviewed by Tim Horton.

Implementing _allowAnimatedUpdateSelectionRectView and returning NO,
prevents the selection animation in UIKit.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _allowAnimatedUpdateSelectionRectViews]):

2:35 PM Changeset in webkit [210524] by timothy_horton@apple.com
  • 3 edits
    2 adds in trunk

Unindenting text inside a blockquote can result in the text being reordered
https://bugs.webkit.org/show_bug.cgi?id=166813

Reviewed by Darin Adler and Ryosuke Niwa.

Test: editing/execCommand/unindent-nested-blockquote-with-inner-div.html

  • editing/IndentOutdentCommand.cpp:

(WebCore::IndentOutdentCommand::outdentParagraph):
Start splitting the tree at the beginning of the content being unindented,
not at the containing block flow element, which could e.g. contain other
elements (or even other blockquotes).

  • editing/execCommand/unindent-nested-blockquote-with-inner-div-expected.txt: Added.
  • editing/execCommand/unindent-nested-blockquote-with-inner-div.html: Added.

Old test output:
second<br><blockquote><div><blockquote>first</blockquote><br></div></blockquote>
New test output:
<blockquote><div><blockquote>first</blockquote><br></div></blockquote>second

2:28 PM Changeset in webkit [210523] by clopez@igalia.com
  • 5 edits
    1 add in trunk/Tools

[GTK][Wayland] Allow running the layout tests under a native Wayland environment.
https://bugs.webkit.org/show_bug.cgi?id=165232

Reviewed by Michael Catanzaro.

Add a new WaylandDriver to run the tests in the user current wayland session.

Also merge all the configuration options for selecting the display server inside one
switch --display-server=xvfb/xorg/wayland/weston (defaulting to xvfb).

This switch is supported on the scripts: run-gtk-tests, run-perf-tests and run-webkit-tests.

  • Scripts/run-gtk-tests: Add missing logging.basicConfig() initialization for the error logger.

(TestRunner._create_driver):

  • Scripts/webkitpy/layout_tests/run_webkit_tests.py:

(parse_args):

  • Scripts/webkitpy/performance_tests/perftestsrunner.py:

(PerfTestsRunner._parse_args):

  • Scripts/webkitpy/port/gtk.py:

(GtkPort.init):
(GtkPort._driver_class):
(GtkPort._search_paths):

  • Scripts/webkitpy/port/waylanddriver.py: Added.

(WaylandDriver):
(WaylandDriver.check_driver):
(WaylandDriver._setup_environ_for_test):
(WaylandDriver._start):

2:02 PM Changeset in webkit [210522] by Yusuke Suzuki
  • 25 edits
    8 adds in trunk

[JSC] Prototype dynamic-import
https://bugs.webkit.org/show_bug.cgi?id=165724

Reviewed by Saam Barati.

JSTests:

  • stress/import-basic.js: Added.

(async.async.load):
(async):
(catch):

  • stress/import-from-eval.js: Added.

(async):
(catch):

  • stress/import-syntax.js: Added.

(testSyntaxError):

  • stress/import-tests/cocoa.js: Added.

(export.Cocoa):
(export.hello):

  • stress/import-tests/multiple.js: Added.

(export.result):

  • stress/import-tests/multiple2.js: Added.

(export.ok):

  • stress/import-tests/should.js: Added.

(export.shouldBe):
(export.shouldThrow):

  • stress/modules-syntax-error.js:

Source/JavaScriptCore:

In this patch, we implement stage3 dynamic-import proposal[1].
This patch adds a new special operator import. And by using it, we can import
the module dynamically from modules and scripts. Before this feature, the module
is always imported statically and before executing the modules, importing the modules
needs to be done. And especially, the module can only be imported from the module.
So the classic script cannot import and use the modules. This dynamic-import relaxes
the above restrictions.

The typical dynamic-import form is the following.

import("...").then(function (namespace) { ... });

You can pass any AssignmentExpression for the import operator. So you can determine
the importing modules dynamically.

import(value).then(function (namespace) { ... });

And previously the module import declaration is only allowed in the top level statements.
But this import operator is just an expression. So you can use it in the function.
And you can use it conditionally.

async function go(cond)
{

if (cond)

return import("...");

return undefined;

}
await go(true);

Currently, this patch just implements this feature only for the JSC shell.
JSC module loader requires a new hook, importModule. And the JSC shell implements
this hook. So, for now, this dynamic-import is not available in the browser side.
If you write this import call, it always returns the rejected promise.

import is implemented like a special operator similar to super.
This is because import is context-sensitive. If you call the import, the module
key resolution is done based on the caller's running context.

For example, if you are running the script which filename is "./ok/hello.js", the module
key for the callimport("./resource/syntax.js") becomes "./ok/resource/syntax.js".
But if you write the completely same import form in the script "./error/hello.js", the
key becomes "./error/resource/syntax.js". So exposing this feature as the import
function is misleading: this function becomes caller's context-sensitive. That's why
dynamic-import is specified as a special operator.

To resolve the module key, we need the caller's context information like the filename of
the caller. This is provided by the SourceOrigin implemented in r210149.
In the JSC shell implementation, this SourceOrigin holds the filename of the caller. So
based on this implementation, the module loader resolve the module key.
In the near future, we will extend this SourceOrigin to hold more information needed for
the browser-side import implementation.

[1]: https://tc39.github.io/proposal-dynamic-import/

  • builtins/ModuleLoaderPrototype.js:

(importModule):

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitGetTemplateObject):
(JSC::BytecodeGenerator::emitGetGlobalPrivate):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::ImportNode::emitBytecode):

  • jsc.cpp:

(absolutePath):
(GlobalObject::moduleLoaderImportModule):
(functionRun):
(functionLoad):
(functionCheckSyntax):
(runWithScripts):

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createImportExpr):

  • parser/NodeConstructors.h:

(JSC::ImportNode::ImportNode):

  • parser/Nodes.h:

(JSC::ExpressionNode::isImportNode):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseMemberExpression):

  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::createImportExpr):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/JSGlobalObject.h:
  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::globalFuncImportModule):

  • runtime/JSGlobalObjectFunctions.h:
  • runtime/JSModuleLoader.cpp:

(JSC::JSModuleLoader::importModule):
(JSC::JSModuleLoader::getModuleNamespaceObject):

  • runtime/JSModuleLoader.h:
  • runtime/ModuleLoaderPrototype.cpp:

(JSC::moduleLoaderPrototypeGetModuleNamespaceObject):

Source/WebCore:

We do not set a handler for import for now.
So dynamic import feature is only enabled in the JSC shell right now.

  • bindings/js/JSDOMWindowBase.cpp:
  • bindings/js/JSWorkerGlobalScopeBase.cpp:

LayoutTests:

  • sputnik/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.16-expected.txt:
1:45 PM Changeset in webkit [210521] by fpizlo@apple.com
  • 16 edits
    2 moves
    11 adds in trunk/Source/JavaScriptCore

Make the collector's fixpoint smart about scheduling work
https://bugs.webkit.org/show_bug.cgi?id=165910

Reviewed by Keith Miller.

Prior to this change, every time the GC would run any constraints in markToFixpoint, it
would run all of the constraints. It would always run them in the same order. That means
that so long as any one constraint was generating new work, we'd pay the price of all
constraints. This is usually OK because most constraints are cheap but it artificially
inflates the cost of slow constraints - especially ones that are expensive but usually
generate no new work.

This patch redoes how the GC runs constraints by applying ideas from data flow analysis.
The GC now builds a MarkingConstraintSet when it boots up, and this contains all of the
constraints as well as some meta-data about them. Now, markToFixpoint just calls into
MarkingConstraintSet to execute constraints. Because constraint execution and scheduling
need to be aware of each other, I rewrote markToFixpoint in such a way that it's more
obvious how the GC goes between constraint solving, marking with stopped mutator, and
marking with resumed mutator. This also changes the scheduler API in such a way that a
synchronous stop-the-world collection no longer needs to do fake stop/resume - instead we
just swap the space-time scheduler for the stop-the-world scheduler.

This is a big streamlining of the GC. This is a speed-up in GC-heavy tests because we
now execute most constraints exactly twice regardless of how many total fixpoint
iterations we do. Now, when we run out of marking work, the constraint solver will just
run the constraint that is most likely to generate new visiting work, and if it does
generate work, then the GC now goes back to marking. Before, it would run *all*
constraints and then go back to marking. The constraint solver is armed with three
information signals that it uses to sort the constraints in order of descending likelihood
to generate new marking work. Then it runs them in that order until it there is new
marking work. The signals are:

1) Whether the constraint is greyed by marking or execution. We call this the volatility

of the constraint. For example, weak reference constraints have GreyedByMarking as
their volatility because they are most likely to have something to say after we've done
some marking. On the other hand, conservative roots have GreyedByExecution as their
volatility because they will give new information anytime we let the mutator run. The
constraint solver will only run GreyedByExecution constraints as roots and after the
GreyedByMarking constraints go silent. This ensures that we don't try to scan
conservative roots every time we need to re-run weak references and vice-versa.


Another way to look at it is that the constraint solver tries to predict if the
wavefront is advancing or retreating. The wavefront is almost certainly advancing so
long as the mark stacks are non-empty or so long as at least one of the GreyedByMarking
constraints is still producing work. Otherwise the wavefront is almost certainly
retreating. It's most profitable to run GreyedByMarking constraints when the wavefront
is advancing, and most profitable to run GreyedByExecution constraints when the
wavefront is retreating.


We use the predicted wavefront direction and the volatility of constraints as a
first-order signal of constraint profitability.


2) How much visiting work was created the last time the constraint ran. The solver

remembers the lastVisitCount, and uses it to predict how much work the constraint will
generate next time. In practice this means we will keep re-running the one interesting
constraint until it shuts up.


3) Optional work predictors for some constraints. The constraint that shuffles the mutator

mark stack into the main SlotVisitor's mutator mark stack always knows exactly how much
work it will create.


The sum of (2) and (3) are used as a second-order signal of constraint profitability.


The constraint solver will always run all of the GreyedByExecution constraints at GC
start, since these double as the GC's roots. The constraint solver will always run all of
the GreyedByMarking constraints the first time that marking stalls. Other than that, the
solver will keep running constraints, sorted according to their likelihood to create work,
until either work is created or we run out of constraints to run. GC termination happens
when we run out of constraints to run.

This new infrastructure means that we have a much better chance of dealing with worst-case
DOM pathologies. If we can intelligently factor different evil DOM things into different
constraints with the right work predictions then this could reduce the cost of those DOM
things by a factor of N where N is the number of fixpoint iterations the GC typically
does. N is usually around 5-6 even for simple heaps.

My perf measurements say:

PLT3: 0.02% faster with 5.3% confidence.
JetStream: 0.15% faster with 17% confidence.
Speedometer: 0.58% faster with 82% confidence.

Here are the details from JetStream:

splay: 1.02173x faster with 0.996841 confidence
splay-latency: 1.0617x faster with 0.987462 confidence
towers.c: 1.01852x faster with 0.92128 confidence
crypto-md5: 1.06058x faster with 0.482363 confidence
score: 1.00152x faster with 0.16892 confidence

I think that Speedometer is legitimately benefiting from this change based on looking at
--logGC=true output. We are now spending less time reexecuting expensive constraints. I
think that JetStream/splay is also benefiting, because although the constraints it sees
are cheap, it spends 30% of its time in GC so even small improvements matter.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::markCodeBlocks): Deleted.
(JSC::DFG::Plan::rememberCodeBlocks): Deleted.

  • dfg/DFGPlan.h:
  • dfg/DFGPlanInlines.h: Added.

(JSC::DFG::Plan::iterateCodeBlocksForGC):

  • dfg/DFGWorklist.cpp:

(JSC::DFG::Worklist::markCodeBlocks): Deleted.
(JSC::DFG::Worklist::rememberCodeBlocks): Deleted.
(JSC::DFG::rememberCodeBlocks): Deleted.

  • dfg/DFGWorklist.h:
  • dfg/DFGWorklistInlines.h: Added.

(JSC::DFG::iterateCodeBlocksForGC):
(JSC::DFG::Worklist::iterateCodeBlocksForGC):

  • heap/CodeBlockSet.cpp:

(JSC::CodeBlockSet::writeBarrierCurrentlyExecuting): Deleted.

  • heap/CodeBlockSet.h:

(JSC::CodeBlockSet::iterate): Deleted.

  • heap/CodeBlockSetInlines.h:

(JSC::CodeBlockSet::iterate):
(JSC::CodeBlockSet::iterateCurrentlyExecuting):

  • heap/Heap.cpp:

(JSC::Heap::Heap):
(JSC::Heap::iterateExecutingAndCompilingCodeBlocks):
(JSC::Heap::iterateExecutingAndCompilingCodeBlocksWithoutHoldingLocks):
(JSC::Heap::assertSharedMarkStacksEmpty):
(JSC::Heap::markToFixpoint):
(JSC::Heap::endMarking):
(JSC::Heap::collectInThread):
(JSC::Heap::stopIfNecessarySlow):
(JSC::Heap::acquireAccessSlow):
(JSC::Heap::collectIfNecessaryOrDefer):
(JSC::Heap::buildConstraintSet):
(JSC::Heap::notifyIsSafeToCollect):
(JSC::Heap::ResumeTheWorldScope::ResumeTheWorldScope): Deleted.
(JSC::Heap::ResumeTheWorldScope::~ResumeTheWorldScope): Deleted.
(JSC::Heap::harvestWeakReferences): Deleted.
(JSC::Heap::visitConservativeRoots): Deleted.
(JSC::Heap::visitCompilerWorklistWeakReferences): Deleted.

  • heap/Heap.h:
  • heap/MarkingConstraint.cpp: Added.

(JSC::MarkingConstraint::MarkingConstraint):
(JSC::MarkingConstraint::~MarkingConstraint):
(JSC::MarkingConstraint::resetStats):
(JSC::MarkingConstraint::execute):

  • heap/MarkingConstraint.h: Added.

(JSC::MarkingConstraint::index):
(JSC::MarkingConstraint::abbreviatedName):
(JSC::MarkingConstraint::name):
(JSC::MarkingConstraint::lastVisitCount):
(JSC::MarkingConstraint::quickWorkEstimate):
(JSC::MarkingConstraint::workEstimate):
(JSC::MarkingConstraint::volatility):

  • heap/MarkingConstraintSet.cpp: Added.

(JSC::MarkingConstraintSet::ExecutionContext::ExecutionContext):
(JSC::MarkingConstraintSet::ExecutionContext::didVisitSomething):
(JSC::MarkingConstraintSet::ExecutionContext::shouldTimeOut):
(JSC::MarkingConstraintSet::ExecutionContext::drain):
(JSC::MarkingConstraintSet::ExecutionContext::didExecute):
(JSC::MarkingConstraintSet::ExecutionContext::execute):
(JSC::MarkingConstraintSet::MarkingConstraintSet):
(JSC::MarkingConstraintSet::~MarkingConstraintSet):
(JSC::MarkingConstraintSet::resetStats):
(JSC::MarkingConstraintSet::add):
(JSC::MarkingConstraintSet::executeBootstrap):
(JSC::MarkingConstraintSet::executeConvergence):
(JSC::MarkingConstraintSet::isWavefrontAdvancing):
(JSC::MarkingConstraintSet::executeConvergenceImpl):
(JSC::MarkingConstraintSet::executeAll):

  • heap/MarkingConstraintSet.h: Added.

(JSC::MarkingConstraintSet::isWavefrontRetreating):

  • heap/MutatorScheduler.cpp: Added.

(JSC::MutatorScheduler::MutatorScheduler):
(JSC::MutatorScheduler::~MutatorScheduler):
(JSC::MutatorScheduler::didStop):
(JSC::MutatorScheduler::willResume):
(JSC::MutatorScheduler::didExecuteConstraints):
(JSC::MutatorScheduler::log):
(JSC::MutatorScheduler::shouldStop):
(JSC::MutatorScheduler::shouldResume):

  • heap/MutatorScheduler.h: Added.
  • heap/OpaqueRootSet.h:

(JSC::OpaqueRootSet::add):

  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::visitAsConstraint):
(JSC::SlotVisitor::drain):
(JSC::SlotVisitor::didReachTermination):
(JSC::SlotVisitor::hasWork):
(JSC::SlotVisitor::drainFromShared):
(JSC::SlotVisitor::drainInParallelPassively):
(JSC::SlotVisitor::addOpaqueRoot):

  • heap/SlotVisitor.h:

(JSC::SlotVisitor::addToVisitCount):

  • heap/SpaceTimeMutatorScheduler.cpp: Copied from Source/JavaScriptCore/heap/SpaceTimeScheduler.cpp.

(JSC::SpaceTimeMutatorScheduler::Snapshot::Snapshot):
(JSC::SpaceTimeMutatorScheduler::Snapshot::now):
(JSC::SpaceTimeMutatorScheduler::Snapshot::bytesAllocatedThisCycle):
(JSC::SpaceTimeMutatorScheduler::SpaceTimeMutatorScheduler):
(JSC::SpaceTimeMutatorScheduler::~SpaceTimeMutatorScheduler):
(JSC::SpaceTimeMutatorScheduler::state):
(JSC::SpaceTimeMutatorScheduler::beginCollection):
(JSC::SpaceTimeMutatorScheduler::didStop):
(JSC::SpaceTimeMutatorScheduler::willResume):
(JSC::SpaceTimeMutatorScheduler::didExecuteConstraints):
(JSC::SpaceTimeMutatorScheduler::timeToStop):
(JSC::SpaceTimeMutatorScheduler::timeToResume):
(JSC::SpaceTimeMutatorScheduler::log):
(JSC::SpaceTimeMutatorScheduler::endCollection):
(JSC::SpaceTimeMutatorScheduler::bytesAllocatedThisCycleImpl):
(JSC::SpaceTimeMutatorScheduler::bytesSinceBeginningOfCycle):
(JSC::SpaceTimeMutatorScheduler::maxHeadroom):
(JSC::SpaceTimeMutatorScheduler::headroomFullness):
(JSC::SpaceTimeMutatorScheduler::mutatorUtilization):
(JSC::SpaceTimeMutatorScheduler::collectorUtilization):
(JSC::SpaceTimeMutatorScheduler::elapsedInPeriod):
(JSC::SpaceTimeMutatorScheduler::phase):
(JSC::SpaceTimeMutatorScheduler::shouldBeResumed):
(JSC::SpaceTimeScheduler::Decision::targetMutatorUtilization): Deleted.
(JSC::SpaceTimeScheduler::Decision::targetCollectorUtilization): Deleted.
(JSC::SpaceTimeScheduler::Decision::elapsedInPeriod): Deleted.
(JSC::SpaceTimeScheduler::Decision::phase): Deleted.
(JSC::SpaceTimeScheduler::Decision::shouldBeResumed): Deleted.
(JSC::SpaceTimeScheduler::Decision::timeToResume): Deleted.
(JSC::SpaceTimeScheduler::Decision::timeToStop): Deleted.
(JSC::SpaceTimeScheduler::SpaceTimeScheduler): Deleted.
(JSC::SpaceTimeScheduler::snapPhase): Deleted.
(JSC::SpaceTimeScheduler::currentDecision): Deleted.

  • heap/SpaceTimeMutatorScheduler.h: Copied from Source/JavaScriptCore/heap/SpaceTimeScheduler.h.

(JSC::SpaceTimeScheduler::Decision::operator bool): Deleted.

  • heap/SpaceTimeScheduler.cpp: Removed.
  • heap/SpaceTimeScheduler.h: Removed.
  • heap/SynchronousStopTheWorldMutatorScheduler.cpp: Added.

(JSC::SynchronousStopTheWorldMutatorScheduler::SynchronousStopTheWorldMutatorScheduler):
(JSC::SynchronousStopTheWorldMutatorScheduler::~SynchronousStopTheWorldMutatorScheduler):
(JSC::SynchronousStopTheWorldMutatorScheduler::state):
(JSC::SynchronousStopTheWorldMutatorScheduler::beginCollection):
(JSC::SynchronousStopTheWorldMutatorScheduler::timeToStop):
(JSC::SynchronousStopTheWorldMutatorScheduler::timeToResume):
(JSC::SynchronousStopTheWorldMutatorScheduler::endCollection):

  • heap/SynchronousStopTheWorldMutatorScheduler.h: Added.
  • heap/VisitingTimeout.h: Added.

(JSC::VisitingTimeout::VisitingTimeout):
(JSC::VisitingTimeout::visitCount):
(JSC::VisitingTimeout::didVisitSomething):
(JSC::VisitingTimeout::shouldTimeOut):

  • runtime/Options.h:
1:31 PM Changeset in webkit [210520] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

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

new colorpicker UI doesn't seem to work in trunk,
investigating offline (Requested by brrian on #webkit).

Reverted changeset:

"Web Inspector: color picker should feature an editable CSS
value"
https://bugs.webkit.org/show_bug.cgi?id=124356
http://trac.webkit.org/changeset/210260

1:31 PM Changeset in webkit [210519] by aestes@apple.com
  • 4 edits
    3 adds in trunk

[QuickLook] Add a layout test for webkit.org/b/135651
https://bugs.webkit.org/show_bug.cgi?id=166855

Reviewed by Andreas Kling.

Tools:

  • DumpRenderTree/mac/FrameLoadDelegate.mm:

(-[FrameLoadDelegate webView:didFailProvisionalLoadWithError:forFrame:]): Added output for
errors with code WebKitErrorCannotShowURL.

  • WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:

(WTR::InjectedBundlePage::didFailProvisionalLoadWithErrorForFrame): Made the error output
not specific to WebKit2 error codes.

LayoutTests:

  • quicklook/nil-response-mime-type-expected.txt: Added.
  • quicklook/nil-response-mime-type.html: Added.
  • quicklook/resources/nil-response-mime-type.xls: Added.
1:09 PM Changeset in webkit [210518] by commit-queue@webkit.org
  • 23 edits
    4 deletes in trunk

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

"4% JSBench regression" (Requested by keith_mi_ on #webkit).

Reverted changeset:

"Add a slice intrinsic to the DFG/FTL"
https://bugs.webkit.org/show_bug.cgi?id=166707
http://trac.webkit.org/changeset/210476

11:34 AM Changeset in webkit [210517] by commit-queue@webkit.org
  • 6 edits in trunk/Tools

Support webkit-test-runner key-value pairs in http tests in DumpRenderTree
https://bugs.webkit.org/show_bug.cgi?id=166837

Patch by Antoine Quint <Antoine Quint> on 2017-01-09
Reviewed by Alex Christensen.

We now correctly handle the --absolutePath argument in DumpRenderTree and use
the provided value when trying to determine the path to the test file. Failing
that, we use the computed URL or the raw path provided to cover all cases.

This was tested in the context of https://bugs.webkit.org/show_bug.cgi?id=165668
by applying this patch and seeing the number test failures dramatically reduced
with WK1 due to the option to turn modern media controls off for older media controls
tests.

  • DumpRenderTree/DumpRenderTree.h:
  • DumpRenderTree/DumpRenderTreeCommon.cpp:

(parseInputLine):

  • DumpRenderTree/TestOptions.h:
  • DumpRenderTree/TestOptions.mm:

(TestOptions::TestOptions):

  • DumpRenderTree/mac/DumpRenderTree.mm:

(runTest):

11:09 AM Changeset in webkit [210516] by Beth Dakin
  • 1 edit
    2 adds in trunk/LayoutTests

Add a test to ensure that preventDefault on touchmove prevents scrolling
https://bugs.webkit.org/show_bug.cgi?id=166790

Reviewed by Simon Fraser.

  • fast/events/touch/ios/iphone7/prevent-default-touchmove-prevents-scrolling-expected.txt: Added.
  • fast/events/touch/ios/iphone7/prevent-default-touchmove-prevents-scrolling.html: Added.
10:55 AM Changeset in webkit [210515] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Rebaseline W3C test for ios-simulator after r210468.
https://bugs.webkit.org/show_bug.cgi?id=166850

Unreviewed test gardening.

  • platform/ios-simulator/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin-expected.txt:
10:26 AM Changeset in webkit [210514] by commit-queue@webkit.org
  • 8 edits in trunk/Source/WebCore

Merging ThreadableLoader redundant options on filtering responses

Merge OpaqueResponseBodyPolicy and ResponseFilteringPolicy ThreadableLoader options
https://bugs.webkit.org/show_bug.cgi?id=166843

Patch by Youenn Fablet <youennf@gmail.com> on 2017-01-09
Reviewed by Darin Adler.

Covered by existing tests.

Removing OpaqueResponseBodyPolicy option.
When ResponseFilteringPolicy is set to Enable, the body is filtered out in DocumentThreadableLoader.

  • Modules/fetch/FetchLoader.cpp:

(WebCore::FetchLoader::start):

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::didReceiveResponse): Implementing body filtering based on ResponseFilteringPolicy option.

  • loader/ThreadableLoader.cpp:

(WebCore::ThreadableLoaderOptions::ThreadableLoaderOptions):

  • loader/ThreadableLoader.h:
  • loader/WorkerThreadableLoader.cpp:

(WebCore::LoaderTaskOptions::LoaderTaskOptions):

  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::loadSynchronously):
(WebCore::WorkerScriptLoader::loadAsynchronously):

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::createRequest):

10:14 AM Changeset in webkit [210513] by bshafiei@apple.com
  • 5 edits in branches/safari-603-branch/Source

Versioning.

9:41 AM Changeset in webkit [210512] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

prepare-ChangeLog: Correct help string for --style option
https://bugs.webkit.org/show_bug.cgi?id=166725

Patch by Milan Crha <mcrha@redhat.com> on 2017-01-09
Reviewed by Alexey Proskuryakov.

  • Scripts/prepare-ChangeLog:

(main):

9:39 AM Changeset in webkit [210511] by Ryan Haddad
  • 2 edits in branches/safari-602-branch/LayoutTests

Rebaseline fast/canvas/webgl/context-creation-attributes.html.

Unreviewed test gardening.

  • fast/canvas/webgl/context-creation-attributes-expected.txt:
9:39 AM Changeset in webkit [210510] by Lucas Forschler
  • 4 edits in trunk

https://bugs.webkit.org/show_bug.cgi?id=166839
Add php7 support for macOS.
Tools:

Mirror the debian logic to look for a php7 module on disk, and return the appropriate apache config file.

Reviewed by Alexey Proskuryakov.

  • Scripts/webkitpy/port/base.py:

(Port._is_darwin_php_version_7):
(Port._debian_php_version):
(Port):
(Port._darwin_php_version):
(Port._apache_config_file_name_for_platform):

LayoutTests:

This patch mirrors the solution that debian uses, by adding a php7 specific apache conf file.

Reviewed by Alexey Proskuryakov.

  • http/conf/apache2.4-php7-httpd.conf: Added.
9:33 AM Changeset in webkit [210509] by Lucas Forschler
  • 1 copy in trunk/LayoutTests/http/conf/apache2.4-php7-httpd.conf

Create new php7 config, preserving history via svn cp

9:19 AM Changeset in webkit [210508] by dbates@webkit.org
  • 2 edits in trunk/Source/WebCore

Evaluating window named element may return wrong result
https://bugs.webkit.org/show_bug.cgi?id=166792
<rdar://problem/29801059>

Reviewed by Chris Dumez.

  • bindings/js/JSDOMWindowProperties.cpp:

(WebCore::jsDOMWindowPropertiesGetOwnPropertySlotNamedItemGetter):

8:54 AM Changeset in webkit [210507] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

REGRESSION(r178955): Touching Settings.in doesn't cause JSInternalSettingsGenerated.cpp to be updated on first build
https://bugs.webkit.org/show_bug.cgi?id=166814

Reviewed by Darin Adler.

Stop using .INTERMEDIATE in DerivedSources.make was it seems to break dependency
chains for some reason. We started using .INTERMEDIATE for scripts that generate
several targets when run a single time. It avoided running the script several
times (once per target) unnecessarily, and fixed issues with parallel builds.

To address the same issue without using .INTERMEDIATE, we now use pattern rules
(i.e. rules that have '%'). As per the documentation [1]:
"Pattern rules may have more than one target. Unlike normal rules, this does not

act as many different rules with the same prerequisites and recipe. If a pattern
rule has multiple targets, make knows that the rule’s recipe is responsible for
making all of the targets. The recipe is executed only once to make all the
targets".

We are therefore solving the same problem as with .INTERMEDIATE. However, I have
confirmed that using pattern rules does not break dependency chains. For example,
modifying Settings.in re-generates both InternalSettingsGenerated.idl *and*
JSInternalSettingsGenerated.cpp.

[1] https://www.gnu.org/software/make/manual/html_node/Pattern-Intro.html#Pattern-Intro

  • DerivedSources.make:
8:31 AM Changeset in webkit [210506] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Unreviewed, rolling out r210493 and r210495.
https://bugs.webkit.org/show_bug.cgi?id=166842

Causes makeprops.pl to run on every build (Requested by smfr
on #webkit).

Reverted changesets:

"Avoid triggering rebuilds for minor changes of
CSSProperties.json"
https://bugs.webkit.org/show_bug.cgi?id=166810
http://trac.webkit.org/changeset/210493

"Avoid triggering rebuilds for minor changes of
CSSProperties.json"
https://bugs.webkit.org/show_bug.cgi?id=166810
http://trac.webkit.org/changeset/210495

8:02 AM Changeset in webkit [210505] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking inspector/debugger/breakpoint-action-log.html as flaky on macOS.
https://bugs.webkit.org/show_bug.cgi?id=165772

Unreviewed test gardening.

  • platform/mac/TestExpectations:
6:14 AM Changeset in webkit [210504] by Gustavo Noronha Silva
  • 12 edits
    1 add in trunk

[GTK] Should support key and code properties on keyboard events
https://bugs.webkit.org/show_bug.cgi?id=166759

Reviewed by Carlos Garcia Campos.

Source/WebCore:

This change fixes a bunch of tests which are currently failing, such as:

  • fast/events/arrow-keys-on-body.html
  • fast/events/constructors/keyboard-event-constructor.html
  • fast/events/key-events-in-input-button.html
  • fast/events/key-events-in-input-text.html
  • fast/events/keyboardevent-code.html
  • fast/events/keyboardevent-key.html
  • platform/PlatformKeyboardEvent.h:
  • platform/gtk/PlatformKeyboardEventGtk.cpp:

(WebCore::PlatformKeyboardEvent::keyValueForGdkKeyCode): match web key value
to GDK key symbol.
(WebCore::PlatformKeyboardEvent::keyCodeForHardwareKeyCode): match web key code
to hardware code as reported by GDK.
(WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent): add web key value and
code to the keyboard event upon creation.

Source/WebKit2:

  • Shared/WebEvent.h:
  • Shared/WebKeyboardEvent.cpp:

(WebKit::WebKeyboardEvent::WebKeyboardEvent): accept web key value and code on construction.

  • Shared/gtk/WebEventFactory.cpp:

(WebKit::WebEventFactory::createWebKeyboardEvent): pass web key value and code on construction.

Source/WTF:

  • wtf/FeatureDefines.h: enable key and code properties support for GTK.

Tools:

  • WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:

(WTR::getGDKKeySymForKeyRef): add missing modifier keys which were being reported as 'l' and 'r' only
on tests.

LayoutTests:

  • platform/gtk/fast/events/keyboardevent-code-expected.txt: Added. Hardware

codes are different for Mac and Linux for a couple of keys, so we need
platform-specific results.

4:46 AM Changeset in webkit [210503] by pvollan@apple.com
  • 13 edits in trunk/Tools

[Win] Some tests are flaky because certain DLLs are writing to stdout.
https://bugs.webkit.org/show_bug.cgi?id=166760

Reviewed by Darin Adler.

Some tests are flaky because certain DLLs are writing to stdout, giving incorrect test results.
We can work around that by duplicating and redirecting stdout.

  • DumpRenderTree/PixelDumpSupport.cpp:

(dumpWebViewAsPixelsAndCompareWithExpected):
(printPNG):

  • DumpRenderTree/win/AccessibilityControllerWin.cpp:

(logEventProc):

  • DumpRenderTree/win/DRTDesktopNotificationPresenter.cpp:

(DRTDesktopNotificationPresenter::showDesktopNotification):
(DRTDesktopNotificationPresenter::cancelDesktopNotification):
(DRTDesktopNotificationPresenter::requestNotificationPermission):

  • DumpRenderTree/win/DumpRenderTree.cpp:

(dumpFrameScrollPosition):
(dumpHistoryItem):
(dumpBackForwardList):
(dump):
(runTest):
(main):

  • DumpRenderTree/win/DumpRenderTreeWin.h:
  • DumpRenderTree/win/EditingDelegate.cpp:

(EditingDelegate::shouldBeginEditingInDOMRange):
(EditingDelegate::shouldEndEditingInDOMRange):
(EditingDelegate::shouldInsertNode):
(EditingDelegate::shouldInsertText):
(EditingDelegate::shouldDeleteDOMRange):
(EditingDelegate::shouldChangeSelectedDOMRange):
(EditingDelegate::shouldApplyStyle):
(EditingDelegate::shouldChangeTypingStyle):
(EditingDelegate::doPlatformCommand):
(EditingDelegate::webViewDidBeginEditing):
(EditingDelegate::webViewDidChange):
(EditingDelegate::webViewDidEndEditing):
(EditingDelegate::webViewDidChangeTypingStyle):
(EditingDelegate::webViewDidChangeSelection):

  • DumpRenderTree/win/FrameLoadDelegate.cpp:

(FrameLoadDelegate::didStartProvisionalLoadForFrame):
(FrameLoadDelegate::didReceiveServerRedirectForProvisionalLoadForFrame):
(FrameLoadDelegate::didChangeLocationWithinPageForFrame):
(FrameLoadDelegate::didFailProvisionalLoadWithError):
(FrameLoadDelegate::didCommitLoadForFrame):
(FrameLoadDelegate::didReceiveTitle):
(FrameLoadDelegate::didFinishLoadForFrame):
(FrameLoadDelegate::didFailLoadWithError):
(FrameLoadDelegate::willPerformClientRedirectToURL):
(FrameLoadDelegate::didCancelClientRedirectForFrame):
(FrameLoadDelegate::windowScriptObjectAvailable):
(FrameLoadDelegate::didFinishDocumentLoadForFrame):
(FrameLoadDelegate::didHandleOnloadEventsForFrame):
(FrameLoadDelegate::didDisplayInsecureContent):
(FrameLoadDelegate::didRunInsecureContent):
(FrameLoadDelegate::webViewProgressFinishedNotification):

  • DumpRenderTree/win/HistoryDelegate.cpp:

(HistoryDelegate::didNavigateWithNavigationData):
(HistoryDelegate::didPerformClientRedirectFromURL):
(HistoryDelegate::didPerformServerRedirectFromURL):
(HistoryDelegate::updateHistoryTitle):
(HistoryDelegate::populateVisitedLinksForWebView):

  • DumpRenderTree/win/PolicyDelegate.cpp:

(PolicyDelegate::decidePolicyForNavigationAction):
(PolicyDelegate::unableToImplementPolicyWithError):

  • DumpRenderTree/win/ResourceLoadDelegate.cpp:

(ResourceLoadDelegate::willSendRequest):
(ResourceLoadDelegate::didReceiveAuthenticationChallenge):
(ResourceLoadDelegate::didReceiveResponse):
(ResourceLoadDelegate::didFinishLoadingFromDataSource):
(ResourceLoadDelegate::didFailLoadingWithError):

  • DumpRenderTree/win/TestRunnerWin.cpp:

(TestRunner::addDisallowedURL):
(TestRunner::originsWithApplicationCache):
(TestRunner::setStorageDatabaseIdleInterval):
(TestRunner::closeIdleLocalStorageDatabases):
(TestRunner::copyDecodedHostName):
(TestRunner::copyEncodedHostName):
(TestRunner::numberOfPendingGeolocationPermissionRequests):
(TestRunner::isGeolocationProviderActive):
(TestRunner::pathToLocalResource):
(TestRunner::setMockDeviceOrientation):
(TestRunner::setMockGeolocationPosition):
(TestRunner::setMockGeolocationPositionUnavailableError):
(TestRunner::setSpatialNavigationEnabled):
(TestRunner::setAutomaticLinkDetectionEnabled):
(TestRunner::isCommandEnabled):
(TestRunner::authenticateSession):
(TestRunner::addChromeInputField):
(TestRunner::removeChromeInputField):
(TestRunner::focusWebView):
(TestRunner::grantWebNotificationPermission):
(TestRunner::denyWebNotificationPermission):
(TestRunner::removeAllWebNotificationPermissions):
(TestRunner::simulateWebNotificationClick):
(TestRunner::imageCountInGeneralPasteboard):

  • DumpRenderTree/win/UIDelegate.cpp:

(UIDelegate::runJavaScriptAlertPanelWithMessage):
(UIDelegate::runJavaScriptConfirmPanelWithMessage):
(UIDelegate::runJavaScriptTextInputPanelWithPrompt):
(UIDelegate::runBeforeUnloadConfirmPanelWithMessage):
(UIDelegate::webViewAddMessageToConsole):
(UIDelegate::exceededDatabaseQuota):
(UIDelegate::setStatusText):
(UIDelegate::didPressMissingPluginButton):

4:43 AM Changeset in webkit [210502] by Antti Koivisto
  • 17 edits
    2 copies
    5 moves
    1 add in trunk/Source

Move cache coders to WTF
https://bugs.webkit.org/show_bug.cgi?id=166825

Rubber-stamped by Sam Weinig.

Source/WebKit2:

  • NetworkProcess/cache/NetworkCache.h:
  • NetworkProcess/cache/NetworkCacheCoder.h: Removed.
  • NetworkProcess/cache/NetworkCacheCoders.cpp:

(WebKit::NetworkCache::Coder<AtomicString>::encode): Deleted.
(WebKit::NetworkCache::Coder<AtomicString>::decode): Deleted.
(WebKit::NetworkCache::Coder<CString>::encode): Deleted.
(WebKit::NetworkCache::Coder<CString>::decode): Deleted.
(WebKit::NetworkCache::Coder<String>::encode): Deleted.
(WebKit::NetworkCache::decodeStringText): Deleted.
(WebKit::NetworkCache::Coder<String>::decode): Deleted.
(WebKit::NetworkCache::Coder<SHA1::Digest>::encode): Deleted.
(WebKit::NetworkCache::Coder<SHA1::Digest>::decode): Deleted.
(WebKit::NetworkCache::Coder<WebCore::HTTPHeaderMap>::encode): Deleted.
(WebKit::NetworkCache::Coder<WebCore::HTTPHeaderMap>::decode): Deleted.

  • NetworkProcess/cache/NetworkCacheCoders.h:

(): Deleted.
(WebKit::NetworkCache::Coder<std::optional<T>>::encode): Deleted.
(WebKit::NetworkCache::Coder<std::optional<T>>::decode): Deleted.

  • NetworkProcess/cache/NetworkCacheCodersCocoa.cpp:

(WebKit::NetworkCache::encodeCFData): Deleted.
(WebKit::NetworkCache::decodeCFData): Deleted.
(WebKit::NetworkCache::encodeSecTrustRef): Deleted.
(WebKit::NetworkCache::decodeSecTrustRef): Deleted.
(WebKit::NetworkCache::encodeCertificateChain): Deleted.
(WebKit::NetworkCache::decodeCertificateChain): Deleted.
(WebKit::NetworkCache::Coder<WebCore::CertificateInfo>::encode): Deleted.
(WebKit::NetworkCache::Coder<WebCore::CertificateInfo>::decode): Deleted.

  • NetworkProcess/cache/NetworkCacheDecoder.cpp: Removed.
  • NetworkProcess/cache/NetworkCacheDecoder.h: Removed.
  • NetworkProcess/cache/NetworkCacheEncoder.cpp: Removed.
  • NetworkProcess/cache/NetworkCacheEncoder.h: Removed.
  • NetworkProcess/cache/NetworkCacheEntry.cpp:

(WebKit::NetworkCache::Entry::encodeAsStorageRecord):
(WebKit::NetworkCache::Entry::decodeStorageRecord):

  • NetworkProcess/cache/NetworkCacheKey.cpp:

(WebKit::NetworkCache::Key::encode):
(WebKit::NetworkCache::Key::decode):

  • NetworkProcess/cache/NetworkCacheKey.h:
  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::decodeRecordMetaData):
(WebKit::NetworkCache::encodeRecordMetaData):

  • NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp:

(WebKit::NetworkCache::SubresourceInfo::encode):
(WebKit::NetworkCache::SubresourceInfo::decode):
(WebKit::NetworkCache::SubresourcesEntry::encodeAsStorageRecord):
(WebKit::NetworkCache::SubresourcesEntry::decodeStorageRecord):

  • NetworkProcess/cache/NetworkCacheSubresourcesEntry.h:
  • UIProcess/API/APIUserContentExtensionStore.cpp:

(API::encodeContentExtensionMetaData):
(API::decodeContentExtensionMetaData):

  • WebKit2.xcodeproj/project.pbxproj:

Source/WTF:

Make it possible to use robust serialization of WTF types on the lower levels of the stack.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/persistence: Added.
  • wtf/persistence/Coder.h: Copied from Source/WebKit2/NetworkProcess/cache/NetworkCacheCoder.h.

(WebKit::NetworkCache::Coder::encode): Deleted.
(WebKit::NetworkCache::Coder::decode): Deleted.

  • wtf/persistence/Coders.cpp: Copied from Source/WebKit2/NetworkProcess/cache/NetworkCacheCoders.cpp.

(WebKit::NetworkCache::Coder<AtomicString>::encode): Deleted.
(WebKit::NetworkCache::Coder<AtomicString>::decode): Deleted.
(WebKit::NetworkCache::Coder<CString>::encode): Deleted.
(WebKit::NetworkCache::Coder<CString>::decode): Deleted.
(WebKit::NetworkCache::Coder<String>::encode): Deleted.
(WebKit::NetworkCache::decodeStringText): Deleted.
(WebKit::NetworkCache::Coder<String>::decode): Deleted.
(WebKit::NetworkCache::Coder<SHA1::Digest>::encode): Deleted.
(WebKit::NetworkCache::Coder<SHA1::Digest>::decode): Deleted.
(WebKit::NetworkCache::Coder<WebCore::HTTPHeaderMap>::encode): Deleted.
(WebKit::NetworkCache::Coder<WebCore::HTTPHeaderMap>::decode): Deleted.

  • wtf/persistence/Coders.h: Copied from Source/WebKit2/NetworkProcess/cache/NetworkCacheCoders.h.

(WebKit::NetworkCache::Coder<std::optional<T>>::encode): Deleted.
(WebKit::NetworkCache::Coder<std::optional<T>>::decode): Deleted.

  • wtf/persistence/Decoder.cpp: Copied from Source/WebKit2/NetworkProcess/cache/NetworkCacheDecoder.cpp.

(WebKit::NetworkCache::Decoder::Decoder): Deleted.
(WebKit::NetworkCache::Decoder::~Decoder): Deleted.
(WebKit::NetworkCache::Decoder::bufferIsLargeEnoughToContain): Deleted.
(WebKit::NetworkCache::Decoder::decodeFixedLengthData): Deleted.
(WebKit::NetworkCache::Decoder::decodeNumber): Deleted.
(WebKit::NetworkCache::Decoder::decode): Deleted.
(WebKit::NetworkCache::Decoder::verifyChecksum): Deleted.

  • wtf/persistence/Decoder.h: Copied from Source/WebKit2/NetworkProcess/cache/NetworkCacheDecoder.h.

(WebKit::NetworkCache::Decoder::length): Deleted.
(WebKit::NetworkCache::Decoder::currentOffset): Deleted.
(WebKit::NetworkCache::Decoder::decodeEnum): Deleted.
(WebKit::NetworkCache::Decoder::decode): Deleted.
(WebKit::NetworkCache::Decoder::bufferIsLargeEnoughToContain): Deleted.

  • wtf/persistence/Encoder.cpp: Copied from Source/WebKit2/NetworkProcess/cache/NetworkCacheEncoder.cpp.

(WebKit::NetworkCache::Encoder::Encoder): Deleted.
(WebKit::NetworkCache::Encoder::~Encoder): Deleted.
(WebKit::NetworkCache::Encoder::grow): Deleted.
(WebKit::NetworkCache::Encoder::updateChecksumForData): Deleted.
(WebKit::NetworkCache::Encoder::encodeFixedLengthData): Deleted.
(WebKit::NetworkCache::Encoder::encodeNumber): Deleted.
(WebKit::NetworkCache::Encoder::encode): Deleted.
(WebKit::NetworkCache::Encoder::encodeChecksum): Deleted.

  • wtf/persistence/Encoder.h: Copied from Source/WebKit2/NetworkProcess/cache/NetworkCacheEncoder.h.

(WebKit::NetworkCache::Encoder::encodeEnum): Deleted.
(WebKit::NetworkCache::Encoder::encode): Deleted.
(WebKit::NetworkCache::Encoder::operator<<): Deleted.
(WebKit::NetworkCache::Encoder::buffer): Deleted.
(WebKit::NetworkCache::Encoder::bufferSize): Deleted.
(WebKit::NetworkCache::Encoder::updateChecksumForNumber): Deleted.

4:12 AM Changeset in webkit [210501] by Carlos Garcia Campos
  • 5 edits in trunk/Source/WebCore

[GTK] WebProcess from WebKitGtk+ 2.15.2 SIGSEGVs in std::unique_ptr<SoupBuffer, WTF::GPtrDeleter<SoupBuffer> >::get() const () at /usr/include/c++/6/bits/unique_ptr.h:305
https://bugs.webkit.org/show_bug.cgi?id=165848

Reviewed by Michael Catanzaro.

In r208881 several locks were added to ImageDecoder to prevent frameBufferAtIndex() from being called by multiple
threads at the same time, but I forgot isSizeAvailable() also calls frameBufferAtIndex(). However, what we
really need to protect is the GIFImageDecoder, to never allow decoding from more than one thread at the same
time. This patch reverts r208881 and adds a lock to GIFImageDecoder::decode() instead.

  • platform/image-decoders/ImageDecoder.cpp:

(WebCore::ImageDecoder::frameIsCompleteAtIndex):
(WebCore::ImageDecoder::frameDurationAtIndex):
(WebCore::ImageDecoder::createFrameImageAtIndex):

  • platform/image-decoders/ImageDecoder.h:
  • platform/image-decoders/gif/GIFImageDecoder.cpp:

(WebCore::GIFImageDecoder::decode):

  • platform/image-decoders/gif/GIFImageDecoder.h:
3:25 AM Changeset in webkit [210500] by tpopela@redhat.com
  • 3 edits in trunk/Source/WebKit2

[GTK] Replace WebKitWebSettings with WebKitSettings in documentation
https://bugs.webkit.org/show_bug.cgi?id=166836

Reviewed by Carlos Garcia Campos.

Don't use WebKitWebSettings (it was a WebKit1 thing) in documentation,
but replace it with WebKitSettings.

  • UIProcess/API/gtk/WebKitSettings.cpp:

(webkit_settings_class_init):

  • UIProcess/API/gtk/WebKitWebView.cpp:
3:03 AM Changeset in webkit [210499] by commit-queue@webkit.org
  • 9 edits
    3 copies in trunk

[OWR] Unskip fast/mediastream/MediaStream-video-element-track-stop.html
https://bugs.webkit.org/show_bug.cgi?id=165316

Patch by Alejandro G. Castro <alex@igalia.com> on 2017-01-09
Reviewed by Philippe Normand.

Source/WebCore:

Fixed the ended support of the video element in the OWR player and
fixed the videoTracks support. Now the OW player properly adds and
removes the audio and video tracks. Added the getSettings support
to the mediastream interface. Solved also the size handling in
some of the enable/muted situations.

Unskipping fast/mediastream/MediaStream-video-element-track-stop.html.

  • platform/GStreamer.cmake: Added the new

RealtimeMediaSourceOwr.cpp with the new code handling the
settings.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp:

(WebCore::MediaPlayerPrivateGStreamerOwr::~MediaPlayerPrivateGStreamerOwr):
Release the new video and audio maps that creates a relationship
of the mediastream tracks with the mediatracks of the video element.
(WebCore::MediaPlayerPrivateGStreamerOwr::play): Set ended to
false when we start playing.
(WebCore::MediaPlayerPrivateGStreamerOwr::load): Create the media
tracks to the player so that the videoTracks API returns it, and
add an entry in the map to be able to restore it using the
mediastream track.
(WebCore::MediaPlayerPrivateGStreamerOwr::disableMediaTracks):
Move some part of the stop function to this one in order to use it
in pause method and avoid changing the video selection in that
case.
(WebCore::MediaPlayerPrivateGStreamerOwr::stop): Now we call the
function disableMediaTracks and we also change teh selected
videoTrack.
(WebCore::MediaPlayerPrivateGStreamerOwr::trackEnded): For
videoTrack reset the size and the selected element. In case there
is no media playing we Make sure we set the ended variable to true
and call the timeChange to modify the state of the player.
(WebCore::MediaPlayerPrivateGStreamerOwr::trackEnabledChanged):
Handle properly the situation when the user changed the enabled
value, we disable the media.
(WebCore::MediaPlayerPrivateGStreamerOwr::setSize): Modify the
size of the source.
(WebCore::MediaPlayerPrivateGStreamerOwr::naturalSize): Overrided
to make sure we return a size even when the sample is not ready
for gst.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.h:

Added the ended attribute and the maps.

  • platform/mediastream/openwebrtc/MediaEndpointOwr.cpp:

(WebCore::MediaEndpointOwr::createMutedRemoteSource): Use the new
realtime video and audio sources classes, this new classes
implement the settings of each type of media element.

  • platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.cpp:

(WebCore::RealtimeMediaSourceCenterOwr::mediaSourcesAvailable):
Use the new audio and video source classes instead of the general
one in order to handle the settings properly.

  • platform/mediastream/openwebrtc/RealtimeMediaSourceOwr.cpp: Added

(WebCore::RealtimeMediaSourceOwr::settings): Initialize using the
subclass and return the new currentSettings attribute.
(WebCore::RealtimeMediaSourceOwr::supportedConstraints): Call the
subclass initialization of the supportedSettings.

  • platform/mediastream/openwebrtc/RealtimeMediaSourceOwr.h:

(WebCore::RealtimeMediaSourceOwr::initializeSettings): Added to
initialize the settings before returning the value. Implemented in
the subclass.
(WebCore::RealtimeMediaSourceOwr::initializeSupportedConstraints):
Added to initialize the supported settings of the
media. Implemented in the subclass.
(WebCore::RealtimeMediaSourceOwr::settings): Moved to the cpp
file, implemented using the initialize functions of the subclass

  • platform/mediastream/openwebrtc/RealtimeVideoSourceOwr.h: Added

this new class to handle the settings of the video elements. The
class initializes the settings and the supportedSettings.

  • platform/mediastream/openwebrtc/RealtimeAudioSourceOwr.h: Added

this new class to handle the settings of the audio elements. The
class initializes the settings and the supportedSettings.

LayoutTests:

  • platform/gtk/TestExpectations: Unskipped the test and moved the

stop one, now it does not timeout because we correctly handle the
ended value but still fails, we need more features in the mock
classes for owr.

Jan 8, 2017:

9:35 PM Changeset in webkit [210498] by akling@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Inject MarkedSpace size classes for a few more high-volume objects.
<https://webkit.org/b/166815>

Reviewed by Darin Adler.

Add the following classes to the list of manually injected size classes:

  • JSString
  • JSFunction
  • PropertyTable
  • Structure

Only Structure actually ends up with a new size class, the others already
can't get any tighter due to the current MarkedBlock::atomSize being 16.
I've put them in anyway to ensure that we have optimally carved-out cells
for them in the future, should they grow.

With this change, Structures get allocated in 128-byte cells instead of
160-byte cells, giving us 25% more Structures per MarkedBlock.

  • heap/MarkedSpace.cpp:
8:12 PM Changeset in webkit [210497] by fpizlo@apple.com
  • 2 edits in trunk/LayoutTests

Unreviewed, since this test is slow it should run in fewer configurations. This resolves the
occasional timeouts I was seeing.

  • js/script-tests/regress-139548.js:
9:44 AM Changeset in webkit [210496] by Konstantin Tokarev
  • 6 edits in trunk/Source

Introduce CPU(X86_SSE2) instead of various SSE2 checks
https://bugs.webkit.org/show_bug.cgi?id=166808

Reviewed by Michael Catanzaro.

Now copyLCharsFromUCharSource can use SSE2 implementation on non-Darwin
OSes, and all SSE2 code paths are available for MSVC on x86 if /arch:SSE2
or higher is enabled, and for MSVC on x86_64.

Source/WebCore:

No new tests needed.

  • platform/audio/SincResampler.cpp:

(WebCore::SincResampler::process):

  • platform/audio/VectorMath.cpp:

(WebCore::VectorMath::vsma):
(WebCore::VectorMath::vsmul):
(WebCore::VectorMath::vadd):
(WebCore::VectorMath::vmul):
(WebCore::VectorMath::zvmul):
(WebCore::VectorMath::vsvesq):
(WebCore::VectorMath::vmaxmgv):

Source/WTF:

  • wtf/Platform.h:
  • wtf/text/ASCIIFastPath.h:

(WTF::copyLCharsFromUCharSource):

Note: See TracTimeline for information about the timeline view.