forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathextension_resource_path_normalizer.cc
42 lines (33 loc) · 1.14 KB
/
extension_resource_path_normalizer.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// Copyright 2018 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 "extensions/common/extension_resource_path_normalizer.h"
#include <utility>
#include <vector>
bool NormalizeExtensionResourcePath(const base::FilePath& path,
base::FilePath* result) {
DCHECK(result);
if (path.ReferencesParent())
return false;
std::vector<base::FilePath::StringType> components;
path.GetComponents(&components);
base::FilePath rv;
for (const auto& path_component : components) {
if (path_component != base::FilePath::kCurrentDirectory)
rv = rv.Append(path_component);
}
if (rv.empty())
return false;
*result = std::move(rv);
return true;
}
std::set<base::FilePath> NormalizeExtensionResourcePaths(
const std::set<base::FilePath>& icons_paths) {
std::set<base::FilePath> rv;
for (const auto& icon_path : icons_paths) {
base::FilePath normalized_path;
if (NormalizeExtensionResourcePath(icon_path, &normalized_path))
rv.emplace(std::move(normalized_path));
}
return rv;
}