static unsigned long long tryToReclaimDatabaseQuota(SecurityOrigin* originNeedingQuota) { DatabaseTracker& tracker = WebCore::DatabaseTracker::tracker(); Vector<RefPtr<SecurityOrigin> > origins; tracker.origins(origins); unsigned long long reclaimedQuotaBytes = 0; for (unsigned i = 0; i < origins.size(); i++) { SecurityOrigin* originToReclaimFrom = origins[i].get(); // Don't try to reclaim from the origin that has exceeded its quota. if (originToReclaimFrom->equal(originNeedingQuota)) continue; unsigned long long originUsage = tracker.usageForOrigin(originToReclaimFrom); unsigned long long originQuota = tracker.quotaForOrigin(originToReclaimFrom); // If the origin has a quota that is more than it's current usage +1MB, shrink it. static const int ONE_MB = 1 * 1024 * 1024; if (originUsage + ONE_MB < originQuota) { unsigned long long newQuota = originUsage + ONE_MB; tracker.setQuota(originToReclaimFrom, newQuota); reclaimedQuotaBytes += originQuota - newQuota; } } return reclaimedQuotaBytes; }