1 // Copyright 2020 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "components/feed/core/v2/prefs.h"
6 
7 #include <utility>
8 
9 #include "base/value_conversions.h"
10 #include "base/values.h"
11 #include "components/prefs/pref_registry_simple.h"
12 #include "components/prefs/pref_service.h"
13 
14 namespace feed {
15 namespace {
16 const char kThrottlerRequestCountListPrefName[] =
17     "feedv2.request_throttler.request_counts";
18 const char kThrottlerLastRequestTime[] =
19     "feedv2.request_throttler.last_request_time";
20 
21 }  // namespace
22 
23 namespace prefs {
24 
GetThrottlerRequestCounts(PrefService * pref_service)25 std::vector<int> GetThrottlerRequestCounts(PrefService* pref_service) {
26   std::vector<int> result;
27   const auto& value_list =
28       pref_service->GetList(kThrottlerRequestCountListPrefName)->GetList();
29   for (const base::Value& value : value_list) {
30     result.push_back(value.is_int() ? value.GetInt() : 0);
31   }
32   return result;
33 }
34 
SetThrottlerRequestCounts(std::vector<int> request_counts,PrefService * pref_service)35 void SetThrottlerRequestCounts(std::vector<int> request_counts,
36                                PrefService* pref_service) {
37   std::vector<base::Value> value_list;
38   for (int count : request_counts) {
39     value_list.push_back(base::Value(count));
40   }
41 
42   pref_service->Set(kThrottlerRequestCountListPrefName,
43                     base::Value(std::move(value_list)));
44 }
45 
GetLastRequestTime(PrefService * pref_service)46 base::Time GetLastRequestTime(PrefService* pref_service) {
47   return pref_service->GetTime(kThrottlerLastRequestTime);
48 }
49 
SetLastRequestTime(base::Time request_time,PrefService * pref_service)50 void SetLastRequestTime(base::Time request_time, PrefService* pref_service) {
51   return pref_service->SetTime(kThrottlerLastRequestTime, request_time);
52 }
53 
54 }  // namespace prefs
55 
56 }  // namespace feed
57