This lets it set the crash reporting envs properly.
--HG--
rename : python/mozbuild/mozbuild/test/frontend/data/test-manifest-install-subdir/subdir.ini => python/mozbuild/mozbuild/test/frontend/data/test-manifest-empty/empty.ini
rename : python/mozbuild/mozbuild/test/frontend/data/test-manifest-install-subdir/moz.build => python/mozbuild/mozbuild/test/frontend/data/test-manifest-empty/moz.build
extra : rebase_source : 1e4cbc0dedab57629e120c4d35bd8270c4f44892
This changes the behavior of the CanPerformOnCompositorThread methods of
both ElementAnimations and ElementTransitions to check that the
respective animations or transitions are actually running. This is ok
because:
- The main caller is nsLayoutUtils::HasAnimationsForCompositor, and all
of its callers pretty clearly want the more restricted behavior (they're
concerned with layer activity)
- The only other callers of these functions are
nsAnimationManager::FlushAnimations and
nsTransitionManager::FlushTransitions (determining when to do
throttling), nsAnimationManager::GetAnimationsForCompositor (whose
only caller,
nsDisplayListBuilder::AddAnimationsAndTransitionsToLayer, also checks
IsRunningAt). I think these also all want or are fine with having
the IsRunningAt check.
As to the actual changes:
- In the animation manager, I think it's a mistake that
ElementAnimation::IsRunningAt didn't already check
mIterationDuration, since we throw out animations with a bad
iteration-duration in ElementAnimations::EnsureStyleRuleFor. So this
makes that change as well.
- In the transition manager, IsRunningAt already checks
!IsRemovedSentinel().
I've confirmed in gdb on a device that this fixes the repeated
nsIFrame::SchedulePaint calls that were the symptom of this bug.
I believe this patch also makes it so that a short animation of a
property that can't be animated on the compositor doesn't prevent the
entire duration of the animation of a property that can from being
throttled (having the main thread style updates suppressed).
Since we've already returned if the NS_FRAME_OUT_OF_FLOW bit is not set,
and since FirstInFlow() is the same as this when GetPrevInFlow() is
null, this is a straightforward simplification of the code and should
not change behavior.
I don't see any particular reason for them to logically be in each
branch, and it seems the code was originally written with the
BeginTransaction in one place, but later had to be refactored into its
current form.
Note that this separates the comment from one of the EndEmptyTransaction
calls below it, but the comment was actually associated primarily with
the further EndEmptyTransaction call, and with the if above it, based on
the history pointing to
https://hg.mozilla.org/mozilla-central/rev/b4e9a17e7fe2
Specifically GetBounds should use nsDisplaySubDocument::GetBounds (and not nsDisplayWrapList::GetBounds) before converting it to the right app units.
Similarly for ComputeVisibility except with the added wrinkle that nsDisplaySubDocument::ComputeVisibility won't properly handle coordinates if we are not generating a scroll layer. Namely it calls nsDisplayWrapList::ComputeVisibility which uses mVisibleRect (which is the visible rect of the scroll frame), when it needs to be using the visible rect of the contained list, which is for the scrolled content inside.
mVisibleRect contains the bounds after the scrolled content has been clipped to the scrollport. The visible rect on the contained list (mList) contain the bounds for all pre-drawn content in the displayport.