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

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

Issue 11414180: Add a gyp flag to allow removing dependency on ppapi. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed Jay's comments and rebase Created 8 years 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 | Annotate | Revision Log
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 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 #include "content/renderer/load_progress_tracker.h" 81 #include "content/renderer/load_progress_tracker.h"
82 #include "content/renderer/media/media_stream_dependency_factory.h" 82 #include "content/renderer/media/media_stream_dependency_factory.h"
83 #include "content/renderer/media/media_stream_dispatcher.h" 83 #include "content/renderer/media/media_stream_dispatcher.h"
84 #include "content/renderer/media/media_stream_impl.h" 84 #include "content/renderer/media/media_stream_impl.h"
85 #include "content/renderer/media/render_audiosourceprovider.h" 85 #include "content/renderer/media/render_audiosourceprovider.h"
86 #include "content/renderer/media/render_media_log.h" 86 #include "content/renderer/media/render_media_log.h"
87 #include "content/renderer/media/renderer_gpu_video_decoder_factories.h" 87 #include "content/renderer/media/renderer_gpu_video_decoder_factories.h"
88 #include "content/renderer/media/rtc_peer_connection_handler.h" 88 #include "content/renderer/media/rtc_peer_connection_handler.h"
89 #include "content/renderer/mhtml_generator.h" 89 #include "content/renderer/mhtml_generator.h"
90 #include "content/renderer/notification_provider.h" 90 #include "content/renderer/notification_provider.h"
91 #include "content/renderer/pepper/pepper_plugin_delegate_impl.h"
91 #include "content/renderer/plugin_channel_host.h" 92 #include "content/renderer/plugin_channel_host.h"
92 #include "content/renderer/render_process.h" 93 #include "content/renderer/render_process.h"
93 #include "content/renderer/render_thread_impl.h" 94 #include "content/renderer/render_thread_impl.h"
94 #include "content/renderer/render_view_impl_params.h" 95 #include "content/renderer/render_view_impl_params.h"
95 #include "content/renderer/render_view_mouse_lock_dispatcher.h" 96 #include "content/renderer/render_view_mouse_lock_dispatcher.h"
96 #include "content/renderer/render_widget_fullscreen_pepper.h" 97 #include "content/renderer/render_widget_fullscreen_pepper.h"
97 #include "content/renderer/renderer_accessibility.h" 98 #include "content/renderer/renderer_accessibility.h"
98 #include "content/renderer/renderer_accessibility_complete.h" 99 #include "content/renderer/renderer_accessibility_complete.h"
99 #include "content/renderer/renderer_accessibility_focus_only.h" 100 #include "content/renderer/renderer_accessibility_focus_only.h"
100 #include "content/renderer/renderer_webapplicationcachehost_impl.h" 101 #include "content/renderer/renderer_webapplicationcachehost_impl.h"
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 #include "webkit/glue/webkit_constants.h" 193 #include "webkit/glue/webkit_constants.h"
193 #include "webkit/glue/webkit_glue.h" 194 #include "webkit/glue/webkit_glue.h"
194 #include "webkit/glue/weburlresponse_extradata_impl.h" 195 #include "webkit/glue/weburlresponse_extradata_impl.h"
195 #include "webkit/gpu/webgraphicscontext3d_in_process_impl.h" 196 #include "webkit/gpu/webgraphicscontext3d_in_process_impl.h"
196 #include "webkit/media/webmediaplayer_impl.h" 197 #include "webkit/media/webmediaplayer_impl.h"
197 #include "webkit/media/webmediaplayer_ms.h" 198 #include "webkit/media/webmediaplayer_ms.h"
198 #include "webkit/plugins/npapi/plugin_list.h" 199 #include "webkit/plugins/npapi/plugin_list.h"
199 #include "webkit/plugins/npapi/webplugin_delegate.h" 200 #include "webkit/plugins/npapi/webplugin_delegate.h"
200 #include "webkit/plugins/npapi/webplugin_delegate_impl.h" 201 #include "webkit/plugins/npapi/webplugin_delegate_impl.h"
201 #include "webkit/plugins/npapi/webplugin_impl.h" 202 #include "webkit/plugins/npapi/webplugin_impl.h"
202 #include "webkit/plugins/ppapi/ppapi_webplugin_impl.h"
203 203
204 #if defined(OS_ANDROID) 204 #if defined(OS_ANDROID)
205 #include "content/common/android/device_info.h" 205 #include "content/common/android/device_info.h"
206 #include "content/renderer/android/address_detector.h" 206 #include "content/renderer/android/address_detector.h"
207 #include "content/renderer/android/content_detector.h" 207 #include "content/renderer/android/content_detector.h"
208 #include "content/renderer/android/email_detector.h" 208 #include "content/renderer/android/email_detector.h"
209 #include "content/renderer/android/phone_number_detector.h" 209 #include "content/renderer/android/phone_number_detector.h"
210 #include "content/renderer/media/stream_texture_factory_impl_android.h" 210 #include "content/renderer/media/stream_texture_factory_impl_android.h"
211 #include "content/renderer/media/webmediaplayer_proxy_impl_android.h" 211 #include "content/renderer/media/webmediaplayer_proxy_impl_android.h"
212 #include "third_party/WebKit/Source/WebKit/chromium/public/WebHitTestResult.h" 212 #include "third_party/WebKit/Source/WebKit/chromium/public/WebHitTestResult.h"
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after
598 #endif 598 #endif
599 session_storage_namespace_id_(params->session_storage_namespace_id), 599 session_storage_namespace_id_(params->session_storage_namespace_id),
600 handling_select_range_(false), 600 handling_select_range_(false),
601 #if defined(OS_WIN) 601 #if defined(OS_WIN)
602 focused_plugin_id_(-1), 602 focused_plugin_id_(-1),
603 #endif 603 #endif
604 updating_frame_tree_(false), 604 updating_frame_tree_(false),
605 pending_frame_tree_update_(false), 605 pending_frame_tree_update_(false),
606 target_process_id_(0), 606 target_process_id_(0),
607 target_routing_id_(0), 607 target_routing_id_(0),
608 ALLOW_THIS_IN_INITIALIZER_LIST(pepper_delegate_(this)) { 608 #if defined(ENABLE_PPAPI)
brettw 2012/11/30 23:18:12 I think this should just go in the constructor rat
nilesh 2012/12/01 00:41:35 Done.
609 ALLOW_THIS_IN_INITIALIZER_LIST(
610 pepper_delegate_(new PepperPluginDelegateImpl(this)))
611 #else
612 pepper_delegate_(new PluginDelegateHelper())
613 #endif
614 {
609 set_throttle_input_events(params->renderer_prefs.throttle_input_events); 615 set_throttle_input_events(params->renderer_prefs.throttle_input_events);
610 routing_id_ = params->routing_id; 616 routing_id_ = params->routing_id;
611 surface_id_ = params->surface_id; 617 surface_id_ = params->surface_id;
612 if (params->opener_id != MSG_ROUTING_NONE && params->is_renderer_created) 618 if (params->opener_id != MSG_ROUTING_NONE && params->is_renderer_created)
613 opener_id_ = params->opener_id; 619 opener_id_ = params->opener_id;
614 620
615 // Ensure we start with a valid next_page_id_ from the browser. 621 // Ensure we start with a valid next_page_id_ from the browser.
616 DCHECK_GE(next_page_id_, 0); 622 DCHECK_GE(next_page_id_, 0);
617 623
618 #if defined(ENABLE_NOTIFICATIONS) 624 #if defined(ENABLE_NOTIFICATIONS)
(...skipping 3736 matching lines...) Expand 10 before | Expand all | Expand 10 after
4355 } 4361 }
4356 } 4362 }
4357 4363
4358 return false; 4364 return false;
4359 } 4365 }
4360 4366
4361 WebKit::WebPlugin* RenderViewImpl::CreatePlugin( 4367 WebKit::WebPlugin* RenderViewImpl::CreatePlugin(
4362 WebKit::WebFrame* frame, 4368 WebKit::WebFrame* frame,
4363 const webkit::WebPluginInfo& info, 4369 const webkit::WebPluginInfo& info,
4364 const WebKit::WebPluginParams& params) { 4370 const WebKit::WebPluginParams& params) {
4365 bool pepper_plugin_was_registered = false; 4371 WebKit::WebPlugin* pepper_webplugin =
4366 scoped_refptr<webkit::ppapi::PluginModule> pepper_module( 4372 pepper_delegate_->CreatePepperWebPlugin(info, params);
4367 pepper_delegate_.CreatePepperPluginModule(info, 4373
4368 &pepper_plugin_was_registered)); 4374 if (pepper_webplugin)
4369 if (pepper_plugin_was_registered) { 4375 return pepper_webplugin;
4370 if (!pepper_module)
4371 return NULL;
4372 return new webkit::ppapi::WebPluginImpl(
4373 pepper_module.get(), params, pepper_delegate_.AsWeakPtr());
4374 }
4375 4376
4376 #if defined(USE_AURA) && !defined(OS_WIN) 4377 #if defined(USE_AURA) && !defined(OS_WIN)
4377 return NULL; 4378 return NULL;
4378 #else 4379 #else
4379 return new webkit::npapi::WebPluginImpl( 4380 return new webkit::npapi::WebPluginImpl(
4380 frame, params, info.path, AsWeakPtr()); 4381 frame, params, info.path, AsWeakPtr());
4381 #endif 4382 #endif
4382 } 4383 }
4383 4384
4384 void RenderViewImpl::EvaluateScript(const string16& frame_xpath, 4385 void RenderViewImpl::EvaluateScript(const string16& frame_xpath,
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
4548 4549
4549 void RenderViewImpl::SyncSelectionIfRequired() { 4550 void RenderViewImpl::SyncSelectionIfRequired() {
4550 WebFrame* frame = webview()->focusedFrame(); 4551 WebFrame* frame = webview()->focusedFrame();
4551 if (!frame) 4552 if (!frame)
4552 return; 4553 return;
4553 4554
4554 string16 text; 4555 string16 text;
4555 size_t offset; 4556 size_t offset;
4556 ui::Range range; 4557 ui::Range range;
4557 4558
4558 if (pepper_delegate_.IsPluginFocused()) { 4559 if (pepper_delegate_->IsPluginFocused()) {
4559 pepper_delegate_.GetSurroundingText(&text, &range); 4560 pepper_delegate_->GetSurroundingText(&text, &range);
4560 offset = 0; // Pepper API does not support offset reporting. 4561 offset = 0; // Pepper API does not support offset reporting.
4561 // TODO(kinaba): cut as needed. 4562 // TODO(kinaba): cut as needed.
4562 } else { 4563 } else {
4563 size_t location, length; 4564 size_t location, length;
4564 if (!webview()->caretOrSelectionRange(&location, &length)) 4565 if (!webview()->caretOrSelectionRange(&location, &length))
4565 return; 4566 return;
4566 4567
4567 range = ui::Range(location, location + length); 4568 range = ui::Range(location, location + length);
4568 4569
4569 if (webview()->textInputType() != WebKit::WebTextInputTypeNone) { 4570 if (webview()->textInputType() != WebKit::WebTextInputTypeNone) {
(...skipping 948 matching lines...) Expand 10 before | Expand all | Expand 10 after
5518 ShouldDisplayScrollbars(new_size.width(), new_size.height())); 5519 ShouldDisplayScrollbars(new_size.width(), new_size.height()));
5519 } 5520 }
5520 UpdateScrollState(webview()->mainFrame()); 5521 UpdateScrollState(webview()->mainFrame());
5521 } 5522 }
5522 5523
5523 RenderWidget::OnResize(new_size, resizer_rect, is_fullscreen); 5524 RenderWidget::OnResize(new_size, resizer_rect, is_fullscreen);
5524 } 5525 }
5525 5526
5526 void RenderViewImpl::WillInitiatePaint() { 5527 void RenderViewImpl::WillInitiatePaint() {
5527 // Notify the pepper plugins that we're about to paint. 5528 // Notify the pepper plugins that we're about to paint.
5528 pepper_delegate_.ViewWillInitiatePaint(); 5529 pepper_delegate_->ViewWillInitiatePaint();
5529 } 5530 }
5530 5531
5531 void RenderViewImpl::DidInitiatePaint() { 5532 void RenderViewImpl::DidInitiatePaint() {
5532 // Notify the pepper plugins that we've painted, and are waiting to flush. 5533 // Notify the pepper plugins that we've painted, and are waiting to flush.
5533 pepper_delegate_.ViewInitiatedPaint(); 5534 pepper_delegate_->ViewInitiatedPaint();
5534 } 5535 }
5535 5536
5536 void RenderViewImpl::DidFlushPaint() { 5537 void RenderViewImpl::DidFlushPaint() {
5537 // Notify any pepper plugins that we painted. This will call into the plugin, 5538 // Notify any pepper plugins that we painted. This will call into the plugin,
5538 // and we it may ask to close itself as a result. This will, in turn, modify 5539 // and we it may ask to close itself as a result. This will, in turn, modify
5539 // our set, possibly invalidating the iterator. So we iterate on a copy that 5540 // our set, possibly invalidating the iterator. So we iterate on a copy that
5540 // won't change out from under us. 5541 // won't change out from under us.
5541 pepper_delegate_.ViewFlushedPaint(); 5542 pepper_delegate_->ViewFlushedPaint();
5542 5543
5543 // If the RenderWidget is closing down then early-exit, otherwise we'll crash. 5544 // If the RenderWidget is closing down then early-exit, otherwise we'll crash.
5544 // See crbug.com/112921. 5545 // See crbug.com/112921.
5545 if (!webview()) 5546 if (!webview())
5546 return; 5547 return;
5547 5548
5548 WebFrame* main_frame = webview()->mainFrame(); 5549 WebFrame* main_frame = webview()->mainFrame();
5549 5550
5550 // If we have a provisional frame we are between the start and commit stages 5551 // If we have a provisional frame we are between the start and commit stages
5551 // of loading and we don't want to save stats. 5552 // of loading and we don't want to save stats.
(...skipping 25 matching lines...) Expand all
5577 void RenderViewImpl::OnViewContextSwapBuffersAborted() { 5578 void RenderViewImpl::OnViewContextSwapBuffersAborted() {
5578 RenderWidget::OnSwapBuffersAborted(); 5579 RenderWidget::OnSwapBuffersAborted();
5579 } 5580 }
5580 5581
5581 webkit::ppapi::PluginInstance* RenderViewImpl::GetBitmapForOptimizedPluginPaint( 5582 webkit::ppapi::PluginInstance* RenderViewImpl::GetBitmapForOptimizedPluginPaint(
5582 const gfx::Rect& paint_bounds, 5583 const gfx::Rect& paint_bounds,
5583 TransportDIB** dib, 5584 TransportDIB** dib,
5584 gfx::Rect* location, 5585 gfx::Rect* location,
5585 gfx::Rect* clip, 5586 gfx::Rect* clip,
5586 float* scale_factor) { 5587 float* scale_factor) {
5587 return pepper_delegate_.GetBitmapForOptimizedPluginPaint( 5588 return pepper_delegate_->GetBitmapForOptimizedPluginPaint(
5588 paint_bounds, dib, location, clip, scale_factor); 5589 paint_bounds, dib, location, clip, scale_factor);
5589 } 5590 }
5590 5591
5591 gfx::Vector2d RenderViewImpl::GetScrollOffset() { 5592 gfx::Vector2d RenderViewImpl::GetScrollOffset() {
5592 WebSize scroll_offset = webview()->mainFrame()->scrollOffset(); 5593 WebSize scroll_offset = webview()->mainFrame()->scrollOffset();
5593 return gfx::Vector2d(scroll_offset.width, scroll_offset.height); 5594 return gfx::Vector2d(scroll_offset.width, scroll_offset.height);
5594 } 5595 }
5595 5596
5596 void RenderViewImpl::OnClearFocusedNode() { 5597 void RenderViewImpl::OnClearFocusedNode() {
5597 if (webview()) 5598 if (webview())
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
5697 5698
5698 void RenderViewImpl::DidHandleKeyEvent() { 5699 void RenderViewImpl::DidHandleKeyEvent() {
5699 ClearEditCommands(); 5700 ClearEditCommands();
5700 } 5701 }
5701 5702
5702 bool RenderViewImpl::WillHandleMouseEvent(const WebKit::WebMouseEvent& event) { 5703 bool RenderViewImpl::WillHandleMouseEvent(const WebKit::WebMouseEvent& event) {
5703 possible_drag_event_info_.event_source = 5704 possible_drag_event_info_.event_source =
5704 ui::DragDropTypes::DRAG_EVENT_SOURCE_MOUSE; 5705 ui::DragDropTypes::DRAG_EVENT_SOURCE_MOUSE;
5705 possible_drag_event_info_.event_location = 5706 possible_drag_event_info_.event_location =
5706 gfx::Point(event.globalX, event.globalY); 5707 gfx::Point(event.globalX, event.globalY);
5707 pepper_delegate_.WillHandleMouseEvent(); 5708 pepper_delegate_->WillHandleMouseEvent();
5708 5709
5709 // If the mouse is locked, only the current owner of the mouse lock can 5710 // If the mouse is locked, only the current owner of the mouse lock can
5710 // process mouse events. 5711 // process mouse events.
5711 return mouse_lock_dispatcher_->WillHandleMouseEvent(event); 5712 return mouse_lock_dispatcher_->WillHandleMouseEvent(event);
5712 } 5713 }
5713 5714
5714 bool RenderViewImpl::WillHandleGestureEvent( 5715 bool RenderViewImpl::WillHandleGestureEvent(
5715 const WebKit::WebGestureEvent& event) { 5716 const WebKit::WebGestureEvent& event) {
5716 possible_drag_event_info_.event_source = 5717 possible_drag_event_info_.event_source =
5717 ui::DragDropTypes::DRAG_EVENT_SOURCE_TOUCH; 5718 ui::DragDropTypes::DRAG_EVENT_SOURCE_TOUCH;
(...skipping 22 matching lines...) Expand all
5740 media_player_manager_->ReleaseMediaResources(); 5741 media_player_manager_->ReleaseMediaResources();
5741 #endif 5742 #endif
5742 5743
5743 if (webview()) { 5744 if (webview()) {
5744 webview()->settings()->setMinimumTimerInterval( 5745 webview()->settings()->setMinimumTimerInterval(
5745 webkit_glue::kBackgroundTabTimerInterval); 5746 webkit_glue::kBackgroundTabTimerInterval);
5746 webview()->setVisibilityState(visibilityState(), false); 5747 webview()->setVisibilityState(visibilityState(), false);
5747 } 5748 }
5748 5749
5749 // Inform PPAPI plugins that their page is no longer visible. 5750 // Inform PPAPI plugins that their page is no longer visible.
5750 pepper_delegate_.PageVisibilityChanged(false); 5751 pepper_delegate_->PageVisibilityChanged(false);
5751 5752
5752 #if defined(OS_MACOSX) 5753 #if defined(OS_MACOSX)
5753 // Inform NPAPI plugins that their container is no longer visible. 5754 // Inform NPAPI plugins that their container is no longer visible.
5754 std::set<WebPluginDelegateProxy*>::iterator plugin_it; 5755 std::set<WebPluginDelegateProxy*>::iterator plugin_it;
5755 for (plugin_it = plugin_delegates_.begin(); 5756 for (plugin_it = plugin_delegates_.begin();
5756 plugin_it != plugin_delegates_.end(); ++plugin_it) { 5757 plugin_it != plugin_delegates_.end(); ++plugin_it) {
5757 (*plugin_it)->SetContainerVisibility(false); 5758 (*plugin_it)->SetContainerVisibility(false);
5758 } 5759 }
5759 #endif // OS_MACOSX 5760 #endif // OS_MACOSX
5760 } 5761 }
5761 5762
5762 void RenderViewImpl::OnWasShown(bool needs_repainting) { 5763 void RenderViewImpl::OnWasShown(bool needs_repainting) {
5763 RenderWidget::OnWasShown(needs_repainting); 5764 RenderWidget::OnWasShown(needs_repainting);
5764 5765
5765 if (webview()) { 5766 if (webview()) {
5766 webview()->settings()->setMinimumTimerInterval( 5767 webview()->settings()->setMinimumTimerInterval(
5767 webkit_glue::kForegroundTabTimerInterval); 5768 webkit_glue::kForegroundTabTimerInterval);
5768 webview()->setVisibilityState(visibilityState(), false); 5769 webview()->setVisibilityState(visibilityState(), false);
5769 } 5770 }
5770 5771
5771 // Inform PPAPI plugins that their page is visible. 5772 // Inform PPAPI plugins that their page is visible.
5772 pepper_delegate_.PageVisibilityChanged(true); 5773 pepper_delegate_->PageVisibilityChanged(true);
5773 5774
5774 #if defined(OS_MACOSX) 5775 #if defined(OS_MACOSX)
5775 // Inform NPAPI plugins that their container is now visible. 5776 // Inform NPAPI plugins that their container is now visible.
5776 std::set<WebPluginDelegateProxy*>::iterator plugin_it; 5777 std::set<WebPluginDelegateProxy*>::iterator plugin_it;
5777 for (plugin_it = plugin_delegates_.begin(); 5778 for (plugin_it = plugin_delegates_.begin();
5778 plugin_it != plugin_delegates_.end(); ++plugin_it) { 5779 plugin_it != plugin_delegates_.end(); ++plugin_it) {
5779 (*plugin_it)->SetContainerVisibility(true); 5780 (*plugin_it)->SetContainerVisibility(true);
5780 } 5781 }
5781 #endif // OS_MACOSX 5782 #endif // OS_MACOSX
5782 } 5783 }
(...skipping 23 matching lines...) Expand all
5806 #if defined(OS_MACOSX) 5807 #if defined(OS_MACOSX)
5807 // RenderWidget's call to setFocus can cause the underlying webview's 5808 // RenderWidget's call to setFocus can cause the underlying webview's
5808 // activation state to change just like a call to setIsActive. 5809 // activation state to change just like a call to setIsActive.
5809 if (enable) 5810 if (enable)
5810 (*plugin_it)->SetWindowFocus(true); 5811 (*plugin_it)->SetWindowFocus(true);
5811 #endif 5812 #endif
5812 (*plugin_it)->SetContentAreaFocus(enable); 5813 (*plugin_it)->SetContentAreaFocus(enable);
5813 } 5814 }
5814 } 5815 }
5815 // Notify all Pepper plugins. 5816 // Notify all Pepper plugins.
5816 pepper_delegate_.OnSetFocus(enable); 5817 pepper_delegate_->OnSetFocus(enable);
5817 // Notify all BrowserPlugins of the RenderView's focus state. 5818 // Notify all BrowserPlugins of the RenderView's focus state.
5818 if (browser_plugin_manager_) 5819 if (browser_plugin_manager_)
5819 browser_plugin_manager()->SetEmbedderFocus(this, enable); 5820 browser_plugin_manager()->SetEmbedderFocus(this, enable);
5820 } 5821 }
5821 5822
5822 void RenderViewImpl::PpapiPluginFocusChanged() { 5823 void RenderViewImpl::PpapiPluginFocusChanged() {
5823 UpdateTextInputState(DO_NOT_SHOW_IME); 5824 UpdateTextInputState(DO_NOT_SHOW_IME);
5824 UpdateSelectionBounds(); 5825 UpdateSelectionBounds();
5825 } 5826 }
5826 5827
5827 void RenderViewImpl::PpapiPluginTextInputTypeChanged() { 5828 void RenderViewImpl::PpapiPluginTextInputTypeChanged() {
5828 UpdateTextInputState(DO_NOT_SHOW_IME); 5829 UpdateTextInputState(DO_NOT_SHOW_IME);
5829 if (renderer_accessibility_) 5830 if (renderer_accessibility_)
5830 renderer_accessibility_->FocusedNodeChanged(WebNode()); 5831 renderer_accessibility_->FocusedNodeChanged(WebNode());
5831 } 5832 }
5832 5833
5833 void RenderViewImpl::PpapiPluginCaretPositionChanged() { 5834 void RenderViewImpl::PpapiPluginCaretPositionChanged() {
5834 UpdateSelectionBounds(); 5835 UpdateSelectionBounds();
5835 } 5836 }
5836 5837
5837 bool RenderViewImpl::GetPpapiPluginCaretBounds(gfx::Rect* rect) { 5838 bool RenderViewImpl::GetPpapiPluginCaretBounds(gfx::Rect* rect) {
5838 if (!pepper_delegate_.IsPluginFocused()) 5839 if (!pepper_delegate_->IsPluginFocused())
5839 return false; 5840 return false;
5840 *rect = pepper_delegate_.GetCaretBounds(); 5841 *rect = pepper_delegate_->GetCaretBounds();
5841 return true; 5842 return true;
5842 } 5843 }
5843 5844
5844 void RenderViewImpl::SimulateImeSetComposition( 5845 void RenderViewImpl::SimulateImeSetComposition(
5845 const string16& text, 5846 const string16& text,
5846 const std::vector<WebKit::WebCompositionUnderline>& underlines, 5847 const std::vector<WebKit::WebCompositionUnderline>& underlines,
5847 int selection_start, 5848 int selection_start,
5848 int selection_end) { 5849 int selection_end) {
5849 OnImeSetComposition(text, underlines, selection_start, selection_end); 5850 OnImeSetComposition(text, underlines, selection_start, selection_end);
5850 } 5851 }
(...skipping 18 matching lines...) Expand all
5869 void RenderViewImpl::PpapiPluginCreated(RendererPpapiHost* host) { 5870 void RenderViewImpl::PpapiPluginCreated(RendererPpapiHost* host) {
5870 FOR_EACH_OBSERVER(RenderViewObserver, observers_, 5871 FOR_EACH_OBSERVER(RenderViewObserver, observers_,
5871 DidCreatePepperPlugin(host)); 5872 DidCreatePepperPlugin(host));
5872 } 5873 }
5873 5874
5874 void RenderViewImpl::OnImeSetComposition( 5875 void RenderViewImpl::OnImeSetComposition(
5875 const string16& text, 5876 const string16& text,
5876 const std::vector<WebKit::WebCompositionUnderline>& underlines, 5877 const std::vector<WebKit::WebCompositionUnderline>& underlines,
5877 int selection_start, 5878 int selection_start,
5878 int selection_end) { 5879 int selection_end) {
5879 if (pepper_delegate_.IsPluginFocused()) { 5880 if (pepper_delegate_->IsPluginFocused()) {
5880 // When a PPAPI plugin has focus, we bypass WebKit. 5881 // When a PPAPI plugin has focus, we bypass WebKit.
5881 pepper_delegate_.OnImeSetComposition(text, 5882 pepper_delegate_->OnImeSetComposition(text,
5882 underlines, 5883 underlines,
5883 selection_start, 5884 selection_start,
5884 selection_end); 5885 selection_end);
5885 } else { 5886 } else {
5886 #if defined(OS_WIN) 5887 #if defined(OS_WIN)
5887 // When a plug-in has focus, we create platform-specific IME data used by 5888 // When a plug-in has focus, we create platform-specific IME data used by
5888 // our IME emulator and send it directly to the focused plug-in, i.e. we 5889 // our IME emulator and send it directly to the focused plug-in, i.e. we
5889 // bypass WebKit. (WebPluginDelegate dispatches this IME data only when its 5890 // bypass WebKit. (WebPluginDelegate dispatches this IME data only when its
5890 // instance ID is the same one as the specified ID.) 5891 // instance ID is the same one as the specified ID.)
5891 if (focused_plugin_id_ >= 0) { 5892 if (focused_plugin_id_ >= 0) {
(...skipping 19 matching lines...) Expand all
5911 #endif 5912 #endif
5912 RenderWidget::OnImeSetComposition(text, 5913 RenderWidget::OnImeSetComposition(text,
5913 underlines, 5914 underlines,
5914 selection_start, 5915 selection_start,
5915 selection_end); 5916 selection_end);
5916 } 5917 }
5917 } 5918 }
5918 5919
5919 void RenderViewImpl::OnImeConfirmComposition( 5920 void RenderViewImpl::OnImeConfirmComposition(
5920 const string16& text, const ui::Range& replacement_range) { 5921 const string16& text, const ui::Range& replacement_range) {
5921 if (pepper_delegate_.IsPluginFocused()) { 5922 if (pepper_delegate_->IsPluginFocused()) {
5922 // When a PPAPI plugin has focus, we bypass WebKit. 5923 // When a PPAPI plugin has focus, we bypass WebKit.
5923 pepper_delegate_.OnImeConfirmComposition(text); 5924 pepper_delegate_->OnImeConfirmComposition(text);
5924 } else { 5925 } else {
5925 #if defined(OS_WIN) 5926 #if defined(OS_WIN)
5926 // Same as OnImeSetComposition(), we send the text from IMEs directly to 5927 // Same as OnImeSetComposition(), we send the text from IMEs directly to
5927 // plug-ins. When we send IME text directly to plug-ins, we should not send 5928 // plug-ins. When we send IME text directly to plug-ins, we should not send
5928 // it to WebKit to prevent WebKit from controlling IMEs. 5929 // it to WebKit to prevent WebKit from controlling IMEs.
5929 // TODO(thakis): Honor |replacement_range| for plugins? 5930 // TODO(thakis): Honor |replacement_range| for plugins?
5930 if (focused_plugin_id_ >= 0) { 5931 if (focused_plugin_id_ >= 0) {
5931 std::set<WebPluginDelegateProxy*>::iterator it; 5932 std::set<WebPluginDelegateProxy*>::iterator it;
5932 for (it = plugin_delegates_.begin(); 5933 for (it = plugin_delegates_.begin();
5933 it != plugin_delegates_.end(); ++it) { 5934 it != plugin_delegates_.end(); ++it) {
(...skipping 16 matching lines...) Expand all
5950 } 5951 }
5951 } 5952 }
5952 5953
5953 void RenderViewImpl::SetDeviceScaleFactor(float device_scale_factor) { 5954 void RenderViewImpl::SetDeviceScaleFactor(float device_scale_factor) {
5954 RenderWidget::SetDeviceScaleFactor(device_scale_factor); 5955 RenderWidget::SetDeviceScaleFactor(device_scale_factor);
5955 if (webview()) 5956 if (webview())
5956 webview()->setDeviceScaleFactor(device_scale_factor); 5957 webview()->setDeviceScaleFactor(device_scale_factor);
5957 } 5958 }
5958 5959
5959 ui::TextInputType RenderViewImpl::GetTextInputType() { 5960 ui::TextInputType RenderViewImpl::GetTextInputType() {
5960 return pepper_delegate_.IsPluginFocused() ? 5961 return pepper_delegate_->IsPluginFocused() ?
5961 pepper_delegate_.GetTextInputType() : RenderWidget::GetTextInputType(); 5962 pepper_delegate_->GetTextInputType() : RenderWidget::GetTextInputType();
5962 } 5963 }
5963 5964
5964 void RenderViewImpl::GetSelectionBounds(gfx::Rect* start, gfx::Rect* end) { 5965 void RenderViewImpl::GetSelectionBounds(gfx::Rect* start, gfx::Rect* end) {
5965 if (pepper_delegate_.IsPluginFocused()) { 5966 if (pepper_delegate_->IsPluginFocused()) {
5966 // TODO(kinaba) http://crbug.com/101101 5967 // TODO(kinaba) http://crbug.com/101101
5967 // Current Pepper IME API does not handle selection bounds. So we simply 5968 // Current Pepper IME API does not handle selection bounds. So we simply
5968 // use the caret position as an empty range for now. It will be updated 5969 // use the caret position as an empty range for now. It will be updated
5969 // after Pepper API equips features related to surrounding text retrieval. 5970 // after Pepper API equips features related to surrounding text retrieval.
5970 gfx::Rect caret = pepper_delegate_.GetCaretBounds(); 5971 gfx::Rect caret = pepper_delegate_->GetCaretBounds();
5971 *start = caret; 5972 *start = caret;
5972 *end = caret; 5973 *end = caret;
5973 return; 5974 return;
5974 } 5975 }
5975 RenderWidget::GetSelectionBounds(start, end); 5976 RenderWidget::GetSelectionBounds(start, end);
5976 } 5977 }
5977 5978
5978 void RenderViewImpl::GetCompositionCharacterBounds( 5979 void RenderViewImpl::GetCompositionCharacterBounds(
5979 std::vector<gfx::Rect>* bounds) { 5980 std::vector<gfx::Rect>* bounds) {
5980 DCHECK(bounds); 5981 DCHECK(bounds);
(...skipping 18 matching lines...) Expand all
5999 if (!frame->firstRectForCharacterRange(start_offset + i, 1, webrect)) { 6000 if (!frame->firstRectForCharacterRange(start_offset + i, 1, webrect)) {
6000 DLOG(ERROR) << "Could not retrieve character rectangle at " << i; 6001 DLOG(ERROR) << "Could not retrieve character rectangle at " << i;
6001 bounds->clear(); 6002 bounds->clear();
6002 return; 6003 return;
6003 } 6004 }
6004 bounds->push_back(webrect); 6005 bounds->push_back(webrect);
6005 } 6006 }
6006 } 6007 }
6007 6008
6008 bool RenderViewImpl::CanComposeInline() { 6009 bool RenderViewImpl::CanComposeInline() {
6009 return pepper_delegate_.IsPluginFocused() ? 6010 return pepper_delegate_->IsPluginFocused() ?
6010 pepper_delegate_.CanComposeInline() : true; 6011 pepper_delegate_->CanComposeInline() : true;
6011 } 6012 }
6012 6013
6013 #if defined(OS_WIN) 6014 #if defined(OS_WIN)
6014 void RenderViewImpl::PluginFocusChanged(bool focused, int plugin_id) { 6015 void RenderViewImpl::PluginFocusChanged(bool focused, int plugin_id) {
6015 if (focused) 6016 if (focused)
6016 focused_plugin_id_ = plugin_id; 6017 focused_plugin_id_ = plugin_id;
6017 else 6018 else
6018 focused_plugin_id_ = -1; 6019 focused_plugin_id_ = -1;
6019 } 6020 }
6020 #endif 6021 #endif
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
6255 size_t request_id) { 6256 size_t request_id) {
6256 if (request_id != expected_content_intent_id_) 6257 if (request_id != expected_content_intent_id_)
6257 return; 6258 return;
6258 6259
6259 // Remove the content highlighting if any. 6260 // Remove the content highlighting if any.
6260 scheduleComposite(); 6261 scheduleComposite();
6261 6262
6262 if (!intent.is_empty()) 6263 if (!intent.is_empty())
6263 Send(new ViewHostMsg_StartContentIntent(routing_id_, intent)); 6264 Send(new ViewHostMsg_StartContentIntent(routing_id_, intent));
6264 } 6265 }
6265 #endif 6266 #endif // defined(OS_ANDROID)
6266 6267
6267 void RenderViewImpl::OnAsyncFileOpened( 6268 void RenderViewImpl::OnAsyncFileOpened(
6268 base::PlatformFileError error_code, 6269 base::PlatformFileError error_code,
6269 IPC::PlatformFileForTransit file_for_transit, 6270 IPC::PlatformFileForTransit file_for_transit,
6270 int message_id) { 6271 int message_id) {
6271 pepper_delegate_.OnAsyncFileOpened( 6272 pepper_delegate_->OnAsyncFileOpened(
6272 error_code, 6273 error_code,
6273 IPC::PlatformFileForTransitToPlatformFile(file_for_transit), 6274 IPC::PlatformFileForTransitToPlatformFile(file_for_transit),
6274 message_id); 6275 message_id);
6275 } 6276 }
6276 6277
6277 void RenderViewImpl::OnPpapiBrokerChannelCreated( 6278 void RenderViewImpl::OnPpapiBrokerChannelCreated(
6278 int request_id, 6279 int request_id,
6279 const IPC::ChannelHandle& handle) { 6280 const IPC::ChannelHandle& handle) {
6280 pepper_delegate_.OnPpapiBrokerChannelCreated(request_id, 6281 pepper_delegate_->OnPpapiBrokerChannelCreated(request_id,
6281 handle); 6282 handle);
6282 } 6283 }
6283 6284
6284 void RenderViewImpl::OnPpapiBrokerPermissionResult( 6285 void RenderViewImpl::OnPpapiBrokerPermissionResult(
6285 int request_id, 6286 int request_id,
6286 bool result) { 6287 bool result) {
6287 pepper_delegate_.OnPpapiBrokerPermissionResult(request_id, result); 6288 pepper_delegate_->OnPpapiBrokerPermissionResult(request_id, result);
6288 } 6289 }
6289 6290
6290 #if defined(OS_MACOSX) 6291 #if defined(OS_MACOSX)
6291 void RenderViewImpl::OnSelectPopupMenuItem(int selected_index) { 6292 void RenderViewImpl::OnSelectPopupMenuItem(int selected_index) {
6292 if (external_popup_menu_ == NULL) { 6293 if (external_popup_menu_ == NULL) {
6293 // Crash reports from the field indicate that we can be notified with a 6294 // Crash reports from the field indicate that we can be notified with a
6294 // NULL external popup menu (we probably get notified twice). 6295 // NULL external popup menu (we probably get notified twice).
6295 // If you hit this please file a bug against jcivelli and include the page 6296 // If you hit this please file a bug against jcivelli and include the page
6296 // and steps to repro. 6297 // and steps to repro.
6297 NOTREACHED(); 6298 NOTREACHED();
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
6418 } 6419 }
6419 #endif 6420 #endif
6420 6421
6421 void RenderViewImpl::OnReleaseDisambiguationPopupDIB( 6422 void RenderViewImpl::OnReleaseDisambiguationPopupDIB(
6422 TransportDIB::Handle dib_handle) { 6423 TransportDIB::Handle dib_handle) {
6423 TransportDIB* dib = TransportDIB::CreateWithHandle(dib_handle); 6424 TransportDIB* dib = TransportDIB::CreateWithHandle(dib_handle);
6424 RenderProcess::current()->ReleaseTransportDIB(dib); 6425 RenderProcess::current()->ReleaseTransportDIB(dib);
6425 } 6426 }
6426 6427
6427 } // namespace content 6428 } // namespace content
OLDNEW
« content/renderer/plugin_delegate_helper.cc ('K') | « content/renderer/render_view_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698