blob: c9e5cbf7b9e7668216458e525fb87904509b2b18 [file] [log] [blame]
// Copyright 2014 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 MediaListDirective_h
#define MediaListDirective_h
#include "core/frame/csp/CSPDirective.h"
#include "platform/network/ContentSecurityPolicyParsers.h"
#include "wtf/HashSet.h"
#include "wtf/text/WTFString.h"
namespace blink {
class ContentSecurityPolicy;
class CORE_EXPORT MediaListDirective final : public CSPDirective {
WTF_MAKE_NONCOPYABLE(MediaListDirective);
public:
MediaListDirective(const String& name,
const String& value,
ContentSecurityPolicy*);
bool allows(const String& type);
// The algorothm is described more extensively here:
// https://w3c.github.io/webappsec-csp/embedded/#subsume-policy.
bool subsumes(const std::vector<MediaListDirective*>& other);
private:
FRIEND_TEST_ALL_PREFIXES(MediaListDirectiveTest, GetIntersect);
FRIEND_TEST_ALL_PREFIXES(MediaListDirectiveTest, Subsumes);
void parse(const UChar* begin, const UChar* end);
// The algorothm is described more extensively here:
// https://w3c.github.io/webappsec-csp/embedded/#subsume-policy.
HashSet<String> getIntersect(const HashSet<String>& other);
HashSet<String> m_pluginTypes;
};
} // namespace blink
#endif