1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2014 The PDFium Authors 2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file. 4*3ac0a46fSAndroid Build Coastguard Worker 5*3ac0a46fSAndroid Build Coastguard Worker // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6*3ac0a46fSAndroid Build Coastguard Worker 7*3ac0a46fSAndroid Build Coastguard Worker #ifndef XFA_FXFA_PARSER_CXFA_XMLLOCALE_H_ 8*3ac0a46fSAndroid Build Coastguard Worker #define XFA_FXFA_PARSER_CXFA_XMLLOCALE_H_ 9*3ac0a46fSAndroid Build Coastguard Worker 10*3ac0a46fSAndroid Build Coastguard Worker #include <memory> 11*3ac0a46fSAndroid Build Coastguard Worker 12*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/unowned_ptr.h" 13*3ac0a46fSAndroid Build Coastguard Worker #include "fxjs/gc/heap.h" 14*3ac0a46fSAndroid Build Coastguard Worker #include "third_party/base/containers/span.h" 15*3ac0a46fSAndroid Build Coastguard Worker #include "v8/include/cppgc/garbage-collected.h" 16*3ac0a46fSAndroid Build Coastguard Worker #include "xfa/fxfa/parser/gced_locale_iface.h" 17*3ac0a46fSAndroid Build Coastguard Worker 18*3ac0a46fSAndroid Build Coastguard Worker class CFX_XMLDocument; 19*3ac0a46fSAndroid Build Coastguard Worker class CFX_XMLElement; 20*3ac0a46fSAndroid Build Coastguard Worker 21*3ac0a46fSAndroid Build Coastguard Worker class CXFA_XMLLocale final : public GCedLocaleIface { 22*3ac0a46fSAndroid Build Coastguard Worker public: 23*3ac0a46fSAndroid Build Coastguard Worker // Object is created on cppgc heap. 24*3ac0a46fSAndroid Build Coastguard Worker static CXFA_XMLLocale* Create(cppgc::Heap* heap, pdfium::span<uint8_t> data); 25*3ac0a46fSAndroid Build Coastguard Worker 26*3ac0a46fSAndroid Build Coastguard Worker CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED; 27*3ac0a46fSAndroid Build Coastguard Worker ~CXFA_XMLLocale() override; 28*3ac0a46fSAndroid Build Coastguard Worker 29*3ac0a46fSAndroid Build Coastguard Worker // GCedLocaleIface: 30*3ac0a46fSAndroid Build Coastguard Worker void Trace(cppgc::Visitor* visitor) const override; 31*3ac0a46fSAndroid Build Coastguard Worker WideString GetName() const override; 32*3ac0a46fSAndroid Build Coastguard Worker WideString GetDecimalSymbol() const override; 33*3ac0a46fSAndroid Build Coastguard Worker WideString GetGroupingSymbol() const override; 34*3ac0a46fSAndroid Build Coastguard Worker WideString GetPercentSymbol() const override; 35*3ac0a46fSAndroid Build Coastguard Worker WideString GetMinusSymbol() const override; 36*3ac0a46fSAndroid Build Coastguard Worker WideString GetCurrencySymbol() const override; 37*3ac0a46fSAndroid Build Coastguard Worker WideString GetDateTimeSymbols() const override; 38*3ac0a46fSAndroid Build Coastguard Worker WideString GetMonthName(int32_t nMonth, bool bAbbr) const override; 39*3ac0a46fSAndroid Build Coastguard Worker WideString GetDayName(int32_t nWeek, bool bAbbr) const override; 40*3ac0a46fSAndroid Build Coastguard Worker WideString GetMeridiemName(bool bAM) const override; 41*3ac0a46fSAndroid Build Coastguard Worker int GetTimeZoneInMinutes() const override; 42*3ac0a46fSAndroid Build Coastguard Worker WideString GetEraName(bool bAD) const override; 43*3ac0a46fSAndroid Build Coastguard Worker 44*3ac0a46fSAndroid Build Coastguard Worker WideString GetDatePattern(DateTimeSubcategory eType) const override; 45*3ac0a46fSAndroid Build Coastguard Worker WideString GetTimePattern(DateTimeSubcategory eType) const override; 46*3ac0a46fSAndroid Build Coastguard Worker WideString GetNumPattern(NumSubcategory eType) const override; 47*3ac0a46fSAndroid Build Coastguard Worker 48*3ac0a46fSAndroid Build Coastguard Worker private: 49*3ac0a46fSAndroid Build Coastguard Worker CXFA_XMLLocale(std::unique_ptr<CFX_XMLDocument> root, 50*3ac0a46fSAndroid Build Coastguard Worker const CFX_XMLElement* locale); 51*3ac0a46fSAndroid Build Coastguard Worker 52*3ac0a46fSAndroid Build Coastguard Worker WideString GetPattern(CFX_XMLElement* pElement, 53*3ac0a46fSAndroid Build Coastguard Worker WideStringView bsTag, 54*3ac0a46fSAndroid Build Coastguard Worker WideStringView wsName) const; 55*3ac0a46fSAndroid Build Coastguard Worker WideString GetCalendarSymbol(WideStringView symbol, 56*3ac0a46fSAndroid Build Coastguard Worker size_t index, 57*3ac0a46fSAndroid Build Coastguard Worker bool bAbbr) const; 58*3ac0a46fSAndroid Build Coastguard Worker 59*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<CFX_XMLDocument> xml_doc_; 60*3ac0a46fSAndroid Build Coastguard Worker UnownedPtr<const CFX_XMLElement> locale_; 61*3ac0a46fSAndroid Build Coastguard Worker }; 62*3ac0a46fSAndroid Build Coastguard Worker 63*3ac0a46fSAndroid Build Coastguard Worker #endif // XFA_FXFA_PARSER_CXFA_XMLLOCALE_H_ 64