1 // Copyright (c) 2012 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/browser/render_view_host_observer.h" 6 7 #include "content/browser/renderer_host/render_view_host_impl.h" 8 9 namespace content { 10 11 RenderViewHostObserver::RenderViewHostObserver(RenderViewHost* render_view_host) 12 : render_view_host_(static_cast<RenderViewHostImpl*>(render_view_host)), 13 routing_id_(render_view_host_->GetRoutingID()) { 14 render_view_host_->AddObserver(this); 15 } 16 17 RenderViewHostObserver::~RenderViewHostObserver() { 18 if (render_view_host_) 19 render_view_host_->RemoveObserver(this); 20 } 21 22 void RenderViewHostObserver::RenderViewHostInitialized() { 23 } 24 25 void RenderViewHostObserver::RenderViewHostDestroyed(RenderViewHost* rvh) { 26 delete this; 27 } 28 29 void RenderViewHostObserver::Navigate(const GURL& url) { 30 } 31 32 bool RenderViewHostObserver::OnMessageReceived(const IPC::Message& message) { 33 return false; 34 } 35 36 bool RenderViewHostObserver::Send(IPC::Message* message) { 37 if (!render_view_host_) { 38 delete message; 39 return false; 40 } 41 42 return render_view_host_->Send(message); 43 } 44 45 RenderViewHost* RenderViewHostObserver::render_view_host() const { 46 return render_view_host_; 47 } 48 49 void RenderViewHostObserver::RenderViewHostDestruction() { 50 render_view_host_->RemoveObserver(this); 51 RenderViewHost* rvh = render_view_host_; 52 render_view_host_ = NULL; 53 RenderViewHostDestroyed(rvh); 54 } 55 56 } // namespace content 57