synchronous_compositor_client.h revision 68043e1e95eeb07d5cae7aca370b26518b0867d6
1868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file.
4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
5868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#ifndef CONTENT_PUBLIC_BROWSER_ANDROID_SYNCHRONOUS_COMPOSITOR_CLIENT_H_
6868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#define CONTENT_PUBLIC_BROWSER_ANDROID_SYNCHRONOUS_COMPOSITOR_CLIENT_H_
7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/basictypes.h"
97d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "ui/gfx/vector2d_f.h"
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace content {
12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class SynchronousCompositor;
14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class SynchronousCompositorClient {
16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public:
17868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  // Indication to the client that |compositor| is now initialized on the
18868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  // compositor thread, and open for business.
19868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  virtual void DidInitializeCompositor(SynchronousCompositor* compositor) = 0;
20868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Indication to the client that |compositor| is going out of scope, and
22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // must not be accessed within or after this call.
23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // NOTE if the client goes away before the compositor it must call
24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // SynchronousCompositor::SetClient(NULL) to release the back pointer.
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void DidDestroyCompositor(SynchronousCompositor* compositor) = 0;
26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  // See LayerScrollOffsetDelegate for details.
2868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  virtual void SetMaxRootLayerScrollOffset(
2968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      gfx::Vector2dF max_scroll_offset) = 0;
307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual void SetTotalRootLayerScrollOffset(gfx::Vector2dF new_value) = 0;
317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual gfx::Vector2dF GetTotalRootLayerScrollOffset() = 0;
3268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  virtual void SetRootLayerPageScaleFactor(float page_scale_factor) = 0;
3368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  virtual void SetRootLayerScrollableSize(gfx::SizeF scrollable_size) = 0;
3468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void DidOverscroll(gfx::Vector2dF accumulated_overscroll,
3658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                             gfx::Vector2dF latest_overscroll_delta,
377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                             gfx::Vector2dF current_fling_velocity) = 0;
38b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)
39b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  // When true, should periodically call
40b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  // SynchronousCompositorOutputSurface::DemandDrawHw. Note that this value
41b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  // can change inside DemandDrawHw call.
42b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  virtual void SetContinuousInvalidate(bool invalidate) = 0;
43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
44ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  virtual void DidUpdateContent() = 0;
45ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) protected:
47868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  SynchronousCompositorClient() {}
48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual ~SynchronousCompositorClient() {}
49868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
50868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) private:
51868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(SynchronousCompositorClient);
52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)};
53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}  // namespace content
55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
56868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#endif  // CONTENT_PUBLIC_BROWSER_ANDROID_SYNCHRONOUS_COMPOSITOR_CLIENT_H_
57