| // Copyright 2021 The Chromium Authors | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "components/component_updater/component_updater_utils.h" | 
 |  | 
 | #include <optional> | 
 | #include <string> | 
 | #include <vector> | 
 |  | 
 | #include "base/containers/flat_map.h" | 
 | #include "base/files/file_enumerator.h" | 
 | #include "base/files/file_path.h" | 
 | #include "base/files/file_util.h" | 
 | #include "base/logging.h" | 
 | #include "base/version.h" | 
 | #include "components/component_updater/component_updater_service.h" | 
 |  | 
 | namespace component_updater { | 
 |  | 
 | std::optional<ComponentRegistration> GetComponent( | 
 |     const base::flat_map<std::string, ComponentRegistration>& components, | 
 |     const std::string& id) { | 
 |   const auto it = components.find(id); | 
 |   if (it != components.end()) { | 
 |     return it->second; | 
 |   } | 
 |   return std::nullopt; | 
 | } | 
 |  | 
 | std::vector<std::optional<ComponentRegistration>> GetCrxComponents( | 
 |     const base::flat_map<std::string, ComponentRegistration>& | 
 |         registered_components, | 
 |     const std::vector<std::string>& ids) { | 
 |   std::vector<std::optional<ComponentRegistration>> components; | 
 |   for (const auto& id : ids) { | 
 |     components.push_back(GetComponent(registered_components, id)); | 
 |   } | 
 |   return components; | 
 | } | 
 |  | 
 | }  // namespace component_updater |