// Copyright 2017 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_PAYMENTS_CONTENT_UTILITY_PAYMENT_MANIFEST_PARSER_H_ #define COMPONENTS_PAYMENTS_CONTENT_UTILITY_PAYMENT_MANIFEST_PARSER_H_ #include <stdint.h> #include <memory> #include <string> #include <vector> #include "base/functional/callback_forward.h" #include "base/memory/weak_ptr.h" #include "base/values.h" #include "components/payments/content/web_app_manifest.h" #include "services/data_decoder/public/cpp/data_decoder.h" #include "url/gurl.h" #include "url/origin.h" namespace payments { class ErrorLogger; // Parser for payment method manifests and web app manifests. // // Example 1 of valid payment method manifest structure: // // { // "default_applications": ["payment-app.json"], // "supported_origins": ["https://alicepay.com"] // } // // Example 2 of valid payment method manifest structure: // // { // "default_applications": ["payment-app.json"], // "supported_origins": "*" // } // // Example valid web app manifest structure: // // { // "name": "bobpay", // "serviceworker": { // "src": "bobpay.js", // "scope": "/pay", // "use_cache": false // }, // "icons": [{ // "src": "icon/bobpay.png", // "sizes": "48x48", // "type": "image/png" // },{ // "src": "icon/lowres", // "sizes": "48x48" // }], // "related_applications": [{ // "platform": "play", // "id": "com.bobpay.app", // "min_version": "1", // "fingerprint": [{ // "type": "sha256_cert", // "value": "91:5C:88:65:FF:C4:E8:20:CF:F7:3E:C8:64:D0:95:F0:06:19:2E:A6" // }] // }] // } // // Specs: // https://developers.google.com/web/fundamentals/payments/payment-apps-developer-guide/web-payment-apps // https://developers.google.com/web/fundamentals/payments/payment-apps-developer-guide/android-payment-apps // https://w3c.github.io/payment-method-manifest/ // https://w3c.github.io/manifest/ // // Note the JSON parsing is done using the DataDecoder (either OOP or in a safe // environment). // // The command line must be initialized to use this class in tests, because it // checks for --unsafely-treat-insecure-origin-as-secure=<origin> flag. For // example: // base::CommandLine::Init(0, nullptr); class PaymentManifestParser { … }; } // namespace payments #endif // COMPONENTS_PAYMENTS_CONTENT_UTILITY_PAYMENT_MANIFEST_PARSER_H_