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

Side by Side Diff: chrome/common/extensions/api/extension_action/browser_action_manifest_unittest.cc

Issue 1492073003: Handle more scale factors for extension Browser Action icons (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: test catches real bug! Created 5 years 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/common/extensions/api/extension_action/action_info.h" 5 #include "chrome/common/extensions/api/extension_action/action_info.h"
6 #include "chrome/common/extensions/manifest_tests/chrome_manifest_test.h" 6 #include "chrome/common/extensions/manifest_tests/chrome_manifest_test.h"
7 #include "extensions/common/constants.h"
7 #include "extensions/common/error_utils.h" 8 #include "extensions/common/error_utils.h"
8 #include "extensions/common/extension_builder.h" 9 #include "extensions/common/extension_builder.h"
9 #include "extensions/common/extension_icon_set.h" 10 #include "extensions/common/extension_icon_set.h"
10 #include "extensions/common/manifest_constants.h" 11 #include "extensions/common/manifest_constants.h"
11 #include "extensions/common/value_builder.h" 12 #include "extensions/common/value_builder.h"
12 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
13 14
14 namespace extensions { 15 namespace extensions {
15 16
16 namespace errors = manifest_errors; 17 namespace errors = manifest_errors;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 54
54 ASSERT_TRUE(extension.get()); 55 ASSERT_TRUE(extension.get());
55 const ActionInfo* browser_action_info = 56 const ActionInfo* browser_action_info =
56 ActionInfo::GetBrowserActionInfo(extension.get()); 57 ActionInfo::GetBrowserActionInfo(extension.get());
57 ASSERT_TRUE(browser_action_info); 58 ASSERT_TRUE(browser_action_info);
58 ASSERT_FALSE(browser_action_info->default_icon.empty()); 59 ASSERT_FALSE(browser_action_info->default_icon.empty());
59 60
60 const ExtensionIconSet& icons = browser_action_info->default_icon; 61 const ExtensionIconSet& icons = browser_action_info->default_icon;
61 62
62 EXPECT_EQ(1u, icons.map().size()); 63 EXPECT_EQ(1u, icons.map().size());
63 EXPECT_EQ("icon.png", icons.Get(38, ExtensionIconSet::MATCH_EXACTLY)); 64 EXPECT_EQ("icon.png", icons.Get(extension_misc::EXTENSION_ICON_GIGANTOR,
65 ExtensionIconSet::MATCH_EXACTLY));
64 } 66 }
65 67
66 TEST_F(BrowserActionManifestTest, 68 TEST_F(BrowserActionManifestTest,
67 BrowserActionManifestIcons_DictDefaultIcon) { 69 BrowserActionManifestIcons_DictDefaultIcon) {
70 // Arbitrary sizes should be allowed (useful for various scale factors).
68 scoped_refptr<const Extension> extension = 71 scoped_refptr<const Extension> extension =
69 ExtensionBuilder() 72 ExtensionBuilder()
70 .SetManifest(DictionaryBuilder() 73 .SetManifest(
71 .Set("name", "Dictionary default icon") 74 DictionaryBuilder()
72 .Set("version", "1.0.0") 75 .Set("name", "Dictionary default icon")
73 .Set("manifest_version", 2) 76 .Set("version", "1.0.0")
74 .Set("browser_action", DictionaryBuilder() 77 .Set("manifest_version", 2)
75 .Set("default_icon", DictionaryBuilder() 78 .Set("browser_action",
76 .Set("19", "icon19.png") 79 DictionaryBuilder().Set("default_icon",
77 .Set("24", "icon24.png") // Should be ignored. 80 DictionaryBuilder()
78 .Set("38", "icon38.png")))) 81 .Set("19", "icon19.png")
79 .Build(); 82 .Set("24", "icon24.png")
83 .Set("38", "icon38.png"))))
84 .Build();
80 85
81 ASSERT_TRUE(extension.get()); 86 ASSERT_TRUE(extension.get());
82 const ActionInfo* browser_action_info = 87 const ActionInfo* browser_action_info =
83 ActionInfo::GetBrowserActionInfo(extension.get()); 88 ActionInfo::GetBrowserActionInfo(extension.get());
84 ASSERT_TRUE(browser_action_info); 89 ASSERT_TRUE(browser_action_info);
85 ASSERT_FALSE(browser_action_info->default_icon.empty()); 90 ASSERT_FALSE(browser_action_info->default_icon.empty());
86 91
87 const ExtensionIconSet& icons = browser_action_info->default_icon; 92 const ExtensionIconSet& icons = browser_action_info->default_icon;
88 93
89 // 24px icon should be ignored. 94 // 24px icon should be included.
90 EXPECT_EQ(2u, icons.map().size()); 95 EXPECT_EQ(3u, icons.map().size());
91 EXPECT_EQ("icon19.png", icons.Get(19, ExtensionIconSet::MATCH_EXACTLY)); 96 EXPECT_EQ("icon19.png", icons.Get(19, ExtensionIconSet::MATCH_EXACTLY));
97 EXPECT_EQ("icon24.png", icons.Get(24, ExtensionIconSet::MATCH_EXACTLY));
92 EXPECT_EQ("icon38.png", icons.Get(38, ExtensionIconSet::MATCH_EXACTLY)); 98 EXPECT_EQ("icon38.png", icons.Get(38, ExtensionIconSet::MATCH_EXACTLY));
93 } 99 }
94 100
95 TEST_F(BrowserActionManifestTest, 101 TEST_F(BrowserActionManifestTest,
96 BrowserActionManifestIcons_InvalidDefaultIcon) { 102 BrowserActionManifestIcons_InvalidDefaultIcon) {
97 scoped_ptr<base::DictionaryValue> manifest_value = DictionaryBuilder() 103 scoped_ptr<base::DictionaryValue> manifest_value = DictionaryBuilder()
98 .Set("name", "Invalid default icon").Set("version", "1.0.0") 104 .Set("name", "Invalid default icon").Set("version", "1.0.0")
99 .Set("manifest_version", 2) 105 .Set("manifest_version", 2)
100 .Set("browser_action", 106 .Set("browser_action",
101 DictionaryBuilder().Set( 107 DictionaryBuilder().Set(
102 "default_icon", 108 "default_icon",
103 DictionaryBuilder().Set("19", std::string()) // Invalid value. 109 DictionaryBuilder().Set("19", std::string()) // Invalid value.
104 .Set("24", "icon24.png").Set("38", "icon38.png"))).Build(); 110 .Set("24", "icon24.png").Set("38", "icon38.png"))).Build();
105 111
106 base::string16 error = ErrorUtils::FormatErrorMessageUTF16( 112 base::string16 error = ErrorUtils::FormatErrorMessageUTF16(
107 errors::kInvalidIconPath, "19"); 113 errors::kInvalidIconPath, "19");
108 LoadAndExpectError( 114 LoadAndExpectError(
109 ManifestData(manifest_value.Pass(), "Invalid default icon"), 115 ManifestData(manifest_value.Pass(), "Invalid default icon"),
110 errors::kInvalidIconPath); 116 errors::kInvalidIconPath);
111 } 117 }
112 118
113 } // namespace 119 } // namespace
114 } // namespace extensions 120 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/common/extensions/api/extension_action/action_info.cc ('k') | extensions/common/constants.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698