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 3 // found in the LICENSE file. 4 5 #include "content/common/content_param_traits.h" 6 7 #include "base/strings/string_number_conversions.h" 8 #include "content/common/input/web_input_event_traits.h" 9 #include "net/base/ip_endpoint.h" 10 #include "ui/gfx/range/range.h" 11 12 namespace IPC { 13 14 void ParamTraits<gfx::Range>::Write(Message* m, const gfx::Range& r) { 15 m->WriteUInt64(r.start()); 16 m->WriteUInt64(r.end()); 17 } 18 19 bool ParamTraits<gfx::Range>::Read(const Message* m, 20 PickleIterator* iter, 21 gfx::Range* r) { 22 uint64 start, end; 23 if (!m->ReadUInt64(iter, &start) || !m->ReadUInt64(iter, &end)) 24 return false; 25 r->set_start(start); 26 r->set_end(end); 27 return true; 28 } 29 30 void ParamTraits<gfx::Range>::Log(const gfx::Range& r, std::string* l) { 31 l->append(base::StringPrintf("(%" PRIuS ", %" PRIuS ")", r.start(), r.end())); 32 } 33 34 void ParamTraits<WebInputEventPointer>::Write(Message* m, const param_type& p) { 35 m->WriteData(reinterpret_cast<const char*>(p), p->size); 36 } 37 38 bool ParamTraits<WebInputEventPointer>::Read(const Message* m, 39 PickleIterator* iter, 40 param_type* r) { 41 const char* data; 42 int data_length; 43 if (!m->ReadData(iter, &data, &data_length)) { 44 NOTREACHED(); 45 return false; 46 } 47 if (data_length < static_cast<int>(sizeof(blink::WebInputEvent))) { 48 NOTREACHED(); 49 return false; 50 } 51 param_type event = reinterpret_cast<param_type>(data); 52 // Check that the data size matches that of the event. 53 if (data_length != static_cast<int>(event->size)) { 54 NOTREACHED(); 55 return false; 56 } 57 const size_t expected_size_for_type = 58 content::WebInputEventTraits::GetSize(event->type); 59 if (data_length != static_cast<int>(expected_size_for_type)) { 60 NOTREACHED(); 61 return false; 62 } 63 *r = event; 64 return true; 65 } 66 67 void ParamTraits<WebInputEventPointer>::Log(const param_type& p, 68 std::string* l) { 69 l->append("("); 70 LogParam(p->size, l); 71 l->append(", "); 72 LogParam(p->type, l); 73 l->append(", "); 74 LogParam(p->timeStampSeconds, l); 75 l->append(")"); 76 } 77 78 } // namespace IPC 79 80 // Generate param traits write methods. 81 #include "ipc/param_traits_write_macros.h" 82 namespace IPC { 83 #undef CONTENT_COMMON_CONTENT_PARAM_TRAITS_MACROS_H_ 84 #include "content/common/content_param_traits_macros.h" 85 } // namespace IPC 86 87 // Generate param traits read methods. 88 #include "ipc/param_traits_read_macros.h" 89 namespace IPC { 90 #undef CONTENT_COMMON_CONTENT_PARAM_TRAITS_MACROS_H_ 91 #include "content/common/content_param_traits_macros.h" 92 } // namespace IPC 93 94 // Generate param traits log methods. 95 #include "ipc/param_traits_log_macros.h" 96 namespace IPC { 97 #undef CONTENT_COMMON_CONTENT_PARAM_TRAITS_MACROS_H_ 98 #include "content/common/content_param_traits_macros.h" 99 } // namespace IPC 100