Commit 2a224897 authored by kinuko@chromium.org's avatar kinuko@chromium.org

Rename SpecialStoragePolicy::IsInstalledApp() to CanQueryDiskSize()

To fix layering leakage issue.

BUG=none
TEST=existing tests

Review URL: https://codereview.chromium.org/14237003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@194748 0039d316-1c4b-4281-b951-d872f2087c98
parent 420fb567
...@@ -48,7 +48,7 @@ bool ExtensionSpecialStoragePolicy::IsStorageSessionOnly(const GURL& origin) { ...@@ -48,7 +48,7 @@ bool ExtensionSpecialStoragePolicy::IsStorageSessionOnly(const GURL& origin) {
return cookie_settings_->IsCookieSessionOnly(origin); return cookie_settings_->IsCookieSessionOnly(origin);
} }
bool ExtensionSpecialStoragePolicy::IsInstalledApp(const GURL& origin) { bool ExtensionSpecialStoragePolicy::CanQueryDiskSize(const GURL& origin) {
return installed_apps_.Contains(origin); return installed_apps_.Contains(origin);
} }
......
...@@ -31,7 +31,7 @@ class ExtensionSpecialStoragePolicy : public quota::SpecialStoragePolicy { ...@@ -31,7 +31,7 @@ class ExtensionSpecialStoragePolicy : public quota::SpecialStoragePolicy {
virtual bool IsStorageProtected(const GURL& origin) OVERRIDE; virtual bool IsStorageProtected(const GURL& origin) OVERRIDE;
virtual bool IsStorageUnlimited(const GURL& origin) OVERRIDE; virtual bool IsStorageUnlimited(const GURL& origin) OVERRIDE;
virtual bool IsStorageSessionOnly(const GURL& origin) OVERRIDE; virtual bool IsStorageSessionOnly(const GURL& origin) OVERRIDE;
virtual bool IsInstalledApp(const GURL& origin) OVERRIDE; virtual bool CanQueryDiskSize(const GURL& origin) OVERRIDE;
virtual bool IsFileHandler(const std::string& extension_id) OVERRIDE; virtual bool IsFileHandler(const std::string& extension_id) OVERRIDE;
virtual bool HasSessionOnlyOrigins() OVERRIDE; virtual bool HasSessionOnlyOrigins() OVERRIDE;
......
...@@ -233,7 +233,7 @@ TEST_F(ExtensionSpecialStoragePolicyTest, AppWithUnlimitedStorage) { ...@@ -233,7 +233,7 @@ TEST_F(ExtensionSpecialStoragePolicyTest, AppWithUnlimitedStorage) {
EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("https://bar.wildcards/"))); EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("https://bar.wildcards/")));
} }
TEST_F(ExtensionSpecialStoragePolicyTest, IsInstalled) { TEST_F(ExtensionSpecialStoragePolicyTest, CanQueryDiskSize) {
const GURL kHttpUrl("http://foo"); const GURL kHttpUrl("http://foo");
const GURL kExtensionUrl("chrome-extension://bar"); const GURL kExtensionUrl("chrome-extension://bar");
scoped_refptr<Extension> regular_app(CreateRegularApp()); scoped_refptr<Extension> regular_app(CreateRegularApp());
...@@ -243,11 +243,11 @@ TEST_F(ExtensionSpecialStoragePolicyTest, IsInstalled) { ...@@ -243,11 +243,11 @@ TEST_F(ExtensionSpecialStoragePolicyTest, IsInstalled) {
policy_->GrantRightsForExtension(protected_app); policy_->GrantRightsForExtension(protected_app);
policy_->GrantRightsForExtension(unlimited_app); policy_->GrantRightsForExtension(unlimited_app);
EXPECT_FALSE(policy_->IsInstalledApp(kHttpUrl)); EXPECT_FALSE(policy_->CanQueryDiskSize(kHttpUrl));
EXPECT_FALSE(policy_->IsInstalledApp(kExtensionUrl)); EXPECT_FALSE(policy_->CanQueryDiskSize(kExtensionUrl));
EXPECT_TRUE(policy_->IsInstalledApp(regular_app->url())); EXPECT_TRUE(policy_->CanQueryDiskSize(regular_app->url()));
EXPECT_TRUE(policy_->IsInstalledApp(protected_app->url())); EXPECT_TRUE(policy_->CanQueryDiskSize(protected_app->url()));
EXPECT_TRUE(policy_->IsInstalledApp(unlimited_app->url())); EXPECT_TRUE(policy_->CanQueryDiskSize(unlimited_app->url()));
} }
TEST_F(ExtensionSpecialStoragePolicyTest, OverlappingApps) { TEST_F(ExtensionSpecialStoragePolicyTest, OverlappingApps) {
......
...@@ -20,7 +20,7 @@ bool MockExtensionSpecialStoragePolicy::IsStorageSessionOnly( ...@@ -20,7 +20,7 @@ bool MockExtensionSpecialStoragePolicy::IsStorageSessionOnly(
return false; return false;
} }
bool MockExtensionSpecialStoragePolicy::IsInstalledApp(const GURL& origin) { bool MockExtensionSpecialStoragePolicy::CanQueryDiskSize(const GURL& origin) {
return false; return false;
} }
......
...@@ -22,7 +22,7 @@ class MockExtensionSpecialStoragePolicy : public ExtensionSpecialStoragePolicy { ...@@ -22,7 +22,7 @@ class MockExtensionSpecialStoragePolicy : public ExtensionSpecialStoragePolicy {
virtual bool IsStorageProtected(const GURL& origin) OVERRIDE; virtual bool IsStorageProtected(const GURL& origin) OVERRIDE;
virtual bool IsStorageUnlimited(const GURL& origin) OVERRIDE; virtual bool IsStorageUnlimited(const GURL& origin) OVERRIDE;
virtual bool IsStorageSessionOnly(const GURL& origin) OVERRIDE; virtual bool IsStorageSessionOnly(const GURL& origin) OVERRIDE;
virtual bool IsInstalledApp(const GURL& origin) OVERRIDE; virtual bool CanQueryDiskSize(const GURL& origin) OVERRIDE;
virtual bool IsFileHandler(const std::string& extension_id) OVERRIDE; virtual bool IsFileHandler(const std::string& extension_id) OVERRIDE;
virtual bool HasSessionOnlyOrigins() OVERRIDE; virtual bool HasSessionOnlyOrigins() OVERRIDE;
......
...@@ -24,8 +24,8 @@ bool MockSpecialStoragePolicy::IsStorageSessionOnly(const GURL& origin) { ...@@ -24,8 +24,8 @@ bool MockSpecialStoragePolicy::IsStorageSessionOnly(const GURL& origin) {
return session_only_.find(origin) != session_only_.end(); return session_only_.find(origin) != session_only_.end();
} }
bool MockSpecialStoragePolicy::IsInstalledApp(const GURL& origin) { bool MockSpecialStoragePolicy::CanQueryDiskSize(const GURL& origin) {
return installed_.find(origin) != installed_.end(); return can_query_disk_size_.find(origin) != can_query_disk_size_.end();
} }
bool MockSpecialStoragePolicy::IsFileHandler(const std::string& extension_id) { bool MockSpecialStoragePolicy::IsFileHandler(const std::string& extension_id) {
......
...@@ -20,7 +20,7 @@ class MockSpecialStoragePolicy : public quota::SpecialStoragePolicy { ...@@ -20,7 +20,7 @@ class MockSpecialStoragePolicy : public quota::SpecialStoragePolicy {
virtual bool IsStorageProtected(const GURL& origin) OVERRIDE; virtual bool IsStorageProtected(const GURL& origin) OVERRIDE;
virtual bool IsStorageUnlimited(const GURL& origin) OVERRIDE; virtual bool IsStorageUnlimited(const GURL& origin) OVERRIDE;
virtual bool IsStorageSessionOnly(const GURL& origin) OVERRIDE; virtual bool IsStorageSessionOnly(const GURL& origin) OVERRIDE;
virtual bool IsInstalledApp(const GURL& origin) OVERRIDE; virtual bool CanQueryDiskSize(const GURL& origin) OVERRIDE;
virtual bool IsFileHandler(const std::string& extension_id) OVERRIDE; virtual bool IsFileHandler(const std::string& extension_id) OVERRIDE;
virtual bool HasSessionOnlyOrigins() OVERRIDE; virtual bool HasSessionOnlyOrigins() OVERRIDE;
...@@ -36,8 +36,8 @@ class MockSpecialStoragePolicy : public quota::SpecialStoragePolicy { ...@@ -36,8 +36,8 @@ class MockSpecialStoragePolicy : public quota::SpecialStoragePolicy {
session_only_.insert(origin); session_only_.insert(origin);
} }
void AddInstalledApp(const GURL& origin) { void GrantQueryDiskSize(const GURL& origin) {
installed_.insert(origin); can_query_disk_size_.insert(origin);
} }
void AddFileHandler(const std::string& id) { void AddFileHandler(const std::string& id) {
...@@ -52,7 +52,7 @@ class MockSpecialStoragePolicy : public quota::SpecialStoragePolicy { ...@@ -52,7 +52,7 @@ class MockSpecialStoragePolicy : public quota::SpecialStoragePolicy {
protected_.clear(); protected_.clear();
unlimited_.clear(); unlimited_.clear();
session_only_.clear(); session_only_.clear();
installed_.clear(); can_query_disk_size_.clear();
file_handlers_.clear(); file_handlers_.clear();
all_unlimited_ = false; all_unlimited_ = false;
} }
...@@ -68,7 +68,7 @@ class MockSpecialStoragePolicy : public quota::SpecialStoragePolicy { ...@@ -68,7 +68,7 @@ class MockSpecialStoragePolicy : public quota::SpecialStoragePolicy {
std::set<GURL> protected_; std::set<GURL> protected_;
std::set<GURL> unlimited_; std::set<GURL> unlimited_;
std::set<GURL> session_only_; std::set<GURL> session_only_;
std::set<GURL> installed_; std::set<GURL> can_query_disk_size_;
std::set<std::string> file_handlers_; std::set<std::string> file_handlers_;
bool all_unlimited_; bool all_unlimited_;
......
...@@ -185,7 +185,7 @@ const int QuotaManager::kEvictionIntervalInMilliSeconds = ...@@ -185,7 +185,7 @@ const int QuotaManager::kEvictionIntervalInMilliSeconds =
// and by multiple apps. // and by multiple apps.
int64 QuotaManager::kSyncableStorageDefaultHostQuota = 500 * kMBytes; int64 QuotaManager::kSyncableStorageDefaultHostQuota = 500 * kMBytes;
int64 CalculateQuotaForInstalledApp( int64 CalculateQuotaWithDiskSpace(
int64 available_disk_space, int64 usage, int64 quota) { int64 available_disk_space, int64 usage, int64 quota) {
if (available_disk_space < QuotaManager::kMinimumPreserveForSystem || if (available_disk_space < QuotaManager::kMinimumPreserveForSystem ||
quota < usage) { quota < usage) {
...@@ -204,15 +204,15 @@ int64 CalculateQuotaForInstalledApp( ...@@ -204,15 +204,15 @@ int64 CalculateQuotaForInstalledApp(
void CallGetUsageAndQuotaCallback( void CallGetUsageAndQuotaCallback(
const QuotaManager::GetUsageAndQuotaCallback& callback, const QuotaManager::GetUsageAndQuotaCallback& callback,
bool unlimited, bool unlimited,
bool is_installed_app, bool can_query_disk_size,
QuotaStatusCode status, QuotaStatusCode status,
const QuotaAndUsage& quota_and_usage) { const QuotaAndUsage& quota_and_usage) {
// Regular limited case. // Regular limited case.
if (!unlimited) { if (!unlimited) {
if (is_installed_app) { if (can_query_disk_size) {
// Cap the quota by the available disk space. // Cap the quota by the available disk space.
callback.Run(status, quota_and_usage.usage, callback.Run(status, quota_and_usage.usage,
CalculateQuotaForInstalledApp( CalculateQuotaWithDiskSpace(
quota_and_usage.available_disk_space, quota_and_usage.available_disk_space,
quota_and_usage.usage, quota_and_usage.usage,
quota_and_usage.quota)); quota_and_usage.quota));
...@@ -224,11 +224,12 @@ void CallGetUsageAndQuotaCallback( ...@@ -224,11 +224,12 @@ void CallGetUsageAndQuotaCallback(
int64 usage = quota_and_usage.unlimited_usage; int64 usage = quota_and_usage.unlimited_usage;
// Unlimited case: this must be only for installed-app and extensions, // Unlimited case: this must be only for apps with unlimitedStorage permission
// or only when --unlimited-storage flag is given. // or only when --unlimited-storage flag is given.
// We return the available disk space (minus kMinimumPreserveForSystem). // We assume we can expose the disk size for them and return the available
// disk space (minus kMinimumPreserveForSystem).
callback.Run(status, usage, callback.Run(status, usage,
CalculateQuotaForInstalledApp( CalculateQuotaWithDiskSpace(
quota_and_usage.available_disk_space, quota_and_usage.available_disk_space,
usage, QuotaManager::kNoLimit)); usage, QuotaManager::kNoLimit));
} }
...@@ -967,7 +968,7 @@ void QuotaManager::GetUsageAndQuotaForWebApps( ...@@ -967,7 +968,7 @@ void QuotaManager::GetUsageAndQuotaForWebApps(
GetUsageAndQuotaInternal( GetUsageAndQuotaInternal(
origin, type, false /* global */, origin, type, false /* global */,
base::Bind(&CallGetUsageAndQuotaCallback, callback, base::Bind(&CallGetUsageAndQuotaCallback, callback,
IsStorageUnlimited(origin, type), IsInstalledApp(origin))); IsStorageUnlimited(origin, type), CanQueryDiskSize(origin)));
} }
void QuotaManager::GetUsageAndQuota( void QuotaManager::GetUsageAndQuota(
...@@ -977,7 +978,7 @@ void QuotaManager::GetUsageAndQuota( ...@@ -977,7 +978,7 @@ void QuotaManager::GetUsageAndQuota(
if (IsStorageUnlimited(origin, type)) { if (IsStorageUnlimited(origin, type)) {
CallGetUsageAndQuotaCallback( CallGetUsageAndQuotaCallback(
callback, false, IsInstalledApp(origin), callback, false, CanQueryDiskSize(origin),
kQuotaStatusOk, QuotaAndUsage::CreateForUnlimitedStorage()); kQuotaStatusOk, QuotaAndUsage::CreateForUnlimitedStorage());
return; return;
} }
......
...@@ -202,9 +202,9 @@ class WEBKIT_STORAGE_EXPORT QuotaManager ...@@ -202,9 +202,9 @@ class WEBKIT_STORAGE_EXPORT QuotaManager
bool IsStorageUnlimited(const GURL& origin, StorageType type) const; bool IsStorageUnlimited(const GURL& origin, StorageType type) const;
bool IsInstalledApp(const GURL& origin) const { bool CanQueryDiskSize(const GURL& origin) const {
return special_storage_policy_.get() && return special_storage_policy_.get() &&
special_storage_policy_->IsInstalledApp(origin); special_storage_policy_->CanQueryDiskSize(origin);
} }
virtual void GetOriginsModifiedSince(StorageType type, virtual void GetOriginsModifiedSince(StorageType type,
......
...@@ -631,7 +631,7 @@ TEST_F(QuotaManagerTest, GetUsage_MultipleClients) { ...@@ -631,7 +631,7 @@ TEST_F(QuotaManagerTest, GetUsage_MultipleClients) {
{ "http://installed/", kTemp, 1024 }, { "http://installed/", kTemp, 1024 },
}; };
mock_special_storage_policy()->AddUnlimited(GURL("http://unlimited/")); mock_special_storage_policy()->AddUnlimited(GURL("http://unlimited/"));
mock_special_storage_policy()->AddInstalledApp(GURL("http://installed/")); mock_special_storage_policy()->GrantQueryDiskSize(GURL("http://installed/"));
RegisterClient(CreateClient(kData1, ARRAYSIZE_UNSAFE(kData1), RegisterClient(CreateClient(kData1, ARRAYSIZE_UNSAFE(kData1),
QuotaClient::kFileSystem)); QuotaClient::kFileSystem));
RegisterClient(CreateClient(kData2, ARRAYSIZE_UNSAFE(kData2), RegisterClient(CreateClient(kData2, ARRAYSIZE_UNSAFE(kData2),
...@@ -997,7 +997,7 @@ TEST_F(QuotaManagerTest, GetAndSetPersistentUsageAndQuota) { ...@@ -997,7 +997,7 @@ TEST_F(QuotaManagerTest, GetAndSetPersistentUsageAndQuota) {
EXPECT_EQ(100, quota()); EXPECT_EQ(100, quota());
// For installed app GetUsageAndQuotaForWebApps returns the capped quota. // For installed app GetUsageAndQuotaForWebApps returns the capped quota.
mock_special_storage_policy()->AddInstalledApp(GURL("http://installed/")); mock_special_storage_policy()->GrantQueryDiskSize(GURL("http://installed/"));
SetPersistentHostQuota("installed", kAvailableSpaceForApp + 100); SetPersistentHostQuota("installed", kAvailableSpaceForApp + 100);
GetUsageAndQuotaForWebApps(GURL("http://installed/"), kPerm); GetUsageAndQuotaForWebApps(GURL("http://installed/"), kPerm);
MessageLoop::current()->RunUntilIdle(); MessageLoop::current()->RunUntilIdle();
...@@ -1027,7 +1027,7 @@ TEST_F(QuotaManagerTest, GetSyncableQuota) { ...@@ -1027,7 +1027,7 @@ TEST_F(QuotaManagerTest, GetSyncableQuota) {
// For installed apps the quota manager should return // For installed apps the quota manager should return
// kAvailableSpaceForApp as syncable quota (because of the pre-condition). // kAvailableSpaceForApp as syncable quota (because of the pre-condition).
mock_special_storage_policy()->AddInstalledApp(GURL("http://installed/")); mock_special_storage_policy()->GrantQueryDiskSize(GURL("http://installed/"));
GetUsageAndQuotaForWebApps(GURL("http://installed/"), kSync); GetUsageAndQuotaForWebApps(GURL("http://installed/"), kSync);
MessageLoop::current()->RunUntilIdle(); MessageLoop::current()->RunUntilIdle();
EXPECT_EQ(kQuotaStatusOk, status()); EXPECT_EQ(kQuotaStatusOk, status());
......
...@@ -39,8 +39,9 @@ class WEBKIT_STORAGE_EXPORT SpecialStoragePolicy ...@@ -39,8 +39,9 @@ class WEBKIT_STORAGE_EXPORT SpecialStoragePolicy
// Unlimited storage is not subject to 'quotas'. // Unlimited storage is not subject to 'quotas'.
virtual bool IsStorageUnlimited(const GURL& origin) = 0; virtual bool IsStorageUnlimited(const GURL& origin) = 0;
// Installed apps have access to the size of the remaining disk capacity. // Some origins (e.g. installed apps) have access to the size of the remaining
virtual bool IsInstalledApp(const GURL& origin) = 0; // disk capacity.
virtual bool CanQueryDiskSize(const GURL& origin) = 0;
// Checks if extension identified with |extension_id| is registered as // Checks if extension identified with |extension_id| is registered as
// file handler. // file handler.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment