OLD | NEW |
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 Loading... |
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 |
OLD | NEW |