0

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:
Alison Gale
2024-04-26 19:30:02 +00:00
committed by Chromium LUCI CQ
parent 305b300ed5
commit 45c4058fd0
700 changed files with 1555 additions and 1526 deletions
components
DEPS
affiliations
android_autofill
attribution_reporting
autofill
content
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
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.h
form_parsing
form_structure.ccform_structure_rationalizer.ccform_structure_rationalizer_unittest.ccmanual_testing_import.ccmanual_testing_import_unittest.cc
metrics
ml_model
payments
profile_token_quality.h
proto
randomized_encoder.ccrandomized_encoder_unittest.ccsingle_field_form_filler.h
ui
webdata
common
ios
autofill_strings.grdp
background_fetch
blocked_content
bookmarks
browser_sync
browser_ui
accessibility
android
java
src
org
chromium
components
browser_ui
display_cutout
android
java
src
org
chromium
components
browser_ui
share
site_settings
strings
widget
android
DEPS
java
res
src
org
chromium
components
browsing_data
cast_receiver
cast_streaming
commerce
content_relationship_verification
android
java
src
org
chromium
components
content_relationship_verification
response_header_verifier.cc
content_settings
crash
content
browser
core
app
browser
resources
common
cronet
dom_distiller
download
embedder_support
endpoint_fetcher
exo
favicon
feed
find_in_page
android
java
res
fuchsia_component_support
gcm_driver
guest_view
history
infobars
android
invalidation
js_injection
keyed_service
language
android
java
src
org
chromium
live_caption
local_state
location
android
java
src
org
chromium
components
management
media_control
media_device_salt
media_message_center
media_router
messages
metrics
mirroring
module_installer
android
nacl
no_state_prefetch
ntp_tiles
offline_pages
omnibox
open_from_clipboard
optimization_guide
core
optimization_guide_internals
origin_trials
os_crypt
page_image_annotation
page_info
page_load_metrics
paint_preview
password_manager
payments
pdf
performance_manager
permissions
plus_addresses
policy
power_bookmarks
prefs
printing
privacy_sandbox
android
java
src
org
chromium
components
canonical_topic.h
reading_list
remote_cocoa
resources
safe_browsing
search_engines
security_interstitials
send_tab_to_self
services
sessions
signin
site_isolation
subresource_filter
supervised_user
sync
sync_bookmarks
sync_device_info
sync_preferences
sync_sessions
system_cpu
test
thin_webview
translate
content
android
java
src
org
chromium
components
core
trusted_vault
ukm
undo
update_client
url_formatter
spoof_checks
top_domains
url_pattern_index
user_education
user_manager
user_notes
variations
viz
web_package
webapps
webrtc_logging

@ -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