Skip to content

Commit

Permalink
Move Accessibility API from Starboard to Extension
Browse files Browse the repository at this point in the history
b/299639708

Change-Id: Ida75ca986b88ae444684321ae609e1aae5588bf5
  • Loading branch information
iuriionishchenko committed May 13, 2024
1 parent 71e2175 commit e964231
Show file tree
Hide file tree
Showing 9 changed files with 377 additions and 27 deletions.
4 changes: 4 additions & 0 deletions cobalt/browser/web_module.cc
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,11 @@
#include "cobalt/web/environment_settings.h"
#include "cobalt/web/event.h"
#include "cobalt/web/url.h"
#if SB_API_VERSION < 16
#include "starboard/accessibility.h"
#else // SB_API_VERSION < 16
#include "starboard/extension/accessibility.h"
#endif // SB_API_VERSION < 16
#include "starboard/common/log.h"
#include "starboard/gles.h"

Expand Down
79 changes: 57 additions & 22 deletions cobalt/dom/captions/system_caption_settings.cc
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,11 @@
#include "cobalt/dom/captions/caption_opacity_percentage.h"
#include "cobalt/dom/captions/caption_state.h"
#include "cobalt/web/event_target.h"
#if SB_API_VERSION < 16
#include "starboard/accessibility.h"
#else // SB_API_VERSION < 16
#include "starboard/extension/accessibility.h"
#endif // SB_API_VERSION < 16
#include "starboard/memory.h"

namespace cobalt {
Expand Down Expand Up @@ -181,7 +185,7 @@ void SystemCaptionSettings::OnCaptionSettingsChanged() {
base::Optional<std::string> SystemCaptionSettings::background_color() {
SbAccessibilityCaptionSettings caption_settings;
memset(&caption_settings, 0, sizeof(caption_settings));
bool success = SbAccessibilityGetCaptionSettings(&caption_settings);
bool success = GetCaptionSettings(&caption_settings);

if (!success) {
return base::nullopt;
Expand All @@ -201,7 +205,7 @@ base::Optional<std::string> SystemCaptionSettings::background_color() {
CaptionState SystemCaptionSettings::background_color_state() {
SbAccessibilityCaptionSettings caption_settings;
memset(&caption_settings, 0, sizeof(caption_settings));
bool success = SbAccessibilityGetCaptionSettings(&caption_settings);
bool success = GetCaptionSettings(&caption_settings);
if (success) {
return ToCobaltCaptionState(caption_settings.background_color_state);
} else {
Expand All @@ -212,7 +216,7 @@ CaptionState SystemCaptionSettings::background_color_state() {
base::Optional<std::string> SystemCaptionSettings::background_opacity() {
SbAccessibilityCaptionSettings caption_settings;
memset(&caption_settings, 0, sizeof(caption_settings));
bool success = SbAccessibilityGetCaptionSettings(&caption_settings);
bool success = GetCaptionSettings(&caption_settings);

if (!success) {
return base::nullopt;
Expand All @@ -232,7 +236,7 @@ base::Optional<std::string> SystemCaptionSettings::background_opacity() {
CaptionState SystemCaptionSettings::background_opacity_state() {
SbAccessibilityCaptionSettings caption_settings;
memset(&caption_settings, 0, sizeof(caption_settings));
bool success = SbAccessibilityGetCaptionSettings(&caption_settings);
bool success = GetCaptionSettings(&caption_settings);
if (success) {
return ToCobaltCaptionState(caption_settings.background_opacity_state);
} else {
Expand All @@ -243,7 +247,7 @@ CaptionState SystemCaptionSettings::background_opacity_state() {
base::Optional<std::string> SystemCaptionSettings::character_edge_style() {
SbAccessibilityCaptionSettings caption_settings;
memset(&caption_settings, 0, sizeof(caption_settings));
bool success = SbAccessibilityGetCaptionSettings(&caption_settings);
bool success = GetCaptionSettings(&caption_settings);

if (!success) {
return base::nullopt;
Expand All @@ -265,7 +269,7 @@ base::Optional<std::string> SystemCaptionSettings::character_edge_style() {
CaptionState SystemCaptionSettings::character_edge_style_state() {
SbAccessibilityCaptionSettings caption_settings;
memset(&caption_settings, 0, sizeof(caption_settings));
bool success = SbAccessibilityGetCaptionSettings(&caption_settings);
bool success = GetCaptionSettings(&caption_settings);
if (success) {
return ToCobaltCaptionState(caption_settings.character_edge_style_state);
} else {
Expand All @@ -276,7 +280,7 @@ CaptionState SystemCaptionSettings::character_edge_style_state() {
base::Optional<std::string> SystemCaptionSettings::font_color() {
SbAccessibilityCaptionSettings caption_settings;
memset(&caption_settings, 0, sizeof(caption_settings));
bool success = SbAccessibilityGetCaptionSettings(&caption_settings);
bool success = GetCaptionSettings(&caption_settings);

if (!success) {
return base::nullopt;
Expand All @@ -296,7 +300,7 @@ base::Optional<std::string> SystemCaptionSettings::font_color() {
CaptionState SystemCaptionSettings::font_color_state() {
SbAccessibilityCaptionSettings caption_settings;
memset(&caption_settings, 0, sizeof(caption_settings));
bool success = SbAccessibilityGetCaptionSettings(&caption_settings);
bool success = GetCaptionSettings(&caption_settings);
if (success) {
return ToCobaltCaptionState(caption_settings.font_color_state);
} else {
Expand All @@ -307,7 +311,7 @@ CaptionState SystemCaptionSettings::font_color_state() {
base::Optional<std::string> SystemCaptionSettings::font_family() {
SbAccessibilityCaptionSettings caption_settings;
memset(&caption_settings, 0, sizeof(caption_settings));
bool success = SbAccessibilityGetCaptionSettings(&caption_settings);
bool success = GetCaptionSettings(&caption_settings);

if (!success) {
return base::nullopt;
Expand All @@ -327,7 +331,7 @@ base::Optional<std::string> SystemCaptionSettings::font_family() {
CaptionState SystemCaptionSettings::font_family_state() {
SbAccessibilityCaptionSettings caption_settings;
memset(&caption_settings, 0, sizeof(caption_settings));
bool success = SbAccessibilityGetCaptionSettings(&caption_settings);
bool success = GetCaptionSettings(&caption_settings);
if (success) {
return ToCobaltCaptionState(caption_settings.font_family_state);
} else {
Expand All @@ -338,7 +342,7 @@ CaptionState SystemCaptionSettings::font_family_state() {
base::Optional<std::string> SystemCaptionSettings::font_opacity() {
SbAccessibilityCaptionSettings caption_settings;
memset(&caption_settings, 0, sizeof(caption_settings));
bool success = SbAccessibilityGetCaptionSettings(&caption_settings);
bool success = GetCaptionSettings(&caption_settings);

if (!success) {
return base::nullopt;
Expand All @@ -358,7 +362,7 @@ base::Optional<std::string> SystemCaptionSettings::font_opacity() {
CaptionState SystemCaptionSettings::font_opacity_state() {
SbAccessibilityCaptionSettings caption_settings;
memset(&caption_settings, 0, sizeof(caption_settings));
bool success = SbAccessibilityGetCaptionSettings(&caption_settings);
bool success = GetCaptionSettings(&caption_settings);
if (success) {
return ToCobaltCaptionState(caption_settings.font_opacity_state);
} else {
Expand All @@ -369,7 +373,7 @@ CaptionState SystemCaptionSettings::font_opacity_state() {
base::Optional<std::string> SystemCaptionSettings::font_size() {
SbAccessibilityCaptionSettings caption_settings;
memset(&caption_settings, 0, sizeof(caption_settings));
bool success = SbAccessibilityGetCaptionSettings(&caption_settings);
bool success = GetCaptionSettings(&caption_settings);

if (!success) {
return base::nullopt;
Expand All @@ -390,7 +394,7 @@ base::Optional<std::string> SystemCaptionSettings::font_size() {
CaptionState SystemCaptionSettings::font_size_state() {
SbAccessibilityCaptionSettings caption_settings;
memset(&caption_settings, 0, sizeof(caption_settings));
bool success = SbAccessibilityGetCaptionSettings(&caption_settings);
bool success = GetCaptionSettings(&caption_settings);
if (success) {
return ToCobaltCaptionState(caption_settings.font_size_state);
} else {
Expand All @@ -401,7 +405,7 @@ CaptionState SystemCaptionSettings::font_size_state() {
base::Optional<std::string> SystemCaptionSettings::window_color() {
SbAccessibilityCaptionSettings caption_settings;
memset(&caption_settings, 0, sizeof(caption_settings));
bool success = SbAccessibilityGetCaptionSettings(&caption_settings);
bool success = GetCaptionSettings(&caption_settings);

if (!success) {
return base::nullopt;
Expand All @@ -421,7 +425,7 @@ base::Optional<std::string> SystemCaptionSettings::window_color() {
CaptionState SystemCaptionSettings::window_color_state() {
SbAccessibilityCaptionSettings caption_settings;
memset(&caption_settings, 0, sizeof(caption_settings));
bool success = SbAccessibilityGetCaptionSettings(&caption_settings);
bool success = GetCaptionSettings(&caption_settings);
if (success) {
return ToCobaltCaptionState(caption_settings.window_color_state);
} else {
Expand All @@ -432,7 +436,7 @@ CaptionState SystemCaptionSettings::window_color_state() {
base::Optional<std::string> SystemCaptionSettings::window_opacity() {
SbAccessibilityCaptionSettings caption_settings;
memset(&caption_settings, 0, sizeof(caption_settings));
bool success = SbAccessibilityGetCaptionSettings(&caption_settings);
bool success = GetCaptionSettings(&caption_settings);

if (!success) {
return base::nullopt;
Expand All @@ -452,7 +456,7 @@ base::Optional<std::string> SystemCaptionSettings::window_opacity() {
CaptionState SystemCaptionSettings::window_opacity_state() {
SbAccessibilityCaptionSettings caption_settings;
memset(&caption_settings, 0, sizeof(caption_settings));
bool success = SbAccessibilityGetCaptionSettings(&caption_settings);
bool success = GetCaptionSettings(&caption_settings);
if (success) {
return ToCobaltCaptionState(caption_settings.window_opacity_state);
} else {
Expand All @@ -463,7 +467,7 @@ CaptionState SystemCaptionSettings::window_opacity_state() {
bool SystemCaptionSettings::is_enabled() {
SbAccessibilityCaptionSettings caption_settings;
memset(&caption_settings, 0, sizeof(caption_settings));
bool success = SbAccessibilityGetCaptionSettings(&caption_settings);
bool success = GetCaptionSettings(&caption_settings);
DCHECK(supports_is_enabled());

return (success && caption_settings.supports_is_enabled)
Expand All @@ -473,29 +477,41 @@ bool SystemCaptionSettings::is_enabled() {

void SystemCaptionSettings::set_is_enabled(bool active) {
DCHECK(supports_set_enabled());
#if SB_API_VERSION >= 16
auto accessibility_api =
static_cast<const StarboardExtensionAccessibilityApi*>(
SbSystemGetExtension(kStarboardExtensionAccessibilityName));
if (accessibility_api &&
strcmp(accessibility_api->name, kStarboardExtensionAccessibilityName) ==
0 &&
accessibility_api->version >= 1) {
accessibility_api->SetCaptionsEnabled(active);
}
#else // SB_API_VERSION >= 16
SbAccessibilitySetCaptionsEnabled(active);
#endif // SB_API_VERSION >= 16
}

bool SystemCaptionSettings::supports_is_enabled() {
SbAccessibilityCaptionSettings caption_settings;
memset(&caption_settings, 0, sizeof(caption_settings));
bool success = SbAccessibilityGetCaptionSettings(&caption_settings);
bool success = GetCaptionSettings(&caption_settings);

return (success) ? caption_settings.supports_is_enabled : false;
}

bool SystemCaptionSettings::supports_set_enabled() {
SbAccessibilityCaptionSettings caption_settings;
memset(&caption_settings, 0, sizeof(caption_settings));
bool success = SbAccessibilityGetCaptionSettings(&caption_settings);
bool success = GetCaptionSettings(&caption_settings);

return (success) ? caption_settings.supports_set_enabled : false;
}

bool SystemCaptionSettings::supports_override() {
SbAccessibilityCaptionSettings caption_settings;
memset(&caption_settings, 0, sizeof(caption_settings));
bool success = SbAccessibilityGetCaptionSettings(&caption_settings);
bool success = GetCaptionSettings(&caption_settings);

return (success) ? caption_settings.supports_override : false;
}
Expand Down Expand Up @@ -629,6 +645,25 @@ const char* SystemCaptionSettings::CaptionOpacityPercentageToString(
}
}

bool SystemCaptionSettings::GetCaptionSettings(
SbAccessibilityCaptionSettings* caption_settings) {
#if SB_API_VERSION >= 16
auto accessibility_api =
static_cast<const StarboardExtensionAccessibilityApi*>(
SbSystemGetExtension(kStarboardExtensionAccessibilityName));
if (accessibility_api &&
strcmp(accessibility_api->name, kStarboardExtensionAccessibilityName) ==
0 &&
accessibility_api->version >= 1) {
return accessibility_api->GetCaptionSettings(caption_settings);
} else {
return false;
}
#else // SB_API_VERSION >= 16
return SbAccessibilityGetCaptionSettings(caption_settings);
#endif // SB_API_VERSION >= 16
}

} // namespace captions
} // namespace dom
} // namespace cobalt
7 changes: 7 additions & 0 deletions cobalt/dom/captions/system_caption_settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@
#include "cobalt/dom/captions/caption_state.h"
#include "cobalt/script/environment_settings.h"
#include "cobalt/web/event_target.h"
#if SB_API_VERSION < 16
#include "starboard/accessibility.h"
#else // SB_API_VERSION < 16
#include "starboard/extension/accessibility.h"
#endif // SB_API_VERSION < 16

namespace cobalt {
namespace dom {
Expand Down Expand Up @@ -93,6 +98,8 @@ class SystemCaptionSettings : public web::EventTarget {
CaptionFontSizePercentage font_size);
const char* CaptionOpacityPercentageToString(
CaptionOpacityPercentage opacity);

bool GetCaptionSettings(SbAccessibilityCaptionSettings* caption_settings);
};
} // namespace captions
} // namespace dom
Expand Down
40 changes: 36 additions & 4 deletions cobalt/h5vcc/h5vcc_accessibility.cc
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,11 @@
#include "cobalt/base/accessibility_settings_changed_event.h"
#include "cobalt/base/accessibility_text_to_speech_settings_changed_event.h"
#include "cobalt/browser/switches.h"
#if SB_API_VERSION < 16
#include "starboard/accessibility.h"
#else // SB_API_VERSION < 16
#include "starboard/extension/accessibility.h"
#endif // SB_API_VERSION < 16
#include "starboard/memory.h"

namespace cobalt {
Expand Down Expand Up @@ -74,11 +78,25 @@ void H5vccAccessibility::set_built_in_screen_reader(bool value) {
bool H5vccAccessibility::high_contrast_text() const {
SbAccessibilityDisplaySettings settings;
memset(&settings, 0, sizeof(settings));

#if SB_API_VERSION >= 16
auto accessibility_api =
static_cast<const StarboardExtensionAccessibilityApi*>(
SbSystemGetExtension(kStarboardExtensionAccessibilityName));
if (accessibility_api &&
strcmp(accessibility_api->name, kStarboardExtensionAccessibilityName) ==
0 &&
accessibility_api->version >= 1) {
if (!accessibility_api->GetDisplaySettings(&settings)) {
return false;
}
} else {
return false;
}
#else // SB_API_VERSION >= 16
if (!SbAccessibilityGetDisplaySettings(&settings)) {
return false;
}

#endif // SB_API_VERSION >= 16
return settings.is_high_contrast_text_enabled;
}

Expand All @@ -89,11 +107,25 @@ bool H5vccAccessibility::text_to_speech() const {
}
SbAccessibilityTextToSpeechSettings settings;
memset(&settings, 0, sizeof(settings));

#if SB_API_VERSION >= 16
auto accessibility_api =
static_cast<const StarboardExtensionAccessibilityApi*>(
SbSystemGetExtension(kStarboardExtensionAccessibilityName));
if (accessibility_api &&
strcmp(accessibility_api->name, kStarboardExtensionAccessibilityName) ==
0 &&
accessibility_api->version >= 1) {
if (!accessibility_api->GetTextToSpeechSettings(&settings)) {
return false;
}
} else {
return false;
}
#else // SB_API_VERSION >= 16
if (!SbAccessibilityGetTextToSpeechSettings(&settings)) {
return false;
}

#endif // SB_API_VERSION >= 16
return settings.has_text_to_speech_setting &&
settings.is_text_to_speech_enabled;
}
Expand Down
4 changes: 3 additions & 1 deletion starboard/elf_loader/exported_symbols.cc
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@
#include <sys/stat.h>
#include <unistd.h>

#if SB_API_VERSION < 16
#include "starboard/accessibility.h"
#endif // SB_API_VERSION < 16
#include "starboard/audio_sink.h"
#if SB_API_VERSION < 16
#include "starboard/byte_swap.h"
Expand Down Expand Up @@ -119,11 +121,11 @@ ExportedSymbols::ExportedSymbols() {
#endif // SB_API_VERSION < 16
#if SB_API_VERSION >= 16
REGISTER_SYMBOL(kSbCanMapExecutableMemory);
#endif
REGISTER_SYMBOL(SbAccessibilityGetCaptionSettings);
REGISTER_SYMBOL(SbAccessibilityGetDisplaySettings);
REGISTER_SYMBOL(SbAccessibilityGetTextToSpeechSettings);
REGISTER_SYMBOL(SbAccessibilitySetCaptionsEnabled);
#endif // SB_API_VERSION < 16
REGISTER_SYMBOL(SbAudioSinkCreate);
REGISTER_SYMBOL(SbAudioSinkDestroy);
REGISTER_SYMBOL(SbAudioSinkGetMaxChannels);
Expand Down
Loading

0 comments on commit e964231

Please sign in to comment.