[Autofill] Make PaymentInstrument final

Bug: 40100455
Change-Id: I0d763bf4d67da9f80f03a58294aa5a9e34eb9bb9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5807758
Auto-Submit: Christoph Schwering <schwering@google.com>
Code-Coverage: findit-for-me@appspot.gserviceaccount.com <findit-for-me@appspot.gserviceaccount.com>
Reviewed-by: Jan Keitel <jkeitel@google.com>
Commit-Queue: Jan Keitel <jkeitel@google.com>
Cr-Commit-Position: refs/heads/main@{#1346579}
diff --git a/chrome/browser/autofill/android/personal_data_manager_android.cc b/chrome/browser/autofill/android/personal_data_manager_android.cc
index cb105fe..b6ff7ba 100644
--- a/chrome/browser/autofill/android/personal_data_manager_android.cc
+++ b/chrome/browser/autofill/android/personal_data_manager_android.cc
@@ -581,7 +581,7 @@
     const BankAccount& bank_account) {
   // Create an integer vector of PaymentRails which can be used to create a Java
   // array to be passed via JNI.
-  auto& payment_instrument_supported_rails =
+  DenseSet<PaymentInstrument::PaymentRail> payment_instrument_supported_rails =
       bank_account.payment_instrument().supported_rails();
   std::vector<int> supported_payment_rails_array(
       bank_account.payment_instrument().supported_rails().size());
diff --git a/components/autofill/core/browser/data_model/bank_account.cc b/components/autofill/core/browser/data_model/bank_account.cc
index 0c7a7a00..64e62a5 100644
--- a/components/autofill/core/browser/data_model/bank_account.cc
+++ b/components/autofill/core/browser/data_model/bank_account.cc
@@ -16,17 +16,17 @@
 BankAccount& BankAccount::operator=(const BankAccount& other) = default;
 
 BankAccount::BankAccount(int64_t instrument_id,
-                         std::u16string_view nickname,
-                         const GURL& display_icon_url,
-                         std::u16string_view bank_name,
-                         std::u16string_view account_number_suffix,
+                         std::u16string nickname,
+                         GURL display_icon_url,
+                         std::u16string bank_name,
+                         std::u16string account_number_suffix,
                          AccountType account_type)
-    : bank_name_(bank_name),
-      account_number_suffix_(account_number_suffix),
+    : bank_name_(std::move(bank_name)),
+      account_number_suffix_(std::move(account_number_suffix)),
       account_type_(account_type),
       payment_instrument_(instrument_id,
-                          nickname,
-                          display_icon_url,
+                          std::move(nickname),
+                          std::move(display_icon_url),
                           DenseSet({PaymentInstrument::PaymentRail::kPix})) {}
 
 BankAccount::~BankAccount() = default;
diff --git a/components/autofill/core/browser/data_model/bank_account.h b/components/autofill/core/browser/data_model/bank_account.h
index 609f16c..d312ade9 100644
--- a/components/autofill/core/browser/data_model/bank_account.h
+++ b/components/autofill/core/browser/data_model/bank_account.h
@@ -34,10 +34,10 @@
   BankAccount(const BankAccount& other);
   BankAccount& operator=(const BankAccount& other);
   BankAccount(int64_t instrument_id,
-              std::u16string_view nickname,
-              const GURL& display_icon_url,
-              std::u16string_view bank_name,
-              std::u16string_view account_number_suffix,
+              std::u16string nickname,
+              GURL display_icon_url,
+              std::u16string bank_name,
+              std::u16string account_number_suffix,
               AccountType account_type);
   ~BankAccount();
 
diff --git a/components/autofill/core/browser/data_model/payment_instrument.cc b/components/autofill/core/browser/data_model/payment_instrument.cc
index 2f037ca3..a102671 100644
--- a/components/autofill/core/browser/data_model/payment_instrument.cc
+++ b/components/autofill/core/browser/data_model/payment_instrument.cc
@@ -13,12 +13,12 @@
 
 PaymentInstrument::PaymentInstrument(
     int64_t instrument_id,
-    std::u16string_view nickname,
-    const GURL& display_icon_url,
-    const DenseSet<PaymentInstrument::PaymentRail> supported_rails)
+    std::u16string nickname,
+    GURL display_icon_url,
+    DenseSet<PaymentInstrument::PaymentRail> supported_rails)
     : instrument_id_(instrument_id),
-      nickname_(nickname),
-      display_icon_url_(display_icon_url),
+      nickname_(std::move(nickname)),
+      display_icon_url_(std::move(display_icon_url)),
       supported_rails_(supported_rails) {}
 
 PaymentInstrument::PaymentInstrument(
diff --git a/components/autofill/core/browser/data_model/payment_instrument.h b/components/autofill/core/browser/data_model/payment_instrument.h
index 362945c..2da03a4 100644
--- a/components/autofill/core/browser/data_model/payment_instrument.h
+++ b/components/autofill/core/browser/data_model/payment_instrument.h
@@ -20,7 +20,7 @@
 // be any form of payment stored in the GPay backend that can be used to
 // facilitate a payment on a webpage. Examples of derived class: BankAccount,
 // CreditCard etc.
-class PaymentInstrument {
+class PaymentInstrument final {
  public:
   // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.components.autofill.payments
   // A payment rail can loosely represent the different ways in which Chrome can
@@ -34,12 +34,12 @@
   };
 
   PaymentInstrument(int64_t instrument_id,
-                    std::u16string_view nickname,
-                    const GURL& display_icon_url,
+                    std::u16string nickname,
+                    GURL display_icon_url,
                     DenseSet<PaymentInstrument::PaymentRail> supported_rails);
   PaymentInstrument(const PaymentInstrument& other);
   PaymentInstrument& operator=(const PaymentInstrument& other);
-  virtual ~PaymentInstrument();
+  ~PaymentInstrument();
 
   friend std::strong_ordering operator<=>(const PaymentInstrument&,
                                           const PaymentInstrument&);
@@ -47,9 +47,7 @@
 
   int64_t instrument_id() const { return instrument_id_; }
 
-  const DenseSet<PaymentRail>& supported_rails() const {
-    return supported_rails_;
-  }
+  DenseSet<PaymentRail> supported_rails() const { return supported_rails_; }
 
   // Check whether the PaymentInstrument is supported for a particular rail.
   bool IsSupported(PaymentRail payment_rail) const;