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

Side by Side Diff: chrome/common/extensions/manifest_unittest.cc

Issue 12207167: Cleanup: Remove deprecated base::Value methods from chrome/common. Use base::Value too. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years, 10 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 | Annotate | Revision Log
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/manifest.h" 5 #include "chrome/common/extensions/manifest.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 10
(...skipping 23 matching lines...) Expand all
34 EXPECT_EQ(type == Manifest::TYPE_PLATFORM_APP, 34 EXPECT_EQ(type == Manifest::TYPE_PLATFORM_APP,
35 manifest->is_platform_app()); 35 manifest->is_platform_app());
36 EXPECT_EQ(type == Manifest::TYPE_LEGACY_PACKAGED_APP, 36 EXPECT_EQ(type == Manifest::TYPE_LEGACY_PACKAGED_APP,
37 manifest->is_legacy_packaged_app()); 37 manifest->is_legacy_packaged_app());
38 EXPECT_EQ(type == Manifest::TYPE_HOSTED_APP, manifest->is_hosted_app()); 38 EXPECT_EQ(type == Manifest::TYPE_HOSTED_APP, manifest->is_hosted_app());
39 } 39 }
40 40
41 // Helper function that replaces the Manifest held by |manifest| with a copy 41 // Helper function that replaces the Manifest held by |manifest| with a copy
42 // with its |key| changed to |value|. If |value| is NULL, then |key| will 42 // with its |key| changed to |value|. If |value| is NULL, then |key| will
43 // instead be deleted. 43 // instead be deleted.
44 void MutateManifest( 44 void MutateManifest(scoped_ptr<Manifest>* manifest,
45 scoped_ptr<Manifest>* manifest, const std::string& key, Value* value) { 45 const std::string& key,
46 scoped_ptr<DictionaryValue> manifest_value( 46 base::Value* value) {
47 scoped_ptr<base::DictionaryValue> manifest_value(
47 manifest->get()->value()->DeepCopy()); 48 manifest->get()->value()->DeepCopy());
48 if (value) 49 if (value)
49 manifest_value->Set(key, value); 50 manifest_value->Set(key, value);
50 else 51 else
51 manifest_value->Remove(key, NULL); 52 manifest_value->Remove(key, NULL);
52 manifest->reset(new Manifest(Manifest::INTERNAL, manifest_value.Pass())); 53 manifest->reset(new Manifest(Manifest::INTERNAL, manifest_value.Pass()));
53 } 54 }
54 55
55 std::string default_value_; 56 std::string default_value_;
56 }; 57 };
57 58
58 // Verifies that extensions can access the correct keys. 59 // Verifies that extensions can access the correct keys.
59 TEST_F(ManifestTest, Extension) { 60 TEST_F(ManifestTest, Extension) {
60 scoped_ptr<DictionaryValue> manifest_value(new DictionaryValue()); 61 scoped_ptr<base::DictionaryValue> manifest_value(new base::DictionaryValue());
61 manifest_value->SetString(keys::kName, "extension"); 62 manifest_value->SetString(keys::kName, "extension");
62 manifest_value->SetString(keys::kVersion, "1"); 63 manifest_value->SetString(keys::kVersion, "1");
63 // Only supported in manifest_version=1. 64 // Only supported in manifest_version=1.
64 manifest_value->SetString(keys::kBackgroundPageLegacy, "bg.html"); 65 manifest_value->SetString(keys::kBackgroundPageLegacy, "bg.html");
65 manifest_value->SetString("unknown_key", "foo"); 66 manifest_value->SetString("unknown_key", "foo");
66 67
67 scoped_ptr<Manifest> manifest( 68 scoped_ptr<Manifest> manifest(
68 new Manifest(Manifest::INTERNAL, manifest_value.Pass())); 69 new Manifest(Manifest::INTERNAL, manifest_value.Pass()));
69 std::string error; 70 std::string error;
70 std::vector<InstallWarning> warnings; 71 std::vector<InstallWarning> warnings;
71 manifest->ValidateManifest(&error, &warnings); 72 manifest->ValidateManifest(&error, &warnings);
72 EXPECT_TRUE(error.empty()); 73 EXPECT_TRUE(error.empty());
73 ASSERT_EQ(1u, warnings.size()); 74 ASSERT_EQ(1u, warnings.size());
74 AssertType(manifest.get(), Manifest::TYPE_EXTENSION); 75 AssertType(manifest.get(), Manifest::TYPE_EXTENSION);
75 76
76 // The known key 'background_page' should be accessible. 77 // The known key 'background_page' should be accessible.
77 std::string value; 78 std::string value;
78 EXPECT_TRUE(manifest->GetString(keys::kBackgroundPageLegacy, &value)); 79 EXPECT_TRUE(manifest->GetString(keys::kBackgroundPageLegacy, &value));
79 EXPECT_EQ("bg.html", value); 80 EXPECT_EQ("bg.html", value);
80 81
81 // The unknown key 'unknown_key' should be accesible. 82 // The unknown key 'unknown_key' should be accesible.
82 value.clear(); 83 value.clear();
83 EXPECT_TRUE(manifest->GetString("unknown_key", &value)); 84 EXPECT_TRUE(manifest->GetString("unknown_key", &value));
84 EXPECT_EQ("foo", value); 85 EXPECT_EQ("foo", value);
85 86
86 // Set the manifest_version to 2; background_page should stop working. 87 // Set the manifest_version to 2; background_page should stop working.
87 value.clear(); 88 value.clear();
88 MutateManifest( 89 MutateManifest(
89 &manifest, keys::kManifestVersion, Value::CreateIntegerValue(2)); 90 &manifest, keys::kManifestVersion, new base::FundamentalValue(2));
90 EXPECT_FALSE(manifest->GetString("background_page", &value)); 91 EXPECT_FALSE(manifest->GetString("background_page", &value));
91 EXPECT_EQ("", value); 92 EXPECT_EQ("", value);
92 93
93 // Validate should also give a warning. 94 // Validate should also give a warning.
94 warnings.clear(); 95 warnings.clear();
95 manifest->ValidateManifest(&error, &warnings); 96 manifest->ValidateManifest(&error, &warnings);
96 EXPECT_TRUE(error.empty()); 97 EXPECT_TRUE(error.empty());
97 ASSERT_EQ(2u, warnings.size()); 98 ASSERT_EQ(2u, warnings.size());
98 { 99 {
99 SimpleFeature feature; 100 SimpleFeature feature;
100 feature.set_name("background_page"); 101 feature.set_name("background_page");
101 feature.set_max_manifest_version(1); 102 feature.set_max_manifest_version(1);
102 EXPECT_EQ( 103 EXPECT_EQ(
103 "'background_page' requires manifest version of 1 or lower.", 104 "'background_page' requires manifest version of 1 or lower.",
104 warnings[0].message); 105 warnings[0].message);
105 } 106 }
106 107
107 // Test DeepCopy and Equals. 108 // Test DeepCopy and Equals.
108 scoped_ptr<Manifest> manifest2(manifest->DeepCopy()); 109 scoped_ptr<Manifest> manifest2(manifest->DeepCopy());
109 EXPECT_TRUE(manifest->Equals(manifest2.get())); 110 EXPECT_TRUE(manifest->Equals(manifest2.get()));
110 EXPECT_TRUE(manifest2->Equals(manifest.get())); 111 EXPECT_TRUE(manifest2->Equals(manifest.get()));
111 MutateManifest( 112 MutateManifest(
112 &manifest, "foo", Value::CreateStringValue("blah")); 113 &manifest, "foo", new base::StringValue("blah"));
113 EXPECT_FALSE(manifest->Equals(manifest2.get())); 114 EXPECT_FALSE(manifest->Equals(manifest2.get()));
114 } 115 }
115 116
116 // Verifies that key restriction based on type works. 117 // Verifies that key restriction based on type works.
117 TEST_F(ManifestTest, ExtensionTypes) { 118 TEST_F(ManifestTest, ExtensionTypes) {
118 scoped_ptr<DictionaryValue> value(new DictionaryValue()); 119 scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue());
119 value->SetString(keys::kName, "extension"); 120 value->SetString(keys::kName, "extension");
120 value->SetString(keys::kVersion, "1"); 121 value->SetString(keys::kVersion, "1");
121 122
122 scoped_ptr<Manifest> manifest( 123 scoped_ptr<Manifest> manifest(
123 new Manifest(Manifest::INTERNAL, value.Pass())); 124 new Manifest(Manifest::INTERNAL, value.Pass()));
124 std::string error; 125 std::string error;
125 std::vector<InstallWarning> warnings; 126 std::vector<InstallWarning> warnings;
126 manifest->ValidateManifest(&error, &warnings); 127 manifest->ValidateManifest(&error, &warnings);
127 EXPECT_TRUE(error.empty()); 128 EXPECT_TRUE(error.empty());
128 EXPECT_TRUE(warnings.empty()); 129 EXPECT_TRUE(warnings.empty());
129 130
130 // By default, the type is Extension. 131 // By default, the type is Extension.
131 AssertType(manifest.get(), Manifest::TYPE_EXTENSION); 132 AssertType(manifest.get(), Manifest::TYPE_EXTENSION);
132 133
133 // Theme. 134 // Theme.
134 MutateManifest( 135 MutateManifest(
135 &manifest, keys::kTheme, new DictionaryValue()); 136 &manifest, keys::kTheme, new base::DictionaryValue());
136 AssertType(manifest.get(), Manifest::TYPE_THEME); 137 AssertType(manifest.get(), Manifest::TYPE_THEME);
137 MutateManifest( 138 MutateManifest(
138 &manifest, keys::kTheme, NULL); 139 &manifest, keys::kTheme, NULL);
139 140
140 // Packaged app. 141 // Packaged app.
141 MutateManifest( 142 MutateManifest(
142 &manifest, keys::kApp, new DictionaryValue()); 143 &manifest, keys::kApp, new base::DictionaryValue());
143 AssertType(manifest.get(), Manifest::TYPE_LEGACY_PACKAGED_APP); 144 AssertType(manifest.get(), Manifest::TYPE_LEGACY_PACKAGED_APP);
144 145
145 // Platform app. 146 // Platform app.
146 MutateManifest( 147 MutateManifest(
147 &manifest, keys::kPlatformAppBackground, new DictionaryValue()); 148 &manifest, keys::kPlatformAppBackground, new base::DictionaryValue());
148 AssertType(manifest.get(), Manifest::TYPE_PLATFORM_APP); 149 AssertType(manifest.get(), Manifest::TYPE_PLATFORM_APP);
149 MutateManifest( 150 MutateManifest(
150 &manifest, keys::kPlatformAppBackground, NULL); 151 &manifest, keys::kPlatformAppBackground, NULL);
151 152
152 // Hosted app. 153 // Hosted app.
153 MutateManifest( 154 MutateManifest(
154 &manifest, keys::kWebURLs, new ListValue()); 155 &manifest, keys::kWebURLs, new base::ListValue());
155 AssertType(manifest.get(), Manifest::TYPE_HOSTED_APP); 156 AssertType(manifest.get(), Manifest::TYPE_HOSTED_APP);
156 MutateManifest( 157 MutateManifest(
157 &manifest, keys::kWebURLs, NULL); 158 &manifest, keys::kWebURLs, NULL);
158 MutateManifest( 159 MutateManifest(
159 &manifest, keys::kLaunchWebURL, Value::CreateStringValue("foo")); 160 &manifest, keys::kLaunchWebURL, new base::StringValue("foo"));
160 AssertType(manifest.get(), Manifest::TYPE_HOSTED_APP); 161 AssertType(manifest.get(), Manifest::TYPE_HOSTED_APP);
161 MutateManifest( 162 MutateManifest(
162 &manifest, keys::kLaunchWebURL, NULL); 163 &manifest, keys::kLaunchWebURL, NULL);
163 }; 164 };
164 165
165 // Verifies that the getters filter restricted keys. 166 // Verifies that the getters filter restricted keys.
166 TEST_F(ManifestTest, RestrictedKeys) { 167 TEST_F(ManifestTest, RestrictedKeys) {
167 scoped_ptr<DictionaryValue> value(new DictionaryValue()); 168 scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue());
168 value->SetString(keys::kName, "extension"); 169 value->SetString(keys::kName, "extension");
169 value->SetString(keys::kVersion, "1"); 170 value->SetString(keys::kVersion, "1");
170 171
171 scoped_ptr<Manifest> manifest( 172 scoped_ptr<Manifest> manifest(
172 new Manifest(Manifest::INTERNAL, value.Pass())); 173 new Manifest(Manifest::INTERNAL, value.Pass()));
173 std::string error; 174 std::string error;
174 std::vector<InstallWarning> warnings; 175 std::vector<InstallWarning> warnings;
175 manifest->ValidateManifest(&error, &warnings); 176 manifest->ValidateManifest(&error, &warnings);
176 EXPECT_TRUE(error.empty()); 177 EXPECT_TRUE(error.empty());
177 EXPECT_TRUE(warnings.empty()); 178 EXPECT_TRUE(warnings.empty());
178 179
179 // Platform apps cannot have a "page_action" key. 180 // Platform apps cannot have a "page_action" key.
180 MutateManifest( 181 MutateManifest(
181 &manifest, keys::kPageAction, new DictionaryValue()); 182 &manifest, keys::kPageAction, new base::DictionaryValue());
182 AssertType(manifest.get(), Manifest::TYPE_EXTENSION); 183 AssertType(manifest.get(), Manifest::TYPE_EXTENSION);
183 base::Value* output = NULL; 184 base::Value* output = NULL;
184 EXPECT_TRUE(manifest->HasKey(keys::kPageAction)); 185 EXPECT_TRUE(manifest->HasKey(keys::kPageAction));
185 EXPECT_TRUE(manifest->Get(keys::kPageAction, &output)); 186 EXPECT_TRUE(manifest->Get(keys::kPageAction, &output));
186 187
187 MutateManifest( 188 MutateManifest(
188 &manifest, keys::kPlatformAppBackground, new DictionaryValue()); 189 &manifest, keys::kPlatformAppBackground, new base::DictionaryValue());
189 AssertType(manifest.get(), Manifest::TYPE_PLATFORM_APP); 190 AssertType(manifest.get(), Manifest::TYPE_PLATFORM_APP);
190 EXPECT_FALSE(manifest->HasKey(keys::kPageAction)); 191 EXPECT_FALSE(manifest->HasKey(keys::kPageAction));
191 EXPECT_FALSE(manifest->Get(keys::kPageAction, &output)); 192 EXPECT_FALSE(manifest->Get(keys::kPageAction, &output));
192 MutateManifest( 193 MutateManifest(
193 &manifest, keys::kPlatformAppBackground, NULL); 194 &manifest, keys::kPlatformAppBackground, NULL);
194 195
195 // "commands" is restricted to manifest_version >= 2. 196 // "commands" is restricted to manifest_version >= 2.
196 { 197 {
197 // ... and dev channel, for now. 198 // ... and dev channel, for now.
198 Feature::ScopedCurrentChannel dev_channel_scope( 199 Feature::ScopedCurrentChannel dev_channel_scope(
199 chrome::VersionInfo::CHANNEL_DEV); 200 chrome::VersionInfo::CHANNEL_DEV);
200 201
201 MutateManifest( 202 MutateManifest(
202 &manifest, keys::kCommands, new DictionaryValue()); 203 &manifest, keys::kCommands, new base::DictionaryValue());
203 EXPECT_FALSE(manifest->HasKey(keys::kCommands)); 204 EXPECT_FALSE(manifest->HasKey(keys::kCommands));
204 EXPECT_FALSE(manifest->Get(keys::kCommands, &output)); 205 EXPECT_FALSE(manifest->Get(keys::kCommands, &output));
205 206
206 MutateManifest( 207 MutateManifest(
207 &manifest, keys::kManifestVersion, Value::CreateIntegerValue(2)); 208 &manifest, keys::kManifestVersion, new base::FundamentalValue(2));
208 EXPECT_TRUE(manifest->HasKey(keys::kCommands)); 209 EXPECT_TRUE(manifest->HasKey(keys::kCommands));
209 EXPECT_TRUE(manifest->Get(keys::kCommands, &output)); 210 EXPECT_TRUE(manifest->Get(keys::kCommands, &output));
210 } 211 }
211 }; 212 };
212 213
213 } // namespace extensions 214 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698