| // Copyright 2023 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef IOS_CHROME_BROWSER_UNIT_CONVERSION_MODEL_UNIT_CONVERSION_SERVICE_H_ |
| #define IOS_CHROME_BROWSER_UNIT_CONVERSION_MODEL_UNIT_CONVERSION_SERVICE_H_ |
| |
| #import <Foundation/Foundation.h> |
| |
| #import "components/keyed_service/core/keyed_service.h" |
| |
| // An observable KeyedService which tracks the changes of target unit which |
| // implies changes in the default conversion |
| class UnitConversionService : public KeyedService { |
| public: |
| // Updates the `default_conversion_cache_` with the `source_unit` as the key |
| // and `target_unit` as its value. |
| void UpdateDefaultConversionCache(NSUnit* source_unit, NSUnit* target_unit); |
| |
| // Returns the default target unit for a given source unit from |
| // `default_conversion_cache_`, if the source unit is not present in the |
| // dictionary the value returned is computed from the |
| // `unit_conversion_provider`. |
| NSUnit* GetDefaultTargetFromUnit(NSUnit* unit); |
| |
| private: |
| // A cache to store the changes made to the target unit from a source unit, |
| // the key represent a source unit and the value the new target unit. |
| NSMutableDictionary* default_conversion_cache_ = |
| [[NSMutableDictionary alloc] init]; |
| }; |
| |
| #endif // IOS_CHROME_BROWSER_UNIT_CONVERSION_MODEL_UNIT_CONVERSION_SERVICE_H_ |