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

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

Issue 1825253002: Revert of Remove a bunch of NPAPI quirks and related support code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@remove_windowed_plugins
Patch Set: Created 4 years, 9 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
« no previous file with comments | « content/renderer/render_view_impl.h ('k') | content/test/test_render_view_host.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after
631 #endif 631 #endif
632 has_focus_(false), 632 has_focus_(false),
633 has_scrolled_focused_editable_node_into_rect_(false), 633 has_scrolled_focused_editable_node_into_rect_(false),
634 main_render_frame_(nullptr), 634 main_render_frame_(nullptr),
635 frame_widget_(nullptr), 635 frame_widget_(nullptr),
636 speech_recognition_dispatcher_(NULL), 636 speech_recognition_dispatcher_(NULL),
637 mouse_lock_dispatcher_(NULL), 637 mouse_lock_dispatcher_(NULL),
638 #if defined(OS_ANDROID) 638 #if defined(OS_ANDROID)
639 expected_content_intent_id_(0), 639 expected_content_intent_id_(0),
640 #endif 640 #endif
641 #if defined(OS_WIN)
642 focused_plugin_id_(-1),
643 #endif
641 #if defined(ENABLE_PLUGINS) 644 #if defined(ENABLE_PLUGINS)
642 focused_pepper_plugin_(NULL), 645 focused_pepper_plugin_(NULL),
643 pepper_last_mouse_event_target_(NULL), 646 pepper_last_mouse_event_target_(NULL),
644 #endif 647 #endif
645 enumeration_completion_id_(0), 648 enumeration_completion_id_(0),
646 session_storage_namespace_id_(params.session_storage_namespace_id) { 649 session_storage_namespace_id_(params.session_storage_namespace_id) {
647 GetWidget()->set_owner_delegate(this); 650 GetWidget()->set_owner_delegate(this);
648 } 651 }
649 652
650 void RenderViewImpl::Initialize(const ViewMsg_New_Params& params, 653 void RenderViewImpl::Initialize(const ViewMsg_New_Params& params,
(...skipping 550 matching lines...) Expand 10 before | Expand all | Expand 10 after
1201 // environments where RenderView isn't hosting them), so we always have to 1204 // environments where RenderView isn't hosting them), so we always have to
1202 // set the initial state. See webplugin_delegate_impl.h for details. 1205 // set the initial state. See webplugin_delegate_impl.h for details.
1203 delegate->SetContentAreaFocus(has_focus()); 1206 delegate->SetContentAreaFocus(has_focus());
1204 } 1207 }
1205 1208
1206 void RenderViewImpl::UnregisterPluginDelegate( 1209 void RenderViewImpl::UnregisterPluginDelegate(
1207 WebPluginDelegateProxy* delegate) { 1210 WebPluginDelegateProxy* delegate) {
1208 plugin_delegates_.erase(delegate); 1211 plugin_delegates_.erase(delegate);
1209 } 1212 }
1210 1213
1214 #if defined(OS_WIN)
1215 void RenderViewImpl::PluginFocusChanged(bool focused, int plugin_id) {
1216 if (focused)
1217 focused_plugin_id_ = plugin_id;
1218 else
1219 focused_plugin_id_ = -1;
1220 }
1221 #endif
1222
1211 #if defined(OS_MACOSX) 1223 #if defined(OS_MACOSX)
1212 void RenderViewImpl::PluginFocusChanged(bool focused, int plugin_id) { 1224 void RenderViewImpl::PluginFocusChanged(bool focused, int plugin_id) {
1213 Send(new ViewHostMsg_PluginFocusChanged(routing_id(), focused, plugin_id)); 1225 Send(new ViewHostMsg_PluginFocusChanged(routing_id(), focused, plugin_id));
1214 } 1226 }
1215 1227
1216 void RenderViewImpl::OnGetRenderedText() { 1228 void RenderViewImpl::OnGetRenderedText() {
1217 if (!webview()) 1229 if (!webview())
1218 return; 1230 return;
1219 1231
1220 if (!webview()->mainFrame()->isWebLocalFrame()) 1232 if (!webview()->mainFrame()->isWebLocalFrame())
(...skipping 1687 matching lines...) Expand 10 before | Expand all | Expand 10 after
2908 const std::vector<blink::WebCompositionUnderline>& underlines, 2920 const std::vector<blink::WebCompositionUnderline>& underlines,
2909 const gfx::Range& replacement_range, 2921 const gfx::Range& replacement_range,
2910 int selection_start, 2922 int selection_start,
2911 int selection_end) { 2923 int selection_end) {
2912 #if defined(ENABLE_PLUGINS) 2924 #if defined(ENABLE_PLUGINS)
2913 if (focused_pepper_plugin_) { 2925 if (focused_pepper_plugin_) {
2914 focused_pepper_plugin_->render_frame()->OnImeSetComposition( 2926 focused_pepper_plugin_->render_frame()->OnImeSetComposition(
2915 text, underlines, selection_start, selection_end); 2927 text, underlines, selection_start, selection_end);
2916 return; 2928 return;
2917 } 2929 }
2930
2931 #if defined(OS_WIN)
2932 // When a plugin has focus, we create platform-specific IME data used by
2933 // our IME emulator and send it directly to the focused plugin, i.e. we
2934 // bypass WebKit. (WebPluginDelegate dispatches this IME data only when its
2935 // instance ID is the same one as the specified ID.)
2936 if (focused_plugin_id_ >= 0) {
2937 std::vector<int> clauses;
2938 std::vector<int> target;
2939 for (size_t i = 0; i < underlines.size(); ++i) {
2940 clauses.push_back(underlines[i].startOffset);
2941 clauses.push_back(underlines[i].endOffset);
2942 if (underlines[i].thick) {
2943 target.clear();
2944 target.push_back(underlines[i].startOffset);
2945 target.push_back(underlines[i].endOffset);
2946 }
2947 }
2948 std::set<WebPluginDelegateProxy*>::iterator it;
2949 for (it = plugin_delegates_.begin(); it != plugin_delegates_.end(); ++it) {
2950 (*it)->ImeCompositionUpdated(text, clauses, target, selection_end,
2951 focused_plugin_id_);
2952 }
2953 return;
2954 }
2955 #endif // OS_WIN
2918 #endif // ENABLE_PLUGINS 2956 #endif // ENABLE_PLUGINS
2919 if (replacement_range.IsValid() && webview()) { 2957 if (replacement_range.IsValid() && webview()) {
2920 // Select the text in |replacement_range|, it will then be replaced by 2958 // Select the text in |replacement_range|, it will then be replaced by
2921 // text added by the call to RenderWidget::OnImeSetComposition(). 2959 // text added by the call to RenderWidget::OnImeSetComposition().
2922 if (WebLocalFrame* frame = webview()->focusedFrame()->toWebLocalFrame()) { 2960 if (WebLocalFrame* frame = webview()->focusedFrame()->toWebLocalFrame()) {
2923 WebRange webrange = WebRange::fromDocumentRange( 2961 WebRange webrange = WebRange::fromDocumentRange(
2924 frame, replacement_range.start(), replacement_range.length()); 2962 frame, replacement_range.start(), replacement_range.length());
2925 if (!webrange.isNull()) 2963 if (!webrange.isNull())
2926 frame->selectRange(webrange); 2964 frame->selectRange(webrange);
2927 } 2965 }
2928 } 2966 }
2929 RenderWidget::OnImeSetComposition(text, 2967 RenderWidget::OnImeSetComposition(text,
2930 underlines, 2968 underlines,
2931 replacement_range, 2969 replacement_range,
2932 selection_start, 2970 selection_start,
2933 selection_end); 2971 selection_end);
2934 } 2972 }
2935 2973
2936 void RenderViewImpl::OnImeConfirmComposition( 2974 void RenderViewImpl::OnImeConfirmComposition(
2937 const base::string16& text, 2975 const base::string16& text,
2938 const gfx::Range& replacement_range, 2976 const gfx::Range& replacement_range,
2939 bool keep_selection) { 2977 bool keep_selection) {
2940 #if defined(ENABLE_PLUGINS) 2978 #if defined(ENABLE_PLUGINS)
2941 if (focused_pepper_plugin_) { 2979 if (focused_pepper_plugin_) {
2942 focused_pepper_plugin_->render_frame()->OnImeConfirmComposition( 2980 focused_pepper_plugin_->render_frame()->OnImeConfirmComposition(
2943 text, replacement_range, keep_selection); 2981 text, replacement_range, keep_selection);
2944 return; 2982 return;
2945 } 2983 }
2984 #if defined(OS_WIN)
2985 // Same as OnImeSetComposition(), we send the text from IMEs directly to
2986 // plugins. When we send IME text directly to plugins, we should not send
2987 // it to WebKit to prevent WebKit from controlling IMEs.
2988 // TODO(thakis): Honor |replacement_range| for plugins?
2989 if (focused_plugin_id_ >= 0) {
2990 std::set<WebPluginDelegateProxy*>::iterator it;
2991 for (it = plugin_delegates_.begin();
2992 it != plugin_delegates_.end(); ++it) {
2993 (*it)->ImeCompositionCompleted(text, focused_plugin_id_);
2994 }
2995 return;
2996 }
2997 #endif // OS_WIN
2946 #endif // ENABLE_PLUGINS 2998 #endif // ENABLE_PLUGINS
2947 if (replacement_range.IsValid() && webview()) { 2999 if (replacement_range.IsValid() && webview()) {
2948 // Select the text in |replacement_range|, it will then be replaced by 3000 // Select the text in |replacement_range|, it will then be replaced by
2949 // text added by the call to RenderWidget::OnImeConfirmComposition(). 3001 // text added by the call to RenderWidget::OnImeConfirmComposition().
2950 if (WebLocalFrame* frame = webview()->focusedFrame()->toWebLocalFrame()) { 3002 if (WebLocalFrame* frame = webview()->focusedFrame()->toWebLocalFrame()) {
2951 WebRange webrange = WebRange::fromDocumentRange( 3003 WebRange webrange = WebRange::fromDocumentRange(
2952 frame, replacement_range.start(), replacement_range.length()); 3004 frame, replacement_range.start(), replacement_range.length());
2953 if (!webrange.isNull()) 3005 if (!webrange.isNull())
2954 frame->selectRange(webrange); 3006 frame->selectRange(webrange);
2955 } 3007 }
(...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after
3453 if (IsUseZoomForDSFEnabled()) { 3505 if (IsUseZoomForDSFEnabled()) {
3454 webview()->setZoomFactorForDeviceScaleFactor(device_scale_factor_); 3506 webview()->setZoomFactorForDeviceScaleFactor(device_scale_factor_);
3455 } else { 3507 } else {
3456 webview()->setDeviceScaleFactor(device_scale_factor_); 3508 webview()->setDeviceScaleFactor(device_scale_factor_);
3457 } 3509 }
3458 webview()->settings()->setPreferCompositingToLCDTextEnabled( 3510 webview()->settings()->setPreferCompositingToLCDTextEnabled(
3459 PreferCompositingToLCDText(compositor_deps_, device_scale_factor_)); 3511 PreferCompositingToLCDText(compositor_deps_, device_scale_factor_));
3460 } 3512 }
3461 3513
3462 } // namespace content 3514 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_view_impl.h ('k') | content/test/test_render_view_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698