|
|
Created:
4 years, 4 months ago by loyso (OOO) Modified:
4 years, 3 months ago CC:
chromium-reviews, cc-bugs_chromium.org, ymalik Base URL:
https://chromium.googlesource.com/chromium/src.git@master Target Ref:
refs/pending/heads/master Project:
chromium Visibility:
Public. |
DescriptionCC Animation: Introduce some dirty flags to optimize PushProperties on commit
The idea is that we invalidate needs_push_properties flag
from bottom-to-top in the hierarchy of ownership.
It helps us to isolate untouched groups of objects.
BUG=604280
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel
Committed: https://crrev.com/1ec9dd4962683e1fe12734a6756e825df2db10ca
Committed: https://crrev.com/0bc588b1289ff9bda42a91ed8f57eaf0e36d7978
Cr-Original-Commit-Position: refs/heads/master@{#414981}
Cr-Commit-Position: refs/heads/master@{#417132}
Patch Set 1 #
Total comments: 2
Patch Set 2 : Add the invalidation on take over. #Patch Set 3 : Add more tests. #
Total comments: 8
Patch Set 4 : Implement code review suggestions. #Patch Set 5 : Reland #Patch Set 6 : Do not change SetNeedsCommit invalidation, leave it as-is. #
Messages
Total messages: 69 (45 generated)
Description was changed from ========== CC Animation: Introduce some dirty flags to optimize PushProperties on commit BUG=604280 ========== to ========== CC Animation: Introduce some dirty flags to optimize PushProperties on commit BUG=604280 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel ==========
The CQ bit was checked by loyso@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
https://codereview.chromium.org/2261113002/diff/1/cc/animation/element_animat... File cc/animation/element_animations_unittest.cc (right): https://codereview.chromium.org/2261113002/diff/1/cc/animation/element_animat... cc/animation/element_animations_unittest.cc:2088: animations->SetNeedsPushProperties(); It notifies blink about takover and then suddenly expects the animation to be deleted. What code causes this deletion in real case?
Description was changed from ========== CC Animation: Introduce some dirty flags to optimize PushProperties on commit BUG=604280 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel ========== to ========== CC Animation: Introduce some dirty flags to optimize PushProperties on commit The idea is that we invalidate needs_push_properties flag from bottom to top objects in the hierarchy of ownership. BUG=604280 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel ==========
Description was changed from ========== CC Animation: Introduce some dirty flags to optimize PushProperties on commit The idea is that we invalidate needs_push_properties flag from bottom to top objects in the hierarchy of ownership. BUG=604280 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel ========== to ========== CC Animation: Introduce some dirty flags to optimize PushProperties on commit The idea is that we invalidate needs_push_properties flag from bottom-to-top in the hierarchy of an object ownership. BUG=604280 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel ==========
Description was changed from ========== CC Animation: Introduce some dirty flags to optimize PushProperties on commit The idea is that we invalidate needs_push_properties flag from bottom-to-top in the hierarchy of an object ownership. BUG=604280 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel ========== to ========== CC Animation: Introduce some dirty flags to optimize PushProperties on commit The idea is that we invalidate needs_push_properties flag from bottom-to-top in the hierarchy of ownership. BUG=604280 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel ==========
Description was changed from ========== CC Animation: Introduce some dirty flags to optimize PushProperties on commit The idea is that we invalidate needs_push_properties flag from bottom-to-top in the hierarchy of ownership. BUG=604280 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel ========== to ========== CC Animation: Introduce some dirty flags to optimize PushProperties on commit The idea is that we invalidate needs_push_properties flag from bottom-to-top in the hierarchy of ownership. It helps us to isolated untouched groups of objects. BUG=604280 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel ==========
Description was changed from ========== CC Animation: Introduce some dirty flags to optimize PushProperties on commit The idea is that we invalidate needs_push_properties flag from bottom-to-top in the hierarchy of ownership. It helps us to isolated untouched groups of objects. BUG=604280 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel ========== to ========== CC Animation: Introduce some dirty flags to optimize PushProperties on commit The idea is that we invalidate needs_push_properties flag from bottom-to-top in the hierarchy of ownership. It helps us to isolate the untouched groups of objects. BUG=604280 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel ==========
Description was changed from ========== CC Animation: Introduce some dirty flags to optimize PushProperties on commit The idea is that we invalidate needs_push_properties flag from bottom-to-top in the hierarchy of ownership. It helps us to isolate the untouched groups of objects. BUG=604280 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel ========== to ========== CC Animation: Introduce some dirty flags to optimize PushProperties on commit The idea is that we invalidate needs_push_properties flag from bottom-to-top in the hierarchy of ownership. It helps us to isolate untouched groups of objects. BUG=604280 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel ==========
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
ymalik@chromium.org changed reviewers: + ymalik@chromium.org
https://codereview.chromium.org/2261113002/diff/1/cc/animation/element_animat... File cc/animation/element_animations_unittest.cc (right): https://codereview.chromium.org/2261113002/diff/1/cc/animation/element_animat... cc/animation/element_animations_unittest.cc:2088: animations->SetNeedsPushProperties(); On 2016/08/22 07:48:27, loyso wrote: > It notifies blink about takover and then suddenly expects the animation to be > deleted. > What code causes this deletion in real case? The purpose of the Takeover notification is to continue an impl-only scroll offset animation on the MT. We need this for cases where a main thread scrolling reason gets added while an impl-only scroll offset animation is in progress (see crbug.com/581875). On the impl-side, an animation is put into the ABORTED_BUT_NEEDS_COMPLETION state (https://cs.chromium.org/chromium/src/cc/animation/element_animations.cc?rcl=0...). Then, it is marked for deletion during the next call to ElementAnimation::UpdateState (https://cs.chromium.org/chromium/src/cc/animation/element_animations.cc?rcl=0...). On the mt-side, when we get a Takeover message, the old animation curve is passed on to blink's ScrollAnimator, and we finish the animation on the MT.
The CQ bit was checked by loyso@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
The CQ bit was checked by loyso@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
loyso@chromium.org changed reviewers: + ajuma@chromium.org - ymalik@chromium.org
https://codereview.chromium.org/2261113002/diff/40001/cc/test/animation_test_... File cc/test/animation_test_common.cc (right): https://codereview.chromium.org/2261113002/diff/40001/cc/test/animation_test_... cc/test/animation_test_common.cc:238: target->SetNeedsPushProperties(); Wdyt of making ElementAnimations responsible for setting needs_push_properties on itself on calls like AddAnimation, rather than making the caller responsible? That seems more consistent with how needs_push_properties gets set on other types, and also means we don't need to add these test-only calls to SetNeedsPushProperties. https://codereview.chromium.org/2261113002/diff/40001/cc/test/animation_timel... File cc/test/animation_timelines_test_common.cc (right): https://codereview.chromium.org/2261113002/diff/40001/cc/test/animation_timel... cc/test/animation_timelines_test_common.cc:521: void AnimationTimelinesTest::ExpectPlayerTimelineNeedsPushProperties( Putting this in a function rather than a macro means that if a test that uses it fails, the line number that gets output will be one of the lines below rather than the calling line in the test (so it's harder to track down the failure).
https://codereview.chromium.org/2261113002/diff/40001/cc/test/animation_test_... File cc/test/animation_test_common.cc (right): https://codereview.chromium.org/2261113002/diff/40001/cc/test/animation_test_... cc/test/animation_test_common.cc:238: target->SetNeedsPushProperties(); On 2016/08/24 15:52:37, ajuma wrote: > Wdyt of making ElementAnimations responsible for setting needs_push_properties > on itself on calls like AddAnimation, rather than making the caller responsible? > That seems more consistent with how needs_push_properties gets set on other > types, and also means we don't need to add these test-only calls to > SetNeedsPushProperties. ElementAnimations::AddAnimation is a legacy from LAC. I want to move animations_ array (together with Add/Remove etc methods) from ElementAnimation to AnimationPlayer as a next CL and as a part of http://crbug.com/592873 Overall, we decided with vollick@ that we should make ElementAnimations as small as possible and hide it eventually. Also, we must to rewrite ElementAnimations tests to use AnimationPlayer instead (as a part of http://crbug.com/592873). Anyway, I can move this SetNeedsPushProperties calls into ElementAnimations temporarily (so it would be a bit redundant). What do you think? https://codereview.chromium.org/2261113002/diff/40001/cc/test/animation_timel... File cc/test/animation_timelines_test_common.cc (right): https://codereview.chromium.org/2261113002/diff/40001/cc/test/animation_timel... cc/test/animation_timelines_test_common.cc:521: void AnimationTimelinesTest::ExpectPlayerTimelineNeedsPushProperties( On 2016/08/24 15:52:37, ajuma wrote: > Putting this in a function rather than a macro means that if a test that uses it > fails, the line number that gets output will be one of the lines below rather > than the calling line in the test (so it's harder to track down the failure). Failures in each particular are very rare - those are exceptional situations. On the contrary, we read/modify/support the test code on a permanent basis. Code bloating doesn't help in this case at all. Do you suggest to replace function with a macro?
https://codereview.chromium.org/2261113002/diff/40001/cc/test/animation_timel... File cc/test/animation_timelines_test_common.cc (right): https://codereview.chromium.org/2261113002/diff/40001/cc/test/animation_timel... cc/test/animation_timelines_test_common.cc:521: void AnimationTimelinesTest::ExpectPlayerTimelineNeedsPushProperties( On 2016/08/24 15:52:37, ajuma wrote: > Putting this in a function rather than a macro means that if a test that uses it > fails, the line number that gets output will be one of the lines below rather > than the calling line in the test (so it's harder to track down the failure). I can replace it with CHECK so it crashes and shows the backtrace.
danakj@chromium.org changed reviewers: + danakj@chromium.org
https://codereview.chromium.org/2261113002/diff/40001/cc/test/animation_timel... File cc/test/animation_timelines_test_common.cc (right): https://codereview.chromium.org/2261113002/diff/40001/cc/test/animation_timel... cc/test/animation_timelines_test_common.cc:521: void AnimationTimelinesTest::ExpectPlayerTimelineNeedsPushProperties( On 2016/08/25 00:55:50, loyso wrote: > On 2016/08/24 15:52:37, ajuma wrote: > > Putting this in a function rather than a macro means that if a test that uses > it > > fails, the line number that gets output will be one of the lines below rather > > than the calling line in the test (so it's harder to track down the failure). > I can replace it with CHECK so it crashes and shows the backtrace. You can return false from this function if any expectations fail (and ADD_FAILURE() what it was). Then EXPECT_TRUE() on calls to this function.
On 2016/08/25 01:06:00, danakj wrote: > https://codereview.chromium.org/2261113002/diff/40001/cc/test/animation_timel... > File cc/test/animation_timelines_test_common.cc (right): > > https://codereview.chromium.org/2261113002/diff/40001/cc/test/animation_timel... > cc/test/animation_timelines_test_common.cc:521: void > AnimationTimelinesTest::ExpectPlayerTimelineNeedsPushProperties( > On 2016/08/25 00:55:50, loyso wrote: > > On 2016/08/24 15:52:37, ajuma wrote: > > > Putting this in a function rather than a macro means that if a test that > uses > > it > > > fails, the line number that gets output will be one of the lines below > rather > > > than the calling line in the test (so it's harder to track down the > failure). > > I can replace it with CHECK so it crashes and shows the backtrace. > > You can return false from this function if any expectations fail (and > ADD_FAILURE() what it was). Then EXPECT_TRUE() on calls to this function. Or, you can SCOPED_TRACE() for each call to the function, so failures show where it came from.
The CQ bit was checked by loyso@chromium.org to run a CQ dry run
https://codereview.chromium.org/2261113002/diff/40001/cc/test/animation_test_... File cc/test/animation_test_common.cc (right): https://codereview.chromium.org/2261113002/diff/40001/cc/test/animation_test_... cc/test/animation_test_common.cc:238: target->SetNeedsPushProperties(); On 2016/08/24 15:52:37, ajuma wrote: > Wdyt of making ElementAnimations responsible for setting needs_push_properties > on itself on calls like AddAnimation, rather than making the caller responsible? > That seems more consistent with how needs_push_properties gets set on other > types, and also means we don't need to add these test-only calls to > SetNeedsPushProperties. Done. https://codereview.chromium.org/2261113002/diff/40001/cc/test/animation_timel... File cc/test/animation_timelines_test_common.cc (right): https://codereview.chromium.org/2261113002/diff/40001/cc/test/animation_timel... cc/test/animation_timelines_test_common.cc:521: void AnimationTimelinesTest::ExpectPlayerTimelineNeedsPushProperties( On 2016/08/25 01:05:59, danakj wrote: > On 2016/08/25 00:55:50, loyso wrote: > > On 2016/08/24 15:52:37, ajuma wrote: > > > Putting this in a function rather than a macro means that if a test that > uses > > it > > > fails, the line number that gets output will be one of the lines below > rather > > > than the calling line in the test (so it's harder to track down the > failure). > > I can replace it with CHECK so it crashes and shows the backtrace. > > You can return false from this function if any expectations fail (and > ADD_FAILURE() what it was). Then EXPECT_TRUE() on calls to this function. Done.
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
Thanks, lgtm
The CQ bit was checked by loyso@chromium.org
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: win_chromium_x64_rel_ng on master.tryserver.chromium.win (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.win/builders/win_chromium_x64_...)
The CQ bit was checked by loyso@chromium.org
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
Message was sent while issue was closed.
Description was changed from ========== CC Animation: Introduce some dirty flags to optimize PushProperties on commit The idea is that we invalidate needs_push_properties flag from bottom-to-top in the hierarchy of ownership. It helps us to isolate untouched groups of objects. BUG=604280 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel ========== to ========== CC Animation: Introduce some dirty flags to optimize PushProperties on commit The idea is that we invalidate needs_push_properties flag from bottom-to-top in the hierarchy of ownership. It helps us to isolate untouched groups of objects. BUG=604280 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel ==========
Message was sent while issue was closed.
Committed patchset #4 (id:60001)
Message was sent while issue was closed.
Description was changed from ========== CC Animation: Introduce some dirty flags to optimize PushProperties on commit The idea is that we invalidate needs_push_properties flag from bottom-to-top in the hierarchy of ownership. It helps us to isolate untouched groups of objects. BUG=604280 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel ========== to ========== CC Animation: Introduce some dirty flags to optimize PushProperties on commit The idea is that we invalidate needs_push_properties flag from bottom-to-top in the hierarchy of ownership. It helps us to isolate untouched groups of objects. BUG=604280 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel Committed: https://crrev.com/1ec9dd4962683e1fe12734a6756e825df2db10ca Cr-Commit-Position: refs/heads/master@{#414981} ==========
Message was sent while issue was closed.
Patchset 4 (id:??) landed as https://crrev.com/1ec9dd4962683e1fe12734a6756e825df2db10ca Cr-Commit-Position: refs/heads/master@{#414981}
Message was sent while issue was closed.
A revert of this CL (patchset #4 id:60001) has been created in https://codereview.chromium.org/2290633003/ by lazyboy@chromium.org. The reason for reverting is: Since build https://build.chromium.org/p/chromium.linux/builders/Linux%20Tests/builds/45513, PluginPowerSaver.PosterTests and PluginPowerSaver.SmallerThanPlayIcon started flaking, timing out in VerifySnapshot: https://cs.chromium.org/chromium/src/chrome/browser/plugins/plugin_power_save... Speculatively reverting to see if that helps....
Message was sent while issue was closed.
On 2016/08/29 23:30:16, lazyboy wrote: > A revert of this CL (patchset #4 id:60001) has been created in > https://codereview.chromium.org/2290633003/ by mailto:lazyboy@chromium.org. > > The reason for reverting is: Since build > https://build.chromium.org/p/chromium.linux/builders/Linux%20Tests/builds/45513, > PluginPowerSaver.PosterTests and > PluginPowerSaver.SmallerThanPlayIcon > started flaking, timing out in VerifySnapshot: > https://cs.chromium.org/chromium/src/chrome/browser/plugins/plugin_power_save... > > Speculatively reverting to see if that helps.... Has it helped?
Message was sent while issue was closed.
Description was changed from ========== CC Animation: Introduce some dirty flags to optimize PushProperties on commit The idea is that we invalidate needs_push_properties flag from bottom-to-top in the hierarchy of ownership. It helps us to isolate untouched groups of objects. BUG=604280 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel Committed: https://crrev.com/1ec9dd4962683e1fe12734a6756e825df2db10ca Cr-Commit-Position: refs/heads/master@{#414981} ========== to ========== CC Animation: Introduce some dirty flags to optimize PushProperties on commit The idea is that we invalidate needs_push_properties flag from bottom-to-top in the hierarchy of ownership. It helps us to isolate untouched groups of objects. BUG=604280 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel Committed: https://crrev.com/1ec9dd4962683e1fe12734a6756e825df2db10ca Cr-Commit-Position: refs/heads/master@{#414981} ==========
The CQ bit was checked by loyso@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
ajuma@, PTAL! Now it's simple. The fix for the root problem of flakiness is here: https://codereview.chromium.org/2313593002/ (Totally unrelated)
The CQ bit was checked by loyso@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
On 2016/09/07 04:17:25, loyso wrote: > ajuma@, PTAL! Now it's simple. > The fix for the root problem of flakiness is here: > https://codereview.chromium.org/2313593002/ > (Totally unrelated) lgtm
The CQ bit was checked by loyso@chromium.org
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: chromium_presubmit on master.tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/chromium_presub...)
The CQ bit was checked by loyso@chromium.org
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
Message was sent while issue was closed.
Description was changed from ========== CC Animation: Introduce some dirty flags to optimize PushProperties on commit The idea is that we invalidate needs_push_properties flag from bottom-to-top in the hierarchy of ownership. It helps us to isolate untouched groups of objects. BUG=604280 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel Committed: https://crrev.com/1ec9dd4962683e1fe12734a6756e825df2db10ca Cr-Commit-Position: refs/heads/master@{#414981} ========== to ========== CC Animation: Introduce some dirty flags to optimize PushProperties on commit The idea is that we invalidate needs_push_properties flag from bottom-to-top in the hierarchy of ownership. It helps us to isolate untouched groups of objects. BUG=604280 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel Committed: https://crrev.com/1ec9dd4962683e1fe12734a6756e825df2db10ca Cr-Commit-Position: refs/heads/master@{#414981} ==========
Message was sent while issue was closed.
Committed patchset #6 (id:100001)
Message was sent while issue was closed.
Description was changed from ========== CC Animation: Introduce some dirty flags to optimize PushProperties on commit The idea is that we invalidate needs_push_properties flag from bottom-to-top in the hierarchy of ownership. It helps us to isolate untouched groups of objects. BUG=604280 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel Committed: https://crrev.com/1ec9dd4962683e1fe12734a6756e825df2db10ca Cr-Commit-Position: refs/heads/master@{#414981} ========== to ========== CC Animation: Introduce some dirty flags to optimize PushProperties on commit The idea is that we invalidate needs_push_properties flag from bottom-to-top in the hierarchy of ownership. It helps us to isolate untouched groups of objects. BUG=604280 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel Committed: https://crrev.com/1ec9dd4962683e1fe12734a6756e825df2db10ca Committed: https://crrev.com/0bc588b1289ff9bda42a91ed8f57eaf0e36d7978 Cr-Original-Commit-Position: refs/heads/master@{#414981} Cr-Commit-Position: refs/heads/master@{#417132} ==========
Message was sent while issue was closed.
Patchset 6 (id:??) landed as https://crrev.com/0bc588b1289ff9bda42a91ed8f57eaf0e36d7978 Cr-Commit-Position: refs/heads/master@{#417132} |