WebKit-https.git
4 years agoUnreviewed, fix all of the builds. I failed a second time.
fpizlo@apple.com [Thu, 19 May 2016 21:46:07 +0000 (21:46 +0000)]
Unreviewed, fix all of the builds. I failed a second time.

* wtf/BackwardsGraph.h:
(WTF::BackwardsGraph::rootName):

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

4 years agoUnreviewed, fix all of the builds. I had made an additional change that I did not...
fpizlo@apple.com [Thu, 19 May 2016 21:44:29 +0000 (21:44 +0000)]
Unreviewed, fix all of the builds. I had made an additional change that I did not mean to
commit. This fixes it.

* wtf/BackwardsGraph.h:
(WTF::BackwardsGraph::rootName):
(WTF::BackwardsGraph::Set::dump):
(WTF::BackwardsGraph::dump):

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

4 years agoWeb Inspector: HeapSnapshot Instances view should remove dead objects
commit-queue@webkit.org [Thu, 19 May 2016 21:30:55 +0000 (21:30 +0000)]
Web Inspector: HeapSnapshot Instances view should remove dead objects
https://bugs.webkit.org/show_bug.cgi?id=157920
<rdar://problem/26375866>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-05-19
Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

* UserInterface/Workers/HeapSnapshot/HeapSnapshotWorker.js:
(HeapSnapshotWorker):
(HeapSnapshotWorker.prototype.clearSnapshots):
(HeapSnapshotWorker.prototype.createSnapshot):
Preserve a list of snapshots for this page's session. When
new snapshots come in we can determine which nodes have died
and update previous snapshots. Emit a CollectionEvent
containing the nodes that were deleted and affected snapshots.

* UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:
(HeapSnapshot):
Stash the largest node identifier.
Create a byte-per-node list to mark it as dead or alive.
All snapshots start with all live nodes.

(HeapSnapshot.prototype.updateDeadNodesAndGatherCollectionData):
(HeapSnapshot.prototype._markDeadNodes):
When we get a new snapshot we can mark dead nodes in previous
snapshots. Determine the nodeIdentifiers of dead nodes, and
mark them as dead if they existed in previous snapshots.

(HeapSnapshot.buildCategories):
(HeapSnapshot.prototype.updateCategories):
(HeapSnapshotDiff.prototype.updateCategories):
Include a "deadCount" in category data. And provide a method
to return an updated category list.

(HeapSnapshot.prototype.serializeNode):
Include a "dead" property on nodes when they are first fetched.

* UserInterface/Proxies/HeapSnapshotDiffProxy.js:
(WebInspector.HeapSnapshotDiffProxy.prototype.updateForCollectionEvent):
(WebInspector.HeapSnapshotDiffProxy.prototype.updateCategories):
* UserInterface/Proxies/HeapSnapshotNodeProxy.js:
(WebInspector.HeapSnapshotNodeProxy):
(WebInspector.HeapSnapshotNodeProxy.deserialize):
* UserInterface/Proxies/HeapSnapshotProxy.js:
(WebInspector.HeapSnapshotProxy.prototype.updateForCollectionEvent):
(WebInspector.HeapSnapshotProxy.prototype.updateCategories):
Update snapshot proxies from a collection event by updating properties
and dispatching an event from the model object.

* UserInterface/Proxies/HeapSnapshotWorkerProxy.js:
(WebInspector.HeapSnapshotWorkerProxy):
(WebInspector.HeapSnapshotWorkerProxy.prototype.clearSnapshots):
(WebInspector.HeapSnapshotWorkerProxy.prototype._mainResourceDidChange):
Clear the session snapshot list when the main resource changes.
However we can't yet clear the HeapSnapshot objects on the worker
because we may still have UI that interact with them.

* UserInterface/Views/HeapAllocationsTimelineView.js:
(WebInspector.HeapAllocationsTimelineView):
(WebInspector.HeapAllocationsTimelineView.prototype.closed):
Register and unregister for HeapSnapshot collection events.

(WebInspector.HeapAllocationsTimelineView.prototype._heapSnapshotCollectionEvent.updateHeapSnapshotForEvent):
(WebInspector.HeapAllocationsTimelineView.prototype._heapSnapshotCollectionEvent):
Update all the snapshots we know about when a collection event happens.

* UserInterface/Views/HeapSnapshotClassDataGridNode.js:
(WebInspector.HeapSnapshotClassDataGridNode.prototype.removeCollectedNodes):
(WebInspector.HeapSnapshotClassDataGridNode.prototype.updateCount):
(WebInspector.HeapSnapshotClassDataGridNode.prototype._populate):
(WebInspector.HeapSnapshotClassDataGridNode.prototype._fetchBatch):
* UserInterface/Views/HeapSnapshotContentView.js:
(WebInspector.HeapSnapshotContentView.prototype._heapSnapshotDataGridTreeDidPopulate):
(WebInspector.HeapSnapshotContentView):
* UserInterface/Views/HeapSnapshotDataGridTree.js:
(WebInspector.HeapSnapshotDataGridTree):
(WebInspector.HeapSnapshotDataGridTree.prototype.removeChild):
(WebInspector.HeapSnapshotDataGridTree.prototype.removeCollectedNodes):
(WebInspector.HeapSnapshotDataGridTree.prototype._heapSnapshotCollectedNodes):
(WebInspector.HeapSnapshotInstancesDataGridTree.prototype.populateTopLevel):
(WebInspector.HeapSnapshotInstancesDataGridTree.prototype.removeCollectedNodes):
(WebInspector.HeapSnapshotInstancesDataGridTree):
Update the Instances DataGridTree UI when a collection event happens.
Remove any top level InstanceDataGridNodes that may be showing for collected nodes.
Update the category counts on the ClassDataGridNodes.
Update FetchMoreDataGridNodes to have updated counts (and replace removed nodes).

LayoutTests:

* inspector/unit-tests/heap-snapshot-collection-event-expected.txt: Added.
* inspector/unit-tests/heap-snapshot-collection-event.html: Added.

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

4 years agoDFG::LICMPhase shouldn't hoist type checks unless it knows that the check will succee...
fpizlo@apple.com [Thu, 19 May 2016 21:25:29 +0000 (21:25 +0000)]
DFG::LICMPhase shouldn't hoist type checks unless it knows that the check will succeed at the loop pre-header
https://bugs.webkit.org/show_bug.cgi?id=144527

Reviewed by Saam Barati.

Source/JavaScriptCore:

This adds a control flow equivalence analysis (called ControlEquivalenceAnalysis) based on
dominator analysis over the backwards CFG. Two basic blocks are control flow equivalent if
the execution of one implies that the other one must also execute. It means that the two
blocks' forward and backward dominance are reciprocated: (A dom B and B backdom A) or (B dom
A and A backdom B). LICM now uses it to become more conservative about hoisting checks, if
this has caused problems in the past. If we hoist something that may exit from a block that
was not control equivalent to the pre-header then it's possible that the node's speculation
will fail even though it wouldn't have if it wasn't hoisted. So, we flag these nodes'
origins as being "wasHoisted" and we track all of their exits as "HoistingFailed". LICM will
turn off such speculative hoisting if the CodeBlock from which we are hoisting had the
HoistingFailed exit kind.

Note that this deliberately still allows us to hoist things that may exit even if they are
not control equivalent to the pre-header. This is necessary because the profitability of
hoisting is so huge in all of the cases that we're aware of that it's worth giving it a
shot.

This is neutral on macrobenchmarks since none of the benchmarks we track have a hoistable
operation that would exit only if hoisted. I added microbenchmarks to illustrate the problem
and two of them speed up by ~40% while one of them is neutral (Int52 saves us from having
problems on that program even though LICM previously did the wrong thing).

* JavaScriptCore.xcodeproj/project.pbxproj:
* bytecode/ExitKind.cpp:
(JSC::exitKindToString):
* bytecode/ExitKind.h:
* dfg/DFGAtTailAbstractState.h:
(JSC::DFG::AtTailAbstractState::operator bool):
(JSC::DFG::AtTailAbstractState::initializeTo):
* dfg/DFGBackwardsCFG.h: Added.
(JSC::DFG::BackwardsCFG::BackwardsCFG):
* dfg/DFGBackwardsDominators.h: Added.
(JSC::DFG::BackwardsDominators::BackwardsDominators):
* dfg/DFGCommon.h:
(JSC::DFG::checkAndSet): Deleted.
* dfg/DFGControlEquivalenceAnalysis.h: Added.
(JSC::DFG::ControlEquivalenceAnalysis::ControlEquivalenceAnalysis):
(JSC::DFG::ControlEquivalenceAnalysis::dominatesEquivalently):
(JSC::DFG::ControlEquivalenceAnalysis::areEquivalent):
* dfg/DFGGraph.cpp:
(JSC::DFG::Graph::dump):
(JSC::DFG::Graph::dumpBlockHeader):
(JSC::DFG::Graph::invalidateCFG):
(JSC::DFG::Graph::substituteGetLocal):
(JSC::DFG::Graph::handleAssertionFailure):
(JSC::DFG::Graph::ensureDominators):
(JSC::DFG::Graph::ensurePrePostNumbering):
(JSC::DFG::Graph::ensureNaturalLoops):
(JSC::DFG::Graph::ensureBackwardsCFG):
(JSC::DFG::Graph::ensureBackwardsDominators):
(JSC::DFG::Graph::ensureControlEquivalenceAnalysis):
(JSC::DFG::Graph::methodOfGettingAValueProfileFor):
* dfg/DFGGraph.h:
(JSC::DFG::Graph::hasDebuggerEnabled):
* dfg/DFGInPlaceAbstractState.h:
(JSC::DFG::InPlaceAbstractState::operator bool):
(JSC::DFG::InPlaceAbstractState::createValueForNode):
(JSC::DFG::InPlaceAbstractState::forNode):
* dfg/DFGLICMPhase.cpp:
(JSC::DFG::LICMPhase::run):
(JSC::DFG::LICMPhase::attemptHoist):
* dfg/DFGMayExit.cpp:
(JSC::DFG::mayExit):
* dfg/DFGMayExit.h:
* dfg/DFGNode.h:
* dfg/DFGNodeOrigin.cpp:
(JSC::DFG::NodeOrigin::dump):
* dfg/DFGNodeOrigin.h:
(JSC::DFG::NodeOrigin::takeValidExit):
(JSC::DFG::NodeOrigin::withWasHoisted):
(JSC::DFG::NodeOrigin::forInsertingAfter):
* dfg/DFGNullAbstractState.h: Added.
(JSC::DFG::NullAbstractState::NullAbstractState):
(JSC::DFG::NullAbstractState::operator bool):
(JSC::DFG::NullAbstractState::forNode):
* dfg/DFGOSRExit.cpp:
(JSC::DFG::OSRExit::OSRExit):
* dfg/DFGOSRExitBase.cpp:
(JSC::DFG::OSRExitBase::considerAddingAsFrequentExitSiteSlow):
* dfg/DFGOSRExitBase.h:
(JSC::DFG::OSRExitBase::OSRExitBase):
* dfg/DFGTypeCheckHoistingPhase.cpp:
(JSC::DFG::TypeCheckHoistingPhase::run):
* ftl/FTLOSRExit.cpp:
(JSC::FTL::OSRExitDescriptor::prepareOSRExitHandle):
(JSC::FTL::OSRExit::OSRExit):
* ftl/FTLOSRExit.h:

Source/WTF:

This adds an adaptor for graphs called BackwardsGraph. The WTF graph framework is based on
passing around a Graph template argument that follows the protocol shared by DFG::CFG,
B3::CFG, and Air::CFG. These graphs always have a single root node but may have many leaf
nodes. This new BackwardsGraph adaptor reverses the graph by creating a synthetic return
node that it uses as the root in the inverted graph. This currently may resort to some
heuristics in programs that have an infinite loop, but other than that, it'll work well in
the general case.

This allows us to say Dominators<BackwardsGraph<some graph type>> as a way of computing
backwards dominators, which then allows us to easily answer control flow equivalence
queries.

* CMakeLists.txt:
* WTF.xcodeproj/project.pbxproj:
* wtf/BackwardsGraph.h: Added.
(WTF::BackwardsGraph::Node::Node):
(WTF::BackwardsGraph::Node::root):
(WTF::BackwardsGraph::Node::operator==):
(WTF::BackwardsGraph::Node::operator!=):
(WTF::BackwardsGraph::Node::operator bool):
(WTF::BackwardsGraph::Node::isRoot):
(WTF::BackwardsGraph::Node::node):
(WTF::BackwardsGraph::Set::Set):
(WTF::BackwardsGraph::Set::add):
(WTF::BackwardsGraph::Set::remove):
(WTF::BackwardsGraph::Set::contains):
(WTF::BackwardsGraph::Set::dump):
(WTF::BackwardsGraph::Map::Map):
(WTF::BackwardsGraph::Map::clear):
(WTF::BackwardsGraph::Map::size):
(WTF::BackwardsGraph::Map::operator[]):
(WTF::BackwardsGraph::BackwardsGraph):
(WTF::BackwardsGraph::root):
(WTF::BackwardsGraph::newMap):
(WTF::BackwardsGraph::successors):
(WTF::BackwardsGraph::predecessors):
(WTF::BackwardsGraph::index):
(WTF::BackwardsGraph::node):
(WTF::BackwardsGraph::numNodes):
(WTF::BackwardsGraph::dump):
* wtf/Dominators.h:
(WTF::Dominators::Dominators):
(WTF::Dominators::dump):
(WTF::Dominators::LengauerTarjan::computeDepthFirstPreNumbering):
* wtf/GraphNodeWorklist.h:
(WTF::GraphNodeWith::GraphNodeWith):
(WTF::GraphNodeWith::operator bool):
* wtf/StdLibExtras.h:
(WTF::callStatelessLambda):
(WTF::checkAndSet):

LayoutTests:

Add tests for LICM hoisting things that would only exit if hoisted.

* js/regress/licm-dragons-expected.txt: Added.
* js/regress/licm-dragons-out-of-bounds-expected.txt: Added.
* js/regress/licm-dragons-out-of-bounds.html: Added.
* js/regress/licm-dragons-overflow-expected.txt: Added.
* js/regress/licm-dragons-overflow.html: Added.
* js/regress/licm-dragons.html: Added.
* js/regress/script-tests/licm-dragons-out-of-bounds.js: Added.
(foo):
* js/regress/script-tests/licm-dragons-overflow.js: Added.
(foo):
* js/regress/script-tests/licm-dragons.js: Added.
(foo):

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

4 years agoWeb Inspector: use a consistent prefix for injected scripts
bburg@apple.com [Thu, 19 May 2016 21:11:02 +0000 (21:11 +0000)]
Web Inspector: use a consistent prefix for injected scripts
https://bugs.webkit.org/show_bug.cgi?id=157715
<rdar://problem/26287188>

Reviewed by Alexey Proskuryakov.

Follow-up fix to an affected test.

* inspector/debugger/scriptParsed.html:
Check whether the script is for CommandLineAPIModuleSource before
checking whether it is an InjectedScript. With the new naming scheme,
the latter is a subset of the former, so do the more specific check first.

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

4 years agoCode that null checks the VM pointer before any use should ref the VM.
mark.lam@apple.com [Thu, 19 May 2016 21:02:44 +0000 (21:02 +0000)]
Code that null checks the VM pointer before any use should ref the VM.
https://bugs.webkit.org/show_bug.cgi?id=157864

Reviewed by Filip Pizlo and Keith Miller.

JSLock::willReleaseLock() and HeapTimer::timerDidFire() need to reference the VM
through a RefPtr.  Otherwise, there's no guarantee that the VM won't be deleted
after their null checks.

* bytecode/CodeBlock.h:
(JSC::CodeBlock::vm):
(JSC::CodeBlock::setVM): Deleted.
- Not used, and suggests that it can be changed during the lifetime of the
  CodeBlock (which should not be).

* heap/HeapTimer.cpp:
(JSC::HeapTimer::timerDidFire):
* runtime/JSLock.cpp:
(JSC::JSLock::willReleaseLock):
- Store the VM pointer in a RefPtr first, and null check the RefPtr instead of
  the raw VM pointer.  This makes the null check a strong guarantee that the
  VM pointer is valid while these functions are using it.

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

4 years agoWeb Inspector: REGRESSION: Search magnifying glass shifted in Search tab input field
timothy@apple.com [Thu, 19 May 2016 20:23:39 +0000 (20:23 +0000)]
Web Inspector: REGRESSION: Search magnifying glass shifted in Search tab input field
https://bugs.webkit.org/show_bug.cgi?id=157913
rdar://problem/26374424

Reviewed by Joseph Pecoraro.

* UserInterface/Views/SearchSidebarPanel.css:
(.sidebar > .panel.navigation.search > .search-bar > input[type="search"]): Removed padding-left.
(.sidebar > .panel.navigation.search > .search-bar > input[type="search"]::-webkit-search-results-button):
Added. Add margin-right here instead.

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

4 years agoWeb Inspector: Timelines "Edit" button should be right-aligned
timothy@apple.com [Thu, 19 May 2016 20:22:19 +0000 (20:22 +0000)]
Web Inspector: Timelines "Edit" button should be right-aligned
https://bugs.webkit.org/show_bug.cgi?id=157909
rdar://problem/26373969

Reviewed by Joseph Pecoraro.

* UserInterface/Views/ButtonNavigationItem.css:
(.navigation-bar .item.button.text-only): Deleted height: auto. Now inherited.
* UserInterface/Views/NavigationBar.css:
(.navigation-bar .item): Change height to auto to support any NavigationBar height.
This is needed since the Timelines tab has a shorter NavigationBar height, and
flexible items were overflowing.
* UserInterface/Views/TextNavigationItem.css:
(.navigation-bar .item.text): Deleted height: auto. Now inherited.
* UserInterface/Views/TimelineOverview.js:
(WebInspector.TimelineOverview): Add a FlexibleSpaceNavigationItem before the Edit button.

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

4 years agoarrow function lexical environment should reuse the same environment as the function...
sbarati@apple.com [Thu, 19 May 2016 20:09:47 +0000 (20:09 +0000)]
arrow function lexical environment should reuse the same environment as the function's lexical environment where possible
https://bugs.webkit.org/show_bug.cgi?id=157908

Reviewed by Filip Pizlo.

We can safely combine these two environment when we have
a simple parameter list (no default parameters, no destructring parameters).

* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::initializeDefaultParameterValuesAndSetupFunctionScopeStack):
(JSC::BytecodeGenerator::initializeArrowFunctionContextScopeIfNeeded):
* bytecompiler/BytecodeGenerator.h:

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

4 years agoTypo fix in import-test262-tests
ossy@webkit.org [Thu, 19 May 2016 19:15:35 +0000 (19:15 +0000)]
Typo fix in import-test262-tests
https://bugs.webkit.org/show_bug.cgi?id=157902

Reviewed by Keith Miller.

* Scripts/import-test262-tests:

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

4 years agoUpdate RenderBlockFlow::adjustComputedFontSizes() to use RenderObjectTraversal
cdumez@apple.com [Thu, 19 May 2016 19:09:41 +0000 (19:09 +0000)]
Update RenderBlockFlow::adjustComputedFontSizes() to use RenderObjectTraversal
https://bugs.webkit.org/show_bug.cgi?id=157784

Reviewed by Zalan Bujtas.

Update RenderBlockFlow::adjustComputedFontSizes() to use RenderObjectTraversal
instead of having its own Renderer tree traversal API, specifically for iOS
text autosizing.

* rendering/RenderBlockFlow.cpp:
(WebCore::isVisibleRenderText):
(WebCore::resizeTextPermitted):
(WebCore::isNonBlocksOrNonFixedHeightListItems):
(WebCore::RenderBlockFlow::adjustComputedFontSizes):
* rendering/RenderIterator.h:
(WebCore::RenderObjectTraversal::nextSkippingChildren):
* rendering/RenderObject.cpp:
(WebCore::RenderObject::traverseNext): Deleted.
(WebCore::RenderObject::enclosingBox): Deleted.
(WebCore::RenderObject::enclosingBoxModelObject): Deleted.
(WebCore::RenderObject::fixedPositionedWithNamedFlowContainingBlock): Deleted.
(WebCore::hasFixedPosInNamedFlowContainingBlock): Deleted.
(WebCore::RenderObject::firstLineBlock): Deleted.
(WebCore::objectIsRelayoutBoundary): Deleted.
* rendering/RenderObject.h:

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

4 years agoFix the build with GCC 4.9 in CSSParser.cpp
ossy@webkit.org [Thu, 19 May 2016 18:50:32 +0000 (18:50 +0000)]
Fix the build with GCC 4.9 in CSSParser.cpp
https://bugs.webkit.org/show_bug.cgi?id=157887

Reviewed by Chris Dumez.

* css/CSSParser.cpp:
(WebCore::CSSParser::createViewportRule):
* css/CSSParser.h:

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

4 years agoUnreviewed build fix.
msaboff@apple.com [Thu, 19 May 2016 18:39:04 +0000 (18:39 +0000)]
Unreviewed build fix.

Skipping this new test as it times out on the bots.

Issue tracked in https://bugs.webkit.org/show_bug.cgi?id=157903

* tests/stress/regress-157595.js:
(MyRegExp):

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

4 years agoWeb Inspector: timelines should not update via requestAnimationFrame unless Web Inspe...
bburg@apple.com [Thu, 19 May 2016 17:58:16 +0000 (17:58 +0000)]
Web Inspector: timelines should not update via requestAnimationFrame unless Web Inspector is visible
https://bugs.webkit.org/show_bug.cgi?id=157897
<rdar://problem/26330802>

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

The timelines overview tries to animate using requestAnimationFrame, even if the
inspector frontend is not really visible. When it does this, requestAnimationFrame
simply stalls out until the inspector becomes visible. If a recording is started
while the inspector is not visible, then when it is shown again, the timeline will
start to animate from 0s instead of the current time. This happens because the
requestAnimationFrame was requested when the current time actually was 0, and it
finally executes some time later, when the current time is no longer accurate.
Since the timelines animate by calculating time elapsed since the previous frame
rather than using event timestamps, there is no way for the timelines to skip forward
in their animations in scenarios where the current time becomes arbitrarily skewed.

To fix this, consider the visibility state of the frontend as reported by the UIProcess.
Fire a global notification when visibility state changes, and start or stop updating
the current time as the frontend becomes visible or not shown.

This does not affect most other uses of requestAnimationFrame, which are used as
timers to call updateLayout at an appropriate time. The timelines case is different
because the current time is fixed prior to requesting an animation frame, and
later animation frames are only triggered by earlier requests, so there's nothing to
coalesce.

* UserInterface/Base/Main.js:
(WebInspector.loaded): Initialize WebInspector.visible.

* UserInterface/Base/Object.js: Add new event.

* UserInterface/Protocol/InspectorFrontendAPI.js:
(InspectorFrontendAPI.setIsVisible): Added.

* UserInterface/Test/Test.js:
(WebInspector.updateVisibilityState): Add a stub.

* UserInterface/Views/TimelineRecordingContentView.js:
(WebInspector.TimelineRecordingContentView):
(WebInspector.TimelineRecordingContentView.prototype._inspectorVisibilityStateChanged):
If visibility state changes while capturing, then start or stop updating the
current time as appropriate. Otherwise, refresh the timelines with updated
times so that they know about the recording's updated start/current/end time.

(WebInspector.TimelineRecordingContentView.prototype._startUpdatingCurrentTime):
Bail out if the Web Inspector frontend is not visible to the user and won't be
able to service requestAnimationFrames immediately.

Source/WebKit2:

The UIProcess needs to notify the Inspector frontend when it is truly visible.
The frontend can't use document.visibilityState because it doesn't seem to work
if the inspector frontend's WKWebView is created but not attached to a window.

* UIProcess/WebInspectorProxy.cpp:
(WebKit::WebInspectorProxy::open):
(WebKit::WebInspectorProxy::didClose):
Send visibility updates to the inspector process when the inspector becomes
"visible" or "not visible". It becomes visible if it is attached to the
inspected page's window, or gets its own native window.

* WebProcess/WebPage/WebInspectorUI.cpp:
(WebKit::WebInspectorUI::frontendLoaded):
(WebKit::WebInspectorUI::setDockingUnavailable):
(WebKit::WebInspectorUI::setIsVisible):
Call InspectorFrontendAPI.updateVisibilityState to let the frontend know.

* WebProcess/WebPage/WebInspectorUI.h:
* WebProcess/WebPage/WebInspectorUI.messages.in:
Add new message.

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

4 years agoJSC: DFG::SpeculativeJIT::compile special case for MIPS for PutByValWithThis
commit-queue@webkit.org [Thu, 19 May 2016 17:27:11 +0000 (17:27 +0000)]
JSC: DFG::SpeculativeJIT::compile special case for MIPS for PutByValWithThis
https://bugs.webkit.org/show_bug.cgi?id=157741

Patch by Guillaume Emont <guijemont@igalia.com> on 2016-05-19
Reviewed by Saam Barati.

The PutByValWithThis case needs a special case for MIPS because we
don't have enough registers. The special case needs to be different
from the x86 one because we have a different ABI.

* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):

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

4 years ago[EFL] Fix the gst-libav build on ARM Thumb2 after r199649
ossy@webkit.org [Thu, 19 May 2016 17:11:12 +0000 (17:11 +0000)]
[EFL] Fix the gst-libav build on ARM Thumb2 after r199649
https://bugs.webkit.org/show_bug.cgi?id=157893

Reviewed by Antonio Gomes.

* efl/patches/gst-libav.patch:

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

4 years agoWeb Inspector: use a consistent prefix for injected scripts
bburg@apple.com [Thu, 19 May 2016 16:48:31 +0000 (16:48 +0000)]
Web Inspector: use a consistent prefix for injected scripts
https://bugs.webkit.org/show_bug.cgi?id=157715
<rdar://problem/26287188>

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

* CMakeLists.txt:
* DerivedSources.make:
* inspector/InjectedScriptSource.js:

Source/WebCore:

* CMakeLists.txt:
* DerivedSources.make:
* inspector/CommandLineAPIModuleSource.js:

Source/WebKit2:

* CMakeLists.txt:
* DerivedSources.make:
* WebProcess/Automation/WebAutomationSessionProxy.js:

LayoutTests:

Update how inspector tests check sourceURLs for internal scripts.

* inspector/debugger/scriptParsed.html:
* inspector/debugger/sourceURLs.html:

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

4 years agoPlayback controls should not be active for muted media elements.
jer.noble@apple.com [Thu, 19 May 2016 16:22:35 +0000 (16:22 +0000)]
Playback controls should not be active for muted media elements.
https://bugs.webkit.org/show_bug.cgi?id=157876
<rdar://problem/26007525>

Reviewed by Eric Carlson.

Consolidate calls to setUpPlaybackControlsManager() and clearUpPlaybackControlsManager()
into a new method, updatePlaybackControlsManager(), which checks with the MediaElementSession
whether the media element can currently control the playback controls manager, and call
one or the other method conditionally.

That means more logic needs to be moved into MediaElementSession::canControlControlsManager(),
such as whether the element is muted(), has ended(), or whether the element's document has
been suspended.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::~HTMLMediaElement):
(WebCore::HTMLMediaElement::setMuted):
(WebCore::HTMLMediaElement::updatePlayState):
(WebCore::HTMLMediaElement::clearMediaPlayer):
(WebCore::HTMLMediaElement::stopWithoutDestroyingMediaPlayer):
(WebCore::HTMLMediaElement::createMediaPlayer):
(WebCore::HTMLMediaElement::updatePlaybackControlsManager):
* html/HTMLMediaElement.h:
* html/MediaElementSession.cpp:
(WebCore::MediaElementSession::canControlControlsManager):

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

4 years agoKill JSDOMBindings' createNewWrapper()
cdumez@apple.com [Thu, 19 May 2016 16:11:52 +0000 (16:11 +0000)]
Kill JSDOMBindings' createNewWrapper()
https://bugs.webkit.org/show_bug.cgi?id=157842

Reviewed by Youenn Fablet.

Kill JSDOMBindings' createNewWrapper() as it is identical to createWrapper().

* bindings/js/JSDOMBinding.h:
(WebCore::createNewWrapper): Deleted.
* bindings/js/JSDocumentFragmentCustom.cpp:
(WebCore::toJSNewlyCreated):
* bindings/js/JSNodeListCustom.cpp:
(WebCore::createWrapper):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation):
* bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
(WebCore::toJSNewlyCreated):
* bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
(WebCore::toJSNewlyCreated):
* bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:
(WebCore::toJSNewlyCreated):
* bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:
(WebCore::toJSNewlyCreated):
* bindings/scripts/test/JS/JSTestEventConstructor.cpp:
(WebCore::toJSNewlyCreated):
* bindings/scripts/test/JS/JSTestEventTarget.cpp:
(WebCore::toJSNewlyCreated):
* bindings/scripts/test/JS/JSTestException.cpp:
(WebCore::toJSNewlyCreated):
* bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
(WebCore::toJSNewlyCreated):
* bindings/scripts/test/JS/JSTestGlobalObject.cpp:
(WebCore::toJSNewlyCreated):
* bindings/scripts/test/JS/JSTestInterface.cpp:
(WebCore::toJSNewlyCreated):
* bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
(WebCore::toJSNewlyCreated):
* bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
(WebCore::toJSNewlyCreated):
* bindings/scripts/test/JS/JSTestNode.cpp:
(WebCore::toJSNewlyCreated):
* bindings/scripts/test/JS/JSTestNondeterministic.cpp:
(WebCore::toJSNewlyCreated):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::toJSNewlyCreated):
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
(WebCore::toJSNewlyCreated):
* bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
(WebCore::toJSNewlyCreated):
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
(WebCore::toJSNewlyCreated):
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::toJSNewlyCreated):
* bindings/scripts/test/JS/JSattribute.cpp:
(WebCore::toJSNewlyCreated):
* bindings/scripts/test/JS/JSreadonly.cpp:
(WebCore::toJSNewlyCreated):

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

4 years agoREGRESSION(r200951): VideoControlsManager API tests time out
jer.noble@apple.com [Thu, 19 May 2016 16:07:02 +0000 (16:07 +0000)]
REGRESSION(r200951): VideoControlsManager API tests time out
https://bugs.webkit.org/show_bug.cgi?id=157896
<rdar://problem/26326293>

Reviewed by Eric Carlson.

Explicitly disable user gesture requirements for playback.

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

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

4 years agoPlayback controls still valid after navigating back after watching YouTube video.
jer.noble@apple.com [Thu, 19 May 2016 16:03:21 +0000 (16:03 +0000)]
Playback controls still valid after navigating back after watching YouTube video.
https://bugs.webkit.org/show_bug.cgi?id=157874
<rdar://problem/25993063>

Reviewed by Eric Carlson.

YouTube uses window.onpopstate to "navigate" backwards from a video page to the main page
(or other video page). This causes the playback controls to not be cleared (since no
navigation actually occured). Instead, clear the playback controls when we clear our
MediaPlayer due to load() being called, when the src= attribute is changed, or when a
<source> element is added to the <video>.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::clearMediaPlayer):
(WebCore::HTMLMediaElement::createMediaPlayer):

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

4 years ago[GStreamer] unrelated codecs required to play videos
philn@webkit.org [Thu, 19 May 2016 14:33:34 +0000 (14:33 +0000)]
[GStreamer] unrelated codecs required to play videos
https://bugs.webkit.org/show_bug.cgi?id=135972

Reviewed by Michael Catanzaro.

Instead of hard-coding the list of supported mime-types, check the
decoder and demuxer GStreamer elements available and dynamically
build the list of mime-types accordingly. This patch also removes
support for under-used and exotic mime-types.

Based on a patch by Mario Sanchez Prada.

No new tests, existing media tests cover this change.

* platform/graphics/gstreamer/GStreamerUtilities.cpp:
(WebCore::gstRegistryHasElementForMediaType): New function
checking the elements registered in the factories have a sink pad
matching the caps specified as second argument of the function.
* platform/graphics/gstreamer/GStreamerUtilities.h:
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::mimeTypeSet): Hard-coded list of mime-types replaced by
runtime-built list of mime-types that can be supported by the
GStreamer decoders and demuxers available on the host machine.
(WebCore::MediaPlayerPrivateGStreamer::getSupportedTypes):
mimeTypeCache renamed to mimeTypeSet.
(WebCore::MediaPlayerPrivateGStreamer::supportsType): Ditto.

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

4 years ago[ARM] Fix Wformat warning in MemoryPressureHandler.cpp
ossy@webkit.org [Thu, 19 May 2016 14:19:53 +0000 (14:19 +0000)]
[ARM] Fix Wformat warning in MemoryPressureHandler.cpp
https://bugs.webkit.org/show_bug.cgi?id=157892

Reviewed by Michael Saboff.

* platform/MemoryPressureHandler.cpp:
(WebCore::MemoryPressureHandler::ReliefLogger::logMemoryUsageChange):

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

4 years ago[ARM] Remove redefined macro after r200606
ossy@webkit.org [Thu, 19 May 2016 14:19:12 +0000 (14:19 +0000)]
[ARM] Remove redefined macro after r200606
https://bugs.webkit.org/show_bug.cgi?id=157890

Reviewed by Michael Saboff.

* bytecode/PolymorphicAccess.cpp:
* jit/CCallHelpers.h:

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

4 years agoRemove castDOMMobjectForWrapperCreation(T&)
youenn.fablet@crf.canon.fr [Thu, 19 May 2016 14:15:09 +0000 (14:15 +0000)]
Remove castDOMMobjectForWrapperCreation(T&)
https://bugs.webkit.org/show_bug.cgi?id=157886

Reviewed by Andreas Kling.

No change of behavior.

* bindings/js/JSDOMBinding.h:
(WebCore::castDOMObjectForWrapperCreation): Deleted.

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

4 years agoStyle resolution for explicitly inherited properties is inefficient
antti@apple.com [Thu, 19 May 2016 13:22:18 +0000 (13:22 +0000)]
Style resolution for explicitly inherited properties is inefficient
https://bugs.webkit.org/show_bug.cgi?id=157860

Reviewed by Andreas Kling.

Source/WebCore:

We mark the parent style with hasExplicitlyInheritedProperties bit rather than the style that is actually
affected by inherited properties. This leads to various inefficiencies including unnecessarily wide style recalcs.

* css/StyleResolver.cpp:
(WebCore::isCacheableInMatchedPropertiesCache):

    Check the style itself rather than the parent. This allows more caching.

(WebCore::StyleResolver::applyProperty):

    Mark the style rather than the parent.

* style/StyleChange.cpp:
(WebCore::Style::determineChange):

    Remove hasExplicitlyInheritedProperties test and just return NoInherit. Having explicitly inherited
    properties doesn't make the children inherit them automatically.

    This allows smaller style recalcs.

* style/StyleTreeResolver.cpp:
(WebCore::Style::TreeResolver::resolveElement):

    This patch exposed a bug with appearance property in meter and progress elements.
    They may construct different renderer based on appearance so we need to force
    render tree reconstruction when it changes.

(WebCore::Style::TreeResolver::popParentsToDepth):
(WebCore::Style::shouldResolvePseudoElement):

    Don't clear the style recalc bits here.

(WebCore::Style::shouldResolveElement):

    Add a helper.
    If the parent had a NoInherit style change, test if the element has existing style with
    hasExplicitlyInheritedProperties bit. If so we need to re-resolve this element.

(WebCore::Style::clearNeedsStyleResolution):

    Also clear pseudo elements.

(WebCore::Style::TreeResolver::resolveComposedTree):

LayoutTests:

* platform/ios-simulator/fast/dom/HTMLProgressElement/progress-bar-value-pseudo-element-expected.txt:
* platform/mac/fast/dom/HTMLProgressElement/progress-bar-value-pseudo-element-expected.txt:

This is a progression.

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

4 years agoSlow JSC stress tests times out in 32 bit debug mode
ossy@webkit.org [Thu, 19 May 2016 12:03:16 +0000 (12:03 +0000)]
Slow JSC stress tests times out in 32 bit debug mode
https://bugs.webkit.org/show_bug.cgi?id=154964

Reviewed by Michael Catanzaro.

* Scripts/run-javascriptcore-tests:
(runJSCStressTests): Pass through the --debug option.
* Scripts/run-jsc-stress-tests: Increase the timeout for debug builds.

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

4 years agoREGRESSION (r200887): LayoutTest http/tests/performance/performance-resource-timing...
yoav@yoav.ws [Thu, 19 May 2016 08:08:30 +0000 (08:08 +0000)]
REGRESSION (r200887): LayoutTest http/tests/performance/performance-resource-timing-cached-entries.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=157816

Reviewed by Alexey Proskuryakov.

Mark the test as flaky, and add console logs to try to figure out the cause for flakiness.

* TestExpectations: Mark the test as flaky.
* http/tests/performance/performance-resource-timing-cached-entries.html: Add prints to better identify the flakiness root cause.

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

4 years agoRefactor toJS functions to use toJSNewlyCreated
youenn.fablet@crf.canon.fr [Thu, 19 May 2016 07:32:48 +0000 (07:32 +0000)]
Refactor toJS functions to use toJSNewlyCreated
https://bugs.webkit.org/show_bug.cgi?id=157835

Reviewed by Chris Dumez.

Moving checks generated by binding generator from toJS to toJSNewlyCreated.
Changing wrap template function to use toJSNewlyCreated function.
This allows DOMClass toJS() to be equivalent to wrap template function.

Refactored custom binding code to take benefit of this.

Covered by existing tests.

* bindings/js/JSAnimationTimelineCustom.cpp:
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
* bindings/js/JSBlobCustom.cpp:
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
* bindings/js/JSCSSRuleCustom.cpp:
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
* bindings/js/JSCSSValueCustom.cpp:
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
* bindings/js/JSCanvasRenderingContextCustom.cpp:
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
* bindings/js/JSDOMBinding.h:
(WebCore::wrap):
(WebCore::toJS):
* bindings/js/JSDocumentCustom.cpp:
(WebCore::toJS):
(WebCore::cachedDocumentWrapper): Deleted.
* bindings/js/JSDocumentFragmentCustom.cpp:
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
* bindings/js/JSEventCustom.cpp:
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
* bindings/js/JSHTMLCollectionCustom.cpp:
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
* bindings/js/JSHTMLDocumentCustom.cpp:
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
* bindings/js/JSHTMLTemplateElementCustom.cpp:
(WebCore::JSHTMLTemplateElement::content):
* bindings/js/JSIDBCursorCustom.cpp:
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
* bindings/js/JSImageDataCustom.cpp:
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
* bindings/js/JSMediaStreamCapabilitiesCustom.cpp:
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
* bindings/js/JSNodeListCustom.h:
(WebCore::toJS):
* bindings/js/JSPerformanceEntryCustom.cpp:
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
* bindings/js/JSSVGPathSegCustom.cpp:
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
* bindings/js/JSStyleSheetCustom.cpp:
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
* bindings/js/JSTextCustom.cpp:
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
* bindings/js/JSTextTrackCueCustom.cpp:
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
* bindings/js/JSTrackCustom.cpp:
(WebCore::toJS):
* bindings/js/JSXMLDocumentCustom.cpp:
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation):
* bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
* bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
* bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:
* bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:
* bindings/scripts/test/JS/JSTestEventConstructor.cpp:
* bindings/scripts/test/JS/JSTestEventTarget.cpp:
* bindings/scripts/test/JS/JSTestException.cpp:
* bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
* bindings/scripts/test/JS/JSTestGlobalObject.cpp:
* bindings/scripts/test/JS/JSTestInterface.cpp:
* bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
* bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
* bindings/scripts/test/JS/JSTestNondeterministic.cpp:
* bindings/scripts/test/JS/JSTestObj.cpp:
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
* bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
* bindings/scripts/test/JS/JSattribute.cpp:
* bindings/scripts/test/JS/JSreadonly.cpp:

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

4 years agoMake binding DOM constructor use toJSNewlyCreated instead of toJS
youenn.fablet@crf.canon.fr [Thu, 19 May 2016 07:14:45 +0000 (07:14 +0000)]
Make binding DOM constructor use toJSNewlyCreated instead of toJS
https://bugs.webkit.org/show_bug.cgi?id=157832

Reviewed by Chris Dumez.

Using toJSNewlyCreated in generated constructors instead of toJS.
Enabling generation of toJS and toJSNewlyCreated for constructable DOM objects.
This ensures that toJSNewlyCreated call in constructor will compile properly.

Updating some custom code to implement toJSNewlyCreated.

Covered by existing tests.

* bindings/js/JSImageDataCustom.cpp:
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
* bindings/js/JSTextTrackCueCustom.cpp:
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
* bindings/scripts/CodeGeneratorJS.pm:
(ShouldGenerateToJSDeclaration):
(GenerateConstructorDefinition):
* bindings/scripts/test/JS/JSTestInterface.cpp:
(WebCore::JSTestInterfaceConstructor::construct):
* bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
(WebCore::JSTestNamedConstructorNamedConstructor::construct):
* bindings/scripts/test/JS/JSTestNode.cpp:
(WebCore::JSTestNodeConstructor::construct):
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
* bindings/scripts/test/JS/JSTestNode.h:
(WebCore::toJS):
(WebCore::toJSNewlyCreated):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::JSTestObjConstructor::construct):
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
(WebCore::constructJSTestOverloadedConstructors1):
(WebCore::constructJSTestOverloadedConstructors2):
(WebCore::constructJSTestOverloadedConstructors3):
(WebCore::constructJSTestOverloadedConstructors4):
(WebCore::constructJSTestOverloadedConstructors5):
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::JSTestTypedefsConstructor::construct):

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

4 years agoPerf dashboard "Add pane" should list first by test, then by machine
rniwa@webkit.org [Thu, 19 May 2016 05:20:03 +0000 (05:20 +0000)]
Perf dashboard "Add pane" should list first by test, then by machine
https://bugs.webkit.org/show_bug.cgi?id=157880

Reviewed by Stephanie Lewis.

Reversed the order which tests and platforms are selected. Also split .pane-selector-container into #tests and
#platform for the ease of DOM node manipulations.

* public/v3/components/pane-selector.js:
(PaneSelector):
(PaneSelector.prototype._renderPlatformList): Renamed from _renderPlatformLists since there is a single list
for platforms. This list now disappears while a non-metric item is selected in the collection of test lists.
e.g. "Speedometer" instead of its "Score" metric. Remember the last metric we rendered to avoid churning.
(PaneSelector.prototype._renderTestLists): Render the top level tests once. The index of lists have been
decreased by one since test lists are now inside #tests instead of appearing after the platform list.
(PaneSelector.prototype._buildTestList): Don't filter tests since platform is chosen after tests now.
(PaneSelector.prototype._replaceList):
(PaneSelector.prototype._selectedItem): Don't reset the test path (specifies which subtest or metric is picked)
when a platform is selected since it happens after a test metric is chosen now.
(PaneSelector.prototype._clickedItem): Add a pane when a platform is clicked, not when a metric is clicked.
(PaneSelector.cssTemplate):

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

4 years agoWeb Inspector: Classes toggle wraps in some localizations
timothy@apple.com [Thu, 19 May 2016 04:57:41 +0000 (04:57 +0000)]
Web Inspector: Classes toggle wraps in some localizations
https://bugs.webkit.org/show_bug.cgi?id=157878
rdar://problem/26108859

Reviewed by Brian Burg.

* UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
(.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle):
Add white-space: nowrap.

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

4 years agoWeb Inspector: unable to switch between navigation tree outlines using up/down arrow...
mattbaker@apple.com [Thu, 19 May 2016 03:21:05 +0000 (03:21 +0000)]
Web Inspector: unable to switch between navigation tree outlines using up/down arrow keys
https://bugs.webkit.org/show_bug.cgi?id=157713
<rdar://problem/26287086>

Reviewed by Timothy Hatcher.

* UserInterface/Views/NavigationSidebarPanel.js:
(WebInspector.NavigationSidebarPanel.prototype.createContentTreeOutline):
Listen for TreeOutline focus changes, and associate trees and their DOM
elements for quick lookup when handling focus events.

(WebInspector.NavigationSidebarPanel.prototype._contentTreeOutlineDidFocus):
(WebInspector.NavigationSidebarPanel.prototype._contentTreeOutlineTreeSelectionDidChange):
When selecting a tree element causes an element in a different tree outline
to be deselected, remember the old selection so that it can be restored
the next time the tree outline get the focus.

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

4 years agoMake LayoutUnit::operator bool() explicit.
zalan@apple.com [Thu, 19 May 2016 03:11:41 +0000 (03:11 +0000)]
Make LayoutUnit::operator bool() explicit.
https://bugs.webkit.org/show_bug.cgi?id=157871

Reviewed by Simon Fraser.

This is in preparation for getting LayoutUnit::operator int() removed.

No behaviour change.

* platform/LayoutUnit.h:
(WebCore::LayoutUnit::operator bool):
* rendering/RenderView.cpp:
(WebCore::RenderView::initializeLayoutState): Negative page height is invalid.

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

4 years agoAnalysis task should look for a git commit based on abridged hashes
rniwa@webkit.org [Thu, 19 May 2016 02:39:54 +0000 (02:39 +0000)]
Analysis task should look for a git commit based on abridged hashes
https://bugs.webkit.org/show_bug.cgi?id=157877
<rdar://problem/26254374>

Reviewed by Chris Dumez.

Made /privileged-api/associate-commit look for commits using LIKE instead of an exact match.
Associate the commit when there is exactly one match.

* public/include/commit-log-fetcher.php:
(CommitLogFetcher::fetch_between):
* public/include/db.php:
(Database::escape_for_like): Extracted from CommitLogFetcher::fetch_between.
* public/privileged-api/associate-commit.php:
(main): Look for the commits using LIKE. Reject whenever there are multiple commits. We limit the number of
matches to two for performance when the user specifies something that almost thousands of commits: e.g. "1".
* public/v3/pages/analysis-task-page.js:
(AnalysisTaskPage.prototype._associateCommit): Added human friendly error messages for mismatching commits.

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

4 years agoFunction with default parameter values that are arrow functions that capture this...
sbarati@apple.com [Thu, 19 May 2016 01:27:49 +0000 (01:27 +0000)]
Function with default parameter values that are arrow functions that capture this isn't working
https://bugs.webkit.org/show_bug.cgi?id=157786
<rdar://problem/26327329>

Reviewed by Geoffrey Garen.

To make the scopes ordered properly, I needed to initialize the arrow
function lexical environment before initializing default parameter values.
I also made the code easier to reason about by never reusing the function's
var lexical environment for the arrow function lexical environment. The
reason for this is that that code was wrong, and we just didn't have code to
that properly tested it. It was easy for that code to be wrong because
sometimes the function's lexical environment isn't the top-most scope
(namely, when a function's parameter list is non-simple) and sometimes
it is (when the function's parameter list is simple).

Also, because a function's default parameter values may capture the
'arguments' variable inside an arrow function, I needed to take care
to initialize the 'arguments' variable as part of whichever scope
is the top-most scope. It's either the function's var environment
if the parameter list is simple, or it's the function's parameter
environment if the parameter list is non-simple.

* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::initializeDefaultParameterValuesAndSetupFunctionScopeStack):
(JSC::BytecodeGenerator::initializeArrowFunctionContextScopeIfNeeded):
(JSC::BytecodeGenerator::initializeParameters):
(JSC::BytecodeGenerator::initializeVarLexicalEnvironment):
(JSC::BytecodeGenerator::visibleNameForParameter):
* bytecompiler/BytecodeGenerator.h:
* tests/stress/arrow-functions-as-default-parameter-values.js: Added.
(assert):
(test):
(test.foo):
* tests/stress/op-push-name-scope-crashes-profiler.js:
(test):

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

4 years agoStringBuilder::appendQuotedJSONString doesn't properly protect against the math it...
sbarati@apple.com [Thu, 19 May 2016 01:01:21 +0000 (01:01 +0000)]
StringBuilder::appendQuotedJSONString doesn't properly protect against the math it's doing. Make the math fit the assertion.
https://bugs.webkit.org/show_bug.cgi?id=157868

Reviewed by Benjamin Poulain.

appendQuotedJSONString was rounding up to the next power of two when resizing
its buffer. Lets call the allocation size X. If X > 2^31, then
roundUpToPowerOfTwo(X) == 0. This patch fixes this by making the
assertion reflect what the code is doing. We now allocate to a size
of X = std::max(maximumCapacityRequired , roundUpToPowerOfTwo(maximumCapacityRequired))

* wtf/text/StringBuilder.cpp:
(WTF::StringBuilder::appendQuotedJSONString):

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

4 years agoUnreviewed build fix. Use --date-order so that every child commit appears after its...
rniwa@webkit.org [Thu, 19 May 2016 00:45:16 +0000 (00:45 +0000)]
Unreviewed build fix. Use --date-order so that every child commit appears after its parent.
Otherwise we'll hit a FailedToFindParentCommit error while submitting a commit that appears before its parent.

* tools/sync-commits.py:
(GitRepository._fetch_all_hashes):

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

4 years ago[iOS] Fullscreen video playback broken in WK1 apps
eric.carlson@apple.com [Thu, 19 May 2016 00:20:26 +0000 (00:20 +0000)]
[iOS] Fullscreen video playback broken in WK1 apps
https://bugs.webkit.org/show_bug.cgi?id=157847
<rdar://problem/25879521>

Reviewed by Jer Noble.

* platform/cocoa/WebVideoFullscreenModelVideoElement.h:
(WebCore::WebVideoFullscreenModelVideoElement::playbackSessionModel): New, model accessor.
* platform/cocoa/WebVideoFullscreenModelVideoElement.mm:
(WebVideoFullscreenModelVideoElement::setWebVideoFullscreenInterface): Set model's playback interface.
(WebVideoFullscreenModelVideoElement::setVideoElement): Set model's video element.

* platform/ios/WebVideoFullscreenControllerAVKit.mm:
(WebVideoFullscreenControllerContext::didCleanupFullscreen): Clear m_sessionModel.
(WebVideoFullscreenControllerContext::setVideoDimensions): This is called from both the UI and
  Web threads, so dispatch to the UI thread when necessary.
(WebVideoFullscreenControllerContext::play): Call the model's playback session on the Web thread.
(WebVideoFullscreenControllerContext::pause): Ditto.
(WebVideoFullscreenControllerContext::togglePlayState): Ditto.
(WebVideoFullscreenControllerContext::beginScrubbing): Ditto.
(WebVideoFullscreenControllerContext::endScrubbing): Ditto.
(WebVideoFullscreenControllerContext::seekToTime): Ditto.
(WebVideoFullscreenControllerContext::fastSeek): Ditto.
(WebVideoFullscreenControllerContext::beginScanningForward): Ditto.
(WebVideoFullscreenControllerContext::beginScanningBackward): Ditto.
(WebVideoFullscreenControllerContext::endScanning): Ditto.
(WebVideoFullscreenControllerContext::selectAudioMediaOption): Ditto.
(WebVideoFullscreenControllerContext::selectLegibleMediaOption): Ditto.
(WebVideoFullscreenControllerContext::setUpFullscreen): Create and configure a session model.
(WebVideoFullscreenSessionModel::play): Pass call back to the controller.
(WebVideoFullscreenSessionModel::pause): Ditto.
(WebVideoFullscreenSessionModel::togglePlayState): Ditto.
(WebVideoFullscreenSessionModel::beginScrubbing): Ditto.
(WebVideoFullscreenSessionModel::endScrubbing): Ditto.
(WebVideoFullscreenSessionModel::seekToTime): Ditto.
(WebVideoFullscreenSessionModel::fastSeek): Ditto.
(WebVideoFullscreenSessionModel::beginScanningForward): Ditto.
(WebVideoFullscreenSessionModel::beginScanningBackward): Ditto.
(WebVideoFullscreenSessionModel::endScanning): Ditto.
(WebVideoFullscreenSessionModel::selectAudioMediaOption): Ditto.
(WebVideoFullscreenSessionModel::selectLegibleMediaOption): Ditto.

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

4 years agoAdd WKPreferencesRef getter/setter pair to set RTL mode
andersca@apple.com [Thu, 19 May 2016 00:04:48 +0000 (00:04 +0000)]
Add WKPreferencesRef getter/setter pair to set RTL mode
https://bugs.webkit.org/show_bug.cgi?id=157873
rdar://problem/26329970

Reviewed by Tim Horton.

* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetUserInterfaceDirectionPolicy):
(WKPreferencesGetUserInterfaceDirectionPolicy):
* UIProcess/API/C/WKPreferencesRef.h:

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

4 years agoRemove underline from Status Bubbles on dashboard
aakash_jain@apple.com [Wed, 18 May 2016 23:55:25 +0000 (23:55 +0000)]
Remove underline from Status Bubbles on dashboard
https://bugs.webkit.org/show_bug.cgi?id=157870
rdar://problem/26332321

Reviewed by Alexey Proskuryakov.

* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Styles/Main.css: Reverted style
change made in http://trac.webkit.org/r200880

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

4 years agoRemoved the erroneously committed debug code.
rniwa@webkit.org [Wed, 18 May 2016 23:49:50 +0000 (23:49 +0000)]
Removed the erroneously committed debug code.

* tools/sync-commits.py:
(GitRepository.fetch_commit):

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

4 years agoPerf dashboard should have a script to sync git commits
rniwa@webkit.org [Wed, 18 May 2016 23:42:39 +0000 (23:42 +0000)]
Perf dashboard should have a script to sync git commits
https://bugs.webkit.org/show_bug.cgi?id=157867

Reviewed by Chris Dumez.

Added the support to pull from a Git repo to pull-svn.py and renamed it to sync-commits.py.

Added two classes SVNRepository and GitRepository which inherits from an abstract class, Repository.
The code that fetches commit and format revision number / git hash is specialized in each.

* Install.md:
* tools/pull-svn.py: Removed.
* tools/sync-commits.py: Renamed from Websites/perf.webkit.org/tools/pull-svn.py.
(main): Renamed --svn-config-json to --repository-config-json. Also made it robust against exceptions
inside fetch_commits_and_submit of each Repository class.
(load_repository): A factory function for SVNRepository and GitRepository.
(Repository): Added.
(Repository.__init__): Added.
(Repository.fetch_commits_and_submit): Extracted from standalone fetch_commits_and_submit.
(Repository.fetch_commit): Added. Implemented by a subclass.
(Repository.format_revision): Ditto.
(Repository.determine_last_reported_revision): Extracted from alonealone
determine_first_revision_to_fetch. The fallback to use "oldest" has been moved to SVNRepository's
fetch_commit since it doesn't work in Git.
(Repository.fetch_revision_from_dasbhoard): Extracted from fetch_revision_from_dasbhoard.
(SVNRepository): Added.
(SVNRepository.__init__): Added.
(SVNRepository.fetch_commit): Extracted from standalone fetch_commit_and_resolve_author and fetch_commit.
(SVNRepository._resolve_author_name): Renamed from resolve_author_name_from_account.
(SVNRepository.format_revision): Added.
(GitRepository): Added.
(GitRepository.__init__):
(GitRepository.fetch_commit): Added. Fetches the list of all git hashes if needed, and finds the next hash.
(GitRepository._find_next_hash): Added. Finds the first commit that appears after the specified hash.
(GitRepository._fetch_all_hashes): Added. Gets the list of all git hashs chronologically (old to new).
(GitRepository._run_git_command): Added.
(GitRepository.format_revision): Added. Use the first 8 characters of the hash.

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

4 years agoRemove LayoutUnit::operator unsigned().
zalan@apple.com [Wed, 18 May 2016 23:25:47 +0000 (23:25 +0000)]
Remove LayoutUnit::operator unsigned().
https://bugs.webkit.org/show_bug.cgi?id=157856

Reviewed by Simon Fraser.

Converting LayoutUnit values to unsigned is lossy. We should avoid
such implicit conversions.

No behaviour change.

* html/ImageInputType.cpp:
(WebCore::ImageInputType::height):
(WebCore::ImageInputType::width):
* page/EventHandler.cpp:
(WebCore::EventHandler::hitTestResultAtPoint):
* platform/LayoutUnit.h:
(WebCore::LayoutUnit::operator unsigned): Deleted.
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::computeColumnCountAndWidth):

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

4 years agoClean up CSS code
achristensen@apple.com [Wed, 18 May 2016 23:09:09 +0000 (23:09 +0000)]
Clean up CSS code
https://bugs.webkit.org/show_bug.cgi?id=157808

Reviewed by Chris Dumez.

Source/WebCore:

No new tests. Just cleaning up and modernizing code.

* css/BasicShapeFunctions.cpp:
(WebCore::convertToCenterCoordinate):
(WebCore::cssValueToBasicShapeRadius):
(WebCore::basicShapeForValue):
* css/BasicShapeFunctions.h:
* css/CSSAnimationTriggerScrollValue.h:
(WebCore::CSSAnimationTriggerScrollValue::create):
(WebCore::CSSAnimationTriggerScrollValue::startValue):
(WebCore::CSSAnimationTriggerScrollValue::CSSAnimationTriggerScrollValue):
* css/CSSAspectRatioValue.h:
* css/CSSBasicShapes.h:
* css/CSSBorderImage.cpp:
(WebCore::createBorderImageValue):
* css/CSSBorderImage.h:
* css/CSSBorderImageSliceValue.h:
(WebCore::CSSBorderImageSliceValue::create):
* css/CSSCalculationValue.h:
* css/CSSCanvasValue.h:
(WebCore::CSSCanvasValue::CSSCanvasValue):
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::valueForNinePieceImageSlice):
(WebCore::valueForNinePieceImageQuad):
(WebCore::valueForNinePieceImage):
(WebCore::zoomAdjustedPixelValue):
* css/CSSComputedStyleDeclaration.h:
* css/CSSFontFaceLoadEvent.cpp:
(WebCore::CSSFontFaceLoadEvent::CSSFontFaceLoadEvent):
* css/CSSFontFaceLoadEvent.h:
* css/CSSFontValue.h:
* css/CSSFunctionValue.h:
* css/CSSGradientValue.h:
(WebCore::CSSGradientValue::setFirstX):
(WebCore::CSSGradientValue::setFirstY):
(WebCore::CSSGradientValue::setSecondX):
(WebCore::CSSGradientValue::setSecondY):
(WebCore::CSSGradientValue::addStop):
(WebCore::CSSLinearGradientValue::create):
(WebCore::CSSLinearGradientValue::setAngle):
(WebCore::CSSRadialGradientValue::setFirstRadius):
(WebCore::CSSRadialGradientValue::setSecondRadius):
(WebCore::CSSRadialGradientValue::setShape):
(WebCore::CSSRadialGradientValue::setSizingBehavior):
(WebCore::CSSRadialGradientValue::setEndHorizontalSize):
(WebCore::CSSRadialGradientValue::setEndVerticalSize):
* css/CSSGroupingRule.cpp:
(WebCore::CSSGroupingRule::item):
(WebCore::CSSGroupingRule::cssRules):
* css/CSSKeyframesRule.cpp:
(WebCore::CSSKeyframesRule::cssRules):
* css/CSSParser.cpp:
(WebCore::CSSParser::addProperty):
(WebCore::CSSParser::rollbackLastProperties):
(WebCore::CSSParser::parseDashboardRegions):
(WebCore::CSSParser::parseClipShape):
(WebCore::CSSParser::parseBasicShapeCircle):
(WebCore::BorderImageParseContext::commitWebKitBorderImage):
(WebCore::BorderImageParseContext::commitBorderImage):
(WebCore::BorderImageSliceParseContext::commitBorderImageSlice):
(WebCore::BorderImageQuadParseContext::commitBorderImageQuad):
(WebCore::CSSParser::parseDeprecatedRadialGradient):
(WebCore::CSSParser::parseRadialGradient):
* css/CSSParser.h:
(WebCore::cssyylex):
* css/CSSPrimitiveValue.h:
* css/CSSProperty.cpp:
* css/CSSProperty.h:
(WebCore::CSSProperty::CSSProperty):
* css/CSSRule.h:
* css/CSSRuleList.h:
* css/CSSSegmentedFontFace.h:
* css/Counter.h:
(WebCore::Counter::create):
(WebCore::Counter::identifier):
(WebCore::Counter::listStyleIdent):
(WebCore::Counter::setIdentifier):
(WebCore::Counter::setListStyle):
(WebCore::Counter::setSeparator):
(WebCore::Counter::equals):
(WebCore::Counter::cloneForCSSOM):
(WebCore::Counter::Counter):
* css/Pair.h:
* css/Rect.h:
(WebCore::RectBase::bottom):
(WebCore::RectBase::left):
(WebCore::RectBase::setTop):
(WebCore::RectBase::setRight):
(WebCore::RectBase::setBottom):
(WebCore::RectBase::setLeft):
(WebCore::RectBase::equals):
* css/SVGCSSComputedStyleDeclaration.cpp:
(WebCore::strokeDashArrayToCSSValueList):
(WebCore::ComputedStyleExtractor::adjustSVGPaintForCurrentColor):
* css/StyleBuilderConverter.h:
(WebCore::StyleBuilderConverter::convertClipPath):
(WebCore::StyleBuilderConverter::convertShapeValue):
* css/StyleProperties.cpp:
(WebCore::StyleProperties::borderPropertyValue):
(WebCore::StyleProperties::getPropertyCSSValue):
(WebCore::StyleProperties::getPropertyCSSValueInternal):
(WebCore::MutableStyleProperties::setCustomProperty):
(WebCore::MutableStyleProperties::setProperty):
* css/StyleProperties.h:
(WebCore::StyleProperties::isEmpty):
(isType):
* css/StylePropertyShorthand.cpp:
* css/StylePropertyShorthand.h:
(WebCore::StylePropertyShorthand::StylePropertyShorthand):
(WebCore::StylePropertyShorthand::id):
* css/StyleResolver.cpp:
(WebCore::StyleResolver::appendAuthorStyleSheets):
(WebCore::StyleResolver::addKeyframeStyle):
(WebCore::StyleResolver::~StyleResolver):
(WebCore::StyleResolver::resolvedVariableValue):
(WebCore::StyleResolver::styleImage):
(WebCore::StyleResolver::cachedOrPendingFromValue):
(WebCore::StyleResolver::generatedOrPendingFromValue):
(WebCore::StyleResolver::createFilterOperations):
(WebCore::StyleResolver::loadPendingImage):
* css/StyleResolver.h:
(WebCore::StyleResolver::hasViewportDependentMediaQueries):
(WebCore::StyleResolver::state):
(WebCore::checkRegionSelector):
* css/StyleSheetList.h:
* css/WebKitCSSFilterValue.cpp:
* css/WebKitCSSFilterValue.h:
* css/WebKitCSSTransformValue.cpp:
* css/WebKitCSSTransformValue.h:
* rendering/shapes/Shape.cpp:

Source/WebKit2:

* UIProcess/Cocoa/WebViewImpl.mm:

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

4 years agoWeb Inspector: Checkbox disappears when unchecking CSS property with value containing...
mattbaker@apple.com [Wed, 18 May 2016 23:01:53 +0000 (23:01 +0000)]
Web Inspector: Checkbox disappears when unchecking CSS property with value containing a semicolon
https://bugs.webkit.org/show_bug.cgi?id=157862
<rdar://problem/16214480>

Reviewed by Timothy Hatcher.

* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WebInspector.CSSStyleDeclarationTextEditor.prototype._createCommentedCheckboxMarker):
Modify regex to match CSS properties with url() and quoted values,
which can contain semicolons.

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

4 years agoDisable default user gesture requirement for audio playback on Mac
jer.noble@apple.com [Wed, 18 May 2016 22:52:09 +0000 (22:52 +0000)]
Disable default user gesture requirement for audio playback on Mac
https://bugs.webkit.org/show_bug.cgi?id=157820

Reviewed by Sam Weinig.

Disable the WebPreferences and matching WKWebViewConfiguration.mediaTypesRequiringUserActionForPlayback
settings on Mac (and other non-iOS ports).

* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration init]):

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

4 years agowebkitEnterFullscreen() does not require a user gesture when RequireUserGestureForAud...
jer.noble@apple.com [Wed, 18 May 2016 22:49:32 +0000 (22:49 +0000)]
webkitEnterFullscreen() does not require a user gesture when RequireUserGestureForAudioRateChange is set.
https://bugs.webkit.org/show_bug.cgi?id=157803

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/video-play-audio-require-user-gesture.html

Refactor the setting of restrictions in the HTMLMediaElement constructor, and in so doing, only
relax the RequireUserGestureForFullscreen restriction if both videoPlaybackRequiresUserGesture()
and audioPlaybackRequiresUserGesture() settings are not set.

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

LayoutTests:

* media/video-play-audio-require-user-gesture-expected.txt: Added.
* media/video-play-audio-require-user-gesture.html: Added.

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

4 years agoBuild fix when not using CredentialStorage with NetworkSession.
achristensen@apple.com [Wed, 18 May 2016 22:45:37 +0000 (22:45 +0000)]
Build fix when not using CredentialStorage with NetworkSession.

* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::NetworkSession::clearCredentials):

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

4 years agoFix null-deref crash sporadically seen after http://trac.webkit.org/changeset/201098
beidson@apple.com [Wed, 18 May 2016 22:40:26 +0000 (22:40 +0000)]
Fix null-deref crash sporadically seen after trac.webkit.org/changeset/201098

No review.

* DatabaseProcess/DatabaseProcess.cpp:
(WebKit::DatabaseProcess::deleteWebsiteData): Don't access m_idbServer directly, as calling
  the idbServer() accessor is how you actually get your IDBServer created for you.

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

4 years agoPlayback session sends audio and text track lists when media does not have audio...
jer.noble@apple.com [Wed, 18 May 2016 22:40:24 +0000 (22:40 +0000)]
Playback session sends audio and text track lists when media does not have audio or text tracks.
https://bugs.webkit.org/show_bug.cgi?id=157865
<rdar://problem/25992750>

Reviewed by Beth Dakin.

Only send across the CaptionUserPreferences-generated list of audio and text tracks if those
text tracks exist in the first place. This matches the behavior of the built-in controls.

* platform/cocoa/WebPlaybackSessionModelMediaElement.mm:
(WebPlaybackSessionModelMediaElement::updateLegibleOptions):

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

4 years agor199812 broke test262
msaboff@apple.com [Wed, 18 May 2016 22:36:01 +0000 (22:36 +0000)]
r199812 broke test262
https://bugs.webkit.org/show_bug.cgi?id=157595

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

Added a reasonable limit to the size of the match result array to catch possible
infinite loops when matching.
Added a new tests that creates an infinite loop in RegExp.prototype.[Symbol.match]
by creating a subclass of RegExp where the base RegExp's global flag is false and
the subclass overrides .global with a getter that always returns true.

* builtins/RegExpPrototype.js:
(match):
* tests/stress/regress-157595.js: Added.
(MyRegExp):
(MyRegExp.prototype.get global):
(test):
(catch):

Tools:

Added a new run type, runOneLargeHeap, for tests that use a large amount of memory.
This run type will not run with the --memory-limited option.  Without that option,
we'll only the default test variant.

* Scripts/run-jsc-stress-tests:

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

4 years agoClean up / Modernize TextAutoSizingValue::adjustNodeSizes()
cdumez@apple.com [Wed, 18 May 2016 22:27:47 +0000 (22:27 +0000)]
Clean up / Modernize TextAutoSizingValue::adjustNodeSizes()
https://bugs.webkit.org/show_bug.cgi?id=157861

Reviewed by Alex Christensen.

Clean up / Modernize TextAutoSizingValue::adjustNodeSizes(), and
use tighter typing for autosizing nodes.

* dom/Document.cpp:
(WebCore::Document::addAutoSizingNode):
* dom/Document.h:
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::adjustComputedFontSizes):
* rendering/TextAutoSizing.cpp:
(WebCore::TextAutoSizingValue::addNode):
(WebCore::TextAutoSizingValue::adjustNodeSizes):
(WebCore::TextAutoSizingValue::reset):
* rendering/TextAutoSizing.h:

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

4 years agoRemove logging inadvertently committed in r201090.
simon.fraser@apple.com [Wed, 18 May 2016 22:25:01 +0000 (22:25 +0000)]
Remove logging inadvertently committed in r201090.

* css/CSSParser.cpp:
(WebCore::CSSParserContext::CSSParserContext): Deleted.

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

4 years agoWeb Inspector: ugly gaps in Call Trees data grid when expanding more than one level
nvasilyev@apple.com [Wed, 18 May 2016 22:16:22 +0000 (22:16 +0000)]
Web Inspector: ugly gaps in Call Trees data grid when expanding more than one level
https://bugs.webkit.org/show_bug.cgi?id=157829
<rdar://problem/26339922>

Reviewed by Timothy Hatcher.

Make a more specific CSS selector to avoid style conflicts.

* UserInterface/Views/DataGrid.css:
(.data-grid:not(.variable-height-rows) > .data-container > table.data > tbody > tr > td > div): Deleted.
(.data-grid:not(.variable-height-rows) > .data-container > table.data > tbody > tr > td > .cell-content):
* UserInterface/Views/DataGrid.js:
(WebInspector.DataGridNode.prototype.createCell):

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

4 years agoWeb Inspector: InspectorFrontendAPI.setTimelineProfilingEnabled should not implicitly...
bburg@apple.com [Wed, 18 May 2016 21:50:35 +0000 (21:50 +0000)]
Web Inspector: InspectorFrontendAPI.setTimelineProfilingEnabled should not implicitly show Timelines tab
https://bugs.webkit.org/show_bug.cgi?id=157846

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

Currently, if the Web Inspector opens for an in-progress or finished automation session,
it will always show the Timelines tab, disregarding any previous user view state. This
is annoying and is a bad user experience when trying to debug the same test repeatedly.

* UserInterface/Protocol/InspectorFrontendAPI.js:
(InspectorFrontendAPI.setTimelineProfilingEnabled): Don't implicitly show Timelines tab.
(InspectorFrontendAPI.showTimelines): Added. This is called explicitly when desired.

Source/WebKit2:

Add a separate ShowTimelines message to WebInspector and WebInspectorUI. Have the
start/stop profiling methods in public APIs explicitly call showTimelines() rather than
relying on InspectorFrontendAPI to do it.

* UIProcess/API/C/WKInspector.cpp:
(WKInspectorTogglePageProfiling):
* UIProcess/WebInspectorProxy.cpp:
(WebKit::WebInspectorProxy::showTimelines):
* UIProcess/WebInspectorProxy.h:
* WebProcess/InjectedBundle/API/c/WKBundleInspector.cpp:
(WKBundleInspectorSetPageProfilingEnabled):
* WebProcess/WebPage/WebInspector.cpp:
(WebKit::WebInspector::showTimelines):
* WebProcess/WebPage/WebInspector.h:
* WebProcess/WebPage/WebInspector.messages.in:
* WebProcess/WebPage/WebInspectorUI.cpp:
(WebKit::WebInspectorUI::showTimelines):
* WebProcess/WebPage/WebInspectorUI.h:
* WebProcess/WebPage/WebInspectorUI.messages.in:

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

4 years agoREGRESSION (r186569): media/restore-from-page-cache.html is very flaky
rniwa@webkit.org [Wed, 18 May 2016 21:36:29 +0000 (21:36 +0000)]
REGRESSION (r186569): media/restore-from-page-cache.html is very flaky
https://bugs.webkit.org/show_bug.cgi?id=147254

Unreviewed. Removing the flaky test expectation since the test is almost always passing now.

* platform/mac/TestExpectations:

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

4 years agoWeb Inspector: DebuggerSidebarPanel doesn't need to help manage temporarily disabling...
bburg@apple.com [Wed, 18 May 2016 21:04:27 +0000 (21:04 +0000)]
Web Inspector: DebuggerSidebarPanel doesn't need to help manage temporarily disabling breakpoints while capturing
https://bugs.webkit.org/show_bug.cgi?id=157854

Reviewed by Timothy Hatcher.

Duplicate the event listeners in DebuggerManager and move non-view-related
state updates out of DebuggerSidebarPanel's listeners into DebuggerManager's listeners.
This allows a test to exercise the temporary-disablement code paths during capturing.

* UserInterface/Controllers/DebuggerManager.js:
(WebInspector.DebuggerManager.prototype.get breakpointsDisabledTemporarily):
Use this to make the code a bit more readable.

(WebInspector.DebuggerManager.prototype._startDisablingBreakpointsTemporarily):
(WebInspector.DebuggerManager.prototype._stopDisablingBreakpointsTemporarily):
(WebInspector.DebuggerManager.prototype.startDisablingBreakpointsTemporarily): Deleted.
(WebInspector.DebuggerManager.prototype.stopDisablingBreakpointsTemporarily): Deleted.
Make this private since it's not used by other classes anymore.

(WebInspector.DebuggerManager.prototype._timelineCapturingWillStart): Added.
(WebInspector.DebuggerManager.prototype._timelineCapturingStopped): Added.

* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel.prototype._timelineRecordingWillStart): Deleted.
(WebInspector.DebuggerSidebarPanel.prototype._timelineRecordingStopped): Deleted.
(WebInspector.DebuggerSidebarPanel.prototype._timelineCapturingWillStart): Added.
(WebInspector.DebuggerSidebarPanel.prototype._timelineCapturingStopped): Added.
Make the listener names consistent with TimelineManager: timelineCapturing{WillStart,Stopped}.

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

4 years agoModern IDB: Add support for server side closing of open database connections.
beidson@apple.com [Wed, 18 May 2016 20:42:20 +0000 (20:42 +0000)]
Modern IDB: Add support for server side closing of open database connections.
https://bugs.webkit.org/show_bug.cgi?id=157843

Reviewed by Alex Christensen.

Source/WebCore:

Test: storage/indexeddb/modern/handle-user-delete.html

In order to support deleting IndexedDB databases, the IDB server needs the ability to
"immediately" close a currently open IDB connection.

To do so cleanly, the server has to:
- Error out all requests it knows about
- Abort all transactions it knows about
- Tell the connection that it is being closed
- Wait for the connection to acknowledge that it was closed on the server

And then the client has to:
- Error out all requests it hasn't sent to the server
- Abort all transactions that haven't already been aborted by the server
- Send acknowledgement to the server that it has been closed.

Finally, because the status of a given request might be "in flight" somewhere between the
server and the client, some design assumptions change. This requires reworking some ASSERTS,
null checks, etc.

* Modules/indexeddb/IDBDatabase.cpp:
(WebCore::IDBDatabase::didCloseFromServer): Do the heavy lifting for the immediate close on
  the client side.
* Modules/indexeddb/IDBDatabase.h:

* Modules/indexeddb/IDBDatabaseIdentifier.h:
(WebCore::IDBDatabaseIdentifier::isRelatedToOrigin):

* Modules/indexeddb/IDBTransaction.cpp:
(WebCore::IDBTransaction::connectionClosedFromServer): Error out all outstanding operations
  and fire the abort error on itself.
* Modules/indexeddb/IDBTransaction.h:

* Modules/indexeddb/client/IDBConnectionProxy.cpp:
(WebCore::IDBClient::IDBConnectionProxy::completeOperation):
(WebCore::IDBClient::IDBConnectionProxy::didCloseFromServer):
(WebCore::IDBClient::IDBConnectionProxy::confirmDidCloseFromServer):
(WebCore::IDBClient::IDBConnectionProxy::forgetActiveOperations):
* Modules/indexeddb/client/IDBConnectionProxy.h:

* Modules/indexeddb/client/IDBConnectionToServer.cpp:
(WebCore::IDBClient::IDBConnectionToServer::didCloseFromServer):
(WebCore::IDBClient::IDBConnectionToServer::confirmDidCloseFromServer):
* Modules/indexeddb/client/IDBConnectionToServer.h:
* Modules/indexeddb/client/IDBConnectionToServerDelegate.h:

* Modules/indexeddb/server/IDBConnectionToClient.cpp:
(WebCore::IDBServer::IDBConnectionToClient::didCloseFromServer):
* Modules/indexeddb/server/IDBConnectionToClient.h:
* Modules/indexeddb/server/IDBConnectionToClientDelegate.h:

* Modules/indexeddb/server/IDBServer.cpp:
(WebCore::IDBServer::IDBServer::confirmDidCloseFromServer):
(WebCore::IDBServer::generateDeleteCallbackID):
(WebCore::IDBServer::IDBServer::closeAndDeleteDatabasesModifiedSince):
(WebCore::IDBServer::IDBServer::closeAndDeleteDatabasesForOrigins):
(WebCore::IDBServer::IDBServer::performCloseAndDeleteDatabasesModifiedSince):
(WebCore::IDBServer::IDBServer::performCloseAndDeleteDatabasesForOrigins):
(WebCore::IDBServer::IDBServer::didPerformCloseAndDeleteDatabases):
* Modules/indexeddb/server/IDBServer.h:

* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::~UniqueIDBDatabase):
(WebCore::IDBServer::UniqueIDBDatabase::openDatabaseConnection):
(WebCore::IDBServer::UniqueIDBDatabase::didDeleteBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::handleDatabaseOperations):
(WebCore::IDBServer::UniqueIDBDatabase::handleCurrentOperation):
(WebCore::IDBServer::UniqueIDBDatabase::handleDelete):
(WebCore::IDBServer::UniqueIDBDatabase::createObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::deleteObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::clearObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::createIndex):
(WebCore::IDBServer::UniqueIDBDatabase::deleteIndex):
(WebCore::IDBServer::UniqueIDBDatabase::putOrAdd):
(WebCore::IDBServer::UniqueIDBDatabase::getRecord):
(WebCore::IDBServer::UniqueIDBDatabase::getCount):
(WebCore::IDBServer::UniqueIDBDatabase::deleteRecord):
(WebCore::IDBServer::UniqueIDBDatabase::openCursor):
(WebCore::IDBServer::UniqueIDBDatabase::iterateCursor):
(WebCore::IDBServer::UniqueIDBDatabase::commitTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::abortTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::connectionClosedFromClient):
(WebCore::IDBServer::UniqueIDBDatabase::connectionClosedFromServer):
(WebCore::IDBServer::UniqueIDBDatabase::confirmDidCloseFromServer):
(WebCore::IDBServer::UniqueIDBDatabase::enqueueTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::isCurrentlyInUse):
(WebCore::IDBServer::UniqueIDBDatabase::invokeOperationAndTransactionTimer):
(WebCore::IDBServer::UniqueIDBDatabase::operationAndTransactionTimerFired):
(WebCore::IDBServer::UniqueIDBDatabase::activateTransactionInBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::transactionCompleted):
(WebCore::IDBServer::UniqueIDBDatabase::postDatabaseTask):
(WebCore::IDBServer::UniqueIDBDatabase::postDatabaseTaskReply):
(WebCore::IDBServer::UniqueIDBDatabase::executeNextDatabaseTask):
(WebCore::IDBServer::UniqueIDBDatabase::executeNextDatabaseTaskReply):
(WebCore::IDBServer::UniqueIDBDatabase::doneWithHardClose):
(WebCore::IDBServer::errorOpenDBRequestForUserDelete):
(WebCore::IDBServer::UniqueIDBDatabase::immediateCloseForUserDelete): Do the heavy lifting
  for the immediate close on the server side.
(WebCore::IDBServer::UniqueIDBDatabase::performErrorCallback):
(WebCore::IDBServer::UniqueIDBDatabase::performKeyDataCallback):
(WebCore::IDBServer::UniqueIDBDatabase::performGetResultCallback):
(WebCore::IDBServer::UniqueIDBDatabase::performCountCallback):
(WebCore::IDBServer::UniqueIDBDatabase::storeCallback): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::storeCallbackOrFireError): If the database has been
  hard stopped, immediately fire and error for the callback and return a 0-identifier to
  reflect this.
* Modules/indexeddb/server/UniqueIDBDatabase.h:

* Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp:
(WebCore::IDBServer::UniqueIDBDatabaseConnection::confirmDidCloseFromServer):
* Modules/indexeddb/server/UniqueIDBDatabaseConnection.h:

* Modules/indexeddb/shared/IDBError.cpp:
(WebCore::IDBError::toDOMError):
* Modules/indexeddb/shared/IDBError.h:
(WebCore::IDBError::userDeleteError):

* Modules/indexeddb/shared/InProcessIDBServer.cpp:
(WebCore::InProcessIDBServer::didCloseFromServer):
(WebCore::InProcessIDBServer::confirmDidCloseFromServer):
* Modules/indexeddb/shared/InProcessIDBServer.h:

* platform/CrossThreadCopier.cpp:
(WebCore::std::chrono::system_clock::time_point>::copy):
* platform/CrossThreadCopier.h:

Source/WebKit2:

- Implement the required IDB delegate code.
- Make DatabaseProcess::deleteWebsiteData call the right method in IDB server.

* DatabaseProcess/DatabaseProcess.cpp:
(WebKit::DatabaseProcess::deleteWebsiteData):

* DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp:
(WebKit::WebIDBConnectionToClient::didGetRecord):
(WebKit::WebIDBConnectionToClient::didCloseFromServer):
(WebKit::WebIDBConnectionToClient::confirmDidCloseFromServer):
* DatabaseProcess/IndexedDB/WebIDBConnectionToClient.h:
* DatabaseProcess/IndexedDB/WebIDBConnectionToClient.messages.in:

* WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
(WebKit::WebIDBConnectionToServer::confirmDidCloseFromServer):
(WebKit::WebIDBConnectionToServer::didStartTransaction):
(WebKit::WebIDBConnectionToServer::didCloseFromServer):
* WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h:
* WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.messages.in:

LayoutTests:

* storage/indexeddb/modern/handle-user-delete-expected.txt: Added.
* storage/indexeddb/modern/handle-user-delete.html: Added.
* storage/indexeddb/modern/resources/handle-user-delete.js: Added.

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

4 years agoCVE-2016-2803: [SECURITY] XSS vulnerability in dependency graphs via bug summary
ddkilzer@apple.com [Wed, 18 May 2016 20:21:31 +0000 (20:21 +0000)]
CVE-2016-2803: [SECURITY] XSS vulnerability in dependency graphs via bug summary
<https://bugzilla.mozilla.org/show_bug.cgi?id=1253263>

Merge Bugzilla upstream master dd61903154fd363fb4e763d60aa155a507c2c3fc.

* showdependencygraph.cgi:
(CreateImagemap): Fix XSS vulnerability.

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

4 years agoWeb Inspector: Improve console.takeHeapSnapshot documentation in console
commit-queue@webkit.org [Wed, 18 May 2016 20:01:19 +0000 (20:01 +0000)]
Web Inspector: Improve console.takeHeapSnapshot documentation in console
https://bugs.webkit.org/show_bug.cgi?id=157853

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-05-18
Reviewed by Timothy Hatcher.

* UserInterface/Models/NativeFunctionParameters.js:
Mention optional label argument.

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

4 years agoVersioning.
bshafiei@apple.com [Wed, 18 May 2016 19:35:54 +0000 (19:35 +0000)]
Versioning.

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

4 years agoMake Animometer work in all browsers
timothy@apple.com [Wed, 18 May 2016 19:32:55 +0000 (19:32 +0000)]
Make Animometer work in all browsers
https://bugs.webkit.org/show_bug.cgi?id=157855
rdar://problem/26338521

Reviewed by Jon Lee.

* Animometer/resources/runner/logo.svg: Use a symbol instead
of putting the id on the root svg. This works in all browsers.

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

4 years agoWeb Inspector: race between frontend and backend both starting timeline recordings...
bburg@apple.com [Wed, 18 May 2016 19:29:14 +0000 (19:29 +0000)]
Web Inspector: race between frontend and backend both starting timeline recordings causes console assert
https://bugs.webkit.org/show_bug.cgi?id=157850
<rdar://problem/26349229>

Reviewed by Joseph Pecoraro.

If TimelineManager has created a fresh recording and the Timeline.autoCaptureStarted
event comes before Timeline.recordingStarted, then the manager will try to start the
same recording twice. In this scenario, the manager should just wait until the
Timeline.recordingStarted event comes, since it causes TimelineMangare to set up
the isCapturing flag and other state.

* UserInterface/Controllers/TimelineManager.js:
(WebInspector.TimelineManager):
(WebInspector.TimelineManager.prototype.startCapturing):
(WebInspector.TimelineManager.prototype.capturingStarted):
(WebInspector.TimelineManager.prototype.autoCaptureStarted):
Add a new flag, this._waitingForCapturingStartedEvent. If true, don't start the
recording in response to this event.

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

4 years ago[OS X] Update platform/mac/fast/text/sticky-typesetting-features.html
mmaxfield@apple.com [Wed, 18 May 2016 19:10:14 +0000 (19:10 +0000)]
[OS X] Update platform/mac/fast/text/sticky-typesetting-features.html
https://bugs.webkit.org/show_bug.cgi?id=157851

Reviewed by Simon Fraser.

Kerning and ligatures are enabled by default now.

* platform/mac/fast/text/sticky-typesetting-features-expected.png:
* platform/mac/fast/text/sticky-typesetting-features-expected.txt:
* platform/mac/fast/text/sticky-typesetting-features.html:

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

4 years agoREGRESSION (r200534) Command-+ no longer zooms pages
simon.fraser@apple.com [Wed, 18 May 2016 19:06:27 +0000 (19:06 +0000)]
REGRESSION (r200534) Command-+ no longer zooms pages
https://bugs.webkit.org/show_bug.cgi?id=157826
rdar://problem/26334636

Reviewed by Dean Jackson.

Source/WebCore:

When text autosizing was enabled on Mac, we started to parse and respect
-webkit-text-size-adjust. Fix by cutting this off in CSSParser if the feature
is disabled.

Also fix InternalSettings to reset page and text zoom, since WebKit1 aliases
the zoom levels causing DRT to fail to reset them between tests.

Test: fast/text-autosizing/mac/text-size-adjust-text-zoom.html

* css/CSSParser.cpp:
(WebCore::CSSParserContext::CSSParserContext):
(WebCore::isValidKeywordPropertyAndValue):
(WebCore::CSSParser::parseValue):
(WebCore::CSSParser::isTextAutosizingEnabled):
* css/CSSParser.h:
* css/CSSParserMode.h:
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::resetToConsistentState):

Tools:

* DumpRenderTree/mac/DumpRenderTree.mm:
(resetWebPreferencesToConsistentValues): Remove ENABLE() #ifdefs that do nothing (see http://webkit.org/b/157828).

LayoutTests:

Need to call internals.settings.setTextAutosizingEnabled(true) earlier in some tests.

* fast/text-autosizing/ios/line-height-text-autosizing.html:
* fast/text-autosizing/ios/percent-adjust-length-line-height.html:
* fast/text-autosizing/ios/percent-adjust-number-line-height.html:
* fast/text-autosizing/ios/percent-adjust-percent-line-height.html:
* fast/text-autosizing/mac/text-size-adjust-text-zoom-expected.html: Added.
* fast/text-autosizing/mac/text-size-adjust-text-zoom.html: Added.
* platform/mac-wk2/TestExpectations:
* platform/mac/TestExpectations:

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

4 years agomarkAllDescendantsWithFloatsForLayout should not drill into blocks with
hyatt@apple.com [Wed, 18 May 2016 18:59:40 +0000 (18:59 +0000)]
markAllDescendantsWithFloatsForLayout should not drill into blocks with
inline children. It was sufficient to mark ourselves as needing layout.

https://bugs.webkit.org/show_bug.cgi?id=157845

Reviewed by Simon Fraser.

* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::markAllDescendantsWithFloatsForLayout):

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

4 years ago[GTK] accessibility/meter-element.html is failing
jdiggs@igalia.com [Wed, 18 May 2016 18:57:33 +0000 (18:57 +0000)]
[GTK] accessibility/meter-element.html is failing
https://bugs.webkit.org/show_bug.cgi?id=115633

Reviewed by Chris Fleizach.

Source/WebCore:

The meter's value description should be exposed in the same fashion
as (we should have been exposing) aria-valuetext, namely through the
"valuetext" AtkObject attribute. This exposure is now in place. Also
implement AccessibilityProgressIndicator::valueDescription() so that
the ports do not have to special-case meter in the platform wrappers.
Map the meter element to the correct role (ATK_ROLE_LEVEL_BAR), and
ignore a previously-included accessible object resulting from the
use of the title attribute on a meter. Finally, do not expose the
meter's title as the accessible name because the HTML spec suggests
authors can supply the numeric unit as the value of title.

No new test file as the failure was identified by meter-element.html.
Seven new test cases were added for additional coverage. Also updated
the ATK expectations for spinbutton-value.html to reflect that we are now
exposing the value of aria-valuetext.

* accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::helpText):
(WebCore::AccessibilityNodeObject::accessibilityDescriptionForChildren):
(WebCore::AccessibilityNodeObject::visibleText):
* accessibility/AccessibilityNodeObject.h:
* accessibility/AccessibilityProgressIndicator.cpp:
(WebCore::AccessibilityProgressIndicator::valueDescription):
* accessibility/AccessibilityProgressIndicator.h:
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::computeAccessibilityIsIgnored):
* accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
(webkitAccessibleGetAttributes):
(atkRole):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

Tools:

Implement AccessibilityUIElement::valueDescription() and add mapping
from ATK_ROLE_LEVEL_BAR to AXProgressIndicator.

* WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
(WTR::AccessibilityUIElement::valueDescription):

LayoutTests:

Seven new test cases were added to meter-element.html for additional
coverage. Also updated the ATK expectations for spinbutton-value.html
to reflect that we are now exposing the value of aria-valuetext.

* accessibility/meter-element.html: New test cases added.
* platform/gtk/TestExpectations: Unskip the previously-failing test.
* platform/gtk/accessibility/meter-element-expected.txt: Updated.
* platform/gtk/accessibility/spinbutton-value-expected.txt: Updated.
* platform/mac/accessibility/meter-element-expected.txt: Updated.

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

4 years agoAllow RenderStyles marked unique in matched properties cache
antti@apple.com [Wed, 18 May 2016 18:32:43 +0000 (18:32 +0000)]
Allow RenderStyles marked unique in matched properties cache
https://bugs.webkit.org/show_bug.cgi?id=157844

Reviewed by Andreas Kling.

Depending on content this can improve matched properties cache hit rate quite a bit and so reduce
time spent building styles.

* css/StyleBuilderCustom.h:
(WebCore::StyleBuilderCustom::applyValueContent):

    Set the attr bit on render style.

* css/StyleResolver.cpp:
(WebCore::isCacheableInMatchedPropertiesCache):

    Allow caching of styles marked "unique". It only means that they are not shareable by style
    sharing code because there were some complex selectors in the rules used for building them. It
    doesn't affect matched properties cache the cache how the properties were resolved.

    We still need to test against "content: attr()" as that makes the style depend on the element
    being matched. It now has a separate bit in RenderStyle.

* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::setHasAttrContent):

    Bit for "content: attr()". It also sets unique() to keep style sharing code happy.

(WebCore::requireTransformOrigin):
* rendering/style/RenderStyle.h:
(WebCore::RenderStyle::hasAttrContent):
* rendering/style/StyleRareNonInheritedData.cpp:
(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
(WebCore::StyleRareNonInheritedData::operator==):
* rendering/style/StyleRareNonInheritedData.h:

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

4 years ago[ES6] Namespace object re-export should be handled as local export
utatane.tea@gmail.com [Wed, 18 May 2016 17:46:09 +0000 (17:46 +0000)]
[ES6] Namespace object re-export should be handled as local export
https://bugs.webkit.org/show_bug.cgi?id=157806

Reviewed by Mark Lam.

We align the implementation of ExportEntry to the spec; remove Type::Namespace.
This Type::Namespace is used for re-exported namespace object binding. For example,

    import * as namespace from "namespace.js"
    export { namespace }

In the above case, we used ExportEntry(Type::Namespace). In this patch, we drop this
and use normal local export (Type::Local) instead because namespace object actually has
the local binding in the above module environment. And this handling strictly meets the
spec (Sec 15.2.1.16.1 step 11-a-ii-2-b).

And we also clean up the ExportEntry implementation; dropping unnecessary information.
This change fixes the test262/test/language/module-code/instn-star-equality.js crash.

* parser/ModuleAnalyzer.cpp:
(JSC::ModuleAnalyzer::exportVariable):
* runtime/JSModuleRecord.cpp:
(JSC::getExportedNames):
(JSC::JSModuleRecord::dump): Deleted.
* runtime/JSModuleRecord.h:
* tests/modules/namespace-re-export.js: Added.
* tests/modules/namespace-re-export/namespace-re-export-fixture.js: Added.
* tests/modules/namespace-re-export/namespace-re-export.js: Added.
* tests/modules/resources/assert.js:
(export.shouldNotBe):

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

4 years agoFix the allinone-build on Linux in Source/WebCore/html/HTMLElementsAllInOne.cpp
ossy@webkit.org [Wed, 18 May 2016 17:25:51 +0000 (17:25 +0000)]
Fix the allinone-build on Linux in Source/WebCore/html/HTMLElementsAllInOne.cpp
https://bugs.webkit.org/show_bug.cgi?id=157800

Reviewed by Alex Christensen.

* html/HTMLElementsAllInOne.cpp:

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

4 years agoRebaseline inspector/debugger/command-line-api-exception.html after r201080
ryanhaddad@apple.com [Wed, 18 May 2016 17:19:36 +0000 (17:19 +0000)]
Rebaseline inspector/debugger/command-line-api-exception.html after r201080

Unreviewed test gardening.

* inspector/debugger/command-line-api-exception-expected.txt:

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

4 years agoWeb Inspector: REGRESSION(r197488): Incorrect start time in Rendering Frames timeline...
mattbaker@apple.com [Wed, 18 May 2016 16:33:19 +0000 (16:33 +0000)]
Web Inspector: REGRESSION(r197488): Incorrect start time in Rendering Frames timeline grid
https://bugs.webkit.org/show_bug.cgi?id=157840
<rdar://problem/26344937>

Reviewed by Brian Burg.

* UserInterface/Views/TimelineRecordingContentView.js:
(WebInspector.TimelineRecordingContentView.prototype._updateTimes):
The Rendering Frames timeline view needs a valid zero time.
(WebInspector.TimelineRecordingContentView.prototype._timeRangeSelectionChanged):
Adjust ruler selection path component values by the zero time unless
the current view is the Rendering Frames timeline view.

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

4 years agoModern IDB: Make TestRunner.clearAllDatabases also delete IndexedDB databases (once...
beidson@apple.com [Wed, 18 May 2016 16:30:30 +0000 (16:30 +0000)]
Modern IDB: Make TestRunner.clearAllDatabases also delete IndexedDB databases (once doing so is supported).
https://bugs.webkit.org/show_bug.cgi?id=157823

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (No current behavior change, will be tested with b/157626's resolution).

* Modules/indexeddb/server/IDBServer.cpp:
(WebCore::IDBServer::IDBServer::closeAndDeleteDatabasesModifiedSince): Stub this out for now.
* Modules/indexeddb/server/IDBServer.h:
* Modules/indexeddb/shared/InProcessIDBServer.h:

Source/WebKit:

* Storage/WebDatabaseProvider.cpp:
(WebDatabaseProvider::deleteAllDatabases):
* Storage/WebDatabaseProvider.h:

Source/WebKit/mac:

* Storage/WebDatabaseManager.mm:
(-[WebDatabaseManager deleteAllIndexedDatabases]):
* Storage/WebDatabaseManagerPrivate.h:

Source/WebKit2:

* CMakeLists.txt:
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreRemoveAllIndexedDatabases):
* UIProcess/API/C/WKWebsiteDataStoreRef.h:

Tools:

* DumpRenderTree/mac/TestRunnerMac.mm:
(TestRunner::clearAllDatabases):

* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::clearAllDatabases):

* WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

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

4 years agoSync DOM exception types with WebIDL and update promise rejections
youenn.fablet@crf.canon.fr [Wed, 18 May 2016 15:22:37 +0000 (15:22 +0000)]
Sync DOM exception types with WebIDL and update promise rejections
https://bugs.webkit.org/show_bug.cgi?id=157792

Reviewed by Eric Carlson.

Source/WebCore:

Updating ExceptionCode with WebIDL latest exception types.
Updating promise rejection code to use those types as per the latest specifications.

Updating getUserMedia error handling by removing NavigatorUserMediaError which no long exists.

Covered by rebased tests.

* CMakeLists.txt:
* DerivedSources.cpp:
* DerivedSources.make:
* Modules/mediastream/MediaDevices.h:
* Modules/mediastream/MediaEndpointPeerConnection.cpp:
(WebCore::MediaEndpointPeerConnection::createAnswer):
(WebCore::MediaEndpointPeerConnection::setLocalDescription):
(WebCore::MediaEndpointPeerConnection::setRemoteDescription):
(WebCore::MediaEndpointPeerConnection::addIceCandidate):
(WebCore::MediaEndpointPeerConnection::getStats):
(WebCore::MediaEndpointPeerConnection::replaceTrack):
* Modules/mediastream/NavigatorUserMediaError.cpp: Removed.
* Modules/mediastream/NavigatorUserMediaError.h: Removed.
* Modules/mediastream/NavigatorUserMediaError.idl: Removed.
* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::RTCPeerConnection::queuedCreateOffer):
(WebCore::RTCPeerConnection::queuedCreateAnswer):
(WebCore::RTCPeerConnection::queuedSetLocalDescription):
(WebCore::RTCPeerConnection::queuedSetRemoteDescription):
(WebCore::RTCPeerConnection::queuedAddIceCandidate):
* Modules/mediastream/RTCRtpSender.cpp:
(WebCore::RTCRtpSender::replaceTrack):
* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::failedToCreateStreamWithConstraintsError):
(WebCore::UserMediaRequest::failedToCreateStreamWithPermissionError):
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSDOMBinding.cpp:
(WebCore::createDOMException):
* bindings/js/JSDOMBinding.h:
* bindings/js/JSDOMPromise.cpp:
(WebCore::DeferredWrapper::reject):
* bindings/js/JSDOMPromise.h:
(WebCore::DeferredWrapper::reject):
(WebCore::DOMPromise::reject):
* css/FontFaceSet.cpp:
(WebCore::FontFaceSet::load):
(WebCore::FontFaceSet::faceFinished):
* dom/DOMCoreException.cpp:
* dom/ExceptionCode.h:
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::play):

LayoutTests:

* fast/dom/insertAdjacentHTML-DocumentFragment-crash-expected.txt:
* fast/inspector-support/uncaught-dom1-exception-expected.txt:
* fast/inspector-support/uncaught-dom3-exception-expected.txt:
* fast/inspector-support/uncaught-dom8-exception-expected.txt:
* fast/mediastream/MediaDevices-getUserMedia-expected.txt:
* fast/mediastream/MediaDevices-getUserMedia.html:
* fast/mediastream/delayed-permission-denied-expected.txt:
* fast/mediastream/delayed-permission-denied.html:
* fast/mediastream/error-expected.txt:
* fast/mediastream/error.html:
* fast/mediastream/getusermedia-expected.txt:
* fast/mediastream/mock-media-source-expected.txt:
* fast/regions/selection/crash-deselect-expected.txt:
* http/tests/media/media-stream/disconnected-frame-permission-denied-expected.txt:
* http/tests/media/media-stream/disconnected-frame-permission-denied.html:
* inspector/debugger/regress-133182-expected.txt:
* inspector/debugger/setPauseOnExceptions-all-expected.txt:
* inspector/debugger/setPauseOnExceptions-none-expected.txt:
* inspector/debugger/setPauseOnExceptions-uncaught-expected.txt:
* platform/efl/fast/dynamic/015-expected.txt:
* platform/gtk/fast/dynamic/015-expected.txt:
* platform/ios-simulator/fast/dynamic/015-expected.txt:
* platform/ios-simulator-wk2/editing/selection/caret-ltr-2-expected.txt:
* platform/ios-simulator-wk2/editing/selection/caret-ltr-2-left-expected.txt:
* platform/ios-simulator-wk2/editing/selection/caret-ltr-expected.txt:
* platform/ios-simulator-wk2/editing/selection/caret-ltr-right-expected.txt:
* platform/ios-simulator-wk2/editing/selection/caret-rtl-2-expected.txt:
* platform/ios-simulator-wk2/editing/selection/caret-rtl-2-left-expected.txt:
* platform/ios-simulator-wk2/editing/selection/caret-rtl-expected.txt:
* platform/ios-simulator-wk2/editing/selection/caret-rtl-right-expected.txt:
* platform/mac/fast/dynamic/015-expected.txt:
* platform/win/fast/dynamic/015-expected.txt:

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

4 years agoREGRESSION(r200959): "Start Timeline Recording" menu item doesn't start recording
bburg@apple.com [Wed, 18 May 2016 14:52:20 +0000 (14:52 +0000)]
REGRESSION(r200959): "Start Timeline Recording" menu item doesn't start recording
https://bugs.webkit.org/show_bug.cgi?id=157821
<rdar://problem/26335429>

Reviewed by Timothy Hatcher.

In r200959, WebInspectorProxy started sending start/stop profiling
messages directly to the frontend process to avoid the inspected page
process from implicitly showing the frontend. To compensate, the WebKit
API layer was changed to call show() in togglePageProfiling().

Unfortunately, this fix was not quite right, because the ordering of
the Show and StartPageProfiling messages is undefined. The latter has to bounce
from UI to inspected to inspector processes, so the frontend may try
to start profiling before the frontend is shown, causing it to be ignored.

This patch takes a different approach: just remove all implicit show()
calls in the inspected page processes, and bounce both the Show and
StartPageProfiling messages through the inspected page process to ensure
they are handled in order by the frontend process.

* UIProcess/WebInspectorProxy.cpp:
(WebKit::WebInspectorProxy::togglePageProfiling):
Revert to sending to the inspected page process.

* WebProcess/InjectedBundle/API/c/WKBundleInspector.cpp:
(WKBundleInspectorSetPageProfilingEnabled):
Add a call to show() now that the implementation doesn't do it implicitly.

* WebProcess/WebPage/WebInspector.cpp:
(WebKit::WebInspector::startPageProfiling):
(WebKit::WebInspector::stopPageProfiling):
Don't implicitly show the inspector. These methods are only called
through the WKBundleInspector API and via IPC from WebInspectorProxy.

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

4 years ago[GStreamer] webaudio crash on ARM platforms
philn@webkit.org [Wed, 18 May 2016 14:48:28 +0000 (14:48 +0000)]
[GStreamer] webaudio crash on ARM platforms
https://bugs.webkit.org/show_bug.cgi?id=157838

Reviewed by Michael Catanzaro.

* platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:
(webKitWebAudioSrcConstructed): Explicitely cast the integer value
of the max-bytes property to guint64 which is the expected type of
this property. The compiler can't guess this on its own.

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

4 years ago[GStreamer] webaudio playback improvements
philn@webkit.org [Wed, 18 May 2016 14:39:33 +0000 (14:39 +0000)]
[GStreamer] webaudio playback improvements
https://bugs.webkit.org/show_bug.cgi?id=155228

Reviewed by Michael Catanzaro.

* platform/audio/gstreamer/AudioDestinationGStreamer.cpp:
(WebCore::autoAudioSinkChildAddedCallback): Fix sink buffer-time
to 100ms to reduce playback latency.
(WebCore::AudioDestinationGStreamer::AudioDestinationGStreamer):
Connect to child-added signal of autoaudiosink to be notified when
a real sink is added into the bin.
* platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:
(webKitWebAudioSrcConstructed): Fine-tune blocksize of appsrc
according to the buffer size already configured on the src element.

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

4 years ago[GStreamer] Use FakeSink to get a decoded texture from a pipeline
yoon@igalia.com [Wed, 18 May 2016 14:30:41 +0000 (14:30 +0000)]
[GStreamer] Use FakeSink to get a decoded texture from a pipeline
https://bugs.webkit.org/show_bug.cgi?id=153641

Reviewed by Philippe Normand.

.:

* Source/cmake/FindGStreamer.cmake: Bump gst-gl version to 1.8.0

Source/WebCore:

Relying on GstGLImageSink to use GStreamerGL brings a lot of overheads such as
window handling, context switching and overlay handling which are not needed in
our case.

This patch replaces GstGLImageSink with a custom GstBin which has a
GstGLUpload, GstGLColorConvert, and GstFakeSink.

GstFakeSink sends decoded frames via handoff signal from the vqueue thread of
GStreamer. Previously,  GstGLImageSink passes frames through GStreamer's GL
thread, which adds additional overhead.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::GstVideoFrameHolder::~GstVideoFrameHolder): Modified to
unmap GstVideoFrame without async call. GstGLMemory will unmap itself
in gl-thread.
(WebCore::MediaPlayerPrivateGStreamerBase::drawCallback):
(WebCore::MediaPlayerPrivateGStreamerBase::createVideoSinkGL): Split
out creating of the gst-gl video sink into the separte method.
(WebCore::MediaPlayerPrivateGStreamerBase::paint): Remove assertion
for the threaded compositor. It can be called by focusing event.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:

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

4 years agoResolve !important properties from different shadow trees in a single pass.
antti@apple.com [Wed, 18 May 2016 14:21:37 +0000 (14:21 +0000)]
Resolve !important properties from different shadow trees in a single pass.
https://bugs.webkit.org/show_bug.cgi?id=157836

Reviewed by Andreas Kling.

* css/StyleResolver.cpp:
(WebCore::StyleResolver::CascadedProperties::addImportantMatches):

Instead of doing multiple passes over increasing tree context ordinals collect matches with
non-zero ordinals to a vector and sort it to ascending order.

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

4 years agoFix the allinone-build after r198669
ossy@webkit.org [Wed, 18 May 2016 09:15:44 +0000 (09:15 +0000)]
Fix the allinone-build after r198669
https://bugs.webkit.org/show_bug.cgi?id=157798

Reviewed by Michael Catanzaro.

* CMakeLists.txt: Use DerivedSources.cpp only on Windows, it's broken everywhere else.

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

4 years agoCascading order for !important properties in ::slotted and ::host rules is incorrect
antti@apple.com [Wed, 18 May 2016 08:41:50 +0000 (08:41 +0000)]
Cascading order for !important properties in ::slotted and ::host rules is incorrect
https://bugs.webkit.org/show_bug.cgi?id=157789
<rdar://problem/26318781>

Reviewed by Andreas Kling.

LayoutTests/imported/w3c:

* csswg-test/css-scoping-1/shadow-cascade-order-001-expected.txt: This now passes.

Source/WebCore:

https://drafts.csswg.org/css-scoping-1/#shadow-cascading

"When comparing two declarations that have different tree contexts, then for normal rules the declaration earlier
in the shadow-including tree order wins, and for important rules the declaration coming later in the shadow-including
tree order wins."

* css/ElementRuleCollector.cpp:
(WebCore::MatchRequest::MatchRequest):
(WebCore::ElementRuleCollector::ElementRuleCollector):
(WebCore::ElementRuleCollector::matchedRuleList):
(WebCore::ElementRuleCollector::addMatchedRule):
(WebCore::ElementRuleCollector::clearMatchedRules):
(WebCore::ElementRuleCollector::addElementStyleProperties):
(WebCore::ElementRuleCollector::sortAndTransferMatchedRules):

    Pass the tree context ordinal onwards so we can implement the order reversal semantics for !important properties.

(WebCore::ElementRuleCollector::matchAuthorRules):
(WebCore::ElementRuleCollector::matchHostPseudoClassRules):
(WebCore::ElementRuleCollector::matchSlottedPseudoElementRules):

    Don't flush the matched rules immediately to get the right ordering. Instead compute tree context ordinal
    that is then used as a sorting criteria.

(WebCore::ElementRuleCollector::collectSlottedPseudoElementRulesForSlot):
(WebCore::ElementRuleCollector::collectMatchingRulesForList):
(WebCore::compareRules):

    Sort regular rules so that earlier shadow trees win.

(WebCore::ElementRuleCollector::sortMatchedRules):
* css/ElementRuleCollector.h:
* css/StyleResolver.cpp:
(WebCore::StyleResolver::State::clear):
(WebCore::StyleResolver::MatchResult::addMatchedProperties):
(WebCore::StyleResolver::CascadedProperties::addMatch): Added.

    Add a helper.

(WebCore::StyleResolver::CascadedProperties::addNormalMatches):

    Split normal and important to different functions for clarity.

(WebCore::StyleResolver::CascadedProperties::addImportantMatches):

    For !important properties a later shadow tree wins. Do multiple passes to apply in correct order if needed.

* css/StyleResolver.h:
(WebCore::StyleResolver::MatchResult::matchedProperties):

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

4 years agoAX: [ATK] Use WebCore Accessibility's AccessibilityText for AtkObject name and descri...
jdiggs@igalia.com [Wed, 18 May 2016 07:12:09 +0000 (07:12 +0000)]
AX: [ATK] Use WebCore Accessibility's AccessibilityText for AtkObject name and description
https://bugs.webkit.org/show_bug.cgi?id=157822

Reviewed by Chris Fleizach.

Source/WebCore:

Remove the old code which was overriding WebCore Accessibility and always use
AccessibilityText.

If the AccessibilityText's textSource is HelpText or SummaryText, it should be exposed
as the AtkObject description. If the textSource is TitleTagText and there is no other
text alternative, the value should also be exposed in this fashion. Note that AtkObject's
description property is equivalent to AXAPI's AXHelp property.

If the AccessibilityText's textSource is anything other than the above, the first
non-empty value should be exposed as the AtkObject name. Depending on the source of
the name content, AtkObject's name property can be the equivalent of AXAPI's AXTitle.
However, most of the time, AtkObject's name property is equivalent to AXAPI's
AXDescription property.

By making these changes, what WebKit exposes for ATK is now extremely similar to what
WebKit exposes on the Mac (modulo the property names) and also with what is defined in
the HTML Accessibility and Accessible Name and Description Computation API mappings specs.

Now that the exposure is correct, the Layout Tests needed to be adjusted accordingly because
asking for the "AXDescription" gives you the AXDescription on the Mac and the AtkObject
description in GNU/Linux. But as indicated above, what ATK calls a "description" is what
the Mac calls "help."

Ultimately our Layout Tests and/or our platform TestRunner API should be modified to deal
with these differences more gracefully. (Bug https://bugs.webkit.org/show_bug.cgi?id=157187
has been opened for that task.) In the meantime, the existing tests have been given platform
checks to ask for the right property on each platform. This was done in such a way as to not
require other (non-ATK) platforms change their current expectations files.

* accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
(webkitAccessibleGetName):
(webkitAccessibleGetDescription):

Tools:

Fix AccessibilityUIElement::helpText() so that it returns an empty string rather than
nullptr upon failure.

* WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
(WTR::AccessibilityUIElement::helpText):

LayoutTests:

Now that the exposure is correct, the Layout Tests needed to be adjusted accordingly because asking
for the "AXDescription" gives you the AXDescription on the Mac and the AtkObject description in
GNU/Linux. But what the Mac calls a "description" is what ATK calls a "name." What ATK calls a
"description" is what the Mac calls "help."

Ultimately our Layout Tests and/or our platform TestRunner API should be modified to deal with
with these differences more gracefully. (Bug https://bugs.webkit.org/show_bug.cgi?id=157187 has
been opened for that task.) In the meantime, the existing tests have been given platform checks
to ask for the right property on each platform. This was done in such a way as to not require
other (non-ATK) platforms change their current expectations files.

In addition to the above, three previously-failing tests were corrected and are now passing.

* accessibility/alt-tag-on-image-with-nonimage-role.html:
* accessibility/aria-help.html:
* accessibility/aria-label.html:
* accessibility/aria-labeled-with-hidden-node.html:
* accessibility/aria-labelledby-on-input.html:
* accessibility/aria-labelledby-overrides-aria-labeledby.html:
* accessibility/aria-labelledby-overrides-label.html:
* accessibility/aria-labelledby-stay-within.html:
* accessibility/aria-labelledby-with-descendants.html:
* accessibility/aria-namefrom-author.html:
* accessibility/aria-option-role.html:
* accessibility/canvas-description-and-role.html:
* accessibility/empty-image-with-title.html:
* accessibility/fieldset-element.html:
* accessibility/focusable-div.html:
* accessibility/gtk/no-notification-for-unrendered-iframe-children-expected.txt:
* accessibility/gtk/no-notification-for-unrendered-iframe-children.html:
* accessibility/gtk/title-and-alt-expected.txt:
* accessibility/gtk/title-and-alt.html:
* accessibility/help-text.html:
* accessibility/img-alt-tag-only-whitespace-expected.txt:
* accessibility/img-alt-tag-only-whitespace.html:
* accessibility/img-aria-button-alt-tag.html:
* accessibility/img-fallsback-to-title.html:
* accessibility/input-image-alt.html:
* accessibility/loading-iframe-sends-notification.html:
* accessibility/media-element.html:
* accessibility/radio-button-title-label.html:
* accessibility/self-referencing-aria-labelledby.html:
* accessibility/svg-bounds.html:
* platform/gtk/TestExpectations:
* platform/gtk/accessibility/alt-tag-on-image-with-nonimage-role-expected.txt: Added.
* platform/gtk/accessibility/aria-help-expected.txt:
* platform/gtk/accessibility/aria-hidden-negates-no-visibility-expected.txt: Added.
* platform/gtk/accessibility/aria-labeled-with-hidden-node-expected.txt: Added.
* platform/gtk/accessibility/aria-labelledby-on-input-expected.txt: Added.
* platform/gtk/accessibility/aria-labelledby-overrides-aria-label-expected.txt: Added.
* platform/gtk/accessibility/aria-labelledby-overrides-aria-labeledby-expected.txt: Added.
* platform/gtk/accessibility/aria-labelledby-overrides-label-expected.txt: Added.
* platform/gtk/accessibility/aria-labelledby-with-descendants-expected.txt: Added.
* platform/gtk/accessibility/aria-namefrom-author-expected.txt: Added.
* platform/gtk/accessibility/aria-option-role-expected.txt: Added.
* platform/gtk/accessibility/aria-switch-text-expected.txt:
* platform/gtk/accessibility/canvas-description-and-role-expected.txt: Added.
* platform/gtk/accessibility/empty-image-with-title-expected.txt: Added.
* platform/gtk/accessibility/fieldset-element-expected.txt: Added.
* platform/gtk/accessibility/focusable-div-expected.txt: Added.
* platform/gtk/accessibility/help-text-expected.txt: Added.
* platform/gtk/accessibility/image-link-expected.txt:
* platform/gtk/accessibility/image-map1-expected.txt:
* platform/gtk/accessibility/image-map2-expected.txt:
* platform/gtk/accessibility/image-with-alt-and-map-expected.txt:
* platform/gtk/accessibility/img-alt-tag-only-whitespace-expected.txt: Added.
* platform/gtk/accessibility/img-aria-button-alt-tag-expected.txt: Added.
* platform/gtk/accessibility/img-fallsback-to-title-expected.txt:
* platform/gtk/accessibility/input-image-alt-expected.txt: Added.
* platform/gtk/accessibility/media-element-expected.txt:
* platform/gtk/accessibility/radio-button-title-label-expected.txt:
* platform/gtk/accessibility/self-referencing-aria-labelledby-expected.txt: Added.
* platform/gtk/accessibility/svg-bounds-expected.txt: Added.

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

4 years agoAdd LayerListMutationDetector to hittesting.
zalan@apple.com [Wed, 18 May 2016 03:39:12 +0000 (03:39 +0000)]
Add LayerListMutationDetector to hittesting.
https://bugs.webkit.org/show_bug.cgi?id=157758

Reviewed by Simon Fraser.

Hittesting is supposed to be readonly.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::hitTestLayer):
* rendering/RenderLayer.h:
(WebCore::RenderLayer::clearZOrderLists):

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

4 years agoRemove toJS template methods taking const Ref and const RefPtr
youenn.fablet@crf.canon.fr [Wed, 18 May 2016 03:29:22 +0000 (03:29 +0000)]
Remove toJS template methods taking const Ref and const RefPtr
https://bugs.webkit.org/show_bug.cgi?id=157791

Reviewed by Chris Dumez.

Updating toJS template method taking a const Ref<T>& to take a Ref<T>&&.
Updating toJS template method taking a const RefPtr<T>& to take a RefPtr<T>&&.
Updating binding generator to generate rvalue references.

Covered by existing tests.

* bindings/js/JSDOMBinding.h:
(WebCore::toJS):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateConstructorDefinition):
* bindings/scripts/test/JS/JSTestInterface.cpp:
(WebCore::JSTestInterfaceConstructor::construct):
* bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
(WebCore::JSTestNamedConstructorNamedConstructor::construct):
* bindings/scripts/test/JS/JSTestNode.cpp:
(WebCore::JSTestNodeConstructor::construct):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::JSTestObjConstructor::construct):
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
(WebCore::constructJSTestOverloadedConstructors1):
(WebCore::constructJSTestOverloadedConstructors2):
(WebCore::constructJSTestOverloadedConstructors3):
(WebCore::constructJSTestOverloadedConstructors4):
(WebCore::constructJSTestOverloadedConstructors5):
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::JSTestTypedefsConstructor::construct):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::didAddUserAgentShadowRoot):

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

4 years agoLayoutTest inspector/debugger/tail-recursion.html failing on WK2 debug
sbarati@apple.com [Wed, 18 May 2016 02:53:45 +0000 (02:53 +0000)]
LayoutTest inspector/debugger/tail-recursion.html failing on WK2 debug
https://bugs.webkit.org/show_bug.cgi?id=157801

Rubber-stamped by Joseph Pecoraro.

* inspector/debugger/tail-recursion.html:

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

4 years agoWeb Inspector: NavigationSidebarPanel should coordinate item selection between its...
mattbaker@apple.com [Wed, 18 May 2016 02:26:12 +0000 (02:26 +0000)]
Web Inspector: NavigationSidebarPanel should coordinate item selection between its tree outlines
https://bugs.webkit.org/show_bug.cgi?id=157813
<rdar://problem/26331779>

Reviewed by Timothy Hatcher.

* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel.prototype._treeSelectionDidChange):
Deselecting elements in other tree outlines is now done in the base class.

* UserInterface/Views/NavigationSidebarPanel.js:
(WebInspector.NavigationSidebarPanel.prototype.createContentTreeOutline):
Listen for selection changed events on all content tree outlines.
(WebInspector.NavigationSidebarPanel.prototype.treeElementAddedOrChanged):
Moved stub from the public section to the protected section.
(WebInspector.NavigationSidebarPanel.prototype._contentTreeOutlineTreeSelectionDidChange):
Deselect tree elements in any content tree outline that is not the
parent of the selected element.

(WebInspector.NavigationSidebarPanel.prototype._treeSelectionDidChange): Deleted.
Rename _contentTreeOutlineTreeSelectionDidChange, to prevent being
shadowed by subclasses with _treeSelectionDidChange event handlers.

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

4 years agoAX: Adding children incorrectly when there are nested inline continuations
n_wang@apple.com [Wed, 18 May 2016 02:14:48 +0000 (02:14 +0000)]
AX: Adding children incorrectly when there are nested inline continuations
https://bugs.webkit.org/show_bug.cgi?id=157818

Reviewed by Chris Fleizach.

Source/WebCore:

When getting the inline element continuation's next sibling, if we fall back on to the parent
case, we might end up adding the same node repeatedly. Fixed it by skipping this case.

Test: accessibility/mac/nested-inline-elements-children.html

* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::nextSibling):

LayoutTests:

* accessibility/mac/nested-inline-elements-children-expected.txt: Added.
* accessibility/mac/nested-inline-elements-children.html: Added.

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

4 years agoJSC should detect the right default locale even when it's not embedded in WebCore
fpizlo@apple.com [Wed, 18 May 2016 02:11:19 +0000 (02:11 +0000)]
JSC should detect the right default locale even when it's not embedded in WebCore
https://bugs.webkit.org/show_bug.cgi?id=157755
rdar://problem/24665424

Reviewed by Keith Miller.

This makes JSC try to use WTF's platform user preferred language detection if the DOM did
not register a defaultLanguage callback. The result is that when JSC runs standalone it
will detect the platform user preferred language almost the same way as when it's embedded
in WebCore. The only difference is that WebCore may have its own additional overrides via
the WK API. But in the absence of overrides, WebCore uses the same WTF logic that JSC falls
back to.

We first found this bug because on iOS, the intl tests would fail because ICU would report
a somewhat bogus locale on that platform. Prior to this change, standalone JSC would fall
back to ICU's locale detection. It turns out that the ICU default locale is also bogus on
OS X, just less so. For example, setting things to Poland did not result in the jsc shell
printing dates Polish-style. Now it will print them Polish-style if your system preferences
say so. Also, the tests don't fail on iOS anymore.

* runtime/IntlObject.cpp:
(JSC::defaultLocale):

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

4 years agoAdd media query support for wide gamut displays on Mac
dino@apple.com [Wed, 18 May 2016 02:07:11 +0000 (02:07 +0000)]
Add media query support for wide gamut displays on Mac
https://bugs.webkit.org/show_bug.cgi?id=157824
<rdar://problem/26333137>

Reviewed by Simon Fraser.

Source/WebCore:

Implement the Mac version of the color-gamut media query
by filling out the screenSupportsExtendedColor function.

On Yosemite, we always return false. On El Capitan, we
can check the ColorProfile via ColorSync to see if the
screen is wide gamut.

There is already a test in fast/media/mq-color-gamut.html

* css/MediaQueryEvaluator.cpp:
(WebCore::color_gamutMediaFeatureEval): Pass the mainFrame's view
to screenSupportsExtendedColor, so that it can fetch the NSScreen.
* platform/PlatformScreen.h: screenSupportsExtendedColor now takes
an optional Widget parameter.
* platform/ios/PlatformScreenIOS.mm:
(WebCore::screenSupportsExtendedColor): Add empty parameter.
* platform/mac/PlatformScreenMac.mm:
(WebCore::screenSupportsExtendedColor): Get the NSWindow, then the
NSScreen, then the ColorSpace, then the ColorSyncProfile, and
check if it is a wide gamut profile.
* platform/spi/cg/CoreGraphicsSPI.h: Add the SPI declarations.

LayoutTests:

Remove the check for sRGB, since it is confusingly false
on browsers that don't implement this query, and is likely
to be dropped from the specification.

Also, make the text readable.

* fast/media/mq-color-gamut-expected.html:
* fast/media/mq-color-gamut.html:

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

4 years agoUnreviewed, fix Darin's post-mortem review comments for r201052.
cdumez@apple.com [Wed, 18 May 2016 01:26:11 +0000 (01:26 +0000)]
Unreviewed, fix Darin's post-mortem review comments for r201052.

* rendering/RenderFieldset.cpp:
(WebCore::RenderFieldset::findLegend):
* rendering/svg/SVGRenderSupport.cpp:
(WebCore::SVGRenderSupport::layoutChildren):

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

4 years agoWeb Inspector: Remove TimelineSidebarPanel.js as it's no longer referenced anywhere
mattbaker@apple.com [Wed, 18 May 2016 00:13:24 +0000 (00:13 +0000)]
Web Inspector: Remove TimelineSidebarPanel.js as it's no longer referenced anywhere
https://bugs.webkit.org/show_bug.cgi?id=157819

Reviewed by Timothy Hatcher.

* UserInterface/Views/TimelineSidebarPanel.js: Removed.
Removed unused file.

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

4 years agoMake handleAcceptedCandidate a public function
bdakin@apple.com [Tue, 17 May 2016 23:24:19 +0000 (23:24 +0000)]
Make handleAcceptedCandidate a public function
https://bugs.webkit.org/show_bug.cgi?id=157763
-and corresponding-
rdar://problem/26206397

Reviewed by Tim Horton.

Source/WebCore:

Define handleAcceptedCandidateWithSoftSpaces on EditorClient so that it can
be invoked on any EditorClient.
* loader/EmptyClients.h:
* page/EditorClient.h:
(WebCore::EditorClient::handleAcceptedCandidateWithSoftSpaces):

Source/WebKit/mac:

This patch re-names handleAcceptedCandidate to
handleAcceptedCandidateWithSoftSpaces. The function now takes a
WebCore::TextCheckingResult instead of an NSTextCheckingResult and it can be
called from outside of WebEditorClient.

* WebCoreSupport/WebEditorClient.h:
* WebCoreSupport/WebEditorClient.mm:
(WebEditorClient::handleRequestedCandidates):
(WebEditorClient::handleAcceptedCandidateWithSoftSpaces):
(textCheckingResultFromNSTextCheckingResult): Deleted.
(WebEditorClient::handleAcceptedCandidate): Deleted.

Move showCandidates to WebViewPrivate so that it can be overridden by a test.
* WebView/WebViewInternal.h:
* WebView/WebViewPrivate.h:

Source/WebKit2:

This patch makes handleAcceptedCandidate a public member of WebViewImpl
instead of a private member.
* UIProcess/Cocoa/WebViewImpl.h:
(WebKit::WebViewImpl::createWeakPtr):

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit2Cocoa/autofocused-text-input.html: Added.
* TestWebKitAPI/Tests/mac/ViewWithEditableAreaLeak.mm: Added.
(-[DoNotLeakWebView dealloc]):
(-[DoNotLeakWebView showCandidates:forString:inRect:forSelectedRange:view:completionHandler:]):
(-[DoNotLeakFrameLoadDelegate webView:didFinishLoadForFrame:]):
(TestWebKitAPI::TEST):

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

4 years agoUnreviewed debug build fix after r201052.
cdumez@apple.com [Tue, 17 May 2016 23:22:30 +0000 (23:22 +0000)]
Unreviewed debug build fix after r201052.

* rendering/svg/RenderSVGText.cpp:
(WebCore::findPreviousAndNextAttributes): Deleted.

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

4 years agoREGRESSION(r192855): Math.random() always produces the same first 7 decimal points...
commit-queue@webkit.org [Tue, 17 May 2016 22:52:47 +0000 (22:52 +0000)]
REGRESSION(r192855): Math.random() always produces the same first 7 decimal points the first two invocations
https://bugs.webkit.org/show_bug.cgi?id=157805
<rdar://problem/26327851>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-05-17
Reviewed by Geoffrey Garen.

Source/WTF:

* wtf/WeakRandom.h:
(WTF::WeakRandom::setSeed):
Advance once to randomize the 32bit seed across the 128bit state
and avoid re-using 64bits of state in the second advance.

LayoutTests:

* js/dom/math-random-initial-values-expected.txt: Added.
* js/dom/math-random-initial-values.html: Added.
* js/resources/math-random-initial-values-iframe.html: Added.
Test that less then 5% of the time, early Math.random invocations
produce very similiar values. Before this change we were failing
100%, but after we see similiar values mostly around 0-3%.

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

4 years agoUse RenderChildIterator more for traversing a renderer's children
cdumez@apple.com [Tue, 17 May 2016 22:39:00 +0000 (22:39 +0000)]
Use RenderChildIterator more for traversing a renderer's children
https://bugs.webkit.org/show_bug.cgi?id=157811

Reviewed by Antti Koivisto.

Use RenderChildIterator more for traversing a renderer's children.

* inspector/InspectorLayerTreeAgent.cpp:
(WebCore::InspectorLayerTreeAgent::layersForNode):
(WebCore::InspectorLayerTreeAgent::gatherLayersUsingRenderObjectHierarchy):
* inspector/InspectorLayerTreeAgent.h:
* rendering/AutoTableLayout.cpp:
(WebCore::AutoTableLayout::recalcColumn):
* rendering/InlineIterator.h:
(WebCore::isEmptyInline):
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::addFocusRingRects):
* rendering/RenderBox.cpp:
(WebCore::RenderBox::positionForPoint):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::updateOutlineAutoAncestor):
* rendering/RenderElement.h:
* rendering/RenderFieldset.cpp:
(WebCore::RenderFieldset::findLegend):
* rendering/RenderFieldset.h:
* rendering/RenderInline.cpp:
(WebCore::RenderInline::generateCulledLineBoxRects):
(WebCore::RenderInline::culledInlineFirstLineBox):
(WebCore::RenderInline::culledInlineVisualOverflowBoundingBox):
(WebCore::RenderInline::dirtyLineBoxes):
* rendering/RenderListItem.cpp:
(WebCore::getParentOfFirstLineBox):
* rendering/RenderObject.cpp:
(WebCore::RenderObject::setFlowThreadStateIncludingDescendants):
(WebCore::RenderObject::addAbsoluteRectForLayer):
(WebCore::RenderObject::paintingRootRect):
(WebCore::RenderObject::removeFromRenderFlowThreadIncludingDescendants):
(WebCore::RenderObject::invalidateFlowThreadContainingBlockIncludingDescendants):
(WebCore::RenderObject::updateDragState):
* rendering/RenderTable.cpp:
(WebCore::RenderTable::firstColumn):
* rendering/RenderTableCol.cpp:
(WebCore::RenderTableCol::clearPreferredLogicalWidthsDirtyBits):
* rendering/RenderTableSection.cpp:
(WebCore::RenderTableSection::layoutRows):
* rendering/RenderTreeAsText.cpp:
(WebCore::write):
* rendering/svg/RenderSVGText.cpp:
(WebCore::findPreviousAndNextAttributes):
(WebCore::RenderSVGText::subtreeChildWasAdded):
(WebCore::RenderSVGText::subtreeChildWillBeRemoved):
* rendering/svg/SVGRenderSupport.cpp:
(WebCore::updateObjectBoundingBox):
(WebCore::SVGRenderSupport::computeContainerBoundingBoxes):
(WebCore::SVGRenderSupport::layoutChildren):
* rendering/svg/SVGTextLayoutAttributesBuilder.cpp:
(WebCore::SVGTextLayoutAttributesBuilder::collectTextPositioningElements):
* rendering/svg/SVGTextMetricsBuilder.cpp:
(WebCore::SVGTextMetricsBuilder::walkTree):

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

4 years agoRemove ES6_GENERATORS flag
dino@apple.com [Tue, 17 May 2016 22:34:45 +0000 (22:34 +0000)]
Remove ES6_GENERATORS flag
https://bugs.webkit.org/show_bug.cgi?id=157815
<rdar://problem/26332894>

Reviewed by Geoffrey Garen.

This flag isn't needed. Generators are enabled everywhere and
part of a stable specification.

.:

* Source/cmake/OptionsWin.cmake:
* Source/cmake/WebKitFeatures.cmake:
* Source/cmake/tools/vsprops/FeatureDefines.props:
* Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

Source/JavaScriptCore:

* Configurations/FeatureDefines.xcconfig:
* parser/Parser.cpp:
(JSC::Parser<LexerType>::parseFunctionDeclaration): Deleted.
(JSC::Parser<LexerType>::parseClass): Deleted.
(JSC::Parser<LexerType>::parseExportDeclaration): Deleted.
(JSC::Parser<LexerType>::parseAssignmentExpression): Deleted.
(JSC::Parser<LexerType>::parseProperty): Deleted.
(JSC::Parser<LexerType>::parseFunctionExpression): Deleted.

Source/WebCore:

* Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

* Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

* Configurations/FeatureDefines.xcconfig:

Source/WTF:

* wtf/FeatureDefines.h:

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

4 years agoREGRESSION: JetStream crashes on some iPhones
ggaren@apple.com [Tue, 17 May 2016 22:27:21 +0000 (22:27 +0000)]
REGRESSION: JetStream crashes on some iPhones
https://bugs.webkit.org/show_bug.cgi?id=157814

Reviewed by Michael Saboff.

* bmalloc/Sizes.h: Reduce smallMax to 32kB.

Previous justification for 64kB was:

    * bmalloc/Sizes.h: Upped smallMax to 64kB. Upping to 32kB is pretty
    reasonable, since sizes between 16kB and 32kB share page sizes. I went
    all the way up to 64kB because the GC uses 64kB blocks, and also just
    for extra padding to ensure that large allocations are indeed rare.

It turns out that the bump to 64kB substantially increases our memory
high water mark on JetStream, leading to jetsam crashes. Also, there
doesn't seem to be a practical performance problem to putting objects in
the (32kB - 64kB) range in the large allocator.

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

4 years agoRollout r200426 since it causes PLT regressions.
keith_miller@apple.com [Tue, 17 May 2016 22:19:59 +0000 (22:19 +0000)]
Rollout r200426 since it causes PLT regressions.
https://bugs.webkit.org/show_bug.cgi?id=157812

Unreviewed rollout of r200426 since the bots see a ~.6% PLT regression from the patch.

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

4 years agoWeb Inspector: inspector tests should redirect and log console.trace() calls in test...
bburg@apple.com [Tue, 17 May 2016 22:04:48 +0000 (22:04 +0000)]
Web Inspector: inspector tests should redirect and log console.trace() calls in test output
https://bugs.webkit.org/show_bug.cgi?id=157802
<rdar://problem/26325671>

Reviewed by Timothy Hatcher.

* UserInterface/Test/FrontendTestHarness.js:
(FrontendTestHarness.prototype.redirectConsoleToTestOutput.createProxyConsoleHandler):
Remove bind() that is now unnecessary. Also redirect console.warn.

(FrontendTestHarness.prototype.redirectConsoleToTestOutput):
For console.trace(), throw and catch a dummy Error to get a stack trace.
Do some post processing on it to remove useless frames and sanitize file paths.

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