1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/netwerk/protocol/about/nsAboutProtocolUtils.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,71 @@ 1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.7 + 1.8 +#ifndef nsAboutProtocolUtils_h 1.9 +#define nsAboutProtocolUtils_h 1.10 + 1.11 +#include "nsIURI.h" 1.12 +#include "nsString.h" 1.13 +#include "nsReadableUtils.h" 1.14 +#include "nsIAboutModule.h" 1.15 +#include "nsServiceManagerUtils.h" 1.16 +#include "prtime.h" 1.17 + 1.18 +inline nsresult 1.19 +NS_GetAboutModuleName(nsIURI *aAboutURI, nsCString& aModule) 1.20 +{ 1.21 +#ifdef DEBUG 1.22 + { 1.23 + bool isAbout; 1.24 + NS_ASSERTION(NS_SUCCEEDED(aAboutURI->SchemeIs("about", &isAbout)) && 1.25 + isAbout, 1.26 + "should be used only on about: URIs"); 1.27 + } 1.28 +#endif 1.29 + 1.30 + nsresult rv = aAboutURI->GetPath(aModule); 1.31 + NS_ENSURE_SUCCESS(rv, rv); 1.32 + 1.33 + int32_t f = aModule.FindCharInSet(NS_LITERAL_CSTRING("#?")); 1.34 + if (f != kNotFound) { 1.35 + aModule.Truncate(f); 1.36 + } 1.37 + 1.38 + // convert to lowercase, as all about: modules are lowercase 1.39 + ToLowerCase(aModule); 1.40 + return NS_OK; 1.41 +} 1.42 + 1.43 +inline nsresult 1.44 +NS_GetAboutModule(nsIURI *aAboutURI, nsIAboutModule** aModule) 1.45 +{ 1.46 + NS_PRECONDITION(aAboutURI, "Must have URI"); 1.47 + 1.48 + nsAutoCString contractID; 1.49 + nsresult rv = NS_GetAboutModuleName(aAboutURI, contractID); 1.50 + if (NS_FAILED(rv)) return rv; 1.51 + 1.52 + // look up a handler to deal with "what" 1.53 + contractID.Insert(NS_LITERAL_CSTRING(NS_ABOUT_MODULE_CONTRACTID_PREFIX), 0); 1.54 + 1.55 + return CallGetService(contractID.get(), aModule); 1.56 +} 1.57 + 1.58 +inline PRTime SecondsToPRTime(uint32_t t_sec) 1.59 +{ 1.60 + PRTime t_usec, usec_per_sec; 1.61 + t_usec = t_sec; 1.62 + usec_per_sec = PR_USEC_PER_SEC; 1.63 + return t_usec *= usec_per_sec; 1.64 +} 1.65 +inline void PrintTimeString(char *buf, uint32_t bufsize, uint32_t t_sec) 1.66 +{ 1.67 + PRExplodedTime et; 1.68 + PRTime t_usec = SecondsToPRTime(t_sec); 1.69 + PR_ExplodeTime(t_usec, PR_LocalTimeParameters, &et); 1.70 + PR_FormatTime(buf, bufsize, "%Y-%m-%d %H:%M:%S", &et); 1.71 +} 1.72 + 1.73 + 1.74 +#endif