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 13 namespace android_webview { 14 15 class 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