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 #ifndef CONTENT_PUBLIC_RENDERER_RENDER_FRAME_OBSERVER_H_ 6 #define CONTENT_PUBLIC_RENDERER_RENDER_FRAME_OBSERVER_H_ 7 8 #include "base/basictypes.h" 9 #include "base/compiler_specific.h" 10 #include "content/common/content_export.h" 11 #include "ipc/ipc_listener.h" 12 #include "ipc/ipc_sender.h" 13 14 namespace content { 15 16 class RendererPpapiHost; 17 class RenderFrame; 18 class RenderFrameImpl; 19 20 // Base class for objects that want to filter incoming IPCs, and also get 21 // notified of changes to the frame. 22 class CONTENT_EXPORT RenderFrameObserver : public IPC::Listener, 23 public IPC::Sender { 24 public: 25 // By default, observers will be deleted when the RenderFrame goes away. If 26 // they want to outlive it, they can override this function. 27 virtual void OnDestruct(); 28 29 // Called when a Pepper plugin is created. DidCreatePepperPlugin(RendererPpapiHost * host)30 virtual void DidCreatePepperPlugin(RendererPpapiHost* host) {} 31 32 // IPC::Listener implementation. 33 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; 34 35 // IPC::Sender implementation. 36 virtual bool Send(IPC::Message* message) OVERRIDE; 37 38 RenderFrame* render_frame() const; routing_id()39 int routing_id() const { return routing_id_; } 40 41 protected: 42 explicit RenderFrameObserver(RenderFrame* render_frame); 43 virtual ~RenderFrameObserver(); 44 45 private: 46 friend class RenderFrameImpl; 47 48 // This is called by the RenderFrame when it's going away so that this object 49 // can null out its pointer. 50 void RenderFrameGone(); 51 52 RenderFrame* render_frame_; 53 // The routing ID of the associated RenderFrame. 54 int routing_id_; 55 56 DISALLOW_COPY_AND_ASSIGN(RenderFrameObserver); 57 }; 58 59 } // namespace content 60 61 #endif // CONTENT_PUBLIC_RENDERER_RENDER_FRAME_OBSERVER_H_ 62