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 "chrome/browser/chromeos/login/screens/recommend_apps/fake_recommend_apps_fetcher.h"
6 
7 #include "base/strings/stringprintf.h"
8 #include "base/timer/timer.h"
9 #include "chrome/browser/chromeos/login/screens/recommend_apps/recommend_apps_fetcher_delegate.h"
10 
11 namespace chromeos {
12 
13 namespace {
14 
15 constexpr base::TimeDelta kFakeLoadingTime = base::TimeDelta::FromSeconds(3);
16 constexpr const int kMaxAppCount = 21;
17 
18 }  // namespace
19 
FakeRecommendAppsFetcher(RecommendAppsFetcherDelegate * delegate,int fake_apps_count)20 FakeRecommendAppsFetcher::FakeRecommendAppsFetcher(
21     RecommendAppsFetcherDelegate* delegate,
22     int fake_apps_count)
23     : delegate_(delegate), fake_apps_count_(fake_apps_count) {}
24 
25 FakeRecommendAppsFetcher::~FakeRecommendAppsFetcher() = default;
26 
OnTimer()27 void FakeRecommendAppsFetcher::OnTimer() {
28   base::Value apps(base::Value::Type::LIST);
29   for (int i = 0; i < std::min(std::max(0, fake_apps_count_), kMaxAppCount);
30        i++) {
31     base::Value app(base::Value::Type::DICTIONARY);
32     app.SetKey("name", base::Value(base::StringPrintf("Fake App %d", (i + 1))));
33     app.SetKey("package_name", base::Value(base::StringPrintf(
34                                    "com.example.fake.app%d", (i + 1))));
35     apps.Append(std::move(app));
36   }
37 
38   delegate_->OnLoadSuccess(std::move(apps));
39 }
40 
Start()41 void FakeRecommendAppsFetcher::Start() {
42   delay_timer_.Start(FROM_HERE, kFakeLoadingTime,
43                      base::BindOnce(&FakeRecommendAppsFetcher::OnTimer,
44                                     weak_ptr_factory_.GetWeakPtr()));
45 }
46 
Retry()47 void FakeRecommendAppsFetcher::Retry() {
48   delay_timer_.Start(FROM_HERE, kFakeLoadingTime,
49                      base::BindOnce(&FakeRecommendAppsFetcher::OnTimer,
50                                     weak_ptr_factory_.GetWeakPtr()));
51 }
52 
53 }  // namespace chromeos
54