summaryrefslogtreecommitdiffstats
path: root/content
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 /content
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
Diffstat (limited to 'content')
-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
7 files changed, 7 insertions, 166 deletions
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;
}