OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef ANDROID_WEBVIEW_BROWSER_BROWSER_VIEW_RENDERER_IMPL_H_ | 5 #ifndef ANDROID_WEBVIEW_BROWSER_BROWSER_VIEW_RENDERER_IMPL_H_ |
6 #define ANDROID_WEBVIEW_BROWSER_BROWSER_VIEW_RENDERER_IMPL_H_ | 6 #define ANDROID_WEBVIEW_BROWSER_BROWSER_VIEW_RENDERER_IMPL_H_ |
7 | 7 |
8 #include "android_webview/browser/browser_view_renderer.h" | 8 #include "android_webview/browser/browser_view_renderer.h" |
9 #include "android_webview/browser/renderer_host/view_renderer_host.h" | 9 #include "android_webview/browser/renderer_host/view_renderer_host.h" |
10 #include "content/public/browser/android/compositor.h" | 10 #include "content/public/browser/android/compositor.h" |
(...skipping 20 matching lines...) Expand all Loading... |
31 | 31 |
32 namespace android_webview { | 32 namespace android_webview { |
33 | 33 |
34 class BrowserViewRendererImpl | 34 class BrowserViewRendererImpl |
35 : public BrowserViewRenderer, | 35 : public BrowserViewRenderer, |
36 public ViewRendererHost::Client, | 36 public ViewRendererHost::Client, |
37 public content::Compositor::Client { | 37 public content::Compositor::Client { |
38 public: | 38 public: |
39 static BrowserViewRendererImpl* Create(BrowserViewRenderer::Client* client, | 39 static BrowserViewRendererImpl* Create(BrowserViewRenderer::Client* client, |
40 JavaHelper* java_helper); | 40 JavaHelper* java_helper); |
| 41 static BrowserViewRendererImpl* FromWebContents( |
| 42 content::WebContents* contents); |
| 43 static void SetAwDrawSWFunctionTable(AwDrawSWFunctionTable* table); |
| 44 |
41 virtual ~BrowserViewRendererImpl(); | 45 virtual ~BrowserViewRendererImpl(); |
42 | 46 |
43 // Platform methods. | |
44 static void SetAwDrawSWFunctionTable(AwDrawSWFunctionTable* table); | |
45 | |
46 // BrowserViewRenderer implementation. | 47 // BrowserViewRenderer implementation. |
47 // |content_view_core| must not outlive |this| BrowserViewRenderer instance. | |
48 virtual void SetContents( | 48 virtual void SetContents( |
49 content::ContentViewCore* content_view_core) OVERRIDE; | 49 content::ContentViewCore* content_view_core) OVERRIDE; |
50 virtual void DrawGL(AwDrawGLInfo* draw_info) OVERRIDE; | 50 virtual void DrawGL(AwDrawGLInfo* draw_info) OVERRIDE; |
51 virtual void SetScrollForHWFrame(int x, int y) OVERRIDE; | 51 virtual void SetScrollForHWFrame(int x, int y) OVERRIDE; |
52 virtual bool DrawSW(jobject java_canvas, const gfx::Rect& clip) OVERRIDE; | 52 virtual bool DrawSW(jobject java_canvas, const gfx::Rect& clip) OVERRIDE; |
53 virtual base::android::ScopedJavaLocalRef<jobject> CapturePicture() OVERRIDE; | 53 virtual base::android::ScopedJavaLocalRef<jobject> CapturePicture() OVERRIDE; |
54 virtual void EnableOnNewPicture(OnNewPictureMode mode) OVERRIDE; | 54 virtual void EnableOnNewPicture(OnNewPictureMode mode) OVERRIDE; |
55 virtual void OnVisibilityChanged( | 55 virtual void OnVisibilityChanged( |
56 bool view_visible, bool window_visible) OVERRIDE; | 56 bool view_visible, bool window_visible) OVERRIDE; |
57 virtual void OnSizeChanged(int width, int height) OVERRIDE; | 57 virtual void OnSizeChanged(int width, int height) OVERRIDE; |
58 virtual void OnAttachedToWindow(int width, int height) OVERRIDE; | 58 virtual void OnAttachedToWindow(int width, int height) OVERRIDE; |
59 virtual void OnDetachedFromWindow() OVERRIDE; | 59 virtual void OnDetachedFromWindow() OVERRIDE; |
60 | 60 |
61 // content::Compositor::Client implementation. | 61 // content::Compositor::Client implementation. |
62 virtual void ScheduleComposite() OVERRIDE; | 62 virtual void ScheduleComposite() OVERRIDE; |
63 | 63 |
64 // ViewRendererHost::Client implementation. | 64 // ViewRendererHost::Client implementation. |
65 virtual void OnPictureUpdated(int process_id, int render_view_id) OVERRIDE; | 65 virtual void OnPictureUpdated(int process_id, int render_view_id) OVERRIDE; |
66 | 66 |
67 protected: | 67 protected: |
68 BrowserViewRendererImpl(BrowserViewRenderer::Client* client, | 68 BrowserViewRendererImpl(BrowserViewRenderer::Client* client, |
69 JavaHelper* java_helper); | 69 JavaHelper* java_helper); |
70 | 70 |
71 private: | 71 private: |
| 72 class UserData; |
| 73 friend class UserData; |
| 74 |
72 // Returns the latest locally available picture if any. | 75 // Returns the latest locally available picture if any. |
73 // If none is available will synchronously request the latest one | 76 // If none is available will synchronously request the latest one |
74 // and block until the result is received. | 77 // and block until the result is received. |
75 skia::RefPtr<SkPicture> GetLastCapturedPicture(); | 78 skia::RefPtr<SkPicture> GetLastCapturedPicture(); |
76 void OnPictureUpdated(); | 79 void OnPictureUpdated(); |
77 | 80 |
78 void SetCompositorVisibility(bool visible); | 81 void SetCompositorVisibility(bool visible); |
79 void ResetCompositor(); | 82 void ResetCompositor(); |
80 void Invalidate(); | 83 void Invalidate(); |
81 bool RenderSW(SkCanvas* canvas); | 84 bool RenderSW(SkCanvas* canvas); |
82 bool RenderPicture(SkCanvas* canvas); | 85 bool RenderPicture(SkCanvas* canvas); |
83 | 86 |
84 void OnFrameInfoUpdated(const gfx::SizeF& content_size, | 87 void OnFrameInfoUpdated(const gfx::SizeF& content_size, |
85 const gfx::Vector2dF& scroll_offset, | 88 const gfx::Vector2dF& scroll_offset, |
86 float page_scale_factor); | 89 float page_scale_factor); |
87 | 90 |
| 91 // Called when |web_contents_| is disconnected from |this| object. |
| 92 void WebContentsGone(); |
| 93 |
88 BrowserViewRenderer::Client* client_; | 94 BrowserViewRenderer::Client* client_; |
89 BrowserViewRenderer::JavaHelper* java_helper_; | 95 BrowserViewRenderer::JavaHelper* java_helper_; |
90 | 96 |
91 scoped_ptr<ViewRendererHost> view_renderer_host_; | 97 scoped_ptr<ViewRendererHost> view_renderer_host_; |
92 scoped_ptr<content::Compositor> compositor_; | 98 scoped_ptr<content::Compositor> compositor_; |
93 | 99 |
94 // Ensures content keeps clipped within the view during transformations. | 100 // Ensures content keeps clipped within the view during transformations. |
95 scoped_refptr<cc::Layer> view_clip_layer_; | 101 scoped_refptr<cc::Layer> view_clip_layer_; |
96 | 102 |
97 // Applies the transformation matrix. | 103 // Applies the transformation matrix. |
(...skipping 24 matching lines...) Expand all Loading... |
122 | 128 |
123 // Used to observe frame metadata updates. | 129 // Used to observe frame metadata updates. |
124 content::ContentViewCore::UpdateFrameInfoCallback update_frame_info_callback_; | 130 content::ContentViewCore::UpdateFrameInfoCallback update_frame_info_callback_; |
125 | 131 |
126 DISALLOW_COPY_AND_ASSIGN(BrowserViewRendererImpl); | 132 DISALLOW_COPY_AND_ASSIGN(BrowserViewRendererImpl); |
127 }; | 133 }; |
128 | 134 |
129 } // namespace android_webview | 135 } // namespace android_webview |
130 | 136 |
131 #endif // ANDROID_WEBVIEW_BROWSER_BROWSER_VIEW_RENDERER_IMPL_H_ | 137 #endif // ANDROID_WEBVIEW_BROWSER_BROWSER_VIEW_RENDERER_IMPL_H_ |
OLD | NEW |