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

Unified Diff: chrome/common/extensions/features/feature_unittest.cc

Issue 11316164: Implement ComplexFeature to support permission features with multiple rules. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: new Created 8 years 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 side-by-side diff with in-line comments
Download patch
Index: chrome/common/extensions/features/feature_unittest.cc
diff --git a/chrome/common/extensions/features/feature_unittest.cc b/chrome/common/extensions/features/feature_unittest.cc
deleted file mode 100644
index 24134db95eab2818a1459c46918a9f6f679213e2..0000000000000000000000000000000000000000
--- a/chrome/common/extensions/features/feature_unittest.cc
+++ /dev/null
@@ -1,523 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/common/extensions/features/feature.h"
-
-#include "testing/gtest/include/gtest/gtest.h"
-
-using chrome::VersionInfo;
-using extensions::Extension;
-using extensions::Feature;
-
-namespace {
-
-struct IsAvailableTestData {
- std::string extension_id;
- Extension::Type extension_type;
- Feature::Location location;
- Feature::Platform platform;
- int manifest_version;
- Feature::AvailabilityResult expected_result;
-};
-
-class ExtensionFeatureTest : public testing::Test {
- protected:
- ExtensionFeatureTest()
- : current_channel_(VersionInfo::CHANNEL_UNKNOWN) {}
- virtual ~ExtensionFeatureTest() {}
-
- private:
- Feature::ScopedCurrentChannel current_channel_;
-};
-
-TEST_F(ExtensionFeatureTest, IsAvailableNullCase) {
- const IsAvailableTestData tests[] = {
- { "", Extension::TYPE_UNKNOWN,
- Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1,
- Feature::IS_AVAILABLE },
- { "random-extension", Extension::TYPE_UNKNOWN,
- Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1,
- Feature::IS_AVAILABLE },
- { "", Extension::TYPE_LEGACY_PACKAGED_APP,
- Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1,
- Feature::IS_AVAILABLE },
- { "", Extension::TYPE_UNKNOWN,
- Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1,
- Feature::IS_AVAILABLE },
- { "", Extension::TYPE_UNKNOWN,
- Feature::COMPONENT_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1,
- Feature::IS_AVAILABLE },
- { "", Extension::TYPE_UNKNOWN,
- Feature::UNSPECIFIED_LOCATION, Feature::CHROMEOS_PLATFORM, -1,
- Feature::IS_AVAILABLE },
- { "", Extension::TYPE_UNKNOWN,
- Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, 25,
- Feature::IS_AVAILABLE }
- };
-
- Feature feature;
- for (size_t i = 0; i < arraysize(tests); ++i) {
- const IsAvailableTestData& test = tests[i];
- EXPECT_EQ(test.expected_result,
- feature.IsAvailableToManifest(test.extension_id,
- test.extension_type,
- test.location,
- test.manifest_version,
- test.platform).result());
- }
-}
-
-TEST_F(ExtensionFeatureTest, Whitelist) {
- Feature feature;
- feature.whitelist()->insert("foo");
- feature.whitelist()->insert("bar");
-
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
- "foo", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
- Feature::UNSPECIFIED_PLATFORM).result());
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
- "bar", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
- Feature::UNSPECIFIED_PLATFORM).result());
-
- EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest(
- "baz", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
- Feature::UNSPECIFIED_PLATFORM).result());
- EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest(
- "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
- Feature::UNSPECIFIED_PLATFORM).result());
-
- feature.extension_types()->insert(Extension::TYPE_LEGACY_PACKAGED_APP);
- EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest(
- "baz", Extension::TYPE_LEGACY_PACKAGED_APP,
- Feature::UNSPECIFIED_LOCATION, -1,
- Feature::UNSPECIFIED_PLATFORM).result());
-}
-
-TEST_F(ExtensionFeatureTest, PackageType) {
- Feature feature;
- feature.extension_types()->insert(Extension::TYPE_EXTENSION);
- feature.extension_types()->insert(Extension::TYPE_LEGACY_PACKAGED_APP);
-
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
- "", Extension::TYPE_EXTENSION, Feature::UNSPECIFIED_LOCATION, -1,
- Feature::UNSPECIFIED_PLATFORM).result());
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
- "", Extension::TYPE_LEGACY_PACKAGED_APP, Feature::UNSPECIFIED_LOCATION,
- -1, Feature::UNSPECIFIED_PLATFORM).result());
-
- EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToManifest(
- "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
- Feature::UNSPECIFIED_PLATFORM).result());
- EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToManifest(
- "", Extension::TYPE_THEME, Feature::UNSPECIFIED_LOCATION, -1,
- Feature::UNSPECIFIED_PLATFORM).result());
-}
-
-TEST_F(ExtensionFeatureTest, Context) {
- Feature feature;
- feature.contexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT);
- feature.extension_types()->insert(Extension::TYPE_LEGACY_PACKAGED_APP);
- feature.set_platform(Feature::CHROMEOS_PLATFORM);
- feature.set_min_manifest_version(21);
- feature.set_max_manifest_version(25);
-
- DictionaryValue manifest;
- manifest.SetString("name", "test");
- manifest.SetString("version", "1");
- manifest.SetInteger("manifest_version", 21);
- manifest.SetString("app.launch.local_path", "foo.html");
-
- std::string error;
- scoped_refptr<const Extension> extension(Extension::Create(
- FilePath(), Extension::INTERNAL, manifest, Extension::NO_FLAGS, &error));
- EXPECT_EQ("", error);
- ASSERT_TRUE(extension.get());
-
- feature.whitelist()->insert("monkey");
- EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToContext(
- extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
- Feature::CHROMEOS_PLATFORM).result());
- feature.whitelist()->clear();
-
- feature.extension_types()->clear();
- feature.extension_types()->insert(Extension::TYPE_THEME);
- EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToContext(
- extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
- Feature::CHROMEOS_PLATFORM).result());
- feature.extension_types()->clear();
- feature.extension_types()->insert(Extension::TYPE_LEGACY_PACKAGED_APP);
-
- feature.contexts()->clear();
- feature.contexts()->insert(Feature::UNBLESSED_EXTENSION_CONTEXT);
- EXPECT_EQ(Feature::INVALID_CONTEXT, feature.IsAvailableToContext(
- extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
- Feature::CHROMEOS_PLATFORM).result());
- feature.contexts()->clear();
- feature.contexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT);
-
- feature.set_location(Feature::COMPONENT_LOCATION);
- EXPECT_EQ(Feature::INVALID_LOCATION, feature.IsAvailableToContext(
- extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
- Feature::CHROMEOS_PLATFORM).result());
- feature.set_location(Feature::UNSPECIFIED_LOCATION);
-
- EXPECT_EQ(Feature::INVALID_PLATFORM, feature.IsAvailableToContext(
- extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
- Feature::UNSPECIFIED_PLATFORM).result());
-
- feature.set_min_manifest_version(22);
- EXPECT_EQ(Feature::INVALID_MIN_MANIFEST_VERSION, feature.IsAvailableToContext(
- extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
- Feature::CHROMEOS_PLATFORM).result());
- feature.set_min_manifest_version(21);
-
- feature.set_max_manifest_version(18);
- EXPECT_EQ(Feature::INVALID_MAX_MANIFEST_VERSION, feature.IsAvailableToContext(
- extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
- Feature::CHROMEOS_PLATFORM).result());
- feature.set_max_manifest_version(25);
-}
-
-TEST_F(ExtensionFeatureTest, Location) {
- Feature feature;
-
- // If the feature specifies "component" as its location, then only component
- // extensions can access it.
- feature.set_location(Feature::COMPONENT_LOCATION);
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
- "", Extension::TYPE_UNKNOWN, Feature::COMPONENT_LOCATION, -1,
- Feature::UNSPECIFIED_PLATFORM).result());
- EXPECT_EQ(Feature::INVALID_LOCATION, feature.IsAvailableToManifest(
- "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
- Feature::UNSPECIFIED_PLATFORM).result());
-
- // But component extensions can access anything else, whatever their location.
- feature.set_location(Feature::UNSPECIFIED_LOCATION);
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
- "", Extension::TYPE_UNKNOWN, Feature::COMPONENT_LOCATION, -1,
- Feature::UNSPECIFIED_PLATFORM).result());
-}
-
-TEST_F(ExtensionFeatureTest, Platform) {
- Feature feature;
- feature.set_platform(Feature::CHROMEOS_PLATFORM);
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
- "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
- Feature::CHROMEOS_PLATFORM).result());
- EXPECT_EQ(Feature::INVALID_PLATFORM, feature.IsAvailableToManifest(
- "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
- Feature::UNSPECIFIED_PLATFORM).result());
-}
-
-TEST_F(ExtensionFeatureTest, Version) {
- Feature feature;
- feature.set_min_manifest_version(5);
-
- EXPECT_EQ(Feature::INVALID_MIN_MANIFEST_VERSION,
- feature.IsAvailableToManifest(
- "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- 0, Feature::UNSPECIFIED_PLATFORM).result());
- EXPECT_EQ(Feature::INVALID_MIN_MANIFEST_VERSION,
- feature.IsAvailableToManifest(
- "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- 4, Feature::UNSPECIFIED_PLATFORM).result());
-
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
- "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- 5, Feature::UNSPECIFIED_PLATFORM).result());
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
- "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- 10, Feature::UNSPECIFIED_PLATFORM).result());
-
- feature.set_max_manifest_version(8);
-
- EXPECT_EQ(Feature::INVALID_MAX_MANIFEST_VERSION,
- feature.IsAvailableToManifest(
- "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- 10, Feature::UNSPECIFIED_PLATFORM).result());
- EXPECT_EQ(Feature::IS_AVAILABLE,
- feature.IsAvailableToManifest(
- "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- 8, Feature::UNSPECIFIED_PLATFORM).result());
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
- "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- 7, Feature::UNSPECIFIED_PLATFORM).result());
-}
-
-TEST_F(ExtensionFeatureTest, ParseNull) {
- scoped_ptr<DictionaryValue> value(new DictionaryValue());
- scoped_ptr<Feature> feature(new Feature());
- feature->Parse(value.get());
- EXPECT_TRUE(feature->whitelist()->empty());
- EXPECT_TRUE(feature->extension_types()->empty());
- EXPECT_TRUE(feature->contexts()->empty());
- EXPECT_EQ(Feature::UNSPECIFIED_LOCATION, feature->location());
- EXPECT_EQ(Feature::UNSPECIFIED_PLATFORM, feature->platform());
- EXPECT_EQ(0, feature->min_manifest_version());
- EXPECT_EQ(0, feature->max_manifest_version());
-}
-
-TEST_F(ExtensionFeatureTest, ParseWhitelist) {
- scoped_ptr<DictionaryValue> value(new DictionaryValue());
- ListValue* whitelist = new ListValue();
- whitelist->Append(Value::CreateStringValue("foo"));
- whitelist->Append(Value::CreateStringValue("bar"));
- value->Set("whitelist", whitelist);
- scoped_ptr<Feature> feature(new Feature());
- feature->Parse(value.get());
- EXPECT_EQ(2u, feature->whitelist()->size());
- EXPECT_TRUE(feature->whitelist()->count("foo"));
- EXPECT_TRUE(feature->whitelist()->count("bar"));
-}
-
-TEST_F(ExtensionFeatureTest, ParsePackageTypes) {
- scoped_ptr<DictionaryValue> value(new DictionaryValue());
- ListValue* extension_types = new ListValue();
- extension_types->Append(Value::CreateStringValue("extension"));
- extension_types->Append(Value::CreateStringValue("theme"));
- extension_types->Append(Value::CreateStringValue("packaged_app"));
- extension_types->Append(Value::CreateStringValue("hosted_app"));
- extension_types->Append(Value::CreateStringValue("platform_app"));
- value->Set("extension_types", extension_types);
- scoped_ptr<Feature> feature(new Feature());
- feature->Parse(value.get());
- EXPECT_EQ(5u, feature->extension_types()->size());
- EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_EXTENSION));
- EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_THEME));
- EXPECT_TRUE(feature->extension_types()->count(
- Extension::TYPE_LEGACY_PACKAGED_APP));
- EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_HOSTED_APP));
- EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_PLATFORM_APP));
-
- value->SetString("extension_types", "all");
- scoped_ptr<Feature> feature2(new Feature());
- feature2->Parse(value.get());
- EXPECT_EQ(*(feature->extension_types()), *(feature2->extension_types()));
-}
-
-TEST_F(ExtensionFeatureTest, ParseContexts) {
- scoped_ptr<DictionaryValue> value(new DictionaryValue());
- ListValue* contexts = new ListValue();
- contexts->Append(Value::CreateStringValue("blessed_extension"));
- contexts->Append(Value::CreateStringValue("unblessed_extension"));
- contexts->Append(Value::CreateStringValue("content_script"));
- contexts->Append(Value::CreateStringValue("web_page"));
- value->Set("contexts", contexts);
- scoped_ptr<Feature> feature(new Feature());
- feature->Parse(value.get());
- EXPECT_EQ(4u, feature->contexts()->size());
- EXPECT_TRUE(feature->contexts()->count(Feature::BLESSED_EXTENSION_CONTEXT));
- EXPECT_TRUE(feature->contexts()->count(Feature::UNBLESSED_EXTENSION_CONTEXT));
- EXPECT_TRUE(feature->contexts()->count(Feature::CONTENT_SCRIPT_CONTEXT));
- EXPECT_TRUE(feature->contexts()->count(Feature::WEB_PAGE_CONTEXT));
-
- value->SetString("contexts", "all");
- scoped_ptr<Feature> feature2(new Feature());
- feature2->Parse(value.get());
- EXPECT_EQ(*(feature->contexts()), *(feature2->contexts()));
-}
-
-TEST_F(ExtensionFeatureTest, ParseLocation) {
- scoped_ptr<DictionaryValue> value(new DictionaryValue());
- value->SetString("location", "component");
- scoped_ptr<Feature> feature(new Feature());
- feature->Parse(value.get());
- EXPECT_EQ(Feature::COMPONENT_LOCATION, feature->location());
-}
-
-TEST_F(ExtensionFeatureTest, ParsePlatform) {
- scoped_ptr<DictionaryValue> value(new DictionaryValue());
- value->SetString("platform", "chromeos");
- scoped_ptr<Feature> feature(new Feature());
- feature->Parse(value.get());
- EXPECT_EQ(Feature::CHROMEOS_PLATFORM, feature->platform());
-}
-
-TEST_F(ExtensionFeatureTest, ManifestVersion) {
- scoped_ptr<DictionaryValue> value(new DictionaryValue());
- value->SetInteger("min_manifest_version", 1);
- value->SetInteger("max_manifest_version", 5);
- scoped_ptr<Feature> feature(new Feature());
- feature->Parse(value.get());
- EXPECT_EQ(1, feature->min_manifest_version());
- EXPECT_EQ(5, feature->max_manifest_version());
-}
-
-TEST_F(ExtensionFeatureTest, Inheritance) {
- Feature feature;
- feature.whitelist()->insert("foo");
- feature.extension_types()->insert(Extension::TYPE_THEME);
- feature.contexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT);
- feature.set_location(Feature::COMPONENT_LOCATION);
- feature.set_platform(Feature::CHROMEOS_PLATFORM);
- feature.set_min_manifest_version(1);
- feature.set_max_manifest_version(2);
-
- Feature feature2 = feature;
- EXPECT_TRUE(feature2.Equals(feature));
-
- DictionaryValue definition;
- feature2.Parse(&definition);
- EXPECT_TRUE(feature2.Equals(feature));
-
- ListValue* whitelist = new ListValue();
- ListValue* extension_types = new ListValue();
- ListValue* contexts = new ListValue();
- whitelist->Append(Value::CreateStringValue("bar"));
- extension_types->Append(Value::CreateStringValue("extension"));
- contexts->Append(Value::CreateStringValue("unblessed_extension"));
- definition.Set("whitelist", whitelist);
- definition.Set("extension_types", extension_types);
- definition.Set("contexts", contexts);
- // Can't test location or platform because we only have one value so far.
- definition.Set("min_manifest_version", Value::CreateIntegerValue(2));
- definition.Set("max_manifest_version", Value::CreateIntegerValue(3));
-
- feature2.Parse(&definition);
- EXPECT_FALSE(feature2.Equals(feature));
- EXPECT_EQ(1u, feature2.whitelist()->size());
- EXPECT_EQ(1u, feature2.extension_types()->size());
- EXPECT_EQ(1u, feature2.contexts()->size());
- EXPECT_EQ(1u, feature2.whitelist()->count("bar"));
- EXPECT_EQ(1u, feature2.extension_types()->count(Extension::TYPE_EXTENSION));
- EXPECT_EQ(1u,
- feature2.contexts()->count(Feature::UNBLESSED_EXTENSION_CONTEXT));
- EXPECT_EQ(2, feature2.min_manifest_version());
- EXPECT_EQ(3, feature2.max_manifest_version());
-}
-
-TEST_F(ExtensionFeatureTest, Equals) {
- Feature feature;
- feature.whitelist()->insert("foo");
- feature.extension_types()->insert(Extension::TYPE_THEME);
- feature.contexts()->insert(Feature::UNBLESSED_EXTENSION_CONTEXT);
- feature.set_location(Feature::COMPONENT_LOCATION);
- feature.set_platform(Feature::CHROMEOS_PLATFORM);
- feature.set_min_manifest_version(18);
- feature.set_max_manifest_version(25);
-
- Feature feature2(feature);
- EXPECT_TRUE(feature2.Equals(feature));
-
- feature2.whitelist()->clear();
- EXPECT_FALSE(feature2.Equals(feature));
-
- feature2 = feature;
- feature2.extension_types()->clear();
- EXPECT_FALSE(feature2.Equals(feature));
-
- feature2 = feature;
- feature2.contexts()->clear();
- EXPECT_FALSE(feature2.Equals(feature));
-
- feature2 = feature;
- feature2.set_location(Feature::UNSPECIFIED_LOCATION);
- EXPECT_FALSE(feature2.Equals(feature));
-
- feature2 = feature;
- feature2.set_platform(Feature::UNSPECIFIED_PLATFORM);
- EXPECT_FALSE(feature2.Equals(feature));
-
- feature2 = feature;
- feature2.set_min_manifest_version(0);
- EXPECT_FALSE(feature2.Equals(feature));
-
- feature2 = feature;
- feature2.set_max_manifest_version(0);
- EXPECT_FALSE(feature2.Equals(feature));
-}
-
-Feature::AvailabilityResult IsAvailableInChannel(
- const std::string& channel, VersionInfo::Channel channel_for_testing) {
- Feature::ScopedCurrentChannel current_channel(channel_for_testing);
-
- Feature feature;
- if (!channel.empty()) {
- DictionaryValue feature_value;
- feature_value.SetString("channel", channel);
- feature.Parse(&feature_value);
- }
-
- return feature.IsAvailableToManifest(
- "random-extension",
- Extension::TYPE_UNKNOWN,
- Feature::UNSPECIFIED_LOCATION,
- -1).result();
-}
-
-TEST_F(ExtensionFeatureTest, SupportedChannel) {
- // stable supported.
- EXPECT_EQ(Feature::IS_AVAILABLE,
- IsAvailableInChannel("stable", VersionInfo::CHANNEL_UNKNOWN));
- EXPECT_EQ(Feature::IS_AVAILABLE,
- IsAvailableInChannel("stable", VersionInfo::CHANNEL_CANARY));
- EXPECT_EQ(Feature::IS_AVAILABLE,
- IsAvailableInChannel("stable", VersionInfo::CHANNEL_DEV));
- EXPECT_EQ(Feature::IS_AVAILABLE,
- IsAvailableInChannel("stable", VersionInfo::CHANNEL_BETA));
- EXPECT_EQ(Feature::IS_AVAILABLE,
- IsAvailableInChannel("stable", VersionInfo::CHANNEL_STABLE));
-
- // beta supported.
- EXPECT_EQ(Feature::IS_AVAILABLE,
- IsAvailableInChannel("beta", VersionInfo::CHANNEL_UNKNOWN));
- EXPECT_EQ(Feature::IS_AVAILABLE,
- IsAvailableInChannel("beta", VersionInfo::CHANNEL_CANARY));
- EXPECT_EQ(Feature::IS_AVAILABLE,
- IsAvailableInChannel("beta", VersionInfo::CHANNEL_DEV));
- EXPECT_EQ(Feature::IS_AVAILABLE,
- IsAvailableInChannel("beta", VersionInfo::CHANNEL_BETA));
- EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL,
- IsAvailableInChannel("beta", VersionInfo::CHANNEL_STABLE));
-
- // dev supported.
- EXPECT_EQ(Feature::IS_AVAILABLE,
- IsAvailableInChannel("dev", VersionInfo::CHANNEL_UNKNOWN));
- EXPECT_EQ(Feature::IS_AVAILABLE,
- IsAvailableInChannel("dev", VersionInfo::CHANNEL_CANARY));
- EXPECT_EQ(Feature::IS_AVAILABLE,
- IsAvailableInChannel("dev", VersionInfo::CHANNEL_DEV));
- EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL,
- IsAvailableInChannel("dev", VersionInfo::CHANNEL_BETA));
- EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL,
- IsAvailableInChannel("dev", VersionInfo::CHANNEL_STABLE));
-
- // canary supported.
- EXPECT_EQ(Feature::IS_AVAILABLE,
- IsAvailableInChannel("canary", VersionInfo::CHANNEL_UNKNOWN));
- EXPECT_EQ(Feature::IS_AVAILABLE,
- IsAvailableInChannel("canary", VersionInfo::CHANNEL_CANARY));
- EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL,
- IsAvailableInChannel("canary", VersionInfo::CHANNEL_DEV));
- EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL,
- IsAvailableInChannel("canary", VersionInfo::CHANNEL_BETA));
- EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL,
- IsAvailableInChannel("canary", VersionInfo::CHANNEL_STABLE));
-
- // trunk supported.
- EXPECT_EQ(Feature::IS_AVAILABLE,
- IsAvailableInChannel("trunk", VersionInfo::CHANNEL_UNKNOWN));
- EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL,
- IsAvailableInChannel("trunk", VersionInfo::CHANNEL_CANARY));
- EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL,
- IsAvailableInChannel("trunk", VersionInfo::CHANNEL_DEV));
- EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL,
- IsAvailableInChannel("trunk", VersionInfo::CHANNEL_BETA));
- EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL,
- IsAvailableInChannel("trunk", VersionInfo::CHANNEL_STABLE));
-
- // Default supported channel (trunk).
- EXPECT_EQ(Feature::IS_AVAILABLE,
- IsAvailableInChannel("", VersionInfo::CHANNEL_UNKNOWN));
- EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL,
- IsAvailableInChannel("", VersionInfo::CHANNEL_CANARY));
- EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL,
- IsAvailableInChannel("", VersionInfo::CHANNEL_DEV));
- EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL,
- IsAvailableInChannel("", VersionInfo::CHANNEL_BETA));
- EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL,
- IsAvailableInChannel("", VersionInfo::CHANNEL_STABLE));
-}
-
-} // namespace

Powered by Google App Engine
This is Rietveld 408576698