Bumping gaia.json for 2 gaia revision(s) a=gaia-bump
[gecko.git] / chrome / RegistryMessageUtils.h
blob72b3243dbb951e224a5491ce7d31b1448edad18a
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"
10 #include "nsString.h"
12 struct SerializedURI
14 nsCString spec;
15 nsCString charset;
17 bool operator ==(const SerializedURI& rhs) const
19 return spec.Equals(rhs.spec) &&
20 charset.Equals(rhs.charset);
24 struct ChromePackage
26 nsCString package;
27 SerializedURI contentBaseURI;
28 SerializedURI localeBaseURI;
29 SerializedURI skinBaseURI;
30 uint32_t flags;
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 &&
38 flags == rhs.flags;
42 struct ResourceMapping
44 nsCString resource;
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;
66 namespace IPC {
68 template<>
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)) {
84 aResult->spec = spec;
85 aResult->charset = charset;
86 return true;
88 return false;
92 template <>
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)
108 nsCString package;
109 SerializedURI contentBaseURI, localeBaseURI, skinBaseURI;
110 uint32_t flags;
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;
122 return true;
124 return false;
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));
136 template <>
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)
149 nsCString resource;
150 SerializedURI resolvedURI;
152 if (ReadParam(aMsg, aIter, &resource) &&
153 ReadParam(aMsg, aIter, &resolvedURI)) {
154 aResult->resource = resource;
155 aResult->resolvedURI = resolvedURI;
156 return true;
158 return false;
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()));
168 template <>
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;
188 return true;
190 return false;
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