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

Side by Side Diff: Source/web/tests/WebViewTest.cpp

Issue 707723002: Refactor Autofill for OOPIF (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: more stuff Created 6 years, 1 month 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
« no previous file with comments | « Source/web/WebViewImpl.cpp ('k') | public/web/WebLocalFrame.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 1334 matching lines...) Expand 10 before | Expand all | Expand 10 after
1345 int m_textChangesWhileNotIgnored; 1345 int m_textChangesWhileNotIgnored;
1346 int m_userGestureNotificationsCount; 1346 int m_userGestureNotificationsCount;
1347 }; 1347 };
1348 1348
1349 1349
1350 TEST_F(WebViewTest, LosingFocusDoesNotTriggerAutofillTextChange) 1350 TEST_F(WebViewTest, LosingFocusDoesNotTriggerAutofillTextChange)
1351 { 1351 {
1352 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("input_field_populated.html")); 1352 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("input_field_populated.html"));
1353 MockAutofillClient client; 1353 MockAutofillClient client;
1354 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "input_fiel d_populated.html"); 1354 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "input_fiel d_populated.html");
1355 webView->setAutofillClient(&client); 1355 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webView->mainFrame());
1356 frame->setAutofillClient(&client);
1356 webView->setInitialFocus(false); 1357 webView->setInitialFocus(false);
1357 1358
1358 // Set up a composition that needs to be committed. 1359 // Set up a composition that needs to be committed.
1359 WebVector<WebCompositionUnderline> emptyUnderlines; 1360 WebVector<WebCompositionUnderline> emptyUnderlines;
1360 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webView->mainFrame());
1361 frame->setEditableSelectionOffsets(4, 10); 1361 frame->setEditableSelectionOffsets(4, 10);
1362 frame->setCompositionFromExistingText(8, 12, emptyUnderlines); 1362 frame->setCompositionFromExistingText(8, 12, emptyUnderlines);
1363 WebTextInputInfo info = webView->textInputInfo(); 1363 WebTextInputInfo info = webView->textInputInfo();
1364 EXPECT_EQ(4, info.selectionStart); 1364 EXPECT_EQ(4, info.selectionStart);
1365 EXPECT_EQ(10, info.selectionEnd); 1365 EXPECT_EQ(10, info.selectionEnd);
1366 EXPECT_EQ(8, info.compositionStart); 1366 EXPECT_EQ(8, info.compositionStart);
1367 EXPECT_EQ(12, info.compositionEnd); 1367 EXPECT_EQ(12, info.compositionEnd);
1368 1368
1369 // Clear the focus and track that the subsequent composition commit does not trigger a 1369 // Clear the focus and track that the subsequent composition commit does not trigger a
1370 // text changed notification for autofill. 1370 // text changed notification for autofill.
1371 client.clearChangeCounts(); 1371 client.clearChangeCounts();
1372 webView->setFocus(false); 1372 webView->setFocus(false);
1373 EXPECT_EQ(1, client.textChangesWhileIgnored()); 1373 EXPECT_EQ(1, client.textChangesWhileIgnored());
1374 EXPECT_EQ(0, client.textChangesWhileNotIgnored()); 1374 EXPECT_EQ(0, client.textChangesWhileNotIgnored());
1375 1375
1376 webView->setAutofillClient(0); 1376 frame->setAutofillClient(0);
1377 } 1377 }
1378 1378
1379 TEST_F(WebViewTest, ConfirmCompositionTriggersAutofillTextChange) 1379 TEST_F(WebViewTest, ConfirmCompositionTriggersAutofillTextChange)
1380 { 1380 {
1381 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("input_field_populated.html")); 1381 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("input_field_populated.html"));
1382 MockAutofillClient client; 1382 MockAutofillClient client;
1383 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "input_fiel d_populated.html"); 1383 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "input_fiel d_populated.html");
1384 webView->setAutofillClient(&client); 1384 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webView->mainFrame());
1385 frame->setAutofillClient(&client);
1385 webView->setInitialFocus(false); 1386 webView->setInitialFocus(false);
1386 1387
1387 // Set up a composition that needs to be committed. 1388 // Set up a composition that needs to be committed.
1388 std::string compositionText("testingtext"); 1389 std::string compositionText("testingtext");
1389 1390
1390 WebVector<WebCompositionUnderline> emptyUnderlines; 1391 WebVector<WebCompositionUnderline> emptyUnderlines;
1391 webView->setComposition(WebString::fromUTF8(compositionText.c_str()), emptyU nderlines, 0, compositionText.length()); 1392 webView->setComposition(WebString::fromUTF8(compositionText.c_str()), emptyU nderlines, 0, compositionText.length());
1392 1393
1393 WebTextInputInfo info = webView->textInputInfo(); 1394 WebTextInputInfo info = webView->textInputInfo();
1394 EXPECT_EQ(0, info.selectionStart); 1395 EXPECT_EQ(0, info.selectionStart);
1395 EXPECT_EQ((int) compositionText.length(), info.selectionEnd); 1396 EXPECT_EQ((int) compositionText.length(), info.selectionEnd);
1396 EXPECT_EQ(0, info.compositionStart); 1397 EXPECT_EQ(0, info.compositionStart);
1397 EXPECT_EQ((int) compositionText.length(), info.compositionEnd); 1398 EXPECT_EQ((int) compositionText.length(), info.compositionEnd);
1398 1399
1399 client.clearChangeCounts(); 1400 client.clearChangeCounts();
1400 webView->confirmComposition(); 1401 webView->confirmComposition();
1401 EXPECT_EQ(0, client.textChangesWhileIgnored()); 1402 EXPECT_EQ(0, client.textChangesWhileIgnored());
1402 EXPECT_EQ(1, client.textChangesWhileNotIgnored()); 1403 EXPECT_EQ(1, client.textChangesWhileNotIgnored());
1403 1404
1404 webView->setAutofillClient(0); 1405 frame->setAutofillClient(0);
1405 } 1406 }
1406 1407
1407 TEST_F(WebViewTest, SetCompositionFromExistingTextTriggersAutofillTextChange) 1408 TEST_F(WebViewTest, SetCompositionFromExistingTextTriggersAutofillTextChange)
1408 { 1409 {
1409 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("input_field_populated.html")); 1410 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("input_field_populated.html"));
1410 MockAutofillClient client; 1411 MockAutofillClient client;
1411 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "input_fiel d_populated.html", true); 1412 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "input_fiel d_populated.html", true);
1412 webView->setAutofillClient(&client); 1413 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webView->mainFrame());
1414 frame->setAutofillClient(&client);
1413 webView->setInitialFocus(false); 1415 webView->setInitialFocus(false);
1414 1416
1415 WebVector<WebCompositionUnderline> emptyUnderlines; 1417 WebVector<WebCompositionUnderline> emptyUnderlines;
1416 1418
1417 client.clearChangeCounts(); 1419 client.clearChangeCounts();
1418 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webView->mainFrame());
1419 frame->setCompositionFromExistingText(8, 12, emptyUnderlines); 1420 frame->setCompositionFromExistingText(8, 12, emptyUnderlines);
1420 1421
1421 WebTextInputInfo info = webView->textInputInfo(); 1422 WebTextInputInfo info = webView->textInputInfo();
1422 EXPECT_EQ("0123456789abcdefghijklmnopqrstuvwxyz", std::string(info.value.utf 8().data())); 1423 EXPECT_EQ("0123456789abcdefghijklmnopqrstuvwxyz", std::string(info.value.utf 8().data()));
1423 EXPECT_EQ(8, info.compositionStart); 1424 EXPECT_EQ(8, info.compositionStart);
1424 EXPECT_EQ(12, info.compositionEnd); 1425 EXPECT_EQ(12, info.compositionEnd);
1425 1426
1426 EXPECT_EQ(0, client.textChangesWhileIgnored()); 1427 EXPECT_EQ(0, client.textChangesWhileIgnored());
1427 EXPECT_EQ(0, client.textChangesWhileNotIgnored()); 1428 EXPECT_EQ(0, client.textChangesWhileNotIgnored());
1428 1429
1429 WebDocument document = webView->mainFrame()->document(); 1430 WebDocument document = webView->mainFrame()->document();
1430 EXPECT_EQ(WebString::fromUTF8("none"), document.getElementById("inputEvent" ).firstChild().nodeValue()); 1431 EXPECT_EQ(WebString::fromUTF8("none"), document.getElementById("inputEvent" ).firstChild().nodeValue());
1431 1432
1432 webView->setAutofillClient(0); 1433 frame->setAutofillClient(0);
1433 } 1434 }
1434 1435
1435 TEST_F(WebViewTest, ShadowRoot) 1436 TEST_F(WebViewTest, ShadowRoot)
1436 { 1437 {
1437 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("shadow_dom_test.html")); 1438 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("shadow_dom_test.html"));
1438 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(m_baseURL + "sh adow_dom_test.html", true); 1439 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(m_baseURL + "sh adow_dom_test.html", true);
1439 1440
1440 WebDocument document = webViewImpl->mainFrame()->document(); 1441 WebDocument document = webViewImpl->mainFrame()->document();
1441 { 1442 {
1442 WebElement elementWithShadowRoot = document.getElementById("shadowroot") ; 1443 WebElement elementWithShadowRoot = document.getElementById("shadowroot") ;
(...skipping 694 matching lines...) Expand 10 before | Expand all | Expand 10 after
2137 m_webViewHelper.reset(); 2138 m_webViewHelper.reset();
2138 } 2139 }
2139 2140
2140 // Check that the WebAutofillClient is correctly notified about first user 2141 // Check that the WebAutofillClient is correctly notified about first user
2141 // gestures after load, following various input events. 2142 // gestures after load, following various input events.
2142 TEST_F(WebViewTest, FirstUserGestureObservedKeyEvent) 2143 TEST_F(WebViewTest, FirstUserGestureObservedKeyEvent)
2143 { 2144 {
2144 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("form.html")); 2145 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("form.html"));
2145 MockAutofillClient client; 2146 MockAutofillClient client;
2146 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "form.html" , true); 2147 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "form.html" , true);
2147 webView->setAutofillClient(&client); 2148 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webView->mainFrame());
2149 frame->setAutofillClient(&client);
2148 webView->setInitialFocus(false); 2150 webView->setInitialFocus(false);
2149 2151
2150 EXPECT_EQ(0, client.getUserGestureNotificationsCount()); 2152 EXPECT_EQ(0, client.getUserGestureNotificationsCount());
2151 2153
2152 WebKeyboardEvent keyEvent; 2154 WebKeyboardEvent keyEvent;
2153 keyEvent.windowsKeyCode = VKEY_SPACE; 2155 keyEvent.windowsKeyCode = VKEY_SPACE;
2154 keyEvent.type = WebInputEvent::RawKeyDown; 2156 keyEvent.type = WebInputEvent::RawKeyDown;
2155 keyEvent.setKeyIdentifierFromWindowsKeyCode(); 2157 keyEvent.setKeyIdentifierFromWindowsKeyCode();
2156 webView->handleInputEvent(keyEvent); 2158 webView->handleInputEvent(keyEvent);
2157 keyEvent.type = WebInputEvent::KeyUp; 2159 keyEvent.type = WebInputEvent::KeyUp;
2158 webView->handleInputEvent(keyEvent); 2160 webView->handleInputEvent(keyEvent);
2159 2161
2160 EXPECT_EQ(1, client.getUserGestureNotificationsCount()); 2162 EXPECT_EQ(1, client.getUserGestureNotificationsCount());
2161 webView->setAutofillClient(0); 2163 frame->setAutofillClient(0);
2162 } 2164 }
2163 2165
2164 TEST_F(WebViewTest, FirstUserGestureObservedMouseEvent) 2166 TEST_F(WebViewTest, FirstUserGestureObservedMouseEvent)
2165 { 2167 {
2166 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("form.html")); 2168 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("form.html"));
2167 MockAutofillClient client; 2169 MockAutofillClient client;
2168 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "form.html" , true); 2170 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "form.html" , true);
2169 webView->setAutofillClient(&client); 2171 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webView->mainFrame());
2172 frame->setAutofillClient(&client);
2170 webView->setInitialFocus(false); 2173 webView->setInitialFocus(false);
2171 2174
2172 EXPECT_EQ(0, client.getUserGestureNotificationsCount()); 2175 EXPECT_EQ(0, client.getUserGestureNotificationsCount());
2173 2176
2174 WebMouseEvent mouseEvent; 2177 WebMouseEvent mouseEvent;
2175 mouseEvent.button = WebMouseEvent::ButtonLeft; 2178 mouseEvent.button = WebMouseEvent::ButtonLeft;
2176 mouseEvent.x = 1; 2179 mouseEvent.x = 1;
2177 mouseEvent.y = 1; 2180 mouseEvent.y = 1;
2178 mouseEvent.clickCount = 1; 2181 mouseEvent.clickCount = 1;
2179 mouseEvent.type = WebInputEvent::MouseDown; 2182 mouseEvent.type = WebInputEvent::MouseDown;
2180 webView->handleInputEvent(mouseEvent); 2183 webView->handleInputEvent(mouseEvent);
2181 mouseEvent.type = WebInputEvent::MouseUp; 2184 mouseEvent.type = WebInputEvent::MouseUp;
2182 webView->handleInputEvent(mouseEvent); 2185 webView->handleInputEvent(mouseEvent);
2183 2186
2184 EXPECT_EQ(1, client.getUserGestureNotificationsCount()); 2187 EXPECT_EQ(1, client.getUserGestureNotificationsCount());
2185 webView->setAutofillClient(0); 2188 frame->setAutofillClient(0);
2186 } 2189 }
2187 2190
2188 TEST_F(WebViewTest, FirstUserGestureObservedGestureTap) 2191 TEST_F(WebViewTest, FirstUserGestureObservedGestureTap)
2189 { 2192 {
2190 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("longpress_selection.html")); 2193 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("longpress_selection.html"));
2191 MockAutofillClient client; 2194 MockAutofillClient client;
2192 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "longpress_ selection.html", true); 2195 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "longpress_ selection.html", true);
2193 webView->setAutofillClient(&client); 2196 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webView->mainFrame());
2197 frame->setAutofillClient(&client);
2194 webView->setInitialFocus(false); 2198 webView->setInitialFocus(false);
2195 2199
2196 EXPECT_EQ(0, client.getUserGestureNotificationsCount()); 2200 EXPECT_EQ(0, client.getUserGestureNotificationsCount());
2197 2201
2198 EXPECT_TRUE(tapElementById(webView, WebInputEvent::GestureTap, WebString::fr omUTF8("target"))); 2202 EXPECT_TRUE(tapElementById(webView, WebInputEvent::GestureTap, WebString::fr omUTF8("target")));
2199 2203
2200 EXPECT_EQ(1, client.getUserGestureNotificationsCount()); 2204 EXPECT_EQ(1, client.getUserGestureNotificationsCount());
2201 webView->setAutofillClient(0); 2205 frame->setAutofillClient(0);
2202 } 2206 }
2203 2207
2204 TEST_F(WebViewTest, CompareSelectAllToContentAsText) 2208 TEST_F(WebViewTest, CompareSelectAllToContentAsText)
2205 { 2209 {
2206 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("longpress_selection.html")); 2210 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("longpress_selection.html"));
2207 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "longpress_ selection.html", true); 2211 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "longpress_ selection.html", true);
2208 2212
2209 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webView->mainFrame()); 2213 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webView->mainFrame());
2210 frame->executeScript(WebScriptSource(WebString::fromUTF8("document.execComma nd('SelectAll', false, null)"))); 2214 frame->executeScript(WebScriptSource(WebString::fromUTF8("document.execComma nd('SelectAll', false, null)")));
2211 std::string actual = frame->selectionAsText().utf8(); 2215 std::string actual = frame->selectionAsText().utf8();
(...skipping 13 matching lines...) Expand all
2225 loadFrame(webView->mainFrame(), url); 2229 loadFrame(webView->mainFrame(), url);
2226 2230
2227 FrameView* frameView = m_webViewHelper.webViewImpl()->mainFrameImpl()->frame View(); 2231 FrameView* frameView = m_webViewHelper.webViewImpl()->mainFrameImpl()->frame View();
2228 2232
2229 // Auto-resizing used to ASSERT(needsLayout()) in RenderBlockFlow::layout. T his EXPECT is 2233 // Auto-resizing used to ASSERT(needsLayout()) in RenderBlockFlow::layout. T his EXPECT is
2230 // merely a dummy. The real test is that we don't trigger asserts in debug b uilds. 2234 // merely a dummy. The real test is that we don't trigger asserts in debug b uilds.
2231 EXPECT_FALSE(frameView->needsLayout()); 2235 EXPECT_FALSE(frameView->needsLayout());
2232 }; 2236 };
2233 2237
2234 } // namespace 2238 } // namespace
OLDNEW
« no previous file with comments | « Source/web/WebViewImpl.cpp ('k') | public/web/WebLocalFrame.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698