// Copyright 2020 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 THIRD_PARTY_BLINK_RENDERER_CORE_FEATURE_POLICY_DOCUMENT_POLICY_PARSER_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_FEATURE_POLICY_DOCUMENT_POLICY_PARSER_H_

#include "third_party/blink/public/common/feature_policy/document_policy.h"
#include "third_party/blink/public/common/feature_policy/document_policy_features.h"
#include "third_party/blink/renderer/core/core_export.h"
#include "third_party/blink/renderer/core/feature_policy/policy_helper.h"

namespace blink {

class CORE_EXPORT DocumentPolicyParser {
  STATIC_ONLY(DocumentPolicyParser);

 public:
  // Parse document policy header and 'policy' attribute on iframe to
  // DocumentPolicy::FeatureState.
  static base::Optional<DocumentPolicy::ParsedDocumentPolicy> Parse(
      const String& policy_string,
      PolicyParserMessageBuffer&);

  // Internal parsing method for testing.
  static base::Optional<DocumentPolicy::ParsedDocumentPolicy> ParseInternal(
      const String& policy_string,
      const DocumentPolicyNameFeatureMap& name_feature_map,
      const DocumentPolicyFeatureInfoMap& feature_info_map,
      const DocumentPolicyFeatureSet& available_features,
      PolicyParserMessageBuffer&);
};
}  // namespace blink

#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_FEATURE_POLICY_DOCUMENT_POLICY_PARSER_H_
