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

Side by Side Diff: chrome/common/extensions/manifest_tests/extension_manifests_background_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/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/values.h" 9 #include "base/values.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.h" 12 #include "chrome/common/extensions/extension.h"
12 #include "chrome/common/extensions/extension_manifest_constants.h" 13 #include "chrome/common/extensions/extension_manifest_constants.h"
13 #include "chrome/common/extensions/features/base_feature_provider.h" 14 #include "chrome/common/extensions/features/base_feature_provider.h"
14 #include "chrome/common/extensions/features/feature.h" 15 #include "chrome/common/extensions/features/feature.h"
16 #include "chrome/common/extensions/manifest_handler.h"
15 #include "extensions/common/error_utils.h" 17 #include "extensions/common/error_utils.h"
16 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
17 19
18 namespace errors = extension_manifest_errors; 20 namespace errors = extension_manifest_errors;
19 namespace keys = extension_manifest_keys; 21 namespace keys = extension_manifest_keys;
20 22
21 namespace extensions { 23 namespace extensions {
22 24
23 TEST_F(ExtensionManifestTest, BackgroundPermission) { 25 class ExtensionManifestBackgroundTest : public ExtensionManifestTest {
26 virtual void SetUp() OVERRIDE {
27 ExtensionManifestTest::SetUp();
28 std::vector<std::string> background_keys(BackgroundManifestHandler::keys());
29 linked_ptr<BackgroundManifestHandler> background_handler(
30 new BackgroundManifestHandler);
31 for (size_t i = 0; i < background_keys.size(); ++i) {
32 extensions::ManifestHandler::Register(background_keys[i],
33 background_handler);
34 }
35 }
36 };
37
38 TEST_F(ExtensionManifestBackgroundTest, BackgroundPermission) {
24 LoadAndExpectError("background_permission.json", 39 LoadAndExpectError("background_permission.json",
25 errors::kBackgroundPermissionNeeded); 40 errors::kBackgroundPermissionNeeded);
26 } 41 }
27 42
28 TEST_F(ExtensionManifestTest, BackgroundScripts) { 43 TEST_F(ExtensionManifestBackgroundTest, BackgroundScripts) {
29 std::string error; 44 std::string error;
30 scoped_ptr<DictionaryValue> manifest( 45 scoped_ptr<DictionaryValue> manifest(
31 LoadManifest("background_scripts.json", &error)); 46 LoadManifest("background_scripts.json", &error));
32 ASSERT_TRUE(manifest.get()); 47 ASSERT_TRUE(manifest.get());
33 48
34 scoped_refptr<Extension> extension( 49 scoped_refptr<Extension> extension(
35 LoadAndExpectSuccess(Manifest(manifest.get(), ""))); 50 LoadAndExpectSuccess(Manifest(manifest.get(), "")));
36 ASSERT_TRUE(extension); 51 ASSERT_TRUE(extension);
37 EXPECT_EQ(2u, extension->background_scripts().size()); 52 const std::vector<std::string>& background_scripts =
38 EXPECT_EQ("foo.js", extension->background_scripts()[0u]); 53 BackgroundInfo::GetBackgroundScripts(extension);
39 EXPECT_EQ("bar/baz.js", extension->background_scripts()[1u]); 54 ASSERT_EQ(2u, background_scripts.size());
55 EXPECT_EQ("foo.js", background_scripts[0u]);
56 EXPECT_EQ("bar/baz.js", background_scripts[1u]);
40 57
41 EXPECT_TRUE(extension->has_background_page()); 58 EXPECT_TRUE(BackgroundInfo::HasBackgroundPage(extension));
42 EXPECT_EQ(std::string("/") + 59 EXPECT_EQ(std::string("/") +
43 extension_filenames::kGeneratedBackgroundPageFilename, 60 extension_filenames::kGeneratedBackgroundPageFilename,
44 extension->GetBackgroundURL().path()); 61 BackgroundInfo::GetBackgroundURL(extension).path());
45 62
46 manifest->SetString("background_page", "monkey.html"); 63 manifest->SetString("background_page", "monkey.html");
47 LoadAndExpectError(Manifest(manifest.get(), ""), 64 LoadAndExpectError(Manifest(manifest.get(), ""),
48 errors::kInvalidBackgroundCombination); 65 errors::kInvalidBackgroundCombination);
49 } 66 }
50 67
51 TEST_F(ExtensionManifestTest, BackgroundPage) { 68 TEST_F(ExtensionManifestBackgroundTest, BackgroundPage) {
52 scoped_refptr<Extension> extension( 69 scoped_refptr<Extension> extension(
53 LoadAndExpectSuccess("background_page.json")); 70 LoadAndExpectSuccess("background_page.json"));
54 ASSERT_TRUE(extension); 71 ASSERT_TRUE(extension);
55 EXPECT_EQ("/foo.html", extension->GetBackgroundURL().path()); 72 EXPECT_EQ("/foo.html", BackgroundInfo::GetBackgroundURL(extension).path());
56 EXPECT_TRUE(extension->allow_background_js_access()); 73 EXPECT_TRUE(BackgroundInfo::AllowJSAccess(extension));
57 74
58 std::string error; 75 std::string error;
59 scoped_ptr<DictionaryValue> manifest( 76 scoped_ptr<DictionaryValue> manifest(
60 LoadManifest("background_page_legacy.json", &error)); 77 LoadManifest("background_page_legacy.json", &error));
61 ASSERT_TRUE(manifest.get()); 78 ASSERT_TRUE(manifest.get());
62 extension = LoadAndExpectSuccess(Manifest(manifest.get(), "")); 79 extension = LoadAndExpectSuccess(Manifest(manifest.get(), ""));
63 ASSERT_TRUE(extension); 80 ASSERT_TRUE(extension);
64 EXPECT_EQ("/foo.html", extension->GetBackgroundURL().path()); 81 EXPECT_EQ("/foo.html", BackgroundInfo::GetBackgroundURL(extension).path());
65 82
66 manifest->SetInteger(keys::kManifestVersion, 2); 83 manifest->SetInteger(keys::kManifestVersion, 2);
67 LoadAndExpectWarning( 84 LoadAndExpectWarning(
68 Manifest(manifest.get(), ""), 85 Manifest(manifest.get(), ""),
69 "'background_page' requires manifest version of 1 or lower."); 86 "'background_page' requires manifest version of 1 or lower.");
70 } 87 }
71 88
72 TEST_F(ExtensionManifestTest, BackgroundAllowNoJsAccess) { 89 TEST_F(ExtensionManifestBackgroundTest, BackgroundAllowNoJsAccess) {
73 scoped_refptr<Extension> extension; 90 scoped_refptr<Extension> extension;
74 extension = LoadAndExpectSuccess("background_allow_no_js_access.json"); 91 extension = LoadAndExpectSuccess("background_allow_no_js_access.json");
75 ASSERT_TRUE(extension); 92 ASSERT_TRUE(extension);
76 EXPECT_FALSE(extension->allow_background_js_access()); 93 EXPECT_FALSE(BackgroundInfo::AllowJSAccess(extension));
77 94
78 extension = LoadAndExpectSuccess("background_allow_no_js_access2.json"); 95 extension = LoadAndExpectSuccess("background_allow_no_js_access2.json");
79 ASSERT_TRUE(extension); 96 ASSERT_TRUE(extension);
80 EXPECT_FALSE(extension->allow_background_js_access()); 97 EXPECT_FALSE(BackgroundInfo::AllowJSAccess(extension));
81 } 98 }
82 99
83 TEST_F(ExtensionManifestTest, BackgroundPageWebRequest) { 100 TEST_F(ExtensionManifestBackgroundTest, BackgroundPageWebRequest) {
84 CommandLine::ForCurrentProcess()->AppendSwitch( 101 CommandLine::ForCurrentProcess()->AppendSwitch(
85 switches::kEnableExperimentalExtensionApis); 102 switches::kEnableExperimentalExtensionApis);
86 Feature::ScopedCurrentChannel current_channel( 103 Feature::ScopedCurrentChannel current_channel(
87 chrome::VersionInfo::CHANNEL_DEV); 104 chrome::VersionInfo::CHANNEL_DEV);
88 105
89 std::string error; 106 std::string error;
90 scoped_ptr<DictionaryValue> manifest( 107 scoped_ptr<DictionaryValue> manifest(
91 LoadManifest("background_page.json", &error)); 108 LoadManifest("background_page.json", &error));
92 ASSERT_TRUE(manifest.get()); 109 ASSERT_TRUE(manifest.get());
93 manifest->SetBoolean(keys::kBackgroundPersistent, false); 110 manifest->SetBoolean(keys::kBackgroundPersistent, false);
94 manifest->SetInteger(keys::kManifestVersion, 2); 111 manifest->SetInteger(keys::kManifestVersion, 2);
95 scoped_refptr<Extension> extension( 112 scoped_refptr<Extension> extension(
96 LoadAndExpectSuccess(Manifest(manifest.get(), ""))); 113 LoadAndExpectSuccess(Manifest(manifest.get(), "")));
97 ASSERT_TRUE(extension); 114 ASSERT_TRUE(extension);
98 EXPECT_TRUE(extension->has_lazy_background_page()); 115 EXPECT_TRUE(BackgroundInfo::HasLazyBackgroundPage(extension));
99 116
100 ListValue* permissions = new ListValue(); 117 ListValue* permissions = new ListValue();
101 permissions->Append(Value::CreateStringValue("webRequest")); 118 permissions->Append(Value::CreateStringValue("webRequest"));
102 manifest->Set(keys::kPermissions, permissions); 119 manifest->Set(keys::kPermissions, permissions);
103 LoadAndExpectError(Manifest(manifest.get(), ""), 120 LoadAndExpectError(Manifest(manifest.get(), ""),
104 errors::kWebRequestConflictsWithLazyBackground); 121 errors::kWebRequestConflictsWithLazyBackground);
105 } 122 }
106 123
107 } // namespace extensions 124 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698