| // Copyright 2019 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef COMPONENTS_OPTIMIZATION_GUIDE_CORE_HINTS_PROCESSING_UTIL_H_ |
| #define COMPONENTS_OPTIMIZATION_GUIDE_CORE_HINTS_PROCESSING_UTIL_H_ |
| |
| #include <string> |
| |
| #include "components/optimization_guide/proto/hints.pb.h" |
| #include "net/nqe/effective_connection_type.h" |
| |
| class GURL; |
| |
| namespace optimization_guide { |
| |
| // Returns the string representation of the optimization type. |
| std::string GetStringNameForOptimizationType( |
| proto::OptimizationType optimization_type); |
| |
| // Returns the matching PageHint for |gurl| if found in |hint|. |
| const proto::PageHint* FindPageHintForURL(const GURL& gurl, |
| const proto::Hint* hint); |
| |
| // The host is hashed and returned as a string because |
| // base::Value(base::Value::Type::DICTIONARY) only accepts strings as keys. |
| // Note, some hash collisions could occur on hosts. For querying the blocklist, |
| // collisions are acceptable as they would only block additional hosts. For |
| // updating the blocklist, a collision would enable a site that should remain on |
| // the blocklist. However, the likelihood of a collision for the number of hosts |
| // allowed in the blocklist is practically zero. |
| std::string HashHostForDictionary(const std::string& host); |
| |
| // Converts |proto_ect| into a net::EffectiveConnectionType. |
| net::EffectiveConnectionType ConvertProtoEffectiveConnectionType( |
| proto::EffectiveConnectionType proto_ect); |
| |
| // Validates a URL used for URL-keyed hints. |
| bool IsValidURLForURLKeyedHint(const GURL& url); |
| |
| } // namespace optimization_guide |
| |
| #endif // COMPONENTS_OPTIMIZATION_GUIDE_CORE_HINTS_PROCESSING_UTIL_H_ |