Commit Graph

1282 Commits

Author SHA1 Message Date
David Anderson
9b52de759d Cache the current animated geometry root in nsDisplayListBuilder. (bug 1101260 part 1, r=roc) 2014-11-20 16:58:18 -08:00
David Anderson
d3aaa4eee9 Add inactive subframes to the dispatch-to-content region. (bug 1082594, r=tn,kats) 2014-11-19 20:24:15 -08:00
Jonathan Kew
874486338c Bug 1093684 - part 1 - Make nsGfxScrollFrame aware of vertical writing modes. r=smontagu 2014-11-17 08:49:37 +00:00
Benoit Girard
de95949f46 Bug 1094442 - Part 1: Refactor how tile w/h is queried r=kats 2014-11-12 17:54:29 -05:00
Botond Ballo
4eddb9ef90 Bug 1076163 - Basic APZ support for css-driven resolution. r=kats,tn
This makes APZ behave nicely with most uses of a css transform:scale.

Summary of changes:
  - FrameMetrics::mCumulativeResolution now includes the css-driven resolution
    in addition to the pres-shell resolution.
  - Displayports are now stored in Screen pixels rather than Layer pixels.
    This is what we want anyways (as we'd like the displayport size to remain
    constant as a fraction of the screen size), but it was necessary to make
    this change as part of this patch because continuing to store them in
    Layer pixels in the presence of a css-driven resolution would have
    required a bunch of infrastructure to implement correctly.

Remaining work:
  - Layout painting a scrollable layer at a resolution different from the
    scale induced by the css transform causes problems. These will go away
    with bug 1076192.
  - Different resolutions on the x and y axes are not supported. This is
    tracked by bug 1039967.
2014-10-24 15:49:38 -04:00
Carsten "Tomcat" Book
5ab7b878a7 Backed out changeset fbb9dc943109 (bug 1076163) for Android 4.0 Crashes on a CLOSED TREE 2014-11-13 11:47:57 +01:00
Botond Ballo
9b6d326e37 Bug 1076163 - Basic APZ support for css-driven resolution. r=kats,tn
This makes APZ behave nicely with most uses of a css transform:scale.

Summary of changes:
  - FrameMetrics::mCumulativeResolution now includes the css-driven resolution
    in addition to the pres-shell resolution.
  - Displayports are now stored in Screen pixels rather than Layer pixels.
    This is what we want anyways (as we'd like the displayport size to remain
    constant as a fraction of the screen size), but it was necessary to make
    this change as part of this patch because continuing to store them in
    Layer pixels in the presence of a css-driven resolution would have
    required a bunch of infrastructure to implement correctly.

Remaining work:
  - Layout painting a scrollable layer at a resolution different from the
    scale induced by the css transform causes problems. These will go away
    with bug 1076192.
  - Different resolutions on the x and y axes are not supported. This is
    tracked by bug 1039967.
2014-10-24 15:49:38 -04:00
Robert O'Callahan
03bebce9f2 Bug 1096181. Recompute overflow areas of transformed elements when a parent element with perspective is scrolled. r=mattwoodrow 2014-11-12 18:08:27 +13:00
Benjamin Peterson
485d6801e5 No bug - Remove extra words to make the sentence coherent. r=me 2014-11-09 13:45:27 -05:00
Benjamin Peterson
7bdc4192fa No bug - fix typo r=me 2014-11-08 14:35:00 -05:00
Jonathan Kew
0fbbf4608c Bug 1093949 - Reverse scroll position for RTL content. r=mats 2014-11-06 09:06:22 +00:00
Robert O'Callahan
ca28a22945 Bug 1080205. Part 1: Don't add clip rects to async-scrolled layers for root scrollframes, since the FrameMetrics to scroll those layers will be set on a ContainerLayer parent. r=tn 2014-10-28 17:34:58 +13:00
Robert O'Callahan
b12c533cbc Bug 1083635. Part 6: Rename viewport to scrollport in ScrollFrameHelper::ComputeFrameMetrics. r=mattwoodrow 2014-10-21 10:32:11 +13:00
Timothy Nikkel
20d7065c10 Bug 1087453. Don't put scroll info layers on top of content that is not scrolled by their associated scroll frame. r=roc 2014-10-28 00:23:52 -05:00
Kearwood (Kip) Gilbert
2e92a8bba9 Bug 1086948 - Remove scroll-behavior: instant CSS value option. r=bz
- Removed "instant" CSS keyword and references used by scroll-behavior.
- Updated tests, removing scroll-behavior: instant test cases.
2014-10-22 11:37:00 +02:00
Robert O'Callahan
8633487ab3 Bug 1073290. Don't render with displayports if we're not painting to the window. r=mattwoodrow 2014-10-21 10:32:11 +13:00
Benoit Girard
91881b27a7 Bug 961871 - Part 4: Fix budget calculation by adding Maybe prerenderer and animate. r=roc 2014-10-21 21:55:55 -04:00
Benoit Girard
a5472b2b25 Bug 961871 - Part 3: Implement will-change budgeting. r=roc 2014-10-21 21:54:32 -04:00
Benoit Girard
8ad6049025 Bug 961871 - Part 2: Refactor will-change scroll, pass through a nsDisplayListBuilder. r=mattwoodrow 2014-10-21 21:54:06 -04:00
Benoit Girard
ca08133d5c Bug 961871 - Part 1: Refactor ScrollingActive. r=mattwoodrow 2014-10-21 21:53:38 -04:00
Kearwood (Kip) Gilbert
92f654786e Bug 1010538 - Part 3 - Implement scroll-behavior CSS property. r=mstange
- Added SCROLL_SMOOTH_AUTO flag to nsIPresShell to enable selection of
  scroll behavior through CSS.
- Updated Element and Window scrolling DOM methods to enable smooth scrolling
  set through the scroll-behavior CSS property.
- Keyboard, scroll bar, mousewheel, and any other events that scroll smoothly
  with the general.smoothScroll preference enabled will now scroll instantly
  if the scroll frame has "scroll-behavior: instant" applied through CSS.
2014-09-15 12:30:03 -07:00
Kearwood (Kip) Gilbert
912497df59 Bug 1010538 - Part 2 - Add scroll-behavior to ScrollbarStyles. r=mstange
- ScrollbarStyles extended to support the scroll-behavior CSS property
- Corrected naming of parameters to ScrollbarStyles CTOR
2014-09-15 12:30:00 -07:00
Timothy Nikkel
c0143622d0 Bug 1076783. Move scroll info layers to the bottom of the background layer so they are behind most things. r=roc
Bug 1041510 moved them to the top so merging and flattening with scroll layer items worked correctly, but we don't need scroll layer items anymore.
2014-10-20 20:20:16 -05:00
Kartikaya Gupta
2594a86a86 Bug 1078373 - Use the scrollPositionClampingScrollPortSize when computing whether or not to show the scrollbar. r=tn 2014-10-10 22:16:03 -04:00
Kartikaya Gupta
ab3e782f16 Back out cset 3d9ce7853452 (bug 1078373) for mochitest failures. r=me on a CLOSED TREE 2014-10-10 17:11:13 -04:00
Kartikaya Gupta
8f506045c1 Bug 1078373 - Use the scrollPositionClampingScrollPortSize when computing whether or not to show the scrollbar. r=tn 2014-10-10 16:14:52 -04:00
Timothy Nikkel
c1d8692b35 Bug 1076447. When building the display list for scrollbars and we have a display port just use the whole scrollbar rect as the dirty rect. r=mattwoodrow
When we have a display port the dirty rect for root scroll frames is going to be the display port already when it is passed in. The display port can contain a somewhat arbitrary area of the scroll frame, there is no reason is has to include the scrollbars, which are laid out at the desktop scrollport (and adjusted as necessary in the compositor).

As well as BuildDisplayListForChild, we need the dirty rect to be set for the creation of the nsDisplayWrapList or nsDisplayOwnLayer in AppendToTop.
2014-10-09 15:10:01 -05:00
Kartikaya Gupta
85de5eb65b Bug 1078316 - Tweaks for root-frame overlay scrollbars so they don't oscillate while panning around. r=botond,tn 2014-10-08 22:56:38 -04:00
Ryan VanderMeulen
7106ed491e Merge inbound to m-c. a=merge 2014-09-26 16:54:59 -04:00
Markus Stange
a15e939a69 Bug 1073103 - Rename ThebesLayer to PaintedLayer. r=roc 2014-09-26 13:06:08 -04:00
Kartikaya Gupta
caf3c1bdc9 Bug 1073354 - Update documentation that refers to the now-removed RecordFrameMetrics. r=tn DONBUILD 2014-09-26 11:29:38 -04:00
Arnaud Sourioux
13efd81178 Bug 1038570 - Part 2: rename ObjectFrame class to PluginFrame. r=dbaron 2014-09-24 06:34:00 +02:00
Milan Sreckovic
fe944b11f6 Bug 1068784 - Since the tiling is now not a simple pref choices, but it depends on some platform specific criteria, stop using the pref directly, and always use gfxPlatform::UseTiling instead. r=mwoodrow 2014-09-17 13:55:23 -04:00
Robert O'Callahan
a180df7dde Bug 1062100. Part 2: Assign clip rects to non-async-scrollable scrolled layers, and hide clipped layers if some non-moving layer covers their entire clip rect. r=mattwoodrow 2014-09-06 16:16:33 +12:00
Kartikaya Gupta
5f5ab2525d Bug 1009961 - Remove code to drop displayport if it exceeds B2G max texture size. r=tn
This code is no longer needed because tiling is enabled on all
scrollable layers on B2G, and so we only draw tile-sized chunks
of the displayport. Therefore the textures created will never
exceed the max texture size. On non-B2G platforms this code is
not used anyway so there is no effect. Going forward we should
always be enabling tiling before enabling APZ on new platforms
so it is unlikely that we will need this code.
2014-09-17 02:20:06 -04:00
Robert O'Callahan
05406561b0 Bug 1066591. Backout c43865439dd9 (bug 1066211) to fix regression. 2014-09-13 11:56:16 +12:00
Robert O'Callahan
f76e10418d Bug 1062100. Part 2: Assign clip rects to non-async-scrollable scrolled layers, and hide clipped layers if some non-moving layer covers their entire clip rect. r=mattwoodrow 2014-09-06 16:16:33 +12:00
Kearwood (Kip) Gilbert
322449b9e8 Bug 1022825 - Implement Asynchronous Smooth Scrolling on Compositor Thread. r=kats
- Extended nsIScrollableFrame and nsGfxScrollFrame to return destination
  of smooth scrolls which are to be animated on the compositor thread.
- Added apz.smooth_scroll_repaint_interval preference.
- Implemented AsyncPanZoomController::PanZoomState::SMOOTH_MSD_SCROLL state
  and AsyncPanZoomController::SmoothScrollAnimation class to animate smooth
  scroll animations on the compositor thread.
- Extended FrameMetrics to report requests for smooth scrolls to be animated
  on the compositor thread and their corresponding destination positions.
- AsyncPanZoomController now checks FrameMetrics for requests to perform
  smooth scrolling on the compositor thread.  It will ensure that they
  are cancelled as needed by mousewheel, touchpanel, keyboard, and
  CSSOM-View instant scrolling DOM methods.
- The layout/generic/test/test_scroll_behavior.html mochitest has been
  commented as depending on Bug 1062609 before being enabled for APZ.
2014-07-10 11:52:40 -07:00
Robert O'Callahan
5d6eae5feb Bug 967844. Part 3: Setup FrameMetrics from FrameLayerBuilder based on animated geometry roots. r=mattwoodrow 2014-08-31 15:29:24 +12:00
Phil Ringnalda
ef7af0d5d8 Backed out 3 changesets (bug 967844) for robopan bustage
Backed out changeset 6b53305f1c42 (bug 967844)
Backed out changeset dff3eb181f33 (bug 967844)
Backed out changeset 4d4b03442eaf (bug 967844)
2014-09-01 15:20:13 -07:00
Robert O'Callahan
6f95837ff0 Bug 967844. Part 3: Setup FrameMetrics from FrameLayerBuilder based on animated geometry roots. r=mattwoodrow 2014-08-31 15:29:24 +12:00
Ehsan Akhgari
8bb87f8a27 Bug 1060985 - Fix more bad implicit constructors in layout; r=roc 2014-08-31 23:36:37 -04:00
Mats Palmgren
6b85db9a4d Bug 1059242 - Initialize |allowedRange| with aPoint and a distance of zero in both directions (otherwise we'll return zero in the non-scrolled direction and reset that scroll position). r=kip 2014-08-27 11:42:00 -04:00
Kearwood (Kip) Gilbert
acbf7deb57 Bug 1022818 - Part 3: Tests for CSSOM-View Smooth-Scroll DOM API Methods and MSD Animation. r=bz, r=roc
- Verify that instant scroll-behavior is synchronous.
- Verify that smooth scroll-behavior is asynchronous.
- Verify that smooth scroll-behavior is triggered by CSSOM-View DOM methods.
- Verify that instant scroll-behavior interrupts smooth scroll-behavior
  animation.
- Verify that smooth scroll-behavior is not framerate dependant.
- Verify that smooth scroll-behavior physics simulations used by animations
  converge and allow the animation to reach completion.
- CSSOM-View scroll-behavior smooth scroll animations must produce the same
  results indendently of frame-rate:
  - Reference samples of scroll position for each frame are captured from a
    smooth scroll at 120fps for variations in X-Distance, Y-Distance.
  - Test samples are captured from an animation with the same parameters at
    varying framerates.
  - Variance in position at each sampled interval is compared to the 120fps
    reference.  To pass the test, the position of each test sample must match
    the reference position with a tolerance of one test sample frame's range
    of motion.  This range of motion is calculated by the position delta of
    the reference samples one test frame duration before and after.
  - The duration of the reference sample animation and the test sample
    animation must match within 1 frame to pass the test.
  - The simulation driving the animation must converge and stop on the
    destination position for the test to pass.
2014-07-25 14:20:45 -07:00
Miranda Emery
874dede8fb Bug 957445: Part 3 - combines nsIScrollbarOwner with nsIScrollbarMediator, r=mats 2014-02-14 19:40:53 +13:00
Miranda Emery
5c7d76411f Bug 957445: Part 2 - nsHTML/XULScrollFrame implement nsIScrollbarMediator, r=mats 2014-02-05 14:33:18 +13:00
Trevor Saunders
e052cf9168 bug 1016545 - Provide an iterator that iterates over all children of an element r=bz 2014-07-16 14:41:57 -04:00
Robert O'Callahan
456a85a031 Bug 1050096. Clip scrollparts to the viewport for root scrollframes. r=tnikkel 2014-08-09 01:00:53 +12:00
Kearwood (Kip) Gilbert
38463a238d Bug 1026023 - Part 4: Allow smooth scrolling to override momentum mouse wheel scroll events. r=mwoodrow
- When a smooth scroll is being processed on a frame, mouse wheel and trackpad
  momentum scroll event updates will no longer cancel the SMOOTH or SMOOTH_MSD
  scroll animations, enabling scripts that depend on them to be responsive
  without forcing the user to wait for the fling animations to completely stop.
2014-07-15 16:13:00 +02:00
Kearwood (Kip) Gilbert
aefe537eca Bug 1026023 - Part 3: Integrate MSD movement with nsGfxScrollFrame. r=mattwoodrow
- Added nsIScrollableFrame::ScrollMode::SMOOTH_MSD to differentiate
  existing smooth scrolls used by keyboard and mousewheel events from the
  CSSOM-View scroll-behavior's MSD motion scrolling.
- Implemented ScrollFrameHelper::AsyncSmoothMSDScroll, which takes the role
  of ScrollFrameHelper::AsyncScroll when SMOOTH_MSD scrolls are requested.
- Implemented glue code to handle callbacks from AsyncSmoothMSDScroll and
  to hand off velocity between the classes when one scroll animation is
  interrupted by another.
2014-07-09 10:02:31 -07:00