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

Side by Side Diff: chrome/browser/browsing_data/browsing_data_important_sites_util.cc

Issue 2716333002: Implement important sites dialog for desktop. (Closed)
Patch Set: change element.$.someId to element.$$(#someId) Created 3 years, 7 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
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/browsing_data/browsing_data_important_sites_util.h"
6
7 #include "base/scoped_observer.h"
8 #include "content/public/browser/browsing_data_filter_builder.h"
9
10 namespace {
11
12 // This object receives |task_count| calls from BrowsingDataRemover, calls
13 // |callback| when all tasks are finished and destroys itself.
14 class BrowsingDataTaskObserver : public content::BrowsingDataRemover::Observer {
15 public:
16 BrowsingDataTaskObserver(content::BrowsingDataRemover* remover,
17 base::OnceClosure callback,
18 int task_count);
19 ~BrowsingDataTaskObserver() override;
20
21 void OnBrowsingDataRemoverDone() override;
22
23 private:
24 base::OnceClosure callback_;
25 ScopedObserver<content::BrowsingDataRemover,
26 content::BrowsingDataRemover::Observer>
27 remover_observer_;
28 int task_count_;
29
30 DISALLOW_COPY_AND_ASSIGN(BrowsingDataTaskObserver);
31 };
32
33 BrowsingDataTaskObserver::BrowsingDataTaskObserver(
34 content::BrowsingDataRemover* remover,
35 base::OnceClosure callback,
36 int task_count)
37 : callback_(std::move(callback)),
38 remover_observer_(this),
39 task_count_(task_count) {
40 remover_observer_.Add(remover);
41 }
42
43 BrowsingDataTaskObserver::~BrowsingDataTaskObserver() {}
44
45 void BrowsingDataTaskObserver::OnBrowsingDataRemoverDone() {
46 DCHECK(task_count_);
47 if (--task_count_)
48 return;
49 remover_observer_.RemoveAll();
50 std::move(callback_).Run();
51 delete this;
52 }
53
54 } // namespace
55
56 namespace browsing_data_important_sites_util {
57
58 void Remove(int remove_mask,
59 int origin_mask,
60 browsing_data::TimePeriod time_period,
61 std::unique_ptr<content::BrowsingDataFilterBuilder> filter_builder,
62 content::BrowsingDataRemover* remover,
63 base::OnceClosure callback) {
64 auto* observer =
65 new BrowsingDataTaskObserver(remover, std::move(callback), 2);
66
67 int filterable_mask =
68 remove_mask &
69 ChromeBrowsingDataRemoverDelegate::IMPORTANT_SITES_DATA_TYPES;
70 int nonfilterable_mask =
71 remove_mask &
72 ~ChromeBrowsingDataRemoverDelegate::IMPORTANT_SITES_DATA_TYPES;
73
74 browsing_data::RecordDeletionForPeriod(time_period);
75
76 if (filterable_mask) {
77 remover->RemoveWithFilterAndReply(
78 browsing_data::CalculateBeginDeleteTime(time_period),
79 browsing_data::CalculateEndDeleteTime(time_period), filterable_mask,
80 origin_mask, std::move(filter_builder), observer);
81 } else {
82 observer->OnBrowsingDataRemoverDone();
83 }
84
85 if (nonfilterable_mask) {
86 remover->RemoveAndReply(
87 browsing_data::CalculateBeginDeleteTime(time_period),
88 browsing_data::CalculateEndDeleteTime(time_period), nonfilterable_mask,
89 origin_mask, observer);
90 } else {
91 observer->OnBrowsingDataRemoverDone();
92 }
93 }
94
95 } // namespace browsing_data_important_sites_util
OLDNEW
« no previous file with comments | « chrome/browser/browsing_data/browsing_data_important_sites_util.h ('k') | chrome/browser/engagement/important_sites_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698