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

Unified Diff: content/browser/renderer_host/render_widget_host_view_aura.cc

Issue 2208093004: Use focused RenderWidgetHostImpl instead of TextInputManager::GetActiveWidget() to obtain TextSelec… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressing kenrb@'s comments Created 4 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | content/browser/renderer_host/render_widget_host_view_aura_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/renderer_host/render_widget_host_view_aura.cc
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc
index 7286cec3fa775c32b472157008106267475c1b07..e79d666fe7a93e6211f6433ad012511b275b1e1b 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -3023,11 +3023,28 @@ void RenderWidgetHostViewAura::OnTextSelectionChanged(
TextInputManager* text_input_manager,
RenderWidgetHostViewBase* updated_view) {
#if defined(USE_X11) && !defined(OS_CHROMEOS)
- if (!GetTextInputManager() || !GetTextInputManager()->GetActiveWidget())
+ if (!GetTextInputManager())
return;
- const TextInputManager::TextSelection* text_selection =
- GetTextInputManager()->GetTextSelection();
+ const TextInputManager::TextSelection* text_selection = nullptr;
+ if (is_guest_view_hack_) {
+ // We obtain the TextSelection from focused RWH which is obtained from the
+ // frame tree. BrowserPlugin-based guests' RWH is not part of the frame tree
+ // and the focused RWH will be that of the embedder which is incorrect. In
+ // this case we should use TextSelection for |this| since RWHV for guest
+ // forwards text selection information to its platform view.
+ text_selection = GetTextInputManager()->GetTextSelection(this);
+ } else {
+ RenderWidgetHostImpl* focused_widget =
+ host_->delegate()->GetFocusedRenderWidgetHost(host_);
+ if (!!focused_widget && !!focused_widget->GetView()) {
+ text_selection = GetTextInputManager()->GetTextSelection(
+ focused_widget->GetView());
+ }
+ }
+
+ if (!text_selection)
+ return;
if (text_selection->text.empty() || text_selection->range.is_empty())
return;
« no previous file with comments | « no previous file | content/browser/renderer_host/render_widget_host_view_aura_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698