diff --git a/.github/actionlint.yaml b/.github/actionlint.yaml new file mode 100644 index 000000000000..3a4b77596014 --- /dev/null +++ b/.github/actionlint.yaml @@ -0,0 +1,20 @@ +# Configuration related to self-hosted runner. +self-hosted-runner: + # Labels of self-hosted runner in array of strings. + labels: + - chrobalt-linux-runner + - odt-runner + +# Path-specific configurations. +paths: + # TODO: Outstanding linting failures + .github/workflows/main.yaml: + # List of regular expressions to filter errors by the error messages. + ignore: + # Ignore the specific error from shellcheck + - 'shellcheck reported issue in this script: (SC2004|SC2086):.+' + .github/workflows/label-cherry-pick.yaml: + # List of regular expressions to filter errors by the error messages. + ignore: + # Ignore the specific error from shellcheck + - 'shellcheck reported issue in this script: (SC2053|SC2076|SC2199|SC2086):.+' diff --git a/.github/actions/internal_tests/action.yaml b/.github/actions/internal_tests/action.yaml index ab8954fff1b3..033a9e5cee88 100644 --- a/.github/actions/internal_tests/action.yaml +++ b/.github/actions/internal_tests/action.yaml @@ -77,6 +77,7 @@ runs: --label repository-${GITHUB_REPO} \ --label author-${GITHUB_PR_HEAD_USER_LOGIN:-$GITHUB_COMMIT_AUTHOR_USERNAME} \ --label author_id-${GITHUB_PR_HEAD_USER_ID:-$GITHUB_COMMIT_AUTHOR_EMAIL} \ + --label branch:${GITHUB_REF_NAME} \ --dimensions '${{ inputs.test_dimensions }}' \ --cobalt_path "${GCS_ARTIFACTS_PATH}" || { echo "Finished running tests..." diff --git a/.github/actions/on_device_tests/action.yaml b/.github/actions/on_device_tests/action.yaml index 03256528ac7c..f882f3d1e9db 100644 --- a/.github/actions/on_device_tests/action.yaml +++ b/.github/actions/on_device_tests/action.yaml @@ -87,6 +87,7 @@ runs: --label repository-${GITHUB_REPO} \ --label author-${GITHUB_PR_HEAD_USER_LOGIN:-$GITHUB_COMMIT_AUTHOR_USERNAME} \ --label author_id-${GITHUB_PR_HEAD_USER_ID:-$GITHUB_COMMIT_AUTHOR_EMAIL} \ + --label branch:${GITHUB_REF_NAME} \ --dimensions '${{ inputs.test_dimensions }}' \ ${TEST_ATTEMPTS:+"--test_attempts" "$TEST_ATTEMPTS"} \ --gcs_archive_path "${GCS_ARTIFACTS_PATH}" \ diff --git a/.github/workflows/label-cherry-pick.yaml b/.github/workflows/label-cherry-pick.yaml index ccf4d8826f04..566ecdaa65c9 100644 --- a/.github/workflows/label-cherry-pick.yaml +++ b/.github/workflows/label-cherry-pick.yaml @@ -114,7 +114,7 @@ jobs: ${{ github.event.pull_request.body }} - name: Comment on failure - uses: actions/github-script@v6 + uses: actions/github-script@v8 with: github-token: ${{ secrets.CHERRY_PICK_TOKEN }} script: | diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 67ee27a49777..1ff2b74521d7 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -12,7 +12,7 @@ on: - feature/* concurrency: - group: ${{ github.workflow }}-${{ github.event_name }}-${{ inputs.platform }} @ ${{ github.event.label.name || github.event.pull_request.number || github.sha }} @ ${{ github.event.label.name && github.event.pull_request.number || github.event.action }} + group: ${{ github.workflow }}-${{ github.event_name }} @ ${{ github.event.label.name || github.event.pull_request.number || github.sha }} @ ${{ github.event.label.name && github.event.pull_request.number || github.event.action }} cancel-in-progress: true permissions: {} diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index c065edfd5c73..c1ca738bc278 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -13,7 +13,6 @@ on: description: 'Nightly workflow.' required: true type: string - default: 'false' run_api_leak_detector: description: 'Whether to run the api leak detector.' required: false diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ebf9c44fa980..f85e74a05fef 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -36,6 +36,11 @@ repos: - id: end-of-file-fixer - id: mixed-line-ending - id: trailing-whitespace +- repo: https://github.com/rhysd/actionlint + rev: 03d0035246f3e81f36aed592ffb4bebf33a03106 + hooks: + - id: actionlint + files: ^.github/workflows - repo: local hooks: - id: chromium-pre-commit diff --git a/build/android/gyp/java_cpp_features.py b/build/android/gyp/java_cpp_features.py index 10639a54895f..5019a4d2656e 100755 --- a/build/android/gyp/java_cpp_features.py +++ b/build/android/gyp/java_cpp_features.py @@ -18,10 +18,11 @@ class FeatureParserDelegate(java_cpp_utils.CppConstantParser.Delegate): # Ex. 'BASE_FEATURE(kConstantName, "StringNameOfTheFeature", ...);' + # or 'STARBOARD_FEATURE(kConstantName, "StringNameOfTheFeature", ...);' # would parse as: # ExtractConstantName() -> 'ConstantName' # ExtractValue() -> '"StringNameOfTheFeature"' - FEATURE_RE = re.compile(r'BASE_FEATURE\(k([^,]+),') + FEATURE_RE = re.compile(r'(?:BASE_FEATURE|STARBOARD_FEATURE)\(k([^,]+),') VALUE_RE = re.compile(r'\s*("(?:\"|[^"])*")\s*,') def ExtractConstantName(self, line): diff --git a/cobalt/BUILD.gn b/cobalt/BUILD.gn index 76ea6c8e1791..58a4a0e372a7 100644 --- a/cobalt/BUILD.gn +++ b/cobalt/BUILD.gn @@ -96,6 +96,7 @@ if (is_ios && target_platform == "tvos") { "//cobalt/shell:cobalt_shell_app", "//cobalt/shell:cobalt_shell_lib", "//content/public/app", + "//starboard:starboard_group", ] bundle_deps = [ ":cobalt_shell_framework_resources", @@ -242,6 +243,7 @@ test("cobalt_unittests") { "//cobalt/browser/client_hint_headers/cobalt_header_value_provider_test.cc", "//cobalt/browser/client_hint_headers/cobalt_trusted_header_client_test.cc", "//cobalt/browser/client_hint_headers/cobalt_trusted_url_loader_header_client_test.cc", + "//cobalt/browser/command_line_logger_unittest.cc", "//cobalt/browser/experiments/experiment_config_manager_unittest.cc", "//cobalt/browser/global_features_unittest.cc", "//cobalt/browser/h5vcc_runtime/deep_link_manager_unittest.cc", @@ -270,6 +272,7 @@ test("cobalt_unittests") { ":common", "//base/test:run_all_unittests", "//base/test:test_support", + "//cobalt/browser:command_line_logger", "//cobalt/browser:global_features", "//cobalt/browser:metrics", "//cobalt/browser/client_hint_headers", diff --git a/cobalt/android/BUILD.gn b/cobalt/android/BUILD.gn index c54c0ee7ddba..fb13d7d0af7b 100644 --- a/cobalt/android/BUILD.gn +++ b/cobalt/android/BUILD.gn @@ -15,6 +15,15 @@ jinja_template("cobalt_manifest") { ] } +java_cpp_features("java_features_srcjar") { + # External code should depend on ":cobalt_features_java" instead. + visibility = [ ":*" ] + sources = [ "//starboard/extension/feature_config.h" ] + + deps = [ "//starboard/extension:feature_config_header" ] + template = "//cobalt/android/java_templates/StarboardFeatures.java.tmpl" +} + generate_jni("jni_headers") { sources = [ "apk/app/src/main/java/dev/cobalt/coat/AudioPermissionRequester.java", @@ -26,6 +35,7 @@ generate_jni("jni_headers") { "apk/app/src/main/java/dev/cobalt/coat/ResourceOverlay.java", "apk/app/src/main/java/dev/cobalt/coat/StarboardBridge.java", "apk/app/src/main/java/dev/cobalt/coat/javabridge/HTMLMediaElementExtension.java", + "apk/app/src/main/java/dev/cobalt/features/StarboardFeatureList.java", "apk/app/src/main/java/dev/cobalt/media/AudioOutputManager.java", "apk/app/src/main/java/dev/cobalt/media/AudioTrackBridge.java", "apk/app/src/main/java/dev/cobalt/media/MediaCodecBridge.java", @@ -100,6 +110,7 @@ android_library("cobalt_main_java") { } srcjar_deps = [ + ":java_features_srcjar", ":jni_headers", "//starboard/android/shared:java_enums", ] @@ -134,6 +145,7 @@ android_library("cobalt_main_java") { "apk/app/src/main/java/dev/cobalt/coat/javabridge/CobaltJavaScriptInterface.java", "apk/app/src/main/java/dev/cobalt/coat/javabridge/H5vccPlatformService.java", "apk/app/src/main/java/dev/cobalt/coat/javabridge/HTMLMediaElementExtension.java", + "apk/app/src/main/java/dev/cobalt/features/StarboardFeatureList.java", "apk/app/src/main/java/dev/cobalt/libraries/services/clientloginfo/ClientLogInfo.java", "apk/app/src/main/java/dev/cobalt/libraries/services/clientloginfo/ClientLogInfoModule.java", "apk/app/src/main/java/dev/cobalt/media/AudioOutputManager.java", diff --git a/cobalt/android/apk/app/src/main/java/dev/cobalt/coat/CobaltActivity.java b/cobalt/android/apk/app/src/main/java/dev/cobalt/coat/CobaltActivity.java index f203ffaf189e..1fa000bccd66 100644 --- a/cobalt/android/apk/app/src/main/java/dev/cobalt/coat/CobaltActivity.java +++ b/cobalt/android/apk/app/src/main/java/dev/cobalt/coat/CobaltActivity.java @@ -26,6 +26,7 @@ import android.net.Uri; import android.os.Bundle; import android.os.SystemClock; +import android.text.TextUtils; import android.view.KeyEvent; import android.view.View; import android.view.ViewGroup.LayoutParams; diff --git a/cobalt/android/apk/app/src/main/java/dev/cobalt/coat/CobaltConnectivityDetector.java b/cobalt/android/apk/app/src/main/java/dev/cobalt/coat/CobaltConnectivityDetector.java index 489d7fff797b..27c82d0ec2ec 100644 --- a/cobalt/android/apk/app/src/main/java/dev/cobalt/coat/CobaltConnectivityDetector.java +++ b/cobalt/android/apk/app/src/main/java/dev/cobalt/coat/CobaltConnectivityDetector.java @@ -106,16 +106,19 @@ public void activeNetworkCheck() { } else { handleFailure(); } + // Don't raise the error dialog if the thread is intentionally interrupted. + // Otherwise handleFailure() for timeout exceptions and all other exceptions. } catch (TimeoutException e) { handleFailure(); } catch (Exception e) { - if (e instanceof InterruptedException) { + if (e instanceof InterruptedException || e instanceof java.util.concurrent.CancellationException) { Thread.currentThread().interrupt(); // Preserve interrupt status. + } else { + Log.w(TAG, "Connectivity check failed with exception: " + e.getClass().getName(), e); + handleFailure(); } - Log.w(TAG, "Connectivity check failed with exception: " + e.getClass().getName(), e); - handleFailure(); } finally { - // This is crucial. It ensures the probe thread is discarded. + // Ensuring the probe thread is discarded. probeExecutor.shutdownNow(); } }); diff --git a/cobalt/android/apk/app/src/main/java/dev/cobalt/features/StarboardFeatureList.java b/cobalt/android/apk/app/src/main/java/dev/cobalt/features/StarboardFeatureList.java new file mode 100644 index 000000000000..3f3831de3120 --- /dev/null +++ b/cobalt/android/apk/app/src/main/java/dev/cobalt/features/StarboardFeatureList.java @@ -0,0 +1,46 @@ +// Copyright 2025 The Cobalt Authors. All Rights Reserved. +// +// 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. + +package dev.cobalt.features; + +import org.chromium.base.FeatureList; +import org.chromium.build.annotations.NullMarked; +import org.jni_zero.JNINamespace; +import org.jni_zero.NativeMethods; + +/** A FeatureList for our Starboard features to be used in Java. */ +@JNINamespace("starboard::features") +@NullMarked +public class StarboardFeatureList { + private StarboardFeatureList() {} + /** + * Returns whether the specified feature is enabled or not. + * + * Note: This queries features defined with STARBOARD_FEATURE in + * //starboard/extension/feature_config.h + * + * @param featureName The name of the feature to query. + * @return Whether the feature is enabled or not. + */ + public static boolean isEnabled(String featureName) { + assert FeatureList.isNativeInitialized(); + return StarboardFeatureListJni.get().isEnabled(featureName); + } + + /** Native Methods for StarboardFeatureList. */ + @NativeMethods + public interface Natives { + boolean isEnabled(String featureName); + } +} diff --git a/cobalt/android/java_templates/StarboardFeatures.java.tmpl b/cobalt/android/java_templates/StarboardFeatures.java.tmpl new file mode 100644 index 000000000000..6c32ab7b360c --- /dev/null +++ b/cobalt/android/java_templates/StarboardFeatures.java.tmpl @@ -0,0 +1,26 @@ +// Copyright 2025 The Cobalt Authors. All Rights Reserved. +// +// 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. + + package dev.cobalt.features; + + /** + * Contains features that are specific to Starboard code. + */ + public final class StarboardFeatures {{ + + {NATIVE_FEATURES} + + // Prevents instantiation. + private StarboardFeatures() {{}} + }} diff --git a/cobalt/app/tvos/main.mm b/cobalt/app/tvos/main.mm index 895db1463080..c3c6068fb6bb 100644 --- a/cobalt/app/tvos/main.mm +++ b/cobalt/app/tvos/main.mm @@ -27,6 +27,8 @@ #include "cobalt/shell/browser/shell.h" #include "content/public/app/content_main.h" #include "content/public/app/content_main_runner.h" +#include "starboard/common/command_line.h" +#include "starboard/tvos/shared/application_darwin.h" static int g_argc = 0; static const char** g_argv = nullptr; @@ -58,6 +60,7 @@ @interface CobaltAppDelegate : UIResponder { @private std::unique_ptr _mainRunner; std::unique_ptr _mainDelegate; + std::unique_ptr _starboardApplication; } @end @@ -80,6 +83,13 @@ - (BOOL)application:(UIApplication*)application const base::CommandLine::StringVector& processed_argv = cobalt_cmd_line.argv(); + // Initialize ApplicationDarwin before the content layer. This is required to + // enable audio playback via the audio sink, initialize PlaybackCapabilities, + // and set a valid command line, all of which are essential for proper + // operation of the Starboard media renderer. + _starboardApplication = std::make_unique( + std::make_unique(processed_argv)); + // content::ContentMainParams::argv uses regular char** for `argv`, so perform // a type conversion here. Note that even though `char_argv` is dependent on // the function-scoped `processed_argv`, content::RunContentProcess() copies diff --git a/cobalt/browser/BUILD.gn b/cobalt/browser/BUILD.gn index be13717095d1..24d795528a16 100644 --- a/cobalt/browser/BUILD.gn +++ b/cobalt/browser/BUILD.gn @@ -13,6 +13,7 @@ # limitations under the License. import("//starboard/build/buildflags.gni") +import("//testing/test.gni") source_set("browser") { # TODO(cobalt, b/375655377): remove testonly declaration, needed because of @@ -42,6 +43,7 @@ source_set("browser") { public_deps = [ "//content/public/browser" ] deps = [ + ":command_line_logger", ":features", ":global_features", ":metrics", @@ -150,3 +152,11 @@ source_set("metrics") { "//url", ] } + +source_set("command_line_logger") { + sources = [ + "command_line_logger.cc", + "command_line_logger.h", + ] + deps = [ "//base" ] +} diff --git a/cobalt/browser/cobalt_content_browser_client.cc b/cobalt/browser/cobalt_content_browser_client.cc index df548638ca17..4405238a5453 100644 --- a/cobalt/browser/cobalt_content_browser_client.cc +++ b/cobalt/browser/cobalt_content_browser_client.cc @@ -33,6 +33,7 @@ #include "cobalt/browser/cobalt_browser_main_parts.h" #include "cobalt/browser/cobalt_secure_navigation_throttle.h" #include "cobalt/browser/cobalt_web_contents_observer.h" +#include "cobalt/browser/command_line_logger.h" #include "cobalt/browser/constants/cobalt_experiment_names.h" #include "cobalt/browser/features.h" #include "cobalt/browser/global_features.h" @@ -534,6 +535,9 @@ void CobaltContentBrowserClient::CreateFeatureListAndFieldTrials() { << "], disable_features=[" << command_line.GetSwitchValueASCII(::switches::kDisableFeatures) << "]"; + LOG(INFO) << "CobaltCommandLine: " + << CommandLineSwitchesToString( + *base::CommandLine::ForCurrentProcess()); // Push the initialized features and params down to Starboard. features::InitializeStarboardFeatures(); diff --git a/cobalt/browser/command_line_logger.cc b/cobalt/browser/command_line_logger.cc new file mode 100644 index 000000000000..13e82be55b3e --- /dev/null +++ b/cobalt/browser/command_line_logger.cc @@ -0,0 +1,33 @@ +// Copyright 2024 The Cobalt Authors. All Rights Reserved. +// +// 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 "cobalt/browser/command_line_logger.h" + +#include + +#include "base/strings/string_util.h" +#include "base/strings/stringprintf.h" + +namespace cobalt { + +std::string CommandLineSwitchesToString(const base::CommandLine& command_line) { + std::vector switch_strings; + for (const auto& pair : command_line.GetSwitches()) { + switch_strings.push_back(base::StringPrintf( + "'%s': '%s'", pair.first.c_str(), pair.second.c_str())); + } + return base::JoinString(switch_strings, "\n"); +} + +} // namespace cobalt diff --git a/cobalt/browser/command_line_logger.h b/cobalt/browser/command_line_logger.h new file mode 100644 index 000000000000..7d2b0f838d85 --- /dev/null +++ b/cobalt/browser/command_line_logger.h @@ -0,0 +1,29 @@ +// Copyright 2024 The Cobalt Authors. All Rights Reserved. +// +// 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. + +#ifndef COBALT_BROWSER_COMMAND_LINE_LOGGER_H_ +#define COBALT_BROWSER_COMMAND_LINE_LOGGER_H_ + +#include + +#include "base/command_line.h" + +namespace cobalt { + +// Formats command line switches into a human-readable string for debugging. +std::string CommandLineSwitchesToString(const base::CommandLine& command_line); + +} // namespace cobalt + +#endif // COBALT_BROWSER_COMMAND_LINE_LOGGER_H_ diff --git a/cobalt/browser/command_line_logger_unittest.cc b/cobalt/browser/command_line_logger_unittest.cc new file mode 100644 index 000000000000..1744d0a86496 --- /dev/null +++ b/cobalt/browser/command_line_logger_unittest.cc @@ -0,0 +1,74 @@ +// Copyright 2024 The Cobalt Authors. All Rights Reserved. +// +// 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 "cobalt/browser/command_line_logger.h" + +#include "base/strings/string_split.h" +#include "base/strings/string_util.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace cobalt { +namespace { + +TEST(CommandLineLoggerTest, NoSwitches) { + base::CommandLine command_line(base::CommandLine::NO_PROGRAM); + EXPECT_EQ("", CommandLineSwitchesToString(command_line)); +} + +TEST(CommandLineLoggerTest, SingleSwitchNoValue) { + base::CommandLine command_line(base::CommandLine::NO_PROGRAM); + command_line.AppendSwitch("test-switch"); + EXPECT_EQ("'test-switch': ''", CommandLineSwitchesToString(command_line)); +} + +TEST(CommandLineLoggerTest, SingleSwitchWithValue) { + base::CommandLine command_line(base::CommandLine::NO_PROGRAM); + command_line.AppendSwitchASCII("test-switch", "value"); + EXPECT_EQ("'test-switch': 'value'", + CommandLineSwitchesToString(command_line)); +} + +TEST(CommandLineLoggerTest, MultipleSwitches) { + base::CommandLine command_line(base::CommandLine::NO_PROGRAM); + command_line.AppendSwitch("switch1"); + command_line.AppendSwitchASCII("switch2", "value2"); + command_line.AppendSwitch("switch3"); + + std::string formatted_switches = CommandLineSwitchesToString(command_line); + std::vector parts = + base::SplitString(formatted_switches, "\n", base::TRIM_WHITESPACE, + base::SPLIT_WANT_NONEMPTY); + EXPECT_THAT(parts, + testing::UnorderedElementsAre( + "'switch1': ''", "'switch2': 'value2'", "'switch3': ''")); +} + +TEST(CommandLineLoggerTest, SwitchesWithSpacesAndQuotes) { + base::CommandLine command_line(base::CommandLine::NO_PROGRAM); + command_line.AppendSwitchASCII("path", "/usr/local/bin/my app"); + command_line.AppendSwitchASCII("message", "Hello World"); + + // Note: CommandLine::AppendSwitchASCII handles internal quoting if needed. + std::string formatted_switches = CommandLineSwitchesToString(command_line); + std::vector parts = + base::SplitString(formatted_switches, "\n", base::TRIM_WHITESPACE, + base::SPLIT_WANT_NONEMPTY); + EXPECT_THAT(parts, + testing::UnorderedElementsAre("'path': '/usr/local/bin/my app'", + "'message': 'Hello World'")); +} + +} // namespace +} // namespace cobalt diff --git a/cobalt/common/features/BUILD.gn b/cobalt/common/features/BUILD.gn index 1accbb0077af..266626353628 100644 --- a/cobalt/common/features/BUILD.gn +++ b/cobalt/common/features/BUILD.gn @@ -24,4 +24,11 @@ static_library("features") { "//base", "//starboard/common:common", ] + + if (is_android) { + deps += [ + "//cobalt/android:jni_headers", + "//starboard/extension:feature_config_header", + ] + } } diff --git a/cobalt/shell/android/java/src/dev/cobalt/shell/Shell.java b/cobalt/shell/android/java/src/dev/cobalt/shell/Shell.java index 0e8d687b1231..de7b9a11695c 100644 --- a/cobalt/shell/android/java/src/dev/cobalt/shell/Shell.java +++ b/cobalt/shell/android/java/src/dev/cobalt/shell/Shell.java @@ -14,6 +14,9 @@ package dev.cobalt.shell; +import static org.chromium.build.NullUtil.assertNonNull; +import static org.chromium.build.NullUtil.assumeNonNull; + import android.app.Activity; import android.content.Context; import android.graphics.Rect; @@ -25,6 +28,10 @@ import android.view.ViewGroup; import android.widget.FrameLayout; import org.chromium.base.Callback; +import org.chromium.base.ResettersForTesting; +import org.chromium.build.annotations.Initializer; +import org.chromium.build.annotations.NullMarked; +import org.chromium.build.annotations.Nullable; import org.chromium.components.embedder_support.view.ContentViewRenderView; import org.chromium.content_public.browser.ActionModeCallbackHelper; import org.chromium.content_public.browser.LoadUrlParams; @@ -44,6 +51,7 @@ * Container for the various UI components that make up a shell window. */ @JNINamespace("content") +@NullMarked public class Shell { /** * Interface for notifying observers of WebContents readiness. @@ -67,16 +75,16 @@ public interface OnWebContentsReadyListener { private NavigationController mNavigationController; private long mNativeShell; - private ContentViewRenderView mContentViewRenderView; - private WindowAndroid mWindow; - private ShellViewAndroidDelegate mViewAndroidDelegate; + private @Nullable ContentViewRenderView mContentViewRenderView; + private @Nullable WindowAndroid mWindow; + private @Nullable ShellViewAndroidDelegate mViewAndroidDelegate; private boolean mLoading; private boolean mIsFullscreen; private boolean mIsActivityVisible; - private OnWebContentsReadyListener mWebContentsReadyListener; - private Callback mOverlayModeChangedCallbackForTesting; + private @Nullable OnWebContentsReadyListener mWebContentsReadyListener; + private @Nullable Callback mOverlayModeChangedCallbackForTesting; private ViewGroup mRootView; /** @@ -91,14 +99,14 @@ public void setRootViewForTesting(ViewGroup view) { mRootView = view; } - public void setWebContentsReadyListener(OnWebContentsReadyListener listener) { + public void setWebContentsReadyListener(@Nullable OnWebContentsReadyListener listener) { mWebContentsReadyListener = listener; } /** * Set the SurfaceView being rendered to as soon as it is available. */ - public void setContentViewRenderView(ContentViewRenderView contentViewRenderView) { + public void setContentViewRenderView(@Nullable ContentViewRenderView contentViewRenderView) { if (contentViewRenderView == null) { if (mContentViewRenderView != null) { mRootView.removeView(mContentViewRenderView); @@ -140,6 +148,7 @@ public void loadSplashScreenWebContents() { ShellJni.get().loadSplashScreenWebContents(mNativeShell); } + @SuppressWarnings("NullAway") @CalledByNative private void onNativeDestroyed() { mWindow = null; @@ -209,7 +218,7 @@ private void setIsLoading(boolean loading) { mLoading = loading; } - public ShellViewAndroidDelegate getViewAndroidDelegate() { + public @Nullable ShellViewAndroidDelegate getViewAndroidDelegate() { return mViewAndroidDelegate; } @@ -218,6 +227,7 @@ public ShellViewAndroidDelegate getViewAndroidDelegate() { * @param webContents A {@link WebContents} object. */ @CalledByNative + @Initializer private void initFromNativeTabContents(WebContents webContents) { if (webContents == null || mContentViewRenderView == null) return; mViewAndroidDelegate = new ShellViewAndroidDelegate(mRootView); @@ -226,11 +236,11 @@ private void initFromNativeTabContents(WebContents webContents) { webContents.setDelegates( "", mViewAndroidDelegate, null, mWindow, WebContents.createDefaultInternalsHolder()); mWebContents = webContents; - mNavigationController = mWebContents.getNavigationController(); + mNavigationController = assertNonNull(mWebContents.getNavigationController()); if (mIsActivityVisible) { mWebContents.updateWebContentsVisibility(Visibility.VISIBLE); } - mContentViewRenderView.setCurrentWebContents(mWebContents); + assumeNonNull(mContentViewRenderView).setCurrentWebContents(mWebContents); if (mWebContentsReadyListener != null) { mWebContentsReadyListener.onWebContentsReady(); } @@ -319,7 +329,7 @@ public void onGetContentRect(ActionMode mode, View view, Rect outRect) { @CalledByNative public void setOverlayMode(boolean useOverlayMode) { - mContentViewRenderView.setOverlayVideoMode(useOverlayMode); + assumeNonNull(mContentViewRenderView).setOverlayVideoMode(useOverlayMode); if (mOverlayModeChangedCallbackForTesting != null) { mOverlayModeChangedCallbackForTesting.onResult(useOverlayMode); } @@ -327,6 +337,7 @@ public void setOverlayMode(boolean useOverlayMode) { public void setOverayModeChangedCallbackForTesting(Callback callback) { mOverlayModeChangedCallbackForTesting = callback; + ResettersForTesting.register(() -> mOverlayModeChangedCallbackForTesting = null); } /** @@ -341,7 +352,7 @@ private void enableUiControl(int controlId, boolean enabled) {} /** * @return The {@link View} currently shown by this Shell. */ - public View getContentView() { + public @Nullable View getContentView() { ViewAndroidDelegate viewDelegate = mWebContents.getViewAndroidDelegate(); return viewDelegate != null ? viewDelegate.getContainerView() : null; } diff --git a/cobalt/shell/android/java/src/dev/cobalt/shell/ShellManager.java b/cobalt/shell/android/java/src/dev/cobalt/shell/ShellManager.java index 5a5fc631fb2c..b4a3579ebb1b 100644 --- a/cobalt/shell/android/java/src/dev/cobalt/shell/ShellManager.java +++ b/cobalt/shell/android/java/src/dev/cobalt/shell/ShellManager.java @@ -16,6 +16,10 @@ import android.content.Context; import org.chromium.base.ThreadUtils; +import org.chromium.build.annotations.Initializer; +import org.chromium.build.annotations.NullMarked; +import org.chromium.build.annotations.Nullable; +import org.chromium.build.annotations.RequiresNonNull; import org.chromium.components.embedder_support.view.ContentViewRenderView; import org.chromium.content_public.browser.Visibility; import org.chromium.content_public.browser.WebContents; @@ -29,15 +33,16 @@ * Container and generator of ShellViews. */ @JNINamespace("content") +@NullMarked public class ShellManager { private static final String TAG = "cobalt"; private WindowAndroid mWindow; - private Shell mActiveShell; + private @Nullable Shell mActiveShell; - private Shell.OnWebContentsReadyListener mNextWebContentsReadyListener; + private Shell.@Nullable OnWebContentsReadyListener mNextWebContentsReadyListener; // The target for all content rendering. - private ContentViewRenderView mContentViewRenderView; + private @Nullable ContentViewRenderView mContentViewRenderView; private Context mContext; @@ -68,6 +73,7 @@ public Context getContext() { /** * @param window The window used to generate all shells. */ + @Initializer public void setWindow(WindowAndroid window) { assert window != null; mWindow = window; @@ -85,14 +91,14 @@ public WindowAndroid getWindow() { /** * Get the ContentViewRenderView. */ - public ContentViewRenderView getContentViewRenderView() { + public @Nullable ContentViewRenderView getContentViewRenderView() { return mContentViewRenderView; } /** * @return The currently visible shell view or null if one is not showing. */ - public Shell getActiveShell() { + public @Nullable Shell getActiveShell() { return mActiveShell; } @@ -138,6 +144,7 @@ private Object createShell(long nativeShellPtr) { return shellView; } + @RequiresNonNull("mContentViewRenderView") private void showShell(Shell shellView) { if (mActiveShell != null) { mActiveShell.setContentViewRenderView(null); diff --git a/cobalt/shell/android/java/src/dev/cobalt/shell/ShellViewAndroidDelegate.java b/cobalt/shell/android/java/src/dev/cobalt/shell/ShellViewAndroidDelegate.java index 2bccfe145531..83d66e550b18 100644 --- a/cobalt/shell/android/java/src/dev/cobalt/shell/ShellViewAndroidDelegate.java +++ b/cobalt/shell/android/java/src/dev/cobalt/shell/ShellViewAndroidDelegate.java @@ -16,6 +16,8 @@ import android.graphics.Bitmap; import android.view.ViewGroup; +import org.chromium.build.annotations.NullMarked; +import org.chromium.build.annotations.Nullable; import org.chromium.ui.base.ViewAndroidDelegate; import org.chromium.ui.mojom.CursorType; @@ -24,6 +26,7 @@ * Implementation of the abstract class {@link ViewAndroidDelegate} for content shell. * Extended for testing. */ +@NullMarked public class ShellViewAndroidDelegate extends ViewAndroidDelegate { /** * An interface delegates a {@link CallbackHelper} for cursor update. see more in {@link @@ -37,7 +40,7 @@ public interface OnCursorUpdateHelper { void notifyCalled(int type); } - private OnCursorUpdateHelper mOnCursorUpdateHelper; + private @Nullable OnCursorUpdateHelper mOnCursorUpdateHelper; public ShellViewAndroidDelegate(ViewGroup containerView) { super(containerView); @@ -47,7 +50,7 @@ public void setOnCursorUpdateHelper(OnCursorUpdateHelper helper) { mOnCursorUpdateHelper = helper; } - public OnCursorUpdateHelper getOnCursorUpdateHelper() { + public @Nullable OnCursorUpdateHelper getOnCursorUpdateHelper() { return mOnCursorUpdateHelper; } diff --git a/cobalt/shell/android/javatests/AndroidManifest.xml b/cobalt/shell/android/javatests/AndroidManifest.xml index 747d9b91be3c..6d6a499bd375 100644 --- a/cobalt/shell/android/javatests/AndroidManifest.xml +++ b/cobalt/shell/android/javatests/AndroidManifest.xml @@ -1,3 +1,4 @@ +{% set enable_ad_id_permission = False %} {% extends "cobalt/shell/android/shell_apk/AndroidManifest.xml.jinja2" %} {# Copyright 2025 The Cobalt Authors. All Rights Reserved. @@ -29,6 +30,8 @@ limitations under the License. {% endblock %} +{% block ad_id_permission_block %}{% endblock %} + {% block extra_application_definitions_for_test %} + {% if enable_ad_id_permission %} + {% block ad_id_permission_block %} + {% endblock %} + {% endif %} {% block extra_uses_permissions %} {% endblock %} diff --git a/cobalt/shell/browser/shell_platform_delegate_aura.cc b/cobalt/shell/browser/shell_platform_delegate_aura.cc index aea4dd778895..c83b47f24a2c 100644 --- a/cobalt/shell/browser/shell_platform_delegate_aura.cc +++ b/cobalt/shell/browser/shell_platform_delegate_aura.cc @@ -12,10 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "cobalt/shell/browser/shell_platform_delegate.h" +// clang-format on + #include "base/containers/contains.h" #include "cobalt/shell/browser/shell.h" #include "cobalt/shell/browser/shell_platform_data_aura.h" -#include "cobalt/shell/browser/shell_platform_delegate.h" #include "content/public/browser/render_widget_host_view.h" #include "content/public/browser/web_contents.h" #include "ui/aura/env.h" diff --git a/cobalt/shell/browser/shell_platform_delegate_views.cc b/cobalt/shell/browser/shell_platform_delegate_views.cc index bced26a0b718..7d015502e859 100644 --- a/cobalt/shell/browser/shell_platform_delegate_views.cc +++ b/cobalt/shell/browser/shell_platform_delegate_views.cc @@ -12,6 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "cobalt/shell/browser/shell_platform_delegate.h" +// clang-format on + #include #include @@ -26,7 +30,6 @@ #include "build/build_config.h" #include "cobalt/shell/browser/cobalt_views_delegate.h" #include "cobalt/shell/browser/shell.h" -#include "cobalt/shell/browser/shell_platform_delegate.h" #include "content/public/browser/context_factory.h" #include "content/public/browser/render_widget_host_view.h" #include "content/public/browser/web_contents.h" diff --git a/cobalt/shell/browser/shell_web_contents_view_delegate_views.cc b/cobalt/shell/browser/shell_web_contents_view_delegate_views.cc index 717a5828fa4c..db98f7396d2f 100644 --- a/cobalt/shell/browser/shell_web_contents_view_delegate_views.cc +++ b/cobalt/shell/browser/shell_web_contents_view_delegate_views.cc @@ -12,9 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "cobalt/shell/browser/shell_web_contents_view_delegate.h" +// clang-format on + #include -#include "cobalt/shell/browser/shell_web_contents_view_delegate.h" #include "content/public/browser/web_contents.h" namespace content { diff --git a/cobalt/testing/browser_tests/BUILD.gn b/cobalt/testing/browser_tests/BUILD.gn index f088e2341398..3ec7c113c47d 100644 --- a/cobalt/testing/browser_tests/BUILD.gn +++ b/cobalt/testing/browser_tests/BUILD.gn @@ -158,6 +158,7 @@ if (is_android) { "//base:base_java", "//base:base_java_test_support", "//base:content_uri_utils_java", + "//cobalt/android:cobalt_main_java", "//cobalt/shell/android:cobalt_shell_java", "//components/download/internal/common:internal_java", "//components/metrics:metrics_java", @@ -172,10 +173,7 @@ if (is_android) { android_resources("content_browsertests_resources") { testonly = true - sources = [ - "browsertests_apk/res/layout/test_activity.xml", - "browsertests_apk/res/xml/file_paths.xml", - ] + sources = [ "browsertests_apk/res/xml/file_paths.xml" ] } } @@ -198,7 +196,7 @@ test("cobalt_browsertests") { #"media_browsertest.h", #"media_session_browsertest.cc", #"media_source_browsertest.cc", - #"navigation_browsertest.cc", + "navigation_browsertest.cc", #"session_history_browsertest.cc", #"site_per_process_browsertest.cc", #"site_per_process_browsertest.h", @@ -217,6 +215,10 @@ test("cobalt_browsertests") { #TODO(b/433354983): Use the shared "sources" list once cobalt_browsertests # can run on other platforms. "content_main_runner_impl_browsertest.cc", + "media_browsertest.cc", + "media_browsertest.h", + "media_session_browsertest.cc", + "media_source_browsertest.cc", ] } @@ -240,10 +242,12 @@ test("cobalt_browsertests") { deps = [ ":cobalt_browsertests_test_runner", + ":cobalt_shell_test_lib", "//base/test:test_support", "//build:chromecast_buildflags", "//build:chromeos_buildflags", "//cc/slim", + "//cobalt/shell:cobalt_shell_lib", "//cobalt/shell:pak", "//components/attribution_reporting:mojom", "//components/discardable_memory/client", @@ -269,11 +273,11 @@ test("cobalt_browsertests") { "//content/browser/background_sync:background_sync_proto", "//content/child:for_content_tests", "//content/gpu", - "//content/public/browser", "//content/public/gpu", "//content/renderer:for_content_tests", "//content/services/auction_worklet/public/mojom:for_content_tests", "//content/test:mojo_web_test_bindings", + "//content/test:test_support", "//content/test:web_ui_managed_interface_tests_bindings", "//content/test:web_ui_ts_test_mojo_bindings", "//device/base/synchronization", @@ -439,8 +443,11 @@ static_library("cobalt_shell_test_lib") { "utility/shell_content_utility_client.h", ] + public_deps = [ ":cobalt_browsertests_support" ] + deps = [ ":cobalt_browsertests_support", + ":cobalt_browsertests_support_mojom", "//cc/base", "//cobalt/shell:cobalt_shell_app", "//cobalt/shell:cobalt_shell_lib", @@ -457,10 +464,10 @@ static_library("cobalt_shell_test_lib") { "browser/shell_platform_test_data_aura.h", ] deps += [ "//ui/aura" ] + } - if (shell_use_toolkit_views) { - deps += [ "//ui/views:test_support" ] - } + if (shell_use_toolkit_views) { + deps += [ "//ui/views:test_support" ] } } @@ -485,6 +492,7 @@ source_set("cobalt_browsertests_support") { "//components/custom_handlers:test_support", "//components/metrics:test_support", "//components/services/storage/test_api", + "//content/browser", "//content/common:main_frame_counter", "//content/public/child", "//content/public/common", diff --git a/cobalt/testing/browser_tests/browsertests_apk/res/layout/test_activity.xml b/cobalt/testing/browser_tests/browsertests_apk/res/layout/test_activity.xml deleted file mode 100644 index e7227cd03609..000000000000 --- a/cobalt/testing/browser_tests/browsertests_apk/res/layout/test_activity.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - diff --git a/cobalt/testing/browser_tests/browsertests_apk/src/org/chromium/content_browsertests_apk/ContentBrowserTestsActivity.java b/cobalt/testing/browser_tests/browsertests_apk/src/org/chromium/content_browsertests_apk/ContentBrowserTestsActivity.java index 697e80524da2..7da7b8a53267 100644 --- a/cobalt/testing/browser_tests/browsertests_apk/src/org/chromium/content_browsertests_apk/ContentBrowserTestsActivity.java +++ b/cobalt/testing/browser_tests/browsertests_apk/src/org/chromium/content_browsertests_apk/ContentBrowserTestsActivity.java @@ -16,10 +16,10 @@ import android.os.Bundle; -import org.chromium.base.test.util.UrlUtils; - import java.io.File; +import org.chromium.base.test.util.UrlUtils; + /** * Android activity for running content_public.browser.tests */ @@ -40,15 +40,4 @@ protected File getPrivateDataDirectory() { return new File(UrlUtils.getIsolatedTestRoot(), ContentBrowserTestsApplication.PRIVATE_DATA_DIRECTORY_SUFFIX); } - - @Override - protected int getTestActivityViewId() { - return R.layout.test_activity; - } - - @Override - protected int getShellManagerViewId() { - return R.id.shell_container; - } - } diff --git a/cobalt/testing/browser_tests/browsertests_apk/src/org/chromium/content_browsertests_apk/ContentBrowserTestsApplication.java b/cobalt/testing/browser_tests/browsertests_apk/src/org/chromium/content_browsertests_apk/ContentBrowserTestsApplication.java index 9d5ddf7a8aa8..8499eb8aa64e 100644 --- a/cobalt/testing/browser_tests/browsertests_apk/src/org/chromium/content_browsertests_apk/ContentBrowserTestsApplication.java +++ b/cobalt/testing/browser_tests/browsertests_apk/src/org/chromium/content_browsertests_apk/ContentBrowserTestsApplication.java @@ -15,7 +15,7 @@ package org.chromium.content_browsertests_apk; import android.content.Context; - +import dev.cobalt.coat.StarboardBridge; import org.chromium.base.PathUtils; import org.chromium.native_test.NativeBrowserTestApplication; import org.chromium.ui.base.ResourceBundle; @@ -23,9 +23,22 @@ /** * A basic content_public.browser.tests {@link android.app.Application}. */ -public class ContentBrowserTestsApplication extends NativeBrowserTestApplication { +public class ContentBrowserTestsApplication extends NativeBrowserTestApplication + implements StarboardBridge.HostApplication { static final String PRIVATE_DATA_DIRECTORY_SUFFIX = "content_shell"; + private StarboardBridge mStarboardBridge; + + @Override + public void setStarboardBridge(StarboardBridge starboardBridge) { + mStarboardBridge = starboardBridge; + } + + @Override + public StarboardBridge getStarboardBridge() { + return mStarboardBridge; + } + @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); diff --git a/cobalt/testing/browser_tests/browsertests_apk/src/org/chromium/content_browsertests_apk/ContentShellBrowserTestActivity.java b/cobalt/testing/browser_tests/browsertests_apk/src/org/chromium/content_browsertests_apk/ContentShellBrowserTestActivity.java index 56f800e82355..05cc590ac1bb 100644 --- a/cobalt/testing/browser_tests/browsertests_apk/src/org/chromium/content_browsertests_apk/ContentShellBrowserTestActivity.java +++ b/cobalt/testing/browser_tests/browsertests_apk/src/org/chromium/content_browsertests_apk/ContentShellBrowserTestActivity.java @@ -14,46 +14,50 @@ package org.chromium.content_browsertests_apk; -import android.content.Context; -import android.net.Uri; +import android.app.Activity; +import android.app.Service; import android.view.Window; import android.view.WindowManager; -import androidx.core.content.FileProvider; - -import org.chromium.base.ContextUtils; -import org.chromium.base.FileProviderUtils; import org.chromium.base.StrictModeContext; +import dev.cobalt.coat.StarboardBridge; +import dev.cobalt.shell.ShellManager; +import dev.cobalt.util.Holder; import org.chromium.base.library_loader.LibraryLoader; import org.chromium.base.library_loader.LibraryProcessType; import org.chromium.content_public.browser.BrowserStartupController; import org.chromium.content_public.browser.BrowserStartupController.StartupCallback; -import dev.cobalt.shell.ShellManager; import org.chromium.native_test.NativeBrowserTest; import org.chromium.native_test.NativeBrowserTestActivity; import org.chromium.ui.base.ActivityWindowAndroid; import org.chromium.ui.base.IntentRequestTracker; import org.chromium.ui.base.WindowAndroid; -import java.io.File; - /** An Activity base class for running browser tests against ContentShell. */ -public abstract class ContentShellBrowserTestActivity extends NativeBrowserTestActivity { +public abstract class ContentShellBrowserTestActivity extends NativeBrowserTestActivity + implements StarboardBridge.HostApplication { private static final String TAG = "native_test"; private ShellManager mShellManager; private WindowAndroid mWindowAndroid; + private StarboardBridge mStarboardBridge; - private static class FileProviderHelper implements FileProviderUtils.FileProviderUtil { - // Keep this variable in sync with the value defined in file_paths.xml. - private static final String API_AUTHORITY_SUFFIX = ".FileProvider"; + @Override + public void setStarboardBridge(StarboardBridge starboardBridge) { + mStarboardBridge = starboardBridge; + } - @Override - public Uri getContentUriFromFile(File file) { - Context appContext = ContextUtils.getApplicationContext(); - return FileProvider.getUriForFile( - appContext, appContext.getPackageName() + API_AUTHORITY_SUFFIX, file); + @Override + public StarboardBridge getStarboardBridge() { + return mStarboardBridge; + } + + @Override + protected void onDestroy() { + if (mShellManager != null) { + mShellManager.destroy(); } + super.onDestroy(); } /** @@ -68,8 +72,6 @@ protected void initializeBrowserProcess() { LibraryLoader.getInstance().ensureInitialized(); } - FileProviderUtils.setFileProviderUtil(new FileProviderHelper()); - setContentView(getTestActivityViewId()); mShellManager = new ShellManager(this); IntentRequestTracker intentRequestTracker = IntentRequestTracker.createFromActivity(this); mWindowAndroid = @@ -81,6 +83,16 @@ protected void initializeBrowserProcess() { /* trackOcclusion= */ true); mShellManager.setWindow(mWindowAndroid); + // Instantiate StarboardBridge. This is crucial for initializing the native Starboard + // environment that the storage migration relies on. + mStarboardBridge = new StarboardBridge(getApplicationContext(), + new Holder(), + new Holder(), // Set to null below + null, // ArtworkDownloader is not needed for tests + new String[0], // args + ""); // startDeepLink + ((StarboardBridge.HostApplication) getApplication()).setStarboardBridge(mStarboardBridge); + Window wind = this.getWindow(); wind.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); wind.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); @@ -127,7 +139,5 @@ protected String getUserDataDirectoryCommandLineSwitch() { return "user-data-dir"; } - protected abstract int getTestActivityViewId(); - protected abstract int getShellManagerViewId(); } diff --git a/cobalt/testing/browser_tests/cobalt_browser_tests_main.cc b/cobalt/testing/browser_tests/cobalt_browser_tests_main.cc index 8c002cd2adc0..94a521c7c08a 100644 --- a/cobalt/testing/browser_tests/cobalt_browser_tests_main.cc +++ b/cobalt/testing/browser_tests/cobalt_browser_tests_main.cc @@ -30,9 +30,6 @@ #include "ui/ozone/platform/starboard/platform_event_source_starboard.h" namespace { - -static ui::PlatformEventSourceStarboard* g_platform_event_source = nullptr; - // This delegate is the bridge between the content::LaunchTests function // and the Google Test framework. class StarboardTestLauncherDelegate : public content::TestLauncherDelegate { @@ -63,8 +60,6 @@ void SbEventHandle(const SbEvent* event) { base::InitStarboardTestMessageLoop(); - g_platform_event_source = new ui::PlatformEventSourceStarboard(); - int test_result_code = content::LaunchTests(&delegate, 1, start_data->argument_count, const_cast(start_data->argument_values)); @@ -76,9 +71,6 @@ void SbEventHandle(const SbEvent* event) { // alive at AtExit, causing a "Dangling Pointer" crash. content::ShellDevToolsManagerDelegate::StopHttpHandler(); - delete g_platform_event_source; - g_platform_event_source = nullptr; - SbSystemRequestStop(test_result_code); } } diff --git a/cobalt/testing/browser_tests/content_browser_test_utils.cc b/cobalt/testing/browser_tests/content_browser_test_utils.cc index 52dc943bd7df..eee34d141c90 100644 --- a/cobalt/testing/browser_tests/content_browser_test_utils.cc +++ b/cobalt/testing/browser_tests/content_browser_test_utils.cc @@ -24,6 +24,7 @@ #include "base/threading/thread_restrictions.h" #include "base/uuid.h" #include "build/build_config.h" +#include "cobalt/shell/browser/shell.h" #include "cobalt/shell/browser/shell_javascript_dialog_manager.h" #include "cobalt/testing/browser_tests/browser/test_shell.h" #include "cobalt/testing/browser_tests/content_browser_test_utils_internal.h" @@ -67,7 +68,7 @@ GURL GetTestUrl(const char* dir, const char* file) { } void NavigateToURLBlockUntilNavigationsComplete( - TestShell* window, + Shell* window, const GURL& url, int number_of_navigations, bool ignore_uncommitted_navigations) { @@ -76,7 +77,7 @@ void NavigateToURLBlockUntilNavigationsComplete( ignore_uncommitted_navigations); } -void ReloadBlockUntilNavigationsComplete(TestShell* window, +void ReloadBlockUntilNavigationsComplete(Shell* window, int number_of_navigations) { WaitForLoadStop(window->web_contents()); TestNavigationObserver same_tab_observer(window->web_contents(), @@ -87,7 +88,7 @@ void ReloadBlockUntilNavigationsComplete(TestShell* window, } void ReloadBypassingCacheBlockUntilNavigationsComplete( - TestShell* window, + Shell* window, int number_of_navigations) { WaitForLoadStop(window->web_contents()); TestNavigationObserver same_tab_observer(window->web_contents(), @@ -97,17 +98,17 @@ void ReloadBypassingCacheBlockUntilNavigationsComplete( same_tab_observer.Wait(); } -bool NavigateToURL(TestShell* window, const GURL& url) { +bool NavigateToURL(Shell* window, const GURL& url) { return NavigateToURL(window, url, url); } -bool NavigateToURL(TestShell* window, +bool NavigateToURL(Shell* window, const GURL& url, const GURL& expected_commit_url) { return NavigateToURL(window->web_contents(), url, expected_commit_url); } -bool NavigateToURLAndExpectNoCommit(TestShell* window, const GURL& url) { +bool NavigateToURLAndExpectNoCommit(Shell* window, const GURL& url) { NavigationEntry* old_entry = window->web_contents()->GetController().GetLastCommittedEntry(); NavigateToURLBlockUntilNavigationsComplete( @@ -119,7 +120,7 @@ bool NavigateToURLAndExpectNoCommit(TestShell* window, const GURL& url) { return old_entry == new_entry; } -AppModalDialogWaiter::AppModalDialogWaiter(TestShell* shell) : shell_(shell) { +AppModalDialogWaiter::AppModalDialogWaiter(Shell* shell) : shell_(shell) { Restart(); } @@ -149,7 +150,7 @@ void AppModalDialogWaiter::EarlyCallback() { was_dialog_request_callback_called_ = true; } -RenderFrameHost* ConvertToRenderFrameHost(TestShell* shell) { +RenderFrameHost* ConvertToRenderFrameHost(Shell* shell) { return shell->web_contents()->GetPrimaryMainFrame(); } @@ -190,13 +191,13 @@ void LookupAndLogNameAndIdOfFirstCamera() { } ShellAddedObserver::ShellAddedObserver() { - TestShell::SetShellCreatedCallback(base::BindOnce( + Shell::SetShellCreatedCallback(base::BindOnce( &ShellAddedObserver::ShellCreated, base::Unretained(this))); } ShellAddedObserver::~ShellAddedObserver() = default; -TestShell* ShellAddedObserver::GetShell() { +Shell* ShellAddedObserver::GetShell() { if (shell_) { return shell_; } @@ -206,7 +207,7 @@ TestShell* ShellAddedObserver::GetShell() { return shell_; } -void ShellAddedObserver::ShellCreated(TestShell* shell) { +void ShellAddedObserver::ShellCreated(Shell* shell) { DCHECK(!shell_); shell_ = shell; if (runner_) { @@ -268,18 +269,6 @@ void IsolateOriginsForTesting( } } -#if BUILDFLAG(IS_WIN) - -void SetMockCursorPositionForTesting(WebContents* web_contents, - const gfx::Point& position) { - views::test::DesktopWindowTreeHostWinTestApi host( - static_cast( - web_contents->GetNativeView()->GetHost())); - host.SetMockCursorPositionForTesting(position); -} - -#endif // BUILDFLAG(IS_WIN) - // TODO(crbug.com/40278950): Use // `WebFrameWidgetImpl::NotifySwapAndPresentationTime` instead. void WaitForCopyableView(WebContents* web_contents) { diff --git a/cobalt/testing/browser_tests/content_browser_test_utils.h b/cobalt/testing/browser_tests/content_browser_test_utils.h index b4d44f650adb..89a893f3745c 100644 --- a/cobalt/testing/browser_tests/content_browser_test_utils.h +++ b/cobalt/testing/browser_tests/content_browser_test_utils.h @@ -57,7 +57,7 @@ class EmbeddedTestServer; namespace content { class RenderFrameHost; class RenderWidgetHost; -class TestShell; +class Shell; class ToRenderFrameHost; class WebContents; @@ -89,14 +89,14 @@ GURL GetTestUrl(const char* dir, const char* file); // version below which also takes the expected commit URL. If the navigation // will not result in a commit, such as a download or a 204 response, use // NavigateToURLAndExpectNoCommit() instead. -[[nodiscard]] bool NavigateToURL(TestShell* window, const GURL& url); +[[nodiscard]] bool NavigateToURL(Shell* window, const GURL& url); // Same as above, but takes in an additional URL, |expected_commit_url|, to // which the navigation should eventually commit. This is useful for cases // like redirects, where navigation starts on one URL but ends up committing a // different URL. This function will return true if navigating to |url| // results in a successful commit to |expected_commit_url|. -[[nodiscard]] bool NavigateToURL(TestShell* window, +[[nodiscard]] bool NavigateToURL(Shell* window, const GURL& url, const GURL& expected_commit_url); @@ -104,7 +104,7 @@ GURL GetTestUrl(const char* dir, const char* file); // finishes. If |ignore_uncommitted_navigations| is true, then an aborted // navigation also counts toward |number_of_navigations| being complete. void NavigateToURLBlockUntilNavigationsComplete( - TestShell* window, + Shell* window, const GURL& url, int number_of_navigations, bool ignore_uncommitted_navigations = true); @@ -112,17 +112,17 @@ void NavigateToURLBlockUntilNavigationsComplete( // Navigates |window| to |url|, blocks until the navigation finishes, and // checks that the navigation did not commit (e.g., due to a crash or // download). -[[nodiscard]] bool NavigateToURLAndExpectNoCommit(TestShell* window, +[[nodiscard]] bool NavigateToURLAndExpectNoCommit(Shell* window, const GURL& url); // Reloads |window|, blocking until the given number of navigations finishes. -void ReloadBlockUntilNavigationsComplete(TestShell* window, +void ReloadBlockUntilNavigationsComplete(Shell* window, int number_of_navigations); // Reloads |window| with bypassing cache flag, and blocks until the given number // of navigations finishes. void ReloadBypassingCacheBlockUntilNavigationsComplete( - TestShell* window, + Shell* window, int number_of_navigations); // A class to help with waiting for at least one javascript dialog to be @@ -137,7 +137,7 @@ void ReloadBypassingCacheBlockUntilNavigationsComplete( // that could request a modal dialog. class AppModalDialogWaiter { public: - explicit AppModalDialogWaiter(TestShell* shell); + explicit AppModalDialogWaiter(Shell* shell); void Restart(); void Wait(); @@ -148,11 +148,11 @@ class AppModalDialogWaiter { private: void EarlyCallback(); bool was_dialog_request_callback_called_ = false; - raw_ptr shell_; + raw_ptr shell_; }; // Extends the ToRenderFrameHost mechanism to content::Shells. -RenderFrameHost* ConvertToRenderFrameHost(TestShell* shell); +RenderFrameHost* ConvertToRenderFrameHost(Shell* shell); // Writes an entry with the name and id of the first camera to the logs or // an entry indicating that no camera is available. This must be invoked from @@ -173,12 +173,12 @@ class ShellAddedObserver { // Will run a message loop to wait for the new window if it hasn't been // created since the constructor. - TestShell* GetShell(); + Shell* GetShell(); private: - void ShellCreated(TestShell* shell); + void ShellCreated(Shell* shell); - raw_ptr shell_ = nullptr; + raw_ptr shell_ = nullptr; std::unique_ptr runner_; }; @@ -276,13 +276,6 @@ void IsolateOriginsForTesting( WebContents* web_contents, std::vector origins_to_isolate); -#if BUILDFLAG(IS_WIN) - -void SetMockCursorPositionForTesting(WebContents* web_contents, - const gfx::Point& position); - -#endif // BUILDFLAG(IS_WIN) - // Blocks the current execution until the renderer main thread in the main frame // is in a steady state, so the caller can issue an `viz::CopyOutputRequest` // against the current `WebContents`. diff --git a/cobalt/testing/browser_tests/content_browser_test_utils_internal.cc b/cobalt/testing/browser_tests/content_browser_test_utils_internal.cc index 0ea5c4d85fba..27e1941c332e 100644 --- a/cobalt/testing/browser_tests/content_browser_test_utils_internal.cc +++ b/cobalt/testing/browser_tests/content_browser_test_utils_internal.cc @@ -91,9 +91,7 @@ bool NavigateFrameToURL(FrameTreeNode* node, const GURL& url) { return true; } -void SetShouldProceedOnBeforeUnload(TestShell* shell, - bool proceed, - bool success) { +void SetShouldProceedOnBeforeUnload(Shell* shell, bool proceed, bool success) { ShellJavaScriptDialogManager* manager = static_cast( shell->GetJavaScriptDialogManager(shell->web_contents())); @@ -104,7 +102,7 @@ RenderFrameHost* ConvertToRenderFrameHost(FrameTreeNode* frame_tree_node) { return frame_tree_node->current_frame_host(); } -bool NavigateToURLInSameBrowsingInstance(TestShell* window, const GURL& url) { +bool NavigateToURLInSameBrowsingInstance(Shell* window, const GURL& url) { TestNavigationObserver observer(window->web_contents()); // Using a PAGE_TRANSITION_LINK transition with a browser-initiated // navigation forces it to stay in the current BrowsingInstance, as normally @@ -241,11 +239,11 @@ CollectAllRenderFrameHostsIncludingSpeculative(WebContentsImpl* web_contents) { return visited_frames; } -TestShell* OpenBlankWindow(WebContentsImpl* web_contents) { +Shell* OpenBlankWindow(WebContentsImpl* web_contents) { FrameTreeNode* root = web_contents->GetPrimaryFrameTree().root(); ShellAddedObserver new_shell_observer; EXPECT_TRUE(ExecJs(root, "last_opened_window = window.open()")); - TestShell* new_shell = new_shell_observer.GetShell(); + Shell* new_shell = new_shell_observer.GetShell(); EXPECT_NE(new_shell->web_contents(), web_contents); EXPECT_TRUE(new_shell->web_contents() ->GetController() @@ -255,12 +253,12 @@ TestShell* OpenBlankWindow(WebContentsImpl* web_contents) { return new_shell; } -TestShell* OpenWindow(WebContentsImpl* web_contents, const GURL& url) { +Shell* OpenWindow(WebContentsImpl* web_contents, const GURL& url) { FrameTreeNode* root = web_contents->GetPrimaryFrameTree().root(); ShellAddedObserver new_shell_observer; EXPECT_TRUE( ExecJs(root, JsReplace("last_opened_window = window.open($1)", url))); - TestShell* new_shell = new_shell_observer.GetShell(); + Shell* new_shell = new_shell_observer.GetShell(); EXPECT_NE(new_shell->web_contents(), web_contents); return new_shell; } @@ -519,17 +517,17 @@ std::string DepictFrameTree(FrameTreeNode& root) { return FrameTreeVisualizer().DepictFrameTree(&root); } -TestShell* OpenPopup(const ToRenderFrameHost& opener, - const GURL& url, - const std::string& name) { +Shell* OpenPopup(const ToRenderFrameHost& opener, + const GURL& url, + const std::string& name) { return OpenPopup(opener, url, name, "", true); } -TestShell* OpenPopup(const ToRenderFrameHost& opener, - const GURL& url, - const std::string& name, - const std::string& features, - bool expect_return_from_window_open) { +Shell* OpenPopup(const ToRenderFrameHost& opener, + const GURL& url, + const std::string& name, + const std::string& features, + bool expect_return_from_window_open) { TestNavigationObserver observer(url); observer.StartWatchingNewWebContents(); @@ -544,7 +542,7 @@ TestShell* OpenPopup(const ToRenderFrameHost& opener, observer.Wait(); - TestShell* new_shell = new_shell_observer.GetShell(); + Shell* new_shell = new_shell_observer.GetShell(); EXPECT_EQ( url, new_shell->web_contents()->GetPrimaryMainFrame()->GetLastCommittedURL()); diff --git a/cobalt/testing/browser_tests/content_browser_test_utils_internal.h b/cobalt/testing/browser_tests/content_browser_test_utils_internal.h index 9dba87ec6969..aaca69f909ad 100644 --- a/cobalt/testing/browser_tests/content_browser_test_utils_internal.h +++ b/cobalt/testing/browser_tests/content_browser_test_utils_internal.h @@ -54,7 +54,7 @@ class FrameTreeNode; class RenderFrameHost; class RenderFrameHostImpl; class RenderWidgetHostImpl; -class TestShell; +class Shell; class SiteInstance; class SiteInstanceGroup; class ToRenderFrameHost; @@ -66,9 +66,7 @@ bool NavigateFrameToURL(FrameTreeNode* node, const GURL& url); // Sets the DialogManager to proceed by default or not when showing a // BeforeUnload dialog, and if it proceeds, what value to return. -void SetShouldProceedOnBeforeUnload(TestShell* shell, - bool proceed, - bool success); +void SetShouldProceedOnBeforeUnload(Shell* shell, bool proceed, bool success); // Extends the ToRenderFrameHost mechanism to FrameTreeNodes. RenderFrameHost* ConvertToRenderFrameHost(FrameTreeNode* frame_tree_node); @@ -78,7 +76,7 @@ RenderFrameHost* ConvertToRenderFrameHost(FrameTreeNode* frame_tree_node); // browser-initiated navigations swap BrowsingInstances, but some tests need a // navigation to swap processes for cross-site URLs (even outside of // --site-per-process) while staying in the same BrowsingInstance. -[[nodiscard]] bool NavigateToURLInSameBrowsingInstance(TestShell* window, +[[nodiscard]] bool NavigateToURLInSameBrowsingInstance(Shell* window, const GURL& url); // Helper function to checks for a subframe navigation starting in @@ -128,12 +126,12 @@ CollectAllRenderFrameHostsIncludingSpeculative(WebContentsImpl* web_contents); // Open a new popup passing no URL to window.open, which results in a blank page // and only the initial entry. Returns the newly created shell. Also saves the // reference to the opened window in the "last_opened_window" variable in JS. -TestShell* OpenBlankWindow(WebContentsImpl* web_contents); +Shell* OpenBlankWindow(WebContentsImpl* web_contents); // Pop open a new window that navigates to |url|. Returns the newly created // shell. Also saves the reference to the opened window in the // "last_opened_window" variable in JS. -TestShell* OpenWindow(WebContentsImpl* web_contents, const GURL& url); +Shell* OpenWindow(WebContentsImpl* web_contents, const GURL& url); // Creates compact textual representations of the state of the frame tree that // is appropriate for use in assertions. @@ -219,17 +217,17 @@ std::string DepictFrameTree(FrameTreeNode& root); // Waits for the navigation to |url| to finish and then returns the new popup's // Shell. Note that since this navigation to |url| is renderer-initiated, it // won't cause a process swap unless used in --site-per-process mode. -TestShell* OpenPopup(const ToRenderFrameHost& opener, - const GURL& url, - const std::string& name, - const std::string& features, - bool expect_return_from_window_open); +Shell* OpenPopup(const ToRenderFrameHost& opener, + const GURL& url, + const std::string& name, + const std::string& features, + bool expect_return_from_window_open); // Same as above, but with an empty |features| and // |expect_return_from_window_open| assumed to be true.. -TestShell* OpenPopup(const ToRenderFrameHost& opener, - const GURL& url, - const std::string& name); +Shell* OpenPopup(const ToRenderFrameHost& opener, + const GURL& url, + const std::string& name); // This class is a TestNavigationManager that only monitors notifications within // the given frame tree node. diff --git a/cobalt/testing/browser_tests/content_main_runner_impl_browsertest.cc b/cobalt/testing/browser_tests/content_main_runner_impl_browsertest.cc index d5d7ad532a4d..4f4d9fef9a5a 100644 --- a/cobalt/testing/browser_tests/content_main_runner_impl_browsertest.cc +++ b/cobalt/testing/browser_tests/content_main_runner_impl_browsertest.cc @@ -207,7 +207,6 @@ class ContentMainRunnerImplBrowserTest : public ContentBrowserTest { using Super = ContentBrowserTest; void SetUp() override { - // Empty process name means the browser process. const std::string kBrowserProcessType = ""; // These methods may or may not be called, depending on configuration. @@ -223,11 +222,12 @@ class ContentMainRunnerImplBrowserTest : public ContentBrowserTest { EXPECT_CALL(mock_delegate_, MockSandboxInitialized(kBrowserProcessType)) .Times(AtMost(1)); - // ContentBrowserTestShellMainDelegate calls these internally, so allow - // extra calls to them out of sequence. + // Called once directly and once via PostEarlyInitialization. EXPECT_CALL(mock_delegate_, ShouldCreateFeatureList(_)) + .Times(testing::AtLeast(2)) .WillRepeatedly(Return(true)); EXPECT_CALL(mock_delegate_, ShouldInitializeMojo(_)) + .Times(testing::AtLeast(2)) .WillRepeatedly(Return(true)); // Expect the following entry points to be called, in order. diff --git a/cobalt/testing/browser_tests/media_browsertest.cc b/cobalt/testing/browser_tests/media_browsertest.cc index efe16bcc79f8..d46fb5393e83 100644 --- a/cobalt/testing/browser_tests/media_browsertest.cc +++ b/cobalt/testing/browser_tests/media_browsertest.cc @@ -22,6 +22,7 @@ #include "build/build_config.h" #include "cobalt/shell/browser/shell.h" #include "cobalt/shell/common/shell_switches.h" +#include "cobalt/testing/browser_tests/browser/test_shell.h" #include "cobalt/testing/browser_tests/common/shell_test_switches.h" #include "cobalt/testing/browser_tests/content_browser_test_utils.h" #include "content/public/browser/web_contents.h" @@ -54,6 +55,7 @@ const char16_t kClean[] = u"CLEAN"; #endif void MediaBrowserTest::SetUpCommandLine(base::CommandLine* command_line) { + ContentBrowserTest::SetUpCommandLine(command_line); command_line->AppendSwitchASCII( switches::kAutoplayPolicy, switches::autoplay::kNoUserGestureRequiredPolicy); @@ -130,8 +132,7 @@ void MediaBrowserTest::CleanupTest() { std::string MediaBrowserTest::EncodeErrorMessage( const std::string& original_message) { url::RawCanonOutputT buffer; - url::EncodeURIComponent(original_message.data(), original_message.size(), - &buffer); + url::EncodeURIComponent(original_message, &buffer); return std::string(buffer.data(), buffer.length()); } @@ -423,7 +424,7 @@ IN_PROC_BROWSER_TEST_P(MediaTest, DISABLED_Navigate) { // TODO(b/437420909): Investigate failing test. IN_PROC_BROWSER_TEST_P(MediaTest, DISABLED_AudioOnly_XHE_AAC_MP4) { - if (media::IsSupportedAudioType( + if (media::IsDecoderSupportedAudioType( {media::AudioCodec::kAAC, media::AudioCodecProfile::kXHE_AAC})) { PlayAudio("noise-xhe-aac.mp4"); } diff --git a/cobalt/testing/browser_tests/media_session_browsertest.cc b/cobalt/testing/browser_tests/media_session_browsertest.cc index 22e8f952dfaa..85443973f021 100644 --- a/cobalt/testing/browser_tests/media_session_browsertest.cc +++ b/cobalt/testing/browser_tests/media_session_browsertest.cc @@ -23,6 +23,7 @@ #include "base/test/scoped_feature_list.h" #include "build/build_config.h" #include "cobalt/shell/browser/shell.h" +#include "cobalt/testing/browser_tests/browser/test_shell.h" #include "cobalt/testing/browser_tests/content_browser_test.h" #include "cobalt/testing/browser_tests/content_browser_test_utils.h" #include "content/browser/renderer_host/render_frame_host_impl.h" @@ -30,6 +31,7 @@ #include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents_observer.h" #include "content/public/common/content_features.h" +#include "content/public/common/isolated_world_ids.h" #include "content/public/test/browser_test.h" #include "content/public/test/browser_test_utils.h" #include "content/public/test/media_start_stop_observer.h" @@ -106,6 +108,7 @@ class MediaSessionBrowserTestBase : public ContentBrowserTest { } void SetUpCommandLine(base::CommandLine* command_line) override { + ContentBrowserTest::SetUpCommandLine(command_line); command_line->AppendSwitchASCII( switches::kAutoplayPolicy, switches::autoplay::kNoUserGestureRequiredPolicy); @@ -114,14 +117,14 @@ class MediaSessionBrowserTestBase : public ContentBrowserTest { void StartPlaybackAndWait(Shell* shell, const std::string& id) { shell->web_contents()->GetPrimaryMainFrame()->ExecuteJavaScriptForTests( u"document.querySelector('#" + base::ASCIIToUTF16(id) + u"').play();", - base::NullCallback()); + base::NullCallback(), content::ISOLATED_WORLD_ID_GLOBAL); WaitForStart(shell); } void StopPlaybackAndWait(Shell* shell, const std::string& id) { shell->web_contents()->GetPrimaryMainFrame()->ExecuteJavaScriptForTests( u"document.querySelector('#" + base::ASCIIToUTF16(id) + u"').pause();", - base::NullCallback()); + base::NullCallback(), content::ISOLATED_WORLD_ID_GLOBAL); WaitForStop(shell); } @@ -313,7 +316,7 @@ IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, DISABLED_WebContents_Muted) { // On Android, System Audio Focus would break this test. IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, MultipleTabsPlayPause) { - Shell* other_shell = CreateBrowser(); + TestShell* other_shell = CreateBrowser(); EXPECT_TRUE(NavigateToURL(shell(), GetTestUrl("media/session", "media-session.html"))); diff --git a/cobalt/testing/browser_tests/navigation_browsertest.cc b/cobalt/testing/browser_tests/navigation_browsertest.cc index 218de5c11fb8..add8f74198a1 100644 --- a/cobalt/testing/browser_tests/navigation_browsertest.cc +++ b/cobalt/testing/browser_tests/navigation_browsertest.cc @@ -2605,7 +2605,7 @@ IN_PROC_BROWSER_TEST_F(NavigationBaseBrowserTest, } } -// TODO: b/432503432 - Investigate test failure +// TODO(b/432503432): Investigate test failure #if !BUILDFLAG(IS_ANDROIDTV) #define MAYBE_CanceledNavigationBug999932 DISABLED_CanceledNavigationBug999932 #else @@ -8676,9 +8676,10 @@ INSTANTIATE_TEST_SUITE_P(All, NavigationBrowserTestDeprecateUnloadOptOut, ::testing::Bool()); +// TODO(b/432503432): Investigate test failure // Test that enabled/disabled kDeprecateUnloadOptOut has the desired effect. IN_PROC_BROWSER_TEST_P(NavigationBrowserTestDeprecateUnloadOptOut, - DeprecateUnloadOptOutFlagRespected) { + DISABLED_DeprecateUnloadOptOutFlagRespected) { GURL url_1(embedded_test_server()->GetURL("/title1.html")); GURL url_2(embedded_test_server()->GetURL("/title2.html")); diff --git a/cobalt/testing/browser_tests/run_browser_tests.py b/cobalt/testing/browser_tests/run_browser_tests.py new file mode 100644 index 000000000000..dcf7f3b3a057 --- /dev/null +++ b/cobalt/testing/browser_tests/run_browser_tests.py @@ -0,0 +1,138 @@ +#!/usr/bin/env python3 +"""Helper script to run Cobalt browser tests. + +Cobalt is designed to run in single process mode on TV devices. Its +browsertests is following it with --single-process-test as well. +To avoid regressions crashed the process, the test process management +is left in this python script, which list each single test case +and iterate them. +""" +import subprocess +import sys +import os + + +def main(): + if len(sys.argv) < 2: + print("Usage: python3 run_browser_tests.py " + "[gtest_filter]") + sys.exit(1) + + binary_path = sys.argv[1] + extra_filter = sys.argv[2] if len(sys.argv) > 2 else "*" + + if not os.path.isfile(binary_path): + print(f"Error: Binary not found at {binary_path}") + sys.exit(1) + + # 1. List all tests + print(f"Listing tests from {binary_path}...") + try: + output = subprocess.check_output( + [binary_path, "--gtest_list_tests", f"--gtest_filter={extra_filter}"], + text=True) + except subprocess.CalledProcessError as e: + print("Failed to list tests.") + sys.exit(e.returncode) + + tests = [] + current_suite = None + for line in output.splitlines(): + # Clean up the line + line = line.strip() + + # Skip empty lines or logs (logs usually start with [pid:...) + if not line or line.startswith("["): + continue + + # Remove comments (starting with #) + line = line.split("#")[0].strip() + + if not line: + continue + + if line.endswith("."): + current_suite = line + else: + # It's a test name + if current_suite: + full_test_name = f"{current_suite}{line}" + if "DISABLED_" not in full_test_name: + tests.append(full_test_name) + else: + print(f"Warning: Found test '{line}' without a suite. Skipping.") + + if not tests: + print("No tests found matching the filter.") + sys.exit(0) + + # Sort tests to ensure PRE_ tests run before their main tests. + # Logic: PRE_PRE_Test -> PRE_Test -> Test + def get_sort_key(test_name): + # test_name is Suite.Test + parts = test_name.split(".", 1) + if len(parts) != 2: + return (test_name, 0) + suite, case = parts + + pre_count = 0 + while case.startswith("PRE_"): + case = case[4:] + pre_count += 1 + + # Sort by base name (Suite.TestBase), then by pre_count DESCENDING + return (f"{suite}.{case}", -pre_count) + + tests.sort(key=get_sort_key) + + print(f"Found {len(tests)} tests. Running them one by one...\n") + + # 2. Run each test in a fresh process + failed_tests = [] + passed_count = 0 + + for i, test in enumerate(tests): + print(f"[{i+1}/{len(tests)}] Running {test}...") + try: + # We pass the filter to run EXACTLY this test case. + # Using --gtest_filter=ExactTestName + # Add standard Cobalt flags: + # --no-sandbox --single-process --no-zygote --ozone-platform=starboard + cmd = [ + binary_path, f"--gtest_filter={test}", "--single-process-tests", + "--no-sandbox", "--single-process", "--no-zygote", + "--ozone-platform=starboard", "--content-shell-hide-toolbar" + ] + + # Run the test and let it print to stdout/stderr + retcode = subprocess.call(cmd) + + if retcode != 0: + print(f"FAILED: {test} (Exit code: {retcode})") + failed_tests.append(test) + else: + passed_count += 1 + + except KeyboardInterrupt: + print("\nAborted by user.") + sys.exit(130) + except Exception as e: # pylint: disable=broad-exception-caught + print(f"Error running {test}: {e}") + failed_tests.append(test) + + print("\n" + "=" * 40) + print(f"Total: {len(tests)}, Passed: {passed_count}, ", + f"Failed: {len(failed_tests)}") + + if failed_tests: + print("\nFailed Tests:") + for t in failed_tests: + print(f" {t}") + sys.exit(1) + else: + print("\nAll tests PASSED.") + sys.exit(0) + + +if __name__ == "__main__": + main() diff --git a/cobalt/tools/on_device_tests_gateway_client.py b/cobalt/tools/on_device_tests_gateway_client.py index 8a65ade6d153..49032fc7eb13 100644 --- a/cobalt/tools/on_device_tests_gateway_client.py +++ b/cobalt/tools/on_device_tests_gateway_client.py @@ -351,7 +351,7 @@ def main() -> int: trigger_args.add_argument( '--job_timeout_sec', type=str, - default='2100', + default='2700', help='Timeout in seconds for the job. Must be set higher and ' 'start_timeout_sec and test_timeout_sec combined.', ) diff --git a/cobalt/tools/requirements.in b/cobalt/tools/requirements.in index 5692669c6a29..d7693d1db736 100644 --- a/cobalt/tools/requirements.in +++ b/cobalt/tools/requirements.in @@ -1,8 +1,11 @@ # IMPORTANT: Remember to also update requirements.txt when updating this file: -# $ docker run -it --mount type=bind,source=${COBALT_SRC},target=/code -w /code python:3.8 /bin/bash +# +# docker run -it -v .:/code -w /code python:3.11 /bin/bash +# # In the container: -# $ pip3 install pip-tools -# $ pip-compile --allow-unsafe --generate-hashes path/to/requirements.in - -grpcio==1.38.0 -grpcio-tools==1.38.0 +# +# pip3 install pip-tools +# pip-compile --allow-unsafe --generate-hashes cobalt/tools/requirements.in +# +grpcio==1.70.0 +grpcio-tools==1.70.0 diff --git a/cobalt/tools/requirements.txt b/cobalt/tools/requirements.txt index 740becbd4410..929985cb528e 100644 --- a/cobalt/tools/requirements.txt +++ b/cobalt/tools/requirements.txt @@ -1,145 +1,138 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --allow-unsafe --generate-hashes cobalt/tools/requirements.in +# pip-compile --allow-unsafe --generate-hashes --output-file=cobalt/tools/requirements.txt cobalt/tools/requirements.in # -grpcio==1.38.0 \ - --hash=sha256:0247b045feb7b138754c91efcca9ea7f7d2cc9f0bd2cc73f6588c523f38873c3 \ - --hash=sha256:07abf6b36c138bf247cef7ac0bad9f8ab1c8242f7c1302af23bb8e6877d08163 \ - --hash=sha256:0ab78d4c16d7f3924718711689f5e301aec52cfcf38eb4143bed0f74b7c4fd10 \ - --hash=sha256:10a6c62e0cddd456db91f9f04b53a8cccf67d86d7ca814d989423939099c2723 \ - --hash=sha256:1c11041ecb69d962d49e8a38a35736cdc6fc74230867b5f0ac6138770387a950 \ - --hash=sha256:1d157a2ac6632d31a3ff21f56bbe73420e1d7a21e4fe89d8c7ac792b79c1a589 \ - --hash=sha256:1d212af1008bdbfd4b8a287e17a8e63e14d72ac450475307452f20c1bbb6bae4 \ - --hash=sha256:1e88a8d5d961df958362f61b1b79ad3981a8b051f99224717b09308546298902 \ - --hash=sha256:25028420d004fe33d64015f5d4d97207c53530acdb493310e217fac76dcd2513 \ - --hash=sha256:2736b109ec5bd9fcf580bf871b5fd4f136c6ae9728407f344a3c64ad87bb6519 \ - --hash=sha256:277faad1d8d462bd1b986f43a47a2c2fe795b2e0de72c9318e11826d921e665a \ - --hash=sha256:291dcde4139bc25629de6a743cfcc0ca861e289e3547421ecd2273b51d95b8e1 \ - --hash=sha256:2c26cb7566e8942542ff1aee71f10ed35e2f9ee95c2f27179b198af0727fbebb \ - --hash=sha256:32067791bd56a13614399f1994454afea9e2475019fcabc4abd3112f09892005 \ - --hash=sha256:34fb08d46a70750bef6566c9556a16b98e08af6345a3bad6574477eb0b08c3dd \ - --hash=sha256:3cacfee78310b5a89769b2fac20b8cd723470130f5b1ba0c960da8db39e74a97 \ - --hash=sha256:4a1dd16ccf76ddc18c1cde900049c04ed996e6c02e0588d88d06396c398e6023 \ - --hash=sha256:604da72df5bece8844a15990ce0b3f2f8c5243a1333d3dcc02371048bf6f9269 \ - --hash=sha256:6461d69a8ae20e7abce4c6d9cc2603e9f16f4d6b64865eddd0e664127349c04d \ - --hash=sha256:6824567e2372dde1bd70214427d23b709d09f1a02a552133d1e0f504b616c84e \ - --hash=sha256:7466eef3b57b5ac8c7585251b26b917b093ab015750bf98aab4e0836c39e2a2b \ - --hash=sha256:752593a275e26ef250dc4d93a6f7917dd9986396b41eabcc114b0e0315ec1bf6 \ - --hash=sha256:7b74c48b2e41dd506f889a4a9974d40b3eead965b0fd2e0b1d55a9b3c0e3bc6e \ - --hash=sha256:897bcd54890e6ec6359063affb35e19a61a58ba37bc61c9e8ac6b464b854233e \ - --hash=sha256:8c4f39ad529fb4a33cd6e58d1d860c3b583902208547614b4b5b75fc306f13f6 \ - --hash=sha256:924552099365ea1dd32237dc161849452cd567d931efc57e8427260d8f0eacdb \ - --hash=sha256:9a2216df1be9fdbc3c1ebd3c5184d1ef4afb387c29224fce00346b9ddec7c7e3 \ - --hash=sha256:9f1747b81d44daed0649ff10395b58c4f29b03139a628afeb058f3e942ba6893 \ - --hash=sha256:a0d7c88b4cf9748147cd6c16e14569a124b683a3eb5d7787f43eb9d48cf86755 \ - --hash=sha256:a4789014f9d9e9ff29551314a004266b1ac90225c8a009dc87947aaf823fd83c \ - --hash=sha256:a836f21a1d08d28c8344e149b28729649ff4732c318a59a3628451bbd6c3c9ac \ - --hash=sha256:a8f9fcf5623282e4804595166a4ee1401cf4ccfc16fe84bb69e1eb23ffd836ac \ - --hash=sha256:abbf9c8c3df4d5233d5888c6cfa85c1bb68a6923749bd4dd1abc6e1e93986f17 \ - --hash=sha256:ac05434a7a7f444b2ddd109d72f87f4704364be159aea42a04bd6ea2ba6e10e4 \ - --hash=sha256:b4cd8fb4e3725e8852b1da734904edb3579c76660ae26a72283ac580779e5bf0 \ - --hash=sha256:b86a1b0654804b5f2248d9262c77a9d5f19882481fc21df53eb2823d0875b86d \ - --hash=sha256:be83ca2d24321c8bf6516b9cd1064da15ac3ff3978c6c502643be114e2a54af2 \ - --hash=sha256:c47e85eae34af5d17d1c2007a1f0b13a0293d4b7a6d8c8ae23761d718293803e \ - --hash=sha256:cbd2754da81bf5f18454c7808b4afe5b57c6736955a742fb599b32b6353fe99f \ - --hash=sha256:cd220606259f8aa2403bc0f4a4483bae5e36be879364ca3e256f0304ac44f575 \ - --hash=sha256:d3566acd87a65a0bc93875125a7064293ab2b6ffb9327333030939681d269f4f \ - --hash=sha256:d631304e66c908d5d2d1a3cc9c02d372d2f8bed8c3632902d6f3f77d7ca34ac2 \ - --hash=sha256:db01eaea57e7a1898c69271e35a84341cf8150cfdec5f0411eddcfb65b5f590e \ - --hash=sha256:e3072b9ebb573fe1f6757a55b610e4975979d2d58247cbe18ff4385f5aaa81a5 \ - --hash=sha256:e72dd202c982a5922c3b846976cae3b699e3fa8d2355d9d5bad119d066cf23ee \ - --hash=sha256:e83ab148911e6c8ae4ec5e1334e6d800c6b84c432b92eb0ebf0808087117cb39 \ - --hash=sha256:f19bd4b5bcf88ee059f478c4ab46a1607f09835587750294038fbd0120f1a9dc \ - --hash=sha256:f2c4ff0e8c98418c5d55c28ba4ff954e3a5d3c723af5008e8d3ddeae8f0ecb41 \ - --hash=sha256:f6f6d51c9efbfe56af9eb9eeb4881cad1b869e4c0e2a32c1d345897fd0979ee3 \ - --hash=sha256:f8dd51b05e7fde843d7a3140b058f02801fbec5784a036d5f6abb374450d4608 \ - --hash=sha256:f9b3678920017842a1b576de3524ecf8f6a2bf4b39f86fb25b870693141e0584 +grpcio==1.70.0 \ + --hash=sha256:0495c86a55a04a874c7627fd33e5beaee771917d92c0e6d9d797628ac40e7655 \ + --hash=sha256:07269ff4940f6fb6710951116a04cd70284da86d0a4368fd5a3b552744511f5a \ + --hash=sha256:0a5c78d5198a1f0aa60006cd6eb1c912b4a1520b6a3968e677dbcba215fabb40 \ + --hash=sha256:0ba0a173f4feacf90ee618fbc1a27956bfd21260cd31ced9bc707ef551ff7dc7 \ + --hash=sha256:0cd430b9215a15c10b0e7d78f51e8a39d6cf2ea819fd635a7214fae600b1da27 \ + --hash=sha256:0de706c0a5bb9d841e353f6343a9defc9fc35ec61d6eb6111802f3aa9fef29e1 \ + --hash=sha256:17325b0be0c068f35770f944124e8839ea3185d6d54862800fc28cc2ffad205a \ + --hash=sha256:2394e3381071045a706ee2eeb6e08962dd87e8999b90ac15c55f56fa5a8c9597 \ + --hash=sha256:27cc75e22c5dba1fbaf5a66c778e36ca9b8ce850bf58a9db887754593080d839 \ + --hash=sha256:2b0d02e4b25a5c1f9b6c7745d4fa06efc9fd6a611af0fb38d3ba956786b95199 \ + --hash=sha256:374d014f29f9dfdb40510b041792e0e2828a1389281eb590df066e1cc2b404e5 \ + --hash=sha256:3b0f01f6ed9994d7a0b27eeddea43ceac1b7e6f3f9d86aeec0f0064b8cf50fdb \ + --hash=sha256:4119fed8abb7ff6c32e3d2255301e59c316c22d31ab812b3fbcbaf3d0d87cc68 \ + --hash=sha256:412faabcc787bbc826f51be261ae5fa996b21263de5368a55dc2cf824dc5090e \ + --hash=sha256:4f1937f47c77392ccd555728f564a49128b6a197a05a5cd527b796d36f3387d0 \ + --hash=sha256:5413549fdf0b14046c545e19cfc4eb1e37e9e1ebba0ca390a8d4e9963cab44d2 \ + --hash=sha256:558c386ecb0148f4f99b1a65160f9d4b790ed3163e8610d11db47838d452512d \ + --hash=sha256:58ad9ba575b39edef71f4798fdb5c7b6d02ad36d47949cd381d4392a5c9cbcd3 \ + --hash=sha256:5ea67c72101d687d44d9c56068328da39c9ccba634cabb336075fae2eab0d04b \ + --hash=sha256:7385b1cb064734005204bc8994eed7dcb801ed6c2eda283f613ad8c6c75cf873 \ + --hash=sha256:7c73c42102e4a5ec76608d9b60227d917cea46dff4d11d372f64cbeb56d259d0 \ + --hash=sha256:8058667a755f97407fca257c844018b80004ae8035565ebc2812cc550110718d \ + --hash=sha256:879a61bf52ff8ccacbedf534665bb5478ec8e86ad483e76fe4f729aaef867cab \ + --hash=sha256:880bfb43b1bb8905701b926274eafce5c70a105bc6b99e25f62e98ad59cb278e \ + --hash=sha256:8d1584a68d5922330025881e63a6c1b54cc8117291d382e4fa69339b6d914c56 \ + --hash=sha256:95469d1977429f45fe7df441f586521361e235982a0b39e33841549143ae2851 \ + --hash=sha256:9e654c4b17d07eab259d392e12b149c3a134ec52b11ecdc6a515b39aceeec898 \ + --hash=sha256:a31d7e3b529c94e930a117b2175b2efd179d96eb3c7a21ccb0289a8ab05b645c \ + --hash=sha256:aa47688a65643afd8b166928a1da6247d3f46a2784d301e48ca1cc394d2ffb40 \ + --hash=sha256:aa573896aeb7d7ce10b1fa425ba263e8dddd83d71530d1322fd3a16f31257b4a \ + --hash=sha256:aba19419aef9b254e15011b230a180e26e0f6864c90406fdbc255f01d83bc83c \ + --hash=sha256:ac073fe1c4cd856ebcf49e9ed6240f4f84d7a4e6ee95baa5d66ea05d3dd0df7f \ + --hash=sha256:b3c76701428d2df01964bc6479422f20e62fcbc0a37d82ebd58050b86926ef8c \ + --hash=sha256:b745d2c41b27650095e81dea7091668c040457483c9bdb5d0d9de8f8eb25e59f \ + --hash=sha256:bb491125103c800ec209d84c9b51f1c60ea456038e4734688004f377cfacc113 \ + --hash=sha256:c1af8e15b0f0fe0eac75195992a63df17579553b0c4af9f8362cc7cc99ccddf4 \ + --hash=sha256:c78b339869f4dbf89881e0b6fbf376313e4f845a42840a7bdf42ee6caed4b11f \ + --hash=sha256:cb5277db254ab7586769e490b7b22f4ddab3876c490da0a1a9d7c695ccf0bf77 \ + --hash=sha256:cbce24409beaee911c574a3d75d12ffb8c3e3dd1b813321b1d7a96bbcac46bf4 \ + --hash=sha256:cd24d2d9d380fbbee7a5ac86afe9787813f285e684b0271599f95a51bce33528 \ + --hash=sha256:ce7df14b2dcd1102a2ec32f621cc9fab6695effef516efbc6b063ad749867295 \ + --hash=sha256:d24035d49e026353eb042bf7b058fb831db3e06d52bee75c5f2f3ab453e71aca \ + --hash=sha256:d405b005018fd516c9ac529f4b4122342f60ec1cee181788249372524e6db429 \ + --hash=sha256:d63764963412e22f0491d0d32833d71087288f4e24cbcddbae82476bfa1d81fd \ + --hash=sha256:dbe41ad140df911e796d4463168e33ef80a24f5d21ef4d1e310553fcd2c4a386 \ + --hash=sha256:dfa089a734f24ee5f6880c83d043e4f46bf812fcea5181dcb3a572db1e79e01c \ + --hash=sha256:e27585831aa6b57b9250abaf147003e126cd3a6c6ca0c531a01996f31709bed1 \ + --hash=sha256:e7831a0fc1beeeb7759f737f5acd9fdcda520e955049512d68fda03d91186eea \ + --hash=sha256:ed9718f17fbdb472e33b869c77a16d0b55e166b100ec57b016dc7de9c8d236bf \ + --hash=sha256:ef4c14508299b1406c32bdbb9fb7b47612ab979b04cf2b27686ea31882387cff \ + --hash=sha256:f19375f0300b96c0117aca118d400e76fede6db6e91f3c34b7b035822e06c35f \ + --hash=sha256:f2af68a6f5c8f78d56c145161544ad0febbd7479524a59c16b3e25053f39c87f \ + --hash=sha256:f32090238b720eb585248654db8e3afc87b48d26ac423c8dde8334a232ff53c9 \ + --hash=sha256:fe9dbd916df3b60e865258a8c72ac98f3ac9e2a9542dcb72b7a34d236242a5ce \ + --hash=sha256:ff4a8112a79464919bb21c18e956c54add43ec9a4850e3949da54f61c241a4a6 # via # -r cobalt/tools/requirements.in # grpcio-tools -grpcio-tools==1.38.0 \ - --hash=sha256:041ee3c4c4ec048029db07981c8255bcf26ab3b8436e372e8f7c8b1258d8b44a \ - --hash=sha256:08b824a18d79dca6613ed53c7792ffd87899ea26639b5ce7eb83fc9295a6c7dd \ - --hash=sha256:08f0a888e9d5a2f0a1fa35b052d240a391e832a07be025dced713f92070407bf \ - --hash=sha256:0c5b459cf65be3a11a2222a5a200962fb50475585d31921bd1679c579590e188 \ - --hash=sha256:0eb8408aad583dce6e2d35b078b03d0720227c3d35322f4326936c820d4c0587 \ - --hash=sha256:0efe2ded3ce6301aff1cfb1103f75206f2dffd518f63879fe24a9833cd35ce38 \ - --hash=sha256:17e0c6543b573d66f2b35b7b4b80f201edce6ea8defc2bcdcc8a061609b51456 \ - --hash=sha256:18d7d198a6a43ce2907724c224ed66a1e6660975d4ce8eb5cb0d155cdc5eb78e \ - --hash=sha256:1be89cc16be3984b43e40ea456e9e5428561987e99da2d79c1fc2629e87b6438 \ - --hash=sha256:2cad9aef5edf0b40e16403627ea9ce186facfc4e26936ee467593116d7db15a2 \ - --hash=sha256:405a70b315970523c35bb487b1533a22ff4a126c649f074b4df49cb1e304561d \ - --hash=sha256:410495b05ebc822895078f7aad593009f0f65dec5133eadb18cf3d8d2c226ade \ - --hash=sha256:4bbfb71f37c72d0b1abac210ba5dc5780a34c065e67f2f7a2f1dc84e800b0ca3 \ - --hash=sha256:54ed34d2a45a62b9709615cea4df306128d7f42d95394b9728cc4bb3487a23bd \ - --hash=sha256:556ffa61c4f705e5fd230b629f5bdd3c4d6ae654299baea037d68b341e8d6525 \ - --hash=sha256:56754f7b1a570ef0f49181ce5d0403817dd7d375bbd208f2743a25e9eef361fd \ - --hash=sha256:57798ceae33bcc215aacc2174dfc548904ac7727cb2193d7547aeb1d1149d35c \ - --hash=sha256:58058dddb7d362249bbc3ac6d5c62837b050471c5b524e2b39a839607f4e1f21 \ - --hash=sha256:5a159a359588bb8130871b4bb8d7b89457babc82fc196a0e794c0d630358da7a \ - --hash=sha256:61fd0659fe3a67154906364e8e78837bbda23c3a9d18c11f9bb1e17c0efdf6df \ - --hash=sha256:76f3301f45d7913480a166d472969f8328f37f12f59eb9c9c993905199d4e6a2 \ - --hash=sha256:7a1e2e52a3b6e1c8e1762fc7e270d8d9a08b15201661fde94ba7ad66ca5d6c98 \ - --hash=sha256:7ae7be0f0b5d698859a606118dcd3b74ced56a45f906c99549b31882ecfd2bcd \ - --hash=sha256:8d4a1f889b36148295bb1a86e5423ad69d942230561752fc3ecfcc5c1ad29f86 \ - --hash=sha256:92b85f78efb90d2f78e6e0aa1a380c159eac9b0b88c425b436d7ac744cf6a30d \ - --hash=sha256:9bc75135df871347899cf9f03d6a2dd8bcd69350fd75f02911c88a070ccd8465 \ - --hash=sha256:9cb182b23a2e0a20d3f23cc6f84a692b773e4e24976c78a7d53b537d5f43f34a \ - --hash=sha256:a9a7afbdedee4735dfc1848f24a8c8c421d70f8f84529bbf30f2ffabf4ecf212 \ - --hash=sha256:adaa7dcdcfa168a24237c55444979e8bc2cab5aa20c8c64495ac0d029879feab \ - --hash=sha256:adb0d92ba1031e23feade7189d741d824cbc64dea256ae2d3498e88d4c64b632 \ - --hash=sha256:b4fb8779fca9b80f91ca2cb6060837992edf87d7dd459d570adf8ddc0ca56352 \ - --hash=sha256:b76e8ec283b1ca162f23a9c8cf4a4797bd9904c79523bb28e336b4b112855386 \ - --hash=sha256:b9e4df167e4e9ede2b14c4e9aa0c7f540b96ad80e875cdffa322938515baaf40 \ - --hash=sha256:ba11763a9436093f6855b39cfc2a6b2bc33e4176fe32015bcb3855bb48f2524a \ - --hash=sha256:ba596f23d4659d984be3a8c8b739a49bf79a7d3007b62f724b36272a6d60d292 \ - --hash=sha256:c0dbfa1a9b09743255298c4aaf8872076aafc3c8accc6f1d61a2eb126970cbc7 \ - --hash=sha256:c1d04e2900a5c14051e29479ff161b0b7decaea7e6f4a3e217cbf41edf698856 \ - --hash=sha256:c609678cf6faf4b467259757f848de4fbc7baca3c1e3f7b0e55c701c50fd94ae \ - --hash=sha256:c7941214cdb6b2863d4fab467aa48fdffc7d2d0ae2bd9036cdd134572cf1abfa \ - --hash=sha256:cabf621285501d64b5b8e202f290a6bd260081bbcce0457ddd60351ad11c3408 \ - --hash=sha256:cacdd2b7f41026c89321373a4b235243d1613b92a750fdc1ba7f48edfe809b76 \ - --hash=sha256:cf35e7d64a2e2faba0c041f2b4f715c138952b9f2fb5bb1a60a46d558f4113d4 \ - --hash=sha256:d6146277dbd6b8da6ce8518496d064f1de5d92210fbb0efae0bcf32fa193d987 \ - --hash=sha256:d8b25bfcde255bb391488cf463bb2dd64fa5d01f4650463640f780817a5e43b5 \ - --hash=sha256:dd0dafe045cdbff9bc32ae833853aa480ee0458c79bb7f10d2d6302b33914cd8 \ - --hash=sha256:ddcc0371875cb6c2728b4faff1a0b32b2294c004828d813a9cc69cb2b69c517e \ - --hash=sha256:e27b5b69b5756c6966606b30f6f5380a91050fe43048ceb3934c136ffe622e5e \ - --hash=sha256:e375a117fb5272e09faf138f08540d6d51e8d90e6983008dadd70affd195b30c \ - --hash=sha256:e59cd98e3d33a3a9561a032d885ba7871bf7403afdd05dede360f74c58db19ca \ - --hash=sha256:ec7917310360b8ddecb737d62af4810c44d9b674c3e38ef507670ef933ebd4b4 \ - --hash=sha256:fa1098f49ccab3f06ee9533a9caa82ba02fe90d8461b6c35b983173ad3dcd6fa +grpcio-tools==1.70.0 \ + --hash=sha256:02e3bf55fb569fe21b54a32925979156e320f9249bb247094c4cbaa60c23a80d \ + --hash=sha256:04bf30c0eb2741defe3ab6e0a6102b022d69cfd39d68fab9b954993ceca8d346 \ + --hash=sha256:076f71c6d5adcf237ebca63f1ed51098293261dab9f301e3dfd180e896e5fa89 \ + --hash=sha256:0f7ed0372afd9f5eb938334e84681396257015ab92e03de009aa3170e64b24d0 \ + --hash=sha256:114a42e566e5b16a47e98f7910a6c0074b37e2d1faacaae13222e463d0d0d43c \ + --hash=sha256:1ab788afced2d2c59bef86479967ce0b28485789a9f2cc43793bb7aa67f9528b \ + --hash=sha256:1c0917dce12af04529606d437def83962d51c59dcde905746134222e94a2ab1b \ + --hash=sha256:1de6c71833d36fb8cc8ac10539681756dc2c5c67e5d4aa4d05adb91ecbdd8474 \ + --hash=sha256:1fa9a81621d7178498dedcf94eb8f276a7594327faf3dd5fd1935ce2819a2bdb \ + --hash=sha256:22024caee36ab65c2489594d718921dcbb5bd18d61c5417a9ede94fd8dc8a589 \ + --hash=sha256:24a5b0328ffcfe0c4a9024f302545abdb8d6f24921409a5839f2879555b96fea \ + --hash=sha256:3020c97f03b30eee3c26aa2a55fbe003f1729c6f879a378507c2c78524db7c12 \ + --hash=sha256:3875543d74ce1a698a11f498f83795216ce929cb29afa5fac15672c7ba1d6dd2 \ + --hash=sha256:4545264e06e1cd7fb21b9447bb5126330bececb4bc626c98f793fda2fd910bf8 \ + --hash=sha256:4cae365d7e3ba297256216a9a256458b286f75c64603f017972b3ad1ee374437 \ + --hash=sha256:4d456521290e25b1091975af71604facc5c7db162abdca67e12a0207b8bbacbe \ + --hash=sha256:4ebf09733545a69c166b02caa14c34451e38855544820dab7fdde5c28e2dbffe \ + --hash=sha256:52d7e7ef11867fe7de577076b1f2ac6bf106b2325130e3de66f8c364c96ff332 \ + --hash=sha256:54ceffef59a059d2c7304554a8bbb20eedb05a3f937159ab1c332c1b28e12c9f \ + --hash=sha256:5cb0baa52d4d44690fac6b1040197c694776a291a90e2d3c369064b4d5bc6642 \ + --hash=sha256:5f5aba12d98d25c7ab2dd983939e2c21556a7d15f903b286f24d88d2c6e30c0a \ + --hash=sha256:6034a0579fab2aed8685fa1a558de084668b1e9b01a82a4ca7458b9bedf4654c \ + --hash=sha256:63f367363a4a1489a0046b19f9d561216ea0d206c40a6f1bf07a58ccfb7be480 \ + --hash=sha256:6eeb86864e1432fc1ab61e03395a2a4c04e9dd9c89db07e6fe68c7c2ac8ec24f \ + --hash=sha256:701bbb1ff406a21a771f5b1df6be516c0a59236774b6836eaad7696b1d128ea8 \ + --hash=sha256:70234b592af17050ec30cf35894790cef52aeae87639efe6db854a7fa783cc8c \ + --hash=sha256:740b3741d124c5f390dd50ad1c42c11788882baf3c202cd3e69adee0e3dde559 \ + --hash=sha256:79b723ce30416e8e1d7ff271f97ade79aaf30309a595d80c377105c07f5b20fd \ + --hash=sha256:7a90a66a46821140a2a2b0be787dfabe42e22e9a5ba9cc70726b3e5c71a3b785 \ + --hash=sha256:7d45067e6efd20881e98a0e1d7edd7f207b1625ad7113321becbfe0a6ebee46c \ + --hash=sha256:836293dcbb1e59fa52aa8aa890bd7a32a8eea7651cd614e96d86de4f3032fe73 \ + --hash=sha256:840ec536ab933db2ef8d5acaa6b712d0e9e8f397f62907c852ec50a3f69cdb78 \ + --hash=sha256:88a3ec6fa2381f616d567f996503e12ca353777941b61030fd9733fd5772860e \ + --hash=sha256:8eae17c920d14e2e451dbb18f5d8148f884e10228061941b33faa8fceee86e73 \ + --hash=sha256:904f13d2d04f88178b09d8ef89549b90cbf8792b684a7c72540fc1a9887697e2 \ + --hash=sha256:9387b30f3b2f46942fb5718624d7421875a6ce458620d6e15817172d78db1e1a \ + --hash=sha256:99caa530242a0a832d8b6a6ab94b190c9b449d3e237f953911b4d56207569436 \ + --hash=sha256:9c021b040d0a9f5bb96a725c4d2b95008aad127d6bed124a7bbe854973014f5b \ + --hash=sha256:a130c24d617a3a57369da784080dfa8848444d41b7ae1250abc06e72e706a8d9 \ + --hash=sha256:ae139a8d3ddd8353f62af3af018e99ebcd2f4a237bd319cb4b6f58dd608aaa54 \ + --hash=sha256:b5a9beadd1e24772ffa2c70f07d72f73330d356b78b246e424f4f2ed6c6713f3 \ + --hash=sha256:b9e4a12b862ba5e42d8028da311e8d4a2c307362659b2f4141d0f940f8c12b49 \ + --hash=sha256:bb8135eef160a62505f074bf7a3d62f3b13911c3c14037c5392bf877114213b5 \ + --hash=sha256:c6da2585c0950cdb650df1ff6d85b3fe31e22f8370b9ee11f8fe641d5b4bf096 \ + --hash=sha256:d1fc2112e9c40167086e2e6a929b253e5281bffd070fab7cd1ae019317ffc11d \ + --hash=sha256:d47a6c6cfc526b290b7b53a37dd7e6932983f7a168b56aab760b4b597c47f30f \ + --hash=sha256:d50080bca84f53f3a05452e06e6251cbb4887f5a1d1321d1989e26d6e0dc398d \ + --hash=sha256:d53c8c45e843b5836781ad6b82a607c72c2f9a3f556e23d703a0e099222421fa \ + --hash=sha256:d7fd472fce3b33bdf7fbc24d40da7ab10d7a088bcaf59c37433c2c57330fbcb6 \ + --hash=sha256:e578fee7c1c213c8e471750d92631d00f178a15479fb2cb3b939a07fc125ccd3 \ + --hash=sha256:ec5d6932c3173d7618267b3b3fd77b9243949c5ec04302b7338386d4f8544e0b \ + --hash=sha256:f024688d04e7a9429489ed695b85628075c3c6d655198ba3c6ccbd1d8b7c333b \ + --hash=sha256:f22852da12f53b02a3bdb29d0c32fcabab9c7c8f901389acffec8461083f110d \ + --hash=sha256:f7ac9b3e13ace8467a586c53580ee22f9732c355583f3c344ef8c6c0666219cc \ + --hash=sha256:fd04c93af460b1456cd12f8f85502503e1db6c4adc1b7d4bd775b12c1fd94fee # via -r cobalt/tools/requirements.in -protobuf==3.20.3 \ - --hash=sha256:03038ac1cfbc41aa21f6afcbcd357281d7521b4157926f30ebecc8d4ea59dcb7 \ - --hash=sha256:28545383d61f55b57cf4df63eebd9827754fd2dc25f80c5253f9184235db242c \ - --hash=sha256:2e3427429c9cffebf259491be0af70189607f365c2f41c7c3764af6f337105f2 \ - --hash=sha256:398a9e0c3eaceb34ec1aee71894ca3299605fa8e761544934378bbc6c97de23b \ - --hash=sha256:44246bab5dd4b7fbd3c0c80b6f16686808fab0e4aca819ade6e8d294a29c7050 \ - --hash=sha256:447d43819997825d4e71bf5769d869b968ce96848b6479397e29fc24c4a5dfe9 \ - --hash=sha256:67a3598f0a2dcbc58d02dd1928544e7d88f764b47d4a286202913f0b2801c2e7 \ - --hash=sha256:74480f79a023f90dc6e18febbf7b8bac7508420f2006fabd512013c0c238f454 \ - --hash=sha256:819559cafa1a373b7096a482b504ae8a857c89593cf3a25af743ac9ecbd23480 \ - --hash=sha256:899dc660cd599d7352d6f10d83c95df430a38b410c1b66b407a6b29265d66469 \ - --hash=sha256:8c0c984a1b8fef4086329ff8dd19ac77576b384079247c770f29cc8ce3afa06c \ - --hash=sha256:9aae4406ea63d825636cc11ffb34ad3379335803216ee3a856787bcf5ccc751e \ - --hash=sha256:a7ca6d488aa8ff7f329d4c545b2dbad8ac31464f1d8b1c87ad1346717731e4db \ - --hash=sha256:b6cc7ba72a8850621bfec987cb72623e703b7fe2b9127a161ce61e61558ad905 \ - --hash=sha256:bf01b5720be110540be4286e791db73f84a2b721072a3711efff6c324cdf074b \ - --hash=sha256:c02ce36ec760252242a33967d51c289fd0e1c0e6e5cc9397e2279177716add86 \ - --hash=sha256:d9e4432ff660d67d775c66ac42a67cf2453c27cb4d738fc22cb53b5d84c135d4 \ - --hash=sha256:daa564862dd0d39c00f8086f88700fdbe8bc717e993a21e90711acfed02f2402 \ - --hash=sha256:de78575669dddf6099a8a0f46a27e82a1783c557ccc38ee620ed8cc96d3be7d7 \ - --hash=sha256:e64857f395505ebf3d2569935506ae0dfc4a15cb80dc25261176c784662cdcc4 \ - --hash=sha256:f4bd856d702e5b0d96a00ec6b307b0f51c1982c2bf9c0052cf9019e9a544ba99 \ - --hash=sha256:f4c42102bc82a51108e449cbb32b19b180022941c727bac0cfd50170341f16ee +protobuf==5.29.5 \ + --hash=sha256:3f1c6468a2cfd102ff4703976138844f78ebd1fb45f49011afc5139e9e283079 \ + --hash=sha256:3f76e3a3675b4a4d867b52e4a5f5b78a2ef9565549d4037e06cf7b0942b1d3fc \ + --hash=sha256:470f3af547ef17847a28e1f47200a1cbf0ba3ff57b7de50d22776607cd2ea353 \ + --hash=sha256:63848923da3325e1bf7e9003d680ce6e14b07e55d0473253a690c3a8b8fd6e61 \ + --hash=sha256:6cf42630262c59b2d8de33954443d94b746c952b01434fc58a417fdbd2e84bd5 \ + --hash=sha256:6f642dc9a61782fa72b90878af134c5afe1917c89a568cd3476d758d3c3a0736 \ + --hash=sha256:7318608d56b6402d2ea7704ff1e1e4597bee46d760e7e4dd42a3d45e24b87f2e \ + --hash=sha256:bc1463bafd4b0929216c35f437a8e28731a2b7fe3d98bb77a600efced5a15c84 \ + --hash=sha256:e38c5add5a311f2a6eb0340716ef9b039c1dfa428b28f25a7838ac329204a671 \ + --hash=sha256:ef91363ad4faba7b25d844ef1ada59ff1604184c0bcd8b39b8a6bef15e1af238 \ + --hash=sha256:fa18533a299d7ab6c55a238bf8629311439995f2e7eca5caaff08663606e9015 # via grpcio-tools -six==1.17.0 \ - --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \ - --hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81 - # via grpcio # The following packages are considered to be unsafe in a requirements file: setuptools==75.3.0 \ diff --git a/components/viz/service/display/ca_layer_overlay.cc b/components/viz/service/display/ca_layer_overlay.cc index baf8c83fa77e..6479da120350 100644 --- a/components/viz/service/display/ca_layer_overlay.cc +++ b/components/viz/service/display/ca_layer_overlay.cc @@ -17,10 +17,17 @@ #include "components/viz/common/quads/texture_draw_quad.h" #include "components/viz/common/quads/tile_draw_quad.h" #include "components/viz/service/display/display_resource_provider.h" +#include "components/viz/service/display/overlay_candidate_factory.h" #include "ui/base/cocoa/remote_layer_api.h" #include "ui/gfx/buffer_types.h" #include "ui/gl/gl_bindings.h" +#if BUILDFLAG(USE_STARBOARD_MEDIA) +#include "components/viz/common/quads/video_hole_draw_quad.h" +#include "components/viz/service/display/overlay_candidate.h" +#include "components/viz/service/display/starboard/video_geometry_setter.h" +#endif // BUILDFLAG(USE_STARBOARD_MEDIA) + namespace viz { namespace { @@ -277,6 +284,16 @@ class CALayerOverlayProcessorInternal { ca_layer_overlay); case DrawQuad::Material::kSurfaceContent: return gfx::kCALayerFailedSurfaceContent; +#if BUILDFLAG(USE_STARBOARD_MEDIA) + // To make hole punching work, we want to avoid the quad-to-CALayer code + // path because it is complicated to punch a hole through the CALayer + // hierarchy created by CARendererLayerTree. + // + // To do so, kVideoHole quads will make ProcessForCALayerOverlays() return + // false and force PutQuadInSeparateOverlay() to be called. + case DrawQuad::Material::kVideoHole: + return gfx::kCALayerFailedOverlayDisabled; +#endif // BUILDFLAG(USE_STARBOARD_MEDIA) default: break; } @@ -363,7 +380,8 @@ void CALayerOverlayProcessor::PutForcedOverlayContentIntoUnderlays( const base::flat_map>& render_pass_backdrop_filters, - OverlayCandidateList* ca_layer_overlays) const { + OverlayCandidateList* ca_layer_overlays, + const OverlayCandidateFactory& candidate_factory) const { bool failed = false; for (auto it = quad_list->begin(); it != quad_list->end(); ++it) { @@ -372,6 +390,12 @@ void CALayerOverlayProcessor::PutForcedOverlayContentIntoUnderlays( gfx::ProtectedVideoType protected_video_type = gfx::ProtectedVideoType::kClear; +#if BUILDFLAG(USE_STARBOARD_MEDIA) + if (quad->material == DrawQuad::Material::kVideoHole) { + force_quad_to_overlay = true; + } +#endif // BUILDFLAG(USE_STARBOARD_MEDIA) + if (quad->material == ContentDrawQuadBase::Material::kTextureContent) { const TextureDrawQuad* texture_quad = TextureDrawQuad::MaterialCast(quad); @@ -392,10 +416,10 @@ void CALayerOverlayProcessor::PutForcedOverlayContentIntoUnderlays( } if (force_quad_to_overlay) { - if (!PutQuadInSeparateOverlay(it, resource_provider, render_pass, - display_rect, quad, render_pass_filters, - render_pass_backdrop_filters, - protected_video_type, ca_layer_overlays)) { + if (!PutQuadInSeparateOverlay( + it, resource_provider, render_pass, display_rect, quad, + render_pass_filters, render_pass_backdrop_filters, + protected_video_type, ca_layer_overlays, candidate_factory)) { failed = true; break; } @@ -507,7 +531,8 @@ bool CALayerOverlayProcessor::PutQuadInSeparateOverlay( raw_ptr>& render_pass_backdrop_filters, gfx::ProtectedVideoType protected_video_type, - OverlayCandidateList* ca_layer_overlays) const { + OverlayCandidateList* ca_layer_overlays, + const OverlayCandidateFactory& candidate_factory) const { CALayerOverlayProcessorInternal processor; OverlayCandidate ca_layer; bool skip = false; @@ -517,8 +542,15 @@ bool CALayerOverlayProcessor::PutQuadInSeparateOverlay( resource_provider, display_rect, quad, render_pass_filters, render_pass_backdrop_filters, &ca_layer, &skip, &render_pass_draw_quad, yuv_draw_quad_count); - if (result != gfx::kCALayerSuccess) + if (result != gfx::kCALayerSuccess +#if BUILDFLAG(USE_STARBOARD_MEDIA) + // When doing hole-punching, the call above will fail but FromDrawQuad() + // below provides the information this function needs. + && at->material != DrawQuad::Material::kVideoHole +#endif // BUILDFLAG(USE_STARBOARD_MEDIA) + ) { return false; + } if (skip) return true; @@ -526,9 +558,30 @@ bool CALayerOverlayProcessor::PutQuadInSeparateOverlay( if (!AreClipSettingsValid(ca_layer, ca_layer_overlays)) return true; +#if BUILDFLAG(USE_STARBOARD_MEDIA) + const bool is_video_hole = at->material == DrawQuad::Material::kVideoHole; + if (is_video_hole) { + CHECK_EQ(candidate_factory.FromDrawQuad(*at, ca_layer), + OverlayCandidate::CandidateStatus::kSuccess); + DCHECK(GetVideoGeometrySetter()); + GetVideoGeometrySetter()->SetVideoGeometry( + ca_layer.display_rect, + std::get(ca_layer.transform), + VideoHoleDrawQuad::MaterialCast(*at)->overlay_plane_id); + } +#endif // BUILDFLAG(USE_STARBOARD_MEDIA) + ca_layer.protected_video_type = protected_video_type; render_pass->ReplaceExistingQuadWithHolePunch(at); - ca_layer_overlays->push_back(ca_layer); +#if BUILDFLAG(USE_STARBOARD_MEDIA) + // The video hole quad has been replaced. Do not add it to |ca_layer_overlays| + // since it does not have a resource id, which causes + // SkiaRenderer::ScheduleOverlays() to hit an assertion. + if (!is_video_hole) +#endif // BUILDFLAG(USE_STARBOARD_MEDIA) + { + ca_layer_overlays->push_back(ca_layer); + } return true; } diff --git a/components/viz/service/display/ca_layer_overlay.h b/components/viz/service/display/ca_layer_overlay.h index 9b583bf75fae..506a07bf3f3d 100644 --- a/components/viz/service/display/ca_layer_overlay.h +++ b/components/viz/service/display/ca_layer_overlay.h @@ -24,6 +24,7 @@ namespace viz { class DisplayResourceProvider; class DrawQuad; +class OverlayCandidateFactory; // TODO(weiliangc): Eventually fold this class into OverlayProcessorMac. class VIZ_SERVICE_EXPORT CALayerOverlayProcessor { @@ -47,7 +48,8 @@ class VIZ_SERVICE_EXPORT CALayerOverlayProcessor { const base::flat_map>& render_pass_backdrop_filters, - OverlayCandidateList* ca_layer_overlays) const; + OverlayCandidateList* ca_layer_overlays, + const OverlayCandidateFactory& candidate_factory) const; // Returns true if all quads in the root render pass have been replaced by // CALayerOverlays. Virtual for testing. @@ -80,7 +82,8 @@ class VIZ_SERVICE_EXPORT CALayerOverlayProcessor { raw_ptr>& render_pass_backdrop_filters, gfx::ProtectedVideoType protected_video_type, - OverlayCandidateList* ca_layer_overlays) const; + OverlayCandidateList* ca_layer_overlays, + const OverlayCandidateFactory& candidate_factory) const; void SaveCALayerResult(gfx::CALayerResult result); diff --git a/components/viz/service/display/overlay_processor_mac.cc b/components/viz/service/display/overlay_processor_mac.cc index 21b583a4b9e0..2fe6d5c23dbc 100644 --- a/components/viz/service/display/overlay_processor_mac.cc +++ b/components/viz/service/display/overlay_processor_mac.cc @@ -12,7 +12,9 @@ #include "components/viz/common/quads/solid_color_draw_quad.h" #include "components/viz/service/display/display_resource_provider.h" #include "components/viz/service/display/output_surface.h" +#include "components/viz/service/display/overlay_candidate_factory.h" #include "ui/gfx/geometry/rect_conversions.h" +#include "ui/gfx/geometry/rect_f.h" namespace viz { @@ -81,10 +83,18 @@ void OverlayProcessorMac::ProcessForOverlays( // drawing the root RenderPass, we set |damage_rect| to be empty. *damage_rect = gfx::Rect(); } else { + OverlayCandidateFactory::OverlayContext context; + context.supports_mask_filter = true; + const OverlayCandidateFactory factory( + render_pass, resource_provider, &surface_damage_rect_list, + &output_color_matrix, + output_surface_plane ? output_surface_plane->display_rect + : gfx::RectF(), + &render_pass_filters, context); ca_layer_overlay_processor_->PutForcedOverlayContentIntoUnderlays( resource_provider, render_pass, gfx::RectF(render_pass->output_rect), &render_pass->quad_list, render_pass_filters, - render_pass_backdrop_filters, candidates); + render_pass_backdrop_filters, candidates, factory); } } diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn index 1f7dde3d5887..dd7c753407f2 100644 --- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn @@ -3480,7 +3480,7 @@ source_set("browser") { deps += [ "//gpu/vulkan/init" ] } if (is_cobalt) { - deps += [ + deps += [ "//third_party/jni_zero:cobalt_for_google3_buildflags", ] } @@ -3793,6 +3793,13 @@ group("for_content_tests") { "//cobalt:cobalt_unittests__library__jni_registration__native_sources", ] } + + if (is_ios && target_platform == "tvos") { + visibility += [ + "//cobalt:cobalt_unittests_executable", + "//cobalt:run_cobalt_unittests", + ] + } } if (!is_component_build) { public_deps = [ ":browser" ] diff --git a/media/base/starboard/demuxer_memory_limit_starboard.cc b/media/base/starboard/demuxer_memory_limit_starboard.cc index cff75c166d28..27c023ed3216 100644 --- a/media/base/starboard/demuxer_memory_limit_starboard.cc +++ b/media/base/starboard/demuxer_memory_limit_starboard.cc @@ -12,10 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "media/base/demuxer_memory_limit.h" +// clang-format on + #include "base/logging.h" #include "build/build_config.h" #include "media/base/decoder_buffer.h" -#include "media/base/demuxer_memory_limit.h" #include "media/base/video_codecs.h" #if !BUILDFLAG(USE_STARBOARD_MEDIA) diff --git a/starboard/BUILD.gn b/starboard/BUILD.gn index d53932b068c7..b07c2f3c2e32 100644 --- a/starboard/BUILD.gn +++ b/starboard/BUILD.gn @@ -135,7 +135,9 @@ if (is_cobalt_hermetic_build) { } else { group("starboard_group") { public_deps = [ ":starboard_headers_only" ] - if (is_android) { + if (is_android || is_ios) { + # Both Android and tvOS use platform-specific headers in at least + # //cobalt. public_deps += [ "//starboard($starboard_toolchain)" ] } else { deps = [ "//starboard($starboard_toolchain)" ] diff --git a/starboard/android/shared/BUILD.gn b/starboard/android/shared/BUILD.gn index 92004dbecf85..bf00b5c8cf8e 100644 --- a/starboard/android/shared/BUILD.gn +++ b/starboard/android/shared/BUILD.gn @@ -250,6 +250,7 @@ static_library("starboard_platform") { #"speech_synthesis_speak.cc", "starboard_bridge.cc", "starboard_bridge.h", + "starboard_feature_list.cc", "system_get_extensions.cc", "system_get_locale_id.cc", "system_get_path.cc", @@ -312,6 +313,7 @@ static_library("starboard_platform") { "//cobalt/browser/h5vcc_accessibility:manager", "//cobalt/browser/h5vcc_runtime:deep_link_manager", "//starboard/common", + "//starboard/extension:feature_config_header", "//starboard/shared/starboard/media:media_util", "//starboard/shared/starboard/player/filter:filter_based_player_sources", ] diff --git a/starboard/android/shared/accessibility_get_display_settings.cc b/starboard/android/shared/accessibility_get_display_settings.cc index a8651f3cc910..ca550164c41d 100644 --- a/starboard/android/shared/accessibility_get_display_settings.cc +++ b/starboard/android/shared/accessibility_get_display_settings.cc @@ -12,7 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off #include "starboard/android/shared/accessibility_extension.h" +// clang-format on + #include "starboard/common/log.h" namespace starboard { diff --git a/starboard/android/shared/accessibility_set_captions_enabled.cc b/starboard/android/shared/accessibility_set_captions_enabled.cc index e6a21a6fc9ef..e201687c9bb1 100644 --- a/starboard/android/shared/accessibility_set_captions_enabled.cc +++ b/starboard/android/shared/accessibility_set_captions_enabled.cc @@ -12,7 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off #include "starboard/android/shared/accessibility_extension.h" +// clang-format on + #include "starboard/configuration.h" namespace starboard { diff --git a/starboard/android/shared/audio_sink_get_min_buffer_size_in_frames.cc b/starboard/android/shared/audio_sink_get_min_buffer_size_in_frames.cc index 3fd37ebde234..0b4bbf6b74d3 100644 --- a/starboard/android/shared/audio_sink_get_min_buffer_size_in_frames.cc +++ b/starboard/android/shared/audio_sink_get_min_buffer_size_in_frames.cc @@ -12,9 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/audio_sink.h" +// clang-format on + #include "starboard/android/shared/audio_track_audio_sink_type.h" #include "starboard/android/shared/runtime_resource_overlay.h" -#include "starboard/audio_sink.h" #include "starboard/common/log.h" int SbAudioSinkGetMinBufferSizeInFrames(int channels, diff --git a/starboard/android/shared/audio_sink_get_nearest_supported_sample_frequency.cc b/starboard/android/shared/audio_sink_get_nearest_supported_sample_frequency.cc index 2a4be5537bb2..b1685bd7831b 100644 --- a/starboard/android/shared/audio_sink_get_nearest_supported_sample_frequency.cc +++ b/starboard/android/shared/audio_sink_get_nearest_supported_sample_frequency.cc @@ -12,7 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off #include "starboard/audio_sink.h" +// clang-format on + #include "starboard/common/log.h" int SbAudioSinkGetNearestSupportedSampleFrequency(int sampling_frequency_hz) { diff --git a/starboard/android/shared/drm_create_system.cc b/starboard/android/shared/drm_create_system.cc index 07b2fa03c92d..2cd187a09c62 100644 --- a/starboard/android/shared/drm_create_system.cc +++ b/starboard/android/shared/drm_create_system.cc @@ -12,7 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off #include "starboard/android/shared/drm_system.h" +// clang-format on + #include "starboard/android/shared/media_common.h" SbDrmSystem SbDrmCreateSystem( diff --git a/starboard/android/shared/drm_system.h b/starboard/android/shared/drm_system.h index 51023537db39..8eae79a028c4 100644 --- a/starboard/android/shared/drm_system.h +++ b/starboard/android/shared/drm_system.h @@ -15,6 +15,10 @@ #ifndef STARBOARD_ANDROID_SHARED_DRM_SYSTEM_H_ #define STARBOARD_ANDROID_SHARED_DRM_SYSTEM_H_ +// clang-format off +#include "starboard/shared/starboard/drm/drm_system_internal.h" +// clang-format on + #include #include @@ -29,7 +33,6 @@ #include "starboard/android/shared/media_common.h" #include "starboard/android/shared/media_drm_bridge.h" #include "starboard/common/thread.h" -#include "starboard/shared/starboard/drm/drm_system_internal.h" #include "starboard/shared/starboard/thread_checker.h" namespace starboard { diff --git a/starboard/android/shared/log_flush.cc b/starboard/android/shared/log_flush.cc index b0e847f129fe..2594fc83a978 100644 --- a/starboard/android/shared/log_flush.cc +++ b/starboard/android/shared/log_flush.cc @@ -12,9 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/common/log.h" +// clang-format on + #include #include -#include "starboard/common/log.h" - void SbLogFlush() {} diff --git a/starboard/android/shared/media_get_audio_configuration.cc b/starboard/android/shared/media_get_audio_configuration.cc index 7c1c5a3eb932..9fe74ebdbad7 100644 --- a/starboard/android/shared/media_get_audio_configuration.cc +++ b/starboard/android/shared/media_get_audio_configuration.cc @@ -12,10 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/media.h" +// clang-format on + #include "starboard/android/shared/media_capabilities_cache.h" #include "starboard/common/log.h" #include "starboard/common/media.h" -#include "starboard/media.h" // TODO(b/284140486): Refine the implementation so it works when the audio // outputs are changed during the query. diff --git a/starboard/android/shared/media_is_audio_supported.cc b/starboard/android/shared/media_is_audio_supported.cc index 5871748644d6..41cd69a2ae78 100644 --- a/starboard/android/shared/media_is_audio_supported.cc +++ b/starboard/android/shared/media_is_audio_supported.cc @@ -12,13 +12,16 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/shared/starboard/media/media_support_internal.h" +// clang-format on + #include "starboard/android/shared/media_capabilities_cache.h" #include "starboard/android/shared/media_common.h" #include "starboard/audio_sink.h" #include "starboard/configuration.h" #include "starboard/configuration_constants.h" #include "starboard/media.h" -#include "starboard/shared/starboard/media/media_support_internal.h" namespace starboard::shared::starboard::media { diff --git a/starboard/android/shared/media_is_supported.cc b/starboard/android/shared/media_is_supported.cc index 801cf1a29532..224d9da957f1 100644 --- a/starboard/android/shared/media_is_supported.cc +++ b/starboard/android/shared/media_is_supported.cc @@ -12,12 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/shared/starboard/media/media_support_internal.h" +// clang-format on + #include #include "starboard/android/shared/media_capabilities_cache.h" #include "starboard/android/shared/media_common.h" #include "starboard/media.h" -#include "starboard/shared/starboard/media/media_support_internal.h" #include "starboard/shared/starboard/media/mime_type.h" namespace starboard::shared::starboard::media { diff --git a/starboard/android/shared/media_is_video_supported.cc b/starboard/android/shared/media_is_video_supported.cc index 7eda54b1958b..da088f83907d 100644 --- a/starboard/android/shared/media_is_video_supported.cc +++ b/starboard/android/shared/media_is_video_supported.cc @@ -12,12 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/shared/starboard/media/media_support_internal.h" +// clang-format on + #include "starboard/android/shared/max_media_codec_output_buffers_lookup_table.h" #include "starboard/android/shared/media_capabilities_cache.h" #include "starboard/android/shared/media_common.h" #include "starboard/configuration.h" #include "starboard/media.h" -#include "starboard/shared/starboard/media/media_support_internal.h" #include "starboard/shared/starboard/media/media_util.h" namespace starboard::shared::starboard::media { diff --git a/starboard/android/shared/microphone_impl.cc b/starboard/android/shared/microphone_impl.cc index 902e26931811..c66da5a59c99 100644 --- a/starboard/android/shared/microphone_impl.cc +++ b/starboard/android/shared/microphone_impl.cc @@ -12,6 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/shared/starboard/microphone/microphone_internal.h" +// clang-format on + #include #include @@ -25,7 +29,6 @@ #include "starboard/android/shared/starboard_bridge.h" #include "starboard/common/check_op.h" #include "starboard/common/log.h" -#include "starboard/shared/starboard/microphone/microphone_internal.h" #include "starboard/shared/starboard/thread_checker.h" namespace starboard { diff --git a/starboard/android/shared/player_create.cc b/starboard/android/shared/player_create.cc index 99518f2adc5b..85d90cf592ff 100644 --- a/starboard/android/shared/player_create.cc +++ b/starboard/android/shared/player_create.cc @@ -12,6 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/player.h" +// clang-format on + #include #include @@ -22,7 +26,6 @@ #include "starboard/common/string.h" #include "starboard/configuration.h" #include "starboard/decode_target.h" -#include "starboard/player.h" #include "starboard/shared/starboard/player/filter/filter_based_player_worker_handler.h" #include "starboard/shared/starboard/player/player_internal.h" #include "starboard/shared/starboard/player/player_worker.h" diff --git a/starboard/android/shared/player_destroy.cc b/starboard/android/shared/player_destroy.cc index 1deef7216aaa..6409862d1d8e 100644 --- a/starboard/android/shared/player_destroy.cc +++ b/starboard/android/shared/player_destroy.cc @@ -12,7 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off #include "starboard/player.h" +// clang-format on + #include "starboard/shared/starboard/player/player_internal.h" void SbPlayerDestroy(SbPlayer player) { diff --git a/starboard/android/shared/player_get_preferred_output_mode.cc b/starboard/android/shared/player_get_preferred_output_mode.cc index 4f7a50770ee3..ca9012d7c847 100644 --- a/starboard/android/shared/player_get_preferred_output_mode.cc +++ b/starboard/android/shared/player_get_preferred_output_mode.cc @@ -12,10 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/player.h" +// clang-format on + #include #include "starboard/configuration.h" -#include "starboard/player.h" #include "starboard/shared/starboard/media/media_util.h" #include "starboard/shared/starboard/player/filter/player_components.h" diff --git a/starboard/android/shared/player_set_bounds.cc b/starboard/android/shared/player_set_bounds.cc index 3798168e66b8..73c5771a66fd 100644 --- a/starboard/android/shared/player_set_bounds.cc +++ b/starboard/android/shared/player_set_bounds.cc @@ -12,9 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/player.h" +// clang-format on + #include "starboard/android/shared/starboard_bridge.h" #include "starboard/common/log.h" -#include "starboard/player.h" #include "starboard/shared/starboard/player/player_internal.h" // TODO: (cobalt b/372559388) Update namespace to jni_zero. diff --git a/starboard/android/shared/player_set_playback_rate.cc b/starboard/android/shared/player_set_playback_rate.cc index 7e027d017dc0..6780d774a082 100644 --- a/starboard/android/shared/player_set_playback_rate.cc +++ b/starboard/android/shared/player_set_playback_rate.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/common/log.h" +// clang-format off #include "starboard/player.h" +// clang-format on + +#include "starboard/common/log.h" #include "starboard/shared/starboard/player/player_internal.h" bool SbPlayerSetPlaybackRate(SbPlayer player, double playback_rate) { diff --git a/starboard/android/shared/posix_emu/dirent.cc b/starboard/android/shared/posix_emu/dirent.cc index 3bbf8ed89820..f002afe78616 100644 --- a/starboard/android/shared/posix_emu/dirent.cc +++ b/starboard/android/shared/posix_emu/dirent.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include +// clang-format off #include +// clang-format on + +#include #include #include diff --git a/starboard/android/shared/posix_emu/pthread.cc b/starboard/android/shared/posix_emu/pthread.cc index 055cc5f0bd2b..7abc0e67281d 100644 --- a/starboard/android/shared/posix_emu/pthread.cc +++ b/starboard/android/shared/posix_emu/pthread.cc @@ -12,9 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include +// clang-format on + #include #include -#include #include #include diff --git a/starboard/android/shared/runtime_resource_overlay.cc b/starboard/android/shared/runtime_resource_overlay.cc index 058ec82daef4..2c19b420b0ef 100644 --- a/starboard/android/shared/runtime_resource_overlay.cc +++ b/starboard/android/shared/runtime_resource_overlay.cc @@ -12,11 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "cobalt/android/jni_headers/ResourceOverlay_jni.h" +// clang-format on + #include "starboard/android/shared/runtime_resource_overlay.h" #include "base/android/jni_android.h" #include "base/android/scoped_java_ref.h" -#include "cobalt/android/jni_headers/ResourceOverlay_jni.h" #include "starboard/android/shared/starboard_bridge.h" #include "starboard/common/log.h" #include "starboard/common/once.h" diff --git a/starboard/android/shared/speech_synthesis_cancel.cc b/starboard/android/shared/speech_synthesis_cancel.cc index 6995625788a7..a7ad9ab9f1d2 100644 --- a/starboard/android/shared/speech_synthesis_cancel.cc +++ b/starboard/android/shared/speech_synthesis_cancel.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/android/shared/starboard_bridge.h" +// clang-format off #include "starboard/speech_synthesis.h" +// clang-format on + +#include "starboard/android/shared/starboard_bridge.h" // Must come after all headers that specialize FromJniType() / ToJniType(). #include "cobalt/android/jni_headers/CobaltTextToSpeechHelper_jni.h" diff --git a/starboard/android/shared/speech_synthesis_speak.cc b/starboard/android/shared/speech_synthesis_speak.cc index 97dee32a0354..1c030d705825 100644 --- a/starboard/android/shared/speech_synthesis_speak.cc +++ b/starboard/android/shared/speech_synthesis_speak.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/android/shared/starboard_bridge.h" +// clang-format off #include "starboard/speech_synthesis.h" +// clang-format on + +#include "starboard/android/shared/starboard_bridge.h" // Must come after all headers that specialize FromJniType() / ToJniType(). #include "cobalt/android/jni_headers/CobaltTextToSpeechHelper_jni.h" diff --git a/starboard/android/shared/starboard_feature_list.cc b/starboard/android/shared/starboard_feature_list.cc new file mode 100644 index 000000000000..8ec5e3c6ad88 --- /dev/null +++ b/starboard/android/shared/starboard_feature_list.cc @@ -0,0 +1,33 @@ +// Copyright 2025 The Cobalt Authors. All Rights Reserved. +// +// 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 "base/android/jni_string.h" +#include "starboard/shared/starboard/feature_list.h" +#include "starboard/shared/starboard/features.h" + +// Must come after all headers that specialize FromJniType() / ToJniType(). +#include "cobalt/android/jni_headers/StarboardFeatureList_jni.h" + +using base::android::ConvertJavaStringToUTF8; +using base::android::JavaParamRef; + +namespace starboard::features { + +static jboolean JNI_StarboardFeatureList_IsEnabled( + JNIEnv* env, + const JavaParamRef& jfeature_name) { + std::string feature_name = ConvertJavaStringToUTF8(env, jfeature_name); + return FeatureList::IsEnabledByName(feature_name); +} +} // namespace starboard::features diff --git a/starboard/android/shared/system_get_extensions.cc b/starboard/android/shared/system_get_extensions.cc index 535a0f403ee6..bae93e25889a 100644 --- a/starboard/android/shared/system_get_extensions.cc +++ b/starboard/android/shared/system_get_extensions.cc @@ -12,6 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/system.h" +// clang-format on + #include "starboard/android/shared/accessibility_extension.h" #include "starboard/android/shared/android_media_session_client.h" #include "starboard/android/shared/configuration.h" @@ -32,7 +36,6 @@ #include "starboard/extension/platform_service.h" #include "starboard/extension/player_set_max_video_input_size.h" #include "starboard/extension/system_info.h" -#include "starboard/system.h" const void* SbSystemGetExtension(const char* name) { if (strcmp(name, kCobaltExtensionPlatformServiceName) == 0) { diff --git a/starboard/android/shared/system_get_locale_id.cc b/starboard/android/shared/system_get_locale_id.cc index 9cc219129bac..a9e870893410 100644 --- a/starboard/android/shared/system_get_locale_id.cc +++ b/starboard/android/shared/system_get_locale_id.cc @@ -12,6 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/system.h" +// clang-format on + #include #include "base/android/jni_android.h" @@ -20,7 +24,6 @@ #include "starboard/android/shared/starboard_bridge.h" #include "starboard/common/once.h" #include "starboard/common/string.h" -#include "starboard/system.h" namespace starboard { namespace { diff --git a/starboard/android/shared/system_get_path.cc b/starboard/android/shared/system_get_path.cc index ea0dc89bcccc..477a911232e6 100644 --- a/starboard/android/shared/system_get_path.cc +++ b/starboard/android/shared/system_get_path.cc @@ -12,6 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/system.h" +// clang-format on + #include #include #include @@ -21,7 +25,6 @@ #include "starboard/android/shared/file_internal.h" #include "starboard/common/log.h" #include "starboard/common/string.h" -#include "starboard/system.h" using ::base::android::ScopedJavaGlobalRef; using ::starboard::g_app_assets_dir; diff --git a/starboard/android/shared/system_get_property.cc b/starboard/android/shared/system_get_property.cc index 288cd3c3e571..0fc2db1c2b6b 100644 --- a/starboard/android/shared/system_get_property.cc +++ b/starboard/android/shared/system_get_property.cc @@ -12,11 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/system.h" +// clang-format on + #include "starboard/android/shared/starboard_bridge.h" #include "starboard/common/device_type.h" #include "starboard/common/log.h" #include "starboard/common/string.h" -#include "starboard/system.h" #include "sys/system_properties.h" #define STRINGIZE_NO_EXPANSION(x) #x diff --git a/starboard/android/shared/system_has_capability.cc b/starboard/android/shared/system_has_capability.cc index 84f2216fc038..34f78fbc9ad4 100644 --- a/starboard/android/shared/system_has_capability.cc +++ b/starboard/android/shared/system_has_capability.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/common/log.h" +// clang-format off #include "starboard/system.h" +// clang-format on + +#include "starboard/common/log.h" bool SbSystemHasCapability(SbSystemCapabilityId capability_id) { switch (capability_id) { diff --git a/starboard/android/shared/system_platform_error.cc b/starboard/android/shared/system_platform_error.cc index 84d8db5b4419..c3c67c4effed 100644 --- a/starboard/android/shared/system_platform_error.cc +++ b/starboard/android/shared/system_platform_error.cc @@ -12,6 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/system.h" +// clang-format on + #include #include @@ -20,7 +24,6 @@ #include "cobalt/android/jni_headers/PlatformError_jni.h" #include "starboard/android/shared/application_android.h" #include "starboard/android/shared/starboard_bridge.h" -#include "starboard/system.h" namespace { using base::android::ScopedJavaGlobalRef; diff --git a/starboard/android/shared/system_request_conceal.cc b/starboard/android/shared/system_request_conceal.cc index e565478fa6db..701c9f04032a 100644 --- a/starboard/android/shared/system_request_conceal.cc +++ b/starboard/android/shared/system_request_conceal.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/android/shared/starboard_bridge.h" +// clang-format off #include "starboard/system.h" +// clang-format on + +#include "starboard/android/shared/starboard_bridge.h" void SbSystemRequestConceal() { JNIEnv* env = base::android::AttachCurrentThread(); diff --git a/starboard/android/shared/system_request_freeze_no_freezedone_callback.cc b/starboard/android/shared/system_request_freeze_no_freezedone_callback.cc index bb4b55d17813..f8e98c07d13f 100644 --- a/starboard/android/shared/system_request_freeze_no_freezedone_callback.cc +++ b/starboard/android/shared/system_request_freeze_no_freezedone_callback.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/shared/starboard/application.h" +// clang-format off #include "starboard/system.h" +// clang-format on + +#include "starboard/shared/starboard/application.h" void SbSystemRequestFreeze() { // There is no FreezeDone callback for stopping all thread execution diff --git a/starboard/android/shared/system_request_stop.cc b/starboard/android/shared/system_request_stop.cc index 20f1b3e18622..392623b5fd06 100644 --- a/starboard/android/shared/system_request_stop.cc +++ b/starboard/android/shared/system_request_stop.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/common/log.h" +// clang-format off #include "starboard/system.h" +// clang-format on + +#include "starboard/common/log.h" void SbSystemRequestStop(int error_level) { // TODO: b/450024477 - Implement this method when AOSP is used. diff --git a/starboard/android/shared/thread_create_priority.cc b/starboard/android/shared/thread_create_priority.cc index fa14a72c1a40..8fee30645b7a 100644 --- a/starboard/android/shared/thread_create_priority.cc +++ b/starboard/android/shared/thread_create_priority.cc @@ -12,12 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/thread.h" +// clang-format on + #include #include #include "starboard/common/log.h" #include "starboard/configuration_constants.h" -#include "starboard/thread.h" namespace { diff --git a/starboard/android/shared/time_zone_get_name.cc b/starboard/android/shared/time_zone_get_name.cc index c8c68c19e441..0729374af939 100644 --- a/starboard/android/shared/time_zone_get_name.cc +++ b/starboard/android/shared/time_zone_get_name.cc @@ -12,10 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/time_zone.h" +// clang-format on + #include #include "starboard/android/shared/starboard_bridge.h" -#include "starboard/time_zone.h" // TODO: (cobalt b/372559388) Update namespace to jni_zero. using base::android::AttachCurrentThread; diff --git a/starboard/android/shared/window_destroy.cc b/starboard/android/shared/window_destroy.cc index 7a4a2aee5079..cbee44ba58fb 100644 --- a/starboard/android/shared/window_destroy.cc +++ b/starboard/android/shared/window_destroy.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/android/shared/application_android.h" +// clang-format off #include "starboard/window.h" +// clang-format on + +#include "starboard/android/shared/application_android.h" bool SbWindowDestroy(SbWindow window) { return starboard::ApplicationAndroid::Get()->DestroyWindow(window); diff --git a/starboard/android/shared/window_get_platform_handle.cc b/starboard/android/shared/window_get_platform_handle.cc index 1beb0c69719b..9517178ccea5 100644 --- a/starboard/android/shared/window_get_platform_handle.cc +++ b/starboard/android/shared/window_get_platform_handle.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/android/shared/window_internal.h" +// clang-format off #include "starboard/window.h" +// clang-format on + +#include "starboard/android/shared/window_internal.h" void* SbWindowGetPlatformHandle(SbWindow window) { if (!SbWindowIsValid(window)) { diff --git a/starboard/build/config/linux/rdk/starboard_rdk_path.gni b/starboard/build/config/linux/rdk/config_variables.gni similarity index 73% rename from starboard/build/config/linux/rdk/starboard_rdk_path.gni rename to starboard/build/config/linux/rdk/config_variables.gni index fe09c603e49d..b246abc96e68 100644 --- a/starboard/build/config/linux/rdk/starboard_rdk_path.gni +++ b/starboard/build/config/linux/rdk/config_variables.gni @@ -14,4 +14,11 @@ declare_args() { rdk_starboard_root = "/" + rdk_arm_call_convention = "hardfp" } + +rdk_home_dir = getenv("RDK_HOME") +assert(rdk_home_dir != "", + "RDK builds require the 'RDK_HOME' environment variable to be set.") + +rdk_sysroot = "$rdk_home_dir/sysroots/aarch64-rdk-linux" diff --git a/starboard/extension/BUILD.gn b/starboard/extension/BUILD.gn index 00c594df1836..88a16492048e 100644 --- a/starboard/extension/BUILD.gn +++ b/starboard/extension/BUILD.gn @@ -12,6 +12,19 @@ # See the License for the specific language governing permissions and # limitations under the License. +source_set("feature_config_header") { + # This target exists to export the feature_config.h header to other targets + # that need to include it for its macros. + visibility = [ + "//cobalt/android:java_features_srcjar", + "//cobalt/common/features:features", + "//starboard/android/shared:starboard_platform", + ] + sources = [ "feature_config.h" ] + + deps = [ "//starboard:starboard_headers_only" ] +} + source_set("extension_test") { testonly = true sources = [ diff --git a/starboard/linux/shared/drm_create_system.cc b/starboard/linux/shared/drm_create_system.cc index 25e548941a58..d5f834c94582 100644 --- a/starboard/linux/shared/drm_create_system.cc +++ b/starboard/linux/shared/drm_create_system.cc @@ -12,9 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/drm.h" +// clang-format on + #include "starboard/common/log.h" #include "starboard/common/string.h" -#include "starboard/drm.h" #include "starboard/shared/widevine/drm_system_widevine.h" SbDrmSystem SbDrmCreateSystem( diff --git a/starboard/linux/shared/media_is_audio_supported.cc b/starboard/linux/shared/media_is_audio_supported.cc index 3c0cb430d806..872b6cbdb44c 100644 --- a/starboard/linux/shared/media_is_audio_supported.cc +++ b/starboard/linux/shared/media_is_audio_supported.cc @@ -12,11 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/shared/starboard/media/media_support_internal.h" +// clang-format on + #include "starboard/common/log.h" #include "starboard/configuration.h" #include "starboard/configuration_constants.h" #include "starboard/media.h" -#include "starboard/shared/starboard/media/media_support_internal.h" namespace starboard::shared::starboard::media { diff --git a/starboard/linux/shared/media_is_video_supported.cc b/starboard/linux/shared/media_is_video_supported.cc index 3920d4f0a4dc..67af6401e779 100644 --- a/starboard/linux/shared/media_is_video_supported.cc +++ b/starboard/linux/shared/media_is_video_supported.cc @@ -12,13 +12,16 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/shared/starboard/media/media_support_internal.h" +// clang-format on + #include "starboard/common/log.h" #include "starboard/configuration.h" #include "starboard/configuration_constants.h" #include "starboard/gles.h" #include "starboard/media.h" #include "starboard/shared/libde265/de265_library_loader.h" -#include "starboard/shared/starboard/media/media_support_internal.h" #include "starboard/shared/starboard/media/media_util.h" #include "starboard/system.h" diff --git a/starboard/linux/shared/system_get_path.cc b/starboard/linux/shared/system_get_path.cc index 19e8764d684e..4f8f2c436deb 100644 --- a/starboard/linux/shared/system_get_path.cc +++ b/starboard/linux/shared/system_get_path.cc @@ -12,6 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/system.h" +// clang-format on + #include #include #include @@ -23,7 +27,6 @@ #include "starboard/common/log.h" #include "starboard/common/string.h" #include "starboard/configuration_constants.h" -#include "starboard/system.h" #if SB_IS(EVERGREEN_COMPATIBLE) #include "starboard/elf_loader/evergreen_config.h" #endif diff --git a/starboard/linux/shared/system_has_capability.cc b/starboard/linux/shared/system_has_capability.cc index 84f2216fc038..34f78fbc9ad4 100644 --- a/starboard/linux/shared/system_has_capability.cc +++ b/starboard/linux/shared/system_has_capability.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/common/log.h" +// clang-format off #include "starboard/system.h" +// clang-format on + +#include "starboard/common/log.h" bool SbSystemHasCapability(SbSystemCapabilityId capability_id) { switch (capability_id) { diff --git a/starboard/linux/x64x11/skia/system_get_extensions.cc b/starboard/linux/x64x11/skia/system_get_extensions.cc index e3db7b073691..06d6aa54af7e 100644 --- a/starboard/linux/x64x11/skia/system_get_extensions.cc +++ b/starboard/linux/x64x11/skia/system_get_extensions.cc @@ -12,10 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/system.h" +// clang-format on + #include "starboard/common/string.h" #include "starboard/extension/configuration.h" #include "starboard/linux/x64x11/skia/configuration.h" -#include "starboard/system.h" const void* SbSystemGetExtension(const char* name) { if (strcmp(name, kCobaltExtensionConfigurationName) == 0) { diff --git a/starboard/linux/x64x11/system_get_property.cc b/starboard/linux/x64x11/system_get_property.cc index a5ea47277070..20b6d643c6eb 100644 --- a/starboard/linux/x64x11/system_get_property.cc +++ b/starboard/linux/x64x11/system_get_property.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/linux/x64x11/system_get_property_impl.h" +// clang-format off #include "starboard/system.h" +// clang-format on + +#include "starboard/linux/x64x11/system_get_property_impl.h" bool SbSystemGetProperty(SbSystemPropertyId property_id, char* out_value, diff --git a/starboard/nplb/BUILD.gn b/starboard/nplb/BUILD.gn index d86425080789..5c896e31f8ad 100644 --- a/starboard/nplb/BUILD.gn +++ b/starboard/nplb/BUILD.gn @@ -43,8 +43,6 @@ test("nplb") { # TODO(b/432821616): Move |media_sources| to a source_set. media_sources = [ - "//starboard/testing/fake_graphics_context_provider.cc", - "//starboard/testing/fake_graphics_context_provider.h", "audio_sink_create_test.cc", "audio_sink_destroy_test.cc", "audio_sink_get_max_channels_test.cc", @@ -339,6 +337,7 @@ test("nplb") { "//starboard/shared/starboard/media:media_util", "//starboard/shared/starboard/player:player_test_data", "//starboard/shared/starboard/player:video_dmp", + "//starboard/testing:fake_graphics_context_provider", "//testing/gmock", "//testing/gtest", ] diff --git a/starboard/nplb/posix_compliance/posix_locale_langinfo_test_data.cc.inc b/starboard/nplb/posix_compliance/posix_locale_langinfo_test_data.cc.inc index 14a3153be3e9..cbc432e1188a 100644 --- a/starboard/nplb/posix_compliance/posix_locale_langinfo_test_data.cc.inc +++ b/starboard/nplb/posix_compliance/posix_locale_langinfo_test_data.cc.inc @@ -1,15 +1,15 @@ constexpr LanginfoTestData kLanginfoTestData[] = { { .locale_name = "af_ZA", - .radixchar = ".", - .thousands_sep = ",", - .codeset = "ISO-8859-1", + .radixchar = ",", + .thousands_sep = "\xc2\xa0", + .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %T", .d_fmt = "%d/%m/%Y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "VM", - .pm_str = "NM", + .am_str = "vm.", + .pm_str = "nm.", .day_1 = "Sondag", .day_2 = "Maandag", .day_3 = "Dinsdag", @@ -17,13 +17,13 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .day_5 = "Donderdag", .day_6 = "Vrydag", .day_7 = "Saterdag", - .abday_1 = "So", - .abday_2 = "Ma", - .abday_3 = "Di", - .abday_4 = "Wo", - .abday_5 = "Do", - .abday_6 = "Vr", - .abday_7 = "Sa", + .abday_1 = "So.", + .abday_2 = "Ma.", + .abday_3 = "Di.", + .abday_4 = "Wo.", + .abday_5 = "Do.", + .abday_6 = "Vr.", + .abday_7 = "Sa.", .mon_1 = "Januarie", .mon_2 = "Februarie", .mon_3 = "Maart", @@ -36,46 +36,46 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .mon_10 = "Oktober", .mon_11 = "November", .mon_12 = "Desember", - .abmon_1 = "Jan", - .abmon_2 = "Feb", - .abmon_3 = "Mrt", - .abmon_4 = "Apr", + .abmon_1 = "Jan.", + .abmon_2 = "Feb.", + .abmon_3 = "Mrt.", + .abmon_4 = "Apr.", .abmon_5 = "Mei", - .abmon_6 = "Jun", - .abmon_7 = "Jul", - .abmon_8 = "Aug", - .abmon_9 = "Sep", - .abmon_10 = "Okt", - .abmon_11 = "Nov", - .abmon_12 = "Des", + .abmon_6 = "Jun.", + .abmon_7 = "Jul.", + .abmon_8 = "Aug.", + .abmon_9 = "Sep.", + .abmon_10 = "Okt.", + .abmon_11 = "Nov.", + .abmon_12 = "Des.", .yesexpr = "^[+1jJyY]", .noexpr = "^[-0nN]", }, { .locale_name = "sq_AL", .radixchar = ",", - .thousands_sep = ".", - .codeset = "ISO-8859-1", + .thousands_sep = "\xc2\xa0", + .codeset = "UTF-8", .d_t_fmt = "%a %-d %b %Y %I:%M:%S.%p", .d_fmt = "%-d.%-m.%y", .t_fmt = "%I:%M:%S.%p %Z", .t_fmt_ampm = "%I:%M:%S.%p %Z", - .am_str = "PD", - .pm_str = "MD", + .am_str = "e paradites", + .pm_str = "e pasdites", .day_1 = "e diel", - .day_2 = "e h\xebn\xeb", - .day_3 = "e mart\xeb", - .day_4 = "e m\xebrkur\xeb", + .day_2 = "e h\xc3\xabn\xc3\xab", + .day_3 = "e mart\xc3\xab", + .day_4 = "e m\xc3\xabrkur\xc3\xab", .day_5 = "e enjte", .day_6 = "e premte", - .day_7 = "e shtun\xeb", - .abday_1 = "Die", - .abday_2 = "H\xebn", - .abday_3 = "Mar", - .abday_4 = "M\xebr", - .abday_5 = "Enj", - .abday_6 = "Pre", - .abday_7 = "Sht", + .day_7 = "e shtun\xc3\xab", + .abday_1 = "die", + .abday_2 = "h\xc3\xabn", + .abday_3 = "mar", + .abday_4 = "m\xc3\xabr", + .abday_5 = "enj", + .abday_6 = "pre", + .abday_7 = "sht", .mon_1 = "janar", .mon_2 = "shkurt", .mon_3 = "mars", @@ -86,20 +86,20 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .mon_8 = "gusht", .mon_9 = "shtator", .mon_10 = "tetor", - .mon_11 = "n\xebntor", + .mon_11 = "n\xc3\xabntor", .mon_12 = "dhjetor", - .abmon_1 = "Jan", - .abmon_2 = "Shk", - .abmon_3 = "Mar", - .abmon_4 = "Pri", - .abmon_5 = "Maj", - .abmon_6 = "Qer", - .abmon_7 = "Kor", - .abmon_8 = "Gsh", - .abmon_9 = "Sht", - .abmon_10 = "Tet", - .abmon_11 = "N\xebn", - .abmon_12 = "Dhj", + .abmon_1 = "jan", + .abmon_2 = "shk", + .abmon_3 = "mar", + .abmon_4 = "pri", + .abmon_5 = "maj", + .abmon_6 = "qer", + .abmon_7 = "korr", + .abmon_8 = "gush", + .abmon_9 = "sht", + .abmon_10 = "tet", + .abmon_11 = "n\xc3\xabn", + .abmon_12 = "dhj", .yesexpr = "^[+1yYpP]", .noexpr = "^[-0nNjJ]", }, @@ -112,7 +112,7 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .d_fmt = "%d/%m/%Y", .t_fmt = "%l:%M:%S %p", .t_fmt_ampm = "%l:%M:%S %p", - .am_str = "\xe1\x8c\xa1\xe1\x8b\x8b\xe1\x89\xb5", + .am_str = "\xe1\x8c\xa5\xe1\x8b\x8b\xe1\x89\xb5", .pm_str = "\xe1\x8a\xa8\xe1\x88\xb0\xe1\x8b\x93\xe1\x89\xb5", .day_1 = "\xe1\x8a\xa5\xe1\x88\x91\xe1\x8b\xb5", .day_2 = "\xe1\x88\xb0\xe1\x8a\x9e", @@ -122,14 +122,14 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .day_6 = "\xe1\x8b\x93\xe1\x88\xad\xe1\x89\xa5", .day_7 = "\xe1\x89\x85\xe1\x8b\xb3\xe1\x88\x9c", .abday_1 = "\xe1\x8a\xa5\xe1\x88\x91\xe1\x8b\xb5", - .abday_2 = "\xe1\x88\xb0\xe1\x8a\x9e ", + .abday_2 = "\xe1\x88\xb0\xe1\x8a\x9e", .abday_3 = "\xe1\x88\x9b\xe1\x8a\xad\xe1\x88\xb0", .abday_4 = "\xe1\x88\xa8\xe1\x89\xa1\xe1\x8b\x95", .abday_5 = "\xe1\x88\x90\xe1\x88\x99\xe1\x88\xb5", .abday_6 = "\xe1\x8b\x93\xe1\x88\xad\xe1\x89\xa5", .abday_7 = "\xe1\x89\x85\xe1\x8b\xb3\xe1\x88\x9c", - .mon_1 = "\xe1\x8c\x83\xe1\x8a\x95\xe1\x8b\xa9\xe1\x8b\x88\xe1\x88\xaa", - .mon_2 = "\xe1\x8d\x8c\xe1\x89\xa5\xe1\x88\xa9\xe1\x8b\x88\xe1\x88\xaa", + .mon_1 = "\xe1\x8c\x83\xe1\x8a\x95\xe1\x8b\x8b\xe1\x88\xaa", + .mon_2 = "\xe1\x8d\x8c\xe1\x89\xa5\xe1\x88\xa9\xe1\x8b\x8b\xe1\x88\xaa", .mon_3 = "\xe1\x88\x9b\xe1\x88\xad\xe1\x89\xbd", .mon_4 = "\xe1\x8a\xa4\xe1\x8d\x95\xe1\x88\xaa\xe1\x88\x8d", .mon_5 = "\xe1\x88\x9c\xe1\x8b\xad", @@ -140,16 +140,16 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .mon_10 = "\xe1\x8a\xa6\xe1\x8a\xad\xe1\x89\xb6\xe1\x89\xa0\xe1\x88\xad", .mon_11 = "\xe1\x8a\x96\xe1\x89\xac\xe1\x88\x9d\xe1\x89\xa0\xe1\x88\xad", .mon_12 = "\xe1\x8b\xb2\xe1\x88\xb4\xe1\x88\x9d\xe1\x89\xa0\xe1\x88\xad", - .abmon_1 = "\xe1\x8c\x83\xe1\x8a\x95\xe1\x8b\xa9", - .abmon_2 = "\xe1\x8d\x8c\xe1\x89\xa5\xe1\x88\xa9", + .abmon_1 = "\xe1\x8c\x83\xe1\x8a\x95", + .abmon_2 = "\xe1\x8d\x8c\xe1\x89\xa5", .abmon_3 = "\xe1\x88\x9b\xe1\x88\xad\xe1\x89\xbd", - .abmon_4 = "\xe1\x8a\xa4\xe1\x8d\x95\xe1\x88\xa8", - .abmon_5 = "\xe1\x88\x9c\xe1\x8b\xad ", - .abmon_6 = "\xe1\x8c\x81\xe1\x8a\x95 ", + .abmon_4 = "\xe1\x8a\xa4\xe1\x8d\x95\xe1\x88\xaa", + .abmon_5 = "\xe1\x88\x9c\xe1\x8b\xad", + .abmon_6 = "\xe1\x8c\x81\xe1\x8a\x95", .abmon_7 = "\xe1\x8c\x81\xe1\x88\x8b\xe1\x8b\xad", .abmon_8 = "\xe1\x8a\xa6\xe1\x8c\x88\xe1\x88\xb5", .abmon_9 = "\xe1\x88\xb4\xe1\x8d\x95\xe1\x89\xb4", - .abmon_10 = "\xe1\x8a\xa6\xe1\x8a\xad\xe1\x89\xb0", + .abmon_10 = "\xe1\x8a\xa6\xe1\x8a\xad\xe1\x89\xb6", .abmon_11 = "\xe1\x8a\x96\xe1\x89\xac\xe1\x88\x9d", .abmon_12 = "\xe1\x8b\xb2\xe1\x88\xb4\xe1\x88\x9d", .yesexpr = "^([+1yY\xe1\x8b\x8e]|\xe1\x8a\xa0\xe1\x8b\x8e\xe1\x8a\x95)", @@ -157,105 +157,105 @@ constexpr LanginfoTestData kLanginfoTestData[] = { }, { .locale_name = "ar_SA", - .radixchar = ".", - .thousands_sep = "", - .codeset = "ISO-8859-6", + .radixchar = "\xd9\xab", + .thousands_sep = "\xd9\xac", + .codeset = "UTF-8", .d_t_fmt = "%A %e %B %Y %k:%M:%S", .d_fmt = "%A %e %B %Y", .t_fmt = "%k:%M:%S", .t_fmt_ampm = "%k:%M:%S", - .am_str = "", - .pm_str = "", - .day_1 = "\xc7\xe4\xc3\xcd\xcf", - .day_2 = "\xc7\xe4\xc5\xcb\xe6\xea\xe6", - .day_3 = "\xc7\xe4\xcb\xe4\xc7\xcb\xc7\xc1", - .day_4 = "\xc7\xe4\xc3\xd1\xc8\xd9\xc7\xc1", - .day_5 = "\xc7\xe4\xce\xe5\xea\xd3", - .day_6 = "\xc7\xe4\xcc\xe5\xd9\xe0\xc9", - .day_7 = "\xc7\xe4\xd3\xc8\xca", - .abday_1 = "\xcd", - .abday_2 = "\xe6", - .abday_3 = "\xcb", - .abday_4 = "\xd1", - .abday_5 = "\xce", - .abday_6 = "\xcc", - .abday_7 = "\xd3", - .mon_1 = "\xea\xe6\xc7\xea\xd1", - .mon_2 = "\xe1\xc8\xd1\xc7\xea\xd1", - .mon_3 = "\xe5\xc7\xd1\xd3", - .mon_4 = "\xc3\xc8\xd1\xea\xe4", - .mon_5 = "\xe5\xc7\xea\xe8", - .mon_6 = "\xea\xe8\xe6\xea\xe8", - .mon_7 = "\xea\xe8\xe4\xea\xe8", - .mon_8 = "\xc3\xda\xd3\xd7\xd3", - .mon_9 = "\xd3\xc8\xca\xe5\xc8\xd1", - .mon_10 = "\xc3\xe3\xca\xe8\xc8\xd1", - .mon_11 = "\xe6\xe8\xe1\xe5\xc8\xd1", - .mon_12 = "\xcf\xea\xd3\xe5\xc8\xd1", - .abmon_1 = "\xea\xe6\xc7\xea\xd1", - .abmon_2 = "\xe1\xc8\xd1\xc7\xea\xd1", - .abmon_3 = "\xe5\xc7\xd1\xd3", - .abmon_4 = "\xc3\xc8\xd1\xea\xe4", - .abmon_5 = "\xe5\xc7\xea\xe8", - .abmon_6 = "\xea\xe8\xe6\xea\xe8", - .abmon_7 = "\xea\xe8\xe4\xea\xe8", - .abmon_8 = "\xc3\xda\xd3\xd7\xd3", - .abmon_9 = "\xd3\xc8\xca\xe5\xc8\xd1", - .abmon_10 = "\xc3\xe3\xca\xe8\xc8\xd1", - .abmon_11 = "\xe6\xe8\xe1\xe5\xc8\xd1", - .abmon_12 = "\xcf\xea\xd3\xe5\xc8\xd1", - .yesexpr = "^[+1\xe6yY]", - .noexpr = "^[-0\xe4nN]", + .am_str = "\xd8\xb5", + .pm_str = "\xd9\x85", + .day_1 = "\xd8\xa7\xd9\x84\xd8\xa3\xd8\xad\xd8\xaf", + .day_2 = "\xd8\xa7\xd9\x84\xd8\xa7\xd8\xab\xd9\x86\xd9\x8a\xd9\x86", + .day_3 = "\xd8\xa7\xd9\x84\xd8\xab\xd9\x84\xd8\xa7\xd8\xab\xd8\xa7\xd8\xa1", + .day_4 = "\xd8\xa7\xd9\x84\xd8\xa3\xd8\xb1\xd8\xa8\xd8\xb9\xd8\xa7\xd8\xa1", + .day_5 = "\xd8\xa7\xd9\x84\xd8\xae\xd9\x85\xd9\x8a\xd8\xb3", + .day_6 = "\xd8\xa7\xd9\x84\xd8\xac\xd9\x85\xd8\xb9\xd8\xa9", + .day_7 = "\xd8\xa7\xd9\x84\xd8\xb3\xd8\xa8\xd8\xaa", + .abday_1 = "\xd8\xa7\xd9\x84\xd8\xa3\xd8\xad\xd8\xaf", + .abday_2 = "\xd8\xa7\xd9\x84\xd8\xa7\xd8\xab\xd9\x86\xd9\x8a\xd9\x86", + .abday_3 = "\xd8\xa7\xd9\x84\xd8\xab\xd9\x84\xd8\xa7\xd8\xab\xd8\xa7\xd8\xa1", + .abday_4 = "\xd8\xa7\xd9\x84\xd8\xa3\xd8\xb1\xd8\xa8\xd8\xb9\xd8\xa7\xd8\xa1", + .abday_5 = "\xd8\xa7\xd9\x84\xd8\xae\xd9\x85\xd9\x8a\xd8\xb3", + .abday_6 = "\xd8\xa7\xd9\x84\xd8\xac\xd9\x85\xd8\xb9\xd8\xa9", + .abday_7 = "\xd8\xa7\xd9\x84\xd8\xb3\xd8\xa8\xd8\xaa", + .mon_1 = "\xd9\x8a\xd9\x86\xd8\xa7\xd9\x8a\xd8\xb1", + .mon_2 = "\xd9\x81\xd8\xa8\xd8\xb1\xd8\xa7\xd9\x8a\xd8\xb1", + .mon_3 = "\xd9\x85\xd8\xa7\xd8\xb1\xd8\xb3", + .mon_4 = "\xd8\xa3\xd8\xa8\xd8\xb1\xd9\x8a\xd9\x84", + .mon_5 = "\xd9\x85\xd8\xa7\xd9\x8a\xd9\x88", + .mon_6 = "\xd9\x8a\xd9\x88\xd9\x86\xd9\x8a\xd9\x88", + .mon_7 = "\xd9\x8a\xd9\x88\xd9\x84\xd9\x8a\xd9\x88", + .mon_8 = "\xd8\xa3\xd8\xba\xd8\xb3\xd8\xb7\xd8\xb3", + .mon_9 = "\xd8\xb3\xd8\xa8\xd8\xaa\xd9\x85\xd8\xa8\xd8\xb1", + .mon_10 = "\xd8\xa3\xd9\x83\xd8\xaa\xd9\x88\xd8\xa8\xd8\xb1", + .mon_11 = "\xd9\x86\xd9\x88\xd9\x81\xd9\x85\xd8\xa8\xd8\xb1", + .mon_12 = "\xd8\xaf\xd9\x8a\xd8\xb3\xd9\x85\xd8\xa8\xd8\xb1", + .abmon_1 = "\xd9\x8a\xd9\x86\xd8\xa7\xd9\x8a\xd8\xb1", + .abmon_2 = "\xd9\x81\xd8\xa8\xd8\xb1\xd8\xa7\xd9\x8a\xd8\xb1", + .abmon_3 = "\xd9\x85\xd8\xa7\xd8\xb1\xd8\xb3", + .abmon_4 = "\xd8\xa3\xd8\xa8\xd8\xb1\xd9\x8a\xd9\x84", + .abmon_5 = "\xd9\x85\xd8\xa7\xd9\x8a\xd9\x88", + .abmon_6 = "\xd9\x8a\xd9\x88\xd9\x86\xd9\x8a\xd9\x88", + .abmon_7 = "\xd9\x8a\xd9\x88\xd9\x84\xd9\x8a\xd9\x88", + .abmon_8 = "\xd8\xa3\xd8\xba\xd8\xb3\xd8\xb7\xd8\xb3", + .abmon_9 = "\xd8\xb3\xd8\xa8\xd8\xaa\xd9\x85\xd8\xa8\xd8\xb1", + .abmon_10 = "\xd8\xa3\xd9\x83\xd8\xaa\xd9\x88\xd8\xa8\xd8\xb1", + .abmon_11 = "\xd9\x86\xd9\x88\xd9\x81\xd9\x85\xd8\xa8\xd8\xb1", + .abmon_12 = "\xd8\xaf\xd9\x8a\xd8\xb3\xd9\x85\xd8\xa8\xd8\xb1", + .yesexpr = "^[+1\xd9\x86yY]", + .noexpr = "^[-0\xd9\x84nN]", }, { .locale_name = "hy_AM", - .radixchar = ".", - .thousands_sep = ",", + .radixchar = ",", + .thousands_sep = "\xc2\xa0", .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %r", .d_fmt = "%m/%d/%y", .t_fmt = "%r", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", - .day_1 = "\xd4\xbf\xd5\xab\xd6\x80\xd5\xa1\xd5\xaf\xd5\xab", - .day_2 = "\xd4\xb5\xd6\x80\xd5\xaf\xd5\xb8\xd6\x82\xd5\xb7\xd5\xa1\xd5\xa2\xd5\xa9\xd5\xab", - .day_3 = "\xd4\xb5\xd6\x80\xd5\xa5\xd6\x84\xd5\xb7\xd5\xa1\xd5\xa2\xd5\xa9\xd5\xab", - .day_4 = "\xd5\x89\xd5\xb8\xd6\x80\xd5\xa5\xd6\x84\xd5\xb7\xd5\xa1\xd5\xa2\xd5\xa9\xd5\xab", - .day_5 = "\xd5\x80\xd5\xab\xd5\xb6\xd5\xa3\xd5\xb7\xd5\xa1\xd5\xa2\xd5\xa9\xd5\xab", - .day_6 = "\xd5\x88\xd6\x82\xd6\x80\xd5\xa2\xd5\xa1\xd5\xa9", - .day_7 = "\xd5\x87\xd5\xa1\xd5\xa2\xd5\xa1\xd5\xa9", - .abday_1 = "\xd4\xbf\xd6\x80\xd5\xaf", - .abday_2 = "\xd4\xb5\xd6\x80\xd5\xaf", - .abday_3 = "\xd4\xb5\xd6\x80\xd6\x84", - .abday_4 = "\xd5\x89\xd6\x80\xd6\x84", - .abday_5 = "\xd5\x80\xd5\xb6\xd5\xa3", - .abday_6 = "\xd5\x88\xd6\x82\xd6\x80", - .abday_7 = "\xd5\x87\xd5\xa2\xd5\xa9", - .mon_1 = "\xd5\xb0\xd5\xb8\xd6\x82\xd5\xb6\xd5\xbe\xd5\xa1\xd6\x80\xd5\xab", - .mon_2 = "\xd6\x83\xd5\xa5\xd5\xbf\xd6\x80\xd5\xbe\xd5\xa1\xd6\x80\xd5\xab", - .mon_3 = "\xd5\xb4\xd5\xa1\xd6\x80\xd5\xbf\xd5\xab", - .mon_4 = "\xd5\xa1\xd5\xba\xd6\x80\xd5\xab\xd5\xac\xd5\xab", - .mon_5 = "\xd5\xb4\xd5\xa1\xd5\xb5\xd5\xab\xd5\xbd\xd5\xab", - .mon_6 = "\xd5\xb0\xd5\xb8\xd6\x82\xd5\xb6\xd5\xab\xd5\xbd\xd5\xab", - .mon_7 = "\xd5\xb0\xd5\xb8\xd6\x82\xd5\xac\xd5\xab\xd5\xbd\xd5\xab", - .mon_8 = "\xd6\x85\xd5\xa3\xd5\xb8\xd5\xbd\xd5\xbf\xd5\xb8\xd5\xbd\xd5\xab", - .mon_9 = "\xd5\xbd\xd5\xa5\xd5\xba\xd5\xbf\xd5\xa5\xd5\xb4\xd5\xa2\xd5\xa5\xd6\x80\xd5\xab", - .mon_10 = "\xd5\xb0\xd5\xb8\xd5\xaf\xd5\xbf\xd5\xa5\xd5\xb4\xd5\xa2\xd5\xa5\xd6\x80\xd5\xab", - .mon_11 = "\xd5\xb6\xd5\xb8\xd5\xb5\xd5\xa5\xd5\xb4\xd5\xa2\xd5\xa5\xd6\x80\xd5\xab", - .mon_12 = "\xd5\xa4\xd5\xa5\xd5\xaf\xd5\xbf\xd5\xa5\xd5\xb4\xd5\xa2\xd5\xa5\xd6\x80\xd5\xab", - .abmon_1 = "\xd5\x80\xd5\xb6\xd5\xbe", - .abmon_2 = "\xd5\x93\xd5\xbf\xd6\x80", - .abmon_3 = "\xd5\x84\xd5\xa1\xd6\x80", - .abmon_4 = "\xd4\xb1\xd5\xba\xd6\x80", - .abmon_5 = "\xd5\x84\xd5\xa1\xd5\xb5", - .abmon_6 = "\xd5\x80\xd5\xb6\xd5\xbd", - .abmon_7 = "\xd5\x80\xd5\xac\xd5\xbd", - .abmon_8 = "\xd5\x95\xd5\xa3\xd5\xbd", - .abmon_9 = "\xd5\x8d\xd5\xa5\xd5\xba", - .abmon_10 = "\xd5\x80\xd5\xb8\xd5\xaf", - .abmon_11 = "\xd5\x86\xd5\xb4\xd5\xa2", - .abmon_12 = "\xd4\xb4\xd5\xa5\xd5\xaf", + .am_str = "AM", + .pm_str = "PM", + .day_1 = "\xd5\xaf\xd5\xab\xd6\x80\xd5\xa1\xd5\xaf\xd5\xab", + .day_2 = "\xd5\xa5\xd6\x80\xd5\xaf\xd5\xb8\xd6\x82\xd5\xb7\xd5\xa1\xd5\xa2\xd5\xa9\xd5\xab", + .day_3 = "\xd5\xa5\xd6\x80\xd5\xa5\xd6\x84\xd5\xb7\xd5\xa1\xd5\xa2\xd5\xa9\xd5\xab", + .day_4 = "\xd5\xb9\xd5\xb8\xd6\x80\xd5\xa5\xd6\x84\xd5\xb7\xd5\xa1\xd5\xa2\xd5\xa9\xd5\xab", + .day_5 = "\xd5\xb0\xd5\xab\xd5\xb6\xd5\xa3\xd5\xb7\xd5\xa1\xd5\xa2\xd5\xa9\xd5\xab", + .day_6 = "\xd5\xb8\xd6\x82\xd6\x80\xd5\xa2\xd5\xa1\xd5\xa9", + .day_7 = "\xd5\xb7\xd5\xa1\xd5\xa2\xd5\xa1\xd5\xa9", + .abday_1 = "\xd5\xaf\xd5\xab\xd6\x80", + .abday_2 = "\xd5\xa5\xd6\x80\xd5\xaf", + .abday_3 = "\xd5\xa5\xd6\x80\xd6\x84", + .abday_4 = "\xd5\xb9\xd6\x80\xd6\x84", + .abday_5 = "\xd5\xb0\xd5\xb6\xd5\xa3", + .abday_6 = "\xd5\xb8\xd6\x82\xd6\x80", + .abday_7 = "\xd5\xb7\xd5\xa2\xd5\xa9", + .mon_1 = "\xd5\xb0\xd5\xb8\xd6\x82\xd5\xb6\xd5\xbe\xd5\xa1\xd6\x80", + .mon_2 = "\xd6\x83\xd5\xa5\xd5\xbf\xd6\x80\xd5\xbe\xd5\xa1\xd6\x80", + .mon_3 = "\xd5\xb4\xd5\xa1\xd6\x80\xd5\xbf", + .mon_4 = "\xd5\xa1\xd5\xba\xd6\x80\xd5\xab\xd5\xac", + .mon_5 = "\xd5\xb4\xd5\xa1\xd5\xb5\xd5\xab\xd5\xbd", + .mon_6 = "\xd5\xb0\xd5\xb8\xd6\x82\xd5\xb6\xd5\xab\xd5\xbd", + .mon_7 = "\xd5\xb0\xd5\xb8\xd6\x82\xd5\xac\xd5\xab\xd5\xbd", + .mon_8 = "\xd6\x85\xd5\xa3\xd5\xb8\xd5\xbd\xd5\xbf\xd5\xb8\xd5\xbd", + .mon_9 = "\xd5\xbd\xd5\xa5\xd5\xba\xd5\xbf\xd5\xa5\xd5\xb4\xd5\xa2\xd5\xa5\xd6\x80", + .mon_10 = "\xd5\xb0\xd5\xb8\xd5\xaf\xd5\xbf\xd5\xa5\xd5\xb4\xd5\xa2\xd5\xa5\xd6\x80", + .mon_11 = "\xd5\xb6\xd5\xb8\xd5\xb5\xd5\xa5\xd5\xb4\xd5\xa2\xd5\xa5\xd6\x80", + .mon_12 = "\xd5\xa4\xd5\xa5\xd5\xaf\xd5\xbf\xd5\xa5\xd5\xb4\xd5\xa2\xd5\xa5\xd6\x80", + .abmon_1 = "\xd5\xb0\xd5\xb6\xd5\xbe", + .abmon_2 = "\xd6\x83\xd5\xbf\xd5\xbe", + .abmon_3 = "\xd5\xb4\xd6\x80\xd5\xbf", + .abmon_4 = "\xd5\xa1\xd5\xba\xd6\x80", + .abmon_5 = "\xd5\xb4\xd5\xb5\xd5\xbd", + .abmon_6 = "\xd5\xb0\xd5\xb6\xd5\xbd", + .abmon_7 = "\xd5\xb0\xd5\xac\xd5\xbd", + .abmon_8 = "\xd6\x85\xd5\xa3\xd5\xbd", + .abmon_9 = "\xd5\xbd\xd5\xa5\xd5\xba", + .abmon_10 = "\xd5\xb0\xd5\xb8\xd5\xaf", + .abmon_11 = "\xd5\xb6\xd5\xb8\xd5\xb5", + .abmon_12 = "\xd5\xa4\xd5\xa5\xd5\xaf", .yesexpr = "^[+1yYsS\xd5\xa1\xd4\xb1]", .noexpr = "^[-0nN\xd5\xb8\xd5\x88]", }, @@ -268,27 +268,27 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .d_fmt = "%e-%m-%Y", .t_fmt = "%I.%M.%S %p", .t_fmt_ampm = "%I.%M.%S %p", - .am_str = "\xe0\xa6\xaa\xe0\xa7\x82\xe0\xa7\xb0\xe0\xa7\x8d\xe0\xa6\xac\xe0\xa7\x8d\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa6\xb9\xe0\xa7\x8d\xe0\xa6\xa8", - .pm_str = "\xe0\xa6\x85\xe0\xa6\xaa\xe0\xa7\xb0\xe0\xa6\xbe\xe0\xa6\xb9\xe0\xa7\x8d\xe0\xa6\xa8", + .am_str = "AM", + .pm_str = "PM", .day_1 = "\xe0\xa6\xa6\xe0\xa7\x87\xe0\xa6\x93\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa7\xb0", .day_2 = "\xe0\xa6\xb8\xe0\xa7\x8b\xe0\xa6\xae\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa7\xb0", .day_3 = "\xe0\xa6\xae\xe0\xa6\x99\xe0\xa7\x8d\xe0\xa6\x97\xe0\xa6\xb2\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa7\xb0", .day_4 = "\xe0\xa6\xac\xe0\xa7\x81\xe0\xa6\xa7\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa7\xb0", - .day_5 = "\xe0\xa6\xac\xe0\xa7\x83\xe0\xa6\xb9\xe0\xa6\xb7\xe0\xa7\x8d\xe0\xa6\xaa\xe0\xa6\xa4\xe0\xa6\xbf\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa7\xb0", + .day_5 = "\xe0\xa6\xac\xe0\xa7\x83\xe0\xa6\xb9\xe0\xa6\xb8\xe0\xa7\x8d\xe0\xa6\xaa\xe0\xa6\xa4\xe0\xa6\xbf\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa7\xb0", .day_6 = "\xe0\xa6\xb6\xe0\xa7\x81\xe0\xa6\x95\xe0\xa7\x8d\xe0\xa7\xb0\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa7\xb0", .day_7 = "\xe0\xa6\xb6\xe0\xa6\xa8\xe0\xa6\xbf\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa7\xb0", .abday_1 = "\xe0\xa6\xa6\xe0\xa7\x87\xe0\xa6\x93", .abday_2 = "\xe0\xa6\xb8\xe0\xa7\x8b\xe0\xa6\xae", .abday_3 = "\xe0\xa6\xae\xe0\xa6\x99\xe0\xa7\x8d\xe0\xa6\x97\xe0\xa6\xb2", .abday_4 = "\xe0\xa6\xac\xe0\xa7\x81\xe0\xa6\xa7", - .abday_5 = "\xe0\xa6\xac\xe0\xa7\x83\xe0\xa6\xb9\xe0\xa6\xb7\xe0\xa7\x8d\xe0\xa6\xaa\xe0\xa6\xa4\xe0\xa6\xbf", + .abday_5 = "\xe0\xa6\xac\xe0\xa7\x83\xe0\xa6\xb9", .abday_6 = "\xe0\xa6\xb6\xe0\xa7\x81\xe0\xa6\x95\xe0\xa7\x8d\xe0\xa7\xb0", .abday_7 = "\xe0\xa6\xb6\xe0\xa6\xa8\xe0\xa6\xbf", .mon_1 = "\xe0\xa6\x9c\xe0\xa6\xbe\xe0\xa6\xa8\xe0\xa7\x81\xe0\xa7\xb1\xe0\xa6\xbe\xe0\xa7\xb0\xe0\xa7\x80", .mon_2 = "\xe0\xa6\xab\xe0\xa7\x87\xe0\xa6\xac\xe0\xa7\x8d\xe0\xa7\xb0\xe0\xa7\x81\xe0\xa7\xb1\xe0\xa6\xbe\xe0\xa7\xb0\xe0\xa7\x80", .mon_3 = "\xe0\xa6\xae\xe0\xa6\xbe\xe0\xa7\xb0\xe0\xa7\x8d\xe0\xa6\x9a", .mon_4 = "\xe0\xa6\x8f\xe0\xa6\xaa\xe0\xa7\x8d\xe0\xa7\xb0\xe0\xa6\xbf\xe0\xa6\xb2", - .mon_5 = "\xe0\xa6\xae\xe0\xa7\x87", + .mon_5 = "\xe0\xa6\xae\xe0\xa7\x87\xe2\x80\x99", .mon_6 = "\xe0\xa6\x9c\xe0\xa7\x81\xe0\xa6\xa8", .mon_7 = "\xe0\xa6\x9c\xe0\xa7\x81\xe0\xa6\xb2\xe0\xa6\xbe\xe0\xa6\x87", .mon_8 = "\xe0\xa6\x86\xe0\xa6\x97\xe0\xa6\xb7\xe0\xa7\x8d\xe0\xa6\x9f", @@ -300,14 +300,14 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .abmon_2 = "\xe0\xa6\xab\xe0\xa7\x87\xe0\xa6\xac\xe0\xa7\x8d\xe0\xa7\xb0\xe0\xa7\x81", .abmon_3 = "\xe0\xa6\xae\xe0\xa6\xbe\xe0\xa7\xb0\xe0\xa7\x8d\xe0\xa6\x9a", .abmon_4 = "\xe0\xa6\x8f\xe0\xa6\xaa\xe0\xa7\x8d\xe0\xa7\xb0\xe0\xa6\xbf\xe0\xa6\xb2", - .abmon_5 = "\xe0\xa6\xae\xe0\xa7\x87", + .abmon_5 = "\xe0\xa6\xae\xe0\xa7\x87\xe2\x80\x99", .abmon_6 = "\xe0\xa6\x9c\xe0\xa7\x81\xe0\xa6\xa8", .abmon_7 = "\xe0\xa6\x9c\xe0\xa7\x81\xe0\xa6\xb2\xe0\xa6\xbe\xe0\xa6\x87", .abmon_8 = "\xe0\xa6\x86\xe0\xa6\x97", - .abmon_9 = "\xe0\xa6\xb8\xe0\xa7\x87\xe0\xa6\xaa\xe0\xa7\x8d\xe0\xa6\x9f", + .abmon_9 = "\xe0\xa6\x9b\xe0\xa7\x87\xe0\xa6\xaa\xe0\xa7\x8d\xe0\xa6\xa4\xe0\xa7\x87", .abmon_10 = "\xe0\xa6\x85\xe0\xa6\x95\xe0\xa7\x8d\xe0\xa6\x9f\xe0\xa7\x8b", - .abmon_11 = "\xe0\xa6\xa8\xe0\xa6\xad\xe0\xa7\x87", - .abmon_12 = "\xe0\xa6\xa1\xe0\xa6\xbf\xe0\xa6\xb8\xe0\xa7\x87", + .abmon_11 = "\xe0\xa6\xa8\xe0\xa7\xb1\xe0\xa7\x87", + .abmon_12 = "\xe0\xa6\xa1\xe0\xa6\xbf\xe0\xa6\x9a\xe0\xa7\x87", .yesexpr = "^[+1yY\xe0\xa6\xb9]", .noexpr = "^[-0nN\xe0\xa6\xa8]", }, @@ -320,22 +320,22 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .d_fmt = "%d.%m.%Y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", - .day_1 = "bazar g\xc3\xbcn\xc3\xbc", + .am_str = "AM", + .pm_str = "PM", + .day_1 = "bazar", .day_2 = "bazar ert\xc9\x99si", .day_3 = "\xc3\xa7\xc9\x99r\xc5\x9f\xc9\x99nb\xc9\x99 ax\xc5\x9f""am\xc4\xb1", .day_4 = "\xc3\xa7\xc9\x99r\xc5\x9f\xc9\x99nb\xc9\x99", .day_5 = "c\xc3\xbcm\xc9\x99 ax\xc5\x9f""am\xc4\xb1", .day_6 = "c\xc3\xbcm\xc9\x99", .day_7 = "\xc5\x9f\xc9\x99nb\xc9\x99", - .abday_1 = "baz", - .abday_2 = "ber", - .abday_3 = "\xc3\xa7""ax", - .abday_4 = "\xc3\xa7\xc9\x99r", - .abday_5 = "cax", - .abday_6 = "c\xc3\xbcm", - .abday_7 = "\xc5\x9fnb", + .abday_1 = "B.", + .abday_2 = "B.E.", + .abday_3 = "\xc3\x87.A.", + .abday_4 = "\xc3\x87.", + .abday_5 = "C.A.", + .abday_6 = "C.", + .abday_7 = "\xc5\x9e.", .mon_1 = "yanvar", .mon_2 = "fevral", .mon_3 = "mart", @@ -348,18 +348,18 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .mon_10 = "oktyabr", .mon_11 = "noyabr", .mon_12 = "dekabr", - .abmon_1 = "Yan", - .abmon_2 = "Fev", - .abmon_3 = "Mar", - .abmon_4 = "Apr", - .abmon_5 = "May", - .abmon_6 = "\xc4\xb0yn", - .abmon_7 = "\xc4\xb0yl", - .abmon_8 = "Avq", - .abmon_9 = "Sen", - .abmon_10 = "Okt", - .abmon_11 = "Noy", - .abmon_12 = "Dek", + .abmon_1 = "yan", + .abmon_2 = "fev", + .abmon_3 = "mar", + .abmon_4 = "apr", + .abmon_5 = "may", + .abmon_6 = "iyn", + .abmon_7 = "iyl", + .abmon_8 = "avq", + .abmon_9 = "sen", + .abmon_10 = "okt", + .abmon_11 = "noy", + .abmon_12 = "dek", .yesexpr = "^[+1bBhH]", .noexpr = "^[-0YyNn]", }, @@ -372,8 +372,8 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .d_fmt = "%-d/%-m/%y", .t_fmt = "%I:%M:%S %p %Z", .t_fmt_ampm = "%I:%M:%S %p %Z", - .am_str = "\xe0\xa6\xaa\xe0\xa7\x82\xe0\xa6\xb0\xe0\xa7\x8d\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa6\xb9\xe0\xa7\x8d\xe0\xa6\xa3", - .pm_str = "\xe0\xa6\x85\xe0\xa6\xaa\xe0\xa6\xb0\xe0\xa6\xbe\xe0\xa6\xb9\xe0\xa7\x8d\xe0\xa6\xa3", + .am_str = "AM", + .pm_str = "PM", .day_1 = "\xe0\xa6\xb0\xe0\xa6\xac\xe0\xa6\xbf\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa6\xb0", .day_2 = "\xe0\xa6\xb8\xe0\xa7\x8b\xe0\xa6\xae\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa6\xb0", .day_3 = "\xe0\xa6\xae\xe0\xa6\x99\xe0\xa7\x8d\xe0\xa6\x97\xe0\xa6\xb2\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa6\xb0", @@ -385,7 +385,7 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .abday_2 = "\xe0\xa6\xb8\xe0\xa7\x8b\xe0\xa6\xae", .abday_3 = "\xe0\xa6\xae\xe0\xa6\x99\xe0\xa7\x8d\xe0\xa6\x97\xe0\xa6\xb2", .abday_4 = "\xe0\xa6\xac\xe0\xa7\x81\xe0\xa6\xa7", - .abday_5 = "\xe0\xa6\xac\xe0\xa7\x83\xe0\xa6\xb9\xe0\xa6\x83", + .abday_5 = "\xe0\xa6\xac\xe0\xa7\x83\xe0\xa6\xb9\xe0\xa6\xb8\xe0\xa7\x8d\xe0\xa6\xaa\xe0\xa6\xa4\xe0\xa6\xbf", .abday_6 = "\xe0\xa6\xb6\xe0\xa7\x81\xe0\xa6\x95\xe0\xa7\x8d\xe0\xa6\xb0", .abday_7 = "\xe0\xa6\xb6\xe0\xa6\xa8\xe0\xa6\xbf", .mon_1 = "\xe0\xa6\x9c\xe0\xa6\xbe\xe0\xa6\xa8\xe0\xa7\x81\xe0\xa6\xaf\xe0\xa6\xbc\xe0\xa6\xbe\xe0\xa6\xb0\xe0\xa7\x80", @@ -419,13 +419,13 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .locale_name = "eu_ES", .radixchar = ",", .thousands_sep = ".", - .codeset = "ISO-8859-1", + .codeset = "UTF-8", .d_t_fmt = "%y-%m-%d %T", .d_fmt = "%a, %Y.eko %bren %da", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", + .am_str = "AM", + .pm_str = "PM", .day_1 = "igandea", .day_2 = "astelehena", .day_3 = "asteartea", @@ -452,188 +452,188 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .mon_10 = "urria", .mon_11 = "azaroa", .mon_12 = "abendua", - .abmon_1 = "urt", - .abmon_2 = "ots", - .abmon_3 = "mar", - .abmon_4 = "api", - .abmon_5 = "mai", - .abmon_6 = "eka", - .abmon_7 = "uzt", - .abmon_8 = "abu", - .abmon_9 = "ira", - .abmon_10 = "urr", - .abmon_11 = "aza", - .abmon_12 = "abe", + .abmon_1 = "urt.", + .abmon_2 = "ots.", + .abmon_3 = "mar.", + .abmon_4 = "api.", + .abmon_5 = "mai.", + .abmon_6 = "eka.", + .abmon_7 = "uzt.", + .abmon_8 = "abu.", + .abmon_9 = "ira.", + .abmon_10 = "urr.", + .abmon_11 = "aza.", + .abmon_12 = "abe.", .yesexpr = "^[+1bBsSyY]", .noexpr = "^[-0eEnN]", }, { .locale_name = "be_BY", .radixchar = ",", - .thousands_sep = ".", - .codeset = "CP1251", + .thousands_sep = "\xc2\xa0", + .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %T", .d_fmt = "%d.%m.%Y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", - .day_1 = "\xcd\xff\xe4\xe7\xe5\xeb\xff", - .day_2 = "\xcf\xe0\xed\xff\xe4\xe7\xe5\xeb\xe0\xea", - .day_3 = "\xc0\xa2\xf2\xee\xf0\xe0\xea", - .day_4 = "\xd1\xe5\xf0\xe0\xe4\xe0", - .day_5 = "\xd7\xe0\xf6\xe2\xe5\xf0", - .day_6 = "\xcf\xff\xf2\xed\xb3\xf6\xe0", - .day_7 = "\xd1\xf3\xe1\xee\xf2\xe0", - .abday_1 = "\xcd\xff\xe4", - .abday_2 = "\xcf\xe0\xed", - .abday_3 = "\xc0\xa2\xf2", - .abday_4 = "\xd1\xf0\xe4", - .abday_5 = "\xd7\xf6\xe2", - .abday_6 = "\xcf\xff\xf2", - .abday_7 = "\xd1\xf3\xe1", - .mon_1 = "\xf1\xf2\xf3\xe4\xe7\xe5\xed\xff", - .mon_2 = "\xeb\xfe\xf2\xe0\xe3\xe0", - .mon_3 = "\xf1\xe0\xea\xe0\xe2\xb3\xea\xe0", - .mon_4 = "\xea\xf0\xe0\xf1\xe0\xe2\xb3\xea\xe0", - .mon_5 = "\xec\xe0\xff", - .mon_6 = "\xf7\xfd\xf0\xe2\xe5\xed\xff", - .mon_7 = "\xeb\xb3\xef\xe5\xed\xff", - .mon_8 = "\xe6\xed\xb3\xa2\xed\xff", - .mon_9 = "\xe2\xe5\xf0\xe0\xf1\xed\xff", - .mon_10 = "\xea\xe0\xf1\xf2\xf0\xfb\xf7\xed\xb3\xea\xe0", - .mon_11 = "\xeb\xb3\xf1\xf2\xe0\xef\xe0\xe4\xe0", - .mon_12 = "\xf1\xed\xe5\xe6\xed\xff", - .abmon_1 = "\xf1\xf2\xf3", - .abmon_2 = "\xeb\xfe\xf2", - .abmon_3 = "\xf1\xe0\xea", - .abmon_4 = "\xea\xf0\xe0", - .abmon_5 = "\xec\xe0\xff", - .abmon_6 = "\xf7\xfd\xf0", - .abmon_7 = "\xeb\xb3\xef", - .abmon_8 = "\xe6\xed\xb3", - .abmon_9 = "\xe2\xe5\xf0", - .abmon_10 = "\xea\xe0\xf1", - .abmon_11 = "\xeb\xb3\xf1", - .abmon_12 = "\xf1\xed\xe5", - .yesexpr = "^[+1yY\xd2\xf2]", - .noexpr = "^[-0nN\xcd\xed]", + .am_str = "AM", + .pm_str = "PM", + .day_1 = "\xd0\xbd\xd1\x8f\xd0\xb4\xd0\xb7\xd0\xb5\xd0\xbb\xd1\x8f", + .day_2 = "\xd0\xbf\xd0\xb0\xd0\xbd\xd1\x8f\xd0\xb4\xd0\xb7\xd0\xb5\xd0\xbb\xd0\xb0\xd0\xba", + .day_3 = "\xd0\xb0\xd1\x9e\xd1\x82\xd0\xbe\xd1\x80\xd0\xb0\xd0\xba", + .day_4 = "\xd1\x81\xd0\xb5\xd1\x80\xd0\xb0\xd0\xb4\xd0\xb0", + .day_5 = "\xd1\x87\xd0\xb0\xd1\x86\xd0\xb2\xd0\xb5\xd1\x80", + .day_6 = "\xd0\xbf\xd1\x8f\xd1\x82\xd0\xbd\xd1\x96\xd1\x86\xd0\xb0", + .day_7 = "\xd1\x81\xd1\x83\xd0\xb1\xd0\xbe\xd1\x82\xd0\xb0", + .abday_1 = "\xd0\xbd\xd0\xb4", + .abday_2 = "\xd0\xbf\xd0\xbd", + .abday_3 = "\xd0\xb0\xd1\x9e", + .abday_4 = "\xd1\x81\xd1\x80", + .abday_5 = "\xd1\x87\xd1\x86", + .abday_6 = "\xd0\xbf\xd1\x82", + .abday_7 = "\xd1\x81\xd0\xb1", + .mon_1 = "\xd1\x81\xd1\x82\xd1\x83\xd0\xb4\xd0\xb7\xd0\xb5\xd0\xbd\xd1\x8c", + .mon_2 = "\xd0\xbb\xd1\x8e\xd1\x82\xd1\x8b", + .mon_3 = "\xd1\x81\xd0\xb0\xd0\xba\xd0\xb0\xd0\xb2\xd1\x96\xd0\xba", + .mon_4 = "\xd0\xba\xd1\x80\xd0\xb0\xd1\x81\xd0\xb0\xd0\xb2\xd1\x96\xd0\xba", + .mon_5 = "\xd0\xbc\xd0\xb0\xd0\xb9", + .mon_6 = "\xd1\x87\xd1\x8d\xd1\x80\xd0\xb2\xd0\xb5\xd0\xbd\xd1\x8c", + .mon_7 = "\xd0\xbb\xd1\x96\xd0\xbf\xd0\xb5\xd0\xbd\xd1\x8c", + .mon_8 = "\xd0\xb6\xd0\xbd\xd1\x96\xd0\xb2\xd0\xb5\xd0\xbd\xd1\x8c", + .mon_9 = "\xd0\xb2\xd0\xb5\xd1\x80\xd0\xb0\xd1\x81\xd0\xb5\xd0\xbd\xd1\x8c", + .mon_10 = "\xd0\xba\xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd1\x8b\xd1\x87\xd0\xbd\xd1\x96\xd0\xba", + .mon_11 = "\xd0\xbb\xd1\x96\xd1\x81\xd1\x82\xd0\xb0\xd0\xbf\xd0\xb0\xd0\xb4", + .mon_12 = "\xd1\x81\xd0\xbd\xd0\xb5\xd0\xb6\xd0\xb0\xd0\xbd\xd1\x8c", + .abmon_1 = "\xd1\x81\xd1\x82\xd1\x83", + .abmon_2 = "\xd0\xbb\xd1\x8e\xd1\x82", + .abmon_3 = "\xd1\x81\xd0\xb0\xd0\xba", + .abmon_4 = "\xd0\xba\xd1\x80\xd0\xb0", + .abmon_5 = "\xd0\xbc\xd0\xb0\xd0\xb9", + .abmon_6 = "\xd1\x87\xd1\x8d\xd1\x80", + .abmon_7 = "\xd0\xbb\xd1\x96\xd0\xbf", + .abmon_8 = "\xd0\xb6\xd0\xbd\xd1\x96", + .abmon_9 = "\xd0\xb2\xd0\xb5\xd1\x80", + .abmon_10 = "\xd0\xba\xd0\xb0\xd1\x81", + .abmon_11 = "\xd0\xbb\xd1\x96\xd1\x81", + .abmon_12 = "\xd1\x81\xd0\xbd\xd0\xb5", + .yesexpr = "^[+1yY\xd0\xa2\xd1\x82]", + .noexpr = "^[-0nN\xd0\x9d\xd0\xbd]", }, { .locale_name = "bs_BA", .radixchar = ",", - .thousands_sep = "", - .codeset = "ISO-8859-2", + .thousands_sep = ".", + .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %T", .d_fmt = "%d.%m.%Y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", - .day_1 = "Nedjelja", - .day_2 = "Ponedjeljak", - .day_3 = "Utorak", - .day_4 = "Srijeda", - .day_5 = "\xc8""etvrtak", - .day_6 = "Petak", - .day_7 = "Subota", - .abday_1 = "Ned", - .abday_2 = "Pon", - .abday_3 = "Uto", - .abday_4 = "Sri", - .abday_5 = "\xc8""et", - .abday_6 = "Pet", - .abday_7 = "Sub", - .mon_1 = "Januar", - .mon_2 = "Februar", - .mon_3 = "Mart", - .mon_4 = "April", - .mon_5 = "Maj", - .mon_6 = "Juni", - .mon_7 = "Juli", - .mon_8 = "August", - .mon_9 = "Septembar", - .mon_10 = "Oktobar", - .mon_11 = "Novembar", - .mon_12 = "Decembar", - .abmon_1 = "Jan", - .abmon_2 = "Feb", - .abmon_3 = "Mar", - .abmon_4 = "Apr", - .abmon_5 = "Maj", - .abmon_6 = "Jun", - .abmon_7 = "Jul", - .abmon_8 = "Aug", - .abmon_9 = "Sep", - .abmon_10 = "Okt", - .abmon_11 = "Nov", - .abmon_12 = "Dec", + .am_str = "prijepodne", + .pm_str = "popodne", + .day_1 = "nedjelja", + .day_2 = "ponedjeljak", + .day_3 = "utorak", + .day_4 = "srijeda", + .day_5 = "\xc4\x8d""etvrtak", + .day_6 = "petak", + .day_7 = "subota", + .abday_1 = "ned", + .abday_2 = "pon", + .abday_3 = "uto", + .abday_4 = "sri", + .abday_5 = "\xc4\x8d""et", + .abday_6 = "pet", + .abday_7 = "sub", + .mon_1 = "januar", + .mon_2 = "februar", + .mon_3 = "mart", + .mon_4 = "april", + .mon_5 = "maj", + .mon_6 = "juni", + .mon_7 = "juli", + .mon_8 = "august", + .mon_9 = "septembar", + .mon_10 = "oktobar", + .mon_11 = "novembar", + .mon_12 = "decembar", + .abmon_1 = "jan", + .abmon_2 = "feb", + .abmon_3 = "mar", + .abmon_4 = "apr", + .abmon_5 = "maj", + .abmon_6 = "jun", + .abmon_7 = "jul", + .abmon_8 = "aug", + .abmon_9 = "sep", + .abmon_10 = "okt", + .abmon_11 = "nov", + .abmon_12 = "dec", .yesexpr = "^[+1dDyY]", .noexpr = "^[-0nN]", }, { .locale_name = "bg_BG", .radixchar = ",", - .thousands_sep = "", - .codeset = "CP1251", + .thousands_sep = "\xc2\xa0", + .codeset = "UTF-8", .d_t_fmt = "%x (%a) %X", .d_fmt = "%e.%m.%Y", .t_fmt = "%k:%M:%S", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", - .day_1 = "\xed\xe5\xe4\xe5\xeb\xff", - .day_2 = "\xef\xee\xed\xe5\xe4\xe5\xeb\xed\xe8\xea", - .day_3 = "\xe2\xf2\xee\xf0\xed\xe8\xea", - .day_4 = "\xf1\xf0\xff\xe4\xe0", - .day_5 = "\xf7\xe5\xf2\xe2\xfa\xf0\xf2\xfa\xea", - .day_6 = "\xef\xe5\xf2\xfa\xea", - .day_7 = "\xf1\xfa\xe1\xee\xf2\xe0", - .abday_1 = "\xed\xe4", - .abday_2 = "\xef\xed", - .abday_3 = "\xe2\xf2", - .abday_4 = "\xf1\xf0", - .abday_5 = "\xf7\xf2", - .abday_6 = "\xef\xf2", - .abday_7 = "\xf1\xe1", - .mon_1 = "\xff\xed\xf3\xe0\xf0\xe8", - .mon_2 = "\xf4\xe5\xe2\xf0\xf3\xe0\xf0\xe8", - .mon_3 = "\xec\xe0\xf0\xf2", - .mon_4 = "\xe0\xef\xf0\xe8\xeb", - .mon_5 = "\xec\xe0\xe9", - .mon_6 = "\xfe\xed\xe8", - .mon_7 = "\xfe\xeb\xe8", - .mon_8 = "\xe0\xe2\xe3\xf3\xf1\xf2", - .mon_9 = "\xf1\xe5\xef\xf2\xe5\xec\xe2\xf0\xe8", - .mon_10 = "\xee\xea\xf2\xee\xec\xe2\xf0\xe8", - .mon_11 = "\xed\xee\xe5\xec\xe2\xf0\xe8", - .mon_12 = "\xe4\xe5\xea\xe5\xec\xe2\xf0\xe8", - .abmon_1 = "\xff\xed\xf3", - .abmon_2 = "\xf4\xe5\xe2", - .abmon_3 = "\xec\xe0\xf0", - .abmon_4 = "\xe0\xef\xf0", - .abmon_5 = "\xec\xe0\xe9", - .abmon_6 = "\xfe\xed\xe8", - .abmon_7 = "\xfe\xeb\xe8", - .abmon_8 = "\xe0\xe2\xe3", - .abmon_9 = "\xf1\xe5\xef", - .abmon_10 = "\xee\xea\xf2", - .abmon_11 = "\xed\xee\xe5", - .abmon_12 = "\xe4\xe5\xea", - .yesexpr = "^[+1yYdDoO\xc4\xe4]", - .noexpr = "^[-0nNkK\xcd\xed]", + .am_str = "\xd0\xbf\xd1\x80.\xd0\xbe\xd0\xb1.", + .pm_str = "\xd1\x81\xd0\xbb.\xd0\xbe\xd0\xb1.", + .day_1 = "\xd0\xbd\xd0\xb5\xd0\xb4\xd0\xb5\xd0\xbb\xd1\x8f", + .day_2 = "\xd0\xbf\xd0\xbe\xd0\xbd\xd0\xb5\xd0\xb4\xd0\xb5\xd0\xbb\xd0\xbd\xd0\xb8\xd0\xba", + .day_3 = "\xd0\xb2\xd1\x82\xd0\xbe\xd1\x80\xd0\xbd\xd0\xb8\xd0\xba", + .day_4 = "\xd1\x81\xd1\x80\xd1\x8f\xd0\xb4\xd0\xb0", + .day_5 = "\xd1\x87\xd0\xb5\xd1\x82\xd0\xb2\xd1\x8a\xd1\x80\xd1\x82\xd1\x8a\xd0\xba", + .day_6 = "\xd0\xbf\xd0\xb5\xd1\x82\xd1\x8a\xd0\xba", + .day_7 = "\xd1\x81\xd1\x8a\xd0\xb1\xd0\xbe\xd1\x82\xd0\xb0", + .abday_1 = "\xd0\xbd\xd0\xb4", + .abday_2 = "\xd0\xbf\xd0\xbd", + .abday_3 = "\xd0\xb2\xd1\x82", + .abday_4 = "\xd1\x81\xd1\x80", + .abday_5 = "\xd1\x87\xd1\x82", + .abday_6 = "\xd0\xbf\xd1\x82", + .abday_7 = "\xd1\x81\xd0\xb1", + .mon_1 = "\xd1\x8f\xd0\xbd\xd1\x83\xd0\xb0\xd1\x80\xd0\xb8", + .mon_2 = "\xd1\x84\xd0\xb5\xd0\xb2\xd1\x80\xd1\x83\xd0\xb0\xd1\x80\xd0\xb8", + .mon_3 = "\xd0\xbc\xd0\xb0\xd1\x80\xd1\x82", + .mon_4 = "\xd0\xb0\xd0\xbf\xd1\x80\xd0\xb8\xd0\xbb", + .mon_5 = "\xd0\xbc\xd0\xb0\xd0\xb9", + .mon_6 = "\xd1\x8e\xd0\xbd\xd0\xb8", + .mon_7 = "\xd1\x8e\xd0\xbb\xd0\xb8", + .mon_8 = "\xd0\xb0\xd0\xb2\xd0\xb3\xd1\x83\xd1\x81\xd1\x82", + .mon_9 = "\xd1\x81\xd0\xb5\xd0\xbf\xd1\x82\xd0\xb5\xd0\xbc\xd0\xb2\xd1\x80\xd0\xb8", + .mon_10 = "\xd0\xbe\xd0\xba\xd1\x82\xd0\xbe\xd0\xbc\xd0\xb2\xd1\x80\xd0\xb8", + .mon_11 = "\xd0\xbd\xd0\xbe\xd0\xb5\xd0\xbc\xd0\xb2\xd1\x80\xd0\xb8", + .mon_12 = "\xd0\xb4\xd0\xb5\xd0\xba\xd0\xb5\xd0\xbc\xd0\xb2\xd1\x80\xd0\xb8", + .abmon_1 = "\xd1\x8f\xd0\xbd\xd1\x83", + .abmon_2 = "\xd1\x84\xd0\xb5\xd0\xb2", + .abmon_3 = "\xd0\xbc\xd0\xb0\xd1\x80\xd1\x82", + .abmon_4 = "\xd0\xb0\xd0\xbf\xd1\x80", + .abmon_5 = "\xd0\xbc\xd0\xb0\xd0\xb9", + .abmon_6 = "\xd1\x8e\xd0\xbd\xd0\xb8", + .abmon_7 = "\xd1\x8e\xd0\xbb\xd0\xb8", + .abmon_8 = "\xd0\xb0\xd0\xb2\xd0\xb3", + .abmon_9 = "\xd1\x81\xd0\xb5\xd0\xbf", + .abmon_10 = "\xd0\xbe\xd0\xba\xd1\x82", + .abmon_11 = "\xd0\xbd\xd0\xbe\xd0\xb5", + .abmon_12 = "\xd0\xb4\xd0\xb5\xd0\xba", + .yesexpr = "^[+1yYdDoO\xd0\x94\xd0\xb4]", + .noexpr = "^[-0nNkK\xd0\x9d\xd0\xbd]", }, { .locale_name = "ca_ES", .radixchar = ",", .thousands_sep = ".", - .codeset = "ISO-8859-1", + .codeset = "UTF-8", .d_t_fmt = "%A, %-d %B de %Y, %T", .d_fmt = "%-d/%-m/%y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "a. m.", - .pm_str = "p. m.", + .am_str = "a.\xc2\xa0m.", + .pm_str = "p.\xc2\xa0m.", .day_1 = "diumenge", .day_2 = "dilluns", .day_3 = "dimarts", @@ -648,30 +648,30 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .abday_5 = "dj.", .abday_6 = "dv.", .abday_7 = "ds.", - .mon_1 = "de gener", - .mon_2 = "de febrer", - .mon_3 = "de mar\xe7", - .mon_4 = "d'abril", - .mon_5 = "de maig", - .mon_6 = "de juny", - .mon_7 = "de juliol", - .mon_8 = "d'agost", - .mon_9 = "de setembre", - .mon_10 = "d'octubre", - .mon_11 = "de novembre", - .mon_12 = "de desembre", - .abmon_1 = "de gen.", - .abmon_2 = "de febr.", - .abmon_3 = "de mar\xe7", - .abmon_4 = "d'abr.", - .abmon_5 = "de maig", - .abmon_6 = "de juny", - .abmon_7 = "de jul.", - .abmon_8 = "d'ag.", - .abmon_9 = "de set.", - .abmon_10 = "d'oct.", - .abmon_11 = "de nov.", - .abmon_12 = "de des.", + .mon_1 = "gener", + .mon_2 = "febrer", + .mon_3 = "mar\xc3\xa7", + .mon_4 = "abril", + .mon_5 = "maig", + .mon_6 = "juny", + .mon_7 = "juliol", + .mon_8 = "agost", + .mon_9 = "setembre", + .mon_10 = "octubre", + .mon_11 = "novembre", + .mon_12 = "desembre", + .abmon_1 = "gen.", + .abmon_2 = "febr.", + .abmon_3 = "mar\xc3\xa7", + .abmon_4 = "abr.", + .abmon_5 = "maig", + .abmon_6 = "juny", + .abmon_7 = "jul.", + .abmon_8 = "ag.", + .abmon_9 = "set.", + .abmon_10 = "oct.", + .abmon_11 = "nov.", + .abmon_12 = "des.", .yesexpr = "^[+1sSyY]", .noexpr = "^[-0nN]", }, @@ -679,198 +679,198 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .locale_name = "zh_CN", .radixchar = ".", .thousands_sep = ",", - .codeset = "GB2312", - .d_t_fmt = "%Y\xc4\xea%m\xd4\xc2%d\xc8\xd5 %A %H\xca\xb1%M\xb7\xd6%S\xc3\xeb", - .d_fmt = "%Y\xc4\xea%m\xd4\xc2%d\xc8\xd5", - .t_fmt = "%H\xca\xb1%M\xb7\xd6%S\xc3\xeb", - .t_fmt_ampm = "%p %I\xca\xb1%M\xb7\xd6%S\xc3\xeb", - .am_str = "\xc9\xcf\xce\xe7", - .pm_str = "\xcf\xc2\xce\xe7", - .day_1 = "\xd0\xc7\xc6\xda\xc8\xd5", - .day_2 = "\xd0\xc7\xc6\xda\xd2\xbb", - .day_3 = "\xd0\xc7\xc6\xda\xb6\xfe", - .day_4 = "\xd0\xc7\xc6\xda\xc8\xfd", - .day_5 = "\xd0\xc7\xc6\xda\xcb\xc4", - .day_6 = "\xd0\xc7\xc6\xda\xce\xe5", - .day_7 = "\xd0\xc7\xc6\xda\xc1\xf9", - .abday_1 = "\xc8\xd5", - .abday_2 = "\xd2\xbb", - .abday_3 = "\xb6\xfe", - .abday_4 = "\xc8\xfd", - .abday_5 = "\xcb\xc4", - .abday_6 = "\xce\xe5", - .abday_7 = "\xc1\xf9", - .mon_1 = "\xd2\xbb\xd4\xc2", - .mon_2 = "\xb6\xfe\xd4\xc2", - .mon_3 = "\xc8\xfd\xd4\xc2", - .mon_4 = "\xcb\xc4\xd4\xc2", - .mon_5 = "\xce\xe5\xd4\xc2", - .mon_6 = "\xc1\xf9\xd4\xc2", - .mon_7 = "\xc6\xdf\xd4\xc2", - .mon_8 = "\xb0\xcb\xd4\xc2", - .mon_9 = "\xbe\xc5\xd4\xc2", - .mon_10 = "\xca\xae\xd4\xc2", - .mon_11 = "\xca\xae\xd2\xbb\xd4\xc2", - .mon_12 = "\xca\xae\xb6\xfe\xd4\xc2", - .abmon_1 = "1\xd4\xc2", - .abmon_2 = "2\xd4\xc2", - .abmon_3 = "3\xd4\xc2", - .abmon_4 = "4\xd4\xc2", - .abmon_5 = "5\xd4\xc2", - .abmon_6 = "6\xd4\xc2", - .abmon_7 = "7\xd4\xc2", - .abmon_8 = "8\xd4\xc2", - .abmon_9 = "9\xd4\xc2", - .abmon_10 = "10\xd4\xc2", - .abmon_11 = "11\xd4\xc2", - .abmon_12 = "12\xd4\xc2", - .yesexpr = "^[+1yY\xa3\xf9\xa3\xd9\xca\xc7]", - .noexpr = "^[-0nN\xa3\xee\xa3\xce\xb2\xbb\xb7\xf1]", + .codeset = "UTF-8", + .d_t_fmt = "%Y\xe5\xb9\xb4%m\xe6\x9c\x88%d\xe6\x97\xa5 %A %H\xe6\x97\xb6%M\xe5\x88\x86%S\xe7\xa7\x92", + .d_fmt = "%Y\xe5\xb9\xb4%m\xe6\x9c\x88%d\xe6\x97\xa5", + .t_fmt = "%H\xe6\x97\xb6%M\xe5\x88\x86%S\xe7\xa7\x92", + .t_fmt_ampm = "%p %I\xe6\x97\xb6%M\xe5\x88\x86%S\xe7\xa7\x92", + .am_str = "\xe4\xb8\x8a\xe5\x8d\x88", + .pm_str = "\xe4\xb8\x8b\xe5\x8d\x88", + .day_1 = "\xe6\x98\x9f\xe6\x9c\x9f\xe6\x97\xa5", + .day_2 = "\xe6\x98\x9f\xe6\x9c\x9f\xe4\xb8\x80", + .day_3 = "\xe6\x98\x9f\xe6\x9c\x9f\xe4\xba\x8c", + .day_4 = "\xe6\x98\x9f\xe6\x9c\x9f\xe4\xb8\x89", + .day_5 = "\xe6\x98\x9f\xe6\x9c\x9f\xe5\x9b\x9b", + .day_6 = "\xe6\x98\x9f\xe6\x9c\x9f\xe4\xba\x94", + .day_7 = "\xe6\x98\x9f\xe6\x9c\x9f\xe5\x85\xad", + .abday_1 = "\xe5\x91\xa8\xe6\x97\xa5", + .abday_2 = "\xe5\x91\xa8\xe4\xb8\x80", + .abday_3 = "\xe5\x91\xa8\xe4\xba\x8c", + .abday_4 = "\xe5\x91\xa8\xe4\xb8\x89", + .abday_5 = "\xe5\x91\xa8\xe5\x9b\x9b", + .abday_6 = "\xe5\x91\xa8\xe4\xba\x94", + .abday_7 = "\xe5\x91\xa8\xe5\x85\xad", + .mon_1 = "\xe4\xb8\x80\xe6\x9c\x88", + .mon_2 = "\xe4\xba\x8c\xe6\x9c\x88", + .mon_3 = "\xe4\xb8\x89\xe6\x9c\x88", + .mon_4 = "\xe5\x9b\x9b\xe6\x9c\x88", + .mon_5 = "\xe4\xba\x94\xe6\x9c\x88", + .mon_6 = "\xe5\x85\xad\xe6\x9c\x88", + .mon_7 = "\xe4\xb8\x83\xe6\x9c\x88", + .mon_8 = "\xe5\x85\xab\xe6\x9c\x88", + .mon_9 = "\xe4\xb9\x9d\xe6\x9c\x88", + .mon_10 = "\xe5\x8d\x81\xe6\x9c\x88", + .mon_11 = "\xe5\x8d\x81\xe4\xb8\x80\xe6\x9c\x88", + .mon_12 = "\xe5\x8d\x81\xe4\xba\x8c\xe6\x9c\x88", + .abmon_1 = "1\xe6\x9c\x88", + .abmon_2 = "2\xe6\x9c\x88", + .abmon_3 = "3\xe6\x9c\x88", + .abmon_4 = "4\xe6\x9c\x88", + .abmon_5 = "5\xe6\x9c\x88", + .abmon_6 = "6\xe6\x9c\x88", + .abmon_7 = "7\xe6\x9c\x88", + .abmon_8 = "8\xe6\x9c\x88", + .abmon_9 = "9\xe6\x9c\x88", + .abmon_10 = "10\xe6\x9c\x88", + .abmon_11 = "11\xe6\x9c\x88", + .abmon_12 = "12\xe6\x9c\x88", + .yesexpr = "^[+1yY\xef\xbd\x99\xef\xbc\xb9\xe6\x98\xaf]", + .noexpr = "^[-0nN\xef\xbd\x8e\xef\xbc\xae\xe4\xb8\x8d\xe5\x90\xa6]", }, { .locale_name = "zh_HK", .radixchar = ".", .thousands_sep = ",", - .codeset = "BIG5-HKSCS", - .d_t_fmt = "%Y\xa6~%m\xa4\xeb%d\xa4\xe9 %A %H:%M:%S", - .d_fmt = "%Y\xa6~%m\xa4\xeb%d\xa4\xe9 %A", - .t_fmt = "%p %I\xae\xc9%M\xa4\xc0%S\xac\xed %Z", + .codeset = "UTF-8", + .d_t_fmt = "%Y\xe5\xb9\xb4%m\xe6\x9c\x88%d\xe6\x97\xa5 %A %H:%M:%S", + .d_fmt = "%Y\xe5\xb9\xb4%m\xe6\x9c\x88%d\xe6\x97\xa5 %A", + .t_fmt = "%p %I\xe6\x99\x82%M\xe5\x88\x86%S\xe7\xa7\x92 %Z", .t_fmt_ampm = "%p %I:%M:%S", - .am_str = "\xa4W\xa4\xc8", - .pm_str = "\xa4U\xa4\xc8", - .day_1 = "\xacP\xb4\xc1\xa4\xe9", - .day_2 = "\xacP\xb4\xc1\xa4@", - .day_3 = "\xacP\xb4\xc1\xa4G", - .day_4 = "\xacP\xb4\xc1\xa4T", - .day_5 = "\xacP\xb4\xc1\xa5|", - .day_6 = "\xacP\xb4\xc1\xa4\xad", - .day_7 = "\xacP\xb4\xc1\xa4\xbb", - .abday_1 = "\xa4\xe9", - .abday_2 = "\xa4@", - .abday_3 = "\xa4G", - .abday_4 = "\xa4T", - .abday_5 = "\xa5|", - .abday_6 = "\xa4\xad", - .abday_7 = "\xa4\xbb", - .mon_1 = "\xa4@\xa4\xeb", - .mon_2 = "\xa4G\xa4\xeb", - .mon_3 = "\xa4T\xa4\xeb", - .mon_4 = "\xa5|\xa4\xeb", - .mon_5 = "\xa4\xad\xa4\xeb", - .mon_6 = "\xa4\xbb\xa4\xeb", - .mon_7 = "\xa4""C\xa4\xeb", - .mon_8 = "\xa4K\xa4\xeb", - .mon_9 = "\xa4""E\xa4\xeb", - .mon_10 = "\xa4Q\xa4\xeb", - .mon_11 = "\xa4Q\xa4@\xa4\xeb", - .mon_12 = "\xa4Q\xa4G\xa4\xeb", - .abmon_1 = "1\xa4\xeb", - .abmon_2 = "2\xa4\xeb", - .abmon_3 = "3\xa4\xeb", - .abmon_4 = "4\xa4\xeb", - .abmon_5 = "5\xa4\xeb", - .abmon_6 = "6\xa4\xeb", - .abmon_7 = "7\xa4\xeb", - .abmon_8 = "8\xa4\xeb", - .abmon_9 = "9\xa4\xeb", - .abmon_10 = "10\xa4\xeb", - .abmon_11 = "11\xa4\xeb", - .abmon_12 = "12\xa4\xeb", - .yesexpr = "^[+1yY\xa3""B\xa2\xe7\xacO]", - .noexpr = "^[-0nN\xa2\xf6\xa2\xdc\xa4\xa3\xa7_]", + .am_str = "\xe4\xb8\x8a\xe5\x8d\x88", + .pm_str = "\xe4\xb8\x8b\xe5\x8d\x88", + .day_1 = "\xe6\x98\x9f\xe6\x9c\x9f\xe6\x97\xa5", + .day_2 = "\xe6\x98\x9f\xe6\x9c\x9f\xe4\xb8\x80", + .day_3 = "\xe6\x98\x9f\xe6\x9c\x9f\xe4\xba\x8c", + .day_4 = "\xe6\x98\x9f\xe6\x9c\x9f\xe4\xb8\x89", + .day_5 = "\xe6\x98\x9f\xe6\x9c\x9f\xe5\x9b\x9b", + .day_6 = "\xe6\x98\x9f\xe6\x9c\x9f\xe4\xba\x94", + .day_7 = "\xe6\x98\x9f\xe6\x9c\x9f\xe5\x85\xad", + .abday_1 = "\xe9\x80\xb1\xe6\x97\xa5", + .abday_2 = "\xe9\x80\xb1\xe4\xb8\x80", + .abday_3 = "\xe9\x80\xb1\xe4\xba\x8c", + .abday_4 = "\xe9\x80\xb1\xe4\xb8\x89", + .abday_5 = "\xe9\x80\xb1\xe5\x9b\x9b", + .abday_6 = "\xe9\x80\xb1\xe4\xba\x94", + .abday_7 = "\xe9\x80\xb1\xe5\x85\xad", + .mon_1 = "1\xe6\x9c\x88", + .mon_2 = "2\xe6\x9c\x88", + .mon_3 = "3\xe6\x9c\x88", + .mon_4 = "4\xe6\x9c\x88", + .mon_5 = "5\xe6\x9c\x88", + .mon_6 = "6\xe6\x9c\x88", + .mon_7 = "7\xe6\x9c\x88", + .mon_8 = "8\xe6\x9c\x88", + .mon_9 = "9\xe6\x9c\x88", + .mon_10 = "10\xe6\x9c\x88", + .mon_11 = "11\xe6\x9c\x88", + .mon_12 = "12\xe6\x9c\x88", + .abmon_1 = "1\xe6\x9c\x88", + .abmon_2 = "2\xe6\x9c\x88", + .abmon_3 = "3\xe6\x9c\x88", + .abmon_4 = "4\xe6\x9c\x88", + .abmon_5 = "5\xe6\x9c\x88", + .abmon_6 = "6\xe6\x9c\x88", + .abmon_7 = "7\xe6\x9c\x88", + .abmon_8 = "8\xe6\x9c\x88", + .abmon_9 = "9\xe6\x9c\x88", + .abmon_10 = "10\xe6\x9c\x88", + .abmon_11 = "11\xe6\x9c\x88", + .abmon_12 = "12\xe6\x9c\x88", + .yesexpr = "^[+1yY\xef\xbd\x99\xef\xbc\xb9\xe6\x98\xaf]", + .noexpr = "^[-0nN\xef\xbd\x8e\xef\xbc\xae\xe4\xb8\x8d\xe5\x90\xa6]", }, { .locale_name = "zh_TW", .radixchar = ".", .thousands_sep = ",", - .codeset = "BIG5", - .d_t_fmt = "%Y\xa6~%m\xa4\xeb%d\xa4\xe9 (%A) %H\xae\xc9%M\xa4\xc0%S\xac\xed", - .d_fmt = "%Y\xa6~%m\xa4\xeb%d\xa4\xe9", - .t_fmt = "%H\xae\xc9%M\xa4\xc0%S\xac\xed", - .t_fmt_ampm = "%p %I\xae\xc9%M\xa4\xc0%S\xac\xed", - .am_str = "\xa4W\xa4\xc8", - .pm_str = "\xa4U\xa4\xc8", - .day_1 = "\xb6g\xa4\xe9", - .day_2 = "\xb6g\xa4@", - .day_3 = "\xb6g\xa4G", - .day_4 = "\xb6g\xa4T", - .day_5 = "\xb6g\xa5|", - .day_6 = "\xb6g\xa4\xad", - .day_7 = "\xb6g\xa4\xbb", - .abday_1 = "\xa4\xe9", - .abday_2 = "\xa4@", - .abday_3 = "\xa4G", - .abday_4 = "\xa4T", - .abday_5 = "\xa5|", - .abday_6 = "\xa4\xad", - .abday_7 = "\xa4\xbb", - .mon_1 = "\xa4@\xa4\xeb", - .mon_2 = "\xa4G\xa4\xeb", - .mon_3 = "\xa4T\xa4\xeb", - .mon_4 = "\xa5|\xa4\xeb", - .mon_5 = "\xa4\xad\xa4\xeb", - .mon_6 = "\xa4\xbb\xa4\xeb", - .mon_7 = "\xa4""C\xa4\xeb", - .mon_8 = "\xa4K\xa4\xeb", - .mon_9 = "\xa4""E\xa4\xeb", - .mon_10 = "\xa4Q\xa4\xeb", - .mon_11 = "\xa4Q\xa4@\xa4\xeb", - .mon_12 = "\xa4Q\xa4G\xa4\xeb", - .abmon_1 = " 1\xa4\xeb", - .abmon_2 = " 2\xa4\xeb", - .abmon_3 = " 3\xa4\xeb", - .abmon_4 = " 4\xa4\xeb", - .abmon_5 = " 5\xa4\xeb", - .abmon_6 = " 6\xa4\xeb", - .abmon_7 = " 7\xa4\xeb", - .abmon_8 = " 8\xa4\xeb", - .abmon_9 = " 9\xa4\xeb", - .abmon_10 = "10\xa4\xeb", - .abmon_11 = "11\xa4\xeb", - .abmon_12 = "12\xa4\xeb", - .yesexpr = "^[+1yY\xa3""B\xa2\xe7\xacO]", - .noexpr = "^[-0nN\xa2\xf6\xa2\xdc\xa4\xa3\xa7_]", + .codeset = "UTF-8", + .d_t_fmt = "%Y\xe5\xb9\xb4%m\xe6\x9c\x88%d\xe6\x97\xa5 (%A) %H\xe6\x99\x82%M\xe5\x88\x86%S\xe7\xa7\x92", + .d_fmt = "%Y\xe5\xb9\xb4%m\xe6\x9c\x88%d\xe6\x97\xa5", + .t_fmt = "%H\xe6\x99\x82%M\xe5\x88\x86%S\xe7\xa7\x92", + .t_fmt_ampm = "%p %I\xe6\x99\x82%M\xe5\x88\x86%S\xe7\xa7\x92", + .am_str = "\xe4\xb8\x8a\xe5\x8d\x88", + .pm_str = "\xe4\xb8\x8b\xe5\x8d\x88", + .day_1 = "\xe6\x98\x9f\xe6\x9c\x9f\xe6\x97\xa5", + .day_2 = "\xe6\x98\x9f\xe6\x9c\x9f\xe4\xb8\x80", + .day_3 = "\xe6\x98\x9f\xe6\x9c\x9f\xe4\xba\x8c", + .day_4 = "\xe6\x98\x9f\xe6\x9c\x9f\xe4\xb8\x89", + .day_5 = "\xe6\x98\x9f\xe6\x9c\x9f\xe5\x9b\x9b", + .day_6 = "\xe6\x98\x9f\xe6\x9c\x9f\xe4\xba\x94", + .day_7 = "\xe6\x98\x9f\xe6\x9c\x9f\xe5\x85\xad", + .abday_1 = "\xe9\x80\xb1\xe6\x97\xa5", + .abday_2 = "\xe9\x80\xb1\xe4\xb8\x80", + .abday_3 = "\xe9\x80\xb1\xe4\xba\x8c", + .abday_4 = "\xe9\x80\xb1\xe4\xb8\x89", + .abday_5 = "\xe9\x80\xb1\xe5\x9b\x9b", + .abday_6 = "\xe9\x80\xb1\xe4\xba\x94", + .abday_7 = "\xe9\x80\xb1\xe5\x85\xad", + .mon_1 = "1\xe6\x9c\x88", + .mon_2 = "2\xe6\x9c\x88", + .mon_3 = "3\xe6\x9c\x88", + .mon_4 = "4\xe6\x9c\x88", + .mon_5 = "5\xe6\x9c\x88", + .mon_6 = "6\xe6\x9c\x88", + .mon_7 = "7\xe6\x9c\x88", + .mon_8 = "8\xe6\x9c\x88", + .mon_9 = "9\xe6\x9c\x88", + .mon_10 = "10\xe6\x9c\x88", + .mon_11 = "11\xe6\x9c\x88", + .mon_12 = "12\xe6\x9c\x88", + .abmon_1 = "1\xe6\x9c\x88", + .abmon_2 = "2\xe6\x9c\x88", + .abmon_3 = "3\xe6\x9c\x88", + .abmon_4 = "4\xe6\x9c\x88", + .abmon_5 = "5\xe6\x9c\x88", + .abmon_6 = "6\xe6\x9c\x88", + .abmon_7 = "7\xe6\x9c\x88", + .abmon_8 = "8\xe6\x9c\x88", + .abmon_9 = "9\xe6\x9c\x88", + .abmon_10 = "10\xe6\x9c\x88", + .abmon_11 = "11\xe6\x9c\x88", + .abmon_12 = "12\xe6\x9c\x88", + .yesexpr = "^[+1yY\xef\xbd\x99\xef\xbc\xb9\xe6\x98\xaf]", + .noexpr = "^[-0nN\xef\xbd\x8e\xef\xbc\xae\xe4\xb8\x8d\xe5\x90\xa6]", }, { .locale_name = "hr_HR", .radixchar = ",", .thousands_sep = ".", - .codeset = "ISO-8859-2", + .codeset = "UTF-8", .d_t_fmt = "%A, %d. %B %Y. %T %Z", .d_fmt = "%d.%m.%Y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", + .am_str = "AM", + .pm_str = "PM", .day_1 = "nedjelja", .day_2 = "ponedjeljak", .day_3 = "utorak", .day_4 = "srijeda", - .day_5 = "\xe8""etvrtak", + .day_5 = "\xc4\x8d""etvrtak", .day_6 = "petak", .day_7 = "subota", .abday_1 = "ned", .abday_2 = "pon", .abday_3 = "uto", .abday_4 = "sri", - .abday_5 = "\xe8""et", + .abday_5 = "\xc4\x8d""et", .abday_6 = "pet", .abday_7 = "sub", - .mon_1 = "sije\xe8nja", - .mon_2 = "velja\xe8""e", - .mon_3 = "o\xbeujka", - .mon_4 = "travnja", - .mon_5 = "svibnja", - .mon_6 = "lipnja", - .mon_7 = "srpnja", - .mon_8 = "kolovoza", - .mon_9 = "rujna", - .mon_10 = "listopada", - .mon_11 = "studenoga", - .mon_12 = "prosinca", + .mon_1 = "sije\xc4\x8d""anj", + .mon_2 = "velja\xc4\x8d""a", + .mon_3 = "o\xc5\xbeujak", + .mon_4 = "travanj", + .mon_5 = "svibanj", + .mon_6 = "lipanj", + .mon_7 = "srpanj", + .mon_8 = "kolovoz", + .mon_9 = "rujan", + .mon_10 = "listopad", + .mon_11 = "studeni", + .mon_12 = "prosinac", .abmon_1 = "sij", .abmon_2 = "velj", - .abmon_3 = "o\xbeu", + .abmon_3 = "o\xc5\xbeu", .abmon_4 = "tra", .abmon_5 = "svi", .abmon_6 = "lip", @@ -886,50 +886,50 @@ constexpr LanginfoTestData kLanginfoTestData[] = { { .locale_name = "cs_CZ", .radixchar = ",", - .thousands_sep = "\xa0", - .codeset = "ISO-8859-2", - .d_t_fmt = "%a\xa0%-d.\xa0%B\xa0%Y,\xa0%H:%M:%S", + .thousands_sep = "\xc2\xa0", + .codeset = "UTF-8", + .d_t_fmt = "%a\xc2\xa0%-d.\xc2\xa0%B\xc2\xa0%Y,\xc2\xa0%H:%M:%S", .d_fmt = "%-d.%-m.%Y", .t_fmt = "%H:%M:%S", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", - .day_1 = "ned\xecle", - .day_2 = "pond\xecl\xed", - .day_3 = "\xfater\xfd", - .day_4 = "st\xf8""eda", - .day_5 = "\xe8tvrtek", - .day_6 = "p\xe1tek", + .am_str = "dop.", + .pm_str = "odp.", + .day_1 = "ned\xc4\x9ble", + .day_2 = "pond\xc4\x9bl\xc3\xad", + .day_3 = "\xc3\xbater\xc3\xbd", + .day_4 = "st\xc5\x99""eda", + .day_5 = "\xc4\x8dtvrtek", + .day_6 = "p\xc3\xa1tek", .day_7 = "sobota", .abday_1 = "ne", .abday_2 = "po", - .abday_3 = "\xfat", + .abday_3 = "\xc3\xbat", .abday_4 = "st", - .abday_5 = "\xe8t", - .abday_6 = "p\xe1", + .abday_5 = "\xc4\x8dt", + .abday_6 = "p\xc3\xa1", .abday_7 = "so", - .mon_1 = "ledna", - .mon_2 = "\xfanora", - .mon_3 = "b\xf8""ezna", - .mon_4 = "dubna", - .mon_5 = "kv\xectna", - .mon_6 = "\xe8""ervna", - .mon_7 = "\xe8""ervence", - .mon_8 = "srpna", - .mon_9 = "z\xe1\xf8\xed", - .mon_10 = "\xf8\xedjna", - .mon_11 = "listopadu", - .mon_12 = "prosince", + .mon_1 = "leden", + .mon_2 = "\xc3\xbanor", + .mon_3 = "b\xc5\x99""ezen", + .mon_4 = "duben", + .mon_5 = "kv\xc4\x9bten", + .mon_6 = "\xc4\x8d""erven", + .mon_7 = "\xc4\x8d""ervenec", + .mon_8 = "srpen", + .mon_9 = "z\xc3\xa1\xc5\x99\xc3\xad", + .mon_10 = "\xc5\x99\xc3\xadjen", + .mon_11 = "listopad", + .mon_12 = "prosinec", .abmon_1 = "led", - .abmon_2 = "\xfano", - .abmon_3 = "b\xf8""e", + .abmon_2 = "\xc3\xbano", + .abmon_3 = "b\xc5\x99""e", .abmon_4 = "dub", - .abmon_5 = "kv\xec", - .abmon_6 = "\xe8""en", - .abmon_7 = "\xe8""ec", + .abmon_5 = "kv\xc4\x9b", + .abmon_6 = "\xc4\x8dvn", + .abmon_7 = "\xc4\x8dvc", .abmon_8 = "srp", - .abmon_9 = "z\xe1\xf8", - .abmon_10 = "\xf8\xedj", + .abmon_9 = "z\xc3\xa1\xc5\x99", + .abmon_10 = "\xc5\x99\xc3\xadj", .abmon_11 = "lis", .abmon_12 = "pro", .yesexpr = "^[+1aAyY]", @@ -939,27 +939,27 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .locale_name = "da_DK", .radixchar = ",", .thousands_sep = ".", - .codeset = "ISO-8859-1", + .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %T %Z", .d_fmt = "%d-%m-%Y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", - .day_1 = "s\xf8ndag", + .am_str = "AM", + .pm_str = "PM", + .day_1 = "s\xc3\xb8ndag", .day_2 = "mandag", .day_3 = "tirsdag", .day_4 = "onsdag", .day_5 = "torsdag", .day_6 = "fredag", - .day_7 = "l\xf8rdag", - .abday_1 = "s\xf8n", - .abday_2 = "man", - .abday_3 = "tir", - .abday_4 = "ons", - .abday_5 = "tor", - .abday_6 = "fre", - .abday_7 = "l\xf8r", + .day_7 = "l\xc3\xb8rdag", + .abday_1 = "s\xc3\xb8n.", + .abday_2 = "man.", + .abday_3 = "tirs.", + .abday_4 = "ons.", + .abday_5 = "tors.", + .abday_6 = "fre.", + .abday_7 = "l\xc3\xb8r.", .mon_1 = "januar", .mon_2 = "februar", .mon_3 = "marts", @@ -972,18 +972,18 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .mon_10 = "oktober", .mon_11 = "november", .mon_12 = "december", - .abmon_1 = "jan", - .abmon_2 = "feb", - .abmon_3 = "mar", - .abmon_4 = "apr", + .abmon_1 = "jan.", + .abmon_2 = "feb.", + .abmon_3 = "mar.", + .abmon_4 = "apr.", .abmon_5 = "maj", - .abmon_6 = "jun", - .abmon_7 = "jul", - .abmon_8 = "aug", - .abmon_9 = "sep", - .abmon_10 = "okt", - .abmon_11 = "nov", - .abmon_12 = "dec", + .abmon_6 = "jun.", + .abmon_7 = "jul.", + .abmon_8 = "aug.", + .abmon_9 = "sep.", + .abmon_10 = "okt.", + .abmon_11 = "nov.", + .abmon_12 = "dec.", .yesexpr = "^[+1JjYy]", .noexpr = "^[-0Nn]", }, @@ -991,13 +991,13 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .locale_name = "nl_NL", .radixchar = ",", .thousands_sep = ".", - .codeset = "ISO-8859-1", + .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %T %Z", .d_fmt = "%d-%m-%y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", + .am_str = "a.m.", + .pm_str = "p.m.", .day_1 = "zondag", .day_2 = "maandag", .day_3 = "dinsdag", @@ -1043,7 +1043,7 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .locale_name = "en_US", .radixchar = ".", .thousands_sep = ",", - .codeset = "ISO-8859-1", + .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %r %Z", .d_fmt = "%m/%d/%Y", .t_fmt = "%r", @@ -1100,8 +1100,8 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .d_fmt = "%d/%m/%y", .t_fmt = "%I:%M:%S %p %Z", .t_fmt_ampm = "%I:%M:%S %p %Z", - .am_str = "AM", - .pm_str = "PM", + .am_str = "am", + .pm_str = "pm", .day_1 = "Sunday", .day_2 = "Monday", .day_3 = "Tuesday", @@ -1136,7 +1136,7 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .abmon_6 = "Jun", .abmon_7 = "Jul", .abmon_8 = "Aug", - .abmon_9 = "Sep", + .abmon_9 = "Sept", .abmon_10 = "Oct", .abmon_11 = "Nov", .abmon_12 = "Dec", @@ -1147,7 +1147,7 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .locale_name = "en_GB", .radixchar = ".", .thousands_sep = ",", - .codeset = "ISO-8859-1", + .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %T %Z", .d_fmt = "%d/%m/%y", .t_fmt = "%T", @@ -1188,7 +1188,7 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .abmon_6 = "Jun", .abmon_7 = "Jul", .abmon_8 = "Aug", - .abmon_9 = "Sep", + .abmon_9 = "Sept", .abmon_10 = "Oct", .abmon_11 = "Nov", .abmon_12 = "Dec", @@ -1198,21 +1198,21 @@ constexpr LanginfoTestData kLanginfoTestData[] = { { .locale_name = "et_EE", .radixchar = ",", - .thousands_sep = "\xa0", - .codeset = "ISO-8859-1", + .thousands_sep = "\xc2\xa0", + .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %T", .d_fmt = "%d.%m.%Y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", - .day_1 = "p\xfchap\xe4""ev", - .day_2 = "esmasp\xe4""ev", - .day_3 = "teisip\xe4""ev", - .day_4 = "kolmap\xe4""ev", - .day_5 = "neljap\xe4""ev", + .am_str = "AM", + .pm_str = "PM", + .day_1 = "p\xc3\xbchap\xc3\xa4""ev", + .day_2 = "esmasp\xc3\xa4""ev", + .day_3 = "teisip\xc3\xa4""ev", + .day_4 = "kolmap\xc3\xa4""ev", + .day_5 = "neljap\xc3\xa4""ev", .day_6 = "reede", - .day_7 = "laup\xe4""ev", + .day_7 = "laup\xc3\xa4""ev", .abday_1 = "P", .abday_2 = "E", .abday_3 = "T", @@ -1222,7 +1222,7 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .abday_7 = "L", .mon_1 = "jaanuar", .mon_2 = "veebruar", - .mon_3 = "m\xe4rts", + .mon_3 = "m\xc3\xa4rts", .mon_4 = "aprill", .mon_5 = "mai", .mon_6 = "juuni", @@ -1232,18 +1232,18 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .mon_10 = "oktoober", .mon_11 = "november", .mon_12 = "detsember", - .abmon_1 = "jaan ", + .abmon_1 = "jaan", .abmon_2 = "veebr", - .abmon_3 = "m\xe4rts", - .abmon_4 = "apr ", - .abmon_5 = "mai ", + .abmon_3 = "m\xc3\xa4rts", + .abmon_4 = "apr", + .abmon_5 = "mai", .abmon_6 = "juuni", .abmon_7 = "juuli", - .abmon_8 = "aug ", - .abmon_9 = "sept ", - .abmon_10 = "okt ", - .abmon_11 = "nov ", - .abmon_12 = "dets ", + .abmon_8 = "aug", + .abmon_9 = "sept", + .abmon_10 = "okt", + .abmon_11 = "nov", + .abmon_12 = "dets", .yesexpr = "^[+1JjYy]", .noexpr = "^[-0EeNn]", }, @@ -1256,12 +1256,12 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .d_fmt = "%m/%d/%y", .t_fmt = "%r", .t_fmt_ampm = "%I:%M:%S %p", - .am_str = "N.U.", - .pm_str = "N.H.", + .am_str = "AM", + .pm_str = "PM", .day_1 = "Linggo", .day_2 = "Lunes", .day_3 = "Martes", - .day_4 = "Miyerkoles", + .day_4 = "Miyerkules", .day_5 = "Huwebes", .day_6 = "Biyernes", .day_7 = "Sabado", @@ -1302,14 +1302,14 @@ constexpr LanginfoTestData kLanginfoTestData[] = { { .locale_name = "fi_FI", .radixchar = ",", - .thousands_sep = "\xa0", - .codeset = "ISO-8859-1", + .thousands_sep = "\xc2\xa0", + .codeset = "UTF-8", .d_t_fmt = "%a %e. %Bta %Y %H.%M.%S", .d_fmt = "%d.%m.%Y", .t_fmt = "%H.%M.%S", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", + .am_str = "ap.", + .pm_str = "ip.", .day_1 = "sunnuntai", .day_2 = "maanantai", .day_3 = "tiistai", @@ -1329,8 +1329,8 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .mon_3 = "maaliskuu", .mon_4 = "huhtikuu", .mon_5 = "toukokuu", - .mon_6 = "kes\xe4kuu", - .mon_7 = "hein\xe4kuu", + .mon_6 = "kes\xc3\xa4kuu", + .mon_7 = "hein\xc3\xa4kuu", .mon_8 = "elokuu", .mon_9 = "syyskuu", .mon_10 = "lokakuu", @@ -1341,8 +1341,8 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .abmon_3 = "maalis", .abmon_4 = "huhti", .abmon_5 = "touko", - .abmon_6 = "kes\xe4", - .abmon_7 = "hein\xe4", + .abmon_6 = "kes\xc3\xa4", + .abmon_7 = "hein\xc3\xa4", .abmon_8 = "elo", .abmon_9 = "syys", .abmon_10 = "loka", @@ -1354,14 +1354,14 @@ constexpr LanginfoTestData kLanginfoTestData[] = { { .locale_name = "fr_FR", .radixchar = ",", - .thousands_sep = "\xa0", - .codeset = "ISO-8859-1", + .thousands_sep = "\xe2\x80\xaf", + .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %T", .d_fmt = "%d/%m/%Y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", + .am_str = "AM", + .pm_str = "PM", .day_1 = "dimanche", .day_2 = "lundi", .day_3 = "mardi", @@ -1377,43 +1377,43 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .abday_6 = "ven.", .abday_7 = "sam.", .mon_1 = "janvier", - .mon_2 = "f\xe9vrier", + .mon_2 = "f\xc3\xa9vrier", .mon_3 = "mars", .mon_4 = "avril", .mon_5 = "mai", .mon_6 = "juin", .mon_7 = "juillet", - .mon_8 = "ao\xfbt", + .mon_8 = "ao\xc3\xbbt", .mon_9 = "septembre", .mon_10 = "octobre", .mon_11 = "novembre", - .mon_12 = "d\xe9""cembre", + .mon_12 = "d\xc3\xa9""cembre", .abmon_1 = "janv.", - .abmon_2 = "f\xe9vr.", + .abmon_2 = "f\xc3\xa9vr.", .abmon_3 = "mars", - .abmon_4 = "avril", + .abmon_4 = "avr.", .abmon_5 = "mai", .abmon_6 = "juin", .abmon_7 = "juil.", - .abmon_8 = "ao\xfbt", + .abmon_8 = "ao\xc3\xbbt", .abmon_9 = "sept.", .abmon_10 = "oct.", .abmon_11 = "nov.", - .abmon_12 = "d\xe9""c.", + .abmon_12 = "d\xc3\xa9""c.", .yesexpr = "^[+1oOyY]", .noexpr = "^[-0nN]", }, { .locale_name = "fr_CA", .radixchar = ",", - .thousands_sep = "\xa0", - .codeset = "ISO-8859-1", + .thousands_sep = "\xc2\xa0", + .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %T", .d_fmt = "%Y-%m-%d", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", + .am_str = "a.m.", + .pm_str = "p.m.", .day_1 = "dimanche", .day_2 = "lundi", .day_3 = "mardi", @@ -1421,141 +1421,141 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .day_5 = "jeudi", .day_6 = "vendredi", .day_7 = "samedi", - .abday_1 = "dim", - .abday_2 = "lun", - .abday_3 = "mar", - .abday_4 = "mer", - .abday_5 = "jeu", - .abday_6 = "ven", - .abday_7 = "sam", + .abday_1 = "dim.", + .abday_2 = "lun.", + .abday_3 = "mar.", + .abday_4 = "mer.", + .abday_5 = "jeu.", + .abday_6 = "ven.", + .abday_7 = "sam.", .mon_1 = "janvier", - .mon_2 = "f\xe9vrier", + .mon_2 = "f\xc3\xa9vrier", .mon_3 = "mars", .mon_4 = "avril", .mon_5 = "mai", .mon_6 = "juin", .mon_7 = "juillet", - .mon_8 = "ao\xfbt", + .mon_8 = "ao\xc3\xbbt", .mon_9 = "septembre", .mon_10 = "octobre", .mon_11 = "novembre", - .mon_12 = "d\xe9""cembre", - .abmon_1 = "jan", - .abmon_2 = "f\xe9v", - .abmon_3 = "mar", - .abmon_4 = "avr", + .mon_12 = "d\xc3\xa9""cembre", + .abmon_1 = "janv.", + .abmon_2 = "f\xc3\xa9vr.", + .abmon_3 = "mars", + .abmon_4 = "avr.", .abmon_5 = "mai", - .abmon_6 = "jun", - .abmon_7 = "jui", - .abmon_8 = "ao\xfb", - .abmon_9 = "sep", - .abmon_10 = "oct", - .abmon_11 = "nov", - .abmon_12 = "d\xe9""c", + .abmon_6 = "juin", + .abmon_7 = "juill.", + .abmon_8 = "ao\xc3\xbbt", + .abmon_9 = "sept.", + .abmon_10 = "oct.", + .abmon_11 = "nov.", + .abmon_12 = "d\xc3\xa9""c.", .yesexpr = "^[+1oOyY]", .noexpr = "^[-0nN]", }, { .locale_name = "gl_ES", .radixchar = ",", - .thousands_sep = "", - .codeset = "ISO-8859-1", + .thousands_sep = ".", + .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %T", .d_fmt = "%d/%m/%y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", - .day_1 = "Domingo", - .day_2 = "Luns", - .day_3 = "Martes", - .day_4 = "M\xe9rcores", - .day_5 = "Xoves", - .day_6 = "Venres", - .day_7 = "S\xe1""bado", - .abday_1 = "Dom", - .abday_2 = "Lun", - .abday_3 = "Mar", - .abday_4 = "M\xe9r", - .abday_5 = "Xov", - .abday_6 = "Ven", - .abday_7 = "S\xe1""b", - .mon_1 = "Xaneiro", - .mon_2 = "Febreiro", - .mon_3 = "Marzo", - .mon_4 = "Abril", - .mon_5 = "Maio", - .mon_6 = "Xu\xf1o", - .mon_7 = "Xullo", - .mon_8 = "Agosto", - .mon_9 = "Setembro", - .mon_10 = "Outubro", - .mon_11 = "Novembro", - .mon_12 = "Decembro", - .abmon_1 = "Xan", - .abmon_2 = "Feb", - .abmon_3 = "Mar", - .abmon_4 = "Abr", - .abmon_5 = "Mai", - .abmon_6 = "Xu\xf1", - .abmon_7 = "Xul", - .abmon_8 = "Ago", - .abmon_9 = "Set", - .abmon_10 = "Out", - .abmon_11 = "Nov", - .abmon_12 = "Dec", + .am_str = "a.m.", + .pm_str = "p.m.", + .day_1 = "domingo", + .day_2 = "luns", + .day_3 = "martes", + .day_4 = "m\xc3\xa9rcores", + .day_5 = "xoves", + .day_6 = "venres", + .day_7 = "s\xc3\xa1""bado", + .abday_1 = "dom.", + .abday_2 = "luns", + .abday_3 = "mar.", + .abday_4 = "m\xc3\xa9r.", + .abday_5 = "xov.", + .abday_6 = "ven.", + .abday_7 = "s\xc3\xa1""b.", + .mon_1 = "xaneiro", + .mon_2 = "febreiro", + .mon_3 = "marzo", + .mon_4 = "abril", + .mon_5 = "maio", + .mon_6 = "xu\xc3\xb1o", + .mon_7 = "xullo", + .mon_8 = "agosto", + .mon_9 = "setembro", + .mon_10 = "outubro", + .mon_11 = "novembro", + .mon_12 = "decembro", + .abmon_1 = "xan.", + .abmon_2 = "feb.", + .abmon_3 = "mar.", + .abmon_4 = "abr.", + .abmon_5 = "maio", + .abmon_6 = "xu\xc3\xb1o", + .abmon_7 = "xul.", + .abmon_8 = "ago.", + .abmon_9 = "set.", + .abmon_10 = "out.", + .abmon_11 = "nov.", + .abmon_12 = "dec.", .yesexpr = "^[+1sSyY]", .noexpr = "^[-0nN]", }, { .locale_name = "ka_GE", .radixchar = ",", - .thousands_sep = ".", - .codeset = "GEORGIAN-PS", + .thousands_sep = "\xc2\xa0", + .codeset = "UTF-8", .d_t_fmt = "%Y \xdf\xcb\xc9\xd3 %d %B, %T", .d_fmt = "%m/%d/%Y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", - .day_1 = "\xca\xc5\xc9\xd2\xc0", - .day_2 = "\xcf\xd2\xdb\xc0\xc1\xc0\xc8\xc9", - .day_3 = "\xd3\xc0\xcc\xdb\xc0\xc1\xc0\xc8\xc9", - .day_4 = "\xcf\xc8\xe1\xdb\xc0\xc1\xc0\xc8\xc9", - .day_5 = "\xe1\xd6\xc8\xdb\xc0\xc1\xc0\xc8\xc9", - .day_6 = "\xd0\xc0\xd2\xc0\xd3\xca\xc4\xc5\xc9", - .day_7 = "\xdb\xc0\xc1\xc0\xc8\xc9", - .abday_1 = "\xca\xc5\xc9", - .abday_2 = "\xcf\xd2\xdb", - .abday_3 = "\xd3\xc0\xcc", - .abday_4 = "\xcf\xc8\xe1", - .abday_5 = "\xe1\xd6\xc8", - .abday_6 = "\xd0\xc0\xd2", - .abday_7 = "\xdb\xc0\xc1", - .mon_1 = "\xc9\xc0\xcd\xc5\xc0\xd2\xc9", - .mon_2 = "\xc8\xc4\xc1\xc4\xd2\xc5\xc0\xcb\xc9", - .mon_3 = "\xcc\xc0\xd2\xd4\xc9", - .mon_4 = "\xc0\xd0\xd2\xc9\xcb\xc9", - .mon_5 = "\xcc\xc0\xc9\xd3\xc9", - .mon_6 = "\xc9\xc5\xcd\xc9\xd3\xc9", - .mon_7 = "\xc9\xc5\xcb\xc9\xd3\xc9", - .mon_8 = "\xc0\xc2\xc5\xc9\xd3\xd4\xcf", - .mon_9 = "\xd3\xc4\xd8\xd4\xc4\xcc\xc1\xc4\xd2\xc9", - .mon_10 = "\xcf\xd8\xd4\xcf\xcc\xc1\xc4\xd2\xc9", - .mon_11 = "\xcd\xcf\xc4\xcc\xc1\xc4\xd2\xc9", - .mon_12 = "\xc3\xc4\xca\xc4\xcc\xc1\xc4\xd2\xc9", - .abmon_1 = "\xc9\xc0\xcd", - .abmon_2 = "\xc8\xc4\xc1", - .abmon_3 = "\xcc\xc0\xd2", - .abmon_4 = "\xc0\xd0\xd2", - .abmon_5 = "\xcc\xc0\xc9", - .abmon_6 = "\xc9\xc5\xcd", - .abmon_7 = "\xc9\xc5\xcb", - .abmon_8 = "\xc0\xc2\xc5", - .abmon_9 = "\xd3\xc4\xd8", - .abmon_10 = "\xcf\xd8\xd4", - .abmon_11 = "\xcd\xcf\xc4", - .abmon_12 = "\xc3\xc4\xca", + .am_str = "AM", + .pm_str = "PM", + .day_1 = "\xe1\x83\x99\xe1\x83\x95\xe1\x83\x98\xe1\x83\xa0\xe1\x83\x90", + .day_2 = "\xe1\x83\x9d\xe1\x83\xa0\xe1\x83\xa8\xe1\x83\x90\xe1\x83\x91\xe1\x83\x90\xe1\x83\x97\xe1\x83\x98", + .day_3 = "\xe1\x83\xa1\xe1\x83\x90\xe1\x83\x9b\xe1\x83\xa8\xe1\x83\x90\xe1\x83\x91\xe1\x83\x90\xe1\x83\x97\xe1\x83\x98", + .day_4 = "\xe1\x83\x9d\xe1\x83\x97\xe1\x83\xae\xe1\x83\xa8\xe1\x83\x90\xe1\x83\x91\xe1\x83\x90\xe1\x83\x97\xe1\x83\x98", + .day_5 = "\xe1\x83\xae\xe1\x83\xa3\xe1\x83\x97\xe1\x83\xa8\xe1\x83\x90\xe1\x83\x91\xe1\x83\x90\xe1\x83\x97\xe1\x83\x98", + .day_6 = "\xe1\x83\x9e\xe1\x83\x90\xe1\x83\xa0\xe1\x83\x90\xe1\x83\xa1\xe1\x83\x99\xe1\x83\x94\xe1\x83\x95\xe1\x83\x98", + .day_7 = "\xe1\x83\xa8\xe1\x83\x90\xe1\x83\x91\xe1\x83\x90\xe1\x83\x97\xe1\x83\x98", + .abday_1 = "\xe1\x83\x99\xe1\x83\x95\xe1\x83\x98", + .abday_2 = "\xe1\x83\x9d\xe1\x83\xa0\xe1\x83\xa8", + .abday_3 = "\xe1\x83\xa1\xe1\x83\x90\xe1\x83\x9b", + .abday_4 = "\xe1\x83\x9d\xe1\x83\x97\xe1\x83\xae", + .abday_5 = "\xe1\x83\xae\xe1\x83\xa3\xe1\x83\x97", + .abday_6 = "\xe1\x83\x9e\xe1\x83\x90\xe1\x83\xa0", + .abday_7 = "\xe1\x83\xa8\xe1\x83\x90\xe1\x83\x91", + .mon_1 = "\xe1\x83\x98\xe1\x83\x90\xe1\x83\x9c\xe1\x83\x95\xe1\x83\x90\xe1\x83\xa0\xe1\x83\x98", + .mon_2 = "\xe1\x83\x97\xe1\x83\x94\xe1\x83\x91\xe1\x83\x94\xe1\x83\xa0\xe1\x83\x95\xe1\x83\x90\xe1\x83\x9a\xe1\x83\x98", + .mon_3 = "\xe1\x83\x9b\xe1\x83\x90\xe1\x83\xa0\xe1\x83\xa2\xe1\x83\x98", + .mon_4 = "\xe1\x83\x90\xe1\x83\x9e\xe1\x83\xa0\xe1\x83\x98\xe1\x83\x9a\xe1\x83\x98", + .mon_5 = "\xe1\x83\x9b\xe1\x83\x90\xe1\x83\x98\xe1\x83\xa1\xe1\x83\x98", + .mon_6 = "\xe1\x83\x98\xe1\x83\x95\xe1\x83\x9c\xe1\x83\x98\xe1\x83\xa1\xe1\x83\x98", + .mon_7 = "\xe1\x83\x98\xe1\x83\x95\xe1\x83\x9a\xe1\x83\x98\xe1\x83\xa1\xe1\x83\x98", + .mon_8 = "\xe1\x83\x90\xe1\x83\x92\xe1\x83\x95\xe1\x83\x98\xe1\x83\xa1\xe1\x83\xa2\xe1\x83\x9d", + .mon_9 = "\xe1\x83\xa1\xe1\x83\x94\xe1\x83\xa5\xe1\x83\xa2\xe1\x83\x94\xe1\x83\x9b\xe1\x83\x91\xe1\x83\x94\xe1\x83\xa0\xe1\x83\x98", + .mon_10 = "\xe1\x83\x9d\xe1\x83\xa5\xe1\x83\xa2\xe1\x83\x9d\xe1\x83\x9b\xe1\x83\x91\xe1\x83\x94\xe1\x83\xa0\xe1\x83\x98", + .mon_11 = "\xe1\x83\x9c\xe1\x83\x9d\xe1\x83\x94\xe1\x83\x9b\xe1\x83\x91\xe1\x83\x94\xe1\x83\xa0\xe1\x83\x98", + .mon_12 = "\xe1\x83\x93\xe1\x83\x94\xe1\x83\x99\xe1\x83\x94\xe1\x83\x9b\xe1\x83\x91\xe1\x83\x94\xe1\x83\xa0\xe1\x83\x98", + .abmon_1 = "\xe1\x83\x98\xe1\x83\x90\xe1\x83\x9c", + .abmon_2 = "\xe1\x83\x97\xe1\x83\x94\xe1\x83\x91", + .abmon_3 = "\xe1\x83\x9b\xe1\x83\x90\xe1\x83\xa0", + .abmon_4 = "\xe1\x83\x90\xe1\x83\x9e\xe1\x83\xa0", + .abmon_5 = "\xe1\x83\x9b\xe1\x83\x90\xe1\x83\x98", + .abmon_6 = "\xe1\x83\x98\xe1\x83\x95\xe1\x83\x9c", + .abmon_7 = "\xe1\x83\x98\xe1\x83\x95\xe1\x83\x9a", + .abmon_8 = "\xe1\x83\x90\xe1\x83\x92\xe1\x83\x95", + .abmon_9 = "\xe1\x83\xa1\xe1\x83\x94\xe1\x83\xa5", + .abmon_10 = "\xe1\x83\x9d\xe1\x83\xa5\xe1\x83\xa2", + .abmon_11 = "\xe1\x83\x9c\xe1\x83\x9d\xe1\x83\x94", + .abmon_12 = "\xe1\x83\x93\xe1\x83\x94\xe1\x83\x99", .yesexpr = "^[+1yYkKxX\xca]", .noexpr = "^[-0nNaA\xc0]", }, @@ -1563,13 +1563,13 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .locale_name = "de_DE", .radixchar = ",", .thousands_sep = ".", - .codeset = "ISO-8859-1", + .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %T %Z", .d_fmt = "%d.%m.%Y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", + .am_str = "AM", + .pm_str = "PM", .day_1 = "Sonntag", .day_2 = "Montag", .day_3 = "Dienstag", @@ -1586,7 +1586,7 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .abday_7 = "Sa", .mon_1 = "Januar", .mon_2 = "Februar", - .mon_3 = "M\xe4rz", + .mon_3 = "M\xc3\xa4rz", .mon_4 = "April", .mon_5 = "Mai", .mon_6 = "Juni", @@ -1598,7 +1598,7 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .mon_12 = "Dezember", .abmon_1 = "Jan", .abmon_2 = "Feb", - .abmon_3 = "M\xe4r", + .abmon_3 = "M\xc3\xa4r", .abmon_4 = "Apr", .abmon_5 = "Mai", .abmon_6 = "Jun", @@ -1615,53 +1615,53 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .locale_name = "el_GR", .radixchar = ",", .thousands_sep = ".", - .codeset = "ISO-8859-7", + .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %T %Z", .d_fmt = "%d/%m/%Y", .t_fmt = "%T", .t_fmt_ampm = "%I:%M:%S %p", - .am_str = "\xf0\xec", - .pm_str = "\xec\xec", - .day_1 = "\xca\xf5\xf1\xe9\xe1\xea\xde", - .day_2 = "\xc4\xe5\xf5\xf4\xdd\xf1\xe1", - .day_3 = "\xd4\xf1\xdf\xf4\xe7", - .day_4 = "\xd4\xe5\xf4\xdc\xf1\xf4\xe7", - .day_5 = "\xd0\xdd\xec\xf0\xf4\xe7", - .day_6 = "\xd0\xe1\xf1\xe1\xf3\xea\xe5\xf5\xde", - .day_7 = "\xd3\xdc\xe2\xe2\xe1\xf4\xef", - .abday_1 = "\xca\xf5\xf1", - .abday_2 = "\xc4\xe5\xf5", - .abday_3 = "\xd4\xf1\xe9", - .abday_4 = "\xd4\xe5\xf4", - .abday_5 = "\xd0\xe5\xec", - .abday_6 = "\xd0\xe1\xf1", - .abday_7 = "\xd3\xe1\xe2", - .mon_1 = "\xc9\xe1\xed\xef\xf5\xe1\xf1\xdf\xef\xf5", - .mon_2 = "\xd6\xe5\xe2\xf1\xef\xf5\xe1\xf1\xdf\xef\xf5", - .mon_3 = "\xcc\xe1\xf1\xf4\xdf\xef\xf5", - .mon_4 = "\xc1\xf0\xf1\xe9\xeb\xdf\xef\xf5", - .mon_5 = "\xcc\xe1\xc0\xef\xf5", - .mon_6 = "\xc9\xef\xf5\xed\xdf\xef\xf5", - .mon_7 = "\xc9\xef\xf5\xeb\xdf\xef\xf5", - .mon_8 = "\xc1\xf5\xe3\xef\xfd\xf3\xf4\xef\xf5", - .mon_9 = "\xd3\xe5\xf0\xf4\xe5\xec\xe2\xf1\xdf\xef\xf5", - .mon_10 = "\xcf\xea\xf4\xf9\xe2\xf1\xdf\xef\xf5", - .mon_11 = "\xcd\xef\xe5\xec\xe2\xf1\xdf\xef\xf5", - .mon_12 = "\xc4\xe5\xea\xe5\xec\xe2\xf1\xdf\xef\xf5", - .abmon_1 = "\xc9\xe1\xed", - .abmon_2 = "\xd6\xe5\xe2", - .abmon_3 = "\xcc\xe1\xf1", - .abmon_4 = "\xc1\xf0\xf1", - .abmon_5 = "\xcc\xe1\xc0", - .abmon_6 = "\xc9\xef\xf5\xed", - .abmon_7 = "\xc9\xef\xf5\xeb", - .abmon_8 = "\xc1\xf5\xe3", - .abmon_9 = "\xd3\xe5\xf0", - .abmon_10 = "\xcf\xea\xf4", - .abmon_11 = "\xcd\xef\xe5", - .abmon_12 = "\xc4\xe5\xea", - .yesexpr = "^[+1yY\xed\xcd]", - .noexpr = "^[-0nN\xef\xcf\xfc\xbc]", + .am_str = "\xcf\x80.\xce\xbc.", + .pm_str = "\xce\xbc.\xce\xbc.", + .day_1 = "\xce\x9a\xcf\x85\xcf\x81\xce\xb9\xce\xb1\xce\xba\xce\xae", + .day_2 = "\xce\x94\xce\xb5\xcf\x85\xcf\x84\xce\xad\xcf\x81\xce\xb1", + .day_3 = "\xce\xa4\xcf\x81\xce\xaf\xcf\x84\xce\xb7", + .day_4 = "\xce\xa4\xce\xb5\xcf\x84\xce\xac\xcf\x81\xcf\x84\xce\xb7", + .day_5 = "\xce\xa0\xce\xad\xce\xbc\xcf\x80\xcf\x84\xce\xb7", + .day_6 = "\xce\xa0\xce\xb1\xcf\x81\xce\xb1\xcf\x83\xce\xba\xce\xb5\xcf\x85\xce\xae", + .day_7 = "\xce\xa3\xce\xac\xce\xb2\xce\xb2\xce\xb1\xcf\x84\xce\xbf", + .abday_1 = "\xce\x9a\xcf\x85\xcf\x81", + .abday_2 = "\xce\x94\xce\xb5\xcf\x85", + .abday_3 = "\xce\xa4\xcf\x81\xce\xaf", + .abday_4 = "\xce\xa4\xce\xb5\xcf\x84", + .abday_5 = "\xce\xa0\xce\xad\xce\xbc", + .abday_6 = "\xce\xa0\xce\xb1\xcf\x81", + .abday_7 = "\xce\xa3\xce\xac\xce\xb2", + .mon_1 = "\xce\x99\xce\xb1\xce\xbd\xce\xbf\xcf\x85\xce\xac\xcf\x81\xce\xb9\xce\xbf\xcf\x82", + .mon_2 = "\xce\xa6\xce\xb5\xce\xb2\xcf\x81\xce\xbf\xcf\x85\xce\xac\xcf\x81\xce\xb9\xce\xbf\xcf\x82", + .mon_3 = "\xce\x9c\xce\xac\xcf\x81\xcf\x84\xce\xb9\xce\xbf\xcf\x82", + .mon_4 = "\xce\x91\xcf\x80\xcf\x81\xce\xaf\xce\xbb\xce\xb9\xce\xbf\xcf\x82", + .mon_5 = "\xce\x9c\xce\xac\xce\xb9\xce\xbf\xcf\x82", + .mon_6 = "\xce\x99\xce\xbf\xcf\x8d\xce\xbd\xce\xb9\xce\xbf\xcf\x82", + .mon_7 = "\xce\x99\xce\xbf\xcf\x8d\xce\xbb\xce\xb9\xce\xbf\xcf\x82", + .mon_8 = "\xce\x91\xcf\x8d\xce\xb3\xce\xbf\xcf\x85\xcf\x83\xcf\x84\xce\xbf\xcf\x82", + .mon_9 = "\xce\xa3\xce\xb5\xcf\x80\xcf\x84\xce\xad\xce\xbc\xce\xb2\xcf\x81\xce\xb9\xce\xbf\xcf\x82", + .mon_10 = "\xce\x9f\xce\xba\xcf\x84\xcf\x8e\xce\xb2\xcf\x81\xce\xb9\xce\xbf\xcf\x82", + .mon_11 = "\xce\x9d\xce\xbf\xce\xad\xce\xbc\xce\xb2\xcf\x81\xce\xb9\xce\xbf\xcf\x82", + .mon_12 = "\xce\x94\xce\xb5\xce\xba\xce\xad\xce\xbc\xce\xb2\xcf\x81\xce\xb9\xce\xbf\xcf\x82", + .abmon_1 = "\xce\x99\xce\xb1\xce\xbd", + .abmon_2 = "\xce\xa6\xce\xb5\xce\xb2", + .abmon_3 = "\xce\x9c\xce\xac\xcf\x81", + .abmon_4 = "\xce\x91\xcf\x80\xcf\x81", + .abmon_5 = "\xce\x9c\xce\xac\xce\xb9", + .abmon_6 = "\xce\x99\xce\xbf\xcf\x8d\xce\xbd", + .abmon_7 = "\xce\x99\xce\xbf\xcf\x8d\xce\xbb", + .abmon_8 = "\xce\x91\xcf\x8d\xce\xb3", + .abmon_9 = "\xce\xa3\xce\xb5\xcf\x80", + .abmon_10 = "\xce\x9f\xce\xba\xcf\x84", + .abmon_11 = "\xce\x9d\xce\xbf\xce\xad", + .abmon_12 = "\xce\x94\xce\xb5\xce\xba", + .yesexpr = "^[+1yY\xce\xbd\xce\x9d]", + .noexpr = "^[-0nN\xce\xbf\xce\x9f\xcf\x8c\xce\x8c]", }, { .locale_name = "gu_IN", @@ -1672,8 +1672,8 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .d_fmt = "%-d/%-m/%y", .t_fmt = "%I:%M:%S %p %Z", .t_fmt_ampm = "%I:%M:%S %p %Z", - .am_str = "\xe0\xaa\xb8\xe0\xaa\xb5\xe0\xaa\xbe\xe0\xaa\xb0\xe0\xab\x87", - .pm_str = "\xe0\xaa\xb8\xe0\xaa\xbe\xe0\xaa\x82\xe0\xaa\x9c\xe0\xab\x87", + .am_str = "AM", + .pm_str = "PM", .day_1 = "\xe0\xaa\xb0\xe0\xaa\xb5\xe0\xaa\xbf\xe0\xaa\xb5\xe0\xaa\xbe\xe0\xaa\xb0", .day_2 = "\xe0\xaa\xb8\xe0\xab\x8b\xe0\xaa\xae\xe0\xaa\xb5\xe0\xaa\xbe\xe0\xaa\xb0", .day_3 = "\xe0\xaa\xae\xe0\xaa\x82\xe0\xaa\x97\xe0\xaa\xb3\xe0\xaa\xb5\xe0\xaa\xbe\xe0\xaa\xb0", @@ -1719,53 +1719,53 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .locale_name = "he_IL", .radixchar = ".", .thousands_sep = ",", - .codeset = "ISO-8859-8", + .codeset = "UTF-8", .d_t_fmt = "%H:%M:%S %Y %b %d %a", .d_fmt = "%d/%m/%y", .t_fmt = "%H:%M:%S", .t_fmt_ampm = "%I:%M:%S %P", - .am_str = "AM", - .pm_str = "PM", - .day_1 = "\xf8\xe0\xf9\xe5\xef", - .day_2 = "\xf9\xf0\xe9", - .day_3 = "\xf9\xec\xe9\xf9\xe9", - .day_4 = "\xf8\xe1\xe9\xf2\xe9", - .day_5 = "\xe7\xee\xe9\xf9\xe9", - .day_6 = "\xf9\xe9\xf9\xe9", - .day_7 = "\xf9\xe1\xfa", - .abday_1 = "\xe0'", - .abday_2 = "\xe1'", - .abday_3 = "\xe2'", - .abday_4 = "\xe3'", - .abday_5 = "\xe4'", - .abday_6 = "\xe5'", - .abday_7 = "\xf9'", - .mon_1 = "\xe9\xf0\xe5\xe0\xf8", - .mon_2 = "\xf4\xe1\xf8\xe5\xe0\xf8", - .mon_3 = "\xee\xf8\xf5", - .mon_4 = "\xe0\xf4\xf8\xe9\xec", - .mon_5 = "\xee\xe0\xe9", - .mon_6 = "\xe9\xe5\xf0\xe9", - .mon_7 = "\xe9\xe5\xec\xe9", - .mon_8 = "\xe0\xe5\xe2\xe5\xf1\xe8", - .mon_9 = "\xf1\xf4\xe8\xee\xe1\xf8", - .mon_10 = "\xe0\xe5\xf7\xe8\xe5\xe1\xf8", - .mon_11 = "\xf0\xe5\xe1\xee\xe1\xf8", - .mon_12 = "\xe3\xf6\xee\xe1\xf8", - .abmon_1 = "\xe9\xf0\xe5", - .abmon_2 = "\xf4\xe1\xf8", - .abmon_3 = "\xee\xf8\xf5", - .abmon_4 = "\xe0\xf4\xf8", - .abmon_5 = "\xee\xe0\xe9", - .abmon_6 = "\xe9\xe5\xf0", - .abmon_7 = "\xe9\xe5\xec", - .abmon_8 = "\xe0\xe5\xe2", - .abmon_9 = "\xf1\xf4\xe8", - .abmon_10 = "\xe0\xe5\xf7", - .abmon_11 = "\xf0\xe5\xe1", - .abmon_12 = "\xe3\xf6\xee", - .yesexpr = "^[+1yY\xeb]", - .noexpr = "^[-0nN\xec]", + .am_str = "\xd7\x9c\xd7\xa4\xd7\xa0\xd7\x94\xd7\xb4\xd7\xa6", + .pm_str = "\xd7\x90\xd7\x97\xd7\x94\xd7\xb4\xd7\xa6", + .day_1 = "\xd7\x99\xd7\x95\xd7\x9d \xd7\xa8\xd7\x90\xd7\xa9\xd7\x95\xd7\x9f", + .day_2 = "\xd7\x99\xd7\x95\xd7\x9d \xd7\xa9\xd7\xa0\xd7\x99", + .day_3 = "\xd7\x99\xd7\x95\xd7\x9d \xd7\xa9\xd7\x9c\xd7\x99\xd7\xa9\xd7\x99", + .day_4 = "\xd7\x99\xd7\x95\xd7\x9d \xd7\xa8\xd7\x91\xd7\x99\xd7\xa2\xd7\x99", + .day_5 = "\xd7\x99\xd7\x95\xd7\x9d \xd7\x97\xd7\x9e\xd7\x99\xd7\xa9\xd7\x99", + .day_6 = "\xd7\x99\xd7\x95\xd7\x9d \xd7\xa9\xd7\x99\xd7\xa9\xd7\x99", + .day_7 = "\xd7\x99\xd7\x95\xd7\x9d \xd7\xa9\xd7\x91\xd7\xaa", + .abday_1 = "\xd7\x99\xd7\x95\xd7\x9d \xd7\x90\xd7\xb3", + .abday_2 = "\xd7\x99\xd7\x95\xd7\x9d \xd7\x91\xd7\xb3", + .abday_3 = "\xd7\x99\xd7\x95\xd7\x9d \xd7\x92\xd7\xb3", + .abday_4 = "\xd7\x99\xd7\x95\xd7\x9d \xd7\x93\xd7\xb3", + .abday_5 = "\xd7\x99\xd7\x95\xd7\x9d \xd7\x94\xd7\xb3", + .abday_6 = "\xd7\x99\xd7\x95\xd7\x9d \xd7\x95\xd7\xb3", + .abday_7 = "\xd7\xa9\xd7\x91\xd7\xaa", + .mon_1 = "\xd7\x99\xd7\xa0\xd7\x95\xd7\x90\xd7\xa8", + .mon_2 = "\xd7\xa4\xd7\x91\xd7\xa8\xd7\x95\xd7\x90\xd7\xa8", + .mon_3 = "\xd7\x9e\xd7\xa8\xd7\xa5", + .mon_4 = "\xd7\x90\xd7\xa4\xd7\xa8\xd7\x99\xd7\x9c", + .mon_5 = "\xd7\x9e\xd7\x90\xd7\x99", + .mon_6 = "\xd7\x99\xd7\x95\xd7\xa0\xd7\x99", + .mon_7 = "\xd7\x99\xd7\x95\xd7\x9c\xd7\x99", + .mon_8 = "\xd7\x90\xd7\x95\xd7\x92\xd7\x95\xd7\xa1\xd7\x98", + .mon_9 = "\xd7\xa1\xd7\xa4\xd7\x98\xd7\x9e\xd7\x91\xd7\xa8", + .mon_10 = "\xd7\x90\xd7\x95\xd7\xa7\xd7\x98\xd7\x95\xd7\x91\xd7\xa8", + .mon_11 = "\xd7\xa0\xd7\x95\xd7\x91\xd7\x9e\xd7\x91\xd7\xa8", + .mon_12 = "\xd7\x93\xd7\xa6\xd7\x9e\xd7\x91\xd7\xa8", + .abmon_1 = "\xd7\x99\xd7\xa0\xd7\x95\xd7\xb3", + .abmon_2 = "\xd7\xa4\xd7\x91\xd7\xa8\xd7\xb3", + .abmon_3 = "\xd7\x9e\xd7\xa8\xd7\xa5", + .abmon_4 = "\xd7\x90\xd7\xa4\xd7\xa8\xd7\xb3", + .abmon_5 = "\xd7\x9e\xd7\x90\xd7\x99", + .abmon_6 = "\xd7\x99\xd7\x95\xd7\xa0\xd7\x99", + .abmon_7 = "\xd7\x99\xd7\x95\xd7\x9c\xd7\x99", + .abmon_8 = "\xd7\x90\xd7\x95\xd7\x92\xd7\xb3", + .abmon_9 = "\xd7\xa1\xd7\xa4\xd7\x98\xd7\xb3", + .abmon_10 = "\xd7\x90\xd7\x95\xd7\xa7\xd7\xb3", + .abmon_11 = "\xd7\xa0\xd7\x95\xd7\x91\xd7\xb3", + .abmon_12 = "\xd7\x93\xd7\xa6\xd7\x9e\xd7\xb3", + .yesexpr = "^[+1yY\xd7\x9b]", + .noexpr = "^[-0nN\xd7\x9c]", }, { .locale_name = "hi_IN", @@ -1776,8 +1776,8 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .d_fmt = "%-d/%-m/%y", .t_fmt = "%I:%M:%S %p %Z", .t_fmt_ampm = "%I:%M:%S %p %Z", - .am_str = "\xe0\xa4\xaa\xe0\xa5\x82\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\xb9\xe0\xa5\x8d\xe0\xa4\xa8", - .pm_str = "\xe0\xa4\x85\xe0\xa4\xaa\xe0\xa4\xb0\xe0\xa4\xbe\xe0\xa4\xb9\xe0\xa5\x8d\xe0\xa4\xa8", + .am_str = "am", + .pm_str = "pm", .day_1 = "\xe0\xa4\xb0\xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\xb0", .day_2 = "\xe0\xa4\xb8\xe0\xa5\x8b\xe0\xa4\xae\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\xb0", .day_3 = "\xe0\xa4\xae\xe0\xa4\x82\xe0\xa4\x97\xe0\xa4\xb2\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\xb0", @@ -1822,52 +1822,52 @@ constexpr LanginfoTestData kLanginfoTestData[] = { { .locale_name = "hu_HU", .radixchar = ",", - .thousands_sep = ".", - .codeset = "ISO-8859-2", + .thousands_sep = "\xc2\xa0", + .codeset = "UTF-8", .d_t_fmt = "%Y. %b. %-e., %A, %H:%M:%S %Z", .d_fmt = "%Y-%m-%d", .t_fmt = "%H:%M:%S", .t_fmt_ampm = "%H:%M:%S", - .am_str = "", - .pm_str = "", - .day_1 = "vas\xe1rnap", - .day_2 = "h\xe9tf\xf5", + .am_str = "de.", + .pm_str = "du.", + .day_1 = "vas\xc3\xa1rnap", + .day_2 = "h\xc3\xa9tf\xc5\x91", .day_3 = "kedd", .day_4 = "szerda", - .day_5 = "cs\xfct\xf6rt\xf6k", - .day_6 = "p\xe9ntek", + .day_5 = "cs\xc3\xbct\xc3\xb6rt\xc3\xb6k", + .day_6 = "p\xc3\xa9ntek", .day_7 = "szombat", - .abday_1 = "v", - .abday_2 = "h", - .abday_3 = "k", - .abday_4 = "sze", - .abday_5 = "cs", - .abday_6 = "p", - .abday_7 = "szo", - .mon_1 = "janu\xe1r", - .mon_2 = "febru\xe1r", - .mon_3 = "m\xe1rcius", - .mon_4 = "\xe1prilis", - .mon_5 = "m\xe1jus", - .mon_6 = "j\xfanius", - .mon_7 = "j\xfalius", + .abday_1 = "V", + .abday_2 = "H", + .abday_3 = "K", + .abday_4 = "Sze", + .abday_5 = "Cs", + .abday_6 = "P", + .abday_7 = "Szo", + .mon_1 = "janu\xc3\xa1r", + .mon_2 = "febru\xc3\xa1r", + .mon_3 = "m\xc3\xa1rcius", + .mon_4 = "\xc3\xa1prilis", + .mon_5 = "m\xc3\xa1jus", + .mon_6 = "j\xc3\xbanius", + .mon_7 = "j\xc3\xbalius", .mon_8 = "augusztus", .mon_9 = "szeptember", - .mon_10 = "okt\xf3""ber", + .mon_10 = "okt\xc3\xb3""ber", .mon_11 = "november", .mon_12 = "december", - .abmon_1 = "jan", - .abmon_2 = "febr", - .abmon_3 = "m\xe1rc", - .abmon_4 = "\xe1pr", - .abmon_5 = "m\xe1j", - .abmon_6 = "j\xfan", - .abmon_7 = "j\xfal", - .abmon_8 = "aug", - .abmon_9 = "szept", - .abmon_10 = "okt", - .abmon_11 = "nov", - .abmon_12 = "dec", + .abmon_1 = "jan.", + .abmon_2 = "febr.", + .abmon_3 = "m\xc3\xa1rc.", + .abmon_4 = "\xc3\xa1pr.", + .abmon_5 = "m\xc3\xa1j.", + .abmon_6 = "j\xc3\xban.", + .abmon_7 = "j\xc3\xbal.", + .abmon_8 = "aug.", + .abmon_9 = "szept.", + .abmon_10 = "okt.", + .abmon_11 = "nov.", + .abmon_12 = "dec.", .yesexpr = "^[+1IiYy]", .noexpr = "^[-0nN]", }, @@ -1875,51 +1875,51 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .locale_name = "is_IS", .radixchar = ",", .thousands_sep = ".", - .codeset = "ISO-8859-1", + .codeset = "UTF-8", .d_t_fmt = "%a %e.%b %Y, %T", .d_fmt = "%a %e.%b %Y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "fh", - .pm_str = "eh", + .am_str = "f.h.", + .pm_str = "e.h.", .day_1 = "sunnudagur", - .day_2 = "m\xe1nudagur", - .day_3 = "\xferi\xf0judagur", - .day_4 = "mi\xf0vikudagur", + .day_2 = "m\xc3\xa1nudagur", + .day_3 = "\xc3\xberi\xc3\xb0judagur", + .day_4 = "mi\xc3\xb0vikudagur", .day_5 = "fimmtudagur", - .day_6 = "f\xf6studagur", + .day_6 = "f\xc3\xb6studagur", .day_7 = "laugardagur", - .abday_1 = "sun", - .abday_2 = "m\xe1n", - .abday_3 = "\xferi", - .abday_4 = "mi\xf0", - .abday_5 = "fim", - .abday_6 = "f\xf6s", - .abday_7 = "lau", - .mon_1 = "jan\xfa""ar", - .mon_2 = "febr\xfa""ar", + .abday_1 = "sun.", + .abday_2 = "m\xc3\xa1n.", + .abday_3 = "\xc3\xberi.", + .abday_4 = "mi\xc3\xb0.", + .abday_5 = "fim.", + .abday_6 = "f\xc3\xb6s.", + .abday_7 = "lau.", + .mon_1 = "jan\xc3\xba""ar", + .mon_2 = "febr\xc3\xba""ar", .mon_3 = "mars", - .mon_4 = "apr\xedl", - .mon_5 = "ma\xed", - .mon_6 = "j\xfan\xed", - .mon_7 = "j\xfal\xed", - .mon_8 = "\xe1g\xfast", + .mon_4 = "apr\xc3\xadl", + .mon_5 = "ma\xc3\xad", + .mon_6 = "j\xc3\xban\xc3\xad", + .mon_7 = "j\xc3\xbal\xc3\xad", + .mon_8 = "\xc3\xa1g\xc3\xbast", .mon_9 = "september", - .mon_10 = "okt\xf3""ber", - .mon_11 = "n\xf3vember", + .mon_10 = "okt\xc3\xb3""ber", + .mon_11 = "n\xc3\xb3vember", .mon_12 = "desember", - .abmon_1 = "jan", - .abmon_2 = "feb", - .abmon_3 = "mar", - .abmon_4 = "apr", - .abmon_5 = "ma\xed", - .abmon_6 = "j\xfan", - .abmon_7 = "j\xfal", - .abmon_8 = "\xe1g\xfa", - .abmon_9 = "sep", - .abmon_10 = "okt", - .abmon_11 = "n\xf3v", - .abmon_12 = "des", + .abmon_1 = "jan.", + .abmon_2 = "feb.", + .abmon_3 = "mar.", + .abmon_4 = "apr.", + .abmon_5 = "ma\xc3\xad", + .abmon_6 = "j\xc3\xban.", + .abmon_7 = "j\xc3\xbal.", + .abmon_8 = "\xc3\xa1g\xc3\xba.", + .abmon_9 = "sep.", + .abmon_10 = "okt.", + .abmon_11 = "n\xc3\xb3v.", + .abmon_12 = "des.", .yesexpr = "^[+1jJyY]", .noexpr = "^[-0nN]", }, @@ -1927,7 +1927,7 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .locale_name = "id_ID", .radixchar = ",", .thousands_sep = ".", - .codeset = "ISO-8859-1", + .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %T", .d_fmt = "%d/%m/%y", .t_fmt = "%T", @@ -1979,19 +1979,19 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .locale_name = "it_IT", .radixchar = ",", .thousands_sep = ".", - .codeset = "ISO-8859-1", + .codeset = "UTF-8", .d_t_fmt = "%a %-d %b %Y, %T", .d_fmt = "%d/%m/%Y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", + .am_str = "AM", + .pm_str = "PM", .day_1 = "domenica", - .day_2 = "luned\xec", - .day_3 = "marted\xec", - .day_4 = "mercoled\xec", - .day_5 = "gioved\xec", - .day_6 = "venerd\xec", + .day_2 = "luned\xc3\xac", + .day_3 = "marted\xc3\xac", + .day_4 = "mercoled\xc3\xac", + .day_5 = "gioved\xc3\xac", + .day_6 = "venerd\xc3\xac", .day_7 = "sabato", .abday_1 = "dom", .abday_2 = "lun", @@ -2031,53 +2031,53 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .locale_name = "ja_JP", .radixchar = ".", .thousands_sep = ",", - .codeset = "EUC-JP", - .d_t_fmt = "%Y\xc7\xaf%m\xb7\xee%d\xc6\xfc %H\xbb\xfe%M\xca\xac%S\xc9\xc3", - .d_fmt = "%Y\xc7\xaf%m\xb7\xee%d\xc6\xfc", - .t_fmt = "%H\xbb\xfe%M\xca\xac%S\xc9\xc3", - .t_fmt_ampm = "%p%I\xbb\xfe%M\xca\xac%S\xc9\xc3", - .am_str = "\xb8\xe1\xc1\xb0", - .pm_str = "\xb8\xe1\xb8\xe5", - .day_1 = "\xc6\xfc\xcd\xcb\xc6\xfc", - .day_2 = "\xb7\xee\xcd\xcb\xc6\xfc", - .day_3 = "\xb2\xd0\xcd\xcb\xc6\xfc", - .day_4 = "\xbf\xe5\xcd\xcb\xc6\xfc", - .day_5 = "\xcc\xda\xcd\xcb\xc6\xfc", - .day_6 = "\xb6\xe2\xcd\xcb\xc6\xfc", - .day_7 = "\xc5\xda\xcd\xcb\xc6\xfc", - .abday_1 = "\xc6\xfc", - .abday_2 = "\xb7\xee", - .abday_3 = "\xb2\xd0", - .abday_4 = "\xbf\xe5", - .abday_5 = "\xcc\xda", - .abday_6 = "\xb6\xe2", - .abday_7 = "\xc5\xda", - .mon_1 = "1\xb7\xee", - .mon_2 = "2\xb7\xee", - .mon_3 = "3\xb7\xee", - .mon_4 = "4\xb7\xee", - .mon_5 = "5\xb7\xee", - .mon_6 = "6\xb7\xee", - .mon_7 = "7\xb7\xee", - .mon_8 = "8\xb7\xee", - .mon_9 = "9\xb7\xee", - .mon_10 = "10\xb7\xee", - .mon_11 = "11\xb7\xee", - .mon_12 = "12\xb7\xee", - .abmon_1 = " 1\xb7\xee", - .abmon_2 = " 2\xb7\xee", - .abmon_3 = " 3\xb7\xee", - .abmon_4 = " 4\xb7\xee", - .abmon_5 = " 5\xb7\xee", - .abmon_6 = " 6\xb7\xee", - .abmon_7 = " 7\xb7\xee", - .abmon_8 = " 8\xb7\xee", - .abmon_9 = " 9\xb7\xee", - .abmon_10 = "10\xb7\xee", - .abmon_11 = "11\xb7\xee", - .abmon_12 = "12\xb7\xee", - .yesexpr = "^([+1yY\xa3\xf9\xa3\xd9]|\xa4\xcf\xa4\xa4|\xa5\xcf\xa5\xa4)", - .noexpr = "^([-0nN\xa3\xee\xa3\xce]|\xa4\xa4\xa4\xa4\xa4\xa8|\xa5\xa4\xa5\xa4\xa5\xa8)", + .codeset = "UTF-8", + .d_t_fmt = "%Y\xe5\xb9\xb4%m\xe6\x9c\x88%d\xe6\x97\xa5 %H\xe6\x99\x82%M\xe5\x88\x86%S\xe7\xa7\x92", + .d_fmt = "%Y\xe5\xb9\xb4%m\xe6\x9c\x88%d\xe6\x97\xa5", + .t_fmt = "%H\xe6\x99\x82%M\xe5\x88\x86%S\xe7\xa7\x92", + .t_fmt_ampm = "%p%I\xe6\x99\x82%M\xe5\x88\x86%S\xe7\xa7\x92", + .am_str = "\xe5\x8d\x88\xe5\x89\x8d", + .pm_str = "\xe5\x8d\x88\xe5\xbe\x8c", + .day_1 = "\xe6\x97\xa5\xe6\x9b\x9c\xe6\x97\xa5", + .day_2 = "\xe6\x9c\x88\xe6\x9b\x9c\xe6\x97\xa5", + .day_3 = "\xe7\x81\xab\xe6\x9b\x9c\xe6\x97\xa5", + .day_4 = "\xe6\xb0\xb4\xe6\x9b\x9c\xe6\x97\xa5", + .day_5 = "\xe6\x9c\xa8\xe6\x9b\x9c\xe6\x97\xa5", + .day_6 = "\xe9\x87\x91\xe6\x9b\x9c\xe6\x97\xa5", + .day_7 = "\xe5\x9c\x9f\xe6\x9b\x9c\xe6\x97\xa5", + .abday_1 = "\xe6\x97\xa5", + .abday_2 = "\xe6\x9c\x88", + .abday_3 = "\xe7\x81\xab", + .abday_4 = "\xe6\xb0\xb4", + .abday_5 = "\xe6\x9c\xa8", + .abday_6 = "\xe9\x87\x91", + .abday_7 = "\xe5\x9c\x9f", + .mon_1 = "1\xe6\x9c\x88", + .mon_2 = "2\xe6\x9c\x88", + .mon_3 = "3\xe6\x9c\x88", + .mon_4 = "4\xe6\x9c\x88", + .mon_5 = "5\xe6\x9c\x88", + .mon_6 = "6\xe6\x9c\x88", + .mon_7 = "7\xe6\x9c\x88", + .mon_8 = "8\xe6\x9c\x88", + .mon_9 = "9\xe6\x9c\x88", + .mon_10 = "10\xe6\x9c\x88", + .mon_11 = "11\xe6\x9c\x88", + .mon_12 = "12\xe6\x9c\x88", + .abmon_1 = "1\xe6\x9c\x88", + .abmon_2 = "2\xe6\x9c\x88", + .abmon_3 = "3\xe6\x9c\x88", + .abmon_4 = "4\xe6\x9c\x88", + .abmon_5 = "5\xe6\x9c\x88", + .abmon_6 = "6\xe6\x9c\x88", + .abmon_7 = "7\xe6\x9c\x88", + .abmon_8 = "8\xe6\x9c\x88", + .abmon_9 = "9\xe6\x9c\x88", + .abmon_10 = "10\xe6\x9c\x88", + .abmon_11 = "11\xe6\x9c\x88", + .abmon_12 = "12\xe6\x9c\x88", + .yesexpr = "^([+1yY\xef\xbd\x99\xef\xbc\xb9]|\xe3\x81\xaf\xe3\x81\x84|\xe3\x83\x8f\xe3\x82\xa4)", + .noexpr = "^([-0nN\xef\xbd\x8e\xef\xbc\xae]|\xe3\x81\x84\xe3\x81\x84\xe3\x81\x88|\xe3\x82\xa4\xe3\x82\xa4\xe3\x82\xa8)", }, { .locale_name = "kn_IN", @@ -2090,20 +2090,20 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .t_fmt_ampm = "%I:%M:%S %p %Z", .am_str = "\xe0\xb2\xaa\xe0\xb3\x82\xe0\xb2\xb0\xe0\xb3\x8d\xe0\xb2\xb5\xe0\xb2\xbe\xe0\xb2\xb9\xe0\xb3\x8d\xe0\xb2\xa8", .pm_str = "\xe0\xb2\x85\xe0\xb2\xaa\xe0\xb2\xb0\xe0\xb2\xbe\xe0\xb2\xb9\xe0\xb3\x8d\xe0\xb2\xa8", - .day_1 = "\xe0\xb2\xb0\xe0\xb2\xb5\xe0\xb2\xbf\xe0\xb2\xb5\xe0\xb2\xbe\xe0\xb2\xb0", + .day_1 = "\xe0\xb2\xad\xe0\xb2\xbe\xe0\xb2\xa8\xe0\xb3\x81\xe0\xb2\xb5\xe0\xb2\xbe\xe0\xb2\xb0", .day_2 = "\xe0\xb2\xb8\xe0\xb3\x8b\xe0\xb2\xae\xe0\xb2\xb5\xe0\xb2\xbe\xe0\xb2\xb0", .day_3 = "\xe0\xb2\xae\xe0\xb2\x82\xe0\xb2\x97\xe0\xb2\xb3\xe0\xb2\xb5\xe0\xb2\xbe\xe0\xb2\xb0", .day_4 = "\xe0\xb2\xac\xe0\xb3\x81\xe0\xb2\xa7\xe0\xb2\xb5\xe0\xb2\xbe\xe0\xb2\xb0", .day_5 = "\xe0\xb2\x97\xe0\xb3\x81\xe0\xb2\xb0\xe0\xb3\x81\xe0\xb2\xb5\xe0\xb2\xbe\xe0\xb2\xb0", .day_6 = "\xe0\xb2\xb6\xe0\xb3\x81\xe0\xb2\x95\xe0\xb3\x8d\xe0\xb2\xb0\xe0\xb2\xb5\xe0\xb2\xbe\xe0\xb2\xb0", .day_7 = "\xe0\xb2\xb6\xe0\xb2\xa8\xe0\xb2\xbf\xe0\xb2\xb5\xe0\xb2\xbe\xe0\xb2\xb0", - .abday_1 = "\xe0\xb2\xb0", - .abday_2 = "\xe0\xb2\xb8\xe0\xb3\x8b", - .abday_3 = "\xe0\xb2\xae\xe0\xb2\x82", - .abday_4 = "\xe0\xb2\xac\xe0\xb3\x81", - .abday_5 = "\xe0\xb2\x97\xe0\xb3\x81", - .abday_6 = "\xe0\xb2\xb6\xe0\xb3\x81", - .abday_7 = "\xe0\xb2\xb6", + .abday_1 = "\xe0\xb2\xad\xe0\xb2\xbe\xe0\xb2\xa8\xe0\xb3\x81", + .abday_2 = "\xe0\xb2\xb8\xe0\xb3\x8b\xe0\xb2\xae", + .abday_3 = "\xe0\xb2\xae\xe0\xb2\x82\xe0\xb2\x97\xe0\xb2\xb3", + .abday_4 = "\xe0\xb2\xac\xe0\xb3\x81\xe0\xb2\xa7", + .abday_5 = "\xe0\xb2\x97\xe0\xb3\x81\xe0\xb2\xb0\xe0\xb3\x81", + .abday_6 = "\xe0\xb2\xb6\xe0\xb3\x81\xe0\xb2\x95\xe0\xb3\x8d\xe0\xb2\xb0", + .abday_7 = "\xe0\xb2\xb6\xe0\xb2\xa8\xe0\xb2\xbf", .mon_1 = "\xe0\xb2\x9c\xe0\xb2\xa8\xe0\xb2\xb5\xe0\xb2\xb0\xe0\xb2\xbf", .mon_2 = "\xe0\xb2\xab\xe0\xb3\x86\xe0\xb2\xac\xe0\xb3\x8d\xe0\xb2\xb0\xe0\xb2\xb5\xe0\xb2\xb0\xe0\xb2\xbf", .mon_3 = "\xe0\xb2\xae\xe0\xb2\xbe\xe0\xb2\xb0\xe0\xb3\x8d\xe0\xb2\x9a\xe0\xb3\x8d", @@ -2123,7 +2123,7 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .abmon_5 = "\xe0\xb2\xae\xe0\xb3\x87", .abmon_6 = "\xe0\xb2\x9c\xe0\xb3\x82\xe0\xb2\xa8\xe0\xb3\x8d", .abmon_7 = "\xe0\xb2\x9c\xe0\xb3\x81\xe0\xb2\xb2\xe0\xb3\x88", - .abmon_8 = "\xe0\xb2\x86", + .abmon_8 = "\xe0\xb2\x86\xe0\xb2\x97", .abmon_9 = "\xe0\xb2\xb8\xe0\xb3\x86\xe0\xb2\xaa\xe0\xb3\x8d\xe0\xb2\x9f\xe0\xb3\x86\xe0\xb2\x82", .abmon_10 = "\xe0\xb2\x85\xe0\xb2\x95\xe0\xb3\x8d\xe0\xb2\x9f\xe0\xb3\x8b", .abmon_11 = "\xe0\xb2\xa8\xe0\xb2\xb5\xe0\xb3\x86\xe0\xb2\x82", @@ -2134,54 +2134,54 @@ constexpr LanginfoTestData kLanginfoTestData[] = { { .locale_name = "kk_KZ", .radixchar = ",", - .thousands_sep = "\xa0", - .codeset = "PT154", + .thousands_sep = "\xc2\xa0", + .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %T", .d_fmt = "%d.%m.%Y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", - .day_1 = "\xc6\xe5\xea\xf1\xe5\xed\xe1\xb3", - .day_2 = "\xc4\x89\xe9\xf1\xe5\xed\xe1\xb3", - .day_3 = "\xd1\xe5\xe9\xf1\xe5\xed\xe1\xb3", - .day_4 = "\xd1\xba\xf0\xf1\xe5\xed\xe1\xb3", - .day_5 = "\xc1\xe5\xe9\xf1\xe5\xed\xe1\xb3", - .day_6 = "\xc6\xb1\xec\xe0", - .day_7 = "\xd1\xe5\xed\xe1\xb3", - .abday_1 = "\xc6\xea", - .abday_2 = "\xc4\xf1", - .abday_3 = "\xd1\xf1", - .abday_4 = "\xd1\xf0", - .abday_5 = "\xc1\xf1", - .abday_6 = "\xc6\xec", - .abday_7 = "\xd1\xe1", - .mon_1 = "\x8d\xe0\x9c\xf2\xe0\xf0", - .mon_2 = "\xc0\x9d\xef\xe0\xed", - .mon_3 = "\xcd\xe0\xf3\xf0\xfb\xe7", - .mon_4 = "\xd1\xba\xf3\xb3\xf0", - .mon_5 = "\xcc\xe0\xec\xfb\xf0", - .mon_6 = "\xcc\xe0\xf3\xf1\xfb\xec", - .mon_7 = "\xd8\xb3\xeb\xe4\xe5", - .mon_8 = "\xd2\xe0\xec\xfb\xe7", - .mon_9 = "\x8d\xfb\xf0\xea\x89\xe9\xe5\xea", - .mon_10 = "\x8d\xe0\xe7\xe0\xed", - .mon_11 = "\x8d\xe0\xf0\xe0\xf8\xe0", - .mon_12 = "\xc6\xe5\xeb\xf2\xee\x9d\xf1\xe0\xed", - .abmon_1 = "\x8d\xe0\x9c", - .abmon_2 = "\xc0\x9d\xef", - .abmon_3 = "\xcd\xe0\xf3", - .abmon_4 = "\xd1\xba\xf3", - .abmon_5 = "\xcc\xe0\xec", - .abmon_6 = "\xcc\xe0\xf3", - .abmon_7 = "\xd8\xb3\xeb", - .abmon_8 = "\xd2\xe0\xec", - .abmon_9 = "\x8d\xfb\xf0", - .abmon_10 = "\x8d\xe0\xe7", - .abmon_11 = "\x8d\xe0\xf0", - .abmon_12 = "\xc6\xe5\xeb", - .yesexpr = "^[+1yY\xc8\xe8]", - .noexpr = "^[-0nN\xc6\xe6N]", + .am_str = "AM", + .pm_str = "PM", + .day_1 = "\xd0\xb6\xd0\xb5\xd0\xba\xd1\x81\xd0\xb5\xd0\xbd\xd0\xb1\xd1\x96", + .day_2 = "\xd0\xb4\xd2\xaf\xd0\xb9\xd1\x81\xd0\xb5\xd0\xbd\xd0\xb1\xd1\x96", + .day_3 = "\xd1\x81\xd0\xb5\xd0\xb9\xd1\x81\xd0\xb5\xd0\xbd\xd0\xb1\xd1\x96", + .day_4 = "\xd1\x81\xd3\x99\xd1\x80\xd1\x81\xd0\xb5\xd0\xbd\xd0\xb1\xd1\x96", + .day_5 = "\xd0\xb1\xd0\xb5\xd0\xb9\xd1\x81\xd0\xb5\xd0\xbd\xd0\xb1\xd1\x96", + .day_6 = "\xd0\xb6\xd2\xb1\xd0\xbc\xd0\xb0", + .day_7 = "\xd1\x81\xd0\xb5\xd0\xbd\xd0\xb1\xd1\x96", + .abday_1 = "\xd0\xb6\xd1\x81", + .abday_2 = "\xd0\xb4\xd1\x81", + .abday_3 = "\xd1\x81\xd1\x81", + .abday_4 = "\xd1\x81\xd1\x80", + .abday_5 = "\xd0\xb1\xd1\x81", + .abday_6 = "\xd0\xb6\xd0\xbc", + .abday_7 = "\xd1\x81\xd0\xb1", + .mon_1 = "\xd2\x9a\xd0\xb0\xd2\xa3\xd1\x82\xd0\xb0\xd1\x80", + .mon_2 = "\xd0\x90\xd2\x9b\xd0\xbf\xd0\xb0\xd0\xbd", + .mon_3 = "\xd0\x9d\xd0\xb0\xd1\x83\xd1\x80\xd1\x8b\xd0\xb7", + .mon_4 = "\xd0\xa1\xd3\x99\xd1\x83\xd1\x96\xd1\x80", + .mon_5 = "\xd0\x9c\xd0\xb0\xd0\xbc\xd1\x8b\xd1\x80", + .mon_6 = "\xd0\x9c\xd0\xb0\xd1\x83\xd1\x81\xd1\x8b\xd0\xbc", + .mon_7 = "\xd0\xa8\xd1\x96\xd0\xbb\xd0\xb4\xd0\xb5", + .mon_8 = "\xd0\xa2\xd0\xb0\xd0\xbc\xd1\x8b\xd0\xb7", + .mon_9 = "\xd2\x9a\xd1\x8b\xd1\x80\xd0\xba\xd2\xaf\xd0\xb9\xd0\xb5\xd0\xba", + .mon_10 = "\xd2\x9a\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xbd", + .mon_11 = "\xd2\x9a\xd0\xb0\xd1\x80\xd0\xb0\xd1\x88\xd0\xb0", + .mon_12 = "\xd0\x96\xd0\xb5\xd0\xbb\xd1\x82\xd0\xbe\xd2\x9b\xd1\x81\xd0\xb0\xd0\xbd", + .abmon_1 = "\xd2\x9b\xd0\xb0\xd2\xa3.", + .abmon_2 = "\xd0\xb0\xd2\x9b\xd0\xbf.", + .abmon_3 = "\xd0\xbd\xd0\xb0\xd1\x83.", + .abmon_4 = "\xd1\x81\xd3\x99\xd1\x83.", + .abmon_5 = "\xd0\xbc\xd0\xb0\xd0\xbc.", + .abmon_6 = "\xd0\xbc\xd0\xb0\xd1\x83.", + .abmon_7 = "\xd1\x88\xd1\x96\xd0\xbb.", + .abmon_8 = "\xd1\x82\xd0\xb0\xd0\xbc.", + .abmon_9 = "\xd2\x9b\xd1\x8b\xd1\x80.", + .abmon_10 = "\xd2\x9b\xd0\xb0\xd0\xb7.", + .abmon_11 = "\xd2\x9b\xd0\xb0\xd1\x80.", + .abmon_12 = "\xd0\xb6\xd0\xb5\xd0\xbb.", + .yesexpr = "^[+1yY\xd0\x98\xd0\xb8]", + .noexpr = "^[-0nN\xd0\x96\xd0\xb6N]", }, { .locale_name = "km_KH", @@ -2192,22 +2192,22 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .d_fmt = "%e %B %Y", .t_fmt = "%H:%M:%S", .t_fmt_ampm = "%I:%M:%S %p", - .am_str = "\xe1\x9e\x96\xe1\x9f\x92\xe1\x9e\x9a\xe1\x9e\xb9\xe1\x9e\x80", - .pm_str = "\xe1\x9e\x9b\xe1\x9f\x92\xe1\x9e\x84\xe1\x9e\xb6\xe1\x9e\x85", - .day_1 = "\xe1\x9e\x90\xe1\x9f\x92\xe1\x9e\x84\xe1\x9f\x83\xe2\x80\x8b\xe1\x9e\xa2\xe1\x9e\xb6\xe1\x9e\x91\xe1\x9e\xb7\xe1\x9e\x8f\xe1\x9f\x92\xe1\x9e\x99", - .day_2 = "\xe1\x9e\x90\xe1\x9f\x92\xe1\x9e\x84\xe1\x9f\x83\xe2\x80\x8b\xe1\x9e\x85\xe1\x9f\x90\xe1\x9e\x93\xe1\x9f\x92\xe1\x9e\x91", - .day_3 = "\xe1\x9e\x90\xe1\x9f\x92\xe1\x9e\x84\xe1\x9f\x83\xe2\x80\x8b\xe1\x9e\xa2\xe1\x9e\x84\xe1\x9f\x92\xe1\x9e\x82\xe1\x9e\xb6\xe1\x9e\x9a", - .day_4 = "\xe1\x9e\x90\xe1\x9f\x92\xe1\x9e\x84\xe1\x9f\x83\xe2\x80\x8b\xe1\x9e\x96\xe1\x9e\xbb\xe1\x9e\x92", - .day_5 = "\xe1\x9e\x90\xe1\x9f\x92\xe1\x9e\x84\xe1\x9f\x83\xe2\x80\x8b\xe1\x9e\x96\xe1\x9f\x92\xe1\x9e\x9a\xe1\x9e\xa0\xe1\x9e\x9f\xe1\x9f\x92\xe1\x9e\x94\xe1\x9e\x8f\xe1\x9e\xb7\xe1\x9f\x8d", - .day_6 = "\xe1\x9e\x90\xe1\x9f\x92\xe1\x9e\x84\xe1\x9f\x83\xe2\x80\x8b\xe1\x9e\x9f\xe1\x9e\xbb\xe1\x9e\x80\xe1\x9f\x92\xe1\x9e\x9a", - .day_7 = "\xe1\x9e\x90\xe1\x9f\x92\xe1\x9e\x84\xe1\x9f\x83\xe2\x80\x8b\xe1\x9e\x9f\xe1\x9f\x85\xe1\x9e\x9a\xe1\x9f\x8d", - .abday_1 = "\xe1\x9e\xa2\xe1\x9e\xb6", - .abday_2 = "\xe1\x9e\x85", - .abday_3 = "\xe1\x9e\xa2", - .abday_4 = "\xe1\x9e\x96\xe1\x9e\xbb", - .abday_5 = "\xe1\x9e\x96\xe1\x9f\x92\xe1\x9e\x9a", - .abday_6 = "\xe1\x9e\x9f\xe1\x9e\xbb", - .abday_7 = "\xe1\x9e\x9f", + .am_str = "AM", + .pm_str = "PM", + .day_1 = "\xe1\x9e\xa2\xe1\x9e\xb6\xe1\x9e\x91\xe1\x9e\xb7\xe1\x9e\x8f\xe1\x9f\x92\xe1\x9e\x99", + .day_2 = "\xe1\x9e\x85\xe1\x9e\x93\xe1\x9f\x92\xe1\x9e\x91", + .day_3 = "\xe1\x9e\xa2\xe1\x9e\x84\xe1\x9f\x92\xe1\x9e\x82\xe1\x9e\xb6\xe1\x9e\x9a", + .day_4 = "\xe1\x9e\x96\xe1\x9e\xbb\xe1\x9e\x92", + .day_5 = "\xe1\x9e\x96\xe1\x9f\x92\xe1\x9e\x9a\xe1\x9e\xa0\xe1\x9e\x9f\xe1\x9f\x92\xe1\x9e\x94\xe1\x9e\x8f\xe1\x9e\xb7\xe1\x9f\x8d", + .day_6 = "\xe1\x9e\x9f\xe1\x9e\xbb\xe1\x9e\x80\xe1\x9f\x92\xe1\x9e\x9a", + .day_7 = "\xe1\x9e\x9f\xe1\x9f\x85\xe1\x9e\x9a\xe1\x9f\x8d", + .abday_1 = "\xe1\x9e\xa2\xe1\x9e\xb6\xe1\x9e\x91\xe1\x9e\xb7\xe1\x9e\x8f\xe1\x9f\x92\xe1\x9e\x99", + .abday_2 = "\xe1\x9e\x85\xe1\x9e\x93\xe1\x9f\x92\xe1\x9e\x91", + .abday_3 = "\xe1\x9e\xa2\xe1\x9e\x84\xe1\x9f\x92\xe1\x9e\x82\xe1\x9e\xb6\xe1\x9e\x9a", + .abday_4 = "\xe1\x9e\x96\xe1\x9e\xbb\xe1\x9e\x92", + .abday_5 = "\xe1\x9e\x96\xe1\x9f\x92\xe1\x9e\x9a\xe1\x9e\xa0", + .abday_6 = "\xe1\x9e\x9f\xe1\x9e\xbb\xe1\x9e\x80\xe1\x9f\x92\xe1\x9e\x9a", + .abday_7 = "\xe1\x9e\x9f\xe1\x9f\x85\xe1\x9e\x9a\xe1\x9f\x8d", .mon_1 = "\xe1\x9e\x98\xe1\x9e\x80\xe1\x9e\x9a\xe1\x9e\xb6", .mon_2 = "\xe1\x9e\x80\xe1\x9e\xbb\xe1\x9e\x98\xe1\x9f\x92\xe1\x9e\x97\xe1\x9f\x88", .mon_3 = "\xe1\x9e\x98\xe1\x9e\xb8\xe1\x9e\x93\xe1\x9e\xb6", @@ -2220,18 +2220,18 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .mon_10 = "\xe1\x9e\x8f\xe1\x9e\xbb\xe1\x9e\x9b\xe1\x9e\xb6", .mon_11 = "\xe1\x9e\x9c\xe1\x9e\xb7\xe1\x9e\x85\xe1\x9f\x92\xe1\x9e\x86\xe1\x9e\xb7\xe1\x9e\x80\xe1\x9e\xb6", .mon_12 = "\xe1\x9e\x92\xe1\x9f\x92\xe1\x9e\x93\xe1\x9e\xbc", - .abmon_1 = "\xe1\x9f\xa1", - .abmon_2 = "\xe1\x9f\xa2", - .abmon_3 = "\xe1\x9f\xa3", - .abmon_4 = "\xe1\x9f\xa4", - .abmon_5 = "\xe1\x9f\xa5", - .abmon_6 = "\xe1\x9f\xa6", - .abmon_7 = "\xe1\x9f\xa7", - .abmon_8 = "\xe1\x9f\xa8", - .abmon_9 = "\xe1\x9f\xa9", - .abmon_10 = "\xe1\x9f\xa1\xe1\x9f\xa0", - .abmon_11 = "\xe1\x9f\xa1\xe1\x9f\xa1", - .abmon_12 = "\xe1\x9f\xa1\xe1\x9f\xa2", + .abmon_1 = "\xe1\x9e\x98\xe1\x9e\x80\xe1\x9e\x9a\xe1\x9e\xb6", + .abmon_2 = "\xe1\x9e\x80\xe1\x9e\xbb\xe1\x9e\x98\xe1\x9f\x92\xe1\x9e\x97\xe1\x9f\x88", + .abmon_3 = "\xe1\x9e\x98\xe1\x9e\xb8\xe1\x9e\x93\xe1\x9e\xb6", + .abmon_4 = "\xe1\x9e\x98\xe1\x9f\x81\xe1\x9e\x9f\xe1\x9e\xb6", + .abmon_5 = "\xe1\x9e\xa7\xe1\x9e\x9f\xe1\x9e\x97\xe1\x9e\xb6", + .abmon_6 = "\xe1\x9e\x98\xe1\x9e\xb7\xe1\x9e\x90\xe1\x9e\xbb\xe1\x9e\x93\xe1\x9e\xb6", + .abmon_7 = "\xe1\x9e\x80\xe1\x9e\x80\xe1\x9f\x92\xe1\x9e\x80\xe1\x9e\x8a\xe1\x9e\xb6", + .abmon_8 = "\xe1\x9e\x9f\xe1\x9e\xb8\xe1\x9e\xa0\xe1\x9e\xb6", + .abmon_9 = "\xe1\x9e\x80\xe1\x9e\x89\xe1\x9f\x92\xe1\x9e\x89\xe1\x9e\xb6", + .abmon_10 = "\xe1\x9e\x8f\xe1\x9e\xbb\xe1\x9e\x9b\xe1\x9e\xb6", + .abmon_11 = "\xe1\x9e\x9c\xe1\x9e\xb7\xe1\x9e\x85\xe1\x9f\x92\xe1\x9e\x86\xe1\x9e\xb7\xe1\x9e\x80\xe1\x9e\xb6", + .abmon_12 = "\xe1\x9e\x92\xe1\x9f\x92\xe1\x9e\x93\xe1\x9e\xbc", .yesexpr = "^[+1yY\xe1\x9e\x94]", .noexpr = "^[-0nN\xe1\x9e\x91]", }, @@ -2239,65 +2239,65 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .locale_name = "ko_KR", .radixchar = ".", .thousands_sep = ",", - .codeset = "EUC-KR", + .codeset = "UTF-8", .d_t_fmt = "%x (%a) %r", - .d_fmt = "%Y\xb3\xe2 %m\xbf\xf9 %d\xc0\xcf", - .t_fmt = "%H\xbd\xc3 %M\xba\xd0 %S\xc3\xca", - .t_fmt_ampm = "%p %I\xbd\xc3 %M\xba\xd0 %S\xc3\xca", - .am_str = "\xbf\xc0\xc0\xfc", - .pm_str = "\xbf\xc0\xc8\xc4", - .day_1 = "\xc0\xcf\xbf\xe4\xc0\xcf", - .day_2 = "\xbf\xf9\xbf\xe4\xc0\xcf", - .day_3 = "\xc8\xad\xbf\xe4\xc0\xcf", - .day_4 = "\xbc\xf6\xbf\xe4\xc0\xcf", - .day_5 = "\xb8\xf1\xbf\xe4\xc0\xcf", - .day_6 = "\xb1\xdd\xbf\xe4\xc0\xcf", - .day_7 = "\xc5\xe4\xbf\xe4\xc0\xcf", - .abday_1 = "\xc0\xcf", - .abday_2 = "\xbf\xf9", - .abday_3 = "\xc8\xad", - .abday_4 = "\xbc\xf6", - .abday_5 = "\xb8\xf1", - .abday_6 = "\xb1\xdd", - .abday_7 = "\xc5\xe4", - .mon_1 = "1\xbf\xf9", - .mon_2 = "2\xbf\xf9", - .mon_3 = "3\xbf\xf9", - .mon_4 = "4\xbf\xf9", - .mon_5 = "5\xbf\xf9", - .mon_6 = "6\xbf\xf9", - .mon_7 = "7\xbf\xf9", - .mon_8 = "8\xbf\xf9", - .mon_9 = "9\xbf\xf9", - .mon_10 = "10\xbf\xf9", - .mon_11 = "11\xbf\xf9", - .mon_12 = "12\xbf\xf9", - .abmon_1 = " 1\xbf\xf9", - .abmon_2 = " 2\xbf\xf9", - .abmon_3 = " 3\xbf\xf9", - .abmon_4 = " 4\xbf\xf9", - .abmon_5 = " 5\xbf\xf9", - .abmon_6 = " 6\xbf\xf9", - .abmon_7 = " 7\xbf\xf9", - .abmon_8 = " 8\xbf\xf9", - .abmon_9 = " 9\xbf\xf9", - .abmon_10 = "10\xbf\xf9", - .abmon_11 = "11\xbf\xf9", - .abmon_12 = "12\xbf\xf9", - .yesexpr = "^[+1yY\xa3\xf9\xa3\xd9\xbf\xb9]", - .noexpr = "^[-0nN\xa3\xee\xa3\xce\xbe\xc6]", + .d_fmt = "%Y\xeb\x85\x84 %m\xec\x9b\x94 %d\xec\x9d\xbc", + .t_fmt = "%H\xec\x8b\x9c %M\xeb\xb6\x84 %S\xec\xb4\x88", + .t_fmt_ampm = "%p %I\xec\x8b\x9c %M\xeb\xb6\x84 %S\xec\xb4\x88", + .am_str = "\xec\x98\xa4\xec\xa0\x84", + .pm_str = "\xec\x98\xa4\xed\x9b\x84", + .day_1 = "\xec\x9d\xbc\xec\x9a\x94\xec\x9d\xbc", + .day_2 = "\xec\x9b\x94\xec\x9a\x94\xec\x9d\xbc", + .day_3 = "\xed\x99\x94\xec\x9a\x94\xec\x9d\xbc", + .day_4 = "\xec\x88\x98\xec\x9a\x94\xec\x9d\xbc", + .day_5 = "\xeb\xaa\xa9\xec\x9a\x94\xec\x9d\xbc", + .day_6 = "\xea\xb8\x88\xec\x9a\x94\xec\x9d\xbc", + .day_7 = "\xed\x86\xa0\xec\x9a\x94\xec\x9d\xbc", + .abday_1 = "\xec\x9d\xbc", + .abday_2 = "\xec\x9b\x94", + .abday_3 = "\xed\x99\x94", + .abday_4 = "\xec\x88\x98", + .abday_5 = "\xeb\xaa\xa9", + .abday_6 = "\xea\xb8\x88", + .abday_7 = "\xed\x86\xa0", + .mon_1 = "1\xec\x9b\x94", + .mon_2 = "2\xec\x9b\x94", + .mon_3 = "3\xec\x9b\x94", + .mon_4 = "4\xec\x9b\x94", + .mon_5 = "5\xec\x9b\x94", + .mon_6 = "6\xec\x9b\x94", + .mon_7 = "7\xec\x9b\x94", + .mon_8 = "8\xec\x9b\x94", + .mon_9 = "9\xec\x9b\x94", + .mon_10 = "10\xec\x9b\x94", + .mon_11 = "11\xec\x9b\x94", + .mon_12 = "12\xec\x9b\x94", + .abmon_1 = "1\xec\x9b\x94", + .abmon_2 = "2\xec\x9b\x94", + .abmon_3 = "3\xec\x9b\x94", + .abmon_4 = "4\xec\x9b\x94", + .abmon_5 = "5\xec\x9b\x94", + .abmon_6 = "6\xec\x9b\x94", + .abmon_7 = "7\xec\x9b\x94", + .abmon_8 = "8\xec\x9b\x94", + .abmon_9 = "9\xec\x9b\x94", + .abmon_10 = "10\xec\x9b\x94", + .abmon_11 = "11\xec\x9b\x94", + .abmon_12 = "12\xec\x9b\x94", + .yesexpr = "^[+1yY\xef\xbd\x99\xef\xbc\xb9\xec\x98\x88]", + .noexpr = "^[-0nN\xef\xbd\x8e\xef\xbc\xae\xec\x95\x84]", }, { .locale_name = "ky_KG", .radixchar = ",", - .thousands_sep = "\xe2\x80\xaf", + .thousands_sep = "\xc2\xa0", .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %T", .d_fmt = "%d.%m.%Y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", + .am_str = "\xd1\x82\xd0\xb0\xd2\xa3\xd0\xba\xd1\x8b", + .pm_str = "\xd1\x82\xd2\xaf\xd1\x88\xd1\x82\xd3\xa9\xd0\xbd \xd0\xba\xd0\xb8\xd0\xb9\xd0\xb8\xd0\xbd\xd0\xba\xd0\xb8", .day_1 = "\xd0\xb6\xd0\xb5\xd0\xba\xd1\x88\xd0\xb5\xd0\xbc\xd0\xb1\xd0\xb8", .day_2 = "\xd0\xb4\xd2\xaf\xd0\xb9\xd1\x88\xd3\xa9\xd0\xbc\xd0\xb1\xd2\xaf", .day_3 = "\xd1\x88\xd0\xb5\xd0\xb9\xd1\x88\xd0\xb5\xd0\xbc\xd0\xb1\xd0\xb8", @@ -2305,65 +2305,65 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .day_5 = "\xd0\xb1\xd0\xb5\xd0\xb9\xd1\x88\xd0\xb5\xd0\xbc\xd0\xb1\xd0\xb8", .day_6 = "\xd0\xb6\xd1\x83\xd0\xbc\xd0\xb0", .day_7 = "\xd0\xb8\xd1\x88\xd0\xb5\xd0\xbc\xd0\xb1\xd0\xb8", - .abday_1 = "\xd0\xb6\xd0\xba", - .abday_2 = "\xd0\xb4\xd1\x88", - .abday_3 = "\xd1\x88\xd0\xb5", - .abday_4 = "\xd1\x88\xd0\xb0", - .abday_5 = "\xd0\xb1\xd1\x88", - .abday_6 = "\xd0\xb6\xd0\xbc", - .abday_7 = "\xd0\xb8\xd1\x88", - .mon_1 = "\xd1\x8f\xd0\xbd\xd0\xb2\xd0\xb0\xd1\x80\xd1\x8c", - .mon_2 = "\xd1\x84\xd0\xb5\xd0\xb2\xd1\x80\xd0\xb0\xd0\xbb\xd1\x8c", - .mon_3 = "\xd0\xbc\xd0\xb0\xd1\x80\xd1\x82", - .mon_4 = "\xd0\xb0\xd0\xbf\xd1\x80\xd0\xb5\xd0\xbb\xd1\x8c", - .mon_5 = "\xd0\xbc\xd0\xb0\xd0\xb9", - .mon_6 = "\xd0\xb8\xd1\x8e\xd0\xbd\xd1\x8c", - .mon_7 = "\xd0\xb8\xd1\x8e\xd0\xbb\xd1\x8c", - .mon_8 = "\xd0\xb0\xd0\xb2\xd0\xb3\xd1\x83\xd1\x81\xd1\x82", - .mon_9 = "\xd1\x81\xd0\xb5\xd0\xbd\xd1\x82\xd1\x8f\xd0\xb1\xd1\x80\xd1\x8c", - .mon_10 = "\xd0\xbe\xd0\xba\xd1\x82\xd1\x8f\xd0\xb1\xd1\x80\xd1\x8c", - .mon_11 = "\xd0\xbd\xd0\xbe\xd1\x8f\xd0\xb1\xd1\x80\xd1\x8c", - .mon_12 = "\xd0\xb4\xd0\xb5\xd0\xba\xd0\xb0\xd0\xb1\xd1\x80\xd1\x8c", - .abmon_1 = "\xd1\x8f\xd0\xbd\xd0\xb2", - .abmon_2 = "\xd1\x84\xd0\xb5\xd0\xb2", - .abmon_3 = "\xd0\xbc\xd0\xb0\xd1\x80", - .abmon_4 = "\xd0\xb0\xd0\xbf\xd1\x80", - .abmon_5 = "\xd0\xbc\xd0\xb0\xd0\xb9", - .abmon_6 = "\xd0\xb8\xd1\x8e\xd0\xbd", - .abmon_7 = "\xd0\xb8\xd1\x8e\xd0\xbb", - .abmon_8 = "\xd0\xb0\xd0\xb2\xd0\xb3", - .abmon_9 = "\xd1\x81\xd0\xb5\xd0\xbd", - .abmon_10 = "\xd0\xbe\xd0\xba\xd1\x82", - .abmon_11 = "\xd0\xbd\xd0\xbe\xd1\x8f", - .abmon_12 = "\xd0\xb4\xd0\xb5\xd0\xba", + .abday_1 = "\xd0\xb6\xd0\xb5\xd0\xba.", + .abday_2 = "\xd0\xb4\xd2\xaf\xd0\xb9.", + .abday_3 = "\xd1\x88\xd0\xb5\xd0\xb9\xd1\x88.", + .abday_4 = "\xd1\x88\xd0\xb0\xd1\x80\xd1\x88.", + .abday_5 = "\xd0\xb1\xd0\xb5\xd0\xb9\xd1\x88.", + .abday_6 = "\xd0\xb6\xd1\x83\xd0\xbc\xd0\xb0", + .abday_7 = "\xd0\xb8\xd1\x88\xd0\xbc.", + .mon_1 = "\xd0\xaf\xd0\xbd\xd0\xb2\xd0\xb0\xd1\x80\xd1\x8c", + .mon_2 = "\xd0\xa4\xd0\xb5\xd0\xb2\xd1\x80\xd0\xb0\xd0\xbb\xd1\x8c", + .mon_3 = "\xd0\x9c\xd0\xb0\xd1\x80\xd1\x82", + .mon_4 = "\xd0\x90\xd0\xbf\xd1\x80\xd0\xb5\xd0\xbb\xd1\x8c", + .mon_5 = "\xd0\x9c\xd0\xb0\xd0\xb9", + .mon_6 = "\xd0\x98\xd1\x8e\xd0\xbd\xd1\x8c", + .mon_7 = "\xd0\x98\xd1\x8e\xd0\xbb\xd1\x8c", + .mon_8 = "\xd0\x90\xd0\xb2\xd0\xb3\xd1\x83\xd1\x81\xd1\x82", + .mon_9 = "\xd0\xa1\xd0\xb5\xd0\xbd\xd1\x82\xd1\x8f\xd0\xb1\xd1\x80\xd1\x8c", + .mon_10 = "\xd0\x9e\xd0\xba\xd1\x82\xd1\x8f\xd0\xb1\xd1\x80\xd1\x8c", + .mon_11 = "\xd0\x9d\xd0\xbe\xd1\x8f\xd0\xb1\xd1\x80\xd1\x8c", + .mon_12 = "\xd0\x94\xd0\xb5\xd0\xba\xd0\xb0\xd0\xb1\xd1\x80\xd1\x8c", + .abmon_1 = "\xd0\xaf\xd0\xbd\xd0\xb2", + .abmon_2 = "\xd0\xa4\xd0\xb5\xd0\xb2", + .abmon_3 = "\xd0\x9c\xd0\xb0\xd1\x80", + .abmon_4 = "\xd0\x90\xd0\xbf\xd1\x80", + .abmon_5 = "\xd0\x9c\xd0\xb0\xd0\xb9", + .abmon_6 = "\xd0\x98\xd1\x8e\xd0\xbd", + .abmon_7 = "\xd0\x98\xd1\x8e\xd0\xbb", + .abmon_8 = "\xd0\x90\xd0\xb2\xd0\xb3", + .abmon_9 = "\xd0\xa1\xd0\xb5\xd0\xbd", + .abmon_10 = "\xd0\x9e\xd0\xba\xd1\x82", + .abmon_11 = "\xd0\x9d\xd0\xbe\xd1\x8f", + .abmon_12 = "\xd0\x94\xd0\xb5\xd0\xba", .yesexpr = "^[+1yY\xd0\x9e\xd0\xbe]", .noexpr = "^[-0nN\xd0\x96\xd0\xb6]", }, { .locale_name = "lo_LA", - .radixchar = ".", - .thousands_sep = ",", + .radixchar = ",", + .thousands_sep = ".", .codeset = "UTF-8", .d_t_fmt = "%a %e %b %Ey, %H:%M:%S", .d_fmt = "%d/%m/%Ey", .t_fmt = "%H:%M:%S", .t_fmt_ampm = "%I:%M:%S %p", - .am_str = "AM", - .pm_str = "PM", - .day_1 = "\xe0\xba\xad\xe0\xba\xb2\xe0\xba\x97\xe0\xba\xb4\xe0\xba\x94", - .day_2 = "\xe0\xba\x88\xe0\xba\xb1\xe0\xba\x99", - .day_3 = "\xe0\xba\xad\xe0\xba\xb1\xe0\xba\x87\xe0\xba\x84\xe0\xba\xb2\xe0\xba\x99", - .day_4 = "\xe0\xba\x9e\xe0\xba\xb8\xe0\xba\x94", - .day_5 = "\xe0\xba\x9e\xe0\xba\xb0\xe0\xba\xab\xe0\xba\xb1\xe0\xba\x94", - .day_6 = "\xe0\xba\xaa\xe0\xba\xb8\xe0\xba\x81", - .day_7 = "\xe0\xbb\x80\xe0\xba\xaa\xe0\xba\xbb\xe0\xba\xb2", - .abday_1 = "\xe0\xba\xad\xe0\xba\xb2.", - .abday_2 = "\xe0\xba\x88.", - .abday_3 = "\xe0\xba\x84.", - .abday_4 = "\xe0\xba\x9e.", - .abday_5 = "\xe0\xba\x9e\xe0\xba\xab.", - .abday_6 = "\xe0\xba\xaa.", - .abday_7 = "\xe0\xba\xaa.", + .am_str = "\xe0\xba\x81\xe0\xbb\x88\xe0\xba\xad\xe0\xba\x99\xe0\xba\x97\xe0\xbb\x88\xe0\xba\xbd\xe0\xba\x87", + .pm_str = "\xe0\xba\xab\xe0\xba\xbc\xe0\xba\xb1\xe0\xba\x87\xe0\xba\x97\xe0\xbb\x88\xe0\xba\xbd\xe0\xba\x87", + .day_1 = "\xe0\xba\xa7\xe0\xba\xb1\xe0\xba\x99\xe0\xba\xad\xe0\xba\xb2\xe0\xba\x97\xe0\xba\xb4\xe0\xba\x94", + .day_2 = "\xe0\xba\xa7\xe0\xba\xb1\xe0\xba\x99\xe0\xba\x88\xe0\xba\xb1\xe0\xba\x99", + .day_3 = "\xe0\xba\xa7\xe0\xba\xb1\xe0\xba\x99\xe0\xba\xad\xe0\xba\xb1\xe0\xba\x87\xe0\xba\x84\xe0\xba\xb2\xe0\xba\x99", + .day_4 = "\xe0\xba\xa7\xe0\xba\xb1\xe0\xba\x99\xe0\xba\x9e\xe0\xba\xb8\xe0\xba\x94", + .day_5 = "\xe0\xba\xa7\xe0\xba\xb1\xe0\xba\x99\xe0\xba\x9e\xe0\xba\xb0\xe0\xba\xab\xe0\xba\xb1\xe0\xba\x94", + .day_6 = "\xe0\xba\xa7\xe0\xba\xb1\xe0\xba\x99\xe0\xba\xaa\xe0\xba\xb8\xe0\xba\x81", + .day_7 = "\xe0\xba\xa7\xe0\xba\xb1\xe0\xba\x99\xe0\xbb\x80\xe0\xba\xaa\xe0\xba\xbb\xe0\xba\xb2", + .abday_1 = "\xe0\xba\xad\xe0\xba\xb2\xe0\xba\x97\xe0\xba\xb4\xe0\xba\x94", + .abday_2 = "\xe0\xba\x88\xe0\xba\xb1\xe0\xba\x99", + .abday_3 = "\xe0\xba\xad\xe0\xba\xb1\xe0\xba\x87\xe0\xba\x84\xe0\xba\xb2\xe0\xba\x99", + .abday_4 = "\xe0\xba\x9e\xe0\xba\xb8\xe0\xba\x94", + .abday_5 = "\xe0\xba\x9e\xe0\xba\xb0\xe0\xba\xab\xe0\xba\xb1\xe0\xba\x94", + .abday_6 = "\xe0\xba\xaa\xe0\xba\xb8\xe0\xba\x81", + .abday_7 = "\xe0\xbb\x80\xe0\xba\xaa\xe0\xba\xbb\xe0\xba\xb2", .mon_1 = "\xe0\xba\xa1\xe0\xba\xb1\xe0\xba\x87\xe0\xba\x81\xe0\xba\xad\xe0\xba\x99", .mon_2 = "\xe0\xba\x81\xe0\xba\xb8\xe0\xba\xa1\xe0\xba\x9e\xe0\xba\xb2", .mon_3 = "\xe0\xba\xa1\xe0\xba\xb5\xe0\xba\x99\xe0\xba\xb2", @@ -2394,98 +2394,98 @@ constexpr LanginfoTestData kLanginfoTestData[] = { { .locale_name = "lv_LV", .radixchar = ",", - .thousands_sep = "\xa0", - .codeset = "ISO-8859-13", + .thousands_sep = "\xc2\xa0", + .codeset = "UTF-8", .d_t_fmt = "%A, %Y. gada %e. %B, %H:%M:%S", .d_fmt = "%Y.%m.%d.", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", - .day_1 = "sv\xe7tdiena", - .day_2 = "pirmdiena", - .day_3 = "otrdiena", - .day_4 = "tre\xf0""diena", - .day_5 = "ceturtdiena", - .day_6 = "piektdiena", - .day_7 = "sestdiena", - .abday_1 = "Sv", - .abday_2 = "P\xa0", - .abday_3 = "O\xa0", - .abday_4 = "T\xa0", - .abday_5 = "C\xa0", - .abday_6 = "Pk", - .abday_7 = "S\xa0", - .mon_1 = "janv\xe2ris", - .mon_2 = "febru\xe2ris", + .am_str = "priek\xc5\xa1pusdien\xc4\x81", + .pm_str = "p\xc4\x93""cpusdien\xc4\x81", + .day_1 = "Sv\xc4\x93tdiena", + .day_2 = "Pirmdiena", + .day_3 = "Otrdiena", + .day_4 = "Tre\xc5\xa1""diena", + .day_5 = "Ceturtdiena", + .day_6 = "Piektdiena", + .day_7 = "Sestdiena", + .abday_1 = "Sv\xc4\x93td.", + .abday_2 = "Pirmd.", + .abday_3 = "Otrd.", + .abday_4 = "Tre\xc5\xa1""d.", + .abday_5 = "Ceturtd.", + .abday_6 = "Piektd.", + .abday_7 = "Sestd.", + .mon_1 = "janv\xc4\x81ris", + .mon_2 = "febru\xc4\x81ris", .mon_3 = "marts", - .mon_4 = "apr\xeelis", + .mon_4 = "apr\xc4\xablis", .mon_5 = "maijs", - .mon_6 = "j\xfbnijs", - .mon_7 = "j\xfblijs", + .mon_6 = "j\xc5\xabnijs", + .mon_7 = "j\xc5\xablijs", .mon_8 = "augusts", .mon_9 = "septembris", .mon_10 = "oktobris", .mon_11 = "novembris", .mon_12 = "decembris", - .abmon_1 = "jan", - .abmon_2 = "feb", - .abmon_3 = "mar", - .abmon_4 = "apr", - .abmon_5 = "mai", - .abmon_6 = "j\xfbn", - .abmon_7 = "j\xfbl", - .abmon_8 = "aug", - .abmon_9 = "sep", - .abmon_10 = "okt", - .abmon_11 = "nov", - .abmon_12 = "dec", + .abmon_1 = "janv.", + .abmon_2 = "febr.", + .abmon_3 = "marts", + .abmon_4 = "apr.", + .abmon_5 = "maijs", + .abmon_6 = "j\xc5\xabn.", + .abmon_7 = "j\xc5\xabl.", + .abmon_8 = "aug.", + .abmon_9 = "sept.", + .abmon_10 = "okt.", + .abmon_11 = "nov.", + .abmon_12 = "dec.", .yesexpr = "^[+1JjYy]", .noexpr = "^[-0Nn]", }, { .locale_name = "lt_LT", .radixchar = ",", - .thousands_sep = ".", - .codeset = "ISO-8859-13", + .thousands_sep = "\xc2\xa0", + .codeset = "UTF-8", .d_t_fmt = "%Y m. %B %d d. %T", .d_fmt = "%Y-%m-%d", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", - .day_1 = "Sekmadienis", - .day_2 = "Pirmadienis", - .day_3 = "Antradienis", - .day_4 = "Tre\xe8iadienis", - .day_5 = "Ketvirtadienis", - .day_6 = "Penktadienis", - .day_7 = "\xd0""e\xf0tadienis", - .abday_1 = "Sk", - .abday_2 = "Pr", - .abday_3 = "An", - .abday_4 = "Tr", - .abday_5 = "Kt", - .abday_6 = "Pn", - .abday_7 = "\xd0t", - .mon_1 = "sausio", - .mon_2 = "vasario", - .mon_3 = "kovo", - .mon_4 = "baland\xfeio", - .mon_5 = "gegu\xfe\xebs", - .mon_6 = "bir\xfe""elio", - .mon_7 = "liepos", - .mon_8 = "rugpj\xfb\xe8io", - .mon_9 = "rugs\xebjo", - .mon_10 = "spalio", - .mon_11 = "lapkri\xe8io", - .mon_12 = "gruod\xfeio", + .am_str = "prie\xc5\xa1piet", + .pm_str = "popiet", + .day_1 = "sekmadienis", + .day_2 = "pirmadienis", + .day_3 = "antradienis", + .day_4 = "tre\xc4\x8diadienis", + .day_5 = "ketvirtadienis", + .day_6 = "penktadienis", + .day_7 = "\xc5\xa1""e\xc5\xa1tadienis", + .abday_1 = "sk", + .abday_2 = "pr", + .abday_3 = "an", + .abday_4 = "tr", + .abday_5 = "kt", + .abday_6 = "pn", + .abday_7 = "\xc5\xa1t", + .mon_1 = "sausis", + .mon_2 = "vasaris", + .mon_3 = "kovas", + .mon_4 = "balandis", + .mon_5 = "gegu\xc5\xbe\xc4\x97", + .mon_6 = "bir\xc5\xbe""elis", + .mon_7 = "liepa", + .mon_8 = "rugpj\xc5\xabtis", + .mon_9 = "rugs\xc4\x97jis", + .mon_10 = "spalis", + .mon_11 = "lapkritis", + .mon_12 = "gruodis", .abmon_1 = "saus.", .abmon_2 = "vas.", .abmon_3 = "kov.", .abmon_4 = "bal.", .abmon_5 = "geg.", - .abmon_6 = "bir\xfe.", + .abmon_6 = "bir\xc5\xbe.", .abmon_7 = "liep.", .abmon_8 = "rugp.", .abmon_9 = "rugs.", @@ -2498,66 +2498,66 @@ constexpr LanginfoTestData kLanginfoTestData[] = { { .locale_name = "mk_MK", .radixchar = ",", - .thousands_sep = "\xa0", - .codeset = "ISO-8859-5", + .thousands_sep = ".", + .codeset = "UTF-8", .d_t_fmt = "%a, %d %b %Y %T %Z", .d_fmt = "%d.%m.%Y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", - .day_1 = "\xdd\xd5\xd4\xd5\xdb\xd0", - .day_2 = "\xdf\xde\xdd\xd5\xd4\xd5\xdb\xdd\xd8\xda", - .day_3 = "\xd2\xe2\xde\xe0\xdd\xd8\xda", - .day_4 = "\xe1\xe0\xd5\xd4\xd0", - .day_5 = "\xe7\xd5\xe2\xd2\xe0\xe2\xde\xda", - .day_6 = "\xdf\xd5\xe2\xde\xda", - .day_7 = "\xe1\xd0\xd1\xde\xe2\xd0", - .abday_1 = "\xdd\xd5\xd4", - .abday_2 = "\xdf\xde\xdd", - .abday_3 = "\xd2\xe2\xde", - .abday_4 = "\xe1\xe0\xd5", - .abday_5 = "\xe7\xd5\xe2", - .abday_6 = "\xdf\xd5\xe2", - .abday_7 = "\xe1\xd0\xd1", - .mon_1 = "\xf8\xd0\xdd\xe3\xd0\xe0\xd8", - .mon_2 = "\xe4\xd5\xd2\xe0\xe3\xd0\xe0\xd8", - .mon_3 = "\xdc\xd0\xe0\xe2", - .mon_4 = "\xd0\xdf\xe0\xd8\xdb", - .mon_5 = "\xdc\xd0\xf8", - .mon_6 = "\xf8\xe3\xdd\xd8", - .mon_7 = "\xf8\xe3\xdb\xd8", - .mon_8 = "\xd0\xd2\xd3\xe3\xe1\xe2", - .mon_9 = "\xe1\xd5\xdf\xe2\xd5\xdc\xd2\xe0\xd8", - .mon_10 = "\xde\xda\xe2\xde\xdc\xd2\xe0\xd8", - .mon_11 = "\xdd\xde\xd5\xdc\xd2\xe0\xd8", - .mon_12 = "\xd4\xd5\xda\xd5\xdc\xd2\xe0\xd8", - .abmon_1 = "\xf8\xd0\xdd", - .abmon_2 = "\xe4\xd5\xd2", - .abmon_3 = "\xdc\xd0\xe0", - .abmon_4 = "\xd0\xdf\xe0", - .abmon_5 = "\xdc\xd0\xf8", - .abmon_6 = "\xf8\xe3\xdd", - .abmon_7 = "\xf8\xe3\xdb", - .abmon_8 = "\xd0\xd2\xd3", - .abmon_9 = "\xe1\xd5\xdf", - .abmon_10 = "\xde\xda\xe2", - .abmon_11 = "\xdd\xde\xd5", - .abmon_12 = "\xd4\xd5\xda", - .yesexpr = "^[+1yY\xb4\xd4""dD]", - .noexpr = "^[-0nN\xbd\xdd]", + .am_str = "\xd0\xbf\xd1\x80\xd0\xb5\xd1\x82\xd0\xbf\xd0\xbb.", + .pm_str = "\xd0\xbf\xd0\xbe\xd0\xbf\xd0\xbb.", + .day_1 = "\xd0\xbd\xd0\xb5\xd0\xb4\xd0\xb5\xd0\xbb\xd0\xb0", + .day_2 = "\xd0\xbf\xd0\xbe\xd0\xbd\xd0\xb5\xd0\xb4\xd0\xb5\xd0\xbb\xd0\xbd\xd0\xb8\xd0\xba", + .day_3 = "\xd0\xb2\xd1\x82\xd0\xbe\xd1\x80\xd0\xbd\xd0\xb8\xd0\xba", + .day_4 = "\xd1\x81\xd1\x80\xd0\xb5\xd0\xb4\xd0\xb0", + .day_5 = "\xd1\x87\xd0\xb5\xd1\x82\xd0\xb2\xd1\x80\xd1\x82\xd0\xbe\xd0\xba", + .day_6 = "\xd0\xbf\xd0\xb5\xd1\x82\xd0\xbe\xd0\xba", + .day_7 = "\xd1\x81\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x82\xd0\xb0", + .abday_1 = "\xd0\xbd\xd0\xb5\xd0\xb4.", + .abday_2 = "\xd0\xbf\xd0\xbe\xd0\xbd.", + .abday_3 = "\xd0\xb2\xd1\x82\xd0\xbe.", + .abday_4 = "\xd1\x81\xd1\x80\xd0\xb5.", + .abday_5 = "\xd1\x87\xd0\xb5\xd1\x82.", + .abday_6 = "\xd0\xbf\xd0\xb5\xd1\x82.", + .abday_7 = "\xd1\x81\xd0\xb0\xd0\xb1.", + .mon_1 = "\xd1\x98\xd0\xb0\xd0\xbd\xd1\x83\xd0\xb0\xd1\x80\xd0\xb8", + .mon_2 = "\xd1\x84\xd0\xb5\xd0\xb2\xd1\x80\xd1\x83\xd0\xb0\xd1\x80\xd0\xb8", + .mon_3 = "\xd0\xbc\xd0\xb0\xd1\x80\xd1\x82", + .mon_4 = "\xd0\xb0\xd0\xbf\xd1\x80\xd0\xb8\xd0\xbb", + .mon_5 = "\xd0\xbc\xd0\xb0\xd1\x98", + .mon_6 = "\xd1\x98\xd1\x83\xd0\xbd\xd0\xb8", + .mon_7 = "\xd1\x98\xd1\x83\xd0\xbb\xd0\xb8", + .mon_8 = "\xd0\xb0\xd0\xb2\xd0\xb3\xd1\x83\xd1\x81\xd1\x82", + .mon_9 = "\xd1\x81\xd0\xb5\xd0\xbf\xd1\x82\xd0\xb5\xd0\xbc\xd0\xb2\xd1\x80\xd0\xb8", + .mon_10 = "\xd0\xbe\xd0\xba\xd1\x82\xd0\xbe\xd0\xbc\xd0\xb2\xd1\x80\xd0\xb8", + .mon_11 = "\xd0\xbd\xd0\xbe\xd0\xb5\xd0\xbc\xd0\xb2\xd1\x80\xd0\xb8", + .mon_12 = "\xd0\xb4\xd0\xb5\xd0\xba\xd0\xb5\xd0\xbc\xd0\xb2\xd1\x80\xd0\xb8", + .abmon_1 = "\xd1\x98\xd0\xb0\xd0\xbd.", + .abmon_2 = "\xd1\x84\xd0\xb5\xd0\xb2.", + .abmon_3 = "\xd0\xbc\xd0\xb0\xd1\x80.", + .abmon_4 = "\xd0\xb0\xd0\xbf\xd1\x80.", + .abmon_5 = "\xd0\xbc\xd0\xb0\xd1\x98", + .abmon_6 = "\xd1\x98\xd1\x83\xd0\xbd.", + .abmon_7 = "\xd1\x98\xd1\x83\xd0\xbb.", + .abmon_8 = "\xd0\xb0\xd0\xb2\xd0\xb3.", + .abmon_9 = "\xd1\x81\xd0\xb5\xd0\xbf.", + .abmon_10 = "\xd0\xbe\xd0\xba\xd1\x82.", + .abmon_11 = "\xd0\xbd\xd0\xbe\xd0\xb5.", + .abmon_12 = "\xd0\xb4\xd0\xb5\xd0\xba.", + .yesexpr = "^[+1yY\xd0\x94\xd0\xb4""dD]", + .noexpr = "^[-0nN\xd0\x9d\xd0\xbd]", }, { .locale_name = "ms_MY", .radixchar = ".", .thousands_sep = ",", - .codeset = "ISO-8859-1", + .codeset = "UTF-8", .d_t_fmt = "%A %d %b %Y %H:%M:%S", .d_fmt = "%A %d %b %Y", .t_fmt = "%H:%M:%S %Z", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", + .am_str = "PG", + .pm_str = "PTG", .day_1 = "Ahad", .day_2 = "Isnin", .day_3 = "Selasa", @@ -2591,7 +2591,7 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .abmon_5 = "Mei", .abmon_6 = "Jun", .abmon_7 = "Jul", - .abmon_8 = "Ogos", + .abmon_8 = "Ogo", .abmon_9 = "Sep", .abmon_10 = "Okt", .abmon_11 = "Nov", @@ -2608,22 +2608,22 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .d_fmt = "%-d/%-m/%y", .t_fmt = "%I:%M:%S %p %Z", .t_fmt_ampm = "%I:%M:%S %p %Z", - .am_str = "\xe0\xb4\xb0\xe0\xb4\xbe\xe0\xb4\xb5\xe0\xb4\xbf\xe0\xb4\xb2\xe0\xb5\x86", - .pm_str = "\xe0\xb4\xb5\xe0\xb5\x88\xe0\xb4\x95\xe0\xb5\x81", - .day_1 = "\xe0\xb4\x9e\xe0\xb4\xbe\xe0\xb4\xaf\xe0\xb4\xb0\xe0\xb5\x8d\xe2\x80\x8d", - .day_2 = "\xe0\xb4\xa4\xe0\xb4\xbf\xe0\xb4\x99\xe0\xb5\x8d\xe0\xb4\x95\xe0\xb4\xb3\xe0\xb5\x8d\xe2\x80\x8d", - .day_3 = "\xe0\xb4\x9a\xe0\xb5\x8a\xe0\xb4\xb5\xe0\xb5\x8d\xe0\xb4\xb5", - .day_4 = "\xe0\xb4\xac\xe0\xb5\x81\xe0\xb4\xa7\xe0\xb4\xa8\xe0\xb5\x8d\xe2\x80\x8d", - .day_5 = "\xe0\xb4\xb5\xe0\xb5\x8d\xe0\xb4\xaf\xe0\xb4\xbe\xe0\xb4\xb4\xe0\xb4\x82", - .day_6 = "\xe0\xb4\xb5\xe0\xb5\x86\xe0\xb4\xb3\xe0\xb5\x8d\xe0\xb4\xb3\xe0\xb4\xbf", - .day_7 = "\xe0\xb4\xb6\xe0\xb4\xa8\xe0\xb4\xbf", - .abday_1 = "\xe0\xb4\x9e\xe0\xb4\xbe", - .abday_2 = "\xe0\xb4\xa4\xe0\xb4\xbf", - .abday_3 = "\xe0\xb4\x9a\xe0\xb5\x8a", - .abday_4 = "\xe0\xb4\xac\xe0\xb5\x81", - .abday_5 = "\xe0\xb4\xb5\xe0\xb5\x8d\xe0\xb4\xaf\xe0\xb4\xbe", - .abday_6 = "\xe0\xb4\xb5\xe0\xb5\x86", - .abday_7 = "\xe0\xb4\xb6", + .am_str = "AM", + .pm_str = "PM", + .day_1 = "\xe0\xb4\x9e\xe0\xb4\xbe\xe0\xb4\xaf\xe0\xb4\xb1\xe0\xb4\xbe\xe0\xb4\xb4\xe0\xb5\x8d\xe2\x80\x8c\xe0\xb4\x9a", + .day_2 = "\xe0\xb4\xa4\xe0\xb4\xbf\xe0\xb4\x99\xe0\xb5\x8d\xe0\xb4\x95\xe0\xb4\xb3\xe0\xb4\xbe\xe0\xb4\xb4\xe0\xb5\x8d\xe2\x80\x8c\xe0\xb4\x9a", + .day_3 = "\xe0\xb4\x9a\xe0\xb5\x8a\xe0\xb4\xb5\xe0\xb5\x8d\xe0\xb4\xb5\xe0\xb4\xbe\xe0\xb4\xb4\xe0\xb5\x8d\xe2\x80\x8c\xe0\xb4\x9a", + .day_4 = "\xe0\xb4\xac\xe0\xb5\x81\xe0\xb4\xa7\xe0\xb4\xa8\xe0\xb4\xbe\xe0\xb4\xb4\xe0\xb5\x8d\xe2\x80\x8c\xe0\xb4\x9a", + .day_5 = "\xe0\xb4\xb5\xe0\xb5\x8d\xe0\xb4\xaf\xe0\xb4\xbe\xe0\xb4\xb4\xe0\xb4\xbe\xe0\xb4\xb4\xe0\xb5\x8d\xe2\x80\x8c\xe0\xb4\x9a", + .day_6 = "\xe0\xb4\xb5\xe0\xb5\x86\xe0\xb4\xb3\xe0\xb5\x8d\xe0\xb4\xb3\xe0\xb4\xbf\xe0\xb4\xaf\xe0\xb4\xbe\xe0\xb4\xb4\xe0\xb5\x8d\xe2\x80\x8c\xe0\xb4\x9a", + .day_7 = "\xe0\xb4\xb6\xe0\xb4\xa8\xe0\xb4\xbf\xe0\xb4\xaf\xe0\xb4\xbe\xe0\xb4\xb4\xe0\xb5\x8d\xe2\x80\x8c\xe0\xb4\x9a", + .abday_1 = "\xe0\xb4\x9e\xe0\xb4\xbe\xe0\xb4\xaf\xe0\xb5\xbc", + .abday_2 = "\xe0\xb4\xa4\xe0\xb4\xbf\xe0\xb4\x99\xe0\xb5\x8d\xe0\xb4\x95\xe0\xb5\xbe", + .abday_3 = "\xe0\xb4\x9a\xe0\xb5\x8a\xe0\xb4\xb5\xe0\xb5\x8d\xe0\xb4\xb5", + .abday_4 = "\xe0\xb4\xac\xe0\xb5\x81\xe0\xb4\xa7\xe0\xb5\xbb", + .abday_5 = "\xe0\xb4\xb5\xe0\xb5\x8d\xe0\xb4\xaf\xe0\xb4\xbe\xe0\xb4\xb4\xe0\xb4\x82", + .abday_6 = "\xe0\xb4\xb5\xe0\xb5\x86\xe0\xb4\xb3\xe0\xb5\x8d\xe0\xb4\xb3\xe0\xb4\xbf", + .abday_7 = "\xe0\xb4\xb6\xe0\xb4\xa8\xe0\xb4\xbf", .mon_1 = "\xe0\xb4\x9c\xe0\xb4\xa8\xe0\xb5\x81\xe0\xb4\xb5\xe0\xb4\xb0\xe0\xb4\xbf", .mon_2 = "\xe0\xb4\xab\xe0\xb5\x86\xe0\xb4\xac\xe0\xb5\x8d\xe0\xb4\xb0\xe0\xb5\x81\xe0\xb4\xb5\xe0\xb4\xb0\xe0\xb4\xbf", .mon_3 = "\xe0\xb4\xae\xe0\xb4\xbe\xe0\xb5\xbc\xe0\xb4\x9a\xe0\xb5\x8d\xe0\xb4\x9a\xe0\xb5\x8d", @@ -2660,8 +2660,8 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .d_fmt = "%-d/%-m/%y", .t_fmt = "%I:%M:%S %p %Z", .t_fmt_ampm = "%I:%M:%S %p %Z", - .am_str = "\xe0\xa4\xae.\xe0\xa4\xaa\xe0\xa5\x82.", - .pm_str = "\xe0\xa4\xae.\xe0\xa4\xa8\xe0\xa4\x82.", + .am_str = "AM", + .pm_str = "PM", .day_1 = "\xe0\xa4\xb0\xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\xb0", .day_2 = "\xe0\xa4\xb8\xe0\xa5\x8b\xe0\xa4\xae\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\xb0", .day_3 = "\xe0\xa4\xae\xe0\xa4\x82\xe0\xa4\x97\xe0\xa4\xb3\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\xb0", @@ -2705,15 +2705,15 @@ constexpr LanginfoTestData kLanginfoTestData[] = { }, { .locale_name = "mn_MN", - .radixchar = ",", - .thousands_sep = ".", + .radixchar = ".", + .thousands_sep = ",", .codeset = "UTF-8", .d_t_fmt = "%Y %b %d, %a %T", .d_fmt = "%Y.%m.%d", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", + .am_str = "\xd2\xaf.\xd3\xa9.", + .pm_str = "\xd2\xaf.\xd1\x85.", .day_1 = "\xd0\x9d\xd1\x8f\xd0\xbc", .day_2 = "\xd0\x94\xd0\xb0\xd0\xb2\xd0\xb0\xd0\xb0", .day_3 = "\xd0\x9c\xd1\x8f\xd0\xb3\xd0\xbc\xd0\xb0\xd1\x80", @@ -2733,8 +2733,8 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .mon_3 = "\xd0\x93\xd1\x83\xd1\x80\xd0\xb0\xd0\xb2\xd0\xb4\xd1\x83\xd0\xb3\xd0\xb0\xd0\xb0\xd1\x80 \xd1\x81\xd0\xb0\xd1\x80", .mon_4 = "\xd0\x94\xd3\xa9\xd1\x80\xd3\xa9\xd0\xb2\xd0\xb4\xd2\xaf\xd0\xb3\xd1\x8d\xd1\x8d\xd1\x80 \xd1\x81\xd0\xb0\xd1\x80", .mon_5 = "\xd0\xa2\xd0\xb0\xd0\xb2\xd0\xb4\xd1\x83\xd0\xb3\xd0\xb0\xd0\xb0\xd1\x80 \xd1\x81\xd0\xb0\xd1\x80", - .mon_6 = "\xd0\x97\xd1\x83\xd1\x80\xd0\xb3\xd0\xb0\xd0\xb4\xd1\x83\xd0\xb3\xd0\xb0\xd0\xb0\xd1\x80 \xd1\x81\xd0\xb0\xd1\x80", - .mon_7 = "\xd0\x94\xd0\xbe\xd0\xbb\xd0\xb4\xd1\x83\xd0\xb3\xd0\xb0\xd0\xb0\xd1\x80 \xd1\x81\xd0\xb0\xd1\x80", + .mon_6 = "\xd0\x97\xd1\x83\xd1\x80\xd0\xb3\xd0\xb0\xd0\xb0\xd0\xb4\xd1\x83\xd0\xb3\xd0\xb0\xd0\xb0\xd1\x80 \xd1\x81\xd0\xb0\xd1\x80", + .mon_7 = "\xd0\x94\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xbe\xd0\xb4\xd1\x83\xd0\xb3\xd0\xb0\xd0\xb0\xd1\x80 \xd1\x81\xd0\xb0\xd1\x80", .mon_8 = "\xd0\x9d\xd0\xb0\xd0\xb9\xd0\xbc\xd0\xb4\xd1\x83\xd0\xb3\xd0\xb0\xd0\xb0\xd1\x80 \xd1\x81\xd0\xb0\xd1\x80", .mon_9 = "\xd0\x95\xd1\x81\xd0\xb4\xd2\xaf\xd0\xb3\xd1\x8d\xd1\x8d\xd1\x80 \xd1\x81\xd0\xb0\xd1\x80", .mon_10 = "\xd0\x90\xd1\x80\xd0\xb0\xd0\xb2\xd0\xb4\xd1\x83\xd0\xb3\xd0\xb0\xd0\xb0\xd1\x80 \xd1\x81\xd0\xb0\xd1\x80", @@ -2773,13 +2773,13 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .day_5 = "\xe1\x80\x80\xe1\x80\xbc\xe1\x80\xac\xe1\x80\x9e\xe1\x80\x95\xe1\x80\x90\xe1\x80\xb1\xe1\x80\xb8", .day_6 = "\xe1\x80\x9e\xe1\x80\xb1\xe1\x80\xac\xe1\x80\x80\xe1\x80\xbc\xe1\x80\xac", .day_7 = "\xe1\x80\x85\xe1\x80\x94\xe1\x80\xb1", - .abday_1 = "\xe1\x80\x94\xe1\x80\xbd\xe1\x80\xb1", - .abday_2 = "\xe1\x80\x9c\xe1\x80\xac", - .abday_3 = "\xe1\x80\x82\xe1\x80\xab", - .abday_4 = "\xe1\x80\x9f\xe1\x80\xb0\xe1\x80\xb8", - .abday_5 = "\xe1\x80\x90\xe1\x80\xb1\xe1\x80\xb8", - .abday_6 = "\xe1\x80\x9e\xe1\x80\xb1\xe1\x80\xac", - .abday_7 = "\xe1\x80\x94\xe1\x80\xb1", + .abday_1 = "\xe1\x80\x90\xe1\x80\x94\xe1\x80\x84\xe1\x80\xba\xe1\x80\xb9\xe1\x80\x82\xe1\x80\x94\xe1\x80\xbd\xe1\x80\xb1", + .abday_2 = "\xe1\x80\x90\xe1\x80\x94\xe1\x80\x84\xe1\x80\xba\xe1\x80\xb9\xe1\x80\x9c\xe1\x80\xac", + .abday_3 = "\xe1\x80\xa1\xe1\x80\x84\xe1\x80\xba\xe1\x80\xb9\xe1\x80\x82\xe1\x80\xab", + .abday_4 = "\xe1\x80\x97\xe1\x80\xaf\xe1\x80\x92\xe1\x80\xb9\xe1\x80\x93\xe1\x80\x9f\xe1\x80\xb0\xe1\x80\xb8", + .abday_5 = "\xe1\x80\x80\xe1\x80\xbc\xe1\x80\xac\xe1\x80\x9e\xe1\x80\x95\xe1\x80\x90\xe1\x80\xb1\xe1\x80\xb8", + .abday_6 = "\xe1\x80\x9e\xe1\x80\xb1\xe1\x80\xac\xe1\x80\x80\xe1\x80\xbc\xe1\x80\xac", + .abday_7 = "\xe1\x80\x85\xe1\x80\x94\xe1\x80\xb1", .mon_1 = "\xe1\x80\x87\xe1\x80\x94\xe1\x80\xba\xe1\x80\x94\xe1\x80\x9d\xe1\x80\xab\xe1\x80\x9b\xe1\x80\xae", .mon_2 = "\xe1\x80\x96\xe1\x80\xb1\xe1\x80\x96\xe1\x80\xb1\xe1\x80\xac\xe1\x80\xba\xe1\x80\x9d\xe1\x80\xab\xe1\x80\x9b\xe1\x80\xae", .mon_3 = "\xe1\x80\x99\xe1\x80\x90\xe1\x80\xba", @@ -2795,7 +2795,7 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .abmon_1 = "\xe1\x80\x87\xe1\x80\x94\xe1\x80\xba", .abmon_2 = "\xe1\x80\x96\xe1\x80\xb1", .abmon_3 = "\xe1\x80\x99\xe1\x80\x90\xe1\x80\xba", - .abmon_4 = "\xe1\x80\xa7\xe1\x80\x95\xe1\x80\xbc\xe1\x80\xae", + .abmon_4 = "\xe1\x80\xa7", .abmon_5 = "\xe1\x80\x99\xe1\x80\xb1", .abmon_6 = "\xe1\x80\x87\xe1\x80\xbd\xe1\x80\x94\xe1\x80\xba", .abmon_7 = "\xe1\x80\x87\xe1\x80\xb0", @@ -2822,14 +2822,14 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .day_2 = "\xe0\xa4\xb8\xe0\xa5\x8b\xe0\xa4\xae\xe0\xa4\xac\xe0\xa4\xbe\xe0\xa4\xb0", .day_3 = "\xe0\xa4\xae\xe0\xa4\x99\xe0\xa5\x8d\xe0\xa4\x97\xe0\xa4\xb2\xe0\xa4\xac\xe0\xa4\xbe\xe0\xa4\xb0", .day_4 = "\xe0\xa4\xac\xe0\xa5\x81\xe0\xa4\xa7\xe0\xa4\xac\xe0\xa4\xbe\xe0\xa4\xb0", - .day_5 = "\xe0\xa4\xac\xe0\xa4\xbf\xe0\xa4\xb9\xe0\xa5\x80\xe0\xa4\xac\xe0\xa4\xbe\xe0\xa4\xb0", + .day_5 = "\xe0\xa4\xac\xe0\xa4\xbf\xe0\xa4\xb9\xe0\xa4\xbf\xe0\xa4\xac\xe0\xa4\xbe\xe0\xa4\xb0", .day_6 = "\xe0\xa4\xb6\xe0\xa5\x81\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\xb0\xe0\xa4\xac\xe0\xa4\xbe\xe0\xa4\xb0", .day_7 = "\xe0\xa4\xb6\xe0\xa4\xa8\xe0\xa4\xbf\xe0\xa4\xac\xe0\xa4\xbe\xe0\xa4\xb0", .abday_1 = "\xe0\xa4\x86\xe0\xa4\x87\xe0\xa4\xa4", .abday_2 = "\xe0\xa4\xb8\xe0\xa5\x8b\xe0\xa4\xae", .abday_3 = "\xe0\xa4\xae\xe0\xa4\x99\xe0\xa5\x8d\xe0\xa4\x97\xe0\xa4\xb2", .abday_4 = "\xe0\xa4\xac\xe0\xa5\x81\xe0\xa4\xa7", - .abday_5 = "\xe0\xa4\xac\xe0\xa4\xbf\xe0\xa4\xb9\xe0\xa5\x80", + .abday_5 = "\xe0\xa4\xac\xe0\xa4\xbf\xe0\xa4\xb9\xe0\xa4\xbf", .abday_6 = "\xe0\xa4\xb6\xe0\xa5\x81\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\xb0", .abday_7 = "\xe0\xa4\xb6\xe0\xa4\xa8\xe0\xa4\xbf", .mon_1 = "\xe0\xa4\x9c\xe0\xa4\xa8\xe0\xa4\xb5\xe0\xa4\xb0\xe0\xa5\x80", @@ -2844,7 +2844,7 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .mon_10 = "\xe0\xa4\x85\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\x9f\xe0\xa5\x8b\xe0\xa4\xac\xe0\xa4\xb0", .mon_11 = "\xe0\xa4\xa8\xe0\xa5\x8b\xe0\xa4\xad\xe0\xa5\x87\xe0\xa4\xae\xe0\xa5\x8d\xe0\xa4\xac\xe0\xa4\xb0", .mon_12 = "\xe0\xa4\xa1\xe0\xa4\xbf\xe0\xa4\xb8\xe0\xa5\x87\xe0\xa4\xae\xe0\xa5\x8d\xe0\xa4\xac\xe0\xa4\xb0", - .abmon_1 = "\xe0\xa4\x9c\xe0\xa4\xa8", + .abmon_1 = "\xe0\xa4\x9c\xe0\xa4\xa8\xe0\xa4\xb5\xe0\xa4\xb0\xe0\xa5\x80", .abmon_2 = "\xe0\xa4\xab\xe0\xa5\x87\xe0\xa4\xac\xe0\xa5\x8d\xe0\xa4\xb0\xe0\xa5\x81\xe0\xa4\x85\xe0\xa4\xb0\xe0\xa5\x80", .abmon_3 = "\xe0\xa4\xae\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\x9a", .abmon_4 = "\xe0\xa4\x85\xe0\xa4\xaa\xe0\xa5\x8d\xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\xb2", @@ -2913,15 +2913,15 @@ constexpr LanginfoTestData kLanginfoTestData[] = { }, { .locale_name = "fa_IR", - .radixchar = ".", - .thousands_sep = ",", + .radixchar = "\xd9\xab", + .thousands_sep = "\xd9\xac", .codeset = "UTF-8", .d_t_fmt = "\xe2\x80\xab%A %Oe %B %Oy\xd8\x8c %OH:%OM:%OS\xe2\x80\xac", .d_fmt = "%Oy/%Om/%Od", .t_fmt = "%OH:%OM:%OS", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", + .am_str = "\xd9\x82\xd8\xa8\xd9\x84\xe2\x80\x8c\xd8\xa7\xd8\xb2\xd8\xb8\xd9\x87\xd8\xb1", + .pm_str = "\xd8\xa8\xd8\xb9\xd8\xaf\xd8\xa7\xd8\xb2\xd8\xb8\xd9\x87\xd8\xb1", .day_1 = "\xdb\x8c\xda\xa9\xd8\xb4\xd9\x86\xd8\xa8\xd9\x87", .day_2 = "\xd8\xaf\xd9\x88\xd8\xb4\xd9\x86\xd8\xa8\xd9\x87", .day_3 = "\xd8\xb3\xd9\x87\xe2\x80\x8c\xd8\xb4\xd9\x86\xd8\xa8\xd9\x87", @@ -2945,7 +2945,7 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .mon_7 = "\xda\x98\xd9\x88\xd8\xa6\xdb\x8c\xd9\x87", .mon_8 = "\xd8\xa7\xd9\x88\xd8\xaa", .mon_9 = "\xd8\xb3\xd9\xbe\xd8\xaa\xd8\xa7\xd9\x85\xd8\xa8\xd8\xb1", - .mon_10 = "\xd8\xa7\xd9\x83\xd8\xaa\xd8\xa8\xd8\xb1", + .mon_10 = "\xd8\xa7\xda\xa9\xd8\xaa\xd8\xa8\xd8\xb1", .mon_11 = "\xd9\x86\xd9\x88\xd8\xa7\xd9\x85\xd8\xa8\xd8\xb1", .mon_12 = "\xd8\xaf\xd8\xb3\xd8\xa7\xd9\x85\xd8\xa8\xd8\xb1", .abmon_1 = "\xda\x98\xd8\xa7\xd9\x86\xd9\x88\xdb\x8c\xd9\x87", @@ -2957,7 +2957,7 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .abmon_7 = "\xda\x98\xd9\x88\xd8\xa6\xdb\x8c\xd9\x87", .abmon_8 = "\xd8\xa7\xd9\x88\xd8\xaa", .abmon_9 = "\xd8\xb3\xd9\xbe\xd8\xaa\xd8\xa7\xd9\x85\xd8\xa8\xd8\xb1", - .abmon_10 = "\xd8\xa7\xd9\x83\xd8\xaa\xd8\xa8\xd8\xb1", + .abmon_10 = "\xd8\xa7\xda\xa9\xd8\xaa\xd8\xa8\xd8\xb1", .abmon_11 = "\xd9\x86\xd9\x88\xd8\xa7\xd9\x85\xd8\xa8\xd8\xb1", .abmon_12 = "\xd8\xaf\xd8\xb3\xd8\xa7\xd9\x85\xd8\xa8\xd8\xb1", .yesexpr = "^[+1yY\xd8\xa2\xd8\xa8Hf]", @@ -2966,40 +2966,40 @@ constexpr LanginfoTestData kLanginfoTestData[] = { { .locale_name = "pl_PL", .radixchar = ",", - .thousands_sep = "\xa0", - .codeset = "ISO-8859-2", + .thousands_sep = "\xc2\xa0", + .codeset = "UTF-8", .d_t_fmt = "%a, %-d %b %Y, %T", .d_fmt = "%d.%m.%Y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", + .am_str = "AM", + .pm_str = "PM", .day_1 = "niedziela", - .day_2 = "poniedzia\xb3""ek", + .day_2 = "poniedzia\xc5\x82""ek", .day_3 = "wtorek", - .day_4 = "\xb6roda", + .day_4 = "\xc5\x9broda", .day_5 = "czwartek", - .day_6 = "pi\xb1tek", + .day_6 = "pi\xc4\x85tek", .day_7 = "sobota", - .abday_1 = "nie", - .abday_2 = "pon", - .abday_3 = "wto", - .abday_4 = "\xb6ro", - .abday_5 = "czw", - .abday_6 = "pi\xb1", - .abday_7 = "sob", - .mon_1 = "stycznia", - .mon_2 = "lutego", - .mon_3 = "marca", - .mon_4 = "kwietnia", - .mon_5 = "maja", - .mon_6 = "czerwca", - .mon_7 = "lipca", - .mon_8 = "sierpnia", - .mon_9 = "wrze\xb6nia", - .mon_10 = "pa\xbc""dziernika", - .mon_11 = "listopada", - .mon_12 = "grudnia", + .abday_1 = "niedz.", + .abday_2 = "pon.", + .abday_3 = "wt.", + .abday_4 = "\xc5\x9br.", + .abday_5 = "czw.", + .abday_6 = "pt.", + .abday_7 = "sob.", + .mon_1 = "stycze\xc5\x84", + .mon_2 = "luty", + .mon_3 = "marzec", + .mon_4 = "kwiecie\xc5\x84", + .mon_5 = "maj", + .mon_6 = "czerwiec", + .mon_7 = "lipiec", + .mon_8 = "sierpie\xc5\x84", + .mon_9 = "wrzesie\xc5\x84", + .mon_10 = "pa\xc5\xba""dziernik", + .mon_11 = "listopad", + .mon_12 = "grudzie\xc5\x84", .abmon_1 = "sty", .abmon_2 = "lut", .abmon_3 = "mar", @@ -3009,7 +3009,7 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .abmon_7 = "lip", .abmon_8 = "sie", .abmon_9 = "wrz", - .abmon_10 = "pa\xbc", + .abmon_10 = "pa\xc5\xba", .abmon_11 = "lis", .abmon_12 = "gru", .yesexpr = "^[+1TtYy]", @@ -3019,30 +3019,30 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .locale_name = "pt_BR", .radixchar = ",", .thousands_sep = ".", - .codeset = "ISO-8859-1", + .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %T", .d_fmt = "%d/%m/%Y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", + .am_str = "AM", + .pm_str = "PM", .day_1 = "domingo", - .day_2 = "segunda", - .day_3 = "ter\xe7""a", - .day_4 = "quarta", - .day_5 = "quinta", - .day_6 = "sexta", - .day_7 = "s\xe1""bado", - .abday_1 = "dom", - .abday_2 = "seg", - .abday_3 = "ter", - .abday_4 = "qua", - .abday_5 = "qui", - .abday_6 = "sex", - .abday_7 = "s\xe1""b", + .day_2 = "segunda-feira", + .day_3 = "ter\xc3\xa7""a-feira", + .day_4 = "quarta-feira", + .day_5 = "quinta-feira", + .day_6 = "sexta-feira", + .day_7 = "s\xc3\xa1""bado", + .abday_1 = "dom.", + .abday_2 = "seg.", + .abday_3 = "ter.", + .abday_4 = "qua.", + .abday_5 = "qui.", + .abday_6 = "sex.", + .abday_7 = "s\xc3\xa1""b.", .mon_1 = "janeiro", .mon_2 = "fevereiro", - .mon_3 = "mar\xe7o", + .mon_3 = "mar\xc3\xa7o", .mon_4 = "abril", .mon_5 = "maio", .mon_6 = "junho", @@ -3052,49 +3052,49 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .mon_10 = "outubro", .mon_11 = "novembro", .mon_12 = "dezembro", - .abmon_1 = "jan", - .abmon_2 = "fev", - .abmon_3 = "mar", - .abmon_4 = "abr", - .abmon_5 = "mai", - .abmon_6 = "jun", - .abmon_7 = "jul", - .abmon_8 = "ago", - .abmon_9 = "set", - .abmon_10 = "out", - .abmon_11 = "nov", - .abmon_12 = "dez", + .abmon_1 = "jan.", + .abmon_2 = "fev.", + .abmon_3 = "mar.", + .abmon_4 = "abr.", + .abmon_5 = "mai.", + .abmon_6 = "jun.", + .abmon_7 = "jul.", + .abmon_8 = "ago.", + .abmon_9 = "set.", + .abmon_10 = "out.", + .abmon_11 = "nov.", + .abmon_12 = "dez.", .yesexpr = "^[+1SsyY]", .noexpr = "^[-0nN]", }, { .locale_name = "pt_PT", .radixchar = ",", - .thousands_sep = "", - .codeset = "ISO-8859-1", + .thousands_sep = "\xc2\xa0", + .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %T", .d_fmt = "%d/%m/%Y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", + .am_str = "da manh\xc3\xa3", + .pm_str = "da tarde", .day_1 = "domingo", - .day_2 = "segunda", - .day_3 = "ter\xe7""a", - .day_4 = "quarta", - .day_5 = "quinta", - .day_6 = "sexta", - .day_7 = "s\xe1""bado", - .abday_1 = "dom", - .abday_2 = "seg", - .abday_3 = "ter", - .abday_4 = "qua", - .abday_5 = "qui", - .abday_6 = "sex", - .abday_7 = "s\xe1""b", + .day_2 = "segunda-feira", + .day_3 = "ter\xc3\xa7""a-feira", + .day_4 = "quarta-feira", + .day_5 = "quinta-feira", + .day_6 = "sexta-feira", + .day_7 = "s\xc3\xa1""bado", + .abday_1 = "domingo", + .abday_2 = "segunda", + .abday_3 = "ter\xc3\xa7""a", + .abday_4 = "quarta", + .abday_5 = "quinta", + .abday_6 = "sexta", + .abday_7 = "s\xc3\xa1""bado", .mon_1 = "janeiro", .mon_2 = "fevereiro", - .mon_3 = "mar\xe7o", + .mon_3 = "mar\xc3\xa7o", .mon_4 = "abril", .mon_5 = "maio", .mon_6 = "junho", @@ -3104,18 +3104,18 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .mon_10 = "outubro", .mon_11 = "novembro", .mon_12 = "dezembro", - .abmon_1 = "jan", - .abmon_2 = "fev", - .abmon_3 = "mar", - .abmon_4 = "abr", - .abmon_5 = "mai", - .abmon_6 = "jun", - .abmon_7 = "jul", - .abmon_8 = "ago", - .abmon_9 = "set", - .abmon_10 = "out", - .abmon_11 = "nov", - .abmon_12 = "dez", + .abmon_1 = "jan.", + .abmon_2 = "fev.", + .abmon_3 = "mar.", + .abmon_4 = "abr.", + .abmon_5 = "mai.", + .abmon_6 = "jun.", + .abmon_7 = "jul.", + .abmon_8 = "ago.", + .abmon_9 = "set.", + .abmon_10 = "out.", + .abmon_11 = "nov.", + .abmon_12 = "dez.", .yesexpr = "^[+1SsyY]", .noexpr = "^[-0nN]", }, @@ -3128,22 +3128,22 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .d_fmt = "%-d/%-m/%y", .t_fmt = "%I:%M:%S %p %Z", .t_fmt_ampm = "%I:%M:%S %p %Z", - .am_str = "\xe0\xa8\xb8\xe0\xa8\xb5\xe0\xa9\x87\xe0\xa8\xb0\xe0\xa9\x87", - .pm_str = "\xe0\xa8\xb6\xe0\xa8\xbe\xe0\xa8\xae", + .am_str = "\xe0\xa8\xaa\xe0\xa9\x82.\xe0\xa8\xa6\xe0\xa9\x81.", + .pm_str = "\xe0\xa8\xac\xe0\xa8\xbe.\xe0\xa8\xa6\xe0\xa9\x81.", .day_1 = "\xe0\xa8\x90\xe0\xa8\xa4\xe0\xa8\xb5\xe0\xa8\xbe\xe0\xa8\xb0", .day_2 = "\xe0\xa8\xb8\xe0\xa9\x8b\xe0\xa8\xae\xe0\xa8\xb5\xe0\xa8\xbe\xe0\xa8\xb0", .day_3 = "\xe0\xa8\xae\xe0\xa9\xb0\xe0\xa8\x97\xe0\xa8\xb2\xe0\xa8\xb5\xe0\xa8\xbe\xe0\xa8\xb0", .day_4 = "\xe0\xa8\xac\xe0\xa9\x81\xe0\xa9\xb1\xe0\xa8\xa7\xe0\xa8\xb5\xe0\xa8\xbe\xe0\xa8\xb0", .day_5 = "\xe0\xa8\xb5\xe0\xa9\x80\xe0\xa8\xb0\xe0\xa8\xb5\xe0\xa8\xbe\xe0\xa8\xb0", - .day_6 = "\xe0\xa8\xb6\xe0\xa9\x81\xe0\xa9\xb1\xe0\xa8\x95\xe0\xa8\xb0\xe0\xa8\xb5\xe0\xa8\xbe\xe0\xa8\xb0", - .day_7 = "\xe0\xa8\xb6\xe0\xa8\xa8\xe0\xa8\xbf\xe0\xa9\xb1\xe0\xa8\x9a\xe0\xa8\xb0\xe0\xa8\xb5\xe0\xa8\xbe\xe0\xa8\xb0", + .day_6 = "\xe0\xa8\xb8\xe0\xa8\xbc\xe0\xa9\x81\xe0\xa9\xb1\xe0\xa8\x95\xe0\xa8\xb0\xe0\xa8\xb5\xe0\xa8\xbe\xe0\xa8\xb0", + .day_7 = "\xe0\xa8\xb8\xe0\xa8\xbc\xe0\xa8\xa8\xe0\xa8\xbf\xe0\xa9\xb1\xe0\xa8\x9a\xe0\xa8\xb0\xe0\xa8\xb5\xe0\xa8\xbe\xe0\xa8\xb0", .abday_1 = "\xe0\xa8\x90\xe0\xa8\xa4", .abday_2 = "\xe0\xa8\xb8\xe0\xa9\x8b\xe0\xa8\xae", .abday_3 = "\xe0\xa8\xae\xe0\xa9\xb0\xe0\xa8\x97\xe0\xa8\xb2", .abday_4 = "\xe0\xa8\xac\xe0\xa9\x81\xe0\xa9\xb1\xe0\xa8\xa7", .abday_5 = "\xe0\xa8\xb5\xe0\xa9\x80\xe0\xa8\xb0", - .abday_6 = "\xe0\xa8\xb6\xe0\xa9\x81\xe0\xa9\xb1\xe0\xa8\x95\xe0\xa8\xb0", - .abday_7 = "\xe0\xa8\xb6\xe0\xa8\xa8\xe0\xa8\xbf\xe0\xa9\xb1\xe0\xa8\x9a\xe0\xa8\xb0", + .abday_6 = "\xe0\xa8\xb8\xe0\xa8\xbc\xe0\xa9\x81\xe0\xa9\xb1\xe0\xa8\x95\xe0\xa8\xb0", + .abday_7 = "\xe0\xa8\xb8\xe0\xa8\xbc\xe0\xa8\xa8\xe0\xa8\xbf\xe0\xa9\xb1\xe0\xa8\x9a\xe0\xa8\xb0", .mon_1 = "\xe0\xa8\x9c\xe0\xa8\xa8\xe0\xa8\xb5\xe0\xa8\xb0\xe0\xa9\x80", .mon_2 = "\xe0\xa8\xab\xe0\xa8\xbc\xe0\xa8\xb0\xe0\xa8\xb5\xe0\xa8\xb0\xe0\xa9\x80", .mon_3 = "\xe0\xa8\xae\xe0\xa8\xbe\xe0\xa8\xb0\xe0\xa8\x9a", @@ -3175,27 +3175,27 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .locale_name = "ro_RO", .radixchar = ",", .thousands_sep = ".", - .codeset = "ISO-8859-2", + .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %T %z", .d_fmt = "%d.%m.%Y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", - .day_1 = "duminic\xe3", + .am_str = "a.m.", + .pm_str = "p.m.", + .day_1 = "duminic\xc4\x83", .day_2 = "luni", - .day_3 = "mar\xfei", + .day_3 = "mar\xc8\x9bi", .day_4 = "miercuri", .day_5 = "joi", .day_6 = "vineri", - .day_7 = "s\xe2mb\xe3t\xe3", - .abday_1 = "Du", - .abday_2 = "Lu", - .abday_3 = "Ma", - .abday_4 = "Mi", - .abday_5 = "Jo", - .abday_6 = "Vi", - .abday_7 = "Sb", + .day_7 = "s\xc3\xa2mb\xc4\x83t\xc4\x83", + .abday_1 = "dum.", + .abday_2 = "lun.", + .abday_3 = "mar.", + .abday_4 = "mie.", + .abday_5 = "joi", + .abday_6 = "vin.", + .abday_7 = "s\xc3\xa2m.", .mon_1 = "ianuarie", .mon_2 = "februarie", .mon_3 = "martie", @@ -3208,84 +3208,84 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .mon_10 = "octombrie", .mon_11 = "noiembrie", .mon_12 = "decembrie", - .abmon_1 = "ian", - .abmon_2 = "feb", - .abmon_3 = "mar", - .abmon_4 = "apr", + .abmon_1 = "ian.", + .abmon_2 = "feb.", + .abmon_3 = "mar.", + .abmon_4 = "apr.", .abmon_5 = "mai", - .abmon_6 = "iun", - .abmon_7 = "iul", - .abmon_8 = "aug", - .abmon_9 = "sep", - .abmon_10 = "oct", - .abmon_11 = "nov", - .abmon_12 = "dec", + .abmon_6 = "iun.", + .abmon_7 = "iul.", + .abmon_8 = "aug.", + .abmon_9 = "sept.", + .abmon_10 = "oct.", + .abmon_11 = "nov.", + .abmon_12 = "dec.", .yesexpr = "^[+1DdYy]", .noexpr = "^[-0nN]", }, { .locale_name = "ru_RU", .radixchar = ",", - .thousands_sep = "\xa0", - .codeset = "ISO-8859-5", + .thousands_sep = "\xc2\xa0", + .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %T", .d_fmt = "%d.%m.%Y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", - .day_1 = "\xb2\xde\xe1\xda\xe0\xd5\xe1\xd5\xdd\xec\xd5", - .day_2 = "\xbf\xde\xdd\xd5\xd4\xd5\xdb\xec\xdd\xd8\xda", - .day_3 = "\xb2\xe2\xde\xe0\xdd\xd8\xda", - .day_4 = "\xc1\xe0\xd5\xd4\xd0", - .day_5 = "\xc7\xd5\xe2\xd2\xd5\xe0\xd3", - .day_6 = "\xbf\xef\xe2\xdd\xd8\xe6\xd0", - .day_7 = "\xc1\xe3\xd1\xd1\xde\xe2\xd0", - .abday_1 = "\xb2\xe1", - .abday_2 = "\xbf\xdd", - .abday_3 = "\xb2\xe2", - .abday_4 = "\xc1\xe0", - .abday_5 = "\xc7\xe2", - .abday_6 = "\xbf\xe2", - .abday_7 = "\xc1\xd1", - .mon_1 = "\xef\xdd\xd2\xd0\xe0\xef", - .mon_2 = "\xe4\xd5\xd2\xe0\xd0\xdb\xef", - .mon_3 = "\xdc\xd0\xe0\xe2\xd0", - .mon_4 = "\xd0\xdf\xe0\xd5\xdb\xef", - .mon_5 = "\xdc\xd0\xef", - .mon_6 = "\xd8\xee\xdd\xef", - .mon_7 = "\xd8\xee\xdb\xef", - .mon_8 = "\xd0\xd2\xd3\xe3\xe1\xe2\xd0", - .mon_9 = "\xe1\xd5\xdd\xe2\xef\xd1\xe0\xef", - .mon_10 = "\xde\xda\xe2\xef\xd1\xe0\xef", - .mon_11 = "\xdd\xde\xef\xd1\xe0\xef", - .mon_12 = "\xd4\xd5\xda\xd0\xd1\xe0\xef", - .abmon_1 = "\xef\xdd\xd2", - .abmon_2 = "\xe4\xd5\xd2", - .abmon_3 = "\xdc\xd0\xe0", - .abmon_4 = "\xd0\xdf\xe0", - .abmon_5 = "\xdc\xd0\xef", - .abmon_6 = "\xd8\xee\xdd", - .abmon_7 = "\xd8\xee\xdb", - .abmon_8 = "\xd0\xd2\xd3", - .abmon_9 = "\xe1\xd5\xdd", - .abmon_10 = "\xde\xda\xe2", - .abmon_11 = "\xdd\xde\xef", - .abmon_12 = "\xd4\xd5\xda", - .yesexpr = "^[+1yY\xb4\xd4]", - .noexpr = "^[-0nN\xbd\xdd]", + .am_str = "AM", + .pm_str = "PM", + .day_1 = "\xd0\xb2\xd0\xbe\xd1\x81\xd0\xba\xd1\x80\xd0\xb5\xd1\x81\xd0\xb5\xd0\xbd\xd1\x8c\xd0\xb5", + .day_2 = "\xd0\xbf\xd0\xbe\xd0\xbd\xd0\xb5\xd0\xb4\xd0\xb5\xd0\xbb\xd1\x8c\xd0\xbd\xd0\xb8\xd0\xba", + .day_3 = "\xd0\xb2\xd1\x82\xd0\xbe\xd1\x80\xd0\xbd\xd0\xb8\xd0\xba", + .day_4 = "\xd1\x81\xd1\x80\xd0\xb5\xd0\xb4\xd0\xb0", + .day_5 = "\xd1\x87\xd0\xb5\xd1\x82\xd0\xb2\xd0\xb5\xd1\x80\xd0\xb3", + .day_6 = "\xd0\xbf\xd1\x8f\xd1\x82\xd0\xbd\xd0\xb8\xd1\x86\xd0\xb0", + .day_7 = "\xd1\x81\xd1\x83\xd0\xb1\xd0\xb1\xd0\xbe\xd1\x82\xd0\xb0", + .abday_1 = "\xd0\xb2\xd1\x81", + .abday_2 = "\xd0\xbf\xd0\xbd", + .abday_3 = "\xd0\xb2\xd1\x82", + .abday_4 = "\xd1\x81\xd1\x80", + .abday_5 = "\xd1\x87\xd1\x82", + .abday_6 = "\xd0\xbf\xd1\x82", + .abday_7 = "\xd1\x81\xd0\xb1", + .mon_1 = "\xd1\x8f\xd0\xbd\xd0\xb2\xd0\xb0\xd1\x80\xd1\x8c", + .mon_2 = "\xd1\x84\xd0\xb5\xd0\xb2\xd1\x80\xd0\xb0\xd0\xbb\xd1\x8c", + .mon_3 = "\xd0\xbc\xd0\xb0\xd1\x80\xd1\x82", + .mon_4 = "\xd0\xb0\xd0\xbf\xd1\x80\xd0\xb5\xd0\xbb\xd1\x8c", + .mon_5 = "\xd0\xbc\xd0\xb0\xd0\xb9", + .mon_6 = "\xd0\xb8\xd1\x8e\xd0\xbd\xd1\x8c", + .mon_7 = "\xd0\xb8\xd1\x8e\xd0\xbb\xd1\x8c", + .mon_8 = "\xd0\xb0\xd0\xb2\xd0\xb3\xd1\x83\xd1\x81\xd1\x82", + .mon_9 = "\xd1\x81\xd0\xb5\xd0\xbd\xd1\x82\xd1\x8f\xd0\xb1\xd1\x80\xd1\x8c", + .mon_10 = "\xd0\xbe\xd0\xba\xd1\x82\xd1\x8f\xd0\xb1\xd1\x80\xd1\x8c", + .mon_11 = "\xd0\xbd\xd0\xbe\xd1\x8f\xd0\xb1\xd1\x80\xd1\x8c", + .mon_12 = "\xd0\xb4\xd0\xb5\xd0\xba\xd0\xb0\xd0\xb1\xd1\x80\xd1\x8c", + .abmon_1 = "\xd1\x8f\xd0\xbd\xd0\xb2.", + .abmon_2 = "\xd1\x84\xd0\xb5\xd0\xb2\xd1\x80.", + .abmon_3 = "\xd0\xbc\xd0\xb0\xd1\x80\xd1\x82", + .abmon_4 = "\xd0\xb0\xd0\xbf\xd1\x80.", + .abmon_5 = "\xd0\xbc\xd0\xb0\xd0\xb9", + .abmon_6 = "\xd0\xb8\xd1\x8e\xd0\xbd\xd1\x8c", + .abmon_7 = "\xd0\xb8\xd1\x8e\xd0\xbb\xd1\x8c", + .abmon_8 = "\xd0\xb0\xd0\xb2\xd0\xb3.", + .abmon_9 = "\xd1\x81\xd0\xb5\xd0\xbd\xd1\x82.", + .abmon_10 = "\xd0\xbe\xd0\xba\xd1\x82.", + .abmon_11 = "\xd0\xbd\xd0\xbe\xd1\x8f\xd0\xb1.", + .abmon_12 = "\xd0\xb4\xd0\xb5\xd0\xba.", + .yesexpr = "^[+1yY\xd0\x94\xd0\xb4]", + .noexpr = "^[-0nN\xd0\x9d\xd0\xbd]", }, { .locale_name = "sr_RS", .radixchar = ",", - .thousands_sep = "", + .thousands_sep = ".", .codeset = "UTF-8", .d_t_fmt = "%A, %d. %B %Y. %T %Z", .d_fmt = "%d.%m.%Y.", .t_fmt = "%T", .t_fmt_ampm = "%T", - .am_str = "", - .pm_str = "", + .am_str = "AM", + .pm_str = "PM", .day_1 = "\xd0\xbd\xd0\xb5\xd0\xb4\xd0\xb5\xd1\x99\xd0\xb0", .day_2 = "\xd0\xbf\xd0\xbe\xd0\xbd\xd0\xb5\xd0\xb4\xd0\xb5\xd1\x99\xd0\xb0\xd0\xba", .day_3 = "\xd1\x83\xd1\x82\xd0\xbe\xd1\x80\xd0\xb0\xd0\xba", @@ -3330,14 +3330,14 @@ constexpr LanginfoTestData kLanginfoTestData[] = { { .locale_name = "sr_RS@latin", .radixchar = ",", - .thousands_sep = "", + .thousands_sep = ".", .codeset = "UTF-8", .d_t_fmt = "%A, %d. %B %Y. %T %Z", .d_fmt = "%d.%m.%Y.", .t_fmt = "%T", .t_fmt_ampm = "%T", - .am_str = "", - .pm_str = "", + .am_str = "AM", + .pm_str = "PM", .day_1 = "nedelja", .day_2 = "ponedeljak", .day_3 = "utorak", @@ -3397,13 +3397,13 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .day_5 = "\xe0\xb6\xb6\xe0\xb7\x8a\xe2\x80\x8d\xe0\xb6\xbb\xe0\xb7\x84\xe0\xb7\x83\xe0\xb7\x8a\xe0\xb6\xb4\xe0\xb6\xad\xe0\xb7\x92\xe0\xb6\xb1\xe0\xb7\x8a\xe0\xb6\xaf\xe0\xb7\x8f", .day_6 = "\xe0\xb7\x83\xe0\xb7\x92\xe0\xb6\x9a\xe0\xb7\x94\xe0\xb6\xbb\xe0\xb7\x8f\xe0\xb6\xaf\xe0\xb7\x8f", .day_7 = "\xe0\xb7\x83\xe0\xb7\x99\xe0\xb6\xb1\xe0\xb7\x83\xe0\xb7\x94\xe0\xb6\xbb\xe0\xb7\x8f\xe0\xb6\xaf\xe0\xb7\x8f", - .abday_1 = "\xe0\xb6\x89", - .abday_2 = "\xe0\xb7\x83", - .abday_3 = "\xe0\xb6\x85", - .abday_4 = "\xe0\xb6\xb6", - .abday_5 = "\xe0\xb6\xb6\xe0\xb7\x8a\xe2\x80\x8d\xe0\xb6\xbb", - .abday_6 = "\xe0\xb7\x83\xe0\xb7\x92", - .abday_7 = "\xe0\xb7\x83\xe0\xb7\x99", + .abday_1 = "\xe0\xb6\x89\xe0\xb6\xbb\xe0\xb7\x92\xe0\xb6\xaf\xe0\xb7\x8f", + .abday_2 = "\xe0\xb7\x83\xe0\xb6\xb3\xe0\xb7\x94\xe0\xb6\xaf\xe0\xb7\x8f", + .abday_3 = "\xe0\xb6\x85\xe0\xb6\x9f\xe0\xb7\x84", + .abday_4 = "\xe0\xb6\xb6\xe0\xb6\xaf\xe0\xb7\x8f\xe0\xb6\xaf\xe0\xb7\x8f", + .abday_5 = "\xe0\xb6\xb6\xe0\xb7\x8a\xe2\x80\x8d\xe0\xb6\xbb\xe0\xb7\x84\xe0\xb7\x83\xe0\xb7\x8a", + .abday_6 = "\xe0\xb7\x83\xe0\xb7\x92\xe0\xb6\x9a\xe0\xb7\x94", + .abday_7 = "\xe0\xb7\x83\xe0\xb7\x99\xe0\xb6\xb1", .mon_1 = "\xe0\xb6\xa2\xe0\xb6\xb1\xe0\xb7\x80\xe0\xb7\x8f\xe0\xb6\xbb\xe0\xb7\x92", .mon_2 = "\xe0\xb6\xb4\xe0\xb7\x99\xe0\xb6\xb6\xe0\xb6\xbb\xe0\xb7\x80\xe0\xb7\x8f\xe0\xb6\xbb\xe0\xb7\x92", .mon_3 = "\xe0\xb6\xb8\xe0\xb7\x8f\xe0\xb6\xbb\xe0\xb7\x8a\xe0\xb6\xad\xe0\xb7\x94", @@ -3419,14 +3419,14 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .abmon_1 = "\xe0\xb6\xa2\xe0\xb6\xb1", .abmon_2 = "\xe0\xb6\xb4\xe0\xb7\x99\xe0\xb6\xb6", .abmon_3 = "\xe0\xb6\xb8\xe0\xb7\x8f\xe0\xb6\xbb\xe0\xb7\x8a", - .abmon_4 = "\xe0\xb6\x85\xe0\xb6\xb4\xe0\xb7\x8a\xe2\x80\x8d\xe0\xb6\xbb\xe0\xb7\x92", + .abmon_4 = "\xe0\xb6\x85\xe0\xb6\xb4\xe0\xb7\x8a\xe2\x80\x8d\xe0\xb6\xbb\xe0\xb7\x9a\xe0\xb6\xbd\xe0\xb7\x8a", .abmon_5 = "\xe0\xb6\xb8\xe0\xb7\x90\xe0\xb6\xba\xe0\xb7\x92", .abmon_6 = "\xe0\xb6\xa2\xe0\xb7\x96\xe0\xb6\xb1\xe0\xb7\x92", .abmon_7 = "\xe0\xb6\xa2\xe0\xb7\x96\xe0\xb6\xbd\xe0\xb7\x92", .abmon_8 = "\xe0\xb6\x85\xe0\xb6\x9c\xe0\xb7\x9d", .abmon_9 = "\xe0\xb7\x83\xe0\xb7\x90\xe0\xb6\xb4\xe0\xb7\x8a", .abmon_10 = "\xe0\xb6\x94\xe0\xb6\x9a\xe0\xb7\x8a", - .abmon_11 = "\xe0\xb6\xb1\xe0\xb7\x99\xe0\xb7\x80\xe0\xb7\x90", + .abmon_11 = "\xe0\xb6\xb1\xe0\xb7\x9c\xe0\xb7\x80\xe0\xb7\x90", .abmon_12 = "\xe0\xb6\xaf\xe0\xb7\x99\xe0\xb7\x83\xe0\xb7\x90", .yesexpr = "^[+1yY\xe0\xb6\x94]", .noexpr = "^[-0nN\xe0\xb6\xb1]", @@ -3434,80 +3434,80 @@ constexpr LanginfoTestData kLanginfoTestData[] = { { .locale_name = "sk_SK", .radixchar = ",", - .thousands_sep = "\xa0", - .codeset = "ISO-8859-2", - .d_t_fmt = "%a\xa0%e.\xa0%B\xa0%Y,\xa0%H:%M:%S", + .thousands_sep = "\xc2\xa0", + .codeset = "UTF-8", + .d_t_fmt = "%a\xc2\xa0%e.\xc2\xa0%B\xc2\xa0%Y,\xc2\xa0%H:%M:%S", .d_fmt = "%d.%m.%Y", .t_fmt = "%H:%M:%S", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", - .day_1 = "Nede\xb5""a", - .day_2 = "Pondelok", - .day_3 = "Utorok", - .day_4 = "Streda", - .day_5 = "\xa9tvrtok", - .day_6 = "Piatok", - .day_7 = "Sobota", - .abday_1 = "Ne", - .abday_2 = "Po", - .abday_3 = "Ut", - .abday_4 = "St", - .abday_5 = "\xa9t", - .abday_6 = "Pi", - .abday_7 = "So", - .mon_1 = "janu\xe1r", - .mon_2 = "febru\xe1r", + .am_str = "AM", + .pm_str = "PM", + .day_1 = "nede\xc4\xbe""a", + .day_2 = "pondelok", + .day_3 = "utorok", + .day_4 = "streda", + .day_5 = "\xc5\xa1tvrtok", + .day_6 = "piatok", + .day_7 = "sobota", + .abday_1 = "ne", + .abday_2 = "po", + .abday_3 = "ut", + .abday_4 = "st", + .abday_5 = "\xc5\xa1t", + .abday_6 = "pi", + .abday_7 = "so", + .mon_1 = "janu\xc3\xa1r", + .mon_2 = "febru\xc3\xa1r", .mon_3 = "marec", - .mon_4 = "apr\xedl", - .mon_5 = "m\xe1j", - .mon_6 = "j\xfan", - .mon_7 = "j\xfal", + .mon_4 = "apr\xc3\xadl", + .mon_5 = "m\xc3\xa1j", + .mon_6 = "j\xc3\xban", + .mon_7 = "j\xc3\xbal", .mon_8 = "august", .mon_9 = "september", - .mon_10 = "okt\xf3""ber", + .mon_10 = "okt\xc3\xb3""ber", .mon_11 = "november", .mon_12 = "december", .abmon_1 = "jan", .abmon_2 = "feb", .abmon_3 = "mar", .abmon_4 = "apr", - .abmon_5 = "m\xe1j", - .abmon_6 = "j\xfan", - .abmon_7 = "j\xfal", + .abmon_5 = "m\xc3\xa1j", + .abmon_6 = "j\xc3\xban", + .abmon_7 = "j\xc3\xbal", .abmon_8 = "aug", .abmon_9 = "sep", .abmon_10 = "okt", .abmon_11 = "nov", .abmon_12 = "dec", - .yesexpr = "^[+1aA\xe1\xc1yY]", + .yesexpr = "^[+1aA\xc3\xa1\xc3\x81yY]", .noexpr = "^[-0nN]", }, { .locale_name = "sl_SI", .radixchar = ",", .thousands_sep = ".", - .codeset = "ISO-8859-2", + .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %T", .d_fmt = "%d. %m. %Y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", + .am_str = "dop.", + .pm_str = "pop.", .day_1 = "nedelja", .day_2 = "ponedeljek", .day_3 = "torek", .day_4 = "sreda", - .day_5 = "\xe8""etrtek", + .day_5 = "\xc4\x8d""etrtek", .day_6 = "petek", .day_7 = "sobota", - .abday_1 = "ned", - .abday_2 = "pon", - .abday_3 = "tor", - .abday_4 = "sre", - .abday_5 = "\xe8""et", - .abday_6 = "pet", - .abday_7 = "sob", + .abday_1 = "ned.", + .abday_2 = "pon.", + .abday_3 = "tor.", + .abday_4 = "sre.", + .abday_5 = "\xc4\x8d""et.", + .abday_6 = "pet.", + .abday_7 = "sob.", .mon_1 = "januar", .mon_2 = "februar", .mon_3 = "marec", @@ -3520,46 +3520,46 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .mon_10 = "oktober", .mon_11 = "november", .mon_12 = "december", - .abmon_1 = "jan", - .abmon_2 = "feb", - .abmon_3 = "mar", - .abmon_4 = "apr", + .abmon_1 = "jan.", + .abmon_2 = "feb.", + .abmon_3 = "mar.", + .abmon_4 = "apr.", .abmon_5 = "maj", - .abmon_6 = "jun", - .abmon_7 = "jul", - .abmon_8 = "avg", - .abmon_9 = "sep", - .abmon_10 = "okt", - .abmon_11 = "nov", - .abmon_12 = "dec", + .abmon_6 = "jun.", + .abmon_7 = "jul.", + .abmon_8 = "avg.", + .abmon_9 = "sep.", + .abmon_10 = "okt.", + .abmon_11 = "nov.", + .abmon_12 = "dec.", .yesexpr = "^[+1YyJj]", .noexpr = "^[-0Nn]", }, { .locale_name = "es_MX", .radixchar = ".", - .thousands_sep = "\xa0", - .codeset = "ISO-8859-1", + .thousands_sep = ",", + .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %T", .d_fmt = "%d/%m/%y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", + .am_str = "a.m.", + .pm_str = "p.m.", .day_1 = "domingo", .day_2 = "lunes", .day_3 = "martes", - .day_4 = "mi\xe9rcoles", + .day_4 = "mi\xc3\xa9rcoles", .day_5 = "jueves", .day_6 = "viernes", - .day_7 = "s\xe1""bado", + .day_7 = "s\xc3\xa1""bado", .abday_1 = "dom", .abday_2 = "lun", .abday_3 = "mar", - .abday_4 = "mi\xe9", + .abday_4 = "mi\xc3\xa9", .abday_5 = "jue", .abday_6 = "vie", - .abday_7 = "s\xe1""b", + .abday_7 = "s\xc3\xa1""b", .mon_1 = "enero", .mon_2 = "febrero", .mon_3 = "marzo", @@ -3591,27 +3591,27 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .locale_name = "es_ES", .radixchar = ",", .thousands_sep = ".", - .codeset = "ISO-8859-1", + .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %T", .d_fmt = "%d/%m/%y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "a.\xa0m.", - .pm_str = "p.\xa0m.", + .am_str = "a.\xc2\xa0m.", + .pm_str = "p.\xc2\xa0m.", .day_1 = "domingo", .day_2 = "lunes", .day_3 = "martes", - .day_4 = "mi\xe9rcoles", + .day_4 = "mi\xc3\xa9rcoles", .day_5 = "jueves", .day_6 = "viernes", - .day_7 = "s\xe1""bado", + .day_7 = "s\xc3\xa1""bado", .abday_1 = "dom", .abday_2 = "lun", .abday_3 = "mar", - .abday_4 = "mi\xe9", + .abday_4 = "mi\xc3\xa9", .abday_5 = "jue", .abday_6 = "vie", - .abday_7 = "s\xe1""b", + .abday_7 = "s\xc3\xa1""b", .mon_1 = "enero", .mon_2 = "febrero", .mon_3 = "marzo", @@ -3632,7 +3632,7 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .abmon_6 = "jun", .abmon_7 = "jul", .abmon_8 = "ago", - .abmon_9 = "sep", + .abmon_9 = "sept", .abmon_10 = "oct", .abmon_11 = "nov", .abmon_12 = "dic", @@ -3643,27 +3643,27 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .locale_name = "es_US", .radixchar = ".", .thousands_sep = ",", - .codeset = "ISO-8859-1", + .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %T", .d_fmt = "%d/%m/%y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", + .am_str = "a.m.", + .pm_str = "p.m.", .day_1 = "domingo", .day_2 = "lunes", .day_3 = "martes", - .day_4 = "mi\xe9rcoles", + .day_4 = "mi\xc3\xa9rcoles", .day_5 = "jueves", .day_6 = "viernes", - .day_7 = "s\xe1""bado", + .day_7 = "s\xc3\xa1""bado", .abday_1 = "dom", .abday_2 = "lun", .abday_3 = "mar", - .abday_4 = "mi\xe9", + .abday_4 = "mi\xc3\xa9", .abday_5 = "jue", .abday_6 = "vie", - .abday_7 = "s\xe1""b", + .abday_7 = "s\xc3\xa1""b", .mon_1 = "enero", .mon_2 = "febrero", .mon_3 = "marzo", @@ -3684,7 +3684,7 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .abmon_6 = "jun", .abmon_7 = "jul", .abmon_8 = "ago", - .abmon_9 = "sep", + .abmon_9 = "sept", .abmon_10 = "oct", .abmon_11 = "nov", .abmon_12 = "dic", @@ -3700,8 +3700,8 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .d_fmt = "%d/%m/%Y", .t_fmt = "%I:%M:%S %p", .t_fmt_ampm = "%I:%M:%S %p", - .am_str = "asubuhi", - .pm_str = "alasiri", + .am_str = "AM", + .pm_str = "PM", .day_1 = "Jumapili", .day_2 = "Jumatatu", .day_3 = "Jumanne", @@ -3709,13 +3709,13 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .day_5 = "Alhamisi", .day_6 = "Ijumaa", .day_7 = "Jumamosi", - .abday_1 = "J2", - .abday_2 = "J3", - .abday_3 = "J4", - .abday_4 = "J5", - .abday_5 = "Alh", - .abday_6 = "Ij", - .abday_7 = "J1", + .abday_1 = "Jumapili", + .abday_2 = "Jumatatu", + .abday_3 = "Jumanne", + .abday_4 = "Jumatano", + .abday_5 = "Alhamisi", + .abday_6 = "Ijumaa", + .abday_7 = "Jumamosi", .mon_1 = "Januari", .mon_2 = "Februari", .mon_3 = "Machi", @@ -3746,28 +3746,28 @@ constexpr LanginfoTestData kLanginfoTestData[] = { { .locale_name = "sv_SE", .radixchar = ",", - .thousands_sep = "\xa0", - .codeset = "ISO-8859-1", + .thousands_sep = "\xc2\xa0", + .codeset = "UTF-8", .d_t_fmt = "%a %e %b %Y %H:%M:%S", .d_fmt = "%Y-%m-%d", .t_fmt = "%H:%M:%S", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", - .day_1 = "s\xf6ndag", - .day_2 = "m\xe5ndag", + .am_str = "fm", + .pm_str = "em", + .day_1 = "s\xc3\xb6ndag", + .day_2 = "m\xc3\xa5ndag", .day_3 = "tisdag", .day_4 = "onsdag", .day_5 = "torsdag", .day_6 = "fredag", - .day_7 = "l\xf6rdag", - .abday_1 = "s\xf6n", - .abday_2 = "m\xe5n", + .day_7 = "l\xc3\xb6rdag", + .abday_1 = "s\xc3\xb6n", + .abday_2 = "m\xc3\xa5n", .abday_3 = "tis", .abday_4 = "ons", - .abday_5 = "tor", + .abday_5 = "tors", .abday_6 = "fre", - .abday_7 = "l\xf6r", + .abday_7 = "l\xc3\xb6r", .mon_1 = "januari", .mon_2 = "februari", .mon_3 = "mars", @@ -3780,18 +3780,18 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .mon_10 = "oktober", .mon_11 = "november", .mon_12 = "december", - .abmon_1 = "jan", - .abmon_2 = "feb", - .abmon_3 = "mar", - .abmon_4 = "apr", + .abmon_1 = "jan.", + .abmon_2 = "feb.", + .abmon_3 = "mars", + .abmon_4 = "apr.", .abmon_5 = "maj", - .abmon_6 = "jun", - .abmon_7 = "jul", - .abmon_8 = "aug", - .abmon_9 = "sep", - .abmon_10 = "okt", - .abmon_11 = "nov", - .abmon_12 = "dec", + .abmon_6 = "juni", + .abmon_7 = "juli", + .abmon_8 = "aug.", + .abmon_9 = "sep.", + .abmon_10 = "okt.", + .abmon_11 = "nov.", + .abmon_12 = "dec.", .yesexpr = "^[+1jJyY]", .noexpr = "^[-0nN]", }, @@ -3804,8 +3804,8 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .d_fmt = "%-d/%-m/%y", .t_fmt = "%p %I:%M:%S %Z", .t_fmt_ampm = "%p %I:%M:%S %Z", - .am_str = "\xe0\xae\x95\xe0\xae\xbe\xe0\xae\xb2\xe0\xaf\x88", - .pm_str = "\xe0\xae\xae\xe0\xae\xbe\xe0\xae\xb2\xe0\xaf\x88", + .am_str = "AM", + .pm_str = "PM", .day_1 = "\xe0\xae\x9e\xe0\xae\xbe\xe0\xae\xaf\xe0\xae\xbf\xe0\xae\xb1\xe0\xaf\x81", .day_2 = "\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x8d", .day_3 = "\xe0\xae\x9a\xe0\xaf\x86\xe0\xae\xb5\xe0\xaf\x8d\xe0\xae\xb5\xe0\xae\xbe\xe0\xae\xaf\xe0\xaf\x8d", @@ -3813,13 +3813,13 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .day_5 = "\xe0\xae\xb5\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe\xe0\xae\xb4\xe0\xae\xa9\xe0\xaf\x8d", .day_6 = "\xe0\xae\xb5\xe0\xaf\x86\xe0\xae\xb3\xe0\xaf\x8d\xe0\xae\xb3\xe0\xae\xbf", .day_7 = "\xe0\xae\x9a\xe0\xae\xa9\xe0\xae\xbf", - .abday_1 = "\xe0\xae\x9e\xe0\xae\xbe", - .abday_2 = "\xe0\xae\xa4\xe0\xae\xbf", - .abday_3 = "\xe0\xae\x9a\xe0\xaf\x86", - .abday_4 = "\xe0\xae\xaa\xe0\xaf\x81", - .abday_5 = "\xe0\xae\xb5\xe0\xae\xbf", - .abday_6 = "\xe0\xae\xb5\xe0\xaf\x86", - .abday_7 = "\xe0\xae\x9a", + .abday_1 = "\xe0\xae\x9e\xe0\xae\xbe\xe0\xae\xaf\xe0\xae\xbf.", + .abday_2 = "\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\x99\xe0\xaf\x8d.", + .abday_3 = "\xe0\xae\x9a\xe0\xaf\x86\xe0\xae\xb5\xe0\xaf\x8d.", + .abday_4 = "\xe0\xae\xaa\xe0\xaf\x81\xe0\xae\xa4.", + .abday_5 = "\xe0\xae\xb5\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe.", + .abday_6 = "\xe0\xae\xb5\xe0\xaf\x86\xe0\xae\xb3\xe0\xaf\x8d.", + .abday_7 = "\xe0\xae\x9a\xe0\xae\xa9\xe0\xae\xbf", .mon_1 = "\xe0\xae\x9c\xe0\xae\xa9\xe0\xae\xb5\xe0\xae\xb0\xe0\xae\xbf", .mon_2 = "\xe0\xae\xaa\xe0\xae\xbf\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xb0\xe0\xae\xb5\xe0\xae\xb0\xe0\xae\xbf", .mon_3 = "\xe0\xae\xae\xe0\xae\xbe\xe0\xae\xb0\xe0\xaf\x8d\xe0\xae\x9a\xe0\xaf\x8d", @@ -3856,8 +3856,8 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .d_fmt = "%d-%m-%y", .t_fmt = "%p%I.%M.%S %Z", .t_fmt_ampm = "%p%I.%M.%S %Z", - .am_str = "\xe0\xb0\x89.", - .pm_str = "\xe0\xb0\xb8\xe0\xb0\xbe.", + .am_str = "AM", + .pm_str = "PM", .day_1 = "\xe0\xb0\x86\xe0\xb0\xa6\xe0\xb0\xbf\xe0\xb0\xb5\xe0\xb0\xbe\xe0\xb0\xb0\xe0\xb0\x82", .day_2 = "\xe0\xb0\xb8\xe0\xb1\x8b\xe0\xb0\xae\xe0\xb0\xb5\xe0\xb0\xbe\xe0\xb0\xb0\xe0\xb0\x82", .day_3 = "\xe0\xb0\xae\xe0\xb0\x82\xe0\xb0\x97\xe0\xb0\xb3\xe0\xb0\xb5\xe0\xb0\xbe\xe0\xb0\xb0\xe0\xb0\x82", @@ -3903,99 +3903,99 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .locale_name = "th_TH", .radixchar = ".", .thousands_sep = ",", - .codeset = "TIS-620", + .codeset = "UTF-8", .d_t_fmt = "%a %e %b %Ey, %H:%M:%S", .d_fmt = "%d/%m/%Ey", .t_fmt = "%H:%M:%S", .t_fmt_ampm = "%I:%M:%S %p", - .am_str = "AM", - .pm_str = "PM", - .day_1 = "\xcd\xd2\xb7\xd4\xb5\xc2\xec", - .day_2 = "\xa8\xd1\xb9\xb7\xc3\xec", - .day_3 = "\xcd\xd1\xa7\xa4\xd2\xc3", - .day_4 = "\xbe\xd8\xb8", - .day_5 = "\xbe\xc4\xcb\xd1\xca\xba\xb4\xd5", - .day_6 = "\xc8\xd8\xa1\xc3\xec", - .day_7 = "\xe0\xca\xd2\xc3\xec", - .abday_1 = "\xcd\xd2.", - .abday_2 = "\xa8.", - .abday_3 = "\xcd.", - .abday_4 = "\xbe.", - .abday_5 = "\xbe\xc4.", - .abday_6 = "\xc8.", - .abday_7 = "\xca.", - .mon_1 = "\xc1\xa1\xc3\xd2\xa4\xc1", - .mon_2 = "\xa1\xd8\xc1\xc0\xd2\xbe\xd1\xb9\xb8\xec", - .mon_3 = "\xc1\xd5\xb9\xd2\xa4\xc1", - .mon_4 = "\xe0\xc1\xc9\xd2\xc2\xb9", - .mon_5 = "\xbe\xc4\xc9\xc0\xd2\xa4\xc1", - .mon_6 = "\xc1\xd4\xb6\xd8\xb9\xd2\xc2\xb9", - .mon_7 = "\xa1\xc3\xa1\xae\xd2\xa4\xc1", - .mon_8 = "\xca\xd4\xa7\xcb\xd2\xa4\xc1", - .mon_9 = "\xa1\xd1\xb9\xc2\xd2\xc2\xb9", - .mon_10 = "\xb5\xd8\xc5\xd2\xa4\xc1", - .mon_11 = "\xbe\xc4\xc8\xa8\xd4\xa1\xd2\xc2\xb9", - .mon_12 = "\xb8\xd1\xb9\xc7\xd2\xa4\xc1", - .abmon_1 = "\xc1.\xa4.", - .abmon_2 = "\xa1.\xbe.", - .abmon_3 = "\xc1\xd5.\xa4.", - .abmon_4 = "\xe0\xc1.\xc2.", - .abmon_5 = "\xbe.\xa4.", - .abmon_6 = "\xc1\xd4.\xc2.", - .abmon_7 = "\xa1.\xa4.", - .abmon_8 = "\xca.\xa4.", - .abmon_9 = "\xa1.\xc2.", - .abmon_10 = "\xb5.\xa4.", - .abmon_11 = "\xbe.\xc2.", - .abmon_12 = "\xb8.\xa4.", - .yesexpr = "^[+1yY\xaa]", - .noexpr = "^[-0nN\xc1]", + .am_str = "\xe0\xb8\x81\xe0\xb9\x88\xe0\xb8\xad\xe0\xb8\x99\xe0\xb9\x80\xe0\xb8\x97\xe0\xb8\xb5\xe0\xb9\x88\xe0\xb8\xa2\xe0\xb8\x87", + .pm_str = "\xe0\xb8\xab\xe0\xb8\xa5\xe0\xb8\xb1\xe0\xb8\x87\xe0\xb9\x80\xe0\xb8\x97\xe0\xb8\xb5\xe0\xb9\x88\xe0\xb8\xa2\xe0\xb8\x87", + .day_1 = "\xe0\xb8\xa7\xe0\xb8\xb1\xe0\xb8\x99\xe0\xb8\xad\xe0\xb8\xb2\xe0\xb8\x97\xe0\xb8\xb4\xe0\xb8\x95\xe0\xb8\xa2\xe0\xb9\x8c", + .day_2 = "\xe0\xb8\xa7\xe0\xb8\xb1\xe0\xb8\x99\xe0\xb8\x88\xe0\xb8\xb1\xe0\xb8\x99\xe0\xb8\x97\xe0\xb8\xa3\xe0\xb9\x8c", + .day_3 = "\xe0\xb8\xa7\xe0\xb8\xb1\xe0\xb8\x99\xe0\xb8\xad\xe0\xb8\xb1\xe0\xb8\x87\xe0\xb8\x84\xe0\xb8\xb2\xe0\xb8\xa3", + .day_4 = "\xe0\xb8\xa7\xe0\xb8\xb1\xe0\xb8\x99\xe0\xb8\x9e\xe0\xb8\xb8\xe0\xb8\x98", + .day_5 = "\xe0\xb8\xa7\xe0\xb8\xb1\xe0\xb8\x99\xe0\xb8\x9e\xe0\xb8\xa4\xe0\xb8\xab\xe0\xb8\xb1\xe0\xb8\xaa\xe0\xb8\x9a\xe0\xb8\x94\xe0\xb8\xb5", + .day_6 = "\xe0\xb8\xa7\xe0\xb8\xb1\xe0\xb8\x99\xe0\xb8\xa8\xe0\xb8\xb8\xe0\xb8\x81\xe0\xb8\xa3\xe0\xb9\x8c", + .day_7 = "\xe0\xb8\xa7\xe0\xb8\xb1\xe0\xb8\x99\xe0\xb9\x80\xe0\xb8\xaa\xe0\xb8\xb2\xe0\xb8\xa3\xe0\xb9\x8c", + .abday_1 = "\xe0\xb8\xad\xe0\xb8\xb2.", + .abday_2 = "\xe0\xb8\x88.", + .abday_3 = "\xe0\xb8\xad.", + .abday_4 = "\xe0\xb8\x9e.", + .abday_5 = "\xe0\xb8\x9e\xe0\xb8\xa4.", + .abday_6 = "\xe0\xb8\xa8.", + .abday_7 = "\xe0\xb8\xaa.", + .mon_1 = "\xe0\xb8\xa1\xe0\xb8\x81\xe0\xb8\xa3\xe0\xb8\xb2\xe0\xb8\x84\xe0\xb8\xa1", + .mon_2 = "\xe0\xb8\x81\xe0\xb8\xb8\xe0\xb8\xa1\xe0\xb8\xa0\xe0\xb8\xb2\xe0\xb8\x9e\xe0\xb8\xb1\xe0\xb8\x99\xe0\xb8\x98\xe0\xb9\x8c", + .mon_3 = "\xe0\xb8\xa1\xe0\xb8\xb5\xe0\xb8\x99\xe0\xb8\xb2\xe0\xb8\x84\xe0\xb8\xa1", + .mon_4 = "\xe0\xb9\x80\xe0\xb8\xa1\xe0\xb8\xa9\xe0\xb8\xb2\xe0\xb8\xa2\xe0\xb8\x99", + .mon_5 = "\xe0\xb8\x9e\xe0\xb8\xa4\xe0\xb8\xa9\xe0\xb8\xa0\xe0\xb8\xb2\xe0\xb8\x84\xe0\xb8\xa1", + .mon_6 = "\xe0\xb8\xa1\xe0\xb8\xb4\xe0\xb8\x96\xe0\xb8\xb8\xe0\xb8\x99\xe0\xb8\xb2\xe0\xb8\xa2\xe0\xb8\x99", + .mon_7 = "\xe0\xb8\x81\xe0\xb8\xa3\xe0\xb8\x81\xe0\xb8\x8e\xe0\xb8\xb2\xe0\xb8\x84\xe0\xb8\xa1", + .mon_8 = "\xe0\xb8\xaa\xe0\xb8\xb4\xe0\xb8\x87\xe0\xb8\xab\xe0\xb8\xb2\xe0\xb8\x84\xe0\xb8\xa1", + .mon_9 = "\xe0\xb8\x81\xe0\xb8\xb1\xe0\xb8\x99\xe0\xb8\xa2\xe0\xb8\xb2\xe0\xb8\xa2\xe0\xb8\x99", + .mon_10 = "\xe0\xb8\x95\xe0\xb8\xb8\xe0\xb8\xa5\xe0\xb8\xb2\xe0\xb8\x84\xe0\xb8\xa1", + .mon_11 = "\xe0\xb8\x9e\xe0\xb8\xa4\xe0\xb8\xa8\xe0\xb8\x88\xe0\xb8\xb4\xe0\xb8\x81\xe0\xb8\xb2\xe0\xb8\xa2\xe0\xb8\x99", + .mon_12 = "\xe0\xb8\x98\xe0\xb8\xb1\xe0\xb8\x99\xe0\xb8\xa7\xe0\xb8\xb2\xe0\xb8\x84\xe0\xb8\xa1", + .abmon_1 = "\xe0\xb8\xa1.\xe0\xb8\x84.", + .abmon_2 = "\xe0\xb8\x81.\xe0\xb8\x9e.", + .abmon_3 = "\xe0\xb8\xa1\xe0\xb8\xb5.\xe0\xb8\x84.", + .abmon_4 = "\xe0\xb9\x80\xe0\xb8\xa1.\xe0\xb8\xa2.", + .abmon_5 = "\xe0\xb8\x9e.\xe0\xb8\x84.", + .abmon_6 = "\xe0\xb8\xa1\xe0\xb8\xb4.\xe0\xb8\xa2.", + .abmon_7 = "\xe0\xb8\x81.\xe0\xb8\x84.", + .abmon_8 = "\xe0\xb8\xaa.\xe0\xb8\x84.", + .abmon_9 = "\xe0\xb8\x81.\xe0\xb8\xa2.", + .abmon_10 = "\xe0\xb8\x95.\xe0\xb8\x84.", + .abmon_11 = "\xe0\xb8\x9e.\xe0\xb8\xa2.", + .abmon_12 = "\xe0\xb8\x98.\xe0\xb8\x84.", + .yesexpr = "^[+1yY\xe0\xb8\x8a]", + .noexpr = "^[-0nN\xe0\xb8\xa1]", }, { .locale_name = "tr_TR", .radixchar = ",", .thousands_sep = ".", - .codeset = "ISO-8859-9", + .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %T", .d_fmt = "%d-%m-%Y", .t_fmt = "%T", .t_fmt_ampm = "%I:%M:%S %p", - .am_str = "\xd6\xd6", - .pm_str = "\xd6S", + .am_str = "\xc3\x96\xc3\x96", + .pm_str = "\xc3\x96S", .day_1 = "Pazar", .day_2 = "Pazartesi", - .day_3 = "Sal\xfd", - .day_4 = "\xc7""ar\xfe""amba", - .day_5 = "Per\xfe""embe", + .day_3 = "Sal\xc4\xb1", + .day_4 = "\xc3\x87""ar\xc5\x9f""amba", + .day_5 = "Per\xc5\x9f""embe", .day_6 = "Cuma", .day_7 = "Cumartesi", .abday_1 = "Paz", .abday_2 = "Pzt", .abday_3 = "Sal", - .abday_4 = "\xc7r\xfe", - .abday_5 = "Pr\xfe", + .abday_4 = "\xc3\x87""ar", + .abday_5 = "Per", .abday_6 = "Cum", - .abday_7 = "Cts", + .abday_7 = "Cmt", .mon_1 = "Ocak", - .mon_2 = "\xdeubat", + .mon_2 = "\xc5\x9eubat", .mon_3 = "Mart", .mon_4 = "Nisan", - .mon_5 = "May\xfds", + .mon_5 = "May\xc4\xb1s", .mon_6 = "Haziran", .mon_7 = "Temmuz", - .mon_8 = "A\xf0ustos", - .mon_9 = "Eyl\xfcl", + .mon_8 = "A\xc4\x9fustos", + .mon_9 = "Eyl\xc3\xbcl", .mon_10 = "Ekim", - .mon_11 = "Kas\xfdm", - .mon_12 = "Aral\xfdk", + .mon_11 = "Kas\xc4\xb1m", + .mon_12 = "Aral\xc4\xb1k", .abmon_1 = "Oca", - .abmon_2 = "\xdeub", + .abmon_2 = "\xc5\x9eub", .abmon_3 = "Mar", .abmon_4 = "Nis", .abmon_5 = "May", .abmon_6 = "Haz", .abmon_7 = "Tem", - .abmon_8 = "A\xf0u", + .abmon_8 = "A\xc4\x9fu", .abmon_9 = "Eyl", .abmon_10 = "Eki", .abmon_11 = "Kas", @@ -4006,54 +4006,54 @@ constexpr LanginfoTestData kLanginfoTestData[] = { { .locale_name = "uk_UA", .radixchar = ",", - .thousands_sep = "\x9a", - .codeset = "KOI8-U", + .thousands_sep = "\xc2\xa0", + .codeset = "UTF-8", .d_t_fmt = "%a, %d-%b-%Y %X %z", .d_fmt = "%d.%m.%y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", - .day_1 = "\xce\xc5\xc4\xa6\xcc\xd1", - .day_2 = "\xd0\xcf\xce\xc5\xc4\xa6\xcc\xcf\xcb", - .day_3 = "\xd7\xa6\xd7\xd4\xcf\xd2\xcf\xcb", - .day_4 = "\xd3\xc5\xd2\xc5\xc4\xc1", - .day_5 = "\xde\xc5\xd4\xd7\xc5\xd2", - .day_6 = "\xd0'\xd1\xd4\xce\xc9\xc3\xd1", - .day_7 = "\xd3\xd5\xc2\xcf\xd4\xc1", - .abday_1 = "\xce\xc4", - .abday_2 = "\xd0\xce", - .abday_3 = "\xd7\xd4", - .abday_4 = "\xd3\xd2", - .abday_5 = "\xde\xd4", - .abday_6 = "\xd0\xd4", - .abday_7 = "\xd3\xc2", - .mon_1 = "\xd3\xa6\xde\xce\xd1", - .mon_2 = "\xcc\xc0\xd4\xcf\xc7\xcf", - .mon_3 = "\xc2\xc5\xd2\xc5\xda\xce\xd1", - .mon_4 = "\xcb\xd7\xa6\xd4\xce\xd1", - .mon_5 = "\xd4\xd2\xc1\xd7\xce\xd1", - .mon_6 = "\xde\xc5\xd2\xd7\xce\xd1", - .mon_7 = "\xcc\xc9\xd0\xce\xd1", - .mon_8 = "\xd3\xc5\xd2\xd0\xce\xd1", - .mon_9 = "\xd7\xc5\xd2\xc5\xd3\xce\xd1", - .mon_10 = "\xd6\xcf\xd7\xd4\xce\xd1", - .mon_11 = "\xcc\xc9\xd3\xd4\xcf\xd0\xc1\xc4\xc1", - .mon_12 = "\xc7\xd2\xd5\xc4\xce\xd1", - .abmon_1 = "\xd3\xa6\xde", - .abmon_2 = "\xcc\xc0\xd4", - .abmon_3 = "\xc2\xc5\xd2", - .abmon_4 = "\xcb\xd7\xa6", - .abmon_5 = "\xd4\xd2\xc1", - .abmon_6 = "\xde\xc5\xd2", - .abmon_7 = "\xcc\xc9\xd0", - .abmon_8 = "\xd3\xc5\xd2", - .abmon_9 = "\xd7\xc5\xd2", - .abmon_10 = "\xd6\xcf\xd7", - .abmon_11 = "\xcc\xc9\xd3", - .abmon_12 = "\xc7\xd2\xd5", - .yesexpr = "^([+1Yy]|[\xf4\xd4][\xe1\xc1][\xeb\xcb]?)$", - .noexpr = "^([-0Nn]|[\xee\xce][\xb6\xa6])$", + .am_str = "\xd0\xb4\xd0\xbf", + .pm_str = "\xd0\xbf\xd0\xbf", + .day_1 = "\xd0\xbd\xd0\xb5\xd0\xb4\xd1\x96\xd0\xbb\xd1\x8f", + .day_2 = "\xd0\xbf\xd0\xbe\xd0\xbd\xd0\xb5\xd0\xb4\xd1\x96\xd0\xbb\xd0\xbe\xd0\xba", + .day_3 = "\xd0\xb2\xd1\x96\xd0\xb2\xd1\x82\xd0\xbe\xd1\x80\xd0\xbe\xd0\xba", + .day_4 = "\xd1\x81\xd0\xb5\xd1\x80\xd0\xb5\xd0\xb4\xd0\xb0", + .day_5 = "\xd1\x87\xd0\xb5\xd1\x82\xd0\xb2\xd0\xb5\xd1\x80", + .day_6 = "\xd0\xbf\xca\xbc\xd1\x8f\xd1\x82\xd0\xbd\xd0\xb8\xd1\x86\xd1\x8f", + .day_7 = "\xd1\x81\xd1\x83\xd0\xb1\xd0\xbe\xd1\x82\xd0\xb0", + .abday_1 = "\xd0\xbd\xd0\xb4", + .abday_2 = "\xd0\xbf\xd0\xbd", + .abday_3 = "\xd0\xb2\xd1\x82", + .abday_4 = "\xd1\x81\xd1\x80", + .abday_5 = "\xd1\x87\xd1\x82", + .abday_6 = "\xd0\xbf\xd1\x82", + .abday_7 = "\xd1\x81\xd0\xb1", + .mon_1 = "\xd1\x81\xd1\x96\xd1\x87\xd0\xb5\xd0\xbd\xd1\x8c", + .mon_2 = "\xd0\xbb\xd1\x8e\xd1\x82\xd0\xb8\xd0\xb9", + .mon_3 = "\xd0\xb1\xd0\xb5\xd1\x80\xd0\xb5\xd0\xb7\xd0\xb5\xd0\xbd\xd1\x8c", + .mon_4 = "\xd0\xba\xd0\xb2\xd1\x96\xd1\x82\xd0\xb5\xd0\xbd\xd1\x8c", + .mon_5 = "\xd1\x82\xd1\x80\xd0\xb0\xd0\xb2\xd0\xb5\xd0\xbd\xd1\x8c", + .mon_6 = "\xd1\x87\xd0\xb5\xd1\x80\xd0\xb2\xd0\xb5\xd0\xbd\xd1\x8c", + .mon_7 = "\xd0\xbb\xd0\xb8\xd0\xbf\xd0\xb5\xd0\xbd\xd1\x8c", + .mon_8 = "\xd1\x81\xd0\xb5\xd1\x80\xd0\xbf\xd0\xb5\xd0\xbd\xd1\x8c", + .mon_9 = "\xd0\xb2\xd0\xb5\xd1\x80\xd0\xb5\xd1\x81\xd0\xb5\xd0\xbd\xd1\x8c", + .mon_10 = "\xd0\xb6\xd0\xbe\xd0\xb2\xd1\x82\xd0\xb5\xd0\xbd\xd1\x8c", + .mon_11 = "\xd0\xbb\xd0\xb8\xd1\x81\xd1\x82\xd0\xbe\xd0\xbf\xd0\xb0\xd0\xb4", + .mon_12 = "\xd0\xb3\xd1\x80\xd1\x83\xd0\xb4\xd0\xb5\xd0\xbd\xd1\x8c", + .abmon_1 = "\xd1\x81\xd1\x96\xd1\x87.", + .abmon_2 = "\xd0\xbb\xd1\x8e\xd1\x82.", + .abmon_3 = "\xd0\xb1\xd0\xb5\xd1\x80.", + .abmon_4 = "\xd0\xba\xd0\xb2\xd1\x96\xd1\x82.", + .abmon_5 = "\xd1\x82\xd1\x80\xd0\xb0\xd0\xb2.", + .abmon_6 = "\xd1\x87\xd0\xb5\xd1\x80\xd0\xb2.", + .abmon_7 = "\xd0\xbb\xd0\xb8\xd0\xbf.", + .abmon_8 = "\xd1\x81\xd0\xb5\xd1\x80\xd0\xbf.", + .abmon_9 = "\xd0\xb2\xd0\xb5\xd1\x80.", + .abmon_10 = "\xd0\xb6\xd0\xbe\xd0\xb2\xd1\x82.", + .abmon_11 = "\xd0\xbb\xd0\xb8\xd1\x81\xd1\x82.", + .abmon_12 = "\xd0\xb3\xd1\x80\xd1\x83\xd0\xb4.", + .yesexpr = "^([+1Yy]|[\xd0\xa2\xd1\x82][\xd0\x90\xd0\xb0][\xd0\x9a\xd0\xba]?)$", + .noexpr = "^([-0Nn]|[\xd0\x9d\xd0\xbd][\xd0\x86\xd1\x96])$", }, { .locale_name = "ur_PK", @@ -4064,22 +4064,22 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .d_fmt = "%d/%m/%Y", .t_fmt = "%H:%M:%S", .t_fmt_ampm = "%P %I:%M:%S", - .am_str = "\xd8\xb5", - .pm_str = "\xd8\xb4", + .am_str = "AM", + .pm_str = "PM", .day_1 = "\xd8\xa7\xd8\xaa\xd9\x88\xd8\xa7\xd8\xb1", - .day_2 = "\xd9\xbe\xd9\x8a\xd8\xb1", + .day_2 = "\xd9\xbe\xdb\x8c\xd8\xb1", .day_3 = "\xd9\x85\xd9\x86\xda\xaf\xd9\x84", .day_4 = "\xd8\xa8\xd8\xaf\xda\xbe", .day_5 = "\xd8\xac\xd9\x85\xd8\xb9\xd8\xb1\xd8\xa7\xd8\xaa", - .day_6 = "\xd8\xac\xd9\x85\xd8\xb9\xd9\x87", - .day_7 = "\xd9\x87\xd9\x81\xd8\xaa\xd9\x87", + .day_6 = "\xd8\xac\xd9\x85\xd8\xb9\xdb\x81", + .day_7 = "\xdb\x81\xd9\x81\xd8\xaa\xdb\x81", .abday_1 = "\xd8\xa7\xd8\xaa\xd9\x88\xd8\xa7\xd8\xb1", - .abday_2 = "\xd9\xbe\xd9\x8a\xd8\xb1", + .abday_2 = "\xd9\xbe\xdb\x8c\xd8\xb1", .abday_3 = "\xd9\x85\xd9\x86\xda\xaf\xd9\x84", .abday_4 = "\xd8\xa8\xd8\xaf\xda\xbe", .abday_5 = "\xd8\xac\xd9\x85\xd8\xb9\xd8\xb1\xd8\xa7\xd8\xaa", - .abday_6 = "\xd8\xac\xd9\x85\xd8\xb9\xd9\x87", - .abday_7 = "\xd9\x87\xd9\x81\xd8\xaa\xd9\x87", + .abday_6 = "\xd8\xac\xd9\x85\xd8\xb9\xdb\x81", + .abday_7 = "\xdb\x81\xd9\x81\xd8\xaa\xdb\x81", .mon_1 = "\xd8\xac\xd9\x86\xd9\x88\xd8\xb1\xdb\x8c", .mon_2 = "\xd9\x81\xd8\xb1\xd9\x88\xd8\xb1\xdb\x8c", .mon_3 = "\xd9\x85\xd8\xa7\xd8\xb1\xda\x86", @@ -4110,28 +4110,28 @@ constexpr LanginfoTestData kLanginfoTestData[] = { { .locale_name = "uz_UZ", .radixchar = ",", - .thousands_sep = "\xa0", - .codeset = "ISO-8859-1", + .thousands_sep = "\xc2\xa0", + .codeset = "UTF-8", .d_t_fmt = "%T, %d %B, %Y yil, %A", .d_fmt = "%d/%m/%y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", - .day_1 = "Yakshanba", - .day_2 = "Dushanba", - .day_3 = "Seshanba", - .day_4 = "Chorshanba", - .day_5 = "Payshanba", - .day_6 = "Juma", - .day_7 = "Shanba", + .am_str = "TO", + .pm_str = "TK", + .day_1 = "yakshanba", + .day_2 = "dushanba", + .day_3 = "seshanba", + .day_4 = "chorshanba", + .day_5 = "payshanba", + .day_6 = "juma", + .day_7 = "shanba", .abday_1 = "Yak", - .abday_2 = "Du", - .abday_3 = "Se", - .abday_4 = "Cho", + .abday_2 = "Dush", + .abday_3 = "Sesh", + .abday_4 = "Chor", .abday_5 = "Pay", - .abday_6 = "Ju", - .abday_7 = "Sha", + .abday_6 = "Jum", + .abday_7 = "Shan", .mon_1 = "Yanvar", .mon_2 = "Fevral", .mon_3 = "Mart", @@ -4168,22 +4168,22 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .d_fmt = "%d/%m/%Y", .t_fmt = "%T", .t_fmt_ampm = "%I:%M %p", - .am_str = "AM", - .pm_str = "PM", - .day_1 = "Ch\xe1\xbb\xa7 nh\xe1\xba\xadt", - .day_2 = "Th\xe1\xbb\xa9 hai", - .day_3 = "Th\xe1\xbb\xa9 ba", - .day_4 = "Th\xe1\xbb\xa9 t\xc6\xb0", - .day_5 = "Th\xe1\xbb\xa9 n\xc4\x83m", - .day_6 = "Th\xe1\xbb\xa9 s\xc3\xa1u", - .day_7 = "Th\xe1\xbb\xa9 b\xe1\xba\xa3y", + .am_str = "SA", + .pm_str = "CH", + .day_1 = "Ch\xe1\xbb\xa7 Nh\xe1\xba\xadt", + .day_2 = "Th\xe1\xbb\xa9 Hai", + .day_3 = "Th\xe1\xbb\xa9 Ba", + .day_4 = "Th\xe1\xbb\xa9 T\xc6\xb0", + .day_5 = "Th\xe1\xbb\xa9 N\xc4\x83m", + .day_6 = "Th\xe1\xbb\xa9 S\xc3\xa1u", + .day_7 = "Th\xe1\xbb\xa9 B\xe1\xba\xa3y", .abday_1 = "CN", - .abday_2 = "T2", - .abday_3 = "T3", - .abday_4 = "T4", - .abday_5 = "T5", - .abday_6 = "T6", - .abday_7 = "T7", + .abday_2 = "Th 2", + .abday_3 = "Th 3", + .abday_4 = "Th 4", + .abday_5 = "Th 5", + .abday_6 = "Th 6", + .abday_7 = "Th 7", .mon_1 = "Th\xc3\xa1ng 1", .mon_2 = "Th\xc3\xa1ng 2", .mon_3 = "Th\xc3\xa1ng 3", @@ -4196,18 +4196,18 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .mon_10 = "Th\xc3\xa1ng 10", .mon_11 = "Th\xc3\xa1ng 11", .mon_12 = "Th\xc3\xa1ng 12", - .abmon_1 = "Thg 1", - .abmon_2 = "Thg 2", - .abmon_3 = "Thg 3", - .abmon_4 = "Thg 4", - .abmon_5 = "Thg 5", - .abmon_6 = "Thg 6", - .abmon_7 = "Thg 7", - .abmon_8 = "Thg 8", - .abmon_9 = "Thg 9", - .abmon_10 = "Thg 10", - .abmon_11 = "Thg 11", - .abmon_12 = "Thg 12", + .abmon_1 = "Th\xc3\xa1ng 1", + .abmon_2 = "Th\xc3\xa1ng 2", + .abmon_3 = "Th\xc3\xa1ng 3", + .abmon_4 = "Th\xc3\xa1ng 4", + .abmon_5 = "Th\xc3\xa1ng 5", + .abmon_6 = "Th\xc3\xa1ng 6", + .abmon_7 = "Th\xc3\xa1ng 7", + .abmon_8 = "Th\xc3\xa1ng 8", + .abmon_9 = "Th\xc3\xa1ng 9", + .abmon_10 = "Th\xc3\xa1ng 10", + .abmon_11 = "Th\xc3\xa1ng 11", + .abmon_12 = "Th\xc3\xa1ng 12", .yesexpr = "^[+1yYcC]", .noexpr = "^[-0nNkK]", }, @@ -4215,20 +4215,20 @@ constexpr LanginfoTestData kLanginfoTestData[] = { .locale_name = "zu_ZA", .radixchar = ".", .thousands_sep = ",", - .codeset = "ISO-8859-1", + .codeset = "UTF-8", .d_t_fmt = "%a %d %b %Y %T", .d_fmt = "%d/%m/%Y", .t_fmt = "%T", .t_fmt_ampm = "", - .am_str = "", - .pm_str = "", - .day_1 = "iSonto", - .day_2 = "uMsombuluko", - .day_3 = "uLwesibili", - .day_4 = "uLwesithathu", - .day_5 = "uLwesine", - .day_6 = "uLwesihlanu", - .day_7 = "uMgqibelo", + .am_str = "AM", + .pm_str = "PM", + .day_1 = "ISonto", + .day_2 = "UMsombuluko", + .day_3 = "ULwesibili", + .day_4 = "ULwesithathu", + .day_5 = "ULwesine", + .day_6 = "ULwesihlanu", + .day_7 = "UMgqibelo", .abday_1 = "Son", .abday_2 = "Mso", .abday_3 = "Bil", diff --git a/starboard/raspi/2/skia/system_get_extensions.cc b/starboard/raspi/2/skia/system_get_extensions.cc index 0aef89bffd18..839ed5352eb4 100644 --- a/starboard/raspi/2/skia/system_get_extensions.cc +++ b/starboard/raspi/2/skia/system_get_extensions.cc @@ -12,10 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/system.h" +// clang-format on + #include "starboard/common/string.h" #include "starboard/extension/configuration.h" #include "starboard/raspi/2/skia/configuration.h" -#include "starboard/system.h" const void* SbSystemGetExtension(const char* name) { if (strcmp(name, kCobaltExtensionConfigurationName) == 0) { diff --git a/starboard/raspi/shared/media_is_video_supported.cc b/starboard/raspi/shared/media_is_video_supported.cc index 34ff5e1494f4..290766995673 100644 --- a/starboard/raspi/shared/media_is_video_supported.cc +++ b/starboard/raspi/shared/media_is_video_supported.cc @@ -12,10 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/shared/starboard/media/media_support_internal.h" +// clang-format on + #include "starboard/configuration.h" #include "starboard/configuration_constants.h" #include "starboard/media.h" -#include "starboard/shared/starboard/media/media_support_internal.h" #include "starboard/shared/starboard/media/media_util.h" // Need this nested namespace to prevent breaking RDK build on CI. diff --git a/starboard/raspi/shared/open_max/decode_target_internal.h b/starboard/raspi/shared/open_max/decode_target_internal.h index 8ef4157f4893..ecd10a850f75 100644 --- a/starboard/raspi/shared/open_max/decode_target_internal.h +++ b/starboard/raspi/shared/open_max/decode_target_internal.h @@ -15,12 +15,14 @@ #ifndef STARBOARD_RASPI_SHARED_OPEN_MAX_DECODE_TARGET_INTERNAL_H_ #define STARBOARD_RASPI_SHARED_OPEN_MAX_DECODE_TARGET_INTERNAL_H_ +// clang-format off +#include "starboard/decode_target.h" +// clang-format on + #include #include #include -#include "starboard/decode_target.h" - struct SbDecodeTargetPrivate { EGLDisplay display; EGLImageKHR images[1]; diff --git a/starboard/raspi/shared/open_max/decode_target_release.cc b/starboard/raspi/shared/open_max/decode_target_release.cc index 3c4fc07bb497..325112d15c18 100644 --- a/starboard/raspi/shared/open_max/decode_target_release.cc +++ b/starboard/raspi/shared/open_max/decode_target_release.cc @@ -12,12 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/decode_target.h" +// clang-format on + #include #include #include "starboard/common/check_op.h" #include "starboard/common/log.h" -#include "starboard/decode_target.h" #include "starboard/raspi/shared/open_max/decode_target_internal.h" void SbDecodeTargetRelease(SbDecodeTarget target) { diff --git a/starboard/raspi/shared/system_get_property.cc b/starboard/raspi/shared/system_get_property.cc index 95be70be00ba..c3324de1e711 100644 --- a/starboard/raspi/shared/system_get_property.cc +++ b/starboard/raspi/shared/system_get_property.cc @@ -12,6 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/system.h" +// clang-format on + #include #include @@ -22,7 +26,6 @@ #include "starboard/common/log.h" #include "starboard/common/string.h" #include "starboard/shared/environment.h" -#include "starboard/system.h" namespace { diff --git a/starboard/raspi/shared/thread_create_priority.cc b/starboard/raspi/shared/thread_create_priority.cc index 13d08be482ac..e34cf3ed56b9 100644 --- a/starboard/raspi/shared/thread_create_priority.cc +++ b/starboard/raspi/shared/thread_create_priority.cc @@ -12,13 +12,16 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/thread.h" +// clang-format on + #include #include #include "starboard/common/check_op.h" #include "starboard/common/log.h" #include "starboard/configuration_constants.h" -#include "starboard/thread.h" namespace { diff --git a/starboard/raspi/shared/window_create.cc b/starboard/raspi/shared/window_create.cc index 8c344c30380a..1b7cb0acbc97 100644 --- a/starboard/raspi/shared/window_create.cc +++ b/starboard/raspi/shared/window_create.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/raspi/shared/application_dispmanx.h" +// clang-format off #include "starboard/window.h" +// clang-format on + +#include "starboard/raspi/shared/application_dispmanx.h" SbWindow SbWindowCreate(const SbWindowOptions* options) { return starboard::ApplicationDispmanx::Get()->CreateWindow(options); diff --git a/starboard/raspi/shared/window_destroy.cc b/starboard/raspi/shared/window_destroy.cc index 2da30e7d6bdc..a013961c615c 100644 --- a/starboard/raspi/shared/window_destroy.cc +++ b/starboard/raspi/shared/window_destroy.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/raspi/shared/application_dispmanx.h" +// clang-format off #include "starboard/window.h" +// clang-format on + +#include "starboard/raspi/shared/application_dispmanx.h" bool SbWindowDestroy(SbWindow window) { return starboard::ApplicationDispmanx::Get()->DestroyWindow(window); diff --git a/starboard/raspi/shared/window_get_platform_handle.cc b/starboard/raspi/shared/window_get_platform_handle.cc index 71b606b5976c..a489942eea1b 100644 --- a/starboard/raspi/shared/window_get_platform_handle.cc +++ b/starboard/raspi/shared/window_get_platform_handle.cc @@ -12,9 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/window.h" +// clang-format on + #include "starboard/raspi/shared/application_dispmanx.h" #include "starboard/raspi/shared/window_internal.h" -#include "starboard/window.h" void* SbWindowGetPlatformHandle(SbWindow window) { if (!SbWindowIsValid(window)) { diff --git a/starboard/raspi/shared/window_get_size.cc b/starboard/raspi/shared/window_get_size.cc index 8e4377ee51f8..ec7a9cc00fcf 100644 --- a/starboard/raspi/shared/window_get_size.cc +++ b/starboard/raspi/shared/window_get_size.cc @@ -12,9 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/window.h" +// clang-format on + #include "starboard/common/log.h" #include "starboard/raspi/shared/window_internal.h" -#include "starboard/window.h" bool SbWindowGetSize(SbWindow window, SbWindowSize* size) { if (!SbWindowIsValid(window)) { diff --git a/starboard/shared/enhanced_audio/player_write_samples_checked.cc b/starboard/shared/enhanced_audio/player_write_samples_checked.cc index 30311fdd0582..9f379080491d 100644 --- a/starboard/shared/enhanced_audio/player_write_samples_checked.cc +++ b/starboard/shared/enhanced_audio/player_write_samples_checked.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/common/log.h" +// clang-format off #include "starboard/player.h" +// clang-format on + +#include "starboard/common/log.h" // Special implementation of `SbPlayerWriteSample2()` for EnhancedAudio, where // all sample writes should use the `PlayerWriteSamples()` function provided by diff --git a/starboard/shared/ffmpeg/ffmpeg_dynamic_load_audio_decoder_impl.cc b/starboard/shared/ffmpeg/ffmpeg_dynamic_load_audio_decoder_impl.cc index a71ffef8e56a..7f65852e8b35 100644 --- a/starboard/shared/ffmpeg/ffmpeg_dynamic_load_audio_decoder_impl.cc +++ b/starboard/shared/ffmpeg/ffmpeg_dynamic_load_audio_decoder_impl.cc @@ -12,11 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/shared/ffmpeg/ffmpeg_audio_decoder.h" +// clang-format on + // This file contains the creation of the specialized AudioDecoderImpl object // corresponding to the version of the dynamically loaded ffmpeg library. #include "starboard/player.h" -#include "starboard/shared/ffmpeg/ffmpeg_audio_decoder.h" #include "starboard/shared/ffmpeg/ffmpeg_audio_decoder_impl_interface.h" #include "starboard/shared/ffmpeg/ffmpeg_dispatch.h" #include "starboard/shared/starboard/media/media_util.h" diff --git a/starboard/shared/ffmpeg/ffmpeg_dynamic_load_video_decoder_impl.cc b/starboard/shared/ffmpeg/ffmpeg_dynamic_load_video_decoder_impl.cc index d395fa6e8ebe..783d345f940b 100644 --- a/starboard/shared/ffmpeg/ffmpeg_dynamic_load_video_decoder_impl.cc +++ b/starboard/shared/ffmpeg/ffmpeg_dynamic_load_video_decoder_impl.cc @@ -12,13 +12,16 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/shared/ffmpeg/ffmpeg_video_decoder.h" +// clang-format on + // This file contains the creation of the specialized VideoDecoderImpl object // corresponding to the version of the dynamically loaded ffmpeg library. #include "starboard/log.h" #include "starboard/player.h" #include "starboard/shared/ffmpeg/ffmpeg_dispatch.h" -#include "starboard/shared/ffmpeg/ffmpeg_video_decoder.h" #include "starboard/shared/ffmpeg/ffmpeg_video_decoder_impl_interface.h" namespace starboard { diff --git a/starboard/shared/ffmpeg/ffmpeg_linked_audio_decoder_impl.cc b/starboard/shared/ffmpeg/ffmpeg_linked_audio_decoder_impl.cc index 13be413926f1..ca3cd467e71d 100644 --- a/starboard/shared/ffmpeg/ffmpeg_linked_audio_decoder_impl.cc +++ b/starboard/shared/ffmpeg/ffmpeg_linked_audio_decoder_impl.cc @@ -12,11 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/shared/ffmpeg/ffmpeg_audio_decoder.h" +// clang-format on + // This file contains the creation of the specialized AudioDecoderImpl object // corresponding to the version of the linked ffmpeg library. #include "starboard/player.h" -#include "starboard/shared/ffmpeg/ffmpeg_audio_decoder.h" #include "starboard/shared/ffmpeg/ffmpeg_audio_decoder_impl.h" #include "starboard/shared/ffmpeg/ffmpeg_common.h" #include "starboard/shared/ffmpeg/ffmpeg_dispatch.h" diff --git a/starboard/shared/ffmpeg/ffmpeg_linked_dispatch_impl.cc b/starboard/shared/ffmpeg/ffmpeg_linked_dispatch_impl.cc index 634f27cafb2a..cc9227ad19d7 100644 --- a/starboard/shared/ffmpeg/ffmpeg_linked_dispatch_impl.cc +++ b/starboard/shared/ffmpeg/ffmpeg_linked_dispatch_impl.cc @@ -12,6 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/shared/ffmpeg/ffmpeg_dispatch.h" +// clang-format on + // This file implements the FFMPEGDispatch interface for a library linked // directly, or which the symbols are already available in the global namespace. @@ -24,7 +28,6 @@ #include "starboard/common/once.h" #include "starboard/common/string.h" #include "starboard/shared/ffmpeg/ffmpeg_common.h" -#include "starboard/shared/ffmpeg/ffmpeg_dispatch.h" #include "starboard/shared/starboard/lazy_initialization_internal.h" namespace starboard { diff --git a/starboard/shared/ffmpeg/ffmpeg_linked_video_decoder_impl.cc b/starboard/shared/ffmpeg/ffmpeg_linked_video_decoder_impl.cc index e15120f6a045..ebdf85b8e589 100644 --- a/starboard/shared/ffmpeg/ffmpeg_linked_video_decoder_impl.cc +++ b/starboard/shared/ffmpeg/ffmpeg_linked_video_decoder_impl.cc @@ -12,6 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/shared/ffmpeg/ffmpeg_video_decoder.h" +// clang-format on + // This file contains the creation of the specialized VideoDecoderImpl object // corresponding to the version of the linked ffmpeg library. @@ -19,7 +23,6 @@ #include "starboard/player.h" #include "starboard/shared/ffmpeg/ffmpeg_common.h" #include "starboard/shared/ffmpeg/ffmpeg_dispatch.h" -#include "starboard/shared/ffmpeg/ffmpeg_video_decoder.h" #include "starboard/shared/ffmpeg/ffmpeg_video_decoder_impl.h" namespace starboard { diff --git a/starboard/shared/linux/system_get_random_data.cc b/starboard/shared/linux/system_get_random_data.cc index 11bce1fc486d..85b14e7905b8 100644 --- a/starboard/shared/linux/system_get_random_data.cc +++ b/starboard/shared/linux/system_get_random_data.cc @@ -12,6 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/system.h" +// clang-format on + // Adapted from base/rand_util_posix.cc #include @@ -21,7 +25,6 @@ #include "starboard/common/check_op.h" #include "starboard/common/file.h" #include "starboard/common/log.h" -#include "starboard/system.h" namespace { diff --git a/starboard/shared/linux/system_get_total_cpu_memory.cc b/starboard/shared/linux/system_get_total_cpu_memory.cc index 2650587755a4..05baf91da73e 100644 --- a/starboard/shared/linux/system_get_total_cpu_memory.cc +++ b/starboard/shared/linux/system_get_total_cpu_memory.cc @@ -12,10 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/system.h" +// clang-format on + #include #include "starboard/common/log.h" -#include "starboard/system.h" int64_t SbSystemGetTotalCPUMemory() { long pages = sysconf(_SC_PHYS_PAGES); // NOLINT[runtime/int] diff --git a/starboard/shared/linux/system_get_used_cpu_memory.cc b/starboard/shared/linux/system_get_used_cpu_memory.cc index a08b57b09ec4..f6e8f075d9e1 100644 --- a/starboard/shared/linux/system_get_used_cpu_memory.cc +++ b/starboard/shared/linux/system_get_used_cpu_memory.cc @@ -12,6 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/system.h" +// clang-format on + #include #include #include @@ -22,7 +26,6 @@ #include "starboard/common/file.h" #include "starboard/common/log.h" #include "starboard/common/string.h" -#include "starboard/system.h" // We find the current amount of used memory on Linux by opening // '/proc/self/status' and scan the file for its "VmRSS" and "VmSwap" entries. diff --git a/starboard/shared/linux/system_is_debugger_attached.cc b/starboard/shared/linux/system_is_debugger_attached.cc index 5bfc84cac1db..683f1bb50954 100644 --- a/starboard/shared/linux/system_is_debugger_attached.cc +++ b/starboard/shared/linux/system_is_debugger_attached.cc @@ -12,6 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/system.h" +// clang-format on + #include #include #include @@ -21,7 +25,6 @@ #include "starboard/common/log.h" #include "starboard/shared/posix/file_internal.h" #include "starboard/shared/posix/handle_eintr.h" -#include "starboard/system.h" // Adapted from base/debug/debugger_posix.cc bool SbSystemIsDebuggerAttached() { diff --git a/starboard/shared/linux/thread_get_id.cc b/starboard/shared/linux/thread_get_id.cc index 432a60c22d01..0576b6a14241 100644 --- a/starboard/shared/linux/thread_get_id.cc +++ b/starboard/shared/linux/thread_get_id.cc @@ -12,12 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/thread.h" +// clang-format on + #include #include #include -#include "starboard/thread.h" - SbThreadId SbThreadGetId() { // This is not portable outside of Linux. return static_cast(syscall(SYS_gettid)); diff --git a/starboard/shared/posix/file_atomic_replace.cc b/starboard/shared/posix/file_atomic_replace.cc index ef6823ca5b71..7b643faf69e4 100644 --- a/starboard/shared/posix/file_atomic_replace.cc +++ b/starboard/shared/posix/file_atomic_replace.cc @@ -12,6 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/file.h" +// clang-format on + #include #include @@ -21,7 +25,6 @@ #include "starboard/common/log.h" #include "starboard/common/string.h" #include "starboard/configuration_constants.h" -#include "starboard/file.h" #include "starboard/shared/starboard/file_atomic_replace_write_file.h" namespace { diff --git a/starboard/shared/posix/log_flush.cc b/starboard/shared/posix/log_flush.cc index 5a230258bf23..1d8f10fb5e92 100644 --- a/starboard/shared/posix/log_flush.cc +++ b/starboard/shared/posix/log_flush.cc @@ -12,11 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/common/log.h" +// clang-format on + #include #include -#include "starboard/common/log.h" - void SbLogFlush() { fflush(stderr); } diff --git a/starboard/shared/posix/log_format.cc b/starboard/shared/posix/log_format.cc index 8af5b1154d46..c11299bb5598 100644 --- a/starboard/shared/posix/log_format.cc +++ b/starboard/shared/posix/log_format.cc @@ -12,11 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/common/log.h" +// clang-format on + #include #include #include -#include "starboard/common/log.h" #include "starboard/shared/posix/handle_eintr.h" void SbLogFormat(const char* format, va_list arguments) { diff --git a/starboard/shared/posix/log_raw.cc b/starboard/shared/posix/log_raw.cc index d1647575c7d6..df0de4caff0c 100644 --- a/starboard/shared/posix/log_raw.cc +++ b/starboard/shared/posix/log_raw.cc @@ -12,10 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/common/log.h" +// clang-format on + #include #include -#include "starboard/common/log.h" #include "starboard/shared/posix/handle_eintr.h" void SbLogRaw(const char* message) { diff --git a/starboard/shared/posix/storage_write_record.cc b/starboard/shared/posix/storage_write_record.cc index a1a304acb1fb..dcafb50ae849 100644 --- a/starboard/shared/posix/storage_write_record.cc +++ b/starboard/shared/posix/storage_write_record.cc @@ -12,6 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/common/storage.h" +// clang-format on + #include #include @@ -20,7 +24,6 @@ #include "starboard/common/file.h" #include "starboard/common/log.h" -#include "starboard/common/storage.h" #include "starboard/common/string.h" #include "starboard/configuration_constants.h" #include "starboard/shared/starboard/file_storage/storage_internal.h" diff --git a/starboard/shared/posix/system_break_into_debugger.cc b/starboard/shared/posix/system_break_into_debugger.cc index a6727d7b57f0..ab9281b8a15e 100644 --- a/starboard/shared/posix/system_break_into_debugger.cc +++ b/starboard/shared/posix/system_break_into_debugger.cc @@ -12,9 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include - +// clang-format off #include "starboard/system.h" +// clang-format on + +#include void SbSystemBreakIntoDebugger() { #if defined(NDEBUG) diff --git a/starboard/shared/posix/system_clear_last_error.cc b/starboard/shared/posix/system_clear_last_error.cc index 0a9ca5203670..76174626328c 100644 --- a/starboard/shared/posix/system_clear_last_error.cc +++ b/starboard/shared/posix/system_clear_last_error.cc @@ -12,9 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include - +// clang-format off #include "starboard/system.h" +// clang-format on + +#include void SbSystemClearLastError() { errno = 0; diff --git a/starboard/shared/posix/system_get_last_error.cc b/starboard/shared/posix/system_get_last_error.cc index 7e2e5b9a458e..3cd6357c82bd 100644 --- a/starboard/shared/posix/system_get_last_error.cc +++ b/starboard/shared/posix/system_get_last_error.cc @@ -12,9 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include - +// clang-format off #include "starboard/system.h" +// clang-format on + +#include SbSystemError SbSystemGetLastError() { return errno; diff --git a/starboard/shared/posix/system_get_locale_id.cc b/starboard/shared/posix/system_get_locale_id.cc index ef7af737f17d..118b37109b93 100644 --- a/starboard/shared/posix/system_get_locale_id.cc +++ b/starboard/shared/posix/system_get_locale_id.cc @@ -12,11 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/system.h" +// clang-format on + #include // for setlocale and LC_* #include // for getenv #include "starboard/common/string.h" -#include "starboard/system.h" namespace { bool IsValidId(const char* posix_id) { diff --git a/starboard/shared/posix/system_get_number_of_processors.cc b/starboard/shared/posix/system_get_number_of_processors.cc index daa1c3b5d767..3962b47c277d 100644 --- a/starboard/shared/posix/system_get_number_of_processors.cc +++ b/starboard/shared/posix/system_get_number_of_processors.cc @@ -10,12 +10,15 @@ // 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. +// limitations under the. + +// clang-format off +#include "starboard/system.h" +// clang-format on #include #include "starboard/common/log.h" -#include "starboard/system.h" int SbSystemGetNumberOfProcessors() { // It seems that sysconf returns the number of "logical" processors on both diff --git a/starboard/shared/pthread/thread_context_get_pointer.cc b/starboard/shared/pthread/thread_context_get_pointer.cc index 1ea613f3c592..8cb66efc2d3a 100644 --- a/starboard/shared/pthread/thread_context_get_pointer.cc +++ b/starboard/shared/pthread/thread_context_get_pointer.cc @@ -12,11 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/thread.h" +// clang-format on + #include #include "starboard/common/log.h" #include "starboard/shared/pthread/thread_context_internal.h" -#include "starboard/thread.h" bool SbThreadContextGetPointer(SbThreadContext context, SbThreadContextProperty property, diff --git a/starboard/shared/signal/crash_signals_sigaction.cc b/starboard/shared/signal/crash_signals_sigaction.cc index 521dc291d27d..100b672880e4 100644 --- a/starboard/shared/signal/crash_signals_sigaction.cc +++ b/starboard/shared/signal/crash_signals_sigaction.cc @@ -12,11 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/shared/signal/crash_signals.h" +// clang-format on + #include #include "starboard/common/log.h" #include "starboard/configuration.h" -#include "starboard/shared/signal/crash_signals.h" #include "starboard/shared/signal/signal_internal.h" #include "starboard/system.h" diff --git a/starboard/shared/signal/system_request_conceal.cc b/starboard/shared/signal/system_request_conceal.cc index 1ec36e7dbe2f..1f97d5cff24a 100644 --- a/starboard/shared/signal/system_request_conceal.cc +++ b/starboard/shared/signal/system_request_conceal.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/shared/starboard/application.h" +// clang-format off #include "starboard/system.h" +// clang-format on + +#include "starboard/shared/starboard/application.h" void SbSystemRequestConceal() { starboard::Application::Get()->Conceal(NULL, NULL); diff --git a/starboard/shared/signal/system_request_freeze.cc b/starboard/shared/signal/system_request_freeze.cc index c9e5a30f05a0..d9b8456e23db 100644 --- a/starboard/shared/signal/system_request_freeze.cc +++ b/starboard/shared/signal/system_request_freeze.cc @@ -12,9 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/system.h" +// clang-format on + #include "starboard/shared/signal/signal_internal.h" #include "starboard/shared/starboard/application.h" -#include "starboard/system.h" #if SB_IS(EVERGREEN_COMPATIBLE) && !SB_IS(EVERGREEN_COMPATIBLE_LITE) #include "starboard/loader_app/pending_restart.h" diff --git a/starboard/shared/speechd/speech_synthesis_cancel.cc b/starboard/shared/speechd/speech_synthesis_cancel.cc index a85991a041d5..7d8bb84f6c5b 100644 --- a/starboard/shared/speechd/speech_synthesis_cancel.cc +++ b/starboard/shared/speechd/speech_synthesis_cancel.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/shared/speechd/speechd_internal.h" +// clang-format off #include "starboard/speech_synthesis.h" +// clang-format on + +#include "starboard/shared/speechd/speechd_internal.h" using starboard::shared::speechd::SpeechDispatcher; diff --git a/starboard/shared/speechd/speech_synthesis_speak.cc b/starboard/shared/speechd/speech_synthesis_speak.cc index 3c40318a0136..6bee06a84af7 100644 --- a/starboard/shared/speechd/speech_synthesis_speak.cc +++ b/starboard/shared/speechd/speech_synthesis_speak.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/shared/speechd/speechd_internal.h" +// clang-format off #include "starboard/speech_synthesis.h" +// clang-format on + +#include "starboard/shared/speechd/speechd_internal.h" using starboard::shared::speechd::SpeechDispatcher; diff --git a/starboard/shared/starboard/audio_sink/audio_sink_create.cc b/starboard/shared/starboard/audio_sink/audio_sink_create.cc index ac23ac64e4d6..e8f4cee2e811 100644 --- a/starboard/shared/starboard/audio_sink/audio_sink_create.cc +++ b/starboard/shared/starboard/audio_sink/audio_sink_create.cc @@ -12,7 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off #include "starboard/audio_sink.h" +// clang-format on + #include "starboard/common/log.h" #include "starboard/shared/starboard/audio_sink/audio_sink_internal.h" diff --git a/starboard/shared/starboard/audio_sink/audio_sink_destroy.cc b/starboard/shared/starboard/audio_sink/audio_sink_destroy.cc index 7fe47aaa2d7f..3179ad9d109e 100644 --- a/starboard/shared/starboard/audio_sink/audio_sink_destroy.cc +++ b/starboard/shared/starboard/audio_sink/audio_sink_destroy.cc @@ -12,7 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off #include "starboard/audio_sink.h" +// clang-format on + #include "starboard/common/log.h" #include "starboard/shared/starboard/audio_sink/audio_sink_internal.h" diff --git a/starboard/shared/starboard/audio_sink/audio_sink_get_min_buffer_size_in_frames.cc b/starboard/shared/starboard/audio_sink/audio_sink_get_min_buffer_size_in_frames.cc index c40a80f83421..d873aef71c40 100644 --- a/starboard/shared/starboard/audio_sink/audio_sink_get_min_buffer_size_in_frames.cc +++ b/starboard/shared/starboard/audio_sink/audio_sink_get_min_buffer_size_in_frames.cc @@ -12,7 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off #include "starboard/audio_sink.h" +// clang-format on + #include "starboard/common/log.h" int SbAudioSinkGetMinBufferSizeInFrames(int channels, diff --git a/starboard/shared/starboard/audio_sink/audio_sink_get_nearest_supported_sample_frequency.cc b/starboard/shared/starboard/audio_sink/audio_sink_get_nearest_supported_sample_frequency.cc index 3c72f37f87f4..beb9796e05e8 100644 --- a/starboard/shared/starboard/audio_sink/audio_sink_get_nearest_supported_sample_frequency.cc +++ b/starboard/shared/starboard/audio_sink/audio_sink_get_nearest_supported_sample_frequency.cc @@ -12,7 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off #include "starboard/audio_sink.h" +// clang-format on + #include "starboard/common/log.h" int SbAudioSinkGetNearestSupportedSampleFrequency(int sampling_frequency_hz) { diff --git a/starboard/shared/starboard/audio_sink/audio_sink_internal.h b/starboard/shared/starboard/audio_sink/audio_sink_internal.h index 2dd851d79be0..9aeebdca2fb2 100644 --- a/starboard/shared/starboard/audio_sink/audio_sink_internal.h +++ b/starboard/shared/starboard/audio_sink/audio_sink_internal.h @@ -15,10 +15,13 @@ #ifndef STARBOARD_SHARED_STARBOARD_AUDIO_SINK_AUDIO_SINK_INTERNAL_H_ #define STARBOARD_SHARED_STARBOARD_AUDIO_SINK_AUDIO_SINK_INTERNAL_H_ +// clang-format off +#include "starboard/audio_sink.h" +// clang-format on + #include #include -#include "starboard/audio_sink.h" #include "starboard/configuration.h" #include "starboard/shared/internal_only.h" diff --git a/starboard/shared/starboard/audio_sink/audio_sink_is_valid.cc b/starboard/shared/starboard/audio_sink/audio_sink_is_valid.cc index f20a2234aff9..a7cb77c8c29d 100644 --- a/starboard/shared/starboard/audio_sink/audio_sink_is_valid.cc +++ b/starboard/shared/starboard/audio_sink/audio_sink_is_valid.cc @@ -12,7 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off #include "starboard/audio_sink.h" +// clang-format on + #include "starboard/shared/starboard/audio_sink/audio_sink_internal.h" bool SbAudioSinkIsValid(SbAudioSink audio_sink) { diff --git a/starboard/shared/starboard/decode_target/decode_target_get_info.cc b/starboard/shared/starboard/decode_target/decode_target_get_info.cc index 3de92e375821..0e086511e462 100644 --- a/starboard/shared/starboard/decode_target/decode_target_get_info.cc +++ b/starboard/shared/starboard/decode_target/decode_target_get_info.cc @@ -12,9 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/decode_target.h" +// clang-format on + #include "starboard/common/log.h" #include "starboard/common/memory.h" -#include "starboard/decode_target.h" #include "starboard/shared/starboard/decode_target/decode_target_internal.h" bool SbDecodeTargetGetInfo(SbDecodeTarget decode_target, diff --git a/starboard/shared/starboard/decode_target/decode_target_internal.h b/starboard/shared/starboard/decode_target/decode_target_internal.h index 09b610ffc1e9..391c582e3c5b 100644 --- a/starboard/shared/starboard/decode_target/decode_target_internal.h +++ b/starboard/shared/starboard/decode_target/decode_target_internal.h @@ -15,8 +15,11 @@ #ifndef STARBOARD_SHARED_STARBOARD_DECODE_TARGET_DECODE_TARGET_INTERNAL_H_ #define STARBOARD_SHARED_STARBOARD_DECODE_TARGET_DECODE_TARGET_INTERNAL_H_ -#include "starboard/common/ref_counted.h" +// clang-format off #include "starboard/decode_target.h" +// clang-format on + +#include "starboard/common/ref_counted.h" struct SbDecodeTargetPrivate : starboard::RefCounted { SbDecodeTargetPrivate() = default; diff --git a/starboard/shared/starboard/decode_target/decode_target_release.cc b/starboard/shared/starboard/decode_target/decode_target_release.cc index 50445cce5250..4dcb15d647bf 100644 --- a/starboard/shared/starboard/decode_target/decode_target_release.cc +++ b/starboard/shared/starboard/decode_target/decode_target_release.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/common/log.h" +// clang-format off #include "starboard/decode_target.h" +// clang-format on + +#include "starboard/common/log.h" #include "starboard/shared/starboard/decode_target/decode_target_internal.h" void SbDecodeTargetRelease(SbDecodeTarget decode_target) { diff --git a/starboard/shared/starboard/drm/drm_close_session.cc b/starboard/shared/starboard/drm/drm_close_session.cc index 9f5b0d08c963..59dcdaf81fc3 100644 --- a/starboard/shared/starboard/drm/drm_close_session.cc +++ b/starboard/shared/starboard/drm/drm_close_session.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/common/log.h" +// clang-format off #include "starboard/drm.h" +// clang-format on + +#include "starboard/common/log.h" #include "starboard/shared/starboard/drm/drm_system_internal.h" void SbDrmCloseSession(SbDrmSystem drm_system, diff --git a/starboard/shared/starboard/drm/drm_destroy_system.cc b/starboard/shared/starboard/drm/drm_destroy_system.cc index 1874a3e37010..f679c9285d82 100644 --- a/starboard/shared/starboard/drm/drm_destroy_system.cc +++ b/starboard/shared/starboard/drm/drm_destroy_system.cc @@ -12,7 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off #include "starboard/drm.h" +// clang-format on + #include "starboard/shared/starboard/drm/drm_system_internal.h" void SbDrmDestroySystem(SbDrmSystem drm_system) { diff --git a/starboard/shared/starboard/drm/drm_generate_session_update_request.cc b/starboard/shared/starboard/drm/drm_generate_session_update_request.cc index a81a1701f14a..f16a0fbce111 100644 --- a/starboard/shared/starboard/drm/drm_generate_session_update_request.cc +++ b/starboard/shared/starboard/drm/drm_generate_session_update_request.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/common/log.h" +// clang-format off #include "starboard/drm.h" +// clang-format on + +#include "starboard/common/log.h" #include "starboard/shared/starboard/drm/drm_system_internal.h" void SbDrmGenerateSessionUpdateRequest(SbDrmSystem drm_system, diff --git a/starboard/shared/starboard/drm/drm_get_metrics.cc b/starboard/shared/starboard/drm/drm_get_metrics.cc index 9018efee9e0e..17114374500f 100644 --- a/starboard/shared/starboard/drm/drm_get_metrics.cc +++ b/starboard/shared/starboard/drm/drm_get_metrics.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/common/log.h" +// clang-format off #include "starboard/drm.h" +// clang-format on + +#include "starboard/common/log.h" #include "starboard/shared/starboard/drm/drm_system_internal.h" const void* SbDrmGetMetrics(SbDrmSystem drm_system, int* size) { diff --git a/starboard/shared/starboard/drm/drm_is_server_certificate_updatable.cc b/starboard/shared/starboard/drm/drm_is_server_certificate_updatable.cc index 05316e6892b3..df43a1150414 100644 --- a/starboard/shared/starboard/drm/drm_is_server_certificate_updatable.cc +++ b/starboard/shared/starboard/drm/drm_is_server_certificate_updatable.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/common/log.h" +// clang-format off #include "starboard/drm.h" +// clang-format on + +#include "starboard/common/log.h" #include "starboard/shared/starboard/drm/drm_system_internal.h" bool SbDrmIsServerCertificateUpdatable(SbDrmSystem drm_system) { diff --git a/starboard/shared/starboard/drm/drm_update_server_certificate.cc b/starboard/shared/starboard/drm/drm_update_server_certificate.cc index 82f756fa1d93..8618b7c837d6 100644 --- a/starboard/shared/starboard/drm/drm_update_server_certificate.cc +++ b/starboard/shared/starboard/drm/drm_update_server_certificate.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/common/log.h" +// clang-format off #include "starboard/drm.h" +// clang-format on + +#include "starboard/common/log.h" #include "starboard/shared/starboard/drm/drm_system_internal.h" void SbDrmUpdateServerCertificate(SbDrmSystem drm_system, diff --git a/starboard/shared/starboard/drm/drm_update_session.cc b/starboard/shared/starboard/drm/drm_update_session.cc index ecf783143d32..fd543be053fa 100644 --- a/starboard/shared/starboard/drm/drm_update_session.cc +++ b/starboard/shared/starboard/drm/drm_update_session.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/common/log.h" +// clang-format off #include "starboard/drm.h" +// clang-format on + +#include "starboard/common/log.h" #include "starboard/shared/starboard/drm/drm_system_internal.h" void SbDrmUpdateSession(SbDrmSystem drm_system, diff --git a/starboard/shared/starboard/event_cancel.cc b/starboard/shared/starboard/event_cancel.cc index e2115083b29e..e59f4f8bc5a4 100644 --- a/starboard/shared/starboard/event_cancel.cc +++ b/starboard/shared/starboard/event_cancel.cc @@ -12,7 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off #include "starboard/event.h" +// clang-format on + #include "starboard/shared/starboard/application.h" void SbEventCancel(SbEventId event_id) { diff --git a/starboard/shared/starboard/event_schedule.cc b/starboard/shared/starboard/event_schedule.cc index ac01581db298..84ae5d26f54d 100644 --- a/starboard/shared/starboard/event_schedule.cc +++ b/starboard/shared/starboard/event_schedule.cc @@ -12,7 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off #include "starboard/event.h" +// clang-format on + #include "starboard/shared/starboard/application.h" SbEventId SbEventSchedule(SbEventCallback callback, diff --git a/starboard/shared/starboard/feature_list.cc b/starboard/shared/starboard/feature_list.cc index 86af05f0bed6..086350ac1a81 100644 --- a/starboard/shared/starboard/feature_list.cc +++ b/starboard/shared/starboard/feature_list.cc @@ -147,6 +147,11 @@ void FeatureList::ValidateParam(const std::string& feature_name, // static bool FeatureList::IsEnabled(const SbFeature& feature) { + return IsEnabledByName(feature.name); +} + +// static +bool FeatureList::IsEnabledByName(const std::string& feature_name) { FeatureList* instance = GetInstance(); std::lock_guard lock(instance->mutex_); @@ -155,9 +160,9 @@ bool FeatureList::IsEnabled(const SbFeature& feature) { << "Starboard features and parameters are not initialized."; const auto& feature_map = instance->features_; - auto feature_it = feature_map.find(feature.name); + auto feature_it = feature_map.find(feature_name); SB_CHECK(feature_it != feature_map.end()) - << "Feature " << feature.name + << "Feature " << feature_name << " is not initialized in the Starboard level. Is the feature " "initialized in starboard/extension/feature_config.h?"; return feature_it->second; diff --git a/starboard/shared/starboard/feature_list.h b/starboard/shared/starboard/feature_list.h index 8f2221b30d89..209355ac5e13 100644 --- a/starboard/shared/starboard/feature_list.h +++ b/starboard/shared/starboard/feature_list.h @@ -43,11 +43,14 @@ class FeatureList { const SbFeatureParam* params, size_t number_of_params); - // Check to see if the given SbFeature is enabled or not. SbFeatures must be - // initialized before use. There's an SB_CHECK() to ensure that the given - // SbFeature must exist in the FeatureList. + // Check to see if the given SbFeature is enabled or not. static bool IsEnabled(const SbFeature& feature); + // Check to see if the given SbFeature is enabled or not by name. SbFeatures + // must be initialized before use. There's an SB_CHECK() to ensure that the + // given SbFeature must exist in the FeatureList. + static bool IsEnabledByName(const std::string& feature_name); + // Template function to retrieve a parameter based on the value type of the // parameter.SbParams must be initialized before use. There's an SB_CHECK() to // ensure that the given SbFeature must exist in the FeatureList. diff --git a/starboard/shared/starboard/file_storage/storage_close_record.cc b/starboard/shared/starboard/file_storage/storage_close_record.cc index 2f1355b89bf9..8f3338810d5e 100644 --- a/starboard/shared/starboard/file_storage/storage_close_record.cc +++ b/starboard/shared/starboard/file_storage/storage_close_record.cc @@ -12,10 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/common/storage.h" +// clang-format on + #include #include "starboard/common/file.h" -#include "starboard/common/storage.h" #include "starboard/shared/starboard/file_storage/storage_internal.h" bool SbStorageCloseRecord(SbStorageRecord record) { diff --git a/starboard/shared/starboard/file_storage/storage_delete_record.cc b/starboard/shared/starboard/file_storage/storage_delete_record.cc index 4492ddc14b02..042ee30e07b8 100644 --- a/starboard/shared/starboard/file_storage/storage_delete_record.cc +++ b/starboard/shared/starboard/file_storage/storage_delete_record.cc @@ -12,11 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/common/storage.h" +// clang-format on + #include #include -#include "starboard/common/storage.h" #include "starboard/configuration_constants.h" #include "starboard/shared/starboard/file_storage/storage_internal.h" diff --git a/starboard/shared/starboard/file_storage/storage_get_record_size.cc b/starboard/shared/starboard/file_storage/storage_get_record_size.cc index 8adcc8397c09..39e43c3b73dd 100644 --- a/starboard/shared/starboard/file_storage/storage_get_record_size.cc +++ b/starboard/shared/starboard/file_storage/storage_get_record_size.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/common/file.h" +// clang-format off #include "starboard/common/storage.h" +// clang-format on + +#include "starboard/common/file.h" #include "starboard/shared/starboard/file_storage/storage_internal.h" int64_t SbStorageGetRecordSize(SbStorageRecord record) { diff --git a/starboard/shared/starboard/file_storage/storage_open_record.cc b/starboard/shared/starboard/file_storage/storage_open_record.cc index 39fcf275bd0c..7c33e304e368 100644 --- a/starboard/shared/starboard/file_storage/storage_open_record.cc +++ b/starboard/shared/starboard/file_storage/storage_open_record.cc @@ -12,13 +12,16 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/common/storage.h" +// clang-format on + #include #include #include "starboard/common/file.h" #include "starboard/common/log.h" -#include "starboard/common/storage.h" #include "starboard/configuration_constants.h" #include "starboard/shared/starboard/file_storage/storage_internal.h" diff --git a/starboard/shared/starboard/file_storage/storage_read_record.cc b/starboard/shared/starboard/file_storage/storage_read_record.cc index 9020d5304e21..17f105c9f804 100644 --- a/starboard/shared/starboard/file_storage/storage_read_record.cc +++ b/starboard/shared/starboard/file_storage/storage_read_record.cc @@ -12,6 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/common/storage.h" +// clang-format on + #include #include @@ -19,7 +23,6 @@ #include "starboard/common/file.h" #include "starboard/common/log.h" -#include "starboard/common/storage.h" #include "starboard/common/string.h" #include "starboard/shared/starboard/file_storage/storage_internal.h" diff --git a/starboard/shared/starboard/log_raw_format.cc b/starboard/shared/starboard/log_raw_format.cc index a00dee2d9aef..aeeca6cc0e3d 100644 --- a/starboard/shared/starboard/log_raw_format.cc +++ b/starboard/shared/starboard/log_raw_format.cc @@ -12,11 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/common/log.h" +// clang-format on + #include #include -#include "starboard/common/log.h" - void SbLogRawFormat(const char* format, va_list arguments) { char message[128]; vsnprintf(message, sizeof(message), format, arguments); diff --git a/starboard/shared/starboard/media/media_get_audio_configuration.cc b/starboard/shared/starboard/media/media_get_audio_configuration.cc index ca2169a47347..1430e1c00e7e 100644 --- a/starboard/shared/starboard/media/media_get_audio_configuration.cc +++ b/starboard/shared/starboard/media/media_get_audio_configuration.cc @@ -12,12 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. -// Default implementation of SbMediaGetAudioConfiguration(). +// clang-format off +#include "starboard/media.h" +// clang-format on #include "starboard/audio_sink.h" #include "starboard/common/check_op.h" #include "starboard/common/log.h" -#include "starboard/media.h" bool SbMediaGetAudioConfiguration( int output_index, diff --git a/starboard/shared/starboard/media/media_is_audio_supported_aac_and_opus.cc b/starboard/shared/starboard/media/media_is_audio_supported_aac_and_opus.cc index 2815cb0eeed0..66243dd3ff91 100644 --- a/starboard/shared/starboard/media/media_is_audio_supported_aac_and_opus.cc +++ b/starboard/shared/starboard/media/media_is_audio_supported_aac_and_opus.cc @@ -12,10 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/shared/starboard/media/media_support_internal.h" +// clang-format on + #include "starboard/configuration.h" #include "starboard/configuration_constants.h" #include "starboard/media.h" -#include "starboard/shared/starboard/media/media_support_internal.h" namespace starboard::shared::starboard::media { diff --git a/starboard/shared/starboard/media/media_is_audio_supported_aac_only.cc b/starboard/shared/starboard/media/media_is_audio_supported_aac_only.cc index c47114e894e6..45f170562197 100644 --- a/starboard/shared/starboard/media/media_is_audio_supported_aac_only.cc +++ b/starboard/shared/starboard/media/media_is_audio_supported_aac_only.cc @@ -12,10 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/shared/starboard/media/media_support_internal.h" +// clang-format on + #include "starboard/configuration.h" #include "starboard/configuration_constants.h" #include "starboard/media.h" -#include "starboard/shared/starboard/media/media_support_internal.h" namespace starboard::shared::starboard::media { diff --git a/starboard/shared/starboard/microphone/microphone_close.cc b/starboard/shared/starboard/microphone/microphone_close.cc index 367f4cca6f85..dd4dbd4401de 100644 --- a/starboard/shared/starboard/microphone/microphone_close.cc +++ b/starboard/shared/starboard/microphone/microphone_close.cc @@ -12,7 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off #include "starboard/microphone.h" +// clang-format on + #include "starboard/shared/starboard/microphone/microphone_internal.h" bool SbMicrophoneClose(SbMicrophone microphone) { diff --git a/starboard/shared/starboard/microphone/microphone_create.cc b/starboard/shared/starboard/microphone/microphone_create.cc index b7aca9eff385..269300b5e2e9 100644 --- a/starboard/shared/starboard/microphone/microphone_create.cc +++ b/starboard/shared/starboard/microphone/microphone_create.cc @@ -12,7 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off #include "starboard/microphone.h" +// clang-format on #include "starboard/shared/starboard/microphone/microphone_internal.h" SbMicrophone SbMicrophoneCreate(SbMicrophoneId id, diff --git a/starboard/shared/starboard/microphone/microphone_destroy.cc b/starboard/shared/starboard/microphone/microphone_destroy.cc index dfe8f24d167e..933984b98a56 100644 --- a/starboard/shared/starboard/microphone/microphone_destroy.cc +++ b/starboard/shared/starboard/microphone/microphone_destroy.cc @@ -12,7 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off #include "starboard/microphone.h" +// clang-format on + #include "starboard/shared/starboard/microphone/microphone_internal.h" void SbMicrophoneDestroy(SbMicrophone microphone) { diff --git a/starboard/shared/starboard/microphone/microphone_get_available.cc b/starboard/shared/starboard/microphone/microphone_get_available.cc index 58bdcfeb47eb..87ae0359e58c 100644 --- a/starboard/shared/starboard/microphone/microphone_get_available.cc +++ b/starboard/shared/starboard/microphone/microphone_get_available.cc @@ -12,9 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/microphone.h" +// clang-format on + #include -#include "starboard/microphone.h" #include "starboard/shared/starboard/microphone/microphone_internal.h" int SbMicrophoneGetAvailable(SbMicrophoneInfo* out_info_array, diff --git a/starboard/shared/starboard/microphone/microphone_is_sample_rate_supported.cc b/starboard/shared/starboard/microphone/microphone_is_sample_rate_supported.cc index 3d734e742a03..24d6b330e7ad 100644 --- a/starboard/shared/starboard/microphone/microphone_is_sample_rate_supported.cc +++ b/starboard/shared/starboard/microphone/microphone_is_sample_rate_supported.cc @@ -12,7 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off #include "starboard/microphone.h" +// clang-format on + #include "starboard/shared/starboard/microphone/microphone_internal.h" bool SbMicrophoneIsSampleRateSupported(SbMicrophoneId id, diff --git a/starboard/shared/starboard/microphone/microphone_open.cc b/starboard/shared/starboard/microphone/microphone_open.cc index 8737ab31dd19..5f35b78c2f95 100644 --- a/starboard/shared/starboard/microphone/microphone_open.cc +++ b/starboard/shared/starboard/microphone/microphone_open.cc @@ -12,7 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off #include "starboard/microphone.h" +// clang-format on + #include "starboard/shared/starboard/microphone/microphone_internal.h" bool SbMicrophoneOpen(SbMicrophone microphone) { diff --git a/starboard/shared/starboard/microphone/microphone_read.cc b/starboard/shared/starboard/microphone/microphone_read.cc index 281fcf694140..04f9fe000aae 100644 --- a/starboard/shared/starboard/microphone/microphone_read.cc +++ b/starboard/shared/starboard/microphone/microphone_read.cc @@ -12,7 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off #include "starboard/microphone.h" +// clang-format on + #include "starboard/shared/starboard/microphone/microphone_internal.h" int SbMicrophoneRead(SbMicrophone microphone, diff --git a/starboard/shared/starboard/player/filter/audio_channel_layout_mixer_impl.cc b/starboard/shared/starboard/player/filter/audio_channel_layout_mixer_impl.cc index 4b3892083e3c..695cb397ea45 100644 --- a/starboard/shared/starboard/player/filter/audio_channel_layout_mixer_impl.cc +++ b/starboard/shared/starboard/player/filter/audio_channel_layout_mixer_impl.cc @@ -12,13 +12,16 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/shared/starboard/player/filter/audio_channel_layout_mixer.h" +// clang-format on + #include #include #include "starboard/common/check_op.h" #include "starboard/common/log.h" #include "starboard/shared/starboard/media/media_util.h" -#include "starboard/shared/starboard/player/filter/audio_channel_layout_mixer.h" namespace starboard { diff --git a/starboard/shared/starboard/player/filter/audio_resampler_impl.cc b/starboard/shared/starboard/player/filter/audio_resampler_impl.cc index d0f0db190cb8..675ddbddcc71 100644 --- a/starboard/shared/starboard/player/filter/audio_resampler_impl.cc +++ b/starboard/shared/starboard/player/filter/audio_resampler_impl.cc @@ -12,12 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/shared/starboard/player/filter/audio_resampler.h" +// clang-format on + #include #include "starboard/common/check_op.h" #include "starboard/common/log.h" #include "starboard/configuration.h" -#include "starboard/shared/starboard/player/filter/audio_resampler.h" #include "starboard/shared/starboard/player/filter/interleaved_sinc_resampler.h" namespace starboard { diff --git a/starboard/shared/starboard/player/filter/mock_audio_renderer_sink.h b/starboard/shared/starboard/player/filter/mock_audio_renderer_sink.h index a879b24d6eb6..e3c9f9222e7f 100644 --- a/starboard/shared/starboard/player/filter/mock_audio_renderer_sink.h +++ b/starboard/shared/starboard/player/filter/mock_audio_renderer_sink.h @@ -15,9 +15,12 @@ #ifndef STARBOARD_SHARED_STARBOARD_PLAYER_FILTER_MOCK_AUDIO_RENDERER_SINK_H_ #define STARBOARD_SHARED_STARBOARD_PLAYER_FILTER_MOCK_AUDIO_RENDERER_SINK_H_ +// clang-format off +#include "starboard/shared/starboard/player/filter/audio_renderer_sink.h" +// clang-format on + #include "starboard/media.h" #include "starboard/shared/internal_only.h" -#include "starboard/shared/starboard/player/filter/audio_renderer_sink.h" #include "testing/gmock/include/gmock/gmock.h" namespace starboard { diff --git a/starboard/shared/starboard/player/filter/testing/BUILD.gn b/starboard/shared/starboard/player/filter/testing/BUILD.gn index 3f9aed10a64b..85ee7f8478fd 100644 --- a/starboard/shared/starboard/player/filter/testing/BUILD.gn +++ b/starboard/shared/starboard/player/filter/testing/BUILD.gn @@ -18,8 +18,6 @@ if (current_toolchain == starboard_toolchain) { testonly = true sources = [ - "//starboard/testing/fake_graphics_context_provider.cc", - "//starboard/testing/fake_graphics_context_provider.h", "adaptive_audio_decoder_test.cc", "audio_channel_layout_mixer_test.cc", "audio_decoder_test.cc", @@ -50,6 +48,7 @@ if (current_toolchain == starboard_toolchain) { "//starboard/egl_and_gles:buildflags", "//starboard/shared/starboard/player:player_test_data", "//starboard/shared/starboard/player/filter:filter_based_player_sources", + "//starboard/testing:fake_graphics_context_provider", ] } diff --git a/starboard/shared/starboard/player/filter/testing/audio_decoder_benchmark.cc b/starboard/shared/starboard/player/filter/testing/audio_decoder_benchmark.cc index c0d0833272b4..bf9cbf2bc25d 100644 --- a/starboard/shared/starboard/player/filter/testing/audio_decoder_benchmark.cc +++ b/starboard/shared/starboard/player/filter/testing/audio_decoder_benchmark.cc @@ -12,6 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/shared/starboard/player/filter/audio_decoder_internal.h" +// clang-format on + #include #include @@ -19,7 +23,6 @@ #include "starboard/media.h" #include "starboard/player.h" #include "starboard/shared/starboard/player/decoded_audio_internal.h" -#include "starboard/shared/starboard/player/filter/audio_decoder_internal.h" #include "starboard/shared/starboard/player/filter/testing/test_util.h" #include "starboard/shared/starboard/player/input_buffer_internal.h" #include "starboard/shared/starboard/player/job_queue.h" diff --git a/starboard/shared/starboard/player/player_create.cc b/starboard/shared/starboard/player/player_create.cc index 18397ee4f20c..d75166bc26f5 100644 --- a/starboard/shared/starboard/player/player_create.cc +++ b/starboard/shared/starboard/player/player_create.cc @@ -12,6 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/player.h" +// clang-format on + #include #include #include diff --git a/starboard/shared/starboard/player/player_destroy.cc b/starboard/shared/starboard/player/player_destroy.cc index 61da43b71be4..9f20c508df8b 100644 --- a/starboard/shared/starboard/player/player_destroy.cc +++ b/starboard/shared/starboard/player/player_destroy.cc @@ -12,7 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off #include "starboard/player.h" +// clang-format on + #include "starboard/shared/media_session/playback_state.h" #include "starboard/shared/starboard/player/player_internal.h" diff --git a/starboard/shared/starboard/player/player_get_audio_configuration.cc b/starboard/shared/starboard/player/player_get_audio_configuration.cc index 17b21db50e70..ce0c5c3aaeea 100644 --- a/starboard/shared/starboard/player/player_get_audio_configuration.cc +++ b/starboard/shared/starboard/player/player_get_audio_configuration.cc @@ -12,10 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/player.h" +// clang-format on + #include "starboard/common/check_op.h" #include "starboard/common/log.h" #include "starboard/media.h" -#include "starboard/player.h" #include "starboard/shared/starboard/player/player_internal.h" bool SbPlayerGetAudioConfiguration( diff --git a/starboard/shared/starboard/player/player_get_current_frame.cc b/starboard/shared/starboard/player/player_get_current_frame.cc index 3289cffa6052..514c33edc4d3 100644 --- a/starboard/shared/starboard/player/player_get_current_frame.cc +++ b/starboard/shared/starboard/player/player_get_current_frame.cc @@ -12,9 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/player.h" +// clang-format on + #include "starboard/common/log.h" #include "starboard/decode_target.h" -#include "starboard/player.h" #include "starboard/shared/starboard/player/player_internal.h" SbDecodeTarget SbPlayerGetCurrentFrame(SbPlayer player) { diff --git a/starboard/shared/starboard/player/player_get_info.cc b/starboard/shared/starboard/player/player_get_info.cc index 2b10031f3bb4..0ba871122c4b 100644 --- a/starboard/shared/starboard/player/player_get_info.cc +++ b/starboard/shared/starboard/player/player_get_info.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/common/log.h" +// clang-format off #include "starboard/player.h" +// clang-format on + +#include "starboard/common/log.h" #include "starboard/shared/starboard/player/player_internal.h" void SbPlayerGetInfo(SbPlayer player, SbPlayerInfo* out_player_info) { diff --git a/starboard/shared/starboard/player/player_get_preferred_output_mode_prefer_punchout.cc b/starboard/shared/starboard/player/player_get_preferred_output_mode_prefer_punchout.cc index 3744a532b93d..25f6ae756c9d 100644 --- a/starboard/shared/starboard/player/player_get_preferred_output_mode_prefer_punchout.cc +++ b/starboard/shared/starboard/player/player_get_preferred_output_mode_prefer_punchout.cc @@ -12,10 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/player.h" +// clang-format on + #include #include "starboard/configuration.h" -#include "starboard/player.h" #include "starboard/shared/starboard/player/filter/player_components.h" SbPlayerOutputMode SbPlayerGetPreferredOutputMode( diff --git a/starboard/shared/starboard/player/player_seek.cc b/starboard/shared/starboard/player/player_seek.cc index b1cb6e4b7db1..7d1ad65d74dc 100644 --- a/starboard/shared/starboard/player/player_seek.cc +++ b/starboard/shared/starboard/player/player_seek.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/common/log.h" +// clang-format off #include "starboard/player.h" +// clang-format on + +#include "starboard/common/log.h" #include "starboard/shared/starboard/player/player_internal.h" void SbPlayerSeek(SbPlayer player, int64_t seek_to_timestamp, int ticket) { diff --git a/starboard/shared/starboard/player/player_set_bounds.cc b/starboard/shared/starboard/player/player_set_bounds.cc index f96807321888..3b1de623bf49 100644 --- a/starboard/shared/starboard/player/player_set_bounds.cc +++ b/starboard/shared/starboard/player/player_set_bounds.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/common/log.h" +// clang-format off #include "starboard/player.h" +// clang-format on + +#include "starboard/common/log.h" #include "starboard/shared/starboard/player/player_internal.h" void SbPlayerSetBounds(SbPlayer player, diff --git a/starboard/shared/starboard/player/player_set_playback_rate.cc b/starboard/shared/starboard/player/player_set_playback_rate.cc index 05e3033f2e5a..193a5a893f53 100644 --- a/starboard/shared/starboard/player/player_set_playback_rate.cc +++ b/starboard/shared/starboard/player/player_set_playback_rate.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/common/log.h" +// clang-format off #include "starboard/player.h" +// clang-format on + +#include "starboard/common/log.h" #include "starboard/shared/media_session/playback_state.h" #include "starboard/shared/starboard/player/player_internal.h" diff --git a/starboard/shared/starboard/player/player_set_volume.cc b/starboard/shared/starboard/player/player_set_volume.cc index de6e3f188ed4..c8263b8c65ee 100644 --- a/starboard/shared/starboard/player/player_set_volume.cc +++ b/starboard/shared/starboard/player/player_set_volume.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/common/log.h" +// clang-format off #include "starboard/player.h" +// clang-format on + +#include "starboard/common/log.h" #include "starboard/shared/starboard/player/player_internal.h" void SbPlayerSetVolume(SbPlayer player, double volume) { diff --git a/starboard/shared/starboard/player/player_write_end_of_stream.cc b/starboard/shared/starboard/player/player_write_end_of_stream.cc index 4ebb48b22666..8de27fe0b3b0 100644 --- a/starboard/shared/starboard/player/player_write_end_of_stream.cc +++ b/starboard/shared/starboard/player/player_write_end_of_stream.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/common/log.h" +// clang-format off #include "starboard/player.h" +// clang-format on + +#include "starboard/common/log.h" #include "starboard/shared/starboard/player/player_internal.h" void SbPlayerWriteEndOfStream(SbPlayer player, SbMediaType stream_type) { diff --git a/starboard/shared/starboard/player/player_write_samples.cc b/starboard/shared/starboard/player/player_write_samples.cc index b5b92374f741..6c5f0ae1129d 100644 --- a/starboard/shared/starboard/player/player_write_samples.cc +++ b/starboard/shared/starboard/player/player_write_samples.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/common/log.h" +// clang-format off #include "starboard/player.h" +// clang-format on + +#include "starboard/common/log.h" #include "starboard/shared/starboard/player/player_internal.h" void SbPlayerWriteSamples(SbPlayer player, diff --git a/starboard/shared/starboard/system_request_blur.cc b/starboard/shared/starboard/system_request_blur.cc index 29494b35bc6a..85b775a1788d 100644 --- a/starboard/shared/starboard/system_request_blur.cc +++ b/starboard/shared/starboard/system_request_blur.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/shared/starboard/application.h" +// clang-format off #include "starboard/system.h" +// clang-format on + +#include "starboard/shared/starboard/application.h" void SbSystemRequestBlur() { starboard::Application::Get()->Blur(NULL, NULL); diff --git a/starboard/shared/starboard/system_request_conceal.cc b/starboard/shared/starboard/system_request_conceal.cc index d22dcec76304..fa855c927531 100644 --- a/starboard/shared/starboard/system_request_conceal.cc +++ b/starboard/shared/starboard/system_request_conceal.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/shared/starboard/application.h" +// clang-format off #include "starboard/system.h" +// clang-format on + +#include "starboard/shared/starboard/application.h" void SbSystemRequestConceal() { Application::Get()->Conceal(NULL, NULL); diff --git a/starboard/shared/starboard/system_request_focus.cc b/starboard/shared/starboard/system_request_focus.cc index caf9097dddf8..45cee0ad4ba3 100644 --- a/starboard/shared/starboard/system_request_focus.cc +++ b/starboard/shared/starboard/system_request_focus.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/shared/starboard/application.h" +// clang-format off #include "starboard/system.h" +// clang-format on + +#include "starboard/shared/starboard/application.h" void SbSystemRequestFocus() { starboard::Application::Get()->Focus(NULL, NULL); diff --git a/starboard/shared/starboard/system_request_freeze.cc b/starboard/shared/starboard/system_request_freeze.cc index 52aa3fad40fc..16a94a007fd0 100644 --- a/starboard/shared/starboard/system_request_freeze.cc +++ b/starboard/shared/starboard/system_request_freeze.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/shared/starboard/application.h" +// clang-format off #include "starboard/system.h" +// clang-format on + +#include "starboard/shared/starboard/application.h" void SbSystemRequestFreeze() { starboard::Application::Get()->Freeze(NULL, NULL); diff --git a/starboard/shared/starboard/system_request_reveal.cc b/starboard/shared/starboard/system_request_reveal.cc index a3352f8506b9..1e167066bc0c 100644 --- a/starboard/shared/starboard/system_request_reveal.cc +++ b/starboard/shared/starboard/system_request_reveal.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/shared/starboard/application.h" +// clang-format off #include "starboard/system.h" +// clang-format on + +#include "starboard/shared/starboard/application.h" void SbSystemRequestReveal() { starboard::Application::Get()->Reveal(NULL, NULL); diff --git a/starboard/shared/starboard/system_request_stop.cc b/starboard/shared/starboard/system_request_stop.cc index a20fef91055f..000bcb6141a8 100644 --- a/starboard/shared/starboard/system_request_stop.cc +++ b/starboard/shared/starboard/system_request_stop.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/shared/starboard/application.h" +// clang-format off #include "starboard/system.h" +// clang-format on + +#include "starboard/shared/starboard/application.h" void SbSystemRequestStop(int error_level) { starboard::Application::Get()->Stop(error_level); diff --git a/starboard/shared/starboard/window_set_default_options.cc b/starboard/shared/starboard/window_set_default_options.cc index 576ef2f94e48..50682ec77591 100644 --- a/starboard/shared/starboard/window_set_default_options.cc +++ b/starboard/shared/starboard/window_set_default_options.cc @@ -12,9 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include - +// clang-format off #include "starboard/window.h" +// clang-format on + +#include void SbWindowSetDefaultOptions(SbWindowOptions* options) { memset(options, 0, sizeof(*options)); diff --git a/starboard/shared/stub/media_is_audio_supported.cc b/starboard/shared/stub/media_is_audio_supported.cc index 4d3ca0b748a0..54f134c06517 100644 --- a/starboard/shared/stub/media_is_audio_supported.cc +++ b/starboard/shared/stub/media_is_audio_supported.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/media.h" +// clang-format off #include "starboard/shared/starboard/media/media_support_internal.h" +// clang-format on + +#include "starboard/media.h" namespace starboard::shared::starboard::media { diff --git a/starboard/shared/stub/media_is_supported.cc b/starboard/shared/stub/media_is_supported.cc index e2d17ea6f58f..ed27704e3a27 100644 --- a/starboard/shared/stub/media_is_supported.cc +++ b/starboard/shared/stub/media_is_supported.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/media.h" +// clang-format off #include "starboard/shared/starboard/media/media_support_internal.h" +// clang-format on + +#include "starboard/media.h" namespace starboard::shared::starboard::media { diff --git a/starboard/shared/stub/media_is_video_supported.cc b/starboard/shared/stub/media_is_video_supported.cc index 36db42cb5ac9..f1ce7b2433fe 100644 --- a/starboard/shared/stub/media_is_video_supported.cc +++ b/starboard/shared/stub/media_is_video_supported.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/media.h" +// clang-format off #include "starboard/shared/starboard/media/media_support_internal.h" +// clang-format on + +#include "starboard/media.h" namespace starboard::shared::starboard::media { diff --git a/starboard/shared/stub/player_create.cc b/starboard/shared/stub/player_create.cc index b0675af774af..a105e3b55c93 100644 --- a/starboard/shared/stub/player_create.cc +++ b/starboard/shared/stub/player_create.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/configuration.h" +// clang-format off #include "starboard/player.h" +// clang-format on + +#include "starboard/configuration.h" SbPlayer SbPlayerCreate( SbWindow window, diff --git a/starboard/shared/stub/player_get_preferred_output_mode.cc b/starboard/shared/stub/player_get_preferred_output_mode.cc index 6150c7b233d1..80104da1c8b5 100644 --- a/starboard/shared/stub/player_get_preferred_output_mode.cc +++ b/starboard/shared/stub/player_get_preferred_output_mode.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/configuration.h" +// clang-format off #include "starboard/player.h" +// clang-format on + +#include "starboard/configuration.h" SbPlayerOutputMode SbPlayerGetPreferredOutputMode( const SbPlayerCreationParam* creation_param) { diff --git a/starboard/shared/stub/system_raise_platform_error.cc b/starboard/shared/stub/system_raise_platform_error.cc index 0f75ddedf3d4..de26d31221ee 100644 --- a/starboard/shared/stub/system_raise_platform_error.cc +++ b/starboard/shared/stub/system_raise_platform_error.cc @@ -12,8 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/common/log.h" +// clang-format off #include "starboard/system.h" +// clang-format on + +#include + +#include "starboard/common/log.h" bool SbSystemRaisePlatformError(SbSystemPlatformErrorType type, SbSystemPlatformErrorCallback callback, diff --git a/starboard/shared/widevine/drm_create_system.cc b/starboard/shared/widevine/drm_create_system.cc index b0262fc2298d..a390a7ae2eca 100644 --- a/starboard/shared/widevine/drm_create_system.cc +++ b/starboard/shared/widevine/drm_create_system.cc @@ -12,9 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/drm.h" +// clang-format on + #include "starboard/common/log.h" #include "starboard/common/string.h" -#include "starboard/drm.h" #include "starboard/shared/widevine/drm_system_widevine.h" #warning "This implementation is meant to use for testing purpose only." diff --git a/starboard/shared/widevine/media_is_supported.cc b/starboard/shared/widevine/media_is_supported.cc index b485638a7f8d..b018c267ddfe 100644 --- a/starboard/shared/widevine/media_is_supported.cc +++ b/starboard/shared/widevine/media_is_supported.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/media.h" +// clang-format off #include "starboard/shared/starboard/media/media_support_internal.h" +// clang-format on + +#include "starboard/media.h" #include "starboard/shared/widevine/drm_system_widevine.h" namespace starboard::shared::starboard::media { diff --git a/starboard/shared/widevine/widevine_timer.cc b/starboard/shared/widevine/widevine_timer.cc index 3deb404e9ed8..02c83a68a8a8 100644 --- a/starboard/shared/widevine/widevine_timer.cc +++ b/starboard/shared/widevine/widevine_timer.cc @@ -63,17 +63,18 @@ void WidevineTimer::setTimeout(int64_t delay_in_milliseconds, void* context) { std::unique_lock lock(mutex_); if (active_clients_.empty()) { - SB_DCHECK_EQ(thread_, 0); + SB_DCHECK(!thread_); SB_DCHECK(!job_queue_); WaitEvent wait_event(mutex_); ThreadParam thread_param = {this, &wait_event}; - pthread_create(&thread_, nullptr, &WidevineTimer::ThreadFunc, - &thread_param); + pthread_t thread; + pthread_create(&thread, nullptr, &WidevineTimer::ThreadFunc, &thread_param); + thread_ = thread; wait_event.Wait(lock); } - SB_DCHECK_NE(thread_, 0); + SB_DCHECK(thread_); SB_DCHECK(job_queue_); auto iter = active_clients_.find(client); @@ -103,8 +104,8 @@ void WidevineTimer::cancel(IClient* client) { if (active_clients_.empty()) { // Kill the thread on the last |client|. job_queue_->StopSoon(); - pthread_join(thread_, NULL); - thread_ = 0; + pthread_join(*thread_, nullptr); + thread_ = std::nullopt; job_queue_ = NULL; } } @@ -112,7 +113,11 @@ void WidevineTimer::cancel(IClient* client) { // static void* WidevineTimer::ThreadFunc(void* param) { SB_DCHECK(param); +#if defined(__APPLE__) + pthread_setname_np("wv_timer"); +#else pthread_setname_np(pthread_self(), "wv_timer"); +#endif ThreadParam* thread_param = static_cast(param); thread_param->timer->RunLoop(thread_param->wait_event); return NULL; diff --git a/starboard/shared/widevine/widevine_timer.h b/starboard/shared/widevine/widevine_timer.h index c7ede5d74c21..0cf667180a30 100644 --- a/starboard/shared/widevine/widevine_timer.h +++ b/starboard/shared/widevine/widevine_timer.h @@ -19,6 +19,7 @@ #include #include +#include #include "starboard/shared/starboard/player/job_queue.h" #include "third_party/internal/ce_cdm/cdm/include/cdm.h" @@ -48,7 +49,7 @@ class WidevineTimer : public ::widevine::Cdm::ITimer { void CancelAllJobsOnClient(IClient* client, WaitEvent* wait_event); std::mutex mutex_; - pthread_t thread_ = 0; + std::optional thread_; JobQueue* job_queue_ = NULL; std::map active_clients_; }; diff --git a/starboard/shared/x11/player_set_bounds.cc b/starboard/shared/x11/player_set_bounds.cc index 29dc82cc551a..0f38dfa0bc40 100644 --- a/starboard/shared/x11/player_set_bounds.cc +++ b/starboard/shared/x11/player_set_bounds.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/common/log.h" +// clang-format off #include "starboard/player.h" +// clang-format on + +#include "starboard/common/log.h" #include "starboard/shared/starboard/player/player_internal.h" #include "starboard/shared/x11/application_x11.h" diff --git a/starboard/shared/x11/window_create.cc b/starboard/shared/x11/window_create.cc index c61bb318e94e..f05e778501d1 100644 --- a/starboard/shared/x11/window_create.cc +++ b/starboard/shared/x11/window_create.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/shared/x11/application_x11.h" +// clang-format off #include "starboard/window.h" +// clang-format on + +#include "starboard/shared/x11/application_x11.h" SbWindow SbWindowCreate(const SbWindowOptions* options) { return starboard::ApplicationX11::Get()->CreateWindow(options); diff --git a/starboard/shared/x11/window_destroy.cc b/starboard/shared/x11/window_destroy.cc index 02c9e33ca366..a20f26e157c8 100644 --- a/starboard/shared/x11/window_destroy.cc +++ b/starboard/shared/x11/window_destroy.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "starboard/shared/x11/application_x11.h" +// clang-format off #include "starboard/window.h" +// clang-format on + +#include "starboard/shared/x11/application_x11.h" bool SbWindowDestroy(SbWindow window) { return starboard::ApplicationX11::Get()->DestroyWindow(window); diff --git a/starboard/shared/x11/window_get_platform_handle.cc b/starboard/shared/x11/window_get_platform_handle.cc index 488d131d4ccd..6bb25c48047d 100644 --- a/starboard/shared/x11/window_get_platform_handle.cc +++ b/starboard/shared/x11/window_get_platform_handle.cc @@ -12,9 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/window.h" +// clang-format on + #include "starboard/player.h" #include "starboard/shared/x11/window_internal.h" -#include "starboard/window.h" void* SbWindowGetPlatformHandle(SbWindow window) { if (!SbWindowIsValid(window)) { diff --git a/starboard/shared/x11/window_get_size.cc b/starboard/shared/x11/window_get_size.cc index c57b41376e4b..e4d7d72c2e67 100644 --- a/starboard/shared/x11/window_get_size.cc +++ b/starboard/shared/x11/window_get_size.cc @@ -12,9 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/window.h" +// clang-format on + #include "starboard/common/log.h" #include "starboard/shared/x11/window_internal.h" -#include "starboard/window.h" bool SbWindowGetSize(SbWindow window, SbWindowSize* size) { if (!SbWindowIsValid(window)) { diff --git a/starboard/stub/system_get_extensions.cc b/starboard/stub/system_get_extensions.cc index 09b15339e787..ac36376082a9 100644 --- a/starboard/stub/system_get_extensions.cc +++ b/starboard/stub/system_get_extensions.cc @@ -12,6 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "starboard/system.h" +// clang-format on + #include "starboard/common/string.h" #include "starboard/extension/configuration.h" #include "starboard/extension/font.h" @@ -19,7 +23,6 @@ #include "starboard/stub/configuration.h" #include "starboard/stub/font.h" #include "starboard/stub/javascript_cache.h" -#include "starboard/system.h" const void* SbSystemGetExtension(const char* name) { if (strcmp(name, kCobaltExtensionConfigurationName) == 0) { diff --git a/starboard/testing/BUILD.gn b/starboard/testing/BUILD.gn new file mode 100644 index 000000000000..01af7e5cb643 --- /dev/null +++ b/starboard/testing/BUILD.gn @@ -0,0 +1,28 @@ +# Copyright 2026 The Cobalt Authors. All Rights Reserved. +# +# 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. + +static_library("fake_graphics_context_provider") { + testonly = true + + sources = [ + "fake_graphics_context_provider.cc", + "fake_graphics_context_provider.h", + ] + + deps = [ + "//starboard:starboard_headers_only", + "//starboard/common", + "//starboard/egl_and_gles:buildflags", + ] +} diff --git a/starboard/tvos/shared/BUILD.gn b/starboard/tvos/shared/BUILD.gn index 6fb0ef770fd6..f721ec3362cb 100644 --- a/starboard/tvos/shared/BUILD.gn +++ b/starboard/tvos/shared/BUILD.gn @@ -25,8 +25,6 @@ static_library("test_support") { "starboard_test_environment.h", "starboard_test_environment.mm", ] - - configs += [ "//starboard/build/config:starboard_implementation" ] } static_library("starboard_platform") { @@ -41,6 +39,7 @@ static_library("starboard_platform") { "//starboard/shared/posix/log_format.cc", "//starboard/shared/posix/log_raw.cc", "//starboard/shared/posix/system_break_into_debugger.cc", + "//starboard/shared/posix/system_get_error_string.cc", "//starboard/shared/starboard/application.cc", "//starboard/shared/starboard/application.h", "//starboard/shared/starboard/audio_sink/audio_sink_create.cc", diff --git a/starboard/tvos/shared/application_darwin.h b/starboard/tvos/shared/application_darwin.h index 6a86532f98fb..8a6e404888de 100644 --- a/starboard/tvos/shared/application_darwin.h +++ b/starboard/tvos/shared/application_darwin.h @@ -17,32 +17,23 @@ #include -#include "starboard/shared/internal_only.h" -#include "starboard/shared/starboard/queue_application.h" - namespace starboard { class CommandLine; -class ApplicationDarwin : public QueueApplication { +class ApplicationDarwin final { public: explicit ApplicationDarwin( std::unique_ptr<::starboard::CommandLine> command_line); - ~ApplicationDarwin() override; + ~ApplicationDarwin(); static void IncrementIdleTimerLockCount(); static void DecrementIdleTimerLockCount(); - protected: - // --- Application overrides --- - bool IsStartImmediate() override { return false; } - bool MayHaveSystemEvents() override { return false; } - Application::Event* WaitForSystemEventWithTimeout(int64_t time) override { - return nullptr; - } - void WakeSystemEventWait() override {} - private: + class ApplicationDarwinInternal; + std::unique_ptr application_darwin_internal_; + struct ObjCStorage; std::unique_ptr objc_storage_; }; diff --git a/starboard/tvos/shared/application_darwin.mm b/starboard/tvos/shared/application_darwin.mm index 683d49a57ad6..6226702f081c 100644 --- a/starboard/tvos/shared/application_darwin.mm +++ b/starboard/tvos/shared/application_darwin.mm @@ -21,6 +21,7 @@ #include "starboard/common/command_line.h" #include "starboard/common/log.h" #include "starboard/shared/starboard/audio_sink/audio_sink_internal.h" +#include "starboard/shared/starboard/queue_application.h" #import "starboard/tvos/shared/media/drm_manager.h" #import "starboard/tvos/shared/media/playback_capabilities.h" #import "starboard/tvos/shared/media/player_manager.h" @@ -61,12 +62,32 @@ void EmptyHandleCallback(const SbEvent* event) { ObjCApplication* __strong objc_application; }; +class ApplicationDarwin::ApplicationDarwinInternal final + : public QueueApplication { + public: + explicit ApplicationDarwinInternal( + std::unique_ptr<::starboard::CommandLine> command_line) + : QueueApplication(EmptyHandleCallback) { + SetCommandLine(std::move(command_line)); + } + + ~ApplicationDarwinInternal() override = default; + + protected: + // QueueApplication overrides. + bool IsStartImmediate() override { return false; } + bool MayHaveSystemEvents() override { return false; } + Event* WaitForSystemEventWithTimeout(int64_t time) override { + return nullptr; + } + void WakeSystemEventWait() override {} +}; + ApplicationDarwin::ApplicationDarwin( std::unique_ptr<::starboard::CommandLine> command_line) - : QueueApplication(EmptyHandleCallback), + : application_darwin_internal_( + std::make_unique(std::move(command_line))), objc_storage_(std::make_unique()) { - SetCommandLine(std::move(command_line)); - objc_storage_->objc_application = [[ObjCApplication alloc] init]; SB_CHECK(objc_storage_->objc_application); g_starboard_application_ = objc_storage_->objc_application; diff --git a/third_party/blink/renderer/platform/fonts/starboard/font_cache_starboard.cc b/third_party/blink/renderer/platform/fonts/starboard/font_cache_starboard.cc index 596ddf166bd3..cdc82792070c 100644 --- a/third_party/blink/renderer/platform/fonts/starboard/font_cache_starboard.cc +++ b/third_party/blink/renderer/platform/fonts/starboard/font_cache_starboard.cc @@ -12,8 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "skia/ext/font_utils.h" +// clang-format off #include "third_party/blink/renderer/platform/fonts/font_cache.h" +// clang-format on + +#include "skia/ext/font_utils.h" #include "third_party/blink/renderer/platform/fonts/font_platform_data.h" namespace blink { diff --git a/third_party/blink/renderer/platform/fonts/starboard/font_unique_name_lookup_starboard.cc b/third_party/blink/renderer/platform/fonts/starboard/font_unique_name_lookup_starboard.cc index 664950c12779..e4ac80806450 100644 --- a/third_party/blink/renderer/platform/fonts/starboard/font_unique_name_lookup_starboard.cc +++ b/third_party/blink/renderer/platform/fonts/starboard/font_unique_name_lookup_starboard.cc @@ -12,6 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "third_party/blink/renderer/platform/fonts/font_unique_name_lookup.h" +// clang-format on + #include "third_party/blink/renderer/platform/fonts/starboard/font_unique_name_lookup_starboard.h" namespace blink { diff --git a/ui/events/keycodes/cobalt/keyboard_code_conversion_android_cobalt.cc b/ui/events/keycodes/cobalt/keyboard_code_conversion_android_cobalt.cc index 9069dca576eb..d9a5638bedd1 100644 --- a/ui/events/keycodes/cobalt/keyboard_code_conversion_android_cobalt.cc +++ b/ui/events/keycodes/cobalt/keyboard_code_conversion_android_cobalt.cc @@ -2,6 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// clang-format off +#include "ui/events/keycodes/keyboard_code_conversion_android.h" +// clang-format on + #define KeyboardCodeFromAndroidKeyCode \ KeyboardCodeFromAndroidKeyCode_ChromiumImpl #include "ui/events/keycodes/keyboard_code_conversion_android.cc" @@ -9,8 +13,6 @@ #include -#include "ui/events/keycodes/keyboard_code_conversion_android.h" - namespace ui { KeyboardCode KeyboardCodeFromAndroidKeyCode(int keycode) { diff --git a/ui/events/keycodes/cobalt/keyboard_code_conversion_cobalt_unittest.cc b/ui/events/keycodes/cobalt/keyboard_code_conversion_cobalt_unittest.cc index 8ed50295d2cc..5ac536cd8449 100644 --- a/ui/events/keycodes/cobalt/keyboard_code_conversion_cobalt_unittest.cc +++ b/ui/events/keycodes/cobalt/keyboard_code_conversion_cobalt_unittest.cc @@ -12,10 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. +// clang-format off +#include "ui/events/keycodes/keyboard_code_conversion_android.h" +// clang-format on + #include #include "testing/gtest/include/gtest/gtest.h" -#include "ui/events/keycodes/keyboard_code_conversion_android.h" namespace ui { namespace { diff --git a/ui/ozone/platform/starboard/BUILD.gn b/ui/ozone/platform/starboard/BUILD.gn index 2cb06d7cc401..4e8c9c7dd219 100644 --- a/ui/ozone/platform/starboard/BUILD.gn +++ b/ui/ozone/platform/starboard/BUILD.gn @@ -18,8 +18,7 @@ assert(is_starboard) source_set("starboard") { visibility = [ - "//cobalt:*", - "//cobalt/testing/browser_tests:*", + "//cobalt/*", "//ui/ozone/*", ] diff --git a/ui/ozone/platform/starboard/platform_event_source_starboard.cc b/ui/ozone/platform/starboard/platform_event_source_starboard.cc index 90f51410892c..f4c045194e3b 100644 --- a/ui/ozone/platform/starboard/platform_event_source_starboard.cc +++ b/ui/ozone/platform/starboard/platform_event_source_starboard.cc @@ -26,10 +26,46 @@ #include "ui/events/keycodes/dom/dom_key.h" #include "ui/events/keycodes/keyboard_code_conversion.h" #include "ui/events/keycodes/keyboard_code_conversion_starboard.h" +#include "ui/events/pointer_details.h" #include "ui/events/types/event_type.h" namespace ui { +namespace { + +std::unique_ptr CreateTouchInputEvent(const SbEvent* event) { + CHECK(event) << "CreateTouchInputEvent: missing event"; + CHECK(event->data) << "CreateTouchInputEvent: missing event data"; + SbInputData* input_data = static_cast(event->data); + const SbInputData& data = *input_data; + ui::EventType event_type; + switch (data.type) { + case kSbInputEventTypePress: + event_type = ui::EventType::kTouchPressed; + break; + case kSbInputEventTypeUnpress: + event_type = ui::EventType::kTouchReleased; + break; + case kSbInputEventTypeMove: + event_type = ui::EventType::kTouchMoved; + break; + default: + NOTREACHED(); + } + float pressure = data.pressure; + if (!std::isnan(pressure) && (event_type == ui::EventType::kTouchPressed || + event_type == ui::EventType::kTouchMoved)) { + pressure = std::max(pressure, 0.5f); + } + return std::make_unique( + event_type, gfx::PointF(data.position.x, data.position.y), gfx::PointF{}, + base::TimeTicks() + base::Microseconds(event->timestamp), + ui::PointerDetails(ui::EventPointerType::kTouch, data.device_id, + data.size.x, data.size.y, pressure)); +} + +} // namespace + void DeliverEventHandler(std::unique_ptr ui_event) { CHECK(ui::PlatformEventSource::GetInstance()); static_cast( @@ -51,25 +87,6 @@ void PlatformEventSourceStarboard::HandleEvent(const SbEvent* event) { int64_t raw_timestamp = event->timestamp; SbInputEventType raw_type = input_data->type; - std::string type_name; - switch (input_data->type) { - case kSbInputEventTypeMove: - type_name = "kSbInputEventTypeMove"; - break; - case kSbInputEventTypePress: - type_name = "kSbInputEventTypePress"; - break; - case kSbInputEventTypeUnpress: - type_name = "kSbInputEventTypeUnpress"; - break; - case kSbInputEventTypeWheel: - type_name = "kSbInputEventTypeWheel"; - break; - case kSbInputEventTypeInput: - type_name = "kSbInputEventTypeInput"; - break; - } - std::unique_ptr ui_event; if ((input_data->device_type == kSbInputDeviceTypeKeyboard) || @@ -140,6 +157,9 @@ void PlatformEventSourceStarboard::HandleEvent(const SbEvent* event) { event_type, gfx::PointF(input_data->position.x, input_data->position.y), gfx::PointF{}, base::TimeTicks() + base::Microseconds(raw_timestamp), flag, ui::EF_LEFT_MOUSE_BUTTON); + } else if (input_data->device_type == kSbInputDeviceTypeTouchScreen || + input_data->device_type == kSbInputDeviceTypeTouchPad) { + ui_event = CreateTouchInputEvent(event); } else { return; }