1 // Copyright 2015 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/task_manager/task_manager_observer.h"
6 
7 #include "chrome/browser/task_manager/task_manager_interface.h"
8 
9 namespace task_manager {
10 
11 // static
IsResourceRefreshEnabled(RefreshType refresh_type,int refresh_flags)12 bool TaskManagerObserver::IsResourceRefreshEnabled(RefreshType refresh_type,
13                                                    int refresh_flags) {
14   return (refresh_flags & refresh_type) != 0;
15 }
16 
TaskManagerObserver(base::TimeDelta refresh_time,int64_t resources_flags)17 TaskManagerObserver::TaskManagerObserver(base::TimeDelta refresh_time,
18                                          int64_t resources_flags)
19     : observed_task_manager_(nullptr),
20       desired_refresh_time_(refresh_time < base::TimeDelta::FromSeconds(1)
21                                 ? base::TimeDelta::FromSeconds(1)
22                                 : refresh_time),
23       desired_resources_flags_(resources_flags) {}
24 
~TaskManagerObserver()25 TaskManagerObserver::~TaskManagerObserver() {
26   if (observed_task_manager())
27     observed_task_manager()->RemoveObserver(this);
28 }
29 
AddRefreshType(RefreshType type)30 void TaskManagerObserver::AddRefreshType(RefreshType type) {
31   desired_resources_flags_ |= type;
32 
33   if (observed_task_manager_)
34     observed_task_manager_->RecalculateRefreshFlags();
35 }
36 
RemoveRefreshType(RefreshType type)37 void TaskManagerObserver::RemoveRefreshType(RefreshType type) {
38   desired_resources_flags_ &= ~type;
39 
40   if (observed_task_manager_)
41     observed_task_manager_->RecalculateRefreshFlags();
42 }
43 
SetRefreshTypesFlags(int64_t flags)44 void TaskManagerObserver::SetRefreshTypesFlags(int64_t flags) {
45   desired_resources_flags_ = flags;
46 
47   if (observed_task_manager_)
48     observed_task_manager_->RecalculateRefreshFlags();
49 }
50 
51 }  // namespace task_manager
52