Chromium Code Reviews| 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 <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 55 #include "content/renderer/gpu/webgraphicscontext3d_command_buffer_impl.h" | 55 #include "content/renderer/gpu/webgraphicscontext3d_command_buffer_impl.h" |
| 56 #include "content/renderer/idle_user_detector.h" | 56 #include "content/renderer/idle_user_detector.h" |
| 57 #include "content/renderer/web_intents_host.h" | 57 #include "content/renderer/web_intents_host.h" |
| 58 #include "content/renderer/java/java_bridge_dispatcher.h" | 58 #include "content/renderer/java/java_bridge_dispatcher.h" |
| 59 #include "content/renderer/load_progress_tracker.h" | 59 #include "content/renderer/load_progress_tracker.h" |
| 60 #include "content/renderer/media/audio_message_filter.h" | 60 #include "content/renderer/media/audio_message_filter.h" |
| 61 #include "content/renderer/media/audio_renderer_impl.h" | 61 #include "content/renderer/media/audio_renderer_impl.h" |
| 62 #include "content/renderer/media/media_stream_impl.h" | 62 #include "content/renderer/media/media_stream_impl.h" |
| 63 #include "content/renderer/media/render_media_log.h" | 63 #include "content/renderer/media/render_media_log.h" |
| 64 #include "content/renderer/mhtml_generator.h" | 64 #include "content/renderer/mhtml_generator.h" |
| 65 #include "content/renderer/mouse_lock_dispatcher.h" | |
| 65 #include "content/renderer/notification_provider.h" | 66 #include "content/renderer/notification_provider.h" |
| 66 #include "content/renderer/p2p/socket_dispatcher.h" | 67 #include "content/renderer/p2p/socket_dispatcher.h" |
| 67 #include "content/renderer/plugin_channel_host.h" | 68 #include "content/renderer/plugin_channel_host.h" |
| 68 #include "content/renderer/render_audiosourceprovider.h" | 69 #include "content/renderer/render_audiosourceprovider.h" |
| 69 #include "content/renderer/render_process.h" | 70 #include "content/renderer/render_process.h" |
| 70 #include "content/renderer/render_thread_impl.h" | 71 #include "content/renderer/render_thread_impl.h" |
| 71 #include "content/renderer/render_widget_fullscreen_pepper.h" | 72 #include "content/renderer/render_widget_fullscreen_pepper.h" |
| 72 #include "content/renderer/renderer_accessibility.h" | 73 #include "content/renderer/renderer_accessibility.h" |
| 73 #include "content/renderer/renderer_gpu_video_decoder_factories.h" | 74 #include "content/renderer/renderer_gpu_video_decoder_factories.h" |
| 74 #include "content/renderer/renderer_webapplicationcachehost_impl.h" | 75 #include "content/renderer/renderer_webapplicationcachehost_impl.h" |
| (...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 354 cached_is_main_frame_pinned_to_right_(false), | 355 cached_is_main_frame_pinned_to_right_(false), |
| 355 cached_has_main_frame_horizontal_scrollbar_(false), | 356 cached_has_main_frame_horizontal_scrollbar_(false), |
| 356 cached_has_main_frame_vertical_scrollbar_(false), | 357 cached_has_main_frame_vertical_scrollbar_(false), |
| 357 ALLOW_THIS_IN_INITIALIZER_LIST(cookie_jar_(this)), | 358 ALLOW_THIS_IN_INITIALIZER_LIST(cookie_jar_(this)), |
| 358 geolocation_dispatcher_(NULL), | 359 geolocation_dispatcher_(NULL), |
| 359 speech_input_dispatcher_(NULL), | 360 speech_input_dispatcher_(NULL), |
| 360 device_orientation_dispatcher_(NULL), | 361 device_orientation_dispatcher_(NULL), |
| 361 p2p_socket_dispatcher_(NULL), | 362 p2p_socket_dispatcher_(NULL), |
| 362 devtools_agent_(NULL), | 363 devtools_agent_(NULL), |
| 363 renderer_accessibility_(NULL), | 364 renderer_accessibility_(NULL), |
| 365 mouse_lock_dispatcher_(NULL), | |
| 364 session_storage_namespace_id_(session_storage_namespace_id), | 366 session_storage_namespace_id_(session_storage_namespace_id), |
| 365 handling_select_range_(false), | 367 handling_select_range_(false), |
| 366 #if defined(OS_WIN) | 368 #if defined(OS_WIN) |
| 367 focused_plugin_id_(-1), | 369 focused_plugin_id_(-1), |
| 368 #endif | 370 #endif |
| 369 ALLOW_THIS_IN_INITIALIZER_LIST(pepper_delegate_(this)) { | 371 ALLOW_THIS_IN_INITIALIZER_LIST(pepper_delegate_(this)) { |
| 370 routing_id_ = routing_id; | 372 routing_id_ = routing_id; |
| 371 if (opener_id != MSG_ROUTING_NONE) | 373 if (opener_id != MSG_ROUTING_NONE) |
| 372 opener_id_ = opener_id; | 374 opener_id_ = opener_id; |
| 373 | 375 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 423 #endif | 425 #endif |
| 424 | 426 |
| 425 new MHTMLGenerator(this); | 427 new MHTMLGenerator(this); |
| 426 #if defined(OS_MACOSX) | 428 #if defined(OS_MACOSX) |
| 427 new TextInputClientObserver(this); | 429 new TextInputClientObserver(this); |
| 428 #endif // defined(OS_MACOSX) | 430 #endif // defined(OS_MACOSX) |
| 429 | 431 |
| 430 devtools_agent_ = new DevToolsAgent(this); | 432 devtools_agent_ = new DevToolsAgent(this); |
| 431 | 433 |
| 432 renderer_accessibility_ = new RendererAccessibility(this); | 434 renderer_accessibility_ = new RendererAccessibility(this); |
| 435 mouse_lock_dispatcher_ = new MouseLockDispatcher(this); | |
|
yzshen1
2012/01/12 19:49:25
- This is not 'lazily initialized' as the comment
scheib
2012/01/12 21:25:19
Fixed comment; cut paste error.
The object is a R
| |
| 433 | 436 |
| 434 new IdleUserDetector(this); | 437 new IdleUserDetector(this); |
| 435 | 438 |
| 436 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); | 439 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); |
| 437 if (command_line.HasSwitch(switches::kEnableMediaStream)) { | 440 if (command_line.HasSwitch(switches::kEnableMediaStream)) { |
| 438 media_stream_impl_ = new MediaStreamImpl( | 441 media_stream_impl_ = new MediaStreamImpl( |
| 439 RenderThreadImpl::current()->video_capture_impl_manager()); | 442 RenderThreadImpl::current()->video_capture_impl_manager()); |
| 440 } | 443 } |
| 441 | 444 |
| 442 content::GetContentClient()->renderer()->RenderViewCreated(this); | 445 content::GetContentClient()->renderer()->RenderViewCreated(this); |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 576 const std::string& mime_type, | 579 const std::string& mime_type, |
| 577 webkit::WebPluginInfo* plugin_info, | 580 webkit::WebPluginInfo* plugin_info, |
| 578 std::string* actual_mime_type) { | 581 std::string* actual_mime_type) { |
| 579 bool found = false; | 582 bool found = false; |
| 580 Send(new ViewHostMsg_GetPluginInfo( | 583 Send(new ViewHostMsg_GetPluginInfo( |
| 581 routing_id_, url, page_url, mime_type, &found, plugin_info, | 584 routing_id_, url, page_url, mime_type, &found, plugin_info, |
| 582 actual_mime_type)); | 585 actual_mime_type)); |
| 583 return found; | 586 return found; |
| 584 } | 587 } |
| 585 | 588 |
| 589 bool RenderViewImpl::PpapiLockMouse(webkit::ppapi::PluginInstance* pinstance) { | |
| 590 return mouse_lock_dispatcher_->LockMouse(NULL, pinstance); | |
| 591 } | |
| 592 | |
| 593 void RenderViewImpl::PpapiUnlockMouse( | |
| 594 webkit::ppapi::PluginInstance* pinstance) { | |
| 595 mouse_lock_dispatcher_->UnlockMouse(NULL, pinstance); | |
| 596 } | |
| 597 | |
| 598 bool RenderViewImpl::PpapiIsMouseLockedTo( | |
| 599 webkit::ppapi::PluginInstance* pinstance) { | |
| 600 return mouse_lock_dispatcher_->IsMouseLockedTo(pinstance); | |
| 601 } | |
| 602 | |
| 586 bool RenderViewImpl::OnMessageReceived(const IPC::Message& message) { | 603 bool RenderViewImpl::OnMessageReceived(const IPC::Message& message) { |
| 587 WebFrame* main_frame = webview() ? webview()->mainFrame() : NULL; | 604 WebFrame* main_frame = webview() ? webview()->mainFrame() : NULL; |
| 588 if (main_frame) | 605 if (main_frame) |
| 589 content::GetContentClient()->SetActiveURL(main_frame->document().url()); | 606 content::GetContentClient()->SetActiveURL(main_frame->document().url()); |
| 590 | 607 |
| 591 ObserverListBase<RenderViewObserver>::Iterator it(observers_); | 608 ObserverListBase<RenderViewObserver>::Iterator it(observers_); |
| 592 RenderViewObserver* observer; | 609 RenderViewObserver* observer; |
| 593 while ((observer = it.GetNext()) != NULL) | 610 while ((observer = it.GetNext()) != NULL) |
| 594 if (observer->OnMessageReceived(message)) | 611 if (observer->OnMessageReceived(message)) |
| 595 return true; | 612 return true; |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 688 // TODO(viettrungluu): Move to a separate message filter. | 705 // TODO(viettrungluu): Move to a separate message filter. |
| 689 #if defined(ENABLE_FLAPPER_HACKS) | 706 #if defined(ENABLE_FLAPPER_HACKS) |
| 690 IPC_MESSAGE_HANDLER(PepperMsg_ConnectTcpACK, OnConnectTcpACK) | 707 IPC_MESSAGE_HANDLER(PepperMsg_ConnectTcpACK, OnConnectTcpACK) |
| 691 #endif | 708 #endif |
| 692 #if defined(OS_MACOSX) | 709 #if defined(OS_MACOSX) |
| 693 IPC_MESSAGE_HANDLER(ViewMsg_SetInLiveResize, OnSetInLiveResize) | 710 IPC_MESSAGE_HANDLER(ViewMsg_SetInLiveResize, OnSetInLiveResize) |
| 694 #endif | 711 #endif |
| 695 IPC_MESSAGE_HANDLER(ViewMsg_SetHistoryLengthAndPrune, | 712 IPC_MESSAGE_HANDLER(ViewMsg_SetHistoryLengthAndPrune, |
| 696 OnSetHistoryLengthAndPrune) | 713 OnSetHistoryLengthAndPrune) |
| 697 IPC_MESSAGE_HANDLER(ViewMsg_EnableViewSourceMode, OnEnableViewSourceMode) | 714 IPC_MESSAGE_HANDLER(ViewMsg_EnableViewSourceMode, OnEnableViewSourceMode) |
| 698 IPC_MESSAGE_HANDLER(ViewMsg_LockMouse_ACK, OnLockMouseACK) | |
| 699 IPC_MESSAGE_HANDLER(ViewMsg_MouseLockLost, OnMouseLockLost) | |
| 700 IPC_MESSAGE_HANDLER(JavaBridgeMsg_Init, OnJavaBridgeInit) | 715 IPC_MESSAGE_HANDLER(JavaBridgeMsg_Init, OnJavaBridgeInit) |
| 701 | 716 |
| 702 // Have the super handle all other messages. | 717 // Have the super handle all other messages. |
| 703 IPC_MESSAGE_UNHANDLED(handled = RenderWidget::OnMessageReceived(message)) | 718 IPC_MESSAGE_UNHANDLED(handled = RenderWidget::OnMessageReceived(message)) |
| 704 IPC_END_MESSAGE_MAP() | 719 IPC_END_MESSAGE_MAP() |
| 705 | 720 |
| 706 if (!msg_is_ok) { | 721 if (!msg_is_ok) { |
| 707 // The message had a handler, but its deserialization failed. | 722 // The message had a handler, but its deserialization failed. |
| 708 // Kill the renderer to avoid potential spoofing attacks. | 723 // Kill the renderer to avoid potential spoofing attacks. |
| 709 CHECK(false) << "Unable to deserialize message in RenderViewImpl."; | 724 CHECK(false) << "Unable to deserialize message in RenderViewImpl."; |
| (...skipping 1156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1866 | 1881 |
| 1867 bool RenderViewImpl::enterFullScreen() { | 1882 bool RenderViewImpl::enterFullScreen() { |
| 1868 Send(new ViewHostMsg_ToggleFullscreen(routing_id_, true)); | 1883 Send(new ViewHostMsg_ToggleFullscreen(routing_id_, true)); |
| 1869 return true; | 1884 return true; |
| 1870 } | 1885 } |
| 1871 | 1886 |
| 1872 void RenderViewImpl::exitFullScreen() { | 1887 void RenderViewImpl::exitFullScreen() { |
| 1873 Send(new ViewHostMsg_ToggleFullscreen(routing_id_, false)); | 1888 Send(new ViewHostMsg_ToggleFullscreen(routing_id_, false)); |
| 1874 } | 1889 } |
| 1875 | 1890 |
| 1891 bool RenderViewImpl::pointerLock(WebKit::WebWidget* webwidget) { | |
| 1892 return mouse_lock_dispatcher_->LockMouse(webwidget, NULL); | |
| 1893 } | |
| 1894 | |
| 1895 void RenderViewImpl::pointerUnlock(WebKit::WebWidget* webwidget) { | |
| 1896 mouse_lock_dispatcher_->UnlockMouse(webwidget, NULL); | |
| 1897 } | |
| 1898 | |
| 1899 bool RenderViewImpl::isPointerLockedTo(WebKit::WebWidget* webwidget) { | |
| 1900 return mouse_lock_dispatcher_->IsPointerLockedTo(webwidget); | |
| 1901 } | |
| 1902 | |
| 1876 // WebKit::WebFrameClient ----------------------------------------------------- | 1903 // WebKit::WebFrameClient ----------------------------------------------------- |
| 1877 | 1904 |
| 1878 WebPlugin* RenderViewImpl::createPlugin(WebFrame* frame, | 1905 WebPlugin* RenderViewImpl::createPlugin(WebFrame* frame, |
| 1879 const WebPluginParams& params) { | 1906 const WebPluginParams& params) { |
| 1880 WebPlugin* plugin = NULL; | 1907 WebPlugin* plugin = NULL; |
| 1881 if (content::GetContentClient()->renderer()->OverrideCreatePlugin( | 1908 if (content::GetContentClient()->renderer()->OverrideCreatePlugin( |
| 1882 this, frame, params, &plugin)) { | 1909 this, frame, params, &plugin)) { |
| 1883 return plugin; | 1910 return plugin; |
| 1884 } | 1911 } |
| 1885 | 1912 |
| (...skipping 2414 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4300 WebView* doomed = webview(); | 4327 WebView* doomed = webview(); |
| 4301 RenderWidget::Close(); | 4328 RenderWidget::Close(); |
| 4302 g_view_map.Get().erase(doomed); | 4329 g_view_map.Get().erase(doomed); |
| 4303 } | 4330 } |
| 4304 | 4331 |
| 4305 void RenderViewImpl::DidHandleKeyEvent() { | 4332 void RenderViewImpl::DidHandleKeyEvent() { |
| 4306 edit_commands_.clear(); | 4333 edit_commands_.clear(); |
| 4307 } | 4334 } |
| 4308 | 4335 |
| 4309 bool RenderViewImpl::WillHandleMouseEvent(const WebKit::WebMouseEvent& event) { | 4336 bool RenderViewImpl::WillHandleMouseEvent(const WebKit::WebMouseEvent& event) { |
| 4310 return pepper_delegate_.HandleMouseEvent(event); | 4337 pepper_delegate_.WillHandleMouseEvent(); |
| 4338 | |
| 4339 // If the mouse is locked, only the current owner of the mouse lock can | |
| 4340 // process mouse events. | |
| 4341 return mouse_lock_dispatcher_->WillHandleMouseEvent(event); | |
| 4311 } | 4342 } |
| 4312 | 4343 |
| 4313 void RenderViewImpl::DidHandleMouseEvent(const WebKit::WebMouseEvent& event) { | 4344 void RenderViewImpl::DidHandleMouseEvent(const WebKit::WebMouseEvent& event) { |
| 4314 FOR_EACH_OBSERVER(RenderViewObserver, observers_, DidHandleMouseEvent(event)); | 4345 FOR_EACH_OBSERVER(RenderViewObserver, observers_, DidHandleMouseEvent(event)); |
| 4315 } | 4346 } |
| 4316 | 4347 |
| 4317 void RenderViewImpl::DidHandleTouchEvent(const WebTouchEvent& event) { | 4348 void RenderViewImpl::DidHandleTouchEvent(const WebTouchEvent& event) { |
| 4318 FOR_EACH_OBSERVER(RenderViewObserver, observers_, DidHandleTouchEvent(event)); | 4349 FOR_EACH_OBSERVER(RenderViewObserver, observers_, DidHandleTouchEvent(event)); |
| 4319 } | 4350 } |
| 4320 | 4351 |
| (...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4794 | 4825 |
| 4795 void RenderViewImpl::OnEnableViewSourceMode() { | 4826 void RenderViewImpl::OnEnableViewSourceMode() { |
| 4796 if (!webview()) | 4827 if (!webview()) |
| 4797 return; | 4828 return; |
| 4798 WebFrame* main_frame = webview()->mainFrame(); | 4829 WebFrame* main_frame = webview()->mainFrame(); |
| 4799 if (!main_frame) | 4830 if (!main_frame) |
| 4800 return; | 4831 return; |
| 4801 main_frame->enableViewSourceMode(true); | 4832 main_frame->enableViewSourceMode(true); |
| 4802 } | 4833 } |
| 4803 | 4834 |
| 4804 void RenderViewImpl::OnLockMouseACK(bool succeeded) { | |
| 4805 // Mouse Lock removes the system cursor and provides all mouse motion as | |
| 4806 // .movementX/Y values on events all sent to a fixed target. This requires | |
| 4807 // content to specifically request the mode to be entered. | |
| 4808 // Mouse Capture is implicitly given for the duration of a drag event, and | |
| 4809 // sends all mouse events to the initial target of the drag. | |
| 4810 // If Lock is entered it supercedes any in progress Capture. | |
| 4811 if (succeeded) | |
| 4812 OnMouseCaptureLost(); | |
| 4813 | |
| 4814 pepper_delegate_.OnLockMouseACK(succeeded); | |
| 4815 } | |
| 4816 | |
| 4817 void RenderViewImpl::OnMouseLockLost() { | |
| 4818 pepper_delegate_.OnMouseLockLost(); | |
| 4819 } | |
| 4820 | |
| 4821 bool RenderViewImpl::WebWidgetHandlesCompositorScheduling() const { | 4835 bool RenderViewImpl::WebWidgetHandlesCompositorScheduling() const { |
| 4822 return !!RenderThreadImpl::current()->compositor_thread(); | 4836 return !!RenderThreadImpl::current()->compositor_thread(); |
| 4823 } | 4837 } |
| 4824 | 4838 |
| 4825 void RenderViewImpl::OnJavaBridgeInit() { | 4839 void RenderViewImpl::OnJavaBridgeInit() { |
| 4826 DCHECK(!java_bridge_dispatcher_.get()); | 4840 DCHECK(!java_bridge_dispatcher_.get()); |
| 4827 #if defined(ENABLE_JAVA_BRIDGE) | 4841 #if defined(ENABLE_JAVA_BRIDGE) |
| 4828 java_bridge_dispatcher_.reset(new JavaBridgeDispatcher(this)); | 4842 java_bridge_dispatcher_.reset(new JavaBridgeDispatcher(this)); |
| 4829 #endif | 4843 #endif |
| 4830 } | 4844 } |
| OLD | NEW |