Index: ipc/ipc_channel_proxy.h |
=================================================================== |
--- ipc/ipc_channel_proxy.h (revision 30647) |
+++ ipc/ipc_channel_proxy.h (working copy) |
@@ -46,9 +46,16 @@ |
// |
class ChannelProxy : public Message::Sender { |
public: |
+ |
+ class MessageFilter; |
+ struct MessageFilterTraits { |
+ static void Destruct(MessageFilter* filter); |
+ }; |
+ |
// A class that receives messages on the thread where the IPC channel is |
// running. It can choose to prevent the default action for an IPC message. |
- class MessageFilter : public base::RefCountedThreadSafe<MessageFilter> { |
+ class MessageFilter |
+ : public base::RefCountedThreadSafe<MessageFilter, MessageFilterTraits> { |
public: |
virtual ~MessageFilter() {} |
@@ -79,6 +86,13 @@ |
virtual bool OnMessageReceived(const Message& message) { |
return false; |
} |
+ |
+ // Called when the message filter is about to be deleted. This gives |
+ // derived classes the option of controlling which thread they're deleted |
+ // on etc. |
+ virtual void OnDestruct() { |
+ delete this; |
+ } |
}; |
// Initializes a channel proxy. The channel_id and mode parameters are |