diff options
Diffstat (limited to 'components/favicon_base/fallback_icon_url_parser.h')
-rw-r--r-- | components/favicon_base/fallback_icon_url_parser.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/components/favicon_base/fallback_icon_url_parser.h b/components/favicon_base/fallback_icon_url_parser.h new file mode 100644 index 0000000..5d5971e8 --- /dev/null +++ b/components/favicon_base/fallback_icon_url_parser.h @@ -0,0 +1,72 @@ +// Copyright 2015 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_FAVICON_BASE_FALLBACK_ICON_URL_PARSER_H_ +#define COMPONENTS_FAVICON_BASE_FALLBACK_ICON_URL_PARSER_H_ + +#include <string> + +#include "base/gtest_prod_util.h" +#include "base/macros.h" +#include "components/favicon_base/fallback_icon_style.h" +#include "third_party/skia/include/core/SkColor.h" + +namespace chrome { + +class ParsedFallbackIconPath { + public: + ParsedFallbackIconPath(); + ~ParsedFallbackIconPath(); + + const std::string& url_string() const { return url_string_; } + + int size_in_pixels() const { return size_in_pixels_; } + + const favicon_base::FallbackIconStyle& style() const { return style_; } + + size_t path_index() const { return path_index_; } + + // Parses |path|, which should be in the format described at the top of the + // file "chrome/browser/ui/webui/fallback_icon_source.h". + bool Parse(const std::string& path); + + private: + // Parses |specs_str|, which should be the comma-separated value portion + // in the format described at the top of the file + // "chrome/browser/ui/webui/fallback_icon_source.h". + static bool ParseSpecs(const std::string& specs_str, + int *size, + favicon_base::FallbackIconStyle* style); + + // Helper to parse color string (e.g., "red", "#f00", "#aB0137"). On success, + // returns true and writes te result to |*color|. + static bool ParseColor(const std::string& color_str, SkColor* color); + + friend class FallbackIconUrlParserTest; + FRIEND_TEST_ALL_PREFIXES(FallbackIconUrlParserTest, ParseColorSuccess); + FRIEND_TEST_ALL_PREFIXES(FallbackIconUrlParserTest, ParseColorFailure); + FRIEND_TEST_ALL_PREFIXES(FallbackIconUrlParserTest, ParseSpecsEmpty); + FRIEND_TEST_ALL_PREFIXES(FallbackIconUrlParserTest, ParseSpecsPartial); + FRIEND_TEST_ALL_PREFIXES(FallbackIconUrlParserTest, ParseSpecsFull); + FRIEND_TEST_ALL_PREFIXES(FallbackIconUrlParserTest, ParseSpecsFailure); + + // The page URL string the fallback icon is requested for. + std::string url_string_; + + // The size of the requested fallback icon in pixels. + int size_in_pixels_; + + // Styling specifications of fallback icon. + favicon_base::FallbackIconStyle style_; + + // The index of the first character (relative to the path) where the the URL + // from which the fallback icon is being requested is located. + size_t path_index_; + + DISALLOW_COPY_AND_ASSIGN(ParsedFallbackIconPath); +}; + +} // namespace chrome + +#endif // COMPONENTS_FAVICON_BASE_FALLBACK_ICON_URL_PARSER_H_ |