OLD | NEW |
---|---|
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/browser/renderer_host/text_input_manager.h" | 5 #include "content/browser/renderer_host/text_input_manager.h" |
6 | 6 |
7 #include "content/browser/renderer_host/render_widget_host_impl.h" | 7 #include "content/browser/renderer_host/render_widget_host_impl.h" |
8 #include "content/browser/renderer_host/render_widget_host_view_base.h" | 8 #include "content/browser/renderer_host/render_widget_host_view_base.h" |
9 #include "content/common/view_messages.h" | 9 #include "content/common/view_messages.h" |
10 #include "ui/gfx/geometry/rect.h" | 10 #include "ui/gfx/geometry/rect.h" |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
77 const TextInputState& text_input_state) { | 77 const TextInputState& text_input_state) { |
78 DCHECK(IsRegistered(view)); | 78 DCHECK(IsRegistered(view)); |
79 | 79 |
80 // Since |view| is registgered, we already have a previous value for its | 80 // Since |view| is registgered, we already have a previous value for its |
81 // TextInputState. | 81 // TextInputState. |
82 bool changed = AreDifferentTextInputStates(text_input_state_map_[view], | 82 bool changed = AreDifferentTextInputStates(text_input_state_map_[view], |
83 text_input_state); | 83 text_input_state); |
84 | 84 |
85 text_input_state_map_[view] = text_input_state; | 85 text_input_state_map_[view] = text_input_state; |
86 | 86 |
87 // |active_view_| is only updated when the state for |view| is not none. | 87 // |active_view_| is only updated when the state for |view| is not none. |
Charlie Reis
2016/07/21 23:48:18
Let's update this as well. Maybe that it "only ne
EhsanK
2016/07/25 21:09:57
Acknowledged.
| |
88 if (text_input_state.type != ui::TEXT_INPUT_TYPE_NONE) | 88 if (text_input_state.type != ui::TEXT_INPUT_TYPE_NONE && |
89 active_view_ != view) { | |
90 // |view| will become the new |active_view_|, which means the IPC to reset | |
91 // the TextInputState for |active_view_| has not arrived yet (and will be | |
92 // ignored later). So we should reset the TextInputState for |active_view_| | |
93 // manually. | |
94 if (active_view_) | |
95 UpdateTextInputState(active_view_, TextInputState()); | |
Charlie Reis
2016/07/21 23:48:18
This has a small risk of becoming an infinite recu
EhsanK
2016/07/25 21:09:57
The only reason I used recursion like this was to
| |
89 active_view_ = view; | 96 active_view_ = view; |
97 } | |
90 | 98 |
91 // If the state for |active_view_| is none, then we no longer have an | 99 // If the state for |active_view_| is none, then we no longer have an |
92 // |active_view_|. | 100 // |active_view_|. |
93 if (active_view_ == view && text_input_state.type == ui::TEXT_INPUT_TYPE_NONE) | 101 if (active_view_ == view && text_input_state.type == ui::TEXT_INPUT_TYPE_NONE) |
94 active_view_ = nullptr; | 102 active_view_ = nullptr; |
95 | 103 |
96 NotifyObserversAboutInputStateUpdate(view, changed); | 104 NotifyObserversAboutInputStateUpdate(view, changed); |
97 } | 105 } |
98 | 106 |
99 void TextInputManager::ImeCancelComposition(RenderWidgetHostViewBase* view) { | 107 void TextInputManager::ImeCancelComposition(RenderWidgetHostViewBase* view) { |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
226 TextInputManager::SelectionRegion::SelectionRegion( | 234 TextInputManager::SelectionRegion::SelectionRegion( |
227 const SelectionRegion& other) = default; | 235 const SelectionRegion& other) = default; |
228 | 236 |
229 TextInputManager::CompositionRangeInfo::CompositionRangeInfo() {} | 237 TextInputManager::CompositionRangeInfo::CompositionRangeInfo() {} |
230 | 238 |
231 TextInputManager::CompositionRangeInfo::CompositionRangeInfo( | 239 TextInputManager::CompositionRangeInfo::CompositionRangeInfo( |
232 const CompositionRangeInfo& other) = default; | 240 const CompositionRangeInfo& other) = default; |
233 | 241 |
234 TextInputManager::CompositionRangeInfo::~CompositionRangeInfo() {} | 242 TextInputManager::CompositionRangeInfo::~CompositionRangeInfo() {} |
235 | 243 |
236 } // namespace content | 244 } // namespace content |
OLD | NEW |