OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/extension.h" | 5 #include "chrome/common/extensions/extension.h" |
6 | 6 |
7 #if defined(TOOLKIT_GTK) | 7 #if defined(TOOLKIT_GTK) |
8 #include <gtk/gtk.h> | 8 #include <gtk/gtk.h> |
9 #endif | 9 #endif |
10 | 10 |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
105 EXPECT_EQ("", error); | 105 EXPECT_EQ("", error); |
106 EXPECT_EQ(0, error_code); | 106 EXPECT_EQ(0, error_code); |
107 ASSERT_TRUE(valid_value.get()); | 107 ASSERT_TRUE(valid_value.get()); |
108 ASSERT_TRUE(extension.InitFromValue(*valid_value, true, &error)); | 108 ASSERT_TRUE(extension.InitFromValue(*valid_value, true, &error)); |
109 ASSERT_EQ("", error); | 109 ASSERT_EQ("", error); |
110 EXPECT_EQ("en_US", extension.default_locale()); | 110 EXPECT_EQ("en_US", extension.default_locale()); |
111 | 111 |
112 scoped_ptr<DictionaryValue> input_value; | 112 scoped_ptr<DictionaryValue> input_value; |
113 | 113 |
114 // Test missing and invalid versions | 114 // Test missing and invalid versions |
115 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); | 115 input_value.reset(valid_value->DeepCopy()); |
116 input_value->Remove(keys::kVersion, NULL); | 116 input_value->Remove(keys::kVersion, NULL); |
117 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); | 117 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); |
118 EXPECT_EQ(errors::kInvalidVersion, error); | 118 EXPECT_EQ(errors::kInvalidVersion, error); |
119 | 119 |
120 input_value->SetInteger(keys::kVersion, 42); | 120 input_value->SetInteger(keys::kVersion, 42); |
121 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); | 121 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); |
122 EXPECT_EQ(errors::kInvalidVersion, error); | 122 EXPECT_EQ(errors::kInvalidVersion, error); |
123 | 123 |
124 // Test missing and invalid names. | 124 // Test missing and invalid names. |
125 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); | 125 input_value.reset(valid_value->DeepCopy()); |
126 input_value->Remove(keys::kName, NULL); | 126 input_value->Remove(keys::kName, NULL); |
127 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); | 127 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); |
128 EXPECT_EQ(errors::kInvalidName, error); | 128 EXPECT_EQ(errors::kInvalidName, error); |
129 | 129 |
130 input_value->SetInteger(keys::kName, 42); | 130 input_value->SetInteger(keys::kName, 42); |
131 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); | 131 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); |
132 EXPECT_EQ(errors::kInvalidName, error); | 132 EXPECT_EQ(errors::kInvalidName, error); |
133 | 133 |
134 // Test invalid description | 134 // Test invalid description |
135 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); | 135 input_value.reset(valid_value->DeepCopy()); |
136 input_value->SetInteger(keys::kDescription, 42); | 136 input_value->SetInteger(keys::kDescription, 42); |
137 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); | 137 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); |
138 EXPECT_EQ(errors::kInvalidDescription, error); | 138 EXPECT_EQ(errors::kInvalidDescription, error); |
139 | 139 |
140 // Test invalid icons | 140 // Test invalid icons |
141 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); | 141 input_value.reset(valid_value->DeepCopy()); |
142 input_value->SetInteger(keys::kIcons, 42); | 142 input_value->SetInteger(keys::kIcons, 42); |
143 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); | 143 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); |
144 EXPECT_EQ(errors::kInvalidIcons, error); | 144 EXPECT_EQ(errors::kInvalidIcons, error); |
145 | 145 |
146 // Test invalid icon paths | 146 // Test invalid icon paths |
147 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); | 147 input_value.reset(valid_value->DeepCopy()); |
148 DictionaryValue* icons = NULL; | 148 DictionaryValue* icons = NULL; |
149 input_value->GetDictionary(keys::kIcons, &icons); | 149 input_value->GetDictionary(keys::kIcons, &icons); |
150 ASSERT_FALSE(NULL == icons); | 150 ASSERT_FALSE(NULL == icons); |
151 icons->SetInteger(base::IntToString(128), 42); | 151 icons->SetInteger(base::IntToString(128), 42); |
152 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); | 152 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); |
153 EXPECT_TRUE(MatchPattern(error, errors::kInvalidIconPath)); | 153 EXPECT_TRUE(MatchPattern(error, errors::kInvalidIconPath)); |
154 | 154 |
155 // Test invalid user scripts list | 155 // Test invalid user scripts list |
156 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); | 156 input_value.reset(valid_value->DeepCopy()); |
157 input_value->SetInteger(keys::kContentScripts, 42); | 157 input_value->SetInteger(keys::kContentScripts, 42); |
158 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); | 158 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); |
159 EXPECT_EQ(errors::kInvalidContentScriptsList, error); | 159 EXPECT_EQ(errors::kInvalidContentScriptsList, error); |
160 | 160 |
161 // Test invalid user script item | 161 // Test invalid user script item |
162 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); | 162 input_value.reset(valid_value->DeepCopy()); |
163 ListValue* content_scripts = NULL; | 163 ListValue* content_scripts = NULL; |
164 input_value->GetList(keys::kContentScripts, &content_scripts); | 164 input_value->GetList(keys::kContentScripts, &content_scripts); |
165 ASSERT_FALSE(NULL == content_scripts); | 165 ASSERT_FALSE(NULL == content_scripts); |
166 content_scripts->Set(0, Value::CreateIntegerValue(42)); | 166 content_scripts->Set(0, Value::CreateIntegerValue(42)); |
167 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); | 167 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); |
168 EXPECT_TRUE(MatchPattern(error, errors::kInvalidContentScript)); | 168 EXPECT_TRUE(MatchPattern(error, errors::kInvalidContentScript)); |
169 | 169 |
170 // Test missing and invalid matches array | 170 // Test missing and invalid matches array |
171 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); | 171 input_value.reset(valid_value->DeepCopy()); |
172 input_value->GetList(keys::kContentScripts, &content_scripts); | 172 input_value->GetList(keys::kContentScripts, &content_scripts); |
173 DictionaryValue* user_script = NULL; | 173 DictionaryValue* user_script = NULL; |
174 content_scripts->GetDictionary(0, &user_script); | 174 content_scripts->GetDictionary(0, &user_script); |
175 user_script->Remove(keys::kMatches, NULL); | 175 user_script->Remove(keys::kMatches, NULL); |
176 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); | 176 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); |
177 EXPECT_TRUE(MatchPattern(error, errors::kInvalidMatches)); | 177 EXPECT_TRUE(MatchPattern(error, errors::kInvalidMatches)); |
178 | 178 |
179 user_script->Set(keys::kMatches, Value::CreateIntegerValue(42)); | 179 user_script->Set(keys::kMatches, Value::CreateIntegerValue(42)); |
180 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); | 180 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); |
181 EXPECT_TRUE(MatchPattern(error, errors::kInvalidMatches)); | 181 EXPECT_TRUE(MatchPattern(error, errors::kInvalidMatches)); |
182 | 182 |
183 ListValue* matches = new ListValue; | 183 ListValue* matches = new ListValue; |
184 user_script->Set(keys::kMatches, matches); | 184 user_script->Set(keys::kMatches, matches); |
185 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); | 185 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); |
186 EXPECT_TRUE(MatchPattern(error, errors::kInvalidMatchCount)); | 186 EXPECT_TRUE(MatchPattern(error, errors::kInvalidMatchCount)); |
187 | 187 |
188 // Test invalid match element | 188 // Test invalid match element |
189 matches->Set(0, Value::CreateIntegerValue(42)); | 189 matches->Set(0, Value::CreateIntegerValue(42)); |
190 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); | 190 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); |
191 EXPECT_TRUE(MatchPattern(error, errors::kInvalidMatch)); | 191 EXPECT_TRUE(MatchPattern(error, errors::kInvalidMatch)); |
192 | 192 |
193 matches->Set(0, Value::CreateStringValue("chrome://*/*")); | 193 matches->Set(0, Value::CreateStringValue("chrome://*/*")); |
194 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); | 194 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); |
195 EXPECT_TRUE(MatchPattern(error, errors::kInvalidMatch)); | 195 EXPECT_TRUE(MatchPattern(error, errors::kInvalidMatch)); |
196 | 196 |
197 // Test missing and invalid files array | 197 // Test missing and invalid files array |
198 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); | 198 input_value.reset(valid_value->DeepCopy()); |
199 input_value->GetList(keys::kContentScripts, &content_scripts); | 199 input_value->GetList(keys::kContentScripts, &content_scripts); |
200 content_scripts->GetDictionary(0, &user_script); | 200 content_scripts->GetDictionary(0, &user_script); |
201 user_script->Remove(keys::kJs, NULL); | 201 user_script->Remove(keys::kJs, NULL); |
202 user_script->Remove(keys::kCss, NULL); | 202 user_script->Remove(keys::kCss, NULL); |
203 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); | 203 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); |
204 EXPECT_TRUE(MatchPattern(error, errors::kMissingFile)); | 204 EXPECT_TRUE(MatchPattern(error, errors::kMissingFile)); |
205 | 205 |
206 user_script->Set(keys::kJs, Value::CreateIntegerValue(42)); | 206 user_script->Set(keys::kJs, Value::CreateIntegerValue(42)); |
207 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); | 207 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); |
208 EXPECT_TRUE(MatchPattern(error, errors::kInvalidJsList)); | 208 EXPECT_TRUE(MatchPattern(error, errors::kInvalidJsList)); |
(...skipping 21 matching lines...) Expand all Loading... |
230 EXPECT_TRUE(MatchPattern(error, errors::kInvalidCssList)); | 230 EXPECT_TRUE(MatchPattern(error, errors::kInvalidCssList)); |
231 | 231 |
232 // Test invalid file element | 232 // Test invalid file element |
233 ListValue* css_files = new ListValue; | 233 ListValue* css_files = new ListValue; |
234 user_script->Set(keys::kCss, css_files); | 234 user_script->Set(keys::kCss, css_files); |
235 css_files->Set(0, Value::CreateIntegerValue(42)); | 235 css_files->Set(0, Value::CreateIntegerValue(42)); |
236 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); | 236 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); |
237 EXPECT_TRUE(MatchPattern(error, errors::kInvalidCss)); | 237 EXPECT_TRUE(MatchPattern(error, errors::kInvalidCss)); |
238 | 238 |
239 // Test missing and invalid permissions array | 239 // Test missing and invalid permissions array |
240 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); | 240 input_value.reset(valid_value->DeepCopy()); |
241 EXPECT_TRUE(extension.InitFromValue(*input_value, true, &error)); | 241 EXPECT_TRUE(extension.InitFromValue(*input_value, true, &error)); |
242 ListValue* permissions = NULL; | 242 ListValue* permissions = NULL; |
243 input_value->GetList(keys::kPermissions, &permissions); | 243 input_value->GetList(keys::kPermissions, &permissions); |
244 ASSERT_FALSE(NULL == permissions); | 244 ASSERT_FALSE(NULL == permissions); |
245 | 245 |
246 permissions = new ListValue; | 246 permissions = new ListValue; |
247 input_value->Set(keys::kPermissions, permissions); | 247 input_value->Set(keys::kPermissions, permissions); |
248 EXPECT_TRUE(extension.InitFromValue(*input_value, true, &error)); | 248 EXPECT_TRUE(extension.InitFromValue(*input_value, true, &error)); |
249 | 249 |
250 input_value->Set(keys::kPermissions, Value::CreateIntegerValue(9)); | 250 input_value->Set(keys::kPermissions, Value::CreateIntegerValue(9)); |
251 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); | 251 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); |
252 EXPECT_TRUE(MatchPattern(error, errors::kInvalidPermissions)); | 252 EXPECT_TRUE(MatchPattern(error, errors::kInvalidPermissions)); |
253 | 253 |
254 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); | 254 input_value.reset(valid_value->DeepCopy()); |
255 input_value->GetList(keys::kPermissions, &permissions); | 255 input_value->GetList(keys::kPermissions, &permissions); |
256 permissions->Set(0, Value::CreateIntegerValue(24)); | 256 permissions->Set(0, Value::CreateIntegerValue(24)); |
257 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); | 257 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); |
258 EXPECT_TRUE(MatchPattern(error, errors::kInvalidPermission)); | 258 EXPECT_TRUE(MatchPattern(error, errors::kInvalidPermission)); |
259 | 259 |
260 // We allow unknown API permissions, so this will be valid until we better | 260 // We allow unknown API permissions, so this will be valid until we better |
261 // distinguish between API and host permissions. | 261 // distinguish between API and host permissions. |
262 permissions->Set(0, Value::CreateStringValue("www.google.com")); | 262 permissions->Set(0, Value::CreateStringValue("www.google.com")); |
263 EXPECT_TRUE(extension.InitFromValue(*input_value, true, &error)); | 263 EXPECT_TRUE(extension.InitFromValue(*input_value, true, &error)); |
264 | 264 |
265 // Multiple page actions are not allowed. | 265 // Multiple page actions are not allowed. |
266 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); | 266 input_value.reset(valid_value->DeepCopy()); |
267 DictionaryValue* action = new DictionaryValue; | 267 DictionaryValue* action = new DictionaryValue; |
268 action->SetString(keys::kPageActionId, "MyExtensionActionId"); | 268 action->SetString(keys::kPageActionId, "MyExtensionActionId"); |
269 action->SetString(keys::kName, "MyExtensionActionName"); | 269 action->SetString(keys::kName, "MyExtensionActionName"); |
270 ListValue* action_list = new ListValue; | 270 ListValue* action_list = new ListValue; |
271 action_list->Append(action->DeepCopy()); | 271 action_list->Append(action->DeepCopy()); |
272 action_list->Append(action); | 272 action_list->Append(action); |
273 input_value->Set(keys::kPageActions, action_list); | 273 input_value->Set(keys::kPageActions, action_list); |
274 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); | 274 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); |
275 EXPECT_STREQ(errors::kInvalidPageActionsListSize, error.c_str()); | 275 EXPECT_STREQ(errors::kInvalidPageActionsListSize, error.c_str()); |
276 | 276 |
277 // Test invalid options page url. | 277 // Test invalid options page url. |
278 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); | 278 input_value.reset(valid_value->DeepCopy()); |
279 input_value->Set(keys::kOptionsPage, Value::CreateNullValue()); | 279 input_value->Set(keys::kOptionsPage, Value::CreateNullValue()); |
280 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); | 280 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); |
281 EXPECT_TRUE(MatchPattern(error, errors::kInvalidOptionsPage)); | 281 EXPECT_TRUE(MatchPattern(error, errors::kInvalidOptionsPage)); |
282 | 282 |
283 // Test invalid/empty default locale. | 283 // Test invalid/empty default locale. |
284 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); | 284 input_value.reset(valid_value->DeepCopy()); |
285 input_value->Set(keys::kDefaultLocale, Value::CreateIntegerValue(5)); | 285 input_value->Set(keys::kDefaultLocale, Value::CreateIntegerValue(5)); |
286 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); | 286 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); |
287 EXPECT_TRUE(MatchPattern(error, errors::kInvalidDefaultLocale)); | 287 EXPECT_TRUE(MatchPattern(error, errors::kInvalidDefaultLocale)); |
288 | 288 |
289 input_value->Set(keys::kDefaultLocale, Value::CreateStringValue("")); | 289 input_value->Set(keys::kDefaultLocale, Value::CreateStringValue("")); |
290 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); | 290 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); |
291 EXPECT_TRUE(MatchPattern(error, errors::kInvalidDefaultLocale)); | 291 EXPECT_TRUE(MatchPattern(error, errors::kInvalidDefaultLocale)); |
292 | 292 |
293 // Test invalid minimum_chrome_version. | 293 // Test invalid minimum_chrome_version. |
294 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); | 294 input_value.reset(valid_value->DeepCopy()); |
295 input_value->Set(keys::kMinimumChromeVersion, Value::CreateIntegerValue(42)); | 295 input_value->Set(keys::kMinimumChromeVersion, Value::CreateIntegerValue(42)); |
296 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); | 296 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); |
297 EXPECT_TRUE(MatchPattern(error, errors::kInvalidMinimumChromeVersion)); | 297 EXPECT_TRUE(MatchPattern(error, errors::kInvalidMinimumChromeVersion)); |
298 | 298 |
299 #if !defined(OS_MACOSX) | 299 #if !defined(OS_MACOSX) |
300 // TODO(aa): The version isn't stamped into the unit test binary on mac. | 300 // TODO(aa): The version isn't stamped into the unit test binary on mac. |
301 input_value->Set(keys::kMinimumChromeVersion, | 301 input_value->Set(keys::kMinimumChromeVersion, |
302 Value::CreateStringValue("88.8")); | 302 Value::CreateStringValue("88.8")); |
303 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); | 303 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); |
304 EXPECT_TRUE(MatchPattern(error, errors::kChromeVersionTooLow)); | 304 EXPECT_TRUE(MatchPattern(error, errors::kChromeVersionTooLow)); |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
479 input.SetString(keys::kType, values::kPageActionTypeTab); | 479 input.SetString(keys::kType, values::kPageActionTypeTab); |
480 action.reset(extension.LoadExtensionActionHelper(&input, &error_msg)); | 480 action.reset(extension.LoadExtensionActionHelper(&input, &error_msg)); |
481 ASSERT_TRUE(NULL != action.get()); | 481 ASSERT_TRUE(NULL != action.get()); |
482 ASSERT_TRUE(error_msg.empty()); | 482 ASSERT_TRUE(error_msg.empty()); |
483 | 483 |
484 // Make a deep copy of the input and remove one key at a time and see if we | 484 // Make a deep copy of the input and remove one key at a time and see if we |
485 // get the right error. | 485 // get the right error. |
486 scoped_ptr<DictionaryValue> copy; | 486 scoped_ptr<DictionaryValue> copy; |
487 | 487 |
488 // First remove id key. | 488 // First remove id key. |
489 copy.reset(static_cast<DictionaryValue*>(input.DeepCopy())); | 489 copy.reset(input.DeepCopy()); |
490 copy->Remove(keys::kPageActionId, NULL); | 490 copy->Remove(keys::kPageActionId, NULL); |
491 action.reset(extension.LoadExtensionActionHelper(copy.get(), &error_msg)); | 491 action.reset(extension.LoadExtensionActionHelper(copy.get(), &error_msg)); |
492 ASSERT_TRUE(NULL != action.get()); | 492 ASSERT_TRUE(NULL != action.get()); |
493 | 493 |
494 // Then remove the name key. It's optional, so no error. | 494 // Then remove the name key. It's optional, so no error. |
495 copy.reset(static_cast<DictionaryValue*>(input.DeepCopy())); | 495 copy.reset(input.DeepCopy()); |
496 copy->Remove(keys::kName, NULL); | 496 copy->Remove(keys::kName, NULL); |
497 action.reset(extension.LoadExtensionActionHelper(copy.get(), &error_msg)); | 497 action.reset(extension.LoadExtensionActionHelper(copy.get(), &error_msg)); |
498 ASSERT_TRUE(NULL != action.get()); | 498 ASSERT_TRUE(NULL != action.get()); |
499 ASSERT_TRUE(action->GetTitle(1).empty()); | 499 ASSERT_TRUE(action->GetTitle(1).empty()); |
500 ASSERT_TRUE(error_msg.empty()); | 500 ASSERT_TRUE(error_msg.empty()); |
501 | 501 |
502 // Then remove the icon paths key. | 502 // Then remove the icon paths key. |
503 copy.reset(static_cast<DictionaryValue*>(input.DeepCopy())); | 503 copy.reset(input.DeepCopy()); |
504 copy->Remove(keys::kPageActionIcons, NULL); | 504 copy->Remove(keys::kPageActionIcons, NULL); |
505 action.reset(extension.LoadExtensionActionHelper(copy.get(), &error_msg)); | 505 action.reset(extension.LoadExtensionActionHelper(copy.get(), &error_msg)); |
506 ASSERT_TRUE(NULL != action.get()); | 506 ASSERT_TRUE(NULL != action.get()); |
507 error_msg = ""; | 507 error_msg = ""; |
508 | 508 |
509 // Now test that we can parse the new format for page actions. | 509 // Now test that we can parse the new format for page actions. |
510 | 510 |
511 // Now setup some values to use in the page action. | 511 // Now setup some values to use in the page action. |
512 const std::string kTitle("MyExtensionActionTitle"); | 512 const std::string kTitle("MyExtensionActionTitle"); |
513 const std::string kIcon("image1.png"); | 513 const std::string kIcon("image1.png"); |
(...skipping 762 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1276 EXPECT_TRUE(Extension::GenerateId("test", &result)); | 1276 EXPECT_TRUE(Extension::GenerateId("test", &result)); |
1277 EXPECT_EQ(result, "jpignaibiiemhngfjkcpokkamffknabf"); | 1277 EXPECT_EQ(result, "jpignaibiiemhngfjkcpokkamffknabf"); |
1278 | 1278 |
1279 EXPECT_TRUE(Extension::GenerateId("_", &result)); | 1279 EXPECT_TRUE(Extension::GenerateId("_", &result)); |
1280 EXPECT_EQ(result, "ncocknphbhhlhkikpnnlmbcnbgdempcd"); | 1280 EXPECT_EQ(result, "ncocknphbhhlhkikpnnlmbcnbgdempcd"); |
1281 | 1281 |
1282 EXPECT_TRUE(Extension::GenerateId( | 1282 EXPECT_TRUE(Extension::GenerateId( |
1283 "this_string_is_longer_than_a_single_sha256_hash_digest", &result)); | 1283 "this_string_is_longer_than_a_single_sha256_hash_digest", &result)); |
1284 EXPECT_EQ(result, "jimneklojkjdibfkgiiophfhjhbdgcfi"); | 1284 EXPECT_EQ(result, "jimneklojkjdibfkgiiophfhjhbdgcfi"); |
1285 } | 1285 } |
OLD | NEW |