blob: dc730b75d66408bbfa79b68b36ec1d683972c716 [file] [log] [blame]
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/test/payments/payment_request_platform_browsertest_base.h"
#include "content/public/test/browser_test.h"
namespace payments {
namespace {
class PaymentHandlerUninstallTest
: public PaymentRequestPlatformBrowserTestBase {
protected:
PaymentHandlerUninstallTest() = default;
~PaymentHandlerUninstallTest() override = default;
void SetUpOnMainThread() override {
PaymentRequestPlatformBrowserTestBase::SetUpOnMainThread();
NavigateTo("a.com", "/payment_handler.html");
}
};
IN_PROC_BROWSER_TEST_F(PaymentHandlerUninstallTest, URLBasedPaymentMethod) {
std::string method_name;
InstallPaymentApp("a.com", "/payment_handler_sw.js", &method_name);
// Launch the payment request and confirm checkout completion.
ResetEventWaiterForSingleEvent(TestEvent::kPaymentCompleted);
EXPECT_EQ("success",
content::EvalJs(GetActiveWebContents(),
content::JsReplace("launch($1)", method_name)));
WaitForObservedEvent();
// Uninstall the payment app and verify that a new request.show() gets
// rejected after the app uninstallation.
EXPECT_EQ("success",
content::EvalJs(
GetActiveWebContents(),
content::JsReplace("uninstall($1)",
https_server()->GetURL(
"a.com", "/payment_handler_sw.js"))));
ResetEventWaiterForSingleEvent(TestEvent::kNotSupportedError);
EXPECT_EQ(
"success",
content::EvalJs(
GetActiveWebContents(),
content::JsReplace("launchWithoutWaitForResponse($1)", method_name)));
WaitForObservedEvent();
}
} // namespace
} // namespace payments