RemoteScrollingCoordinator.h [plain text]
#ifndef RemoteScrollingCoordinator_h
#define RemoteScrollingCoordinator_h
#if ENABLE(ASYNC_SCROLLING)
#include "MessageReceiver.h"
#include <WebCore/AsyncScrollingCoordinator.h>
#include <WebCore/ScrollTypes.h>
#include <WebCore/ScrollingConstraints.h>
#include <WebCore/Timer.h>
#include <wtf/HashMap.h>
namespace IPC {
class ArgumentDecoder;
class ArgumentEncoder;
}
namespace WebKit {
class WebPage;
class RemoteScrollingCoordinatorTransaction;
class RemoteScrollingCoordinator : public WebCore::AsyncScrollingCoordinator, public IPC::MessageReceiver {
public:
static Ref<RemoteScrollingCoordinator> create(WebPage* page)
{
return adoptRef(*new RemoteScrollingCoordinator(page));
}
void buildTransaction(RemoteScrollingCoordinatorTransaction&);
private:
RemoteScrollingCoordinator(WebPage*);
virtual ~RemoteScrollingCoordinator();
virtual bool isRemoteScrollingCoordinator() const override { return true; }
virtual bool coordinatesScrollingForFrameView(const WebCore::FrameView&) const override;
virtual void scheduleTreeStateCommit() override;
virtual bool isRubberBandInProgress() const override;
virtual void setScrollPinningBehavior(WebCore::ScrollPinningBehavior) override;
bool isScrollSnapInProgress() const override;
virtual void didReceiveMessage(IPC::Connection&, IPC::MessageDecoder&) override;
void scrollPositionChangedForNode(WebCore::ScrollingNodeID, const WebCore::FloatPoint& scrollPosition, bool syncLayerPosition);
void currentSnapPointIndicesChangedForNode(WebCore::ScrollingNodeID, unsigned horizontal, unsigned vertical);
WebPage* m_webPage;
};
}
SPECIALIZE_TYPE_TRAITS_SCROLLING_COORDINATOR(WebKit::RemoteScrollingCoordinator, isRemoteScrollingCoordinator());
#endif // ENABLE(ASYNC_SCROLLING)
#endif // RemoteScrollingCoordinator_h