OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 #include "webkit/quota/mock_storage_client.h" | 5 #include "webkit/quota/mock_storage_client.h" |
6 | 6 |
7 #include "base/atomic_sequence_num.h" | 7 #include "base/atomic_sequence_num.h" |
8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/memory/singleton.h" | 10 #include "base/memory/singleton.h" |
(...skipping 29 matching lines...) Expand all Loading... |
40 DISALLOW_COPY_AND_ASSIGN(MockStorageClientIDSequencer); | 40 DISALLOW_COPY_AND_ASSIGN(MockStorageClientIDSequencer); |
41 }; | 41 }; |
42 | 42 |
43 } // anonymous namespace | 43 } // anonymous namespace |
44 | 44 |
45 MockStorageClient::MockStorageClient( | 45 MockStorageClient::MockStorageClient( |
46 QuotaManagerProxy* quota_manager_proxy, | 46 QuotaManagerProxy* quota_manager_proxy, |
47 const MockOriginData* mock_data, size_t mock_data_size) | 47 const MockOriginData* mock_data, size_t mock_data_size) |
48 : quota_manager_proxy_(quota_manager_proxy), | 48 : quota_manager_proxy_(quota_manager_proxy), |
49 id_(MockStorageClientIDSequencer::GetInstance()->NextMockID()), | 49 id_(MockStorageClientIDSequencer::GetInstance()->NextMockID()), |
50 mock_time_counter_(0), | |
51 runnable_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { | 50 runnable_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { |
52 for (size_t i = 0; i < mock_data_size; ++i) { | 51 for (size_t i = 0; i < mock_data_size; ++i) { |
53 origin_data_[make_pair(GURL(mock_data[i].origin), mock_data[i].type)] = | 52 origin_data_[make_pair(GURL(mock_data[i].origin), mock_data[i].type)] = |
54 mock_data[i].usage; | 53 mock_data[i].usage; |
55 } | 54 } |
56 } | 55 } |
57 | 56 |
58 MockStorageClient::~MockStorageClient() { | 57 MockStorageClient::~MockStorageClient() { |
59 STLDeleteContainerPointers(usage_callbacks_.begin(), usage_callbacks_.end()); | 58 STLDeleteContainerPointers(usage_callbacks_.begin(), usage_callbacks_.end()); |
60 STLDeleteContainerPointers( | 59 STLDeleteContainerPointers( |
61 origins_callbacks_.begin(), origins_callbacks_.end()); | 60 origins_callbacks_.begin(), origins_callbacks_.end()); |
62 STLDeleteContainerPointers( | 61 STLDeleteContainerPointers( |
63 deletion_callbacks_.begin(), deletion_callbacks_.end()); | 62 deletion_callbacks_.begin(), deletion_callbacks_.end()); |
64 } | 63 } |
65 | 64 |
66 void MockStorageClient::AddOriginAndNotify( | 65 void MockStorageClient::AddOriginAndNotify( |
67 const GURL& origin_url, StorageType type, int64 size) { | 66 const GURL& origin_url, StorageType type, int64 size) { |
68 DCHECK(origin_data_.find(make_pair(origin_url, type)) == origin_data_.end()); | 67 DCHECK(origin_data_.find(make_pair(origin_url, type)) == origin_data_.end()); |
69 DCHECK_GE(size, 0); | 68 DCHECK_GE(size, 0); |
70 origin_data_[make_pair(origin_url, type)] = size; | 69 origin_data_[make_pair(origin_url, type)] = size; |
71 quota_manager_proxy_->quota_manager()->NotifyStorageModifiedInternal( | 70 quota_manager_proxy_->NotifyStorageModified(id(), origin_url, type, size); |
72 id(), origin_url, type, size, IncrementMockTime()); | |
73 } | 71 } |
74 | 72 |
75 void MockStorageClient::ModifyOriginAndNotify( | 73 void MockStorageClient::ModifyOriginAndNotify( |
76 const GURL& origin_url, StorageType type, int64 delta) { | 74 const GURL& origin_url, StorageType type, int64 delta) { |
77 OriginDataMap::iterator find = origin_data_.find(make_pair(origin_url, type)); | 75 OriginDataMap::iterator find = origin_data_.find(make_pair(origin_url, type)); |
78 DCHECK(find != origin_data_.end()); | 76 DCHECK(find != origin_data_.end()); |
79 find->second += delta; | 77 find->second += delta; |
80 DCHECK_GE(find->second, 0); | 78 DCHECK_GE(find->second, 0); |
81 | 79 |
82 // TODO(tzik): Check quota to prevent usage exceed | 80 // TODO(tzik): Check quota to prevent usage exceed |
83 quota_manager_proxy_->quota_manager()->NotifyStorageModifiedInternal( | 81 quota_manager_proxy_->NotifyStorageModified(id(), origin_url, type, delta); |
84 id(), origin_url, type, delta, IncrementMockTime()); | |
85 } | 82 } |
86 | 83 |
87 void MockStorageClient::AddOriginToErrorSet( | 84 void MockStorageClient::AddOriginToErrorSet( |
88 const GURL& origin_url, StorageType type) { | 85 const GURL& origin_url, StorageType type) { |
89 error_origins_.insert(make_pair(origin_url, type)); | 86 error_origins_.insert(make_pair(origin_url, type)); |
90 } | 87 } |
91 | 88 |
92 base::Time MockStorageClient::IncrementMockTime() { | |
93 ++mock_time_counter_; | |
94 return base::Time::FromDoubleT(mock_time_counter_ * 10.0); | |
95 } | |
96 | |
97 QuotaClient::ID MockStorageClient::id() const { | 89 QuotaClient::ID MockStorageClient::id() const { |
98 return id_; | 90 return id_; |
99 } | 91 } |
100 | 92 |
101 void MockStorageClient::OnQuotaManagerDestroyed() { | 93 void MockStorageClient::OnQuotaManagerDestroyed() { |
102 delete this; | 94 delete this; |
103 } | 95 } |
104 | 96 |
105 void MockStorageClient::GetOriginUsage(const GURL& origin_url, | 97 void MockStorageClient::GetOriginUsage(const GURL& origin_url, |
106 StorageType type, | 98 StorageType type, |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
201 quota_manager_proxy_-> | 193 quota_manager_proxy_-> |
202 NotifyStorageModified(id(), origin_url, type, -delta); | 194 NotifyStorageModified(id(), origin_url, type, -delta); |
203 origin_data_.erase(itr); | 195 origin_data_.erase(itr); |
204 } | 196 } |
205 | 197 |
206 deletion_callbacks_.erase(callback_ptr); | 198 deletion_callbacks_.erase(callback_ptr); |
207 callback->Run(kQuotaStatusOk); | 199 callback->Run(kQuotaStatusOk); |
208 } | 200 } |
209 | 201 |
210 } // namespace quota | 202 } // namespace quota |
OLD | NEW |