Skip to content

Commit 8fff8da

Browse files
author
Nurhan Turgut
authored
[web] autofill hints (flutter#17887)
* adding autofill hints map from flutter values to the browser values, which will be used by the web engine: * removing unused reverse map * addressing reviewer comments * changing licences
1 parent fe14e03 commit 8fff8da

File tree

3 files changed

+89
-0
lines changed

3 files changed

+89
-0
lines changed

ci/licenses_golden/licenses_flutter

+1
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,7 @@ FILE: ../../../flutter/lib/web_ui/lib/src/engine/text/ruler.dart
494494
FILE: ../../../flutter/lib/web_ui/lib/src/engine/text/unicode_range.dart
495495
FILE: ../../../flutter/lib/web_ui/lib/src/engine/text/word_break_properties.dart
496496
FILE: ../../../flutter/lib/web_ui/lib/src/engine/text/word_breaker.dart
497+
FILE: ../../../flutter/lib/web_ui/lib/src/engine/text_editing/autofill_hint.dart
497498
FILE: ../../../flutter/lib/web_ui/lib/src/engine/text_editing/input_type.dart
498499
FILE: ../../../flutter/lib/web_ui/lib/src/engine/text_editing/text_editing.dart
499500
FILE: ../../../flutter/lib/web_ui/lib/src/engine/util.dart

lib/web_ui/lib/src/engine.dart

+1
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ part 'engine/text/ruler.dart';
115115
part 'engine/text/unicode_range.dart';
116116
part 'engine/text/word_break_properties.dart';
117117
part 'engine/text/word_breaker.dart';
118+
part 'engine/text_editing/autofill_hint.dart';
118119
part 'engine/text_editing/input_type.dart';
119120
part 'engine/text_editing/text_editing.dart';
120121
part 'engine/util.dart';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
// Copyright 2013 The Flutter Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
// @dart = 2.6
6+
part of engine;
7+
8+
/// Maps AutofillHints from the framework to the autofill hints that is used for
9+
/// browsers.
10+
/// See: https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/services/autofill.dart
11+
/// See: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete
12+
class BrowserAutofillHints {
13+
static final BrowserAutofillHints _singletonInstance =
14+
BrowserAutofillHints._();
15+
16+
/// The [BrowserAutofillHints] singleton.
17+
static BrowserAutofillHints get instance => _singletonInstance;
18+
19+
final Map<String, String> _flutterToEngineMap;
20+
21+
BrowserAutofillHints._()
22+
: _flutterToEngineMap = {
23+
'birthday': 'bday',
24+
'birthdayDay': 'bday-day',
25+
'birthdayMonth': 'bday-month',
26+
'birthdayYear': 'bday-year',
27+
'countryCode': 'country',
28+
'countryName': 'country-name',
29+
'creditCardExpirationDate': 'cc-exp',
30+
'creditCardExpirationMonth': 'cc-exp-month',
31+
'creditCardExpirationYear': 'cc-exp-year',
32+
'creditCardFamilyName': 'cc-family-name',
33+
'creditCardGivenName': 'cc-given-name',
34+
'creditCardMiddleName': 'cc-additional-name',
35+
'creditCardName': 'cc-name',
36+
'creditCardNumber': 'cc-number',
37+
'creditCardSecurityCode': 'cc-csc',
38+
'creditCardType': 'cc-type',
39+
'email': 'email',
40+
'familyName': 'familyName',
41+
'fullStreetAddress': 'street-address',
42+
'gender': 'sex',
43+
'givenName': 'given-name',
44+
'impp': 'impp',
45+
'jobTitle': 'organization-title',
46+
'language': 'language',
47+
'middleName': 'middleName',
48+
'name': 'name',
49+
'namePrefix': 'honorific-prefix',
50+
'nameSuffix': 'honorific-suffix',
51+
'newPassword': 'new-password',
52+
'nickname': 'nickname',
53+
'oneTimeCode': 'one-time-code',
54+
'organizationName': 'organization',
55+
'password': 'current-password',
56+
'photo': 'photo',
57+
'postalCode': 'postal-code',
58+
'streetAddressLevel1': 'address-level1',
59+
'streetAddressLevel2': 'address-level2',
60+
'streetAddressLevel3': 'address-level3',
61+
'streetAddressLevel4': 'address-level4',
62+
'streetAddressLine1': 'address-line1',
63+
'streetAddressLine2': 'address-line2',
64+
'streetAddressLine3': 'address-line3',
65+
'telephoneNumber': 'tel',
66+
'telephoneNumberAreaCode': 'tel-area-code',
67+
'telephoneNumberCountryCode': 'tel-country-code',
68+
'telephoneNumberExtension': 'tel-extension',
69+
'telephoneNumberLocal': 'tel-local',
70+
'telephoneNumberLocalPrefix': 'tel-local-prefix',
71+
'telephoneNumberLocalSuffix': 'tel-local-suffix',
72+
'telephoneNumberNational': 'tel-national',
73+
'transactionAmount': 'transaction-amount',
74+
'transactionCurrency': 'transaction-currency',
75+
'url': 'url',
76+
'username': 'username',
77+
};
78+
79+
/// Converts the Flutter AutofillHint to the autofill hint value used by the
80+
/// browsers.
81+
/// See: https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/services/autofill.dart
82+
/// See: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete
83+
String flutterToEngine(String flutterAutofillHint) {
84+
// Use the hints as it is.
85+
return _flutterToEngineMap[flutterAutofillHint] ?? flutterAutofillHint;
86+
}
87+
}

0 commit comments

Comments
 (0)