OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "components/nacl/loader/nacl_ipc_adapter.h" | 5 #include "components/nacl/loader/nacl_ipc_adapter.h" |
6 | 6 |
7 #include <limits.h> | 7 #include <limits.h> |
8 #include <string.h> | 8 #include <string.h> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
430 base::AutoLock lock(lock_); | 430 base::AutoLock lock(lock_); |
431 while (locked_data_.to_be_received_.empty() && | 431 while (locked_data_.to_be_received_.empty() && |
432 !locked_data_.channel_closed_) | 432 !locked_data_.channel_closed_) |
433 cond_var_.Wait(); | 433 cond_var_.Wait(); |
434 if (locked_data_.channel_closed_) { | 434 if (locked_data_.channel_closed_) { |
435 retval = -1; | 435 retval = -1; |
436 } else { | 436 } else { |
437 retval = LockedReceive(msg); | 437 retval = LockedReceive(msg); |
438 DCHECK(retval > 0); | 438 DCHECK(retval > 0); |
439 } | 439 } |
| 440 cond_var_.Signal(); |
440 } | 441 } |
441 cond_var_.Signal(); | |
442 return retval; | 442 return retval; |
443 } | 443 } |
444 | 444 |
445 void NaClIPCAdapter::CloseChannel() { | 445 void NaClIPCAdapter::CloseChannel() { |
446 { | 446 { |
447 base::AutoLock lock(lock_); | 447 base::AutoLock lock(lock_); |
448 locked_data_.channel_closed_ = true; | 448 locked_data_.channel_closed_ = true; |
| 449 cond_var_.Signal(); |
449 } | 450 } |
450 cond_var_.Signal(); | |
451 | 451 |
452 task_runner_->PostTask(FROM_HERE, | 452 task_runner_->PostTask(FROM_HERE, |
453 base::Bind(&NaClIPCAdapter::CloseChannelOnIOThread, this)); | 453 base::Bind(&NaClIPCAdapter::CloseChannelOnIOThread, this)); |
454 } | 454 } |
455 | 455 |
456 NaClDesc* NaClIPCAdapter::MakeNaClDesc() { | 456 NaClDesc* NaClIPCAdapter::MakeNaClDesc() { |
457 return MakeNaClDescCustom(this); | 457 return MakeNaClDescCustom(this); |
458 } | 458 } |
459 | 459 |
460 #if defined(OS_POSIX) | 460 #if defined(OS_POSIX) |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
544 } | 544 } |
545 // No default, so the compiler will warn us if new types get added. | 545 // No default, so the compiler will warn us if new types get added. |
546 } | 546 } |
547 if (nacl_desc.get()) | 547 if (nacl_desc.get()) |
548 rewritten_msg->AddDescriptor(nacl_desc.release()); | 548 rewritten_msg->AddDescriptor(nacl_desc.release()); |
549 } | 549 } |
550 if (new_msg) | 550 if (new_msg) |
551 SaveMessage(*new_msg, rewritten_msg.get()); | 551 SaveMessage(*new_msg, rewritten_msg.get()); |
552 else | 552 else |
553 SaveMessage(msg, rewritten_msg.get()); | 553 SaveMessage(msg, rewritten_msg.get()); |
| 554 cond_var_.Signal(); |
554 } | 555 } |
555 cond_var_.Signal(); | |
556 return true; | 556 return true; |
557 } | 557 } |
558 | 558 |
559 void NaClIPCAdapter::OnChannelConnected(int32 peer_pid) { | 559 void NaClIPCAdapter::OnChannelConnected(int32 peer_pid) { |
560 } | 560 } |
561 | 561 |
562 void NaClIPCAdapter::OnChannelError() { | 562 void NaClIPCAdapter::OnChannelError() { |
563 CloseChannel(); | 563 CloseChannel(); |
564 } | 564 } |
565 | 565 |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
683 header.flags = msg.flags(); | 683 header.flags = msg.flags(); |
684 header.num_fds = static_cast<int>(rewritten_msg->desc_count()); | 684 header.num_fds = static_cast<int>(rewritten_msg->desc_count()); |
685 | 685 |
686 rewritten_msg->SetData(header, msg.payload(), msg.payload_size()); | 686 rewritten_msg->SetData(header, msg.payload(), msg.payload_size()); |
687 locked_data_.to_be_received_.push(rewritten_msg); | 687 locked_data_.to_be_received_.push(rewritten_msg); |
688 } | 688 } |
689 | 689 |
690 int TranslatePepperFileReadWriteOpenFlagsForTesting(int32_t pp_open_flags) { | 690 int TranslatePepperFileReadWriteOpenFlagsForTesting(int32_t pp_open_flags) { |
691 return TranslatePepperFileReadWriteOpenFlags(pp_open_flags); | 691 return TranslatePepperFileReadWriteOpenFlags(pp_open_flags); |
692 } | 692 } |
OLD | NEW |