diff --git a/chrome/browser/offline_pages/android/offline_page_model_factory.cc b/chrome/browser/offline_pages/android/offline_page_model_factory.cc
index 488f98d6..703b0766 100644
--- a/chrome/browser/offline_pages/android/offline_page_model_factory.cc
+++ b/chrome/browser/offline_pages/android/offline_page_model_factory.cc
@@ -11,15 +11,14 @@
 #include "base/path_service.h"
 #include "base/sequenced_task_runner.h"
 #include "base/task_scheduler/post_task.h"
-#include "base/time/default_clock.h"
 #include "chrome/browser/offline_pages/android/cct_origin_observer.h"
 #include "chrome/browser/offline_pages/fresh_offline_content_observer.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/common/chrome_constants.h"
 #include "components/keyed_service/content/browser_context_dependency_manager.h"
 #include "components/offline_pages/core/archive_manager.h"
-#include "components/offline_pages/core/model/offline_page_model_taskified.h"
 #include "components/offline_pages/core/offline_page_metadata_store_sql.h"
+#include "components/offline_pages/core/offline_page_model_impl.h"
 
 namespace offline_pages {
 
@@ -36,7 +35,7 @@
 // static
 OfflinePageModel* OfflinePageModelFactory::GetForBrowserContext(
     content::BrowserContext* context) {
-  return static_cast<OfflinePageModelTaskified*>(
+  return static_cast<OfflinePageModelImpl*>(
       GetInstance()->GetServiceForBrowserContext(context, true));
 }
 
@@ -48,7 +47,7 @@
 
   base::FilePath store_path =
       profile->GetPath().Append(chrome::kOfflinePageMetadataDirname);
-  std::unique_ptr<OfflinePageMetadataStoreSQL> metadata_store(
+  std::unique_ptr<OfflinePageMetadataStore> metadata_store(
       new OfflinePageMetadataStoreSQL(background_task_runner, store_path));
 
   base::FilePath persistent_archives_dir =
@@ -62,11 +61,10 @@
   }
   std::unique_ptr<ArchiveManager> archive_manager(new ArchiveManager(
       temporary_archives_dir, persistent_archives_dir, background_task_runner));
-  auto clock = base::MakeUnique<base::DefaultClock>();
 
-  OfflinePageModelTaskified* model = new OfflinePageModelTaskified(
+  OfflinePageModelImpl* model = new OfflinePageModelImpl(
       std::move(metadata_store), std::move(archive_manager),
-      background_task_runner, std::move(clock));
+      background_task_runner);
 
   CctOriginObserver::AttachToOfflinePageModel(model);
 
diff --git a/chrome/browser/offline_pages/offline_page_request_job_unittest.cc b/chrome/browser/offline_pages/offline_page_request_job_unittest.cc
index 4f7db41..7e8e175 100644
--- a/chrome/browser/offline_pages/offline_page_request_job_unittest.cc
+++ b/chrome/browser/offline_pages/offline_page_request_job_unittest.cc
@@ -31,7 +31,7 @@
 #include "chrome/test/base/testing_profile.h"
 #include "chrome/test/base/testing_profile_manager.h"
 #include "components/offline_pages/core/client_namespace_constants.h"
-#include "components/offline_pages/core/model/offline_page_model_taskified.h"
+#include "components/offline_pages/core/offline_page_model_impl.h"
 #include "components/offline_pages/core/request_header/offline_page_navigation_ui_data.h"
 #include "components/previews/core/previews_decider.h"
 #include "components/previews/core/previews_experiments.h"
@@ -366,8 +366,7 @@
                                    bool is_offline_page_set_in_navigation_data);
 
   content::TestBrowserThreadBundle thread_bundle_;
-  std::unique_ptr<base::SimpleTestClock> clock_;
-  base::SimpleTestClock* clock_ptr_;
+  base::SimpleTestClock clock_;
   TestingProfileManager profile_manager_;
   TestingProfile* profile_;
   std::unique_ptr<content::WebContents> web_contents_;
@@ -401,8 +400,6 @@
 
 OfflinePageRequestJobTest::OfflinePageRequestJobTest()
     : thread_bundle_(content::TestBrowserThreadBundle::REAL_IO_THREAD),
-      clock_(new base::SimpleTestClock),
-      clock_ptr_(clock_.get()),
       profile_manager_(TestingBrowserProcess::GetGlobal()),
       offline_id_(-1),
       offline_id2_(-1),
@@ -431,19 +428,19 @@
       profile(), BuildTestOfflinePageModel);
   RunUntilIdle();
 
-  OfflinePageModelTaskified* model = static_cast<OfflinePageModelTaskified*>(
+  OfflinePageModelImpl* model = static_cast<OfflinePageModelImpl*>(
       OfflinePageModelFactory::GetForBrowserContext(profile()));
 
   // Hook up a test clock such that we can control the time when the offline
   // page is created.
-  clock_ptr_->SetNow(base::Time::Now());
-  model->SetClockForTesting(std::move(clock_));
+  clock_.SetNow(base::Time::Now());
+  model->set_testing_clock(&clock_);
 
   // Skip the logic to clear the original URL if it is same as final URL.
   // This is needed in order to test that offline page request handler can
   // omit the redirect under this circumstance, for compatibility with the
   // metadata already written to the store.
-  model->SetSkipClearingOriginalUrlForTesting();
+  model->set_skip_clearing_original_url_for_testing();
 
   // All offline pages being created below will point to real archive files
   // residing in test data directory.
@@ -468,7 +465,7 @@
                                   kTestFileSize2));
 
   // Make sure that the creation time of 2nd offline file is later.
-  clock_ptr_->Advance(base::TimeDelta::FromMinutes(10));
+  clock_.Advance(base::TimeDelta::FromMinutes(10));
 
   SavePage(kTestUrl1, kTestClientId2, GURL(), std::move(archiver2));
 
@@ -512,7 +509,7 @@
 void OfflinePageRequestJobTest::TearDown() {
   OfflinePageModel* model =
       OfflinePageModelFactory::GetForBrowserContext(profile());
-  static_cast<OfflinePageModelTaskified*>(model)->SetClockForTesting(nullptr);
+  static_cast<OfflinePageModelImpl*>(model)->set_testing_clock(nullptr);
 }
 
 void OfflinePageRequestJobTest::SimulateHasNetworkConnectivity(bool online) {
diff --git a/chrome/browser/offline_pages/offline_page_utils.cc b/chrome/browser/offline_pages/offline_page_utils.cc
index 3efa562..f7fae7ea 100644
--- a/chrome/browser/offline_pages/offline_page_utils.cc
+++ b/chrome/browser/offline_pages/offline_page_utils.cc
@@ -60,7 +60,7 @@
       }
     } else {
       // This is consistent with exact match against original url done in
-      // GetPagesTask.
+      // OfflinePageModelImpl.
       DCHECK(url == page.original_url);
       if (!selected_page_for_original_url ||
           page.creation_time > selected_page_for_original_url->creation_time) {
diff --git a/chrome/browser/offline_pages/offline_page_utils_unittest.cc b/chrome/browser/offline_pages/offline_page_utils_unittest.cc
index 270713f..3e256cc 100644
--- a/chrome/browser/offline_pages/offline_page_utils_unittest.cc
+++ b/chrome/browser/offline_pages/offline_page_utils_unittest.cc
@@ -29,9 +29,9 @@
 #include "components/offline_pages/core/background/network_quality_provider_stub.h"
 #include "components/offline_pages/core/background/request_coordinator.h"
 #include "components/offline_pages/core/client_namespace_constants.h"
-#include "components/offline_pages/core/model/offline_page_model_taskified.h"
 #include "components/offline_pages/core/offline_page_feature.h"
 #include "components/offline_pages/core/offline_page_model.h"
+#include "components/offline_pages/core/offline_page_model_impl.h"
 #include "components/offline_pages/core/offline_page_test_archiver.h"
 #include "components/offline_pages/core/offline_page_test_store.h"
 #include "components/offline_pages/core/offline_page_types.h"
@@ -359,20 +359,18 @@
   // The clock will be at 03:00:00 after adding pages.
   OfflinePageModel* model =
       OfflinePageModelFactory::GetForBrowserContext(profile());
-  auto clock = base::MakeUnique<base::SimpleTestClock>();
-  base::SimpleTestClock* clock_ptr = clock.get();
-  static_cast<OfflinePageModelTaskified*>(model)->SetClockForTesting(
-      std::move(clock));
-  CreateCachedOfflinePages(clock_ptr);
+  base::SimpleTestClock clock;
+  static_cast<OfflinePageModelImpl*>(model)->set_testing_clock(&clock);
+  CreateCachedOfflinePages(&clock);
 
   // Advance the clock so that we don't hit the time check boundary.
-  clock_ptr->Advance(base::TimeDelta::FromMinutes(5));
+  clock.Advance(base::TimeDelta::FromMinutes(5));
 
   // Get the size of cached offline pages between 01:05:00 and 03:05:00.
   bool ret = OfflinePageUtils::GetCachedOfflinePageSizeBetween(
       profile(),
       base::Bind(&OfflinePageUtilsTest::OnSizeInBytesCalculated, AsWeakPtr()),
-      clock_ptr->Now() - base::TimeDelta::FromHours(2), clock_ptr->Now());
+      clock.Now() - base::TimeDelta::FromHours(2), clock.Now());
   RunUntilIdle();
   EXPECT_TRUE(ret);
   EXPECT_EQ(kTestFileSize * 2, last_cache_size());
@@ -382,12 +380,10 @@
   // Set a test clock.
   OfflinePageModel* model =
       OfflinePageModelFactory::GetForBrowserContext(profile());
-  auto clock = base::MakeUnique<base::SimpleTestClock>();
-  base::SimpleTestClock* clock_ptr = clock.get();
-  static_cast<OfflinePageModelTaskified*>(model)->SetClockForTesting(
-      std::move(clock));
+  base::SimpleTestClock clock;
+  static_cast<OfflinePageModelImpl*>(model)->set_testing_clock(&clock);
 
-  clock_ptr->Advance(base::TimeDelta::FromHours(3));
+  clock.Advance(base::TimeDelta::FromHours(3));
 
   // Get the size of cached offline pages between 01:00:00 and 03:00:00.
   // Since no temporary pages were added to the model, the cache size should be
@@ -395,7 +391,7 @@
   bool ret = OfflinePageUtils::GetCachedOfflinePageSizeBetween(
       profile(),
       base::Bind(&OfflinePageUtilsTest::OnSizeInBytesCalculated, AsWeakPtr()),
-      clock_ptr->Now() - base::TimeDelta::FromHours(2), clock_ptr->Now());
+      clock.Now() - base::TimeDelta::FromHours(2), clock.Now());
   RunUntilIdle();
   EXPECT_TRUE(ret);
   EXPECT_EQ(0, last_cache_size());
@@ -406,20 +402,18 @@
   // The clock will be at 03:00:00 after adding pages.
   OfflinePageModel* model =
       OfflinePageModelFactory::GetForBrowserContext(profile());
-  auto clock = base::MakeUnique<base::SimpleTestClock>();
-  base::SimpleTestClock* clock_ptr = clock.get();
-  static_cast<OfflinePageModelTaskified*>(model)->SetClockForTesting(
-      std::move(clock));
-  CreateCachedOfflinePages(clock_ptr);
+  base::SimpleTestClock clock;
+  static_cast<OfflinePageModelImpl*>(model)->set_testing_clock(&clock);
+  CreateCachedOfflinePages(&clock);
 
   // Advance the clock so that we don't hit the time check boundary.
-  clock_ptr->Advance(base::TimeDelta::FromMinutes(5));
+  clock.Advance(base::TimeDelta::FromMinutes(5));
 
   // Get the size of cached offline pages between 03:04:00 and 03:05:00.
   bool ret = OfflinePageUtils::GetCachedOfflinePageSizeBetween(
       profile(),
       base::Bind(&OfflinePageUtilsTest::OnSizeInBytesCalculated, AsWeakPtr()),
-      clock_ptr->Now() - base::TimeDelta::FromMinutes(1), clock_ptr->Now());
+      clock.Now() - base::TimeDelta::FromMinutes(1), clock.Now());
   RunUntilIdle();
   EXPECT_TRUE(ret);
   EXPECT_EQ(0, last_cache_size());
@@ -430,20 +424,18 @@
   // The clock will be at 03:00:00 after adding pages.
   OfflinePageModel* model =
       OfflinePageModelFactory::GetForBrowserContext(profile());
-  auto clock = base::MakeUnique<base::SimpleTestClock>();
-  base::SimpleTestClock* clock_ptr = clock.get();
-  static_cast<OfflinePageModelTaskified*>(model)->SetClockForTesting(
-      std::move(clock));
-  CreateCachedOfflinePages(clock_ptr);
+  base::SimpleTestClock clock;
+  static_cast<OfflinePageModelImpl*>(model)->set_testing_clock(&clock);
+  CreateCachedOfflinePages(&clock);
 
   // Advance the clock to 23:00:00.
-  clock_ptr->Advance(base::TimeDelta::FromHours(20));
+  clock.Advance(base::TimeDelta::FromHours(20));
 
   // Get the size of cached offline pages between -01:00:00 and 23:00:00.
   bool ret = OfflinePageUtils::GetCachedOfflinePageSizeBetween(
       profile(),
       base::Bind(&OfflinePageUtilsTest::OnSizeInBytesCalculated, AsWeakPtr()),
-      clock_ptr->Now() - base::TimeDelta::FromHours(24), clock_ptr->Now());
+      clock.Now() - base::TimeDelta::FromHours(24), clock.Now());
   RunUntilIdle();
   EXPECT_TRUE(ret);
   EXPECT_EQ(kTestFileSize * 4, last_cache_size());
@@ -454,14 +446,12 @@
   // The clock will be at 03:00:00 after adding pages.
   OfflinePageModel* model =
       OfflinePageModelFactory::GetForBrowserContext(profile());
-  auto clock = base::MakeUnique<base::SimpleTestClock>();
-  base::SimpleTestClock* clock_ptr = clock.get();
-  static_cast<OfflinePageModelTaskified*>(model)->SetClockForTesting(
-      std::move(clock));
-  CreateCachedOfflinePages(clock_ptr);
+  base::SimpleTestClock clock;
+  static_cast<OfflinePageModelImpl*>(model)->set_testing_clock(&clock);
+  CreateCachedOfflinePages(&clock);
 
   // Advance the clock to 23:00:00.
-  clock_ptr->Advance(base::TimeDelta::FromHours(20));
+  clock.Advance(base::TimeDelta::FromHours(20));
 
   // Get the size of cached offline pages between 23:00:00 and -01:00:00, which
   // is an invalid range, the return value will be false and there will be no
@@ -469,7 +459,7 @@
   bool ret = OfflinePageUtils::GetCachedOfflinePageSizeBetween(
       profile(),
       base::Bind(&OfflinePageUtilsTest::OnSizeInBytesCalculated, AsWeakPtr()),
-      clock_ptr->Now(), clock_ptr->Now() - base::TimeDelta::FromHours(24));
+      clock.Now(), clock.Now() - base::TimeDelta::FromHours(24));
   RunUntilIdle();
   EXPECT_FALSE(ret);
 }
@@ -479,11 +469,9 @@
   // The clock will be at 03:00:00 after adding pages.
   OfflinePageModel* model =
       OfflinePageModelFactory::GetForBrowserContext(profile());
-  auto clock = base::MakeUnique<base::SimpleTestClock>();
-  base::SimpleTestClock* clock_ptr = clock.get();
-  static_cast<OfflinePageModelTaskified*>(model)->SetClockForTesting(
-      std::move(clock));
-  CreateCachedOfflinePages(clock_ptr);
+  base::SimpleTestClock clock;
+  static_cast<OfflinePageModelImpl*>(model)->set_testing_clock(&clock);
+  CreateCachedOfflinePages(&clock);
 
   // Get the size of cached offline pages between 02:00:00 and 03:00:00, since
   // we are using a [begin_time, end_time) range so there will be only 1 page
@@ -491,7 +479,7 @@
   bool ret = OfflinePageUtils::GetCachedOfflinePageSizeBetween(
       profile(),
       base::Bind(&OfflinePageUtilsTest::OnSizeInBytesCalculated, AsWeakPtr()),
-      clock_ptr->Now() - base::TimeDelta::FromHours(1), clock_ptr->Now());
+      clock.Now() - base::TimeDelta::FromHours(1), clock.Now());
   RunUntilIdle();
   EXPECT_TRUE(ret);
   EXPECT_EQ(kTestFileSize * 1, last_cache_size());
diff --git a/chrome/browser/offline_pages/test_offline_page_model_builder.cc b/chrome/browser/offline_pages/test_offline_page_model_builder.cc
index f1e394e..7d2baec8 100644
--- a/chrome/browser/offline_pages/test_offline_page_model_builder.cc
+++ b/chrome/browser/offline_pages/test_offline_page_model_builder.cc
@@ -10,11 +10,10 @@
 #include "base/path_service.h"
 #include "base/single_thread_task_runner.h"
 #include "base/threading/thread_task_runner_handle.h"
-#include "base/time/default_clock.h"
 #include "chrome/common/chrome_constants.h"
 #include "components/offline_pages/core/archive_manager.h"
-#include "components/offline_pages/core/model/offline_page_model_taskified.h"
-#include "components/offline_pages/core/offline_page_metadata_store_sql.h"
+#include "components/offline_pages/core/offline_page_model_impl.h"
+#include "components/offline_pages/core/offline_page_test_store.h"
 #include "content/public/browser/browser_context.h"
 
 namespace offline_pages {
@@ -24,10 +23,8 @@
   scoped_refptr<base::SingleThreadTaskRunner> task_runner =
       base::ThreadTaskRunnerHandle::Get();
 
-  base::FilePath store_path =
-      context->GetPath().Append(chrome::kOfflinePageMetadataDirname);
-  std::unique_ptr<OfflinePageMetadataStoreSQL> metadata_store(
-      new OfflinePageMetadataStoreSQL(task_runner, store_path));
+  std::unique_ptr<OfflinePageTestStore> metadata_store(
+      new OfflinePageTestStore(task_runner));
 
   base::FilePath persistent_archives_dir =
       context->GetPath().Append(chrome::kOfflinePageArchivesDirname);
@@ -40,11 +37,9 @@
   }
   std::unique_ptr<ArchiveManager> archive_manager(new ArchiveManager(
       temporary_archives_dir, persistent_archives_dir, task_runner));
-  std::unique_ptr<base::Clock> clock(new base::DefaultClock);
 
-  return std::unique_ptr<KeyedService>(new OfflinePageModelTaskified(
-      std::move(metadata_store), std::move(archive_manager), task_runner,
-      std::move(clock)));
+  return std::unique_ptr<KeyedService>(new OfflinePageModelImpl(
+      std::move(metadata_store), std::move(archive_manager), task_runner));
 }
 
 }  // namespace offline_pages
diff --git a/components/autofill/core/browser/BUILD.gn b/components/autofill/core/browser/BUILD.gn
index 26b08fb..b619cfa 100644
--- a/components/autofill/core/browser/BUILD.gn
+++ b/components/autofill/core/browser/BUILD.gn
@@ -294,6 +294,8 @@
     "test_autofill_external_delegate.h",
     "test_autofill_provider.cc",
     "test_autofill_provider.h",
+    "test_credit_card_save_manager.cc",
+    "test_credit_card_save_manager.h",
     "test_form_data_importer.cc",
     "test_form_data_importer.h",
     "test_personal_data_manager.cc",
diff --git a/components/autofill/core/browser/credit_card_save_manager_unittest.cc b/components/autofill/core/browser/credit_card_save_manager_unittest.cc
index 4d5e180a..7fe197c1 100644
--- a/components/autofill/core/browser/credit_card_save_manager_unittest.cc
+++ b/components/autofill/core/browser/credit_card_save_manager_unittest.cc
@@ -37,6 +37,7 @@
 #include "components/autofill/core/browser/test_autofill_client.h"
 #include "components/autofill/core/browser/test_autofill_clock.h"
 #include "components/autofill/core/browser/test_autofill_driver.h"
+#include "components/autofill/core/browser/test_credit_card_save_manager.h"
 #include "components/autofill/core/browser/test_form_data_importer.h"
 #include "components/autofill/core/browser/test_personal_data_manager.h"
 #include "components/autofill/core/browser/validation.h"
@@ -178,47 +179,6 @@
 
 }  // anonymous namespace
 
-class TestCreditCardSaveManager : public CreditCardSaveManager {
- public:
-  TestCreditCardSaveManager(AutofillDriver* driver,
-                            AutofillClient* client,
-                            payments::TestPaymentsClient* payments_client,
-                            PersonalDataManager* personal_data_manager)
-      : CreditCardSaveManager(client,
-                              payments_client,
-                              "en-US",
-                              personal_data_manager),
-        test_payments_client_(payments_client) {
-    if (test_payments_client_) {
-      test_payments_client_->SetSaveDelegate(this);
-    }
-  }
-  ~TestCreditCardSaveManager() override {}
-
-  bool IsCreditCardUploadEnabled() override {
-    return credit_card_upload_enabled_;
-  }
-
-  void set_credit_card_upload_enabled(bool credit_card_upload_enabled) {
-    credit_card_upload_enabled_ = credit_card_upload_enabled;
-  }
-
-  bool credit_card_was_uploaded() { return credit_card_was_uploaded_; }
-
- private:
-  void OnDidUploadCard(AutofillClient::PaymentsRpcResult result,
-                       const std::string& server_id) override {
-    credit_card_was_uploaded_ = true;
-    CreditCardSaveManager::OnDidUploadCard(result, server_id);
-  };
-
-  payments::TestPaymentsClient* test_payments_client_;  // Weak reference.
-  bool credit_card_upload_enabled_ = false;
-  bool credit_card_was_uploaded_ = false;
-
-  DISALLOW_COPY_AND_ASSIGN(TestCreditCardSaveManager);
-};
-
 class CreditCardSaveManagerTest : public testing::Test {
  public:
   void SetUp() override {
@@ -553,7 +513,7 @@
   // The credit card should neither be saved locally or uploaded.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that no histogram entry was logged.
   histogram_tester.ExpectTotalCount("Autofill.CardUploadDecisionMetric", 0);
@@ -562,7 +522,7 @@
 TEST_F(CreditCardSaveManagerTest, UploadCreditCard) {
   personal_data_.ClearCreditCards();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Create, fill and submit an address form in order to establish a recent
   // profile which can be selected for the upload request.
@@ -591,7 +551,7 @@
 
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_TRUE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded());
   EXPECT_TRUE(payments_client_->GetActiveExperimentsSetInRequest().empty());
 
   // Server did not send a server_id, expect copy of card is not stored.
@@ -616,7 +576,7 @@
 
   personal_data_.ClearCreditCards();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Create, fill and submit an address form in order to establish a recent
   // profile which can be selected for the upload request.
@@ -641,7 +601,7 @@
 
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_TRUE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded());
   // Submitted form included CVC, so user did not need to enter CVC.
   EXPECT_TRUE(payments_client_->GetActiveExperimentsSetInRequest().empty());
 }
@@ -649,7 +609,7 @@
 TEST_F(CreditCardSaveManagerTest, UploadCreditCardAndSaveCopy) {
   personal_data_.ClearCreditCards();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   const char* const server_id = "InstrumentData:1234";
   payments_client_->SetServerIdForCardUpload(server_id);
@@ -678,7 +638,7 @@
 
   FormSubmitted(credit_card_form);
 
-  EXPECT_TRUE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded());
   EXPECT_TRUE(personal_data_.GetLocalCreditCards().empty());
 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
   // See |OfferStoreUnmaskedCards|
@@ -699,7 +659,7 @@
 
 TEST_F(CreditCardSaveManagerTest, UploadCreditCard_FeatureNotEnabled) {
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(false);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(false);
 
   // Create, fill and submit an address form in order to establish a recent
   // profile which can be selected for the upload request.
@@ -726,7 +686,7 @@
   // The save prompt should be shown instead of doing an upload.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _));
   FormSubmitted(credit_card_form);
-  EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that no histogram entry was logged.
   histogram_tester.ExpectTotalCount("Autofill.CardUploadDecisionMetric", 0);
@@ -734,7 +694,7 @@
 
 TEST_F(CreditCardSaveManagerTest, UploadCreditCard_CvcUnavailable) {
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Create, fill and submit an address form in order to establish a recent
   // profile which can be selected for the upload request.
@@ -764,7 +724,7 @@
   // Neither a local save nor an upload should happen in this case.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that the correct histogram entry (and only that) was logged.
   ExpectUniqueCardUploadDecision(histogram_tester,
@@ -775,7 +735,7 @@
 
 TEST_F(CreditCardSaveManagerTest, UploadCreditCard_CvcInvalidLength) {
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Create, fill and submit an address form in order to establish a recent
   // profile which can be selected for the upload request.
@@ -802,7 +762,7 @@
   // Neither a local save nor an upload should happen in this case.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that the correct histogram entry (and only that) was logged.
   ExpectUniqueCardUploadDecision(histogram_tester,
@@ -812,7 +772,7 @@
 }
 
 TEST_F(CreditCardSaveManagerTest, UploadCreditCard_MultipleCvcFields) {
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Remove the profiles that were created in the TestPersonalDataManager
   // constructor because they would result in conflicting names that would
@@ -864,7 +824,7 @@
   // A CVC value appeared in one of the two CVC fields, upload should happen.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_TRUE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that the correct histogram entry (and only that) was logged.
   ExpectUniqueCardUploadDecision(histogram_tester,
@@ -874,7 +834,7 @@
 }
 
 TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NoCvcFieldOnForm) {
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Remove the profiles that were created in the TestPersonalDataManager
   // constructor because they would result in conflicting names that would
@@ -920,7 +880,7 @@
   // Upload should not happen because user did not provide CVC.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that the correct histogram entry (and only that) was logged.
   ExpectUniqueCardUploadDecision(histogram_tester,
@@ -931,7 +891,7 @@
 
 TEST_F(CreditCardSaveManagerTest,
        UploadCreditCard_NoCvcFieldOnForm_InvalidCvcInNonCvcField) {
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Remove the profiles that were created in the TestPersonalDataManager
   // constructor because they would result in conflicting names that would
@@ -980,7 +940,7 @@
   // Upload should not happen because user did not provide CVC.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that the correct histogram entry (and only that) was logged.
   ExpectUniqueCardUploadDecision(histogram_tester,
@@ -991,7 +951,7 @@
 
 TEST_F(CreditCardSaveManagerTest,
        UploadCreditCard_NoCvcFieldOnForm_CvcInNonCvcField) {
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Remove the profiles that were created in the TestPersonalDataManager
   // constructor because they would result in conflicting names that would
@@ -1040,7 +1000,7 @@
   // Upload should not happen because user did not provide CVC.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that the correct histogram entry (and only that) was logged.
   ExpectUniqueCardUploadDecision(
@@ -1053,7 +1013,7 @@
 
 TEST_F(CreditCardSaveManagerTest,
        UploadCreditCard_NoCvcFieldOnForm_CvcInAddressField) {
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Remove the profiles that were created in the TestPersonalDataManager
   // constructor because they would result in conflicting names that would
@@ -1102,7 +1062,7 @@
   // Upload should not happen because user did not provide CVC.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that the correct histogram entry (and only that) was logged.
   ExpectUniqueCardUploadDecision(histogram_tester,
@@ -1122,7 +1082,7 @@
 TEST_F(CreditCardSaveManagerTest,
        MAYBE_UploadCreditCard_NoCvcFieldOnForm_UserEntersCvc) {
   EnableAutofillUpstreamRequestCvcIfMissingExperiment();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Remove the profiles that were created in the TestPersonalDataManager
   // constructor because they would result in conflicting names that would
@@ -1168,7 +1128,7 @@
   // Upload should still happen as long as the user provides CVC in the bubble.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_TRUE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded());
   EXPECT_THAT(payments_client_->GetActiveExperimentsSetInRequest(),
               UnorderedElementsAre(kAutofillUpstreamRequestCvcIfMissing.name));
 
@@ -1186,7 +1146,7 @@
 
 TEST_F(CreditCardSaveManagerTest,
        UploadCreditCard_NoCvcFieldOnFormExperimentOff) {
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Remove the profiles that were created in the TestPersonalDataManager
   // constructor because they would result in conflicting names that would
@@ -1232,7 +1192,7 @@
   // Neither a local save nor an upload should happen in this case.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that the correct histogram entry (and only that) was logged.
   ExpectUniqueCardUploadDecision(histogram_tester,
@@ -1243,7 +1203,7 @@
 
 TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NoProfileAvailable) {
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Don't fill or submit an address form.
 
@@ -1264,7 +1224,7 @@
   // Neither a local save nor an upload should happen in this case.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that the correct histogram entries are logged.
   ExpectUniqueCardUploadDecision(
@@ -1280,7 +1240,7 @@
   test_clock.SetNow(kArbitraryTime);
 
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Create, fill and submit an address form in order to establish a profile.
   FormData address_form;
@@ -1310,7 +1270,7 @@
   // Neither a local save nor an upload should happen in this case.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that the correct histogram entry (and only that) was logged.
   ExpectUniqueCardUploadDecision(
@@ -1327,7 +1287,7 @@
 TEST_F(CreditCardSaveManagerTest,
        UploadCreditCard_CvcUnavailableAndNoProfileAvailable) {
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Don't fill or submit an address form.
 
@@ -1350,7 +1310,7 @@
   // profile, but the no CVC case should have priority over being reported.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that the correct histogram entries were logged.
   ExpectCardUploadDecision(histogram_tester,
@@ -1367,7 +1327,7 @@
 
 TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NoNameAvailable) {
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Create, fill and submit an address form in order to establish a recent
   // profile which can be selected for the upload request.
@@ -1394,7 +1354,7 @@
   // Neither a local save nor an upload should happen in this case.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that the correct histogram entry (and only that) was logged.
   ExpectUniqueCardUploadDecision(histogram_tester,
@@ -1406,7 +1366,7 @@
 TEST_F(CreditCardSaveManagerTest,
        UploadCreditCard_NoNameAvailableAndNoProfileAvailable) {
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Don't fill or submit an address form.
 
@@ -1426,7 +1386,7 @@
   // Neither a local save nor an upload should happen in this case.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that the correct histogram entries were logged.
   ExpectCardUploadDecision(
@@ -1443,7 +1403,7 @@
 
 TEST_F(CreditCardSaveManagerTest, UploadCreditCard_ZipCodesConflict) {
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Create, fill and submit two address forms with different zip codes.
   FormData address_form1, address_form2;
@@ -1480,7 +1440,7 @@
   // Neither a local save nor an upload should happen in this case.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that the correct histogram entry (and only that) was logged.
   ExpectUniqueCardUploadDecision(
@@ -1493,7 +1453,7 @@
 TEST_F(CreditCardSaveManagerTest,
        UploadCreditCard_ZipCodesDoNotDiscardWhitespace) {
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Create two separate profiles with different zip codes. Must directly add
   // instead of submitting a form, because they're deduped on form submit.
@@ -1528,7 +1488,7 @@
   // Neither a local save nor an upload should happen in this case.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
   EXPECT_TRUE(payments_client_->GetActiveExperimentsSetInRequest().empty());
 
   // Verify that the correct histogram entry (and only that) was logged.
@@ -1538,7 +1498,7 @@
 
 TEST_F(CreditCardSaveManagerTest, UploadCreditCard_ZipCodesHavePrefixMatch) {
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Create, fill and submit two address forms with different zip codes.
   FormData address_form1, address_form2;
@@ -1573,7 +1533,7 @@
   // One zip is a prefix of the other, upload should happen.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_TRUE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that the correct histogram entry (and only that) was logged.
   ExpectUniqueCardUploadDecision(histogram_tester,
@@ -1584,7 +1544,7 @@
 
 TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NoZipCodeAvailable) {
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Create, fill and submit an address form in order to establish a recent
   // profile which can be selected for the upload request.
@@ -1618,7 +1578,7 @@
   // Neither a local save nor an upload should happen in this case.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that the correct histogram entry (and only that) was logged.
   ExpectUniqueCardUploadDecision(
@@ -1629,7 +1589,7 @@
 
 TEST_F(CreditCardSaveManagerTest, UploadCreditCard_CCFormHasMiddleInitial) {
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Create, fill and submit two address forms with different names.
   FormData address_form1, address_form2;
@@ -1663,7 +1623,7 @@
   // Names match loosely, upload should happen.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_TRUE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded());
   EXPECT_TRUE(payments_client_->GetActiveExperimentsSetInRequest().empty());
 
   // Verify that the correct histogram entry (and only that) was logged.
@@ -1675,7 +1635,7 @@
 
 TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NoMiddleInitialInCCForm) {
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Create, fill and submit two address forms with different names.
   FormData address_form1, address_form2;
@@ -1706,7 +1666,7 @@
   // Names match loosely, upload should happen.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_TRUE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that the correct histogram entry (and only that) was logged.
   ExpectUniqueCardUploadDecision(histogram_tester,
@@ -1718,7 +1678,7 @@
 TEST_F(CreditCardSaveManagerTest,
        UploadCreditCard_CCFormHasCardholderMiddleName) {
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Create, fill and submit address form without middle name.
   FormData address_form;
@@ -1744,7 +1704,7 @@
   // Names match loosely but middle name mismatches. Upload should not happen.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
   EXPECT_TRUE(payments_client_->GetActiveExperimentsSetInRequest().empty());
 
   // Verify that the correct histogram entry (and only that) was logged.
@@ -1754,7 +1714,7 @@
 
 TEST_F(CreditCardSaveManagerTest, UploadCreditCard_CCFormHasAddressMiddleName) {
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Create, fill and submit address form with middle name.
   FormData address_form;
@@ -1780,7 +1740,7 @@
   // Names match loosely but middle name mismatches. Upload should not happen.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
   EXPECT_TRUE(payments_client_->GetActiveExperimentsSetInRequest().empty());
 
   // Verify that the correct histogram entry (and only that) was logged.
@@ -1793,7 +1753,7 @@
 
 TEST_F(CreditCardSaveManagerTest, UploadCreditCard_NamesHaveToMatch) {
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Create, fill and submit two address forms with different names.
   FormData address_form1, address_form2;
@@ -1828,7 +1788,7 @@
   // Names are required to match, upload should not happen.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
   EXPECT_TRUE(payments_client_->GetActiveExperimentsSetInRequest().empty());
 
   // Verify that the correct histogram entry (and only that) was logged.
@@ -1845,7 +1805,7 @@
   test_clock.SetNow(kArbitraryTime);
 
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Create, fill and submit two address forms with different names.
   FormData address_form1, address_form2;
@@ -1880,7 +1840,7 @@
   // Name matches recently used profile, should offer upload.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_TRUE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that the correct histogram entry (and only that) was logged.
   ExpectUniqueCardUploadDecision(histogram_tester,
@@ -1893,7 +1853,7 @@
   test_clock.SetNow(kArbitraryTime);
 
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Create, fill and submit an address form in order to establish a recent
   // profile which can be selected for the upload request.
@@ -1926,7 +1886,7 @@
 
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_TRUE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that UMA for "DaysSincePreviousUse" is logged.
   histogram_tester.ExpectUniqueSample(
@@ -1937,7 +1897,7 @@
 
 TEST_F(CreditCardSaveManagerTest, UploadCreditCard_UploadDetailsFails) {
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Anything other than "en-US" will cause GetUploadDetails to return a failure
   // response.
@@ -1968,7 +1928,7 @@
   // The save prompt should be shown instead of doing an upload.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _));
   FormSubmitted(credit_card_form);
-  EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that the correct histogram entry (and only that) was logged.
   ExpectUniqueCardUploadDecision(
@@ -1983,7 +1943,7 @@
   EnableAutofillOfferLocalSaveIfServerCardManuallyEnteredExperiment();
 
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
   credit_card_save_manager_->SetAppLocale("en-US");
 
   // Create, fill and submit an address form in order to establish a recent
@@ -2017,12 +1977,12 @@
   // The local save prompt should be shown.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _));
   FormSubmitted(credit_card_form);
-  EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
 }
 
 TEST_F(CreditCardSaveManagerTest, DuplicateMaskedCreditCard_ExperimentOff) {
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
   credit_card_save_manager_->SetAppLocale("en-US");
 
   // Create, fill and submit an address form in order to establish a recent
@@ -2056,13 +2016,13 @@
   // The local save prompt should not be shown because the experiment is off.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
 }
 
 TEST_F(CreditCardSaveManagerTest, GetDetectedValues_NothingIfNothingFound) {
   EnableAutofillUpstreamSendDetectedValuesExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Set up our credit card form data.
   FormData credit_card_form;
@@ -2084,7 +2044,7 @@
 TEST_F(CreditCardSaveManagerTest, GetDetectedValues_DetectCvc) {
   EnableAutofillUpstreamSendDetectedValuesExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Set up our credit card form data.
   FormData credit_card_form;
@@ -2110,7 +2070,7 @@
        GetDetectedValues_DetectCvcIfCvcFixFlowEnabledAndNameAndAddressFound) {
   EnableAutofillUpstreamRequestCvcIfMissingAndSendDetectedValuesExps();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Set up a new address profile.
   AutofillProfile profile;
@@ -2140,7 +2100,7 @@
        GetDetectedValues_DoNotDetectCvcIfCvcFixFlowEnabledAndNameMissing) {
   EnableAutofillUpstreamRequestCvcIfMissingAndSendDetectedValuesExps();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Set up a new address profile.
   AutofillProfile profile;
@@ -2170,7 +2130,7 @@
        GetDetectedValues_DoNotDetectCvcIfCvcFixFlowEnabledAndAddressMissing) {
   EnableAutofillUpstreamRequestCvcIfMissingAndSendDetectedValuesExps();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Set up our credit card form data.
   FormData credit_card_form;
@@ -2194,7 +2154,7 @@
 TEST_F(CreditCardSaveManagerTest, GetDetectedValues_DetectCardholderName) {
   EnableAutofillUpstreamSendDetectedValuesExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Set up our credit card form data.
   FormData credit_card_form;
@@ -2217,7 +2177,7 @@
 TEST_F(CreditCardSaveManagerTest, GetDetectedValues_DetectAddressName) {
   EnableAutofillUpstreamSendDetectedValuesExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Set up a new address profile.
   AutofillProfile profile;
@@ -2247,7 +2207,7 @@
        GetDetectedValues_DetectCardholderAndAddressNameIfMatching) {
   EnableAutofillUpstreamSendDetectedValuesExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Set up a new address profile.
   AutofillProfile profile;
@@ -2278,7 +2238,7 @@
        GetDetectedValues_DetectNoUniqueNameIfNamesConflict) {
   EnableAutofillUpstreamSendDetectedValuesExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Set up a new address profile.
   AutofillProfile profile;
@@ -2306,7 +2266,7 @@
 TEST_F(CreditCardSaveManagerTest, GetDetectedValues_DetectPostalCode) {
   EnableAutofillUpstreamSendDetectedValuesExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Set up a new address profile.
   AutofillProfile profile;
@@ -2336,7 +2296,7 @@
        GetDetectedValues_DetectNoUniquePostalCodeIfZipsConflict) {
   EnableAutofillUpstreamSendDetectedValuesExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Set up two new address profiles with conflicting postal codes.
   AutofillProfile profile1;
@@ -2368,7 +2328,7 @@
 TEST_F(CreditCardSaveManagerTest, GetDetectedValues_DetectAddressLine) {
   EnableAutofillUpstreamSendDetectedValuesExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Set up a new address profile.
   AutofillProfile profile;
@@ -2397,7 +2357,7 @@
 TEST_F(CreditCardSaveManagerTest, GetDetectedValues_DetectLocality) {
   EnableAutofillUpstreamSendDetectedValuesExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Set up a new address profile.
   AutofillProfile profile;
@@ -2426,7 +2386,7 @@
 TEST_F(CreditCardSaveManagerTest, GetDetectedValues_DetectAdministrativeArea) {
   EnableAutofillUpstreamSendDetectedValuesExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Set up a new address profile.
   AutofillProfile profile;
@@ -2455,7 +2415,7 @@
 TEST_F(CreditCardSaveManagerTest, GetDetectedValues_DetectCountryCode) {
   EnableAutofillUpstreamSendDetectedValuesExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Set up a new address profile.
   AutofillProfile profile;
@@ -2484,7 +2444,7 @@
 TEST_F(CreditCardSaveManagerTest, GetDetectedValues_DetectEverythingAtOnce) {
   EnableAutofillUpstreamSendDetectedValuesExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Set up a new address profile.
   AutofillProfile profile;
@@ -2526,7 +2486,7 @@
        GetDetectedValues_DetectSubsetOfPossibleFields) {
   EnableAutofillUpstreamSendDetectedValuesExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Set up a new address profile, taking out address line and state.
   AutofillProfile profile;
@@ -2565,7 +2525,7 @@
        GetDetectedValues_DetectAddressComponentsAcrossProfiles) {
   EnableAutofillUpstreamSendDetectedValuesExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Set up four new address profiles, each with a different address component.
   AutofillProfile profile1;
@@ -2611,7 +2571,7 @@
        UploadCreditCard_AddSendDetectedValuesFlagStateToRequestIfExperimentOn) {
   EnableAutofillUpstreamSendDetectedValuesExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Set up our credit card form data.
   FormData credit_card_form;
@@ -2629,7 +2589,7 @@
   // request.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_TRUE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded());
   EXPECT_THAT(payments_client_->GetActiveExperimentsSetInRequest(),
               UnorderedElementsAre(kAutofillUpstreamSendDetectedValues.name));
 }
@@ -2638,7 +2598,7 @@
        UploadCreditCard_LogAdditionalErrorsWithUploadDetailsFailureIfExpOn) {
   EnableAutofillUpstreamSendDetectedValuesExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Anything other than "en-US" will cause GetUploadDetails to return a failure
   // response.
@@ -2693,7 +2653,7 @@
     UploadCreditCard_ShouldOfferLocalSaveIfEverythingDetectedAndPaymentsDeclinesIfExpOn) {
   EnableAutofillUpstreamSendDetectedValuesExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Anything other than "en-US" will cause GetUploadDetails to return a failure
   // response.
@@ -2729,7 +2689,7 @@
   // prompt.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _));
   FormSubmitted(credit_card_form);
-  EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
 }
 
 TEST_F(
@@ -2737,7 +2697,7 @@
     UploadCreditCard_ShouldNotOfferLocalSaveIfSomethingNotDetectedAndPaymentsDeclinesIfExpOn) {
   EnableAutofillUpstreamSendDetectedValuesExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Anything other than "en-US" will cause GetUploadDetails to return a failure
   // response.
@@ -2770,14 +2730,14 @@
   // + address were detected, the local save prompt should not be shown either.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_FALSE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_FALSE(credit_card_save_manager_->CreditCardWasUploaded());
 }
 
 TEST_F(CreditCardSaveManagerTest,
        UploadCreditCard_PaymentsDecidesOfferToSaveIfNoCvcAndExpOn) {
   EnableAutofillUpstreamSendDetectedValuesExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Create, fill and submit an address form in order to establish a recent
   // profile which can be selected for the upload request.
@@ -2806,7 +2766,7 @@
   // save is successful.)
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_TRUE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that the correct histogram entries were logged.
   ExpectCardUploadDecision(histogram_tester, AutofillMetrics::UPLOAD_OFFERED);
@@ -2824,7 +2784,7 @@
        UploadCreditCard_PaymentsDecidesOfferToSaveIfNoNameAndExpOn) {
   EnableAutofillUpstreamSendDetectedValuesExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Create, fill and submit an address form in order to establish a recent
   // profile which can be selected for the upload request.
@@ -2854,7 +2814,7 @@
   // save is successful.)
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_TRUE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that the correct histogram entries were logged.
   ExpectCardUploadDecision(histogram_tester, AutofillMetrics::UPLOAD_OFFERED);
@@ -2872,7 +2832,7 @@
        UploadCreditCard_PaymentsDecidesOfferToSaveIfConflictingNamesAndExpOn) {
   EnableAutofillUpstreamSendDetectedValuesExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Create, fill and submit an address form in order to establish a recent
   // profile which can be selected for the upload request.
@@ -2901,7 +2861,7 @@
   // save is successful.)
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_TRUE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that the correct histogram entries were logged.
   ExpectCardUploadDecision(histogram_tester, AutofillMetrics::UPLOAD_OFFERED);
@@ -2919,7 +2879,7 @@
        UploadCreditCard_PaymentsDecidesOfferToSaveIfNoZipAndExpOn) {
   EnableAutofillUpstreamSendDetectedValuesExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Set up a new address profile without a postal code.
   AutofillProfile profile;
@@ -2950,7 +2910,7 @@
   // save is successful.)
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_TRUE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that the correct histogram entries were logged.
   ExpectCardUploadDecision(histogram_tester, AutofillMetrics::UPLOAD_OFFERED);
@@ -2968,7 +2928,7 @@
        UploadCreditCard_PaymentsDecidesOfferToSaveIfConflictingZipsAndExpOn) {
   EnableAutofillUpstreamSendDetectedValuesExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Set up two new address profiles with conflicting postal codes.
   AutofillProfile profile1;
@@ -3011,7 +2971,7 @@
   // save is successful.)
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_TRUE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that the correct histogram entries were logged.
   ExpectCardUploadDecision(histogram_tester, AutofillMetrics::UPLOAD_OFFERED);
@@ -3029,7 +2989,7 @@
        UploadCreditCard_PaymentsDecidesOfferToSaveIfNothingFoundAndExpOn) {
   EnableAutofillUpstreamSendDetectedValuesExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Set up a new address profile without a name or postal code.
   AutofillProfile profile;
@@ -3059,7 +3019,7 @@
   // save is successful.)
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_TRUE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded());
 
   // Verify that the correct histogram entries were logged.
   ExpectCardUploadDecision(histogram_tester, AutofillMetrics::UPLOAD_OFFERED);
@@ -3082,7 +3042,7 @@
 TEST_F(CreditCardSaveManagerTest,
        UploadCreditCard_DoNotAddAnyFlagStatesToRequestIfExperimentsOff) {
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Create, fill and submit an address form in order to establish a recent
   // profile which can be selected for the upload request.
@@ -3108,14 +3068,14 @@
   // request.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_TRUE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded());
   EXPECT_TRUE(payments_client_->GetActiveExperimentsSetInRequest().empty());
 }
 
 TEST_F(CreditCardSaveManagerTest, UploadCreditCard_AddPanFirstSixToRequest) {
   EnableAutofillUpstreamSendPanFirstSixExperiment();
   personal_data_.ClearProfiles();
-  credit_card_save_manager_->set_credit_card_upload_enabled(true);
+  credit_card_save_manager_->SetCreditCardUploadEnabled(true);
 
   // Create, fill and submit an address form in order to establish a recent
   // profile which can be selected for the upload request.
@@ -3141,7 +3101,7 @@
   // in the request.
   EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
   FormSubmitted(credit_card_form);
-  EXPECT_TRUE(credit_card_save_manager_->credit_card_was_uploaded());
+  EXPECT_TRUE(credit_card_save_manager_->CreditCardWasUploaded());
   EXPECT_EQ(payments_client_->GetPanFirstSixSetInRequest(), "444433");
   // Confirm that the "send pan first six" experiment flag was sent in the
   // request.
diff --git a/components/autofill/core/browser/test_credit_card_save_manager.cc b/components/autofill/core/browser/test_credit_card_save_manager.cc
new file mode 100644
index 0000000..8a855e7e
--- /dev/null
+++ b/components/autofill/core/browser/test_credit_card_save_manager.cc
@@ -0,0 +1,46 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/autofill/core/browser/test_credit_card_save_manager.h"
+
+namespace autofill {
+
+TestCreditCardSaveManager::TestCreditCardSaveManager(
+    AutofillDriver* driver,
+    AutofillClient* client,
+    payments::TestPaymentsClient* payments_client,
+    PersonalDataManager* personal_data_manager)
+    : CreditCardSaveManager(client,
+                            payments_client,
+                            "en-US",
+                            personal_data_manager),
+      test_payments_client_(payments_client) {
+  if (test_payments_client_) {
+    test_payments_client_->SetSaveDelegate(this);
+  }
+}
+
+TestCreditCardSaveManager::~TestCreditCardSaveManager() {}
+
+bool TestCreditCardSaveManager::IsCreditCardUploadEnabled() {
+  return credit_card_upload_enabled_;
+}
+
+void TestCreditCardSaveManager::SetCreditCardUploadEnabled(
+    bool credit_card_upload_enabled) {
+  credit_card_upload_enabled_ = credit_card_upload_enabled;
+}
+
+bool TestCreditCardSaveManager::CreditCardWasUploaded() {
+  return credit_card_was_uploaded_;
+}
+
+void TestCreditCardSaveManager::OnDidUploadCard(
+    AutofillClient::PaymentsRpcResult result,
+    const std::string& server_id) {
+  credit_card_was_uploaded_ = true;
+  CreditCardSaveManager::OnDidUploadCard(result, server_id);
+}
+
+}  // namespace autofill
diff --git a/components/autofill/core/browser/test_credit_card_save_manager.h b/components/autofill/core/browser/test_credit_card_save_manager.h
new file mode 100644
index 0000000..ac79087
--- /dev/null
+++ b/components/autofill/core/browser/test_credit_card_save_manager.h
@@ -0,0 +1,47 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_TEST_CREDIT_CARD_SAVE_MANAGER_H_
+#define COMPONENTS_AUTOFILL_CORE_BROWSER_TEST_CREDIT_CARD_SAVE_MANAGER_H_
+
+#include <string>
+
+#include "components/autofill/core/browser/credit_card_save_manager.h"
+#include "components/autofill/core/browser/payments/test_payments_client.h"
+
+namespace autofill {
+
+class AutofillClient;
+class AutofillDriver;
+class PersonalDataManager;
+
+class TestCreditCardSaveManager : public CreditCardSaveManager {
+ public:
+  TestCreditCardSaveManager(AutofillDriver* driver,
+                            AutofillClient* client,
+                            payments::TestPaymentsClient* payments_client,
+                            PersonalDataManager* personal_data_manager);
+  ~TestCreditCardSaveManager() override;
+
+  bool IsCreditCardUploadEnabled() override;
+
+  void SetCreditCardUploadEnabled(bool credit_card_upload_enabled);
+
+  // Returns whether OnDidUploadCard() was called.
+  bool CreditCardWasUploaded();
+
+ private:
+  void OnDidUploadCard(AutofillClient::PaymentsRpcResult result,
+                       const std::string& server_id) override;
+
+  payments::TestPaymentsClient* test_payments_client_;  // Weak reference.
+  bool credit_card_upload_enabled_ = false;
+  bool credit_card_was_uploaded_ = false;
+
+  DISALLOW_COPY_AND_ASSIGN(TestCreditCardSaveManager);
+};
+
+}  // namespace autofill
+
+#endif  // COMPONENTS_AUTOFILL_CORE_BROWSER_TEST_CREDIT_CARD_SAVE_MANAGER_H_
diff --git a/components/offline_pages/core/model/create_archive_task.cc b/components/offline_pages/core/model/create_archive_task.cc
index e132b39f..4258913 100644
--- a/components/offline_pages/core/model/create_archive_task.cc
+++ b/components/offline_pages/core/model/create_archive_task.cc
@@ -19,13 +19,12 @@
     const base::FilePath& archives_dir,
     const OfflinePageModel::SavePageParams& save_page_params,
     OfflinePageArchiver* archiver,
-    base::Clock* clock,
     const CreateArchiveTaskCallback& callback)
     : archives_dir_(archives_dir),
       save_page_params_(save_page_params),
       archiver_(archiver),
       callback_(callback),
-      clock_(clock),
+      clock_(new base::DefaultClock()),
       skip_clearing_original_url_for_testing_(false) {
   DCHECK(!callback_.is_null());
 }
diff --git a/components/offline_pages/core/model/create_archive_task.h b/components/offline_pages/core/model/create_archive_task.h
index d87cdd12..2ac77cb 100644
--- a/components/offline_pages/core/model/create_archive_task.h
+++ b/components/offline_pages/core/model/create_archive_task.h
@@ -58,13 +58,16 @@
   CreateArchiveTask(const base::FilePath& archives_dir,
                     const OfflinePageModel::SavePageParams& save_page_params,
                     OfflinePageArchiver* archiver,
-                    base::Clock* clock,
                     const CreateArchiveTaskCallback& callback);
   ~CreateArchiveTask() override;
 
   // Task implementation.
   void Run() override;
 
+  void set_clock_for_testing(std::unique_ptr<base::Clock> clock) {
+    clock_ = std::move(clock);
+  }
+
   void set_skip_clearing_original_url_for_testing() {
     skip_clearing_original_url_for_testing_ = true;
   }
@@ -80,9 +83,7 @@
   // The archiver used in the task. Not owned.
   OfflinePageArchiver* archiver_;
   CreateArchiveTaskCallback callback_;
-  // The clock for getting timestamps. Owned by OfflinePageModelTaskified.
-  // Since this task is also owned by the model, they'll be torn down together.
-  base::Clock* clock_;
+  std::unique_ptr<base::Clock> clock_;
 
   bool skip_clearing_original_url_for_testing_;
 
diff --git a/components/offline_pages/core/model/create_archive_task_unittest.cc b/components/offline_pages/core/model/create_archive_task_unittest.cc
index 8852f1b..920ac4c 100644
--- a/components/offline_pages/core/model/create_archive_task_unittest.cc
+++ b/components/offline_pages/core/model/create_archive_task_unittest.cc
@@ -8,7 +8,6 @@
 #include "base/files/scoped_temp_dir.h"
 #include "base/memory/weak_ptr.h"
 #include "base/strings/utf_string_conversions.h"
-#include "base/test/simple_test_clock.h"
 #include "base/test/test_simple_task_runner.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "components/offline_pages/core/offline_page_item.h"
@@ -99,7 +98,6 @@
   scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
   base::ThreadTaskRunnerHandle task_runner_handle_;
   base::ScopedTempDir temp_dir_;
-  std::unique_ptr<base::Clock> clock_;
 
   OfflinePageItem last_page_of_archive_;
   OfflinePageArchiver* last_saved_archiver_;
@@ -123,7 +121,6 @@
 CreateArchiveTaskTest::~CreateArchiveTaskTest() {}
 
 void CreateArchiveTaskTest::SetUp() {
-  clock_.reset(new base::SimpleTestClock);
   ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
 }
 
@@ -176,7 +173,7 @@
     const SavePageParams& save_page_params,
     OfflinePageArchiver* archiver) {
   task_ = base::MakeUnique<CreateArchiveTask>(
-      archives_dir(), save_page_params, archiver, clock_.get(),
+      archives_dir(), save_page_params, archiver,
       base::Bind(&CreateArchiveTaskTest::OnCreateArchiveDone, AsWeakPtr()));
   task_->Run();
   PumpLoop();
diff --git a/components/offline_pages/core/model/delete_page_task.cc b/components/offline_pages/core/model/delete_page_task.cc
index 6c50521..97011a7 100644
--- a/components/offline_pages/core/model/delete_page_task.cc
+++ b/components/offline_pages/core/model/delete_page_task.cc
@@ -317,7 +317,7 @@
   }
 
   // Since the page information was selected by ascending order of last access
-  // time, only the first |size - limit| pages needs to be deleted.
+  // time, only the first |size - limit + 1| pages needs to be deleted.
   int page_to_delete = info_wrappers.size() - limit;
   if (page_to_delete < 0)
     page_to_delete = 0;
diff --git a/components/offline_pages/core/model/offline_page_model_taskified.cc b/components/offline_pages/core/model/offline_page_model_taskified.cc
index ed44f29..341f034 100644
--- a/components/offline_pages/core/model/offline_page_model_taskified.cc
+++ b/components/offline_pages/core/model/offline_page_model_taskified.cc
@@ -125,9 +125,8 @@
     : store_(std::move(store)),
       archive_manager_(std::move(archive_manager)),
       policy_controller_(new ClientPolicyController()),
-      clock_(std::move(clock)),
       task_queue_(this),
-      skip_clearing_original_url_for_testing_(false),
+      clock_(std::move(clock)),
       weak_ptr_factory_(this) {
   CreateArchivesDirectoryIfNeeded();
   PostClearLegacyTemporaryPagesTask();
@@ -155,11 +154,9 @@
     const SavePageCallback& callback) {
   auto task = base::MakeUnique<CreateArchiveTask>(
       GetArchiveDirectory(save_page_params.client_id.name_space),
-      save_page_params, archiver.get(), clock_.get(),
+      save_page_params, archiver.get(),
       base::Bind(&OfflinePageModelTaskified::OnCreateArchiveDone,
                  weak_ptr_factory_.GetWeakPtr(), callback));
-  if (skip_clearing_original_url_for_testing_)
-    task->set_skip_clearing_original_url_for_testing();
   pending_archivers_.push_back(std::move(archiver));
   task_queue_.AddTask(std::move(task));
 }
diff --git a/components/offline_pages/core/model/offline_page_model_taskified.h b/components/offline_pages/core/model/offline_page_model_taskified.h
index bf8cd7b..f9f0cb6 100644
--- a/components/offline_pages/core/model/offline_page_model_taskified.h
+++ b/components/offline_pages/core/model/offline_page_model_taskified.h
@@ -131,12 +131,6 @@
 
   // Methods for testing only:
   OfflinePageMetadataStoreSQL* GetStoreForTesting() { return store_.get(); }
-  void SetClockForTesting(std::unique_ptr<base::Clock> clock) {
-    clock_ = std::move(clock);
-  }
-  void SetSkipClearingOriginalUrlForTesting() {
-    skip_clearing_original_url_for_testing_ = true;
-  }
 
  private:
   // TODO(romax): https://crbug.com/791115, remove the friend class usage.
@@ -214,23 +208,18 @@
   // destructed after the |task_queue_|.
   std::vector<std::unique_ptr<OfflinePageArchiver>> pending_archivers_;
 
-  // Clock for testing only.
-  std::unique_ptr<base::Clock> clock_;
+  // The task queue used for executing various tasks.
+  TaskQueue task_queue_;
 
   // Logger to facilitate recording of events.
   OfflinePageModelEventLogger offline_event_logger_;
 
-  // The task queue used for executing various tasks.
-  TaskQueue task_queue_;
-
   // Time of when the most recent cached pages clearing happened. The value will
   // not persist across Chrome restarts.
   base::Time last_clear_cached_pages_time_;
 
-  // For testing only.
-  // This value will be affecting the CreateArchiveTasks that are created by the
-  // model to skip saving original_urls.
-  bool skip_clearing_original_url_for_testing_;
+  // Clock for testing only.
+  std::unique_ptr<base::Clock> clock_;
 
   base::WeakPtrFactory<OfflinePageModelTaskified> weak_ptr_factory_;
 
@@ -239,4 +228,4 @@
 
 }  // namespace offline_pages
 
-#endif  // COMPONENTS_OFFLINE_PAGES_CORE_MODEL_OFFLINE_PAGE_MODEL_TASKIFIED_H_
+#endif  // COMPONENTS_OFFLINE_PAGES_CORE_MODEL_OFFLINE_PAGE_MODEL_IMPL_TASKIFIED_H_