mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 19:35:51 +00:00
Bug 1521644 - Create nsDisplayAsyncZoom which creates a ContainerLayer that is marked as an async zoom container. r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D17175 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
5c1e861efd
commit
b97222a5dc
@ -4,6 +4,7 @@
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
// IWYU pragma: private, include "nsDisplayList.h"
|
||||
DECLARE_DISPLAY_ITEM_TYPE(ASYNC_ZOOM, TYPE_RENDERS_NO_IMAGES)
|
||||
DECLARE_DISPLAY_ITEM_TYPE(ALT_FEEDBACK, 0)
|
||||
DECLARE_DISPLAY_ITEM_TYPE(BACKGROUND, TYPE_IS_CONTENTFUL)
|
||||
DECLARE_DISPLAY_ITEM_TYPE(THEMED_BACKGROUND, TYPE_RENDERS_NO_IMAGES)
|
||||
|
@ -7155,6 +7155,32 @@ bool nsDisplayZoom::ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
return retval;
|
||||
}
|
||||
|
||||
nsDisplayAsyncZoom::nsDisplayAsyncZoom(
|
||||
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame, nsDisplayList* aList,
|
||||
const ActiveScrolledRoot* aActiveScrolledRoot,
|
||||
mozilla::layers::FrameMetrics::ViewID aViewID)
|
||||
: nsDisplayOwnLayer(aBuilder, aFrame, aList, aActiveScrolledRoot),
|
||||
mViewID(aViewID) {
|
||||
MOZ_COUNT_CTOR(nsDisplayAsyncZoom);
|
||||
}
|
||||
|
||||
#ifdef NS_BUILD_REFCNT_LOGGING
|
||||
nsDisplayAsyncZoom::~nsDisplayAsyncZoom() {
|
||||
MOZ_COUNT_DTOR(nsDisplayAsyncZoom);
|
||||
}
|
||||
#endif
|
||||
|
||||
already_AddRefed<Layer> nsDisplayAsyncZoom::BuildLayer(
|
||||
nsDisplayListBuilder* aBuilder, LayerManager* aManager,
|
||||
const ContainerLayerParameters& aContainerParameters) {
|
||||
RefPtr<Layer> layer =
|
||||
nsDisplayOwnLayer::BuildLayer(aBuilder, aManager, aContainerParameters);
|
||||
|
||||
layer->SetIsAsyncZoomContainer(Some(mViewID));
|
||||
|
||||
return layer.forget();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////
|
||||
// nsDisplayTransform Implementation
|
||||
//
|
||||
|
@ -6112,6 +6112,43 @@ class nsDisplayZoom : public nsDisplaySubDocument {
|
||||
int32_t mAPD, mParentAPD;
|
||||
};
|
||||
|
||||
/**
|
||||
* nsDisplayAsyncZoom is used for APZ zooming. It wraps the contents of the
|
||||
* root content document's scroll frame, including fixed position content. It
|
||||
* does not contain the scroll frame's scrollbars. It is clipped to the scroll
|
||||
* frame's scroll port clip. It is not scrolled; only its non-fixed contents
|
||||
* are scrolled. This item creates a container layer.
|
||||
*/
|
||||
class nsDisplayAsyncZoom : public nsDisplayOwnLayer {
|
||||
public:
|
||||
nsDisplayAsyncZoom(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
|
||||
nsDisplayList* aList,
|
||||
const ActiveScrolledRoot* aActiveScrolledRoot,
|
||||
mozilla::layers::FrameMetrics::ViewID aViewID);
|
||||
nsDisplayAsyncZoom(nsDisplayListBuilder* aBuilder,
|
||||
const nsDisplayAsyncZoom& aOther)
|
||||
: nsDisplayOwnLayer(aBuilder, aOther), mViewID(aOther.mViewID) {
|
||||
MOZ_COUNT_CTOR(nsDisplayAsyncZoom);
|
||||
}
|
||||
|
||||
#ifdef NS_BUILD_REFCNT_LOGGING
|
||||
virtual ~nsDisplayAsyncZoom();
|
||||
#endif
|
||||
|
||||
virtual already_AddRefed<Layer> BuildLayer(
|
||||
nsDisplayListBuilder* aBuilder, LayerManager* aManager,
|
||||
const ContainerLayerParameters& aContainerParameters) override;
|
||||
NS_DISPLAY_DECL_NAME("AsyncZoom", TYPE_ASYNC_ZOOM)
|
||||
virtual LayerState GetLayerState(
|
||||
nsDisplayListBuilder* aBuilder, LayerManager* aManager,
|
||||
const ContainerLayerParameters& aParameters) override {
|
||||
return mozilla::LAYER_ACTIVE_FORCE;
|
||||
}
|
||||
|
||||
protected:
|
||||
mozilla::layers::FrameMetrics::ViewID mViewID;
|
||||
};
|
||||
|
||||
/**
|
||||
* A base class for different effects types.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user