// Copyright 2020-2022 Toyota Connected North America // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #include "accessibility.h" #include #include "engine.h" #include "logging.h" void Accessibility::OnPlatformMessage(const FlutterPlatformMessage* message, void* userdata) { const auto engine = static_cast(userdata); auto& codec = flutter::StandardMessageCodec::GetInstance(); const auto obj = codec.DecodeMessage(message->message, message->message_size); if (!obj->IsNull()) { auto map = std::get(*obj); auto type = std::get(map[flutter::EncodableValue("type")]); auto data = std::get(map[flutter::EncodableValue("data")]); auto msg = std::get(data[flutter::EncodableValue("message")]); SPDLOG_DEBUG("({}) Accessibility: type: {}, message: {}", engine->GetIndex(), type, msg); if (type == "disableAnimations") { auto value = engine->GetAccessibilityFeatures(); const auto enabled = std::get(data[flutter::EncodableValue("enabled")]); if (enabled) { value |= FlutterAccessibilityFeature:: kFlutterAccessibilityFeatureDisableAnimations; } else { value &= ~FlutterAccessibilityFeature:: kFlutterAccessibilityFeatureDisableAnimations; } engine->UpdateAccessibilityFeatures(value); SPDLOG_DEBUG("({}) Accessibility: type: {}, enabled: {}", engine->GetIndex(), type, (enabled ? "true" : "false")); } } engine->SendPlatformMessageResponse(message->response_handle, nullptr, 0); }