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 | 9 |
10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
64 #include "content/public/common/url_constants.h" | 64 #include "content/public/common/url_constants.h" |
65 #include "content/public/common/url_utils.h" | 65 #include "content/public/common/url_utils.h" |
66 #include "content/public/common/web_preferences.h" | 66 #include "content/public/common/web_preferences.h" |
67 #include "content/public/renderer/content_renderer_client.h" | 67 #include "content/public/renderer/content_renderer_client.h" |
68 #include "content/public/renderer/document_state.h" | 68 #include "content/public/renderer/document_state.h" |
69 #include "content/public/renderer/navigation_state.h" | 69 #include "content/public/renderer/navigation_state.h" |
70 #include "content/public/renderer/render_view_observer.h" | 70 #include "content/public/renderer/render_view_observer.h" |
71 #include "content/public/renderer/render_view_visitor.h" | 71 #include "content/public/renderer/render_view_visitor.h" |
72 #include "content/renderer/browser_plugin/browser_plugin.h" | 72 #include "content/renderer/browser_plugin/browser_plugin.h" |
73 #include "content/renderer/browser_plugin/browser_plugin_manager.h" | 73 #include "content/renderer/browser_plugin/browser_plugin_manager.h" |
74 #include "content/renderer/devtools/devtools_agent.h" | |
75 #include "content/renderer/disambiguation_popup_helper.h" | 74 #include "content/renderer/disambiguation_popup_helper.h" |
76 #include "content/renderer/dom_storage/webstoragenamespace_impl.h" | 75 #include "content/renderer/dom_storage/webstoragenamespace_impl.h" |
77 #include "content/renderer/drop_data_builder.h" | 76 #include "content/renderer/drop_data_builder.h" |
78 #include "content/renderer/gpu/render_widget_compositor.h" | 77 #include "content/renderer/gpu/render_widget_compositor.h" |
79 #include "content/renderer/history_controller.h" | 78 #include "content/renderer/history_controller.h" |
80 #include "content/renderer/history_serialization.h" | 79 #include "content/renderer/history_serialization.h" |
81 #include "content/renderer/idle_user_detector.h" | 80 #include "content/renderer/idle_user_detector.h" |
82 #include "content/renderer/ime_event_guard.h" | 81 #include "content/renderer/ime_event_guard.h" |
83 #include "content/renderer/input/input_handler_manager.h" | 82 #include "content/renderer/input/input_handler_manager.h" |
84 #include "content/renderer/internal_document_state_data.h" | 83 #include "content/renderer/internal_document_state_data.h" |
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
409 | 408 |
410 static void ConvertToFaviconSizes( | 409 static void ConvertToFaviconSizes( |
411 const blink::WebVector<blink::WebSize>& web_sizes, | 410 const blink::WebVector<blink::WebSize>& web_sizes, |
412 std::vector<gfx::Size>* sizes) { | 411 std::vector<gfx::Size>* sizes) { |
413 DCHECK(sizes->empty()); | 412 DCHECK(sizes->empty()); |
414 sizes->reserve(web_sizes.size()); | 413 sizes->reserve(web_sizes.size()); |
415 for (size_t i = 0; i < web_sizes.size(); ++i) | 414 for (size_t i = 0; i < web_sizes.size(); ++i) |
416 sizes->push_back(gfx::Size(web_sizes[i])); | 415 sizes->push_back(gfx::Size(web_sizes[i])); |
417 } | 416 } |
418 | 417 |
418 static blink::WebDevToolsAgent* GetWebDevToolsAgent(WebView* webview) { | |
419 if (!webview || !webview->mainFrame()->isWebLocalFrame()) | |
420 return nullptr; | |
421 return webview->mainFrame()->toWebLocalFrame()->devToolsAgent(); | |
422 } | |
423 | |
419 /////////////////////////////////////////////////////////////////////////////// | 424 /////////////////////////////////////////////////////////////////////////////// |
420 | 425 |
421 struct RenderViewImpl::PendingFileChooser { | 426 struct RenderViewImpl::PendingFileChooser { |
422 PendingFileChooser(const FileChooserParams& p, WebFileChooserCompletion* c) | 427 PendingFileChooser(const FileChooserParams& p, WebFileChooserCompletion* c) |
423 : params(p), | 428 : params(p), |
424 completion(c) { | 429 completion(c) { |
425 } | 430 } |
426 FileChooserParams params; | 431 FileChooserParams params; |
427 WebFileChooserCompletion* completion; // MAY BE NULL to skip callback. | 432 WebFileChooserCompletion* completion; // MAY BE NULL to skip callback. |
428 }; | 433 }; |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
630 history_list_offset_(-1), | 635 history_list_offset_(-1), |
631 history_list_length_(0), | 636 history_list_length_(0), |
632 frames_in_progress_(0), | 637 frames_in_progress_(0), |
633 target_url_status_(TARGET_NONE), | 638 target_url_status_(TARGET_NONE), |
634 uses_temporary_zoom_level_(false), | 639 uses_temporary_zoom_level_(false), |
635 #if defined(OS_ANDROID) | 640 #if defined(OS_ANDROID) |
636 top_controls_constraints_(TOP_CONTROLS_STATE_BOTH), | 641 top_controls_constraints_(TOP_CONTROLS_STATE_BOTH), |
637 #endif | 642 #endif |
638 has_scrolled_focused_editable_node_into_rect_(false), | 643 has_scrolled_focused_editable_node_into_rect_(false), |
639 speech_recognition_dispatcher_(NULL), | 644 speech_recognition_dispatcher_(NULL), |
640 devtools_agent_(NULL), | |
641 mouse_lock_dispatcher_(NULL), | 645 mouse_lock_dispatcher_(NULL), |
642 #if defined(OS_ANDROID) | 646 #if defined(OS_ANDROID) |
643 expected_content_intent_id_(0), | 647 expected_content_intent_id_(0), |
644 #endif | 648 #endif |
645 #if defined(OS_WIN) | 649 #if defined(OS_WIN) |
646 focused_plugin_id_(-1), | 650 focused_plugin_id_(-1), |
647 #endif | 651 #endif |
648 #if defined(ENABLE_PLUGINS) | 652 #if defined(ENABLE_PLUGINS) |
649 plugin_find_handler_(NULL), | 653 plugin_find_handler_(NULL), |
650 focused_pepper_plugin_(NULL), | 654 focused_pepper_plugin_(NULL), |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
740 | 744 |
741 // In --site-per-process, just use the WebRemoteFrame as the main frame. | 745 // In --site-per-process, just use the WebRemoteFrame as the main frame. |
742 if (command_line.HasSwitch(switches::kSitePerProcess) && proxy) { | 746 if (command_line.HasSwitch(switches::kSitePerProcess) && proxy) { |
743 webview()->setMainFrame(proxy->web_frame()); | 747 webview()->setMainFrame(proxy->web_frame()); |
744 // Initialize the WebRemoteFrame with information replicated from the | 748 // Initialize the WebRemoteFrame with information replicated from the |
745 // browser process. | 749 // browser process. |
746 proxy->SetReplicatedState(params.replicated_frame_state); | 750 proxy->SetReplicatedState(params.replicated_frame_state); |
747 } else { | 751 } else { |
748 webview()->setMainFrame(main_render_frame_->GetWebFrame()); | 752 webview()->setMainFrame(main_render_frame_->GetWebFrame()); |
749 } | 753 } |
754 // Here we have |main_render_frame_|, which does not really have blink::Frame | |
755 // instance inside, and creating DevToolsAgent fails with assertions. | |
756 // This happens because WebView receives WebRemoteFrame as a main frame, | |
757 // but |main_render_frame_| still points to WebLocalFrame instance. | |
750 main_render_frame_->Initialize(); | 758 main_render_frame_->Initialize(); |
dgozman
2015/03/25 16:25:50
This causes crash for me. See comment above. Any i
| |
751 | 759 |
752 if (switches::IsTouchDragDropEnabled()) | 760 if (switches::IsTouchDragDropEnabled()) |
753 webview()->settings()->setTouchDragDropEnabled(true); | 761 webview()->settings()->setTouchDragDropEnabled(true); |
754 | 762 |
755 if (switches::IsTouchEditingEnabled()) | 763 if (switches::IsTouchEditingEnabled()) |
756 webview()->settings()->setTouchEditingEnabled(true); | 764 webview()->settings()->setTouchEditingEnabled(true); |
757 | 765 |
758 if (!params.frame_name.empty()) | 766 if (!params.frame_name.empty()) |
759 webview()->mainFrame()->setName(params.frame_name); | 767 webview()->mainFrame()->setName(params.frame_name); |
760 | 768 |
761 // TODO(davidben): Move this state from Blink into content. | 769 // TODO(davidben): Move this state from Blink into content. |
762 if (params.window_was_created_with_opener) | 770 if (params.window_was_created_with_opener) |
763 webview()->setOpenedByDOM(); | 771 webview()->setOpenedByDOM(); |
764 | 772 |
765 OnSetRendererPrefs(params.renderer_preferences); | 773 OnSetRendererPrefs(params.renderer_preferences); |
766 | 774 |
767 if (!params.enable_auto_resize) { | 775 if (!params.enable_auto_resize) { |
768 OnResize(params.initial_size); | 776 OnResize(params.initial_size); |
769 } else { | 777 } else { |
770 OnEnableAutoResize(params.min_size, params.max_size); | 778 OnEnableAutoResize(params.min_size, params.max_size); |
771 } | 779 } |
772 | 780 |
773 new MHTMLGenerator(this); | 781 new MHTMLGenerator(this); |
774 #if defined(OS_MACOSX) | 782 #if defined(OS_MACOSX) |
775 new TextInputClientObserver(this); | 783 new TextInputClientObserver(this); |
776 #endif // defined(OS_MACOSX) | 784 #endif // defined(OS_MACOSX) |
777 | 785 |
786 // TODO(dgozman): do this not for main frame, but for local frame roots. | |
787 if (blink::WebDevToolsAgent* devToolsAgent = GetWebDevToolsAgent(webview())) { | |
788 if (RenderWidgetCompositor* rwc = compositor()) | |
789 devToolsAgent->setLayerTreeId(rwc->GetLayerTreeId()); | |
790 } | |
791 | |
778 // The next group of objects all implement RenderViewObserver, so are deleted | 792 // The next group of objects all implement RenderViewObserver, so are deleted |
779 // along with the RenderView automatically. | 793 // along with the RenderView automatically. |
780 if (!proxy) { | |
781 devtools_agent_ = new DevToolsAgent(main_render_frame_.get()); | |
782 if (RenderWidgetCompositor* rwc = compositor()) | |
783 webview()->devToolsAgent()->setLayerTreeId(rwc->GetLayerTreeId()); | |
784 } | |
785 | |
786 mouse_lock_dispatcher_ = new RenderViewMouseLockDispatcher(this); | 794 mouse_lock_dispatcher_ = new RenderViewMouseLockDispatcher(this); |
787 | 795 |
788 history_controller_.reset(new HistoryController(this)); | 796 history_controller_.reset(new HistoryController(this)); |
789 | 797 |
790 new IdleUserDetector(this); | 798 new IdleUserDetector(this); |
791 | 799 |
792 if (command_line.HasSwitch(switches::kDomAutomationController)) | 800 if (command_line.HasSwitch(switches::kDomAutomationController)) |
793 enabled_bindings_ |= BINDINGS_POLICY_DOM_AUTOMATION; | 801 enabled_bindings_ |= BINDINGS_POLICY_DOM_AUTOMATION; |
794 if (command_line.HasSwitch(switches::kStatsCollectionController)) | 802 if (command_line.HasSwitch(switches::kStatsCollectionController)) |
795 enabled_bindings_ |= BINDINGS_POLICY_STATS_COLLECTION; | 803 enabled_bindings_ |= BINDINGS_POLICY_STATS_COLLECTION; |
(...skipping 1218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2014 Send(new ViewHostMsg_FocusedNodeTouched( | 2022 Send(new ViewHostMsg_FocusedNodeTouched( |
2015 routing_id(), text_input_type != blink::WebTextInputTypeNone)); | 2023 routing_id(), text_input_type != blink::WebTextInputTypeNone)); |
2016 #endif | 2024 #endif |
2017 } | 2025 } |
2018 | 2026 |
2019 void RenderViewImpl::initializeLayerTreeView() { | 2027 void RenderViewImpl::initializeLayerTreeView() { |
2020 RenderWidget::initializeLayerTreeView(); | 2028 RenderWidget::initializeLayerTreeView(); |
2021 RenderWidgetCompositor* rwc = compositor(); | 2029 RenderWidgetCompositor* rwc = compositor(); |
2022 if (!rwc) | 2030 if (!rwc) |
2023 return; | 2031 return; |
2024 if (webview() && webview()->devToolsAgent()) | 2032 // TODO(dgozman): do this not for main frame, but for local frame roots. |
2025 webview()->devToolsAgent()->setLayerTreeId(rwc->GetLayerTreeId()); | 2033 if (blink::WebDevToolsAgent* devToolsAgent = GetWebDevToolsAgent(webview())) |
2034 devToolsAgent->setLayerTreeId(rwc->GetLayerTreeId()); | |
2026 | 2035 |
2027 bool use_threaded_event_handling = true; | 2036 bool use_threaded_event_handling = true; |
2028 #if defined(OS_MACOSX) && !defined(OS_IOS) | 2037 #if defined(OS_MACOSX) && !defined(OS_IOS) |
2029 // Disable threaded event handling if content is not handling the elastic | 2038 // Disable threaded event handling if content is not handling the elastic |
2030 // overscroll effect. This includes the cases where the elastic overscroll | 2039 // overscroll effect. This includes the cases where the elastic overscroll |
2031 // effect is being handled by Blink (because of command line flags) and older | 2040 // effect is being handled by Blink (because of command line flags) and older |
2032 // operating system versions which do not have an elastic overscroll effect | 2041 // operating system versions which do not have an elastic overscroll effect |
2033 // (SnowLeopard, which has Aqua scrollbars which need synchronous updates). | 2042 // (SnowLeopard, which has Aqua scrollbars which need synchronous updates). |
2034 use_threaded_event_handling = compositor_deps_->IsElasticOverscrollEnabled(); | 2043 use_threaded_event_handling = compositor_deps_->IsElasticOverscrollEnabled(); |
2035 #endif | 2044 #endif |
(...skipping 1927 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3963 std::vector<gfx::Size> sizes; | 3972 std::vector<gfx::Size> sizes; |
3964 ConvertToFaviconSizes(icon_urls[i].sizes(), &sizes); | 3973 ConvertToFaviconSizes(icon_urls[i].sizes(), &sizes); |
3965 if (!url.isEmpty()) | 3974 if (!url.isEmpty()) |
3966 urls.push_back( | 3975 urls.push_back( |
3967 FaviconURL(url, ToFaviconType(icon_urls[i].iconType()), sizes)); | 3976 FaviconURL(url, ToFaviconType(icon_urls[i].iconType()), sizes)); |
3968 } | 3977 } |
3969 SendUpdateFaviconURL(urls); | 3978 SendUpdateFaviconURL(urls); |
3970 } | 3979 } |
3971 | 3980 |
3972 } // namespace content | 3981 } // namespace content |
OLD | NEW |