blob: 895f0f8446ae334497bca5b74ee31b86b44ffe76 [file] [log] [blame]
// 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_