Index: extensions/common/features/simple_feature_unittest.cc |
diff --git a/extensions/common/features/simple_feature_unittest.cc b/extensions/common/features/simple_feature_unittest.cc |
index aa84bf82becaebd335d9dd875bd463023455a795..8202e4992b7681a1a406aaa3e158d65dc63fee76 100644 |
--- a/extensions/common/features/simple_feature_unittest.cc |
+++ b/extensions/common/features/simple_feature_unittest.cc |
@@ -23,12 +23,25 @@ namespace { |
struct IsAvailableTestData { |
std::string extension_id; |
Manifest::Type extension_type; |
- Feature::Location location; |
+ Manifest::Location location; |
Feature::Platform platform; |
int manifest_version; |
Feature::AvailabilityResult expected_result; |
}; |
+template <typename T> |
+std::set<T> Set(const T& t) { |
+ std::set<T> set; |
+ set.insert(t); |
+ return set; |
+} |
+template <typename T> |
+std::set<T> Set(const T& t1, const T& t2) { |
+ std::set<T> set = Set(t1); |
+ set.insert(t2); |
+ return set; |
+} |
+ |
class ExtensionSimpleFeatureTest : public testing::Test { |
protected: |
ExtensionSimpleFeatureTest() |
@@ -41,28 +54,20 @@ class ExtensionSimpleFeatureTest : public testing::Test { |
TEST_F(ExtensionSimpleFeatureTest, IsAvailableNullCase) { |
const IsAvailableTestData tests[] = { |
- { "", Manifest::TYPE_UNKNOWN, |
- Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, |
- Feature::IS_AVAILABLE }, |
- { "random-extension", Manifest::TYPE_UNKNOWN, |
- Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, |
- Feature::IS_AVAILABLE }, |
- { "", Manifest::TYPE_LEGACY_PACKAGED_APP, |
- Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, |
- Feature::IS_AVAILABLE }, |
- { "", Manifest::TYPE_UNKNOWN, |
- Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, |
- Feature::IS_AVAILABLE }, |
- { "", Manifest::TYPE_UNKNOWN, |
- Feature::COMPONENT_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, |
- Feature::IS_AVAILABLE }, |
- { "", Manifest::TYPE_UNKNOWN, |
- Feature::UNSPECIFIED_LOCATION, Feature::CHROMEOS_PLATFORM, -1, |
- Feature::IS_AVAILABLE }, |
- { "", Manifest::TYPE_UNKNOWN, |
- Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, 25, |
- Feature::IS_AVAILABLE } |
- }; |
+ {"", Manifest::TYPE_UNKNOWN, Manifest::INVALID_LOCATION, |
+ Feature::UNSPECIFIED_PLATFORM, -1, Feature::IS_AVAILABLE}, |
+ {"random-extension", Manifest::TYPE_UNKNOWN, Manifest::INVALID_LOCATION, |
+ Feature::UNSPECIFIED_PLATFORM, -1, Feature::IS_AVAILABLE}, |
+ {"", Manifest::TYPE_LEGACY_PACKAGED_APP, Manifest::INVALID_LOCATION, |
+ Feature::UNSPECIFIED_PLATFORM, -1, Feature::IS_AVAILABLE}, |
+ {"", Manifest::TYPE_UNKNOWN, Manifest::INVALID_LOCATION, |
+ Feature::UNSPECIFIED_PLATFORM, -1, Feature::IS_AVAILABLE}, |
+ {"", Manifest::TYPE_UNKNOWN, Manifest::COMPONENT, |
+ Feature::UNSPECIFIED_PLATFORM, -1, Feature::IS_AVAILABLE}, |
+ {"", Manifest::TYPE_UNKNOWN, Manifest::INVALID_LOCATION, |
+ Feature::CHROMEOS_PLATFORM, -1, Feature::IS_AVAILABLE}, |
+ {"", Manifest::TYPE_UNKNOWN, Manifest::INVALID_LOCATION, |
+ Feature::UNSPECIFIED_PLATFORM, 25, Feature::IS_AVAILABLE}}; |
SimpleFeature feature; |
for (size_t i = 0; i < arraysize(tests); ++i) { |
@@ -84,29 +89,44 @@ TEST_F(ExtensionSimpleFeatureTest, Whitelist) { |
feature.whitelist()->insert(kIdFoo); |
feature.whitelist()->insert(kIdBar); |
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( |
- kIdFoo, Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, |
- Feature::UNSPECIFIED_PLATFORM).result()); |
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( |
- kIdBar, Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, |
- Feature::UNSPECIFIED_PLATFORM).result()); |
+ EXPECT_EQ( |
+ Feature::IS_AVAILABLE, |
+ feature.IsAvailableToManifest(kIdFoo, |
+ Manifest::TYPE_UNKNOWN, |
+ Manifest::INVALID_LOCATION, |
+ -1, |
+ Feature::UNSPECIFIED_PLATFORM).result()); |
+ EXPECT_EQ( |
+ Feature::IS_AVAILABLE, |
+ feature.IsAvailableToManifest(kIdBar, |
+ Manifest::TYPE_UNKNOWN, |
+ Manifest::INVALID_LOCATION, |
+ -1, |
+ Feature::UNSPECIFIED_PLATFORM).result()); |
- EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest( |
- kIdBaz, Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, |
- Feature::UNSPECIFIED_PLATFORM).result()); |
+ EXPECT_EQ( |
+ Feature::NOT_FOUND_IN_WHITELIST, |
+ feature.IsAvailableToManifest(kIdBaz, |
+ Manifest::TYPE_UNKNOWN, |
+ Manifest::INVALID_LOCATION, |
+ -1, |
+ Feature::UNSPECIFIED_PLATFORM).result()); |
EXPECT_EQ( |
Feature::NOT_FOUND_IN_WHITELIST, |
feature.IsAvailableToManifest(std::string(), |
Manifest::TYPE_UNKNOWN, |
- Feature::UNSPECIFIED_LOCATION, |
+ Manifest::INVALID_LOCATION, |
-1, |
Feature::UNSPECIFIED_PLATFORM).result()); |
feature.extension_types()->insert(Manifest::TYPE_LEGACY_PACKAGED_APP); |
- EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest( |
- kIdBaz, Manifest::TYPE_LEGACY_PACKAGED_APP, |
- Feature::UNSPECIFIED_LOCATION, -1, |
- Feature::UNSPECIFIED_PLATFORM).result()); |
+ EXPECT_EQ( |
+ Feature::NOT_FOUND_IN_WHITELIST, |
+ feature.IsAvailableToManifest(kIdBaz, |
+ Manifest::TYPE_LEGACY_PACKAGED_APP, |
+ Manifest::INVALID_LOCATION, |
+ -1, |
+ Feature::UNSPECIFIED_PLATFORM).result()); |
} |
TEST_F(ExtensionSimpleFeatureTest, HashedIdWhitelist) { |
@@ -118,21 +138,34 @@ TEST_F(ExtensionSimpleFeatureTest, HashedIdWhitelist) { |
feature.whitelist()->insert(kIdFooHashed); |
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( |
- kIdFoo, Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, |
- Feature::UNSPECIFIED_PLATFORM).result()); |
- EXPECT_NE(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( |
- kIdFooHashed, Manifest::TYPE_UNKNOWN, |
- Feature::UNSPECIFIED_LOCATION, -1, |
- Feature::UNSPECIFIED_PLATFORM).result()); |
- EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest( |
- "slightlytoooolongforanextensionid", Manifest::TYPE_UNKNOWN, |
- Feature::UNSPECIFIED_LOCATION, -1, |
- Feature::UNSPECIFIED_PLATFORM).result()); |
- EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest( |
- "tooshortforanextensionid", Manifest::TYPE_UNKNOWN, |
- Feature::UNSPECIFIED_LOCATION, -1, |
- Feature::UNSPECIFIED_PLATFORM).result()); |
+ EXPECT_EQ( |
+ Feature::IS_AVAILABLE, |
+ feature.IsAvailableToManifest(kIdFoo, |
+ Manifest::TYPE_UNKNOWN, |
+ Manifest::INVALID_LOCATION, |
+ -1, |
+ Feature::UNSPECIFIED_PLATFORM).result()); |
+ EXPECT_NE( |
+ Feature::IS_AVAILABLE, |
+ feature.IsAvailableToManifest(kIdFooHashed, |
+ Manifest::TYPE_UNKNOWN, |
+ Manifest::INVALID_LOCATION, |
+ -1, |
+ Feature::UNSPECIFIED_PLATFORM).result()); |
+ EXPECT_EQ( |
+ Feature::NOT_FOUND_IN_WHITELIST, |
+ feature.IsAvailableToManifest("slightlytoooolongforanextensionid", |
+ Manifest::TYPE_UNKNOWN, |
+ Manifest::INVALID_LOCATION, |
+ -1, |
+ Feature::UNSPECIFIED_PLATFORM).result()); |
+ EXPECT_EQ( |
+ Feature::NOT_FOUND_IN_WHITELIST, |
+ feature.IsAvailableToManifest("tooshortforanextensionid", |
+ Manifest::TYPE_UNKNOWN, |
+ Manifest::INVALID_LOCATION, |
+ -1, |
+ Feature::UNSPECIFIED_PLATFORM).result()); |
} |
TEST_F(ExtensionSimpleFeatureTest, PackageType) { |
@@ -144,14 +177,14 @@ TEST_F(ExtensionSimpleFeatureTest, PackageType) { |
Feature::IS_AVAILABLE, |
feature.IsAvailableToManifest(std::string(), |
Manifest::TYPE_EXTENSION, |
- Feature::UNSPECIFIED_LOCATION, |
+ Manifest::INVALID_LOCATION, |
-1, |
Feature::UNSPECIFIED_PLATFORM).result()); |
EXPECT_EQ( |
Feature::IS_AVAILABLE, |
feature.IsAvailableToManifest(std::string(), |
Manifest::TYPE_LEGACY_PACKAGED_APP, |
- Feature::UNSPECIFIED_LOCATION, |
+ Manifest::INVALID_LOCATION, |
-1, |
Feature::UNSPECIFIED_PLATFORM).result()); |
@@ -159,14 +192,14 @@ TEST_F(ExtensionSimpleFeatureTest, PackageType) { |
Feature::INVALID_TYPE, |
feature.IsAvailableToManifest(std::string(), |
Manifest::TYPE_UNKNOWN, |
- Feature::UNSPECIFIED_LOCATION, |
+ Manifest::INVALID_LOCATION, |
-1, |
Feature::UNSPECIFIED_PLATFORM).result()); |
EXPECT_EQ( |
Feature::INVALID_TYPE, |
feature.IsAvailableToManifest(std::string(), |
Manifest::TYPE_THEME, |
- Feature::UNSPECIFIED_LOCATION, |
+ Manifest::INVALID_LOCATION, |
-1, |
Feature::UNSPECIFIED_PLATFORM).result()); |
} |
@@ -239,11 +272,11 @@ TEST_F(ExtensionSimpleFeatureTest, Context) { |
feature.GetContexts()->clear(); |
feature.GetContexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT); |
- feature.set_location(Feature::COMPONENT_LOCATION); |
+ *feature.locations() = Set(Manifest::COMPONENT); |
EXPECT_EQ(Feature::INVALID_LOCATION, feature.IsAvailableToContext( |
extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, |
Feature::CHROMEOS_PLATFORM).result()); |
- feature.set_location(Feature::UNSPECIFIED_LOCATION); |
+ feature.locations()->clear(); |
EXPECT_EQ(Feature::INVALID_PLATFORM, feature.IsAvailableToContext( |
extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, |
@@ -267,29 +300,29 @@ TEST_F(ExtensionSimpleFeatureTest, Location) { |
// If the feature specifies "component" as its location, then only component |
// extensions can access it. |
- feature.set_location(Feature::COMPONENT_LOCATION); |
+ *feature.locations() = Set(Manifest::COMPONENT); |
EXPECT_EQ( |
Feature::IS_AVAILABLE, |
feature.IsAvailableToManifest(std::string(), |
Manifest::TYPE_UNKNOWN, |
- Feature::COMPONENT_LOCATION, |
+ Manifest::COMPONENT, |
-1, |
Feature::UNSPECIFIED_PLATFORM).result()); |
EXPECT_EQ( |
Feature::INVALID_LOCATION, |
feature.IsAvailableToManifest(std::string(), |
Manifest::TYPE_UNKNOWN, |
- Feature::UNSPECIFIED_LOCATION, |
+ Manifest::INVALID_LOCATION, |
-1, |
Feature::UNSPECIFIED_PLATFORM).result()); |
// But component extensions can access anything else, whatever their location. |
- feature.set_location(Feature::UNSPECIFIED_LOCATION); |
+ feature.locations()->clear(); |
EXPECT_EQ( |
Feature::IS_AVAILABLE, |
feature.IsAvailableToManifest(std::string(), |
Manifest::TYPE_UNKNOWN, |
- Feature::COMPONENT_LOCATION, |
+ Manifest::COMPONENT, |
-1, |
Feature::UNSPECIFIED_PLATFORM).result()); |
} |
@@ -300,14 +333,14 @@ TEST_F(ExtensionSimpleFeatureTest, Platform) { |
EXPECT_EQ(Feature::IS_AVAILABLE, |
feature.IsAvailableToManifest(std::string(), |
Manifest::TYPE_UNKNOWN, |
- Feature::UNSPECIFIED_LOCATION, |
+ Manifest::INVALID_LOCATION, |
-1, |
Feature::CHROMEOS_PLATFORM).result()); |
EXPECT_EQ( |
Feature::INVALID_PLATFORM, |
feature.IsAvailableToManifest(std::string(), |
Manifest::TYPE_UNKNOWN, |
- Feature::UNSPECIFIED_LOCATION, |
+ Manifest::INVALID_LOCATION, |
-1, |
Feature::UNSPECIFIED_PLATFORM).result()); |
} |
@@ -320,14 +353,14 @@ TEST_F(ExtensionSimpleFeatureTest, Version) { |
Feature::INVALID_MIN_MANIFEST_VERSION, |
feature.IsAvailableToManifest(std::string(), |
Manifest::TYPE_UNKNOWN, |
- Feature::UNSPECIFIED_LOCATION, |
+ Manifest::INVALID_LOCATION, |
0, |
Feature::UNSPECIFIED_PLATFORM).result()); |
EXPECT_EQ( |
Feature::INVALID_MIN_MANIFEST_VERSION, |
feature.IsAvailableToManifest(std::string(), |
Manifest::TYPE_UNKNOWN, |
- Feature::UNSPECIFIED_LOCATION, |
+ Manifest::INVALID_LOCATION, |
4, |
Feature::UNSPECIFIED_PLATFORM).result()); |
@@ -335,14 +368,14 @@ TEST_F(ExtensionSimpleFeatureTest, Version) { |
Feature::IS_AVAILABLE, |
feature.IsAvailableToManifest(std::string(), |
Manifest::TYPE_UNKNOWN, |
- Feature::UNSPECIFIED_LOCATION, |
+ Manifest::INVALID_LOCATION, |
5, |
Feature::UNSPECIFIED_PLATFORM).result()); |
EXPECT_EQ( |
Feature::IS_AVAILABLE, |
feature.IsAvailableToManifest(std::string(), |
Manifest::TYPE_UNKNOWN, |
- Feature::UNSPECIFIED_LOCATION, |
+ Manifest::INVALID_LOCATION, |
10, |
Feature::UNSPECIFIED_PLATFORM).result()); |
@@ -352,21 +385,21 @@ TEST_F(ExtensionSimpleFeatureTest, Version) { |
Feature::INVALID_MAX_MANIFEST_VERSION, |
feature.IsAvailableToManifest(std::string(), |
Manifest::TYPE_UNKNOWN, |
- Feature::UNSPECIFIED_LOCATION, |
+ Manifest::INVALID_LOCATION, |
10, |
Feature::UNSPECIFIED_PLATFORM).result()); |
EXPECT_EQ( |
Feature::IS_AVAILABLE, |
feature.IsAvailableToManifest(std::string(), |
Manifest::TYPE_UNKNOWN, |
- Feature::UNSPECIFIED_LOCATION, |
+ Manifest::INVALID_LOCATION, |
8, |
Feature::UNSPECIFIED_PLATFORM).result()); |
EXPECT_EQ( |
Feature::IS_AVAILABLE, |
feature.IsAvailableToManifest(std::string(), |
Manifest::TYPE_UNKNOWN, |
- Feature::UNSPECIFIED_LOCATION, |
+ Manifest::INVALID_LOCATION, |
7, |
Feature::UNSPECIFIED_PLATFORM).result()); |
} |
@@ -378,7 +411,7 @@ TEST_F(ExtensionSimpleFeatureTest, ParseNull) { |
EXPECT_TRUE(feature->whitelist()->empty()); |
EXPECT_TRUE(feature->extension_types()->empty()); |
EXPECT_TRUE(feature->GetContexts()->empty()); |
- EXPECT_EQ(Feature::UNSPECIFIED_LOCATION, feature->location()); |
+ EXPECT_TRUE(feature->locations()->empty()); |
EXPECT_TRUE(feature->platforms()->empty()); |
EXPECT_EQ(0, feature->min_manifest_version()); |
EXPECT_EQ(0, feature->max_manifest_version()); |
@@ -453,12 +486,22 @@ TEST_F(ExtensionSimpleFeatureTest, ParseContexts) { |
EXPECT_EQ(*(feature->GetContexts()), *(feature2->GetContexts())); |
} |
-TEST_F(ExtensionSimpleFeatureTest, ParseLocation) { |
+TEST_F(ExtensionSimpleFeatureTest, ParseComponentLocation) { |
scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue()); |
value->SetString("location", "component"); |
scoped_ptr<SimpleFeature> feature(new SimpleFeature()); |
feature->Parse(value.get()); |
- EXPECT_EQ(Feature::COMPONENT_LOCATION, feature->location()); |
+ EXPECT_EQ(Set(Manifest::COMPONENT, Manifest::EXTERNAL_COMPONENT), |
+ *feature->locations()); |
+} |
+ |
+TEST_F(ExtensionSimpleFeatureTest, ParsePolicyLocation) { |
+ scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue()); |
+ value->SetString("location", "policy"); |
+ scoped_ptr<SimpleFeature> feature(new SimpleFeature()); |
+ feature->Parse(value.get()); |
+ EXPECT_EQ(Set(Manifest::EXTERNAL_POLICY, Manifest::EXTERNAL_POLICY_DOWNLOAD), |
+ *feature->locations()); |
} |
TEST_F(ExtensionSimpleFeatureTest, ParsePlatforms) { |
@@ -507,7 +550,7 @@ TEST_F(ExtensionSimpleFeatureTest, Inheritance) { |
feature.whitelist()->insert("foo"); |
feature.extension_types()->insert(Manifest::TYPE_THEME); |
feature.GetContexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT); |
- feature.set_location(Feature::COMPONENT_LOCATION); |
+ *feature.locations() = Set(Manifest::COMPONENT); |
feature.platforms()->insert(Feature::CHROMEOS_PLATFORM); |
feature.set_min_manifest_version(1); |
feature.set_max_manifest_version(2); |
@@ -516,13 +559,11 @@ TEST_F(ExtensionSimpleFeatureTest, Inheritance) { |
// changes to a SimpleFeature. |
base::DictionaryValue definition; |
feature.Parse(&definition); |
- EXPECT_EQ(1u, feature.whitelist()->size()); |
- EXPECT_EQ(1u, feature.extension_types()->size()); |
- EXPECT_EQ(1u, feature.GetContexts()->size()); |
- EXPECT_EQ(1u, feature.whitelist()->count("foo")); |
- EXPECT_EQ(Feature::COMPONENT_LOCATION, feature.location()); |
- EXPECT_EQ(1u, feature.platforms()->size()); |
- EXPECT_EQ(1u, feature.platforms()->count(Feature::CHROMEOS_PLATFORM)); |
+ EXPECT_EQ(Set(std::string("foo")), *feature.whitelist()); |
+ EXPECT_EQ(Set(Manifest::TYPE_THEME), *feature.extension_types()); |
+ EXPECT_EQ(Set(Feature::BLESSED_EXTENSION_CONTEXT), *feature.GetContexts()); |
+ EXPECT_EQ(Set(Manifest::COMPONENT), *feature.locations()); |
+ EXPECT_EQ(Set(Feature::CHROMEOS_PLATFORM), *feature.platforms()); |
EXPECT_EQ(1, feature.min_manifest_version()); |
EXPECT_EQ(2, feature.max_manifest_version()); |
@@ -535,18 +576,18 @@ TEST_F(ExtensionSimpleFeatureTest, Inheritance) { |
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.SetString("location", "policy"); |
+ // Can't test platform because we only have one value so far. |
definition.Set("min_manifest_version", new base::FundamentalValue(2)); |
definition.Set("max_manifest_version", new base::FundamentalValue(3)); |
feature.Parse(&definition); |
- EXPECT_EQ(1u, feature.whitelist()->size()); |
- EXPECT_EQ(1u, feature.extension_types()->size()); |
- EXPECT_EQ(1u, feature.GetContexts()->size()); |
- EXPECT_EQ(1u, feature.whitelist()->count("bar")); |
- EXPECT_EQ(1u, feature.extension_types()->count(Manifest::TYPE_EXTENSION)); |
- EXPECT_EQ(1u, |
- feature.GetContexts()->count(Feature::UNBLESSED_EXTENSION_CONTEXT)); |
+ EXPECT_EQ(Set(std::string("bar")), *feature.whitelist()); |
+ EXPECT_EQ(Set(Manifest::TYPE_EXTENSION), *feature.extension_types()); |
+ EXPECT_EQ(Set(Feature::UNBLESSED_EXTENSION_CONTEXT), *feature.GetContexts()); |
+ EXPECT_EQ(Set(Manifest::EXTERNAL_POLICY, Manifest::EXTERNAL_POLICY_DOWNLOAD), |
+ *feature.locations()); |
+ EXPECT_EQ(Set(Feature::CHROMEOS_PLATFORM), *feature.platforms()); |
EXPECT_EQ(2, feature.min_manifest_version()); |
EXPECT_EQ(3, feature.max_manifest_version()); |
} |
@@ -564,12 +605,11 @@ Feature::AvailabilityResult IsAvailableInChannel( |
feature.Parse(&feature_value); |
} |
- return feature.IsAvailableToManifest( |
- "random-extension", |
- Manifest::TYPE_UNKNOWN, |
- Feature::UNSPECIFIED_LOCATION, |
- -1, |
- Feature::GetCurrentPlatform()).result(); |
+ return feature.IsAvailableToManifest("random-extension", |
+ Manifest::TYPE_UNKNOWN, |
+ Manifest::INVALID_LOCATION, |
+ -1, |
+ Feature::GetCurrentPlatform()).result(); |
} |
TEST_F(ExtensionSimpleFeatureTest, SupportedChannel) { |