Index: content/browser/renderer_host/render_widget_host_view_android.h |
diff --git a/content/browser/renderer_host/render_widget_host_view_android.h b/content/browser/renderer_host/render_widget_host_view_android.h |
index 1250f2f40485fb905f4776e16180cf1aa7470f18..1c423bbc7cc75ee096b4dd670c0913546355a644 100644 |
--- a/content/browser/renderer_host/render_widget_host_view_android.h |
+++ b/content/browser/renderer_host/render_widget_host_view_android.h |
@@ -20,6 +20,7 @@ |
#include "base/process/process.h" |
#include "cc/input/selection.h" |
#include "cc/output/begin_frame_args.h" |
+#include "cc/scheduler/begin_frame_source.h" |
#include "content/browser/accessibility/browser_accessibility_manager.h" |
#include "content/browser/android/content_view_core_impl_observer.h" |
#include "content/browser/renderer_host/delegated_frame_evictor.h" |
@@ -31,6 +32,7 @@ |
#include "content/public/browser/readback_types.h" |
#include "gpu/command_buffer/common/mailbox.h" |
#include "third_party/skia/include/core/SkColor.h" |
+#include "ui/android/delegated_frame_host_android.h" |
#include "ui/android/view_android.h" |
#include "ui/android/window_android_observer.h" |
#include "ui/events/android/motion_event_android.h" |
@@ -46,10 +48,6 @@ namespace ui { |
struct DidOverscrollParams; |
} |
-namespace ui { |
-class DelegatedFrameHostAndroid; |
-} |
- |
namespace content { |
class ContentViewCoreImpl; |
class OverscrollControllerAndroid; |
@@ -70,7 +68,9 @@ class CONTENT_EXPORT RenderWidgetHostViewAndroid |
public StylusTextSelectorClient, |
public ui::TouchSelectionControllerClient, |
public content::ContentViewCoreImplObserver, |
- public content::TextInputManager::Observer { |
+ public content::TextInputManager::Observer, |
+ public ui::DelegatedFrameHostAndroid::Client, |
+ public cc::BeginFrameObserver { |
public: |
RenderWidgetHostViewAndroid(RenderWidgetHostImpl* widget, |
ContentViewCoreImpl* content_view_core); |
@@ -143,6 +143,7 @@ class CONTENT_EXPORT RenderWidgetHostViewAndroid |
void UnlockMouse() override; |
void OnSwapCompositorFrame(uint32_t compositor_frame_sink_id, |
cc::CompositorFrame frame) override; |
+ void OnBeginFrameDidNotDraw(cc::BeginFrameAck ack) override; |
void ClearCompositorFrame() override; |
void DidOverscroll(const ui::DidOverscrollParams& params) override; |
void DidStopFlinging() override; |
@@ -164,8 +165,6 @@ class CONTENT_EXPORT RenderWidgetHostViewAndroid |
void OnRootWindowVisibilityChanged(bool visible) override; |
void OnAttachCompositor() override; |
void OnDetachCompositor() override; |
- void OnVSync(base::TimeTicks frame_time, |
- base::TimeDelta vsync_period) override; |
void OnAnimate(base::TimeTicks begin_frame_time) override; |
void OnActivityStopped() override; |
void OnActivityStarted() override; |
@@ -194,6 +193,15 @@ class CONTENT_EXPORT RenderWidgetHostViewAndroid |
void OnSelectionEvent(ui::SelectionEventType event) override; |
std::unique_ptr<ui::TouchHandleDrawable> CreateDrawable() override; |
+ // DelegatedFrameHostAndroid::Client implementation. |
+ void SetBeginFrameSource(cc::BeginFrameSource* begin_frame_source) override; |
+ void ReturnResources(const cc::ReturnedResourceArray& resources) override; |
+ |
+ // cc::BeginFrameObserver implementation. |
+ void OnBeginFrame(const cc::BeginFrameArgs& args) override; |
+ const cc::BeginFrameArgs& LastUsedBeginFrameArgs() const override; |
+ void OnBeginFrameSourcePausedChanged(bool paused) override; |
+ |
// Non-virtual methods |
void SetContentViewCore(ContentViewCoreImpl* content_view_core); |
SkColor GetCachedBackgroundColor() const; |
@@ -283,17 +291,16 @@ class CONTENT_EXPORT RenderWidgetHostViewAndroid |
void DestroyDelegatedContent(); |
void OnLostResources(); |
- void ReturnResources(const cc::ReturnedResourceArray& resources); |
- |
- enum VSyncRequestType { |
+ enum BeginFrameRequestType { |
FLUSH_INPUT = 1 << 0, |
BEGIN_FRAME = 1 << 1, |
PERSISTENT_BEGIN_FRAME = 1 << 2 |
}; |
- void RequestVSyncUpdate(uint32_t requests); |
+ void AddBeginFrameRequest(BeginFrameRequestType request); |
+ void ClearBeginFrameRequest(BeginFrameRequestType request); |
void StartObservingRootWindow(); |
void StopObservingRootWindow(); |
- void SendBeginFrame(base::TimeTicks frame_time, base::TimeDelta vsync_period); |
+ void SendBeginFrame(cc::BeginFrameArgs args); |
bool Animate(base::TimeTicks frame_time); |
void RequestDisallowInterceptTouchEvent(); |
@@ -304,8 +311,13 @@ class CONTENT_EXPORT RenderWidgetHostViewAndroid |
// The model object. |
RenderWidgetHostImpl* host_; |
- // Used to control action dispatch at the next |OnVSync()| call. |
- uint32_t outstanding_vsync_requests_; |
+ // The begin frame source being observed. Null if none. |
+ cc::BeginFrameSource* begin_frame_source_; |
+ cc::BeginFrameArgs last_begin_frame_args_; |
+ |
+ // Indicates whether and for what reason a request for begin frames has been |
+ // issued. Used to control action dispatch at the next |OnBeginFrame()| call. |
+ uint32_t outstanding_begin_frame_requests_; |
bool is_showing_; |