|  | // 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_ |