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 b55ebfc5802be6f9c99603ff6b2326dcb011254b..cbf469b55a8d76c3aae5df43eccfac807b554001 100644 |
--- a/extensions/common/features/simple_feature_unittest.cc |
+++ b/extensions/common/features/simple_feature_unittest.cc |
@@ -422,6 +422,86 @@ TEST_F(SimpleFeatureTest, Context) { |
feature.set_max_manifest_version(25); |
} |
+TEST_F(SimpleFeatureTest, SessionType) { |
+ base::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(base::FilePath(), Manifest::INTERNAL, manifest, |
+ Extension::NO_FLAGS, &error)); |
+ EXPECT_EQ("", error); |
+ ASSERT_TRUE(extension.get()); |
+ |
+ SimpleFeature kiosk_feature; |
+ kiosk_feature.session_types_.push_back(Feature::SESSION_TYPE_KIOSK); |
+ EXPECT_EQ(Feature::IS_AVAILABLE, |
+ kiosk_feature |
+ .IsAvailableToContext( |
+ extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, |
+ Feature::SESSION_TYPE_KIOSK, Feature::CHROMEOS_PLATFORM) |
+ .result()); |
+ EXPECT_EQ(Feature::INVALID_SESSION_TYPE, |
+ kiosk_feature |
+ .IsAvailableToContext( |
+ extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, |
+ Feature::SESSION_TYPE_REGULAR, Feature::CHROMEOS_PLATFORM) |
+ .result()); |
+ EXPECT_EQ(Feature::INVALID_SESSION_TYPE, |
+ kiosk_feature |
+ .IsAvailableToContext(extension.get(), |
+ Feature::BLESSED_EXTENSION_CONTEXT, |
+ Feature::SESSION_TYPE_UNSPECIFIED, |
+ Feature::CHROMEOS_PLATFORM) |
+ .result()); |
+ |
+ SimpleFeature non_kiosk_feature; |
+ non_kiosk_feature.session_types_.push_back(Feature::SESSION_TYPE_REGULAR); |
+ EXPECT_EQ(Feature::INVALID_SESSION_TYPE, |
+ non_kiosk_feature |
+ .IsAvailableToContext( |
+ extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, |
+ Feature::SESSION_TYPE_KIOSK, Feature::CHROMEOS_PLATFORM) |
+ .result()); |
+ EXPECT_EQ(Feature::IS_AVAILABLE, |
+ non_kiosk_feature |
+ .IsAvailableToContext( |
+ extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, |
+ Feature::SESSION_TYPE_REGULAR, Feature::CHROMEOS_PLATFORM) |
+ .result()); |
+ EXPECT_EQ(Feature::INVALID_SESSION_TYPE, |
+ non_kiosk_feature |
+ .IsAvailableToContext(extension.get(), |
+ Feature::BLESSED_EXTENSION_CONTEXT, |
+ Feature::SESSION_TYPE_UNSPECIFIED, |
+ Feature::CHROMEOS_PLATFORM) |
+ .result()); |
+ |
+ SimpleFeature session_agnostic_feature; |
+ EXPECT_EQ(Feature::IS_AVAILABLE, |
+ session_agnostic_feature |
+ .IsAvailableToContext( |
+ extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, |
+ Feature::SESSION_TYPE_KIOSK, Feature::CHROMEOS_PLATFORM) |
+ .result()); |
+ EXPECT_EQ(Feature::IS_AVAILABLE, |
+ session_agnostic_feature |
+ .IsAvailableToContext( |
+ extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, |
+ Feature::SESSION_TYPE_REGULAR, Feature::CHROMEOS_PLATFORM) |
+ .result()); |
+ EXPECT_EQ(Feature::IS_AVAILABLE, |
+ session_agnostic_feature |
+ .IsAvailableToContext(extension.get(), |
+ Feature::BLESSED_EXTENSION_CONTEXT, |
+ Feature::SESSION_TYPE_UNSPECIFIED, |
+ Feature::CHROMEOS_PLATFORM) |
+ .result()); |
+} |
+ |
TEST_F(SimpleFeatureTest, Location) { |
// Component extensions can access any location. |
EXPECT_TRUE(LocationIsAvailable(SimpleFeature::COMPONENT_LOCATION, |