blob: b85ab87f5697a1944821825eae71a48311939abc [file] [log] [blame]
// 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_PAYMENTS_CONTENT_CONTENT_PAYMENT_REQUEST_DELEGATE_H_
#define COMPONENTS_PAYMENTS_CONTENT_CONTENT_PAYMENT_REQUEST_DELEGATE_H_
#include <string>
#include "components/payments/content/payment_request_display_manager.h"
#include "components/payments/core/payment_request_delegate.h"
template <class T>
class scoped_refptr;
namespace payments {
class PaymentManifestWebDataService;
class PaymentRequestDisplayManager;
// The delegate for PaymentRequest that can use content.
class ContentPaymentRequestDelegate : public PaymentRequestDelegate {
public:
~ContentPaymentRequestDelegate() override {}
// Returns the web data service for caching payment method manifests.
virtual scoped_refptr<PaymentManifestWebDataService>
GetPaymentManifestWebDataService() const = 0;
// Returns the PaymentRequestDisplayManager associated with this
// PaymentRequest's BrowserContext.
virtual PaymentRequestDisplayManager* GetDisplayManager() = 0;
// Embed the content of the web page at |url| passed through
// PaymentRequestEvent.openWindow inside the current Payment Request UI
// surface. |callback| is invoked after navigation is completed, passing
// true/false to indicate success/failure.
virtual void EmbedPaymentHandlerWindow(
const GURL& url,
PaymentHandlerOpenWindowCallback callback) = 0;
// Returns whether user interaction is enabled. (False when showing a
// spinner.)
virtual bool IsInteractive() const = 0;
// Returns a developer-facing error message for invalid SSL certificate state
// or an empty string when the SSL certificate is valid. Only EV_SECURE,
// SECURE, and SECURE_WITH_POLICY_INSTALLED_CERT are considered valid for web
// payments, unless --ignore-certificate-errors is specified on the command
// line.
//
// The |web_contents| parameter should not be null. A null |web_contents|
// parameter will return an "Invalid certificate" error message.
virtual std::string GetInvalidSslCertificateErrorMessage() = 0;
// Returns whether the UI should be skipped for a "basic-card" scenario. This
// will only be true in tests.
virtual bool SkipUiForBasicCard() const = 0;
};
} // namespace payments
#endif // COMPONENTS_PAYMENTS_CONTENT_CONTENT_PAYMENT_REQUEST_DELEGATE_H_