Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Unified Diff: chrome/browser/manifest/manifest_icon_selector_unittest.cc

Issue 2933743002: Move chrome/browser/manifest to content/browser. (Closed)
Patch Set: rebased Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/manifest/manifest_icon_selector.cc ('k') | chrome/test/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/manifest/manifest_icon_selector_unittest.cc
diff --git a/chrome/browser/manifest/manifest_icon_selector_unittest.cc b/chrome/browser/manifest/manifest_icon_selector_unittest.cc
deleted file mode 100644
index f819b766afd77d49a8901db2c6e1fe1317170e8b..0000000000000000000000000000000000000000
--- a/chrome/browser/manifest/manifest_icon_selector_unittest.cc
+++ /dev/null
@@ -1,495 +0,0 @@
-// 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.
-
-#include "chrome/browser/manifest/manifest_icon_selector.h"
-
-#include <string>
-#include <vector>
-
-#include "base/macros.h"
-#include "base/strings/utf_string_conversions.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-using IconPurpose = content::Manifest::Icon::IconPurpose;
-
-namespace {
-
-const int kIdealIconSize = 144;
-const int kMinimumIconSize = 0;
-
-static content::Manifest::Icon CreateIcon(const std::string& url,
- const std::string& type,
- const std::vector<gfx::Size> sizes,
- IconPurpose purpose) {
- content::Manifest::Icon icon;
- icon.src = GURL(url);
- icon.type = base::UTF8ToUTF16(type);
- icon.sizes = sizes;
- icon.purpose.push_back(purpose);
-
- return icon;
-}
-
-} // anonymous namespace
-
-TEST(ManifestIconSelector, NoIcons) {
- // No icons should return the empty URL.
- std::vector<content::Manifest::Icon> icons;
- GURL url = ManifestIconSelector::FindBestMatchingIcon(
- icons, kIdealIconSize, kMinimumIconSize, IconPurpose::ANY);
- EXPECT_TRUE(url.is_empty());
-}
-
-TEST(ManifestIconSelector, NoSizes) {
- // Icon with no sizes are ignored.
- std::vector<content::Manifest::Icon> icons;
- icons.push_back(CreateIcon("http://foo.com/icon.png", "",
- std::vector<gfx::Size>(), IconPurpose::ANY));
-
- GURL url = ManifestIconSelector::FindBestMatchingIcon(
- icons, kIdealIconSize, kMinimumIconSize, IconPurpose::ANY);
- EXPECT_TRUE(url.is_empty());
-}
-
-TEST(ManifestIconSelector, MIMETypeFiltering) {
- // Icons with type specified to a MIME type that isn't a valid image MIME type
- // are ignored.
- std::vector<gfx::Size> sizes;
- sizes.push_back(gfx::Size(1024, 1024));
-
- std::vector<content::Manifest::Icon> icons;
- icons.push_back(CreateIcon("http://foo.com/icon.png", "image/foo_bar", sizes,
- IconPurpose::ANY));
- icons.push_back(
- CreateIcon("http://foo.com/icon.png", "image/", sizes, IconPurpose::ANY));
- icons.push_back(
- CreateIcon("http://foo.com/icon.png", "image/", sizes, IconPurpose::ANY));
- icons.push_back(CreateIcon("http://foo.com/icon.png", "video/mp4", sizes,
- IconPurpose::ANY));
-
- GURL url = ManifestIconSelector::FindBestMatchingIcon(
- icons, kIdealIconSize, kMinimumIconSize, IconPurpose::ANY);
- EXPECT_TRUE(url.is_empty());
-
- icons.clear();
- icons.push_back(CreateIcon("http://foo.com/icon.png", "image/png", sizes,
- IconPurpose::ANY));
- url = ManifestIconSelector::FindBestMatchingIcon(
- icons, kIdealIconSize, kMinimumIconSize, IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon.png", url.spec());
-
- icons.clear();
- icons.push_back(CreateIcon("http://foo.com/icon.png", "image/gif", sizes,
- IconPurpose::ANY));
- url = ManifestIconSelector::FindBestMatchingIcon(
- icons, kIdealIconSize, kMinimumIconSize, IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon.png", url.spec());
-
- icons.clear();
- icons.push_back(CreateIcon("http://foo.com/icon.png", "image/jpeg", sizes,
- IconPurpose::ANY));
- url = ManifestIconSelector::FindBestMatchingIcon(
- icons, kIdealIconSize, kMinimumIconSize, IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon.png", url.spec());
-}
-
-TEST(ManifestIconSelector, PurposeFiltering) {
- // Icons with purpose specified to non-matching purpose are ignored.
- std::vector<gfx::Size> sizes_48;
- sizes_48.push_back(gfx::Size(48, 48));
-
- std::vector<gfx::Size> sizes_96;
- sizes_96.push_back(gfx::Size(96, 96));
-
- std::vector<gfx::Size> sizes_144;
- sizes_144.push_back(gfx::Size(144, 144));
-
- std::vector<content::Manifest::Icon> icons;
- icons.push_back(
- CreateIcon("http://foo.com/icon_48.png", "", sizes_48, IconPurpose::BADGE));
- icons.push_back(
- CreateIcon("http://foo.com/icon_96.png", "", sizes_96, IconPurpose::ANY));
- icons.push_back(CreateIcon("http://foo.com/icon_144.png", "", sizes_144,
- IconPurpose::ANY));
-
- GURL url = ManifestIconSelector::FindBestMatchingIcon(
- icons, 48, kMinimumIconSize, IconPurpose::BADGE);
- EXPECT_EQ("http://foo.com/icon_48.png", url.spec());
-
- url = ManifestIconSelector::FindBestMatchingIcon(
- icons, 48, kMinimumIconSize, IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon_96.png", url.spec());
-
- url = ManifestIconSelector::FindBestMatchingIcon(icons, 96, kMinimumIconSize,
- IconPurpose::BADGE);
- EXPECT_EQ("http://foo.com/icon_48.png", url.spec());
-
- url = ManifestIconSelector::FindBestMatchingIcon(icons, 96, 96,
- IconPurpose::BADGE);
- EXPECT_TRUE(url.is_empty());
-
- url = ManifestIconSelector::FindBestMatchingIcon(icons, 144, kMinimumIconSize,
- IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon_144.png", url.spec());
-}
-
-TEST(ManifestIconSelector, IdealSizeIsUsedFirst) {
- // Each icon is marked with sizes that match the ideal icon size.
- std::vector<gfx::Size> sizes_48;
- sizes_48.push_back(gfx::Size(48, 48));
-
- std::vector<gfx::Size> sizes_96;
- sizes_96.push_back(gfx::Size(96, 96));
-
- std::vector<gfx::Size> sizes_144;
- sizes_144.push_back(gfx::Size(144, 144));
-
- std::vector<content::Manifest::Icon> icons;
- icons.push_back(
- CreateIcon("http://foo.com/icon_48.png", "", sizes_48, IconPurpose::ANY));
- icons.push_back(
- CreateIcon("http://foo.com/icon_96.png", "", sizes_96, IconPurpose::ANY));
- icons.push_back(CreateIcon("http://foo.com/icon_144.png", "", sizes_144,
- IconPurpose::ANY));
-
- GURL url = ManifestIconSelector::FindBestMatchingIcon(
- icons, 48, kMinimumIconSize, IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon_48.png", url.spec());
-
- url = ManifestIconSelector::FindBestMatchingIcon(icons, 96, kMinimumIconSize,
- IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon_96.png", url.spec());
-
- url = ManifestIconSelector::FindBestMatchingIcon(icons, 144, kMinimumIconSize,
- IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon_144.png", url.spec());
-}
-
-TEST(ManifestIconSelector, FirstIconWithIdealSizeIsUsedFirst) {
- // This test has three icons. The first icon is going to be used because it
- // contains the ideal size.
- std::vector<gfx::Size> sizes_1;
- sizes_1.push_back(gfx::Size(kIdealIconSize, kIdealIconSize));
- sizes_1.push_back(gfx::Size(kIdealIconSize * 2, kIdealIconSize * 2));
- sizes_1.push_back(gfx::Size(kIdealIconSize * 3, kIdealIconSize * 3));
-
- std::vector<gfx::Size> sizes_2;
- sizes_2.push_back(gfx::Size(1024, 1024));
-
- std::vector<gfx::Size> sizes_3;
- sizes_3.push_back(gfx::Size(1024, 1024));
-
- std::vector<content::Manifest::Icon> icons;
- icons.push_back(
- CreateIcon("http://foo.com/icon_x1.png", "", sizes_1, IconPurpose::ANY));
- icons.push_back(
- CreateIcon("http://foo.com/icon_x2.png", "", sizes_2, IconPurpose::ANY));
- icons.push_back(
- CreateIcon("http://foo.com/icon_x3.png", "", sizes_3, IconPurpose::ANY));
-
- GURL url = ManifestIconSelector::FindBestMatchingIcon(
- icons, kIdealIconSize, kMinimumIconSize, IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon_x1.png", url.spec());
-
- url = ManifestIconSelector::FindBestMatchingIcon(
- icons, kIdealIconSize * 2, kMinimumIconSize, IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon_x1.png", url.spec());
-
- url = ManifestIconSelector::FindBestMatchingIcon(
- icons, kIdealIconSize * 3, kMinimumIconSize, IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon_x1.png", url.spec());
-}
-
-TEST(ManifestIconSelector, FallbackToSmallestLargerIcon) {
- // If there is no perfect icon, the smallest larger icon will be chosen.
- std::vector<gfx::Size> sizes_1;
- sizes_1.push_back(gfx::Size(90, 90));
-
- std::vector<gfx::Size> sizes_2;
- sizes_2.push_back(gfx::Size(128, 128));
-
- std::vector<gfx::Size> sizes_3;
- sizes_3.push_back(gfx::Size(192, 192));
-
- std::vector<content::Manifest::Icon> icons;
- icons.push_back(
- CreateIcon("http://foo.com/icon_x1.png", "", sizes_1, IconPurpose::ANY));
- icons.push_back(
- CreateIcon("http://foo.com/icon_x2.png", "", sizes_2, IconPurpose::ANY));
- icons.push_back(
- CreateIcon("http://foo.com/icon_x3.png", "", sizes_3, IconPurpose::ANY));
-
- GURL url = ManifestIconSelector::FindBestMatchingIcon(
- icons, 48, kMinimumIconSize, IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon_x1.png", url.spec());
-
- url = ManifestIconSelector::FindBestMatchingIcon(icons, 96, kMinimumIconSize,
- IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon_x2.png", url.spec());
-
- url = ManifestIconSelector::FindBestMatchingIcon(icons, 144, kMinimumIconSize,
- IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon_x3.png", url.spec());
-}
-
-TEST(ManifestIconSelector, FallbackToLargestIconLargerThanMinimum) {
- // When an icon of the correct size has not been found, we fall back to the
- // closest non-matching sizes. Make sure that the minimum passed is enforced.
- std::vector<gfx::Size> sizes_1_2;
- std::vector<gfx::Size> sizes_3;
-
- sizes_1_2.push_back(gfx::Size(47, 47));
- sizes_3.push_back(gfx::Size(95, 95));
-
- std::vector<content::Manifest::Icon> icons;
- icons.push_back(CreateIcon("http://foo.com/icon_x1.png", "", sizes_1_2,
- IconPurpose::ANY));
- icons.push_back(CreateIcon("http://foo.com/icon_x2.png", "", sizes_1_2,
- IconPurpose::ANY));
- icons.push_back(
- CreateIcon("http://foo.com/icon_x3.png", "", sizes_3, IconPurpose::ANY));
-
- // Icon 3 should match.
- GURL url = ManifestIconSelector::FindBestMatchingIcon(icons, 1024, 48,
- IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon_x3.png", url.spec());
-
- // Nothing matches here as the minimum is 96.
- url = ManifestIconSelector::FindBestMatchingIcon(icons, 1024, 96,
- IconPurpose::ANY);
- EXPECT_TRUE(url.is_empty());
-}
-
-TEST(ManifestIconSelector, IdealVeryCloseToMinimumMatches) {
- std::vector<gfx::Size> sizes;
- sizes.push_back(gfx::Size(2, 2));
-
- std::vector<content::Manifest::Icon> icons;
- icons.push_back(
- CreateIcon("http://foo.com/icon_x1.png", "", sizes, IconPurpose::ANY));
-
- GURL url =
- ManifestIconSelector::FindBestMatchingIcon(icons, 2, 1, IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon_x1.png", url.spec());
-}
-
-TEST(ManifestIconSelector, SizeVeryCloseToMinimumMatches) {
- std::vector<gfx::Size> sizes;
- sizes.push_back(gfx::Size(2, 2));
-
- std::vector<content::Manifest::Icon> icons;
- icons.push_back(
- CreateIcon("http://foo.com/icon_x1.png", "", sizes, IconPurpose::ANY));
-
- GURL url = ManifestIconSelector::FindBestMatchingIcon(icons, 200, 1,
- IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon_x1.png", url.spec());
-}
-
-TEST(ManifestIconSelector, NotSquareIconsAreIgnored) {
- std::vector<gfx::Size> sizes;
- sizes.push_back(gfx::Size(1024, 1023));
-
- std::vector<content::Manifest::Icon> icons;
- icons.push_back(
- CreateIcon("http://foo.com/icon.png", "", sizes, IconPurpose::ANY));
-
- GURL url = ManifestIconSelector::FindBestMatchingIcon(
- icons, kIdealIconSize, kMinimumIconSize, IconPurpose::ANY);
- EXPECT_TRUE(url.is_empty());
-}
-
-TEST(ManifestIconSelector, ClosestIconToIdeal) {
- // Ensure ManifestIconSelector::FindBestMatchingIcon selects the closest icon
- // to the ideal size when presented with a number of options.
- int very_small = kIdealIconSize / 4;
- int small_size = kIdealIconSize / 2;
- int bit_small = kIdealIconSize - 1;
- int bit_big = kIdealIconSize + 1;
- int big = kIdealIconSize * 2;
- int very_big = kIdealIconSize * 4;
-
- // (very_small, bit_small) => bit_small
- {
- std::vector<gfx::Size> sizes_1;
- sizes_1.push_back(gfx::Size(very_small, very_small));
-
- std::vector<gfx::Size> sizes_2;
- sizes_2.push_back(gfx::Size(bit_small, bit_small));
-
- std::vector<content::Manifest::Icon> icons;
- icons.push_back(CreateIcon("http://foo.com/icon_no.png", "", sizes_1,
- IconPurpose::ANY));
- icons.push_back(
- CreateIcon("http://foo.com/icon.png", "", sizes_2, IconPurpose::ANY));
-
- GURL url = ManifestIconSelector::FindBestMatchingIcon(
- icons, kIdealIconSize, kMinimumIconSize, IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon.png", url.spec());
- }
-
- // (very_small, bit_small, small_size) => bit_small
- {
- std::vector<gfx::Size> sizes_1;
- sizes_1.push_back(gfx::Size(very_small, very_small));
-
- std::vector<gfx::Size> sizes_2;
- sizes_2.push_back(gfx::Size(bit_small, bit_small));
-
- std::vector<gfx::Size> sizes_3;
- sizes_3.push_back(gfx::Size(small_size, small_size));
-
- std::vector<content::Manifest::Icon> icons;
- icons.push_back(CreateIcon("http://foo.com/icon_no_1.png", "", sizes_1,
- IconPurpose::ANY));
- icons.push_back(
- CreateIcon("http://foo.com/icon.png", "", sizes_2, IconPurpose::ANY));
- icons.push_back(CreateIcon("http://foo.com/icon_no_2.png", "", sizes_3,
- IconPurpose::ANY));
-
- GURL url = ManifestIconSelector::FindBestMatchingIcon(
- icons, kIdealIconSize, kMinimumIconSize, IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon.png", url.spec());
- }
-
- // (very_big, big) => big
- {
- std::vector<gfx::Size> sizes_1;
- sizes_1.push_back(gfx::Size(very_big, very_big));
-
- std::vector<gfx::Size> sizes_2;
- sizes_2.push_back(gfx::Size(big, big));
-
- std::vector<content::Manifest::Icon> icons;
- icons.push_back(CreateIcon("http://foo.com/icon_no.png", "", sizes_1,
- IconPurpose::ANY));
- icons.push_back(
- CreateIcon("http://foo.com/icon.png", "", sizes_2, IconPurpose::ANY));
-
- GURL url = ManifestIconSelector::FindBestMatchingIcon(
- icons, kIdealIconSize, kMinimumIconSize, IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon.png", url.spec());
- }
-
- // (very_big, big, bit_big) => bit_big
- {
- std::vector<gfx::Size> sizes_1;
- sizes_1.push_back(gfx::Size(very_big, very_big));
-
- std::vector<gfx::Size> sizes_2;
- sizes_2.push_back(gfx::Size(big, big));
-
- std::vector<gfx::Size> sizes_3;
- sizes_3.push_back(gfx::Size(bit_big, bit_big));
-
- std::vector<content::Manifest::Icon> icons;
- icons.push_back(CreateIcon("http://foo.com/icon_no.png", "", sizes_1,
- IconPurpose::ANY));
- icons.push_back(CreateIcon("http://foo.com/icon_no.png", "", sizes_2,
- IconPurpose::ANY));
- icons.push_back(
- CreateIcon("http://foo.com/icon.png", "", sizes_3, IconPurpose::ANY));
-
- GURL url = ManifestIconSelector::FindBestMatchingIcon(
- icons, kIdealIconSize, kMinimumIconSize, IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon.png", url.spec());
- }
-
- // (bit_small, very_big) => very_big
- {
- std::vector<gfx::Size> sizes_1;
- sizes_1.push_back(gfx::Size(bit_small, bit_small));
-
- std::vector<gfx::Size> sizes_2;
- sizes_2.push_back(gfx::Size(very_big, very_big));
-
- std::vector<content::Manifest::Icon> icons;
- icons.push_back(CreateIcon("http://foo.com/icon_no.png", "", sizes_1,
- IconPurpose::ANY));
- icons.push_back(
- CreateIcon("http://foo.com/icon.png", "", sizes_2, IconPurpose::ANY));
-
- GURL url = ManifestIconSelector::FindBestMatchingIcon(
- icons, kIdealIconSize, kMinimumIconSize, IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon.png", url.spec());
- }
-
- // (bit_small, bit_big) => bit_big
- {
- std::vector<gfx::Size> sizes_1;
- sizes_1.push_back(gfx::Size(bit_small, bit_small));
-
- std::vector<gfx::Size> sizes_2;
- sizes_2.push_back(gfx::Size(bit_big, bit_big));
-
- std::vector<content::Manifest::Icon> icons;
- icons.push_back(CreateIcon("http://foo.com/icon_no.png", "", sizes_1,
- IconPurpose::ANY));
- icons.push_back(
- CreateIcon("http://foo.com/icon.png", "", sizes_2, IconPurpose::ANY));
-
- GURL url = ManifestIconSelector::FindBestMatchingIcon(
- icons, kIdealIconSize, kMinimumIconSize, IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon.png", url.spec());
- }
-}
-
-TEST(ManifestIconSelector, UseAnyIfNoIdealSize) {
- // 'any' (ie. gfx::Size(0,0)) should be used if there is no icon of a
- // ideal size.
-
- // Icon with 'any' and icon with ideal size => ideal size is chosen.
- {
- std::vector<gfx::Size> sizes_1;
- sizes_1.push_back(gfx::Size(kIdealIconSize, kIdealIconSize));
- std::vector<gfx::Size> sizes_2;
- sizes_2.push_back(gfx::Size(0, 0));
-
- std::vector<content::Manifest::Icon> icons;
- icons.push_back(
- CreateIcon("http://foo.com/icon.png", "", sizes_1, IconPurpose::ANY));
- icons.push_back(CreateIcon("http://foo.com/icon_no.png", "", sizes_2,
- IconPurpose::ANY));
-
- GURL url = ManifestIconSelector::FindBestMatchingIcon(
- icons, kIdealIconSize, kMinimumIconSize, IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon.png", url.spec());
- }
-
- // Icon with 'any' and icon larger than ideal size => any is chosen.
- {
- std::vector<gfx::Size> sizes_1;
- sizes_1.push_back(gfx::Size(kIdealIconSize + 1, kIdealIconSize + 1));
- std::vector<gfx::Size> sizes_2;
- sizes_2.push_back(gfx::Size(0, 0));
-
- std::vector<content::Manifest::Icon> icons;
- icons.push_back(CreateIcon("http://foo.com/icon_no.png", "", sizes_1,
- IconPurpose::ANY));
- icons.push_back(
- CreateIcon("http://foo.com/icon.png", "", sizes_2, IconPurpose::ANY));
-
- GURL url = ManifestIconSelector::FindBestMatchingIcon(
- icons, kIdealIconSize, kMinimumIconSize, IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon.png", url.spec());
- }
-
- // Multiple icons with 'any' => the last one is chosen.
- {
- std::vector<gfx::Size> sizes;
- sizes.push_back(gfx::Size(0, 0));
-
- std::vector<content::Manifest::Icon> icons;
- icons.push_back(
- CreateIcon("http://foo.com/icon_no1.png", "", sizes, IconPurpose::ANY));
- icons.push_back(
- CreateIcon("http://foo.com/icon_no2.png", "", sizes, IconPurpose::ANY));
- icons.push_back(
- CreateIcon("http://foo.com/icon.png", "", sizes, IconPurpose::ANY));
-
- GURL url = ManifestIconSelector::FindBestMatchingIcon(
- icons, kIdealIconSize * 3, kMinimumIconSize, IconPurpose::ANY);
- EXPECT_EQ("http://foo.com/icon.png", url.spec());
- }
-}
« no previous file with comments | « chrome/browser/manifest/manifest_icon_selector.cc ('k') | chrome/test/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698