summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-24 01:09:42 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-24 01:09:42 +0000
commit7fa7dd50dd9651e17c86eab41e9e963a6ec4ecf4 (patch)
treeb2a852a76a33f79fa4f9c88ce94f5a21946d0801
parent6b312562569d5a1aac945e6536614fc0f19339a3 (diff)
downloadchromium_src-7fa7dd50dd9651e17c86eab41e9e963a6ec4ecf4.zip
chromium_src-7fa7dd50dd9651e17c86eab41e9e963a6ec4ecf4.tar.gz
chromium_src-7fa7dd50dd9651e17c86eab41e9e963a6ec4ecf4.tar.bz2
Move visited link out of BrowsrProcessRenderHost.
I removed the ReceiverReady code path since ViewCreated is always called before RENDERER_PROCESS_CREATED. Review URL: http://codereview.chromium.org/6882049 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@82805 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/visitedlink/visitedlink_event_listener.cc158
-rw-r--r--chrome/browser/visitedlink/visitedlink_event_listener.h21
-rw-r--r--chrome/browser/visitedlink/visitedlink_unittest.cc89
-rw-r--r--content/browser/renderer_host/browser_render_process_host.cc123
-rw-r--r--content/browser/renderer_host/browser_render_process_host.h13
-rw-r--r--content/browser/renderer_host/mock_render_process_host.cc13
-rw-r--r--content/browser/renderer_host/mock_render_process_host.h6
-rw-r--r--content/browser/renderer_host/render_process_host.h16
-rw-r--r--content/browser/renderer_host/render_view_host.cc1
-rw-r--r--content/browser/renderer_host/test_render_view_host.cc1
10 files changed, 192 insertions, 249 deletions
diff --git a/chrome/browser/visitedlink/visitedlink_event_listener.cc b/chrome/browser/visitedlink/visitedlink_event_listener.cc
index 86c51fb..3c5febb 100644
--- a/chrome/browser/visitedlink/visitedlink_event_listener.cc
+++ b/chrome/browser/visitedlink/visitedlink_event_listener.cc
@@ -5,15 +5,110 @@
#include "chrome/browser/visitedlink/visitedlink_event_listener.h"
#include "base/shared_memory.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/common/render_messages.h"
#include "content/browser/renderer_host/render_process_host.h"
+#include "content/browser/renderer_host/render_widget_host.h"
+#include "content/common/notification_service.h"
using base::Time;
using base::TimeDelta;
+namespace {
+
// The amount of time we wait to accumulate visited link additions.
static const int kCommitIntervalMs = 100;
+// Size of the buffer after which individual link updates deemed not warranted
+// and the overall update should be used instead.
+static const unsigned kVisitedLinkBufferThreshold = 50;
+
+} // namespace
+
+// This class manages buffering and sending visited link hashes (fingerprints)
+// to renderer based on widget visibility.
+// As opposed to the VisitedLinkEventListener, which coalesces to
+// reduce the rate of messages being sent to render processes, this class
+// ensures that the updates occur only when explicitly requested. This is
+// used for BrowserRenderProcessHost to only send Add/Reset link events to the
+// renderers when their tabs are visible and the corresponding RenderViews are
+// created.
+class VisitedLinkUpdater {
+ public:
+ explicit VisitedLinkUpdater(int render_process_id)
+ : reset_needed_(false), render_process_id_(render_process_id) {
+ }
+
+ // Informs the renderer about a new visited link table.
+ void SendVisitedLinkTable(base::SharedMemory* table_memory) {
+ RenderProcessHost* process = RenderProcessHost::FromID(render_process_id_);
+ if (!process)
+ return; // Happens in tests
+ base::SharedMemoryHandle handle_for_process;
+ table_memory->ShareToProcess(process->GetHandle(), &handle_for_process);
+ if (base::SharedMemory::IsHandleValid(handle_for_process))
+ process->Send(new ViewMsg_VisitedLink_NewTable(handle_for_process));
+ }
+
+ // Buffers |links| to update, but doesn't actually relay them.
+ void AddLinks(const VisitedLinkCommon::Fingerprints& links) {
+ if (reset_needed_)
+ return;
+
+ 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();
+ return;
+ }
+
+ pending_.insert(pending_.end(), links.begin(), links.end());
+ }
+
+ // Tells the updater that sending individual link updates is no longer
+ // necessary and the visited state for all links should be reset.
+ void AddReset() {
+ reset_needed_ = true;
+ pending_.clear();
+ }
+
+ // Sends visited link update messages: a list of links whose visited state
+ // changed or reset of visited state for all links.
+ void Update() {
+ RenderProcessHost* process = RenderProcessHost::FromID(render_process_id_);
+ if (!process)
+ return; // Happens in tests
+
+ if (!process->VisibleWidgetCount())
+ return;
+
+ if (reset_needed_) {
+ process->Send(new ViewMsg_VisitedLink_Reset());
+ reset_needed_ = false;
+ return;
+ }
+
+ if (pending_.empty())
+ return;
+
+ process->Send(new ViewMsg_VisitedLink_Add(pending_));
+
+ pending_.clear();
+ }
+
+ private:
+ bool reset_needed_;
+ int render_process_id_;
+ VisitedLinkCommon::Fingerprints pending_;
+};
+
VisitedLinkEventListener::VisitedLinkEventListener() {
+ registrar_.Add(this, NotificationType::RENDERER_PROCESS_CREATED,
+ NotificationService::AllSources());
+ registrar_.Add(this, NotificationType::RENDERER_PROCESS_TERMINATED,
+ NotificationService::AllSources());
+ registrar_.Add(this, NotificationType::RENDER_WIDGET_VISIBILITY_CHANGED,
+ NotificationService::AllSources());
}
VisitedLinkEventListener::~VisitedLinkEventListener() {
@@ -24,12 +119,12 @@ void VisitedLinkEventListener::NewTable(base::SharedMemory* table_memory) {
return;
// Send to all RenderProcessHosts.
- for (RenderProcessHost::iterator i(RenderProcessHost::AllHostsIterator());
- !i.IsAtEnd(); i.Advance()) {
- if (!i.GetCurrentValue()->HasConnection())
- continue;
-
- i.GetCurrentValue()->SendVisitedLinkTable(table_memory);
+ for (Updaters::iterator i = updaters_.begin(); i != updaters_.end(); ++i) {
+ // Make sure to not send to incognito renderers.
+ RenderProcessHost* process = RenderProcessHost::FromID(i->first);
+ VisitedLinkMaster* master = process->profile()->GetVisitedLinkMaster();
+ if (master && master->shared_memory() == table_memory)
+ i->second->SendVisitedLinkTable(table_memory);
}
}
@@ -47,19 +142,56 @@ void VisitedLinkEventListener::Reset() {
pending_visited_links_.clear();
coalesce_timer_.Stop();
- // Send to all RenderProcessHosts.
- for (RenderProcessHost::iterator i(RenderProcessHost::AllHostsIterator());
- !i.IsAtEnd(); i.Advance()) {
- i.GetCurrentValue()->ResetVisitedLinks();
+ for (Updaters::iterator i = updaters_.begin(); i != updaters_.end(); ++i) {
+ i->second->AddReset();
+ i->second->Update();
}
}
void VisitedLinkEventListener::CommitVisitedLinks() {
// Send to all RenderProcessHosts.
- for (RenderProcessHost::iterator i(RenderProcessHost::AllHostsIterator());
- !i.IsAtEnd(); i.Advance()) {
- i.GetCurrentValue()->AddVisitedLinks(pending_visited_links_);
+ for (Updaters::iterator i = updaters_.begin(); i != updaters_.end(); ++i) {
+ i->second->AddLinks(pending_visited_links_);
+ i->second->Update();
}
pending_visited_links_.clear();
}
+
+void VisitedLinkEventListener::Observe(NotificationType type,
+ const NotificationSource& source,
+ const NotificationDetails& details) {
+ switch (type.value) {
+ case NotificationType::RENDERER_PROCESS_CREATED: {
+ RenderProcessHost* process = Source<RenderProcessHost>(source).ptr();
+ updaters_[process->id()] =
+ make_linked_ptr(new VisitedLinkUpdater(process->id()));
+
+ // Initialize support for visited links. Send the renderer process its
+ // initial set of visited links.
+ VisitedLinkMaster* master = process->profile()->GetVisitedLinkMaster();
+ if (!master)
+ return;
+
+ updaters_[process->id()]->SendVisitedLinkTable(master->shared_memory());
+ break;
+ }
+ case NotificationType::RENDERER_PROCESS_TERMINATED: {
+ RenderProcessHost* process = Source<RenderProcessHost>(source).ptr();
+ if (updaters_.count(process->id())) {
+ updaters_.erase(process->id());
+ }
+ break;
+ }
+ case NotificationType::RENDER_WIDGET_VISIBILITY_CHANGED: {
+ RenderWidgetHost* widget = Source<RenderWidgetHost>(source).ptr();
+ int child_id = widget->process()->id();
+ if (updaters_.count(child_id))
+ updaters_[child_id]->Update();
+ break;
+ }
+ default:
+ NOTREACHED();
+ break;
+ }
+}
diff --git a/chrome/browser/visitedlink/visitedlink_event_listener.h b/chrome/browser/visitedlink/visitedlink_event_listener.h
index 020b0a9..2eb7e03 100644
--- a/chrome/browser/visitedlink/visitedlink_event_listener.h
+++ b/chrome/browser/visitedlink/visitedlink_event_listener.h
@@ -10,14 +10,22 @@
#define CHROME_BROWSER_VISITEDLINK_VISITEDLINK_EVENT_LISTENER_H_
#pragma once
+#include <map>
+
+#include "base/memory/linked_ptr.h"
#include "base/timer.h"
#include "chrome/browser/visitedlink/visitedlink_master.h"
+#include "content/common/notification_observer.h"
+#include "content/common/notification_registrar.h"
+
+class VisitedLinkUpdater;
namespace base {
class SharedMemory;
}
-class VisitedLinkEventListener : public VisitedLinkMaster::Listener {
+class VisitedLinkEventListener : public VisitedLinkMaster::Listener,
+ public NotificationObserver {
public:
VisitedLinkEventListener();
virtual ~VisitedLinkEventListener();
@@ -29,9 +37,20 @@ class VisitedLinkEventListener : public VisitedLinkMaster::Listener {
private:
void CommitVisitedLinks();
+ // NotificationObserver implementation.
+ virtual void Observe(NotificationType type,
+ const NotificationSource& source,
+ const NotificationDetails& details);
+
base::OneShotTimer<VisitedLinkEventListener> coalesce_timer_;
VisitedLinkCommon::Fingerprints pending_visited_links_;
+ NotificationRegistrar registrar_;
+
+ // Map between renderer child ids and their VisitedLinkUpdater.
+ typedef std::map<int, linked_ptr<VisitedLinkUpdater> > Updaters;
+ Updaters updaters_;
+
DISALLOW_COPY_AND_ASSIGN(VisitedLinkEventListener);
};
diff --git a/chrome/browser/visitedlink/visitedlink_unittest.cc b/chrome/browser/visitedlink/visitedlink_unittest.cc
index 66834ea..6f58ad7 100644
--- a/chrome/browser/visitedlink/visitedlink_unittest.cc
+++ b/chrome/browser/visitedlink/visitedlink_unittest.cc
@@ -20,6 +20,7 @@
#include "content/browser/browser_thread.h"
#include "content/browser/renderer_host/browser_render_process_host.h"
#include "content/browser/renderer_host/test_render_view_host.h"
+#include "content/common/notification_service.h"
#include "googleurl/src/gurl.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -489,34 +490,19 @@ class VisitCountingProfile : public TestingProfile {
scoped_ptr<VisitedLinkMaster> visited_link_master_;
};
-class VisitCountingRenderProcessHost : public MockRenderProcessHost {
- public:
- explicit VisitCountingRenderProcessHost(Profile* profile)
- : MockRenderProcessHost(profile) {}
-
- virtual void AddVisitedLinks(
- const VisitedLinkCommon::Fingerprints& visited_links) {
- VisitCountingProfile* counting_profile =
- static_cast<VisitCountingProfile*>(profile());
- counting_profile->CountAddEvent(visited_links.size());
- }
- virtual void ResetVisitedLinks() {
- VisitCountingProfile* counting_profile =
- static_cast<VisitCountingProfile*>(profile());
- counting_profile->CountResetEvent();
- }
-
- private:
- DISALLOW_COPY_AND_ASSIGN(VisitCountingRenderProcessHost);
-};
-
-// Stub out as little as possible, borrowing from MockRenderProcessHost.
+// Stub out as little as possible, borrowing from BrowserRenderProcessHost.
class VisitRelayingRenderProcessHost : public BrowserRenderProcessHost {
public:
explicit VisitRelayingRenderProcessHost(Profile* profile)
: BrowserRenderProcessHost(profile) {
+ NotificationService::current()->Notify(
+ NotificationType::RENDERER_PROCESS_CREATED,
+ Source<RenderProcessHost>(this), NotificationService::NoDetails());
}
virtual ~VisitRelayingRenderProcessHost() {
+ NotificationService::current()->Notify(
+ NotificationType::RENDERER_PROCESS_TERMINATED,
+ Source<RenderProcessHost>(this), NotificationService::NoDetails());
}
virtual bool Init(bool is_accessibility_enabled, bool is_extension_process) {
@@ -539,10 +525,14 @@ class VisitRelayingRenderProcessHost : public BrowserRenderProcessHost {
VisitCountingProfile* counting_profile =
static_cast<VisitCountingProfile*>(profile());
- if (msg->type() == ViewMsg_VisitedLink_Add::ID)
- counting_profile->CountAddEvent(1);
- else if (msg->type() == ViewMsg_VisitedLink_Reset::ID)
+ if (msg->type() == ViewMsg_VisitedLink_Add::ID) {
+ void* iter = NULL;
+ std::vector<uint64> fingerprints;
+ CHECK(IPC::ReadParam(msg, &iter, &fingerprints));
+ counting_profile->CountAddEvent(fingerprints.size());
+ } else if (msg->type() == ViewMsg_VisitedLink_Reset::ID) {
counting_profile->CountResetEvent();
+ }
delete msg;
return true;
@@ -557,22 +547,15 @@ class VisitRelayingRenderProcessHost : public BrowserRenderProcessHost {
};
class VisitedLinkRenderProcessHostFactory
- : public MockRenderProcessHostFactory {
+ : public RenderProcessHostFactory {
public:
VisitedLinkRenderProcessHostFactory()
- : MockRenderProcessHostFactory(),
- relay_mode_(false) {}
+ : RenderProcessHostFactory() {}
virtual RenderProcessHost* CreateRenderProcessHost(Profile* profile) const {
- if (relay_mode_)
- return new VisitRelayingRenderProcessHost(profile);
- else
- return new VisitCountingRenderProcessHost(profile);
+ return new VisitRelayingRenderProcessHost(profile);
}
- void set_relay_mode(bool mode) { relay_mode_ = mode; }
-
private:
- bool relay_mode_;
DISALLOW_COPY_AND_ASSIGN(VisitedLinkRenderProcessHostFactory);
};
@@ -619,11 +602,6 @@ class VisitedLinkEventsTest : public RenderViewHostTestHarness {
DISALLOW_COPY_AND_ASSIGN(VisitedLinkEventsTest);
};
-class VisitedLinkRelayTest : public VisitedLinkEventsTest {
- public:
- virtual void SetFactoryMode() { vc_rph_factory_.set_relay_mode(true); }
-};
-
TEST_F(VisitedLinkEventsTest, Coalescense) {
// add some URLs to master.
VisitedLinkMaster* master = profile_->GetVisitedLinkMaster();
@@ -677,7 +655,7 @@ TEST_F(VisitedLinkEventsTest, Coalescense) {
EXPECT_EQ(1, profile()->reset_event_count());
}
-TEST_F(VisitedLinkRelayTest, Basics) {
+TEST_F(VisitedLinkEventsTest, Basics) {
VisitedLinkMaster* master = profile_->GetVisitedLinkMaster();
rvh()->CreateRenderView(string16());
@@ -701,7 +679,7 @@ TEST_F(VisitedLinkRelayTest, Basics) {
EXPECT_EQ(1, profile()->reset_event_count());
}
-TEST_F(VisitedLinkRelayTest, TabVisibility) {
+TEST_F(VisitedLinkEventsTest, TabVisibility) {
VisitedLinkMaster* master = profile_->GetVisitedLinkMaster();
rvh()->CreateRenderView(string16());
@@ -746,30 +724,3 @@ TEST_F(VisitedLinkRelayTest, TabVisibility) {
EXPECT_EQ(1, profile()->add_event_count());
EXPECT_EQ(1, profile()->reset_event_count());
}
-
-TEST_F(VisitedLinkRelayTest, WebViewReadiness) {
- VisitedLinkMaster* master = profile_->GetVisitedLinkMaster();
-
- // Add a few URLs.
- master->AddURL(GURL("http://acidtests.org/"));
- master->AddURL(GURL("http://google.com/"));
- master->AddURL(GURL("http://chromium.org/"));
-
- WaitForCoalescense();
-
- std::set<GURL> deleted_urls;
- deleted_urls.insert(GURL("http://acidtests.org/"));
- master->DeleteURLs(deleted_urls);
-
- // We shouldn't have any events, because RenderView hasn't been created,
- // and we ensure that updates are sent until it is.
- EXPECT_EQ(0, profile()->add_event_count());
- EXPECT_EQ(0, profile()->reset_event_count());
-
- rvh()->CreateRenderView(string16());
-
- // We should now have just a reset event: adds are eaten up by a reset
- // that followed.
- EXPECT_EQ(0, profile()->add_event_count());
- EXPECT_EQ(1, profile()->reset_event_count());
-}
diff --git a/content/browser/renderer_host/browser_render_process_host.cc b/content/browser/renderer_host/browser_render_process_host.cc
index ba356bb..d796b76 100644
--- a/content/browser/renderer_host/browser_render_process_host.cc
+++ b/content/browser/renderer_host/browser_render_process_host.cc
@@ -38,7 +38,6 @@
#include "chrome/browser/renderer_host/web_cache_manager.h"
#include "chrome/browser/safe_browsing/client_side_detection_service.h"
#include "chrome/browser/spellcheck_host.h"
-#include "chrome/browser/visitedlink/visitedlink_master.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/logging_chrome.h"
@@ -158,80 +157,6 @@ class RendererMainThread : public base::Thread {
RenderProcess* render_process_;
};
-
-// Size of the buffer after which individual link updates deemed not warranted
-// and the overall update should be used instead.
-static const unsigned kVisitedLinkBufferThreshold = 50;
-
-// This class manages buffering and sending visited link hashes (fingerprints)
-// to renderer based on widget visibility.
-// As opposed to the VisitedLinkEventListener in profile.cc, which coalesces to
-// reduce the rate of messages being sent to render processes, this class
-// ensures that the updates occur only when explicitly requested. This is
-// used by BrowserRenderProcessHost to only send Add/Reset link events to the
-// renderers when their tabs are visible and the corresponding RenderViews are
-// created.
-class VisitedLinkUpdater {
- public:
- VisitedLinkUpdater() : reset_needed_(false), has_receiver_(false) {}
-
- // Buffers |links| to update, but doesn't actually relay them.
- void AddLinks(const VisitedLinkCommon::Fingerprints& links) {
- if (reset_needed_)
- return;
-
- 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();
- return;
- }
-
- pending_.insert(pending_.end(), links.begin(), links.end());
- }
-
- // Tells the updater that sending individual link updates is no longer
- // necessary and the visited state for all links should be reset.
- void AddReset() {
- reset_needed_ = true;
- pending_.clear();
- }
-
- // Sends visited link update messages: a list of links whose visited state
- // changed or reset of visited state for all links.
- void Update(IPC::Channel::Sender* sender) {
- DCHECK(sender);
-
- if (!has_receiver_)
- return;
-
- if (reset_needed_) {
- sender->Send(new ViewMsg_VisitedLink_Reset());
- reset_needed_ = false;
- return;
- }
-
- if (pending_.empty())
- return;
-
- sender->Send(new ViewMsg_VisitedLink_Add(pending_));
-
- pending_.clear();
- }
-
- // Notifies the updater that it is now safe to send visited state updates.
- void ReceiverReady(IPC::Channel::Sender* sender) {
- has_receiver_ = true;
- // Go ahead and send whatever we already have buffered up.
- Update(sender);
- }
-
- private:
- bool reset_needed_;
- bool has_receiver_;
- VisitedLinkCommon::Fingerprints pending_;
-};
-
namespace {
// Helper class that we pass to ResourceMessageFilter so that it can find the
@@ -285,8 +210,6 @@ BrowserRenderProcessHost::BrowserRenderProcessHost(Profile* profile)
registrar_.Add(this, NotificationType::SPELLCHECK_AUTOSPELL_TOGGLED,
NotificationService::AllSources());
- visited_link_updater_.reset(new VisitedLinkUpdater());
-
WebCacheManager::GetInstance()->Add(id());
ChildProcessSecurityPolicy::GetInstance()->Add(id());
@@ -534,15 +457,10 @@ void BrowserRenderProcessHost::ReceivedBadMessage() {
base::KillProcess(GetHandle(), ResultCodes::KILLED_BAD_MESSAGE, false);
}
-void BrowserRenderProcessHost::ViewCreated() {
- visited_link_updater_->ReceiverReady(this);
-}
-
void BrowserRenderProcessHost::WidgetRestored() {
// Verify we were properly backgrounded.
DCHECK_EQ(backgrounded_, (visible_widgets_ == 0));
visible_widgets_++;
- visited_link_updater_->Update(this);
SetBackgrounded(false);
}
@@ -560,36 +478,8 @@ void BrowserRenderProcessHost::WidgetHidden() {
}
}
-void BrowserRenderProcessHost::SendVisitedLinkTable(
- base::SharedMemory* table_memory) {
- // Check if the process is still starting and we don't have a handle for it
- // yet, in which case this will happen later when InitVisitedLinks is called.
- if (!run_renderer_in_process() &&
- (!child_process_.get() || child_process_->IsStarting())) {
- return;
- }
-
- base::SharedMemoryHandle handle_for_process;
- table_memory->ShareToProcess(GetHandle(), &handle_for_process);
- if (base::SharedMemory::IsHandleValid(handle_for_process))
- Send(new ViewMsg_VisitedLink_NewTable(handle_for_process));
-}
-
-void BrowserRenderProcessHost::AddVisitedLinks(
- const VisitedLinkCommon::Fingerprints& links) {
- visited_link_updater_->AddLinks(links);
- if (visible_widgets_ == 0)
- return;
-
- visited_link_updater_->Update(this);
-}
-
-void BrowserRenderProcessHost::ResetVisitedLinks() {
- visited_link_updater_->AddReset();
- if (visible_widgets_ == 0)
- return;
-
- visited_link_updater_->Update(this);
+int BrowserRenderProcessHost::VisibleWidgetCount() const {
+ return visible_widgets_;
}
void BrowserRenderProcessHost::AppendRendererCommandLine(
@@ -793,14 +683,6 @@ base::ProcessHandle BrowserRenderProcessHost::GetHandle() {
return child_process_->GetHandle();
}
-void BrowserRenderProcessHost::InitVisitedLinks() {
- VisitedLinkMaster* visitedlink_master = profile()->GetVisitedLinkMaster();
- if (!visitedlink_master)
- return;
-
- SendVisitedLinkTable(visitedlink_master->shared_memory());
-}
-
bool BrowserRenderProcessHost::FastShutdownIfPossible() {
if (run_renderer_in_process())
return false; // Single process mode can't do fast shutdown.
@@ -1094,7 +976,6 @@ void BrowserRenderProcessHost::OnProcessLaunched() {
Send(new ViewMsg_SetIsIncognitoProcess(profile()->IsOffTheRecord()));
- InitVisitedLinks();
// We don't want to initialize the spellchecker unless SpellCheckHost has been
// created. In InitSpellChecker(), we know if GetSpellCheckHost() is NULL
diff --git a/content/browser/renderer_host/browser_render_process_host.h b/content/browser/renderer_host/browser_render_process_host.h
index decdaf5..37be1f1 100644
--- a/content/browser/renderer_host/browser_render_process_host.h
+++ b/content/browser/renderer_host/browser_render_process_host.h
@@ -26,7 +26,6 @@
class CommandLine;
class RendererMainThread;
class RenderWidgetHelper;
-class VisitedLinkUpdater;
namespace base {
class SharedMemory;
@@ -64,10 +63,7 @@ class BrowserRenderProcessHost : public RenderProcessHost,
virtual void ReceivedBadMessage();
virtual void WidgetRestored();
virtual void WidgetHidden();
- virtual void ViewCreated();
- virtual void SendVisitedLinkTable(base::SharedMemory* table_memory);
- virtual void AddVisitedLinks(const VisitedLinkCommon::Fingerprints& links);
- virtual void ResetVisitedLinks();
+ virtual int VisibleWidgetCount() const;
virtual bool FastShutdownIfPossible();
virtual bool SendWithTimeout(IPC::Message* msg, int timeout_ms);
virtual base::ProcessHandle GetHandle();
@@ -100,10 +96,6 @@ class BrowserRenderProcessHost : public RenderProcessHost,
void SuddenTerminationChanged(bool enabled);
void OnUserMetricsRecordAction(const std::string& action);
- // Initialize support for visited links. Send the renderer process its initial
- // set of visited links.
- void InitVisitedLinks();
-
// Generates a command line to be used to spawn a renderer and appends the
// results to |*command_line|.
void AppendRendererCommandLine(CommandLine* command_line) const;
@@ -174,9 +166,6 @@ class BrowserRenderProcessHost : public RenderProcessHost,
// Used in single-process mode.
scoped_ptr<RendererMainThread> in_process_renderer_;
- // Buffer visited links and send them to to renderer.
- scoped_ptr<VisitedLinkUpdater> visited_link_updater_;
-
// True if this prcoess should have accessibility enabled;
bool accessibility_enabled_;
diff --git a/content/browser/renderer_host/mock_render_process_host.cc b/content/browser/renderer_host/mock_render_process_host.cc
index ff179ff..104395f 100644
--- a/content/browser/renderer_host/mock_render_process_host.cc
+++ b/content/browser/renderer_host/mock_render_process_host.cc
@@ -56,22 +56,13 @@ void MockRenderProcessHost::WidgetRestored() {
void MockRenderProcessHost::WidgetHidden() {
}
-void MockRenderProcessHost::ViewCreated() {
+int MockRenderProcessHost::VisibleWidgetCount() const {
+ return 1;
}
void MockRenderProcessHost::AddWord(const string16& word) {
}
-void MockRenderProcessHost::SendVisitedLinkTable(
- base::SharedMemory* table_memory) {
-}
-
-void MockRenderProcessHost::AddVisitedLinks(
- const VisitedLinkCommon::Fingerprints& links) {
-}
-
-void MockRenderProcessHost::ResetVisitedLinks() {
-}
bool MockRenderProcessHost::FastShutdownIfPossible() {
// We aren't actually going to do anything, but set |fast_shutdown_started_|
diff --git a/content/browser/renderer_host/mock_render_process_host.h b/content/browser/renderer_host/mock_render_process_host.h
index 5dc8ed4..0e7656c 100644
--- a/content/browser/renderer_host/mock_render_process_host.h
+++ b/content/browser/renderer_host/mock_render_process_host.h
@@ -46,12 +46,8 @@ class MockRenderProcessHost : public RenderProcessHost {
virtual void ReceivedBadMessage();
virtual void WidgetRestored();
virtual void WidgetHidden();
- virtual void ViewCreated();
+ virtual int VisibleWidgetCount() const;
virtual void AddWord(const string16& word);
- virtual void SendVisitedLinkTable(base::SharedMemory* table_memory);
- virtual void AddVisitedLinks(
- const VisitedLinkCommon::Fingerprints& visited_links);
- virtual void ResetVisitedLinks();
virtual bool FastShutdownIfPossible();
virtual bool SendWithTimeout(IPC::Message* msg, int timeout_ms);
virtual base::ProcessHandle GetHandle();
diff --git a/content/browser/renderer_host/render_process_host.h b/content/browser/renderer_host/render_process_host.h
index cc37a8c..b384026 100644
--- a/content/browser/renderer_host/render_process_host.h
+++ b/content/browser/renderer_host/render_process_host.h
@@ -13,7 +13,6 @@
#include "base/process.h"
#include "base/process_util.h"
#include "base/time.h"
-#include "chrome/common/visitedlink_common.h"
#include "ipc/ipc_sync_channel.h"
#include "ui/gfx/surface/transport_dib.h"
@@ -189,20 +188,7 @@ class RenderProcessHost : public IPC::Channel::Sender,
// unregister visibility.
virtual void WidgetRestored() = 0;
virtual void WidgetHidden() = 0;
-
- // Called when RenderView is created by a listener.
- virtual void ViewCreated() = 0;
-
- // Informs the renderer about a new visited link table.
- virtual void SendVisitedLinkTable(base::SharedMemory* table_memory) = 0;
-
- // Notify the renderer that a link was visited.
- virtual void AddVisitedLinks(
- const VisitedLinkCommon::Fingerprints& links) = 0;
-
- // Clear internal visited links buffer and ask the renderer to update link
- // coloring state for all of its links.
- virtual void ResetVisitedLinks() = 0;
+ virtual int VisibleWidgetCount() const = 0;
// Try to shutdown the associated renderer process as fast as possible.
// If this renderer has any RenderViews with unload handlers, then this
diff --git a/content/browser/renderer_host/render_view_host.cc b/content/browser/renderer_host/render_view_host.cc
index a7a0fc7..d043f7f 100644
--- a/content/browser/renderer_host/render_view_host.cc
+++ b/content/browser/renderer_host/render_view_host.cc
@@ -189,7 +189,6 @@ bool RenderViewHost::CreateRenderView(const string16& frame_name) {
delegate_->GetRenderViewType()));
// Let our delegate know that we created a RenderView.
delegate_->RenderViewCreated(this);
- process()->ViewCreated();
return true;
}
diff --git a/content/browser/renderer_host/test_render_view_host.cc b/content/browser/renderer_host/test_render_view_host.cc
index 394d447..0ff0194 100644
--- a/content/browser/renderer_host/test_render_view_host.cc
+++ b/content/browser/renderer_host/test_render_view_host.cc
@@ -65,7 +65,6 @@ TestRenderViewHost::~TestRenderViewHost() {
bool TestRenderViewHost::CreateRenderView(const string16& frame_name) {
DCHECK(!render_view_created_);
render_view_created_ = true;
- process()->ViewCreated();
return true;
}