// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // This file is used to define IPC::ParamTraits<> specializations for a number // of types so that they can be serialized over IPC. IPC::ParamTraits<> // specializations for basic types (like int and std::string) and types in the // 'base' project can be found in ipc/ipc_message_utils.h. This file contains // specializations for types that are used by the content code, and which need // manual serialization code. This is usually because they're not structs with // public members, or because the same type is being used in multiple // *_messages.h headers. #ifndef CONTENT_COMMON_CONTENT_PARAM_TRAITS_H_ #define CONTENT_COMMON_CONTENT_PARAM_TRAITS_H_ #include "base/memory/ref_counted.h" #include "cc/ipc/cc_param_traits_macros.h" #include "content/common/content_param_traits_macros.h" #include "ipc/ipc_mojo_param_traits.h" #include "net/base/hash_value.h" #include "ui/accessibility/ax_mode.h" namespace blink { class PolicyValue; class MessagePortChannel; class MessagePortDescriptor; } namespace viz { class FrameSinkId; class LocalSurfaceId; class SurfaceId; class SurfaceInfo; } // namespace viz namespace IPC { template <> struct CONTENT_EXPORT ParamTraits { typedef blink::MessagePortChannel param_type; static void Write(base::Pickle* m, const param_type& p); static bool Read(const base::Pickle* m, base::PickleIterator* iter, param_type* r); static void Log(const param_type& p, std::string* l); }; template <> struct CONTENT_EXPORT ParamTraits { typedef blink::MessagePortDescriptor param_type; static void Write(base::Pickle* m, const param_type& p); static bool Read(const base::Pickle* m, base::PickleIterator* iter, param_type* r); static void Log(const param_type& p, std::string* l); }; template <> struct CONTENT_EXPORT ParamTraits { typedef blink::PolicyValue param_type; static void Write(base::Pickle* m, const param_type& p); static bool Read(const base::Pickle* m, base::PickleIterator* iter, param_type* r); static void Log(const param_type& p, std::string* l); }; template <> struct CONTENT_EXPORT ParamTraits { typedef ui::AXMode param_type; static void Write(base::Pickle* m, const param_type& p); static bool Read(const base::Pickle* m, base::PickleIterator* iter, param_type* r); static void Log(const param_type& p, std::string* l); }; template <> struct CONTENT_EXPORT ParamTraits { typedef viz::FrameSinkId param_type; static void Write(base::Pickle* m, const param_type& p); static bool Read(const base::Pickle* m, base::PickleIterator* iter, param_type* r); static void Log(const param_type& p, std::string* l); }; template <> struct CONTENT_EXPORT ParamTraits { typedef viz::LocalSurfaceId param_type; static void Write(base::Pickle* m, const param_type& p); static bool Read(const base::Pickle* m, base::PickleIterator* iter, param_type* r); static void Log(const param_type& p, std::string* l); }; template <> struct CONTENT_EXPORT ParamTraits { typedef viz::SurfaceId param_type; static void Write(base::Pickle* m, const param_type& p); static bool Read(const base::Pickle* m, base::PickleIterator* iter, param_type* r); static void Log(const param_type& p, std::string* l); }; template <> struct CONTENT_EXPORT ParamTraits { typedef viz::SurfaceInfo param_type; static void Write(base::Pickle* m, const param_type& p); static bool Read(const base::Pickle* m, base::PickleIterator* iter, param_type* r); static void Log(const param_type& p, std::string* l); }; template <> struct CONTENT_EXPORT ParamTraits { typedef net::SHA256HashValue param_type; static void Write(base::Pickle* m, const param_type& p); static bool Read(const base::Pickle* m, base::PickleIterator* iter, param_type* r); static void Log(const param_type& p, std::string* l); }; } // namespace IPC #endif // CONTENT_COMMON_CONTENT_PARAM_TRAITS_H_