Skip to content

Commit

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

Change-Id: Ida75ca986b88ae444684321ae609e1aae5588bf5

---------

Co-authored-by: Kaido Kert <[email protected]>
(cherry picked from commit 30b5734)
  • Loading branch information
iuriionishchenko authored and anonymous1-me committed Jun 20, 2024
1 parent 3f0a8ec commit 5455f83
Show file tree
Hide file tree
Showing 28 changed files with 555 additions and 51 deletions.
4 changes: 4 additions & 0 deletions cobalt/browser/web_module.cc
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,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/gles.h"

#if defined(ENABLE_DEBUGGER)
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
10 changes: 10 additions & 0 deletions starboard/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,16 @@ since the version previous to it.

## Version 16

## Deprecated `Accessibility` header

Accessibility Starboard API has been deprecated, an extension in
`starboard/extension/accessibility.h` is available instead. The removal
includes the following functions:
* `SbAccessibilityGetCaptionSettings`
* `SbAccessibilityGetDisplaySettings`
* `SbAccessibilityGetTextToSpeechSettings`
* `SbAccessibilitySetCaptionsEnabled`

## Added new configuration constant `kHasPartialAudioFramesSupport`
Set this to true if your platform supports partial audio frames.

Expand Down
8 changes: 8 additions & 0 deletions starboard/accessibility.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
#ifndef STARBOARD_ACCESSIBILITY_H_
#define STARBOARD_ACCESSIBILITY_H_

#if SB_API_VERSION < 16

#include "starboard/export.h"
#include "starboard/types.h"

Expand Down Expand Up @@ -227,4 +229,10 @@ SB_EXPORT bool SbAccessibilitySetCaptionsEnabled(bool enabled);
} // extern "C"
#endif

#else // SB_API_VERSION < 16

#error This file is deprecated with SB_API_VERSION 16.

#endif // SB_API_VERSION < 16

#endif // STARBOARD_ACCESSIBILITY_H_
Loading

0 comments on commit 5455f83

Please sign in to comment.