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

Unified Diff: chrome/common/extensions/manifest_tests/extension_manifest_test.cc

Issue 12042096: Move page action manifest parsing out of Extension; the first multi-key manifest handler. (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 side-by-side diff with in-line comments
Download patch
Index: chrome/common/extensions/manifest_tests/extension_manifest_test.cc
diff --git a/chrome/common/extensions/manifest_tests/extension_manifest_test.cc b/chrome/common/extensions/manifest_tests/extension_manifest_test.cc
index 1edb91fe2ed5d61e7673e21d4b1e95f48a43e6a4..800f0a03d9b0565e5eccb1e77a2e2215c2c1007d 100644
--- a/chrome/common/extensions/manifest_tests/extension_manifest_test.cc
+++ b/chrome/common/extensions/manifest_tests/extension_manifest_test.cc
@@ -16,32 +16,18 @@
using extensions::Extension;
-ExtensionManifestTest::ExtensionManifestTest()
- : enable_apps_(true),
- // UNKNOWN == trunk.
- current_channel_(chrome::VersionInfo::CHANNEL_UNKNOWN) {}
+namespace {
-void ExtensionManifestTest::TearDown() {
- extensions::ManifestHandler::ClearRegistryForTesting();
-}
-
-// static
-DictionaryValue* ExtensionManifestTest::LoadManifestFile(
- const std::string& filename,
- std::string* error) {
- base::FilePath filename_path(base::FilePath::FromUTF8Unsafe(filename));
+// If filename is a relative path, LoadManifestFile will treat it relative to
+// the appropriate test directory.
+DictionaryValue* LoadManifestFile(
+ const base::FilePath& filename_path, std::string* error) {
base::FilePath extension_path;
base::FilePath manifest_path;
- if (filename_path.IsAbsolute()) {
- extension_path = filename_path.DirName();
- manifest_path = filename_path;
- } else {
- PathService::Get(chrome::DIR_TEST_DATA, &extension_path);
- extension_path = extension_path.AppendASCII("extensions")
- .AppendASCII("manifest_tests");
- manifest_path = extension_path.AppendASCII(filename.c_str());
- }
+ PathService::Get(chrome::DIR_TEST_DATA, &manifest_path);
+ manifest_path = manifest_path.Append(filename_path);
+ extension_path = manifest_path.DirName();
EXPECT_TRUE(file_util::PathExists(manifest_path)) <<
"Couldn't find " << manifest_path.value();
@@ -55,12 +41,25 @@ DictionaryValue* ExtensionManifestTest::LoadManifestFile(
// Only localize manifests that indicate they want to be localized.
// Calling LocalizeExtension at this point mirrors
// extension_file_util::LoadExtension.
- if (manifest && filename.find("localized") != std::string::npos)
+ if (manifest &&
+ filename_path.value().find(FILE_PATH_LITERAL("localized")) !=
+ std::string::npos)
extension_l10n_util::LocalizeExtension(extension_path, manifest, error);
return manifest;
}
+} // namespace
+
+ExtensionManifestTest::ExtensionManifestTest()
+ : enable_apps_(true),
+ // UNKNOWN == trunk.
+ current_channel_(chrome::VersionInfo::CHANNEL_UNKNOWN) {}
+
+void ExtensionManifestTest::TearDown() {
+ extensions::ManifestHandler::ClearRegistryForTesting();
+}
+
// Helper class that simplifies creating methods that take either a filename
// to a manifest or the manifest itself.
ExtensionManifestTest::Manifest::Manifest(const char* name)
@@ -81,26 +80,43 @@ ExtensionManifestTest::Manifest::~Manifest() {
}
DictionaryValue* ExtensionManifestTest::Manifest::GetManifest(
- std::string* error) const {
+ char const* test_data_dir, std::string* error) const {
if (manifest_)
return manifest_;
- manifest_ = LoadManifestFile(name_, error);
+ base::FilePath filename_path;
+ filename_path = filename_path.AppendASCII("extensions")
+ .AppendASCII(test_data_dir)
+ .AppendASCII(name_);
+ manifest_ = LoadManifestFile(filename_path, error);
manifest_holder_.reset(manifest_);
return manifest_;
}
+char const* ExtensionManifestTest::test_data_dir() {
+ return "manifest_tests";
+}
+
+scoped_ptr<DictionaryValue> ExtensionManifestTest::LoadManifest(
+ char const* manifest_name, std::string* error) {
+ base::FilePath filename_path;
+ filename_path = filename_path.AppendASCII("extensions")
+ .AppendASCII(test_data_dir())
+ .AppendASCII(manifest_name);
+ return make_scoped_ptr(LoadManifestFile(filename_path, error));
+}
+
scoped_refptr<Extension> ExtensionManifestTest::LoadExtension(
const Manifest& manifest,
std::string* error,
extensions::Manifest::Location location,
int flags) {
- DictionaryValue* value = manifest.GetManifest(error);
+ DictionaryValue* value = manifest.GetManifest(test_data_dir(), error);
if (!value)
return NULL;
base::FilePath path;
PathService::Get(chrome::DIR_TEST_DATA, &path);
- path = path.AppendASCII("extensions").AppendASCII("manifest_tests");
+ path = path.AppendASCII("extensions").AppendASCII(test_data_dir());
return Extension::Create(path.DirName(), location, *value, flags, error);
}

Powered by Google App Engine
This is Rietveld 408576698