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 12namespace IPC { 13 14void ParamTraits<gfx::Range>::Write(Message* m, const gfx::Range& r) { 15 m->WriteUInt64(r.start()); 16 m->WriteUInt64(r.end()); 17} 18 19bool 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 30void ParamTraits<gfx::Range>::Log(const gfx::Range& r, std::string* l) { 31 l->append(base::StringPrintf("(%" PRIuS ", %" PRIuS ")", r.start(), r.end())); 32} 33 34void ParamTraits<WebInputEventPointer>::Write(Message* m, const param_type& p) { 35 m->WriteData(reinterpret_cast<const char*>(p), p->size); 36} 37 38bool 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 67void 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" 82namespace 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" 89namespace 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" 96namespace IPC { 97#undef CONTENT_COMMON_CONTENT_PARAM_TRAITS_MACROS_H_ 98#include "content/common/content_param_traits_macros.h" 99} // namespace IPC 100