// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "ios/chrome/browser/drive/model/upload_task.h"
#import "ios/chrome/browser/drive/model/upload_task_observer.h"
UploadTask::UploadTask() = default;
UploadTask::~UploadTask() {
for (auto& observer : observers_) {
observer.OnUploadDestroyed(this);
}
}
#pragma mark - Public
bool UploadTask::IsDone() const {
switch (GetState()) {
case State::kNotStarted:
case State::kInProgress:
return false;
case State::kCancelled:
case State::kComplete:
case State::kFailed:
return true;
}
}
void UploadTask::AddObserver(UploadTaskObserver* observer) {
observers_.AddObserver(observer);
}
void UploadTask::RemoveObserver(UploadTaskObserver* observer) {
observers_.RemoveObserver(observer);
}
void UploadTask::OnUploadUpdated() {
for (auto& observer : observers_) {
observer.OnUploadUpdated(this);
}
}