Correct the elapsedTime calculation in SVG animations
https://bugs.webkit.org/show_bug.cgi?id=119289

Patch by Youenn Fablet <youennf@gmail.com> on 2013-10-31
Reviewed by Brent Fulgham.

Merged from Blink: https://chromium.googlesource.com/chromium/blink/+/338f9badca7fb7880abdb0cecd5f02493c1f7d2e

Source/WebCore:

Test: svg/animations/getCurrentTime-pause-unpause.html

* svg/animation/SMILTimeContainer.cpp:
(WebCore::SMILTimeContainer::SMILTimeContainer):
(WebCore::SMILTimeContainer::elapsed):
(WebCore::SMILTimeContainer::begin):
(WebCore::SMILTimeContainer::pause):
(WebCore::SMILTimeContainer::resume):
(WebCore::SMILTimeContainer::setElapsed):
* svg/animation/SMILTimeContainer.h:

LayoutTests:

* svg/animations/getCurrentTime-pause-unpause-expected.txt: Added.
* svg/animations/getCurrentTime-pause-unpause.html: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158405 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Add a WKRemoteObject class
https://bugs.webkit.org/show_bug.cgi?id=123586

Reviewed by Dan Bernstein.

Source/WebKit2:

* Shared/API/Cocoa/WKRemoteObject.h: Added.
* Shared/API/Cocoa/WKRemoteObject.mm: Added.
(-[WKRemoteObject _initWithObjectRegistry:interface:]):
Add designated initializer.

(-[WKRemoteObject conformsToProtocol:]):
Check if the interface protocol conforms to our protocol.

(methodArgumentTypeEncodingForSelector):
Helper function that looks up a method in a given protocol and returns its type encoding.

(-[WKRemoteObject methodSignatureForSelector:]):
Try to find the method argument type encoding for the given selector and return its NSMethodSignature.

(-[WKRemoteObject forwardInvocation:]):
Add stub.

* Shared/API/Cocoa/WKRemoteObjectInterface.mm:
Remove a newline.

* Shared/API/Cocoa/WKRemoteObjectRegistry.mm:
(-[WKRemoteObjectRegistry remoteObjectProxyWithInterface:]):
Establish a mapping between interface identifiers and remote object proxies.

* WebKit2.xcodeproj/project.pbxproj:

Tools:

* TestWebKitAPI/Tests/WebKit2ObjC/WKRemoteObjectRegistry.mm:
(TestWebKitAPI::TEST):
Add a conformsToProtocol: test.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158407 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Web Inspector: Convert some InspectorObject member variables to HashSet/HashMap
https://bugs.webkit.org/show_bug.cgi?id=123579

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

* inspector/InspectorDOMDebuggerAgent.h:
* inspector/InspectorDOMDebuggerAgent.cpp:
(WebCore::InspectorDOMDebuggerAgent::InspectorDOMDebuggerAgent):
(WebCore::InspectorDOMDebuggerAgent::setBreakpoint):
(WebCore::InspectorDOMDebuggerAgent::removeBreakpoint):
(WebCore::InspectorDOMDebuggerAgent::pauseOnNativeEventIfNeeded):
(WebCore::InspectorDOMDebuggerAgent::setXHRBreakpoint):
(WebCore::InspectorDOMDebuggerAgent::removeXHRBreakpoint):
(WebCore::InspectorDOMDebuggerAgent::willSendXMLHttpRequest):
Make m_eventListenerBreakpoints and m_xhrBreakpoints HashSet.

* inspector/InspectorDebuggerAgent.h:
* inspector/InspectorDebuggerAgent.cpp:
(WebCore::InspectorDebuggerAgent::InspectorDebuggerAgent):
(WebCore::InspectorDebuggerAgent::disable):
(WebCore::InspectorDebuggerAgent::setBreakpointByUrl):
(WebCore::InspectorDebuggerAgent::removeBreakpoint):
(WebCore::InspectorDebuggerAgent::didParseSource):
Make m_javaScriptBreakpoints a HashMap.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158408 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Split PendingDeleteCall into its own header
https://bugs.webkit.org/show_bug.cgi?id=123597

Reviewed by Beth “Okay I guess so, bro” Dakin.

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

* Modules/indexeddb/IDBDatabaseBackendImpl.cpp:
(WebCore::IDBDatabaseBackendImpl::processPendingCalls):
(WebCore::IDBDatabaseBackendImpl::deleteDatabase):
* Modules/indexeddb/IDBDatabaseBackendImpl.h:

* Modules/indexeddb/IDBPendingDeleteCall.h: Added.
(WebCore::IDBPendingDeleteCall::create):
(WebCore::IDBPendingDeleteCall::callbacks):
(WebCore::IDBPendingDeleteCall::IDBPendingDeleteCall):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158409 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Address review comments.

* Shared/API/Cocoa/WKRemoteObject.h:
* Shared/API/Cocoa/WKRemoteObject.mm:
(-[WKRemoteObject conformsToProtocol:]):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158410 268f45cc-cd09-0410-ab3c-d52691b4dbfc
FTL Int32ToDouble should handle the forward type check case where you need a recovery
https://bugs.webkit.org/show_bug.cgi?id=123605

Reviewed by Mark Hahnenberg.
        
If you have a Int32ToDouble that needs to do a type check and it's required to do a
forward exit, then it needs to manually pass in a value recovery for itself in the
OSR exit - since this is one of those forward-exiting nodes that doesn't have a
preceding MovHint.

* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileInt32ToDouble):
(JSC::FTL::LowerDFGToLLVM::forwardTypeCheck):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158412 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Begin stubbing out the WKRemoteObjectCoder NSCoder subclass
https://bugs.webkit.org/show_bug.cgi?id=123596

Reviewed by Tim Horton.

* Shared/API/Cocoa/WKRemoteObject.mm:
(-[WKRemoteObject forwardInvocation:]):
Call through to the WKRemoteObjectRegistry.

* Shared/API/Cocoa/WKRemoteObjectCoder.h: Added.
* Shared/API/Cocoa/WKRemoteObjectCoder.mm: Added.
(-[WKRemoteObjectEncoder init]):
Create a root WKDictionary.

(-[WKRemoteObjectEncoder dealloc]):
Assert that the current dictionary is the root dictionary; that we're back where we started.

(-[WKRemoteObjectEncoder allowsKeyedCoding]):
Return YES.

(-[WKRemoteObjectEncoder encodeObject:forKey:]):
Check that the object is valid and then encode it.

(-[WKRemoteObjectEncoder _encodeInvocation:forKey:]):
Encode the method type string and invocation selector.

(-[WKRemoteObjectEncoder encodeBytes:length:forKey:]):
Create a WKDataRef and add it to the dictionary.

(-[WKRemoteObjectEncoder _encodeObjectForKey:usingBlock:]):
Create a new dictionary and call the block.

* Shared/API/Cocoa/WKRemoteObjectRegistry.mm:
(-[WKRemoteObjectRegistry _sendInvocation:interface:]):
Create an encoder and encode the invocation and interface.

* Shared/API/Cocoa/WKRemoteObjectRegistryInternal.h: Added.
Add IPI header.

* WebKit2.xcodeproj/project.pbxproj:
Add new files.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158413 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Compile fix for VS2012.
https://bugs.webkit.org/show_bug.cgi?id=123599

Patch by Alex Christensen <achristensen@webkit.org> on 2013-10-31
Reviewed by Brent Fulgham.

* WebCoreSupport/WebFrameLoaderClient.cpp:
(WebFrameLoaderClient::WebFramePolicyListenerPrivate::WebFramePolicyListenerPrivate):
(WebFrameLoaderClient::cancelPolicyCheck):
(WebFrameLoaderClient::receivedPolicyDecision):
Use nullptr instead of 0 for m_policyFunction, which is a std::function.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158414 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Web Inspector: Remove InspectorState
https://bugs.webkit.org/show_bug.cgi?id=123547

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

Source/WebCore:

* CMakeLists.txt:
* GNUmakefile.list.am:
* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.vcxproj/WebCore.vcxproj.filters:
* WebCore.xcodeproj/project.pbxproj:
* inspector/InspectorAgent.cpp:
(WebCore::InspectorAgent::InspectorAgent):
* inspector/InspectorAgent.h:
(WebCore::InspectorAgent::create):
* inspector/InspectorAllInOne.cpp:
* inspector/InspectorApplicationCacheAgent.cpp:
(WebCore::InspectorApplicationCacheAgent::InspectorApplicationCacheAgent):
* inspector/InspectorApplicationCacheAgent.h:
(WebCore::InspectorApplicationCacheAgent::create):
* inspector/InspectorBaseAgent.cpp:
(WebCore::InspectorBaseAgentInterface::InspectorBaseAgentInterface):
* inspector/InspectorBaseAgent.h:
(WebCore::InspectorBaseAgent::InspectorBaseAgent):
* inspector/InspectorCSSAgent.cpp:
(WebCore::InspectorCSSAgent::InspectorCSSAgent):
* inspector/InspectorCSSAgent.h:
(WebCore::InspectorCSSAgent::create):
* inspector/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::InspectorCanvasAgent):
* inspector/InspectorCanvasAgent.h:
(WebCore::InspectorCanvasAgent::create):
* inspector/InspectorClient.h:
* inspector/InspectorConsoleAgent.cpp:
(WebCore::InspectorConsoleAgent::InspectorConsoleAgent):
* inspector/InspectorConsoleAgent.h:
* inspector/InspectorController.cpp:
(WebCore::InspectorController::InspectorController):
(WebCore::InspectorController::connectFrontend):
(WebCore::InspectorController::disconnectFrontend):
* inspector/InspectorController.h:
* inspector/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::InspectorDOMAgent):
* inspector/InspectorDOMAgent.h:
(WebCore::InspectorDOMAgent::create):
* inspector/InspectorDOMDebuggerAgent.cpp:
(WebCore::InspectorDOMDebuggerAgent::create):
(WebCore::InspectorDOMDebuggerAgent::InspectorDOMDebuggerAgent):
* inspector/InspectorDOMDebuggerAgent.h:
* inspector/InspectorDOMStorageAgent.cpp:
(WebCore::InspectorDOMStorageAgent::InspectorDOMStorageAgent):
* inspector/InspectorDOMStorageAgent.h:
(WebCore::InspectorDOMStorageAgent::create):
* inspector/InspectorDatabaseAgent.cpp:
(WebCore::InspectorDatabaseAgent::InspectorDatabaseAgent):
* inspector/InspectorDatabaseAgent.h:
(WebCore::InspectorDatabaseAgent::create):
* inspector/InspectorDebuggerAgent.cpp:
(WebCore::InspectorDebuggerAgent::InspectorDebuggerAgent):
* inspector/InspectorDebuggerAgent.h:
* inspector/InspectorHeapProfilerAgent.cpp:
(WebCore::InspectorHeapProfilerAgent::create):
(WebCore::InspectorHeapProfilerAgent::InspectorHeapProfilerAgent):
* inspector/InspectorHeapProfilerAgent.h:
* inspector/InspectorIndexedDBAgent.cpp:
(WebCore::InspectorIndexedDBAgent::InspectorIndexedDBAgent):
* inspector/InspectorIndexedDBAgent.h:
(WebCore::InspectorIndexedDBAgent::create):
* inspector/InspectorInputAgent.cpp:
(WebCore::InspectorInputAgent::InspectorInputAgent):
* inspector/InspectorInputAgent.h:
(WebCore::InspectorInputAgent::create):
* inspector/InspectorLayerTreeAgent.cpp:
(WebCore::InspectorLayerTreeAgent::InspectorLayerTreeAgent):
* inspector/InspectorLayerTreeAgent.h:
(WebCore::InspectorLayerTreeAgent::create):
* inspector/InspectorMemoryAgent.cpp:
(WebCore::InspectorMemoryAgent::InspectorMemoryAgent):
(WebCore::InspectorMemoryAgent::create):
* inspector/InspectorMemoryAgent.h:
* inspector/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::create):
(WebCore::InspectorPageAgent::InspectorPageAgent):
* inspector/InspectorPageAgent.h:
* inspector/InspectorProfilerAgent.cpp:
(WebCore::PageProfilerAgent::PageProfilerAgent):
(WebCore::InspectorProfilerAgent::create):
(WebCore::WorkerProfilerAgent::WorkerProfilerAgent):
(WebCore::InspectorProfilerAgent::InspectorProfilerAgent):
* inspector/InspectorProfilerAgent.h:
* inspector/InspectorResourceAgent.cpp:
(WebCore::InspectorResourceAgent::InspectorResourceAgent):
* inspector/InspectorResourceAgent.h:
(WebCore::InspectorResourceAgent::create):
* inspector/InspectorRuntimeAgent.cpp:
(WebCore::InspectorRuntimeAgent::InspectorRuntimeAgent):
* inspector/InspectorRuntimeAgent.h:
* inspector/InspectorState.cpp: Removed.
* inspector/InspectorState.h: Removed.
* inspector/InspectorStateClient.h: Removed.
* inspector/InspectorTimelineAgent.cpp:
(WebCore::InspectorTimelineAgent::InspectorTimelineAgent):
* inspector/InspectorTimelineAgent.h:
(WebCore::InspectorTimelineAgent::create):
* inspector/InspectorWorkerAgent.cpp:
(WebCore::InspectorWorkerAgent::create):
(WebCore::InspectorWorkerAgent::InspectorWorkerAgent):
* inspector/InspectorWorkerAgent.h:
* inspector/PageConsoleAgent.cpp:
(WebCore::PageConsoleAgent::PageConsoleAgent):
* inspector/PageConsoleAgent.h:
(WebCore::PageConsoleAgent::create):
* inspector/PageDebuggerAgent.cpp:
(WebCore::PageDebuggerAgent::create):
(WebCore::PageDebuggerAgent::PageDebuggerAgent):
* inspector/PageDebuggerAgent.h:
* inspector/PageRuntimeAgent.cpp:
(WebCore::PageRuntimeAgent::PageRuntimeAgent):
* inspector/PageRuntimeAgent.h:
(WebCore::PageRuntimeAgent::create):
* inspector/WorkerConsoleAgent.cpp:
(WebCore::WorkerConsoleAgent::WorkerConsoleAgent):
* inspector/WorkerConsoleAgent.h:
(WebCore::WorkerConsoleAgent::create):
* inspector/WorkerDebuggerAgent.cpp:
(WebCore::WorkerDebuggerAgent::create):
(WebCore::WorkerDebuggerAgent::WorkerDebuggerAgent):
* inspector/WorkerDebuggerAgent.h:
* inspector/WorkerInspectorController.cpp:
(WebCore::WorkerInspectorController::WorkerInspectorController):
(WebCore::WorkerInspectorController::connectFrontend):
(WebCore::WorkerInspectorController::disconnectFrontend):
* inspector/WorkerInspectorController.h:
* inspector/WorkerRuntimeAgent.cpp:
(WebCore::WorkerRuntimeAgent::WorkerRuntimeAgent):
* inspector/WorkerRuntimeAgent.h:
(WebCore::WorkerRuntimeAgent::create):
* workers/DefaultSharedWorkerRepository.cpp:
(WebCore::SharedWorkerProxy::postMessageToPageInspector):
* workers/WorkerMessagingProxy.cpp:
(WebCore::WorkerMessagingProxy::postMessageToPageInspector):
* workers/WorkerMessagingProxy.h:
* workers/WorkerReportingProxy.h:

Source/WebKit/blackberry:

* WebCoreSupport/InspectorClientBlackBerry.cpp:
* WebCoreSupport/InspectorClientBlackBerry.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158415 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Remove unused Page::setDebuggerForAllPages
https://bugs.webkit.org/show_bug.cgi?id=123602

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

* page/Page.cpp:
* page/Page.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158416 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Remote Layer Tree: Vend layer contents via IOSurfaces
https://bugs.webkit.org/show_bug.cgi?id=123600

Reviewed by Anders Carlsson.

* Configurations/WebKit2.xcconfig:
Link WebKit2 against IOSurface.

* Shared/mac/RemoteLayerTreeTransaction.mm:
(WebKit::dumpChangedLayers):
Dump the size of the backing store instead of the pointer of its
SharedBitmap, because that's slightly more useful.

* UIProcess/mac/RemoteLayerTreeHost.mm:
(WebKit::RemoteLayerTreeHost::commit):
If a layer's backing store uses accelerated drawing, hand the IOSurface
to the CALayer for display.

* WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
(PlatformCALayerRemote::PlatformCALayerRemote):
Initialize contentsScale to 1 to match CA. Other properties will follow.

(PlatformCALayerRemote::ensureBackingStore):
Instead of replacing the RemoteLayerBackingStore when its properties
change, allow it to update them on the fly. Replacing them caused
us to throw away repaint rects when the accelerated drawing
flag was flipped.

(PlatformCALayerRemote::acceleratesDrawing):
(PlatformCALayerRemote::setAcceleratesDrawing):
Store the accelerated drawing flag and mark it dirty when it changes.

* WebProcess/WebPage/mac/PlatformCALayerRemote.h:
* WebProcess/WebPage/mac/RemoteLayerBackingStore.h:
(WebKit::RemoteLayerBackingStore::image):
Rename bitmap() to image() and have it create a CGImageRef from
the ShareableBitmap, ready for direct application to a CALayer.

(WebKit::RemoteLayerBackingStore::surface):
Return a IOSurface ready for direct application to a CALayer.

(WebKit::RemoteLayerBackingStore::acceleratesDrawing):
(WebKit::RemoteLayerBackingStore::hasFrontBuffer):
Return whether or not we have a front buffer/surface.

* WebProcess/WebPage/mac/RemoteLayerBackingStore.mm:
Forward-declare some CGIOSurface SPI.

(RemoteLayerBackingStore::RemoteLayerBackingStore):
(RemoteLayerBackingStore::ensureBackingStore):
Throw away our front image and reset flags if needed.

(RemoteLayerBackingStore::encode):
(RemoteLayerBackingStore::decode):
En/decode the front surface instead of the ShareableBitmap if needed,
using CoreIPC::MachPort. Destroy the port on receipt.

(createIOSurfaceContext):
Create a CGIOSurfaceContext from an IOSurface.

(createIOSurface):
Create an IOSurface of the given size.

(RemoteLayerBackingStore::image):
Return a CGImageRef, if we're not using accelerated drawing.
Moved from the header.

(RemoteLayerBackingStore::display):
(RemoteLayerBackingStore::drawInContext):
If using accelerated drawing, create and paint into an IOSurface.
Reorganize some code to make the copying-from-the-front-image code
work for both software and IOSurfaces.
Flush the context when completed, to ensure that any asynchronous
painting is complete before we vend the surface to the UI process.

* WebCore.exp.in:
Export sRGBColorSpaceRef.

* WebCore.xcodeproj/project.pbxproj:
Expose GraphicsContextCG.h.



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