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

Side by Side Diff: content/renderer/render_thread_impl.cc

Issue 15920002: Fix WebView compositor input handling (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Make InputEventAckState public Created 7 years, 7 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/renderer/render_thread_impl.h" 5 #include "content/renderer/render_thread_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <map> 9 #include <map>
10 #include <vector> 10 #include <vector>
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 #include "content/public/renderer/content_renderer_client.h" 49 #include "content/public/renderer/content_renderer_client.h"
50 #include "content/public/renderer/render_process_observer.h" 50 #include "content/public/renderer/render_process_observer.h"
51 #include "content/public/renderer/render_view_visitor.h" 51 #include "content/public/renderer/render_view_visitor.h"
52 #include "content/renderer/devtools/devtools_agent_filter.h" 52 #include "content/renderer/devtools/devtools_agent_filter.h"
53 #include "content/renderer/dom_storage/dom_storage_dispatcher.h" 53 #include "content/renderer/dom_storage/dom_storage_dispatcher.h"
54 #include "content/renderer/dom_storage/webstoragearea_impl.h" 54 #include "content/renderer/dom_storage/webstoragearea_impl.h"
55 #include "content/renderer/dom_storage/webstoragenamespace_impl.h" 55 #include "content/renderer/dom_storage/webstoragenamespace_impl.h"
56 #include "content/renderer/gpu/compositor_output_surface.h" 56 #include "content/renderer/gpu/compositor_output_surface.h"
57 #include "content/renderer/gpu/gpu_benchmarking_extension.h" 57 #include "content/renderer/gpu/gpu_benchmarking_extension.h"
58 #include "content/renderer/gpu/input_handler_manager.h" 58 #include "content/renderer/gpu/input_handler_manager.h"
59 #include "content/renderer/gpu/input_event_filter.h"
59 #include "content/renderer/media/audio_input_message_filter.h" 60 #include "content/renderer/media/audio_input_message_filter.h"
60 #include "content/renderer/media/audio_message_filter.h" 61 #include "content/renderer/media/audio_message_filter.h"
61 #include "content/renderer/media/audio_renderer_mixer_manager.h" 62 #include "content/renderer/media/audio_renderer_mixer_manager.h"
62 #include "content/renderer/media/media_stream_center.h" 63 #include "content/renderer/media/media_stream_center.h"
63 #include "content/renderer/media/media_stream_dependency_factory.h" 64 #include "content/renderer/media/media_stream_dependency_factory.h"
64 #include "content/renderer/media/peer_connection_tracker.h" 65 #include "content/renderer/media/peer_connection_tracker.h"
65 #include "content/renderer/media/video_capture_impl_manager.h" 66 #include "content/renderer/media/video_capture_impl_manager.h"
66 #include "content/renderer/media/video_capture_message_filter.h" 67 #include "content/renderer/media/video_capture_message_filter.h"
67 #include "content/renderer/media/webrtc_logging_message_filter.h" 68 #include "content/renderer/media/webrtc_logging_message_filter.h"
68 #include "content/renderer/memory_benchmarking_extension.h" 69 #include "content/renderer/memory_benchmarking_extension.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 #else 107 #else
107 // TODO(port) 108 // TODO(port)
108 #include "base/memory/scoped_handle.h" 109 #include "base/memory/scoped_handle.h"
109 #include "content/common_child/np_channel_base.h" 110 #include "content/common_child/np_channel_base.h"
110 #endif 111 #endif
111 112
112 #if defined(OS_POSIX) 113 #if defined(OS_POSIX)
113 #include "ipc/ipc_channel_posix.h" 114 #include "ipc/ipc_channel_posix.h"
114 #endif 115 #endif
115 116
117 #if defined(OS_ANDROID)
118 #include "content/renderer/android/synchronous_input_event_filter.h"
119 #endif
120
116 #if defined(ENABLE_WEBRTC) 121 #if defined(ENABLE_WEBRTC)
117 #include "third_party/webrtc/system_wrappers/interface/event_tracer.h" 122 #include "third_party/webrtc/system_wrappers/interface/event_tracer.h"
118 #endif 123 #endif
119 124
120 using WebKit::WebDocument; 125 using WebKit::WebDocument;
121 using WebKit::WebFrame; 126 using WebKit::WebFrame;
122 using WebKit::WebNetworkStateNotifier; 127 using WebKit::WebNetworkStateNotifier;
123 using WebKit::WebRuntimeFeatures; 128 using WebKit::WebRuntimeFeatures;
124 using WebKit::WebScriptController; 129 using WebKit::WebScriptController;
125 using WebKit::WebSecurityPolicy; 130 using WebKit::WebSecurityPolicy;
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 // Shutdown the file thread if it's running. 453 // Shutdown the file thread if it's running.
449 if (file_thread_) 454 if (file_thread_)
450 file_thread_->Stop(); 455 file_thread_->Stop();
451 456
452 if (compositor_output_surface_filter_) { 457 if (compositor_output_surface_filter_) {
453 RemoveFilter(compositor_output_surface_filter_.get()); 458 RemoveFilter(compositor_output_surface_filter_.get());
454 compositor_output_surface_filter_ = NULL; 459 compositor_output_surface_filter_ = NULL;
455 } 460 }
456 461
457 compositor_thread_.reset(); 462 compositor_thread_.reset();
458 if (input_handler_manager_) { 463 input_handler_manager_.reset();
459 RemoveFilter(input_handler_manager_->GetMessageFilter()); 464 override_input_handler_manager_client_.reset();
460 input_handler_manager_.reset(); 465 if (input_event_filter_) {
466 RemoveFilter(input_event_filter_.get());
467 input_event_filter_ = NULL;
461 } 468 }
462 469
463 if (webkit_platform_support_) 470 if (webkit_platform_support_)
464 WebKit::shutdown(); 471 WebKit::shutdown();
465 472
466 lazy_tls.Pointer()->Set(NULL); 473 lazy_tls.Pointer()->Set(NULL);
467 474
468 // TODO(port) 475 // TODO(port)
469 #if defined(OS_WIN) 476 #if defined(OS_WIN)
470 // Clean up plugin channels before this thread goes away. 477 // Clean up plugin channels before this thread goes away.
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
745 GetContentClient()->renderer()->OverrideCompositorMessageLoop(); 752 GetContentClient()->renderer()->OverrideCompositorMessageLoop();
746 if (override_loop) { 753 if (override_loop) {
747 compositor_message_loop_proxy_ = override_loop->message_loop_proxy(); 754 compositor_message_loop_proxy_ = override_loop->message_loop_proxy();
748 } else { 755 } else {
749 compositor_thread_.reset(new base::Thread("Compositor")); 756 compositor_thread_.reset(new base::Thread("Compositor"));
750 compositor_thread_->Start(); 757 compositor_thread_->Start();
751 compositor_message_loop_proxy_ = 758 compositor_message_loop_proxy_ =
752 compositor_thread_->message_loop_proxy(); 759 compositor_thread_->message_loop_proxy();
753 } 760 }
754 761
755 if (GetContentClient()->renderer()->ShouldCreateCompositorInputHandler()) { 762 input_handler_manager_.reset(
756 input_handler_manager_.reset( 763 new InputHandlerManager(compositor_message_loop_proxy_));
757 new InputHandlerManager(this, compositor_message_loop_proxy_)); 764
758 AddFilter(input_handler_manager_->GetMessageFilter()); 765 base::Callback<void(int, const WebKit::WebInputEvent*)> handler(
766 base::Bind(&InputHandlerManager::HandleInputEvent,
767 base::Unretained(input_handler_manager_.get())));
768
769 #if defined(OS_ANDROID)
770 if (command_line.HasSwitch(
771 switches::kEnableSynchronousRendererCompositor)) {
772 scoped_ptr<SynchronousInputEventFilter> input_event_filter(
773 new SynchronousInputEventFilter(handler));
774 input_handler_manager_->BindToClient(input_event_filter.get());
775 GetContentClient()->renderer()->DidCreateSynchronousInputEventHandler(
776 input_event_filter.get());
777 override_input_handler_manager_client_ =
778 input_event_filter.PassAs<InputHandlerManagerClient>();
779 }
780 #endif
781 if (!override_input_handler_manager_client_) {
782 input_event_filter_ =
783 new InputEventFilter(this, compositor_message_loop_proxy_, handler);
784 input_handler_manager_->BindToClient(input_event_filter_.get());
759 } 785 }
760 } 786 }
761 787
762 scoped_refptr<base::MessageLoopProxy> output_surface_loop; 788 scoped_refptr<base::MessageLoopProxy> output_surface_loop;
763 if (enable) 789 if (enable)
764 output_surface_loop = compositor_message_loop_proxy_; 790 output_surface_loop = compositor_message_loop_proxy_;
765 else 791 else
766 output_surface_loop = base::MessageLoopProxy::current(); 792 output_surface_loop = base::MessageLoopProxy::current();
767 793
768 compositor_output_surface_filter_ = 794 compositor_output_surface_filter_ =
(...skipping 548 matching lines...) Expand 10 before | Expand all | Expand 10 after
1317 1343
1318 void RenderThreadImpl::SetFlingCurveParameters( 1344 void RenderThreadImpl::SetFlingCurveParameters(
1319 const std::vector<float>& new_touchpad, 1345 const std::vector<float>& new_touchpad,
1320 const std::vector<float>& new_touchscreen) { 1346 const std::vector<float>& new_touchscreen) {
1321 webkit_platform_support_->SetFlingCurveParameters(new_touchpad, 1347 webkit_platform_support_->SetFlingCurveParameters(new_touchpad,
1322 new_touchscreen); 1348 new_touchscreen);
1323 1349
1324 } 1350 }
1325 1351
1326 } // namespace content 1352 } // namespace content
OLDNEW
« content/public/renderer/content_renderer_client.h ('K') | « content/renderer/render_thread_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698