1*6777b538SAndroid Build Coastguard Worker // Copyright 2021 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #include "base/files/safe_base_name.h" 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Worker namespace base { 8*6777b538SAndroid Build Coastguard Worker 9*6777b538SAndroid Build Coastguard Worker // static Create(const FilePath & path)10*6777b538SAndroid Build Coastguard Workerstd::optional<SafeBaseName> SafeBaseName::Create(const FilePath& path) { 11*6777b538SAndroid Build Coastguard Worker auto basename = path.BaseName(); 12*6777b538SAndroid Build Coastguard Worker 13*6777b538SAndroid Build Coastguard Worker if (!basename.IsAbsolute() && !basename.ReferencesParent() && 14*6777b538SAndroid Build Coastguard Worker !basename.EndsWithSeparator()) { 15*6777b538SAndroid Build Coastguard Worker return std::make_optional(SafeBaseName(basename)); 16*6777b538SAndroid Build Coastguard Worker } 17*6777b538SAndroid Build Coastguard Worker 18*6777b538SAndroid Build Coastguard Worker return std::nullopt; 19*6777b538SAndroid Build Coastguard Worker } 20*6777b538SAndroid Build Coastguard Worker 21*6777b538SAndroid Build Coastguard Worker // static Create(FilePath::StringPieceType path)22*6777b538SAndroid Build Coastguard Workerstd::optional<SafeBaseName> SafeBaseName::Create( 23*6777b538SAndroid Build Coastguard Worker FilePath::StringPieceType path) { 24*6777b538SAndroid Build Coastguard Worker return Create(FilePath(path)); 25*6777b538SAndroid Build Coastguard Worker } 26*6777b538SAndroid Build Coastguard Worker SafeBaseName(const FilePath & path)27*6777b538SAndroid Build Coastguard WorkerSafeBaseName::SafeBaseName(const FilePath& path) : path_(path) {} 28*6777b538SAndroid Build Coastguard Worker operator ==(const SafeBaseName & that) const29*6777b538SAndroid Build Coastguard Workerbool SafeBaseName::operator==(const SafeBaseName& that) const { 30*6777b538SAndroid Build Coastguard Worker return path_ == that.path_; 31*6777b538SAndroid Build Coastguard Worker } 32*6777b538SAndroid Build Coastguard Worker 33*6777b538SAndroid Build Coastguard Worker } // namespace base 34