| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef WEBKIT_BROWSER_QUOTA_QUOTA_TEMPORARY_STORAGE_EVICTOR_H_ | 5 #ifndef WEBKIT_BROWSER_QUOTA_QUOTA_TEMPORARY_STORAGE_EVICTOR_H_ |
| 6 #define WEBKIT_BROWSER_QUOTA_QUOTA_TEMPORARY_STORAGE_EVICTOR_H_ | 6 #define WEBKIT_BROWSER_QUOTA_QUOTA_TEMPORARY_STORAGE_EVICTOR_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| 11 #include "base/memory/weak_ptr.h" | 11 #include "base/memory/weak_ptr.h" |
| 12 #include "base/threading/non_thread_safe.h" | 12 #include "base/threading/non_thread_safe.h" |
| 13 #include "base/timer/timer.h" | 13 #include "base/timer/timer.h" |
| 14 #include "webkit/browser/webkit_storage_browser_export.h" | 14 #include "storage/common/storage_export.h" |
| 15 #include "webkit/common/quota/quota_types.h" | 15 #include "storage/common/quota/quota_types.h" |
| 16 | 16 |
| 17 class GURL; | 17 class GURL; |
| 18 | 18 |
| 19 namespace content { | 19 namespace content { |
| 20 class QuotaTemporaryStorageEvictorTest; | 20 class QuotaTemporaryStorageEvictorTest; |
| 21 } | 21 } |
| 22 | 22 |
| 23 namespace quota { | 23 namespace quota { |
| 24 | 24 |
| 25 class QuotaEvictionHandler; | 25 class QuotaEvictionHandler; |
| 26 struct UsageAndQuota; | 26 struct UsageAndQuota; |
| 27 | 27 |
| 28 class WEBKIT_STORAGE_BROWSER_EXPORT_PRIVATE QuotaTemporaryStorageEvictor | 28 class STORAGE_EXPORT_PRIVATE QuotaTemporaryStorageEvictor |
| 29 : public base::NonThreadSafe { | 29 : public base::NonThreadSafe { |
| 30 public: | 30 public: |
| 31 struct Statistics { | 31 struct Statistics { |
| 32 Statistics() | 32 Statistics() |
| 33 : num_errors_on_evicting_origin(0), | 33 : num_errors_on_evicting_origin(0), |
| 34 num_errors_on_getting_usage_and_quota(0), | 34 num_errors_on_getting_usage_and_quota(0), |
| 35 num_evicted_origins(0), | 35 num_evicted_origins(0), |
| 36 num_eviction_rounds(0), | 36 num_eviction_rounds(0), |
| 37 num_skipped_eviction_rounds(0) {} | 37 num_skipped_eviction_rounds(0) {} |
| 38 int64 num_errors_on_evicting_origin; | 38 int64 num_errors_on_evicting_origin; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 59 | 59 |
| 60 base::Time start_time; | 60 base::Time start_time; |
| 61 int64 usage_overage_at_round; | 61 int64 usage_overage_at_round; |
| 62 int64 diskspace_shortage_at_round; | 62 int64 diskspace_shortage_at_round; |
| 63 | 63 |
| 64 int64 usage_on_beginning_of_round; | 64 int64 usage_on_beginning_of_round; |
| 65 int64 usage_on_end_of_round; | 65 int64 usage_on_end_of_round; |
| 66 int64 num_evicted_origins_in_round; | 66 int64 num_evicted_origins_in_round; |
| 67 }; | 67 }; |
| 68 | 68 |
| 69 QuotaTemporaryStorageEvictor( | 69 QuotaTemporaryStorageEvictor(QuotaEvictionHandler* quota_eviction_handler, |
| 70 QuotaEvictionHandler* quota_eviction_handler, | 70 int64 interval_ms); |
| 71 int64 interval_ms); | |
| 72 virtual ~QuotaTemporaryStorageEvictor(); | 71 virtual ~QuotaTemporaryStorageEvictor(); |
| 73 | 72 |
| 74 void GetStatistics(std::map<std::string, int64>* statistics); | 73 void GetStatistics(std::map<std::string, int64>* statistics); |
| 75 void ReportPerRoundHistogram(); | 74 void ReportPerRoundHistogram(); |
| 76 void ReportPerHourHistogram(); | 75 void ReportPerHourHistogram(); |
| 77 void Start(); | 76 void Start(); |
| 78 | 77 |
| 79 int64 min_available_disk_space_to_start_eviction() { | 78 int64 min_available_disk_space_to_start_eviction() { |
| 80 return min_available_disk_space_to_start_eviction_; | 79 return min_available_disk_space_to_start_eviction_; |
| 81 } | 80 } |
| 82 void reset_min_available_disk_space_to_start_eviction() { | 81 void reset_min_available_disk_space_to_start_eviction() { |
| 83 min_available_disk_space_to_start_eviction_ = | 82 min_available_disk_space_to_start_eviction_ = |
| 84 kMinAvailableDiskSpaceToStartEvictionNotSpecified; | 83 kMinAvailableDiskSpaceToStartEvictionNotSpecified; |
| 85 } | 84 } |
| 86 void set_min_available_disk_space_to_start_eviction(int64 value) { | 85 void set_min_available_disk_space_to_start_eviction(int64 value) { |
| 87 min_available_disk_space_to_start_eviction_ = value; | 86 min_available_disk_space_to_start_eviction_ = value; |
| 88 } | 87 } |
| 89 | 88 |
| 90 private: | 89 private: |
| 91 friend class content::QuotaTemporaryStorageEvictorTest; | 90 friend class content::QuotaTemporaryStorageEvictorTest; |
| 92 | 91 |
| 93 void StartEvictionTimerWithDelay(int delay_ms); | 92 void StartEvictionTimerWithDelay(int delay_ms); |
| 94 void ConsiderEviction(); | 93 void ConsiderEviction(); |
| 95 void OnGotUsageAndQuotaForEviction( | 94 void OnGotUsageAndQuotaForEviction(QuotaStatusCode status, |
| 96 QuotaStatusCode status, | 95 const UsageAndQuota& quota_and_usage); |
| 97 const UsageAndQuota& quota_and_usage); | |
| 98 void OnGotLRUOrigin(const GURL& origin); | 96 void OnGotLRUOrigin(const GURL& origin); |
| 99 void OnEvictionComplete(QuotaStatusCode status); | 97 void OnEvictionComplete(QuotaStatusCode status); |
| 100 | 98 |
| 101 void OnEvictionRoundStarted(); | 99 void OnEvictionRoundStarted(); |
| 102 void OnEvictionRoundFinished(); | 100 void OnEvictionRoundFinished(); |
| 103 | 101 |
| 104 // This is only used for tests. | 102 // This is only used for tests. |
| 105 void set_repeated_eviction(bool repeated_eviction) { | 103 void set_repeated_eviction(bool repeated_eviction) { |
| 106 repeated_eviction_ = repeated_eviction; | 104 repeated_eviction_ = repeated_eviction; |
| 107 } | 105 } |
| (...skipping 17 matching lines...) Expand all Loading... |
| 125 base::OneShotTimer<QuotaTemporaryStorageEvictor> eviction_timer_; | 123 base::OneShotTimer<QuotaTemporaryStorageEvictor> eviction_timer_; |
| 126 base::RepeatingTimer<QuotaTemporaryStorageEvictor> histogram_timer_; | 124 base::RepeatingTimer<QuotaTemporaryStorageEvictor> histogram_timer_; |
| 127 base::WeakPtrFactory<QuotaTemporaryStorageEvictor> weak_factory_; | 125 base::WeakPtrFactory<QuotaTemporaryStorageEvictor> weak_factory_; |
| 128 | 126 |
| 129 DISALLOW_COPY_AND_ASSIGN(QuotaTemporaryStorageEvictor); | 127 DISALLOW_COPY_AND_ASSIGN(QuotaTemporaryStorageEvictor); |
| 130 }; | 128 }; |
| 131 | 129 |
| 132 } // namespace quota | 130 } // namespace quota |
| 133 | 131 |
| 134 #endif // WEBKIT_BROWSER_QUOTA_QUOTA_TEMPORARY_STORAGE_EVICTOR_H_ | 132 #endif // WEBKIT_BROWSER_QUOTA_QUOTA_TEMPORARY_STORAGE_EVICTOR_H_ |
| OLD | NEW |