OLD | NEW |
---|---|
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" |
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
213 IPCTestBase::SetUp(); | 213 IPCTestBase::SetUp(); |
214 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | 214 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
215 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), &temp_path_)); | 215 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), &temp_path_)); |
216 } | 216 } |
217 | 217 |
218 void TearDown() override { IPCTestBase::TearDown(); } | 218 void TearDown() override { IPCTestBase::TearDown(); } |
219 | 219 |
220 // Takes ownership of |broker|. Has no effect if called after CommonSetUp(). | 220 // Takes ownership of |broker|. Has no effect if called after CommonSetUp(). |
221 void set_broker(IPC::AttachmentBrokerUnprivilegedWin* broker) { | 221 void set_broker(IPC::AttachmentBrokerUnprivilegedWin* broker) { |
222 broker_.reset(broker); | 222 broker_.reset(broker); |
223 IPC::AttachmentBroker::SetGlobal(broker); | |
223 } | 224 } |
224 | 225 |
225 void CommonSetUp() { | 226 void CommonSetUp() { |
226 if (!broker_.get()) | 227 if (!broker_.get()) |
227 set_broker(new IPC::AttachmentBrokerUnprivilegedWin); | 228 set_broker(new IPC::AttachmentBrokerUnprivilegedWin); |
228 broker_->AddObserver(&observer_); | 229 broker_->AddObserver(&observer_); |
229 set_attachment_broker(broker_.get()); | 230 set_attachment_broker(broker_.get()); |
230 CreateChannel(&proxy_listener_); | 231 CreateChannel(&proxy_listener_); |
231 broker_->DesignateBrokerCommunicationChannel(channel()); | 232 broker_->DesignateBrokerCommunicationChannel(channel()); |
232 ASSERT_TRUE(ConnectChannel()); | 233 ASSERT_TRUE(ConnectChannel()); |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
417 const IPC::Message& message); | 418 const IPC::Message& message); |
418 | 419 |
419 int CommonPrivilegedProcessMain(OnMessageReceivedCallback callback, | 420 int CommonPrivilegedProcessMain(OnMessageReceivedCallback callback, |
420 const char* channel_name) { | 421 const char* channel_name) { |
421 LOG(INFO) << "Privileged process start."; | 422 LOG(INFO) << "Privileged process start."; |
422 base::MessageLoopForIO main_message_loop; | 423 base::MessageLoopForIO main_message_loop; |
423 ProxyListener listener; | 424 ProxyListener listener; |
424 | 425 |
425 // Set up IPC channel. | 426 // Set up IPC channel. |
426 IPC::AttachmentBrokerPrivilegedWin broker; | 427 IPC::AttachmentBrokerPrivilegedWin broker; |
428 IPC::AttachmentBroker::SetGlobal(&broker); | |
Tom Sepez
2015/09/11 15:58:30
This goes out of scope while the process is still
erikchen
2015/09/11 20:16:02
I updated the comment to say:
"""
Each process has
| |
427 scoped_ptr<IPC::Channel> channel(IPC::Channel::CreateClient( | 429 scoped_ptr<IPC::Channel> channel(IPC::Channel::CreateClient( |
428 IPCTestBase::GetChannelName(channel_name), &listener, &broker)); | 430 IPCTestBase::GetChannelName(channel_name), &listener, &broker)); |
429 broker.RegisterCommunicationChannel(channel.get()); | 431 broker.RegisterCommunicationChannel(channel.get()); |
430 CHECK(channel->Connect()); | 432 CHECK(channel->Connect()); |
431 | 433 |
432 while (true) { | 434 while (true) { |
433 LOG(INFO) << "Privileged process spinning run loop."; | 435 LOG(INFO) << "Privileged process spinning run loop."; |
434 base::MessageLoop::current()->Run(); | 436 base::MessageLoop::current()->Run(); |
435 ProxyListener::Reason reason = listener.get_reason(); | 437 ProxyListener::Reason reason = listener.get_reason(); |
436 if (reason == ProxyListener::CHANNEL_ERROR) | 438 if (reason == ProxyListener::CHANNEL_ERROR) |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
551 SendControlMessage(sender, success); | 553 SendControlMessage(sender, success); |
552 } | 554 } |
553 } | 555 } |
554 | 556 |
555 MULTIPROCESS_IPC_TEST_CLIENT_MAIN(SendHandleTwice) { | 557 MULTIPROCESS_IPC_TEST_CLIENT_MAIN(SendHandleTwice) { |
556 return CommonPrivilegedProcessMain(&SendHandleTwiceCallback, | 558 return CommonPrivilegedProcessMain(&SendHandleTwiceCallback, |
557 "SendHandleTwice"); | 559 "SendHandleTwice"); |
558 } | 560 } |
559 | 561 |
560 } // namespace | 562 } // namespace |
OLD | NEW |