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

Side by Side Diff: ipc/attachment_broker_privileged_win_unittest.cc

Issue 1256993003: ipc: Create AttachmentBrokerPrivileged and AttachmentBrokerUnprivileged. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@add_ipc_message_feature
Patch Set: Rebase. Created 5 years, 4 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "build/build_config.h" 5 #include "build/build_config.h"
6 6
7 #include <windows.h> 7 #include <windows.h>
8 8
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
11 #include "base/files/scoped_temp_dir.h" 11 #include "base/files/scoped_temp_dir.h"
12 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/scoped_ptr.h"
13 #include "ipc/attachment_broker_privileged_win.h" 13 #include "ipc/attachment_broker_privileged_win.h"
14 #include "ipc/attachment_broker_win.h" 14 #include "ipc/attachment_broker_unprivileged_win.h"
15 #include "ipc/handle_attachment_win.h" 15 #include "ipc/handle_attachment_win.h"
16 #include "ipc/ipc_listener.h" 16 #include "ipc/ipc_listener.h"
17 #include "ipc/ipc_message.h" 17 #include "ipc/ipc_message.h"
18 #include "ipc/ipc_test_base.h" 18 #include "ipc/ipc_test_base.h"
19 19
20 namespace { 20 namespace {
21 21
22 const char kDataBuffer[] = "This is some test data to write to the file."; 22 const char kDataBuffer[] = "This is some test data to write to the file.";
23 23
24 // Returns the contents of the file represented by |h| as a std::string. 24 // Returns the contents of the file represented by |h| as a std::string.
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 144
145 void SetUp() override { 145 void SetUp() override {
146 IPCTestBase::SetUp(); 146 IPCTestBase::SetUp();
147 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 147 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
148 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), &temp_path_)); 148 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), &temp_path_));
149 } 149 }
150 150
151 void TearDown() override { IPCTestBase::TearDown(); } 151 void TearDown() override { IPCTestBase::TearDown(); }
152 152
153 // Takes ownership of |broker|. Has no effect if called after CommonSetUp(). 153 // Takes ownership of |broker|. Has no effect if called after CommonSetUp().
154 void set_broker(IPC::AttachmentBrokerWin* broker) { broker_.reset(broker); } 154 void set_broker(IPC::AttachmentBrokerUnprivilegedWin* broker) {
155 broker_.reset(broker);
156 }
155 157
156 void CommonSetUp() { 158 void CommonSetUp() {
157 if (!broker_.get()) 159 if (!broker_.get())
158 set_broker(new IPC::AttachmentBrokerWin); 160 set_broker(new IPC::AttachmentBrokerUnprivilegedWin);
159 broker_->AddObserver(&observer_); 161 broker_->AddObserver(&observer_);
160 set_attachment_broker(broker_.get()); 162 set_attachment_broker(broker_.get());
161 CreateChannel(&proxy_listener_); 163 CreateChannel(&proxy_listener_);
162 broker_->set_sender(channel()); 164 broker_->set_sender(channel());
163 ASSERT_TRUE(ConnectChannel()); 165 ASSERT_TRUE(ConnectChannel());
164 ASSERT_TRUE(StartClient()); 166 ASSERT_TRUE(StartClient());
165 } 167 }
166 168
167 void CommonTearDown() { 169 void CommonTearDown() {
168 // Close the channel so the client's OnChannelError() gets fired. 170 // Close the channel so the client's OnChannelError() gets fired.
(...skipping 19 matching lines...) Expand all
188 IPC::Message* message = 190 IPC::Message* message =
189 new IPC::Message(0, 2, IPC::Message::PRIORITY_NORMAL); 191 new IPC::Message(0, 2, IPC::Message::PRIORITY_NORMAL);
190 message->WriteInt(message_index_++); 192 message->WriteInt(message_index_++);
191 scoped_refptr<IPC::internal::HandleAttachmentWin> attachment( 193 scoped_refptr<IPC::internal::HandleAttachmentWin> attachment(
192 new IPC::internal::HandleAttachmentWin(h)); 194 new IPC::internal::HandleAttachmentWin(h));
193 ASSERT_TRUE(message->WriteAttachment(attachment)); 195 ASSERT_TRUE(message->WriteAttachment(attachment));
194 sender()->Send(message); 196 sender()->Send(message);
195 } 197 }
196 198
197 ProxyListener* get_proxy_listener() { return &proxy_listener_; } 199 ProxyListener* get_proxy_listener() { return &proxy_listener_; }
198 IPC::AttachmentBrokerWin* get_broker() { return broker_.get(); } 200 IPC::AttachmentBrokerUnprivilegedWin* get_broker() { return broker_.get(); }
199 MockObserver* get_observer() { return &observer_; } 201 MockObserver* get_observer() { return &observer_; }
200 202
201 private: 203 private:
202 base::ScopedTempDir temp_dir_; 204 base::ScopedTempDir temp_dir_;
203 base::FilePath temp_path_; 205 base::FilePath temp_path_;
204 int message_index_; 206 int message_index_;
205 ProxyListener proxy_listener_; 207 ProxyListener proxy_listener_;
206 scoped_ptr<IPC::AttachmentBrokerWin> broker_; 208 scoped_ptr<IPC::AttachmentBrokerUnprivilegedWin> broker_;
207 MockObserver observer_; 209 MockObserver observer_;
208 }; 210 };
209 211
210 // A broker which always sets the current process as the destination process 212 // A broker which always sets the current process as the destination process
211 // for attachments. 213 // for attachments.
212 class MockBroker : public IPC::AttachmentBrokerWin { 214 class MockBroker : public IPC::AttachmentBrokerUnprivilegedWin {
213 public: 215 public:
214 MockBroker() {} 216 MockBroker() {}
215 ~MockBroker() override {} 217 ~MockBroker() override {}
216 bool SendAttachmentToProcess(const IPC::BrokerableAttachment* attachment, 218 bool SendAttachmentToProcess(const IPC::BrokerableAttachment* attachment,
217 base::ProcessId destination_process) override { 219 base::ProcessId destination_process) override {
218 return IPC::AttachmentBrokerWin::SendAttachmentToProcess( 220 return IPC::AttachmentBrokerUnprivilegedWin::SendAttachmentToProcess(
219 attachment, base::Process::Current().Pid()); 221 attachment, base::Process::Current().Pid());
220 } 222 }
221 }; 223 };
222 224
223 // An unprivileged process makes a file HANDLE, and writes a string to it. The 225 // An unprivileged process makes a file HANDLE, and writes a string to it. The
224 // file HANDLE is sent to the privileged process using the attachment broker. 226 // file HANDLE is sent to the privileged process using the attachment broker.
225 // The privileged process dups the HANDLE into its own HANDLE table. This test 227 // The privileged process dups the HANDLE into its own HANDLE table. This test
226 // checks that the file has the same contents in the privileged process. 228 // checks that the file has the same contents in the privileged process.
227 TEST_F(IPCAttachmentBrokerPrivilegedWinTest, SendHandle) { 229 TEST_F(IPCAttachmentBrokerPrivilegedWinTest, SendHandle) {
228 Init("SendHandle"); 230 Init("SendHandle");
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
388 // Do nothing special. The default behavior already runs the 390 // Do nothing special. The default behavior already runs the
389 // AttachmentBrokerPrivilegedWin. 391 // AttachmentBrokerPrivilegedWin.
390 } 392 }
391 393
392 MULTIPROCESS_IPC_TEST_CLIENT_MAIN(SendHandleToSelf) { 394 MULTIPROCESS_IPC_TEST_CLIENT_MAIN(SendHandleToSelf) {
393 return CommonPrivilegedProcessMain(&SendHandleToSelfCallback, 395 return CommonPrivilegedProcessMain(&SendHandleToSelfCallback,
394 "SendHandleToSelf"); 396 "SendHandleToSelf");
395 } 397 }
396 398
397 } // namespace 399 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698