2013-09-25  Oliver Hunt  <oliver@apple.com>

        Implement prefixed-destructuring assignment
        https://bugs.webkit.org/show_bug.cgi?id=121930

        Reviewed by Mark Hahnenberg.

        Relanding with fix after rollout

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156514 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Move CSS MatchRequest from StyleResolver to a private definition in ElementRuleCollector
https://bugs.webkit.org/show_bug.cgi?id=121986

Reviewed by Andreas Kling.

MatchRequest is an internal type of ElementRuleCollector now, move the definition
to ElementRuleCollector.

* css/DocumentRuleSets.h:
* css/ElementRuleCollector.h:
(WebCore::ElementRuleCollector::MatchRequest::MatchRequest):
* css/StyleResolver.h:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156515 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Windows] Work around missing C++11 features of MSVC by providing an implementation for
std::is_trivially_destructible based on the existing std::has_trivial_destructor.

Rubber-stamped by Anders Carlsson.

* wtf/StdLibExtras.h: Add implementation for is_trivially_destructable for MSVC 2010 and prior.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156516 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Windows] Unreviewed Build fix.

* WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Add missing
symbol export to support tests.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156517 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Make GCC happy

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156518 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Layout Test http/tests/inspector/network/network-iframe-load-and-delete.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=121998

* platform/mac/TestExpectations: Marking as such.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156519 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Web Inspector: dissociate old content views that are spliced from back/forward list
https://bugs.webkit.org/show_bug.cgi?id=121987

Patch by Brian J. Burg <burg@cs.washington.edu> on 2013-09-26
Reviewed by Timothy Hatcher.

There was a bug where old back/forward list entries were not being dissociated when
the newly-shown content view was already in the list. Instead, dissociation should be
skipped if the old list entry is not already in the list.

* UserInterface/ContentViewContainer.js:
(WebInspector.ContentViewContainer.prototype.showContentView):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156520 268f45cc-cd09-0410-ab3c-d52691b4dbfc
GetterSetter construction should take a VM instead of ExecState.
<https://webkit.org/b/121993>

Reviewed by Sam Weinig.

Pass VM& instead of ExecState* to GetterSetter. Updated surrounding
code at touched sites to cache VM in a local for fewer loads.

JSC release binary size -= 4120 bytes.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156521 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[MediaStream] make MediaStream testable
https://bugs.webkit.org/show_bug.cgi?id=121967

Reviewed by Dean Jackson.

Source/WebCore: 

No new tests, existing tests updated.

* CMakeLists.txt: Add MockMediaStreamCenter.
* GNUmakefile.list.am: Ditto.

* Modules/mediastream/MediaStreamTrack.idl: Add SkipVTableValidation.
* Modules/mediastream/NavigatorUserMediaError.idl: Add JSGenerateToJSObject.
* WebCore.exp.in: Export MockMediaStreamCenter::registerMockMediaStreamCenter.

* WebCore.xcodeproj/project.pbxproj: Add MockMediaStreamCenter.
* dom/DOMError.h: Make the destructor virtual because it has a derived class.
* dom/DOMError.idl:

* platform/mock/MockMediaStreamCenter.cpp: Added.
* platform/mock/MockMediaStreamCenter.h: Added.

* testing/Internals.cpp: Register the mock stream center.

Source/WebKit: 

* WebKit.xcodeproj/project.pbxproj: Add WebUserMediaClient.

Source/WebKit/mac: 

* WebCoreSupport/WebUserMediaClient.h: Added.
* WebCoreSupport/WebUserMediaClient.mm: Added.

* WebView/WebUIDelegatePrivate.h: Declare decidePolicyForUserMediaRequestFromOrigin:listener:

* WebView/WebView.mm:
(-[WebView _commonInitializationWithFrameName:groupName:]): Register WebUserMediaClient.
(-[WebView _setUserMediaClient:]): New.
(-[WebView _userMediaClient]): New.
* WebView/WebViewData.h:
* WebView/WebViewPrivate.h:

Tools: 

* DumpRenderTree/mac/UIDelegate.mm:
(-[UIDelegate webView:decidePolicyForUserMediaRequestFromOrigin:listener:]): Add a very permissive
    user media request policy delegate.

LayoutTests: 

* fast/mediastream/MediaStream-add-remove-tracks-expected.txt:
* fast/mediastream/MediaStream-add-remove-tracks.html: Make the test results more understandable
    to simplify debugging failures.
* fast/mediastream/MediaStream-onended-expected.txt:
* fast/mediastream/MediaStream-onended.html: Ditto. Fix a test error: stopping stream A should
    not stop stream B even when it was created from stream A.
* fast/mediastream/MediaStreamConstructor-expected.txt:
* fast/mediastream/MediaStreamConstructor.html: Make the test results more understandable. Fix a
    logic errors: webkitMediaStream is an object, not a function. JSC does not support 
    object.constructor.name, use object.constructor.toString() instead.
* fast/mediastream/MediaStreamTrackEvent-constructor-expected.txt:
* fast/mediastream/MediaStreamTrackEvent-constructor.html: Update now that getUserMedia() works.
* fast/mediastream/argument-types-expected.txt: Updated with "Failing" results because the correct 
    behavior is unknown. The spec says "the syntax for getUserMedia() is still under discussion".


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156522 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Tentative SunSpider 1.0.2
https://bugs.webkit.org/show_bug.cgi?id=122002

Reviewed by Gavin Barraclough.

PerformanceTests/SunSpider: 

Be even more aggressive about asking for zero delay between tests by
setting a timeout at the beginning of a test instead of the end. This is
another step toward reducing noise -- particularly noise caused by
power management -- just like the step down from 10ms to 0ms.

Browsers typically put a 4ms floor on timers. The sooner we set
our timer, the sooner it will fire.

* make-hosted:
* resources/driver-TEMPLATE.html: Changed the driver to set the timeout
earlier.
* tests/sunspider-1.0.2: Added. These tests are unchanged from 1.0.1.

Websites/webkit.org: 

See comments in PerformanceTests/SunSpider.

* perf/sunspider-1.0.2: Added.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156523 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Use the move assignment operator when reinserting values in the hash map
https://bugs.webkit.org/show_bug.cgi?id=122003

Reviewed by Alexey Proskuryakov.

Using the move assignment operator ensures that the existing values will be destroyed correctly.

* wtf/HashTable.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156524 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Fixed a version number string in SunSpider 1.0.2
https://bugs.webkit.org/show_bug.cgi?id=122004

Reviewed by Gavin Barraclough.

PerformanceTests/SunSpider: 

* resources/driver-TEMPLATE.html:
* resources/results-TEMPLATE.html: 1.0.2!

Websites/webkit.org: 

* perf/sunspider-1.0.2/sunspider-1.0.2/results.html: 1.0.2!


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156525 268f45cc-cd09-0410-ab3c-d52691b4dbfc
"Build fix".

We can't use std::move. Explicitly destroy the old value and then construct the new in place.

* wtf/HashTable.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156526 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Move m_style to RenderElement
https://bugs.webkit.org/show_bug.cgi?id=121936

Source/WebCore: 

Reviewed by Andreas Kling.

Text renderers always have the same style as their parent. They can get their style via the parent pointer
rather than having a member of their own.
        
This shrinks RenderText by a pointer.

* dom/PseudoElement.cpp:
(WebCore::PseudoElement::didRecalcStyle):
        
    Text renderers have no independent style. No need to set it.

* editing/ApplyBlockElementCommand.cpp:
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::addChildToAnonymousColumnBlocks):
        
    Avoid getting style from text child before it is added to tree.

(WebCore::RenderBlock::updateFirstLetterStyle):
(WebCore::RenderBlock::createFirstLetterRenderer):
* rendering/RenderButton.cpp:
(WebCore::RenderButton::styleDidChange):
(WebCore::RenderButton::setText):
* rendering/RenderCombineText.cpp:
(WebCore::RenderCombineText::styleDidChange):
                
    Don't set text style anymore.

* rendering/RenderElement.cpp:
(WebCore::RenderElement::RenderElement):
(WebCore::RenderElement::setStyle):
        
    Notify child text renderers of style change.

(WebCore::RenderElement::setAnimatableStyle):
(WebCore::RenderElement::setPseudoStyle):
        
    Push down to RenderElement, remove text branches.

(WebCore::RenderElement::addChild):
        
    Notify text renderers of style change when added to tree.

(WebCore::RenderElement::propagateStyleToAnonymousChildren):
* rendering/RenderElement.h:
(WebCore::RenderElement::style):
(WebCore::RenderElement::setStyleInternal):
        
    Move m_style from RenderObject.

(WebCore::RenderObject::style):
        
    Inline this in RenderElement.h instead of making it virtual.

* rendering/RenderInline.cpp:
(WebCore::updateStyleOfAnonymousBlockContinuations):
(WebCore::RenderInline::styleDidChange):
        
    Tighten typing to call RenderElement::setStyle.

(WebCore::RenderInline::clippedOverflowRectForRepaint):
        
    Change assert. This can get legitimately called during layout for the first letter renderers.
    This was previously avoided by luck.

* rendering/RenderMenuList.cpp:
(WebCore::RenderMenuList::styleDidChange):
(WebCore::RenderMenuList::setText):
        
    Don't set text style anymore.

* rendering/RenderObject.cpp:
(WebCore::RenderObject::RenderObject):
(WebCore::RenderObject::containingBlock):
(WebCore::RenderObject::drawLineForBoxSide):
(WebCore::RenderObject::hasEntirelyFixedBackground):
(WebCore::RenderObject::container):
(WebCore::RenderObject::cachedFirstLineStyle):

    Switch to style(), avoid unnecessary repetition.
    Move code out.

* rendering/RenderObject.h:
        
    Move functions to RenderElement.

(WebCore::RenderObject::isBeforeContent):
(WebCore::RenderObject::isAfterContent):
        
    Avoid accessing style for text renderers as these are called before the renderer
    is added to tree.

(WebCore::RenderObject::setNeedsPositionedMovementLayout):
* rendering/RenderRegion.cpp:
(WebCore::RenderRegion::restoreRegionObjectsOriginalStyle):
(WebCore::RenderRegion::setObjectStyleInRegion):
* rendering/RenderSearchField.cpp:
(WebCore::RenderSearchField::updateCancelButtonVisibility):
* rendering/RenderText.cpp:
* rendering/RenderText.h:
        
    Remove setStyle.

(WebCore::RenderText::style):
        
    Get style from parent.

* rendering/mathml/RenderMathMLOperator.cpp:
(WebCore::RenderMathMLOperator::updateFromElement):
(WebCore::RenderMathMLOperator::createGlyph):
* rendering/style/ContentData.cpp:
(WebCore::TextContentData::createRenderer):
(WebCore::CounterContentData::createRenderer):
(WebCore::QuoteContentData::createRenderer):
        
    Pseudo style for RenderText subclasses comes from parent without any explicit setting.

* style/StyleResolveTree.cpp:
(WebCore::Style::createTextRendererIfNeeded):
(WebCore::Style::resolveLocal):
(WebCore::Style::updateTextStyle):
(WebCore::Style::resolveShadowTree):
(WebCore::Style::resolveTree):
        
    No need to set or update text renderer style separately.

LayoutTests: 

Reviewed by Andreas Kling.
        
Progressions from text style updating correctly in all cases.

* compositing/contents-opaque/hidden-with-visible-text-expected.txt:
* compositing/contents-opaque/visibility-hidden-expected.txt:
        
    Can't figure out why these progress but they do. The new rendering (showing nothing)
    is correct and matches Firefox.

* platform/mac/svg/custom/SVGPoint-matrixTransform-expected.txt:
* platform/mac/svg/custom/getTransformToElement-expected.txt:
* platform/mac/svg/custom/text-ctm-expected.txt:
* platform/mac/svg/custom/text-hit-test-expected.txt:
* platform/mac/svg/text/append-text-node-to-tspan-expected.txt:



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156527 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sync toWebKitCSSShaderValue() behavior with other toCSSFooValue()
https://bugs.webkit.org/show_bug.cgi?id=121886

Reviewed by Darin Adler.

toWebKitCSSShaderValue() behavior is different from other to CSSFooValue().
It shouldn't return null. The type checking should be done before doing type cast.

* css/StyleResolver.cpp:
(WebCore::StyleResolver::createCustomFilterOperationWithInlineSyntax):
* css/WebKitCSSShaderValue.h:
(WebCore::toWebKitCSSShaderValue):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156528 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[GCC] Fix build with gcc < 4.8.1, which does not have is_trivially_destructible
https://bugs.webkit.org/show_bug.cgi?id=121999

Patch by Gustavo Noronha Silva <gns@gnome.org> on 2013-09-27
Reviewed by Benjamin Poulain.

* wtf/StdLibExtras.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156529 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Merge remote-tracking branch 'webkit/master'