| 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 |