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

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

Issue 1739183003: Make extensions::DictionaryBuilder and extensions::ListValue unmovable. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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 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 <utility> 5 #include <utility>
6 6
7 #include "chrome/common/extensions/api/extension_action/action_info.h" 7 #include "chrome/common/extensions/api/extension_action/action_info.h"
8 #include "chrome/common/extensions/manifest_tests/chrome_manifest_test.h" 8 #include "chrome/common/extensions/manifest_tests/chrome_manifest_test.h"
9 #include "extensions/common/constants.h" 9 #include "extensions/common/constants.h"
10 #include "extensions/common/error_utils.h" 10 #include "extensions/common/error_utils.h"
11 #include "extensions/common/extension_builder.h" 11 #include "extensions/common/extension_builder.h"
12 #include "extensions/common/extension_icon_set.h" 12 #include "extensions/common/extension_icon_set.h"
13 #include "extensions/common/manifest_constants.h" 13 #include "extensions/common/manifest_constants.h"
14 #include "extensions/common/value_builder.h" 14 #include "extensions/common/value_builder.h"
15 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
16 16
17 namespace extensions { 17 namespace extensions {
18 18
19 namespace errors = manifest_errors; 19 namespace errors = manifest_errors;
20 20
21 namespace { 21 namespace {
22 22
23 class BrowserActionManifestTest : public ChromeManifestTest { 23 class BrowserActionManifestTest : public ChromeManifestTest {
24 }; 24 };
25 25
26 TEST_F(BrowserActionManifestTest, 26 TEST_F(BrowserActionManifestTest,
27 BrowserActionManifestIcons_NoDefaultIcons) { 27 BrowserActionManifestIcons_NoDefaultIcons) {
28 scoped_refptr<const Extension> extension = 28 scoped_refptr<const Extension> extension =
29 ExtensionBuilder() 29 ExtensionBuilder()
30 .SetManifest(std::move( 30 .SetManifest(
31 DictionaryBuilder() 31 DictionaryBuilder()
32 .Set("name", "No default properties") 32 .Set("name", "No default properties")
33 .Set("version", "1.0.0") 33 .Set("version", "1.0.0")
34 .Set("manifest_version", 2) 34 .Set("manifest_version", 2)
35 .Set("browser_action", std::move(DictionaryBuilder().Set( 35 .Set(
36 "default_title", "Title"))))) 36 "browser_action",
37 DictionaryBuilder().Set("default_title", "Title").Build())
38 .Build())
37 .Build(); 39 .Build();
38 40
39 ASSERT_TRUE(extension.get()); 41 ASSERT_TRUE(extension.get());
40 const ActionInfo* browser_action_info = 42 const ActionInfo* browser_action_info =
41 ActionInfo::GetBrowserActionInfo(extension.get()); 43 ActionInfo::GetBrowserActionInfo(extension.get());
42 ASSERT_TRUE(browser_action_info); 44 ASSERT_TRUE(browser_action_info);
43 EXPECT_TRUE(browser_action_info->default_icon.empty()); 45 EXPECT_TRUE(browser_action_info->default_icon.empty());
44 } 46 }
45 47
46 TEST_F(BrowserActionManifestTest, 48 TEST_F(BrowserActionManifestTest,
47 BrowserActionManifestIcons_StringDefaultIcon) { 49 BrowserActionManifestIcons_StringDefaultIcon) {
48 scoped_refptr<const Extension> extension = 50 scoped_refptr<const Extension> extension =
49 ExtensionBuilder() 51 ExtensionBuilder()
50 .SetManifest(std::move( 52 .SetManifest(
51 DictionaryBuilder() 53 DictionaryBuilder()
52 .Set("name", "String default icon") 54 .Set("name", "String default icon")
53 .Set("version", "1.0.0") 55 .Set("version", "1.0.0")
54 .Set("manifest_version", 2) 56 .Set("manifest_version", 2)
55 .Set("browser_action", std::move(DictionaryBuilder().Set( 57 .Set("browser_action", DictionaryBuilder()
56 "default_icon", "icon.png"))))) 58 .Set("default_icon", "icon.png")
59 .Build())
60 .Build())
57 .Build(); 61 .Build();
58 62
59 ASSERT_TRUE(extension.get()); 63 ASSERT_TRUE(extension.get());
60 const ActionInfo* browser_action_info = 64 const ActionInfo* browser_action_info =
61 ActionInfo::GetBrowserActionInfo(extension.get()); 65 ActionInfo::GetBrowserActionInfo(extension.get());
62 ASSERT_TRUE(browser_action_info); 66 ASSERT_TRUE(browser_action_info);
63 ASSERT_FALSE(browser_action_info->default_icon.empty()); 67 ASSERT_FALSE(browser_action_info->default_icon.empty());
64 68
65 const ExtensionIconSet& icons = browser_action_info->default_icon; 69 const ExtensionIconSet& icons = browser_action_info->default_icon;
66 70
67 EXPECT_EQ(1u, icons.map().size()); 71 EXPECT_EQ(1u, icons.map().size());
68 EXPECT_EQ("icon.png", icons.Get(extension_misc::EXTENSION_ICON_GIGANTOR, 72 EXPECT_EQ("icon.png", icons.Get(extension_misc::EXTENSION_ICON_GIGANTOR,
69 ExtensionIconSet::MATCH_EXACTLY)); 73 ExtensionIconSet::MATCH_EXACTLY));
70 } 74 }
71 75
72 TEST_F(BrowserActionManifestTest, 76 TEST_F(BrowserActionManifestTest,
73 BrowserActionManifestIcons_DictDefaultIcon) { 77 BrowserActionManifestIcons_DictDefaultIcon) {
74 // Arbitrary sizes should be allowed (useful for various scale factors). 78 // Arbitrary sizes should be allowed (useful for various scale factors).
75 scoped_refptr<const Extension> extension = 79 scoped_refptr<const Extension> extension =
76 ExtensionBuilder() 80 ExtensionBuilder()
77 .SetManifest(std::move( 81 .SetManifest(
78 DictionaryBuilder() 82 DictionaryBuilder()
79 .Set("name", "Dictionary default icon") 83 .Set("name", "Dictionary default icon")
80 .Set("version", "1.0.0") 84 .Set("version", "1.0.0")
81 .Set("manifest_version", 2) 85 .Set("manifest_version", 2)
82 .Set("browser_action", 86 .Set("browser_action",
83 std::move(DictionaryBuilder().Set( 87 DictionaryBuilder()
84 "default_icon", 88 .Set("default_icon", DictionaryBuilder()
85 std::move(DictionaryBuilder() 89 .Set("19", "icon19.png")
86 .Set("19", "icon19.png") 90 .Set("24", "icon24.png")
87 .Set("24", "icon24.png") 91 .Set("38", "icon38.png")
88 .Set("38", "icon38.png"))))))) 92 .Build())
93 .Build())
94 .Build())
89 .Build(); 95 .Build();
90 96
91 ASSERT_TRUE(extension.get()); 97 ASSERT_TRUE(extension.get());
92 const ActionInfo* browser_action_info = 98 const ActionInfo* browser_action_info =
93 ActionInfo::GetBrowserActionInfo(extension.get()); 99 ActionInfo::GetBrowserActionInfo(extension.get());
94 ASSERT_TRUE(browser_action_info); 100 ASSERT_TRUE(browser_action_info);
95 ASSERT_FALSE(browser_action_info->default_icon.empty()); 101 ASSERT_FALSE(browser_action_info->default_icon.empty());
96 102
97 const ExtensionIconSet& icons = browser_action_info->default_icon; 103 const ExtensionIconSet& icons = browser_action_info->default_icon;
98 104
99 // 24px icon should be included. 105 // 24px icon should be included.
100 EXPECT_EQ(3u, icons.map().size()); 106 EXPECT_EQ(3u, icons.map().size());
101 EXPECT_EQ("icon19.png", icons.Get(19, ExtensionIconSet::MATCH_EXACTLY)); 107 EXPECT_EQ("icon19.png", icons.Get(19, ExtensionIconSet::MATCH_EXACTLY));
102 EXPECT_EQ("icon24.png", icons.Get(24, ExtensionIconSet::MATCH_EXACTLY)); 108 EXPECT_EQ("icon24.png", icons.Get(24, ExtensionIconSet::MATCH_EXACTLY));
103 EXPECT_EQ("icon38.png", icons.Get(38, ExtensionIconSet::MATCH_EXACTLY)); 109 EXPECT_EQ("icon38.png", icons.Get(38, ExtensionIconSet::MATCH_EXACTLY));
104 } 110 }
105 111
106 TEST_F(BrowserActionManifestTest, 112 TEST_F(BrowserActionManifestTest,
107 BrowserActionManifestIcons_InvalidDefaultIcon) { 113 BrowserActionManifestIcons_InvalidDefaultIcon) {
108 scoped_ptr<base::DictionaryValue> manifest_value = 114 scoped_ptr<base::DictionaryValue> manifest_value =
109 DictionaryBuilder() 115 DictionaryBuilder()
110 .Set("name", "Invalid default icon") 116 .Set("name", "Invalid default icon")
111 .Set("version", "1.0.0") 117 .Set("version", "1.0.0")
112 .Set("manifest_version", 2) 118 .Set("manifest_version", 2)
113 .Set("browser_action", 119 .Set("browser_action",
114 std::move(DictionaryBuilder().Set( 120 DictionaryBuilder()
115 "default_icon", 121 .Set("default_icon",
116 std::move(DictionaryBuilder() 122 DictionaryBuilder()
117 .Set("19", std::string()) // Invalid value. 123 .Set("19", std::string()) // Invalid value.
118 .Set("24", "icon24.png") 124 .Set("24", "icon24.png")
119 .Set("38", "icon38.png"))))) 125 .Set("38", "icon38.png")
126 .Build())
127 .Build())
120 .Build(); 128 .Build();
121 129
122 base::string16 error = ErrorUtils::FormatErrorMessageUTF16( 130 base::string16 error = ErrorUtils::FormatErrorMessageUTF16(
123 errors::kInvalidIconPath, "19"); 131 errors::kInvalidIconPath, "19");
124 LoadAndExpectError( 132 LoadAndExpectError(
125 ManifestData(std::move(manifest_value), "Invalid default icon"), 133 ManifestData(std::move(manifest_value), "Invalid default icon"),
126 errors::kInvalidIconPath); 134 errors::kInvalidIconPath);
127 } 135 }
128 136
129 } // namespace 137 } // namespace
130 } // namespace extensions 138 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698