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
3 // found in the LICENSE file.
5 #include "chrome/common/extensions/manifest_tests/chrome_manifest_test.h"
6 #include "extensions/common/error_utils.h"
7 #include "extensions/common/manifest_constants.h"
8 #include "extensions/common/manifest_handlers/requirements_info.h"
9 #include "testing/gtest/include/gtest/gtest.h"
11 namespace extensions
{
13 namespace errors
= manifest_errors
;
15 class RequirementsManifestTest
: public ChromeManifestTest
{
18 TEST_F(RequirementsManifestTest
, RequirementsInvalid
) {
19 Testcase testcases
[] = {
20 Testcase("requirements_invalid_requirements.json",
21 errors::kInvalidRequirements
),
22 Testcase("requirements_invalid_keys.json", errors::kInvalidRequirements
),
23 Testcase("requirements_invalid_3d.json",
24 ErrorUtils::FormatErrorMessage(
25 errors::kInvalidRequirement
, "3D")),
26 Testcase("requirements_invalid_3d_features.json",
27 ErrorUtils::FormatErrorMessage(
28 errors::kInvalidRequirement
, "3D")),
29 Testcase("requirements_invalid_3d_features_value.json",
30 ErrorUtils::FormatErrorMessage(
31 errors::kInvalidRequirement
, "3D")),
32 Testcase("requirements_invalid_3d_no_features.json",
33 ErrorUtils::FormatErrorMessage(
34 errors::kInvalidRequirement
, "3D")),
35 Testcase("requirements_invalid_plugins.json",
36 ErrorUtils::FormatErrorMessage(
37 errors::kInvalidRequirement
, "plugins")),
38 Testcase("requirements_invalid_plugins_key.json",
39 ErrorUtils::FormatErrorMessage(
40 errors::kInvalidRequirement
, "plugins")),
41 Testcase("requirements_invalid_plugins_value.json",
42 ErrorUtils::FormatErrorMessage(
43 errors::kInvalidRequirement
, "plugins"))
46 RunTestcases(testcases
, arraysize(testcases
), EXPECT_TYPE_ERROR
);
49 TEST_F(RequirementsManifestTest
, RequirementsValid
) {
51 scoped_refptr
<Extension
> extension(LoadAndExpectSuccess(
52 "requirements_valid_empty.json"));
53 ASSERT_TRUE(extension
.get());
54 EXPECT_EQ(RequirementsInfo::GetRequirements(extension
.get()).webgl
, false);
55 EXPECT_EQ(RequirementsInfo::GetRequirements(extension
.get()).npapi
, false);
57 // Test loading all the requirements.
58 extension
= LoadAndExpectSuccess("requirements_valid_full.json");
59 ASSERT_TRUE(extension
.get());
60 EXPECT_EQ(RequirementsInfo::GetRequirements(extension
.get()).webgl
, true);
61 EXPECT_EQ(RequirementsInfo::GetRequirements(extension
.get()).npapi
, true);
64 // When an npapi plugin is present, the default of the "npapi" requirement
66 TEST_F(RequirementsManifestTest
, RequirementsNpapiDefault
) {
67 scoped_refptr
<Extension
> extension(LoadAndExpectSuccess(
68 "requirements_npapi_empty.json"));
69 ASSERT_TRUE(extension
.get());
70 EXPECT_EQ(RequirementsInfo::GetRequirements(extension
.get()).webgl
, false);
71 EXPECT_EQ(RequirementsInfo::GetRequirements(extension
.get()).npapi
, true);
73 extension
= LoadAndExpectSuccess(
74 "requirements_npapi_empty_plugins_empty.json");
75 ASSERT_TRUE(extension
.get());
76 EXPECT_EQ(RequirementsInfo::GetRequirements(extension
.get()).webgl
, false);
77 EXPECT_EQ(RequirementsInfo::GetRequirements(extension
.get()).npapi
, false);
79 extension
= LoadAndExpectSuccess("requirements_npapi.json");
80 ASSERT_TRUE(extension
.get());
81 EXPECT_EQ(RequirementsInfo::GetRequirements(extension
.get()).webgl
, false);
82 EXPECT_EQ(RequirementsInfo::GetRequirements(extension
.get()).npapi
, false);
84 extension
= LoadAndExpectSuccess("requirements_npapi_plugins_empty.json");
85 ASSERT_TRUE(extension
.get());
86 EXPECT_EQ(RequirementsInfo::GetRequirements(extension
.get()).webgl
, false);
87 EXPECT_EQ(RequirementsInfo::GetRequirements(extension
.get()).npapi
, true);
90 } // namespace extensions