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
3// found in the LICENSE file.
4
5#include "mojo/public/cpp/bindings/tests/pickled_types_blink.h"
6
7#include "base/logging.h"
8#include "base/pickle.h"
9
10namespace mojo {
11namespace test {
12
13PickledStructBlink::PickledStructBlink() {}
14
15PickledStructBlink::PickledStructBlink(int foo, int bar)
16    : foo_(foo), bar_(bar) {
17  DCHECK_GE(foo_, 0);
18  DCHECK_GE(bar_, 0);
19}
20
21PickledStructBlink::~PickledStructBlink() {}
22
23}  // namespace test
24}  // namespace mojo
25
26namespace IPC {
27
28void ParamTraits<mojo::test::PickledStructBlink>::GetSize(
29    base::PickleSizer* sizer,
30    const param_type& p) {
31  sizer->AddInt();
32  sizer->AddInt();
33}
34
35void ParamTraits<mojo::test::PickledStructBlink>::Write(base::Pickle* m,
36                                                        const param_type& p) {
37  m->WriteInt(p.foo());
38  m->WriteInt(p.bar());
39}
40
41bool ParamTraits<mojo::test::PickledStructBlink>::Read(
42    const base::Pickle* m,
43    base::PickleIterator* iter,
44    param_type* p) {
45  int foo, bar;
46  if (!iter->ReadInt(&foo) || !iter->ReadInt(&bar) || foo < 0 || bar < 0)
47    return false;
48
49  p->set_foo(foo);
50  p->set_bar(bar);
51  return true;
52}
53
54#include "ipc/param_traits_size_macros.h"
55IPC_ENUM_TRAITS_MAX_VALUE(mojo::test::PickledEnumBlink,
56                          mojo::test::PickledEnumBlink::VALUE_1)
57#include "ipc/param_traits_write_macros.h"
58IPC_ENUM_TRAITS_MAX_VALUE(mojo::test::PickledEnumBlink,
59                          mojo::test::PickledEnumBlink::VALUE_1)
60#include "ipc/param_traits_read_macros.h"
61IPC_ENUM_TRAITS_MAX_VALUE(mojo::test::PickledEnumBlink,
62                          mojo::test::PickledEnumBlink::VALUE_1)
63#include "ipc/param_traits_log_macros.h"
64IPC_ENUM_TRAITS_MAX_VALUE(mojo::test::PickledEnumBlink,
65                          mojo::test::PickledEnumBlink::VALUE_1)
66
67}  // namespace IPC
68