1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef ANDROID_WEBVIEW_BROWSER_BROWSER_VIEW_RENDERER_CLIENT_H_ 6#define ANDROID_WEBVIEW_BROWSER_BROWSER_VIEW_RENDERER_CLIENT_H_ 7 8#include "base/android/scoped_java_ref.h" 9#include "ui/gfx/geometry/point.h" 10#include "ui/gfx/geometry/size_f.h" 11#include "ui/gfx/geometry/vector2d_f.h" 12 13namespace android_webview { 14 15class BrowserViewRendererClient { 16 public: 17 // Request DrawGL be called. Passing null |canvas| implies the request 18 // will be of AwDrawGLInfo::kModeProcess type. |wait_for_completion| 19 // will cause the call to block until DrawGL has happened; it does not 20 // work when |canvas| is not NULL. The callback may never be made, and 21 // the mode may be promoted to kModeDraw. 22 virtual bool RequestDrawGL(jobject canvas, bool wait_for_completion) = 0; 23 24 // Called when a new Picture is available. Needs to be enabled 25 // via the EnableOnNewPicture method. 26 virtual void OnNewPicture() = 0; 27 28 // Called to trigger view invalidations. 29 virtual void PostInvalidate() = 0; 30 31 // Called to update the parent draw constraints in browser view renderer. 32 virtual void UpdateParentDrawConstraints() = 0; 33 34 // Called if commit is skipped due to pipeline stall. 35 virtual void DidSkipCommitFrame() = 0; 36 37 // Called to get view's absolute location on the screen. 38 virtual gfx::Point GetLocationOnScreen() = 0; 39 40 // Try to set the view's scroll offset to |new_value|. 41 virtual void ScrollContainerViewTo(gfx::Vector2d new_value) = 0; 42 43 // Is a Android view system managed fling in progress? 44 virtual bool IsFlingActive() const = 0; 45 46 // Sets the following: 47 // view's scroll offset cap to |max_scroll_offset|, 48 // current contents_size to |contents_size_dip|, 49 // the current page scale to |page_scale_factor| and page scale limits 50 // to |min_page_scale_factor|..|max_page_scale_factor|. 51 virtual void UpdateScrollState(gfx::Vector2d max_scroll_offset, 52 gfx::SizeF contents_size_dip, 53 float page_scale_factor, 54 float min_page_scale_factor, 55 float max_page_scale_factor) = 0; 56 57 // Handle overscroll. 58 virtual void DidOverscroll(gfx::Vector2d overscroll_delta) = 0; 59 60 protected: 61 virtual ~BrowserViewRendererClient() {} 62}; 63 64} // namespace android_webview 65 66#endif // ANDROID_WEBVIEW_BROWSER_BROWSER_VIEW_RENDERER_CLIENT_H_ 67