1 // Copyright 2013 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_frame_observer.h" 6 7 #include "content/renderer/render_frame_impl.h" 8 9 using blink::WebFrame; 10 11 namespace content { 12 13 RenderFrameObserver::RenderFrameObserver(RenderFrame* render_frame) 14 : render_frame_(render_frame), 15 routing_id_(MSG_ROUTING_NONE) { 16 // |render_frame| can be NULL on unit testing. 17 if (render_frame) { 18 RenderFrameImpl* impl = static_cast<RenderFrameImpl*>(render_frame); 19 routing_id_ = impl->GetRoutingID(); 20 impl->AddObserver(this); 21 } 22 } 23 24 RenderFrameObserver::~RenderFrameObserver() { 25 if (render_frame_) { 26 RenderFrameImpl* impl = static_cast<RenderFrameImpl*>(render_frame_); 27 impl->RemoveObserver(this); 28 } 29 } 30 31 void RenderFrameObserver::OnDestruct() { 32 delete this; 33 } 34 35 bool RenderFrameObserver::OnMessageReceived(const IPC::Message& message) { 36 return false; 37 } 38 39 bool RenderFrameObserver::Send(IPC::Message* message) { 40 if (render_frame_) 41 return render_frame_->Send(message); 42 43 delete message; 44 return false; 45 } 46 47 RenderFrame* RenderFrameObserver::render_frame() const { 48 return render_frame_; 49 } 50 51 void RenderFrameObserver::RenderFrameGone() { 52 render_frame_ = NULL; 53 } 54 55 } // namespace content 56