Commit 94525d64 authored by Pier Angelo Vendrame's avatar Pier Angelo Vendrame 🎃
Browse files

Bug 1985996 - Check spoof english in XMLPrettyPrinter. r=eemeli,smaug

parent 9327c8b2
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -47,6 +47,12 @@ DOMLocalization::DOMLocalization(nsIGlobalObject* aGlobal, bool aIsSync,
  mMutations = new L10nMutations(this);
}

DOMLocalization::DOMLocalization(nsIGlobalObject* aGlobal, bool aIsSync,
                                 const nsTArray<nsCString>& aLocales)
    : Localization(aGlobal, aIsSync, aLocales) {
  mMutations = new L10nMutations(this);
}

already_AddRefed<DOMLocalization> DOMLocalization::Constructor(
    const GlobalObject& aGlobal,
    const Sequence<dom::OwningUTF8StringOrResourceId>& aResourceIds,
+2 −0
Original line number Diff line number Diff line
@@ -118,6 +118,8 @@ class DOMLocalization : public intl::Localization {
  DOMLocalization(nsIGlobalObject* aGlobal, bool aSync);
  DOMLocalization(nsIGlobalObject* aGlobal, bool aIsSync,
                  const intl::ffi::LocalizationRc* aRaw);
  DOMLocalization(nsIGlobalObject* aGlobal, bool aSync,
                  const nsTArray<nsCString>& aLocales);

 protected:
  virtual ~DOMLocalization();
+21 −0
Original line number Diff line number Diff line
@@ -47,6 +47,19 @@ RefPtr<DocumentL10n> DocumentL10n::Create(Document* aDocument, bool aSync) {
  return l10n.forget();
}

RefPtr<DocumentL10n> DocumentL10n::Create(Document* aDocument, bool aSync,
                                          const nsTArray<nsCString>& aLocales) {
  RefPtr<DocumentL10n> l10n = new DocumentL10n(aDocument, aSync, aLocales);

  IgnoredErrorResult rv;
  l10n->mReady = Promise::Create(l10n->mGlobal, rv);
  if (NS_WARN_IF(rv.Failed())) {
    return nullptr;
  }

  return l10n.forget();
}

DocumentL10n::DocumentL10n(Document* aDocument, bool aSync)
    : DOMLocalization(aDocument->GetScopeObject(), aSync),
      mDocument(aDocument),
@@ -54,6 +67,14 @@ DocumentL10n::DocumentL10n(Document* aDocument, bool aSync)
  mContentSink = do_QueryInterface(aDocument->GetCurrentContentSink());
}

DocumentL10n::DocumentL10n(Document* aDocument, bool aSync,
                           const nsTArray<nsCString>& aLocales)
    : DOMLocalization(aDocument->GetScopeObject(), aSync, aLocales),
      mDocument(aDocument),
      mState(DocumentL10nState::Constructed) {
  mContentSink = do_QueryInterface(aDocument->GetCurrentContentSink());
}

JSObject* DocumentL10n::WrapObject(JSContext* aCx,
                                   JS::Handle<JSObject*> aGivenProto) {
  return DocumentL10n_Binding::Wrap(aCx, this, aGivenProto);
+4 −0
Original line number Diff line number Diff line
@@ -47,9 +47,13 @@ class DocumentL10n final : public DOMLocalization {
  NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(DocumentL10n, DOMLocalization)

  static RefPtr<DocumentL10n> Create(Document* aDocument, bool aSync);
  static RefPtr<DocumentL10n> Create(Document* aDocument, bool aSync,
                                     const nsTArray<nsCString>& aLocales);

 protected:
  explicit DocumentL10n(Document* aDocument, bool aSync);
  explicit DocumentL10n(Document* aDocument, bool aSync,
                        const nsTArray<nsCString>& aLocales);
  virtual ~DocumentL10n() = default;

  RefPtr<Document> mDocument;
+7 −1
Original line number Diff line number Diff line
@@ -100,7 +100,13 @@ nsresult nsXMLPrettyPrinter::PrettyPrint(Document* aDocument,

  // Create a DocumentL10n, as the XML document is not allowed to have one.
  // Make it sync so that the test for bug 590812 does not require a setTimeout.
  RefPtr<DocumentL10n> l10n = DocumentL10n::Create(aDocument, true);
  RefPtr<DocumentL10n> l10n;
  if (aDocument->ShouldResistFingerprinting(RFPTarget::JSLocale)) {
    AutoTArray<nsCString, 1> langs = {nsRFPService::GetSpoofedJSLocale()};
    l10n = DocumentL10n::Create(aDocument, true, langs);
  } else {
    l10n = DocumentL10n::Create(aDocument, true);
  }
  NS_ENSURE_TRUE(l10n, NS_ERROR_UNEXPECTED);
  l10n->AddResourceId("dom/XMLPrettyPrint.ftl"_ns);

Loading