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/public/test/text_input_test_utils.h" | 5 #include "content/public/test/text_input_test_utils.h" |
6 | 6 |
7 #include <unordered_set> | 7 #include <unordered_set> |
8 | 8 |
9 #include "content/browser/renderer_host/render_widget_host_impl.h" | 9 #include "content/browser/renderer_host/render_widget_host_impl.h" |
10 #include "content/browser/renderer_host/render_widget_host_view_aura.h" | 10 #include "content/browser/renderer_host/render_widget_host_view_aura.h" |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 | 51 |
52 void set_update_text_input_state_called_callback( | 52 void set_update_text_input_state_called_callback( |
53 const base::Closure& callback) { | 53 const base::Closure& callback) { |
54 update_text_input_state_callback_ = callback; | 54 update_text_input_state_callback_ = callback; |
55 } | 55 } |
56 | 56 |
57 void set_on_selection_bounds_changed_callback(const base::Closure& callback) { | 57 void set_on_selection_bounds_changed_callback(const base::Closure& callback) { |
58 on_selection_bounds_changed_callback_ = callback; | 58 on_selection_bounds_changed_callback_ = callback; |
59 } | 59 } |
60 | 60 |
| 61 void set_on_text_selection_changed_callback(const base::Closure& callback) { |
| 62 on_text_selection_changed_callback_ = callback; |
| 63 } |
| 64 |
61 const RenderWidgetHostView* GetUpdatedView() const { return updated_view_; } | 65 const RenderWidgetHostView* GetUpdatedView() const { return updated_view_; } |
62 | 66 |
63 bool text_input_state_changed() const { return text_input_state_changed_; } | 67 bool text_input_state_changed() const { return text_input_state_changed_; } |
64 | 68 |
65 TextInputManager* text_input_manager() const { return text_input_manager_; } | 69 TextInputManager* text_input_manager() const { return text_input_manager_; } |
66 | 70 |
67 // TextInputManager::Observer implementations. | 71 // TextInputManager::Observer implementations. |
68 void OnUpdateTextInputStateCalled(TextInputManager* text_input_manager, | 72 void OnUpdateTextInputStateCalled(TextInputManager* text_input_manager, |
69 RenderWidgetHostViewBase* updated_view, | 73 RenderWidgetHostViewBase* updated_view, |
70 bool did_change_state) override { | 74 bool did_change_state) override { |
71 if (text_input_manager_ != text_input_manager) | 75 if (text_input_manager_ != text_input_manager) |
72 return; | 76 return; |
73 text_input_state_changed_ = did_change_state; | 77 text_input_state_changed_ = did_change_state; |
74 updated_view_ = updated_view; | 78 updated_view_ = updated_view; |
75 if (!update_text_input_state_callback_.is_null()) | 79 if (!update_text_input_state_callback_.is_null()) |
76 update_text_input_state_callback_.Run(); | 80 update_text_input_state_callback_.Run(); |
77 } | 81 } |
78 | 82 |
79 void OnSelectionBoundsChanged( | 83 void OnSelectionBoundsChanged( |
80 TextInputManager* text_input_manager_, | 84 TextInputManager* text_input_manager_, |
81 RenderWidgetHostViewBase* updated_view) override { | 85 RenderWidgetHostViewBase* updated_view) override { |
82 updated_view_ = updated_view; | 86 updated_view_ = updated_view; |
83 if (!on_selection_bounds_changed_callback_.is_null()) | 87 if (!on_selection_bounds_changed_callback_.is_null()) |
84 on_selection_bounds_changed_callback_.Run(); | 88 on_selection_bounds_changed_callback_.Run(); |
85 } | 89 } |
86 | 90 |
| 91 void OnTextSelectionChanged(TextInputManager* text_input_manager, |
| 92 RenderWidgetHostViewBase* updated_view) override { |
| 93 updated_view_ = updated_view; |
| 94 if (!on_text_selection_changed_callback_.is_null()) |
| 95 on_text_selection_changed_callback_.Run(); |
| 96 } |
| 97 |
87 // WebContentsObserver implementation. | 98 // WebContentsObserver implementation. |
88 void WebContentsDestroyed() override { text_input_manager_ = nullptr; } | 99 void WebContentsDestroyed() override { text_input_manager_ = nullptr; } |
89 | 100 |
90 private: | 101 private: |
91 TextInputManager* text_input_manager_; | 102 TextInputManager* text_input_manager_; |
92 RenderWidgetHostViewBase* updated_view_; | 103 RenderWidgetHostViewBase* updated_view_; |
93 bool text_input_state_changed_; | 104 bool text_input_state_changed_; |
94 base::Closure update_text_input_state_callback_; | 105 base::Closure update_text_input_state_callback_; |
95 base::Closure on_selection_bounds_changed_callback_; | 106 base::Closure on_selection_bounds_changed_callback_; |
| 107 base::Closure on_text_selection_changed_callback_; |
96 | 108 |
97 DISALLOW_COPY_AND_ASSIGN(InternalObserver); | 109 DISALLOW_COPY_AND_ASSIGN(InternalObserver); |
98 }; | 110 }; |
99 | 111 |
100 // This class observes the lifetime of a RenderWidgetHostView. An instance of | 112 // This class observes the lifetime of a RenderWidgetHostView. An instance of |
101 // this class is used in TestRenderWidgetHostViewDestructionObserver to expose | 113 // this class is used in TestRenderWidgetHostViewDestructionObserver to expose |
102 // the required observer API for testing outside of content/. | 114 // the required observer API for testing outside of content/. |
103 class TestRenderWidgetHostViewDestructionObserver::InternalObserver | 115 class TestRenderWidgetHostViewDestructionObserver::InternalObserver |
104 : public RenderWidgetHostViewBaseObserver { | 116 : public RenderWidgetHostViewBaseObserver { |
105 public: | 117 public: |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
237 void TextInputManagerTester::SetUpdateTextInputStateCalledCallback( | 249 void TextInputManagerTester::SetUpdateTextInputStateCalledCallback( |
238 const base::Closure& callback) { | 250 const base::Closure& callback) { |
239 observer_->set_update_text_input_state_called_callback(callback); | 251 observer_->set_update_text_input_state_called_callback(callback); |
240 } | 252 } |
241 | 253 |
242 void TextInputManagerTester::SetOnSelectionBoundsChangedCallback( | 254 void TextInputManagerTester::SetOnSelectionBoundsChangedCallback( |
243 const base::Closure& callback) { | 255 const base::Closure& callback) { |
244 observer_->set_on_selection_bounds_changed_callback(callback); | 256 observer_->set_on_selection_bounds_changed_callback(callback); |
245 } | 257 } |
246 | 258 |
| 259 void TextInputManagerTester::SetOnTextSelectionChangedCallback( |
| 260 const base::Closure& callback) { |
| 261 observer_->set_on_text_selection_changed_callback(callback); |
| 262 } |
| 263 |
247 bool TextInputManagerTester::GetTextInputType(ui::TextInputType* type) { | 264 bool TextInputManagerTester::GetTextInputType(ui::TextInputType* type) { |
248 DCHECK(observer_->text_input_manager()); | 265 DCHECK(observer_->text_input_manager()); |
249 const TextInputState* state = | 266 const TextInputState* state = |
250 observer_->text_input_manager()->GetTextInputState(); | 267 observer_->text_input_manager()->GetTextInputState(); |
251 if (!state) | 268 if (!state) |
252 return false; | 269 return false; |
253 *type = state->type; | 270 *type = state->type; |
254 return true; | 271 return true; |
255 } | 272 } |
256 | 273 |
257 bool TextInputManagerTester::GetTextInputValue(std::string* value) { | 274 bool TextInputManagerTester::GetTextInputValue(std::string* value) { |
258 DCHECK(observer_->text_input_manager()); | 275 DCHECK(observer_->text_input_manager()); |
259 const TextInputState* state = | 276 const TextInputState* state = |
260 observer_->text_input_manager()->GetTextInputState(); | 277 observer_->text_input_manager()->GetTextInputState(); |
261 if (!state) | 278 if (!state) |
262 return false; | 279 return false; |
263 *value = state->value; | 280 *value = state->value; |
264 return true; | 281 return true; |
265 } | 282 } |
266 | 283 |
267 const RenderWidgetHostView* TextInputManagerTester::GetActiveView() { | 284 const RenderWidgetHostView* TextInputManagerTester::GetActiveView() { |
268 DCHECK(observer_->text_input_manager()); | 285 DCHECK(observer_->text_input_manager()); |
269 return observer_->text_input_manager()->active_view_for_testing(); | 286 return observer_->text_input_manager()->active_view_for_testing(); |
270 } | 287 } |
271 | 288 |
272 const RenderWidgetHostView* TextInputManagerTester::GetUpdatedView() { | 289 const RenderWidgetHostView* TextInputManagerTester::GetUpdatedView() { |
273 return observer_->GetUpdatedView(); | 290 return observer_->GetUpdatedView(); |
274 } | 291 } |
275 | 292 |
| 293 bool TextInputManagerTester::GetCurrentTextSelectionLength(size_t* length) { |
| 294 DCHECK(observer_->text_input_manager()); |
| 295 |
| 296 if (!observer_->text_input_manager()->GetActiveWidget()) |
| 297 return false; |
| 298 |
| 299 *length = observer_->text_input_manager()->GetTextSelection()->text.size(); |
| 300 return true; |
| 301 } |
| 302 |
276 bool TextInputManagerTester::IsTextInputStateChanged() { | 303 bool TextInputManagerTester::IsTextInputStateChanged() { |
277 return observer_->text_input_state_changed(); | 304 return observer_->text_input_state_changed(); |
278 } | 305 } |
279 | 306 |
280 TestRenderWidgetHostViewDestructionObserver:: | 307 TestRenderWidgetHostViewDestructionObserver:: |
281 TestRenderWidgetHostViewDestructionObserver(RenderWidgetHostView* view) | 308 TestRenderWidgetHostViewDestructionObserver(RenderWidgetHostView* view) |
282 : observer_( | 309 : observer_( |
283 new InternalObserver(static_cast<RenderWidgetHostViewBase*>(view))) {} | 310 new InternalObserver(static_cast<RenderWidgetHostViewBase*>(view))) {} |
284 | 311 |
285 TestRenderWidgetHostViewDestructionObserver:: | 312 TestRenderWidgetHostViewDestructionObserver:: |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
344 std::unique_ptr<TestInputMethodObserver> observer; | 371 std::unique_ptr<TestInputMethodObserver> observer; |
345 | 372 |
346 #ifdef USE_AURA | 373 #ifdef USE_AURA |
347 RenderWidgetHostViewAura* view = static_cast<RenderWidgetHostViewAura*>( | 374 RenderWidgetHostViewAura* view = static_cast<RenderWidgetHostViewAura*>( |
348 web_contents->GetRenderWidgetHostView()); | 375 web_contents->GetRenderWidgetHostView()); |
349 observer.reset(new InputMethodObserverAura(view->GetInputMethod())); | 376 observer.reset(new InputMethodObserverAura(view->GetInputMethod())); |
350 #endif | 377 #endif |
351 return observer; | 378 return observer; |
352 } | 379 } |
353 | 380 |
354 } // namespace content | 381 } // namespace content |
OLD | NEW |