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

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_aura_unittest.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: Fixed some crashes 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 unified diff | Download patch
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/browser/renderer_host/render_widget_host_view_aura.h" 5 #include "content/browser/renderer_host/render_widget_host_view_aura.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <tuple> 10 #include <tuple>
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 OverscrollMode current_mode_; 156 OverscrollMode current_mode_;
157 OverscrollMode completed_mode_; 157 OverscrollMode completed_mode_;
158 float delta_x_; 158 float delta_x_;
159 float delta_y_; 159 float delta_y_;
160 160
161 DISALLOW_COPY_AND_ASSIGN(TestOverscrollDelegate); 161 DISALLOW_COPY_AND_ASSIGN(TestOverscrollDelegate);
162 }; 162 };
163 163
164 class MockRenderWidgetHostDelegate : public RenderWidgetHostDelegate { 164 class MockRenderWidgetHostDelegate : public RenderWidgetHostDelegate {
165 public: 165 public:
166 MockRenderWidgetHostDelegate() : rwh_(nullptr), is_fullscreen_(false) {} 166 MockRenderWidgetHostDelegate()
167 : rwh_(nullptr), is_fullscreen_(false), focused_widget_(nullptr) {}
167 ~MockRenderWidgetHostDelegate() override {} 168 ~MockRenderWidgetHostDelegate() override {}
168 const NativeWebKeyboardEvent* last_event() const { return last_event_.get(); } 169 const NativeWebKeyboardEvent* last_event() const { return last_event_.get(); }
169 void set_widget_host(RenderWidgetHostImpl* rwh) { rwh_ = rwh; } 170 void set_widget_host(RenderWidgetHostImpl* rwh) { rwh_ = rwh; }
170 void set_is_fullscreen(bool is_fullscreen) { is_fullscreen_ = is_fullscreen; } 171 void set_is_fullscreen(bool is_fullscreen) { is_fullscreen_ = is_fullscreen; }
171 TextInputManager* GetTextInputManager() override { 172 TextInputManager* GetTextInputManager() override {
172 return &text_input_manager_; 173 return &text_input_manager_;
173 } 174 }
175 RenderWidgetHostImpl* GetFocusedRenderWidgetHost(
176 RenderWidgetHostImpl* receiving_widget) override {
177 return !!focused_widget_ ? focused_widget_ : receiving_widget;
178 }
179
180 void set_focused_widget(RenderWidgetHostImpl* focused) {
181 focused_widget_ = focused;
182 }
174 183
175 protected: 184 protected:
176 // RenderWidgetHostDelegate: 185 // RenderWidgetHostDelegate:
177 bool PreHandleKeyboardEvent(const NativeWebKeyboardEvent& event, 186 bool PreHandleKeyboardEvent(const NativeWebKeyboardEvent& event,
178 bool* is_keyboard_shortcut) override { 187 bool* is_keyboard_shortcut) override {
179 last_event_.reset(new NativeWebKeyboardEvent(event)); 188 last_event_.reset(new NativeWebKeyboardEvent(event));
180 return true; 189 return true;
181 } 190 }
182 void Cut() override {} 191 void Cut() override {}
183 void Copy() override {} 192 void Copy() override {}
184 void Paste() override {} 193 void Paste() override {}
185 void SelectAll() override {} 194 void SelectAll() override {}
186 void SendScreenRects() override { 195 void SendScreenRects() override {
187 if (rwh_) 196 if (rwh_)
188 rwh_->SendScreenRects(); 197 rwh_->SendScreenRects();
189 } 198 }
190 bool IsFullscreenForCurrentTab() const override { return is_fullscreen_; } 199 bool IsFullscreenForCurrentTab() const override { return is_fullscreen_; }
191 200
192 private: 201 private:
193 std::unique_ptr<NativeWebKeyboardEvent> last_event_; 202 std::unique_ptr<NativeWebKeyboardEvent> last_event_;
194 RenderWidgetHostImpl* rwh_; 203 RenderWidgetHostImpl* rwh_;
195 bool is_fullscreen_; 204 bool is_fullscreen_;
196 TextInputManager text_input_manager_; 205 TextInputManager text_input_manager_;
206 RenderWidgetHostImpl* focused_widget_;
197 207
198 DISALLOW_COPY_AND_ASSIGN(MockRenderWidgetHostDelegate); 208 DISALLOW_COPY_AND_ASSIGN(MockRenderWidgetHostDelegate);
199 }; 209 };
200 210
201 // Simple observer that keeps track of changes to a window for tests. 211 // Simple observer that keeps track of changes to a window for tests.
202 class TestWindowObserver : public aura::WindowObserver { 212 class TestWindowObserver : public aura::WindowObserver {
203 public: 213 public:
204 explicit TestWindowObserver(aura::Window* window_to_observe) 214 explicit TestWindowObserver(aura::Window* window_to_observe)
205 : window_(window_to_observe) { 215 : window_(window_to_observe) {
206 window_->AddObserver(this); 216 window_->AddObserver(this);
(...skipping 4290 matching lines...) Expand 10 before | Expand all | Expand 10 after
4497 } 4507 }
4498 } 4508 }
4499 4509
4500 // This test is for text range. 4510 // This test is for text range.
4501 TEST_F(InputMethodStateAuraTest, GetTextRange) { 4511 TEST_F(InputMethodStateAuraTest, GetTextRange) {
4502 base::string16 text = base::ASCIIToUTF16("some text of length 22"); 4512 base::string16 text = base::ASCIIToUTF16("some text of length 22");
4503 size_t offset = 0U; 4513 size_t offset = 0U;
4504 gfx::Range selection_range; 4514 gfx::Range selection_range;
4505 4515
4506 for (auto index : active_view_sequence_) { 4516 for (auto index : active_view_sequence_) {
4517 render_widget_host_delegate()->set_focused_widget(
4518 RenderWidgetHostImpl::From(views_[index]->GetRenderWidgetHost()));
4507 ActivateViewForTextInputManager(views_[index], ui::TEXT_INPUT_TYPE_TEXT); 4519 ActivateViewForTextInputManager(views_[index], ui::TEXT_INPUT_TYPE_TEXT);
4508 gfx::Range expected_range(offset, offset + text.length()); 4520 gfx::Range expected_range(offset, offset + text.length());
4509 views_[index]->SelectionChanged(text, offset, selection_range); 4521 views_[index]->SelectionChanged(text, offset, selection_range);
4510 gfx::Range range_from_client; 4522 gfx::Range range_from_client;
4511 4523
4512 // For aura this always returns true. 4524 // For aura this always returns true.
4513 EXPECT_TRUE(text_input_client()->GetTextRange(&range_from_client)); 4525 EXPECT_TRUE(text_input_client()->GetTextRange(&range_from_client));
4514 EXPECT_EQ(expected_range, range_from_client); 4526 EXPECT_EQ(expected_range, range_from_client);
4515 4527
4516 // Changing offset to make sure that the next view has a different text 4528 // Changing offset to make sure that the next view has a different text
4517 // selection. 4529 // selection.
4518 offset++; 4530 offset++;
4519 } 4531 }
4520 } 4532 }
4521 4533
4522 // This test is for selection range. 4534 // This test is for selection range.
4523 TEST_F(InputMethodStateAuraTest, GetSelectionRange) { 4535 TEST_F(InputMethodStateAuraTest, GetSelectionRange) {
4524 base::string16 text; 4536 base::string16 text;
4525 gfx::Range expected_range(0U, 1U); 4537 gfx::Range expected_range(0U, 1U);
4526 4538
4527 for (auto index : active_view_sequence_) { 4539 for (auto index : active_view_sequence_) {
4540 render_widget_host_delegate()->set_focused_widget(
4541 RenderWidgetHostImpl::From(views_[index]->GetRenderWidgetHost()));
4528 ActivateViewForTextInputManager(views_[index], ui::TEXT_INPUT_TYPE_TEXT); 4542 ActivateViewForTextInputManager(views_[index], ui::TEXT_INPUT_TYPE_TEXT);
4529 views_[index]->SelectionChanged(text, 0U, expected_range); 4543 views_[index]->SelectionChanged(text, 0U, expected_range);
4530 gfx::Range range_from_client; 4544 gfx::Range range_from_client;
4531 4545
4532 // This method always returns true. 4546 // This method always returns true.
4533 EXPECT_TRUE(text_input_client()->GetSelectionRange(&range_from_client)); 4547 EXPECT_TRUE(text_input_client()->GetSelectionRange(&range_from_client));
4534 EXPECT_EQ(expected_range, range_from_client); 4548 EXPECT_EQ(expected_range, range_from_client);
4535 4549
4536 // Changing range to make sure that the next view has a different text 4550 // Changing range to make sure that the next view has a different text
4537 // selection. 4551 // selection.
4538 expected_range.set_end(expected_range.end() + 1U); 4552 expected_range.set_end(expected_range.end() + 1U);
4539 } 4553 }
4540 } 4554 }
4541 4555
4542 } // namespace content 4556 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698