| // 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_URL_PATTERN_INDEX_URL_RULE_TEST_SUPPORT_H_ |
| #define COMPONENTS_URL_PATTERN_INDEX_URL_RULE_TEST_SUPPORT_H_ |
| |
| #include <string> |
| #include <vector> |
| |
| #include "base/strings/string_piece.h" |
| #include "components/url_pattern_index/proto/rules.pb.h" |
| #include "components/url_pattern_index/url_pattern.h" |
| |
| class GURL; |
| |
| namespace url { |
| class Origin; |
| } |
| |
| namespace url_pattern_index { |
| namespace testing { |
| |
| // Constants ------------------------------------------------------------------- |
| |
| constexpr proto::UrlPatternType kSubstring = proto::URL_PATTERN_TYPE_SUBSTRING; |
| |
| constexpr proto::AnchorType kAnchorNone = proto::ANCHOR_TYPE_NONE; |
| constexpr proto::AnchorType kBoundary = proto::ANCHOR_TYPE_BOUNDARY; |
| constexpr proto::AnchorType kSubdomain = proto::ANCHOR_TYPE_SUBDOMAIN; |
| |
| constexpr proto::ElementType kNoElement = proto::ELEMENT_TYPE_UNSPECIFIED; |
| constexpr proto::ElementType kOther = proto::ELEMENT_TYPE_OTHER; |
| constexpr proto::ElementType kScript = proto::ELEMENT_TYPE_SCRIPT; |
| constexpr proto::ElementType kImage = proto::ELEMENT_TYPE_IMAGE; |
| constexpr proto::ElementType kSubdocument = proto::ELEMENT_TYPE_SUBDOCUMENT; |
| constexpr proto::ElementType kFont = proto::ELEMENT_TYPE_FONT; |
| constexpr proto::ElementType kPopup = proto::ELEMENT_TYPE_POPUP; |
| constexpr proto::ElementType kWebSocket = proto::ELEMENT_TYPE_WEBSOCKET; |
| constexpr proto::ElementType kAllElementTypes = proto::ELEMENT_TYPE_ALL; |
| |
| constexpr proto::ActivationType kNoActivation = |
| proto::ACTIVATION_TYPE_UNSPECIFIED; |
| constexpr proto::ActivationType kDocument = proto::ACTIVATION_TYPE_DOCUMENT; |
| constexpr proto::ActivationType kGenericBlock = |
| proto::ACTIVATION_TYPE_GENERICBLOCK; |
| |
| constexpr proto::SourceType kAnyParty = proto::SOURCE_TYPE_ANY; |
| constexpr proto::SourceType kThirdParty = proto::SOURCE_TYPE_THIRD_PARTY; |
| constexpr proto::SourceType kFirstParty = proto::SOURCE_TYPE_FIRST_PARTY; |
| |
| // Helpers --------------------------------------------------------------------- |
| |
| // Creates a UrlRule with the given |url_pattern|, and all necessary fields |
| // initialized to defaults. |
| proto::UrlRule MakeUrlRule(const UrlPattern& url_pattern = UrlPattern()); |
| |
| // Parses |domains| and adds them to the domain list of the |rule|. |
| // |
| // The |domains| vector should contain non-empty strings. If a string starts |
| // with '~' then the following part of the string is an exception domain. |
| void AddDomains(const std::vector<std::string>& domains, proto::UrlRule* rule); |
| |
| // Returns the url::Origin parsed from |origin_string|, or the unique origin if |
| // the string is empty. |
| url::Origin GetOrigin(base::StringPiece origin_string); |
| |
| // Returns whether |url| is third-party resource w.r.t. |first_party_origin|. |
| bool IsThirdParty(const GURL& url, const url::Origin& first_party_origin); |
| |
| } // namespace testing |
| } // namespace url_pattern_index |
| |
| #endif // COMPONENTS_URL_PATTERN_INDEX_URL_RULE_TEST_SUPPORT_H_ |