// 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.
#ifndef IOS_CHROME_BROWSER_DRIVE_MODEL_UPLOAD_TASK_OBSERVER_H_
#define IOS_CHROME_BROWSER_DRIVE_MODEL_UPLOAD_TASK_OBSERVER_H_
#import "base/observer_list_types.h"
class UploadTask;
// Allows observation of UploadTask updates. All methods are called on UI
// thread.
class UploadTaskObserver : public base::CheckedObserver {
public:
UploadTaskObserver();
UploadTaskObserver(const UploadTaskObserver&) = delete;
UploadTaskObserver& operator=(const UploadTaskObserver&) = delete;
~UploadTaskObserver() override;
// Called when the Upload task has started, uploaded a chunk of data or
// the upload has been completed. Clients may call UploadTask::IsDone() to
// check if the task has completed, UploadTask::GetProgress() to check
// the upload progress.
virtual void OnUploadUpdated(UploadTask* task);
// Called when the upload task is about to be destructed. After this
// callback all references to provided UploadTask should be cleared.
virtual void OnUploadDestroyed(UploadTask* task) = 0;
};
#endif // IOS_CHROME_BROWSER_DRIVE_MODEL_UPLOAD_TASK_OBSERVER_H_