| Index: webkit/quota/quota_manager.cc
|
| diff --git a/webkit/quota/quota_manager.cc b/webkit/quota/quota_manager.cc
|
| index 0028cd38ab23b884b25b02b1d395be3cd538e624..3f9db476ac776debc7a024e1bd60ead35719a303 100644
|
| --- a/webkit/quota/quota_manager.cc
|
| +++ b/webkit/quota/quota_manager.cc
|
| @@ -77,11 +77,21 @@ const int QuotaManager::kEvictionIntervalInMilliSeconds =
|
| void CallGetUsageAndQuotaCallback(
|
| const QuotaManager::GetUsageAndQuotaCallback& callback,
|
| bool unlimited,
|
| + bool is_installed_app,
|
| QuotaStatusCode status,
|
| const QuotaAndUsage& quota_and_usage) {
|
| - int64 usage =
|
| - unlimited ? quota_and_usage.unlimited_usage : quota_and_usage.usage;
|
| - int64 quota = unlimited ? QuotaManager::kNoLimit : quota_and_usage.quota;
|
| + int64 usage;
|
| + int64 quota;
|
| +
|
| + if (unlimited) {
|
| + usage = quota_and_usage.unlimited_usage;
|
| + quota = is_installed_app ? quota_and_usage.available_disk_space :
|
| + QuotaManager::kNoLimit;
|
| + } else {
|
| + usage = quota_and_usage.usage;
|
| + quota = quota_and_usage.quota;
|
| + }
|
| +
|
| callback.Run(status, usage, quota);
|
| }
|
|
|
| @@ -406,6 +416,7 @@ class QuotaManager::UsageAndQuotaDispatcherTaskForPersistent
|
| host(), NewWaitableHostUsageCallback());
|
| manager()->GetPersistentHostQuota(
|
| host(), NewWaitableHostQuotaCallback());
|
| + manager()->GetAvailableSpace(NewWaitableAvailableSpaceCallback());
|
| }
|
|
|
| virtual void DispatchCallbacks() OVERRIDE {
|
| @@ -957,7 +968,9 @@ class QuotaManager::AvailableSpaceQueryTask : public QuotaThreadTask {
|
| : QuotaThreadTask(manager, manager->db_thread_),
|
| profile_path_(manager->profile_path_),
|
| space_(-1),
|
| + get_disk_space_fn_(manager->get_disk_space_fn_),
|
| callback_(callback) {
|
| + DCHECK(get_disk_space_fn_);
|
| }
|
|
|
| protected:
|
| @@ -965,7 +978,7 @@ class QuotaManager::AvailableSpaceQueryTask : public QuotaThreadTask {
|
|
|
| // QuotaThreadTask:
|
| virtual void RunOnTargetThread() OVERRIDE {
|
| - space_ = base::SysInfo::AmountOfFreeDiskSpace(profile_path_);
|
| + space_ = get_disk_space_fn_(profile_path_);
|
| }
|
|
|
| virtual void Aborted() OVERRIDE {
|
| @@ -979,6 +992,7 @@ class QuotaManager::AvailableSpaceQueryTask : public QuotaThreadTask {
|
| private:
|
| FilePath profile_path_;
|
| int64 space_;
|
| + GetAvailableDiskSpaceFn get_disk_space_fn_;
|
| AvailableSpaceCallback callback_;
|
| };
|
|
|
| @@ -1200,7 +1214,8 @@ QuotaManager::QuotaManager(bool is_incognito,
|
| temporary_quota_override_(-1),
|
| desired_available_space_(-1),
|
| special_storage_policy_(special_storage_policy),
|
| - weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {
|
| + weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)),
|
| + get_disk_space_fn_(&base::SysInfo::AmountOfFreeDiskSpace) {
|
| }
|
|
|
| void QuotaManager::GetUsageInfo(const GetUsageInfoCallback& callback) {
|
| @@ -1212,9 +1227,10 @@ void QuotaManager::GetUsageInfo(const GetUsageInfoCallback& callback) {
|
| void QuotaManager::GetUsageAndQuota(
|
| const GURL& origin, StorageType type,
|
| const GetUsageAndQuotaCallback& callback) {
|
| - GetUsageAndQuotaInternal(origin, type, false /* global */,
|
| - base::Bind(&CallGetUsageAndQuotaCallback,
|
| - callback, IsStorageUnlimited(origin)));
|
| + GetUsageAndQuotaInternal(
|
| + origin, type, false /* global */,
|
| + base::Bind(&CallGetUsageAndQuotaCallback, callback,
|
| + IsStorageUnlimited(origin), IsInstalledApp(origin)));
|
| }
|
|
|
| void QuotaManager::GetAvailableSpace(const AvailableSpaceCallback& callback) {
|
|
|