OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_IMPL_H_ | 5 #ifndef CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_IMPL_H_ |
6 #define CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_IMPL_H_ | 6 #define CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_IMPL_H_ |
7 | 7 |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <queue> | 10 #include <queue> |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
90 completion_inhibitor_ = inhibitor; | 90 completion_inhibitor_ = inhibitor; |
91 } | 91 } |
92 | 92 |
93 // BrowsingDataRemover implementation: | 93 // BrowsingDataRemover implementation: |
94 void SetEmbedderDelegate( | 94 void SetEmbedderDelegate( |
95 std::unique_ptr<BrowsingDataRemoverDelegate> embedder_delegate) override; | 95 std::unique_ptr<BrowsingDataRemoverDelegate> embedder_delegate) override; |
96 BrowsingDataRemoverDelegate* GetEmbedderDelegate() const override; | 96 BrowsingDataRemoverDelegate* GetEmbedderDelegate() const override; |
97 | 97 |
98 void Remove(const base::Time& delete_begin, | 98 void Remove(const base::Time& delete_begin, |
99 const base::Time& delete_end, | 99 const base::Time& delete_end, |
100 int remove_mask, | 100 const std::set<const content::BrowsingDataType*>& remove_mask, |
101 int origin_type_mask) override; | 101 int origin_type_mask) override; |
102 void RemoveAndReply(const base::Time& delete_begin, | 102 void RemoveAndReply( |
103 const base::Time& delete_end, | 103 const base::Time& delete_begin, |
104 int remove_mask, | 104 const base::Time& delete_end, |
105 int origin_type_mask, | 105 const std::set<const content::BrowsingDataType*>& remove_mask, |
106 Observer* observer) override; | 106 int origin_type_mask, |
| 107 Observer* observer) override; |
107 void RemoveWithFilter( | 108 void RemoveWithFilter( |
108 const base::Time& delete_begin, | 109 const base::Time& delete_begin, |
109 const base::Time& delete_end, | 110 const base::Time& delete_end, |
110 int remove_mask, | 111 const std::set<const content::BrowsingDataType*>& remove_mask, |
111 int origin_type_mask, | 112 int origin_type_mask, |
112 std::unique_ptr<content::BrowsingDataFilterBuilder> filter_builder) | 113 std::unique_ptr<content::BrowsingDataFilterBuilder> filter_builder) |
113 override; | 114 override; |
114 void RemoveWithFilterAndReply( | 115 void RemoveWithFilterAndReply( |
115 const base::Time& delete_begin, | 116 const base::Time& delete_begin, |
116 const base::Time& delete_end, | 117 const base::Time& delete_end, |
117 int remove_mask, | 118 const std::set<const content::BrowsingDataType*>& remove_mask, |
118 int origin_type_mask, | 119 int origin_type_mask, |
119 std::unique_ptr<content::BrowsingDataFilterBuilder> filter_builder, | 120 std::unique_ptr<content::BrowsingDataFilterBuilder> filter_builder, |
120 Observer* observer) override; | 121 Observer* observer) override; |
121 | 122 |
122 void AddObserver(Observer* observer) override; | 123 void AddObserver(Observer* observer) override; |
123 void RemoveObserver(Observer* observer) override; | 124 void RemoveObserver(Observer* observer) override; |
124 | 125 |
125 const base::Time& GetLastUsedBeginTime() override; | 126 const base::Time& GetLastUsedBeginTime() override; |
126 const base::Time& GetLastUsedEndTime() override; | 127 const base::Time& GetLastUsedEndTime() override; |
127 int GetLastUsedRemovalMask() override; | 128 const std::set<const content::BrowsingDataType*>& GetLastUsedRemovalMask() |
| 129 override; |
128 int GetLastUsedOriginTypeMask() override; | 130 int GetLastUsedOriginTypeMask() override; |
129 | 131 |
130 // Used for testing. | 132 // Used for testing. |
131 void OverrideStoragePartitionForTesting( | 133 void OverrideStoragePartitionForTesting( |
132 content::StoragePartition* storage_partition); | 134 content::StoragePartition* storage_partition); |
133 | 135 |
134 protected: | 136 protected: |
135 // Use BrowsingDataRemoverFactory::GetForBrowserContext to get an instance of | 137 // Use BrowsingDataRemoverFactory::GetForBrowserContext to get an instance of |
136 // this class. The constructor is protected so that the class is mockable. | 138 // this class. The constructor is protected so that the class is mockable. |
137 explicit BrowsingDataRemoverImpl(content::BrowserContext* browser_context); | 139 explicit BrowsingDataRemoverImpl(content::BrowserContext* browser_context); |
138 ~BrowsingDataRemoverImpl() override; | 140 ~BrowsingDataRemoverImpl() override; |
139 | 141 |
140 // A common reduction of all public Remove[WithFilter][AndReply] methods. | 142 // A common reduction of all public Remove[WithFilter][AndReply] methods. |
141 virtual void RemoveInternal( | 143 virtual void RemoveInternal( |
142 const base::Time& delete_begin, | 144 const base::Time& delete_begin, |
143 const base::Time& delete_end, | 145 const base::Time& delete_end, |
144 int remove_mask, | 146 const std::set<const content::BrowsingDataType*>& remove_mask, |
145 int origin_type_mask, | 147 int origin_type_mask, |
146 std::unique_ptr<content::BrowsingDataFilterBuilder> filter_builder, | 148 std::unique_ptr<content::BrowsingDataFilterBuilder> filter_builder, |
147 Observer* observer); | 149 Observer* observer); |
148 | 150 |
149 private: | 151 private: |
150 // Testing the private RemovalTask. | 152 // Testing the private RemovalTask. |
151 FRIEND_TEST_ALL_PREFIXES(BrowsingDataRemoverImplTest, MultipleTasks); | 153 FRIEND_TEST_ALL_PREFIXES(BrowsingDataRemoverImplTest, MultipleTasks); |
152 | 154 |
153 friend class BrowsingDataRemoverFactory; | 155 friend class BrowsingDataRemoverFactory; |
154 | 156 |
155 // Represents a single removal task. Contains all parameters needed to execute | 157 // Represents a single removal task. Contains all parameters needed to execute |
156 // it and a pointer to the observer that added it. | 158 // it and a pointer to the observer that added it. |
157 struct RemovalTask { | 159 struct RemovalTask { |
158 RemovalTask( | 160 RemovalTask( |
159 const base::Time& delete_begin, | 161 const base::Time& delete_begin, |
160 const base::Time& delete_end, | 162 const base::Time& delete_end, |
161 int remove_mask, | 163 const std::set<const content::BrowsingDataType*>& remove_mask, |
162 int origin_type_mask, | 164 int origin_type_mask, |
163 std::unique_ptr<content::BrowsingDataFilterBuilder> filter_builder, | 165 std::unique_ptr<content::BrowsingDataFilterBuilder> filter_builder, |
164 Observer* observer); | 166 Observer* observer); |
165 ~RemovalTask(); | 167 ~RemovalTask(); |
166 | 168 |
167 base::Time delete_begin; | 169 base::Time delete_begin; |
168 base::Time delete_end; | 170 base::Time delete_end; |
169 int remove_mask; | 171 const std::set<const content::BrowsingDataType*> remove_mask; |
170 int origin_type_mask; | 172 int origin_type_mask; |
171 std::unique_ptr<content::BrowsingDataFilterBuilder> filter_builder; | 173 std::unique_ptr<content::BrowsingDataFilterBuilder> filter_builder; |
172 Observer* observer; | 174 Observer* observer; |
173 }; | 175 }; |
174 | 176 |
175 void Shutdown() override; | 177 void Shutdown() override; |
176 | 178 |
177 // Setter for |is_removing_|; DCHECKs that we can only start removing if we're | 179 // Setter for |is_removing_|; DCHECKs that we can only start removing if we're |
178 // not already removing, and vice-versa. | 180 // not already removing, and vice-versa. |
179 void SetRemoving(bool is_removing); | 181 void SetRemoving(bool is_removing); |
180 | 182 |
181 // Executes the next removal task. Called after the previous task was finished | 183 // Executes the next removal task. Called after the previous task was finished |
182 // or directly from Remove() if the task queue was empty. | 184 // or directly from Remove() if the task queue was empty. |
183 void RunNextTask(); | 185 void RunNextTask(); |
184 | 186 |
185 // Removes the specified items related to browsing for a specific host. If the | 187 // Removes the specified items related to browsing for a specific host. If the |
186 // provided |remove_url| is empty, data is removed for all origins; otherwise, | 188 // provided |remove_url| is empty, data is removed for all origins; otherwise, |
187 // it is restricted by the origin filter origin (where implemented yet). The | 189 // it is restricted by the origin filter origin (where implemented yet). The |
188 // |origin_type_mask| parameter defines the set of origins from which data | 190 // |origin_type_mask| parameter defines the set of origins from which data |
189 // should be removed (protected, unprotected, or both). | 191 // should be removed (protected, unprotected, or both). |
190 // TODO(ttr314): Remove "(where implemented yet)" constraint above once | 192 // TODO(ttr314): Remove "(where implemented yet)" constraint above once |
191 // crbug.com/113621 is done. | 193 // crbug.com/113621 is done. |
192 // TODO(crbug.com/589586): Support all backends w/ origin filter. | 194 // TODO(crbug.com/589586): Support all backends w/ origin filter. |
193 void RemoveImpl(const base::Time& delete_begin, | 195 void RemoveImpl(const base::Time& delete_begin, |
194 const base::Time& delete_end, | 196 const base::Time& delete_end, |
195 int remove_mask, | 197 const std::set<const content::BrowsingDataType*>& remove_mask, |
196 const content::BrowsingDataFilterBuilder& filter_builder, | 198 const content::BrowsingDataFilterBuilder& filter_builder, |
197 int origin_type_mask); | 199 int origin_type_mask); |
198 | 200 |
199 // Notifies observers and transitions to the idle state. | 201 // Notifies observers and transitions to the idle state. |
200 void Notify(); | 202 void Notify(); |
201 | 203 |
202 // Checks if we are all done, and if so, calls Notify(). | 204 // Checks if we are all done, and if so, calls Notify(). |
203 void NotifyIfDone(); | 205 void NotifyIfDone(); |
204 | 206 |
205 // Returns true if we're all done. | 207 // Returns true if we're all done. |
206 bool AllDone(); | 208 bool AllDone(); |
207 | 209 |
208 // The browser context we're to remove from. | 210 // The browser context we're to remove from. |
209 content::BrowserContext* browser_context_; | 211 content::BrowserContext* browser_context_; |
210 | 212 |
211 // A delegate to delete the embedder-specific data. | 213 // A delegate to delete the embedder-specific data. |
212 std::unique_ptr<BrowsingDataRemoverDelegate> embedder_delegate_; | 214 std::unique_ptr<BrowsingDataRemoverDelegate> embedder_delegate_; |
213 | 215 |
214 // Start time to delete from. | 216 // Start time to delete from. |
215 base::Time delete_begin_; | 217 base::Time delete_begin_; |
216 | 218 |
217 // End time to delete to. | 219 // End time to delete to. |
218 base::Time delete_end_; | 220 base::Time delete_end_; |
219 | 221 |
220 // The removal mask for the current removal operation. | 222 // The removal mask for the current removal operation. |
221 int remove_mask_ = 0; | 223 std::set<const content::BrowsingDataType*> remove_mask_; |
222 | 224 |
223 // From which types of origins should we remove data? | 225 // From which types of origins should we remove data? |
224 int origin_type_mask_ = 0; | 226 int origin_type_mask_ = 0; |
225 | 227 |
226 // True if Remove has been invoked. | 228 // True if Remove has been invoked. |
227 bool is_removing_; | 229 bool is_removing_; |
228 | 230 |
229 // Removal tasks to be processed. | 231 // Removal tasks to be processed. |
230 std::queue<RemovalTask> task_queue_; | 232 std::queue<RemovalTask> task_queue_; |
231 | 233 |
(...skipping 19 matching lines...) Expand all Loading... |
251 | 253 |
252 // We do not own this. | 254 // We do not own this. |
253 content::StoragePartition* storage_partition_for_testing_ = nullptr; | 255 content::StoragePartition* storage_partition_for_testing_ = nullptr; |
254 | 256 |
255 base::WeakPtrFactory<BrowsingDataRemoverImpl> weak_ptr_factory_; | 257 base::WeakPtrFactory<BrowsingDataRemoverImpl> weak_ptr_factory_; |
256 | 258 |
257 DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemoverImpl); | 259 DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemoverImpl); |
258 }; | 260 }; |
259 | 261 |
260 #endif // CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_IMPL_H_ | 262 #endif // CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_IMPL_H_ |
OLD | NEW |