LCOV - code coverage report
Current view: top level - dom/base - IntlUtils.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 0 71 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 12 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : #include "IntlUtils.h"
       2             : #include "mozIMozIntl.h"
       3             : #include "nsContentUtils.h"
       4             : 
       5             : namespace mozilla {
       6             : namespace dom {
       7             : 
       8           0 : NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(IntlUtils, mWindow)
       9           0 : NS_IMPL_CYCLE_COLLECTING_ADDREF(IntlUtils)
      10           0 : NS_IMPL_CYCLE_COLLECTING_RELEASE(IntlUtils)
      11           0 : NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(IntlUtils)
      12           0 :   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
      13           0 :   NS_INTERFACE_MAP_ENTRY(nsISupports)
      14           0 : NS_INTERFACE_MAP_END
      15             : 
      16           0 : IntlUtils::IntlUtils(nsPIDOMWindowInner* aWindow)
      17           0 :   : mWindow(aWindow)
      18             : {
      19           0 : }
      20             : 
      21           0 : IntlUtils::~IntlUtils()
      22             : {
      23           0 : }
      24             : 
      25             : JSObject*
      26           0 : IntlUtils::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
      27             : {
      28           0 :   return IntlUtilsBinding::Wrap(aCx, this, aGivenProto);
      29             : }
      30             : 
      31             : void
      32           0 : IntlUtils::GetDisplayNames(const Sequence<nsString>& aLocales,
      33             :                            const DisplayNameOptions& aOptions,
      34             :                            DisplayNameResult& aResult, ErrorResult& aError)
      35             : {
      36           0 :   MOZ_ASSERT(nsContentUtils::IsCallerChrome() ||
      37             :              nsContentUtils::IsCallerContentXBL());
      38             : 
      39           0 :   nsCOMPtr<mozIMozIntl> mozIntl = do_GetService("@mozilla.org/mozintl;1");
      40           0 :   if (!mozIntl) {
      41           0 :     aError.Throw(NS_ERROR_UNEXPECTED);
      42           0 :     return;
      43             :   }
      44             : 
      45           0 :   aError.MightThrowJSException();
      46             : 
      47             :   // Need to enter privileged junk scope since mozIntl implementation is in
      48             :   // chrome JS and passing XBL JS there shouldn't work.
      49           0 :   AutoJSAPI jsapi;
      50           0 :   if (!jsapi.Init(xpc::PrivilegedJunkScope())) {
      51           0 :     aError.Throw(NS_ERROR_FAILURE);
      52           0 :     return;
      53             :   }
      54           0 :   JSContext* cx = jsapi.cx();
      55             : 
      56             :   // Prepare parameter for getDisplayNames().
      57           0 :   JS::Rooted<JS::Value> locales(cx);
      58           0 :   if (!ToJSValue(cx, aLocales, &locales)) {
      59           0 :     aError.StealExceptionFromJSContext(cx);
      60           0 :     return;
      61             :   }
      62             : 
      63           0 :   JS::Rooted<JS::Value> options(cx);
      64           0 :   if (!ToJSValue(cx, aOptions, &options)) {
      65           0 :     aError.StealExceptionFromJSContext(cx);
      66           0 :     return;
      67             :   }
      68             : 
      69             :   // Now call the method.
      70           0 :   JS::Rooted<JS::Value> retVal(cx);
      71           0 :   nsresult rv = mozIntl->GetDisplayNames(locales, options, &retVal);
      72           0 :   if (NS_FAILED(rv)) {
      73           0 :     aError.Throw(rv);
      74           0 :     return;
      75             :   }
      76             : 
      77           0 :   if (!retVal.isObject()) {
      78           0 :     aError.Throw(NS_ERROR_FAILURE);
      79           0 :     return;
      80             :   }
      81             : 
      82             :   // Return the result as DisplayNameResult.
      83           0 :   JSAutoCompartment ac(cx, &retVal.toObject());
      84           0 :   if (!aResult.Init(cx, retVal)) {
      85           0 :     aError.Throw(NS_ERROR_FAILURE);
      86             :   }
      87             : }
      88             : 
      89             : void
      90           0 : IntlUtils::GetLocaleInfo(const Sequence<nsString>& aLocales,
      91             :                          LocaleInfo& aResult, ErrorResult& aError)
      92             : {
      93           0 :   MOZ_ASSERT(nsContentUtils::IsCallerChrome() ||
      94             :              nsContentUtils::IsCallerContentXBL());
      95             : 
      96           0 :   nsCOMPtr<mozIMozIntl> mozIntl = do_GetService("@mozilla.org/mozintl;1");
      97           0 :   if (!mozIntl) {
      98           0 :     aError.Throw(NS_ERROR_UNEXPECTED);
      99           0 :     return;
     100             :   }
     101             : 
     102           0 :   AutoJSAPI jsapi;
     103           0 :   if (!jsapi.Init(xpc::PrivilegedJunkScope())) {
     104           0 :     aError.Throw(NS_ERROR_FAILURE);
     105           0 :     return;
     106             :   }
     107           0 :   JSContext* cx = jsapi.cx();
     108             : 
     109             :   // Prepare parameter for getLocaleInfo().
     110           0 :   JS::Rooted<JS::Value> locales(cx);
     111           0 :   if (!ToJSValue(cx, aLocales, &locales)) {
     112           0 :     aError.StealExceptionFromJSContext(cx);
     113           0 :     return;
     114             :   }
     115             : 
     116             :   // Now call the method.
     117           0 :   JS::Rooted<JS::Value> retVal(cx);
     118           0 :   nsresult rv = mozIntl->GetLocaleInfo(locales, &retVal);
     119           0 :   if (NS_FAILED(rv)) {
     120           0 :     aError.Throw(rv);
     121           0 :     return;
     122             :   }
     123             : 
     124           0 :   if (!retVal.isObject()) {
     125           0 :     aError.Throw(NS_ERROR_FAILURE);
     126           0 :     return;
     127             :   }
     128             : 
     129             :   // Return the result as LocaleInfo.
     130           0 :   JSAutoCompartment ac(cx, &retVal.toObject());
     131           0 :   if (!aResult.Init(cx, retVal)) {
     132           0 :     aError.Throw(NS_ERROR_FAILURE);
     133             :   }
     134             : }
     135             : 
     136             : } // dom namespace
     137             : } // mozilla namespace

Generated by: LCOV version 1.13