Skip to content

Commit

Permalink
Accessibility API was moved 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 Mar 14, 2024
1 parent b8ff539 commit c5733db
Show file tree
Hide file tree
Showing 6 changed files with 369 additions and 190 deletions.
75 changes: 53 additions & 22 deletions cobalt/dom/captions/system_caption_settings.cc
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,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);

Check warning on line 184 in cobalt/dom/captions/system_caption_settings.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/dom/captions/system_caption_settings.cc#L184

Added line #L184 was not covered by tests

if (!success) {
return base::nullopt;
Expand All @@ -201,7 +201,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);

Check warning on line 204 in cobalt/dom/captions/system_caption_settings.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/dom/captions/system_caption_settings.cc#L204

Added line #L204 was not covered by tests
if (success) {
return ToCobaltCaptionState(caption_settings.background_color_state);
} else {
Expand All @@ -212,7 +212,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);

Check warning on line 215 in cobalt/dom/captions/system_caption_settings.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/dom/captions/system_caption_settings.cc#L215

Added line #L215 was not covered by tests

if (!success) {
return base::nullopt;
Expand All @@ -232,7 +232,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);

Check warning on line 235 in cobalt/dom/captions/system_caption_settings.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/dom/captions/system_caption_settings.cc#L235

Added line #L235 was not covered by tests
if (success) {
return ToCobaltCaptionState(caption_settings.background_opacity_state);
} else {
Expand All @@ -243,7 +243,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);

Check warning on line 246 in cobalt/dom/captions/system_caption_settings.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/dom/captions/system_caption_settings.cc#L246

Added line #L246 was not covered by tests

if (!success) {
return base::nullopt;
Expand All @@ -265,7 +265,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);

Check warning on line 268 in cobalt/dom/captions/system_caption_settings.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/dom/captions/system_caption_settings.cc#L268

Added line #L268 was not covered by tests
if (success) {
return ToCobaltCaptionState(caption_settings.character_edge_style_state);
} else {
Expand All @@ -276,7 +276,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);

Check warning on line 279 in cobalt/dom/captions/system_caption_settings.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/dom/captions/system_caption_settings.cc#L279

Added line #L279 was not covered by tests

if (!success) {
return base::nullopt;
Expand All @@ -296,7 +296,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);

Check warning on line 299 in cobalt/dom/captions/system_caption_settings.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/dom/captions/system_caption_settings.cc#L299

Added line #L299 was not covered by tests
if (success) {
return ToCobaltCaptionState(caption_settings.font_color_state);
} else {
Expand All @@ -307,7 +307,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);

Check warning on line 310 in cobalt/dom/captions/system_caption_settings.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/dom/captions/system_caption_settings.cc#L310

Added line #L310 was not covered by tests

if (!success) {
return base::nullopt;
Expand All @@ -327,7 +327,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);

Check warning on line 330 in cobalt/dom/captions/system_caption_settings.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/dom/captions/system_caption_settings.cc#L330

Added line #L330 was not covered by tests
if (success) {
return ToCobaltCaptionState(caption_settings.font_family_state);
} else {
Expand All @@ -338,7 +338,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);

Check warning on line 341 in cobalt/dom/captions/system_caption_settings.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/dom/captions/system_caption_settings.cc#L341

Added line #L341 was not covered by tests

if (!success) {
return base::nullopt;
Expand All @@ -358,7 +358,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);

Check warning on line 361 in cobalt/dom/captions/system_caption_settings.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/dom/captions/system_caption_settings.cc#L361

Added line #L361 was not covered by tests
if (success) {
return ToCobaltCaptionState(caption_settings.font_opacity_state);
} else {
Expand All @@ -369,7 +369,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);

Check warning on line 372 in cobalt/dom/captions/system_caption_settings.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/dom/captions/system_caption_settings.cc#L372

Added line #L372 was not covered by tests

if (!success) {
return base::nullopt;
Expand All @@ -390,7 +390,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);

Check warning on line 393 in cobalt/dom/captions/system_caption_settings.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/dom/captions/system_caption_settings.cc#L393

Added line #L393 was not covered by tests
if (success) {
return ToCobaltCaptionState(caption_settings.font_size_state);
} else {
Expand All @@ -401,7 +401,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);

Check warning on line 404 in cobalt/dom/captions/system_caption_settings.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/dom/captions/system_caption_settings.cc#L404

Added line #L404 was not covered by tests

if (!success) {
return base::nullopt;
Expand All @@ -421,7 +421,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);

Check warning on line 424 in cobalt/dom/captions/system_caption_settings.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/dom/captions/system_caption_settings.cc#L424

Added line #L424 was not covered by tests
if (success) {
return ToCobaltCaptionState(caption_settings.window_color_state);
} else {
Expand All @@ -432,7 +432,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);

Check warning on line 435 in cobalt/dom/captions/system_caption_settings.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/dom/captions/system_caption_settings.cc#L435

Added line #L435 was not covered by tests

if (!success) {
return base::nullopt;
Expand All @@ -452,7 +452,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);

Check warning on line 455 in cobalt/dom/captions/system_caption_settings.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/dom/captions/system_caption_settings.cc#L455

Added line #L455 was not covered by tests
if (success) {
return ToCobaltCaptionState(caption_settings.window_opacity_state);
} else {
Expand All @@ -463,7 +463,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);

Check warning on line 466 in cobalt/dom/captions/system_caption_settings.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/dom/captions/system_caption_settings.cc#L466

Added line #L466 was not covered by tests
DCHECK(supports_is_enabled());

return (success && caption_settings.supports_is_enabled)
Expand All @@ -473,29 +473,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 CobaltExtensionAccessibilityAPI*>(
SbSystemGetExtension(kCobaltExtensionAccessibilityName));
if (accessibility_api &&
strcmp(accessibility_api->name, kCobaltExtensionAccessibilityName) == 0 &&
accessibility_api->version >= 1) {
accessibility_api->SetCaptionsEnabled(active);
} else {
SbAccessibilitySetCaptionsEnabled(active);

Check warning on line 484 in cobalt/dom/captions/system_caption_settings.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/dom/captions/system_caption_settings.cc#L476-L484

Added lines #L476 - L484 were not covered by tests
}
#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);

Check warning on line 494 in cobalt/dom/captions/system_caption_settings.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/dom/captions/system_caption_settings.cc#L494

Added line #L494 was not covered by tests

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);

Check warning on line 502 in cobalt/dom/captions/system_caption_settings.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/dom/captions/system_caption_settings.cc#L502

Added line #L502 was not covered by tests

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);

Check warning on line 510 in cobalt/dom/captions/system_caption_settings.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/dom/captions/system_caption_settings.cc#L510

Added line #L510 was not covered by tests

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

bool SystemCaptionSettings::GetCaptionSettings(
SbAccessibilityCaptionSettings* caption_settings) {
#if SB_API_VERSION >= 16
auto platform_info_extension =
static_cast<const CobaltExtensionAccessibilityAPI*>(
SbSystemGetExtension(kCobaltExtensionAccessibilityName));
if (platform_info_extension &&
strcmp(platform_info_extension->name,
kCobaltExtensionAccessibilityName) == 0 &&
platform_info_extension->version >= 1) {
return platform_info_extension->GetCaptionSettings(caption_settings);
} else {
return SbAccessibilityGetCaptionSettings(caption_settings);

Check warning on line 656 in cobalt/dom/captions/system_caption_settings.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/dom/captions/system_caption_settings.cc#L645-L656

Added lines #L645 - L656 were not covered by tests
}
#else // SB_API_VERSION >= 16
return SbAccessibilityGetCaptionSettings(caption_settings);
#endif // SB_API_VERSION >= 16
}

} // namespace captions
} // namespace dom
} // namespace cobalt
5 changes: 5 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,9 @@
#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/extension/accessibility.h"
#endif // SB_API_VERSION >= 16

namespace cobalt {
namespace dom {
Expand Down Expand Up @@ -93,6 +96,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
39 changes: 35 additions & 4 deletions cobalt/h5vcc/h5vcc_accessibility.cc
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@
#include "cobalt/base/accessibility_text_to_speech_settings_changed_event.h"
#include "cobalt/browser/switches.h"
#include "starboard/accessibility.h"
#if 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 +77,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 CobaltExtensionAccessibilityAPI*>(
SbSystemGetExtension(kCobaltExtensionAccessibilityName));
if (accessibility_api &&
strcmp(accessibility_api->name, kCobaltExtensionAccessibilityName) == 0 &&
accessibility_api->version >= 1) {
if (!accessibility_api->GetDisplaySettings(&settings)) {
return false;

Check warning on line 87 in cobalt/h5vcc/h5vcc_accessibility.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/h5vcc/h5vcc_accessibility.cc#L80-L87

Added lines #L80 - L87 were not covered by tests
}
} else {
if (!SbAccessibilityGetDisplaySettings(&settings)) {
return false;

Check warning on line 91 in cobalt/h5vcc/h5vcc_accessibility.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/h5vcc/h5vcc_accessibility.cc#L89-L91

Added lines #L89 - L91 were not covered by tests
}
}
#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 +106,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 CobaltExtensionAccessibilityAPI*>(
SbSystemGetExtension(kCobaltExtensionAccessibilityName));
if (accessibility_api &&
strcmp(accessibility_api->name, kCobaltExtensionAccessibilityName) == 0 &&
accessibility_api->version >= 1) {
if (!accessibility_api->GetTextToSpeechSettings(&settings)) {
return false;

Check warning on line 116 in cobalt/h5vcc/h5vcc_accessibility.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/h5vcc/h5vcc_accessibility.cc#L109-L116

Added lines #L109 - L116 were not covered by tests
}
} else {
if (!SbAccessibilityGetTextToSpeechSettings(&settings)) {
return false;

Check warning on line 120 in cobalt/h5vcc/h5vcc_accessibility.cc

View check run for this annotation

Codecov / codecov/patch

cobalt/h5vcc/h5vcc_accessibility.cc#L118-L120

Added lines #L118 - L120 were not covered by tests
}
}
#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
Loading

0 comments on commit c5733db

Please sign in to comment.