Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: chrome/browser/browsing_data/browsing_data_remover_impl.h

Issue 2657453006: Move BrowsingDataFilterBuilder[Impl] to content/ (Closed)
Patch Set: Rebased Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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>
11 #include <set> 11 #include <set>
12 12
13 #include "base/gtest_prod_util.h" 13 #include "base/gtest_prod_util.h"
14 #include "base/macros.h" 14 #include "base/macros.h"
15 #include "base/memory/weak_ptr.h" 15 #include "base/memory/weak_ptr.h"
16 #include "base/observer_list.h" 16 #include "base/observer_list.h"
17 #include "base/synchronization/waitable_event_watcher.h" 17 #include "base/synchronization/waitable_event_watcher.h"
18 #include "base/time/time.h" 18 #include "base/time/time.h"
19 #include "build/build_config.h" 19 #include "build/build_config.h"
20 #include "chrome/browser/browsing_data/browsing_data_remover.h" 20 #include "chrome/browser/browsing_data/browsing_data_remover.h"
21 #include "chrome/common/features.h" 21 #include "chrome/common/features.h"
22 #include "components/keyed_service/core/keyed_service.h" 22 #include "components/keyed_service/core/keyed_service.h"
23 #include "ppapi/features/features.h" 23 #include "ppapi/features/features.h"
24 #include "storage/common/quota/quota_types.h" 24 #include "storage/common/quota/quota_types.h"
25 #include "url/gurl.h" 25 #include "url/gurl.h"
26 26
27 class BrowsingDataFilterBuilder;
28 class BrowsingDataRemoverFactory; 27 class BrowsingDataRemoverFactory;
29 28
30 namespace content { 29 namespace content {
31 class BrowserContext; 30 class BrowserContext;
31 class BrowsingDataFilterBuilder;
32 class StoragePartition; 32 class StoragePartition;
33 } 33 }
34 34
35 class BrowsingDataRemoverImpl : 35 class BrowsingDataRemoverImpl :
36 public BrowsingDataRemover, 36 public BrowsingDataRemover,
37 public KeyedService { 37 public KeyedService {
38 public: 38 public:
39 // The completion inhibitor can artificially delay completion of the browsing 39 // The completion inhibitor can artificially delay completion of the browsing
40 // data removal process. It is used during testing to simulate scenarios in 40 // data removal process. It is used during testing to simulate scenarios in
41 // which the deletion stalls or takes a very long time. 41 // which the deletion stalls or takes a very long time.
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 void RemoveAndReply(const base::Time& delete_begin, 102 void RemoveAndReply(const base::Time& delete_begin,
103 const base::Time& delete_end, 103 const base::Time& delete_end,
104 int remove_mask, 104 int remove_mask,
105 int origin_type_mask, 105 int origin_type_mask,
106 Observer* observer) override; 106 Observer* observer) override;
107 void RemoveWithFilter( 107 void RemoveWithFilter(
108 const base::Time& delete_begin, 108 const base::Time& delete_begin,
109 const base::Time& delete_end, 109 const base::Time& delete_end,
110 int remove_mask, 110 int remove_mask,
111 int origin_type_mask, 111 int origin_type_mask,
112 std::unique_ptr<BrowsingDataFilterBuilder> filter_builder) override; 112 std::unique_ptr<content::BrowsingDataFilterBuilder> filter_builder)
113 override;
113 void RemoveWithFilterAndReply( 114 void RemoveWithFilterAndReply(
114 const base::Time& delete_begin, 115 const base::Time& delete_begin,
115 const base::Time& delete_end, 116 const base::Time& delete_end,
116 int remove_mask, 117 int remove_mask,
117 int origin_type_mask, 118 int origin_type_mask,
118 std::unique_ptr<BrowsingDataFilterBuilder> filter_builder, 119 std::unique_ptr<content::BrowsingDataFilterBuilder> filter_builder,
119 Observer* observer) override; 120 Observer* observer) override;
120 121
121 void AddObserver(Observer* observer) override; 122 void AddObserver(Observer* observer) override;
122 void RemoveObserver(Observer* observer) override; 123 void RemoveObserver(Observer* observer) override;
123 124
124 const base::Time& GetLastUsedBeginTime() override; 125 const base::Time& GetLastUsedBeginTime() override;
125 const base::Time& GetLastUsedEndTime() override; 126 const base::Time& GetLastUsedEndTime() override;
126 int GetLastUsedRemovalMask() override; 127 int GetLastUsedRemovalMask() override;
127 int GetLastUsedOriginTypeMask() override; 128 int GetLastUsedOriginTypeMask() override;
128 129
129 // Used for testing. 130 // Used for testing.
130 void OverrideStoragePartitionForTesting( 131 void OverrideStoragePartitionForTesting(
131 content::StoragePartition* storage_partition); 132 content::StoragePartition* storage_partition);
132 133
133 protected: 134 protected:
134 // Use BrowsingDataRemoverFactory::GetForBrowserContext to get an instance of 135 // Use BrowsingDataRemoverFactory::GetForBrowserContext to get an instance of
135 // this class. The constructor is protected so that the class is mockable. 136 // this class. The constructor is protected so that the class is mockable.
136 explicit BrowsingDataRemoverImpl(content::BrowserContext* browser_context); 137 explicit BrowsingDataRemoverImpl(content::BrowserContext* browser_context);
137 ~BrowsingDataRemoverImpl() override; 138 ~BrowsingDataRemoverImpl() override;
138 139
139 // A common reduction of all public Remove[WithFilter][AndReply] methods. 140 // A common reduction of all public Remove[WithFilter][AndReply] methods.
140 virtual void RemoveInternal( 141 virtual void RemoveInternal(
141 const base::Time& delete_begin, 142 const base::Time& delete_begin,
142 const base::Time& delete_end, 143 const base::Time& delete_end,
143 int remove_mask, 144 int remove_mask,
144 int origin_type_mask, 145 int origin_type_mask,
145 std::unique_ptr<BrowsingDataFilterBuilder> filter_builder, 146 std::unique_ptr<content::BrowsingDataFilterBuilder> filter_builder,
146 Observer* observer); 147 Observer* observer);
147 148
148 private: 149 private:
149 // Testing the private RemovalTask. 150 // Testing the private RemovalTask.
150 FRIEND_TEST_ALL_PREFIXES(BrowsingDataRemoverImplTest, MultipleTasks); 151 FRIEND_TEST_ALL_PREFIXES(BrowsingDataRemoverImplTest, MultipleTasks);
151 152
152 friend class BrowsingDataRemoverFactory; 153 friend class BrowsingDataRemoverFactory;
153 154
154 // Represents a single removal task. Contains all parameters needed to execute 155 // Represents a single removal task. Contains all parameters needed to execute
155 // it and a pointer to the observer that added it. 156 // it and a pointer to the observer that added it.
156 struct RemovalTask { 157 struct RemovalTask {
157 RemovalTask(const base::Time& delete_begin, 158 RemovalTask(
158 const base::Time& delete_end, 159 const base::Time& delete_begin,
159 int remove_mask, 160 const base::Time& delete_end,
160 int origin_type_mask, 161 int remove_mask,
161 std::unique_ptr<BrowsingDataFilterBuilder> filter_builder, 162 int origin_type_mask,
162 Observer* observer); 163 std::unique_ptr<content::BrowsingDataFilterBuilder> filter_builder,
164 Observer* observer);
163 ~RemovalTask(); 165 ~RemovalTask();
164 166
165 base::Time delete_begin; 167 base::Time delete_begin;
166 base::Time delete_end; 168 base::Time delete_end;
167 int remove_mask; 169 int remove_mask;
168 int origin_type_mask; 170 int origin_type_mask;
169 std::unique_ptr<BrowsingDataFilterBuilder> filter_builder; 171 std::unique_ptr<content::BrowsingDataFilterBuilder> filter_builder;
170 Observer* observer; 172 Observer* observer;
171 }; 173 };
172 174
173 void Shutdown() override; 175 void Shutdown() override;
174 176
175 // Setter for |is_removing_|; DCHECKs that we can only start removing if we're 177 // Setter for |is_removing_|; DCHECKs that we can only start removing if we're
176 // not already removing, and vice-versa. 178 // not already removing, and vice-versa.
177 void SetRemoving(bool is_removing); 179 void SetRemoving(bool is_removing);
178 180
179 // Executes the next removal task. Called after the previous task was finished 181 // Executes the next removal task. Called after the previous task was finished
180 // or directly from Remove() if the task queue was empty. 182 // or directly from Remove() if the task queue was empty.
181 void RunNextTask(); 183 void RunNextTask();
182 184
183 // Removes the specified items related to browsing for a specific host. If the 185 // Removes the specified items related to browsing for a specific host. If the
184 // provided |remove_url| is empty, data is removed for all origins; otherwise, 186 // provided |remove_url| is empty, data is removed for all origins; otherwise,
185 // it is restricted by the origin filter origin (where implemented yet). The 187 // it is restricted by the origin filter origin (where implemented yet). The
186 // |origin_type_mask| parameter defines the set of origins from which data 188 // |origin_type_mask| parameter defines the set of origins from which data
187 // should be removed (protected, unprotected, or both). 189 // should be removed (protected, unprotected, or both).
188 // TODO(ttr314): Remove "(where implemented yet)" constraint above once 190 // TODO(ttr314): Remove "(where implemented yet)" constraint above once
189 // crbug.com/113621 is done. 191 // crbug.com/113621 is done.
190 // TODO(crbug.com/589586): Support all backends w/ origin filter. 192 // TODO(crbug.com/589586): Support all backends w/ origin filter.
191 void RemoveImpl(const base::Time& delete_begin, 193 void RemoveImpl(const base::Time& delete_begin,
192 const base::Time& delete_end, 194 const base::Time& delete_end,
193 int remove_mask, 195 int remove_mask,
194 const BrowsingDataFilterBuilder& filter_builder, 196 const content::BrowsingDataFilterBuilder& filter_builder,
195 int origin_type_mask); 197 int origin_type_mask);
196 198
197 // Notifies observers and transitions to the idle state. 199 // Notifies observers and transitions to the idle state.
198 void Notify(); 200 void Notify();
199 201
200 // Checks if we are all done, and if so, calls Notify(). 202 // Checks if we are all done, and if so, calls Notify().
201 void NotifyIfDone(); 203 void NotifyIfDone();
202 204
203 // Returns true if we're all done. 205 // Returns true if we're all done.
204 bool AllDone(); 206 bool AllDone();
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 251
250 // We do not own this. 252 // We do not own this.
251 content::StoragePartition* storage_partition_for_testing_ = nullptr; 253 content::StoragePartition* storage_partition_for_testing_ = nullptr;
252 254
253 base::WeakPtrFactory<BrowsingDataRemoverImpl> weak_ptr_factory_; 255 base::WeakPtrFactory<BrowsingDataRemoverImpl> weak_ptr_factory_;
254 256
255 DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemoverImpl); 257 DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemoverImpl);
256 }; 258 };
257 259
258 #endif // CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_IMPL_H_ 260 #endif // CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_REMOVER_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698