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

Side by Side Diff: extensions/common/manifest_test.h

Issue 578653005: Revert "Refactor ExtensionManifestTest to allow usage in src/extensions" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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
OLDNEW
(Empty)
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.
4
5 #ifndef EXTENSIONS_COMMON_MANIFEST_TEST_H_
6 #define EXTENSIONS_COMMON_MANIFEST_TEST_H_
7
8 #include "base/memory/ref_counted.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "base/values.h"
11 #include "extensions/common/extension.h"
12 #include "extensions/common/manifest.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14
15 namespace base {
16 class FilePath;
17 }
18
19 namespace extensions {
20
21 // Base class for tests that parse a manifest file.
22 class ManifestTest : public testing::Test {
23 public:
24 ManifestTest();
25 virtual ~ManifestTest();
26
27 protected:
28 // Helper class that simplifies creating methods that take either a filename
29 // to a manifest or the manifest itself.
30 class ManifestData {
31 public:
32 explicit ManifestData(const char* name);
33 ManifestData(base::DictionaryValue* manifest, const char* name);
34 explicit ManifestData(scoped_ptr<base::DictionaryValue> manifest);
35 // C++98 requires the copy constructor for a type to be visible if you
36 // take a const-ref of a temporary for that type. Since Manifest
37 // contains a scoped_ptr, its implicit copy constructor is declared
38 // Manifest(Manifest&) according to spec 12.8.5. This breaks the first
39 // requirement and thus you cannot use it with LoadAndExpectError() or
40 // LoadAndExpectSuccess() easily.
41 //
42 // To get around this spec pedantry, we declare the copy constructor
43 // explicitly. It will never get invoked.
44 ManifestData(const ManifestData& m);
45
46 ~ManifestData();
47
48 const std::string& name() const { return name_; };
49
50 base::DictionaryValue* GetManifest(base::FilePath manifest_path,
51 std::string* error) const;
52
53 private:
54 const std::string name_;
55 mutable base::DictionaryValue* manifest_;
56 mutable scoped_ptr<base::DictionaryValue> manifest_holder_;
57 };
58
59 // Returns the path in which to find test manifest data files, for example
60 // extensions/test/data/manifest_tests.
61 virtual base::FilePath GetTestDataDir();
62
63 scoped_ptr<base::DictionaryValue> LoadManifest(
64 char const* manifest_name,
65 std::string* error);
66
67 scoped_refptr<extensions::Extension> LoadExtension(
68 const ManifestData& manifest,
69 std::string* error,
70 extensions::Manifest::Location location =
71 extensions::Manifest::INTERNAL,
72 int flags = extensions::Extension::NO_FLAGS);
73
74 scoped_refptr<extensions::Extension> LoadAndExpectSuccess(
75 const ManifestData& manifest,
76 extensions::Manifest::Location location =
77 extensions::Manifest::INTERNAL,
78 int flags = extensions::Extension::NO_FLAGS);
79
80 scoped_refptr<extensions::Extension> LoadAndExpectSuccess(
81 char const* manifest_name,
82 extensions::Manifest::Location location =
83 extensions::Manifest::INTERNAL,
84 int flags = extensions::Extension::NO_FLAGS);
85
86 scoped_refptr<extensions::Extension> LoadAndExpectWarning(
87 const ManifestData& manifest,
88 const std::string& expected_error,
89 extensions::Manifest::Location location =
90 extensions::Manifest::INTERNAL,
91 int flags = extensions::Extension::NO_FLAGS);
92
93 scoped_refptr<extensions::Extension> LoadAndExpectWarning(
94 char const* manifest_name,
95 const std::string& expected_error,
96 extensions::Manifest::Location location =
97 extensions::Manifest::INTERNAL,
98 int flags = extensions::Extension::NO_FLAGS);
99
100 void VerifyExpectedError(extensions::Extension* extension,
101 const std::string& name,
102 const std::string& error,
103 const std::string& expected_error);
104
105 void LoadAndExpectError(char const* manifest_name,
106 const std::string& expected_error,
107 extensions::Manifest::Location location =
108 extensions::Manifest::INTERNAL,
109 int flags = extensions::Extension::NO_FLAGS);
110
111 void LoadAndExpectError(const ManifestData& manifest,
112 const std::string& expected_error,
113 extensions::Manifest::Location location =
114 extensions::Manifest::INTERNAL,
115 int flags = extensions::Extension::NO_FLAGS);
116
117 void AddPattern(extensions::URLPatternSet* extent,
118 const std::string& pattern);
119
120 // used to differentiate between calls to LoadAndExpectError,
121 // LoadAndExpectWarning and LoadAndExpectSuccess via function RunTestcases.
122 enum ExpectType {
123 EXPECT_TYPE_ERROR,
124 EXPECT_TYPE_WARNING,
125 EXPECT_TYPE_SUCCESS
126 };
127
128 struct Testcase {
129 std::string manifest_filename_;
130 std::string expected_error_; // only used for ExpectedError tests
131 extensions::Manifest::Location location_;
132 int flags_;
133
134 Testcase(std::string manifest_filename, std::string expected_error,
135 extensions::Manifest::Location location, int flags);
136
137 Testcase(std::string manifest_filename, std::string expected_error);
138
139 explicit Testcase(std::string manifest_filename);
140
141 Testcase(std::string manifest_filename,
142 extensions::Manifest::Location location,
143 int flags);
144 };
145
146 void RunTestcases(const Testcase* testcases,
147 size_t num_testcases,
148 ExpectType type);
149
150 void RunTestcase(const Testcase& testcase, ExpectType type);
151
152 bool enable_apps_;
153
154 private:
155 DISALLOW_COPY_AND_ASSIGN(ManifestTest);
156 };
157
158 } // namespace extensions
159
160 #endif // EXTENSIONS_COMMON_MANIFEST_TEST_H_
OLDNEW
« no previous file with comments | « extensions/common/manifest_handlers/shared_module_manifest_unittest.cc ('k') | extensions/common/manifest_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698