summaryrefslogtreecommitdiffstats
path: root/content/browser/renderer_host/render_view_host_observer.cc
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-08 21:03:10 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-08 21:03:10 +0000
commitf364d139a49933c7212d521801fec68d1b229487 (patch)
tree7c4fe037e5a083276962d668369dff201eeaf612 /content/browser/renderer_host/render_view_host_observer.cc
parent5bba4dd3a7ad928f6c8a58aea8d716605eec285a (diff)
downloadchromium_src-f364d139a49933c7212d521801fec68d1b229487.zip
chromium_src-f364d139a49933c7212d521801fec68d1b229487.tar.gz
chromium_src-f364d139a49933c7212d521801fec68d1b229487.tar.bz2
Relanding http://src.chromium.org/viewvc/chrome?view=rev&revision=80938.
Add a new RenderViewHostObserver interface for filtering IPCs send to RenderViewHost. This is needed because with TabContentsObserver, an observer might not know which RenderViewHost a message came from duing a pending navigation. A side-benefit is that we only have to add these observers once, instead of remembering/knowing all the delegates that might want to filter these messages. BUG=78629 Review URL: http://codereview.chromium.org/6813046 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80984 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/renderer_host/render_view_host_observer.cc')
-rw-r--r--content/browser/renderer_host/render_view_host_observer.cc41
1 files changed, 41 insertions, 0 deletions
diff --git a/content/browser/renderer_host/render_view_host_observer.cc b/content/browser/renderer_host/render_view_host_observer.cc
new file mode 100644
index 0000000..e60e2bb
--- /dev/null
+++ b/content/browser/renderer_host/render_view_host_observer.cc
@@ -0,0 +1,41 @@
+// Copyright (c) 2011 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 "content/browser/renderer_host/render_view_host_observer.h"
+
+#include "content/browser/renderer_host/render_view_host.h"
+
+RenderViewHostObserver::RenderViewHostObserver(RenderViewHost* render_view_host)
+ : render_view_host_(render_view_host),
+ routing_id_(render_view_host->routing_id()) {
+ render_view_host_->AddObserver(this);
+}
+
+RenderViewHostObserver::~RenderViewHostObserver() {
+ if (render_view_host_)
+ render_view_host_->RemoveObserver(this);
+}
+
+void RenderViewHostObserver::RenderViewHostDestroyed() {
+ delete this;
+}
+
+bool RenderViewHostObserver::OnMessageReceived(const IPC::Message& message) {
+ return false;
+}
+
+bool RenderViewHostObserver::Send(IPC::Message* message) {
+ if (!render_view_host_) {
+ delete message;
+ return false;
+ }
+
+ return render_view_host_->Send(message);
+}
+
+void RenderViewHostObserver::RenderViewHostDestruction() {
+ render_view_host_->RemoveObserver(this);
+ RenderViewHostDestroyed();
+ render_view_host_ = NULL;
+}