Migrate TODOs referencing old crbug IDs to the new issue tracker IDs
The canonical bug format is TODO(crbug.com/<id>). TODOs of the following forms will all be migrated to the new format: - TODO(crbug.com/<old id>) - TODO(https://crbug.com/<old id>) - TODO(crbug/<old id>) - TODO(crbug/monorail/<old id>) - TODO(<old id>) - TODO(issues.chromium.org/<old id>) - TODO(https://issues.chromium.org/<old id>) - TODO(https://issues.chromium.org/u/1/issues/<old id>) - TODO(bugs.chromium.org/<old id>) Bug id mapping is sourced from go/chrome-on-buganizer-prod-issues. See go/crbug-todo-migration for details. #crbug-todo-migration Bug: b/321899722 Change-Id: I8a9934c8837b7e99594af4d63d4343128b70f7fe Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5493246 Auto-Submit: Alison Gale <agale@chromium.org> Owners-Override: Alison Gale <agale@chromium.org> Commit-Queue: Alison Gale <agale@chromium.org> Reviewed-by: Peter Boström <pbos@chromium.org> Cr-Commit-Position: refs/heads/main@{#1293200}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
305b300ed5
commit
45c4058fd0
components
DEPSautofill_strings.grdpcontent_settings_utils.cctemplate_url_prepopulate_data.cctemplate_url_service.h
affiliations
core
browser
android_autofill
browser
attribution_reporting
autofill
content
browser
content_autofill_driver.cccontent_autofill_driver_factory_unittest.ccscoped_autofill_managers_observation_unittest.cc
common
renderer
core
browser
BUILD.gnaddress_data_manager.ccaddress_data_manager.haddress_data_manager_unittest.ccaddress_normalizer_impl.ccaddress_profile_save_manager.ccautofill_client.hautofill_data_util.ccautofill_external_delegate.ccautofill_external_delegate.hautofill_external_delegate_unittest.ccautofill_field.ccautofill_manager.ccautofill_manager.hautofill_suggestion_generator.ccautofill_suggestion_generator_unittest.ccautofill_type.hautofill_type_unittest.ccbrowser_autofill_manager.ccbrowser_autofill_manager.hbrowser_autofill_manager_test_api.hbrowser_autofill_manager_unittest.cc
data_model
autofill_i18n_parsing_expression_components.ccautofill_offer_data.ccautofill_offer_data.hautofill_profile.ccautofill_profile.hautofill_profile_comparator.hautofill_profile_unittest.ccautofill_structured_address_component.ccautofill_structured_address_component.hautofill_structured_address_name.cccontact_info.cccredit_card.cccredit_card.h
field_filling_address_util.ccfield_filling_payments_util.hfield_types.hform_autofill_history.hform_data_importer.ccform_data_importer.hform_data_importer_unittest.ccform_filler.ccform_filler.hform_parsing
address_field_parser.ccaddress_field_parser_ng_unittest.ccaddress_field_parser_unittest.ccform_field_parser.ccform_field_parser.hphone_field_parser.cc
form_structure.ccform_structure_rationalizer.ccform_structure_rationalizer_unittest.ccmanual_testing_import.ccmanual_testing_import_unittest.ccmetrics
autofill_metrics.ccautofill_metrics_unittest.ccfield_filling_stats_and_score_metrics_unittest.cc
form_events
quality_metrics.ccquality_metrics.hml_model
payments
credit_card_access_manager.cccredit_card_access_manager.hcredit_card_access_manager_unittest.cccredit_card_cvc_authenticator.hcredit_card_fido_authenticator.cccredit_card_otp_authenticator.hcredit_card_save_manager.hcredit_card_save_manager_unittest.ccfull_card_request.ccmandatory_reauth_manager.cc
profile_token_quality.hproto
randomized_encoder.ccrandomized_encoder_unittest.ccsingle_field_form_filler.hui
payments
webdata
common
ios
background_fetch
blocked_content
bookmarks
browser_sync
browser_ui
accessibility
android
java
src
org
chromium
components
browser_ui
accessibility
display_cutout
android
java
src
org
chromium
components
browser_ui
display_cutout
share
site_settings
android
java
src
org
chromium
components
strings
widget
android
browsing_data
cast_receiver
cast_streaming
browser
renderer
commerce
content_relationship_verification
content_settings
browser
core
crash
cronet
android
test
javatests
src
smoketests
src
org
chromium
net
smoke
src
org
chromium
native
dom_distiller
core
javascript
download
internal
background_service
common
public
background_service
embedder_support
android
java
src
org
chromium
components
embedder_support
metrics
origin_trials
user_agent_utils.ccuser_agent_utils.hendpoint_fetcher
exo
drag_drop_operation.ccdrag_drop_operation.hextended_drag_offer.cc
server
shell_surface_base.cctouch.ccwayland
favicon
feed
core
find_in_page
android
java
res
values
fuchsia_component_support
gcm_driver
account_tracker.ccaccount_tracker_unittest.ccgcm_account_tracker.ccgcm_account_tracker_unittest.ccgcm_client_impl.ccgcm_driver.ccgcm_driver_desktop.cc
instance_id
guest_view
history
core
infobars
android
java
src
org
chromium
components
invalidation
js_injection
common
keyed_service
language
android
java
src
org
chromium
components
language
live_caption
local_state
location
android
java
src
org
chromium
components
location
management
resources
media_control
media_device_salt
media_message_center
media_router
messages
android
internal
java
src
java
src
org
chromium
components
messages
metrics
content
debug
demographics
demographic_metrics_provider.ccdemographic_metrics_provider.huser_demographics.ccuser_demographics.huser_demographics_unittest.cc
field_trials_provider.hfile_metrics_provider.ccmetrics_log_store.hmetrics_logs_event_manager.hmetrics_service.ccmetrics_service_observer.ccmetrics_state_manager.ccmetrics_state_manager.hpersistent_histograms.ccpersistent_system_profile.ccstructured
unsent_log_store.ccunsent_log_store.hmirroring
mojom
service
module_installer
android
nacl
no_state_prefetch
ntp_tiles
offline_pages
omnibox
browser
actions
autocomplete_controller.ccautocomplete_controller.hautocomplete_input.hautocomplete_match.hautocomplete_provider_client.homnibox_client.hon_device_head_model.cccommon
open_from_clipboard
optimization_guide
origin_trials
os_crypt
page_image_annotation
page_info
android
page_load_metrics
browser
metrics_web_contents_observer.ccmetrics_web_contents_observer.hmetrics_web_contents_observer_unittest.ccpage_load_metrics_observer_interface.hpage_load_metrics_update_dispatcher.ccpage_load_metrics_util.ccpage_load_metrics_util_unittest.ccpage_load_tracker_unittest.cc
observers
ad_metrics
ads_page_load_metrics_observer.ccads_page_load_metrics_observer_unittest.ccaggregate_frame_data.ccaggregate_frame_data.hframe_data_utils.hpage_ad_density_tracker.cc
back_forward_cache_page_load_metrics_observer.ccback_forward_cache_page_load_metrics_observer.hback_forward_cache_page_load_metrics_observer_unittest.ccfenced_frames_page_load_metrics_observer.ccprerender_page_load_metrics_observer.ccshared_storage_page_load_metrics_observer.ccthird_party_metrics_observer.ccthird_party_metrics_observer.hzstd_page_load_metrics_observer.cccommon
renderer
paint_preview
password_manager
content
core
browser
browser_save_password_progress_logger.h
features
form_saver_impl.cchttp_auth_manager_impl.ccimport
password_autofill_manager.ccpassword_credential_filler_impl.ccpassword_form_manager.ccpassword_form_manager.hpassword_form_manager_for_ui.hpassword_form_manager_unittest.ccpassword_manager.ccpassword_manager.hpassword_manager_client.hpassword_manager_driver.hpassword_manager_unittest.ccpassword_manual_fallback_flow.ccpassword_save_manager_impl.ccpassword_save_manager_impl_unittest.ccpassword_store
login_database.cclogin_database_posix.cclogin_database_unittest.ccpassword_notes_table_unittest.ccpassword_store.ccpassword_store.hpassword_store_backend.hpassword_store_consumer.hpassword_store_interface.htest_password_store.h
sharing
sync
sync_credentials_filter.ccui
votes_uploader.cccommon
ios
payments
content
pdf
performance_manager
graph
performance_manager_registry_impl.ccperformance_manager_tab_helper.ccpersistence
prerendering_browsertest.ccpublic
decorators
execution_context
graph
resource_attribution
v8_memory
resource_attribution
v8_memory
v8_context_tracker.ccv8_context_tracker_helpers.hv8_detailed_memory.ccweb_memory_aggregator.ccweb_memory_impl.cc
worker_watcher.ccpermissions
android
constants.ccconstants.hobject_permission_context_base.hpermission_prompt_impl.ccpermission_request_manager.ccpermissions_client.hrequest_type.ccplus_addresses
policy
core
proto
resources
templates
policy_definitions
test
data
tools
power_bookmarks
common
storage
prefs
printing
browser
privacy_sandbox
reading_list
core
remote_cocoa
app_shim
resources
android
safe_browsing
search_engines
android
java
src
org
chromium
components
search_engines
security_interstitials
send_tab_to_self
services
app_service
public
font
print_compositor
storage
public
service_worker
sessions
signin
core
browser
internal
ios
public
android
java
src
org
chromium
identity_manager
site_isolation
subresource_filter
content
browser
core
supervised_user
core
browser
sync
android
java
src
org
chromium
components
base
engine
invalidations
model
client_tag_based_model_type_processor.ccforwarding_model_type_controller_delegate.ccmodel_type_sync_bridge.hprocessor_entity.cc
nigori
cross_user_sharing_keys.cccryptographer_impl.cckeystore_keys_cryptographer.ccnigori_key_bag.ccnigori_model_type_processor.ccnigori_state.ccnigori_state.hnigori_sync_bridge_impl.cc
protocol
BUILD.gnautofill_specifics.protobookmark_model_metadata.protoclient_debug_info.protodevice_info_specifics.protofavicon_image_specifics.protofavicon_tracking_specifics.protoproto_value_conversions.ccsync.proto
service
backend_migrator.ccdata_type_manager_impl.cc
glue
model_type_controller.ccnon_ui_syncable_service_based_model_type_controller.ccsync_client.hsync_service.hsync_service_impl.ccsync_service_impl.hsync_service_utils.ccsync_session_durations_metrics_recorder.ccsync_session_durations_metrics_recorder_unittest.ccsync_user_settings_impl.ccsyncable_service_based_model_type_controller.ccsync_bookmarks
bookmark_model_merger.ccbookmark_model_type_processor.ccswitches.ccswitches.hsynced_bookmark_tracker.h
sync_device_info
sync_preferences
sync_sessions
system_cpu
test
data
dom_distiller
thin_webview
internal
translate
content
android
java
src
org
chromium
components
translate
core
trusted_vault
download_keys_response_handler.ccstandalone_trusted_vault_backend.ccstandalone_trusted_vault_backend.hstandalone_trusted_vault_backend_unittest.ccstandalone_trusted_vault_client.htrusted_vault_connection_impl.cctrusted_vault_connection_impl_unittest.cctrusted_vault_degraded_recoverability_handler.cc
ukm
undo
update_client
url_formatter
spoof_checks
top_domains
url_pattern_index
user_education
user_manager
user_notes
browser
storage
variations
BUILD.gnactive_field_trials.h
field_trial_config
net
service
limited_entropy_randomization.hvariations_field_trial_creator_base.ccvariations_field_trial_creator_unittest.ccvariations_service.ccvariations_service_unittest.ccvariations_service_utils.cc
variations.mojomvariations_ids_provider.ccvariations_layers.ccvariations_seed_store.ccviz
common
host
hit_test
service
compositor_frame_fuzzer
display
ca_layer_overlay.ccdelegated_ink_point_pixel_test_helper.ccdelegated_ink_point_renderer_base.ccdelegated_ink_point_renderer_skia.hdirect_renderer.ccdisplay_unittest.ccoverlay_candidate_factory.ccoverlay_processor_ozone.ccoverlay_processor_ozone_unittest.ccskia_output_surface.hskia_renderer.ccskia_renderer.hsoftware_renderer_unittest.ccsurface_aggregator.ccsurface_aggregator_unittest.cc
display_embedder
output_presenter_gl.ccskia_output_device.ccskia_output_device_dawn.ccskia_output_device_offscreen.ccskia_output_surface_impl_on_gpu.ccskia_output_surface_impl_unittest.cc
frame_sinks
gl
test
web_package
signed_web_bundles
webapps
webrtc_logging
browser
@ -10,7 +10,7 @@ include_rules = [
|
||||
# these dependencies; see ./README.
|
||||
"-ipc",
|
||||
|
||||
# TODO(crbug.com/470582): ApplicationStatus should be moved to //chrome. In the
|
||||
# TODO(crbug.com/40411113): ApplicationStatus should be moved to //chrome. In the
|
||||
# mean time, ban new usages.
|
||||
"-base/android/java/src/org/chromium/base/ApplicationStatus.java",
|
||||
]
|
||||
|
@ -415,7 +415,7 @@ bool AffiliationBackend::OnCanSendNetworkRequest() {
|
||||
if (!fetcher_) {
|
||||
return false;
|
||||
}
|
||||
// TODO(crbug.com/1354196): There is no need to request psl extension every
|
||||
// TODO(crbug.com/40858918): There is no need to request psl extension every
|
||||
// time, find a better way of caching it.
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
// psl_extension_list isn't needed on Android because the OS API will apply
|
||||
|
@ -409,7 +409,7 @@ void AndroidAutofillProvider::OnTextFieldDidScroll(
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1478934): Investigate whether the update of the value
|
||||
// TODO(crbug.com/40929724): Investigate whether the update of the value
|
||||
// is needed - why would it have changed?
|
||||
form_->OnFormFieldDidChange(field_info.index, field.value());
|
||||
|
||||
@ -424,7 +424,7 @@ void AndroidAutofillProvider::OnSelectControlDidChange(
|
||||
const gfx::RectF& bounding_box) {
|
||||
if (!IsLinkedForm(form)) {
|
||||
StartNewSession(manager, form, field, bounding_box);
|
||||
// TODO(crbug.com/1478934): Return early at this point?
|
||||
// TODO(crbug.com/40929724): Return early at this point?
|
||||
}
|
||||
MaybeFireFormFieldDidChange(manager, form, field, bounding_box);
|
||||
}
|
||||
@ -602,7 +602,7 @@ bool AndroidAutofillProvider::IntendsToShowBottomSheet(
|
||||
|
||||
bool AndroidAutofillProvider::WasBottomSheetJustShown(
|
||||
AutofillManager& manager) {
|
||||
// TODO(crbug.com/1490581) Remove the timer once a fix is landed on the
|
||||
// TODO(crbug.com/40284788) Remove the timer once a fix is landed on the
|
||||
// renderer side.
|
||||
was_shown_bottom_sheet_timer_.Start(
|
||||
FROM_HERE, kWasBottomSheetShownFlipTimeout, this,
|
||||
@ -679,7 +679,7 @@ void AndroidAutofillProvider::Reset() {
|
||||
|
||||
// Resets the Java instance and hides the datalist popup if there is one.
|
||||
bridge_->Reset();
|
||||
// TODO(crbug.com/1488233): Also send an unfocus event to make sure that the
|
||||
// TODO(crbug.com/40283554): Also send an unfocus event to make sure that the
|
||||
// Autofill session is truly terminated.
|
||||
}
|
||||
|
||||
|
@ -264,7 +264,7 @@ class AndroidAutofillProvider : public AutofillProvider,
|
||||
// In some cases we get two AskForValuesToFill events within short time frame
|
||||
// so we set timer to set the `was_bottom_sheet_just_shown_` to false after it
|
||||
// gets accessed.
|
||||
// TODO(crbug.com/1490581): Remove once a fix is landed on the renderer side.
|
||||
// TODO(crbug.com/40284788): Remove once a fix is landed on the renderer side.
|
||||
void SetBottomSheetShownOff();
|
||||
|
||||
// This is used by the keyboard suppressor. We update it with the result of
|
||||
|
@ -87,9 +87,9 @@ class AndroidAutofillProviderBridge {
|
||||
base::span<const int> indices) = 0;
|
||||
|
||||
// Informs the Java side that `field` has new `bounds`.
|
||||
// TODO(crbug.com/1478934): Make naming consistent across events, e.g.,
|
||||
// TODO(crbug.com/40929724): Make naming consistent across events, e.g.,
|
||||
// `OnFormFieldDidScroll`.
|
||||
// TODO(crbug.com/1478934): Combine with `OnFormFieldDidChange`?
|
||||
// TODO(crbug.com/40929724): Combine with `OnFormFieldDidChange`?
|
||||
virtual void OnTextFieldDidScroll(const FieldInfo& field) = 0;
|
||||
|
||||
// Informs the Java side that the form was submitted.
|
||||
|
@ -1372,7 +1372,7 @@ TEST_F(AndroidAutofillProviderTestHidingLogic,
|
||||
// Tests that if the popup is shown in the *sub frame*, a navigation in the
|
||||
// *sub frame* hides the popup.
|
||||
//
|
||||
// TODO(crbug.com/1488233): Disabled because AndroidAutofillProvider::Reset()
|
||||
// TODO(crbug.com/40283554): Disabled because AndroidAutofillProvider::Reset()
|
||||
// resets AndroidAutofillProvider::field_rfh_ before RenderFrameDeleted(), which
|
||||
// prevents OnPopupHidden().
|
||||
TEST_F(AndroidAutofillProviderTestHidingLogic,
|
||||
|
@ -123,7 +123,7 @@ void FormFieldDataAndroidBridgeImpl::UpdateFieldFromJava(FormFieldData& field) {
|
||||
|
||||
void FormFieldDataAndroidBridgeImpl::UpdateFieldTypes(
|
||||
const FormFieldDataAndroid::FieldTypes& field_types) {
|
||||
// TODO(crbug.com/1478934): Investigate why heuristic type is not updated.
|
||||
// TODO(crbug.com/40929724): Investigate why heuristic type is not updated.
|
||||
JNIEnv* env = AttachCurrentThread();
|
||||
ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
|
||||
if (obj.is_null()) {
|
||||
|
@ -165,7 +165,7 @@ EventReportWindows::WindowResult EventReportWindows::FallsWithin(
|
||||
// that is attributed to it to have a time of T-X e.g. due to user-initiated
|
||||
// clock changes.
|
||||
//
|
||||
// TODO(crbug.com/1489333): Assume trigger moment is not negative once
|
||||
// TODO(crbug.com/40283992): Assume trigger moment is not negative once
|
||||
// attribution time resolution is implemented in storage.
|
||||
base::TimeDelta bounded_trigger_moment =
|
||||
trigger_moment.is_negative() ? base::Microseconds(0) : trigger_moment;
|
||||
|
@ -591,7 +591,7 @@ TEST(EventReportWindowsTest, FallsWithin) {
|
||||
.trigger_moment = base::Hours(2),
|
||||
.expected = WindowResult::kPassed,
|
||||
},
|
||||
// TODO(crbug.com/1489333): Remove case once DCHECK is used in
|
||||
// TODO(crbug.com/40283992): Remove case once DCHECK is used in
|
||||
// implementation.
|
||||
{
|
||||
.report_windows = kDefaultReportWindowsNoStartTime,
|
||||
|
@ -251,7 +251,7 @@ bool FilterData::Matches(mojom::SourceType source_type,
|
||||
// of T and a trigger that is attributed to it to have a time of T-X e.g. due
|
||||
// to user-initiated clock changes. see: https://crbug.com/1486489
|
||||
//
|
||||
// TODO(https://crbug.com/1486496): Assume `source_time` is smaller than
|
||||
// TODO(crbug.com/40282914): Assume `source_time` is smaller than
|
||||
// `trigger_time` once attribution time resolution is implemented in storage.
|
||||
const base::TimeDelta duration_since_source_registration =
|
||||
(source_time < trigger_time) ? trigger_time - source_time
|
||||
|
@ -911,7 +911,7 @@ TEST(FilterDataTest, AttributionFilterDataMatch_LookbackWindow) {
|
||||
}
|
||||
}
|
||||
|
||||
// TODO(https://crbug.com/1486496): remove this test once CHECK is used in the
|
||||
// TODO(crbug.com/40282914): remove this test once CHECK is used in the
|
||||
// implementation.
|
||||
TEST(FilterDataTest,
|
||||
AttributionFilterDataMatch_SourceTimeGreaterThanTriggerTime) {
|
||||
|
@ -43,7 +43,7 @@ namespace autofill {
|
||||
|
||||
namespace {
|
||||
|
||||
// TODO(crbug.com/1117028): Remove once FormData objects aren't stored
|
||||
// TODO(crbug.com/40144964): Remove once FormData objects aren't stored
|
||||
// globally anymore.
|
||||
const FormData& WithNewVersion(const FormData& form) {
|
||||
static FormVersion version_counter;
|
||||
@ -52,7 +52,7 @@ const FormData& WithNewVersion(const FormData& form) {
|
||||
return form;
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1117028): Remove once FormData objects aren't stored
|
||||
// TODO(crbug.com/40144964): Remove once FormData objects aren't stored
|
||||
// globally anymore.
|
||||
const std::optional<FormData>& WithNewVersion(
|
||||
const std::optional<FormData>& form) {
|
||||
@ -62,7 +62,7 @@ const std::optional<FormData>& WithNewVersion(
|
||||
return form;
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1117028): Remove once FormData objects aren't stored
|
||||
// TODO(crbug.com/40144964): Remove once FormData objects aren't stored
|
||||
// globally anymore.
|
||||
const std::vector<FormData>& WithNewVersion(
|
||||
const std::vector<FormData>& forms) {
|
||||
@ -296,8 +296,8 @@ void ContentAutofillDriver::ExtractForm(FormGlobalId form_id,
|
||||
// - since the response to make_request() is asynchronous, the only way to
|
||||
// squeeze that in is through a separate callback.
|
||||
//
|
||||
// TODO(crbug.com/1331312): Make ExtractForm() trigger a FormsSeen() event and
|
||||
// await that event in the browser process, instead of having the response
|
||||
// TODO(crbug.com/40227496): Make ExtractForm() trigger a FormsSeen() event
|
||||
// and await that event in the browser process, instead of having the response
|
||||
// callback.
|
||||
|
||||
auto set_version = base::BindOnce(
|
||||
|
@ -207,7 +207,7 @@ TEST_P(ContentAutofillDriverFactoryTest_WithOrWithoutBfCacheAndIframes,
|
||||
EXPECT_EQ(test_api(factory()).GetDriver(orig_rfh), orig_driver);
|
||||
EXPECT_EQ(test_api(factory()).num_drivers(), 1u);
|
||||
|
||||
// TODO(crbug.com/1200511): Test that |router_| has been untouched. To this
|
||||
// TODO(crbug.com/40178290): Test that |router_| has been untouched. To this
|
||||
// end, call `orig_driver->FormsSeen({FormData{}})` above and then check
|
||||
// here that the router still knows that form. For this to work, we need mock
|
||||
// AutofillManagers instead of real BrowserAutofillManager, which are blocked
|
||||
@ -222,7 +222,7 @@ TEST_P(ContentAutofillDriverFactoryTest_WithOrWithoutBfCacheAndIframes,
|
||||
content::RenderFrameHost* orig_rfh = main_rfh();
|
||||
ContentAutofillDriver* orig_driver = factory().DriverForFrame(orig_rfh);
|
||||
|
||||
// TODO(crbug.com/1200511): Use mock AutofillManagers and expect a call of
|
||||
// TODO(crbug.com/40178290): Use mock AutofillManagers and expect a call of
|
||||
// AutofillManager::Reset(), which is blocked by ContentAutofillDriver's use
|
||||
// of the factory callback.
|
||||
|
||||
|
@ -27,7 +27,7 @@ class ScopedAutofillManagersObservationTest
|
||||
void SetUp() override { content::RenderViewHostTestHarness::SetUp(); }
|
||||
|
||||
protected:
|
||||
// TODO(crbug.com/1466435): Move this code (and the nearly identical function
|
||||
// TODO(crbug.com/40276395): Move this code (and the nearly identical function
|
||||
// in `FormForest`'s unittest) into a common helper function.
|
||||
content::RenderFrameHost* CreateChildFrameAndNavigate(
|
||||
content::RenderFrameHost* parent_frame,
|
||||
|
@ -124,7 +124,7 @@ interface PasswordAutofillAgent {
|
||||
|
||||
// Informs the renderer that the Keyboard Replacing Surface has been closed.
|
||||
// Indicates whether the virtual keyboard should be shown instead.
|
||||
// TODO(crbug/1462532): Remove this API once PasswordSuggestionBottomSheetV2
|
||||
// TODO(crbug.com/40274966): Remove this API once PasswordSuggestionBottomSheetV2
|
||||
// is launched.
|
||||
[EnableIf=is_android]
|
||||
KeyboardReplacingSurfaceClosed(bool show_virtual_keyboard);
|
||||
|
@ -58,7 +58,7 @@ interface AutofillDriver {
|
||||
// moves off of the form that the user had previously interacted with to a
|
||||
// different form. `had_interacted_form` indicates whether there was such a
|
||||
// previously-interacted form.
|
||||
// TODO(crbug.com/1140473): Remove need to pass `had_interacted_form`.
|
||||
// TODO(crbug.com/40726656): Remove need to pass `had_interacted_form`.
|
||||
FocusNoLongerOnForm(bool had_interacted_form);
|
||||
|
||||
// Notification that a form field is focused.
|
||||
@ -143,7 +143,7 @@ interface PasswordManagerDriver {
|
||||
// TouchToFill) and whether the form is ready for submission after filling. If
|
||||
// `is_webauthn`, Android U+ can display Credential Manager UI instead of
|
||||
// TouchToFill UI.
|
||||
// TODO(crbug/1462532): Remove this API once PasswordSuggestionBottomSheetV2
|
||||
// TODO(crbug.com/40274966): Remove this API once PasswordSuggestionBottomSheetV2
|
||||
// is launched.
|
||||
[EnableIf=is_android]
|
||||
ShowKeyboardReplacingSurface(SubmissionReadinessState submission_readiness,
|
||||
|
@ -515,7 +515,7 @@ void AutofillAgent::ContentEditableDidChange(const WebElement& element) {
|
||||
features::kAutofillContentEditableChangeEvents)) {
|
||||
return;
|
||||
}
|
||||
// TODO(crbug.com/1494479): Add throttling to avoid sending this event for
|
||||
// TODO(crbug.com/40286232): Add throttling to avoid sending this event for
|
||||
// rapid changes.
|
||||
if (std::optional<FormData> form =
|
||||
form_util::FindFormForContentEditable(element)) {
|
||||
@ -529,7 +529,7 @@ void AutofillAgent::ContentEditableDidChange(const WebElement& element) {
|
||||
|
||||
void AutofillAgent::OnTextFieldDidChange(const WebFormControlElement& element) {
|
||||
DCHECK(form_util::MaybeWasOwnedByFrame(element, unsafe_render_frame()));
|
||||
// TODO(crbug.com/1494479): Add throttling to avoid sending this event for
|
||||
// TODO(crbug.com/40286232): Add throttling to avoid sending this event for
|
||||
// rapid changes.
|
||||
|
||||
// The field might have changed while the user was hovering on a suggestion,
|
||||
@ -1618,7 +1618,7 @@ void AutofillAgent::OnProvisionallySaveForm(
|
||||
case FormTracker::Observer::SaveFormReason::kSelectChanged:
|
||||
update_submission_data_on_user_edit();
|
||||
// Signal the browser of change in select fields.
|
||||
// TODO(crbug.com/1483242): Investigate if this is necessary: if it is,
|
||||
// TODO(crbug.com/40281981): Investigate if this is necessary: if it is,
|
||||
// document the reason, if not, remove.
|
||||
if (std::optional<FormAndField> form_and_field =
|
||||
FindFormAndFieldForFormControlElement(
|
||||
|
@ -234,7 +234,7 @@ class AutofillAgent : public content::RenderFrameObserver,
|
||||
|
||||
// Signals from blink that a form related element changed dynamically,
|
||||
// passing the changed element as well as the type of the change.
|
||||
// TODO(crbug.com/1483242): Fire the signal for elements that become hidden.
|
||||
// TODO(crbug.com/40281981): Fire the signal for elements that become hidden.
|
||||
void DidChangeFormRelatedElementDynamically(
|
||||
const blink::WebElement&,
|
||||
blink::WebFormRelatedChangeType) override;
|
||||
|
@ -145,7 +145,7 @@ auto FieldsAre(std::string field_name,
|
||||
return Field(&FormData::fields, ElementsAreArray(matchers));
|
||||
}
|
||||
|
||||
// TODO(crbug.com/63573): Add many more test cases.
|
||||
// TODO(crbug.com/41268731): Add many more test cases.
|
||||
class AutofillAgentTest : public test::AutofillRendererTest {
|
||||
public:
|
||||
void SetUp() override {
|
||||
|
@ -50,7 +50,7 @@ auto IsContentEditable() {
|
||||
return HasType(FormControlType::kContentEditable);
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1496382): Clean up these functions once
|
||||
// TODO(crbug.com/40286775): Clean up these functions once
|
||||
// `kAutofillAndroidDisableSuggestionsOnJSFocus` is launched and Android and
|
||||
// Desktop behave identically.
|
||||
|
||||
@ -106,7 +106,7 @@ AutofillSuggestionTriggerSource TriggerSourceOnTextareaFocus() {
|
||||
class AutofillAgentFormInteractionTest : public test::AutofillRendererTest {
|
||||
public:
|
||||
void SetUp() override {
|
||||
// TODO(crbug.com/63573): parameterize tests over AutofillAgent::Config.
|
||||
// TODO(crbug.com/41268731): parameterize tests over AutofillAgent::Config.
|
||||
test::AutofillRendererTest::SetUp();
|
||||
web_view_->SetDefaultPageScaleLimits(1, 4);
|
||||
|
||||
|
@ -181,13 +181,13 @@ bool IsCheckableElement(const blink::WebFormControlElement& element);
|
||||
|
||||
// Returns true if |element| is one of the input element types that can be
|
||||
// autofilled. {Text, Radiobutton, Checkbox}.
|
||||
// TODO(crbug.com/1007974): IsAutofillableInputElement() are currently used
|
||||
// TODO(crbug.com/40100455): IsAutofillableInputElement() are currently used
|
||||
// inconsistently. Investigate where these checks are necessary.
|
||||
bool IsAutofillableInputElement(const blink::WebInputElement& element);
|
||||
|
||||
// Returns true if |element| is one of the element types that can be autofilled.
|
||||
// {Text, Radiobutton, Checkbox, Select, TextArea}.
|
||||
// TODO(crbug.com/1007974): IsAutofillableElement() are currently used
|
||||
// TODO(crbug.com/40100455): IsAutofillableElement() are currently used
|
||||
// inconsistently. Investigate where these checks are necessary.
|
||||
bool IsAutofillableElement(const blink::WebFormControlElement& element);
|
||||
|
||||
@ -224,7 +224,7 @@ bool IsWebElementFocusableForAutofill(const blink::WebElement& element);
|
||||
//
|
||||
// Exposed for testing purposes.
|
||||
//
|
||||
// TODO(crbug.com/1335257): Can input fields or iframes actually overflow?
|
||||
// TODO(crbug.com/40846971): Can input fields or iframes actually overflow?
|
||||
bool IsWebElementVisible(const blink::WebElement& element);
|
||||
|
||||
// Returns the maximum length value that Autofill may fill into the field. There
|
||||
|
@ -309,7 +309,7 @@ TEST_F(FormCacheBrowserTest, ExtractFramesTwice) {
|
||||
EXPECT_TRUE(forms.removed_forms.empty());
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1117028) Adjust expectations when we omit invisible iframes.
|
||||
// TODO(crbug.com/40144964) Adjust expectations when we omit invisible iframes.
|
||||
TEST_F(FormCacheBrowserTest, ExtractFramesAfterVisibilityChange) {
|
||||
LoadHTML(R"(
|
||||
<form id="form1">
|
||||
|
@ -27,7 +27,7 @@ namespace autofill {
|
||||
class AutofillAgent;
|
||||
|
||||
// Reference to a WebFormElement, represented as such and as a FormRendererId.
|
||||
// TODO(crbug.com/1218275): Replace with FormRendererId when
|
||||
// TODO(crbug.com/40056157): Replace with FormRendererId when
|
||||
// `kAutofillReplaceCachedWebElementsByRendererIds` launches.
|
||||
class FormRef {
|
||||
public:
|
||||
@ -44,7 +44,7 @@ class FormRef {
|
||||
|
||||
// Reference to a WebFormControlElement, represented as such and as a
|
||||
// FieldRendererId.
|
||||
// TODO(crbug.com/1218275): Replace with FieldRendererId when
|
||||
// TODO(crbug.com/40056157): Replace with FieldRendererId when
|
||||
// `kAutofillReplaceCachedWebElementsByRendererIds` launches.
|
||||
class FieldRef {
|
||||
public:
|
||||
@ -192,13 +192,13 @@ class FormTracker : public content::RenderFrameObserver,
|
||||
// Tracks the cached element, as well as its ancestors, until it disappears
|
||||
// (removed or hidden), then directly infers submission. `source` is the type
|
||||
// of submission to fire when the tracked element disappears.
|
||||
// TODO(crbug.com/1483242): Remove.
|
||||
// TODO(crbug.com/40281981): Remove.
|
||||
void TrackElement(mojom::SubmissionSource source);
|
||||
|
||||
// Invoked when the observed element was either removed from the DOM or it's
|
||||
// computed style changed to display: none. `source` is the type of submission
|
||||
// to be inferred in case this function is called.
|
||||
// TODO(crbug.com/1483242): Remove.
|
||||
// TODO(crbug.com/40281981): Remove.
|
||||
void ElementWasHiddenOrRemoved(mojom::SubmissionSource source);
|
||||
|
||||
// Whether a user gesture is required to pass on text field change events.
|
||||
@ -213,7 +213,7 @@ class FormTracker : public content::RenderFrameObserver,
|
||||
std::optional<FormData> saved_state;
|
||||
} last_interacted_;
|
||||
|
||||
// TODO(crbug.com/1483242): Remove.
|
||||
// TODO(crbug.com/40281981): Remove.
|
||||
raw_ptr<blink::WebFormElementObserver> form_element_observer_ = nullptr;
|
||||
|
||||
struct {
|
||||
|
@ -232,7 +232,7 @@ void FindMatchesByUsername(const PasswordFormFillData& fill_data,
|
||||
}
|
||||
}
|
||||
|
||||
// TODO(crbug.com/564578): This duplicates code from
|
||||
// TODO(crbug.com/40447274): This duplicates code from
|
||||
// components/password_manager/core/browser/password_store/psl_matching_helper.h.
|
||||
// The logic using this code should ultimately end up in
|
||||
// components/password_manager/core/browser, at which point it can use the
|
||||
@ -243,7 +243,7 @@ std::string GetRegistryControlledDomain(const GURL& signon_realm) {
|
||||
net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES);
|
||||
}
|
||||
|
||||
// TODO(crbug.com/564578): This duplicates code from
|
||||
// TODO(crbug.com/40447274): This duplicates code from
|
||||
// components/password_manager/core/browser/password_store/psl_matching_helper.h.
|
||||
// The logic using this code should ultimately end up in
|
||||
// components/password_manager/core/browser, at which point it can use the
|
||||
@ -872,7 +872,7 @@ void PasswordAutofillAgent::FillPasswordSuggestion(
|
||||
if (!password_element.IsNull()) {
|
||||
FillPasswordFieldAndSave(password_element, password);
|
||||
|
||||
// TODO(crbug.com/1319364): As Touch-To-Fill and auto-submission don't
|
||||
// TODO(crbug.com/40223173): As Touch-To-Fill and auto-submission don't
|
||||
// currently support filling single username fields, the code below is
|
||||
// within `!password_element.IsNull()`. Support such fields too and move the
|
||||
// code out the condition.
|
||||
@ -1134,7 +1134,7 @@ bool PasswordAutofillAgent::TryToShowKeyboardReplacingSurface(
|
||||
std::unique_ptr<FormData> form_data =
|
||||
form.IsNull() ? GetFormDataFromUnownedInputElements()
|
||||
: GetFormDataFromWebForm(form);
|
||||
// TODO(crbug.com/1465793): Use FormFieldData::parsed_autocomplete.
|
||||
// TODO(crbug.com/40276126): Use FormFieldData::parsed_autocomplete.
|
||||
auto has_webauthn_attribute = [](const FormFieldData& field) {
|
||||
return field.autocomplete_attribute().find(
|
||||
password_manager::constants::kAutocompleteWebAuthn) !=
|
||||
@ -1301,8 +1301,8 @@ void PasswordAutofillAgent::SendPasswordForms(bool only_visible) {
|
||||
|
||||
// See if there are any unassociated input elements that could be used for
|
||||
// password submission.
|
||||
// TODO(crbug/898109): Consider using TryFixAutofilledForm for the cases when
|
||||
// there is no form tag.
|
||||
// TODO(crbug.com/41422255): Consider using TryFixAutofilledForm for the cases
|
||||
// when there is no form tag.
|
||||
bool add_unowned_inputs = true;
|
||||
if (only_visible) {
|
||||
std::vector<WebFormControlElement> control_elements =
|
||||
@ -1434,7 +1434,7 @@ void PasswordAutofillAgent::SetPasswordFillData(
|
||||
is_single_username_fill ? username_element : password_element;
|
||||
if (main_element.IsNull()) {
|
||||
MaybeStoreFallbackData(form_data);
|
||||
// TODO(https://crbug.com/959776): Fix logging for single username.
|
||||
// TODO(crbug.com/40626063): Fix logging for single username.
|
||||
LogFirstFillingResult(form_data, FillingResult::kNoPasswordElement);
|
||||
return;
|
||||
}
|
||||
|
@ -554,7 +554,7 @@ class PasswordAutofillAgent : public content::RenderFrameObserver,
|
||||
std::map<FieldRendererId, blink::WebString> autofilled_elements_cache_;
|
||||
base::flat_set<FieldRendererId> all_autofilled_elements_;
|
||||
// Keeps forms structure (amount of elements, element types etc).
|
||||
// TODO(crbug/898109): It's too expensive to keep the whole FormData
|
||||
// TODO(crbug.com/41422255): It's too expensive to keep the whole FormData
|
||||
// structure. Replace FormData with a smaller structure.
|
||||
std::map<FormRendererId, FormStructureInfo> forms_structure_cache_;
|
||||
|
||||
|
@ -1382,7 +1382,7 @@ source_set("unit_tests") {
|
||||
fuzzer_test("form_structure_fuzzer") {
|
||||
sources = [ "form_structure_fuzzer.cc" ]
|
||||
deps = [
|
||||
# TODO(crbug.com/896313): Reduce the dependency on "browser".
|
||||
# TODO(crbug.com/41421248): Reduce the dependency on "browser".
|
||||
":browser",
|
||||
"//base",
|
||||
"//components:components_tests_pak",
|
||||
@ -1400,7 +1400,7 @@ if (use_fuzzing_engine_with_lpm) {
|
||||
fuzzer_test("form_structure_process_query_response_fuzzer") {
|
||||
sources = [ "form_structure_process_query_response_fuzzer.cc" ]
|
||||
deps = [
|
||||
# TODO(crbug.com/896313): Reduce the dependency on "browser".
|
||||
# TODO(crbug.com/41421248): Reduce the dependency on "browser".
|
||||
":browser",
|
||||
"//base:base",
|
||||
"//components/autofill/core/browser",
|
||||
@ -1416,7 +1416,7 @@ fuzzer_test("autofill_phone_number_i18n_fuzzer") {
|
||||
sources = [ "geo/phone_number_i18n_fuzzer.cc" ]
|
||||
|
||||
deps = [
|
||||
# TODO(crbug.com/896313): Reduce the dependency on "browser".
|
||||
# TODO(crbug.com/41421248): Reduce the dependency on "browser".
|
||||
":browser",
|
||||
"//base",
|
||||
"//base:i18n",
|
||||
|
@ -212,7 +212,7 @@ void AddressDataManager::AddProfile(const AutofillProfile& profile) {
|
||||
return;
|
||||
}
|
||||
if (profile.IsEmpty(app_locale_)) {
|
||||
// TODO(crbug.com/1007974): This call is only used to notify tests to stop
|
||||
// TODO(crbug.com/40100455): This call is only used to notify tests to stop
|
||||
// waiting. Since no profile is added, this case shouldn't trigger
|
||||
// `OnPersonalDataChanged()`.
|
||||
NotifyObservers();
|
||||
@ -269,7 +269,7 @@ void AddressDataManager::RemoveProfile(const std::string& guid) {
|
||||
}
|
||||
|
||||
// Find the profile to remove.
|
||||
// TODO(crbug.com/1420547): This shouldn't be necessary. Providing a `guid`
|
||||
// TODO(crbug.com/40258814): This shouldn't be necessary. Providing a `guid`
|
||||
// to the `AutofillProfileChange()` should suffice for removals.
|
||||
const AutofillProfile* profile =
|
||||
ProfileChangesAreOngoing(guid)
|
||||
|
@ -119,11 +119,11 @@ class AddressDataManager : public AutofillWebDataServiceObserverOnUISequence,
|
||||
// `GetProfiles()` returns local-or-syncable and account profiles. Using
|
||||
// `GetProfilesFromSource()`, profiles from a single source can be retrieved.
|
||||
// The profiles are returned in the specified `order`.
|
||||
// TODO(crbug.com/1487119): Change return type to
|
||||
// TODO(crbug.com/40283168): Change return type to
|
||||
// std::vector<const AutofillProfile*>
|
||||
std::vector<AutofillProfile*> GetProfiles(
|
||||
ProfileOrder order = ProfileOrder::kNone) const;
|
||||
// TODO(crbug.com/1487119): Change return type to
|
||||
// TODO(crbug.com/40283168): Change return type to
|
||||
// std::vector<const AutofillProfile*>
|
||||
std::vector<AutofillProfile*> GetProfilesFromSource(
|
||||
AutofillProfile::Source profile_source,
|
||||
@ -131,19 +131,19 @@ class AddressDataManager : public AutofillWebDataServiceObserverOnUISequence,
|
||||
|
||||
// Returns the profiles to suggest to the user for filling, ordered by
|
||||
// frecency.
|
||||
// TODO(crbug.com/1487119): Change return type to
|
||||
// TODO(crbug.com/40283168): Change return type to
|
||||
// std::vector<const AutofillProfile*>
|
||||
std::vector<AutofillProfile*> GetProfilesToSuggest() const;
|
||||
|
||||
// Returns all `GetProfiles()` in the order that the should be shown in the
|
||||
// settings.
|
||||
// TODO(crbug.com/1487119): Change return type to
|
||||
// TODO(crbug.com/40283168): Change return type to
|
||||
// std::vector<const AutofillProfile*>
|
||||
std::vector<AutofillProfile*> GetProfilesForSettings() const;
|
||||
|
||||
// Returns the profile with the specified `guid`, or nullptr if there is no
|
||||
// profile such profile. See `GetProfiles()` for the lifetime of the pointer.
|
||||
// TODO(crbug.com/1487119): Change return type to const AutofillProfile*
|
||||
// TODO(crbug.com/40283168): Change return type to const AutofillProfile*
|
||||
AutofillProfile* GetProfileByGUID(const std::string& guid) const;
|
||||
|
||||
// Adds |profile| to the web database.
|
||||
@ -281,12 +281,12 @@ class AddressDataManager : public AutofillWebDataServiceObserverOnUISequence,
|
||||
bool IsAutofillUserSelectableTypeEnabled() const;
|
||||
|
||||
// Defines whether the Sync toggle on the Autofill Settings page is visible.
|
||||
// TODO(crbug.com/1502843): Remove when toggle becomes available on the Sync
|
||||
// TODO(crbug.com/40943238): Remove when toggle becomes available on the Sync
|
||||
// page for non-syncing users.
|
||||
bool IsAutofillSyncToggleAvailable() const;
|
||||
|
||||
// Sets the Sync UserSelectableType::kAutofill toggle value.
|
||||
// TODO(crbug.com/1502843): Used for the toggle on the Autofill Settings page
|
||||
// TODO(crbug.com/40943238): Used for the toggle on the Autofill Settings page
|
||||
// only. It controls syncing of autofill data stored in user accounts for
|
||||
// non-syncing users. Remove when toggle becomes available on the Sync page.
|
||||
void SetAutofillSelectableTypeEnabled(bool enabled);
|
||||
|
@ -258,7 +258,7 @@ TEST_F(AddressDataManagerTest, GetProfiles_Order) {
|
||||
testing::ElementsAre(Pointee(profile2), Pointee(profile3),
|
||||
Pointee(profile1)));
|
||||
|
||||
// TODO(crbug.com/1420547): The modification date cannot be set beforehand,
|
||||
// TODO(crbug.com/40258814): The modification date cannot be set beforehand,
|
||||
// since it is overwritten by the database when the profile is initially
|
||||
// stored. To test the ordering by modification date, update the `profiles`
|
||||
// modification dates such that the order gets reversed. It is necessary to
|
||||
@ -335,7 +335,7 @@ TEST_F(AddressDataManagerTest, GetProfilesToSuggest_NoProfilesAddedIfDisabled) {
|
||||
|
||||
// Tests that `GetProfilesForSettings()` orders by descending modification
|
||||
// dates.
|
||||
// TODO(crbug.com/1420547): The modification date is set in AutofillTable.
|
||||
// TODO(crbug.com/40258814): The modification date is set in AutofillTable.
|
||||
// Setting it on the test profiles directly doesn't suffice.
|
||||
TEST_F(AddressDataManagerTest, GetProfilesForSettings) {
|
||||
TestAutofillClock test_clock;
|
||||
|
@ -282,7 +282,7 @@ void AddressNormalizerImpl::StartAddressNormalization(
|
||||
const base::android::JavaParamRef<jobject>& jprofile,
|
||||
jint jtimeout_seconds,
|
||||
const base::android::JavaParamRef<jobject>& jdelegate) {
|
||||
// TODO(crbug.com/1484006): Check if existing profile needs to be passed.
|
||||
// TODO(crbug.com/40282123): Check if existing profile needs to be passed.
|
||||
AutofillProfile profile = AutofillProfile::CreateFromJavaObject(
|
||||
jprofile, /*existing_profile=*/nullptr, app_locale_);
|
||||
|
||||
|
@ -107,10 +107,10 @@ void AddressProfileSaveManager::OfferSavePrompt(
|
||||
// The prompt should not have been shown yet.
|
||||
DCHECK(!import_process->prompt_shown());
|
||||
|
||||
// TODO(crbug.com/1175693): Pass the correct SaveAddressProfilePromptOptions
|
||||
// TODO(crbug.com/40168046): Pass the correct SaveAddressProfilePromptOptions
|
||||
// below.
|
||||
|
||||
// TODO(crbug.com/1175693): Check import_process->set_prompt_was_shown() is
|
||||
// TODO(crbug.com/40168046): Check import_process->set_prompt_was_shown() is
|
||||
// always correct even in cases where it conflicts with
|
||||
// SaveAddressProfilePromptOptions
|
||||
|
||||
|
@ -556,10 +556,10 @@ class AutofillClient {
|
||||
// Hides the virtual card enroll bubble and icon if it is visible.
|
||||
virtual void HideVirtualCardEnrollBubbleAndIconIfVisible();
|
||||
|
||||
// TODO(crbug.com/991037): Find a way to merge these two functions. Shouldn't
|
||||
// use WebauthnDialogState as that state is a purely UI state (should not be
|
||||
// accessible for managers?), and some of the states |KInactive| may be
|
||||
// confusing here. Do we want to add another Enum?
|
||||
// TODO(crbug.com/40639086): Find a way to merge these two functions.
|
||||
// Shouldn't use WebauthnDialogState as that state is a purely UI state
|
||||
// (should not be accessible for managers?), and some of the states
|
||||
// |KInactive| may be confusing here. Do we want to add another Enum?
|
||||
|
||||
// Will show a dialog offering the option to use device's platform
|
||||
// authenticator in the future instead of CVC to verify the card being
|
||||
|
@ -236,7 +236,7 @@ bool SplitCJKName(const std::vector<std::u16string_view>& name_tokens,
|
||||
// one character, but there are a few that have 2. If the name does not
|
||||
// start with a surname from a known list, default to 1 character.
|
||||
//
|
||||
// TODO(crbug.com/89111): Japanese names with no space will be mis-split,
|
||||
// TODO(crbug.com/40596226): Japanese names with no space will be mis-split,
|
||||
// since we don't have a list of Japanese last names. In the Han alphabet,
|
||||
// it might also be difficult for us to differentiate between Chinese &
|
||||
// Japanese names.
|
||||
@ -420,9 +420,9 @@ NameParts SplitName(std::u16string_view name) {
|
||||
|
||||
NameParts parts;
|
||||
|
||||
// TODO(crbug.com/89111): Hungarian, Tamil, Telugu, and Vietnamese also have
|
||||
// the given name before the surname, and should be treated as special cases
|
||||
// too.
|
||||
// TODO(crbug.com/40596226): Hungarian, Tamil, Telugu, and Vietnamese also
|
||||
// have the given name before the surname, and should be treated as special
|
||||
// cases too.
|
||||
|
||||
// Treat CJK names differently.
|
||||
if (IsCJKName(name) && SplitCJKName(name_tokens, &parts)) {
|
||||
|
@ -393,7 +393,7 @@ void AutofillExternalDelegate::OnPopupHidden() {
|
||||
void AutofillExternalDelegate::DidSelectSuggestion(
|
||||
const Suggestion& suggestion) {
|
||||
if (!suggestion.is_acceptable) {
|
||||
// TODO(crbug.com/1493361): Handle this in the popup controller.
|
||||
// TODO(crbug.com/40285811): Handle this in the popup controller.
|
||||
return;
|
||||
}
|
||||
ClearPreviewedForm();
|
||||
@ -514,7 +514,7 @@ void AutofillExternalDelegate::DidAcceptSuggestion(
|
||||
const Suggestion& suggestion,
|
||||
const SuggestionPosition& position) {
|
||||
if (!suggestion.is_acceptable) {
|
||||
// TODO(crbug.com/1493361): Handle this in the popup controller.
|
||||
// TODO(crbug.com/40285811): Handle this in the popup controller.
|
||||
return;
|
||||
}
|
||||
switch (suggestion.popup_item_id) {
|
||||
|
@ -75,7 +75,7 @@ class AutofillExternalDelegate : public AutofillPopupDelegate,
|
||||
// has disabled Autocomplete because they have their own popup, and showing
|
||||
// our popup on to of theirs would be a poor user experience.
|
||||
//
|
||||
// TODO(crbug.com/1117028): Storing `form` and `field` in member variables
|
||||
// TODO(crbug.com/40144964): Storing `form` and `field` in member variables
|
||||
// breaks the cache.
|
||||
virtual void OnQuery(const FormData& form,
|
||||
const FormFieldData& field,
|
||||
|
@ -123,7 +123,7 @@ auto PopupOpenArgsAre(
|
||||
Field(&PopupOpenArgs::trigger_source, trigger_source));
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1493361): Unify existing `MockCreditCardAccessManager`s in a
|
||||
// TODO(crbug.com/40285811): Unify existing `MockCreditCardAccessManager`s in a
|
||||
// separate file.
|
||||
class MockCreditCardAccessManager : public CreditCardAccessManager {
|
||||
public:
|
||||
|
@ -454,7 +454,7 @@ bool AutofillField::IsCreditCardPrediction() const {
|
||||
|
||||
void AutofillField::AppendLogEventIfNotRepeated(
|
||||
const FieldLogEventType& log_event) {
|
||||
// TODO(crbug.com/1325851): Consider to use an Overflow event to stop
|
||||
// TODO(crbug.com/40225658): Consider to use an Overflow event to stop
|
||||
// recording log events into |field_log_events_| to save memory when
|
||||
// |field_log_events_| reaches certain threshold, e.g. 1000.
|
||||
|
||||
|
@ -120,7 +120,7 @@ AutofillField* FindAutofillFillField(const FormStructure& form,
|
||||
}
|
||||
|
||||
// Returns true if |live_form| does not match |cached_form|.
|
||||
// TODO(crbug.com/1211834): This should be some form of FormData::DeepEqual().
|
||||
// TODO(crbug.com/40183094): This should be some form of FormData::DeepEqual().
|
||||
bool CachedFormNeedsUpdate(const FormData& live_form,
|
||||
const FormStructure& cached_form) {
|
||||
if (cached_form.version() > live_form.version)
|
||||
@ -165,8 +165,8 @@ AutofillManager::~AutofillManager() {
|
||||
translate_observation_.Reset();
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1309848): Unify form parsing logic.
|
||||
// TODO(crbug.com/1465926): ML predictions are not computed here since
|
||||
// TODO(crbug.com/40219607): Unify form parsing logic.
|
||||
// TODO(crbug.com/40276177): ML predictions are not computed here since
|
||||
// `kAutofillPageLanguageDetection` is disabled by default. Once the form
|
||||
// parsing logic is unified with `ParseFormsAsync()`, this won't be necessary
|
||||
// anymore.
|
||||
@ -201,7 +201,7 @@ void AutofillManager::OnLanguageDetermined(
|
||||
|
||||
// To be run on a different task (must not access global or member
|
||||
// variables).
|
||||
// TODO(crbug.com/1309848): We can't pass a UKM logger because it's a member
|
||||
// TODO(crbug.com/40219607): We can't pass a UKM logger because it's a member
|
||||
// variable. To be fixed.
|
||||
auto RunHeuristics = [](AsyncContext context) {
|
||||
SCOPED_UMA_HISTOGRAM_TIMER(
|
||||
@ -607,7 +607,7 @@ void AutofillManager::ParseFormsAsync(
|
||||
|
||||
// To be run on a different task (must not access global or member
|
||||
// variables).
|
||||
// TODO(crbug.com/1309848): We can't pass a UKM logger because it's a member
|
||||
// TODO(crbug.com/40219607): We can't pass a UKM logger because it's a member
|
||||
// variable. To be fixed.
|
||||
auto run_heuristics = [](AsyncContext context) {
|
||||
SCOPED_UMA_HISTOGRAM_TIMER("Autofill.Timing.ParseFormsAsync.RunHeuristics");
|
||||
@ -730,7 +730,7 @@ void AutofillManager::ParseFormAsync(
|
||||
|
||||
// To be run on a different task (must not access global or member
|
||||
// variables).
|
||||
// TODO(crbug.com/1309848): We can't pass a UKM logger because it's a member
|
||||
// TODO(crbug.com/40219607): We can't pass a UKM logger because it's a member
|
||||
// variable. To be fixed.
|
||||
auto run_heuristics = [](AsyncContext context) {
|
||||
SCOPED_UMA_HISTOGRAM_TIMER("Autofill.Timing.ParseFormAsync.RunHeuristics");
|
||||
@ -744,9 +744,9 @@ void AutofillManager::ParseFormAsync(
|
||||
// The reason this takes both `form_data` and `form_structure` is that they
|
||||
// may disagree on the form's values: if the form is seen for the second time,
|
||||
// RetrieveFromCache() resets the `form_structure`'s fields.
|
||||
// TODO(crbug/1345089): Make FormStructure's and FormData's fields correspond,
|
||||
// migrate all event handlers in BrowserAutofillManager take a FormStructure,
|
||||
// and drop the FormData from UpdateCache().
|
||||
// TODO(crbug.com/40232021): Make FormStructure's and FormData's fields
|
||||
// correspond, migrate all event handlers in BrowserAutofillManager take a
|
||||
// FormStructure, and drop the FormData from UpdateCache().
|
||||
auto update_cache = base::BindOnce(
|
||||
[](base::WeakPtr<AutofillManager> self,
|
||||
base::OnceCallback<void(AutofillManager&, const FormData&)> callback,
|
||||
|
@ -75,8 +75,8 @@ class AutofillManager
|
||||
// no 2XX
|
||||
// response code or a null response body).
|
||||
//
|
||||
// TODO(crbug.com/1476488): Consider moving events that are specific to BAM to
|
||||
// a new BAM::Observer class.
|
||||
// TODO(crbug.com/40280003): Consider moving events that are specific to BAM
|
||||
// to a new BAM::Observer class.
|
||||
class Observer : public base::CheckedObserver {
|
||||
public:
|
||||
virtual void OnAutofillManagerDestroyed(AutofillManager& manager) {}
|
||||
@ -94,7 +94,7 @@ class AutofillManager
|
||||
FormGlobalId form,
|
||||
FieldGlobalId field) {}
|
||||
|
||||
// TODO(crbug.com/1331312): Get rid of `text_value`.
|
||||
// TODO(crbug.com/40227496): Get rid of `text_value`.
|
||||
virtual void OnAfterTextFieldDidChange(AutofillManager& manager,
|
||||
FormGlobalId form,
|
||||
FieldGlobalId field,
|
||||
@ -165,8 +165,8 @@ class AutofillManager
|
||||
// be filled: each `FormFieldData::value` contains the filled or previewed
|
||||
// value; the corresponding `AutofillField` contains the field type
|
||||
// information. The field values come from `profile_or_credit_card`.
|
||||
// TODO(crbug.com/1331312): Get rid of FormFieldData.
|
||||
// TODO(crbug.com/1476488): Consider removing the event in favor of
|
||||
// TODO(crbug.com/40227496): Get rid of FormFieldData.
|
||||
// TODO(crbug.com/40280003): Consider removing the event in favor of
|
||||
// OnAfterDidFillAutofillFormData(), which is fired by the renderer.
|
||||
virtual void OnFillOrPreviewDataModelForm(
|
||||
AutofillManager& manager,
|
||||
@ -426,7 +426,7 @@ class AutofillManager
|
||||
virtual bool ShouldParseForms() = 0;
|
||||
|
||||
// Invoked before parsing the forms.
|
||||
// TODO(crbug.com/1309848): Rename to some consistent scheme, e.g.,
|
||||
// TODO(crbug.com/40219607): Rename to some consistent scheme, e.g.,
|
||||
// OnBeforeParsedForm().
|
||||
virtual void OnBeforeProcessParsedForms() = 0;
|
||||
|
||||
@ -456,8 +456,8 @@ class AutofillManager
|
||||
// - if the overall number exceeds `kAutofillManagerMaxFormCacheSize`;
|
||||
// - if the form should not be parsed according to ShouldParseForms().
|
||||
//
|
||||
// TODO(crbug.com/1309848): Add unit tests.
|
||||
// TODO(crbug.com/1345089): Eliminate either the ParseFormsAsync() or
|
||||
// TODO(crbug.com/40219607): Add unit tests.
|
||||
// TODO(crbug.com/40232021): Eliminate either the ParseFormsAsync() or
|
||||
// ParseFormAsync(). There are a few possible directions:
|
||||
// - Let ParseFormAsync() wrap the FormData in a vector, call
|
||||
// ParseFormsAsync(), and then unwrap the vector again.
|
||||
|
@ -587,7 +587,7 @@ bool AddCreditCardNameChildSuggestion(const CreditCard& credit_card,
|
||||
}
|
||||
Suggestion cc_name(credit_card.GetInfo(CREDIT_CARD_NAME_FULL, app_locale),
|
||||
PopupItemId::kCreditCardFieldByFieldFilling);
|
||||
// TODO(crbug.com/1121806): Use instrument ID for server credit cards.
|
||||
// TODO(crbug.com/40146355): Use instrument ID for server credit cards.
|
||||
cc_name.payload = Suggestion::Guid(credit_card.guid());
|
||||
cc_name.field_by_field_filling_type_used = CREDIT_CARD_NAME_FULL;
|
||||
suggestion.children.push_back(std::move(cc_name));
|
||||
@ -606,7 +606,7 @@ bool AddCreditCardNumberChildSuggestion(const CreditCard& credit_card,
|
||||
Suggestion cc_number(credit_card.ObfuscatedNumberWithVisibleLastFourDigits(
|
||||
kFieldByFieldObfuscationLength),
|
||||
PopupItemId::kCreditCardFieldByFieldFilling);
|
||||
// TODO(crbug.com/1121806): Use instrument ID for server credit cards.
|
||||
// TODO(crbug.com/40146355): Use instrument ID for server credit cards.
|
||||
cc_number.payload = Suggestion::Guid(credit_card.guid());
|
||||
cc_number.field_by_field_filling_type_used = CREDIT_CARD_NUMBER;
|
||||
cc_number.labels.push_back({Suggestion::Text(l10n_util::GetStringUTF16(
|
||||
@ -624,7 +624,7 @@ void AddCreditCardExpiryDateChildSuggestion(const CreditCard& credit_card,
|
||||
Suggestion cc_expiration(
|
||||
credit_card.GetInfo(CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, app_locale),
|
||||
PopupItemId::kCreditCardFieldByFieldFilling);
|
||||
// TODO(crbug.com/1121806): Use instrument ID for server credit cards.
|
||||
// TODO(crbug.com/40146355): Use instrument ID for server credit cards.
|
||||
cc_expiration.payload = Suggestion::Guid(credit_card.guid());
|
||||
cc_expiration.field_by_field_filling_type_used =
|
||||
CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR;
|
||||
@ -634,7 +634,7 @@ void AddCreditCardExpiryDateChildSuggestion(const CreditCard& credit_card,
|
||||
Suggestion cc_expiration_month(
|
||||
credit_card.GetInfo(CREDIT_CARD_EXP_MONTH, app_locale),
|
||||
PopupItemId::kCreditCardFieldByFieldFilling);
|
||||
// TODO(crbug.com/1121806): Use instrument ID for server credit cards.
|
||||
// TODO(crbug.com/40146355): Use instrument ID for server credit cards.
|
||||
cc_expiration_month.payload = Suggestion::Guid(credit_card.guid());
|
||||
cc_expiration_month.field_by_field_filling_type_used = CREDIT_CARD_EXP_MONTH;
|
||||
cc_expiration_month.labels.push_back({Suggestion::Text(l10n_util::GetStringUTF16(
|
||||
@ -643,7 +643,7 @@ void AddCreditCardExpiryDateChildSuggestion(const CreditCard& credit_card,
|
||||
Suggestion cc_expiration_year(
|
||||
credit_card.GetInfo(CREDIT_CARD_EXP_2_DIGIT_YEAR, app_locale),
|
||||
PopupItemId::kCreditCardFieldByFieldFilling);
|
||||
// TODO(crbug.com/1121806): Use instrument ID for server credit cards.
|
||||
// TODO(crbug.com/40146355): Use instrument ID for server credit cards.
|
||||
cc_expiration_year.payload = Suggestion::Guid(credit_card.guid());
|
||||
cc_expiration_year.field_by_field_filling_type_used =
|
||||
CREDIT_CARD_EXP_2_DIGIT_YEAR;
|
||||
|
@ -179,7 +179,7 @@ MATCHER(ContainsAddressFooterSuggestions, "") {
|
||||
|
||||
} // namespace
|
||||
|
||||
// TODO(crbug.com/1196021): Move GetSuggestionsForCreditCard tests and
|
||||
// TODO(crbug.com/40176273): Move GetSuggestionsForCreditCard tests and
|
||||
// BrowserAutofillManagerTestForSharingNickname here from
|
||||
// browser_autofill_manager_unittest.cc.
|
||||
class AutofillSuggestionGeneratorTest : public testing::Test {
|
||||
@ -855,7 +855,7 @@ TEST_F(AutofillSuggestionGeneratorTest,
|
||||
profile.GetRawInfo(NAME_FULL), Suggestion::Text::IsPrimary(true))));
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1459990): Move AutofillChildrenSuggestionGeneratorTest.
|
||||
// TODO(crbug.com/40274514): Move AutofillChildrenSuggestionGeneratorTest.
|
||||
// CreateSuggestionsFromProfiles_GroupFillingLabels_* tests under this fixture.
|
||||
// Text fixture for label generation related tests. Parameterized by triggering
|
||||
// field type since how we build labels depends highly on it.
|
||||
|
@ -24,7 +24,7 @@ class AutofillType {
|
||||
// A collection of server prediction metadata related to a form field.
|
||||
// Its current intended use is solely for consumers outside of
|
||||
// components/autofill.
|
||||
// TODO(crbug.com/1345089): Move all server prediction related information
|
||||
// TODO(crbug.com/40232021): Move all server prediction related information
|
||||
// from `AutofillField` here, add it as a member to `AutofillType` and use it
|
||||
// inside `AutofillField`.
|
||||
struct ServerPrediction {
|
||||
|
@ -21,7 +21,7 @@ using ::testing::Property;
|
||||
using FieldPrediction =
|
||||
AutofillQueryResponse::FormSuggestion::FieldSuggestion::FieldPrediction;
|
||||
|
||||
// TODO(crbug.com/1466435): Consolidate the prediction matchers used in
|
||||
// TODO(crbug.com/40276395): Consolidate the prediction matchers used in
|
||||
// different files and move them to a central location.
|
||||
Matcher<FieldPrediction> EqualsPrediction(FieldType prediction) {
|
||||
return AllOf(Property("type", &FieldPrediction::type, prediction),
|
||||
|
@ -481,7 +481,7 @@ bool ShouldShowSuggestionsForAutocompleteUnrecognizedFields(
|
||||
|
||||
// Checks if the `credit_card` needs to be fetched in order to complete the
|
||||
// current filling flow.
|
||||
// TODO(crbug.com/1331312): Only use parsed data.
|
||||
// TODO(crbug.com/40227496): Only use parsed data.
|
||||
bool ShouldFetchCreditCard(const FormData& form,
|
||||
const FormFieldData& field,
|
||||
const FormStructure& form_structure,
|
||||
@ -762,7 +762,7 @@ void BrowserAutofillManager::OnFormSubmittedImpl(const FormData& form,
|
||||
CHECK(!client().IsOffTheRecord() || !submitted_form);
|
||||
if (!submitted_form) {
|
||||
// We always give Autocomplete a chance to save the data.
|
||||
// TODO(crbug.com/1467623): Verify frequency of plus address (or the other
|
||||
// TODO(crbug.com/40276862): Verify frequency of plus address (or the other
|
||||
// type(s) checked for below, for that matter) slipping through in this code
|
||||
// path.
|
||||
single_field_form_fill_router_->OnWillSubmitForm(
|
||||
@ -1265,7 +1265,7 @@ void BrowserAutofillManager::OnAskForValuesToFillImpl(
|
||||
if (ShouldOfferSingleFieldFormFill()) {
|
||||
// Suggestions come back asynchronously, so the SingleFieldFormFillRouter
|
||||
// will handle sending the results back to the renderer.
|
||||
// TODO(crbug.com/1007974): The callback will only be called once.
|
||||
// TODO(crbug.com/40100455): The callback will only be called once.
|
||||
bool handled_by_single_field_form_filler =
|
||||
single_field_form_fill_router_->OnGetSingleFieldSuggestions(
|
||||
field, client(),
|
||||
@ -1468,7 +1468,7 @@ void BrowserAutofillManager::OnFocusNoLongerOnFormImpl(
|
||||
bool had_interacted_form) {
|
||||
// For historical reasons, Chrome takes action on this message only if focus
|
||||
// was previously on a form with which the user had interacted.
|
||||
// TODO(crbug.com/1140473): Remove need for this short-circuit.
|
||||
// TODO(crbug.com/40726656): Remove need for this short-circuit.
|
||||
if (!had_interacted_form) {
|
||||
return;
|
||||
}
|
||||
@ -2216,7 +2216,7 @@ void BrowserAutofillManager::OnCreditCardFetchedSuccessfully(
|
||||
options.masked_card_number_last_four =
|
||||
credit_card.ObfuscatedNumberWithVisibleLastFourDigits();
|
||||
options.virtual_card = credit_card;
|
||||
// TODO(crbug.com/1473481): Remove CVC from
|
||||
// TODO(crbug.com/40927041): Remove CVC from
|
||||
// VirtualCardManualFallbackBubbleOptions.
|
||||
options.virtual_card_cvc = credit_card.cvc();
|
||||
options.card_image = GetCardImage(credit_card);
|
||||
@ -2395,7 +2395,7 @@ BrowserAutofillManager::GetVirtualCreditCardsForStandaloneCvcField(
|
||||
return virtual_card_guid_to_last_four_map;
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1309848) Eliminate and replace with a listener?
|
||||
// TODO(crbug.com/40219607) Eliminate and replace with a listener?
|
||||
// Should we do the same with all the other BrowserAutofillManager events?
|
||||
void BrowserAutofillManager::OnBeforeProcessParsedForms() {
|
||||
has_parsed_forms_ = true;
|
||||
@ -2744,7 +2744,7 @@ void BrowserAutofillManager::ReportAutofillWebOTPMetrics(bool used_web_otp) {
|
||||
|
||||
void BrowserAutofillManager::ProcessFieldLogEventsInForm(
|
||||
const FormStructure& form_structure) {
|
||||
// TODO(crbug.com/1325851): Log metrics if at least one field in the form was
|
||||
// TODO(crbug.com/40225658): Log metrics if at least one field in the form was
|
||||
// classified as a certain type.
|
||||
LogEventCountsUMAMetric(form_structure);
|
||||
|
||||
|
@ -167,7 +167,7 @@ class BrowserAutofillManager : public AutofillManager {
|
||||
|
||||
// Routes calls from external components to FillOrPreviewFieldImpl.
|
||||
// Virtual for testing.
|
||||
// TODO(crbug.com/1331312): Replace FormFieldData parameter by FieldGlobalId.
|
||||
// TODO(crbug.com/40227496): Replace FormFieldData parameter by FieldGlobalId.
|
||||
virtual void FillOrPreviewField(mojom::ActionPersistence action_persistence,
|
||||
mojom::FieldActionType action_type,
|
||||
const FormData& form,
|
||||
@ -187,7 +187,7 @@ class BrowserAutofillManager : public AutofillManager {
|
||||
|
||||
// Fills or previews the profile form.
|
||||
// Assumes the form and field are valid.
|
||||
// TODO(crbug.com/1330108): Clean up the API.
|
||||
// TODO(crbug.com/40227071): Clean up the API.
|
||||
virtual void FillOrPreviewProfileForm(
|
||||
mojom::ActionPersistence action_persistence,
|
||||
const FormData& form,
|
||||
@ -196,7 +196,7 @@ class BrowserAutofillManager : public AutofillManager {
|
||||
const AutofillTriggerDetails& trigger_details);
|
||||
|
||||
// Asks for authentication via CVC before filling with server card data.
|
||||
// TODO(crbug.com/1330108): Clean up the API.
|
||||
// TODO(crbug.com/40227071): Clean up the API.
|
||||
virtual void AuthenticateThenFillCreditCardForm(
|
||||
const FormData& form,
|
||||
const FormFieldData& field,
|
||||
@ -431,9 +431,9 @@ class BrowserAutofillManager : public AutofillManager {
|
||||
// Returns false if Autofill is disabled or if no Autofill data is available.
|
||||
bool RefreshDataModels();
|
||||
|
||||
// TODO(crbug.com/1249665): Move the functions to AutofillSuggestionGenerator.
|
||||
// Gets the card referred to by the guid |unique_id|. Returns |nullptr| if
|
||||
// card does not exist.
|
||||
// TODO(crbug.com/40197696): Move the functions to
|
||||
// AutofillSuggestionGenerator. Gets the card referred to by the guid
|
||||
// |unique_id|. Returns |nullptr| if card does not exist.
|
||||
CreditCard* GetCreditCard(Suggestion::BackendId unique_id);
|
||||
|
||||
// Gets the profile referred to by the guid |unique_id|. Returns |nullptr| if
|
||||
|
@ -43,14 +43,14 @@ class BrowserAutofillManagerTestApi : public AutofillManagerTestApi {
|
||||
manager_->form_filler_->limit_before_refill_ = limit;
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1517894): Remove.
|
||||
// TODO(crbug.com/41490871): Remove.
|
||||
bool ShouldTriggerRefill(const FormStructure& form_structure,
|
||||
RefillTriggerReason refill_trigger_reason) {
|
||||
return manager_->form_filler_->ShouldTriggerRefill(form_structure,
|
||||
refill_trigger_reason);
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1517894): Remove.
|
||||
// TODO(crbug.com/41490871): Remove.
|
||||
void TriggerRefill(const FormData& form,
|
||||
const AutofillTriggerDetails& trigger_details) {
|
||||
manager_->form_filler_->TriggerRefill(form, trigger_details);
|
||||
@ -94,7 +94,7 @@ class BrowserAutofillManagerTestApi : public AutofillManagerTestApi {
|
||||
manager_->OnCreditCardFetched(result, credit_card);
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1517894): Remove.
|
||||
// TODO(crbug.com/41490871): Remove.
|
||||
void FillOrPreviewDataModelForm(
|
||||
mojom::ActionPersistence action_persistence,
|
||||
const FormData& form,
|
||||
@ -133,7 +133,7 @@ class BrowserAutofillManagerTestApi : public AutofillManagerTestApi {
|
||||
consider_form_as_secure_for_testing;
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1517894): Remove.
|
||||
// TODO(crbug.com/41490871): Remove.
|
||||
void AddFormFillEntry(
|
||||
base::span<const FormFieldData* const> filled_fields,
|
||||
base::span<const AutofillField* const> filled_autofill_fields,
|
||||
|
@ -799,7 +799,7 @@ class BrowserAutofillManagerTest : public testing::Test {
|
||||
form, false, SubmissionSource::FORM_SUBMISSION);
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1330108): Have separate functions for profile and credit
|
||||
// TODO(crbug.com/40227071): Have separate functions for profile and credit
|
||||
// card filling.
|
||||
void FillAutofillFormData(
|
||||
const FormData& form,
|
||||
@ -3014,7 +3014,7 @@ TEST_F(BrowserAutofillManagerTest,
|
||||
|
||||
// Tests that BrowserAutofillManager ignores loss of focus events sent from the
|
||||
// renderer if the renderer did not have a previously-interacted form.
|
||||
// TODO(crbug.com/1140473): Remove this test when workaround is no longer
|
||||
// TODO(crbug.com/40726656): Remove this test when workaround is no longer
|
||||
// needed.
|
||||
TEST_F(BrowserAutofillManagerTest,
|
||||
ShouldIgnoreLossOfFocusWithNoPreviouslyInteractedForm) {
|
||||
@ -3611,7 +3611,7 @@ TEST_F(
|
||||
FormSubmitted(response_data);
|
||||
}
|
||||
// Test the field log events at the form submission.
|
||||
// TODO(crbug.com/1007974): Move those tests out of this file.
|
||||
// TODO(crbug.com/40100455): Move those tests out of this file.
|
||||
class BrowserAutofillManagerWithLogEventsTest
|
||||
: public BrowserAutofillManagerTest {
|
||||
protected:
|
||||
|
@ -53,7 +53,7 @@ std::optional<base::flat_map<std::string, std::string>> ParseUsingRegex(
|
||||
if (results[index - 1].empty()) {
|
||||
continue;
|
||||
}
|
||||
// TODO(crbug.com/1464568): Remove unknown type special handling once field
|
||||
// TODO(crbug.com/40275657): Remove unknown type special handling once field
|
||||
// types for unit-type and unit-name tokens are introduced.
|
||||
std::string parsed_name = RemoveVersionSuffix(name);
|
||||
if (parsed_name == "UNKNOWN_TYPE") {
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
namespace autofill {
|
||||
|
||||
// TODO(crbug.com/1483969): Refactor these methods and create separate
|
||||
// TODO(crbug.com/40932427): Refactor these methods and create separate
|
||||
// constructors that are specific to each offer.
|
||||
// static
|
||||
AutofillOfferData AutofillOfferData::GPayCardLinkedOffer(
|
||||
|
@ -73,7 +73,7 @@ class AutofillOfferData {
|
||||
const DisplayStrings& display_strings,
|
||||
const std::string& promo_code);
|
||||
|
||||
// TODO(crbug.com/1483969): Refactor this class to ensure the correct access
|
||||
// TODO(crbug.com/40932427): Refactor this class to ensure the correct access
|
||||
// specifiers and move constructors and move assignment constructors.
|
||||
AutofillOfferData();
|
||||
~AutofillOfferData();
|
||||
|
@ -134,7 +134,7 @@ FieldType GetStorableTypeCollapsingGroups(FieldType type) {
|
||||
// example, if the profile is going to fill ADDRESS_HOME_ZIP, it should
|
||||
// prioritize showing that over ADDRESS_HOME_STATE in the suggestion sublabel.
|
||||
int SpecificityForType(FieldType type) {
|
||||
// TODO(crbug.com/1459990): Clean up after launch.
|
||||
// TODO(crbug.com/40274514): Clean up after launch.
|
||||
if (!base::FeatureList::IsEnabled(
|
||||
features::kAutofillGranularFillingAvailable)) {
|
||||
switch (type) {
|
||||
@ -302,7 +302,7 @@ AutofillProfile CreateStarterProfile(
|
||||
AutofillProfile profile = AutofillProfile(source, country_code);
|
||||
// Only set the guid if CreateStartProfile is called on an existing profile
|
||||
// (java guid not empty). Otherwise, keep the generated one.
|
||||
// TODO(crbug.com/1484006): `guid` should be always empty when existing
|
||||
// TODO(crbug.com/40282123): `guid` should be always empty when existing
|
||||
// profile is not set. CHECK should be added when this condition holds.
|
||||
if (!guid.empty()) {
|
||||
profile.set_guid(guid);
|
||||
@ -390,7 +390,8 @@ base::android::ScopedJavaLocalRef<jobject> AutofillProfile::CreateJavaObject(
|
||||
|
||||
for (FieldType type : GetDatabaseStoredTypesOfAutofillProfile()) {
|
||||
auto status = static_cast<jint>(GetVerificationStatus(type));
|
||||
// TODO(crbug.com/1471502): Reconcile usage of GetInfo and GetRawInfo below.
|
||||
// TODO(crbug.com/40278253): Reconcile usage of GetInfo and GetRawInfo
|
||||
// below.
|
||||
if (type == NAME_FULL) {
|
||||
Java_AutofillProfile_setInfo(
|
||||
env, jprofile, static_cast<jint>(type),
|
||||
@ -430,7 +431,8 @@ AutofillProfile AutofillProfile::CreateFromJavaObject(
|
||||
if (!value) {
|
||||
continue;
|
||||
}
|
||||
// TODO(crbug.com/1471502): Reconcile usage of GetInfo and GetRawInfo below.
|
||||
// TODO(crbug.com/40278253): Reconcile usage of GetInfo and GetRawInfo
|
||||
// below.
|
||||
if (field_type == NAME_FULL || field_type == ADDRESS_HOME_COUNTRY) {
|
||||
profile.SetInfoWithVerificationStatus(
|
||||
field_type, base::android::ConvertJavaStringToUTF16(value),
|
||||
@ -907,7 +909,7 @@ void AutofillProfile::CreateInferredLabels(
|
||||
suggested_fields ? &suggested_fields_types : nullptr, excluded_fields,
|
||||
&fields_to_use);
|
||||
|
||||
// TODO(crbug.com/1459990): Clean up after launch.
|
||||
// TODO(crbug.com/40274514): Clean up after launch.
|
||||
CHECK(base::FeatureList::IsEnabled(
|
||||
features::kAutofillGranularFillingAvailable) ||
|
||||
!triggering_field_type);
|
||||
|
@ -405,7 +405,7 @@ class AutofillProfile : public AutofillDataModel {
|
||||
|
||||
// Stores information about the quality of this profile's stored types.
|
||||
// Only used when `kAutofillTrackProfileTokenQuality` is enabled.
|
||||
// TODO(crbug.com/1453650): Clean-up comment.
|
||||
// TODO(crbug.com/40271999): Clean-up comment.
|
||||
ProfileTokenQuality token_quality_;
|
||||
};
|
||||
|
||||
|
@ -30,7 +30,7 @@ struct ProfileValueDifference {
|
||||
};
|
||||
|
||||
// The values corresponding to those types are visible in the settings.
|
||||
// TODO(crbug.com/1441904): Landmark, between-street and admin-level2 are in
|
||||
// TODO(crbug.com/40266693): Landmark, between-street and admin-level2 are in
|
||||
// progress to be included in the settings.
|
||||
// TODO(b/40275657): This should depend on the country.
|
||||
FieldTypeSet GetUserVisibleTypes();
|
||||
|
@ -1337,7 +1337,7 @@ TEST(AutofillProfileTest, Compare) {
|
||||
|
||||
// For each structured profile tokens, test the comparison operator for both the
|
||||
// value and the status.
|
||||
// TODO(crbug.com/1464568): Extend this test to cover i18n profiles.
|
||||
// TODO(crbug.com/40275657): Extend this test to cover i18n profiles.
|
||||
TEST(AutofillProfileTest, Compare_StructuredTypes) {
|
||||
base::test::ScopedFeatureList feature_list;
|
||||
feature_list.InitWithFeatures(
|
||||
|
@ -101,7 +101,7 @@ FieldType AddressComponent::GetStorageType() const {
|
||||
|
||||
FieldType AddressComponent::GetFallbackType(FieldType field_type) const {
|
||||
CHECK(IsSupportedType(field_type));
|
||||
// TODO(crbug.com/1464568): Add logic for i18n fallback types.
|
||||
// TODO(crbug.com/40275657): Add logic for i18n fallback types.
|
||||
return field_type;
|
||||
}
|
||||
|
||||
|
@ -217,7 +217,7 @@ class AddressComponent {
|
||||
|
||||
// Wrapper function around
|
||||
// SetValueForTypeIfPossible(/*invalidate_child_nodes=*/true);
|
||||
// TODO(1440504): Remove and merge with SetValueForType.
|
||||
// TODO(crbug.com/40266145): Remove and merge with SetValueForType.
|
||||
bool SetValueForTypeAndResetSubstructure(FieldType field_type,
|
||||
const std::u16string& value,
|
||||
const VerificationStatus& status);
|
||||
|
@ -213,7 +213,7 @@ std::u16string NameFull::GetFormatString() const {
|
||||
|
||||
auto* pattern_provider = StructuredAddressesFormatProvider::GetInstance();
|
||||
CHECK(pattern_provider);
|
||||
// TODO(crbug/1464568): Add i18n support for name format strings.
|
||||
// TODO(crbug.com/40275657): Add i18n support for name format strings.
|
||||
return pattern_provider->GetPattern(GetStorageType(), /*country_code=*/"",
|
||||
info);
|
||||
}
|
||||
|
@ -94,7 +94,7 @@ bool NameInfo::SetInfoWithVerificationStatusImpl(const AutofillType& type,
|
||||
// If the set string is token equivalent to the old one, the value can
|
||||
// just be updated, otherwise create a new name record and complete it in
|
||||
// the end.
|
||||
// TODO(1440504): Move this logic to the data model.
|
||||
// TODO(crbug.com/40266145): Move this logic to the data model.
|
||||
AreStringTokenEquivalent(value, name_->GetValueForType(NAME_FULL))
|
||||
? name_->SetValueForType(type.GetStorableType(), value, status)
|
||||
: name_->SetValueForTypeAndResetSubstructure(type.GetStorableType(),
|
||||
|
@ -205,7 +205,7 @@ CreditCard::CreditCard(const std::string& guid, const std::string& origin)
|
||||
card_issuer_(Issuer::kIssuerUnknown),
|
||||
instrument_id_(0) {}
|
||||
|
||||
// TODO(crbug.com/1121806): Calling the CreditCard's default constructor
|
||||
// TODO(crbug.com/40146355): Calling the CreditCard's default constructor
|
||||
// initializes the `guid_`. This shouldn't happen for server cards, since they
|
||||
// are not identified by guids. However, some of the server card logic relies
|
||||
// by them for historical reasons.
|
||||
@ -217,7 +217,7 @@ CreditCard::CreditCard(RecordType type, const std::string& server_id)
|
||||
server_id_ = server_id;
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1121806): See `server_id` constructor.
|
||||
// TODO(crbug.com/40146355): See `server_id` constructor.
|
||||
CreditCard::CreditCard(RecordType type, int64_t instrument_id) : CreditCard() {
|
||||
DCHECK(type == RecordType::kMaskedServerCard ||
|
||||
type == RecordType::kFullServerCard);
|
||||
|
@ -519,7 +519,7 @@ class CreditCard : public AutofillDataModel {
|
||||
// some dependencies around `guid_` for server cards exist. See the server_id
|
||||
// constructor of `CreditCard()`. Notably, for server cards the `guid_` is
|
||||
// not persisted and should not be used.
|
||||
// TODO(crbug.com/1121806): Create a variant of the different ids, since
|
||||
// TODO(crbug.com/40146355): Create a variant of the different ids, since
|
||||
// only one of them should be populated based on the `record_type()`.
|
||||
std::string guid_;
|
||||
|
||||
@ -581,7 +581,7 @@ class CreditCard : public AutofillDataModel {
|
||||
|
||||
// For masked server cards, this is the ID assigned by the server to uniquely
|
||||
// identify this card. |server_id_| is the legacy version of this.
|
||||
// TODO(crbug.com/1121806): remove server_id_ after full deprecation
|
||||
// TODO(crbug.com/40146355): remove server_id_ after full deprecation
|
||||
int64_t instrument_id_;
|
||||
|
||||
// The virtual card enrollment state of this card. If it is kEnrolled, then
|
||||
|
@ -60,7 +60,7 @@ std::u16string GetNormalizedStateSelectControlValue(
|
||||
// We attempt to normalize `value`. If normalization was not successful, it
|
||||
// means the rules were probably not loaded. Give up. Note that the normalizer
|
||||
// will fetch the rule next time it's called.
|
||||
// TODO(crbug.com/788417): We should probably sanitize |value| before
|
||||
// TODO(crbug.com/40551524): We should probably sanitize |value| before
|
||||
// normalizing.
|
||||
if (!NormalizeAdminAreaForCountryCode(value, country_code,
|
||||
address_normalizer)) {
|
||||
@ -78,7 +78,7 @@ std::u16string GetNormalizedStateSelectControlValue(
|
||||
}
|
||||
|
||||
// Normalize `field_options` using a copy.
|
||||
// TODO(crbug.com/788417): We should probably sanitize the values in
|
||||
// TODO(crbug.com/40551524): We should probably sanitize the values in
|
||||
// `field_options_copy` before normalizing.
|
||||
bool normalized = false;
|
||||
std::vector<SelectOption> field_options_copy(field_options.begin(),
|
||||
@ -348,7 +348,7 @@ std::u16string GetStateTextForInput(const std::u16string& state_value,
|
||||
// else
|
||||
// - pick the FIRST option whose value or content CONTAINS the phone country
|
||||
// code with prefix (old behavior).
|
||||
// TODO(crbug.com/1395740) Clean up the comment above when the feature is
|
||||
// TODO(crbug.com/40249216) Clean up the comment above when the feature is
|
||||
// launched.
|
||||
std::u16string GetPhoneCountryCodeSelectControlValue(
|
||||
const std::u16string& phone_country_code,
|
||||
|
@ -33,7 +33,7 @@ std::u16string GetFillingValueForCreditCard(
|
||||
// date version of the form and can be different from the
|
||||
// `autofill_fields`. `form_fields` are used to check if the cached field
|
||||
// is still present in the form on the renderer side.
|
||||
// TODO(crbug.com/1331312): Remove FormFieldData parameter.
|
||||
// TODO(crbug.com/40227496): Remove FormFieldData parameter.
|
||||
bool WillFillCreditCardNumber(
|
||||
base::span<const FormFieldData> fields,
|
||||
base::span<const std::unique_ptr<AutofillField>> autofill_fields,
|
||||
|
@ -92,7 +92,7 @@ namespace autofill {
|
||||
// country code. If we don't reformat the number, the GetRawInfo()
|
||||
// representation remains without one. In all countries but the US and Canada,
|
||||
// formatting will put a + in front of the country code.
|
||||
// TODO(crbug.com/1311937) Clean this up once AutofillInferCountryCallingCode
|
||||
// TODO(crbug.com/40220393) Clean this up once AutofillInferCountryCallingCode
|
||||
// is launched.
|
||||
//
|
||||
// PHONE_HOME_EXTENSION: Extensions are detected, but not filled. This would
|
||||
|
@ -104,7 +104,7 @@ class FormAutofillHistory {
|
||||
// Adds a new history entry in the beginning of the list.
|
||||
// FormFieldData's are needed to get the most recent value of a field.
|
||||
// AutofillField's are needed to get the type of a field.
|
||||
// TODO(crbug.com/1345089): Only pass AutofillFields.
|
||||
// TODO(crbug.com/40232021): Only pass AutofillFields.
|
||||
void AddFormFillEntry(
|
||||
base::span<const FormFieldData* const> filled_fields,
|
||||
base::span<const AutofillField* const> filled_autofill_fields,
|
||||
|
@ -80,7 +80,7 @@ bool IsValidFieldTypeAndValue(
|
||||
// field;
|
||||
// - phone number components because a form might request several phone
|
||||
// numbers.
|
||||
// TODO(crbug.com/1156315) Clean up when launched.
|
||||
// TODO(crbug.com/40735892) Clean up when launched.
|
||||
FieldTypeGroup field_type_group = GroupTypeOfFieldType(field_type);
|
||||
if (observed_types.contains(field_type) && field_type != EMAIL_ADDRESS &&
|
||||
(!base::FeatureList::IsEnabled(
|
||||
@ -549,7 +549,7 @@ FormDataImporter::GetAddressObservedFieldValues(
|
||||
}
|
||||
|
||||
// Found phone number component field.
|
||||
// TODO(crbug.com/1156315) Remove feature check when launched.
|
||||
// TODO(crbug.com/40735892) Remove feature check when launched.
|
||||
if (autofill_type.group() == FieldTypeGroup::kPhone &&
|
||||
base::FeatureList::IsEnabled(
|
||||
features::kAutofillEnableImportWhenMultiplePhoneNumbers)) {
|
||||
@ -1156,7 +1156,7 @@ Iban FormDataImporter::ExtractIbanFromForm(const FormStructure& form) {
|
||||
return candidate_iban;
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1450749): Move ShouldOfferCreditCardSave to
|
||||
// TODO(crbug.com/40270301): Move ShouldOfferCreditCardSave to
|
||||
// credit_card_save_manger and combine all card and CVC save logic to
|
||||
// ProceedWithSavingIfApplicable function.
|
||||
bool FormDataImporter::ShouldOfferCreditCardSave(
|
||||
|
@ -90,7 +90,7 @@ class FormDataImporter : public PersonalDataManagerObserver,
|
||||
ExtractCreditCardFromFormResult ExtractCreditCardFromForm(
|
||||
const FormStructure& form);
|
||||
|
||||
// TODO(crbug.com/1381477): Rename to ExtractCreditCardFromForm() once
|
||||
// TODO(crbug.com/40876814): Rename to ExtractCreditCardFromForm() once
|
||||
// `features::kAutofillRelaxCreditCardImport` is launched.
|
||||
ExtractCreditCardFromFormResult ExtractCreditCardFromFormRelaxed(
|
||||
const FormStructure& form);
|
||||
@ -299,7 +299,7 @@ class FormDataImporter : public PersonalDataManagerObserver,
|
||||
// or local card save in situations where it would be invalid to offer them.
|
||||
// For example, we should not offer to upload card if it is already a valid
|
||||
// server card.
|
||||
// TODO(crbug.com/1450749): Move to CreditCardSaveManger.
|
||||
// TODO(crbug.com/40270301): Move to CreditCardSaveManger.
|
||||
bool ShouldOfferCreditCardSave(
|
||||
const std::optional<CreditCard>& extracted_credit_card,
|
||||
bool is_credit_card_upstream_enabled);
|
||||
|
@ -491,7 +491,7 @@ class MockVirtualCardEnrollmentManager
|
||||
(override));
|
||||
};
|
||||
|
||||
// TODO(crbug.com/1450749): Move MockCreditCardSaveManager to new header and cc
|
||||
// TODO(crbug.com/40270301): Move MockCreditCardSaveManager to new header and cc
|
||||
// file.
|
||||
class MockCreditCardSaveManager : public TestCreditCardSaveManager {
|
||||
public:
|
||||
|
@ -396,7 +396,7 @@ FillingProduct FormFiller::UndoAutofill(
|
||||
field.set_is_autofilled(previous_state.is_autofilled);
|
||||
|
||||
// Update the cached AutofillField in the browser.
|
||||
// TODO(crbug.com/1345089): Consider updating the value too.
|
||||
// TODO(crbug.com/40232021): Consider updating the value too.
|
||||
autofill_field.set_is_autofilled(previous_state.is_autofilled);
|
||||
autofill_field.set_autofill_source_profile_guid(
|
||||
previous_state.autofill_source_profile_guid);
|
||||
@ -445,7 +445,7 @@ void FormFiller::FillOrPreviewField(mojom::ActionPersistence action_persistence,
|
||||
|
||||
if (popup_item_id == PopupItemId::kCreditCardFieldByFieldFilling ||
|
||||
popup_item_id == PopupItemId::kAddressFieldByFieldFilling) {
|
||||
// TODO(crbug.com/1345089): Only use AutofillField.
|
||||
// TODO(crbug.com/40232021): Only use AutofillField.
|
||||
const FormFieldData* const filled_field = &field;
|
||||
form_autofill_history_.AddFormFillEntry(
|
||||
base::make_span(&filled_field, 1u),
|
||||
|
@ -97,9 +97,9 @@ class FormFiller {
|
||||
// `filling_product` is the type of filling calling this function.
|
||||
// TODO(crbug.com/40207153): Add the case removed in crrev.com/c/4675831 when
|
||||
// the experiment resumes.
|
||||
// TODO(crbug.com/1481035): Make `optional_type_groups_originally_filled` also
|
||||
// a FieldTypeSet.
|
||||
// TODO(crbug/1331312): Keep only one of 'field' and 'autofill_field'.
|
||||
// TODO(crbug.com/40281552): Make `optional_type_groups_originally_filled`
|
||||
// also a FieldTypeSet.
|
||||
// TODO(crbug.com/40227496): Keep only one of 'field' and 'autofill_field'.
|
||||
static FieldFillingSkipReason GetFieldFillingSkipReason(
|
||||
const FormFieldData& field,
|
||||
const AutofillField& autofill_field,
|
||||
@ -116,16 +116,16 @@ class FormFiller {
|
||||
// Resets states that FormFiller holds and maintains.
|
||||
void Reset();
|
||||
|
||||
// TODO(crbug.com/1517894): Remove.
|
||||
// TODO(crbug.com/41490871): Remove.
|
||||
std::optional<base::TimeTicks> GetOriginalFillingTime(FormGlobalId form_id);
|
||||
|
||||
base::TimeDelta get_limit_before_refill() { return limit_before_refill_; }
|
||||
|
||||
// Given a `form`, returns a map from each field's id to the skip reason for
|
||||
// that field. See additional comments in GetFieldFillingSkipReason.
|
||||
// TODO(crbug/1331312): Keep only one of 'form' and 'form_structure'.
|
||||
// TODO(crbug.com/1481035): Make `optional_type_groups_originally_filled` also
|
||||
// a FieldTypeSet.
|
||||
// TODO(crbug.com/40227496): Keep only one of 'form' and 'form_structure'.
|
||||
// TODO(crbug.com/40281552): Make `optional_type_groups_originally_filled`
|
||||
// also a FieldTypeSet.
|
||||
base::flat_map<FieldGlobalId, FieldFillingSkipReason>
|
||||
GetFieldFillingSkipReasons(const FormData& form,
|
||||
const FormStructure& form_structure,
|
||||
@ -158,7 +158,7 @@ class FormFiller {
|
||||
PopupItemId popup_item_id);
|
||||
|
||||
// Fills or previews |data_model| in the |form|.
|
||||
// TODO(crbug.com/1330108): Clean up the API.
|
||||
// TODO(crbug.com/40227071): Clean up the API.
|
||||
void FillOrPreviewForm(
|
||||
mojom::ActionPersistence action_persistence,
|
||||
const FormData& form,
|
||||
@ -276,7 +276,7 @@ class FormFiller {
|
||||
// AutofillClient::DidFillOrPreviewField().
|
||||
// Returns true if the field has been filled, false otherwise. This is
|
||||
// independent of whether the field was filled or autofilled before.
|
||||
// TODO(crbug.com/1330108): Cleanup API and logic.
|
||||
// TODO(crbug.com/40227071): Cleanup API and logic.
|
||||
bool FillField(
|
||||
AutofillField& autofill_field,
|
||||
absl::variant<const AutofillProfile*, const CreditCard*>
|
||||
|
@ -470,7 +470,7 @@ bool AddressFieldParser::ParseAddressFieldSequence(ParsingContext& context,
|
||||
continue;
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1153715): Remove finch guard once launched.
|
||||
// TODO(crbug.com/40734406): Remove finch guard once launched.
|
||||
if (base::FeatureList::IsEnabled(
|
||||
features::kAutofillEnableSupportForApartmentNumbers) &&
|
||||
!apartment_number_ &&
|
||||
@ -590,7 +590,7 @@ bool AddressFieldParser::ParseAddressLines(ParsingContext& context,
|
||||
base::span<const MatchPatternRef> address_line1_patterns =
|
||||
GetMatchPatterns("ADDRESS_LINE_1", context);
|
||||
|
||||
// TODO(crbug.com/1121990): Remove duplicate calls when launching
|
||||
// TODO(crbug.com/40146444): Remove duplicate calls when launching
|
||||
// AutofillParsingPatternProvider. The old code calls ParseFieldSpecifics()
|
||||
// for two different patterns, |pattern| and |label_pattern|. The new code
|
||||
// handles both patterns at once in the |address_line1_patterns|.
|
||||
@ -1096,7 +1096,7 @@ AddressFieldParser::ParseNameAndLabelForOverflowAndLandmark(
|
||||
ParsingContext& context,
|
||||
AutofillScanner* scanner) {
|
||||
AddressCountryCode country_code(context.client_country.value());
|
||||
// TODO(crbug.com/1441904) Remove feature check when launched.
|
||||
// TODO(crbug.com/40266693) Remove feature check when launched.
|
||||
if (overflow_and_landmark_ || overflow_ ||
|
||||
!base::FeatureList::IsEnabled(
|
||||
features::kAutofillEnableSupportForAddressOverflowAndLandmark) ||
|
||||
@ -1118,7 +1118,7 @@ AddressFieldParser::ParseNameLabelResult
|
||||
AddressFieldParser::ParseNameAndLabelForOverflow(ParsingContext& context,
|
||||
AutofillScanner* scanner) {
|
||||
AddressCountryCode country_code(context.client_country.value());
|
||||
// TODO(crbug.com/1441904) Remove feature check when launched.
|
||||
// TODO(crbug.com/40266693) Remove feature check when launched.
|
||||
if (overflow_and_landmark_ || overflow_ ||
|
||||
!base::FeatureList::IsEnabled(
|
||||
features::kAutofillEnableSupportForAddressOverflow) ||
|
||||
@ -1138,7 +1138,7 @@ AddressFieldParser::ParseNameLabelResult
|
||||
AddressFieldParser::ParseNameAndLabelForLandmark(ParsingContext& context,
|
||||
AutofillScanner* scanner) {
|
||||
AddressCountryCode country_code(context.client_country.value());
|
||||
// TODO(crbug.com/1441904) Remove feature check when launched.
|
||||
// TODO(crbug.com/40266693) Remove feature check when launched.
|
||||
if (landmark_ ||
|
||||
!base::FeatureList::IsEnabled(
|
||||
features::kAutofillEnableSupportForLandmark) ||
|
||||
@ -1159,7 +1159,7 @@ AddressFieldParser::ParseNameAndLabelForBetweenStreets(
|
||||
ParsingContext& context,
|
||||
AutofillScanner* scanner) {
|
||||
AddressCountryCode country_code(context.client_country.value());
|
||||
// TODO(crbug.com/1441904) Remove feature check when launched.
|
||||
// TODO(crbug.com/40266693) Remove feature check when launched.
|
||||
if (between_streets_ || between_streets_line_1_ ||
|
||||
!base::FeatureList::IsEnabled(
|
||||
features::kAutofillEnableSupportForBetweenStreets) ||
|
||||
@ -1180,7 +1180,7 @@ AddressFieldParser::ParseNameAndLabelForBetweenStreetsLines12(
|
||||
ParsingContext& context,
|
||||
AutofillScanner* scanner) {
|
||||
AddressCountryCode country_code(context.client_country.value());
|
||||
// TODO(crbug.com/1441904) Remove feature check when launched.
|
||||
// TODO(crbug.com/40266693) Remove feature check when launched.
|
||||
if (between_streets_line_2_ ||
|
||||
!base::FeatureList::IsEnabled(
|
||||
features::kAutofillEnableSupportForBetweenStreets) ||
|
||||
@ -1214,7 +1214,7 @@ AddressFieldParser::ParseNameLabelResult
|
||||
AddressFieldParser::ParseNameAndLabelForAdminLevel2(ParsingContext& context,
|
||||
AutofillScanner* scanner) {
|
||||
AddressCountryCode country_code(context.client_country.value());
|
||||
// TODO(crbug.com/1441904) Remove feature check when launched.
|
||||
// TODO(crbug.com/40266693) Remove feature check when launched.
|
||||
if (admin_level2_ ||
|
||||
!base::FeatureList::IsEnabled(
|
||||
features::kAutofillEnableSupportForAdminLevel2) ||
|
||||
|
@ -100,7 +100,7 @@ TEST_P(AddressFieldParserTestNG, ParseStreetNameAndHouseNumber) {
|
||||
// accordingly and all are present.
|
||||
TEST_P(AddressFieldParserTestNG,
|
||||
ParseStreetNameAndHouseNumberAndApartmentNumber) {
|
||||
// TODO(crbug.com/1125978): Remove once launched.
|
||||
// TODO(crbug.com/40718257): Remove once launched.
|
||||
base::test::ScopedFeatureList enabled;
|
||||
enabled.InitAndEnableFeature(
|
||||
features::kAutofillEnableSupportForApartmentNumbers);
|
||||
@ -166,7 +166,7 @@ TEST_P(AddressFieldParserTestNG, ParseDependentLocality) {
|
||||
|
||||
// Tests that the landmark is correctly classified.
|
||||
TEST_P(AddressFieldParserTestNG, ParseLandmark) {
|
||||
// TODO(crbug.com/1441904): Remove once launched.
|
||||
// TODO(crbug.com/40266693): Remove once launched.
|
||||
base::test::ScopedFeatureList enabled;
|
||||
enabled.InitWithFeatures({features::kAutofillUseBRAddressModel,
|
||||
features::kAutofillEnableSupportForLandmark},
|
||||
@ -179,7 +179,7 @@ TEST_P(AddressFieldParserTestNG, ParseLandmark) {
|
||||
|
||||
// Tests that between streets field is correctly classified.
|
||||
TEST_P(AddressFieldParserTestNG, ParseBetweenStreets) {
|
||||
// TODO(crbug.com/1441904): Remove once launched.
|
||||
// TODO(crbug.com/40266693): Remove once launched.
|
||||
base::test::ScopedFeatureList enabled;
|
||||
enabled.InitWithFeatures({features::kAutofillUseMXAddressModel,
|
||||
features::kAutofillEnableSupportForBetweenStreets},
|
||||
@ -193,7 +193,7 @@ TEST_P(AddressFieldParserTestNG, ParseBetweenStreets) {
|
||||
|
||||
// Tests that multiple between streets field are correctly classified.
|
||||
TEST_P(AddressFieldParserTestNG, ParseBetweenStreetsLines) {
|
||||
// TODO(crbug.com/1441904): Remove once launched.
|
||||
// TODO(crbug.com/40266693): Remove once launched.
|
||||
base::test::ScopedFeatureList enabled;
|
||||
enabled.InitWithFeatures({features::kAutofillUseMXAddressModel,
|
||||
features::kAutofillEnableSupportForBetweenStreets},
|
||||
@ -223,7 +223,7 @@ TEST_P(AddressFieldParserTestNG, ParseBetweenStreetsLines) {
|
||||
|
||||
// Tests that address level 2 field is correctly classified.
|
||||
TEST_P(AddressFieldParserTestNG, ParseAdminLevel2) {
|
||||
// TODO(crbug.com/1441904): Remove once launched.
|
||||
// TODO(crbug.com/40266693): Remove once launched.
|
||||
base::test::ScopedFeatureList enabled;
|
||||
enabled.InitAndEnableFeature(features::kAutofillEnableSupportForAdminLevel2);
|
||||
|
||||
@ -234,7 +234,7 @@ TEST_P(AddressFieldParserTestNG, ParseAdminLevel2) {
|
||||
|
||||
// Tests that overflow field is correctly classified.
|
||||
TEST_P(AddressFieldParserTestNG, ParseOverflow) {
|
||||
// TODO(crbug.com/1441904): Remove once launched.
|
||||
// TODO(crbug.com/40266693): Remove once launched.
|
||||
base::test::ScopedFeatureList enabled;
|
||||
enabled.InitWithFeatures({features::kAutofillUseBRAddressModel,
|
||||
features::kAutofillEnableSupportForAddressOverflow},
|
||||
@ -247,7 +247,7 @@ TEST_P(AddressFieldParserTestNG, ParseOverflow) {
|
||||
|
||||
// Tests that overflow field is correctly classified.
|
||||
TEST_P(AddressFieldParserTestNG, ParseOverflowAndLandmark) {
|
||||
// TODO(crbug.com/1441904): Remove once launched.
|
||||
// TODO(crbug.com/40266693): Remove once launched.
|
||||
base::test::ScopedFeatureList features;
|
||||
features.InitWithFeatures(
|
||||
/*enabled_features=*/
|
||||
@ -350,7 +350,7 @@ TEST_P(AddressFieldParserTestNG, ParseAmbiguousCountryState2) {
|
||||
// contain keywords for different types. This is achieved by giving the priority
|
||||
// to the label over the name for pages in Turkish.
|
||||
TEST_P(AddressFieldParserTestNG, ParseTurkishCityStateWithLabelPrecedence) {
|
||||
// TODO(crbug.com/1156315): Remove once launched.
|
||||
// TODO(crbug.com/40735892): Remove once launched.
|
||||
base::test::ScopedFeatureList enabled;
|
||||
enabled.InitAndEnableFeature(
|
||||
features::kAutofillEnableLabelPrecedenceForTurkishAddresses);
|
||||
|
@ -143,7 +143,7 @@ TEST_P(AddressFieldParserTest, ParseStreetNameAndHouseNumber) {
|
||||
// accordingly and all are present.
|
||||
TEST_P(AddressFieldParserTest,
|
||||
ParseStreetNameAndHouseNumberAndApartmentNumber) {
|
||||
// TODO(crbug.com/1125978): Remove once launched.
|
||||
// TODO(crbug.com/40718257): Remove once launched.
|
||||
base::test::ScopedFeatureList enabled;
|
||||
enabled.InitAndEnableFeature(
|
||||
features::kAutofillEnableSupportForApartmentNumbers);
|
||||
@ -209,7 +209,7 @@ TEST_P(AddressFieldParserTest, ParseDependentLocality) {
|
||||
|
||||
// Tests that the landmark is correctly classified.
|
||||
TEST_P(AddressFieldParserTest, ParseLandmark) {
|
||||
// TODO(crbug.com/1441904): Remove once launched.
|
||||
// TODO(crbug.com/40266693): Remove once launched.
|
||||
base::test::ScopedFeatureList enabled{
|
||||
features::kAutofillEnableSupportForLandmark};
|
||||
|
||||
@ -220,7 +220,7 @@ TEST_P(AddressFieldParserTest, ParseLandmark) {
|
||||
|
||||
// Tests that between streets field is correctly classified.
|
||||
TEST_P(AddressFieldParserTest, ParseBetweenStreets) {
|
||||
// TODO(crbug.com/1441904): Remove once launched.
|
||||
// TODO(crbug.com/40266693): Remove once launched.
|
||||
base::test::ScopedFeatureList enabled;
|
||||
enabled.InitWithFeatures({features::kAutofillEnableSupportForBetweenStreets,
|
||||
features::kAutofillUseMXAddressModel},
|
||||
@ -234,7 +234,7 @@ TEST_P(AddressFieldParserTest, ParseBetweenStreets) {
|
||||
|
||||
// Tests that multiple between streets field are correctly classified.
|
||||
TEST_P(AddressFieldParserTest, ParseBetweenStreetsLines) {
|
||||
// TODO(crbug.com/1441904): Remove once launched.
|
||||
// TODO(crbug.com/40266693): Remove once launched.
|
||||
base::test::ScopedFeatureList enabled;
|
||||
enabled.InitWithFeatures({features::kAutofillEnableSupportForBetweenStreets,
|
||||
features::kAutofillUseMXAddressModel},
|
||||
@ -264,7 +264,7 @@ TEST_P(AddressFieldParserTest, ParseBetweenStreetsLines) {
|
||||
|
||||
// Tests that address level 2 field is correctly classified.
|
||||
TEST_P(AddressFieldParserTest, ParseAdminLevel2) {
|
||||
// TODO(crbug.com/1441904): Remove once launched.
|
||||
// TODO(crbug.com/40266693): Remove once launched.
|
||||
base::test::ScopedFeatureList enabled;
|
||||
enabled.InitWithFeatures({features::kAutofillEnableSupportForAdminLevel2,
|
||||
features::kAutofillUseMXAddressModel},
|
||||
@ -277,7 +277,7 @@ TEST_P(AddressFieldParserTest, ParseAdminLevel2) {
|
||||
|
||||
// Tests that overflow field is correctly classified.
|
||||
TEST_P(AddressFieldParserTest, ParseOverflow) {
|
||||
// TODO(crbug.com/1441904): Remove once launched.
|
||||
// TODO(crbug.com/40266693): Remove once launched.
|
||||
struct TestCase {
|
||||
std::string field_name;
|
||||
std::string field_label;
|
||||
@ -309,7 +309,7 @@ TEST_P(AddressFieldParserTest, ParseOverflow) {
|
||||
|
||||
// Tests that overflow field is correctly classified.
|
||||
TEST_P(AddressFieldParserTest, ParseOverflowAndLandmark) {
|
||||
// TODO(crbug.com/1441904): Remove once launched.
|
||||
// TODO(crbug.com/40266693): Remove once launched.
|
||||
base::test::ScopedFeatureList features;
|
||||
features.InitWithFeatures(
|
||||
/*enabled_features=*/
|
||||
@ -414,7 +414,7 @@ TEST_P(AddressFieldParserTest, ParseAmbiguousCountryState2) {
|
||||
// contain keywords for different types. This is achieved by giving the priority
|
||||
// to the label over the name for pages in Turkish.
|
||||
TEST_P(AddressFieldParserTest, ParseTurkishCityStateWithLabelPrecedence) {
|
||||
// TODO(crbug.com/1156315): Remove once launched.
|
||||
// TODO(crbug.com/40735892): Remove once launched.
|
||||
base::test::ScopedFeatureList enabled;
|
||||
enabled.InitAndEnableFeature(
|
||||
features::kAutofillEnableLabelPrecedenceForTurkishAddresses);
|
||||
|
@ -56,7 +56,7 @@ constexpr bool IsEmpty(const char16_t* s) {
|
||||
}
|
||||
|
||||
AutofillRegexCache& GetAutofillRegexCache() {
|
||||
// TODO(crbug.com/1309848): If ParseForm() is called from the same thread,
|
||||
// TODO(crbug.com/40219607): If ParseForm() is called from the same thread,
|
||||
// use a thread-unsafe parser.
|
||||
static base::NoDestructor<AutofillRegexCache> cache(ThreadSafe(true));
|
||||
return *cache;
|
||||
|
@ -57,7 +57,7 @@ class RegexMatchesCache {
|
||||
// collision which we are accepting here to not store the inputs an patterns
|
||||
// which both may be large. Given that our heuristics are not 100% accurate
|
||||
// the small risk of a collision seems acceptable.
|
||||
// TODO(crbug.com/1121990): Once we don't use autofill_regex_constants.h
|
||||
// TODO(crbug.com/40146444): Once we don't use autofill_regex_constants.h
|
||||
// anymore, the second `std::size_t` should probably be a MatchPatternRef:
|
||||
// - more accurate (they uniquely identify the pattern across all pattern
|
||||
// sources),
|
||||
|
@ -62,7 +62,7 @@ PhoneFieldParser::~PhoneFieldParser() = default;
|
||||
// The following notation is used to describe the patterns:
|
||||
// <cc> - country code field.
|
||||
// <ac> - area code field.
|
||||
// TODO(crbug.com/1348137): Add a separate prefix type.
|
||||
// TODO(crbug.com/40233246): Add a separate prefix type.
|
||||
// <phone> - phone or prefix.
|
||||
// <suffix> - suffix.
|
||||
// :N means field is limited to N characters, otherwise it is unlimited.
|
||||
@ -315,7 +315,7 @@ void PhoneFieldParser::AddClassifications(
|
||||
// is technically dialable (seven-digit dialing), and thus not contained in
|
||||
// the area code branch.
|
||||
if (parsed_phone_fields_[FIELD_SUFFIX]) {
|
||||
// TODO(crbug.com/1348137): Ideally we want to DCHECK that
|
||||
// TODO(crbug.com/40233246): Ideally we want to DCHECK that
|
||||
// `parsed_phone_fields_[FIELD_AREA_CODE] || !has_country_code` here.
|
||||
// With the current grammars this can be violated, even though it
|
||||
// seemingly never happens in practice according to our metrics.
|
||||
|
@ -518,7 +518,7 @@ void FormStructure::RetrieveFromCache(const FormStructure& cached_form,
|
||||
|
||||
field->set_server_predictions(cached_field->server_predictions());
|
||||
|
||||
// TODO(crbug.com/1373362): The following is the statement which we want
|
||||
// TODO(crbug.com/40871691): The following is the statement which we want
|
||||
// to have here once features::kAutofillDontPreserveAutofillState is
|
||||
// launched:
|
||||
// ---
|
||||
|
@ -25,7 +25,7 @@ namespace {
|
||||
// Defines necessary types for the rationalization logic, meaning that fields of
|
||||
// `type` are only filled if at least one field of some `GetNecessaryTypesFor()`
|
||||
// is present.
|
||||
// TODO(crbug.com/1311937) Cleanup when launched.
|
||||
// TODO(crbug.com/40220393) Cleanup when launched.
|
||||
FieldTypeSet GetNecessaryTypesFor(FieldType type) {
|
||||
switch (type) {
|
||||
case PHONE_HOME_COUNTRY_CODE: {
|
||||
|
@ -1043,7 +1043,7 @@ TEST_F(FormStructureRationalizerTest, RationalizeCreditCardNumberOffsets_) {
|
||||
// rationalized into (`ADDRESS_HOME_BETWEEN_STREETS_1,
|
||||
// `ADDRESS_HOME_BETWEEN_STREETS_2`).
|
||||
TEST_F(FormStructureRationalizerTest, RationalizeAddressBetweenStreets) {
|
||||
// TODO(crbug.com/1441904): Remove once launched.
|
||||
// TODO(crbug.com/40266693): Remove once launched.
|
||||
base::test::ScopedFeatureList scoped_feature_list{
|
||||
features::kAutofillEnableSupportForBetweenStreets};
|
||||
EXPECT_THAT(
|
||||
|
@ -56,7 +56,7 @@ constexpr std::string_view kKeyInitialCreatorId = "initial_creator_id";
|
||||
bool IsFullyStructuredProfile(const AutofillProfile& profile) {
|
||||
AutofillProfile finalized_profile = profile;
|
||||
finalized_profile.FinalizeAfterImport();
|
||||
// TODO(1445454): Re-enable this check.
|
||||
// TODO(crbug.com/40268162): Re-enable this check.
|
||||
// return profile == finalized_profile;
|
||||
return true;
|
||||
}
|
||||
|
@ -303,7 +303,7 @@ TEST_F(ManualTestingImportTest, LoadProfilesFromFile_InvalidInitialCreatorId) {
|
||||
EXPECT_FALSE(LoadProfilesFromFile(file_path2).has_value());
|
||||
}
|
||||
|
||||
// TODO(1445454): Re-enable this test.
|
||||
// TODO(crbug.com/40268162): Re-enable this test.
|
||||
// Tests that the conversion fails for non-fully structured profiles.
|
||||
TEST_F(ManualTestingImportTest,
|
||||
DISABLED_LoadProfilesFromFile_Invalid_NotFullyStructured) {
|
||||
|
@ -2122,7 +2122,7 @@ void AutofillMetrics::FormInteractionsUkmLogger::
|
||||
OptionalBoolean was_autofilled_after_security_policy =
|
||||
OptionalBoolean::kUndefined;
|
||||
|
||||
// TODO(crbug.com/1325851): Add a metric in |FieldInfo| UKM event to indicate
|
||||
// TODO(crbug.com/40225658): Add a metric in |FieldInfo| UKM event to indicate
|
||||
// whether the user had any data available for the respective field type.
|
||||
|
||||
// If multiple fields have the same signature, this indicates the position
|
||||
@ -2451,7 +2451,7 @@ void AutofillMetrics::LogAutofillFieldInfoAfterSubmission(
|
||||
}
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1325851): Modify the enum object of SubmissionSource by
|
||||
// TODO(crbug.com/40225658): Modify the enum object of SubmissionSource by
|
||||
// assigning values (= 0, = 1, ...) and adding a comment to not change it.
|
||||
builder.SetSubmittedType1(submitted_type1)
|
||||
.SetSubmissionSource(static_cast<int>(form.submission_source()))
|
||||
|
@ -6660,7 +6660,7 @@ TEST_F(AutofillMetricsFromLogEventsTest, AddressSubmittedFormLogEvents) {
|
||||
FieldType submitted_type1 =
|
||||
i % 3 == 0 ? ADDRESS_HOME_COUNTRY : EMPTY_TYPE;
|
||||
|
||||
// TODO(crbug.com/1325851): Check that the second vote submission (with
|
||||
// TODO(crbug.com/40225658): Check that the second vote submission (with
|
||||
// SubmissionSource::NONE) is always identical with the first one (it's
|
||||
// possible that only the SubmissionSource::NONE exists). If we always
|
||||
// get the same values, we should modify
|
||||
|
@ -126,7 +126,7 @@ class AutofillFieldFillingStatsAndScoreMetricsTest
|
||||
};
|
||||
|
||||
// Test the logging of the field-wise filling stats.
|
||||
// TODO(crbug.com/1459990): Delete this test once cleanup starts.
|
||||
// TODO(crbug.com/40274514): Delete this test once cleanup starts.
|
||||
TEST_F(AutofillFieldFillingStatsAndScoreMetricsTest, FillingStats) {
|
||||
const FormData& form = GetAndAddSeenFormWithFields(GetTestFormDataFields());
|
||||
SimulationOfDefaultUserChangesOnAddedFormTextFields();
|
||||
|
@ -36,7 +36,8 @@ class CategoryResolvedKeyMetricsTest
|
||||
|
||||
// Creates an arbitrary address form and triggers AutofillManager's
|
||||
// OnFormSeen() event.
|
||||
// TODO(crbug.com/1007974): Replace this with a modern form creation function.
|
||||
// TODO(crbug.com/40100455): Replace this with a modern form creation
|
||||
// function.
|
||||
FormData CreateAndSeeForm() {
|
||||
FormData form = CreateEmptyForm();
|
||||
form.fields.resize(3);
|
||||
|
@ -260,7 +260,7 @@ void CreditCardFormEventLogger::OnDidSelectCardSuggestion(
|
||||
// selected. Can be none if there was only one card suggestion displayed
|
||||
// and that card was selected.
|
||||
for (const Suggestion& suggestion : suggestions_) {
|
||||
// TODO(crbug.com/1121806): Use instrument ID for server credit cards.
|
||||
// TODO(crbug.com/40146355): Use instrument ID for server credit cards.
|
||||
CreditCard* suggested_credit_card =
|
||||
personal_data_manager_->GetCreditCardByGUID(
|
||||
suggestion.GetBackendId<Suggestion::Guid>().value());
|
||||
@ -711,10 +711,10 @@ void CreditCardFormEventLogger::RecordCardUnmaskFlowEvent(
|
||||
break;
|
||||
case UnmaskAuthFlowType::kThreeDomainSecure:
|
||||
case UnmaskAuthFlowType::kThreeDomainSecureConsentAlreadyGiven:
|
||||
// TODO(crbug.com/1521960): Add logging for kThreeDomainSecure and
|
||||
// TODO(crbug.com/41494927): Add logging for kThreeDomainSecure and
|
||||
// kThreeDomainSecureConsentAlreadyGiven.
|
||||
case UnmaskAuthFlowType::kNone:
|
||||
// TODO(crbug.com/1300959): Fix Autofill.BetterAuth logging.
|
||||
// TODO(crbug.com/40216473): Fix Autofill.BetterAuth logging.
|
||||
return;
|
||||
}
|
||||
std::string card_type_suffix =
|
||||
|
@ -282,7 +282,7 @@ void LogQualityMetrics(
|
||||
// Log the field filling statistics if autofill was used.
|
||||
// The metrics are only emitted if there was at least one field in the
|
||||
// corresponding form group that is or was filled by autofill.
|
||||
// TODO(crbug.com/1459990): Remove this metric on cleanup.
|
||||
// TODO(crbug.com/40274514): Remove this metric on cleanup.
|
||||
autofill_metrics::LogFieldFillingStatsAndScore(
|
||||
address_field_stats, cc_field_stats,
|
||||
ac_unrecognized_address_field_stats);
|
||||
|
@ -20,7 +20,7 @@ namespace autofill::autofill_metrics {
|
||||
// `observed_submission` indicates whether this method is called as a result of
|
||||
// observing a submission event (otherwise, it may be that an upload was
|
||||
// triggered after a form was unfocused or a navigation occurred).
|
||||
// TODO(crbug.com/1007974): More than quality metrics are logged. Consider
|
||||
// TODO(crbug.com/40100455): More than quality metrics are logged. Consider
|
||||
// renaming or splitting the function.
|
||||
void LogQualityMetrics(
|
||||
const FormStructure& form_structure,
|
||||
|
@ -37,7 +37,7 @@ AutofillMlPredictionModelHandler::AutofillMlPredictionModelHandler(
|
||||
/*model_metadata=*/std::nullopt) {
|
||||
// Store the model in memory as soon as it is available and keep it loaded for
|
||||
// the whole browser session since we query predictions very regularly.
|
||||
// TODO(crbug.com/1465926): Maybe change both back to default behavior if we
|
||||
// TODO(crbug.com/40276177): Maybe change both back to default behavior if we
|
||||
// see memory regressions during the rollout.
|
||||
SetShouldPreloadModel(true);
|
||||
SetShouldUnloadModelOnComplete(false);
|
||||
|
@ -225,9 +225,9 @@ void CreditCardAccessManager::LogMetricsAndFillFormForServerUnmaskFlows(
|
||||
autofill_metrics::ServerCardUnmaskFlowType::kOtpFallbackFromFido);
|
||||
break;
|
||||
case UnmaskAuthFlowType::kThreeDomainSecure:
|
||||
// TODO(crbug.com/1521960): Add logging for kThreeDomainSecure.
|
||||
// TODO(crbug.com/41494927): Add logging for kThreeDomainSecure.
|
||||
case UnmaskAuthFlowType::kThreeDomainSecureConsentAlreadyGiven:
|
||||
// TODO(crbug.com/1521960): Add logging for
|
||||
// TODO(crbug.com/41494927): Add logging for
|
||||
// kThreeDomainSecureConsentAlreadyGiven.
|
||||
case UnmaskAuthFlowType::kCvc:
|
||||
case UnmaskAuthFlowType::kCvcFallbackFromFido:
|
||||
@ -392,7 +392,7 @@ void CreditCardAccessManager::OnSettingsPageFIDOAuthToggled(bool opt_in) {
|
||||
#if BUILDFLAG(IS_IOS)
|
||||
return;
|
||||
#else
|
||||
// TODO(crbug/949269): Add a rate limiter to counter spam clicking.
|
||||
// TODO(crbug.com/40621544): Add a rate limiter to counter spam clicking.
|
||||
FIDOAuthOptChange(opt_in);
|
||||
#endif
|
||||
}
|
||||
@ -728,8 +728,8 @@ void CreditCardAccessManager::OnCvcAuthenticationComplete(
|
||||
}
|
||||
|
||||
HandleFidoOptInStatusChange();
|
||||
// TODO(crbug.com/1249665): Add Reset() to this function after cleaning up the
|
||||
// FIDO opt-in status change. This should not have any negative impact now
|
||||
// TODO(crbug.com/40197696): Add Reset() to this function after cleaning up
|
||||
// the FIDO opt-in status change. This should not have any negative impact now
|
||||
// except for readability and cleanness. The result of
|
||||
// ShouldOfferFidoOptInDialog() and |opt_in_intention_| are to some extent
|
||||
// duplicate. We should be able to combine them into one function.
|
||||
@ -1089,7 +1089,7 @@ void CreditCardAccessManager::HandleDialogUserResponse(
|
||||
/*did_accept=*/false);
|
||||
break;
|
||||
case WebauthnDialogCallbackType::kVerificationCancelled:
|
||||
// TODO(crbug.com/949269): Add tests and logging for canceling verify
|
||||
// TODO(crbug.com/40621544): Add tests and logging for canceling verify
|
||||
// pending dialog.
|
||||
client_->GetPaymentsAutofillClient()
|
||||
->GetPaymentsNetworkInterface()
|
||||
@ -1563,13 +1563,13 @@ void CreditCardAccessManager::OnVirtualCardUnmaskCancelled() {
|
||||
NOTREACHED();
|
||||
ABSL_FALLTHROUGH_INTENDED;
|
||||
case UnmaskAuthFlowType::kThreeDomainSecure:
|
||||
// TODO(crbug/1370329): Add a flow type for the kThreeDomainSecure flow
|
||||
// for metrics.
|
||||
// TODO(crbug.com/40240970): Add a flow type for the kThreeDomainSecure
|
||||
// flow for metrics.
|
||||
case UnmaskAuthFlowType::kThreeDomainSecureConsentAlreadyGiven:
|
||||
// TODO(crbug/1370329): Add a flow type for the
|
||||
// TODO(crbug.com/40240970): Add a flow type for the
|
||||
// kThreeDomainSecureConsentAlreadyGiven flow for metrics.
|
||||
case UnmaskAuthFlowType::kCvc:
|
||||
// TODO(crbug/1370329): Add a flow type for the CVC flow for metrics.
|
||||
// TODO(crbug.com/40240970): Add a flow type for the CVC flow for metrics.
|
||||
Reset();
|
||||
return;
|
||||
}
|
||||
@ -1698,7 +1698,7 @@ void CreditCardAccessManager::StartDeviceAuthenticationForFilling(
|
||||
&CreditCardAccessManager::OnDeviceAuthenticationResponseForFilling,
|
||||
weak_ptr_factory_.GetWeakPtr(), authentication_method, card));
|
||||
#elif BUILDFLAG(IS_ANDROID)
|
||||
// TODO(crbug.com/1427216): Convert this to
|
||||
// TODO(crbug.com/40261690): Convert this to
|
||||
// MandatoryReauthManager::AuthenticateWithMessage() with the correct message
|
||||
// once it is supported. Currently, the message is "Verify it's you".
|
||||
client_->GetOrCreatePaymentsMandatoryReauthManager()->Authenticate(
|
||||
|
@ -39,7 +39,7 @@ class BrowserAutofillManager;
|
||||
enum class WebauthnDialogCallbackType;
|
||||
|
||||
// Flow type denotes which card unmask authentication method was used.
|
||||
// TODO(crbug/1300959): Deprecate kCvcThenFido, kCvcFallbackFromFido, and
|
||||
// TODO(crbug.com/40216473): Deprecate kCvcThenFido, kCvcFallbackFromFido, and
|
||||
// kOtpFallbackFromFido.
|
||||
enum class UnmaskAuthFlowType {
|
||||
kNone = 0,
|
||||
@ -63,7 +63,7 @@ enum class UnmaskAuthFlowType {
|
||||
kMaxValue = kThreeDomainSecureConsentAlreadyGiven,
|
||||
};
|
||||
|
||||
// TODO(crbug.com/1249665): Remove this. This was added and never used.
|
||||
// TODO(crbug.com/40197696): Remove this. This was added and never used.
|
||||
// The result of the attempt to fetch full information for a credit card.
|
||||
enum class CreditCardFetchResult {
|
||||
kNone = 0,
|
||||
@ -76,7 +76,7 @@ enum class CreditCardFetchResult {
|
||||
kMaxValue = kPermanentError,
|
||||
};
|
||||
|
||||
// TODO(crbug.com/1473481): Remove CVC from CachedServerCardInfo.
|
||||
// TODO(crbug.com/40927041): Remove CVC from CachedServerCardInfo.
|
||||
struct CachedServerCardInfo {
|
||||
public:
|
||||
// An unmasked CreditCard.
|
||||
@ -138,7 +138,7 @@ class CreditCardAccessManager
|
||||
void FIDOAuthOptChange(bool opt_in);
|
||||
|
||||
// Makes a call to FIDOAuthOptChange() with |opt_in|.
|
||||
// TODO(crbug/949269): Add a rate limiter to counter spam clicking.
|
||||
// TODO(crbug.com/40621544): Add a rate limiter to counter spam clicking.
|
||||
void OnSettingsPageFIDOAuthToggled(bool opt_in);
|
||||
|
||||
// Resets the rate limiter for fetching unmask deatils. Used with
|
||||
@ -265,9 +265,9 @@ class CreditCardAccessManager
|
||||
bool ShouldOfferFidoOptInDialog(
|
||||
const CreditCardCvcAuthenticator::CvcAuthenticationResponse& response);
|
||||
|
||||
// TODO(crbug.com/991037): Move this function under the build flags after the
|
||||
// refactoring is done. Offer the option to use WebAuthn for authenticating
|
||||
// future card unmasking.
|
||||
// TODO(crbug.com/40639086): Move this function under the build flags after
|
||||
// the refactoring is done. Offer the option to use WebAuthn for
|
||||
// authenticating future card unmasking.
|
||||
void ShowWebauthnOfferDialog(std::string card_authorization_token);
|
||||
|
||||
#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS)
|
||||
@ -344,7 +344,7 @@ class CreditCardAccessManager
|
||||
// the authentication, and possibly fill the card into the form. `card` is the
|
||||
// card that needs to be filled. This function should only be called on
|
||||
// platforms where DeviceAuthenticator is present.
|
||||
// TODO(crbug.com/1447084): Move authentication logic for re-auth into
|
||||
// TODO(crbug.com/40268876): Move authentication logic for re-auth into
|
||||
// MandatoryReauthManager.
|
||||
void StartDeviceAuthenticationForFilling(const CreditCard* card);
|
||||
|
||||
@ -354,7 +354,7 @@ class CreditCardAccessManager
|
||||
// `accessor`, otherwise we will handle the error. `successful_auth` is true
|
||||
// if the authentication was successful, false otherwise. Pass
|
||||
// `authenticate_method` for logging purpose.
|
||||
// TODO(crbug.com/1447084): Move authentication logic for re-auth into
|
||||
// TODO(crbug.com/40268876): Move authentication logic for re-auth into
|
||||
// MandatoryReauthManager.
|
||||
void OnDeviceAuthenticationResponseForFilling(
|
||||
payments::MandatoryReauthAuthenticationMethod authentication_method,
|
||||
|
@ -422,7 +422,7 @@ class CreditCardAccessManagerTest : public testing::Test {
|
||||
fido_authenticator_is_user_opted_in);
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1249665): Switch to SetUserVerifiable after moving all
|
||||
// TODO(crbug.com/40197696): Switch to SetUserVerifiable after moving all
|
||||
// |is_user_verifiable_| related logic from CreditCardAccessManager to
|
||||
// CreditCardFidoAuthenticator.
|
||||
test_api(credit_card_access_manager())
|
||||
@ -748,7 +748,7 @@ TEST_P(CreditCardAccessManagerMandatoryReauthFunctionalTest,
|
||||
credit_card_access_manager().PrepareToFetchCreditCard();
|
||||
WaitForCallbacks();
|
||||
|
||||
// TODO(crbug/1489440): Extract shared boilerplate code out for
|
||||
// TODO(crbug.com/40935048): Extract shared boilerplate code out for
|
||||
// CreditCardAccessManagerMandatoryReauthFunctionalTest tests.
|
||||
SetUpDeviceAuthenticatorResponseMock();
|
||||
credit_card_access_manager().FetchCreditCard(
|
||||
@ -831,7 +831,7 @@ TEST_P(CreditCardAccessManagerMandatoryReauthFunctionalTest,
|
||||
response.expiration_year = test::NextYear();
|
||||
response.card_type = AutofillClient::PaymentsRpcCardType::kVirtualCard;
|
||||
|
||||
// TODO(crbug/1489440): Extract shared boilerplate code out for
|
||||
// TODO(crbug.com/40935048): Extract shared boilerplate code out for
|
||||
// CreditCardAccessManagerMandatoryReauthFunctionalTest tests.
|
||||
SetUpDeviceAuthenticatorResponseMock();
|
||||
credit_card_access_manager()
|
||||
@ -916,7 +916,7 @@ TEST_P(CreditCardAccessManagerMandatoryReauthFunctionalTest,
|
||||
CreditCard card = *masked_server_card;
|
||||
card.set_record_type(CreditCard::RecordType::kFullServerCard);
|
||||
|
||||
// TODO(crbug/1489440): Extract shared boilerplate code out for
|
||||
// TODO(crbug.com/40935048): Extract shared boilerplate code out for
|
||||
// CreditCardAccessManagerMandatoryReauthFunctionalTest tests.
|
||||
SetUpDeviceAuthenticatorResponseMock();
|
||||
credit_card_access_manager().OnRiskBasedAuthenticationResponseReceived(
|
||||
@ -1023,7 +1023,7 @@ TEST_P(CreditCardAccessManagerMandatoryReauthIntegrationTest,
|
||||
credit_card_access_manager().PrepareToFetchCreditCard();
|
||||
WaitForCallbacks();
|
||||
|
||||
// TODO(crbug/1489440): Extract shared boilerplate code out for
|
||||
// TODO(crbug.com/40935048): Extract shared boilerplate code out for
|
||||
// CreditCardAccessManagerMandatoryReauthTest tests.
|
||||
SetUpDeviceAuthenticatorResponseMock();
|
||||
credit_card_access_manager().FetchCreditCard(
|
||||
@ -1050,7 +1050,7 @@ TEST_P(CreditCardAccessManagerMandatoryReauthIntegrationTest,
|
||||
credit_card_access_manager().PrepareToFetchCreditCard();
|
||||
WaitForCallbacks();
|
||||
|
||||
// TODO(crbug/1489440): Extract shared boilerplate code out for
|
||||
// TODO(crbug.com/40935048): Extract shared boilerplate code out for
|
||||
// CreditCardAccessManagerMandatoryReauthTest tests.
|
||||
SetUpDeviceAuthenticatorResponseMock();
|
||||
credit_card_access_manager().FetchCreditCard(
|
||||
@ -1080,7 +1080,7 @@ TEST_P(CreditCardAccessManagerMandatoryReauthIntegrationTest,
|
||||
masked_server_card, base::BindOnce(&TestAccessor::OnCreditCardFetched,
|
||||
accessor_->GetWeakPtr()));
|
||||
|
||||
// TODO(crbug/1489440): Extract shared boilerplate code out for
|
||||
// TODO(crbug.com/40935048): Extract shared boilerplate code out for
|
||||
// CreditCardAccessManagerMandatoryReauthTest tests.
|
||||
SetUpDeviceAuthenticatorResponseMock();
|
||||
credit_card_access_manager().OnRiskBasedAuthenticationResponseReceived(
|
||||
@ -1116,7 +1116,7 @@ TEST_P(CreditCardAccessManagerMandatoryReauthIntegrationTest,
|
||||
masked_server_card, base::BindOnce(&TestAccessor::OnCreditCardFetched,
|
||||
accessor_->GetWeakPtr()));
|
||||
|
||||
// TODO(crbug/1489440): Extract shared boilerplate code out for
|
||||
// TODO(crbug.com/40935048): Extract shared boilerplate code out for
|
||||
// CreditCardAccessManagerMandatoryReauthTest tests.
|
||||
SetUpDeviceAuthenticatorResponseMock();
|
||||
credit_card_access_manager().OnRiskBasedAuthenticationResponseReceived(
|
||||
@ -3820,7 +3820,8 @@ TEST_F(CreditCardAccessManagerTest,
|
||||
// Expect the metrics are logged correctly.
|
||||
histogram_tester.ExpectUniqueSample(
|
||||
"Autofill.ServerCardUnmask.VirtualCard.Attempt", true, 1);
|
||||
// TODO(crbug/1370329): Add metrics checks for Virtual Card CVC auth result.
|
||||
// TODO(crbug.com/40240970): Add metrics checks for Virtual Card CVC auth
|
||||
// result.
|
||||
}
|
||||
|
||||
// Ensures the virtual card risk-based unmasking flow type is set to
|
||||
@ -3936,7 +3937,8 @@ TEST_F(CreditCardAccessManagerTest,
|
||||
histogram_tester.ExpectUniqueSample(
|
||||
"Autofill.ServerCardUnmask.VirtualCard.Result.Otp",
|
||||
autofill_metrics::ServerCardUnmaskResult::kAuthenticationUnmasked, 1);
|
||||
// TODO(crbug/1370329): Add metrics checks for Virtual Card CVC auth result.
|
||||
// TODO(crbug.com/40240970): Add metrics checks for Virtual Card CVC auth
|
||||
// result.
|
||||
}
|
||||
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
@ -4010,7 +4012,7 @@ TEST_F(CreditCardAccessManagerTest,
|
||||
CreateServerCard(kTestGUID, kTestNumber, /*masked=*/false, kTestServerId);
|
||||
CreditCard* virtual_card = personal_data().GetCreditCardByGUID(kTestGUID);
|
||||
virtual_card->set_record_type(CreditCard::RecordType::kVirtualCard);
|
||||
// TODO(crbug.com/1249665): Switch to SetUserVerifiable after moving all
|
||||
// TODO(crbug.com/40197696): Switch to SetUserVerifiable after moving all
|
||||
// is_user_veriable_ related logic from CreditCardAccessManager to
|
||||
// CreditCardFidoAuthenticator.
|
||||
test_api(credit_card_access_manager()).set_is_user_verifiable(true);
|
||||
@ -4070,7 +4072,7 @@ TEST_F(
|
||||
CreateServerCard(kTestGUID, kTestNumber, /*masked=*/false, kTestServerId);
|
||||
CreditCard* virtual_card = personal_data().GetCreditCardByGUID(kTestGUID);
|
||||
virtual_card->set_record_type(CreditCard::RecordType::kVirtualCard);
|
||||
// TODO(crbug.com/1249665): Switch to SetUserVerifiable after moving all
|
||||
// TODO(crbug.com/40197696): Switch to SetUserVerifiable after moving all
|
||||
// is_user_veriable_ related logic from CreditCardAccessManager to
|
||||
// CreditCardFidoAuthenticator.
|
||||
test_api(credit_card_access_manager()).set_is_user_verifiable(true);
|
||||
@ -4194,7 +4196,7 @@ TEST_F(
|
||||
CreateServerCard(kTestGUID, kTestNumber, /*masked=*/false, kTestServerId);
|
||||
CreditCard* virtual_card = personal_data().GetCreditCardByGUID(kTestGUID);
|
||||
virtual_card->set_record_type(CreditCard::RecordType::kVirtualCard);
|
||||
// TODO(crbug.com/1249665): Switch to SetUserVerifiable after moving all
|
||||
// TODO(crbug.com/40197696): Switch to SetUserVerifiable after moving all
|
||||
// is_user_veriable_ related logic from CreditCardAccessManager to
|
||||
// CreditCardFidoAuthenticator.
|
||||
test_api(credit_card_access_manager()).set_is_user_verifiable(true);
|
||||
@ -4241,7 +4243,7 @@ TEST_F(CreditCardAccessManagerTest,
|
||||
CreateServerCard(kTestGUID, kTestNumber, /*masked=*/false, kTestServerId);
|
||||
CreditCard* virtual_card = personal_data().GetCreditCardByGUID(kTestGUID);
|
||||
virtual_card->set_record_type(CreditCard::RecordType::kVirtualCard);
|
||||
// TODO(crbug.com/1249665): Switch to SetUserVerifiable after moving all
|
||||
// TODO(crbug.com/40197696): Switch to SetUserVerifiable after moving all
|
||||
// |is_user_verifiable_| related logic from CreditCardAccessManager to
|
||||
// CreditCardFidoAuthenticator.
|
||||
test_api(credit_card_access_manager()).set_is_user_verifiable(true);
|
||||
@ -4287,7 +4289,7 @@ TEST_F(CreditCardAccessManagerTest,
|
||||
CreateServerCard(kTestGUID, kTestNumber, /*masked=*/false, kTestServerId);
|
||||
CreditCard* virtual_card = personal_data().GetCreditCardByGUID(kTestGUID);
|
||||
virtual_card->set_record_type(CreditCard::RecordType::kVirtualCard);
|
||||
// TODO(crbug.com/1249665): Switch to SetUserVerifiable after moving all
|
||||
// TODO(crbug.com/40197696): Switch to SetUserVerifiable after moving all
|
||||
// is_user_veriable_ related logic from CreditCardAccessManager to
|
||||
// CreditCardFidoAuthenticator.
|
||||
test_api(credit_card_access_manager()).set_is_user_verifiable(true);
|
||||
@ -4371,7 +4373,7 @@ TEST_F(CreditCardAccessManagerTest,
|
||||
CreateServerCard(kTestGUID, kTestNumber, /*masked=*/false, kTestServerId);
|
||||
CreditCard* virtual_card = personal_data().GetCreditCardByGUID(kTestGUID);
|
||||
virtual_card->set_record_type(CreditCard::RecordType::kVirtualCard);
|
||||
// TODO(crbug.com/1249665): Switch to SetUserVerifiable after moving all
|
||||
// TODO(crbug.com/40197696): Switch to SetUserVerifiable after moving all
|
||||
// is_user_veriable_ related logic from CreditCardAccessManager to
|
||||
// CreditCardFidoAuthenticator.
|
||||
test_api(credit_card_access_manager()).set_is_user_verifiable(true);
|
||||
|
@ -55,7 +55,7 @@ class CreditCardCvcAuthenticator
|
||||
}
|
||||
bool did_succeed = false;
|
||||
raw_ptr<const CreditCard> card = nullptr;
|
||||
// TODO(crbug.com/1475052): Remove CVC.
|
||||
// TODO(crbug.com/40927733): Remove CVC.
|
||||
std::u16string cvc = std::u16string();
|
||||
std::optional<base::Value::Dict> request_options;
|
||||
std::string card_authorization_token = std::string();
|
||||
|
@ -726,7 +726,8 @@ void CreditCardFidoAuthenticator::LogWebauthnResult(
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO(crbug.com/949269): Add metrics for revoked pending WebAuthn requests.
|
||||
// TODO(crbug.com/40621544): Add metrics for revoked pending WebAuthn
|
||||
// requests.
|
||||
autofill_metrics::WebauthnResultMetric metric;
|
||||
switch (status) {
|
||||
case blink::mojom::AuthenticatorStatus::SUCCESS:
|
||||
|
@ -59,7 +59,7 @@ class CreditCardOtpAuthenticator : public OtpUnmaskDelegate {
|
||||
}
|
||||
Result result = kUnknown;
|
||||
raw_ptr<const CreditCard> card;
|
||||
// TODO(crbug.com/1475052): Remove CVC.
|
||||
// TODO(crbug.com/40927733): Remove CVC.
|
||||
std::u16string cvc;
|
||||
};
|
||||
|
||||
|
@ -125,7 +125,7 @@ class CreditCardSaveManager {
|
||||
// CVC-only save. If card is unknown we will offer to save the the card
|
||||
// including it's CVC. `credit_card_import_type` is the credit card type
|
||||
// extracted from the form.
|
||||
// TODO(crbug.com/1450749): Update param after resolving duplicate local and
|
||||
// TODO(crbug.com/40270301): Update param after resolving duplicate local and
|
||||
// server card issue.
|
||||
virtual bool ShouldOfferCvcSave(
|
||||
const CreditCard& card,
|
||||
|
@ -451,7 +451,7 @@ class CreditCardSaveManagerTest : public testing::Test {
|
||||
};
|
||||
|
||||
// Tests that credit card data are saved for forms on https
|
||||
// TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot.
|
||||
// TODO(crbug.com/40494359): Flaky on android_n5x_swarming_rel bot.
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
#define MAYBE_ImportFormDataCreditCardHTTPS \
|
||||
DISABLED_ImportFormDataCreditCardHTTPS
|
||||
@ -464,7 +464,7 @@ TEST_F(CreditCardSaveManagerTest, MAYBE_ImportFormDataCreditCardHTTPS) {
|
||||
}
|
||||
|
||||
// Tests that credit card data are saved for forms on http
|
||||
// TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot.
|
||||
// TODO(crbug.com/40494359): Flaky on android_n5x_swarming_rel bot.
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
#define MAYBE_ImportFormDataCreditCardHTTP DISABLED_ImportFormDataCreditCardHTTP
|
||||
#else
|
||||
@ -476,7 +476,7 @@ TEST_F(CreditCardSaveManagerTest, MAYBE_ImportFormDataCreditCardHTTP) {
|
||||
}
|
||||
|
||||
// Tests that credit card data are saved when autocomplete=off for CC field.
|
||||
// TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot.
|
||||
// TODO(crbug.com/40494359): Flaky on android_n5x_swarming_rel bot.
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
#define MAYBE_CreditCardSavedWhenAutocompleteOff \
|
||||
DISABLED_CreditCardSavedWhenAutocompleteOff
|
||||
@ -556,7 +556,7 @@ TEST_F(CreditCardSaveManagerTest, CreditCardDisabledDoesNotSave) {
|
||||
histogram_tester.ExpectTotalCount("Autofill.CardUploadDecisionMetric", 0);
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest, UploadCreditCard_OnlyCountryInAddresses) {
|
||||
@ -1237,7 +1237,7 @@ TEST_F(CreditCardSaveManagerTest, UploadCreditCard_FeatureNotEnabled) {
|
||||
histogram_tester.ExpectTotalCount("Autofill.CardUploadDecisionMetric", 0);
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest, UploadCreditCard_CvcUnavailable) {
|
||||
@ -1280,7 +1280,7 @@ TEST_F(CreditCardSaveManagerTest, UploadCreditCard_CvcUnavailable) {
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest, UploadCreditCard_CvcInvalidLength) {
|
||||
@ -1320,7 +1320,7 @@ TEST_F(CreditCardSaveManagerTest, UploadCreditCard_CvcInvalidLength) {
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest, UploadCreditCard_MultipleCvcFields) {
|
||||
@ -1376,7 +1376,7 @@ TEST_F(CreditCardSaveManagerTest, UploadCreditCard_MultipleCvcFields) {
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NoCvcFieldOnForm) {
|
||||
@ -1430,7 +1430,7 @@ TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NoCvcFieldOnForm) {
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest,
|
||||
@ -1488,7 +1488,7 @@ TEST_F(CreditCardSaveManagerTest,
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest,
|
||||
@ -1548,7 +1548,7 @@ TEST_F(CreditCardSaveManagerTest,
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest,
|
||||
@ -1606,7 +1606,7 @@ TEST_F(CreditCardSaveManagerTest,
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NoProfileAvailable) {
|
||||
@ -1643,7 +1643,7 @@ TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NoProfileAvailable) {
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NoRecentlyUsedProfile) {
|
||||
@ -1692,7 +1692,7 @@ TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NoRecentlyUsedProfile) {
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest,
|
||||
@ -1732,7 +1732,7 @@ TEST_F(CreditCardSaveManagerTest,
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NoNameAvailable) {
|
||||
@ -1998,7 +1998,7 @@ TEST_F(CreditCardSaveManagerTest,
|
||||
ClientBehaviorConstants::kOfferingToSaveCvc)));
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest,
|
||||
@ -2042,7 +2042,7 @@ TEST_F(CreditCardSaveManagerTest,
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest, UploadCreditCard_ZipCodesConflict) {
|
||||
@ -2093,7 +2093,7 @@ TEST_F(CreditCardSaveManagerTest, UploadCreditCard_ZipCodesConflict) {
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest,
|
||||
@ -2142,7 +2142,7 @@ TEST_F(CreditCardSaveManagerTest,
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest, UploadCreditCard_ZipCodesHavePrefixMatch) {
|
||||
@ -2187,7 +2187,7 @@ TEST_F(CreditCardSaveManagerTest, UploadCreditCard_ZipCodesHavePrefixMatch) {
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NoZipCodeAvailable) {
|
||||
@ -2234,7 +2234,7 @@ TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NoZipCodeAvailable) {
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest, UploadCreditCard_CCFormHasMiddleInitial) {
|
||||
@ -2278,7 +2278,7 @@ TEST_F(CreditCardSaveManagerTest, UploadCreditCard_CCFormHasMiddleInitial) {
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NoMiddleInitialInCCForm) {
|
||||
@ -2319,7 +2319,7 @@ TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NoMiddleInitialInCCForm) {
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest,
|
||||
@ -2364,7 +2364,7 @@ TEST_F(CreditCardSaveManagerTest,
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest, UploadCreditCard_CCFormHasAddressMiddleName) {
|
||||
@ -2408,7 +2408,7 @@ TEST_F(CreditCardSaveManagerTest, UploadCreditCard_CCFormHasAddressMiddleName) {
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NamesCanMismatch) {
|
||||
@ -2461,7 +2461,7 @@ TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NamesCanMismatch) {
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest, UploadCreditCard_IgnoreOldProfiles) {
|
||||
@ -3243,7 +3243,7 @@ TEST_F(
|
||||
CreditCardSaveManager::DetectedValue::USER_PROVIDED_EXPIRATION_DATE);
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
TEST_F(CreditCardSaveManagerTest, UploadCreditCard_UploadDetailsFails) {
|
||||
// Anything other than "en-US" will cause GetUploadDetails to return a failure
|
||||
@ -3792,7 +3792,7 @@ TEST_F(CreditCardSaveManagerTest, DetectAddressComponentsAcrossProfiles) {
|
||||
expected_detected_values);
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest,
|
||||
@ -3922,7 +3922,7 @@ TEST_F(
|
||||
EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest,
|
||||
@ -3966,7 +3966,7 @@ TEST_F(CreditCardSaveManagerTest,
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest,
|
||||
@ -4013,7 +4013,7 @@ TEST_F(CreditCardSaveManagerTest,
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest,
|
||||
@ -4062,7 +4062,7 @@ TEST_F(CreditCardSaveManagerTest,
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest,
|
||||
@ -4108,7 +4108,7 @@ TEST_F(CreditCardSaveManagerTest,
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest,
|
||||
@ -4163,7 +4163,7 @@ TEST_F(CreditCardSaveManagerTest,
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
TEST_F(CreditCardSaveManagerTest,
|
||||
@ -4601,7 +4601,7 @@ TEST_F(CreditCardSaveManagerTest,
|
||||
AutofillMetrics::SaveTypeMetric::LOCAL, 1);
|
||||
}
|
||||
|
||||
// TODO(crbug.com/1113034): Create an equivalent test for iOS, or skip
|
||||
// TODO(crbug.com/40710040): Create an equivalent test for iOS, or skip
|
||||
// permanently if the test doesn't apply to iOS flow.
|
||||
#if !BUILDFLAG(IS_IOS)
|
||||
// Tests that a card with max strikes does not offer save on mobile at all.
|
||||
|
@ -378,7 +378,7 @@ void FullCardRequest::OnDidGetRealPan(
|
||||
NOTREACHED();
|
||||
}
|
||||
|
||||
// TODO(crbug/949269): Once |fido_opt_in| is added to
|
||||
// TODO(crbug.com/40621544): Once |fido_opt_in| is added to
|
||||
// UserProvidedUnmaskDetails, clear out |creation_options| from
|
||||
// |response_details_| if |user_response.fido_opt_in| was not set to true
|
||||
// to avoid an unwanted registration prompt.
|
||||
|
@ -103,7 +103,7 @@ void MandatoryReauthManager::StartDeviceAuthentication(
|
||||
l10n_util::GetStringUTF16(IDS_PAYMENTS_AUTOFILL_FILLING_MANDATORY_REAUTH),
|
||||
std::move(authentication_complete_callback));
|
||||
#elif BUILDFLAG(IS_ANDROID)
|
||||
// TODO(crbug.com/1427216): Convert this to
|
||||
// TODO(crbug.com/40261690): Convert this to
|
||||
// DeviceAuthenticator::AuthenticateWithMessage() with the correct message
|
||||
// once it is supported. Currently, the message is "Verify it's you".
|
||||
Authenticate(std::move(authentication_complete_callback));
|
||||
@ -223,7 +223,7 @@ void MandatoryReauthManager::OnUserAcceptedOptInPrompt() {
|
||||
&MandatoryReauthManager::OnOptInAuthenticationStepCompleted,
|
||||
weak_ptr_factory_.GetWeakPtr()));
|
||||
#elif BUILDFLAG(IS_ANDROID)
|
||||
// TODO(crbug.com/1427216): Convert this to
|
||||
// TODO(crbug.com/40261690): Convert this to
|
||||
// DeviceAuthenticator::AuthenticateWithMessage() with the correct message
|
||||
// once it is supported. Currently, the message is "Verify it's you".
|
||||
Authenticate(base::BindOnce(
|
||||
|
@ -116,7 +116,7 @@ class ProfileTokenQuality {
|
||||
// The `pdm` is necessary to access the other profiles of the user and derive
|
||||
// observation types like `kEditedToSameTokenOfOtherProfile`.
|
||||
// The function returns true if at least one new observation was collected.
|
||||
// TODO(crbug.com/1331312): Get rid of the `form_data` parameter.
|
||||
// TODO(crbug.com/40227496): Get rid of the `form_data` parameter.
|
||||
bool AddObservationsForFilledForm(const FormStructure& form_structure,
|
||||
const FormData& form_data,
|
||||
const PersonalDataManager& pdm);
|
||||
|
@ -481,7 +481,7 @@ message AutofillUploadContents {
|
||||
TYPE_UNSPECIFIED = 0;
|
||||
NO_VALUE_TYPE = 1;
|
||||
STORED_FOR_CURRENT_DOMAIN = 2;
|
||||
// TODO(crbug.com/959776) Not used yet. Check against all domains to be
|
||||
// TODO(crbug.com/40626063) Not used yet. Check against all domains to be
|
||||
// implemented.
|
||||
STORED_FOR_ANOTHER_DOMAIN = 3;
|
||||
EMAIL = 4;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user