Commit Graph

27220 Commits

Author SHA1 Message Date
Kartikaya Gupta
453b31e327 Bug 1191277 - Ensure that we don't find clusters of clickable elements when there is no possible way for the heuristic to actually target those elements. r=domivinc 2015-08-15 11:15:29 -04:00
Cameron McCormack
6e7ec6c889 Bug 1146101 - Test. r=dbaron a=abillings 2015-08-14 12:24:49 +10:00
Mason Chang
8e20cbd768 Bug 1144946 - Delete PreciseRefreshDriverTimerWindowsDwmVsync refresh driver timer. r=roc 2015-08-13 08:22:28 -07:00
Xidorn Quan
ecdc64fc29 Bug 1186721 - Suppress line break due to soft hyphen inside ruby. r=jfkthame 2015-08-13 22:39:51 +10:00
Francois Marier
6349d3c212 Bug 992096 - Implement Sub Resource Integrity [1/2]. r=baku,r=ckerschb
Code changes
2015-08-12 20:19:11 -07:00
L. David Baron
f812cebb7e Bug 1195142 patch 3 - Link to correct specification URLs so the CSSWG test suite system is happy. 2015-08-18 08:20:35 +02:00
Ms2ger
f0d59f4600 Remove prefixed properties. No bug.
(Imported from https://hg.csswg.org/test/ by dbaron.)
2015-08-11 12:21:28 +02:00
L. David Baron
b4ca127aea Bug 1195142 patch 2 - Add reftests for will-change creating a stacking context. r=BenWa 2015-08-18 08:13:56 +02:00
L. David Baron
6574de9487 Bug 1195142 patch 1 - Set CSS_PROPERTY_CREATES_STACKING_CONTEXT for the opacity property. r=BenWa
This isn't actually needed for the only caller (which ensures that
frames with will-change: opacity create a stacking context), since
nsIFrame::BuildDisplayListForChild checks HasOpacity, which checks for
NS_STYLE_WILL_CHANGE_OPACITY.  However, it's good to have the bit set
for consistency in case we use it elsewhere.
2015-08-18 08:13:56 +02:00
Robert O'Callahan
b12ac5e986 Bug 1179288. Make position:fixed induce a stacking context. r=heycam 2015-08-17 11:02:54 +12:00
Wes Kocher
9eb02381a9 Merge m-c to inbound, a=merge 2015-08-17 17:15:24 -07:00
Mike Hommey
71dfb17528 Bug 1194497 - Convert a few remaining PRUnichar to char16_t. r=roc 2015-08-18 08:09:14 +09:00
Tom Tromey
a609b68474 Bug 1013814 - add inIDOMUtils.getRelativeRuleLine; r=heycam,pbrosset 2015-08-17 15:19:21 -07:00
Arnaud Bienner
d99c4429a7 Bug 1190086 - Use new String::Contains(char) method more widely r=froydnj 2015-08-14 00:49:15 +02:00
Ryan VanderMeulen
d36bbe2fa9 Bug 1172123 - Mark image-scrolling-zoom-1.html as fuzzy on OSX. r=seth
CLOSED TREE
2015-08-12 14:01:56 -04:00
Aryeh Gregor
f5961e4a6b Bug 874842 - Return Event instead of nsIDOMEvent 2015-08-12 14:39:31 +03:00
Jonathan Kew
f32d84ec5b Bug 1191185 - Simplify nsHypotheticalBox, eliminating obsolete/redundant fields, and rename to nsHypotheticalPosition. r=dholbert 2015-08-12 11:02:02 +01:00
Jonathan Kew
98815c8022 Bug 1191109 - Clean up use of writing-modes in GetHypotheticalBoxContainer, eliminating a redundant ConvertTo call. r=dholbert 2015-08-12 11:02:02 +01:00
Jonathan Kew
ae1c75cb4e Bug 1191855 - Make the intrinsic size of <iframe> remain physical 300x150, regardless of writing mode. r=dholbert 2015-08-12 11:02:02 +01:00
Cameron McCormack
e5b00ee850 Bug 1193019 - Rename CSSFontFaceLoadEvent to FontFaceSetLoadEvent. r=khuey 2015-08-11 12:19:52 +10:00
Benoit Girard
6e8f2c1528 Bug 1191412 - Fix logic and text for the WillChange warning. r=roc 2015-08-07 16:05:19 -04:00
Nick Robson
07b38ad250 Bug 1075089 - Move popup menu frame offset to LookAndFeel and fix default offset for OS X. r=Enn 2015-08-04 16:41:00 -04:00
Birunthan Mohanathas
fd290c6aa3 Bug 1185763 - Part 3: Rename nsTArray::MoveElementsFrom to AppendElements. r=froydnj 2015-08-11 08:29:46 -07:00
Birunthan Mohanathas
0e83cd889c Bug 1185763 - Part 1: Always use mozilla::Move with nsTArray::MoveElementsFrom. r=froydnj 2015-08-11 08:29:46 -07:00
Kyle Huey
1ffb03e8dc Bug 1179909: Refactor stable state handling. r=smaug
This is motivated by three separate but related problems:

1. Our concept of recursion depth is broken for things that run from AfterProcessNextEvent observers (e.g. Promises). We decrement the recursionDepth counter before firing observers, so a Promise callback running at the lowest event loop depth has a recursion depth of 0 (whereas a regular nsIRunnable would be 1). This is a problem because it's impossible to distinguish a Promise running after a sync XHR's onreadystatechange handler from a top-level event (since the former runs with depth 2 - 1 = 1, and the latter runs with just 1).

2. The nsIThreadObserver mechanism that is used by a lot of code to run "after" the current event is a poor fit for anything that runs script. First, the order the observers fire in is the order they were added, not anything fixed by spec. Additionally, running script can cause the event loop to spin, which is a big source of pain here (bholley has some nasty bug caused by this).

3. We run Promises from different points in the code for workers and main thread. The latter runs from XPConnect's nsIThreadObserver callbacks, while the former runs from a hardcoded call to run Promises in the worker event loop. What workers do is particularly problematic because it means we can't get the right recursion depth no matter what we do to nsThread.

The solve this, this patch does the following:

1. Consolidate some handling of microtasks and all handling of stable state from appshell and WorkerPrivate into CycleCollectedJSRuntime.
2. Make the recursionDepth counter only available to CycleCollectedJSRuntime (and its consumers) and remove it from the nsIThreadInternal and nsIThreadObserver APIs.
3. Adjust the recursionDepth counter so that microtasks run with the recursionDepth of the task they are associated with.
4. Introduce the concept of metastable state to replace appshell's RunBeforeNextEvent. Metastable state is reached after every microtask or task is completed. This provides the semantics that bent and I want for IndexedDB, where transactions autocommit at the end of a microtask and do not "spill" from one microtask into a subsequent microtask. This differs from appshell's RunBeforeNextEvent in two ways:
a) It fires between microtasks, which was the motivation for starting this.
b) It no longer ensures that we're at the same event loop depth in the native event queue. bent decided we don't care about this.
5. Reorder stable state to happen after microtasks such as Promises, per HTML. Right now we call the regular thread observers, including appshell, before the main thread observer (XPConnect), so stable state tasks happen before microtasks.
2015-08-11 06:10:46 -07:00
Kartikaya Gupta
7f7e3ef215 Bug 1189443 - Don't round down the margin amounts when inflating the displayport. r=dvander 2015-08-10 18:30:45 -04:00
Kartikaya Gupta
7558b16fd6 Bug 1191961 - Ensure scrollframes are activated similarly in test and reference pages. r=kip
With APZ enabled, these tests activate scrollframes (by scrolling them) in the
test pages but not the reference pages. This causes differences in layerization
which causes reftests to fail by a few pixel differences in the scrollbars. By
making the scrollboxes will-change:scroll-position both the test and reference
pages have activated scrollframes, and so the layerization is the same in both.
2015-08-10 10:59:47 -04:00
Neil Deakin
ee72237cfe Bug 1186972, use correct coordinates when comparing mouse position with menu anchor rectangle so that select element popups close properly, r=tn 2015-08-10 08:31:37 -04:00
Phil Ringnalda
44b7668948 Merge f-t to m-c, a=merge 2015-08-09 15:45:11 -07:00
Phil Ringnalda
cb5b880c6f Bug 1192575 - Update bug418986-2.js with the value of -moz-os-version for Windows 10 2015-08-07 22:23:30 -07:00
Cameron McCormack
be550d0652 Bug 1149542 - Part 3: Crashtest. r=dholbert 2015-08-08 11:40:04 +10:00
Brian Grinstead
6cc33a7f9a Bug 1175606 - Disable tracking protection for reftests;r=philor 2015-08-08 23:16:27 -07:00
Matt Woodrow
cd8614201c Bug 1187432 - Avoid scheduling main-thread paints for scrolls handled by apz. r=tn 2015-08-07 15:37:56 -04:00
L. David Baron
45d17c03ac Add missing match/mismatch links to reftests submitted to CSS WG test suite, so that they work correctly as CSSWG reftests in addition to working as our reftests. No bug. 2015-08-07 12:18:57 -07:00
Kartikaya Gupta
a08d86c0a3 Bug 1168487 - Update the last use site of ScrollbarAreaToExcludeFromCompositionBoundsFor to use LD pixels. r=tn 2015-08-07 14:23:13 -04:00
Mats Palmgren
a4131836eb Bug 1178575 - tests. 2015-08-07 14:05:48 +02:00
Mats Palmgren
5a0dd61b96 Bug 1178575 - Intersect the clip rect with aDirtyRect. r=roc 2015-08-07 14:05:48 +02:00
Lee Salzman
bfe0ffd48b Bug 1191609 - Always stroke CSS border sides separately from corner fills. r=mstange 2015-08-06 00:33:44 -04:00
Xidorn Quan
73ea534251 Backout unrelated code landed in dee3e26cc1c0 by mistake. 2015-08-07 14:40:16 +10:00
Xidorn Quan
221fbffb2a Bug 1186890 - Ensure parent always know when the child exit fullscreen. r=Dolske 2015-08-07 13:38:10 +10:00
Brian Birtles
658a7e1a29 Bug 1181392 part 9 - Remove use of IsFinishedTransition from nsTransitionManager::FlushTransitions; r=dbaron
This patch updates the logic in nsTransitionManager::FlushTransitions that deals
with detecting newly-started (i.e. when the delay phase has just finished) or
newly-finished animations. The existing logic had the following behavior:

* Calling SetIsFinishedTransition for newly-finished transitions.
  This is no longer needed since by this point all consumers of
  IsFinishedTransition have been updated to use alternative means for testing
  if an animation is relevant.

* Setting transitionStartedOrEnded to true so that we would post an animation
  restyle.
  We can achieve this same effect by simplying updating the canThrottleTick
  flag using the result of calling Animation::CanThrottle on each animation.
  Animation::CanThrottle will return false for a newly-started or
  newly-finished animation (it returns false for a newly-started animation
  since the animation's mIsRunningOnCompositor flag won't yet be true at that
  point.)

* Updating the animation generation for newly-started and newly-finished
  animations in order to trigger a layer update.
  At least that appears to be the intention of this code. However, it currently
  has no effect since the animation generation on the pres context is not
  incremented in any context I could find where a newly started/finished
  animation might be detected.

For this third case, this patch adds tests to ensure that transitions are
correctly added and removed from the compositor when they start and finish.
This is because most of the existing tests in test_animations_omta.html cover
only CSS animations.

As noted in the comments in the test, if a tick lands at the exact beginning of
a transition we will typically not send it to the layer until the following tick
because the RestyleManager will filter out the seemingly redundant change (i.e.
no change to the computed style). Presumably updating the animation generation
was intended to avoid this.

This same behavior is true of CSS animations (and the same kind of comment
appears elsewhere in test_animations_omta.html). Long-term this is probably
worth fixing so that when a transition is triggered we get it to the compositor
one tick earlier which should improve responsiveness when the main thread is
busy and the interval between ticks is long. Furthermore, we should do the same
for both all type of animations, not just transitions.

Currently, however, this patch preserves the existing behavior and helps narrow
the difference between transitions and animations so we can apply this
optimization to both.
2015-08-07 12:29:36 +09:00
Brian Birtles
007fe9cc21 Bug 1181392 part 8 - Remove use of IsFinishedTransition from nsTransitionManager::PruneCompletedTransitions; r=dbaron
This patch generalizes the logic in
nsTransitionManager::PruneCompletedTransitions to consider all transitions that
are no longer current (i.e. not running or scheduled to run) rather than
those marked as finished.
2015-08-07 12:29:36 +09:00
Brian Birtles
77ac1c41b7 Bug 1181392 part 7 - Remove use of IsFinishedTransition from nsTransitionManager::ConsiderStartingTransition; r=dbaron
Of particular note, this patch removes the check for finished transitions in
the case when we can't animate the current change. This case occurs when either
we have a non-transition style change that happens to coincide with the current
transition value, or a style change to something we can't interpolate to. In
either case it's not clear why we would cancel the existing transition only if
it is still in motion and not if it is finished. It seems like it should be
cancelled in either case and hence this patch removes this check.

The other change relates to detecting reversing transitions. In this case we do
need to distinguish between transitions that have finished and those that have
not. For this purpose, checking if the animation is current should be
sufficient. (Note that comparing for PlayState() == Finished would not be enough
since we want to also exclude *idle*, i.e. cancelled, animations too.)
2015-08-07 12:29:36 +09:00
Brian Birtles
99c8462d7f Bug 1181392 part 6 - Remove use of IsFinishedTransition from nsTransitionManager::StyleContextChanged; r=dbaron
In StyleContextChanged, when we drop a transition, we also update the animation
generation, unless the transition is finished. This is so that we will update
animations on layers accordingly. For all intents and purposes this is
equivalent to only updating the animation generation if the animation is
current.

Even in the case where the transition has *just* finished, it will either
already be considered finished and the regular animation tick (which uses the
same refresh driver time as we see in StyleContextChanged) will have triggered
an unthrottled sample to take the animation off the compositor (since
Animation::CanThrottle detects newly finished animations), or it will be not yet
finished in which case HasCurrentEffect will return true. If anything changed
timing properties in the time between running the refresh driver tick and
calling StyleContextChanged (such as seeking the Animation) it will also trigger
a layer update.

This patch also removes an unncessary assertion in
ElementPropertyTransition::CurrentValuePortion. This functions operates
sensibly even for finished transitions (due to the way it manages the fill
mode). It is up to the call site to determine whether it should be calling this
function on a finished transition or not.
2015-08-07 12:29:36 +09:00
Brian Birtles
b75f33037c Bug 1181392 part 5 - Remove use of IsFinishedTransition from AnimationCollection::HasAnimationOfProperty; r=dbaron
AnimationCollection::HasAnimationOfProperty uses IsFinishedTransition to filter
out transitions that should otherwise be ignored. This is used in the following
places:

1. nsLayoutUtils::HasAnimations

   The is only used by nsIFrame::BuildDisplayListForStackingContext to see if
   there are any opacity animations

   For this case, simply returning *current* animations would be sufficient
   (since finished but filling animations should have already filled in the
   display opacity)

2. CommonAnimationManager::GetAnimationsForCompositor

   This should really only return *current* animations--that is, animations that
   are running or scheduled to run. Finished animations never run on the
   compositor. Indeed, only *playing* animations run on the compositor but, as
   we will see in some of the cases below, it is sometimes useful to know that
   an animation *will* run on the compositor in the near future (e.g. so we can
   pre-render content).

   The places where GetAnimationsForCompositor is used are:

   - When building layers to add animations to layers in nsDisplayList--in this
     case we skip any animations that aren't playing so if
     GetAnimationsForCompositor only returned current animations that would be
     more than sufficient.

   - In nsLayoutUtils::HasAnimationsForCompositor. This in turn is used:

     - In ChooseScaleAndSetTransform to see if the transform is being animated
       on the compositor. If so, it calls
       nsLayoutUtils::ComputeSuitableScaleForAnimation (which also calls
       GetAnimationsForCompositor) and passes the result to
       GetMinAndMaxScaleForAnimationProperty which we have already adjusted in
       part 4 of this patch series to only deal with *relevant* animations

       Relevant animations include both current animations and in effect
       animations but we don't run forwards-filling animations on the compositor
       so GetAnimationsForCompositor should NOT return them. Current animations
       should be enough. In fact, playing animations should be enough but we
       might want to pre-render layers at a suitable size during their delay
       phase so returning current animations is probably ok.

     - In nsDisplayListBuilder::MarkOutOfFlowFrameForDisplay to add a fuzz
       factor to the overflow rect for frames undergoing a transform animation
       on the compositor. In this case too current animations should be
       sufficient.

     - In nsDisplayOpacity::NeedsActiveLayer to say "yes" if we are animating
       opacity on the compositor. Presumably in this case it would be good to
       say "yes" if the animation is in the delay phase too (as it currently
       does). After the animation is finished, we should drop the layer, i.e.
       current animations should be sufficient.

     - In nsDisplayTransform::ShouldPrerenderTransformedContent. As with
       nsDisplayOpacity::NeedsActiveLayer, we only need to pre-render
       transformed content for animations that are current.

     - In nsDisplayTransform::GetLayerState. As with
       nsDisplayOpacity::NeedsActiveLayer, we only need to return active here
       for current animations.

     - In nsIFrame::IsTransformed. Here we test the display style to see if
       there is a transform and also check if transform is being animated on the
       compositor. As a result, we really only need HasAnimationsForCompositor
       to return true for animations that are playing--otherwise the display
       style will tell us if we're transformed or not. Returning true for all
       current compositor animations (which is a superset of playing), however,
       should not cause problems (we already return true for even more than
       that).

     - In nsIFrame::HasOpacityInternal which is much the same as
       nsIFrame::IsTransformed and hence current should be fine.

3. AnimationCollection::CanThrottleAnimation

   Here, HasAnimationOfProperty is used when looking for animations that would
   disqualify us from throttling the animation by having an out-of-date layer
   generation or being a transform animation that affects scroll and so requires
   that we do the occasional main thread sample to update scrollbars.

   It would seem like current animations are enough here too. One interesting
   case is where we *had* a compositor animation but it has finished or been
   cancelled. In that case, the animation won't be current and we should not
   throttle the animation since we need to take it off its layer.

   It turns out checking for current animations is still ok in this case too.
   The reasoning is as follows:

   - If the animation is newly-finished, we'll pick that up in
     Animation::CanThrottle and return false then.

   - If the animation is newly-idle then there are two cases:

     If the cancelled animation was the only compositor animation then
     AnimationCollection::CanPerformOnCompositorThread will notice that there
     are no playing compositor animations and return false and
     AnimationCollection::CanThrottleAnimation will never be called.

     If there are other compositor animations running, then
     AnimationCollection::CanThrottleAnimation will still return false because
     whatever cancelled the animation will update the animation generation and
     we'll notice the mismatch between the layer animation generation and the
     animation generation on the collection.

Based on the above analysis it appears that making
AnimationCollection::HasAnimationOfProperty return only current animations (and
simulatneously renaming it to HasCurrentAnimationOfProperty) is safe. Indeed, in
effect, we already do this for transitions but not for animations. This patch
generalizes this behavior to all animations.

This patch also updates test_animations_omta.html since it was incorrectly
testing that a finished opacity animation was still running on the compositor.
Finished animations should not run on the compositor and the changes in this
patch cause that to happen. The reason we don't just update this test to check
for RunningOn.MainThread is that for opacity animations, unlike transform
animations, we can't detect if an opacity on a layer was set by animation or
not. As a result, for opacity animations we typically test the opacity on
either the main thread or compositor in order to allow for the case where an
animation-set opacity is still lingering on the compositor.
2015-08-07 12:29:36 +09:00
Brian Birtles
d21a5ec32c Bug 1181392 part 4 - Remove use of IsFinishedTransition from nsLayoutUtils; r=dbaron
GetMinAndMaxScaleForAnimationProperty in nsLayoutUtils uses IsFinishedTransition
to ignore finished transitions since they should not have any effect on current
or future scale values. We can generalize this, however, and say we are only
interested in animations that are *either*:

a) running or scheduled to run in the future, i.e. "current", OR
b) applying a value, including a finished animation with a forwards fill,
   i.e. "in effect"

Elsewhere, animations that fulfil *either* of this conditions are referred to as
"relevant animations" so we can simply test for relevance in this function.
2015-08-07 12:29:36 +09:00
Wes Kocher
470f734e39 Merge m-c to inbound, a=merge 2015-08-06 18:11:16 -07:00
Brian Birtles
a8682cf4b0 Bug 1180125 part 8 - Dispatch transition events from refresh driver; r=dbaron
This patch causes transition events to be dispatched as a separate step after
sampling the transitions. Eventually this will allow us to sample transitions
from their timeline (independently of where they came from and in potentially
any order) by separating the concepts of sampling and event dispatch.
2015-07-29 10:57:40 +09:00
Brian Birtles
256f836f71 Bug 1180125 part 7 - Queue transition events from CSSTransition::Tick; r=dbaron
This patch moves the logic for queueing events out of the logic for flushing
transitions making it a separate step. It still doesn't delay the dispatch of
those events into a separate step, however. That is done in a subsequent patch.

This patch also makes sure to clear any queued events when the nsPresShell that
owns the transition manager is destroyed. We don't expect CSSTransition::Tick to
be called anywhere except nsTransitionManger::FlushTransitions so there
shouldn't be any orphaned events but for completeness it seems best to add this
now. (Later, when we tick transitions from their timeline we will need this.)

This patch introduces a separate flag to CSSTransition for tracking if a
transition is newly-finished so we can correctly dispatch the transitionend
event. Although, this may seem to be redundant with the "IsFinishedTransition"
we also track, that state will soon be removed in bug 1181392 and hence this
flag will be needed then.

Note that Animation already has flags mIsPreviousStateFinished and
mFinishedAtLastComposeStyle which would appear to be similar however,

- mIsPreviousStateFinished will be removed in bug 1178665 and is updated more
  often than we queue events so it is not useful here.
- mFinishedAtLastComposeStyle is used to determine if we can throttle a style
  update and is also updated more frequently than we queue events and hence
  can't be used here.

Once we guarantee one call to Tick() per frame we may be able to simplify this
by tracking "state on last tick" but for now we need this additional flag on
CSSTransition. CSSAnimation has a similar flag for this
(mPreviousPhaseOrIteration) which we may be able to unify at the same point.
2015-07-29 10:57:40 +09:00
Brian Birtles
3916e22f2d Bug 1180125 part 6 - Use DelayedEventDispatcher in nsTransitionManager; r=dbaron
This simply uses the DelayedEventDispatcher in place of the previous array of
TransitionEventInfo objects. Doing the actual delayed dispatch is performed in
a separate patch.
2015-07-29 10:57:40 +09:00
Brian Birtles
86b3fb5040 Bug 1180125 part 5 - Move TransitionEventInfo to nsTransitionManager.h; r=dbaron
This is needed so we can allocate storage in nsTransitionManager for the
transition events we will queue for delayed dispatch.
2015-07-29 10:57:40 +09:00
Brian Birtles
7fac27c8f2 Bug 1180125 part 4 - Move PseudoTypeAsString to AnimationCollection and reuse; r=dbaron
Prior to this patch, CSSAnimation defined a method for converting an
nsCSSPseudoElements::Type to a nsString (but only for the set of
pseudo-elements that can have animations). We would like to re-use this
when setting up transition events so this patch moves it to
AnimationCollection. Re-using this method more widely means we can make
a few further simplifications to the code.
2015-07-29 10:57:40 +09:00
Brian Birtles
61f8b5877d Bug 1180125 part 3 - Extract DelayedEventDispatcher; r=dbaron
This patch extracts a utility class for queueing up a series of EventInfo
objects (of templated type) and then dispatching them. This covers the event
queuing behavior in nsAnimationManager so that we can reuse it in
nsTransitionManager.
2015-07-29 10:57:39 +09:00
Brian Birtles
e4cb3c7353 Bug 1180125 part 2 - Move AnimationCommon classes out of CSS namespace; r=dbaron
The long-term plan is to drop the mozilla::css namespace altogether. Before we
go to much further with refactoring code in AnimationCommon, we should drop
usage of the mozilla::css namespace. Specifically, this patch moves the
CommonAnimationManager and AnimValuesStyleRule classes to the mozilla namespace.
2015-07-29 10:57:39 +09:00
Brian Birtles
20feb8ddef Bug 1180125 part 1b - Hook nsAnimationManager's list of events up to the cycle collector; r=dbaron 2015-07-29 10:57:39 +09:00
Brian Birtles
4b7b196882 Bug 1180125 part 1 - Queue and dispatch CSS animation events as a separate step; r=dbaron
This patch prepares the way for script-generated events by making
event dispatch a separate process that happens after sampling animations.
This will allow us to sample animations from their associated timeline
(removing the need for a further manager to tracker script-generated
animations).

Furthermore, once we sample animations from timelines the order in which they
are sampled is likely to be more or less random so by making event dispatch at
separate step, we have an opportunity to sort the events and dispatch in
a consistent and sensible order. It also ensures that event callbacks will
not be run until all animations (including transitions) have been updated
ensuring they see a consistent view of timing properties.

This patch only affects event handling for CSS animations. Transitions will
be dealt with in a subsequent patch.
2015-07-29 10:57:39 +09:00
Brian Birtles
4e3e752017 Bug 1180125 part 0 - Fix an obvious bug in animation_utils.js; r=dbaron
There was a bug introduced in to animation_utils.js in
https://hg.mozilla.org/mozilla-central/rev/496e867cd2cd (bug 1070745). This
patch fixes this bug so we can be sure testing events correctly before messing
with them.
2015-07-29 10:57:38 +09:00
Jonathan Kew
d9a2deabb6 Bug 1183431 - Ensure hypothetical box has a writing mode with the same block direction as the absolute containing block. r=dholbert 2015-08-06 21:01:31 +01:00
Jonathan Kew
5c700944e2 Bug 1183431 - Tests for hypothetical box computation (to determine static position of abspos element) where orthogonal writing modes are involved. r=dholbert 2015-08-06 21:00:45 +01:00
Jonathan Kew
f302fe931b Backout changesets 1639af64e372, 74ecf0f57a56, 94831690f525, 27eab13d3cf2 (bug 1183431) for Android-specific failure in reftest 1183431-orthogonal-modes-5a.html. 2015-08-06 17:32:20 +01:00
Jonathan Kew
e99b30bfad Bug 1183431 followup - Crashtest no longer asserts, so mark it appropriately on the CLOSED TREE. 2015-08-06 16:36:50 +01:00
Jonathan Kew
e258325cd4 Bug 1183431 followup - Add the test files that I failed to "hg add" when updating the reftest patch, because it's going to burn the CLOSED TREE. 2015-08-06 16:25:07 +01:00
Jonathan Kew
6b8a7315f4 Bug 1183431 - Ensure hypothetical box has a writing mode with the same block direction as the absolute containing block. r=dholbert 2015-08-06 15:44:50 +01:00
Jonathan Kew
722aa62919 Bug 1183431 - Tests for hypothetical box computation (to determine static position of abspos element) where orthogonal writing modes are involved. r=dholbert 2015-08-06 15:44:48 +01:00
Jeremy Chen
29b1ef5c80 Bug 1181418 - Send selectionEditable info to app_text_selection_dialog. r=tlin, r=kanru, sr=smaug 2015-07-31 04:34:00 +08:00
John Daggett
fee8ab207f Bug 1176275 - fixup reftests that will fail without fontconfig platform fontlist. r=heycam 2015-08-06 14:33:15 +09:00
L. David Baron
200c0cb919 Bug 451791 patch 2 - Report block non-empty to its parent block during margin collapsing if we encounter clearance. r=roc
The goal of ComputeCollapsedBStartMargin is to collapse all of the
margins that collapse with a block's top margin.  It does this by
scanning forward through the child list until it finds something that
blocks collapsing; it descends into children through recursion.  When we
find a non-empty block or line, we stop collapsing and report to the
parent that the child is non-empty so that it stops collapsing as well.

This patch changes our behavior when we have clearance to do the same
thing that we do for non-empty lines or blocks (which makes both
occurrences of |goto done| be preceded by the same code).  Without the
patch we would fail to report being non-empty to the parent (and instead
report emptiness based on the IsEmpty() method).  This meant that,
without the patch, if a block has a child with clearance but also has
IsEmpty() true, we would stop scanning margins in that block after the
clearance, but start searching again for margins in the block's parent,
starting with the block's bottom margin.  This patch sets *aBlockIsEmpty
to true in that case so that we do not pick up again in the block's
parent (or, potentially, grandparent, etc.).
2015-08-05 21:04:38 -07:00
L. David Baron
8b50f0495a Bug 451791 patch 1 - Remove write-only nsHTMLReflowState::mFlags::mHasClearance. r=roc
This was introduced in bug 209694 (gecko-dev 13a65028) but became unused
through bug 292295 (gecko-dev 4593df2a57) and bug 300030 (gecko-dev
31f18988).
2015-08-05 21:04:38 -07:00
Cameron McCormack
2527b5f2f1 Bug 1190254 - Use same conditions to call ReparentStyleContext in RestyleUndisplayedNodes as in RestyleSelf. r=mats 2015-08-06 09:16:00 +10:00
Kartikaya Gupta
86ef51386e Bug 1189837 - Subtract scrollbars in LD pixels rather than CSS pixels. r=mstange 2015-08-05 14:39:42 -04:00
Cameron McCormack
6e3e83210a Bug 1180118 - Part 11: Use ReparentStyleContext even if eRestyle_SomeDescendants is used. r=bzbarsky 2015-08-05 22:42:21 +10:00
Cameron McCormack
a449d7568c Bug 1180118 - Part 10: Logging. r=bzbarsky 2015-08-05 22:42:21 +10:00
Cameron McCormack
ee642530be Bug 1180118 - Part 9: Clear nsCSSSelector pointers in the pending restyle tracker if they might be stale. r=bzbarsky 2015-08-05 22:42:21 +10:00
Cameron McCormack
bd001a68ec Bug 1180118 - Part 8: Keep track of the closest restyle root in AddPendingRestylesForDescendantsMatchingSelectors. r=bzbarsky 2015-08-05 22:42:21 +10:00
Cameron McCormack
613625e1b5 Bug 1180118 - Part 7: Split out FindClosestRestyleRoot and allow passing in a pre-computed restyle root to AddPendingRestyle. r=bzbarsky 2015-08-05 22:42:21 +10:00
Cameron McCormack
1a33569ab2 Bug 1180118 - Part 6: Return eRestyle_SomeDescendants from HasAttributeDependentStyle where appropriate. r=bzbarsky 2015-08-05 22:42:21 +10:00
Cameron McCormack
9bb0cce6bd Bug 1180118 - Part 5: Add a RestyleHintData outparam to HasAttributeDependentStyle for use with eRestyle_SomeDescendants. r=bzbarsky 2015-08-05 22:42:21 +10:00
Cameron McCormack
9934218fb6 Bug 1180118 - Part 4: Store pointer to the rightmost selector for class, ID and attribute selectors in the rule cascade. r=bzbarsky 2015-08-05 22:42:20 +10:00
Cameron McCormack
9e49ce1258 Bug 1180118 - Part 3: Convert eRestyle_SomeDescendants into eRestyle_Self for elements that match selectors. r=bzbarsky 2015-08-05 22:42:20 +10:00
Cameron McCormack
b2b0c4777c Bug 1180118 - Part 2: Add eRestyle_SomeDescendants restyle hint and pass associated restyle hint data into restyle methods. r=bzbarsky 2015-08-05 22:42:20 +10:00
Cameron McCormack
c418a5428f Bug 1180118 - Part 1: Add a method to match a single nsCSSSelector (without pseudo-elements) against an Element. r=bzbarsky 2015-08-05 22:42:20 +10:00
Jonathan Kew
5e316b541c Bug 1113206 followup - Add simple test for <select> elements in vertical writing mode. r=roc 2015-08-05 12:43:24 +01:00
Mason Chang [:mchang]
09ca2626fb Bug 1073209 - Eliminate usage of CreateSamplingRestrictedDrawable on d2d backends. r=jrmuizel 2015-08-04 08:13:00 +02:00
Birunthan Mohanathas
9b6236a10a Bug 1191100 - Remove XPIDL signature comments in .cpp files. r=ehsan
Comment-only so DONTBUILD.
2015-08-04 16:17:36 -07:00
L. David Baron
9668cf3a00 Bug 1187851 patch 5 - Make dynamic changes to perspective change fixed position containing block for descendants. r=roc 2015-08-04 14:29:16 -07:00
L. David Baron
eadf224376 Bug 1187851 patch 4 - Fix URL in tests to be something that Shepherd recognizes. No review. 2015-08-04 14:29:16 -07:00
Daniel Holbert
e78e37814f Bug 1187110 part 5: re-enable mochitest test_extra_inherit_initial.html on b2g debug. (no review) 2015-07-22 07:59:23 -07:00
Daniel Holbert
4e5781d626 Bug 1187110 part 4: In test_extra_inherit_initial.html, only test every special-keyword with the first few values of each property (and then test one keyword per value). r=heycam 2015-08-04 14:05:22 -07:00
Daniel Holbert
2ed0e4495f Bug 1187110 part 3: Iterate across array of special keyword values, instead of hardcoded function-arguments, in test_extra_inherit_initial.html. r=heycam 2015-08-04 14:05:22 -07:00
Daniel Holbert
92ebef1b50 Bug 1187110 part 2: Use "let" instead of "var" in test_extra_inherit_initial.html, to make scoping more explicit. r=heycam 2015-08-04 14:05:22 -07:00
Daniel Holbert
87015bb329 Bug 1187110 part 1: Use "for of" instead of "for in" to loop over an array in test_extra_inherit_initial.html. r=heycam 2015-08-04 14:05:12 -07:00
Robert O'Callahan
f0331f0a98 Bug 1190635. Don't early-return for an mHeight change, since width changes can add extra change hints. r=heycam
Don't return early for an mWidth change either.
2015-08-04 16:41:50 +12:00
Carsten "Tomcat" Book
22c46d8958 Backed out 13 changesets (bug 1180118) for crashes on a CLOSED TREE
Backed out changeset c65d298d7cfa (bug 1180118)
Backed out changeset 7c5ebadc3fc9 (bug 1180118)
Backed out changeset 91a3e2205388 (bug 1180118)
Backed out changeset 15ad6049b940 (bug 1180118)
Backed out changeset 9b41cd9f2bc5 (bug 1180118)
Backed out changeset 37493f6eef20 (bug 1180118)
Backed out changeset b7ec8d4d2d7e (bug 1180118)
Backed out changeset cfeeae42d514 (bug 1180118)
Backed out changeset 9bcc3233f3c8 (bug 1180118)
Backed out changeset b99c358a6fea (bug 1180118)
Backed out changeset 4a7b79980353 (bug 1180118)
Backed out changeset 20984dfa4302 (bug 1180118)
Backed out changeset ef165b896cf4 (bug 1180118)
2015-08-04 12:20:20 +02:00
Cameron McCormack
0fddbc0824 Bug 1180118 - Second followup warning-as-error build fix. 2015-08-04 17:50:32 +10:00
Cameron McCormack
6bec42f7ac Bug 1180118 - Followup warning-as-error build fix. 2015-08-04 17:49:53 +10:00
Cameron McCormack
e0954cacf9 Bug 1180118 - Part 11: Use ReparentStyleContext even if eRestyle_SomeDescendants is used. r=bzbarsky 2015-08-04 17:27:53 +10:00
Cameron McCormack
1249db8d6f Bug 1180118 - Part 10: Logging. r=bzbarsky 2015-08-04 17:27:53 +10:00
Cameron McCormack
3d207db04f Bug 1180118 - Part 9: Clear nsCSSSelector pointers in the pending restyle tracker if they might be stale. r=bzbarsky 2015-08-04 17:27:53 +10:00
Cameron McCormack
0dfed4ea0c Bug 1180118 - Part 8: Keep track of the closest restyle root in AddPendingRestylesForDescendantsMatchingSelectors. r=bzbarsky 2015-08-04 17:27:53 +10:00
Cameron McCormack
429fc23695 Bug 1180118 - Part 7: Split out FindClosestRestyleRoot and allow passing in a pre-computed restyle root to AddPendingRestyle. r=bzbarsky 2015-08-04 17:27:53 +10:00
Cameron McCormack
068cf441ab Bug 1180118 - Part 6: Return eRestyle_SomeDescendants from HasAttributeDependentStyle where appropriate. r=bzbarsky 2015-08-04 17:27:53 +10:00
Cameron McCormack
d24ea39dec Bug 1180118 - Part 5: Add a RestyleHintData outparam to HasAttributeDependentStyle for use with eRestyle_SomeDescendants. r=bzbarsky 2015-08-04 17:27:53 +10:00
Cameron McCormack
fb05dd4326 Bug 1180118 - Part 4: Store pointer to the rightmost selector for class, ID and attribute selectors in the rule cascade. r=bzbarsky 2015-08-04 17:27:53 +10:00
Cameron McCormack
8e552e06ea Bug 1180118 - Part 3: Convert eRestyle_SomeDescendants into eRestyle_Self for elements that match selectors. r=bzbarsky 2015-08-04 17:27:52 +10:00
Cameron McCormack
4d7ed09b82 Bug 1180118 - Part 2: Add eRestyle_SomeDescendants restyle hint and pass associated restyle hint data into restyle methods. r=bzbarsky 2015-08-04 17:27:52 +10:00
Cameron McCormack
9e9dd010c3 Bug 1180118 - Part 1: Add a method to match a single nsCSSSelector (without pseudo-elements) against an Element. r=bzbarsky 2015-08-04 17:27:52 +10:00
Nicholas Nethercote
845b474b3c Bug 1189156 (part 4) - Don't use enumeration style for nsBaseHashtable::SizeOf{In,Ex}cludingThis(). r=erahm,jfkthame.
After this change, we have ShallowSizeOf{In,Ex}cludingThis(), which don't do
anything to measure children. (They can be combined with iteration to measure
children.)
2015-07-30 21:19:57 -07:00
Nicholas Nethercote
f23a15f104 Bug 1189156 (part 2) - Don't use enumeration style for nsTHashtable::SizeOf{In,Ex}cludingThis(). r=erahm.
After this change, we have ShallowSizeOf{In,Ex}cludingThis(), which don't do
anything to measure children. (They can be combined with iteration to measure
children.)

And we still have the existing single-arg SizeOf{In,Ex}cluding() functions,
which work if the entry type itself defines SizeOfExcludingThis().
2015-07-29 01:50:52 -07:00
L. David Baron
24a04c0947 Bug 1187851 patch 3 - Rename nsChangeHint_AddOrRemoveTransform to nsChangeHint_UpdateContainingBlock. r=roc
This is because patch 4 now uses AddAndRemoveTransform hints for changes
that are other than adding and removing a transform.  There's still a
little bit of transform-related stuff there too (which I did make
conditional in patch 2).
2015-08-03 20:18:00 -07:00
L. David Baron
9fa4e071c6 Bug 1187851 patch 2 - Cleanup to prepare for making dynamic changes to filter and perspective change fixed position containing block for descendants. r=roc 2015-08-03 20:18:00 -07:00
L. David Baron
09e1edef79 Bug 1187851 patch 1 - Tests for making dynamic changes to filter and perspective change fixed position containing block for descendants. r=roc
As expected, without the patch in patch 4, the filter and perspective
tests fail, but the added transform test passes.  All the tests pass
locally with patch 4.
2015-08-03 20:18:00 -07:00
Daniel Holbert
ccf479d5b1 Bug 1183786 - Part 4: Drop unnecessary '!!' boolification. r=tn 2015-08-03 17:13:08 -07:00
Daniel Holbert
e67b0fe9eb Bug 1183786 - Part 3: Make nsPresContext helper-function return already_AddRefed instead of bool+outparam. r=tn 2015-08-03 17:13:07 -07:00
Eric Rahm
38da96738d Bug 1183786 - Part 2: Delay updating after prefs changed if detached. r=tn r=dholbert 2015-07-30 20:47:26 -07:00
Eric Rahm
6ea570b8b8 Bug 1183786 - Part 1: Refactor timer setup code into a helper function. r=dholbert 2015-07-30 14:24:51 -07:00
Robert O'Callahan
727bfb81dc Bug 1184842. Restyling should consider only the classes that have changed. r=heycam 2015-07-25 17:56:58 +12:00
Robert O'Callahan
c0b6fcd9ee Bug 1184842. Route aOldValue/aNewValue to AttributeData. r=heycam 2015-07-22 15:54:07 +12:00
Robert O'Callahan
3e3003e4ce Bug 1184842. Add aNewValue to nsIMutationObserver::AttributeWillChange. r=peterv 2015-07-25 18:05:19 +12:00
Robert O'Callahan
9fb2247b78 Bug 1184842. Pass preparsed attribute values to nsNodeUtils::AttributeWillChange. r=peterv 2015-07-22 15:53:35 +12:00
Robert O'Callahan
53c0044a87 Bug 1184842. Pass aOldValue to all mutation observers. r=peterv 2015-07-25 18:01:19 +12:00
Robert O'Callahan
60019c952c Bug 1184842. Remove frameset mVisibilityOverride since it's always false now. r=mats 2015-07-21 16:22:02 +12:00
Robert O'Callahan
01b69ed910 Bug 1184842. Remove layout.frames.force_resizability pref. r=mats 2015-07-21 16:18:17 +12:00
Ryan VanderMeulen
7adbd17a19 Merge m-c to inbound. a=merge 2015-08-03 15:03:34 -04:00
Ryan VanderMeulen
fa2176eb4f Merge inbound to m-c. a=merge 2015-08-03 15:02:19 -04:00
Carsten "Tomcat" Book
0724563b89 Merge mozilla-central to fx-team 2015-08-03 16:16:12 +02:00
L. David Baron
2bc4edbca0 Backed out changeset f24dbdeeaef1 (Bug 1187851 patch 1) for reflow counting failures in Gaia integration tests apps/system/test/marionette/edges_gesture_test.js and apps/system/test/marionette/homescreen_navigation_test.js . 2015-08-02 22:35:28 -07:00
L. David Baron
3e99b50ca7 Backed out changeset 5dcb38c7f1b8 (Bug 1187851 patch 2) for reflow counting failures in Gaia integration tests apps/system/test/marionette/edges_gesture_test.js and apps/system/test/marionette/homescreen_navigation_test.js . 2015-08-02 22:34:49 -07:00
L. David Baron
117833e7c4 Bug 1187851 patch 2 - Rename nsChangeHint_AddOrRemoveTransform to nsChangeHint_UpdateContainingBlock. r=roc 2015-08-02 21:03:09 -07:00
L. David Baron
6d69ebfdfe Bug 1187851 patch 1 - Make dynamic changes to filter and perspective change fixed position containing block for descendants. r=roc
Note that this now uses AddAndRemoveTransform hints for changes that are
other than adding and removing a transform.  Since there's still a
little bit of transform-related stuff there too (which I did make
conditional), I figure it's probably best to leave the name as-is,
although I'd be open to renaming it as well.

As expected, without the patch, the filter and perspective tests fail,
but the added transform test passes.  All the tests pass locally with
the patch.
2015-08-02 21:03:09 -07:00
L. David Baron
1e265de04a Bug 538194 patch 2 - Redo block reflow below floats when the height of a block that does not intersect floats pushes it into the way of other floats. r=roc
This adds an additional retry loop in block reflow that we can only
trigger when reflowing a block formatting context (replacedBlock
non-null).  It can retry in two different ways, either with a narrower
width but at the same vertical position (when
ReplacedBlockFitsInAvailSpace is still true) or at a new vertical
position (which is treated as a form of clearance).

Fortunately we don't have to worry about margins collapsing *through*
such a boundary since we're dealing with a new block formatting context.

Note that Chromium passes all of the new bfc-displace-* tests, although
it moves the block formating context down unnecessarily in
bfc-shrink-1.html (which we do neither before nor after the patch),
though agrees with the width we have after the patch (but not before the
patch).
2015-08-02 21:03:09 -07:00
L. David Baron
88915cde1f Bug 538194 patch 1 - Refactor some code dealing with fitting block formatting contexts around floats into separate functions. r=roc 2015-08-02 21:03:09 -07:00
Kartikaya Gupta
fef03e9d58 Bug 1188172 - Don't update the resolution/SPCSPS for meta-viewport changes before the first-paint. r=botond 2015-08-02 22:50:54 -04:00
dominique vincent
80e6d6368f Bug 1188185 - Zoomed View appears when the two links are the same link. r=kats 2015-07-31 15:22:46 +02:00
Mike Taylor
f6b6db0b55 Bug 1189922. Add a preference to enable global whitelisting of the CSSUnprefixingService. r=dholbert
This is a temporary preference to allow for testing-in-the-wild by a larger
audience, for nightly builds. When 1177263 is fixed this can be removed.
---
 layout/style/nsCSSParser.cpp | 14 ++++++++++++++
 modules/libpref/init/all.js  |  6 ++++++
 2 files changed, 20 insertions(+)
2015-08-02 10:27:44 -07:00
Daniel Holbert
21228e762d Bug 1023344: Tweak asserts() annotation for crashtest 876074-1.html, to allow for occasional no-assertion & extra-assertion. 2015-07-31 16:29:50 -07:00
Drew Willcoxon
742ed4be70 Bug 1188665 - Make nsIDOMWindowUtils.disableDialogs() disable onbeforeunload dialogs. r=bz 2015-07-31 16:13:01 -07:00
Neil Rashbrook
878a65e191 Bug 1187846 Stack layout doesn't honour min/max sizes for positioned elements r=Enn 2015-07-31 23:21:28 +01:00
Daniel Holbert
0afc3dcb75 Bug 1185491: Annotate reftest decoration-color-override-quirks.html as having 5 fuzzy pixels on Mac. (no review) 2015-07-31 12:28:45 -07:00
Ting-Yu Lin
74f496af23 Bug 1189224 - Add BUG_COMPONENT for AccessibleCaret and others to moz.build. r=roc 2015-07-30 02:33:00 -04:00
Carsten "Tomcat" Book
7605a6369b Backed out changeset 7edc58c272f1 (bug 1075089) for causing OS X 10.6 marionette failures in test_single_finger_desktop.py testSingleFingerMouse.test_double_tap on a CLOSED TREE 2015-07-31 14:49:40 +02:00
Jonathan Kew
7b7ab22441 Bug 1187605 pt 2 - Make the <select> dropdown arrow respect the 'orientation' attribute, if present. r=smontagu 2015-08-03 18:45:24 +01:00
Jonathan Kew
928128866c Bug 1187605 pt 1 - In vertical writing modes, add an 'orientation' attribute with value='left' or 'right' to the <select> control's dropdown button. r=smontagu 2015-08-03 18:45:20 +01:00
Ted Clancy
137ab7918d Bug 1177505 - Make all continuations fluid within non-bidi paragraphs. r=smontagu 2015-07-30 13:47:08 -07:00
Nick Robson
0ce13e9fc1 Bug 1075089 - Moved popup menu frame offset to LookAndFeel, fixed default offset for OS X. r=enn 2015-07-30 15:00:00 +02:00
Julien Pagès
d0c49b8f0b Bug 1091285 - move dumpScreen in a new mozscreenshot package. r=jgriffin
This also completely remove build/automationutils.py.
2015-07-29 17:50:16 +02:00
Nicholas Nethercote
d130e7465e Bug 1189156 (part 1) - Don't use enumeration style for PLDHashTable::SizeOf{In,Ex}cludingThis(). r=froydnj.
After this change, we have PLDHashTable::ShallowSizeOf{In,Ex}cludingThis(),
which don't do anything to measure children. (They can be combined with
iteration to measure children.)

This patch also removes the PL_DHashTableSizeOf{In,Ex}cludingThis() functions.
They're not necessary because the methods can be used instead.

Finally, the patch deliberately converts some SizeOfExcludingThis() calls to
SizeOfIncludingThis(). These are all done on heap pointers so this change is
valid.
2015-07-29 22:28:20 -07:00
Brian Birtles
df3892093c Bug 1171966 - Update SMIL animation styles only when there are pending changes; r=dholbert
Bug 960465 (specifically part 6, changeset 7d16f2fd8329) changed the way we
process animation-only style changes. This caused us to update SMIL animations
more often than is needed.

This patch adjusts this behavior to update the style from SMIL animations less
frequently by tracking when animated values have been composited without adding
the corresponding changes to a restyle tracker.
2015-07-31 13:14:46 +09:00
Kyle Huey
27c760a53d Bug 1186780: ifdef DEBUG fixes on a CLOSED TREE. r=me 2015-07-30 14:01:49 -07:00
Kyle Huey
d40f03c413 Bug 1186780: Replace EnumerateRead with new iterators in ImageLoader. r=dbaron 2015-07-30 13:48:10 -07:00
CJ Ku
5292f94ff9 Bug 1061393 - Export display list info to layer scope viewer. r=kamidphish 2015-08-03 02:11:00 -04:00