Home | History | Annotate | Download | only in browser
      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