Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(82)

Side by Side Diff: content/public/browser/browser_message_filter.h

Issue 324143002: Decouple IPC::MessageFilter from IPC::Channel (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Landing Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/plugin/plugin_channel.cc ('k') | content/public/browser/browser_message_filter.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CONTENT_PUBLIC_BROWSER_BROWSER_MESSAGE_FILTER_H_ 5 #ifndef CONTENT_PUBLIC_BROWSER_BROWSER_MESSAGE_FILTER_H_
6 #define CONTENT_PUBLIC_BROWSER_BROWSER_MESSAGE_FILTER_H_ 6 #define CONTENT_PUBLIC_BROWSER_BROWSER_MESSAGE_FILTER_H_
7 7
8 #include "base/memory/ref_counted.h" 8 #include "base/memory/ref_counted.h"
9 #include "base/process/process.h" 9 #include "base/process/process.h"
10 #include "content/common/content_export.h" 10 #include "content/common/content_export.h"
(...skipping 21 matching lines...) Expand all
32 : public base::RefCountedThreadSafe< 32 : public base::RefCountedThreadSafe<
33 BrowserMessageFilter, BrowserMessageFilterTraits>, 33 BrowserMessageFilter, BrowserMessageFilterTraits>,
34 public IPC::Sender { 34 public IPC::Sender {
35 public: 35 public:
36 explicit BrowserMessageFilter(uint32 message_class_to_filter); 36 explicit BrowserMessageFilter(uint32 message_class_to_filter);
37 BrowserMessageFilter(const uint32* message_classes_to_filter, 37 BrowserMessageFilter(const uint32* message_classes_to_filter,
38 size_t num_message_classes_to_filter); 38 size_t num_message_classes_to_filter);
39 39
40 // These match the corresponding IPC::MessageFilter methods and are always 40 // These match the corresponding IPC::MessageFilter methods and are always
41 // called on the IO thread. 41 // called on the IO thread.
42 virtual void OnFilterAdded(IPC::Channel* channel) {} 42 virtual void OnFilterAdded(IPC::Sender* sender) {}
43 virtual void OnFilterRemoved() {} 43 virtual void OnFilterRemoved() {}
44 virtual void OnChannelClosing() {} 44 virtual void OnChannelClosing() {}
45 virtual void OnChannelConnected(int32 peer_pid) {} 45 virtual void OnChannelConnected(int32 peer_pid) {}
46 46
47 // Called when the message filter is about to be deleted. This gives 47 // Called when the message filter is about to be deleted. This gives
48 // derived classes the option of controlling which thread they're deleted 48 // derived classes the option of controlling which thread they're deleted
49 // on etc. 49 // on etc.
50 virtual void OnDestruct() const; 50 virtual void OnDestruct() const;
51 51
52 // IPC::Sender implementation. Can be called on any thread. Can't send sync 52 // IPC::Sender implementation. Can be called on any thread. Can't send sync
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 // friends above. This is only guaranteed to be valid on creation, after that 116 // friends above. This is only guaranteed to be valid on creation, after that
117 // this class could outlive the filter. 117 // this class could outlive the filter.
118 IPC::MessageFilter* GetFilter(); 118 IPC::MessageFilter* GetFilter();
119 119
120 // This implements IPC::MessageFilter so that we can hide that from child 120 // This implements IPC::MessageFilter so that we can hide that from child
121 // classes. Internal keeps a reference to this class, which is why there's a 121 // classes. Internal keeps a reference to this class, which is why there's a
122 // weak pointer back. This class could outlive Internal based on what the 122 // weak pointer back. This class could outlive Internal based on what the
123 // child class does in its OnDestruct method. 123 // child class does in its OnDestruct method.
124 Internal* internal_; 124 Internal* internal_;
125 125
126 IPC::Channel* channel_; 126 IPC::Sender* sender_;
127 base::ProcessId peer_pid_; 127 base::ProcessId peer_pid_;
128 128
129 std::vector<uint32> message_classes_to_filter_; 129 std::vector<uint32> message_classes_to_filter_;
130 130
131 #if defined(OS_WIN) 131 #if defined(OS_WIN)
132 base::Lock peer_handle_lock_; 132 base::Lock peer_handle_lock_;
133 base::ProcessHandle peer_handle_; 133 base::ProcessHandle peer_handle_;
134 #endif 134 #endif
135 }; 135 };
136 136
137 struct BrowserMessageFilterTraits { 137 struct BrowserMessageFilterTraits {
138 static void Destruct(const BrowserMessageFilter* filter) { 138 static void Destruct(const BrowserMessageFilter* filter) {
139 filter->OnDestruct(); 139 filter->OnDestruct();
140 } 140 }
141 }; 141 };
142 142
143 } // namespace content 143 } // namespace content
144 144
145 #endif // CONTENT_PUBLIC_BROWSER_BROWSER_MESSAGE_FILTER_H_ 145 #endif // CONTENT_PUBLIC_BROWSER_BROWSER_MESSAGE_FILTER_H_
OLDNEW
« no previous file with comments | « content/plugin/plugin_channel.cc ('k') | content/public/browser/browser_message_filter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698