From 0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 03:47:29 +0200 Subject: Adding upstream version 115.8.0esr. Signed-off-by: Daniel Baumann --- intl/strres/nsStringBundleService.h | 69 +++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 intl/strres/nsStringBundleService.h (limited to 'intl/strres/nsStringBundleService.h') diff --git a/intl/strres/nsStringBundleService.h b/intl/strres/nsStringBundleService.h new file mode 100644 index 0000000000..a9f3402892 --- /dev/null +++ b/intl/strres/nsStringBundleService.h @@ -0,0 +1,69 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef nsStringBundleService_h__ +#define nsStringBundleService_h__ + +#include "nsCOMPtr.h" +#include "nsTHashMap.h" +#include "nsHashKeys.h" +#include "nsIStringBundle.h" +#include "nsIObserver.h" +#include "nsWeakReference.h" +#include "nsIMemoryReporter.h" + +#include "mozilla/LinkedList.h" +#include "mozilla/UniquePtr.h" + +struct bundleCacheEntry_t; + +class nsStringBundleService : public nsIStringBundleService, + public nsIObserver, + public nsSupportsWeakReference, + public nsIMemoryReporter { + MOZ_DEFINE_MALLOC_SIZE_OF(MallocSizeOf); + + public: + nsStringBundleService(); + + nsresult Init(); + + NS_DECL_ISUPPORTS + NS_DECL_NSISTRINGBUNDLESERVICE + NS_DECL_NSIOBSERVER + + NS_IMETHOD CollectReports(nsIHandleReportCallback* aHandleReport, + nsISupports* aData, bool anonymize) override { + size_t amt = SizeOfIncludingThis(MallocSizeOf); + + MOZ_COLLECT_REPORT("explicit/string-bundles/service", KIND_HEAP, + UNITS_BYTES, amt, + "Memory used for StringBundleService overhead"); + return NS_OK; + }; + + private: + virtual ~nsStringBundleService(); + + void getStringBundle(const char* aUrl, nsIStringBundle** aResult); + nsresult FormatWithBundle(nsIStringBundle* bundle, nsresult aStatus, + const nsTArray& argArray, + nsAString& result); + + void flushBundleCache(bool ignoreShared = true); + + mozilla::UniquePtr evictOneEntry(); + + bundleCacheEntry_t* insertIntoCache(already_AddRefed aBundle, + const nsACString& aHashKey); + + nsTHashMap mBundleMap; + // LRU list of cached entries, with the least-recently-used entry first. + mozilla::LinkedList mBundleCache; + // List of cached shared-memory string bundles, in arbitrary order. + mozilla::AutoCleanLinkedList mSharedBundles; +}; + +#endif -- cgit v1.2.3