Use references instead of pointers to RenderBlockFlow in FloatingObjects and ComputeFloatOffsetAdapter
https://bugs.webkit.org/show_bug.cgi?id=124074

Reviewed by Sam Weinig.

Just a straightforward conversion from const pointers to const references.

Also, remove unneeded argument from FloatingObjects constructor.

No new tests, no behavior change.

* rendering/FloatingObjects.cpp:
(WebCore::ComputeFloatOffsetAdapter::ComputeFloatOffsetAdapter):
(WebCore::FloatingObjects::findNextFloatLogicalBottomBelow):
(WebCore::FloatingObjects::findNextFloatLogicalBottomBelowForBlock):
(WebCore::FloatingObjects::FloatingObjects):
(WebCore::FloatingObjects::clearLineBoxTreePointers):
(WebCore::FloatingObjects::computePlacedFloatsTree):
(WebCore::shapeInfoForFloat):
(WebCore::::updateOffsetIfNeeded):
(WebCore::::collectIfNeeded):
(WebCore::::heightRemaining):
* rendering/FloatingObjects.h:
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::createFloatingObjects):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158963 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Checking for TypeError in RTCPeerConnection object creation
https://bugs.webkit.org/show_bug.cgi?id=124049

Patch by Thiago de Barros Lacerda <thiago.lacerda@openbossa.org> on 2013-11-08
Reviewed by Eric Carlson.

Source/WebCore:

If invalid parameters are passed on RTCPeerConnection creation we must throw a TypeError exception.
According to the spec it requires a Dictionary argument, the RTCConfiguration, which is mandatory.

Please notice that this patch does not make every tests run as expected,
RTCPeerConnectionHandlerMock needs to be update to deal with contraints.

Existing tests were updated.

* GNUmakefile.list.am:
* Modules/mediastream/RTCPeerConnection.idl:
* UseJSC.cmake:
* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.vcxproj/WebCore.vcxproj.filters:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSRTCPeerConnectionCustom.cpp: Added.
(WebCore::JSRTCPeerConnectionConstructor::constructJSRTCPeerConnection):

LayoutTests:

Please notice that this patch does not make every tests run as expected,
RTCPeerConnectionHandlerMock needs to be update to deal with contraints.

* fast/mediastream/RTCPeerConnection-AddRemoveStream.html:
* fast/mediastream/RTCPeerConnection-createAnswer.html:
* fast/mediastream/RTCPeerConnection-createOffer.html:
* fast/mediastream/RTCPeerConnection-datachannel.html:
* fast/mediastream/RTCPeerConnection-dtmf.html:
* fast/mediastream/RTCPeerConnection-events.html:
* fast/mediastream/RTCPeerConnection-expected.txt:
* fast/mediastream/RTCPeerConnection-ice-expected.txt:
* fast/mediastream/RTCPeerConnection-ice.html:
* fast/mediastream/RTCPeerConnection-localDescription.html:
* fast/mediastream/RTCPeerConnection-onnegotiationneeded.html:
* fast/mediastream/RTCPeerConnection-remoteDescription.html:
* fast/mediastream/RTCPeerConnection-stats-expected.txt:
* fast/mediastream/RTCPeerConnection-stats.html:
* fast/mediastream/RTCPeerConnection-statsSelector-expected.txt:
* fast/mediastream/RTCPeerConnection-statsSelector.html:
* fast/mediastream/RTCPeerConnection.html:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158964 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Ended event should work also when playback rate is negative
https://bugs.webkit.org/show_bug.cgi?id=123879

Patch by Piotr Grad <p.grad@samsung.com> on 2013-11-08
Reviewed by Eric Carlson.

Source/WebCore:

According to W3C specification playback is ended also when playback rate is
negative and position is the earliest possible position.

Test: media/video-ended-event-negative-playback.html

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

LayoutTests:

Tests if ended event is triggered for audio/video elements after
changing playback rate to negative.

* media/video-ended-event-negative-playback-expected.txt: Added.
* media/video-ended-event-negative-playback.html: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158965 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Web Inspector: remove -webkit-min and -webkit-max from CSS completions
https://bugs.webkit.org/show_bug.cgi?id=124072

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2013-11-08
Reviewed by Timothy Hatcher.

-webkit-min and -webkit-max are not implemented in WebCore, despite mentions of it.

* UserInterface/CSSKeywordCompletions.js:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158966 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[CSS Shapes] Image valued shape-outside that extends vertically into the margin-box is top-clipped
https://bugs.webkit.org/show_bug.cgi?id=123769

Reviewed by Dirk Schulze.

Source/WebCore:

Remove the assumption that Y coordinates are >= 0 from the RasterShapeIntervals class
and correct its computeShapeMarginIntervals() method. The computeShapeMarginIntervals()
method now generates intervals with Y coordinates that begin at the image shape's
bounds.y - shape-margin, which may be less than 0.

The RasterShapeIntervals::intervalsAt() method now offsets its Y coordinate parameter
by the shape-margin. A non-const overload of the method was added to centralize all
access to m_intervalLists.

Test: fast/shapes/shape-outside-floats/shape-outside-floats-image-margin-004.html
      fast/shapes/shape-outside-floats/shape-outside-floats-image-margin-005.html

* rendering/shapes/RasterShape.cpp:
(WebCore::MarginIntervalGenerator::intervalAt): Don't clip X coordinates to 0 since they can extend into the margin-box.
(WebCore::RasterShapeIntervals::appendInterval): Use the non-const intervalsAt() method.
(WebCore::RasterShapeIntervals::uniteMarginInterval): Ditto.
(WebCore::RasterShapeIntervals::computeShapeMarginIntervals): See above.
* rendering/shapes/RasterShape.h:
(WebCore::RasterShapeIntervals::RasterShapeIntervals): Added a field for the margin.
(WebCore::RasterShapeIntervals::intervalsAt): Offset y coordinates by the margin; added a non-const overload.

LayoutTests:

Verify that lines overlap a shape-outside that extends into the top of the margin-box
do wrap around the top of the shape as well its side and bottom.

* fast/shapes/shape-outside-floats/shape-outside-floats-image-margin-004-expected.html: Added.
* fast/shapes/shape-outside-floats/shape-outside-floats-image-margin-004.html: Added.
* fast/shapes/shape-outside-floats/shape-outside-floats-image-margin-005-expected.html: Added.
* fast/shapes/shape-outside-floats/shape-outside-floats-image-margin-005.html: Added.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158967 268f45cc-cd09-0410-ab3c-d52691b4dbfc
REGRESSION (r155660): Some Etherpad pages not scrollable with overlay scrollbars
https://bugs.webkit.org/show_bug.cgi?id=124075

Reviewed by Beth Dakin.

In r155660 I removed some scrollbar-related layouts when scrollbars
are in overlay mode.

However, ScrollView::updateScrollbars() has a case where we still need
to do multiple pases, related to its "Never ever try to both gain/lose a
scrollbar in the same pass" comment. When we avoid making a new scrollbar
because the other was removed, we need to do another pass to bring the
correct scrollbar back.

Can't test overlay scrollbars in tests.

* platform/ScrollView.cpp:
(WebCore::ScrollView::updateScrollbars):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158968 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Merge IDBTransactionBackendInterface and IDBTransactionBackendImpl
https://bugs.webkit.org/show_bug.cgi?id=124077

Reviewed by Alexey Proskuryakov.

Source/WebCore:

The abstraction is no longer needed.

* CMakeLists.txt:
* GNUmakefile.list.am:
* WebCore.xcodeproj/project.pbxproj:

* Modules/indexeddb/IDBTransactionBackendInterface.h: Removed.

* Modules/indexeddb/IDBTransactionBackend.cpp: Renamed from Source/WebCore/Modules/indexeddb/IDBTransactionBackendImpl.cpp.
* Modules/indexeddb/IDBTransactionBackend.h: Renamed from Source/WebCore/Modules/indexeddb/IDBTransactionBackendImpl.h.

* Modules/indexeddb/IDBBackingStoreInterface.h:
* Modules/indexeddb/IDBCursorBackend.cpp:
* Modules/indexeddb/IDBCursorBackend.h:
* Modules/indexeddb/IDBDatabaseBackendImpl.cpp:
* Modules/indexeddb/IDBDatabaseBackendImpl.h:
* Modules/indexeddb/IDBFactoryBackendInterface.h:
* Modules/indexeddb/IDBTransactionBackendOperations.h:
* Modules/indexeddb/IDBTransactionCoordinator.cpp:
* Modules/indexeddb/IDBTransactionCoordinator.h:
* Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.cpp:
* Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.h:
* Modules/indexeddb/leveldb/IDBFactoryBackendLevelDB.cpp:
* Modules/indexeddb/leveldb/IDBFactoryBackendLevelDB.h:

Source/WebKit2:

* WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp:
* WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158969 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Begin stubbing out a KeyedEncoder class in WebCore
https://bugs.webkit.org/show_bug.cgi?id=124079

Reviewed by Sam Weinig.

Source/WebCore:

* WebCore.exp.in:
Add symbol needed by WebCore.

* WebCore.xcodeproj/project.pbxproj:
Add new header file.

* history/HistoryItem.cpp:
(WebCore::HistoryItem::encodeBackForwardTree):
* history/HistoryItem.h:
Add an encodeBackForwardTree overload that takes a KeyedEncoder object. Encode the version.

* platform/KeyedCoding.h:
Add a KeyedEncoder class that just has a single encodeUInt32 member function for now.

Source/WebKit2:

* Shared/KeyedEncoder.h: Removed.
* Shared/cf/KeyedCodingValueCF.cpp: Removed.
* Shared/cf/KeyedEncoder.cpp: Added.
Remove old keyed encoders.

(WebKit::createDictionary):
Helper function to create a mutable dictionary.
(WebKit::KeyedEncoder::KeyedEncoder):
Create the root dictionary.

(WebKit::KeyedEncoder::encodeUInt32):
Create a CFNumberRef and add it to the dictionary.

* Shared/cf/KeyedEncoder.h: Added.
* WebKit2.xcodeproj/project.pbxproj:
Add new files.

* WebProcess/WebPage/WebBackForwardListProxy.cpp:
(WebKit::updateBackForwardItem):
Create a KeyedEncoder and encode the history tree.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158971 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Teach CanvasObserver about references
https://bugs.webkit.org/show_bug.cgi?id=124082

Reviewed by Anders Carlsson.

* css/CSSCanvasValue.cpp:
* css/CSSCanvasValue.h:
* html/HTMLCanvasElement.cpp:
* html/HTMLCanvasElement.h:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158972 268f45cc-cd09-0410-ab3c-d52691b4dbfc
It should be easy to disable blinding on a per-architecture basis
https://bugs.webkit.org/show_bug.cgi?id=124083

Reviewed by Michael Saboff.

* assembler/AbstractMacroAssembler.h:
(JSC::AbstractMacroAssembler::haveScratchRegisterForBlinding):
(JSC::AbstractMacroAssembler::scratchRegisterForBlinding):
(JSC::AbstractMacroAssembler::canBlind):
(JSC::AbstractMacroAssembler::shouldBlindForSpecificArch):
* assembler/MacroAssembler.h:
(JSC::MacroAssembler::shouldBlind):
(JSC::MacroAssembler::store32):
(JSC::MacroAssembler::branch32):
(JSC::MacroAssembler::branchAdd32):
(JSC::MacroAssembler::branchMul32):
* assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::canBlind):
* assembler/MacroAssemblerX86_64.h:
(JSC::MacroAssemblerX86_64::haveScratchRegisterForBlinding):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158975 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Web Inspector: It should be possible to debug the Inspector code
https://bugs.webkit.org/show_bug.cgi?id=124065

Reviewed by Timothy Hatcher.

Source/WebKit2:

When the script is paused, the debugger will pause all the pages in the same PageGroup.
All the Inspector windows were created in the same PageGroup, so pausing one debugger
would stop the other too.

Added WebInspectorPageGroups to manage the PageGroups created for the Inspectors.
The WebInspectors will now use the inspection "level" to figure out which PageGroup to use.
The inspector that debugs the main page will use "__WebInspectorPageGroupLevel1__",
the second inspector (that debugs the first inspector) will use "__WebInspectorPageGroupLevel2__" ...

* UIProcess/WebInspectorProxy.cpp:
(WebKit::WebInspectorPageGroups::shared):
(WebKit::WebInspectorPageGroups::inspectorLevel):
(WebKit::WebInspectorPageGroups::isInspectorPageGroup):
(WebKit::WebInspectorPageGroups::inspectorPageGroupLevel):
(WebKit::WebInspectorPageGroups::inspectorPageGroupForLevel):
(WebKit::WebInspectorPageGroups::createInspectorPageGroup):
(WebKit::WebInspectorProxy::WebInspectorProxy):
(WebKit::WebInspectorProxy::inspectorPageGroup):
(WebKit::WebInspectorProxy::isInspectorPage):
(WebKit::WebInspectorProxy::canAttach):
* UIProcess/WebInspectorProxy.h:

LayoutTests:

Added test to check that a second inspector window can be used to debug the first one.

* inspector-protocol/debugger/nested-inspectors-expected.txt: Added.
* inspector-protocol/debugger/nested-inspectors.html: Added.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158976 268f45cc-cd09-0410-ab3c-d52691b4dbfc
FTL should support NewArrayBuffer
https://bugs.webkit.org/show_bug.cgi?id=124067

Reviewed by Michael Saboff.
        
This expanded coverage and revealed some bugs.
        
This revealed a bug in FTL::OSRExitCompiler where it was assuming that it could save
the framePointer in regT3 even though DFG::reifyInlinedCallFrames() would clobber it.
It turns out that this can be fixed by just completely restoring the stack prior to
doing reifyInlineCallFrames().
        
I used this as an opportunity to simplify NewArray. That revealed a bug; whenever we say
lowJSValue() in there we need to use ManualOperandSpeculation since we're using it to
rebox values even when we also have to do some speculations. The speculations are done
at the top of compileNewArray().
        
This also revealed a bug in StringCharAt() for the OOB case.

* ftl/FTLAbstractHeapRepository.h:
(JSC::FTL::AbstractHeapRepository::forIndexingType):
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLIntrinsicRepository.h:
* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileNewArray):
(JSC::FTL::LowerDFGToLLVM::compileNewArrayBuffer):
(JSC::FTL::LowerDFGToLLVM::compileStringCharAt):
* ftl/FTLOSRExitCompiler.cpp:
(JSC::FTL::compileStub):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158977 268f45cc-cd09-0410-ab3c-d52691b4dbfc
KeyedEncoder should be able to encoder objects
https://bugs.webkit.org/show_bug.cgi?id=124085

Reviewed by Sam Weinig.

Source/WebCore:

* history/HistoryItem.cpp:
(WebCore::HistoryItem::encodeBackForwardTree):
Encode the root object.

(WebCore::HistoryItem::encodeBackForwardTreeNode):
Encode the target.

* history/HistoryItem.h:
Add new members.

* platform/KeyedCoding.h:
(WebCore::KeyedEncoder::encodeObject):
Call beginObject, call the functor and then call endObject().

Source/WebKit2:

Add a dictionary stack to KeyedEncoder that's pushed and popped by
beginObject/endObject.

* Shared/cf/KeyedEncoder.cpp:
(WebKit::KeyedEncoder::KeyedEncoder):
(WebKit::KeyedEncoder::~KeyedEncoder):
(WebKit::KeyedEncoder::encodeUInt32):
(WebKit::KeyedEncoder::encodeString):
(WebKit::KeyedEncoder::beginObject):
(WebKit::KeyedEncoder::endObject):
* Shared/cf/KeyedEncoder.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158978 268f45cc-cd09-0410-ab3c-d52691b4dbfc
getCueAsHTML() on an empty cue should return a document fragment
https://bugs.webkit.org/show_bug.cgi?id=124084

Reviewed by Darin Adler.

Source/WebCore: 

Test: media/track/track-cue-empty-cue-text.html

* html/track/WebVTTParser.cpp:
(WebCore::WebVTTParser::createDocumentFragmentFromCueText): Don't return early when the
    passed an empty string.

LayoutTests: 

* media/track/track-cue-empty-cue-text-expected.txt: Added.
* media/track/track-cue-empty-cue-text.html: Added.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158979 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Implement more KeyedEncoder functionality
https://bugs.webkit.org/show_bug.cgi?id=124089

Reviewed by Beth Dakin.

Source/WebCore:

* bindings/js/SerializedScriptValue.h:
* history/HistoryItem.cpp:
(WebCore::HistoryItem::encodeBackForwardTreeNode):
* platform/KeyedCoding.h:
(WebCore::KeyedEncoder::encodeConditionalObject):

Source/WebKit2:

* Shared/cf/KeyedEncoder.cpp:
(WebKit::KeyedEncoder::encodeBytes):
(WebKit::KeyedEncoder::encodeInt32):
(WebKit::KeyedEncoder::encodeFloat):
* Shared/cf/KeyedEncoder.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158980 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Get rid of the bizarre Darwin/x86-only MacroAssembler::shouldBlindForSpecificArch(uintptr_t) overload
https://bugs.webkit.org/show_bug.cgi?id=124087

Reviewed by Michael Saboff.

* assembler/MacroAssembler.h:
(JSC::MacroAssembler::shouldBlindPointerForSpecificArch):
(JSC::MacroAssembler::shouldBlind):
* assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::shouldBlindForSpecificArch):



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