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

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

Issue 2479663002: Move compositor InputHandler from RenderViewImpl to RenderWidget. (Closed)
Patch Set: Check for layerTreeView while setting handlers. Created 3 years, 11 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_view_impl.h" 5 #include "content/renderer/render_view_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <memory> 9 #include <memory>
10 10
(...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 page_zoom_level_(params.page_zoom_level), 563 page_zoom_level_(params.page_zoom_level),
564 main_render_frame_(nullptr), 564 main_render_frame_(nullptr),
565 frame_widget_(nullptr), 565 frame_widget_(nullptr),
566 speech_recognition_dispatcher_(NULL), 566 speech_recognition_dispatcher_(NULL),
567 #if defined(OS_ANDROID) 567 #if defined(OS_ANDROID)
568 expected_content_intent_id_(0), 568 expected_content_intent_id_(0),
569 was_created_by_renderer_(false), 569 was_created_by_renderer_(false),
570 #endif 570 #endif
571 enumeration_completion_id_(0), 571 enumeration_completion_id_(0),
572 session_storage_namespace_id_(params.session_storage_namespace_id), 572 session_storage_namespace_id_(params.session_storage_namespace_id),
573 has_added_input_handler_(false) { 573 weak_ptr_factory_(this) {
574 GetWidget()->set_owner_delegate(this); 574 GetWidget()->set_owner_delegate(this);
575 } 575 }
576 576
577 void RenderViewImpl::Initialize( 577 void RenderViewImpl::Initialize(
578 const mojom::CreateViewParams& params, 578 const mojom::CreateViewParams& params,
579 const RenderWidget::ShowCallback& show_callback) { 579 const RenderWidget::ShowCallback& show_callback) {
580 bool was_created_by_renderer = !show_callback.is_null(); 580 bool was_created_by_renderer = !show_callback.is_null();
581 #if defined(OS_ANDROID) 581 #if defined(OS_ANDROID)
582 // TODO(sgurun): crbug.com/325351 Needed only for android webview's deprecated 582 // TODO(sgurun): crbug.com/325351 Needed only for android webview's deprecated
583 // HandleNavigation codepath. 583 // HandleNavigation codepath.
(...skipping 1245 matching lines...) Expand 10 before | Expand all | Expand 10 after
1829 bool event_cancelled) { 1829 bool event_cancelled) {
1830 RenderWidget::didHandleGestureEvent(event, event_cancelled); 1830 RenderWidget::didHandleGestureEvent(event, event_cancelled);
1831 1831
1832 if (!event_cancelled) { 1832 if (!event_cancelled) {
1833 for (auto& observer : observers_) 1833 for (auto& observer : observers_)
1834 observer.DidHandleGestureEvent(event); 1834 observer.DidHandleGestureEvent(event);
1835 } 1835 }
1836 } 1836 }
1837 1837
1838 blink::WebLayerTreeView* RenderViewImpl::initializeLayerTreeView() { 1838 blink::WebLayerTreeView* RenderViewImpl::initializeLayerTreeView() {
1839 blink::WebLayerTreeView* ltv = RenderWidget::initializeLayerTreeView(); 1839 // TODO(!wjmaclean): We should be able to just remove this function, and
1840 RenderWidgetCompositor* rwc = compositor(); 1840 // expect the RenderWidget version of the function to be called instead.
1841 if (!rwc) 1841 // However, we have a diamond inheritance pattern going on:
1842 return ltv; 1842 // WebWidgetClient
1843 1843 // | |
1844 RenderThreadImpl* render_thread = RenderThreadImpl::current(); 1844 // RenderWidget WebViewClient
1845 // render_thread may be NULL in tests. 1845 // | |
1846 InputHandlerManager* input_handler_manager = 1846 // RenderViewImpl
1847 render_thread ? render_thread->input_handler_manager() : NULL; 1847 //
1848 if (input_handler_manager) { 1848 // and this seems to prefer calling the empty version in WebWidgetClient
1849 input_handler_manager->AddInputHandler( 1849 // or WebViewClient over the non-empty one in RenderWidget.
1850 GetRoutingID(), rwc->GetInputHandler(), AsWeakPtr(), 1850 return RenderWidget::initializeLayerTreeView();
1851 webkit_preferences_.enable_scroll_animator);
1852 has_added_input_handler_ = true;
1853 }
1854 return ltv;
1855 } 1851 }
1856 1852
1857 void RenderViewImpl::closeWidgetSoon() { 1853 void RenderViewImpl::closeWidgetSoon() {
1858 RenderWidget::closeWidgetSoon(); 1854 RenderWidget::closeWidgetSoon();
1859 } 1855 }
1860 1856
1861 void RenderViewImpl::convertViewportToWindow(blink::WebRect* rect) { 1857 void RenderViewImpl::convertViewportToWindow(blink::WebRect* rect) {
1862 RenderWidget::convertViewportToWindow(rect); 1858 RenderWidget::convertViewportToWindow(rect);
1863 } 1859 }
1864 1860
(...skipping 603 matching lines...) Expand 10 before | Expand all | Expand 10 after
2468 return intent; 2464 return intent;
2469 } 2465 }
2470 } 2466 }
2471 return WebURL(); 2467 return WebURL();
2472 } 2468 }
2473 2469
2474 void RenderViewImpl::scheduleContentIntent(const WebURL& intent, 2470 void RenderViewImpl::scheduleContentIntent(const WebURL& intent,
2475 bool is_main_frame) { 2471 bool is_main_frame) {
2476 // Introduce a short delay so that the user can notice the content. 2472 // Introduce a short delay so that the user can notice the content.
2477 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( 2473 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
2478 FROM_HERE, 2474 FROM_HERE, base::Bind(&RenderViewImpl::LaunchAndroidContentIntent,
2479 base::Bind(&RenderViewImpl::LaunchAndroidContentIntent, AsWeakPtr(), 2475 weak_ptr_factory_.GetWeakPtr(), intent,
2480 intent, expected_content_intent_id_, is_main_frame), 2476 expected_content_intent_id_, is_main_frame),
2481 base::TimeDelta::FromMilliseconds(kContentIntentDelayMilliseconds)); 2477 base::TimeDelta::FromMilliseconds(kContentIntentDelayMilliseconds));
2482 } 2478 }
2483 2479
2484 void RenderViewImpl::cancelScheduledContentIntents() { 2480 void RenderViewImpl::cancelScheduledContentIntents() {
2485 ++expected_content_intent_id_; 2481 ++expected_content_intent_id_;
2486 } 2482 }
2487 2483
2488 void RenderViewImpl::LaunchAndroidContentIntent(const GURL& intent, 2484 void RenderViewImpl::LaunchAndroidContentIntent(const GURL& intent,
2489 size_t request_id, 2485 size_t request_id,
2490 bool is_main_frame) { 2486 bool is_main_frame) {
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
2733 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 2729 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
2734 } 2730 }
2735 2731
2736 std::unique_ptr<InputEventAck> ack( 2732 std::unique_ptr<InputEventAck> ack(
2737 new InputEventAck(InputEventAckSource::MAIN_THREAD, input_event->type, 2733 new InputEventAck(InputEventAckSource::MAIN_THREAD, input_event->type,
2738 INPUT_EVENT_ACK_STATE_NOT_CONSUMED)); 2734 INPUT_EVENT_ACK_STATE_NOT_CONSUMED));
2739 OnInputEventAck(std::move(ack)); 2735 OnInputEventAck(std::move(ack));
2740 } 2736 }
2741 2737
2742 } // namespace content 2738 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698