}
bool NativeWebRuntimeDelegateTV::IsMultitaskingSupport() {
- auto& app_data = ApplicationData::GetInstance();
+ static absl::optional<bool> is_multitasking_support;
+ if (is_multitasking_support.has_value())
+ return is_multitasking_support.value();
- bool multitasking_support = true;
- bool systemSupport = HasSystemMultitaskingSupport();
- LOG(INFO) << "system multitasking support = " << systemSupport;
- auto multitasking_value = app_data.GetMetadata(kMultitaskingSupport);
+ bool decided_multitasking = true;
+ bool system_multitasking = HasSystemMultitaskingSupport();
+ LOG(INFO) << "system multitasking support = " << system_multitasking;
+ auto& app_data = ApplicationData::GetInstance();
+ auto app_multitasking = app_data.GetMetadata(kMultitaskingSupport);
- if (systemSupport) {
- if (multitasking_value == "false") {
- multitasking_support = false;
+ if (system_multitasking) {
+ if (app_multitasking == "false") {
+ decided_multitasking = false;
LOG(INFO) << "multitasking.support : false";
}
} else {
- if (multitasking_value == "force") {
+ if (app_multitasking == "force") {
LOG(INFO) << "multitasking.support : force";
} else {
LOG(ERROR) << "this system doesn't support multitasking mode";
- multitasking_support = false;
+ decided_multitasking = false;
}
}
- return multitasking_support;
+ is_multitasking_support = decided_multitasking;
+ return is_multitasking_support.value();
}
} // namespace wrt