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

Side by Side Diff: chrome/browser/history/content_visit_delegate.cc

Issue 872313005: Remove dependency on visitedlink from history (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@init-prefs
Patch Set: Created 5 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
(Empty)
1 // Copyright 2015 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/history/content_visit_delegate.h"
6
7 #include "chrome/browser/history/history_backend.h"
8 #include "chrome/browser/history/history_service.h"
9 #include "components/history/core/browser/history_database.h"
10 #include "components/history/core/browser/history_db_task.h"
11 #include "components/visitedlink/browser/visitedlink_master.h"
droger 2015/02/02 09:39:20 #include "base/logging.h" #include "base/memory/re
sdefresne 2015/02/04 18:01:54 Done, thank you.
12
13 namespace {
14
15 // URLIterator from std::vector<GURL>
16 class URLIteratorFromURLs : public visitedlink::VisitedLinkMaster::URLIterator {
17 public:
18 explicit URLIteratorFromURLs(const std::vector<GURL>& urls)
19 : itr_(urls.begin()), end_(urls.end()) {}
20
21 // visitedlink::VisitedLinkMaster::URLIterator implementation.
22 const GURL& NextURL() override { return *(itr_++); }
23 bool HasNextURL() const override { return itr_ != end_; }
24
25 private:
26 std::vector<GURL>::const_iterator itr_;
27 std::vector<GURL>::const_iterator end_;
28
29 DISALLOW_COPY_AND_ASSIGN(URLIteratorFromURLs);
30 };
31
32 // IterateUrlsDBTask bridge HistoryBackend::URLEnumerator to
33 // visitedlink::VisitedLinkDelegate::URLEnumerator.
34 class IterateUrlsDBTask : public history::HistoryDBTask {
35 public:
36 explicit IterateUrlsDBTask(const scoped_refptr<
37 visitedlink::VisitedLinkDelegate::URLEnumerator>& enumerator);
38 ~IterateUrlsDBTask() override;
39
40 private:
41 // Implementation of history::HistoryDBTask.
42 bool RunOnDBThread(history::HistoryBackend* backend,
43 history::HistoryDatabase* db) override;
44 void DoneRunOnMainThread() override;
45
46 scoped_refptr<visitedlink::VisitedLinkDelegate::URLEnumerator> enumerator_;
47
48 DISALLOW_COPY_AND_ASSIGN(IterateUrlsDBTask);
49 };
50
51 IterateUrlsDBTask::IterateUrlsDBTask(const scoped_refptr<
52 visitedlink::VisitedLinkDelegate::URLEnumerator>& enumerator)
53 : enumerator_(enumerator) {
54 }
55
56 IterateUrlsDBTask::~IterateUrlsDBTask() {
57 }
58
59 bool IterateUrlsDBTask::RunOnDBThread(history::HistoryBackend* backend,
60 history::HistoryDatabase* db) {
61 bool success = false;
62 if (db) {
63 history::HistoryDatabase::URLEnumerator iter;
64 if (db->InitURLEnumeratorForEverything(&iter)) {
65 history::URLRow row;
66 while (iter.GetNextURL(&row))
67 enumerator_->OnURL(row.url());
68 success = true;
69 }
70 }
71 enumerator_->OnComplete(success);
72 return true;
73 }
74
75 void IterateUrlsDBTask::DoneRunOnMainThread() {
76 }
77
78 } // namespace
79
80 ContentVisitDelegate::ContentVisitDelegate(
81 content::BrowserContext* browser_context)
82 : history_service_(nullptr),
83 visitedlink_master_(
84 new visitedlink::VisitedLinkMaster(browser_context, this, true)) {
85 }
86
87 ContentVisitDelegate::~ContentVisitDelegate() {
88 }
89
90 bool ContentVisitDelegate::Init(HistoryService* history_service) {
91 DCHECK(history_service);
92 history_service_ = history_service;
93 return visitedlink_master_->Init();
94 }
95
96 void ContentVisitDelegate::AddURL(const GURL& url) {
97 visitedlink_master_->AddURL(url);
98 }
99
100 void ContentVisitDelegate::AddURLs(const std::vector<GURL>& urls) {
101 visitedlink_master_->AddURLs(urls);
102 }
103
104 void ContentVisitDelegate::DeleteURLs(const std::vector<GURL>& urls) {
105 URLIteratorFromURLs iterator(urls);
106 visitedlink_master_->DeleteURLs(&iterator);
107 }
108
109 void ContentVisitDelegate::DeleteAllURLs() {
110 visitedlink_master_->DeleteAllURLs();
111 }
112
113 void ContentVisitDelegate::RebuildTable(
114 const scoped_refptr<URLEnumerator>& enumerator) {
115 DCHECK(history_service_);
116 scoped_ptr<history::HistoryDBTask> task(new IterateUrlsDBTask(enumerator));
117 history_service_->ScheduleDBTask(task.Pass(), &task_tracker_);
118 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698