nsAboutProtocolUtils.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. /* This Source Code Form is subject to the terms of the Mozilla Public
  2. * License, v. 2.0. If a copy of the MPL was not distributed with this
  3. * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
  4. #ifndef nsAboutProtocolUtils_h
  5. #define nsAboutProtocolUtils_h
  6. #include "nsIURI.h"
  7. #include "nsString.h"
  8. #include "nsReadableUtils.h"
  9. #include "nsIAboutModule.h"
  10. #include "nsServiceManagerUtils.h"
  11. #include "prtime.h"
  12. inline MOZ_MUST_USE nsresult
  13. NS_GetAboutModuleName(nsIURI *aAboutURI, nsCString& aModule)
  14. {
  15. #ifdef DEBUG
  16. {
  17. bool isAbout;
  18. NS_ASSERTION(NS_SUCCEEDED(aAboutURI->SchemeIs("about", &isAbout)) &&
  19. isAbout,
  20. "should be used only on about: URIs");
  21. }
  22. #endif
  23. nsresult rv = aAboutURI->GetPath(aModule);
  24. NS_ENSURE_SUCCESS(rv, rv);
  25. int32_t f = aModule.FindCharInSet(NS_LITERAL_CSTRING("#?"));
  26. if (f != kNotFound) {
  27. aModule.Truncate(f);
  28. }
  29. // convert to lowercase, as all about: modules are lowercase
  30. ToLowerCase(aModule);
  31. return NS_OK;
  32. }
  33. inline nsresult
  34. NS_GetAboutModule(nsIURI *aAboutURI, nsIAboutModule** aModule)
  35. {
  36. NS_PRECONDITION(aAboutURI, "Must have URI");
  37. nsAutoCString contractID;
  38. nsresult rv = NS_GetAboutModuleName(aAboutURI, contractID);
  39. if (NS_FAILED(rv)) return rv;
  40. // look up a handler to deal with "what"
  41. contractID.Insert(NS_LITERAL_CSTRING(NS_ABOUT_MODULE_CONTRACTID_PREFIX), 0);
  42. return CallGetService(contractID.get(), aModule);
  43. }
  44. inline PRTime SecondsToPRTime(uint32_t t_sec)
  45. {
  46. PRTime t_usec, usec_per_sec;
  47. t_usec = t_sec;
  48. usec_per_sec = PR_USEC_PER_SEC;
  49. return t_usec *= usec_per_sec;
  50. }
  51. inline void PrintTimeString(char *buf, uint32_t bufsize, uint32_t t_sec)
  52. {
  53. PRExplodedTime et;
  54. PRTime t_usec = SecondsToPRTime(t_sec);
  55. PR_ExplodeTime(t_usec, PR_LocalTimeParameters, &et);
  56. PR_FormatTime(buf, bufsize, "%Y-%m-%d %H:%M:%S", &et);
  57. }
  58. #endif