blob: 5f1122ff35d12c2d4a8973996e750546bba64469 [file] [log] [blame]
// Copyright 2020 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.
#ifndef WEBLAYER_PUBLIC_DOWNLOAD_H_
#define WEBLAYER_PUBLIC_DOWNLOAD_H_
#include <string>
namespace base {
class FilePath;
}
namespace weblayer {
// These types are sent over IPC and across different versions. Never remove
// or change the order.
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.weblayer_private
// GENERATED_JAVA_CLASS_NAME_OVERRIDE: ImplDownloadState
enum class DownloadState {
// Download is actively progressing.
kInProgress = 0,
// Download is completely finished.
kComplete = 1,
// Download is paused by the user.
kPaused = 2,
// Download has been cancelled by the user.
kCancelled = 3,
// Download has failed (e.g. server or connection problem).
kFailed = 4,
};
// These types are sent over IPC and across different versions. Never remove
// or change the order.
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.weblayer_private
// GENERATED_JAVA_CLASS_NAME_OVERRIDE: ImplDownloadError
enum class DownloadError {
kNoError = 0, // Download completed successfully.
kServerError = 1, // Server failed, e.g. unauthorized or forbidden,
// server unreachable,
kSSLError = 2, // Certificate error.
kConnectivityError = 3, // A network error occur. e.g. disconnected, timed
// out, invalid request.
kNoSpace = 4, // There isn't enough room in the storage location.
kFileError = 5, // Various errors related to file access. e.g.
// access denied, directory or filename too long,
// file is too large for file system, file in use,
// too many files open at once etc...
kCancelled = 6, // The user cancelled the download.
kOtherError = 7, // An error not listed above occurred.
};
// Contains information about a single download that's in progress.
class Download {
public:
virtual ~Download() {}
virtual DownloadState GetState() = 0;
// Returns the total number of expected bytes. Returns -1 if the total size is
// not known.
virtual int64_t GetTotalBytes() = 0;
// Total number of bytes that have been received and written to the download
// file.
virtual int64_t GetReceivedBytes() = 0;
// Pauses the download.
virtual void Pause() = 0;
// Resumes the download.
virtual void Resume() = 0;
// Cancels the download.
virtual void Cancel() = 0;
// Returns the location of the downloaded file. This may be empty if the
// target path hasn't been determined yet. The file it points to won't be
// available until the download completes successfully.
virtual base::FilePath GetLocation() = 0;
// Returns the file name for the download that should be displayed to the
// user.
virtual base::FilePath GetFileNameToReportToUser() = 0;
// Returns the effective MIME type of downloaded content.
virtual std::string GetMimeType() = 0;
// Return information about the error, if any, that was encountered during the
// download.
virtual DownloadError GetError() = 0;
};
} // namespace weblayer
#endif // WEBLAYER_PUBLIC_DOWNLOAD_H_