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 RenderFrameObserver(RenderFrame * render_frame)13RenderFrameObserver::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 DCHECK_NE(routing_id_, MSG_ROUTING_NONE); 21 impl->AddObserver(this); 22 } 23 } 24 ~RenderFrameObserver()25RenderFrameObserver::~RenderFrameObserver() { 26 if (render_frame_) { 27 RenderFrameImpl* impl = static_cast<RenderFrameImpl*>(render_frame_); 28 impl->RemoveObserver(this); 29 } 30 } 31 OnDestruct()32void RenderFrameObserver::OnDestruct() { 33 delete this; 34 } 35 OnMessageReceived(const IPC::Message & message)36bool RenderFrameObserver::OnMessageReceived(const IPC::Message& message) { 37 return false; 38 } 39 Send(IPC::Message * message)40bool RenderFrameObserver::Send(IPC::Message* message) { 41 if (render_frame_) 42 return render_frame_->Send(message); 43 44 delete message; 45 return false; 46 } 47 render_frame() const48RenderFrame* RenderFrameObserver::render_frame() const { 49 return render_frame_; 50 } 51 RenderFrameGone()52void RenderFrameObserver::RenderFrameGone() { 53 render_frame_ = NULL; 54 } 55 56 } // namespace content 57