| Index: chrome/browser/visitedlink_event_listener.cc
|
| ===================================================================
|
| --- chrome/browser/visitedlink_event_listener.cc (revision 0)
|
| +++ chrome/browser/visitedlink_event_listener.cc (revision 0)
|
| @@ -0,0 +1,68 @@
|
| +// Copyright (c) 2009 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/visitedlink_event_listener.h"
|
| +
|
| +#include "base/shared_memory.h"
|
| +#include "chrome/browser/renderer_host/render_process_host.h"
|
| +#include "chrome/common/render_messages.h"
|
| +
|
| +using base::Time;
|
| +using base::TimeDelta;
|
| +
|
| +// The amount of time we wait to accumulate visited link additions.
|
| +static const int kCommitIntervalMs = 100;
|
| +
|
| +void VisitedLinkEventListener::NewTable(base::SharedMemory* table_memory) {
|
| + if (!table_memory)
|
| + return;
|
| +
|
| + // Send to all RenderProcessHosts.
|
| + for (RenderProcessHost::iterator i = RenderProcessHost::begin();
|
| + i != RenderProcessHost::end(); ++i) {
|
| + if (!i->second->HasConnection())
|
| + continue;
|
| +
|
| + base::SharedMemoryHandle new_table;
|
| + base::ProcessHandle process = i->second->process().handle();
|
| + if (!process) {
|
| + // process can be null if it's started with the --single-process flag.
|
| + process = base::Process::Current().handle();
|
| + }
|
| +
|
| + table_memory->ShareToProcess(process, &new_table);
|
| + i->second->Send(new ViewMsg_VisitedLink_NewTable(new_table));
|
| + }
|
| +}
|
| +
|
| +void VisitedLinkEventListener::Add(VisitedLinkMaster::Fingerprint fingerprint) {
|
| + pending_visited_links_.push_back(fingerprint);
|
| +
|
| + if (!coalesce_timer_.IsRunning()) {
|
| + coalesce_timer_.Start(
|
| + TimeDelta::FromMilliseconds(kCommitIntervalMs), this,
|
| + &VisitedLinkEventListener::CommitVisitedLinks);
|
| + }
|
| +}
|
| +
|
| +void VisitedLinkEventListener::Reset() {
|
| + pending_visited_links_.clear();
|
| + coalesce_timer_.Stop();
|
| +
|
| + // Send to all RenderProcessHosts.
|
| + for (RenderProcessHost::iterator i = RenderProcessHost::begin();
|
| + i != RenderProcessHost::end(); ++i) {
|
| + i->second->ResetVisitedLinks();
|
| + }
|
| +}
|
| +
|
| +void VisitedLinkEventListener::CommitVisitedLinks() {
|
| + // Send to all RenderProcessHosts.
|
| + for (RenderProcessHost::iterator i = RenderProcessHost::begin();
|
| + i != RenderProcessHost::end(); ++i) {
|
| + i->second->AddVisitedLinks(pending_visited_links_);
|
| + }
|
| +
|
| + pending_visited_links_.clear();
|
| +}
|
|
|
| Property changes on: chrome\browser\visitedlink_event_listener.cc
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|