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

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

Issue 6324004: Made return types of various Value::DeepCopy() implementations more specific (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add test for covariant return types Created 9 years, 11 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) 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
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
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
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
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 }
OLDNEW
« no previous file with comments | « chrome/common/extensions/extension.cc ('k') | chrome/service/cloud_print/cloud_print_proxy_backend.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698