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

Side by Side Diff: chrome/common/extensions/manifest_tests/extension_manifests_platformapp_unittest.cc

Issue 12253022: Manifest handler for all keys background-related. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/manifest_tests/extension_manifest_test.h" 5 #include "chrome/common/extensions/manifest_tests/extension_manifest_test.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/json/json_file_value_serializer.h" 8 #include "base/json/json_file_value_serializer.h"
9 #include "base/memory/linked_ptr.h" 9 #include "base/memory/linked_ptr.h"
10 #include "chrome/common/chrome_switches.h" 10 #include "chrome/common/chrome_switches.h"
11 #include "chrome/common/extensions/background_info.h"
11 #include "chrome/common/extensions/extension_manifest_constants.h" 12 #include "chrome/common/extensions/extension_manifest_constants.h"
12 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
13 14
14 namespace errors = extension_manifest_errors; 15 namespace errors = extension_manifest_errors;
15 16
16 TEST_F(ExtensionManifestTest, PlatformApps) { 17 namespace extensions {
18
19 class ExtensionManifestPlatformAppTest : public ExtensionManifestTest {
20 virtual void SetUp() OVERRIDE {
21 ExtensionManifestTest::SetUp();
22 std::vector<std::string> background_keys(BackgroundManifestHandler::keys());
23 linked_ptr<BackgroundManifestHandler> background_handler(
24 new BackgroundManifestHandler);
25 for (size_t i = 0; i < background_keys.size(); ++i)
26 ManifestHandler::Register(background_keys[i], background_handler);
27 }
28 };
29
30 TEST_F(ExtensionManifestPlatformAppTest, PlatformApps) {
17 scoped_refptr<extensions::Extension> extension = 31 scoped_refptr<extensions::Extension> extension =
18 LoadAndExpectSuccess("init_valid_platform_app.json"); 32 LoadAndExpectSuccess("init_valid_platform_app.json");
19 EXPECT_TRUE(extension->is_storage_isolated()); 33 EXPECT_TRUE(extension->is_storage_isolated());
20 EXPECT_TRUE(extension->incognito_split_mode()); 34 EXPECT_TRUE(extension->incognito_split_mode());
21 35
22 extension = 36 extension =
23 LoadAndExpectSuccess("init_valid_platform_app_no_manifest_version.json"); 37 LoadAndExpectSuccess("init_valid_platform_app_no_manifest_version.json");
24 EXPECT_EQ(2, extension->manifest_version()); 38 EXPECT_EQ(2, extension->manifest_version());
25 39
26 extension = LoadAndExpectSuccess("incognito_valid_platform_app.json"); 40 extension = LoadAndExpectSuccess("incognito_valid_platform_app.json");
(...skipping 20 matching lines...) Expand all
47 "packaged apps, and this is a packaged app."), 61 "packaged apps, and this is a packaged app."),
48 Testcase( 62 Testcase(
49 "init_invalid_platform_app_5.json", 63 "init_invalid_platform_app_5.json",
50 "'background' is only allowed for extensions, hosted apps and legacy " 64 "'background' is only allowed for extensions, hosted apps and legacy "
51 "packaged apps, and this is a packaged app.") 65 "packaged apps, and this is a packaged app.")
52 }; 66 };
53 RunTestcases( 67 RunTestcases(
54 warning_testcases, arraysize(warning_testcases), EXPECT_TYPE_WARNING); 68 warning_testcases, arraysize(warning_testcases), EXPECT_TYPE_WARNING);
55 } 69 }
56 70
57 TEST_F(ExtensionManifestTest, PlatformAppContentSecurityPolicy) { 71 TEST_F(ExtensionManifestPlatformAppTest, PlatformAppContentSecurityPolicy) {
58 // Normal platform apps can't specify a CSP value. 72 // Normal platform apps can't specify a CSP value.
59 Testcase warning_testcases[] = { 73 Testcase warning_testcases[] = {
60 Testcase( 74 Testcase(
61 "init_platform_app_csp_warning_1.json", 75 "init_platform_app_csp_warning_1.json",
62 "'content_security_policy' is only allowed for extensions and legacy " 76 "'content_security_policy' is only allowed for extensions and legacy "
63 "packaged apps, and this is a packaged app."), 77 "packaged apps, and this is a packaged app."),
64 Testcase( 78 Testcase(
65 "init_platform_app_csp_warning_2.json", 79 "init_platform_app_csp_warning_2.json",
66 "'app.content_security_policy' is not allowed for specified extension " 80 "'app.content_security_policy' is not allowed for specified extension "
67 "ID.") 81 "ID.")
(...skipping 14 matching lines...) Expand all
82 EXPECT_EQ( 96 EXPECT_EQ(
83 "default-src 'self' https://www.google.com", 97 "default-src 'self' https://www.google.com",
84 extension->GetResourceContentSecurityPolicy("")); 98 extension->GetResourceContentSecurityPolicy(""));
85 99
86 // But even whitelisted ones must specify a secure policy. 100 // But even whitelisted ones must specify a secure policy.
87 LoadAndExpectError( 101 LoadAndExpectError(
88 "init_platform_app_csp_insecure.json", 102 "init_platform_app_csp_insecure.json",
89 errors::kInsecureContentSecurityPolicy); 103 errors::kInsecureContentSecurityPolicy);
90 } 104 }
91 105
92 TEST_F(ExtensionManifestTest, CertainApisRequirePlatformApps) { 106 TEST_F(ExtensionManifestPlatformAppTest, CertainApisRequirePlatformApps) {
93 // Put APIs here that should be restricted to platform apps, but that haven't 107 // Put APIs here that should be restricted to platform apps, but that haven't
94 // yet graduated from experimental. 108 // yet graduated from experimental.
95 const char* kPlatformAppExperimentalApis[] = { 109 const char* kPlatformAppExperimentalApis[] = {
96 "dns", 110 "dns",
97 "serial", 111 "serial",
98 }; 112 };
99 // TODO(miket): When the first platform-app API leaves experimental, write 113 // TODO(miket): When the first platform-app API leaves experimental, write
100 // similar code that tests without the experimental flag. 114 // similar code that tests without the experimental flag.
101 115
102 // This manifest is a skeleton used to build more specific manifests for 116 // This manifest is a skeleton used to build more specific manifests for
(...skipping 22 matching lines...) Expand all
125 errors::kExperimentalFlagRequired); 139 errors::kExperimentalFlagRequired);
126 } 140 }
127 141
128 // Now try again with the experimental flag set. 142 // Now try again with the experimental flag set.
129 CommandLine::ForCurrentProcess()->AppendSwitch( 143 CommandLine::ForCurrentProcess()->AppendSwitch(
130 switches::kEnableExperimentalExtensionApis); 144 switches::kEnableExperimentalExtensionApis);
131 for (size_t i = 0; i < arraysize(kPlatformAppExperimentalApis); ++i) { 145 for (size_t i = 0; i < arraysize(kPlatformAppExperimentalApis); ++i) {
132 LoadAndExpectSuccess(Manifest(manifests[i].get(), "")); 146 LoadAndExpectSuccess(Manifest(manifests[i].get(), ""));
133 } 147 }
134 } 148 }
149
150 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698