| // Copyright 2019 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/ash/child_accounts/time_limit_consistency_test/consistency_golden_loader.h" |
| |
| #include "base/containers/contains.h" |
| #include "base/files/dir_reader_posix.h" |
| #include "base/files/file.h" |
| #include "base/files/file_util.h" |
| #include "base/path_service.h" |
| #include "base/strings/strcat.h" |
| #include "base/strings/string_util.h" |
| #include "third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl.h" |
| #include "third_party/protobuf/src/google/protobuf/text_format.h" |
| |
| namespace ash { |
| namespace time_limit_consistency { |
| namespace { |
| |
| base::FilePath GetGoldensPath() { |
| base::FilePath path; |
| base::PathService::Get(base::DIR_SRC_TEST_DATA_ROOT, &path); |
| |
| return path.Append( |
| FILE_PATH_LITERAL("chrome/browser/ash/child_accounts/" |
| "time_limit_consistency_test/goldens")); |
| } |
| |
| } // namespace |
| |
| std::vector<GoldenParam> LoadGoldenCases() { |
| return LoadGoldenCasesFromPath(GetGoldensPath()); |
| } |
| |
| std::vector<GoldenParam> LoadGoldenCasesFromPath( |
| const base::FilePath& directory_path) { |
| std::vector<GoldenParam> golden_params_list; |
| base::DirReaderPosix dir_reader(directory_path.value().c_str()); |
| |
| while (dir_reader.Next()) { |
| if (!base::EndsWith(dir_reader.name(), ".textproto", |
| base::CompareCase::INSENSITIVE_ASCII)) { |
| continue; |
| } |
| |
| ConsistencyGolden golden_suite; |
| base::File golden_file(directory_path.Append(dir_reader.name()), |
| base::File::FLAG_OPEN | base::File::FLAG_READ); |
| google::protobuf::io::FileInputStream stream(golden_file.GetPlatformFile()); |
| google::protobuf::TextFormat::Parse(&stream, &golden_suite); |
| |
| // Ignore suites that don't include CHROME_OS as a supported platform. |
| bool chromeos_supported = |
| base::Contains(golden_suite.supported_platforms(), CHROME_OS); |
| if (!chromeos_supported) |
| continue; |
| |
| std::string suite_name = dir_reader.name(); |
| base::ReplaceFirstSubstringAfterOffset(&suite_name, 0, ".textproto", ""); |
| for (int i = 0; i < golden_suite.cases_size(); i++) { |
| golden_params_list.push_back( |
| GoldenParam({suite_name, i, golden_suite.cases(i)})); |
| } |
| } |
| |
| return golden_params_list; |
| } |
| |
| } // namespace time_limit_consistency |
| } // namespace ash |