Bumping gaia.json for 1 gaia revision(s) a=gaia-bump
[gecko.git] / chrome / RegistryMessageUtils.h
blob31b015c526b192444df37722f0f669264f13b5e1
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;
48 struct OverrideMapping
50 SerializedURI originalURI;
51 SerializedURI overrideURI;
53 bool operator==(const OverrideMapping& rhs) const
55 return originalURI == rhs.originalURI &&
56 overrideURI == rhs.overrideURI;
60 namespace IPC {
62 template<>
63 struct ParamTraits<SerializedURI>
65 typedef SerializedURI paramType;
67 static void Write(Message* aMsg, const paramType& aParam)
69 WriteParam(aMsg, aParam.spec);
70 WriteParam(aMsg, aParam.charset);
73 static bool Read(const Message* aMsg, void** aIter, paramType* aResult)
75 nsCString spec, charset;
76 if (ReadParam(aMsg, aIter, &spec) &&
77 ReadParam(aMsg, aIter, &charset)) {
78 aResult->spec = spec;
79 aResult->charset = charset;
80 return true;
82 return false;
86 template <>
87 struct ParamTraits<ChromePackage>
89 typedef ChromePackage paramType;
91 static void Write(Message* aMsg, const paramType& aParam)
93 WriteParam(aMsg, aParam.package);
94 WriteParam(aMsg, aParam.contentBaseURI);
95 WriteParam(aMsg, aParam.localeBaseURI);
96 WriteParam(aMsg, aParam.skinBaseURI);
97 WriteParam(aMsg, aParam.flags);
100 static bool Read(const Message* aMsg, void** aIter, paramType* aResult)
102 nsCString package;
103 SerializedURI contentBaseURI, localeBaseURI, skinBaseURI;
104 uint32_t flags;
106 if (ReadParam(aMsg, aIter, &package) &&
107 ReadParam(aMsg, aIter, &contentBaseURI) &&
108 ReadParam(aMsg, aIter, &localeBaseURI) &&
109 ReadParam(aMsg, aIter, &skinBaseURI) &&
110 ReadParam(aMsg, aIter, &flags)) {
111 aResult->package = package;
112 aResult->contentBaseURI = contentBaseURI;
113 aResult->localeBaseURI = localeBaseURI;
114 aResult->skinBaseURI = skinBaseURI;
115 aResult->flags = flags;
116 return true;
118 return false;
121 static void Log(const paramType& aParam, std::wstring* aLog)
123 aLog->append(StringPrintf(L"[%s, %s, %s, %s, %u]", aParam.package.get(),
124 aParam.contentBaseURI.spec.get(),
125 aParam.localeBaseURI.spec.get(),
126 aParam.skinBaseURI.spec.get(), aParam.flags));
130 template <>
131 struct ParamTraits<ResourceMapping>
133 typedef ResourceMapping paramType;
135 static void Write(Message* aMsg, const paramType& aParam)
137 WriteParam(aMsg, aParam.resource);
138 WriteParam(aMsg, aParam.resolvedURI);
141 static bool Read(const Message* aMsg, void** aIter, paramType* aResult)
143 nsCString resource;
144 SerializedURI resolvedURI;
146 if (ReadParam(aMsg, aIter, &resource) &&
147 ReadParam(aMsg, aIter, &resolvedURI)) {
148 aResult->resource = resource;
149 aResult->resolvedURI = resolvedURI;
150 return true;
152 return false;
155 static void Log(const paramType& aParam, std::wstring* aLog)
157 aLog->append(StringPrintf(L"[%s, %s, %u]", aParam.resource.get(),
158 aParam.resolvedURI.spec.get()));
162 template <>
163 struct ParamTraits<OverrideMapping>
165 typedef OverrideMapping paramType;
167 static void Write(Message* aMsg, const paramType& aParam)
169 WriteParam(aMsg, aParam.originalURI);
170 WriteParam(aMsg, aParam.overrideURI);
173 static bool Read(const Message* aMsg, void** aIter, paramType* aResult)
175 SerializedURI originalURI;
176 SerializedURI overrideURI;
178 if (ReadParam(aMsg, aIter, &originalURI) &&
179 ReadParam(aMsg, aIter, &overrideURI)) {
180 aResult->originalURI = originalURI;
181 aResult->overrideURI = overrideURI;
182 return true;
184 return false;
187 static void Log(const paramType& aParam, std::wstring* aLog)
189 aLog->append(StringPrintf(L"[%s, %s, %u]", aParam.originalURI.spec.get(),
190 aParam.overrideURI.spec.get()));
196 #endif // RegistryMessageUtils_h