| 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 |