Index: chrome/common/favicon/favicon_url_parser_unittest.cc |
diff --git a/chrome/common/favicon/favicon_url_parser_unittest.cc b/chrome/common/favicon/favicon_url_parser_unittest.cc |
index 6077b7ea32d68bfd72cb7a8b93f6d080abf93155..d53f631953badb4d89877995b0193594f88cbd4d 100644 |
--- a/chrome/common/favicon/favicon_url_parser_unittest.cc |
+++ b/chrome/common/favicon/favicon_url_parser_unittest.cc |
@@ -5,10 +5,13 @@ |
#include "chrome/common/favicon/favicon_url_parser.h" |
#include "base/memory/scoped_ptr.h" |
+#include "components/favicon_base/fallback_icon_specs.h" |
#include "components/favicon_base/favicon_types.h" |
#include "testing/gtest/include/gtest/gtest.h" |
#include "ui/base/layout.h" |
+using favicon_base::FallbackIconSpecs; |
+ |
class FaviconUrlParserTest : public testing::Test { |
public: |
FaviconUrlParserTest() { |
@@ -43,6 +46,7 @@ TEST_F(FaviconUrlParserTest, ParsingNoExtraParams) { |
EXPECT_EQ(url, parsed.url); |
EXPECT_EQ(16, parsed.size_in_dip); |
EXPECT_EQ(1.0f, parsed.device_scale_factor); |
+ EXPECT_FALSE(parsed.fallback_specs); |
} |
// Test parsing path with a 'size' parameter. |
@@ -163,3 +167,46 @@ TEST_F(FaviconUrlParserTest, ParsingSizeParamAndUrlModifier) { |
EXPECT_EQ("http://www.google.com/favicon.ico", parsed.url); |
EXPECT_EQ(0, parsed.size_in_dip); |
} |
+ |
+// Test parsing path with a 'fallback' parameter. |
+TEST_F(FaviconUrlParserTest, ParsingFallbackParam) { |
+ const std::string url("https://www.google.ca/imghp?hl=en&tab=wi"); |
+ int icon_types = favicon_base::TOUCH_PRECOMPOSED_ICON; |
+ chrome::ParsedFaviconPath parsed; |
+ |
+ // Empty is valid. |
+ const std::string path15 = "fallback//" + url; |
+ EXPECT_TRUE(chrome::ParseFaviconPath(path15, icon_types, &parsed)); |
+ EXPECT_TRUE(parsed.fallback_specs); |
+ EXPECT_FALSE(parsed.fallback_specs->Has(FallbackIconSpecs::BACKGROUND_COLOR)); |
+ EXPECT_FALSE(parsed.fallback_specs->Has(FallbackIconSpecs::TEXT_COLOR)); |
+ EXPECT_FALSE(parsed.fallback_specs->Has(FallbackIconSpecs::FONT_SIZE_RATIO)); |
+ EXPECT_FALSE(parsed.fallback_specs->Has( |
+ FallbackIconSpecs::CORNER_RADIUS_RATIO)); |
+ |
+ // Everything populated. |
+ const std::string path16 = "fallback/abc,123456,0.5,0.1/" + url; |
+ EXPECT_TRUE(chrome::ParseFaviconPath(path16, icon_types, &parsed)); |
+ EXPECT_TRUE(parsed.fallback_specs); |
+ EXPECT_EQ(SkColorSetRGB(0xAA, 0xBB, 0xCC), |
+ parsed.fallback_specs->BackgroundColor()); |
+ EXPECT_EQ(SkColorSetRGB(0x12, 0x34, 0x56), |
+ parsed.fallback_specs->TextColor()); |
+ EXPECT_EQ(0.5, parsed.fallback_specs->FontSizeRatio()); |
+ EXPECT_EQ(0.1, parsed.fallback_specs->CornerRadiusRatio()); |
+ |
+ // Partially populated. |
+ const std::string path17 = "fallback/123abc,,0.6/" + url; |
+ EXPECT_TRUE(chrome::ParseFaviconPath(path17, icon_types, &parsed)); |
+ EXPECT_TRUE(parsed.fallback_specs); |
+ EXPECT_EQ(SkColorSetRGB(0x12, 0x3A, 0xBC), |
+ parsed.fallback_specs->BackgroundColor()); |
+ EXPECT_FALSE(parsed.fallback_specs->Has(FallbackIconSpecs::TEXT_COLOR)); |
+ EXPECT_EQ(0.6, parsed.fallback_specs->FontSizeRatio()); |
+ EXPECT_FALSE(parsed.fallback_specs->Has( |
+ FallbackIconSpecs::CORNER_RADIUS_RATIO)); |
+ |
+ // Error: FontSizeRatio too large. |
+ const std::string path18 = "fallback/fff,000,100/" + url; |
+ EXPECT_FALSE(chrome::ParseFaviconPath(path18, icon_types, &parsed)); |
+} |