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

Unified Diff: components/visitedlink/browser/visitedlink_event_listener.cc

Issue 1417943002: Load the table of visited links from database file asynchronously. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add extra comment and fix compilation error. Created 5 years 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 side-by-side diff with in-line comments
Download patch
Index: components/visitedlink/browser/visitedlink_event_listener.cc
diff --git a/components/visitedlink/browser/visitedlink_event_listener.cc b/components/visitedlink/browser/visitedlink_event_listener.cc
index 922e7eead68e8abaf6616b0d1cf6f5ad6e917622..dd9c9f77fcabeddd8a5ed6020fbbd7cdae68f3c0 100644
--- a/components/visitedlink/browser/visitedlink_event_listener.cc
+++ b/components/visitedlink/browser/visitedlink_event_listener.cc
@@ -40,8 +40,9 @@ namespace visitedlink {
class VisitedLinkUpdater {
public:
explicit VisitedLinkUpdater(int render_process_id)
- : reset_needed_(false), render_process_id_(render_process_id) {
- }
+ : reset_needed_(false),
+ invalidate_hashes_(false),
+ render_process_id_(render_process_id) {}
// Informs the renderer about a new visited link table.
void SendVisitedLinkTable(base::SharedMemory* table_memory) {
@@ -65,7 +66,7 @@ class VisitedLinkUpdater {
if (pending_.size() + links.size() > kVisitedLinkBufferThreshold) {
// Once the threshold is reached, there's no need to store pending visited
// link updates -- we opt for resetting the state for all links.
- AddReset();
+ AddReset(false);
return;
}
@@ -73,9 +74,15 @@ class VisitedLinkUpdater {
}
// Tells the updater that sending individual link updates is no longer
- // necessary and the visited state for all links should be reset.
- void AddReset() {
+ // necessary and the visited state for all links should be reset. If
+ // |invalidateHashes| is true all cached visited links hashes should be
+ // dropped.
+ void AddReset(bool invalidate_hashes) {
reset_needed_ = true;
+ // Do not set to false. If tab is invisible the reset message will not be
+ // sent until tab became visible.
+ if (invalidate_hashes)
+ invalidate_hashes_ = true;
pending_.clear();
}
@@ -91,8 +98,9 @@ class VisitedLinkUpdater {
return;
if (reset_needed_) {
- process->Send(new ChromeViewMsg_VisitedLink_Reset());
+ process->Send(new ChromeViewMsg_VisitedLink_Reset(invalidate_hashes_));
reset_needed_ = false;
+ invalidate_hashes_ = false;
return;
}
@@ -106,6 +114,7 @@ class VisitedLinkUpdater {
private:
bool reset_needed_;
+ bool invalidate_hashes_;
int render_process_id_;
VisitedLinkCommon::Fingerprints pending_;
};
@@ -154,12 +163,12 @@ void VisitedLinkEventListener::Add(VisitedLinkMaster::Fingerprint fingerprint) {
}
}
-void VisitedLinkEventListener::Reset() {
+void VisitedLinkEventListener::Reset(bool invalidate_hashes) {
pending_visited_links_.clear();
coalesce_timer_.Stop();
for (Updaters::iterator i = updaters_.begin(); i != updaters_.end(); ++i) {
- i->second->AddReset();
+ i->second->AddReset(invalidate_hashes);
i->second->Update();
}
}
« no previous file with comments | « components/visitedlink/browser/visitedlink_event_listener.h ('k') | components/visitedlink/browser/visitedlink_master.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698