Bug 1748749 - P3: Move TranslateString to Accessible. r=Jamie

Small refactor to allow action descriptions to be implemented in
Accessible.

Differential Revision: https://phabricator.services.mozilla.com/D135907
This commit is contained in:
Eitan Isaacson 2022-01-28 00:09:04 +00:00
parent 6732b10718
commit 1f5048e73c
5 changed files with 25 additions and 24 deletions

View File

@ -8,6 +8,8 @@
#include "ARIAMap.h"
#include "States.h"
#include "mozilla/a11y/HyperTextAccessibleBase.h"
#include "mozilla/Components.h"
#include "nsIStringBundle.h"
using namespace mozilla;
using namespace mozilla::a11y;
@ -248,3 +250,20 @@ void Accessible::GetPositionAndSetSize(int32_t* aPosInSet, int32_t* aSetSize) {
*aSetSize = groupInfo->SetSize();
}
}
void Accessible::TranslateString(const nsString& aKey, nsAString& aStringOut) {
nsCOMPtr<nsIStringBundleService> stringBundleService =
components::StringBundle::Service();
if (!stringBundleService) return;
nsCOMPtr<nsIStringBundle> stringBundle;
stringBundleService->CreateBundle(
"chrome://global-platform/locale/accessible.properties",
getter_AddRefs(stringBundle));
if (!stringBundle) return;
nsAutoString xsValue;
nsresult rv = stringBundle->GetStringFromName(
NS_ConvertUTF16toUTF8(aKey).get(), xsValue);
if (NS_SUCCEEDED(rv)) aStringOut.Assign(xsValue);
}

View File

@ -316,6 +316,11 @@ class Accessible {
virtual HyperTextAccessibleBase* AsHyperTextBase() { return nullptr; }
/**
* Return the localized string for the given key.
*/
static void TranslateString(const nsString& aKey, nsAString& aStringOut);
protected:
// Some abstracted group utility methods.

View File

@ -282,24 +282,6 @@ KeyBinding LocalAccessible::AccessKey() const {
KeyBinding LocalAccessible::KeyboardShortcut() const { return KeyBinding(); }
void LocalAccessible::TranslateString(const nsString& aKey,
nsAString& aStringOut) {
nsCOMPtr<nsIStringBundleService> stringBundleService =
components::StringBundle::Service();
if (!stringBundleService) return;
nsCOMPtr<nsIStringBundle> stringBundle;
stringBundleService->CreateBundle(
"chrome://global-platform/locale/accessible.properties",
getter_AddRefs(stringBundle));
if (!stringBundle) return;
nsAutoString xsValue;
nsresult rv = stringBundle->GetStringFromName(
NS_ConvertUTF16toUTF8(aKey).get(), xsValue);
if (NS_SUCCEEDED(rv)) aStringOut.Assign(xsValue);
}
uint64_t LocalAccessible::VisibilityState() const {
if (IPCAccessibilityActive() &&
StaticPrefs::accessibility_cache_enabled_AtStartup()) {

View File

@ -678,11 +678,6 @@ class LocalAccessible : public nsISupports, public Accessible {
bool IsActiveDescendant(LocalAccessible** aWidget = nullptr) const;
/**
* Return the localized string for the given key.
*/
static void TranslateString(const nsString& aKey, nsAString& aStringOut);
/**
* Return true if the accessible is defunct.
*/

View File

@ -55,7 +55,7 @@ NSArray<mozAccessible*>* ConvertToNSArray(nsTArray<RemoteAccessible*>& aArray) {
NSString* LocalizedString(const nsString& aString) {
nsString text;
LocalAccessible::TranslateString(aString, text);
Accessible::TranslateString(aString, text);
return text.IsEmpty() ? nil : nsCocoaUtils::ToNSString(text);
}