OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "config.h" | 5 #include "config.h" |
6 #include "core/page/PageAnimator.h" | 6 #include "core/page/PageAnimator.h" |
7 | 7 |
8 #include "core/animation/DocumentAnimations.h" | 8 #include "core/animation/DocumentAnimations.h" |
9 #include "core/frame/FrameView.h" | 9 #include "core/frame/FrameView.h" |
10 #include "core/frame/LocalFrame.h" | 10 #include "core/frame/LocalFrame.h" |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 WillBeHeapVector<RefPtrWillBeMember<Document>> documents; | 43 WillBeHeapVector<RefPtrWillBeMember<Document>> documents; |
44 for (Frame* frame = m_page->mainFrame(); frame; frame = frame->tree().traver
seNext()) { | 44 for (Frame* frame = m_page->mainFrame(); frame; frame = frame->tree().traver
seNext()) { |
45 if (frame->isLocalFrame()) | 45 if (frame->isLocalFrame()) |
46 documents.append(toLocalFrame(frame)->document()); | 46 documents.append(toLocalFrame(frame)->document()); |
47 } | 47 } |
48 | 48 |
49 for (size_t i = 0; i < documents.size(); ++i) { | 49 for (size_t i = 0; i < documents.size(); ++i) { |
50 if (documents[i]->frame()) { | 50 if (documents[i]->frame()) { |
51 documents[i]->view()->serviceScrollAnimations(monotonicAnimationStar
tTime); | 51 documents[i]->view()->serviceScrollAnimations(monotonicAnimationStar
tTime); |
52 | 52 |
53 if (const FrameView::ScrollableAreaSet* scrollableAreas = documents[
i]->view()->scrollableAreas()) { | 53 if (const FrameView::ScrollableAreaSet* animatingScrollableAreas = d
ocuments[i]->view()->animatingScrollableAreas()) { |
54 for (ScrollableArea* scrollableArea : *scrollableAreas) | 54 // Iterate over a copy, since ScrollableAreas may deregister |
| 55 // themselves during the iteration. |
| 56 Vector<ScrollableArea*> animatingScrollableAreasCopy; |
| 57 copyToVector(*animatingScrollableAreas, animatingScrollableAreas
Copy); |
| 58 for (ScrollableArea* scrollableArea : animatingScrollableAreasCo
py) |
55 scrollableArea->serviceScrollAnimations(monotonicAnimationSt
artTime); | 59 scrollableArea->serviceScrollAnimations(monotonicAnimationSt
artTime); |
56 } | 60 } |
57 } | 61 } |
58 } | 62 } |
59 | 63 |
60 for (size_t i = 0; i < documents.size(); ++i) { | 64 for (size_t i = 0; i < documents.size(); ++i) { |
61 DocumentAnimations::updateAnimationTimingForAnimationFrame(*documents[i]
, monotonicAnimationStartTime); | 65 DocumentAnimations::updateAnimationTimingForAnimationFrame(*documents[i]
, monotonicAnimationStartTime); |
62 SVGDocumentExtensions::serviceOnAnimationFrame(*documents[i], monotonicA
nimationStartTime); | 66 SVGDocumentExtensions::serviceOnAnimationFrame(*documents[i], monotonicA
nimationStartTime); |
63 } | 67 } |
64 | 68 |
(...skipping 30 matching lines...) Expand all Loading... |
95 // setFrameRect(). This will be a quick operation for most frames, but the | 99 // setFrameRect(). This will be a quick operation for most frames, but the |
96 // NativeWindowWidgets will update a proper clipping region. | 100 // NativeWindowWidgets will update a proper clipping region. |
97 view->setFrameRect(view->frameRect()); | 101 view->setFrameRect(view->frameRect()); |
98 | 102 |
99 // setFrameRect may have the side-effect of causing existing page layout to | 103 // setFrameRect may have the side-effect of causing existing page layout to |
100 // be invalidated, so layout needs to be called last. | 104 // be invalidated, so layout needs to be called last. |
101 view->updateLayoutAndStyleForPainting(); | 105 view->updateLayoutAndStyleForPainting(); |
102 } | 106 } |
103 | 107 |
104 } | 108 } |
OLD | NEW |