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 PassRefPtr<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(WebCore::FrameView*) const override;
virtual void scheduleTreeStateCommit() override;
virtual bool isRubberBandInProgress() const override;
virtual void setScrollPinningBehavior(WebCore::ScrollPinningBehavior) override;
virtual void didReceiveMessage(IPC::Connection*, IPC::MessageDecoder&) override;
void scrollPositionChangedForNode(WebCore::ScrollingNodeID, const WebCore::FloatPoint& scrollPosition, bool syncLayerPosition);
WebPage* m_webPage;
};
SCROLLING_COORDINATOR_TYPE_CASTS(RemoteScrollingCoordinator, isRemoteScrollingCoordinator());
}
#endif // ENABLE(ASYNC_SCROLLING)
#endif // RemoteScrollingCoordinator_h