Index: chrome/test/functional/autofill.py |
=================================================================== |
--- chrome/test/functional/autofill.py (revision 80394) |
+++ chrome/test/functional/autofill.py (working copy) |
@@ -12,9 +12,6 @@ |
import pyauto_functional # Must be imported before pyauto |
import pyauto |
-TAB_KEYPRESS = 0x09 # Tab keyboard key press. |
-DOWN_KEYPRESS = 0x28 # Down arrow keyboard key press. |
-RETURN_KEYPRESS = 0x0D # Return keyboard key press. |
class AutofillTest(pyauto.PyUITest): |
"""Tests that autofill works correctly""" |
@@ -151,6 +148,22 @@ |
if 'EMAIL_ADDRESS' in self.GetAutofillProfile()['profiles'][0]: |
raise KeyError('TEST FAIL: Malformed email address is saved in profiles.') |
+ def _SendKeyEventsToPopulateForm(self, tab_index=0, windex=0): |
+ """Send key events to populate a web form with Autofill profile data. |
+ |
+ Args: |
+ tab_index: The tab index, default is 0. |
+ windex: The window index, default is 0. |
+ """ |
+ TAB_KEYPRESS = 0x09 # Tab keyboard key press. |
+ DOWN_KEYPRESS = 0x28 # Down arrow keyboard key press. |
+ RETURN_KEYPRESS = 0x0D # Return keyboard key press. |
+ |
+ self.SendWebkitKeyEvent(TAB_KEYPRESS, tab_index, windex) |
+ self.SendWebkitKeyEvent(DOWN_KEYPRESS, tab_index, windex) |
+ self.SendWebkitKeyEvent(DOWN_KEYPRESS, tab_index, windex) |
+ self.SendWebkitKeyEvent(RETURN_KEYPRESS, tab_index, windex) |
+ |
def testComparePhoneNumbers(self): |
"""Test phone fields parse correctly from a given profile. |
@@ -169,14 +182,7 @@ |
os.path.join('autofill', 'form_phones.html')) |
for profile_expected in profiles_expected: |
self.NavigateToURL(url) |
- # Tab keyboard key press. |
- self.SendWebkitKeyEvent(TAB_KEYPRESS, tab_index=0, windex=0) |
- # Down arrow keyboard key press. |
- self.SendWebkitKeyEvent(DOWN_KEYPRESS, tab_index=0, windex=0) |
- # Down arrow keyboard key press. |
- self.SendWebkitKeyEvent(DOWN_KEYPRESS, tab_index=0, windex=0) |
- # Return keyboard key press. |
- self.SendWebkitKeyEvent(RETURN_KEYPRESS, tab_index=0, windex=0) |
+ self._SendKeyEventsToPopulateForm() |
form_values = {} |
for key, value in profile_expected.iteritems(): |
js_returning_field_value = ( |
@@ -223,6 +229,40 @@ |
self.assertEqual(0, len(cc_infobar), |
'Save credit card infobar offered to save CC info.') |
+ def testNoAutofillForReadOnlyFields(self): |
+ """Test that Autofill does not fill in read-only fields.""" |
+ profile = {'NAME_FIRST': 'Bob', |
+ 'NAME_LAST': 'Smith', |
+ 'EMAIL_ADDRESS': 'bsmith@gmail.com', |
+ 'ADDRESS_HOME_LINE1': '1234 H St.', |
+ 'ADDRESS_HOME_CITY': 'San Jose', |
+ 'ADDRESS_HOME_STATE': 'CA', |
+ 'ADDRESS_HOME_ZIP': '95110', |
+ 'COMPANY_NAME': 'Company X', |
+ 'PHONE_HOME_WHOLE_NUMBER': '408-123-4567',} |
+ |
+ self.FillAutofillProfile(profiles=[profile]) |
+ url = self.GetHttpURLForDataPath( |
+ os.path.join('autofill', 'read_only_field_test.html')) |
+ self.NavigateToURL(url) |
+ self._SendKeyEventsToPopulateForm() |
+ js_return_readonly_field = ( |
+ 'var field_value = document.getElementById("email").value;' |
+ 'window.domAutomationController.send(field_value);') |
+ readonly_field_value = self.ExecuteJavascript( |
+ js_return_readonly_field, 0, 0) |
+ js_return_addrline1_field = ( |
+ 'var field_value = document.getElementById("address").value;' |
+ 'window.domAutomationController.send(field_value);') |
+ addrline1_field_value = self.ExecuteJavascript( |
+ js_return_addrline1_field, 0, 0) |
+ self.assertNotEqual( |
+ readonly_field_value, profile['EMAIL_ADDRESS'], |
+ 'Autofill filled in value for a read-only field.') |
+ self.assertEqual( |
+ addrline1_field_value, profile['ADDRESS_HOME_LINE1'], |
+ 'Unexpected value in the Address field.') |
+ |
def FormFillLatencyAfterSubmit(self): |
"""Test latency time on form submit with lots of stored Autofill profiles. |