diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-24 01:09:42 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-24 01:09:42 +0000 |
commit | 7fa7dd50dd9651e17c86eab41e9e963a6ec4ecf4 (patch) | |
tree | b2a852a76a33f79fa4f9c88ce94f5a21946d0801 | |
parent | 6b312562569d5a1aac945e6536614fc0f19339a3 (diff) | |
download | chromium_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
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; } |