Chromium Code Reviews| Index: content/public/test/text_input_test_utils.cc |
| diff --git a/content/public/test/text_input_test_utils.cc b/content/public/test/text_input_test_utils.cc |
| index ed3e7483070dd4393ea62bfc5c8fa6e7fcfa2068..b875d93c00750fcceed3ee758ce9bba83a08971b 100644 |
| --- a/content/public/test/text_input_test_utils.cc |
| +++ b/content/public/test/text_input_test_utils.cc |
| @@ -13,6 +13,7 @@ |
| #include "content/browser/renderer_host/text_input_manager.h" |
| #include "content/browser/web_contents/web_contents_impl.h" |
| #include "content/common/text_input_state.h" |
| +#include "content/common/view_messages.h" |
| #include "content/public/browser/render_widget_host_view.h" |
| #include "content/public/browser/web_contents.h" |
| #include "content/public/browser/web_contents_observer.h" |
| @@ -35,7 +36,6 @@ class TextInputManagerTester::InternalObserver |
| public: |
| InternalObserver(WebContents* web_contents, TextInputManagerTester* tester) |
| : WebContentsObserver(web_contents), |
| - tester_(tester), |
| updated_view_(nullptr), |
| text_input_state_changed_(false) { |
| text_input_manager_ = |
| @@ -51,7 +51,14 @@ class TextInputManagerTester::InternalObserver |
| void set_update_text_input_state_called_callback( |
| const TextInputManagerTester::Callback& callback) { |
| - update_text_input_state_callback_ = callback; |
| + update_text_input_state_callback_.reset( |
| + new TextInputManagerTester::Callback(callback)); |
| + } |
| + |
| + void set_on_selection_bounds_changed_callback( |
| + const TextInputManagerTester::Callback& callback) { |
| + on_selection_bounds_changed_callback_.reset( |
| + new TextInputManagerTester::Callback(callback)); |
| } |
| const RenderWidgetHostView* GetUpdatedView() const { return updated_view_; } |
| @@ -68,18 +75,29 @@ class TextInputManagerTester::InternalObserver |
| return; |
| text_input_state_changed_ = did_change_state; |
| updated_view_ = updated_view; |
| - update_text_input_state_callback_.Run(tester_); |
| + if (update_text_input_state_callback_) |
| + update_text_input_state_callback_->Run(); |
| + } |
| + |
| + void OnSelectionBoundsChanged( |
| + TextInputManager* text_input_manager_, |
| + RenderWidgetHostViewBase* updated_view) override { |
| + updated_view_ = updated_view; |
| + if (on_selection_bounds_changed_callback_) |
| + on_selection_bounds_changed_callback_->Run(); |
| } |
| // WebContentsObserver implementation. |
| void WebContentsDestroyed() override { text_input_manager_ = nullptr; } |
| private: |
| - TextInputManagerTester* tester_; |
| TextInputManager* text_input_manager_; |
| RenderWidgetHostViewBase* updated_view_; |
| bool text_input_state_changed_; |
| - TextInputManagerTester::Callback update_text_input_state_callback_; |
| + std::unique_ptr<TextInputManagerTester::Callback> |
|
sky
2016/07/01 00:03:49
You shouldn't need unique_ptrs for these. Instead
EhsanK
2016/07/01 00:29:57
Thanks! This is neat.
|
| + update_text_input_state_callback_; |
| + std::unique_ptr<TextInputManagerTester::Callback> |
| + on_selection_bounds_changed_callback_; |
| DISALLOW_COPY_AND_ASSIGN(InternalObserver); |
| }; |
| @@ -226,6 +244,11 @@ void TextInputManagerTester::SetUpdateTextInputStateCalledCallback( |
| observer_->set_update_text_input_state_called_callback(callback); |
| } |
| +void TextInputManagerTester::SetOnSelectionBoundsChangedCallback( |
| + const Callback& callback) { |
| + observer_->set_on_selection_bounds_changed_callback(callback); |
| +} |
| + |
| bool TextInputManagerTester::GetTextInputType(ui::TextInputType* type) { |
| DCHECK(observer_->text_input_manager()); |
| const TextInputState* state = |