summaryrefslogtreecommitdiffstats
path: root/chrome/common/extensions/extension_resource_unittest.cc
diff options
context:
space:
mode:
authorcira@chromium.org <cira@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-07 22:49:10 +0000
committercira@chromium.org <cira@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-07 22:49:10 +0000
commitecabe6eed156a36238888bfd2fdb96ec4906f0a4 (patch)
tree9419d9a349fc940d45fa450b3a75169fdf48b39f /chrome/common/extensions/extension_resource_unittest.cc
parent7050861ff094fd74d155264b6da3ca3795543870 (diff)
downloadchromium_src-ecabe6eed156a36238888bfd2fdb96ec4906f0a4.zip
chromium_src-ecabe6eed156a36238888bfd2fdb96ec4906f0a4.tar.gz
chromium_src-ecabe6eed156a36238888bfd2fdb96ec4906f0a4.tar.bz2
Loads local resources from current locale subtree if available, if not it falls back to extension subtree.
We look for ext_root/foo/bar.js under ext_root/_locales/fr/foo/bar.js if current locale is fr. If there is no fr specific resource we load ext_root/foo/bar.js instead. Lots of small refactoring to replace FilePath with ExtensionResource. BUG=12131 TEST=See unittest for sample tree. Review URL: http://codereview.chromium.org/256022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28333 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common/extensions/extension_resource_unittest.cc')
-rw-r--r--chrome/common/extensions/extension_resource_unittest.cc74
1 files changed, 74 insertions, 0 deletions
diff --git a/chrome/common/extensions/extension_resource_unittest.cc b/chrome/common/extensions/extension_resource_unittest.cc
new file mode 100644
index 0000000..bd92bd9
--- /dev/null
+++ b/chrome/common/extensions/extension_resource_unittest.cc
@@ -0,0 +1,74 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <algorithm>
+
+#include "app/l10n_util.h"
+#include "base/file_util.h"
+#include "base/path_service.h"
+#include "base/scoped_temp_dir.h"
+#include "chrome/common/chrome_paths.h"
+#include "chrome/common/extensions/extension.h"
+#include "chrome/common/extensions/extension_resource.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+TEST(ExtensionResourceTest, CreateEmptyResource) {
+ ExtensionResource resource;
+
+ EXPECT_TRUE(resource.extension_root().empty());
+ EXPECT_TRUE(resource.relative_path().empty());
+ EXPECT_TRUE(resource.GetFilePath().empty());
+}
+
+const FilePath::StringType ToLower(const FilePath::StringType& in_str) {
+ FilePath::StringType str(in_str);
+ std::transform(str.begin(), str.end(), str.begin(), tolower);
+ return str;
+}
+
+TEST(ExtensionResourceTest, CreateWithMissingResourceOnDisk) {
+ FilePath root_path;
+ ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &root_path));
+ FilePath relative_path;
+ relative_path = relative_path.AppendASCII("cira.js");
+ ExtensionResource resource(root_path, relative_path);
+
+ EXPECT_EQ(root_path.value(), resource.extension_root().value());
+ EXPECT_EQ(relative_path.value(), resource.relative_path().value());
+ EXPECT_EQ(root_path.Append(relative_path).value(),
+ ToLower(resource.GetFilePath().value()));
+
+ EXPECT_FALSE(resource.GetFilePath().empty());
+}
+
+TEST(ExtensionResourceTest, CreateWithBothResourcesOnDisk) {
+ ScopedTempDir temp;
+ ASSERT_TRUE(temp.CreateUniqueTempDir());
+
+ const char* filename = "res.ico";
+ FilePath root_resource = temp.path().AppendASCII(filename);
+ std::string data = "some foo";
+ ASSERT_TRUE(file_util::WriteFile(root_resource.AppendASCII(filename),
+ data.c_str(), data.length()));
+
+ FilePath l10n_path = temp.path().AppendASCII(Extension::kLocaleFolder);
+ ASSERT_TRUE(file_util::CreateDirectory(l10n_path));
+
+ static std::string current_locale = l10n_util::GetApplicationLocale(L"");
+ std::replace(current_locale.begin(), current_locale.end(), '-', '_');
+ l10n_path = l10n_path.AppendASCII(current_locale);
+ ASSERT_TRUE(file_util::CreateDirectory(l10n_path));
+
+ ASSERT_TRUE(file_util::WriteFile(l10n_path.AppendASCII(filename),
+ data.c_str(), data.length()));
+
+ FilePath path;
+ ExtensionResource resource(temp.path(), FilePath().AppendASCII(filename));
+ FilePath resolved_path = resource.GetFilePath();
+
+ EXPECT_EQ(l10n_path.AppendASCII(filename).value(), resolved_path.value());
+ EXPECT_EQ(temp.path().value(), resource.extension_root().value());
+ EXPECT_EQ(FilePath().AppendASCII(filename).value(),
+ resource.relative_path().value());
+}