Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(274)

Side by Side Diff: chrome/browser/chromeos/arc/policy/arc_android_management_checker.cc

Issue 2450683002: Clean up retry-delay-time code. (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/chromeos/arc/policy/arc_android_management_checker.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/arc/policy/arc_android_management_checker.h" 5 #include "chrome/browser/chromeos/arc/policy/arc_android_management_checker.h"
6 6
7 #include <utility>
Luis Héctor Chávez 2016/10/25 15:29:39 hmmm is this for std::min? shouldn't it be algorit
hidehiko 2016/10/25 17:02:48 Oops, you're right. It's algorithm. Fixed.
8
7 #include "base/bind.h" 9 #include "base/bind.h"
8 #include "base/threading/thread_task_runner_handle.h" 10 #include "base/threading/thread_task_runner_handle.h"
9 #include "chrome/browser/browser_process.h" 11 #include "chrome/browser/browser_process.h"
10 #include "chrome/browser/browser_process_platform_part.h" 12 #include "chrome/browser/browser_process_platform_part.h"
11 #include "chrome/browser/chromeos/arc/policy/arc_android_management_checker_dele gate.h" 13 #include "chrome/browser/chromeos/arc/policy/arc_android_management_checker_dele gate.h"
12 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" 14 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
13 #include "components/policy/core/common/cloud/device_management_service.h" 15 #include "components/policy/core/common/cloud/device_management_service.h"
14 #include "components/signin/core/browser/profile_oauth2_token_service.h" 16 #include "components/signin/core/browser/profile_oauth2_token_service.h"
15 17
16 namespace arc { 18 namespace arc {
17 19
18 namespace { 20 namespace {
19 21
20 constexpr int kRetryTimeMinMs = 10 * 1000; // 10 sec. 22 constexpr base::TimeDelta kRetryDelayMin = base::TimeDelta::FromSeconds(10);
21 constexpr int kRetryTimeMaxMs = 1 * 60 * 60 * 1000; // 1 hour. 23 constexpr base::TimeDelta kRetryDelayMax = base::TimeDelta::FromHours(1);
22 24
23 policy::DeviceManagementService* GetDeviceManagementService() { 25 policy::DeviceManagementService* GetDeviceManagementService() {
24 policy::BrowserPolicyConnectorChromeOS* const connector = 26 policy::BrowserPolicyConnectorChromeOS* const connector =
25 g_browser_process->platform_part()->browser_policy_connector_chromeos(); 27 g_browser_process->platform_part()->browser_policy_connector_chromeos();
26 return connector->device_management_service(); 28 return connector->device_management_service();
27 } 29 }
28 30
29 } // namespace 31 } // namespace
30 32
31 ArcAndroidManagementChecker::ArcAndroidManagementChecker( 33 ArcAndroidManagementChecker::ArcAndroidManagementChecker(
32 ArcAndroidManagementCheckerDelegate* delegate, 34 ArcAndroidManagementCheckerDelegate* delegate,
33 ProfileOAuth2TokenService* token_service, 35 ProfileOAuth2TokenService* token_service,
34 const std::string& account_id, 36 const std::string& account_id,
35 bool background_mode) 37 bool background_mode)
36 : delegate_(delegate), 38 : delegate_(delegate),
37 token_service_(token_service), 39 token_service_(token_service),
38 account_id_(account_id), 40 account_id_(account_id),
39 background_mode_(background_mode), 41 background_mode_(background_mode),
40 retry_time_ms_(kRetryTimeMinMs), 42 retry_delay_(kRetryDelayMin),
41 android_management_client_(GetDeviceManagementService(), 43 android_management_client_(GetDeviceManagementService(),
42 g_browser_process->system_request_context(), 44 g_browser_process->system_request_context(),
43 account_id, 45 account_id,
44 token_service), 46 token_service),
45 weak_ptr_factory_(this) { 47 weak_ptr_factory_(this) {
46 if (token_service_->RefreshTokenIsAvailable(account_id_)) { 48 if (token_service_->RefreshTokenIsAvailable(account_id_)) {
47 StartCheck(); 49 StartCheck();
48 } else { 50 } else {
49 DCHECK(background_mode_); 51 DCHECK(background_mode_);
50 token_service_->AddObserver(this); 52 token_service_->AddObserver(this);
(...skipping 30 matching lines...) Expand all
81 } 83 }
82 84
83 VLOG(2) << "Start android management check."; 85 VLOG(2) << "Start android management check.";
84 android_management_client_.StartCheckAndroidManagement( 86 android_management_client_.StartCheckAndroidManagement(
85 base::Bind(&ArcAndroidManagementChecker::OnAndroidManagementChecked, 87 base::Bind(&ArcAndroidManagementChecker::OnAndroidManagementChecked,
86 weak_ptr_factory_.GetWeakPtr())); 88 weak_ptr_factory_.GetWeakPtr()));
87 } 89 }
88 90
89 void ArcAndroidManagementChecker::ScheduleCheck() { 91 void ArcAndroidManagementChecker::ScheduleCheck() {
90 DCHECK(background_mode_); 92 DCHECK(background_mode_);
91 93 VLOG(2) << "Schedule next android management check in " << retry_delay_;
Luis Héctor Chávez 2016/10/25 15:29:39 nit: remove extra space in this line (between mana
hidehiko 2016/10/25 17:02:48 Done.
92 VLOG(2) << "Schedule next android management check in " << retry_time_ms_
93 << " ms.";
94 94
95 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( 95 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
96 FROM_HERE, base::Bind(&ArcAndroidManagementChecker::StartCheck, 96 FROM_HERE, base::Bind(&ArcAndroidManagementChecker::StartCheck,
97 weak_ptr_factory_.GetWeakPtr()), 97 weak_ptr_factory_.GetWeakPtr()),
98 base::TimeDelta::FromMilliseconds(retry_time_ms_)); 98 retry_delay_);
99 retry_time_ms_ *= 2; 99 retry_delay_ = std::min(retry_delay_ * 2, kRetryDelayMax);
100 if (retry_time_ms_ > kRetryTimeMaxMs)
101 retry_time_ms_ = kRetryTimeMaxMs;
102 } 100 }
103 101
104 void ArcAndroidManagementChecker::DispatchResult( 102 void ArcAndroidManagementChecker::DispatchResult(
105 policy::AndroidManagementClient::Result result) { 103 policy::AndroidManagementClient::Result result) {
106 DCHECK(delegate_); 104 DCHECK(delegate_);
107 delegate_->OnAndroidManagementChecked(result); 105 delegate_->OnAndroidManagementChecked(result);
108 } 106 }
109 107
110 void ArcAndroidManagementChecker::OnAndroidManagementChecked( 108 void ArcAndroidManagementChecker::OnAndroidManagementChecked(
111 policy::AndroidManagementClient::Result result) { 109 policy::AndroidManagementClient::Result result) {
112 VLOG(2) << "Android management check done " << result << "."; 110 VLOG(2) << "Android management check done " << result << ".";
113 if (background_mode_ && 111 if (background_mode_ &&
114 result == policy::AndroidManagementClient::Result::RESULT_ERROR) { 112 result == policy::AndroidManagementClient::Result::RESULT_ERROR) {
115 ScheduleCheck(); 113 ScheduleCheck();
116 return; 114 return;
117 } 115 }
118 116
119 base::ThreadTaskRunnerHandle::Get()->PostTask( 117 base::ThreadTaskRunnerHandle::Get()->PostTask(
120 FROM_HERE, base::Bind(&ArcAndroidManagementChecker::DispatchResult, 118 FROM_HERE, base::Bind(&ArcAndroidManagementChecker::DispatchResult,
121 weak_ptr_factory_.GetWeakPtr(), result)); 119 weak_ptr_factory_.GetWeakPtr(), result));
122 } 120 }
123 121
124 } // namespace arc 122 } // namespace arc
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/arc/policy/arc_android_management_checker.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698