Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(790)

Side by Side Diff: android_webview/browser/browser_view_renderer.cc

Issue 1858853002: Rename SharedRendererState to RenderThreadManager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix rebase Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 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 #include "android_webview/browser/browser_view_renderer.h" 5 #include "android_webview/browser/browser_view_renderer.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "android_webview/browser/browser_view_renderer_client.h" 9 #include "android_webview/browser/browser_view_renderer_client.h"
10 #include "android_webview/browser/child_frame.h" 10 #include "android_webview/browser/child_frame.h"
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 content::WebContents* web_contents) { 84 content::WebContents* web_contents) {
85 return BrowserViewRendererUserData::GetBrowserViewRenderer(web_contents); 85 return BrowserViewRendererUserData::GetBrowserViewRenderer(web_contents);
86 } 86 }
87 87
88 BrowserViewRenderer::BrowserViewRenderer( 88 BrowserViewRenderer::BrowserViewRenderer(
89 BrowserViewRendererClient* client, 89 BrowserViewRendererClient* client,
90 const scoped_refptr<base::SingleThreadTaskRunner>& ui_task_runner, 90 const scoped_refptr<base::SingleThreadTaskRunner>& ui_task_runner,
91 bool disable_page_visibility) 91 bool disable_page_visibility)
92 : client_(client), 92 : client_(client),
93 ui_task_runner_(ui_task_runner), 93 ui_task_runner_(ui_task_runner),
94 shared_renderer_state_(nullptr), 94 render_thread_manager_(nullptr),
95 disable_page_visibility_(disable_page_visibility), 95 disable_page_visibility_(disable_page_visibility),
96 compositor_(NULL), 96 compositor_(NULL),
97 is_paused_(false), 97 is_paused_(false),
98 view_visible_(false), 98 view_visible_(false),
99 window_visible_(false), 99 window_visible_(false),
100 attached_to_window_(false), 100 attached_to_window_(false),
101 hardware_enabled_(false), 101 hardware_enabled_(false),
102 dip_scale_(0.f), 102 dip_scale_(0.f),
103 page_scale_factor_(1.f), 103 page_scale_factor_(1.f),
104 min_page_scale_factor_(0.f), 104 min_page_scale_factor_(0.f),
105 max_page_scale_factor_(0.f), 105 max_page_scale_factor_(0.f),
106 on_new_picture_enable_(false), 106 on_new_picture_enable_(false),
107 clear_view_(false), 107 clear_view_(false),
108 offscreen_pre_raster_(false), 108 offscreen_pre_raster_(false),
109 next_compositor_id_(1) {} 109 next_compositor_id_(1) {}
110 110
111 BrowserViewRenderer::~BrowserViewRenderer() { 111 BrowserViewRenderer::~BrowserViewRenderer() {
112 DCHECK(compositor_map_.empty()); 112 DCHECK(compositor_map_.empty());
113 } 113 }
114 114
115 void BrowserViewRenderer::SetSharedRendererState( 115 void BrowserViewRenderer::SetRenderThreadManager(
116 SharedRendererState* shared_renderer_state) { 116 RenderThreadManager* render_thread_manager) {
117 shared_renderer_state_ = shared_renderer_state; 117 render_thread_manager_ = render_thread_manager;
118 } 118 }
119 119
120 void BrowserViewRenderer::RegisterWithWebContents( 120 void BrowserViewRenderer::RegisterWithWebContents(
121 content::WebContents* web_contents) { 121 content::WebContents* web_contents) {
122 web_contents->SetUserData(kBrowserViewRendererUserDataKey, 122 web_contents->SetUserData(kBrowserViewRendererUserDataKey,
123 new BrowserViewRendererUserData(this)); 123 new BrowserViewRendererUserData(this));
124 } 124 }
125 125
126 void BrowserViewRenderer::TrimMemory() { 126 void BrowserViewRenderer::TrimMemory() {
127 DCHECK(ui_task_runner_->BelongsToCurrentThread()); 127 DCHECK(ui_task_runner_->BelongsToCurrentThread());
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 if (clear_view_) { 179 if (clear_view_) {
180 TRACE_EVENT_INSTANT0("android_webview", "EarlyOut_ClearView", 180 TRACE_EVENT_INSTANT0("android_webview", "EarlyOut_ClearView",
181 TRACE_EVENT_SCOPE_THREAD); 181 TRACE_EVENT_SCOPE_THREAD);
182 return false; 182 return false;
183 } 183 }
184 184
185 return true; 185 return true;
186 } 186 }
187 187
188 bool BrowserViewRenderer::OnDrawHardware() { 188 bool BrowserViewRenderer::OnDrawHardware() {
189 DCHECK(shared_renderer_state_); 189 DCHECK(render_thread_manager_);
190 TRACE_EVENT0("android_webview", "BrowserViewRenderer::OnDrawHardware"); 190 TRACE_EVENT0("android_webview", "BrowserViewRenderer::OnDrawHardware");
191 191
192 shared_renderer_state_->InitializeHardwareDrawIfNeededOnUI(); 192 render_thread_manager_->InitializeHardwareDrawIfNeededOnUI();
193 193
194 if (!CanOnDraw()) { 194 if (!CanOnDraw()) {
195 return false; 195 return false;
196 } 196 }
197 197
198 shared_renderer_state_->SetScrollOffsetOnUI(last_on_draw_scroll_offset_); 198 render_thread_manager_->SetScrollOffsetOnUI(last_on_draw_scroll_offset_);
199 hardware_enabled_ = true; 199 hardware_enabled_ = true;
200 200
201 external_draw_constraints_ = 201 external_draw_constraints_ =
202 shared_renderer_state_->GetParentDrawConstraintsOnUI(); 202 render_thread_manager_->GetParentDrawConstraintsOnUI();
203 203
204 ReturnResourceFromParent(); 204 ReturnResourceFromParent();
205 UpdateMemoryPolicy(); 205 UpdateMemoryPolicy();
206 206
207 gfx::Size surface_size(size_); 207 gfx::Size surface_size(size_);
208 gfx::Rect viewport(surface_size); 208 gfx::Rect viewport(surface_size);
209 gfx::Rect clip = viewport; 209 gfx::Rect clip = viewport;
210 gfx::Transform transform_for_tile_priority = 210 gfx::Transform transform_for_tile_priority =
211 external_draw_constraints_.transform; 211 external_draw_constraints_.transform;
212 212
(...skipping 10 matching lines...) Expand all
223 content::SynchronousCompositor::Frame frame = 223 content::SynchronousCompositor::Frame frame =
224 compositor_->DemandDrawHw(surface_size, 224 compositor_->DemandDrawHw(surface_size,
225 gfx::Transform(), 225 gfx::Transform(),
226 viewport, 226 viewport,
227 clip, 227 clip,
228 viewport_rect_for_tile_priority, 228 viewport_rect_for_tile_priority,
229 transform_for_tile_priority); 229 transform_for_tile_priority);
230 if (!frame.frame.get()) { 230 if (!frame.frame.get()) {
231 TRACE_EVENT_INSTANT0("android_webview", "NoNewFrame", 231 TRACE_EVENT_INSTANT0("android_webview", "NoNewFrame",
232 TRACE_EVENT_SCOPE_THREAD); 232 TRACE_EVENT_SCOPE_THREAD);
233 hardware_enabled_ = shared_renderer_state_->HasFrameOnUI(); 233 hardware_enabled_ = render_thread_manager_->HasFrameOnUI();
234 if (!hardware_enabled_) 234 if (!hardware_enabled_)
235 UpdateMemoryPolicy(); 235 UpdateMemoryPolicy();
236 return hardware_enabled_; 236 return hardware_enabled_;
237 } 237 }
238 238
239 std::unique_ptr<ChildFrame> child_frame = base::WrapUnique(new ChildFrame( 239 std::unique_ptr<ChildFrame> child_frame = base::WrapUnique(new ChildFrame(
240 frame.output_surface_id, std::move(frame.frame), 240 frame.output_surface_id, std::move(frame.frame),
241 GetCompositorID(compositor_), viewport_rect_for_tile_priority.IsEmpty(), 241 GetCompositorID(compositor_), viewport_rect_for_tile_priority.IsEmpty(),
242 transform_for_tile_priority, offscreen_pre_raster_, 242 transform_for_tile_priority, offscreen_pre_raster_,
243 external_draw_constraints_.is_layer)); 243 external_draw_constraints_.is_layer));
244 244
245 ReturnUnusedResource(shared_renderer_state_->PassUncommittedFrameOnUI()); 245 ReturnUnusedResource(render_thread_manager_->PassUncommittedFrameOnUI());
246 shared_renderer_state_->SetFrameOnUI(std::move(child_frame)); 246 render_thread_manager_->SetFrameOnUI(std::move(child_frame));
247 return true; 247 return true;
248 } 248 }
249 249
250 void BrowserViewRenderer::OnParentDrawConstraintsUpdated() { 250 void BrowserViewRenderer::OnParentDrawConstraintsUpdated() {
251 DCHECK(shared_renderer_state_); 251 DCHECK(render_thread_manager_);
252 PostInvalidate(); 252 PostInvalidate();
253 external_draw_constraints_ = 253 external_draw_constraints_ =
254 shared_renderer_state_->GetParentDrawConstraintsOnUI(); 254 render_thread_manager_->GetParentDrawConstraintsOnUI();
255 UpdateMemoryPolicy(); 255 UpdateMemoryPolicy();
256 } 256 }
257 257
258 void BrowserViewRenderer::ReturnUnusedResource( 258 void BrowserViewRenderer::ReturnUnusedResource(
259 std::unique_ptr<ChildFrame> child_frame) { 259 std::unique_ptr<ChildFrame> child_frame) {
260 if (!child_frame.get() || !child_frame->frame.get()) 260 if (!child_frame.get() || !child_frame->frame.get())
261 return; 261 return;
262 262
263 cc::CompositorFrameAck frame_ack; 263 cc::CompositorFrameAck frame_ack;
264 cc::TransferableResource::ReturnResources( 264 cc::TransferableResource::ReturnResources(
265 child_frame->frame->delegated_frame_data->resource_list, 265 child_frame->frame->delegated_frame_data->resource_list,
266 &frame_ack.resources); 266 &frame_ack.resources);
267 content::SynchronousCompositor* compositor = 267 content::SynchronousCompositor* compositor =
268 compositor_map_[child_frame->compositor_id]; 268 compositor_map_[child_frame->compositor_id];
269 if (compositor && !frame_ack.resources.empty()) 269 if (compositor && !frame_ack.resources.empty())
270 compositor->ReturnResources(child_frame->output_surface_id, frame_ack); 270 compositor->ReturnResources(child_frame->output_surface_id, frame_ack);
271 } 271 }
272 272
273 void BrowserViewRenderer::ReturnResourceFromParent() { 273 void BrowserViewRenderer::ReturnResourceFromParent() {
274 DCHECK(shared_renderer_state_); 274 DCHECK(render_thread_manager_);
275 SharedRendererState::ReturnedResourcesMap returned_resource_map; 275 RenderThreadManager::ReturnedResourcesMap returned_resource_map;
276 shared_renderer_state_->SwapReturnedResourcesOnUI(&returned_resource_map); 276 render_thread_manager_->SwapReturnedResourcesOnUI(&returned_resource_map);
277 for (auto iterator = returned_resource_map.begin(); 277 for (auto iterator = returned_resource_map.begin();
278 iterator != returned_resource_map.end(); iterator++) { 278 iterator != returned_resource_map.end(); iterator++) {
279 uint32_t compositor_id = iterator->first; 279 uint32_t compositor_id = iterator->first;
280 content::SynchronousCompositor* compositor = compositor_map_[compositor_id]; 280 content::SynchronousCompositor* compositor = compositor_map_[compositor_id];
281 cc::CompositorFrameAck frame_ack; 281 cc::CompositorFrameAck frame_ack;
282 frame_ack.resources.swap(iterator->second.resources); 282 frame_ack.resources.swap(iterator->second.resources);
283 283
284 if (compositor && !frame_ack.resources.empty()) { 284 if (compositor && !frame_ack.resources.empty()) {
285 compositor->ReturnResources(iterator->second.output_surface_id, 285 compositor->ReturnResources(iterator->second.output_surface_id,
286 frame_ack); 286 frame_ack);
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 } 411 }
412 412
413 void BrowserViewRenderer::OnComputeScroll(base::TimeTicks animation_time) { 413 void BrowserViewRenderer::OnComputeScroll(base::TimeTicks animation_time) {
414 if (!compositor_) 414 if (!compositor_)
415 return; 415 return;
416 TRACE_EVENT0("android_webview", "BrowserViewRenderer::OnComputeScroll"); 416 TRACE_EVENT0("android_webview", "BrowserViewRenderer::OnComputeScroll");
417 compositor_->OnComputeScroll(animation_time); 417 compositor_->OnComputeScroll(animation_time);
418 } 418 }
419 419
420 void BrowserViewRenderer::ReleaseHardware() { 420 void BrowserViewRenderer::ReleaseHardware() {
421 ReturnUnusedResource(shared_renderer_state_->PassUncommittedFrameOnUI()); 421 ReturnUnusedResource(render_thread_manager_->PassUncommittedFrameOnUI());
422 ReturnResourceFromParent(); 422 ReturnResourceFromParent();
423 DCHECK(shared_renderer_state_->ReturnedResourcesEmptyOnUI()); 423 DCHECK(render_thread_manager_->ReturnedResourcesEmptyOnUI());
424 hardware_enabled_ = false; 424 hardware_enabled_ = false;
425 UpdateMemoryPolicy(); 425 UpdateMemoryPolicy();
426 } 426 }
427 427
428 bool BrowserViewRenderer::IsVisible() const { 428 bool BrowserViewRenderer::IsVisible() const {
429 // Ignore |window_visible_| if |attached_to_window_| is false. 429 // Ignore |window_visible_| if |attached_to_window_| is false.
430 return view_visible_ && (!attached_to_window_ || window_visible_); 430 return view_visible_ && (!attached_to_window_ || window_visible_);
431 } 431 }
432 432
433 bool BrowserViewRenderer::IsClientVisible() const { 433 bool BrowserViewRenderer::IsClientVisible() const {
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
700 base::StringAppendF(&str, 700 base::StringAppendF(&str,
701 "overscroll_rounding_error_: %s ", 701 "overscroll_rounding_error_: %s ",
702 overscroll_rounding_error_.ToString().c_str()); 702 overscroll_rounding_error_.ToString().c_str());
703 base::StringAppendF( 703 base::StringAppendF(
704 &str, "on_new_picture_enable: %d ", on_new_picture_enable_); 704 &str, "on_new_picture_enable: %d ", on_new_picture_enable_);
705 base::StringAppendF(&str, "clear_view: %d ", clear_view_); 705 base::StringAppendF(&str, "clear_view: %d ", clear_view_);
706 return str; 706 return str;
707 } 707 }
708 708
709 } // namespace android_webview 709 } // namespace android_webview
OLDNEW
« no previous file with comments | « android_webview/browser/browser_view_renderer.h ('k') | android_webview/browser/browser_view_renderer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698