| Index: content/browser/payments/payment_app_content_unittest_base.cc | 
| diff --git a/content/browser/payments/payment_app_content_unittest_base.cc b/content/browser/payments/payment_app_content_unittest_base.cc | 
| index 38ffa37a5d8351e742736eb6ec8778d809d583bb..cee7dc49cb261de404f3cf3b32c1057c5f5165e9 100644 | 
| --- a/content/browser/payments/payment_app_content_unittest_base.cc | 
| +++ b/content/browser/payments/payment_app_content_unittest_base.cc | 
| @@ -15,6 +15,7 @@ | 
| #include "content/browser/service_worker/embedded_worker_test_helper.h" | 
| #include "content/browser/service_worker/service_worker_context_wrapper.h" | 
| #include "content/browser/storage_partition_impl.h" | 
| +#include "content/common/service_worker/service_worker_event_dispatcher.mojom.h" | 
| #include "content/common/service_worker/service_worker_status_code.h" | 
| #include "content/public/test/test_browser_context.h" | 
| #include "content/public/test/test_browser_thread_bundle.h" | 
| @@ -41,21 +42,69 @@ void UnregisterServiceWorkerCallback(bool* called, | 
|  | 
| }  // namespace | 
|  | 
| +class PaymentAppContentUnitTestBase::PaymentAppForWorkerTestHelper | 
| +    : public EmbeddedWorkerTestHelper { | 
| + public: | 
| +  PaymentAppForWorkerTestHelper() | 
| +      : EmbeddedWorkerTestHelper(base::FilePath()), | 
| +        was_dispatched_(false), | 
| +        last_sw_registration_id_(kInvalidServiceWorkerRegistrationId) {} | 
| +  ~PaymentAppForWorkerTestHelper() override {} | 
| + | 
| +  void OnStartWorker( | 
| +      int embedded_worker_id, | 
| +      int64_t service_worker_version_id, | 
| +      const GURL& scope, | 
| +      const GURL& script_url, | 
| +      bool pause_after_download, | 
| +      mojom::ServiceWorkerEventDispatcherRequest request) override { | 
| +    ServiceWorkerVersion* version = | 
| +        context()->GetLiveVersion(service_worker_version_id); | 
| +    version->SetMainScriptHttpResponseInfo( | 
| +        EmbeddedWorkerTestHelper::CreateHttpResponseInfo()); | 
| +    last_sw_registration_id_ = version->registration_id(); | 
| +    last_sw_scope_ = scope; | 
| +    EmbeddedWorkerTestHelper::OnStartWorker( | 
| +        embedded_worker_id, service_worker_version_id, scope, script_url, | 
| +        pause_after_download, std::move(request)); | 
| +  } | 
| + | 
| +  void OnPaymentRequestEvent( | 
| +      payments::mojom::PaymentAppRequestDataPtr data, | 
| +      const mojom::ServiceWorkerEventDispatcher:: | 
| +          DispatchPaymentRequestEventCallback& callback) override { | 
| +    ASSERT_FALSE(was_dispatched_); | 
| +    EmbeddedWorkerTestHelper::OnPaymentRequestEvent(std::move(data), callback); | 
| +    was_dispatched_ = true; | 
| +  } | 
| + | 
| +  bool was_dispatched_; | 
| +  int64_t last_sw_registration_id_; | 
| +  GURL last_sw_scope_; | 
| + | 
| + private: | 
| +  DISALLOW_COPY_AND_ASSIGN(PaymentAppForWorkerTestHelper); | 
| +}; | 
| + | 
| PaymentAppContentUnitTestBase::PaymentAppContentUnitTestBase() | 
| : thread_bundle_( | 
| new TestBrowserThreadBundle(TestBrowserThreadBundle::IO_MAINLOOP)), | 
| -      embedded_worker_helper_(new EmbeddedWorkerTestHelper(base::FilePath())) { | 
| -  embedded_worker_helper_->context_wrapper()->set_storage_partition( | 
| -      storage_partition()); | 
| -  payment_app_context()->Init(embedded_worker_helper_->context_wrapper()); | 
| +      worker_helper_(new PaymentAppForWorkerTestHelper()) { | 
| +  worker_helper_->context_wrapper()->set_storage_partition(storage_partition()); | 
| +  storage_partition()->service_worker_context_->Shutdown(); | 
| +  base::RunLoop().RunUntilIdle(); | 
| + | 
| +  storage_partition()->service_worker_context_ = | 
| +      worker_helper_->context_wrapper(); | 
| +  payment_app_context()->Init(worker_helper_->context_wrapper()); | 
| base::RunLoop().RunUntilIdle(); | 
| } | 
|  | 
| PaymentAppContentUnitTestBase::~PaymentAppContentUnitTestBase() {} | 
|  | 
| BrowserContext* PaymentAppContentUnitTestBase::browser_context() { | 
| -  DCHECK(embedded_worker_helper_); | 
| -  return embedded_worker_helper_->browser_context(); | 
| +  DCHECK(worker_helper_); | 
| +  return worker_helper_->browser_context(); | 
| } | 
|  | 
| PaymentAppManager* PaymentAppContentUnitTestBase::CreatePaymentAppManager( | 
| @@ -63,7 +112,7 @@ PaymentAppManager* PaymentAppContentUnitTestBase::CreatePaymentAppManager( | 
| const GURL& sw_script_url) { | 
| // Register service worker for payment app manager. | 
| bool called = false; | 
| -  embedded_worker_helper_->context()->RegisterServiceWorker( | 
| +  worker_helper_->context()->RegisterServiceWorker( | 
| scope_url, sw_script_url, nullptr, | 
| base::Bind(&RegisterServiceWorkerCallback, &called)); | 
| base::RunLoop().RunUntilIdle(); | 
| @@ -142,12 +191,28 @@ void PaymentAppContentUnitTestBase::UnregisterServiceWorker( | 
| const GURL& scope_url) { | 
| // Unregister service worker. | 
| bool called = false; | 
| -  embedded_worker_helper_->context()->UnregisterServiceWorker( | 
| +  worker_helper_->context()->UnregisterServiceWorker( | 
| scope_url, base::Bind(&UnregisterServiceWorkerCallback, &called)); | 
| base::RunLoop().RunUntilIdle(); | 
| EXPECT_TRUE(called); | 
| } | 
|  | 
| +void PaymentAppContentUnitTestBase::ResetPaymentAppInvoked() const { | 
| +  worker_helper_->was_dispatched_ = false; | 
| +} | 
| + | 
| +bool PaymentAppContentUnitTestBase::payment_app_invoked() const { | 
| +  return worker_helper_->was_dispatched_; | 
| +} | 
| + | 
| +int64_t PaymentAppContentUnitTestBase::last_sw_registration_id() const { | 
| +  return worker_helper_->last_sw_registration_id_; | 
| +} | 
| + | 
| +const GURL& PaymentAppContentUnitTestBase::last_sw_scope_url() const { | 
| +  return worker_helper_->last_sw_scope_; | 
| +} | 
| + | 
| StoragePartitionImpl* PaymentAppContentUnitTestBase::storage_partition() { | 
| return static_cast<StoragePartitionImpl*>( | 
| BrowserContext::GetDefaultStoragePartition(browser_context())); | 
|  |