| Index: storage/browser/quota/quota_settings.h
|
| diff --git a/storage/browser/quota/quota_settings.h b/storage/browser/quota/quota_settings.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..5207eb6c9b126e0be4962e3a276bc8d2a115ebab
|
| --- /dev/null
|
| +++ b/storage/browser/quota/quota_settings.h
|
| @@ -0,0 +1,90 @@
|
| +// Copyright 2016 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 STORAGE_BROWSER_QUOTA_QUOTA_SETTINGS_H_
|
| +#define STORAGE_BROWSER_QUOTA_QUOTA_SETTINGS_H_
|
| +
|
| +#include <stdint.h>
|
| +
|
| +#include "base/callback.h"
|
| +#include "base/files/file_path.h"
|
| +#include "base/optional.h"
|
| +#include "base/time/time.h"
|
| +#include "storage/browser/storage_browser_export.h"
|
| +
|
| +namespace storage {
|
| +
|
| +// Settings the storage lib embedder must provide to the QuotaManager.
|
| +struct QuotaSettings {
|
| + QuotaSettings() = default;
|
| + QuotaSettings(int64_t pool_size,
|
| + int64_t per_host_quota,
|
| + int64_t should_remain_available,
|
| + int64_t must_remain_available)
|
| + : pool_size(pool_size),
|
| + per_host_quota(per_host_quota),
|
| + should_remain_available(should_remain_available),
|
| + must_remain_available(must_remain_available) {}
|
| +
|
| + // The target size in bytes of the shared pool of disk space the quota
|
| + // system allows for use by websites using HTML5 storage apis, for
|
| + // example an embedder may use 50% of the total volume size.
|
| + int64_t pool_size = 0;
|
| +
|
| + // The amount in bytes of the pool an individual site may consume. The
|
| + // value must be less than or equal to the pool_size.
|
| + int64_t per_host_quota = 0;
|
| +
|
| + // The amount of space that should remain available on the storage
|
| + // volume. As the volume approaches this limit, the quota system gets
|
| + // more aggressive about evicting data.
|
| + int64_t should_remain_available = 0;
|
| +
|
| + // The amount of space that must remain available on the storage
|
| + // volume. As the volume approaches this limit, the quota system gets
|
| + // very aggressive about disallowing new data.
|
| + int64_t must_remain_available = 0;
|
| +
|
| + // The quota system querries the embedder for the QuataSettings,
|
| + // but will rate limit the frequency of the querries to no more than once
|
| + // per refresh interval.
|
| + base::TimeDelta refresh_interval = base::TimeDelta::Max();
|
| +};
|
| +
|
| +// Function type used to return the settings in response to a
|
| +// GetQuotaSettingsFunc invocation. If the embedder cannot
|
| +// produce a settings values, base::nullopt can be returned.
|
| +using OptionalQuotaSettingsCallback =
|
| + base::Callback<void(base::Optional<QuotaSettings>)>;
|
| +
|
| +// Function type used to query the embedder about the quota manager settings.
|
| +// This function is invoked on the UI thread.
|
| +using GetQuotaSettingsFunc =
|
| + base::Callback<void(const OptionalQuotaSettingsCallback& callback)>;
|
| +
|
| +// Returns settings based on the size of the volume containing the storage
|
| +// partition and a guestimate of the size required for the OS. The refresh
|
| +// interval is 60 seconds to accomodate changes to the size of the volume.
|
| +// Except, in the case of incognito, the poolize and quota values are based
|
| +// on the amount of physical memory and the rerfresh interval is max'd out.
|
| +STORAGE_EXPORT
|
| +base::Optional<storage::QuotaSettings> CalculateNominalDynamicSettings(
|
| + const base::FilePath& partition_path,
|
| + bool is_incognito);
|
| +
|
| +// Returns settings with a poolsize of zero and no per host quota.
|
| +inline QuotaSettings GetNoQuotaSettings() {
|
| + return QuotaSettings();
|
| +}
|
| +
|
| +// Returns settings that provide given |per_host_quota| and a total poolsize of
|
| +// five times that.
|
| +inline QuotaSettings GetHardCodedSettings(int64_t per_host_quota) {
|
| + return QuotaSettings(per_host_quota * 5, per_host_quota,
|
| + per_host_quota, per_host_quota);
|
| +}
|
| +
|
| +} // namespace storage
|
| +
|
| +#endif // STORAGE_BROWSER_QUOTA_QUOTA_MANAGER_H_
|
|
|