blob: ea3682c86c6a80a207820289c7a0624c2ace3ae4 [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef PaintInvalidationCapableScrollableArea_h
#define PaintInvalidationCapableScrollableArea_h
#include "core/CoreExport.h"
#include "platform/geometry/LayoutRect.h"
#include "platform/scroll/ScrollableArea.h"
namespace blink {
class LayoutBox;
class LayoutBoxModelObject;
class LayoutScrollbarPart;
class PaintInvalidationContainer;
class PaintInvalidationState;
struct PaintInvalidatorContext;
// Base class of FrameView and PaintLayerScrollableArea to share paint
// invalidation code.
// TODO(wangxianzhu): Combine this into PaintLayerScrollableArea when
// root-layer-scrolls launches.
class CORE_EXPORT PaintInvalidationCapableScrollableArea
: public ScrollableArea {
public:
PaintInvalidationCapableScrollableArea()
: m_horizontalScrollbarPreviouslyWasOverlay(false),
m_verticalScrollbarPreviouslyWasOverlay(false) {}
void willRemoveScrollbar(Scrollbar&, ScrollbarOrientation) override;
void invalidatePaintOfScrollControlsIfNeeded(const PaintInvalidationState&);
void invalidatePaintOfScrollControlsIfNeeded(const PaintInvalidatorContext&);
// Should be called when the previous paint invalidation rects are no longer
// valid.
void clearPreviousPaintInvalidationRects();
virtual IntRect scrollCornerAndResizerRect() const {
return scrollCornerRect();
}
LayoutRect visualRectForScrollbarParts() const override;
private:
virtual LayoutScrollbarPart* scrollCorner() const = 0;
virtual LayoutScrollbarPart* resizer() const = 0;
void scrollControlWasSetNeedsPaintInvalidation() override;
bool m_horizontalScrollbarPreviouslyWasOverlay;
bool m_verticalScrollbarPreviouslyWasOverlay;
LayoutRect m_horizontalScrollbarPreviousPaintInvalidationRect;
LayoutRect m_verticalScrollbarPreviousPaintInvalidationRect;
LayoutRect m_scrollCornerAndResizerPreviousPaintInvalidationRect;
};
} // namespace blink
#endif // PaintInvalidationCapableScrollableArea_h