OLD | NEW |
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 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
85 #include "content/renderer/ime_event_guard.h" | 85 #include "content/renderer/ime_event_guard.h" |
86 #include "content/renderer/input/input_handler_manager.h" | 86 #include "content/renderer/input/input_handler_manager.h" |
87 #include "content/renderer/internal_document_state_data.h" | 87 #include "content/renderer/internal_document_state_data.h" |
88 #include "content/renderer/media/audio_device_factory.h" | 88 #include "content/renderer/media/audio_device_factory.h" |
89 #include "content/renderer/media/video_capture_impl_manager.h" | 89 #include "content/renderer/media/video_capture_impl_manager.h" |
90 #include "content/renderer/navigation_state_impl.h" | 90 #include "content/renderer/navigation_state_impl.h" |
91 #include "content/renderer/render_frame_impl.h" | 91 #include "content/renderer/render_frame_impl.h" |
92 #include "content/renderer/render_frame_proxy.h" | 92 #include "content/renderer/render_frame_proxy.h" |
93 #include "content/renderer/render_process.h" | 93 #include "content/renderer/render_process.h" |
94 #include "content/renderer/render_thread_impl.h" | 94 #include "content/renderer/render_thread_impl.h" |
95 #include "content/renderer/render_view_mouse_lock_dispatcher.h" | |
96 #include "content/renderer/render_widget_fullscreen_pepper.h" | 95 #include "content/renderer/render_widget_fullscreen_pepper.h" |
97 #include "content/renderer/renderer_webapplicationcachehost_impl.h" | 96 #include "content/renderer/renderer_webapplicationcachehost_impl.h" |
98 #include "content/renderer/resizing_mode_selector.h" | 97 #include "content/renderer/resizing_mode_selector.h" |
99 #include "content/renderer/savable_resources.h" | 98 #include "content/renderer/savable_resources.h" |
100 #include "content/renderer/speech_recognition_dispatcher.h" | 99 #include "content/renderer/speech_recognition_dispatcher.h" |
101 #include "content/renderer/text_input_client_observer.h" | 100 #include "content/renderer/text_input_client_observer.h" |
102 #include "content/renderer/web_ui_extension_data.h" | 101 #include "content/renderer/web_ui_extension_data.h" |
103 #include "content/renderer/websharedworker_proxy.h" | 102 #include "content/renderer/websharedworker_proxy.h" |
104 #include "media/audio/audio_output_device.h" | 103 #include "media/audio/audio_output_device.h" |
105 #include "media/base/media_switches.h" | 104 #include "media/base/media_switches.h" |
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
396 PendingFileChooser(const FileChooserParams& p, WebFileChooserCompletion* c) | 395 PendingFileChooser(const FileChooserParams& p, WebFileChooserCompletion* c) |
397 : params(p), | 396 : params(p), |
398 completion(c) { | 397 completion(c) { |
399 } | 398 } |
400 FileChooserParams params; | 399 FileChooserParams params; |
401 WebFileChooserCompletion* completion; // MAY BE NULL to skip callback. | 400 WebFileChooserCompletion* completion; // MAY BE NULL to skip callback. |
402 }; | 401 }; |
403 | 402 |
404 namespace { | 403 namespace { |
405 | 404 |
406 class WebWidgetLockTarget : public MouseLockDispatcher::LockTarget { | |
407 public: | |
408 explicit WebWidgetLockTarget(blink::WebWidget* webwidget) | |
409 : webwidget_(webwidget) {} | |
410 | |
411 void OnLockMouseACK(bool succeeded) override { | |
412 if (succeeded) | |
413 webwidget_->didAcquirePointerLock(); | |
414 else | |
415 webwidget_->didNotAcquirePointerLock(); | |
416 } | |
417 | |
418 void OnMouseLockLost() override { webwidget_->didLosePointerLock(); } | |
419 | |
420 bool HandleMouseLockedInputEvent(const blink::WebMouseEvent& event) override { | |
421 // The WebWidget handles mouse lock in WebKit's handleInputEvent(). | |
422 return false; | |
423 } | |
424 | |
425 private: | |
426 blink::WebWidget* webwidget_; | |
427 }; | |
428 | |
429 WebDragData DropDataToWebDragData(const DropData& drop_data) { | 405 WebDragData DropDataToWebDragData(const DropData& drop_data) { |
430 std::vector<WebDragData::Item> item_list; | 406 std::vector<WebDragData::Item> item_list; |
431 | 407 |
432 // These fields are currently unused when dragging into WebKit. | 408 // These fields are currently unused when dragging into WebKit. |
433 DCHECK(drop_data.download_metadata.empty()); | 409 DCHECK(drop_data.download_metadata.empty()); |
434 DCHECK(drop_data.file_contents.empty()); | 410 DCHECK(drop_data.file_contents.empty()); |
435 DCHECK(drop_data.file_description_filename.empty()); | 411 DCHECK(drop_data.file_description_filename.empty()); |
436 | 412 |
437 if (!drop_data.text.is_null()) { | 413 if (!drop_data.text.is_null()) { |
438 WebDragData::Item item; | 414 WebDragData::Item item; |
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
647 top_controls_constraints_(TOP_CONTROLS_STATE_BOTH), | 623 top_controls_constraints_(TOP_CONTROLS_STATE_BOTH), |
648 #endif | 624 #endif |
649 top_controls_shrink_blink_size_(false), | 625 top_controls_shrink_blink_size_(false), |
650 top_controls_height_(0.f), | 626 top_controls_height_(0.f), |
651 webview_(nullptr), | 627 webview_(nullptr), |
652 has_scrolled_focused_editable_node_into_rect_(false), | 628 has_scrolled_focused_editable_node_into_rect_(false), |
653 page_zoom_level_(params.page_zoom_level), | 629 page_zoom_level_(params.page_zoom_level), |
654 main_render_frame_(nullptr), | 630 main_render_frame_(nullptr), |
655 frame_widget_(nullptr), | 631 frame_widget_(nullptr), |
656 speech_recognition_dispatcher_(NULL), | 632 speech_recognition_dispatcher_(NULL), |
657 mouse_lock_dispatcher_(NULL), | |
658 #if defined(OS_ANDROID) | 633 #if defined(OS_ANDROID) |
659 expected_content_intent_id_(0), | 634 expected_content_intent_id_(0), |
660 #endif | 635 #endif |
661 enumeration_completion_id_(0), | 636 enumeration_completion_id_(0), |
662 session_storage_namespace_id_(params.session_storage_namespace_id) { | 637 session_storage_namespace_id_(params.session_storage_namespace_id) { |
663 GetWidget()->set_owner_delegate(this); | 638 GetWidget()->set_owner_delegate(this); |
664 } | 639 } |
665 | 640 |
666 void RenderViewImpl::Initialize(const ViewMsg_New_Params& params, | 641 void RenderViewImpl::Initialize(const ViewMsg_New_Params& params, |
667 bool was_created_by_renderer) { | 642 bool was_created_by_renderer) { |
668 SetRoutingID(params.view_id); | 643 SetRoutingID(params.view_id); |
669 | 644 |
670 int opener_view_routing_id; | 645 int opener_view_routing_id; |
671 WebFrame* opener_frame = RenderFrameImpl::ResolveOpener( | 646 WebFrame* opener_frame = RenderFrameImpl::ResolveOpener( |
672 params.opener_frame_route_id, &opener_view_routing_id); | 647 params.opener_frame_route_id, &opener_view_routing_id); |
673 if (opener_view_routing_id != MSG_ROUTING_NONE && was_created_by_renderer) | 648 if (opener_view_routing_id != MSG_ROUTING_NONE && was_created_by_renderer) |
674 opener_id_ = opener_view_routing_id; | 649 opener_id_ = opener_view_routing_id; |
675 | 650 |
676 display_mode_ = params.initial_size.display_mode; | 651 display_mode_ = params.initial_size.display_mode; |
677 | 652 |
678 // Ensure we start with a valid next_page_id_ from the browser. | 653 // Ensure we start with a valid next_page_id_ from the browser. |
679 DCHECK_GE(next_page_id_, 0); | 654 DCHECK_GE(next_page_id_, 0); |
680 | 655 |
681 webview_ = WebView::create(this); | 656 webview_ = WebView::create(this); |
682 webwidget_ = webview_->widget(); | 657 RenderWidget::DoInit(MSG_ROUTING_NONE, webview_->widget(), nullptr, false); |
683 webwidget_mouse_lock_target_.reset(new WebWidgetLockTarget(webwidget_)); | |
684 | 658 |
685 g_view_map.Get().insert(std::make_pair(webview(), this)); | 659 g_view_map.Get().insert(std::make_pair(webview(), this)); |
686 g_routing_id_view_map.Get().insert(std::make_pair(GetRoutingID(), this)); | 660 g_routing_id_view_map.Get().insert(std::make_pair(GetRoutingID(), this)); |
687 | 661 |
688 const base::CommandLine& command_line = | 662 const base::CommandLine& command_line = |
689 *base::CommandLine::ForCurrentProcess(); | 663 *base::CommandLine::ForCurrentProcess(); |
690 | 664 |
691 if (command_line.HasSwitch(switches::kStatsCollectionController)) | 665 if (command_line.HasSwitch(switches::kStatsCollectionController)) |
692 stats_collection_observer_.reset(new StatsCollectionObserver(this)); | 666 stats_collection_observer_.reset(new StatsCollectionObserver(this)); |
693 | 667 |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
801 if (!params.enable_auto_resize) { | 775 if (!params.enable_auto_resize) { |
802 OnResize(params.initial_size); | 776 OnResize(params.initial_size); |
803 } else { | 777 } else { |
804 OnEnableAutoResize(params.min_size, params.max_size); | 778 OnEnableAutoResize(params.min_size, params.max_size); |
805 } | 779 } |
806 | 780 |
807 #if defined(OS_MACOSX) | 781 #if defined(OS_MACOSX) |
808 new TextInputClientObserver(this); | 782 new TextInputClientObserver(this); |
809 #endif // defined(OS_MACOSX) | 783 #endif // defined(OS_MACOSX) |
810 | 784 |
811 // The next group of objects all implement RenderViewObserver, so are deleted | |
812 // along with the RenderView automatically. | |
813 mouse_lock_dispatcher_ = new RenderViewMouseLockDispatcher(this); | |
814 | |
815 // We don't use HistoryController in OOPIF-enabled modes. | 785 // We don't use HistoryController in OOPIF-enabled modes. |
816 if (!SiteIsolationPolicy::UseSubframeNavigationEntries()) | 786 if (!SiteIsolationPolicy::UseSubframeNavigationEntries()) |
817 history_controller_.reset(new HistoryController(this)); | 787 history_controller_.reset(new HistoryController(this)); |
818 | 788 |
819 new IdleUserDetector(this); | 789 new IdleUserDetector(this); |
820 | 790 |
821 if (command_line.HasSwitch(switches::kDomAutomationController)) | 791 if (command_line.HasSwitch(switches::kDomAutomationController)) |
822 enabled_bindings_ |= BINDINGS_POLICY_DOM_AUTOMATION; | 792 enabled_bindings_ |= BINDINGS_POLICY_DOM_AUTOMATION; |
823 if (command_line.HasSwitch(switches::kStatsCollectionController)) | 793 if (command_line.HasSwitch(switches::kStatsCollectionController)) |
824 enabled_bindings_ |= BINDINGS_POLICY_STATS_COLLECTION; | 794 enabled_bindings_ |= BINDINGS_POLICY_STATS_COLLECTION; |
(...skipping 1159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1984 | 1954 |
1985 // NOTE: initial_rect_ may still have its default values at this point, but | 1955 // NOTE: initial_rect_ may still have its default values at this point, but |
1986 // that's okay. It'll be ignored if disposition is not NEW_POPUP, or the | 1956 // that's okay. It'll be ignored if disposition is not NEW_POPUP, or the |
1987 // browser process will impose a default position otherwise. | 1957 // browser process will impose a default position otherwise. |
1988 Send(new ViewHostMsg_ShowView(opener_id_, GetRoutingID(), | 1958 Send(new ViewHostMsg_ShowView(opener_id_, GetRoutingID(), |
1989 NavigationPolicyToDisposition(policy), | 1959 NavigationPolicyToDisposition(policy), |
1990 initial_rect_, opened_by_user_gesture_)); | 1960 initial_rect_, opened_by_user_gesture_)); |
1991 SetPendingWindowRect(initial_rect_); | 1961 SetPendingWindowRect(initial_rect_); |
1992 } | 1962 } |
1993 | 1963 |
1994 bool RenderViewImpl::requestPointerLock() { | |
1995 return mouse_lock_dispatcher_->LockMouse(webwidget_mouse_lock_target_.get()); | |
1996 } | |
1997 | |
1998 void RenderViewImpl::requestPointerUnlock() { | |
1999 mouse_lock_dispatcher_->UnlockMouse(webwidget_mouse_lock_target_.get()); | |
2000 } | |
2001 | |
2002 bool RenderViewImpl::isPointerLocked() { | |
2003 return mouse_lock_dispatcher_->IsMouseLockedTo( | |
2004 webwidget_mouse_lock_target_.get()); | |
2005 } | |
2006 | |
2007 void RenderViewImpl::onMouseDown(const WebNode& mouse_down_node) { | 1964 void RenderViewImpl::onMouseDown(const WebNode& mouse_down_node) { |
2008 FOR_EACH_OBSERVER( | 1965 FOR_EACH_OBSERVER( |
2009 RenderViewObserver, observers_, OnMouseDown(mouse_down_node)); | 1966 RenderViewObserver, observers_, OnMouseDown(mouse_down_node)); |
2010 } | 1967 } |
2011 | 1968 |
2012 void RenderViewImpl::didHandleGestureEvent( | 1969 void RenderViewImpl::didHandleGestureEvent( |
2013 const WebGestureEvent& event, | 1970 const WebGestureEvent& event, |
2014 bool event_cancelled) { | 1971 bool event_cancelled) { |
2015 RenderWidget::didHandleGestureEvent(event, event_cancelled); | 1972 RenderWidget::didHandleGestureEvent(event, event_cancelled); |
2016 | 1973 |
(...skipping 1369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3386 return render_frame->focused_pepper_plugin(); | 3343 return render_frame->focused_pepper_plugin(); |
3387 } | 3344 } |
3388 frame = frame->traverseNext(false); | 3345 frame = frame->traverseNext(false); |
3389 } | 3346 } |
3390 | 3347 |
3391 return nullptr; | 3348 return nullptr; |
3392 } | 3349 } |
3393 #endif | 3350 #endif |
3394 | 3351 |
3395 } // namespace content | 3352 } // namespace content |
OLD | NEW |