OLD | NEW |
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 #include "content/public/browser/browser_message_filter.h" | 5 #include "content/public/browser/browser_message_filter.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 12 matching lines...) Expand all Loading... |
23 namespace content { | 23 namespace content { |
24 | 24 |
25 class BrowserMessageFilter::Internal : public IPC::MessageFilter { | 25 class BrowserMessageFilter::Internal : public IPC::MessageFilter { |
26 public: | 26 public: |
27 explicit Internal(BrowserMessageFilter* filter) : filter_(filter) {} | 27 explicit Internal(BrowserMessageFilter* filter) : filter_(filter) {} |
28 | 28 |
29 private: | 29 private: |
30 virtual ~Internal() {} | 30 virtual ~Internal() {} |
31 | 31 |
32 // IPC::MessageFilter implementation: | 32 // IPC::MessageFilter implementation: |
33 virtual void OnFilterAdded(IPC::Channel* channel) OVERRIDE { | 33 virtual void OnFilterAdded(IPC::Sender* sender) OVERRIDE { |
34 filter_->channel_ = channel; | 34 filter_->sender_ = sender; |
35 filter_->OnFilterAdded(channel); | 35 filter_->OnFilterAdded(sender); |
36 } | 36 } |
37 | 37 |
38 virtual void OnFilterRemoved() OVERRIDE { | 38 virtual void OnFilterRemoved() OVERRIDE { |
39 filter_->OnFilterRemoved(); | 39 filter_->OnFilterRemoved(); |
40 } | 40 } |
41 | 41 |
42 virtual void OnChannelClosing() OVERRIDE { | 42 virtual void OnChannelClosing() OVERRIDE { |
43 filter_->channel_ = NULL; | 43 filter_->sender_ = NULL; |
44 filter_->OnChannelClosing(); | 44 filter_->OnChannelClosing(); |
45 } | 45 } |
46 | 46 |
47 virtual void OnChannelConnected(int32 peer_pid) OVERRIDE { | 47 virtual void OnChannelConnected(int32 peer_pid) OVERRIDE { |
48 filter_->peer_pid_ = peer_pid; | 48 filter_->peer_pid_ = peer_pid; |
49 filter_->OnChannelConnected(peer_pid); | 49 filter_->OnChannelConnected(peer_pid); |
50 } | 50 } |
51 | 51 |
52 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE { | 52 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE { |
53 BrowserThread::ID thread = BrowserThread::IO; | 53 BrowserThread::ID thread = BrowserThread::IO; |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 return rv; | 94 return rv; |
95 } | 95 } |
96 | 96 |
97 scoped_refptr<BrowserMessageFilter> filter_; | 97 scoped_refptr<BrowserMessageFilter> filter_; |
98 | 98 |
99 DISALLOW_COPY_AND_ASSIGN(Internal); | 99 DISALLOW_COPY_AND_ASSIGN(Internal); |
100 }; | 100 }; |
101 | 101 |
102 BrowserMessageFilter::BrowserMessageFilter(uint32 message_class_to_filter) | 102 BrowserMessageFilter::BrowserMessageFilter(uint32 message_class_to_filter) |
103 : internal_(NULL), | 103 : internal_(NULL), |
104 channel_(NULL), | 104 sender_(NULL), |
105 #if defined(OS_WIN) | 105 #if defined(OS_WIN) |
106 peer_handle_(base::kNullProcessHandle), | 106 peer_handle_(base::kNullProcessHandle), |
107 #endif | 107 #endif |
108 peer_pid_(base::kNullProcessId), | 108 peer_pid_(base::kNullProcessId), |
109 message_classes_to_filter_(1, message_class_to_filter) {} | 109 message_classes_to_filter_(1, message_class_to_filter) {} |
110 | 110 |
111 BrowserMessageFilter::BrowserMessageFilter( | 111 BrowserMessageFilter::BrowserMessageFilter( |
112 const uint32* message_classes_to_filter, | 112 const uint32* message_classes_to_filter, |
113 size_t num_message_classes_to_filter) | 113 size_t num_message_classes_to_filter) |
114 : internal_(NULL), | 114 : internal_(NULL), |
115 channel_(NULL), | 115 sender_(NULL), |
116 #if defined(OS_WIN) | 116 #if defined(OS_WIN) |
117 peer_handle_(base::kNullProcessHandle), | 117 peer_handle_(base::kNullProcessHandle), |
118 #endif | 118 #endif |
119 peer_pid_(base::kNullProcessId), | 119 peer_pid_(base::kNullProcessId), |
120 message_classes_to_filter_( | 120 message_classes_to_filter_( |
121 message_classes_to_filter, | 121 message_classes_to_filter, |
122 message_classes_to_filter + num_message_classes_to_filter) { | 122 message_classes_to_filter + num_message_classes_to_filter) { |
123 DCHECK(num_message_classes_to_filter); | 123 DCHECK(num_message_classes_to_filter); |
124 } | 124 } |
125 | 125 |
(...skipping 28 matching lines...) Expand all Loading... |
154 | 154 |
155 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { | 155 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { |
156 BrowserThread::PostTask( | 156 BrowserThread::PostTask( |
157 BrowserThread::IO, | 157 BrowserThread::IO, |
158 FROM_HERE, | 158 FROM_HERE, |
159 base::Bind(base::IgnoreResult(&BrowserMessageFilter::Send), this, | 159 base::Bind(base::IgnoreResult(&BrowserMessageFilter::Send), this, |
160 message)); | 160 message)); |
161 return true; | 161 return true; |
162 } | 162 } |
163 | 163 |
164 if (channel_) | 164 if (sender_) |
165 return channel_->Send(message); | 165 return sender_->Send(message); |
166 | 166 |
167 delete message; | 167 delete message; |
168 return false; | 168 return false; |
169 } | 169 } |
170 | 170 |
171 base::TaskRunner* BrowserMessageFilter::OverrideTaskRunnerForMessage( | 171 base::TaskRunner* BrowserMessageFilter::OverrideTaskRunnerForMessage( |
172 const IPC::Message& message) { | 172 const IPC::Message& message) { |
173 return NULL; | 173 return NULL; |
174 } | 174 } |
175 | 175 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
218 | 218 |
219 IPC::MessageFilter* BrowserMessageFilter::GetFilter() { | 219 IPC::MessageFilter* BrowserMessageFilter::GetFilter() { |
220 // We create this on demand so that if a filter is used in a unit test but | 220 // We create this on demand so that if a filter is used in a unit test but |
221 // never attached to a channel, we don't leak Internal and this; | 221 // never attached to a channel, we don't leak Internal and this; |
222 DCHECK(!internal_) << "Should only be called once."; | 222 DCHECK(!internal_) << "Should only be called once."; |
223 internal_ = new Internal(this); | 223 internal_ = new Internal(this); |
224 return internal_; | 224 return internal_; |
225 } | 225 } |
226 | 226 |
227 } // namespace content | 227 } // namespace content |
OLD | NEW |