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

Unified Diff: chrome/browser/renderer_host/site_per_process_text_input_browsertest.cc

Issue 2235283003: Track composition range and character bounds on the browser side (Mac) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased to fix some crashing tests 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.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/renderer_host/site_per_process_text_input_browsertest.cc
diff --git a/chrome/browser/renderer_host/site_per_process_text_input_browsertest.cc b/chrome/browser/renderer_host/site_per_process_text_input_browsertest.cc
index 38443d3030b2d0beae064231f95932e440830148..8950f6056b3ee81d32bb519614442893a0688a86 100644
--- a/chrome/browser/renderer_host/site_per_process_text_input_browsertest.cc
+++ b/chrome/browser/renderer_host/site_per_process_text_input_browsertest.cc
@@ -565,17 +565,13 @@ IN_PROC_BROWSER_TEST_F(SitePerProcessTextInputManagerTest,
reset_state_observer.Wait();
}
-// TODO(ekaramad): Enable the following tests on other platforms when the
-// corresponding feature is implemented (http://crbug.com/578168).
-#if defined(USE_AURA)
// This test creates a page with multiple child frames and adds an <input> to
// each frame. Then, sequentially, each <input> is focused by sending a tab key.
-// Then, after |TextInputState.type| for a view is changed to text, another key
-// is pressed (a character) and then the test verifies that TextInputManager
-// receives the corresponding update on the change in selection bounds on the
-// browser side.
+// Then, after |TextInputState.type| for a view is changed to text, the test
+// sends a set composition IPC to the active widget and waits until the widget
+// updates its composition range.
IN_PROC_BROWSER_TEST_F(SitePerProcessTextInputManagerTest,
- TrackSelectionBoundsForAllFrames) {
+ TrackCompositionRangeForAllFrames) {
CreateIframePage("a(b,c(a,b),d)");
std::vector<content::RenderFrameHost*> frames{
GetFrame(IndexVector{}), GetFrame(IndexVector{0}),
@@ -585,34 +581,38 @@ IN_PROC_BROWSER_TEST_F(SitePerProcessTextInputManagerTest,
for (auto* frame : frames)
views.push_back(frame->GetView());
for (size_t i = 0; i < frames.size(); ++i)
- AddInputFieldToFrame(frames[i], "text", "", true);
+ AddInputFieldToFrame(frames[i], "text", "text", true);
content::WebContents* web_contents = active_contents();
- auto send_tab_insert_text_wait_for_bounds_change = [&web_contents](
+ auto send_tab_set_composition_wait_for_bounds_change = [&web_contents](
content::RenderWidgetHostView* view) {
ViewTextInputTypeObserver type_observer(web_contents, view,
ui::TEXT_INPUT_TYPE_TEXT);
SimulateKeyPress(web_contents, ui::DomKey::TAB, ui::DomCode::TAB,
ui::VKEY_TAB, false, false, false, false);
type_observer.Wait();
- ViewSelectionBoundsChangedObserver bounds_observer(web_contents, view);
- SimulateKeyPress(web_contents, ui::DomKey::FromCharacter('E'),
- ui::DomCode::US_E, ui::VKEY_E, false, false, false, false);
- bounds_observer.Wait();
+
+ ViewCompositionRangeChangedObserver range_observer(web_contents, view);
+ EXPECT_TRUE(content::RequestCompositionInfoFromActiveWidget(web_contents));
+ range_observer.Wait();
};
for (auto* view : views)
- send_tab_insert_text_wait_for_bounds_change(view);
+ send_tab_set_composition_wait_for_bounds_change(view);
}
+// TODO(ekaramad): Enable the following tests on other platforms when the
+// corresponding feature is implemented (http://crbug.com/578168).
+#if defined(USE_AURA)
// This test creates a page with multiple child frames and adds an <input> to
// each frame. Then, sequentially, each <input> is focused by sending a tab key.
-// Then, after |TextInputState.type| for a view is changed to text, the test
-// sends a set composition IPC to the active widget and waits until the widget
-// updates its composition range.
+// Then, after |TextInputState.type| for a view is changed to text, another key
+// is pressed (a character) and then the test verifies that TextInputManager
+// receives the corresponding update on the change in selection bounds on the
+// browser side.
IN_PROC_BROWSER_TEST_F(SitePerProcessTextInputManagerTest,
- TrackCompositionRangeForAllFrames) {
+ TrackSelectionBoundsForAllFrames) {
CreateIframePage("a(b,c(a,b),d)");
std::vector<content::RenderFrameHost*> frames{
GetFrame(IndexVector{}), GetFrame(IndexVector{0}),
@@ -622,24 +622,25 @@ IN_PROC_BROWSER_TEST_F(SitePerProcessTextInputManagerTest,
for (auto* frame : frames)
views.push_back(frame->GetView());
for (size_t i = 0; i < frames.size(); ++i)
- AddInputFieldToFrame(frames[i], "text", "text", true);
+ AddInputFieldToFrame(frames[i], "text", "", true);
content::WebContents* web_contents = active_contents();
- auto send_tab_set_composition_wait_for_bounds_change = [&web_contents](
+ auto send_tab_insert_text_wait_for_bounds_change = [&web_contents](
content::RenderWidgetHostView* view) {
ViewTextInputTypeObserver type_observer(web_contents, view,
ui::TEXT_INPUT_TYPE_TEXT);
SimulateKeyPress(web_contents, ui::DomKey::TAB, ui::DomCode::TAB,
ui::VKEY_TAB, false, false, false, false);
type_observer.Wait();
- ViewCompositionRangeChangedObserver range_observer(web_contents, view);
- EXPECT_TRUE(content::RequestCompositionInfoFromActiveWidget(web_contents));
- range_observer.Wait();
+ ViewSelectionBoundsChangedObserver bounds_observer(web_contents, view);
+ SimulateKeyPress(web_contents, ui::DomKey::FromCharacter('E'),
+ ui::DomCode::US_E, ui::VKEY_E, false, false, false, false);
+ bounds_observer.Wait();
};
for (auto* view : views)
- send_tab_set_composition_wait_for_bounds_change(view);
+ send_tab_insert_text_wait_for_bounds_change(view);
}
// This test creates a page with multiple child frames and adds an <input> to
« no previous file with comments | « no previous file | content/browser/renderer_host/render_widget_host_view_aura.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698