1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #ifndef mozilla_RegistryMessageUtils_h
7 #define mozilla_RegistryMessageUtils_h
9 #include "ipc/IPCMessageUtils.h"
17 bool operator ==(const SerializedURI
& rhs
) const
19 return spec
.Equals(rhs
.spec
) &&
20 charset
.Equals(rhs
.charset
);
27 SerializedURI contentBaseURI
;
28 SerializedURI localeBaseURI
;
29 SerializedURI skinBaseURI
;
32 bool operator ==(const ChromePackage
& rhs
) const
34 return package
.Equals(rhs
.package
) &&
35 contentBaseURI
== rhs
.contentBaseURI
&&
36 localeBaseURI
== rhs
.localeBaseURI
&&
37 skinBaseURI
== rhs
.skinBaseURI
&&
42 struct ResourceMapping
45 SerializedURI resolvedURI
;
47 bool operator ==(const ResourceMapping
& rhs
) const
49 return resource
.Equals(rhs
.resource
) &&
50 resolvedURI
== rhs
.resolvedURI
;
54 struct OverrideMapping
56 SerializedURI originalURI
;
57 SerializedURI overrideURI
;
59 bool operator==(const OverrideMapping
& rhs
) const
61 return originalURI
== rhs
.originalURI
&&
62 overrideURI
== rhs
.overrideURI
;
69 struct ParamTraits
<SerializedURI
>
71 typedef SerializedURI paramType
;
73 static void Write(Message
* aMsg
, const paramType
& aParam
)
75 WriteParam(aMsg
, aParam
.spec
);
76 WriteParam(aMsg
, aParam
.charset
);
79 static bool Read(const Message
* aMsg
, void** aIter
, paramType
* aResult
)
81 nsCString spec
, charset
;
82 if (ReadParam(aMsg
, aIter
, &spec
) &&
83 ReadParam(aMsg
, aIter
, &charset
)) {
85 aResult
->charset
= charset
;
93 struct ParamTraits
<ChromePackage
>
95 typedef ChromePackage paramType
;
97 static void Write(Message
* aMsg
, const paramType
& aParam
)
99 WriteParam(aMsg
, aParam
.package
);
100 WriteParam(aMsg
, aParam
.contentBaseURI
);
101 WriteParam(aMsg
, aParam
.localeBaseURI
);
102 WriteParam(aMsg
, aParam
.skinBaseURI
);
103 WriteParam(aMsg
, aParam
.flags
);
106 static bool Read(const Message
* aMsg
, void** aIter
, paramType
* aResult
)
109 SerializedURI contentBaseURI
, localeBaseURI
, skinBaseURI
;
112 if (ReadParam(aMsg
, aIter
, &package
) &&
113 ReadParam(aMsg
, aIter
, &contentBaseURI
) &&
114 ReadParam(aMsg
, aIter
, &localeBaseURI
) &&
115 ReadParam(aMsg
, aIter
, &skinBaseURI
) &&
116 ReadParam(aMsg
, aIter
, &flags
)) {
117 aResult
->package
= package
;
118 aResult
->contentBaseURI
= contentBaseURI
;
119 aResult
->localeBaseURI
= localeBaseURI
;
120 aResult
->skinBaseURI
= skinBaseURI
;
121 aResult
->flags
= flags
;
127 static void Log(const paramType
& aParam
, std::wstring
* aLog
)
129 aLog
->append(StringPrintf(L
"[%s, %s, %s, %s, %u]", aParam
.package
.get(),
130 aParam
.contentBaseURI
.spec
.get(),
131 aParam
.localeBaseURI
.spec
.get(),
132 aParam
.skinBaseURI
.spec
.get(), aParam
.flags
));
137 struct ParamTraits
<ResourceMapping
>
139 typedef ResourceMapping paramType
;
141 static void Write(Message
* aMsg
, const paramType
& aParam
)
143 WriteParam(aMsg
, aParam
.resource
);
144 WriteParam(aMsg
, aParam
.resolvedURI
);
147 static bool Read(const Message
* aMsg
, void** aIter
, paramType
* aResult
)
150 SerializedURI resolvedURI
;
152 if (ReadParam(aMsg
, aIter
, &resource
) &&
153 ReadParam(aMsg
, aIter
, &resolvedURI
)) {
154 aResult
->resource
= resource
;
155 aResult
->resolvedURI
= resolvedURI
;
161 static void Log(const paramType
& aParam
, std::wstring
* aLog
)
163 aLog
->append(StringPrintf(L
"[%s, %s, %u]", aParam
.resource
.get(),
164 aParam
.resolvedURI
.spec
.get()));
169 struct ParamTraits
<OverrideMapping
>
171 typedef OverrideMapping paramType
;
173 static void Write(Message
* aMsg
, const paramType
& aParam
)
175 WriteParam(aMsg
, aParam
.originalURI
);
176 WriteParam(aMsg
, aParam
.overrideURI
);
179 static bool Read(const Message
* aMsg
, void** aIter
, paramType
* aResult
)
181 SerializedURI originalURI
;
182 SerializedURI overrideURI
;
184 if (ReadParam(aMsg
, aIter
, &originalURI
) &&
185 ReadParam(aMsg
, aIter
, &overrideURI
)) {
186 aResult
->originalURI
= originalURI
;
187 aResult
->overrideURI
= overrideURI
;
193 static void Log(const paramType
& aParam
, std::wstring
* aLog
)
195 aLog
->append(StringPrintf(L
"[%s, %s, %u]", aParam
.originalURI
.spec
.get(),
196 aParam
.overrideURI
.spec
.get()));
202 #endif // RegistryMessageUtils_h