Index: ipc/ipc_channel_proxy.h |
diff --git a/ipc/ipc_channel_proxy.h b/ipc/ipc_channel_proxy.h |
index 1f5ecf450df7f7c6d8a486a3d4efb76a95e1f81e..dca8c977302975e5fe9a0bf8c7dc188004d97121 100644 |
--- a/ipc/ipc_channel_proxy.h |
+++ b/ipc/ipc_channel_proxy.h |
@@ -88,6 +88,13 @@ class IPC_EXPORT ChannelProxy : public Sender, public base::NonThreadSafe { |
// the message be handled in the default way. |
virtual bool OnMessageReceived(const Message& message); |
+ // Called to query the Message classes supported by the filter. Return |
+ // false to indicate that all message types should reach the filter, or true |
+ // if the resulting contents of |supported_message_classes| may be used to |
+ // selectively offer messages of a particular class to the filter. |
+ virtual bool GetSupportedMessageClasses( |
+ std::vector<uint32>* supported_message_classes) const; |
+ |
protected: |
virtual ~MessageFilter(); |
@@ -230,6 +237,11 @@ class IPC_EXPORT ChannelProxy : public Sender, public base::NonThreadSafe { |
std::string channel_id_; |
bool channel_connected_called_; |
+ // Routes a given message to a proper subset of |filters_|, depending |
+ // on which message classes a filter might support. |
+ class MessageFilterRouter; |
+ scoped_ptr<MessageFilterRouter> message_filter_router_; |
+ |
// Holds filters between the AddFilter call on the listerner thread and the |
// IPC thread when they're added to filters_. |
std::vector<scoped_refptr<MessageFilter> > pending_filters_; |