Timeline
Mar 2, 2015:
- 11:20 PM Changeset in webkit [180923] by
-
- 2 edits in trunk/Source/WebCore
[iOS] Disable -Wdeprecated-declaration warnings in WebVideoFullscreenInterfaceAVKit.mm
Fixing the deprecations is tracked by: <rdar://problem/20018692>
- platform/ios/WebVideoFullscreenInterfaceAVKit.mm:
(WebVideoFullscreenInterfaceAVKit::enterFullscreenOptimized):
Ignore -Wdeprecated-declaration warnings via clang pragmas.
- 10:57 PM Changeset in webkit [180922] by
-
- 3 edits in trunk/LayoutTests
Gardening: skipping inspector/timeline tests since they are still flaky.
<https://webkit.org/b/142208>
Not reviewed.
- TestExpectations:
- Restore skipping of inspector/timeline tests.
- platform/win/TestExpectations:
- Removing the skipping here since the general TestExpectations has it covered.
- 10:55 PM Changeset in webkit [180921] by
-
- 10 edits in trunk/Source
[WK2] Remove unnecessary create() factory functions.
https://bugs.webkit.org/show_bug.cgi?id=142161
Reviewed by Chris Dumez.
We can replace some create() factory functions with std::make_unique(). Because
it just returns new instance. Even some of those functions have used std::unique_ptr<>
instead of std::make_unique<>. Fixed all.
Source/WebKit2:
- DatabaseProcess/IndexedDB/sqlite/SQLiteIDBTransaction.h:
(WebKit::SQLiteIDBTransaction::create): Deleted.
- DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:
(WebKit::UniqueIDBDatabaseBackingStoreSQLite::establishTransaction):
- Platform/efl/DispatchQueueWorkItemEfl.h:
(WorkItem::dispatch):
(WorkItem::create): Deleted.
- UIProcess/API/gtk/PageClientImpl.h:
(WebKit::PageClientImpl::create): Deleted.
- UIProcess/API/gtk/WebKitTextChecker.h:
(WebKitTextChecker::create): Deleted.
- UIProcess/API/gtk/WebKitWebContext.cpp:
(webkitWebContextConstructed):
- UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseConstructed):
Source/WTF:
- wtf/efl/WorkQueueEfl.cpp:
(WorkQueue::dispatch):
- 8:38 PM Changeset in webkit [180920] by
-
- 2 edits in trunk/Tools
Update the name of ASan build step.
- BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotIteration.js:
- 8:33 PM Changeset in webkit [180919] by
-
- 4 edits in trunk/Source
DFG compile time measurements should really report milliseconds
https://bugs.webkit.org/show_bug.cgi?id=142209
Reviewed by Benjamin Poulain.
Source/JavaScriptCore:
Fix this to record milliseconds instead of seconds.
- dfg/DFGPlan.cpp:
(JSC::DFG::Plan::compileInThread):
(JSC::DFG::Plan::compileInThreadImpl):
Source/WTF:
This bug was introduced because currentTimeMS() calls were converted to
monotonicallyIncreasingTime() calls. Perhaps this bug would be less likely if there was a
monotonicallyIncreasingTimeMS() function available, so this patch adds it.
- wtf/CurrentTime.h:
(WTF::monotonicallyIncreasingTimeMS):
- 8:12 PM Changeset in webkit [180918] by
-
- 2 edits in trunk/LayoutTests
[Win] inspector/timeline always times out.
https://bugs.webkit.org/show_bug.cgi?id=142208
- platform/win/TestExpectations: Skipping.)
- 8:05 PM Changeset in webkit [180917] by
-
- 13 edits in trunk/Source/JavaScriptCore
Remove op_get_callee, it's unused
https://bugs.webkit.org/show_bug.cgi?id=142206
Reviewed by Andreas Kling.
It's a bit of a shame that we stopped using this opcode since it gives us same-callee
profiling. But, if we were to add this functionality back in, we would almost certainly do
it by adding a JSFunction allocation watchpoint on FunctionExecutable.
- bytecode/BytecodeList.json:
- bytecode/BytecodeUseDef.h:
(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dumpBytecode):
(JSC::CodeBlock::finalizeUnconditionally):
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock):
- dfg/DFGCapabilities.cpp:
(JSC::DFG::capabilityLevel):
- jit/JIT.cpp:
(JSC::JIT::privateCompileMainPass):
(JSC::JIT::privateCompileSlowCases):
- jit/JIT.h:
- jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_get_callee): Deleted.
(JSC::JIT::emitSlow_op_get_callee): Deleted.
- jit/JITOpcodes32_64.cpp:
(JSC::JIT::emit_op_get_callee): Deleted.
(JSC::JIT::emitSlow_op_get_callee): Deleted.
- llint/LowLevelInterpreter32_64.asm:
- llint/LowLevelInterpreter64.asm:
- runtime/CommonSlowPaths.cpp:
(JSC::SLOW_PATH_DECL): Deleted.
- 7:58 PM Changeset in webkit [180916] by
-
- 2 edits in trunk/Source/WebInspectorUI
Web Inspector: Remove native extensions now built-in
https://bugs.webkit.org/show_bug.cgi?id=142203
Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-03-02
Reviewed by Timothy Hatcher.
- UserInterface/Base/Utilities.js:
- 7:29 PM Changeset in webkit [180915] by
-
- 11 edits2 moves in trunk/Source/WebCore
Unreviewed, rolling out r180902.
https://bugs.webkit.org/show_bug.cgi?id=142205
It broke scrolling in some cases. See bug 142202 for details.
(Requested by bdash on #webkit).
Reverted changeset:
"Move scroll animating functions from ScrollAnimator to
ScrollController"
https://bugs.webkit.org/show_bug.cgi?id=142102
http://trac.webkit.org/changeset/180902
- 7:25 PM Changeset in webkit [180914] by
-
- 14 edits10 deletes in trunk
Unreviewed, rolling out r180911.
https://bugs.webkit.org/show_bug.cgi?id=142204
The tests it added are crashing (Requested by bdash on
#webkit).
Reverted changeset:
"Add a microtask abstraction"
https://bugs.webkit.org/show_bug.cgi?id=137496
http://trac.webkit.org/changeset/180911
- 6:24 PM Changeset in webkit [180913] by
-
- 17 edits in trunk/Source
Web Inspector: Context Menu to Log a Particular Object
https://bugs.webkit.org/show_bug.cgi?id=142198
Reviewed by Timothy Hatcher.
Source/JavaScriptCore:
Add a protocol method to assign a $n index to a value. For an object
use the injected script context for that object. For a value, use
the execution context to know where to save the value.
- inspector/InjectedScript.cpp:
(Inspector::InjectedScript::saveResult):
- inspector/InjectedScript.h:
- inspector/InjectedScriptSource.js:
- inspector/agents/InspectorRuntimeAgent.cpp:
(Inspector::InspectorRuntimeAgent::saveResult):
- inspector/agents/InspectorRuntimeAgent.h:
- inspector/protocol/Debugger.json:
- inspector/protocol/Runtime.json:
Source/WebInspectorUI:
- UserInterface/Controllers/JavaScriptLogViewController.js:
(WebInspector.JavaScriptLogViewController.prototype.saveResultCallback):
(WebInspector.JavaScriptLogViewController.prototype.appendImmediateExecutionWithResult):
Add a way to show an execution and result immediately in the Log View.
- UserInterface/Views/ConsolePrompt.js:
(WebInspector.ConsolePrompt.prototype.pushHistoryItem):
(WebInspector.ConsolePrompt.prototype.commitTextOrInsertNewLine):
(WebInspector.ConsolePrompt.prototype._handleEnterKey):
(WebInspector.ConsolePrompt.prototype._commitHistoryEntry):
Add a way to append a history item to the console prompt history.
- UserInterface/Views/ObjectTreePropertyTreeElement.js:
(WebInspector.ObjectTreePropertyTreeElement.prototype):
Add a context menu item to object tree properties to log the value.
- UserInterface/Protocol/RemoteObject.js:
(WebInspector.RemoteObject.createCallArgument):
(WebInspector.RemoteObject.prototype.callFunction):
(WebInspector.RemoteObject.prototype.asCallArgument):
Simplify CallArgument creation.
- UserInterface/Controllers/RuntimeManager.js:
(WebInspector.RuntimeManager.prototype.mycallback):
(WebInspector.RuntimeManager.prototype.saveResult):
Wrap RuntimeAgent.saveResult. If supported, run the backend command
and fetch a saved result index from the backend for the given value.
- Localizations/en.lproj/localizedStrings.js:
- UserInterface/Base/Main.js:
(WebInspector.contentLoaded):
- UserInterface/Views/LogContentView.js:
(WebInspector.LogContentView.prototype.get logViewController):
Misc.
- 5:37 PM Changeset in webkit [180912] by
-
- 2 edits in trunk/Source/WebKit2
Lots of: ERROR: Unhandled web process message WebPageGroupProxy:RemoveAllUserContentFilters
https://bugs.webkit.org/show_bug.cgi?id=142155
Reviewed by Simon Fraser.
- WebProcess/WebProcess.cpp:
(WebKit::WebProcess::didReceiveMessage): Return after handling WebPageGroupProxy messages
instead of logging an error.
- 5:04 PM Changeset in webkit [180911] by
-
- 14 edits10 adds in trunk
Add a microtask abstraction
https://bugs.webkit.org/show_bug.cgi?id=137496
Reviewed by Sam Weinig.
Source/WebCore:
This patch adds a microtask abstraction: https://html.spec.whatwg.org/multipage/webappapis.html#microtask
That abstraction is required in order to enable async loading of images,
which is in turn required to enable support for the picture element, as well as
to make sure that the order of properties set on HTMLImageElement has no implications.
- WebCore.vcxproj/WebCore.vcxproj: Add MicroTask.{h,cpp} to the project.
- WebCore.vcxproj/WebCoreTestSupport.vcxproj: Add MicroTaskTest.{h,cpp} to the project.
- WebCore.vcxproj/WebCore.vcxproj.filters: Add MicroTask.{h,cpp} to the project.
- WebCore.vcxproj/WebCoreTestSupport.vcxproj.filters: Add MicroTaskTest.{h,cpp} to the project.
- WebCore.xcodeproj/project.pbxproj: Add MicroTask{,Test}.{h,cpp} to the project.
- dom/Document.h: Add WEBCORE_EXPORT to addConsoleMessage, so it can be used in MicroTaskTest that's in WebCoreTestSupport..
- dom/MicroTask.h: Add a MicroTask interface class. Add a MicroTaskQueue singleton.
(WebCore::MicroTask::~MicroTask):
(WebCore::MicroTask::run): Run the microtask.
- dom/MicroTask.cpp: Implement the MicroTaskQueue singleton.
(WebCore::MicroTaskQueue::singleton): Get a singleton instance of MicroTaskQueue.
(WebCore::MicroTaskQueue::queueMicroTask): Add a microtask to the queue.
(WebCore::MicroTaskQueue::runMicroTasks): Run all the microtasks in the queue and clear it.
- dom/ScriptRunner.cpp: Trigger running of all microtasks in queue.
(WebCore::ScriptRunner::timerFired):
- html/parser/HTMLScriptRunner.cpp: Trigger running of all microtasks in queue.
(WebCore::HTMLScriptRunner::executePendingScriptAndDispatchEvent):
(WebCore::HTMLScriptRunner::executeScriptsWaitingForParsing):
(WebCore::HTMLScriptRunner::runScript):
- testing/Internals.cpp: Add a method to queue a test microtask.
(WebCore::Internals::queueMicroTask):
- testing/Internals.h: Add a method to queue a test microtask.
(WebCore::Internals::queueMicroTask):
- testing/Internals.idl: Expose test microtask queueing to test JS.
- testing/MicroTaskTest.cpp: Add a test class that implements a microtask and prints to the console when it runs.
(WebCore::MicroTaskTest::run): Run the microtask
(WebCore::MicroTaskTest::create): Create a test microtask.
- testing/MicroTaskTest.h: Add a test class that implements a microtask.
(WebCore::MicroTaskTest::run):
(WebCore::MicroTaskTest::create):
LayoutTests:
Adding a test for microtask abstraction.
- fast/dom/microtask-detach.html: Added.
- fast/dom/microtask-detach-expected.txt: Added.
- fast/dom/microtask-inorder.html: Added.
- fast/dom/microtask-inorder-expected.txt: Added.
- fast/dom/microtask-reverse.html: Added.
- fast/dom/microtask-reverse-expected.txt: Added.
- 4:58 PM Changeset in webkit [180910] by
-
- 2 edits in trunk/Source/WebCore
RenderVideo should not paint the video frame when video is fullscreen.
https://bugs.webkit.org/show_bug.cgi?id=142097
Patch by Jeremy Jones <jeremyj@apple.com> on 2015-03-02
Reviewed by Eric Carlson.
For performance and correctness, RenderVideo should not paint the current video frame
inline when video is fullscreen. This happens when snapshots are taken and can have a
negative performance impact.
- rendering/RenderVideo.cpp:
(WebCore::RenderVideo::paintReplaced):
- 4:45 PM Changeset in webkit [180909] by
-
- 3 edits in trunk/Source/JavaScriptCore
SpeculativeJIT::emitAllocateArguments() should be a bit faster, and shouldn't do destructor initialization
https://bugs.webkit.org/show_bug.cgi?id=142197
Reviewed by Geoffrey Garen.
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::emitAllocateArguments): Use shift instead of mul, since mul doesn't automatically strength-reduce to shift. Also pass the structure as a TrustedImmPtr.
- dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::emitAllocateVariableSizedJSObject): Rationalize this a bit. The other emitAllocate... methods take a templated structure so that it can be either a TrustedImmPtr or a register. Also don't do destructor initialization, since its one client doesn't need it, and it's actually probably wrong.
- 4:38 PM Changeset in webkit [180908] by
-
- 2 edits in trunk/Source/bmalloc
bmalloc: Eagerly remove allocated objects from the free list
https://bugs.webkit.org/show_bug.cgi?id=142194
Reviewed by Andreas Kling.
This reduces the pressure to garbage collect the free list.
Might be a 1% speedup on MallocBench.
- bmalloc/FreeList.cpp: Put this comment at the top of the file instead
of repeating it inside of each function. Tried to clarify the details.
(bmalloc::FreeList::takeGreedy): Matched the other iteration code in this
file for consistency -- even though either direction works fine in this
function.
(bmalloc::FreeList::take): Change to iterate from low to high so that we
can maintain an index into the vector that is not disturbed even if we
pop from the middle (which invalidates the last index in the vector).
Decrement i when popping from the middle to make sure that we don't
skip the next item after popping.
(bmalloc::FreeList::removeInvalidAndDuplicateEntries): Ditto.
- 4:24 PM Changeset in webkit [180907] by
-
- 3 edits2 adds in trunk
Source/JavaScriptCore:
Exception stack unwinding in JSC hangs while the Timeline Profiler is enabled.
<https://webkit.org/b/142191>
Reviewed by Geoffrey Garen.
Imagine a scenario where the Inspector is paused / suspended at a breakpoint or
while the user is stepping through JS code. The user then tries to evaluate an
expression in the console, and that evaluation results in an exception being
thrown. Currently, if the Timeline Profiler is enabled while this exception is
being thrown, the WebProcess will hang while trying to handle that exception.
The issue is that the Timeline Profiler's ProfileGenerator::didExecute() will
return early and decline to process ProfileNodes if the Inspector is paused.
This is proper because it does not want to count work done for injected scripts
(e.g. from the console) towards the timeline profile of the webpage being run.
However, this is in conflict with ProfileGenerator::exceptionUnwind()'s
expectation that didExecute() will process ProfileNodes in order to do the stack
unwinding for the exception handling. As a result,
ProfileGenerator::exceptionUnwind() hangs.
ProfileGenerator::exceptionUnwind() is in error. While the Inspector is paused,
there will not be any ProfileNodes that it needs to "unwind". Hence, the fix is
simply to return early also in ProfileGenerator::exceptionUnwind() if the
Inspector is paused.
- profiler/ProfileGenerator.cpp:
(JSC::ProfileGenerator::exceptionUnwind):
LayoutTests:
Last gardening after r177774
Unreviewed.
Patch by Myles C. Maxfield <mmaxfield@apple.com> on 2015-03-02
- fast/text/font-kerning-expected.html:
- fast/text/font-variant-ligatures-expected.html:
- fast/text/whitespace/inline-whitespace-wrapping-7-expected.html:
- fast/text/whitespace/inline-whitespace-wrapping-7.html:
- mathml/presentation/scripts-subsup-expected.html:
- mathml/presentation/scripts-subsup.html:
- platform/mac/TestExpectations:
- platform/mac/fast/text/multiple-codeunit-vertical-upright-expected.html:
- platform/mac/fast/text/multiple-codeunit-vertical-upright.html:
- platform/mac/fast/text/resources/multiple-codeunit-vertical-upright.otf: Removed.
- svg/text/svg-font-word-rounding-hacks-spaces-expected.html:
- svg/text/svg-font-word-rounding-hacks-spaces.html:
- svg/text/tspan-outline-expected.svg:
- svg/text/tspan-outline.html:
- 3:57 PM Changeset in webkit [180906] by
-
- 3 edits in trunk/Source/WebCore
[iOS Media] Airplay button should be blue when active
https://bugs.webkit.org/show_bug.cgi?id=142193
Reviewed by Brent Fulgham.
Add a blue form of the Airplay button that is used
when we are actively displaying on another screen.
- Modules/mediacontrols/mediaControlsiOS.css:
(video::-webkit-media-controls-wireless-playback-picker-button):
(video::-webkit-media-controls-wireless-playback-picker-button:active):
(video::-webkit-media-controls-wireless-playback-picker-button.playing):
- Modules/mediacontrols/mediaControlsiOS.js:
(ControllerIOS.prototype.updateWirelessPlaybackStatus):
- 3:52 PM Changeset in webkit [180905] by
-
- 2 edits in trunk/Source/WebKit2
Add way to dump cache meta data to file
https://bugs.webkit.org/show_bug.cgi?id=142183
Add a missing return so we don't try to decode a null entry.
- NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::dumpContentsToFile):
- 3:51 PM Changeset in webkit [180904] by
-
- 15 edits1 delete in trunk/LayoutTests
Last gardening after r177774
Unreviewed.
- fast/text/font-kerning-expected.html:
- fast/text/font-variant-ligatures-expected.html:
- fast/text/whitespace/inline-whitespace-wrapping-7-expected.html:
- fast/text/whitespace/inline-whitespace-wrapping-7.html:
- mathml/presentation/scripts-subsup-expected.html:
- mathml/presentation/scripts-subsup.html:
- platform/mac/TestExpectations:
- platform/mac/fast/text/multiple-codeunit-vertical-upright-expected.html:
- platform/mac/fast/text/multiple-codeunit-vertical-upright.html:
- platform/mac/fast/text/resources/multiple-codeunit-vertical-upright.otf: Removed.
- svg/text/svg-font-word-rounding-hacks-spaces-expected.html:
- svg/text/svg-font-word-rounding-hacks-spaces.html:
- svg/text/tspan-outline-expected.svg:
- svg/text/tspan-outline.html:
- 3:49 PM Changeset in webkit [180903] by
-
- 2 edits1 add in trunk/Source/JavaScriptCore
FTL should correctly document where it puts the argument count for inlined varargs frames
https://bugs.webkit.org/show_bug.cgi?id=142187
Reviewed by Geoffrey Garn.
After LLVM tells us where the captured variables alloca landed in the frame, we need to
tell all of our meta-data about it. We were forgetting to do so for the argument count
register, which is used by inlined varargs calls.
- ftl/FTLCompile.cpp:
(JSC::FTL::mmAllocateDataSection):
- tests/stress/inline-varargs-get-arguments.js: Added.
(foo):
(bar):
(baz):
- 3:49 PM Changeset in webkit [180902] by
-
- 11 edits2 moves in trunk/Source/WebCore
Move scroll animating functions from ScrollAnimator to ScrollController
https://bugs.webkit.org/show_bug.cgi?id=142102
<rdar://problem/20007161>
Reviewed by Simon Fraser.
No change in functionality.
Do some refactoring of the various scrolling classes:
- Consolidate animation times to RunLoop::Timer instead of a combination of WebCore::Timer and CFRunLoopTimers. Do this for Scroll Snap Point and Rubberband animations.
- Move ScrollController from platform/mac to platform/cocoa to enable sharing with iOS.
- Move code from ScrollAnimator{Mac} -> ScrollController.
- Rename scrollOffsetInAxis -> scrollOffsetOnAxis
- Rename immediateScrollInAxis -> immediateScrollOnAxis
- WebCore.xcodeproj/project.pbxproj: Move ScrollController to 'platform/cocoa'
- page/mac/EventHandlerMac.mm: Make sure the scroll controller is notified of end-of-scroll
events, just as is done for the "event not handled" case in EventHandler.cpp.
(WebCore::EventHandler::platformCompleteWheelEvent):
- page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h: Remove timer and some delegate
methods, now that ScrollController is controlling this state.
- page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
(WebCore::ScrollingTreeFrameScrollingNodeMac::~ScrollingTreeFrameScrollingNodeMac): We no longer
need to clean up the CFRunLoopTimer.
(WebCore::ScrollingTreeFrameScrollingNodeMac::scrollOffsetOnAxis): Add temporary stub needed
until Bug 141973 is completed.).
(WebCore::ScrollingTreeFrameScrollingNodeMac::immediateScrollOnAxis): Ditto.
(WebCore::ScrollingTreeFrameScrollingNodeMac::startSnapRubberbandTimer): Deleted.
(WebCore::ScrollingTreeFrameScrollingNodeMac::stopSnapRubberbandTimer): Deleted.
- platform/ScrollAnimator.cpp:
(WebCore::ScrollAnimator::ScrollAnimator):
(WebCore::ScrollAnimator::processWheelEventForScrollSnap): Just call the ScrollController method.
(WebCore::ScrollAnimator::handleWheelEvent): Ditto.
(WebCore::ScrollAnimator::updateScrollAnimatorsAndTimers): Ditto.
(WebCore::ScrollAnimator::scrollOffsetOnAxis): Renamed from scrollOffsetInAxis.
(WebCore::ScrollAnimator::scrollOffsetInAxis): Deleted.
(WebCore::ScrollAnimator::immediateScrollOnAxis): Renamed from immediateScrollInAxis.
(WebCore::ScrollAnimator::immediateScrollInAxis): Deleted.
(WebCore::ScrollAnimator::startScrollSnapTimer): Deleted.
(WebCore::ScrollAnimator::stopScrollSnapTimer): Deleted.
(WebCore::ScrollAnimator::horizontalScrollSnapTimerFired): Deleted.
(WebCore::ScrollAnimator::verticalScrollSnapTimerFired): Deleted.
- platform/ScrollAnimator.h:
- platform/cocoa/ScrollController.h: Copied from platform/mac/ScrollController.h.
- platform/cocoa/ScrollController.mm: Copied from platform/mac/ScrollController.mm.
(WebCore::ScrollController::ScrollController): Update to initialize new timers.
(WebCore::ScrollController::handleWheelEvent): Update to handle Scroll Snap Point events.
(WebCore::ScrollController::startSnapRubberbandTimer): Added.
(WebCore::ScrollController::stopSnapRubberbandTimer): Manage animation timers locally, do not
require client to maintain timers.
(WebCore::ScrollController::snapRubberBand): Ditto.
(WebCore::ScrollController::processWheelEventForScrollSnap): Added. (Moved from ScrollAnimatorMac)
(WebCore::ScrollController::updateScrollAnimatorsAndTimers): Ditto. Also updated to use RunLoop::Timer.
(WebCore::ScrollController::startScrollSnapTimer): Ditto. Also updated to use RunLoop::Timer.
(WebCore::ScrollController::stopScrollSnapTimer): Ditto. Also updated to use RunLoop::Timer.
(WebCore::ScrollController::horizontalScrollSnapTimerFired): Ditto.
(WebCore::ScrollController::verticalScrollSnapTimerFired): Ditto.
(WebCore::ScrollController::scrollOffsetOnAxis): Moved from ScrollAnimatorMac.
(WebCore::ScrollController::immediateScrollOnAxis): Ditto.
- platform/mac/AxisScrollSnapAnimator.h: Rename methods from 'InAxis' to 'OnAxis'
- platform/mac/AxisScrollSnapAnimator.mm: Ditto.
- platform/mac/ScrollAnimatorMac.h:
- platform/mac/ScrollAnimatorMac.mm:
(WebCore::ScrollAnimatorMac::ScrollAnimatorMac): Remove unused Rubberband timers (now that this is
controlled in the ScrollController)
(WebCore::ScrollAnimatorMac::startSnapRubberbandTimer): Deleted.
(WebCore::ScrollAnimatorMac::stopSnapRubberbandTimer): Deleted.
(WebCore::ScrollAnimatorMac::snapRubberBandTimerFired): Deleted.
- platform/mac/ScrollController.h: Removed.
- platform/mac/ScrollController.mm: Removed.
- 3:39 PM Changeset in webkit [180901] by
-
- 4 edits in trunk
The InspectorTimelineAgent should gracefully handle attempts to start more than once.
<https://webkit.org/b/142189>
Reviewed by Joseph Pecoraro.
Source/WebCore:
No new tests. Unskipped an existing test that already asserts this.
InspectorTimelineAgent::internalStop() already checks for redundant calls to it in
case the InspectorTimelineAgent is already disabled. Similarly,
InspectorTimelineAgent::internalStart() should check if the InspectorTimelineAgent
is already enabled before proceeding to do work to enable it. Though wasteful,
it is legal for clients of the InspectorTimelineAgent to invoke start on it more
than once. Hence, this check is needed.
This check fixes the debug assertion failure when running the
inspector/timeline/debugger-paused-while-recording.html test. The test can now
be unskipped.
- inspector/InspectorTimelineAgent.cpp:
(WebCore::InspectorTimelineAgent::internalStart):
LayoutTests:
- TestExpectations:
- Unskipped inspector/timeline tests.
- 3:35 PM Changeset in webkit [180900] by
-
- 2 edits in trunk/LayoutTests
[Win] Skip media control test after r180893.
- platform/win/TestExpectations:
- 3:25 PM Changeset in webkit [180899] by
-
- 4 edits in trunk/Source/WebKit2
Return disk cache entries from the new disk cache
https://bugs.webkit.org/show_bug.cgi?id=142190
Reviewed by Antti Koivisto.
- NetworkProcess/NetworkProcess.cpp:
(WebKit::fetchDiskCacheEntries):
Call NetworkCache::traverse() to get all the cache entries, unique their origins and pass them back with the completion handler.
- NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::traverse):
New helper function that traverses network cache entries.
- NetworkProcess/cache/NetworkCache.h:
- 2:54 PM Changeset in webkit [180898] by
-
- 4 edits in trunk/Source/WebCore
Update backgrounds of sliders for inline media controls on OS X.
https://bugs.webkit.org/show_bug.cgi?id=142188.
<rdar://problem/20012413>
Reviewed by Dean Jackson.
Don’t use CSS to draw volume and timeline slider backgrounds.
- Modules/mediacontrols/mediaControlsApple.css:
(video::-webkit-media-controls-volume-slider):
(audio::-webkit-media-controls-volume-slider::-webkit-slider-thumb):
(audio::-webkit-media-controls-timeline):
(audio::-webkit-media-controls-timeline::-webkit-slider-thumb):
(audio::-webkit-media-controls-panel .thumbnail-track):
(audio::-webkit-media-controls-volume-slider::-webkit-slider-thumb:active::-webkit-slider-thumb): Deleted.
(audio::-webkit-media-controls-timeline:active::-webkit-slider-thumb,): Deleted.
Draw volume and timeline slider backgrounds using 2d canvases.
- Modules/mediacontrols/mediaControlsApple.js:
(Controller.prototype.createControls):
(Controller.prototype.handleVolumeSliderInput):
(Controller.prototype.addRoundedRect):
(Controller.prototype.drawTimelineBackground):
(Controller.prototype.drawVolumeBackground):
(Controller.prototype.showControls):
- Modules/mediacontrols/mediaControlsiOS.js:
- 2:52 PM Changeset in webkit [180897] by
-
- 3 edits in trunk/Source/JavaScriptCore
Deduplicate slow path calling code in JITOpcodes.cpp/JITOpcodes32_64.cpp
https://bugs.webkit.org/show_bug.cgi?id=142184
Reviewed by Michael Saboff.
- jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_get_enumerable_length):
(JSC::JIT::emitSlow_op_has_structure_property):
(JSC::JIT::emit_op_has_generic_property):
(JSC::JIT::emit_op_get_structure_property_enumerator):
(JSC::JIT::emit_op_get_generic_property_enumerator):
(JSC::JIT::emit_op_to_index_string):
- jit/JITOpcodes32_64.cpp:
(JSC::JIT::emit_op_get_enumerable_length): Deleted.
(JSC::JIT::emitSlow_op_has_structure_property): Deleted.
(JSC::JIT::emit_op_has_generic_property): Deleted.
(JSC::JIT::emit_op_get_structure_property_enumerator): Deleted.
(JSC::JIT::emit_op_get_generic_property_enumerator): Deleted.
(JSC::JIT::emit_op_to_index_string): Deleted.
(JSC::JIT::emit_op_profile_control_flow): Deleted.
- 2:28 PM Changeset in webkit [180896] by
-
- 2 edits in trunk/LayoutTests
[Win] Document more debug assertions.
- platform/win/TestExpectations:
- 2:10 PM Changeset in webkit [180895] by
-
- 2 edits1 add in trunk/LayoutTests
Skip media control tests for now while new look is being finalized.
https://bugs.webkit.org/show_bug.cgi?id=142138.
Patch by Roger Fong <roger_fong@apple.com> on 2015-02-28
Reviewed by Dean Jackson.
- platform/mac/TestExpectations:
- 1:51 PM Changeset in webkit [180894] by
-
- 9 edits in trunk/Source
Add way to dump cache meta data to file
https://bugs.webkit.org/show_bug.cgi?id=142183
Reviewed by Andreas Kling.
Source/JavaScriptCore:
Export appendQuotedJSONStringToBuilder.
- bytecompiler/NodesCodegen.cpp:
(JSC::ObjectPatternNode::toString):
- runtime/JSONObject.cpp:
(JSC::appendQuotedJSONStringToBuilder):
(JSC::Stringifier::appendQuotedString):
(JSC::escapeStringToBuilder): Deleted.
- runtime/JSONObject.h:
Source/WebKit2:
Dump goes to WebKitCache/dump.json. On OSX it can be triggered with
notifyutil -p com.apple.WebKit.Cache.dump
- NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::initialize):
(WebKit::NetworkCache::dumpFilePath):
(WebKit::entryAsJSON):
(WebKit::NetworkCache::dumpContentsToFile):
(WebKit::NetworkCache::clear):
Also clear any dumps.
- NetworkProcess/cache/NetworkCache.h:
- NetworkProcess/cache/NetworkCacheStorage.h:
(WebKit::NetworkCacheStorage::baseDirectoryPath):
- NetworkProcess/cache/NetworkCacheStorageCocoa.mm:
(WebKit::fileNameForKey):
(WebKit::filePathForKey):
(WebKit::openFile):
(WebKit::openFileForKey):
(WebKit::decodeEntryHeader):
Separate header decoding.
(WebKit::decodeEntry):
(WebKit::NetworkCacheStorage::traverse):
Add asynchronous cache traversal inteface.
- 1:07 PM Changeset in webkit [180893] by
-
- 4 edits in trunk
Update inline media element controls appearance Part 1.
https://bugs.webkit.org/show_bug.cgi?id=142138.
<rdar://problem/19997384>
Reviewed by Dean Jackson.
Update positioning, sizes, and background colors media control elements.
Volume and timeline sliders will be drawn in a separate patch via 2d canvases.
- Modules/mediacontrols/mediaControlsApple.css:
(audio::-webkit-media-controls-panel):
(video::-webkit-media-controls-panel):
(audio::-webkit-media-controls-rewind-button):
(audio::-webkit-media-controls-play-button):
(audio::-webkit-media-controls-panel .mute-box):
(video::-webkit-media-controls-volume-max-button):
(audio::-webkit-media-controls-panel .volume-box):
(audio::-webkit-media-controls-panel .volume-box:active):
(video::-webkit-media-controls-volume-slider):
(audio::-webkit-media-controls-toggle-closed-captions-button):
(audio::-webkit-media-controls-fullscreen-button):
(audio::-webkit-media-controls-current-time-display):
(audio::-webkit-media-controls-time-remaining-display):
(audio::-webkit-media-controls-timeline-container .hour-long-time): Deleted.
Skip media control tests for now while new look is being finalized.
- platform/mac/TestExpectations:
- 12:45 PM Changeset in webkit [180892] by
-
- 7 edits in trunk/Source/WebKit2
WebsiteDataStore should handle deleting cookies
https://bugs.webkit.org/show_bug.cgi?id=142185
Reviewed by Beth Dakin.
- NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
When asked to delete cookies, do so.
- NetworkProcess/NetworkProcess.h:
Update the deleteWebsiteDataForOrigins signature.
- NetworkProcess/NetworkProcess.messages.in:
Add cookieHostNames to DeleteWebsiteDataForOrigins.
- UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::deleteWebsiteDataForOrigins):
- UIProcess/Network/NetworkProcessProxy.h:
Update to take a vector of cookie host names.
- UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::removeData):
Figure out if we need to ask the network process to delete data.
- 11:32 AM Changeset in webkit [180891] by
-
- 7 edits in trunk/Source
Web Inspector: Add Context Menus to Object Tree properties
https://bugs.webkit.org/show_bug.cgi?id=142125
Reviewed by Timothy Hatcher.
Source/JavaScriptCore:
- inspector/JSInjectedScriptHost.cpp:
(Inspector::JSInjectedScriptHost::functionDetails):
Update to include columnNumber.
Source/WebInspectorUI:
- Localizations/en.lproj/localizedStrings.js:
- UserInterface/Views/ObjectPropertiesSection.js:
(WebInspector.ObjectPropertyTreeElement.prototype._functionContextMenuEventFired):
(WebInspector.ObjectPropertyTreeElement.prototype._functionContextMenuEventFired.revealFunction):
Fix legacy implementation.
- UserInterface/Views/ObjectTreeArrayIndexTreeElement.js:
- UserInterface/Views/ObjectTreePropertyTreeElement.js:
(WebInspector.ObjectTreePropertyTreeElement.prototype._createTitlePrototype):
Give prototype buttons a tooltip.
(WebInspector.ObjectTreePropertyTreeElement.prototype.oncontextmenu):
(WebInspector.ObjectTreePropertyTreeElement.prototype._contextMenuHandler):
(WebInspector.ObjectTreePropertyTreeElement.prototype._appendMenusItemsForObject):
Context Menus based on the selected object.
- 11:08 AM Changeset in webkit [180890] by
-
- 2 edits in trunk/LayoutTests
[Win] Document more debug assertions.
- platform/win/TestExpectations:
- 10:42 AM Changeset in webkit [180889] by
-
- 7 edits in trunk/Source/WebKit2
WebsiteDataStore should support getting cookie host names
https://bugs.webkit.org/show_bug.cgi?id=142178
Reviewed by Dan Bernstein.
- NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::fetchWebsiteData):
Assert that we're destroyed from the main thread since we end up copying the website data struct.
- Shared/WebsiteData/WebsiteData.cpp:
(WebKit::WebsiteData::encode):
(WebKit::WebsiteData::decode):
- Shared/WebsiteData/WebsiteData.h:
Add a hostnamesWithCookies member.
- UIProcess/WebsiteData/WebsiteDataRecord.cpp:
(WebKit::WebsiteDataRecord::displayNameForCookieHostName):
Add a new function that will return the display name for a cookie host name.
(WebKit::WebsiteDataRecord::addCookieHostName):
- UIProcess/WebsiteData/WebsiteDataRecord.h:
Add a hash set of cookie host names.
- UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::fetchData):
Create data records for each host name with cookies.
- 10:18 AM Changeset in webkit [180888] by
-
- 2 edits in trunk/LayoutTests
Fix a typo in TestExpectations.
- platform/mac/TestExpectations: Faiure - > Failure.
- 9:52 AM Changeset in webkit [180887] by
-
- 2 edits in trunk/LayoutTests
js/promises-tests/promises-tests-2-1-2.html sometimes times out
https://bugs.webkit.org/show_bug.cgi?id=142175
- TestExpectations: Marking as flaky.
- 9:39 AM Changeset in webkit [180886] by
-
- 3 edits in trunk/Source/WebKit2
[WK2][Mac] WebPageProxy::supressVisibilityUpdates() should suppress visibility updates.
https://bugs.webkit.org/show_bug.cgi?id=141907
Reviewed by Tim Horton.
At some point, the window/view/page visibility update code was refactored such that setting
WebPageProxy::setSuppressVisibilityUpdate() no longer suppressed visibility updates. This causes
full screen animations to become "flashy" when moving the WebView between the regular and full
screen window, as a HTMLMediaElement in the full screen animation will receive a "!visible"
notification and disconnect its rendering pipeline.
In WebPageProxy::viewStateDidChange(), respect m_suppressVisibilityUpdates and bail out early
if set. In WebPageProxy::setSuppressVisibilityUpdates(), trigger an explicit update after
clearing m_suppressVisibilityUpdates.
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::setSuppressVisibilityUpdates):
(WebKit::WebPageProxy::viewStateDidChange):
- UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::setSuppressVisibilityUpdates): Deleted.
- 9:37 AM Changeset in webkit [180885] by
-
- 9 edits2 adds in trunk
[WK1][WK2][Mac] Fullscreen animation is incorrect when page is scaled.
https://bugs.webkit.org/show_bug.cgi?id=142121
Reviewed by Simon Fraser.
Source/WebKit/mac:
Fullscreening a page with a non-1 scale would result in that scale being applied to the
fullscreen content, breaking fullscreen mode. Set the page scale to 1 when entering
fullscreen and reset it to the original value when exiting fullscreen.
- WebView/WebFullScreenController.h:
- WebView/WebFullScreenController.mm:
(-[WebFullScreenController enterFullScreen:]): Set the page scale to 1.
(-[WebFullScreenController finishedExitFullScreenAnimation:]): Reset the page
scale to the original value.
- WebView/WebView.mm:
(-[WebView _supportsFullScreenForElement:withKeyboard:]): Drive-by fix. Check the
WebView's own preferences to see if fullscreen mode is enabled, rather than
the global object's.
Source/WebKit2:
Change the order of operations when entering or exiting fullscreen. Change the page scale to
1 before entering, so the final screen rect takes that scale into account, and vice-versa on
exiting.
- UIProcess/mac/WKFullScreenWindowController.mm:
(-[WKFullScreenWindowController enterFullScreen:]):
(-[WKFullScreenWindowController exitFullScreen]):
Tools:
Add a test which changes the WebView's page scale, then enters fullscreen mode, and verifies
that the initial and final screen rects for the web content are as expected.
- TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- TestWebKitAPI/Tests/mac/FullscreenZoomInitialFrame.html: Added.
- TestWebKitAPI/Tests/mac/FullscreenZoomInitialFrame.mm: Added.
(-[FullscreenStateDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:]):
(runJavaScriptAlert):
(TestWebKitAPI::FullscreenZoomInitialFrame::initializeView):
(TestWebKitAPI::FullscreenZoomInitialFrame::teardownView):
(TestWebKitAPI::FullscreenZoomInitialFrame::setPageScale):
(TestWebKitAPI::FullscreenZoomInitialFrame::sendMouseDownEvent):
(TestWebKitAPI::FullscreenZoomInitialFrame::runTest):
(TestWebKitAPI::TEST_F):
- 7:34 AM Changeset in webkit [180884] by
-
- 2 edits in trunk
REGRESSION(r179409): [GTK] Undefined symbol prevents web extensions from being loaded
https://bugs.webkit.org/show_bug.cgi?id=142165
Patch by Debarshi Ray <debarshir@gnome.org> on 2015-03-02
Reviewed by Carlos Garcia Campos.
- Source/cmake/gtksymbols.filter:
- 7:30 AM Changeset in webkit [180883] by
-
- 2 edits in trunk/Source/WebCore
REGRESSION (r180882): Build failure: Methods not marked override in GraphicsLayerCA.h
<http://webkit.org/b/138684>
Fixes the following build failures:
In file included from WebKit2/WebProcess/WebPage/DrawingArea.cpp:39:
In file included from WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:30:
In file included from WebKit2/WebProcess/WebPage/mac/GraphicsLayerCARemote.h:29:
WebCore.framework/PrivateHeaders/GraphicsLayerCA.h:123:33: error: 'setShapeLayerPath' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
WEBCORE_EXPORT virtual void setShapeLayerPath(const Path&);
In file included from WebKit2/WebProcess/WebPage/DrawingArea.cpp:30:
In file included from WebKit2/WebProcess/WebPage/WebPage.h:46:
In file included from WebKit2/WebProcess/Plugins/Plugin.h:31:
WebCore.framework/PrivateHeaders/GraphicsLayer.h:390:18: note: overridden virtual function is here
virtual void setShapeLayerPath(const Path&);
In file included from WebKit2/WebProcess/WebPage/DrawingArea.cpp:39:
In file included from WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:30:
In file included from WebKit2/WebProcess/WebPage/mac/GraphicsLayerCARemote.h:29:
WebCore.framework/PrivateHeaders/GraphicsLayerCA.h:124:33: error: 'setShapeLayerWindRule' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
WEBCORE_EXPORT virtual void setShapeLayerWindRule(WindRule);
In file included from WebKit2/WebProcess/WebPage/DrawingArea.cpp:30:
In file included from WebKit2/WebProcess/WebPage/WebPage.h:46:
In file included from WebKit2/WebProcess/Plugins/Plugin.h:31:
WebCore.framework/PrivateHeaders/GraphicsLayer.h:393:18: note: overridden virtual function is here
virtual void setShapeLayerWindRule(WindRule);
2 errors generated.
- platform/graphics/ca/GraphicsLayerCA.h:
(WebCore::GraphicsLayer::setShapeLayerPath): Mark as override.
(WebCore::GraphicsLayer::setShapeLayerWindRule): Ditto.
Mar 1, 2015:
- 10:35 PM Changeset in webkit [180882] by
-
- 26 edits8 adds in trunk
Make clip-path work on <video>, <canvas> etc.
https://bugs.webkit.org/show_bug.cgi?id=138684
Reviewed by Darin Adler.
Source/WebCore:
clip-path only worked in compositing layers on the painted contents of the layer,
and failed to clip children. Fix this by translating the clip path into a Path
which is set on a CA shape layer (for Mac and iOS), or painted into the
RenderLayerBacking's mask layer. There are two code paths:
- clip-path which is a <basic-shape> or <geometry-box>, and no mask.
Here we can use the optimal code path of converting the clip into a path
that is put onto a CAShapeLayer, which is then used as a mask. There is no
additional backing store.
- clip-path with an SVG reference, or clip-path combined with -webkit-mask:
Here we have to allocate backing store for the mask layer, and paint the
clip path (possibly with the mask).
We add GraphicsLayer::Type::Shape, and add a getter for the layer type.
Tests: compositing/masks/compositing-clip-path-and-mask.html
compositing/masks/compositing-clip-path-mask-change.html
compositing/masks/compositing-clip-path.html
compositing/masks/reference-clip-path-on-composited.html
- platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::GraphicsLayer): Store the type in the layer so the getter can return it.
(WebCore::GraphicsLayer::shapeLayerPath): Get and set the shape layer path.
(WebCore::GraphicsLayer::setShapeLayerPath): Ditto.
(WebCore::GraphicsLayer::shapeLayerWindRule): Get and set the shape layer wind rule.
(WebCore::GraphicsLayer::setShapeLayerWindRule): Ditto.
- platform/graphics/GraphicsLayer.h:
(WebCore::GraphicsLayer::type): Expose the type.
(WebCore::GraphicsLayer::supportsLayerType): Allow the cross-platform code to use
shape layers when it knows they are available.
(WebCore::GraphicsLayer::needsClippingMaskLayer): Deleted. This was never used.
- platform/graphics/GraphicsLayerClient.h: Align the bits (helps avoid typos). Add a
GraphicsLayerPaintClipPath phase.
- platform/graphics/Path.h: Some exports since WK2 needs to encode Paths now.
- platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::initialize): Make shape layers.
(WebCore::GraphicsLayerCA::setShapeLayerPath): Setter for the shape path. Sadly we
can't early return on unchanged paths yet.
(WebCore::GraphicsLayerCA::setShapeLayerWindRule):
(WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers): Updates for shape path
and wind rule.
(WebCore::GraphicsLayerCA::updateShape):
(WebCore::GraphicsLayerCA::updateWindRule):
- platform/graphics/ca/GraphicsLayerCA.h: Some new dirty bits for shape path and wind rule.
- platform/graphics/ca/PlatformCALayer.h:
- platform/graphics/ca/mac/PlatformCALayerMac.h:
- platform/graphics/ca/mac/PlatformCALayerMac.mm: Got rid of lots of m_layer.get().
(PlatformCALayerMac::~PlatformCALayerMac):
(PlatformCALayerMac::setNeedsDisplay):
(PlatformCALayerMac::setNeedsDisplayInRect):
(PlatformCALayerMac::removeFromSuperlayer):
(PlatformCALayerMac::setSublayers):
(PlatformCALayerMac::removeAllSublayers):
(PlatformCALayerMac::appendSublayer):
(PlatformCALayerMac::insertSublayer):
(PlatformCALayerMac::replaceSublayer):
(PlatformCALayerMac::adoptSublayers):
(PlatformCALayerMac::addAnimationForKey):
(PlatformCALayerMac::removeAnimationForKey):
(PlatformCALayerMac::animationForKey):
(PlatformCALayerMac::setMask):
(PlatformCALayerMac::isOpaque):
(PlatformCALayerMac::setOpaque):
(PlatformCALayerMac::bounds):
(PlatformCALayerMac::setBounds):
(PlatformCALayerMac::position):
(PlatformCALayerMac::setPosition):
(PlatformCALayerMac::anchorPoint):
(PlatformCALayerMac::setAnchorPoint):
(PlatformCALayerMac::transform):
(PlatformCALayerMac::setTransform):
(PlatformCALayerMac::sublayerTransform):
(PlatformCALayerMac::setSublayerTransform):
(PlatformCALayerMac::setHidden):
(PlatformCALayerMac::setGeometryFlipped):
(PlatformCALayerMac::isDoubleSided):
(PlatformCALayerMac::setDoubleSided):
(PlatformCALayerMac::masksToBounds):
(PlatformCALayerMac::setMasksToBounds):
(PlatformCALayerMac::acceleratesDrawing):
(PlatformCALayerMac::setAcceleratesDrawing):
(PlatformCALayerMac::contents):
(PlatformCALayerMac::setContents):
(PlatformCALayerMac::setContentsRect):
(PlatformCALayerMac::setMinificationFilter):
(PlatformCALayerMac::setMagnificationFilter):
(PlatformCALayerMac::backgroundColor):
(PlatformCALayerMac::setBackgroundColor):
(PlatformCALayerMac::setBorderWidth):
(PlatformCALayerMac::setBorderColor):
(PlatformCALayerMac::opacity):
(PlatformCALayerMac::setOpacity):
(PlatformCALayerMac::copyFiltersFrom):
(PlatformCALayerMac::setName):
(PlatformCALayerMac::setSpeed):
(PlatformCALayerMac::setTimeOffset):
(PlatformCALayerMac::contentsScale):
(PlatformCALayerMac::setContentsScale):
(PlatformCALayerMac::cornerRadius):
(PlatformCALayerMac::setCornerRadius):
(PlatformCALayerMac::setEdgeAntialiasingMask):
(PlatformCALayerMac::shapeWindRule): New function.
(PlatformCALayerMac::setShapeWindRule): Ditto.
(PlatformCALayerMac::shapePath): Ditto.
(PlatformCALayerMac::setShapePath): Ditto.
(PlatformCALayer::isWebLayer):
- platform/graphics/cg/PathCG.cpp:
(WebCore::Path::Path): nullptr.
- rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintsWithClipPath): Return true if the clip path is painted.
(WebCore::RenderLayer::computeClipPath): Factor code that computes the clip path into this
function, so we can call it from RenderLayerBacking too.
(WebCore::RenderLayer::setupClipPath):
(WebCore::RenderLayer::paintLayerContents): We only want to apply the clip path
for painting when we're either painting a non-composited layer, or we're painting the
mask layer of a composited layer. We in the latter case, we just want to fill the clip
path with black, so re-use the paintChildClippingMaskForFragments() which does this.
- rendering/RenderLayer.h: Align the bits, add PaintLayerPaintingCompositingClipPathPhase.
- rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::~RenderLayerBacking):
(WebCore::RenderLayerBacking::updateConfiguration):
(WebCore::RenderLayerBacking::updateGeometry): Move mask updating into its own function.
(WebCore::RenderLayerBacking::updateMaskingLayerGeometry): If we're using the shape layer
code path, compute the Path and set it and the wind rule on the mask layer.
(WebCore::RenderLayerBacking::updateMaskingLayer): This is now more complex, as it has
to deal with combinations of clip-path and mask, some of which allow for the shape layer
mask, and we handle dynamic changes between these and painted masks.
(WebCore::RenderLayerBacking::paintingPhaseForPrimaryLayer): Include the GraphicsLayerPaintClipPath phase.
(WebCore::RenderLayerBacking::paintIntoLayer): Map GraphicsLayerPaintClipPath to PaintLayerPaintingCompositingClipPathPhase.
(WebCore::RenderLayerBacking::updateMaskLayer): Deleted.
- rendering/RenderLayerBacking.h:
Source/WebKit2:
Support encode/decode for WebCore Path objects, which is done by traversing
the path.
- Shared/WebCoreArgumentCoders.cpp:
(IPC::pathPointCountApplierFunction):
(IPC::pathEncodeApplierFunction):
(IPC::ArgumentCoder<Path>::encode):
(IPC::ArgumentCoder<Path>::decode):
- Shared/WebCoreArgumentCoders.h:
- Shared/mac/RemoteLayerTreePropertyApplier.mm:
(WebKit::applyPropertiesToLayer): Actually apply the path and wind rule to the shape layer.
- Shared/mac/RemoteLayerTreeTransaction.h: Include path and wind rule in the layer properties.
- Shared/mac/RemoteLayerTreeTransaction.mm:
(WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties):
(WebKit::RemoteLayerTreeTransaction::LayerProperties::encode): Encode shape and wind rule.
(WebKit::RemoteLayerTreeTransaction::LayerProperties::decode): Decode shape and wind rule.
- WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
(WebKit::PlatformCALayerRemote::shapePath):
(WebKit::PlatformCALayerRemote::setShapePath):
(WebKit::PlatformCALayerRemote::shapeWindRule):
(WebKit::PlatformCALayerRemote::setShapeWindRule):
- WebProcess/WebPage/mac/PlatformCALayerRemote.h:
LayoutTests:
Tests for various combinations of clip-path and mask, and dynamic changes
thereof.
- compositing/masks/compositing-clip-path-and-mask-expected.html: Added.
- compositing/masks/compositing-clip-path-and-mask.html: Added.
- compositing/masks/compositing-clip-path-expected.html: Added.
- compositing/masks/compositing-clip-path-mask-change-expected.html: Added.
- compositing/masks/compositing-clip-path-mask-change.html: Added.
- compositing/masks/compositing-clip-path.html: Added.
- compositing/masks/reference-clip-path-on-composited-expected.html: Added.
- compositing/masks/reference-clip-path-on-composited.html: Added.
- 8:33 PM Changeset in webkit [180881] by
-
- 2 edits in trunk/Source/WebCore
[Cairo] Implement Path::addEllipse
https://bugs.webkit.org/show_bug.cgi?id=142144
Patch by Hunseop Jeong <Hunseop Jeong> on 2015-03-01
Reviewed by Gyuyoung Kim.
Add support for addEllipse method for platforms using cairo.
- platform/graphics/cairo/PathCairo.cpp:
(WebCore::Path::addEllipse):
- 7:58 PM Changeset in webkit [180880] by
-
- 5 edits in branches/safari-600.4.10-branch/Source
Versioning.
- 7:56 PM Changeset in webkit [180879] by
-
- 2 edits in trunk/LayoutTests
Unreviewed EFL gardening. Mark crash tests of webgl to CRASH.
WebGL isn't supported by EFL port now.
- platform/efl/TestExpectations:
- 7:40 PM Changeset in webkit [180878] by
-
- 1 copy in tags/Safari-600.4.10.6
New tag.
- 7:26 PM Changeset in webkit [180877] by
-
- 30 edits in branches/safari-600.4.10-branch/Source/WebCore
Merged r180839. rdar://problem/20001723
- 6:59 PM Changeset in webkit [180876] by
-
- 2 edits in trunk/Source/WebKit
Silence non-fatal errors about failing to create WebKitPluginHost.app and WebKitPluginAgent symlinks.
Rubber-stamped by Alexey Proskuryakov.
- WebKit.xcodeproj/project.pbxproj: If a link already exist, don’t try to create it.
- 6:08 PM Changeset in webkit [180875] by
-
- 5 edits in trunk/Source/JavaScriptCore
BytecodeGenerator shouldn't emit op_resolve_scope as a roundabout way of returning the scopeRegister
https://bugs.webkit.org/show_bug.cgi?id=142153
Reviewed by Michael Saboff.
We don't need a op_resolve_scope if we know that it will simply return the scope register.
This changes the BytecodeGenerator to use the scope register directly in those cases where
we know statically that we would just have returned that from op_resolve_scope.
This doesn't appear to have a significant impact on performance.
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::CodeBlock):
- bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitResolveScope):
(JSC::BytecodeGenerator::emitReturn):
(JSC::BytecodeGenerator::emitGetOwnScope): Deleted.
- bytecompiler/BytecodeGenerator.h:
- bytecompiler/NodesCodegen.cpp:
(JSC::ResolveNode::emitBytecode):
(JSC::EvalFunctionCallNode::emitBytecode):
(JSC::FunctionCallResolveNode::emitBytecode):
(JSC::PostfixNode::emitResolve):
(JSC::DeleteResolveNode::emitBytecode):
(JSC::TypeOfResolveNode::emitBytecode):
(JSC::PrefixNode::emitResolve):
(JSC::ReadModifyResolveNode::emitBytecode):
(JSC::AssignResolveNode::emitBytecode):
(JSC::ConstDeclNode::emitCodeSingle):
(JSC::EmptyVarExpression::emitBytecode):
(JSC::ForInNode::emitLoopHeader):
(JSC::ForOfNode::emitBytecode):
(JSC::BindingNode::bindValue):
- 5:53 PM Changeset in webkit [180874] by
-
- 2 edits in trunk/LayoutTests
Unreviewed EFL gardening on 2nd March.
Mark css3 shape tests to flaky. Unskip passing tests and so on.
- platform/efl/TestExpectations:
- 5:48 PM Changeset in webkit [180873] by
-
- 7 edits in trunk/Source/WebCore
Use std::unique_ptr instead of PassOwnPtr|OwnPtr for ScrollAnimator
https://bugs.webkit.org/show_bug.cgi?id=142143
Patch by Joonghun Park <jh718.park@samsung.com> on 2015-03-01
Reviewed by Darin Adler.
No new tests, no behavior changes.
- platform/ScrollAnimator.cpp:
(WebCore::ScrollAnimator::create):
- platform/ScrollAnimator.h:
- platform/ScrollAnimatorNone.cpp:
(WebCore::ScrollAnimator::create):
- platform/ScrollableArea.h:
- platform/ios/ScrollAnimatorIOS.mm:
(WebCore::ScrollAnimator::create):
- platform/mac/ScrollAnimatorMac.mm:
(WebCore::ScrollAnimator::create):
- 5:46 PM Changeset in webkit [180872] by
-
- 3 edits in trunk/Source/WebCore
[Content Filtering] Move another declaration to WebFilterEvaluatorSPI.h
https://bugs.webkit.org/show_bug.cgi?id=142066
Reviewed by Andreas Kling.
- platform/ios/ContentFilterIOS.mm:
- platform/spi/cocoa/WebFilterEvaluatorSPI.h:
- 4:08 PM Changeset in webkit [180871] by
-
- 21 edits4 adds in trunk
Make NotificationCenter / Notification suspendable
https://bugs.webkit.org/show_bug.cgi?id=142117
<rdar://problem/19923085>
Reviewed by Andreas Kling.
Source/WebCore:
Make NotificationCenter / Notification suspendable so that pages using
them can enter the PageCache.
NotificationCenter can safely be suspended if there are no pending
permission requests. This required adding an
"hasPendingPermissionRequests()" callback to the NotificationClient.
Notification can safely be suspended if it is either idle (not showing
yet) or closed.
Tests: fast/history/page-cache-notification-non-suspendable.html
fast/history/page-cache-notification-suspendable.html
- Modules/notifications/Notification.cpp:
(WebCore::Notification::canSuspend):
- Modules/notifications/NotificationCenter.cpp:
(WebCore::NotificationCenter::canSuspend):
- Modules/notifications/NotificationClient.h:
Source/WebKit/mac:
Provide implementation for NotificationClient::hasPendingPermissionRequests().
The implementation is very simplistic. it will only return false if no
request for permission for ever made. This is because there is currently no
easy way to figure out if a permission request is pending or not.
- WebCoreSupport/WebNotificationClient.h:
- WebCoreSupport/WebNotificationClient.mm:
(WebNotificationClient::requestPermission):
(WebNotificationClient::hasPendingPermissionRequests):
Source/WebKit/win:
Provide implementation for NotificationClient::hasPendingPermissionRequests().
- WebCoreSupport/WebDesktopNotificationsDelegate.cpp:
(WebDesktopNotificationsDelegate::requestPermission):
(hasPendingPermissionRequests):
- WebCoreSupport/WebDesktopNotificationsDelegate.h:
Source/WebKit2:
Provide implementation for NotificationClient::hasPendingPermissionRequests().
- WebProcess/Notifications/NotificationPermissionRequestManager.cpp:
(WebKit::NotificationPermissionRequestManager::hasPendingPermissionRequests):
- WebProcess/Notifications/NotificationPermissionRequestManager.h:
- WebProcess/WebCoreSupport/WebNotificationClient.cpp:
(WebKit::WebNotificationClient::hasPendingPermissionRequests):
- WebProcess/WebCoreSupport/WebNotificationClient.h:
LayoutTests:
Add layout tests to cover cases where notifications should prevent
entering the PageCache or not.
- fast/history/page-cache-notification-non-suspendable-expected.txt: Added.
- fast/history/page-cache-notification-non-suspendable.html: Added.
- fast/history/page-cache-notification-suspendable-expected.txt: Added.
- fast/history/page-cache-notification-suspendable.html: Added.
- platform/efl/TestExpectations:
- platform/gtk/TestExpectations:
- platform/ios-simulator/TestExpectations:
- platform/win/TestExpectations:
- platform/wincairo/TestExpectations:
- 2:34 PM Changeset in webkit [180870] by
-
- 11 edits in trunk/LayoutTests
EFL, GTK+, and Windows rebaselines after r180867.
- platform/efl/TestExpectations:
- platform/efl/editing/execCommand/5142012-1-expected.txt:
- platform/efl/editing/execCommand/nsresponder-outdent-expected.txt:
- platform/efl/editing/inserting/insert-at-end-02-expected.txt:
- platform/gtk/editing/execCommand/5142012-1-expected.txt:
- platform/gtk/editing/execCommand/nsresponder-outdent-expected.txt:
- platform/gtk/editing/inserting/insert-at-end-02-expected.txt:
- platform/gtk/editing/pasteboard/4989774-expected.txt:
- platform/win/editing/execCommand/5142012-1-expected.txt:
- platform/win/editing/execCommand/nsresponder-outdent-expected.txt:
- platform/win/editing/inserting/insert-at-end-02-expected.txt:
- 1:56 PM Changeset in webkit [180869] by
-
- 4 edits in trunk/Source/WebKit2
Enable new disk cache on iOS
https://bugs.webkit.org/show_bug.cgi?id=142148
Reviewed by Sam Weinig.
- NetworkProcess/cache/NetworkCacheStorageCocoa.mm:
iOS build fix.
- UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::registerUserDefaultsIfNeeded):
Disable the efficacy logging by default for now. It has significant performance impact.
- config.h:
Enable it.
- 12:43 PM Changeset in webkit [180868] by
-
- 2 edits in trunk/LayoutTests
media/track/track-in-band-cues-added-once.html flakily fails
https://bugs.webkit.org/show_bug.cgi?id=142152
- platform/mac/TestExpectations: Marked it as such.
- 11:52 AM Changeset in webkit [180867] by
-
- 17 edits2 adds in trunk
isContentEditable shouldn't trigger synchronous style recalc in most cases
https://bugs.webkit.org/show_bug.cgi?id=129034
Reviewed by Antti Koivisto.
Source/WebCore:
Avoid style recalc inside isContentEditable when the document doesn't contain -webkit-user-modify or
-webkit-user-select: all. Instead, compute the value from contenteditable attributes in ancestors.
However, still compute the editability from the style tree when it's up-to-date in order to avoid
repeatedly walking up the DOM tree in a hot code path inside editing.
Test: fast/dom/HTMLElement/dynamic-editability-change.html
- css/CSSGrammar.y.in: No need to pass in "true" as we never call this function with false.
- css/CSSParser.cpp:
(WebCore::isValidKeywordPropertyAndValue): Calls parserSetUsesStyleBasedEditability as needed.
(WebCore::parseKeywordValue): Passes around StyleSheetContents*.
(WebCore::CSSParser::parseValue): Ditto.
(WebCore::CSSParser::parseFont): Ditto.
- css/StyleSheetContents.cpp:
(WebCore::StyleSheetContents::StyleSheetContents): Initializes and copies m_usesStyleBasedEditability.
- css/StyleSheetContents.h:
(WebCore::StyleSheetContents::parserSetUsesRemUnits): Removed the argument since it was always true.
(WebCore::StyleSheetContents::parserSetUsesStyleBasedEditability): Added.
(WebCore::StyleSheetContents::usesStyleBasedEditability): Added.
- dom/Document.cpp:
(WebCore::Document::recalcStyle): Added a FIXME as well as a comment explaining why we don't call
setUsesStyleBasedEditability. Since Node::computeEditability triggers style recalc only when the flag
is set to true, it's too late to update the flag here.
(WebCore::Document::updateStyleIfNeeded): Uses a newly extracted needsStyleRecalc.
(WebCore::Document::updateBaseURL): Preserves m_usesStyleBasedEditability as well as m_usesRemUnit.
(WebCore::Document::usesStyleBasedEditability): Added. Returns true when inline style declarations or
any active stylesheet uses -webkit-user-modify or -webkit-user-select: all. Flushing pending stylesheet
changes here is fine because the alternative is to trigger a full blown style recalc.
- dom/Document.h:
(WebCore::Document::needsStyleRecalc): Added. Extracted from updateStyleIfNeeded.
- dom/DocumentStyleSheetCollection.cpp:
(WebCore::DocumentStyleSheetCollection::DocumentStyleSheetCollection):
(WebCore::styleSheetsUseRemUnits): Deleted.
(WebCore::DocumentStyleSheetCollection::updateActiveStyleSheets): Updates m_usesStyleBasedEditability
as well as m_usesRemUnit.
- dom/DocumentStyleSheetCollection.h:
(WebCore::DocumentStyleSheetCollection::usesStyleBasedEditability): Added.
(WebCore::DocumentStyleSheetCollection::setUsesStyleBasedEditability): Added.
- dom/Node.cpp:
(WebCore::computeEditabilityFromComputedStyle): Extracted from computeEditability.
(WebCore::Node::computeEditability): When the style recalc is requested and the render tree is dirty,
check if the document uses any CSS property that can affect the editability of elements. If it doesn't,
compute the editability from contenteditable attributes in the anchors via matchesReadWritePseudoClass.
Continue to use the style-based computation when the render tree isn't dirty to avoid the tree walk.
- html/HTMLElement.cpp:
(WebCore::HTMLElement::editabilityFromContentEditableAttr): Extracted from matchesReadWritePseudoClass
to be called in Node::computeEditability. Also made it return Editability instead of boolean.
(WebCore::HTMLElement::matchesReadWritePseudoClass):
- html/HTMLElement.h:
LayoutTests:
Added a regression test to update the editability of elements dynamically. Also rebaselined
tests per style recalc timing changes.
- fast/dom/HTMLElement/dynamic-editability-change-expected.txt: Added.
- fast/dom/HTMLElement/dynamic-editability-change.html: Added.
- platform/mac/editing/execCommand/5142012-1-expected.txt: anonymous render block differences.
- platform/mac/editing/execCommand/nsresponder-outdent-expected.txt: Ditto.
- platform/mac/editing/inserting/insert-at-end-02-expected.txt: Empty render text differences.
- platform/mac/editing/pasteboard/4989774-expected.txt: Ditto.
- 11:48 AM Changeset in webkit [180866] by
-
- 2 edits in trunk/Tools
LayoutTestRealy: Prepend XPC_ to the key, not the value!
Follow-up fix for:
LayoutTestRelay: App environment variables not set for --guard-malloc or --leaks
<http://webkit.org/b/142145>
- LayoutTestRelay/LayoutTestRelay/LTRelayController.m:
(-[LTRelayController _environmentVariables]): Fix think-o.
- 11:12 AM Changeset in webkit [180865] by
-
- 2 edits in trunk/Source/WebCore
[Win] Unreviewed build fix.
- WebCorePrefix.h: Provide some default definitions to help build on Windows
machines with different application support libraries.
- 10:57 AM Changeset in webkit [180864] by
-
- 2 edits in trunk/Tools
LayoutTestRelay: App environment variables not set for --guard-malloc or --leaks
<http://webkit.org/b/142145>
Reviewed by Simon Fraser.
- LayoutTestRelay/LayoutTestRelay/LTRelayController.m:
(-[LTRelayController _environmentVariables]): Add.
(-[LTRelayController launchApp]): Use -_environmentVariables.
- 10:28 AM Changeset in webkit [180863] by
-
- 2 edits in trunk/LayoutTests
[Win] Document some more debug assertions.
- platform/win/TestExpectations:
- 1:52 AM Changeset in webkit [180862] by
-
- 2 edits in releases/WebKitGTK/webkit-2.8/Source/WebCore
Merge r180846 - FrameView::layoutTimerFired() should update style if needed before doing layout
https://bugs.webkit.org/show_bug.cgi?id=141688
Reviewed by Andreas Kling.
If the style recalc timer has been scheduled to fire after the layout timer,
when the layout timer fires, we might as well just do the style recalc
too. The call to updateStyleIfNeeded() will cancel the pending style
recalc timer.
This doesn't have much impact on the number of layouts (measured via PLT)
but seems like a reasonable thing to do.
- page/FrameView.cpp:
(WebCore::FrameView::layoutTimerFired):
- 1:48 AM Changeset in webkit [180861] by
-
- 14 edits1 copy in releases/WebKitGTK/webkit-2.8/Source/bmalloc
Merge r180797 - bmalloc: Pathological madvise churn on the free(malloc(x)) benchmark
https://bugs.webkit.org/show_bug.cgi?id=142058
Reviewed by Andreas Kling.
The churn was caused by repeatedly splitting an object with physical
pages from an object without, and then merging them back together again.
The merge would conservatively forget that we had physical pages, forcing
a new call to madvise on the next allocation.
This patch more strictly segregates objects in the heap from objects in
the VM heap, with these changes:
(1) Objects in the heap are not allowed to merge with objects in the VM
heap, and vice versa -- since that would erase our precise knowledge of
which physical pages had been allocated.
(2) The VM heap is exclusively responsible for allocating and deallocating
physical pages.
(3) The heap free list must consider entries for objects that are in the
VM heap to be invalid, and vice versa. (This condition can arise
because the free list does not eagerly remove items.)
With these changes, we can know that any valid object in the heap's free
list already has physical pages, and does not need to call madvise.
Note that the VM heap -- as before -- might sometimes contain ranges
or pieces of ranges that have physical pages, since we allow splitting
of ranges at granularities smaller than the VM page size. These ranges
can eventually merge with ranges in the heap during scavenging.
- bmalloc.xcodeproj/project.pbxproj:
- bmalloc/BoundaryTag.h:
(bmalloc::BoundaryTag::owner):
(bmalloc::BoundaryTag::setOwner):
(bmalloc::BoundaryTag::initSentinel):
(bmalloc::BoundaryTag::hasPhysicalPages): Deleted.
(bmalloc::BoundaryTag::setHasPhysicalPages): Deleted. Replaced the concept
of "has physical pages" with a bit indicating which heap owns the large
object. This is a more precise concept, since the old bit was really a
Yes / Maybe bit.
- bmalloc/Deallocator.cpp:
- bmalloc/FreeList.cpp: Adopt
(bmalloc::FreeList::takeGreedy):
(bmalloc::FreeList::take):
(bmalloc::FreeList::removeInvalidAndDuplicateEntries):
- bmalloc/FreeList.h:
(bmalloc::FreeList::push): Added API for considering the owner when
deciding if a free list entry is valid.
- bmalloc/Heap.cpp:
(bmalloc::Heap::Heap): Adopt new API.
(bmalloc::Heap::scavengeLargeRanges): Scavenge all ranges with no minimum,
since some ranges might be able to merge with ranges in the VM heap, and
they won't be allowed to until we scavenge them.
(bmalloc::Heap::allocateSmallPage):
(bmalloc::Heap::allocateMediumPage):
(bmalloc::Heap::allocateLarge): New VM heap API makes this function
simpler, since we always get back physical pages now.
- bmalloc/Heap.h:
- bmalloc/LargeObject.h:
(bmalloc::LargeObject::end):
(bmalloc::LargeObject::owner):
(bmalloc::LargeObject::setOwner):
(bmalloc::LargeObject::isValidAndFree):
(bmalloc::LargeObject::merge): Do not merge objects across heaps since
that causes madvise churn.
(bmalloc::LargeObject::validateSelf):
(bmalloc::LargeObject::init):
(bmalloc::LargeObject::hasPhysicalPages): Deleted.
(bmalloc::LargeObject::setHasPhysicalPages): Deleted. Propogate the Owner API.
- bmalloc/Owner.h: Added.
- bmalloc/SegregatedFreeList.cpp:
(bmalloc::SegregatedFreeList::SegregatedFreeList):
(bmalloc::SegregatedFreeList::insert):
(bmalloc::SegregatedFreeList::takeGreedy):
(bmalloc::SegregatedFreeList::take):
- bmalloc/SegregatedFreeList.h: Propogate the owner API.
- bmalloc/VMAllocate.h:
(bmalloc::vmDeallocatePhysicalPagesSloppy):
(bmalloc::vmAllocatePhysicalPagesSloppy): Clarified these functions and
removed an edge case.
- bmalloc/VMHeap.cpp:
(bmalloc::VMHeap::VMHeap):
- bmalloc/VMHeap.h:
(bmalloc::VMHeap::allocateSmallPage):
(bmalloc::VMHeap::allocateMediumPage):
(bmalloc::VMHeap::allocateLargeObject):
(bmalloc::VMHeap::deallocateLargeObject): Be sure to give each object
a new chance to merge, since it might have been prohibited from merging
before by virtue of not being in the VM heap.
(bmalloc::VMHeap::allocateLargeRange): Deleted.
(bmalloc::VMHeap::deallocateLargeRange): Deleted.
- 1:43 AM Changeset in webkit [180860] by
-
- 18 edits in releases/WebKitGTK/webkit-2.8/Source/WebCore
Merge r180772 - Use NeverDestroyed for JS wrapper owners.
<https://webkit.org/b/142090>
Reviewed by Chris Dumez.
Using NeverDestroyed puts these objects in BSS which is preferable
since that prevents them from pinning down entire malloc pages forever.
- bindings/scripts/CodeGeneratorJS.pm:
(GenerateHeader): Use NeverDestroyed instead of DEPRECATED_DEFINE_STATIC_LOCAL.
- bindings/scripts/test/JS/*: Rebaseline bindings tests for this change.
- 1:21 AM Changeset in webkit [180859] by
-
- 3 edits2 adds in releases/WebKitGTK/webkit-2.8
Merge r180767 - Use after free in WebCore::RenderNamedFlowFragment::restoreRegionObjectsOriginalStyle
https://bugs.webkit.org/show_bug.cgi?id=138366
Reviewed by Dave Hyatt.
This patch ensures that we clean up RenderNamedFlowFragment::m_renderObjectRegionStyle when embedded flow content is getting destroyed.
In m_renderObjectRegionStyle hash map, we store style information about the named flow's descendant children.
When a child is being detached from the tree, it removes itself from this hashmap.
We do it by traversing up on the ancestor chain and call removeFlowChildInfo() on the parent flow.
However in case of embedded flows (for example multicolumn content inside a region), we need to check whether the parent flow
is inside a flow too and continue the cleanup accordingly.
Source/WebCore:
Test: fast/regions/region-with-multicolumn-embedded-crash.html
- rendering/RenderObject.cpp:
(WebCore::RenderObject::removeFromRenderFlowThreadIncludingDescendants):
LayoutTests:
- fast/regions/region-with-multicolumn-embedded-crash-expected.txt: Added.
- fast/regions/region-with-multicolumn-embedded-crash.html: Added.
- 1:18 AM Changeset in webkit [180858] by
-
- 3 edits in releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore
Merge r180716 - MachineThreads::Thread clean up has a use after free race condition.
<https://webkit.org/b/141990>
Reviewed by Filip Pizlo.
MachineThreads::Thread clean up relies on the clean up mechanism
implemented in _pthread_tsd_cleanup_key(), which looks like this:
void _pthread_tsd_cleanup_key(pthread_t self, pthread_key_t key)
{
void (*destructor)(void *);
if (_pthread_key_get_destructor(key, &destructor)) {
void ptr = &self->tsd[key];
void *value = *ptr;
=== Start of window for the bug to manifest =================
At this point, this thread has cached "destructor" and "value"
(which is a MachineThreads*). If the VM gets destructed (along
with its MachineThreads registry) by another thread, then this
thread will have no way of knowing that the MachineThreads* is
now pointing to freed memory. Calling the destructor below will
therefore result in a use after free scenario when it tries to
access the MachineThreads' data members.
if (value) {
*ptr = NULL;
if (destructor) {
=== End of window for the bug to manifest ==================
destructor(value);
}
}
}
}
The fix is to add each active MachineThreads to an ActiveMachineThreadsManager,
and always check if the manager still contains that MachineThreads object
before we call removeCurrentThread() on it. When MachineThreads is destructed,
it will remove itself from the manager. The add, remove, and checking
operations are all synchronized on the manager's lock, thereby ensuring that
the MachineThreads object, if found in the manager, will remain alive for the
duration of time we call removeCurrentThread() on it.
There's also possible for the MachineThreads object to already be destructed
and another one happened to have been instantiated at the same address.
Hence, we should only remove the exiting thread if it is found in the
MachineThreads object.
There is no test for this issue because this bug requires a race condition
between 2 threads where:
- Thread B, which had previously used the VM, exiting and getting to the bug window shown in _pthread_tsd_cleanup_key() above.
- Thread A destructing the VM (and its MachineThreads object) within that window of time before Thread B calls the destructor.
It is not possible to get a reliable test case without invasively
instrumenting _pthread_tsd_cleanup_key() or MachineThreads::removeCurrentThread()
to significantly increase that window of opportunity.
- heap/MachineStackMarker.cpp:
(JSC::ActiveMachineThreadsManager::Locker::Locker):
(JSC::ActiveMachineThreadsManager::add):
(JSC::ActiveMachineThreadsManager::remove):
(JSC::ActiveMachineThreadsManager::contains):
(JSC::ActiveMachineThreadsManager::ActiveMachineThreadsManager):
(JSC::activeMachineThreadsManager):
(JSC::MachineThreads::MachineThreads):
(JSC::MachineThreads::~MachineThreads):
(JSC::MachineThreads::removeThread):
(JSC::MachineThreads::removeThreadIfFound):
(JSC::MachineThreads::removeCurrentThread): Deleted.
- heap/MachineStackMarker.h:
- 12:56 AM Changeset in webkit [180857] by
-
- 6 edits in releases/WebKitGTK/webkit-2.8/Source/bmalloc
Merge r180701 - bmalloc: Large object free list can grow infinitely
https://bugs.webkit.org/show_bug.cgi?id=142055
Reviewed by Andreas Kling.
By design, we don't eagerly remove large objects from the free list.
This creates two simple pathologies:
(1) If you free and then allocate the same object repeatedly, it will
duplicate itself in the free list repeatedly. Since it is never
invalid at the time of allocation, it will never be removed.
(2) If you split and then merge the same object repeatedly, it will
duplicate its split sibling in the free list repeatedly. If its
sibling is in a separate free list size class, it will never be
consulted at the time of allocation, so it will never be removed.
So, a simple "while (1) { free(malloc(x)); }" causes infinite memory
use in the free list.
The solution in this patch is a simple helper to remove garbage from the
free list if it grows too large. This pathology is not common, so the
cost is OK.
Long-term, perhaps we should rethink the laziness of these free lists.
- bmalloc/BoundaryTag.h:
(bmalloc::BoundaryTag::isMarked):
(bmalloc::BoundaryTag::setMarked): New bit, used by free list GC.
- bmalloc/FreeList.cpp:
(bmalloc::FreeList::removeInvalidAndDuplicateEntries): The GC algorithm.
- bmalloc/FreeList.h:
(bmalloc::FreeList::FreeList):
(bmalloc::FreeList::push): Invoke the GC if we're getting huge.
- bmalloc/LargeObject.h:
(bmalloc::LargeObject::isMarked):
(bmalloc::LargeObject::setMarked):
(bmalloc::LargeObject::validateSelf): Expose the new bit.
- bmalloc/Sizes.h: New constant to control GC frequency.
- 12:51 AM Changeset in webkit [180856] by
-
- 8 edits1 copy1 move in releases/WebKitGTK/webkit-2.8/Source/bmalloc
Merge r180693 - bmalloc: Refactored SegregatedFreeList and BoundaryTag::init
https://bugs.webkit.org/show_bug.cgi?id=142049
Reviewed by Anders Carlsson.
Split out a FreeList class from SegregatedFreeList. This will make it
easier to add behaviors on free list insertion and removal -- and it's
probably how I should have designed things at the start.
Moved BoundaryTag::init into LargeObject, since all the related logic
lives in LargeObject now too, and this allows us to remove BoundaryTagInlines.h.
- bmalloc.xcodeproj/project.pbxproj:
- bmalloc/BoundaryTagInlines.h: Removed.
- bmalloc/FreeList.cpp: Copied from Source/bmalloc/bmalloc/SegregatedFreeList.cpp.
(bmalloc::FreeList::takeGreedy):
(bmalloc::FreeList::take):
(bmalloc::SegregatedFreeList::SegregatedFreeList): Deleted.
(bmalloc::SegregatedFreeList::insert): Deleted.
(bmalloc::SegregatedFreeList::takeGreedy): Deleted.
(bmalloc::SegregatedFreeList::take): Deleted.
- bmalloc/FreeList.h: Copied from Source/bmalloc/bmalloc/SegregatedFreeList.h.
(bmalloc::FreeList::push):
- bmalloc/LargeObject.h:
(bmalloc::LargeObject::init):
- bmalloc/SegregatedFreeList.cpp:
(bmalloc::SegregatedFreeList::SegregatedFreeList):
(bmalloc::SegregatedFreeList::insert):
(bmalloc::SegregatedFreeList::takeGreedy):
(bmalloc::SegregatedFreeList::take):
- bmalloc/SegregatedFreeList.h:
- bmalloc/Sizes.h:
- bmalloc/VMHeap.cpp:
(bmalloc::VMHeap::grow):
- 12:45 AM Changeset in webkit [180855] by
-
- 4 edits in releases/WebKitGTK/webkit-2.8/Source/bmalloc
Merge r180688 - bmalloc: free up a bit in BoundaryTag
https://bugs.webkit.org/show_bug.cgi?id=142048
Reviewed by Brady Eidson.
We were wasting a bit by accident, and I need one now.
- bmalloc/Algorithm.h:
(bmalloc::rightShift): Deleted. Not needed, now that I've simplified
the math.
- bmalloc/BoundaryTag.h: Since each boundary tag bucket is 1024 bytes
long, the maximum offset into a bucket is 1023.
You need 5 bits to count up to 1024, but only 4 to count up to 1023.
Math is hard.
(bmalloc::BoundaryTag::compactBegin): Switched to division because it
is simpler, and easier to match up with our ASSERT. The compiler will
turn division by constant power of two into a shift for us.
(bmalloc::BoundaryTag::setRange): Added an ASSERT for compactBegin
because we do encode it, so we should ASSERT that encoding did not
lose information.
- bmalloc/Sizes.h: Shifting is no longer used since we use division
instead.
- 12:43 AM Changeset in webkit [180854] by
-
- 6 edits6 adds in releases/WebKitGTK/webkit-2.8
Merge r180683 - Setting any of the <object> element plugin controlling attributes does not have any affect.
https://bugs.webkit.org/show_bug.cgi?id=141936.
Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2015-02-26
Reviewed by Zalan Bujtas.
Source/WebCore:
When setting any of the <object> element plugin controlling attributes
dynamically we need to mark the the element to be dirty by calling
setNeedsStyleRecalc(), so it has to recreate its renderer when needed.
Test: svg/as-object/svg-in-object-dynamic-attribute-change.html
- dom/Element.h: Delete unimplemented function.
- html/HTMLObjectElement.cpp:
(WebCore::HTMLObjectElement::parseAttribute): Dirty the element by calling
setNeedsStyleRecalc() when one of the plugin controlling attributes gets
changed. We have to clear the m_useFallbackContent because the attribute's
new value might fix the object rendering.
- html/HTMLObjectElement.h: Add a function to clear m_useFallbackContent.
- html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::willRecalcStyle): We might need to
reconstruct the object renderer in the image case. This can happen if the
image was rendering fallback content and the attribute's new value fixes
the object rendering.
LayoutTests:
- svg/as-object/resources/lime100x100.html: Added.
- svg/as-object/resources/lime100x100.png: Added.
- svg/as-object/resources/lime100x100.svg: Added.
- svg/as-object/resources/red100x100.svg: Added.
- svg/as-object/svg-in-object-dynamic-attribute-change-expected.html: Added.
- svg/as-object/svg-in-object-dynamic-attribute-change.html: Added.
Ensure that changing the 'type' and the 'data' attributes of the <object>
element will have the expected outcome. Also make sure that the <object>
element renderer falls back correctly when setting any of the attributes
to some unexpected value.
- 12:36 AM WebKitGTK/2.8.x edited by
- (diff)
- 12:28 AM Changeset in webkit [180853] by
-
- 2 edits in releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore
Merge r180667 - Add calleeSaveRegisters() implementation for ARM Traditional
https://bugs.webkit.org/show_bug.cgi?id=141903
Reviewed by Darin Adler.
- jit/RegisterSet.cpp:
(JSC::RegisterSet::calleeSaveRegisters):
- 12:24 AM Changeset in webkit [180852] by
-
- 7 edits2 adds in releases/WebKitGTK/webkit-2.8
Merge r180643 - Horizontal and vertical lines are clipped completely if clip-path is included in the tag but the referenced element is defined later.
https://bugs.webkit.org/show_bug.cgi?id=141776.
Reviewed by Dean Jackson.
Source/WebCore:
Tests: svg/clip-path/clip-path-line-use-before-defined-expected.svg
svg/clip-path/clip-path-line-use-before-defined.svg
- rendering/svg/RenderSVGResourceClipper.cpp:
(WebCore::RenderSVGResourceClipper::applyClippingToContext): Ensure the renderer
is added to m_clipper if it does not exist. The same renderer might have been
added to m_clipper in resourceBoundingBox().
(WebCore::RenderSVGResourceClipper::addRendererToClipper): Add the renderer to
m_clipper if it does not exist. Return the associated ClipperData.
(WebCore::RenderSVGResourceClipper::resourceBoundingBox): If the clipper is
referenced before it is defined, add the renderer to m_clipper. While doing the
layout() for the clipper, we can check if m_clipper has values or not. If it does
have, we are going to mark the clipper for client invalidation which is done by
the SVG root.
- rendering/svg/RenderSVGResourceClipper.h:
- rendering/svg/RenderSVGResourceContainer.h:
(WebCore::RenderSVGResourceContainer::selfNeedsClientInvalidation): Define a
new function selfNeedsClientInvalidation() which controls marking the clipper
for client invalidation. In RenderSVGResourceClipper, override it so it checks
m_clipper to force clients validation even if it the first time we do layout
for this clipper.
- rendering/svg/RenderSVGResourceContainer.cpp:
(WebCore::RenderSVGResourceContainer::layout): Call the virtual function
selfNeedsClientInvalidation() to check whether we need to mark the clipper for
client invalidation.
- svg/SVGElement.cpp: Delete unneeded header file.
LayoutTests:
New test cases for SVG lines which are clipped to a <clipPath>. The <clipPath>
is referenced before it is defined.
- svg/clip-path/clip-path-line-use-before-defined-expected.svg: Added.
- svg/clip-path/clip-path-line-use-before-defined.svg: Added.
- 12:21 AM Changeset in webkit [180851] by
-
- 6 edits1 add in releases/WebKitGTK/webkit-2.8
Merge r180639 - CodeBlock crashes when dumping op_push_name_scope
https://bugs.webkit.org/show_bug.cgi?id=141953
Patch by Benjamin Poulain <bpoulain@apple.com> on 2015-02-25
PerformanceTests/SunSpider:
Reviewed by Filip Pizlo.
- profiler-test.yaml:
Source/JavaScriptCore:
Reviewed by Filip Pizlo and Csaba Osztrogonác.
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dumpBytecode):
- tests/stress/op-push-name-scope-crashes-profiler.js: Added.
Tools:
Reviewed by Filip Pizlo.
- Scripts/run-jsc-stress-tests:
- 12:17 AM Changeset in webkit [180850] by
-
- 2 edits in releases/WebKitGTK/webkit-2.8/Source/WebCore
Merge r180634 - REGRESSION (r180018 ): Holding a rubber-band in place can get stuck
https://bugs.webkit.org/show_bug.cgi?id=142020
-and corresponding-
rdar://problem/19945216
Reviewed by Tom Horton.
It was a mistaken assumption that it was necessary to return false in the zero-
delta case. That is clearly conceptually wrong since false represents the DOM
doing something special with the event, which is clearly not the case if we never
even send the event to the DOM. Returning true will allow the rest of the
scrolling machinery the ability to handle the event.
- dom/Element.cpp:
(WebCore::Element::dispatchWheelEvent):
- 12:15 AM Changeset in webkit [180849] by
-
- 16 edits in releases/WebKitGTK/webkit-2.8
Merge r180621 - AX: Implement support for ARIA 1.1 'searchbox' role
https://bugs.webkit.org/show_bug.cgi?id=142004
Reviewed by Chris Fleizach.
Source/WebCore:
Add a new accessible SearchFieldRole to handle both the ARIA role
and the "search" input type.
No new tests. Instead, added a new test case to roles-exposed.html
for the mapping, and updated roles-computedRoleString.html because
there is now a one-to-one mapping between the "search" input type
and an ARIA role.
- accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::determineAccessibilityRole):
(WebCore::AccessibilityNodeObject::isSearchField):
- accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::isARIATextControl):
(WebCore::AccessibilityObject::isARIAInput):
(WebCore::initializeRoleMap):
- accessibility/AccessibilityObject.h:
- accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::determineAccessibilityRole):
- accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
(atkRole):
- accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper accessibilityCanFuzzyHitTest]):
(-[WebAccessibilityObjectWrapper accessibilityTraits]):
(-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]):
- accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(createAccessibilityRoleMap):
LayoutTests:
- accessibility/roles-computedRoleString-expected.txt: Updated for new role.
- accessibility/roles-computedRoleString.html: Updated for new role.
- accessibility/roles-exposed.html: New test case added.
- platform/efl/accessibility/roles-exposed-expected.txt: Updated for new test case.
- platform/gtk/accessibility/roles-exposed-expected.txt: Updated for new test case.
- platform/mac-mavericks/accessibility/roles-exposed-expected.txt: Updated for new test case.
- platform/mac/accessibility/roles-exposed-expected.txt: Updated for new test case.