summaryrefslogtreecommitdiff
path: root/chromium/chrome/common/extensions/manifest_tests/extension_manifests_kiosk_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/chrome/common/extensions/manifest_tests/extension_manifests_kiosk_unittest.cc')
-rw-r--r--chromium/chrome/common/extensions/manifest_tests/extension_manifests_kiosk_unittest.cc108
1 files changed, 108 insertions, 0 deletions
diff --git a/chromium/chrome/common/extensions/manifest_tests/extension_manifests_kiosk_unittest.cc b/chromium/chrome/common/extensions/manifest_tests/extension_manifests_kiosk_unittest.cc
new file mode 100644
index 00000000000..7a45ea4670a
--- /dev/null
+++ b/chromium/chrome/common/extensions/manifest_tests/extension_manifests_kiosk_unittest.cc
@@ -0,0 +1,108 @@
+// 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 "build/build_config.h"
+#include "chrome/common/extensions/manifest_tests/chrome_manifest_test.h"
+#include "extensions/common/extension.h"
+#include "extensions/common/manifest_constants.h"
+#include "extensions/common/manifest_handlers/kiosk_mode_info.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace extensions {
+
+class ExtensionManifestKioskModeTest : public ChromeManifestTest {
+};
+
+TEST_F(ExtensionManifestKioskModeTest, InvalidKioskEnabled) {
+ LoadAndExpectError("kiosk_enabled_invalid.json",
+ manifest_errors::kInvalidKioskEnabled);
+}
+
+TEST_F(ExtensionManifestKioskModeTest, KioskEnabledHostedApp) {
+ scoped_refptr<Extension> extension(
+ LoadAndExpectSuccess("kiosk_enabled_hosted_app.json"));
+ EXPECT_FALSE(KioskModeInfo::IsKioskEnabled(extension.get()));
+}
+
+TEST_F(ExtensionManifestKioskModeTest, KioskEnabledPackagedApp) {
+ scoped_refptr<Extension> extension(
+ LoadAndExpectSuccess("kiosk_enabled_packaged_app.json"));
+ EXPECT_FALSE(KioskModeInfo::IsKioskEnabled(extension.get()));
+}
+
+TEST_F(ExtensionManifestKioskModeTest, KioskEnabledExtension) {
+ scoped_refptr<Extension> extension(
+ LoadAndExpectSuccess("kiosk_enabled_extension.json"));
+ EXPECT_FALSE(KioskModeInfo::IsKioskEnabled(extension.get()));
+}
+
+TEST_F(ExtensionManifestKioskModeTest, KioskEnabledPlatformApp) {
+ scoped_refptr<Extension> extension(
+ LoadAndExpectSuccess("kiosk_enabled_platform_app.json"));
+ EXPECT_TRUE(KioskModeInfo::IsKioskEnabled(extension.get()));
+}
+
+TEST_F(ExtensionManifestKioskModeTest, KioskDisabledPlatformApp) {
+ scoped_refptr<Extension> extension(
+ LoadAndExpectSuccess("kiosk_disabled_platform_app.json"));
+ EXPECT_FALSE(KioskModeInfo::IsKioskEnabled(extension.get()));
+}
+
+TEST_F(ExtensionManifestKioskModeTest, KioskDefaultPlatformApp) {
+ scoped_refptr<Extension> extension(
+ LoadAndExpectSuccess("kiosk_default_platform_app.json"));
+ EXPECT_FALSE(KioskModeInfo::IsKioskEnabled(extension.get()));
+ EXPECT_FALSE(KioskModeInfo::IsKioskOnly(extension.get()));
+}
+
+TEST_F(ExtensionManifestKioskModeTest, KioskEnabledDefaultRequired) {
+ scoped_refptr<Extension> extension(
+ LoadAndExpectSuccess("kiosk_enabled_platform_app.json"));
+ EXPECT_TRUE(KioskModeInfo::IsKioskEnabled(extension.get()));
+ EXPECT_FALSE(KioskModeInfo::IsKioskOnly(extension.get()));
+}
+
+// 'kiosk_only' key should be set only from ChromeOS.
+#if defined(OS_CHROMEOS)
+TEST_F(ExtensionManifestKioskModeTest, KioskOnlyPlatformApp) {
+ scoped_refptr<Extension> extension(
+ LoadAndExpectSuccess("kiosk_only_platform_app.json"));
+ EXPECT_TRUE(KioskModeInfo::IsKioskOnly(extension.get()));
+}
+
+TEST_F(ExtensionManifestKioskModeTest, KioskOnlyInvalid) {
+ LoadAndExpectError("kiosk_only_invalid.json",
+ manifest_errors::kInvalidKioskOnly);
+}
+
+TEST_F(ExtensionManifestKioskModeTest, KioskOnlyButNotEnabled) {
+ LoadAndExpectError("kiosk_only_not_enabled.json",
+ manifest_errors::kInvalidKioskOnlyButNotEnabled);
+}
+
+TEST_F(ExtensionManifestKioskModeTest, KioskOnlyHostedApp) {
+ scoped_refptr<Extension> extension(
+ LoadAndExpectSuccess("kiosk_only_hosted_app.json"));
+ EXPECT_FALSE(KioskModeInfo::IsKioskOnly(extension.get()));
+}
+
+TEST_F(ExtensionManifestKioskModeTest, KioskOnlyPackagedApp) {
+ scoped_refptr<Extension> extension(
+ LoadAndExpectSuccess("kiosk_only_packaged_app.json"));
+ EXPECT_FALSE(KioskModeInfo::IsKioskOnly(extension.get()));
+}
+
+TEST_F(ExtensionManifestKioskModeTest, KioskOnlyExtension) {
+ scoped_refptr<Extension> extension(
+ LoadAndExpectSuccess("kiosk_only_extension.json"));
+ EXPECT_FALSE(KioskModeInfo::IsKioskOnly(extension.get()));
+}
+#else
+TEST_F(ExtensionManifestKioskModeTest, KioskOnlyFromNonChromeos) {
+ LoadAndExpectWarning("kiosk_only_platform_app.json",
+ "'kiosk_only' is not allowed for specified platform.");
+}
+#endif // defined(OS_CHROMEOS)
+
+} // namespace extensions