| Index: chrome/common/extensions/extension_resource.cc
|
| diff --git a/chrome/common/extensions/extension_resource.cc b/chrome/common/extensions/extension_resource.cc
|
| deleted file mode 100644
|
| index eded1ac2e0d07d6fc9e7560d5dc121927b52335c..0000000000000000000000000000000000000000
|
| --- a/chrome/common/extensions/extension_resource.cc
|
| +++ /dev/null
|
| @@ -1,122 +0,0 @@
|
| -// Copyright (c) 2012 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 "chrome/common/extensions/extension_resource.h"
|
| -
|
| -#include "base/file_util.h"
|
| -#include "base/logging.h"
|
| -#include "base/threading/thread_restrictions.h"
|
| -
|
| -ExtensionResource::ExtensionResource() : follow_symlinks_anywhere_(false) {
|
| -}
|
| -
|
| -ExtensionResource::ExtensionResource(const std::string& extension_id,
|
| - const base::FilePath& extension_root,
|
| - const base::FilePath& relative_path)
|
| - : extension_id_(extension_id),
|
| - extension_root_(extension_root),
|
| - relative_path_(relative_path),
|
| - follow_symlinks_anywhere_(false) {
|
| -}
|
| -
|
| -ExtensionResource::~ExtensionResource() {}
|
| -
|
| -void ExtensionResource::set_follow_symlinks_anywhere() {
|
| - follow_symlinks_anywhere_ = true;
|
| -}
|
| -
|
| -const base::FilePath& ExtensionResource::GetFilePath() const {
|
| - if (extension_root_.empty() || relative_path_.empty()) {
|
| - DCHECK(full_resource_path_.empty());
|
| - return full_resource_path_;
|
| - }
|
| -
|
| - // We've already checked, just return last value.
|
| - if (!full_resource_path_.empty())
|
| - return full_resource_path_;
|
| -
|
| - full_resource_path_ = GetFilePath(
|
| - extension_root_, relative_path_,
|
| - follow_symlinks_anywhere_ ?
|
| - FOLLOW_SYMLINKS_ANYWHERE : SYMLINKS_MUST_RESOLVE_WITHIN_ROOT);
|
| - return full_resource_path_;
|
| -}
|
| -
|
| -// static
|
| -base::FilePath ExtensionResource::GetFilePath(
|
| - const base::FilePath& extension_root,
|
| - const base::FilePath& relative_path,
|
| - SymlinkPolicy symlink_policy) {
|
| - // We need to resolve the parent references in the extension_root
|
| - // path on its own because IsParent doesn't like parent references.
|
| - base::FilePath clean_extension_root(extension_root);
|
| - if (!file_util::AbsolutePath(&clean_extension_root))
|
| - return base::FilePath();
|
| -
|
| - base::FilePath full_path = clean_extension_root.Append(relative_path);
|
| -
|
| - // If we are allowing the file to be a symlink outside of the root, then the
|
| - // path before resolving the symlink must still be within it.
|
| - if (symlink_policy == FOLLOW_SYMLINKS_ANYWHERE) {
|
| - std::vector<base::FilePath::StringType> components;
|
| - relative_path.GetComponents(&components);
|
| - int depth = 0;
|
| -
|
| - for (std::vector<base::FilePath::StringType>::const_iterator
|
| - i = components.begin(); i != components.end(); i++) {
|
| - if (*i == base::FilePath::kParentDirectory) {
|
| - depth--;
|
| - } else if (*i != base::FilePath::kCurrentDirectory) {
|
| - depth++;
|
| - }
|
| - if (depth < 0) {
|
| - return base::FilePath();
|
| - }
|
| - }
|
| - }
|
| -
|
| - // We must resolve the absolute path of the combined path when
|
| - // the relative path contains references to a parent folder (i.e., '..').
|
| - // We also check if the path exists because the posix version of AbsolutePath
|
| - // will fail if the path doesn't exist, and we want the same behavior on
|
| - // Windows... So until the posix and Windows version of AbsolutePath are
|
| - // unified, we need an extra call to PathExists, unfortunately.
|
| - // TODO(mad): Fix this once AbsolutePath is unified.
|
| - if (file_util::AbsolutePath(&full_path) &&
|
| - file_util::PathExists(full_path) &&
|
| - (symlink_policy == FOLLOW_SYMLINKS_ANYWHERE ||
|
| - clean_extension_root.IsParent(full_path))) {
|
| - return full_path;
|
| - }
|
| -
|
| - return base::FilePath();
|
| -}
|
| -
|
| -// Unit-testing helpers.
|
| -base::FilePath::StringType ExtensionResource::NormalizeSeperators(
|
| - const base::FilePath::StringType& path) const {
|
| -#if defined(FILE_PATH_USES_WIN_SEPARATORS)
|
| - base::FilePath::StringType win_path = path;
|
| - for (size_t i = 0; i < win_path.length(); i++) {
|
| - if (base::FilePath::IsSeparator(win_path[i]))
|
| - win_path[i] = base::FilePath::kSeparators[0];
|
| - }
|
| - return win_path;
|
| -#else
|
| - return path;
|
| -#endif // FILE_PATH_USES_WIN_SEPARATORS
|
| -}
|
| -
|
| -bool ExtensionResource::ComparePathWithDefault(
|
| - const base::FilePath& path) const {
|
| - // Make sure we have a cached value to test against...
|
| - if (full_resource_path_.empty())
|
| - GetFilePath();
|
| - if (NormalizeSeperators(path.value()) ==
|
| - NormalizeSeperators(full_resource_path_.value())) {
|
| - return true;
|
| - } else {
|
| - return false;
|
| - }
|
| -}
|
|
|