Chromium Code Reviews| OLD | NEW |
|---|---|
| 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/feature.h" | 5 #include "chrome/common/extensions/feature.h" |
| 6 | 6 |
| 7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
| 8 | 8 |
| 9 using chrome::VersionInfo; | |
| 9 using extensions::Feature; | 10 using extensions::Feature; |
| 10 | 11 |
| 11 namespace { | 12 namespace { |
| 12 | 13 |
| 13 struct IsAvailableTestData { | 14 struct IsAvailableTestData { |
| 14 std::string extension_id; | 15 std::string extension_id; |
| 15 Extension::Type extension_type; | 16 Extension::Type extension_type; |
| 16 Feature::Location location; | 17 Feature::Location location; |
| 17 Feature::Platform platform; | 18 Feature::Platform platform; |
| 18 int manifest_version; | 19 int manifest_version; |
| 19 Feature::Availability expected_result; | 20 Feature::Availability expected_result; |
| 20 }; | 21 }; |
| 21 | 22 |
| 22 } // namespace | |
| 23 | |
| 24 TEST(ExtensionFeatureTest, IsAvailableNullCase) { | 23 TEST(ExtensionFeatureTest, IsAvailableNullCase) { |
| 25 const IsAvailableTestData tests[] = { | 24 const IsAvailableTestData tests[] = { |
| 26 { "", Extension::TYPE_UNKNOWN, | 25 { "", Extension::TYPE_UNKNOWN, |
| 27 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, | 26 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, |
| 28 Feature::IS_AVAILABLE }, | 27 Feature::IS_AVAILABLE }, |
| 29 { "random-extension", Extension::TYPE_UNKNOWN, | 28 { "random-extension", Extension::TYPE_UNKNOWN, |
| 30 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, | 29 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, |
| 31 Feature::IS_AVAILABLE }, | 30 Feature::IS_AVAILABLE }, |
| 32 { "", Extension::TYPE_PACKAGED_APP, | 31 { "", Extension::TYPE_PACKAGED_APP, |
| 33 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, | 32 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, |
| (...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 408 EXPECT_FALSE(feature2.Equals(feature)); | 407 EXPECT_FALSE(feature2.Equals(feature)); |
| 409 | 408 |
| 410 feature2 = feature; | 409 feature2 = feature; |
| 411 feature2.set_min_manifest_version(0); | 410 feature2.set_min_manifest_version(0); |
| 412 EXPECT_FALSE(feature2.Equals(feature)); | 411 EXPECT_FALSE(feature2.Equals(feature)); |
| 413 | 412 |
| 414 feature2 = feature; | 413 feature2 = feature; |
| 415 feature2.set_max_manifest_version(0); | 414 feature2.set_max_manifest_version(0); |
| 416 EXPECT_FALSE(feature2.Equals(feature)); | 415 EXPECT_FALSE(feature2.Equals(feature)); |
| 417 } | 416 } |
| 417 | |
| 418 Feature::Availability IsAvailableInChannel( | |
| 419 const std::string& supported_channel, VersionInfo::Channel channel) { | |
| 420 Feature feature; | |
| 421 feature.SetChannelForTesting(channel); | |
| 422 | |
| 423 if (!supported_channel.empty()) { | |
| 424 DictionaryValue feature_value; | |
| 425 feature_value.SetString("supported_channel", supported_channel); | |
| 426 feature.Parse(&feature_value); | |
| 427 } | |
| 428 | |
| 429 return feature.IsAvailableToManifest( | |
| 430 "random-extension", | |
| 431 Extension::TYPE_UNKNOWN, | |
| 432 Feature::UNSPECIFIED_LOCATION, | |
| 433 -1); | |
| 434 } | |
| 435 | |
| 436 TEST(ExtensionFeatureTest, SupportedChannel) { | |
| 437 // Default supported channel (stable). | |
|
Aaron Boodman
2012/04/11 23:35:53
I thought the default was going to be trunk.
not at google - send to devlin
2012/04/12 00:05:21
Mm, we went back and forth, I can't remember. Yeah
| |
| 438 EXPECT_EQ(Feature::IS_AVAILABLE, | |
| 439 IsAvailableInChannel("", VersionInfo::CHANNEL_UNKNOWN)); | |
| 440 EXPECT_EQ(Feature::IS_AVAILABLE, | |
| 441 IsAvailableInChannel("", VersionInfo::CHANNEL_CANARY)); | |
| 442 EXPECT_EQ(Feature::IS_AVAILABLE, | |
| 443 IsAvailableInChannel("", VersionInfo::CHANNEL_DEV)); | |
| 444 EXPECT_EQ(Feature::IS_AVAILABLE, | |
| 445 IsAvailableInChannel("", VersionInfo::CHANNEL_BETA)); | |
| 446 EXPECT_EQ(Feature::IS_AVAILABLE, | |
| 447 IsAvailableInChannel("", VersionInfo::CHANNEL_STABLE)); | |
| 448 | |
| 449 // stable supported. | |
| 450 EXPECT_EQ(Feature::IS_AVAILABLE, | |
| 451 IsAvailableInChannel("stable", VersionInfo::CHANNEL_UNKNOWN)); | |
| 452 EXPECT_EQ(Feature::IS_AVAILABLE, | |
| 453 IsAvailableInChannel("stable", VersionInfo::CHANNEL_CANARY)); | |
| 454 EXPECT_EQ(Feature::IS_AVAILABLE, | |
| 455 IsAvailableInChannel("stable", VersionInfo::CHANNEL_DEV)); | |
| 456 EXPECT_EQ(Feature::IS_AVAILABLE, | |
| 457 IsAvailableInChannel("stable", VersionInfo::CHANNEL_BETA)); | |
| 458 EXPECT_EQ(Feature::IS_AVAILABLE, | |
| 459 IsAvailableInChannel("stable", VersionInfo::CHANNEL_STABLE)); | |
| 460 | |
| 461 // beta supported. | |
| 462 EXPECT_EQ(Feature::IS_AVAILABLE, | |
| 463 IsAvailableInChannel("beta", VersionInfo::CHANNEL_UNKNOWN)); | |
| 464 EXPECT_EQ(Feature::IS_AVAILABLE, | |
| 465 IsAvailableInChannel("beta", VersionInfo::CHANNEL_CANARY)); | |
| 466 EXPECT_EQ(Feature::IS_AVAILABLE, | |
| 467 IsAvailableInChannel("beta", VersionInfo::CHANNEL_DEV)); | |
| 468 EXPECT_EQ(Feature::IS_AVAILABLE, | |
| 469 IsAvailableInChannel("beta", VersionInfo::CHANNEL_BETA)); | |
| 470 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | |
| 471 IsAvailableInChannel("beta", VersionInfo::CHANNEL_STABLE)); | |
| 472 | |
| 473 // dev supported. | |
| 474 EXPECT_EQ(Feature::IS_AVAILABLE, | |
| 475 IsAvailableInChannel("dev", VersionInfo::CHANNEL_UNKNOWN)); | |
| 476 EXPECT_EQ(Feature::IS_AVAILABLE, | |
| 477 IsAvailableInChannel("dev", VersionInfo::CHANNEL_CANARY)); | |
| 478 EXPECT_EQ(Feature::IS_AVAILABLE, | |
| 479 IsAvailableInChannel("dev", VersionInfo::CHANNEL_DEV)); | |
| 480 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | |
| 481 IsAvailableInChannel("dev", VersionInfo::CHANNEL_BETA)); | |
| 482 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | |
| 483 IsAvailableInChannel("dev", VersionInfo::CHANNEL_STABLE)); | |
| 484 | |
| 485 // canary supported. | |
| 486 EXPECT_EQ(Feature::IS_AVAILABLE, | |
| 487 IsAvailableInChannel("canary", VersionInfo::CHANNEL_UNKNOWN)); | |
| 488 EXPECT_EQ(Feature::IS_AVAILABLE, | |
| 489 IsAvailableInChannel("canary", VersionInfo::CHANNEL_CANARY)); | |
| 490 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | |
| 491 IsAvailableInChannel("canary", VersionInfo::CHANNEL_DEV)); | |
| 492 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | |
| 493 IsAvailableInChannel("canary", VersionInfo::CHANNEL_BETA)); | |
| 494 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | |
| 495 IsAvailableInChannel("canary", VersionInfo::CHANNEL_STABLE)); | |
| 496 | |
| 497 // trunk supported. | |
| 498 EXPECT_EQ(Feature::IS_AVAILABLE, | |
| 499 IsAvailableInChannel("trunk", VersionInfo::CHANNEL_UNKNOWN)); | |
| 500 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | |
| 501 IsAvailableInChannel("trunk", VersionInfo::CHANNEL_CANARY)); | |
| 502 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | |
| 503 IsAvailableInChannel("trunk", VersionInfo::CHANNEL_DEV)); | |
| 504 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | |
| 505 IsAvailableInChannel("trunk", VersionInfo::CHANNEL_BETA)); | |
| 506 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | |
| 507 IsAvailableInChannel("trunk", VersionInfo::CHANNEL_STABLE)); | |
| 508 } | |
| 509 | |
| 510 } // namespace | |
| OLD | NEW |