// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chrome/browser/task_management/task_manager_observer.h"

#include "chrome/browser/task_management/task_manager_interface.h"

namespace task_management {

TaskManagerObserver::TaskManagerObserver(base::TimeDelta refresh_time,
                                         int64_t resources_flags)
    : observed_task_manager_(nullptr),
      desired_refresh_time_(refresh_time < base::TimeDelta::FromSeconds(1)
                                ? base::TimeDelta::FromSeconds(1)
                                : refresh_time),
      desired_resources_flags_(resources_flags) {}

TaskManagerObserver::~TaskManagerObserver() {
}

void TaskManagerObserver::AddRefreshType(RefreshType type) {
  desired_resources_flags_ |= type;

  if (observed_task_manager_)
    observed_task_manager_->RecalculateRefreshFlags();
}

void TaskManagerObserver::RemoveRefreshType(RefreshType type) {
  desired_resources_flags_ &= ~type;

  if (observed_task_manager_)
    observed_task_manager_->RecalculateRefreshFlags();
}


}  // namespace task_management
