1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "content/public/renderer/render_view_observer.h" 6 7 #include "content/renderer/render_view_impl.h" 8 9 using blink::WebFrame; 10 11 namespace content { 12 13 RenderViewObserver::RenderViewObserver(RenderView* render_view) 14 : render_view_(render_view), 15 routing_id_(MSG_ROUTING_NONE) { 16 // |render_view| can be NULL on unit testing. 17 if (render_view) { 18 RenderViewImpl* impl = static_cast<RenderViewImpl*>(render_view); 19 routing_id_ = impl->routing_id(); 20 impl->AddObserver(this); 21 } 22 } 23 24 RenderViewObserver::~RenderViewObserver() { 25 if (render_view_) { 26 RenderViewImpl* impl = static_cast<RenderViewImpl*>(render_view_); 27 impl->RemoveObserver(this); 28 } 29 } 30 31 void RenderViewObserver::OnDestruct() { 32 delete this; 33 } 34 35 bool RenderViewObserver::OnMessageReceived(const IPC::Message& message) { 36 return false; 37 } 38 39 bool RenderViewObserver::Send(IPC::Message* message) { 40 if (render_view_) 41 return render_view_->Send(message); 42 43 delete message; 44 return false; 45 } 46 47 RenderView* RenderViewObserver::render_view() const { 48 return render_view_; 49 } 50 51 void RenderViewObserver::RenderViewGone() { 52 render_view_ = NULL; 53 } 54 55 } // namespace content 56