Changeset 75169 in webkit
- Timestamp:
- Jan 6, 2011 11:07:25 AM (13 years ago)
- Location:
- trunk
- Files:
-
- 5 added
- 32 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r75168 r75169 1 2011-01-06 James Robinson <jamesr@chromium.org> 2 3 Reviewed by Simon Fraser. 4 5 Implement mozilla's animationTime property 6 https://bugs.webkit.org/show_bug.cgi?id=51952 7 8 Tests for window.webkitAnimationTime. 9 10 * animations/animation-time-expected.txt: Added. 11 * animations/animation-time.html: Added. 12 * animations/script-tests/animation-time.js: Added. 13 1 14 2011-01-06 Abhishek Arya <inferno@chromium.org> 2 15 -
trunk/Tools/ChangeLog
r75166 r75169 1 2011-01-06 James Robinson <jamesr@chromium.org> 2 3 Reviewed by Simon Fraser. 4 5 Implement mozilla's animationTime property 6 https://bugs.webkit.org/show_bug.cgi?id=51952 7 8 Chromium DRT support for webkitAnimationTime. 9 10 * DumpRenderTree/chromium/WebViewHost.cpp: 11 (WebViewHost::paintInvalidatedRegion): 12 1 13 2011-01-06 Julie Parent <jparent@chromium.org> 2 14 -
trunk/Tools/DumpRenderTree/chromium/WebViewHost.cpp
r74844 r75169 1483 1483 } 1484 1484 ASSERT(m_paintRect.isEmpty()); 1485 webWidget()->clearCurrentAnimationTime(); 1485 1486 } 1486 1487 -
trunk/WebCore/Android.mk
r74851 r75169 447 447 page/animation/AnimationBase.cpp \ 448 448 page/animation/AnimationController.cpp \ 449 page/animation/AnimationTimeController.cpp \ 449 450 page/animation/CompositeAnimation.cpp \ 450 451 page/animation/ImplicitAnimation.cpp \ -
trunk/WebCore/CMakeLists.txt
r75069 r75169 1279 1279 page/animation/AnimationBase.cpp 1280 1280 page/animation/AnimationController.cpp 1281 page/animation/AnimationTimeController.cpp 1281 1282 page/animation/CompositeAnimation.cpp 1282 1283 page/animation/ImplicitAnimation.cpp -
trunk/WebCore/ChangeLog
r75168 r75169 1 2011-01-06 James Robinson <jamesr@chromium.org> 2 3 Reviewed by Simon Fraser. 4 5 Implement mozilla's animationTime property 6 https://bugs.webkit.org/show_bug.cgi?id=51952 7 8 Implements mozilla's animationTime property as described here: 9 https://developer.mozilla.org/en/DOM/window.mozAnimationStartTime 10 and http://hacks.mozilla.org/2010/08/more-efficient-javascript-animations-with-mozrequestanimationframe/ 11 The property is called webkitAnimationTime as calling it the 'Start' time is not very informative. 12 This property exposes a notion of a 'current' time to use for declarative animations and allows 13 scripts to synchronize imperative animations with declarative ones if they choose to. Once queried 14 this time is saved and used for all declarative animation updates until the embedder paints/composites 15 the next frame and clears it, or 15ms elapse (in case the embedder isn't producing frames, for example 16 if the page is in a background tab). 17 18 This patch also ensures that all declarative animations started in the same script execution block 19 are synchronized even if some time elapses while script is running. 20 21 Test: fast/animation/animation-time.html 22 23 * WebCore.gypi: 24 * page/DOMWindow.cpp: 25 (WebCore::DOMWindow::webkitAnimationTime): 26 * page/DOMWindow.h: 27 * page/DOMWindow.idl: 28 * page/Frame.cpp: 29 (WebCore::Frame::currentAnimationTime): 30 * page/Frame.h: 31 * page/Page.cpp: 32 (WebCore::Page::Page): 33 * page/Page.h: 34 (WebCore::Page::animationTime): 35 * page/animation/AnimationController.cpp: 36 (WebCore::AnimationControllerPrivate::beginAnimationUpdateTime): 37 * page/animation/AnimationTimeController.cpp: Added. 38 (WebCore::AnimationTimeController::AnimationTimeController): 39 (WebCore::AnimationTimeController::~AnimationTimeController): 40 (WebCore::AnimationTimeController::currentAnimationTime): 41 (WebCore::AnimationTimeController::clearCurrentAnimationTime): 42 (WebCore::AnimationTimeController::clearCurrentAnimationTimeTimerFired): 43 * page/animation/AnimationTimeController.h: Added. 44 (WebCore::AnimationTimeController::create): 45 1 46 2011-01-06 Abhishek Arya <inferno@chromium.org> 2 47 -
trunk/WebCore/GNUmakefile.am
r75070 r75169 2144 2144 WebCore/page/animation/AnimationController.h \ 2145 2145 WebCore/page/animation/AnimationControllerPrivate.h \ 2146 WebCore/page/animation/AnimationTimeController.cpp \ 2147 WebCore/page/animation/AnimationTimeController.h \ 2146 2148 WebCore/page/animation/CompositeAnimation.cpp \ 2147 2149 WebCore/page/animation/CompositeAnimation.h \ -
trunk/WebCore/WebCore.exp.in
r75115 r75169 520 520 __ZN7WebCore22createFragmentFromTextEPNS_5RangeERKN3WTF6StringE 521 521 __ZN7WebCore22externalRepresentationEPNS_5FrameEj 522 __ZN7WebCore23AnimationTimeController25clearCurrentAnimationTimeEv 522 523 __ZN7WebCore23AuthenticationChallengeC1ERKNS_15ProtectionSpaceERKNS_10CredentialEjRKNS_16ResourceResponseERKNS_13ResourceErrorE 523 524 __ZN7WebCore23ReplaceSelectionCommandC1EPNS_8DocumentEN3WTF10PassRefPtrINS_16DocumentFragmentEEEbbbbbNS_10EditActionE -
trunk/WebCore/WebCore.gypi
r75118 r75169 2221 2221 'page/animation/AnimationController.h', 2222 2222 'page/animation/AnimationControllerPrivate.h', 2223 'page/animation/AnimationTimeController.cpp', 2224 'page/animation/AnimationTimeController.h', 2223 2225 'page/animation/CompositeAnimation.cpp', 2224 2226 'page/animation/CompositeAnimation.h', -
trunk/WebCore/WebCore.pro
r75151 r75169 1114 1114 page/animation/AnimationBase.cpp \ 1115 1115 page/animation/AnimationController.cpp \ 1116 page/animation/AnimationTimeController.cpp \ 1116 1117 page/animation/CompositeAnimation.cpp \ 1117 1118 page/animation/ImplicitAnimation.cpp \ -
trunk/WebCore/WebCore.vcproj/WebCore.vcproj
r75138 r75169 24243 24243 </File> 24244 24244 <File 24245 RelativePath="..\page\animation\AnimationTimeController.cpp" 24246 > 24247 </File> 24248 <File 24249 RelativePath="..\page\animation\AnimationTimeController.h" 24250 > 24251 </File> 24252 <File 24245 24253 RelativePath="..\page\BarInfo.cpp" 24246 24254 > -
trunk/WebCore/WebCore.xcodeproj/project.pbxproj
r75103 r75169 911 911 3888F6EE128C9889000CA8E0 /* InspectorFileSystemAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3888F6EC128C9889000CA8E0 /* InspectorFileSystemAgent.cpp */; }; 912 912 3888F6EF128C9889000CA8E0 /* InspectorFileSystemAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 3888F6ED128C9889000CA8E0 /* InspectorFileSystemAgent.h */; }; 913 38DF1B3512D5284200F0477E /* AnimationTimeController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 38DF1B3312D5284200F0477E /* AnimationTimeController.cpp */; }; 914 38DF1B3612D5284200F0477E /* AnimationTimeController.h in Headers */ = {isa = PBXBuildFile; fileRef = 38DF1B3412D5284200F0477E /* AnimationTimeController.h */; settings = {ATTRIBUTES = (Private, ); }; }; 913 915 3AC648B2129E146500C3EB25 /* EditingBoundary.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AC648B1129E146500C3EB25 /* EditingBoundary.h */; settings = {ATTRIBUTES = (Private, ); }; }; 914 916 41002CCD0F66EDEF009E660D /* ScriptFunctionCall.h in Headers */ = {isa = PBXBuildFile; fileRef = 41002CCB0F66EDEF009E660D /* ScriptFunctionCall.h */; }; … … 7229 7231 3888F6EC128C9889000CA8E0 /* InspectorFileSystemAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorFileSystemAgent.cpp; sourceTree = "<group>"; }; 7230 7232 3888F6ED128C9889000CA8E0 /* InspectorFileSystemAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorFileSystemAgent.h; sourceTree = "<group>"; }; 7233 38DF1B3312D5284200F0477E /* AnimationTimeController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AnimationTimeController.cpp; path = animation/AnimationTimeController.cpp; sourceTree = "<group>"; }; 7234 38DF1B3412D5284200F0477E /* AnimationTimeController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationTimeController.h; path = animation/AnimationTimeController.h; sourceTree = "<group>"; }; 7231 7235 3AC648B1129E146500C3EB25 /* EditingBoundary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditingBoundary.h; sourceTree = "<group>"; }; 7232 7236 41002CCB0F66EDEF009E660D /* ScriptFunctionCall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptFunctionCall.h; sourceTree = "<group>"; }; … … 13024 13028 316FE10A0E6E1DA700BF6088 /* AnimationController.h */, 13025 13029 0F15DA890F3AAEE70000CE47 /* AnimationControllerPrivate.h */, 13030 38DF1B3312D5284200F0477E /* AnimationTimeController.cpp */, 13031 38DF1B3412D5284200F0477E /* AnimationTimeController.h */, 13026 13032 316FE10B0E6E1DA700BF6088 /* CompositeAnimation.cpp */, 13027 13033 316FE10C0E6E1DA700BF6088 /* CompositeAnimation.h */, … … 19311 19317 316FE1140E6E1DA700BF6088 /* AnimationController.h in Headers */, 19312 19318 0F15DA8A0F3AAEE70000CE47 /* AnimationControllerPrivate.h in Headers */, 19319 38DF1B3612D5284200F0477E /* AnimationTimeController.h in Headers */, 19313 19320 49E912AD0EFAC906009D0CAF /* AnimationList.h in Headers */, 19314 19321 93309DD7099E64920056E581 /* AppendNodeCommand.h in Headers */, … … 22596 22603 316FE1110E6E1DA700BF6088 /* AnimationBase.cpp in Sources */, 22597 22604 316FE1130E6E1DA700BF6088 /* AnimationController.cpp in Sources */, 22605 38DF1B3512D5284200F0477E /* AnimationTimeController.cpp in Sources */, 22598 22606 49E912AC0EFAC906009D0CAF /* AnimationList.cpp in Sources */, 22599 22607 93309DD6099E64920056E581 /* AppendNodeCommand.cpp in Sources */, -
trunk/WebCore/page/DOMWindow.cpp
r74877 r75169 1465 1465 } 1466 1466 1467 DOMTimeStamp DOMWindow::webkitAnimationTime() 1468 { 1469 if (Frame* f = frame()) 1470 return convertSecondsToDOMTimeStamp(f->currentAnimationTime()); 1471 return convertSecondsToDOMTimeStamp(currentTime()); 1472 } 1473 1467 1474 bool DOMWindow::addEventListener(const AtomicString& eventType, PassRefPtr<EventListener> listener, bool useCapture) 1468 1475 { -
trunk/WebCore/page/DOMWindow.h
r74854 r75169 28 28 #define DOMWindow_h 29 29 30 #include "DOMTimeStamp.h" 30 31 #include "KURL.h" 31 32 #include "MessagePort.h" … … 237 238 int setInterval(PassOwnPtr<ScheduledAction>, int timeout, ExceptionCode&); 238 239 void clearInterval(int timeoutId); 240 241 // WebKit animation extensions 242 DOMTimeStamp webkitAnimationTime(); 239 243 240 244 // Events -
trunk/WebCore/page/DOMWindow.idl
r74854 r75169 236 236 // [Custom] long setInterval(in DOMString code, in long timeout); 237 237 void clearInterval(in long handle); 238 239 // WebKit animation extensions 240 readonly attribute DOMTimeStamp webkitAnimationTime; 238 241 239 242 // Base64 -
trunk/WebCore/page/Frame.cpp
r72863 r75169 30 30 #include "Frame.h" 31 31 32 #include "AnimationTimeController.h" 32 33 #include "ApplyStyleCommand.h" 33 34 #include "CSSComputedStyleDeclaration.h" … … 84 85 #include "npruntime_impl.h" 85 86 #include "visible_units.h" 87 #include <wtf/CurrentTime.h> 86 88 #include <wtf/RefCountedLeakCounter.h> 87 89 #include <wtf/StdLibExtras.h> … … 753 755 } 754 756 757 double Frame::currentAnimationTime() 758 { 759 if (Page* p = page()) 760 return p->animationTime()->currentAnimationTime(); 761 return currentTime(); 762 } 763 764 755 765 String Frame::documentTypeString() const 756 766 { -
trunk/WebCore/page/Frame.h
r74812 r75169 108 108 void transferChildFrameToNewDocument(); 109 109 110 double currentAnimationTime(); 111 110 112 // ======== All public functions below this point are candidates to move out of Frame into another class. ======== 111 113 -
trunk/WebCore/page/Page.cpp
r74969 r75169 21 21 #include "Page.h" 22 22 23 #include "AnimationTimeController.h" 23 24 #include "BackForwardController.h" 24 25 #include "BackForwardList.h" … … 157 158 , m_progress(adoptPtr(new ProgressTracker)) 158 159 , m_backForwardController(adoptPtr(new BackForwardController(this, pageClients.backForwardClient))) 160 , m_animationTimeController(AnimationTimeController::create()) 159 161 , m_theme(RenderTheme::themeForPage(this)) 160 162 , m_editorClient(pageClients.editorClient) -
trunk/WebCore/page/Page.h
r74041 r75169 40 40 namespace WebCore { 41 41 42 class AnimationTimeController; 42 43 class BackForwardController; 43 44 class BackForwardList; … … 183 184 ProgressTracker* progress() const { return m_progress.get(); } 184 185 BackForwardController* backForward() const { return m_backForwardController.get(); } 186 AnimationTimeController* animationTime() const { return m_animationTimeController.get(); } 185 187 186 188 enum ViewMode { … … 328 330 329 331 OwnPtr<BackForwardController> m_backForwardController; 332 OwnPtr<AnimationTimeController> m_animationTimeController; 330 333 RefPtr<Frame> m_mainFrame; 331 334 … … 381 384 #endif 382 385 386 double m_currentAnimationTime; 387 383 388 ViewMode m_viewMode; 384 389 -
trunk/WebCore/page/animation/AnimationController.cpp
r74287 r75169 317 317 { 318 318 if (m_beginAnimationUpdateTime == cBeginAnimationUpdateTimeNotSet) 319 m_beginAnimationUpdateTime = currentTime();319 m_beginAnimationUpdateTime = m_frame->currentAnimationTime(); 320 320 return m_beginAnimationUpdateTime; 321 321 } -
trunk/WebKit/chromium/ChangeLog
r75146 r75169 1 2011-01-06 James Robinson <jamesr@chromium.org> 2 3 Reviewed by Simon Fraser. 4 5 Implement mozilla's animationTime property 6 https://bugs.webkit.org/show_bug.cgi?id=51952 7 8 WebKit API support for webkitAnimationTime. 9 10 * public/WebWidget.h: 11 * src/WebPopupMenuImpl.cpp: 12 (WebKit::WebPopupMenuImpl::clearCurrentAnimationTime): 13 * src/WebPopupMenuImpl.h: 14 * src/WebViewImpl.cpp: 15 (WebKit::WebViewImpl::clearCurrentAnimationTime): 16 * src/WebViewImpl.h: 17 1 18 2010-12-29 John Abd-El-Malek <jam@chromium.org> 2 19 -
trunk/WebKit/chromium/public/WebWidget.h
r75000 r75169 56 56 // Called to resize the WebWidget. 57 57 virtual void resize(const WebSize&) = 0; 58 59 // Called to indicate that this widget has been rendered and the widget 60 // no longer needs to store the animation time. 61 virtual void clearCurrentAnimationTime() = 0; 58 62 59 63 // Called to layout the WebWidget. This MUST be called before Paint, -
trunk/WebKit/chromium/src/WebPopupMenuImpl.cpp
r75000 r75169 152 152 } 153 153 154 void WebPopupMenuImpl::clearCurrentAnimationTime() 155 { 156 } 157 154 158 void WebPopupMenuImpl::layout() 155 159 { -
trunk/WebKit/chromium/src/WebPopupMenuImpl.h
r75000 r75169 62 62 virtual WebSize size() { return m_size; } 63 63 virtual void resize(const WebSize&); 64 virtual void clearCurrentAnimationTime(); 64 65 virtual void layout(); 65 66 virtual void paint(WebCanvas* canvas, const WebRect& rect); -
trunk/WebKit/chromium/src/WebViewImpl.cpp
r75000 r75169 32 32 #include "WebViewImpl.h" 33 33 34 #include "AnimationTimeController.h" 34 35 #include "AutoFillPopupMenuClient.h" 35 36 #include "AXObjectCache.h" … … 978 979 } 979 980 981 void WebViewImpl::clearCurrentAnimationTime() 982 { 983 WebFrameImpl* webframe = mainFrameImpl(); 984 if (webframe) 985 webframe->frame()->page()->animationTime()->clearCurrentAnimationTime(); 986 } 987 980 988 void WebViewImpl::layout() 981 989 { -
trunk/WebKit/chromium/src/WebViewImpl.h
r75000 r75169 93 93 virtual WebSize size() { return m_size; } 94 94 virtual void resize(const WebSize&); 95 virtual void clearCurrentAnimationTime(); 95 96 virtual void layout(); 96 97 virtual void paint(WebCanvas*, const WebRect&); -
trunk/WebKit/mac/WebView/WebHTMLView.mm
r75031 r75169 76 76 #import <AppKit/NSAccessibility.h> 77 77 #import <ApplicationServices/ApplicationServices.h> 78 #import <WebCore/AnimationTimeController.h> 78 79 #import <WebCore/CSSMutableStyleDeclaration.h> 79 80 #import <WebCore/CachedImage.h> … … 3506 3507 #endif 3507 3508 3509 Frame* frame = [webView _mainCoreFrame]; 3510 if (frame && frame->page()) 3511 frame->page()->animationTime()->clearCurrentAnimationTime(); 3512 3508 3513 if (webView) 3509 3514 CallUIDelegate(webView, @selector(webView:didDrawFrame:), [self _frame]); -
trunk/WebKit/mac/WebView/WebView.mm
r74751 r75169 111 111 #import <WebCore/AbstractDatabase.h> 112 112 #import <WebCore/ApplicationCacheStorage.h> 113 #import <WebCore/AnimationTimeController.h> 113 114 #import <WebCore/BackForwardListImpl.h> 114 115 #import <WebCore/MemoryCache.h> … … 5958 5959 [webView _viewWillDrawInternal]; 5959 5960 } 5961 5962 Frame* frame = [webView _mainCoreFrame]; 5963 if (frame && frame->page()) 5964 frame->page()->animationTime()->clearCurrentAnimationTime(); 5960 5965 } 5961 5966 -
trunk/WebKit2/ChangeLog
r75156 r75169 1 2011-01-06 James Robinson <jamesr@chromium.org> 2 3 Reviewed by Simon Fraser. 4 5 Implement mozilla's animationTime property 6 https://bugs.webkit.org/show_bug.cgi?id=51952 7 8 Tells the page to clear the current animation time after producing a frame. 9 10 * WebProcess/WebPage/WebPage.cpp: 11 (WebKit::WebPage::drawRect): 12 * WebProcess/WebPage/ChunkedUpdateDrawingArea.cpp: 13 (WebKit::ChunkedUpdateDrawingArea::display): 14 (WebKit::ChunkedUpdateDrawingArea::setSize): 15 * WebProcess/WebPage/mac/LayerBackedDrawingAreaMac.mm: 16 (WebKit::LayerBackedDrawingArea::syncCompositingLayers): 17 1 18 2011-01-06 Darin Adler <darin@apple.com> 2 19 -
trunk/WebKit2/WebProcess/WebPage/ChunkedUpdateDrawingArea.cpp
r74669 r75169 33 33 #include "WebPage.h" 34 34 #include "WebProcess.h" 35 #include <WebCore/AnimationTimeController.h> 36 #include <WebCore/Page.h> 35 37 36 38 using namespace WebCore; … … 91 93 92 94 WebProcess::shared().connection()->send(DrawingAreaProxyLegacyMessage::Update, m_webPage->pageID(), CoreIPC::In(updateChunk)); 95 96 m_webPage->corePage()->animationTime()->clearCurrentAnimationTime(); 93 97 94 98 m_isWaitingForUpdate = true; … … 144 148 145 149 WebProcess::shared().connection()->send(DrawingAreaProxyLegacyMessage::DidSetSize, m_webPage->pageID(), CoreIPC::In(updateChunk)); 150 m_webPage->corePage()->animationTime()->clearCurrentAnimationTime(); 146 151 } 147 152 -
trunk/WebKit2/WebProcess/WebPage/WebPage.cpp
r75156 r75169 60 60 #include "WebProcessProxyMessages.h" 61 61 #include <WebCore/AbstractDatabase.h> 62 #include <WebCore/AnimationTimeController.h> 62 63 #include <WebCore/ArchiveResource.h> 63 64 #include <WebCore/Chrome.h> … … 516 517 graphicsContext.restore(); 517 518 } 519 520 m_page->animationTime()->clearCurrentAnimationTime(); 518 521 } 519 522 -
trunk/WebKit2/WebProcess/WebPage/mac/LayerBackedDrawingAreaMac.mm
r74669 r75169 32 32 #include "WebPage.h" 33 33 #include "WebProcess.h" 34 #include <WebCore/AnimationTimeController.h> 34 35 #include <WebCore/Frame.h> 35 36 #include <WebCore/FrameView.h> … … 122 123 123 124 } 125 126 m_webPage->corePage()->animationTime()->clearCurrentAnimationTime(); 124 127 } 125 128
Note: See TracChangeset
for help on using the changeset viewer.