Skip to content

Commit

Permalink
Cherry pick PR #1817: [UWP] Match time zone names with other platform…
Browse files Browse the repository at this point in the history
…s (#1849)

Refer to the original PR: youtube/cobalt#1817

Update time_zone_get_name to match how other platforms behave.

b/304335954

Change-Id: I3862bcb6ae4118dad76b8a6687194e993927c539

Co-authored-by: Tyler Holcombe <[email protected]>
  • Loading branch information
cobalt-github-releaser-bot and TyHolc authored Oct 25, 2023
1 parent 287697c commit ed647c0
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 1 deletion.
45 changes: 45 additions & 0 deletions starboard/shared/uwp/time_zone_get_name.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
// Copyright 2023 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 "starboard/time_zone.h"

#include <Windows.h>
#include <string>

#include "starboard/once.h"
#include "starboard/shared/win32/wchar_utils.h"

namespace {
class TimeZoneString {
public:
static TimeZoneString* Get();
const char* value() const { return value_.c_str(); }

private:
TimeZoneString() {
Windows::Globalization::Calendar ^ calendar =
ref new Windows::Globalization::Calendar();
Platform::String ^ time_zone = calendar->GetTimeZone();
value_ = starboard::shared::win32::platformStringToString(time_zone);
}
std::string value_;
};

SB_ONCE_INITIALIZE_FUNCTION(TimeZoneString, TimeZoneString::Get);
} // namespace.

const char* SbTimeZoneGetName() {
const char* output = TimeZoneString::Get()->value();
return output;
}
4 changes: 4 additions & 0 deletions starboard/shared/win32/time_zone_get_name.cc
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ class TimeZoneString {
const char* value() const { return value_.c_str(); }

private:
// Returns a string representing a time zone name, e.g. "EST" for Eastern
// Standard Time or "PDT" for Pacific Daylight Time. There isn't a native way
// to convert these to IANA name format on Windows without UWP, so we're
// making use of GetDynamicTimeZoneInformation for now.
TimeZoneString() {
DYNAMIC_TIME_ZONE_INFORMATION time_zone_info;
DWORD zone_id = GetDynamicTimeZoneInformation(&time_zone_info);
Expand Down
1 change: 0 additions & 1 deletion starboard/win/shared/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -304,7 +304,6 @@ static_library("starboard_platform") {
"//starboard/shared/win32/time_get_now.cc",
"//starboard/shared/win32/time_utils.h",
"//starboard/shared/win32/time_zone_get_current.cc",
"//starboard/shared/win32/time_zone_get_name.cc",
"//starboard/shared/win32/video_decoder.cc",
"//starboard/shared/win32/video_decoder.h",
"//starboard/shared/win32/wasapi_include.h",
Expand Down
1 change: 1 addition & 0 deletions starboard/win/win32/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ static_library("starboard_platform") {
"//starboard/shared/win32/system_get_used_cpu_memory.cc",
"//starboard/shared/win32/system_raise_platform_error.cc",
"//starboard/shared/win32/system_symbolize.cc",
"//starboard/shared/win32/time_zone_get_name.cc",
"//starboard/shared/win32/window_create.cc",
"//starboard/shared/win32/window_destroy.cc",
"//starboard/shared/win32/window_get_platform_handle.cc",
Expand Down
1 change: 1 addition & 0 deletions starboard/xb1/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ static_library("starboard_platform") {
"//starboard/shared/uwp/system_platform_error_internal.cc",
"//starboard/shared/uwp/system_platform_error_internal.h",
"//starboard/shared/uwp/system_raise_platform_error.cc",
"//starboard/shared/uwp/time_zone_get_name.cc",
"//starboard/shared/uwp/wasapi_audio.cc",
"//starboard/shared/uwp/wasapi_audio.h",
"//starboard/shared/uwp/wasapi_audio_sink.cc",
Expand Down

0 comments on commit ed647c0

Please sign in to comment.