// Copyright 2020 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 THIRD_PARTY_MOZILLA_URL_PARSE_INTERNAL_H_ #define THIRD_PARTY_MOZILLA_URL_PARSE_INTERNAL_H_ namespace openscreen { struct Component; static constexpr char kHttpsScheme[] = "https"; static constexpr char kHttpScheme[] = "http"; static constexpr char kFileScheme[] = "file"; static constexpr char kFtpScheme[] = "ftp"; static constexpr char kWssScheme[] = "wss"; static constexpr char kWsScheme[] = "ws"; static constexpr char kFileSystemScheme[] = "filesystem"; static constexpr char kMailtoScheme[] = "mailto"; // Returns whether the character |ch| should be treated as a slash. bool IsURLSlash(char ch); // Returns whether the character |ch| can be safely removed for the URL. bool ShouldTrimFromURL(char ch); // Given an already-initialized begin index and length, this shrinks the range // to eliminate "should-be-trimmed" characters. Note that the length does *not* // indicate the length of untrimmed data from |*begin|, but rather the position // in the input string (so the string starts at character |*begin| in the spec, // and goes until |*len|). void TrimURL(const char* spec, int* begin, int* len, bool trim_path_end = true); // Returns the number of consecutive slashes in |str| starting from offset // |begin_offset|. int CountConsecutiveSlashes(const char* str, int begin_offset, int str_len); // Given a string and a range inside the string, compares it to the given // lower-case |compare_to| buffer. bool CompareSchemeComponent(const char* spec, const Component& component, const char* compare_to); // Returns whether the scheme given by (spec, component) is a standard scheme // (i.e. https://url.spec.whatwg.org/#special-scheme). bool IsStandard(const char* spec, const Component& component); } // namespace openscreen #endif // THIRD_PARTY_MOZILLA_URL_PARSE_INTERNAL_H_