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

Side by Side Diff: content/browser/android/synchronous_compositor_host.cc

Issue 1974133002: sync compositor: Remove sync input path (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 6 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "content/browser/android/synchronous_compositor_host.h" 5 #include "content/browser/android/synchronous_compositor_host.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/containers/hash_tables.h" 10 #include "base/containers/hash_tables.h"
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 std::unique_ptr<SynchronousCompositorHost> SynchronousCompositorHost::Create( 46 std::unique_ptr<SynchronousCompositorHost> SynchronousCompositorHost::Create(
47 RenderWidgetHostViewAndroid* rwhva, 47 RenderWidgetHostViewAndroid* rwhva,
48 WebContents* web_contents) { 48 WebContents* web_contents) {
49 DCHECK(web_contents); 49 DCHECK(web_contents);
50 WebContentsAndroid* web_contents_android = 50 WebContentsAndroid* web_contents_android =
51 static_cast<WebContentsImpl*>(web_contents)->GetWebContentsAndroid(); 51 static_cast<WebContentsImpl*>(web_contents)->GetWebContentsAndroid();
52 if (!web_contents_android->synchronous_compositor_client()) 52 if (!web_contents_android->synchronous_compositor_client())
53 return nullptr; // Not using sync compositing. 53 return nullptr; // Not using sync compositing.
54 54
55 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); 55 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
56 bool async_input =
57 !command_line->HasSwitch(switches::kSyncInputForSyncCompositor);
58 bool use_in_proc_software_draw = 56 bool use_in_proc_software_draw =
59 command_line->HasSwitch(switches::kSingleProcess); 57 command_line->HasSwitch(switches::kSingleProcess);
60 return base::WrapUnique(new SynchronousCompositorHost( 58 return base::WrapUnique(new SynchronousCompositorHost(
61 rwhva, web_contents_android->synchronous_compositor_client(), async_input, 59 rwhva, web_contents_android->synchronous_compositor_client(),
62 use_in_proc_software_draw)); 60 use_in_proc_software_draw));
63 } 61 }
64 62
65 SynchronousCompositorHost::SynchronousCompositorHost( 63 SynchronousCompositorHost::SynchronousCompositorHost(
66 RenderWidgetHostViewAndroid* rwhva, 64 RenderWidgetHostViewAndroid* rwhva,
67 SynchronousCompositorClient* client, 65 SynchronousCompositorClient* client,
68 bool async_input,
69 bool use_in_proc_software_draw) 66 bool use_in_proc_software_draw)
70 : rwhva_(rwhva), 67 : rwhva_(rwhva),
71 client_(client), 68 client_(client),
72 ui_task_runner_( 69 ui_task_runner_(
73 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)), 70 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)),
74 routing_id_(rwhva_->GetRenderWidgetHost()->GetRoutingID()), 71 routing_id_(rwhva_->GetRenderWidgetHost()->GetRoutingID()),
75 sender_(rwhva_->GetRenderWidgetHost()), 72 sender_(rwhva_->GetRenderWidgetHost()),
76 async_input_(async_input),
77 use_in_process_zero_copy_software_draw_(use_in_proc_software_draw), 73 use_in_process_zero_copy_software_draw_(use_in_proc_software_draw),
78 is_active_(false), 74 is_active_(false),
79 bytes_limit_(0u), 75 bytes_limit_(0u),
80 renderer_param_version_(0u), 76 renderer_param_version_(0u),
81 need_animate_scroll_(false), 77 need_animate_scroll_(false),
82 need_invalidate_count_(0u), 78 need_invalidate_count_(0u),
83 need_begin_frame_(false), 79 need_begin_frame_(false),
84 did_activate_pending_tree_count_(0u), 80 did_activate_pending_tree_count_(0u),
85 weak_ptr_factory_(this) { 81 weak_ptr_factory_(this) {
86 client_->DidInitializeCompositor(this); 82 client_->DidInitializeCompositor(this);
87 } 83 }
88 84
89 SynchronousCompositorHost::~SynchronousCompositorHost() { 85 SynchronousCompositorHost::~SynchronousCompositorHost() {
90 client_->DidDestroyCompositor(this); 86 client_->DidDestroyCompositor(this);
91 if (weak_ptr_factory_.HasWeakPtrs()) 87 if (weak_ptr_factory_.HasWeakPtrs())
92 UpdateStateTask(); 88 UpdateStateTask();
93 } 89 }
94 90
95 bool SynchronousCompositorHost::OnMessageReceived(const IPC::Message& message) { 91 bool SynchronousCompositorHost::OnMessageReceived(const IPC::Message& message) {
96 bool handled = true; 92 bool handled = true;
97 IPC_BEGIN_MESSAGE_MAP(SynchronousCompositorHost, message) 93 IPC_BEGIN_MESSAGE_MAP(SynchronousCompositorHost, message)
98 IPC_MESSAGE_HANDLER(SyncCompositorHostMsg_OutputSurfaceCreated, 94 IPC_MESSAGE_HANDLER(SyncCompositorHostMsg_OutputSurfaceCreated,
99 OutputSurfaceCreated) 95 OutputSurfaceCreated)
100 IPC_MESSAGE_HANDLER(SyncCompositorHostMsg_UpdateState, ProcessCommonParams) 96 IPC_MESSAGE_HANDLER(SyncCompositorHostMsg_UpdateState, ProcessCommonParams)
101 IPC_MESSAGE_HANDLER(SyncCompositorHostMsg_OverScroll, OnOverScroll)
102 IPC_MESSAGE_UNHANDLED(handled = false) 97 IPC_MESSAGE_UNHANDLED(handled = false)
103 IPC_END_MESSAGE_MAP() 98 IPC_END_MESSAGE_MAP()
104 return handled; 99 return handled;
105 } 100 }
106 101
107 void SynchronousCompositorHost::DidBecomeCurrent() { 102 void SynchronousCompositorHost::DidBecomeCurrent() {
108 client_->DidBecomeCurrent(this); 103 client_->DidBecomeCurrent(this);
109 } 104 }
110 105
111 SynchronousCompositor::Frame SynchronousCompositorHost::DemandDrawHw( 106 SynchronousCompositor::Frame SynchronousCompositorHost::DemandDrawHw(
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 return; 372 return;
378 need_animate_scroll_ = false; 373 need_animate_scroll_ = false;
379 374
380 SyncCompositorCommonBrowserParams common_browser_params; 375 SyncCompositorCommonBrowserParams common_browser_params;
381 PopulateCommonParams(&common_browser_params); 376 PopulateCommonParams(&common_browser_params);
382 SyncCompositorCommonRendererParams common_renderer_params; 377 SyncCompositorCommonRendererParams common_renderer_params;
383 sender_->Send(new SyncCompositorMsg_ComputeScroll( 378 sender_->Send(new SyncCompositorMsg_ComputeScroll(
384 routing_id_, common_browser_params, animation_time)); 379 routing_id_, common_browser_params, animation_time));
385 } 380 }
386 381
387 InputEventAckState SynchronousCompositorHost::HandleInputEvent(
388 const blink::WebInputEvent& input_event) {
389 if (async_input_)
390 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED;
391 SyncCompositorCommonBrowserParams common_browser_params;
392 PopulateCommonParams(&common_browser_params);
393 SyncCompositorCommonRendererParams common_renderer_params;
394 InputEventAckState ack = INPUT_EVENT_ACK_STATE_NOT_CONSUMED;
395 if (!sender_->Send(new SyncCompositorMsg_HandleInputEvent(
396 routing_id_, common_browser_params, &input_event,
397 &common_renderer_params, &ack))) {
398 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED;
399 }
400 ProcessCommonParams(common_renderer_params);
401 return ack;
402 }
403
404 void SynchronousCompositorHost::DidOverscroll( 382 void SynchronousCompositorHost::DidOverscroll(
405 const DidOverscrollParams& over_scroll_params) { 383 const DidOverscrollParams& over_scroll_params) {
406 client_->DidOverscroll(over_scroll_params.accumulated_overscroll, 384 client_->DidOverscroll(over_scroll_params.accumulated_overscroll,
407 over_scroll_params.latest_overscroll_delta, 385 over_scroll_params.latest_overscroll_delta,
408 over_scroll_params.current_fling_velocity); 386 over_scroll_params.current_fling_velocity);
409 } 387 }
410 388
411 void SynchronousCompositorHost::BeginFrame(const cc::BeginFrameArgs& args) { 389 void SynchronousCompositorHost::BeginFrame(const cc::BeginFrameArgs& args) {
412 if (!is_active_) 390 if (!is_active_)
413 return; 391 return;
414 392
415 SyncCompositorCommonBrowserParams common_browser_params; 393 SyncCompositorCommonBrowserParams common_browser_params;
416 PopulateCommonParams(&common_browser_params); 394 PopulateCommonParams(&common_browser_params);
417 SyncCompositorCommonRendererParams common_renderer_params; 395 SyncCompositorCommonRendererParams common_renderer_params;
418 if (!sender_->Send( 396 if (!sender_->Send(
419 new SyncCompositorMsg_BeginFrame(routing_id_, common_browser_params, 397 new SyncCompositorMsg_BeginFrame(routing_id_, common_browser_params,
420 args, &common_renderer_params))) { 398 args, &common_renderer_params))) {
421 return; 399 return;
422 } 400 }
423 ProcessCommonParams(common_renderer_params); 401 ProcessCommonParams(common_renderer_params);
424 } 402 }
425 403
426 void SynchronousCompositorHost::OutputSurfaceCreated() { 404 void SynchronousCompositorHost::OutputSurfaceCreated() {
427 // New output surface is not aware of state from Browser side. So need to 405 // New output surface is not aware of state from Browser side. So need to
428 // re-send all browser side state here. 406 // re-send all browser side state here.
429 sender_->Send( 407 sender_->Send(
430 new SyncCompositorMsg_SetMemoryPolicy(routing_id_, bytes_limit_)); 408 new SyncCompositorMsg_SetMemoryPolicy(routing_id_, bytes_limit_));
431 } 409 }
432 410
433 void SynchronousCompositorHost::OnOverScroll(
434 const SyncCompositorCommonRendererParams& params,
435 const DidOverscrollParams& over_scroll_params) {
436 ProcessCommonParams(params);
437 DidOverscroll(over_scroll_params);
438 }
439
440 void SynchronousCompositorHost::PopulateCommonParams( 411 void SynchronousCompositorHost::PopulateCommonParams(
441 SyncCompositorCommonBrowserParams* params) { 412 SyncCompositorCommonBrowserParams* params) {
442 DCHECK(params); 413 DCHECK(params);
443 params->begin_frame_source_paused = !is_active_; 414 params->begin_frame_source_paused = !is_active_;
444 415
445 weak_ptr_factory_.InvalidateWeakPtrs(); 416 weak_ptr_factory_.InvalidateWeakPtrs();
446 } 417 }
447 418
448 void SynchronousCompositorHost::ProcessCommonParams( 419 void SynchronousCompositorHost::ProcessCommonParams(
449 const SyncCompositorCommonRendererParams& params) { 420 const SyncCompositorCommonRendererParams& params) {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 params.scrollable_size, params.page_scale_factor, 452 params.scrollable_size, params.page_scale_factor,
482 params.min_page_scale_factor, params.max_page_scale_factor); 453 params.min_page_scale_factor, params.max_page_scale_factor);
483 } 454 }
484 } 455 }
485 456
486 void SynchronousCompositorHost::UpdateNeedsBeginFrames() { 457 void SynchronousCompositorHost::UpdateNeedsBeginFrames() {
487 rwhva_->OnSetNeedsBeginFrames(is_active_ && need_begin_frame_); 458 rwhva_->OnSetNeedsBeginFrames(is_active_ && need_begin_frame_);
488 } 459 }
489 460
490 } // namespace content 461 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698