Index: chrome/browser/history/page_collector.cc |
diff --git a/chrome/browser/history/page_collector.cc b/chrome/browser/history/page_collector.cc |
deleted file mode 100644 |
index da07ad1ed552e201012b4bd29300234f151ff409..0000000000000000000000000000000000000000 |
--- a/chrome/browser/history/page_collector.cc |
+++ /dev/null |
@@ -1,157 +0,0 @@ |
-// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/history/page_collector.h" |
- |
-#include "base/bind.h" |
-#include "base/message_loop/message_loop.h" |
-#include "base/strings/utf_string_conversions.h" |
-#include "chrome/browser/history/history_publisher.h" |
-#include "url/gurl.h" |
- |
-namespace { |
- |
-// Page info older than this will be published even if we haven't |
-// gotten a title and/or body. |
-const int kExpirationSeconds = 20; |
- |
-} // namespace |
- |
-namespace history { |
- |
-// PageCollector::PageInfo ----------------------------------------------- |
- |
-PageCollector::PageInfo::PageInfo(base::Time visit_time) |
- : visit_time_(visit_time), |
- added_time_(base::TimeTicks::Now()) { |
-} |
- |
-PageCollector::PageInfo::~PageInfo() {} |
- |
-// NOTE(shess): Per the comment on has_title() and has_body(), this |
-// code maps empty strings to single space to differentiate set title |
-// and body from empty. This approach is held over from the original |
-// TextDatabaseManager version. |
-void PageCollector::PageInfo::set_title(const string16& ttl) { |
- if (ttl.empty()) |
- title_ = ASCIIToUTF16(" "); |
- else |
- title_ = ttl; |
-} |
- |
-void PageCollector::PageInfo::set_body(const string16& bdy) { |
- if (bdy.empty()) |
- body_ = ASCIIToUTF16(" "); |
- else |
- body_ = bdy; |
-} |
- |
-bool PageCollector::PageInfo::Expired(base::TimeTicks now) const { |
- return now - added_time_ > base::TimeDelta::FromSeconds(kExpirationSeconds); |
-} |
- |
-PageCollector::PageCollector() |
- : recent_changes_(RecentChangeList::NO_AUTO_EVICT), |
- weak_factory_(this) { |
-} |
- |
-PageCollector::~PageCollector() { |
-} |
- |
-void PageCollector::Init(const HistoryPublisher* history_publisher) { |
- history_publisher_ = history_publisher; |
-} |
- |
-void PageCollector::AddPageURL(const GURL& url, base::Time time) { |
- // Don't collect data which cannot be published. |
- if (!history_publisher_) |
- return; |
- |
- // Just save this info for later (evicting any previous data). We |
- // will delete it when it expires or when all the data is complete. |
- recent_changes_.Put(url, PageInfo(time)); |
- |
- // Schedule flush if not already scheduled. |
- if (!weak_factory_.HasWeakPtrs()) |
- ScheduleFlushCollected(); |
-} |
- |
-void PageCollector::AddPageTitle(const GURL& url, const string16& title) { |
- if (!history_publisher_) |
- return; |
- |
- // If the title comes in after the page has aged out, drop it. |
- // Older code would manufacture information from the database. |
- RecentChangeList::iterator found = recent_changes_.Peek(url); |
- if (found == recent_changes_.end()) |
- return; |
- |
- // Publish the info if complete. |
- if (found->second.has_body()) { |
- history_publisher_->PublishPageContent( |
- found->second.visit_time(), url, title, found->second.body()); |
- recent_changes_.Erase(found); |
- } else { |
- found->second.set_title(title); |
- } |
-} |
- |
-void PageCollector::AddPageContents(const GURL& url, |
- const string16& body) { |
- if (!history_publisher_) |
- return; |
- |
- // If the body comes in after the page has aged out, drop it. |
- // Older code would manufacture information from the database. |
- RecentChangeList::iterator found = recent_changes_.Peek(url); |
- if (found == recent_changes_.end()) |
- return; |
- |
- // Publish the info if complete. |
- if (found->second.has_title()) { |
- history_publisher_->PublishPageContent( |
- found->second.visit_time(), url, found->second.title(), body); |
- recent_changes_.Erase(found); |
- } else { |
- found->second.set_body(body); |
- } |
-} |
- |
-void PageCollector::AddPageData(const GURL& url, |
- base::Time visit_time, |
- const string16& title, |
- const string16& body) { |
- if (!history_publisher_) |
- return; |
- |
- // Publish the item. |
- history_publisher_->PublishPageContent(visit_time, url, title, body); |
-} |
- |
-void PageCollector::ScheduleFlushCollected() { |
- weak_factory_.InvalidateWeakPtrs(); |
- base::MessageLoop::current()->PostDelayedTask( |
- FROM_HERE, |
- base::Bind(&PageCollector::FlushCollected, |
- weak_factory_.GetWeakPtr()), |
- base::TimeDelta::FromSeconds(kExpirationSeconds)); |
-} |
- |
-void PageCollector::FlushCollected() { |
- base::TimeTicks now = base::TimeTicks::Now(); |
- |
- // Iterate from oldest to newest publishing items which expire while |
- // waiting for title or body. |
- RecentChangeList::reverse_iterator iter = recent_changes_.rbegin(); |
- while (iter != recent_changes_.rend() && iter->second.Expired(now)) { |
- AddPageData(iter->first, iter->second.visit_time(), |
- iter->second.title(), iter->second.body()); |
- iter = recent_changes_.Erase(iter); |
- } |
- |
- if (!recent_changes_.empty()) |
- ScheduleFlushCollected(); |
-} |
- |
-} // namespace history |