// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.download;
import androidx.annotation.IntDef;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/** Denotes a given option for directory selection; includes name, location, and space. */
public class DirectoryOption {
// Type to track user's selection of directory option. This enum is used in histogram and must
// match DownloadLocationDirectoryType in enums.xml, so don't delete or reuse values.
@IntDef({
DownloadLocationDirectoryType.DEFAULT,
DownloadLocationDirectoryType.ADDITIONAL,
DownloadLocationDirectoryType.ERROR
})
@Retention(RetentionPolicy.SOURCE)
public @interface DownloadLocationDirectoryType {
int DEFAULT = 0;
int ADDITIONAL = 1;
int ERROR = 2;
int NUM_ENTRIES = 3;
}
/** Name of the current download directory. */
public String name;
/** The absolute path of the download location. */
public final String location;
/** The available space in this download directory. */
public final long availableSpace;
/** The total disk space of the partition. */
public final long totalSpace;
/** The type of the directory option. */
public final @DownloadLocationDirectoryType int type;
public DirectoryOption(
String name,
String location,
long availableSpace,
long totalSpace,
@DownloadLocationDirectoryType int type) {
this(location, availableSpace, totalSpace, type);
this.name = name;
}
public DirectoryOption(
String location,
long availableSpace,
long totalSpace,
@DownloadLocationDirectoryType int type) {
this.location = location;
this.availableSpace = availableSpace;
this.totalSpace = totalSpace;
this.type = type;
}
@Override
public Object clone() {
DirectoryOption directoryOption =
new DirectoryOption(
this.name, this.location, this.availableSpace, this.totalSpace, this.type);
return directoryOption;
}
}