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