123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- #ifndef mozilla_RegistryMessageUtils_h
- #define mozilla_RegistryMessageUtils_h
- #include "ipc/IPCMessageUtils.h"
- #include "nsString.h"
- struct SerializedURI
- {
- nsCString spec;
- nsCString charset;
- bool operator ==(const SerializedURI& rhs) const
- {
- return spec.Equals(rhs.spec) &&
- charset.Equals(rhs.charset);
- }
- };
- struct ChromePackage
- {
- nsCString package;
- SerializedURI contentBaseURI;
- SerializedURI localeBaseURI;
- SerializedURI skinBaseURI;
- uint32_t flags;
- bool operator ==(const ChromePackage& rhs) const
- {
- return package.Equals(rhs.package) &&
- contentBaseURI == rhs.contentBaseURI &&
- localeBaseURI == rhs.localeBaseURI &&
- skinBaseURI == rhs.skinBaseURI &&
- flags == rhs.flags;
- }
- };
- struct SubstitutionMapping
- {
- nsCString scheme;
- nsCString path;
- SerializedURI resolvedURI;
- bool operator ==(const SubstitutionMapping& rhs) const
- {
- return scheme.Equals(rhs.scheme) &&
- path.Equals(rhs.path) &&
- resolvedURI == rhs.resolvedURI;
- }
- };
- struct OverrideMapping
- {
- SerializedURI originalURI;
- SerializedURI overrideURI;
- bool operator==(const OverrideMapping& rhs) const
- {
- return originalURI == rhs.originalURI &&
- overrideURI == rhs.overrideURI;
- }
- };
- namespace IPC {
- template<>
- struct ParamTraits<SerializedURI>
- {
- typedef SerializedURI paramType;
- static void Write(Message* aMsg, const paramType& aParam)
- {
- WriteParam(aMsg, aParam.spec);
- WriteParam(aMsg, aParam.charset);
- }
- static bool Read(const Message* aMsg, PickleIterator* aIter, paramType* aResult)
- {
- nsCString spec, charset;
- if (ReadParam(aMsg, aIter, &spec) &&
- ReadParam(aMsg, aIter, &charset)) {
- aResult->spec = spec;
- aResult->charset = charset;
- return true;
- }
- return false;
- }
- };
-
- template <>
- struct ParamTraits<ChromePackage>
- {
- typedef ChromePackage paramType;
-
- static void Write(Message* aMsg, const paramType& aParam)
- {
- WriteParam(aMsg, aParam.package);
- WriteParam(aMsg, aParam.contentBaseURI);
- WriteParam(aMsg, aParam.localeBaseURI);
- WriteParam(aMsg, aParam.skinBaseURI);
- WriteParam(aMsg, aParam.flags);
- }
-
- static bool Read(const Message* aMsg, PickleIterator* aIter, paramType* aResult)
- {
- nsCString package;
- SerializedURI contentBaseURI, localeBaseURI, skinBaseURI;
- uint32_t flags;
-
- if (ReadParam(aMsg, aIter, &package) &&
- ReadParam(aMsg, aIter, &contentBaseURI) &&
- ReadParam(aMsg, aIter, &localeBaseURI) &&
- ReadParam(aMsg, aIter, &skinBaseURI) &&
- ReadParam(aMsg, aIter, &flags)) {
- aResult->package = package;
- aResult->contentBaseURI = contentBaseURI;
- aResult->localeBaseURI = localeBaseURI;
- aResult->skinBaseURI = skinBaseURI;
- aResult->flags = flags;
- return true;
- }
- return false;
- }
- static void Log(const paramType& aParam, std::wstring* aLog)
- {
- aLog->append(StringPrintf(L"[%s, %s, %s, %s, %u]", aParam.package.get(),
- aParam.contentBaseURI.spec.get(),
- aParam.localeBaseURI.spec.get(),
- aParam.skinBaseURI.spec.get(), aParam.flags));
- }
- };
- template <>
- struct ParamTraits<SubstitutionMapping>
- {
- typedef SubstitutionMapping paramType;
-
- static void Write(Message* aMsg, const paramType& aParam)
- {
- WriteParam(aMsg, aParam.scheme);
- WriteParam(aMsg, aParam.path);
- WriteParam(aMsg, aParam.resolvedURI);
- }
-
- static bool Read(const Message* aMsg, PickleIterator* aIter, paramType* aResult)
- {
- nsCString scheme, path;
- SerializedURI resolvedURI;
-
- if (ReadParam(aMsg, aIter, &scheme) &&
- ReadParam(aMsg, aIter, &path) &&
- ReadParam(aMsg, aIter, &resolvedURI)) {
- aResult->scheme = scheme;
- aResult->path = path;
- aResult->resolvedURI = resolvedURI;
- return true;
- }
- return false;
- }
- static void Log(const paramType& aParam, std::wstring* aLog)
- {
- aLog->append(StringPrintf(L"[%s://%s, %s, %u]",
- aParam.scheme.get(),
- aParam.path.get(),
- aParam.resolvedURI.spec.get()));
- }
- };
- template <>
- struct ParamTraits<OverrideMapping>
- {
- typedef OverrideMapping paramType;
-
- static void Write(Message* aMsg, const paramType& aParam)
- {
- WriteParam(aMsg, aParam.originalURI);
- WriteParam(aMsg, aParam.overrideURI);
- }
-
- static bool Read(const Message* aMsg, PickleIterator* aIter, paramType* aResult)
- {
- SerializedURI originalURI;
- SerializedURI overrideURI;
-
- if (ReadParam(aMsg, aIter, &originalURI) &&
- ReadParam(aMsg, aIter, &overrideURI)) {
- aResult->originalURI = originalURI;
- aResult->overrideURI = overrideURI;
- return true;
- }
- return false;
- }
- static void Log(const paramType& aParam, std::wstring* aLog)
- {
- aLog->append(StringPrintf(L"[%s, %s, %u]", aParam.originalURI.spec.get(),
- aParam.overrideURI.spec.get()));
- }
- };
- } // namespace IPC
- #endif // RegistryMessageUtils_h
|