| 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 "ipc/ipc_message_utils.h" | 5 #include "ipc/ipc_message_utils.h" |
| 6 | 6 |
| 7 #include "base/files/file_path.h" | 7 #include "base/files/file_path.h" |
| 8 #include "base/json/json_writer.h" | 8 #include "base/json/json_writer.h" |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/strings/nullable_string16.h" | 10 #include "base/strings/nullable_string16.h" |
| (...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 307 | 307 |
| 308 void ParamTraits<int>::Log(const param_type& p, std::string* l) { | 308 void ParamTraits<int>::Log(const param_type& p, std::string* l) { |
| 309 l->append(base::IntToString(p)); | 309 l->append(base::IntToString(p)); |
| 310 } | 310 } |
| 311 | 311 |
| 312 void ParamTraits<unsigned int>::Log(const param_type& p, std::string* l) { | 312 void ParamTraits<unsigned int>::Log(const param_type& p, std::string* l) { |
| 313 l->append(base::UintToString(p)); | 313 l->append(base::UintToString(p)); |
| 314 } | 314 } |
| 315 | 315 |
| 316 void ParamTraits<long>::Log(const param_type& p, std::string* l) { | 316 void ParamTraits<long>::Log(const param_type& p, std::string* l) { |
| 317 l->append(base::Int64ToString(static_cast<int64>(p))); | 317 l->append(base::Int64ToString(static_cast<int64_t>(p))); |
| 318 } | 318 } |
| 319 | 319 |
| 320 void ParamTraits<unsigned long>::Log(const param_type& p, std::string* l) { | 320 void ParamTraits<unsigned long>::Log(const param_type& p, std::string* l) { |
| 321 l->append(base::Uint64ToString(static_cast<uint64>(p))); | 321 l->append(base::Uint64ToString(static_cast<uint64_t>(p))); |
| 322 } | 322 } |
| 323 | 323 |
| 324 void ParamTraits<long long>::Log(const param_type& p, std::string* l) { | 324 void ParamTraits<long long>::Log(const param_type& p, std::string* l) { |
| 325 l->append(base::Int64ToString(static_cast<int64>(p))); | 325 l->append(base::Int64ToString(static_cast<int64_t>(p))); |
| 326 } | 326 } |
| 327 | 327 |
| 328 void ParamTraits<unsigned long long>::Log(const param_type& p, std::string* l) { | 328 void ParamTraits<unsigned long long>::Log(const param_type& p, std::string* l) { |
| 329 l->append(base::Uint64ToString(p)); | 329 l->append(base::Uint64ToString(p)); |
| 330 } | 330 } |
| 331 | 331 |
| 332 void ParamTraits<float>::Log(const param_type& p, std::string* l) { | 332 void ParamTraits<float>::Log(const param_type& p, std::string* l) { |
| 333 l->append(base::StringPrintf("%e", p)); | 333 l->append(base::StringPrintf("%e", p)); |
| 334 } | 334 } |
| 335 | 335 |
| (...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 690 l->append(","); | 690 l->append(","); |
| 691 LogParam(p.last_modified.ToDoubleT(), l); | 691 LogParam(p.last_modified.ToDoubleT(), l); |
| 692 l->append(","); | 692 l->append(","); |
| 693 LogParam(p.last_accessed.ToDoubleT(), l); | 693 LogParam(p.last_accessed.ToDoubleT(), l); |
| 694 l->append(","); | 694 l->append(","); |
| 695 LogParam(p.creation_time.ToDoubleT(), l); | 695 LogParam(p.creation_time.ToDoubleT(), l); |
| 696 l->append(")"); | 696 l->append(")"); |
| 697 } | 697 } |
| 698 | 698 |
| 699 void ParamTraits<base::Time>::Write(Message* m, const param_type& p) { | 699 void ParamTraits<base::Time>::Write(Message* m, const param_type& p) { |
| 700 ParamTraits<int64>::Write(m, p.ToInternalValue()); | 700 ParamTraits<int64_t>::Write(m, p.ToInternalValue()); |
| 701 } | 701 } |
| 702 | 702 |
| 703 bool ParamTraits<base::Time>::Read(const Message* m, | 703 bool ParamTraits<base::Time>::Read(const Message* m, |
| 704 base::PickleIterator* iter, | 704 base::PickleIterator* iter, |
| 705 param_type* r) { | 705 param_type* r) { |
| 706 int64 value; | 706 int64_t value; |
| 707 if (!ParamTraits<int64>::Read(m, iter, &value)) | 707 if (!ParamTraits<int64_t>::Read(m, iter, &value)) |
| 708 return false; | 708 return false; |
| 709 *r = base::Time::FromInternalValue(value); | 709 *r = base::Time::FromInternalValue(value); |
| 710 return true; | 710 return true; |
| 711 } | 711 } |
| 712 | 712 |
| 713 void ParamTraits<base::Time>::Log(const param_type& p, std::string* l) { | 713 void ParamTraits<base::Time>::Log(const param_type& p, std::string* l) { |
| 714 ParamTraits<int64>::Log(p.ToInternalValue(), l); | 714 ParamTraits<int64_t>::Log(p.ToInternalValue(), l); |
| 715 } | 715 } |
| 716 | 716 |
| 717 void ParamTraits<base::TimeDelta>::Write(Message* m, const param_type& p) { | 717 void ParamTraits<base::TimeDelta>::Write(Message* m, const param_type& p) { |
| 718 ParamTraits<int64>::Write(m, p.ToInternalValue()); | 718 ParamTraits<int64_t>::Write(m, p.ToInternalValue()); |
| 719 } | 719 } |
| 720 | 720 |
| 721 bool ParamTraits<base::TimeDelta>::Read(const Message* m, | 721 bool ParamTraits<base::TimeDelta>::Read(const Message* m, |
| 722 base::PickleIterator* iter, | 722 base::PickleIterator* iter, |
| 723 param_type* r) { | 723 param_type* r) { |
| 724 int64 value; | 724 int64_t value; |
| 725 bool ret = ParamTraits<int64>::Read(m, iter, &value); | 725 bool ret = ParamTraits<int64_t>::Read(m, iter, &value); |
| 726 if (ret) | 726 if (ret) |
| 727 *r = base::TimeDelta::FromInternalValue(value); | 727 *r = base::TimeDelta::FromInternalValue(value); |
| 728 | 728 |
| 729 return ret; | 729 return ret; |
| 730 } | 730 } |
| 731 | 731 |
| 732 void ParamTraits<base::TimeDelta>::Log(const param_type& p, std::string* l) { | 732 void ParamTraits<base::TimeDelta>::Log(const param_type& p, std::string* l) { |
| 733 ParamTraits<int64>::Log(p.ToInternalValue(), l); | 733 ParamTraits<int64_t>::Log(p.ToInternalValue(), l); |
| 734 } | 734 } |
| 735 | 735 |
| 736 void ParamTraits<base::TimeTicks>::Write(Message* m, const param_type& p) { | 736 void ParamTraits<base::TimeTicks>::Write(Message* m, const param_type& p) { |
| 737 ParamTraits<int64>::Write(m, p.ToInternalValue()); | 737 ParamTraits<int64_t>::Write(m, p.ToInternalValue()); |
| 738 } | 738 } |
| 739 | 739 |
| 740 bool ParamTraits<base::TimeTicks>::Read(const Message* m, | 740 bool ParamTraits<base::TimeTicks>::Read(const Message* m, |
| 741 base::PickleIterator* iter, | 741 base::PickleIterator* iter, |
| 742 param_type* r) { | 742 param_type* r) { |
| 743 int64 value; | 743 int64_t value; |
| 744 bool ret = ParamTraits<int64>::Read(m, iter, &value); | 744 bool ret = ParamTraits<int64_t>::Read(m, iter, &value); |
| 745 if (ret) | 745 if (ret) |
| 746 *r = base::TimeTicks::FromInternalValue(value); | 746 *r = base::TimeTicks::FromInternalValue(value); |
| 747 | 747 |
| 748 return ret; | 748 return ret; |
| 749 } | 749 } |
| 750 | 750 |
| 751 void ParamTraits<base::TimeTicks>::Log(const param_type& p, std::string* l) { | 751 void ParamTraits<base::TimeTicks>::Log(const param_type& p, std::string* l) { |
| 752 ParamTraits<int64>::Log(p.ToInternalValue(), l); | 752 ParamTraits<int64_t>::Log(p.ToInternalValue(), l); |
| 753 } | 753 } |
| 754 | 754 |
| 755 void ParamTraits<base::TraceTicks>::Write(Message* m, const param_type& p) { | 755 void ParamTraits<base::TraceTicks>::Write(Message* m, const param_type& p) { |
| 756 ParamTraits<int64>::Write(m, p.ToInternalValue()); | 756 ParamTraits<int64_t>::Write(m, p.ToInternalValue()); |
| 757 } | 757 } |
| 758 | 758 |
| 759 bool ParamTraits<base::TraceTicks>::Read(const Message* m, | 759 bool ParamTraits<base::TraceTicks>::Read(const Message* m, |
| 760 base::PickleIterator* iter, | 760 base::PickleIterator* iter, |
| 761 param_type* r) { | 761 param_type* r) { |
| 762 int64 value; | 762 int64_t value; |
| 763 bool ret = ParamTraits<int64>::Read(m, iter, &value); | 763 bool ret = ParamTraits<int64_t>::Read(m, iter, &value); |
| 764 if (ret) | 764 if (ret) |
| 765 *r = base::TraceTicks::FromInternalValue(value); | 765 *r = base::TraceTicks::FromInternalValue(value); |
| 766 | 766 |
| 767 return ret; | 767 return ret; |
| 768 } | 768 } |
| 769 | 769 |
| 770 void ParamTraits<base::TraceTicks>::Log(const param_type& p, std::string* l) { | 770 void ParamTraits<base::TraceTicks>::Log(const param_type& p, std::string* l) { |
| 771 ParamTraits<int64>::Log(p.ToInternalValue(), l); | 771 ParamTraits<int64_t>::Log(p.ToInternalValue(), l); |
| 772 } | 772 } |
| 773 | 773 |
| 774 void ParamTraits<IPC::ChannelHandle>::Write(Message* m, const param_type& p) { | 774 void ParamTraits<IPC::ChannelHandle>::Write(Message* m, const param_type& p) { |
| 775 #if defined(OS_WIN) | 775 #if defined(OS_WIN) |
| 776 // On Windows marshalling pipe handle is not supported. | 776 // On Windows marshalling pipe handle is not supported. |
| 777 DCHECK(p.pipe.handle == NULL); | 777 DCHECK(p.pipe.handle == NULL); |
| 778 #endif // defined (OS_WIN) | 778 #endif // defined (OS_WIN) |
| 779 WriteParam(m, p.name); | 779 WriteParam(m, p.name); |
| 780 #if defined(OS_POSIX) | 780 #if defined(OS_POSIX) |
| 781 WriteParam(m, p.socket); | 781 WriteParam(m, p.socket); |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 843 // Don't just write out the message. This is used to send messages between | 843 // Don't just write out the message. This is used to send messages between |
| 844 // NaCl (Posix environment) and the browser (could be on Windows). The message | 844 // NaCl (Posix environment) and the browser (could be on Windows). The message |
| 845 // header formats differ between these systems (so does handle sharing, but | 845 // header formats differ between these systems (so does handle sharing, but |
| 846 // we already asserted we don't have any handles). So just write out the | 846 // we already asserted we don't have any handles). So just write out the |
| 847 // parts of the header we use. | 847 // parts of the header we use. |
| 848 // | 848 // |
| 849 // Be careful also to use only explicitly-sized types. The NaCl environment | 849 // Be careful also to use only explicitly-sized types. The NaCl environment |
| 850 // could be 64-bit and the host browser could be 32-bits. The nested message | 850 // could be 64-bit and the host browser could be 32-bits. The nested message |
| 851 // may or may not be safe to send between 32-bit and 64-bit systems, but we | 851 // may or may not be safe to send between 32-bit and 64-bit systems, but we |
| 852 // leave that up to the code sending the message to ensure. | 852 // leave that up to the code sending the message to ensure. |
| 853 m->WriteUInt32(static_cast<uint32>(p.routing_id())); | 853 m->WriteUInt32(static_cast<uint32_t>(p.routing_id())); |
| 854 m->WriteUInt32(p.type()); | 854 m->WriteUInt32(p.type()); |
| 855 m->WriteUInt32(p.flags()); | 855 m->WriteUInt32(p.flags()); |
| 856 m->WriteData(p.payload(), static_cast<uint32>(p.payload_size())); | 856 m->WriteData(p.payload(), static_cast<uint32_t>(p.payload_size())); |
| 857 } | 857 } |
| 858 | 858 |
| 859 bool ParamTraits<Message>::Read(const Message* m, | 859 bool ParamTraits<Message>::Read(const Message* m, |
| 860 base::PickleIterator* iter, | 860 base::PickleIterator* iter, |
| 861 Message* r) { | 861 Message* r) { |
| 862 uint32 routing_id, type, flags; | 862 uint32_t routing_id, type, flags; |
| 863 if (!iter->ReadUInt32(&routing_id) || | 863 if (!iter->ReadUInt32(&routing_id) || |
| 864 !iter->ReadUInt32(&type) || | 864 !iter->ReadUInt32(&type) || |
| 865 !iter->ReadUInt32(&flags)) | 865 !iter->ReadUInt32(&flags)) |
| 866 return false; | 866 return false; |
| 867 | 867 |
| 868 int payload_size; | 868 int payload_size; |
| 869 const char* payload; | 869 const char* payload; |
| 870 if (!iter->ReadData(&payload, &payload_size)) | 870 if (!iter->ReadData(&payload, &payload_size)) |
| 871 return false; | 871 return false; |
| 872 | 872 |
| 873 r->SetHeaderValues(static_cast<int32>(routing_id), type, flags); | 873 r->SetHeaderValues(static_cast<int32_t>(routing_id), type, flags); |
| 874 return r->WriteBytes(payload, payload_size); | 874 return r->WriteBytes(payload, payload_size); |
| 875 } | 875 } |
| 876 | 876 |
| 877 void ParamTraits<Message>::Log(const Message& p, std::string* l) { | 877 void ParamTraits<Message>::Log(const Message& p, std::string* l) { |
| 878 l->append("<IPC::Message>"); | 878 l->append("<IPC::Message>"); |
| 879 } | 879 } |
| 880 | 880 |
| 881 #if defined(OS_WIN) | 881 #if defined(OS_WIN) |
| 882 // Note that HWNDs/HANDLE/HCURSOR/HACCEL etc are always 32 bits, even on 64 | 882 // Note that HWNDs/HANDLE/HCURSOR/HACCEL etc are always 32 bits, even on 64 |
| 883 // bit systems. That's why we use the Windows macros to convert to 32 bits. | 883 // bit systems. That's why we use the Windows macros to convert to 32 bits. |
| 884 void ParamTraits<HANDLE>::Write(Message* m, const param_type& p) { | 884 void ParamTraits<HANDLE>::Write(Message* m, const param_type& p) { |
| 885 m->WriteInt(HandleToLong(p)); | 885 m->WriteInt(HandleToLong(p)); |
| 886 } | 886 } |
| 887 | 887 |
| 888 bool ParamTraits<HANDLE>::Read(const Message* m, | 888 bool ParamTraits<HANDLE>::Read(const Message* m, |
| 889 base::PickleIterator* iter, | 889 base::PickleIterator* iter, |
| 890 param_type* r) { | 890 param_type* r) { |
| 891 int32 temp; | 891 int32_t temp; |
| 892 if (!iter->ReadInt(&temp)) | 892 if (!iter->ReadInt(&temp)) |
| 893 return false; | 893 return false; |
| 894 *r = LongToHandle(temp); | 894 *r = LongToHandle(temp); |
| 895 return true; | 895 return true; |
| 896 } | 896 } |
| 897 | 897 |
| 898 void ParamTraits<HANDLE>::Log(const param_type& p, std::string* l) { | 898 void ParamTraits<HANDLE>::Log(const param_type& p, std::string* l) { |
| 899 l->append(base::StringPrintf("0x%X", p)); | 899 l->append(base::StringPrintf("0x%X", p)); |
| 900 } | 900 } |
| 901 | 901 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 944 return result; | 944 return result; |
| 945 } | 945 } |
| 946 | 946 |
| 947 void ParamTraits<MSG>::Log(const param_type& p, std::string* l) { | 947 void ParamTraits<MSG>::Log(const param_type& p, std::string* l) { |
| 948 l->append("<MSG>"); | 948 l->append("<MSG>"); |
| 949 } | 949 } |
| 950 | 950 |
| 951 #endif // OS_WIN | 951 #endif // OS_WIN |
| 952 | 952 |
| 953 } // namespace IPC | 953 } // namespace IPC |
| OLD | NEW |