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
Remote Layer Tree: RemoteLayerBackingStore partial repaint is broken for the tile cache
https://bugs.webkit.org/show_bug.cgi?id=123944

Reviewed by Simon Fraser.

Ensure that the tile cache retrieves repaint rects from the tile layer,
not from the tiled backing layer.

Rework RemoteLayerBackingStore painting to fix some rounding issues
that would cause pixel cracks upon repaint, and to speed it up a bit.

* Shared/mac/RemoteLayerBackingStore.h:
Redefine RepaintRectList because we can't include WebLayer.h here yet.
Remove createBackingStore, which was never implemented.
Remove mapToContentCoordinates, because we don't need it on Mac.

(WebKit::RemoteLayerBackingStore::paintingRects): Added.

* Shared/mac/RemoteLayerBackingStore.mm:
(RemoteLayerBackingStore::setNeedsDisplay):
(RemoteLayerBackingStore::display):
Stop using mapToContentCoordinates.

(RemoteLayerBackingStore::drawInContext):
Use clipping instead of painting the image multiple times.
Never repaint more than the dirty region's bounds.
Don't waste time with all of the drawNativeImage code, just use CG.
Unindent the switch's cases.
Store the rects we're painting so that enumerateRectsBeingDrawn can get them.
Pixel-snap the rects we're painting.
Clip the context before going to paint.

* WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
(PlatformCALayerRemote::enumerateRectsBeingDrawn):
* WebProcess/WebPage/mac/PlatformCALayerRemote.h:
Retrieve the rects currently being painted from our backing store, and
transform them (mostly) according to the CTM, to match the transformation
that will have occurred underneath wkCALayerEnumerateRectsBeingDrawnWithBlock.

* platform/graphics/ca/PlatformCALayer.h:
* platform/graphics/ca/mac/PlatformCALayerMac.h:
* platform/graphics/ca/mac/PlatformCALayerMac.mm:
(PlatformCALayerMac::enumerateRectsBeingDrawn):
Allow the PlatformCALayer to decide how to enumerate rects to paint.

* WebCore.exp.in:
* platform/graphics/mac/WebLayer.h:
Add RepaintRectList, remove some unnecessary WebCore::s.

* platform/graphics/mac/WebLayer.mm:
(WebCore::collectRectsToPaint):
Factor collectRectsToPaint out; it just grabs the rects from
the layer and makes the decision whether to repaint the bounds
of the dirty region or just the subregions.

Move calls to collectRectsToPaint() to callers of drawLayerContents(),
so that TileController can collect rects from the appropriate source
(the Tile layer) and other layers just continue grabbing them from
their relevant layers.

Make sure that the list that comes from collectRectsToPaint() always
has at least one rect in it (appending the clip bounds if we don't
want to repaint subregions) so we can simplify logic in drawLayerContents.

(WebCore::drawLayerContents):
Remove code to support CompositingCoordinatesBottomUp, as it's only
used on Windows, so this Mac-specific code doesn't need to support it.

Simplify logic given that dirtyRects will always be non-empty.

(-[WebLayer drawInContext:]):
(-[WebSimpleLayer setNeedsDisplayInRect:]):
* platform/graphics/ca/mac/TileController.mm:
(WebCore::TileController::platformCALayerPaintContents):
Adopt collectRectsToPaint.


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

Reviewed by Oliver Hunt.
        
Also rationalized some offsets in the DFG.

* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileAllocatePropertyStorage):
(JSC::DFG::SpeculativeJIT::compileReallocatePropertyStorage):
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLIntrinsicRepository.h:
* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileAllocatePropertyStorage):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158983 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Implement encoding of arrays of objects
https://bugs.webkit.org/show_bug.cgi?id=124091

Reviewed by Beth Dakin.

Source/WebCore:

* history/HistoryItem.cpp:
(WebCore::HistoryItem::encodeBackForwardTreeNode):
Encode the rest of the members.

* platform/KeyedCoding.h:
(WebCore::KeyedEncoder::encodeObjects):
Call beginArray, then beginArrayElement/endArrayElement for every element and lastly endArray.

Source/WebKit2:

Add a new array stack and push and pop from it accordingly.

* Shared/cf/KeyedEncoder.cpp:
(WebKit::KeyedEncoder::~KeyedEncoder):
(WebKit::KeyedEncoder::encodeBytes):
(WebKit::KeyedEncoder::encodeUInt32):
(WebKit::KeyedEncoder::encodeInt32):
(WebKit::KeyedEncoder::encodeInt64):
(WebKit::KeyedEncoder::encodeFloat):
(WebKit::KeyedEncoder::beginArray):
(WebKit::KeyedEncoder::beginArrayElement):
(WebKit::KeyedEncoder::endArrayElement):
(WebKit::KeyedEncoder::endArray):
* Shared/cf/KeyedEncoder.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158984 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Change collectStyleForPresentationAttribute and related functions to take a MutableStylePropertySet by reference
https://bugs.webkit.org/show_bug.cgi?id=124096

Reviewed by Andreas Kling.

Pass MutableStylePropertySet by reference. It is never null.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158985 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Reindent JSDOMBinding.h (finally.)

Rubber-stamped by Sam Weinig.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158986 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Improving readability of LayoutTests in fast/mediastream
https://bugs.webkit.org/show_bug.cgi?id=124095

Adding some indentation

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

* fast/mediastream/MediaStream-add-remove-tracks.html:
* fast/mediastream/MediaStream-onended.html:
* fast/mediastream/MediaStreamConstructor.html:
* fast/mediastream/RTCIceCandidate.html:
* 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-ice.html:
* fast/mediastream/RTCPeerConnection-localDescription.html:
* fast/mediastream/RTCPeerConnection-onnegotiationneeded.html:
* fast/mediastream/RTCPeerConnection-remoteDescription.html:
* fast/mediastream/RTCPeerConnection-state.html:
* fast/mediastream/RTCPeerConnection-stats.html:
* fast/mediastream/RTCPeerConnection-statsSelector.html:
* fast/mediastream/RTCPeerConnection.html:
* fast/mediastream/RTCSessionDescription.html:
* fast/mediastream/argument-types.html:
* fast/mediastream/constructors.html:
* fast/mediastream/enabled.html:
* fast/mediastream/getusermedia.html:
* fast/mediastream/no-interface-object.html:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158987 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Get rid of the FTL tail call APIs since they are unused
https://bugs.webkit.org/show_bug.cgi?id=124093

Reviewed by Oliver Hunt.

* ftl/FTLAbbreviations.h:
(JSC::FTL::buildCall):
* ftl/FTLOutput.h:



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158988 268f45cc-cd09-0410-ab3c-d52691b4dbfc
FTL should support Phantom(FinalObject:)
https://bugs.webkit.org/show_bug.cgi?id=124092

Reviewed by Oliver Hunt.

* ftl/FTLAbstractHeapRepository.h:
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::speculate):
(JSC::FTL::LowerDFGToLLVM::isType):
(JSC::FTL::LowerDFGToLLVM::isNotType):
(JSC::FTL::LowerDFGToLLVM::speculateFinalObject):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158989 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed build fix after r158984.

No needs to include "KeyedEncoder.h".
WebKit/Source/WebKit2/WebProcess/WebPage/WebBackForwardListProxy.cpp:31:26: fatal error: KeyedEncoder.h: No such file or directory

* WebProcess/WebPage/WebBackForwardListProxy.cpp: Removed #include line.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158990 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Updating LayoutTests that depend on RTCPeerConnection
https://bugs.webkit.org/show_bug.cgi?id=124097

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

Needed to do not throw unwanted exception

* 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-ice.html:
* fast/mediastream/RTCPeerConnection-localDescription.html:
* fast/mediastream/RTCPeerConnection-onnegotiationneeded.html:
* fast/mediastream/RTCPeerConnection-remoteDescription.html:
* fast/mediastream/RTCPeerConnection-state.html:

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