diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 394e34c3a437..f4e76a21ef82 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -264,7 +264,7 @@ jobs: uses: ./.github/actions/build - name: 'Check Artifact Size' uses: ./.github/actions/check_artifact_size - if: ${{ inputs.artifact_size_increase_thresholds }} + if: ${{ false }} # ${{ inputs.artifact_size_increase_thresholds }} with: workflow: ${{ github.workflow }} name: ${{ matrix.platform }}-${{ matrix.config }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c3402230bfad..b4a5624fc3b8 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -60,12 +60,12 @@ repos: (?x)^( (internal/)?starboard/[^/]+/i18n/| cobalt/content/licenses/| - cobalt/content/ssl/| cobalt/fetch/embedded_scripts| cobalt/streams/embedded_scripts| cobalt/loader/cors_preflight.cc| internal/cobalt/browser/splash_screen/youtube_splash_screen.html| internal/starboard/shared/playstation/storage_internal.cc| + starboard/content/ssl/certs/| starboard/loader_app/app_key_test.cc| starboard/shared/starboard/player/testdata| starboard/shared/win32/media_transform.cc @@ -166,6 +166,7 @@ repos: entry: python ./download_resources.py language: python stages: [post-checkout] + additional_dependencies: [certifi] always_run: true - id: test-download-from-gcs-helper name: test download from gcs helper @@ -175,7 +176,7 @@ repos: always_run: true stages: [push] additional_dependencies: [certifi] - args: [-m, unittest, cobalt/tools/download_from_gcs_test.py] + args: [-m, unittest, starboard/tools/download_from_gcs_test.py] - id: test-python3-compatibility name: Test Python 3 Compatibility description: Checks that scripts can be run in Python 3 diff --git a/base/BUILD.gn b/base/BUILD.gn index 5ad4e4869019..f148e14e5832 100644 --- a/base/BUILD.gn +++ b/base/BUILD.gn @@ -3667,7 +3667,7 @@ test("base_unittests") { if (is_starboard){ data_deps += [ ":base_unittests_bundle_data", - "//cobalt/network:copy_ssl_certificates", + "//starboard/content/ssl:copy_ssl_certificates", ] } diff --git a/cobalt/base/BUILD.gn b/cobalt/base/BUILD.gn index 25f2e7acdaa1..f065348178c4 100644 --- a/cobalt/base/BUILD.gn +++ b/cobalt/base/BUILD.gn @@ -130,5 +130,5 @@ target(gtest_target_type, "base_test") { "//testing/gmock", "//testing/gtest", ] - data_deps = [ "//cobalt/network:copy_ssl_certificates" ] + data_deps = [ "//starboard/content/ssl:copy_ssl_certificates" ] } diff --git a/cobalt/browser/BUILD.gn b/cobalt/browser/BUILD.gn index d42a118bf6c2..ad7062ff9ce1 100644 --- a/cobalt/browser/BUILD.gn +++ b/cobalt/browser/BUILD.gn @@ -58,7 +58,7 @@ target(final_executable_type, "cobalt") { "//cobalt/css_parser", "//net", ] - data_deps = [ "//cobalt/network:copy_ssl_certificates" ] + data_deps = [ "//starboard/content/ssl:copy_ssl_certificates" ] if (cobalt_font_package == "empty") { data_deps += [ "//starboard/content/fonts:copy_font_data" ] } else { diff --git a/cobalt/browser/browser_module.cc b/cobalt/browser/browser_module.cc index 99b582d3d70a..75a27b117a44 100644 --- a/cobalt/browser/browser_module.cc +++ b/cobalt/browser/browser_module.cc @@ -448,6 +448,12 @@ BrowserModule::~BrowserModule() { } void BrowserModule::Navigate(const GURL& url_reference) { + if (network_module_) { + // If protocolfilter setting was updated, the setting does not take effect + // until the next page load. + network_module_->SetProtocolFilterFromPersistentSettings(); + } + // The argument is sometimes |pending_navigate_url_|, and Navigate can modify // |pending_navigate_url_|, so we want to keep a copy of the argument to // preserve its original value. diff --git a/cobalt/browser/device_authentication.h b/cobalt/browser/device_authentication.h index 382938d51b26..142b6a547557 100644 --- a/cobalt/browser/device_authentication.h +++ b/cobalt/browser/device_authentication.h @@ -24,7 +24,10 @@ namespace cobalt { namespace browser { // Returns a base64 encoded SHA256 hash representing the device authentication -// signature based on the device certification scope and the current time. +// signature, the device certification scope, and the current time as query +// parameters in a string. The signature is the result of signing a message, +// containing the certification scope and the current time, with a secret key +// provided by the device. std::string GetDeviceAuthenticationSignedURLQueryString(); // The following methods are deterministic helper functions used in the diff --git a/cobalt/encoding/BUILD.gn b/cobalt/encoding/BUILD.gn index 9264b7650dbe..27c72ab7a35b 100644 --- a/cobalt/encoding/BUILD.gn +++ b/cobalt/encoding/BUILD.gn @@ -53,5 +53,5 @@ target(gtest_target_type, "text_encoding_test") { "//testing/gtest", ] - data_deps = [ "//cobalt/network:copy_ssl_certificates" ] + data_deps = [ "//starboard/content/ssl:copy_ssl_certificates" ] } diff --git a/cobalt/h5vcc/h5vcc_settings.cc b/cobalt/h5vcc/h5vcc_settings.cc index 3c6062001737..382febda7d99 100644 --- a/cobalt/h5vcc/h5vcc_settings.cc +++ b/cobalt/h5vcc/h5vcc_settings.cc @@ -118,6 +118,32 @@ bool H5vccSettings::Set(const std::string& name, SetValueType value) const { } } + if (name.compare(network::kProtocolFilterKey) == 0 && + value.IsType() && + value.AsType().size() < 16384) { + std::string raw_json = value.AsType(); + base::Value old_config_json; + persistent_settings_->Get(network::kProtocolFilterKey, &old_config_json); + + if (raw_json.empty() && (!old_config_json.is_string() || + !old_config_json.GetString().empty())) { + persistent_settings_->Set(network::kProtocolFilterKey, base::Value()); + network_module_->SetProtocolFilterUpdatePending(); + return true; + } + + absl::optional old_config = + base::JSONReader::Read(old_config_json.GetString()); + absl::optional new_config = base::JSONReader::Read(raw_json); + if (!new_config) return false; + if (old_config && *old_config == *new_config) return false; + + persistent_settings_->Set(network::kProtocolFilterKey, + base::Value(raw_json)); + network_module_->SetProtocolFilterUpdatePending(); + return true; + } + if (name.compare("cpu_usage_tracker_intervals") == 0 && value.IsType() && value.AsType().size() < 512) { absl::optional config = @@ -193,6 +219,13 @@ std::string H5vccSettings::GetPersistentSettingAsString( absl::optional json = base::WriteJson(value); return json.value_or(std::string()); } + + if (key.compare(network::kProtocolFilterKey) == 0) { + base::Value value; + persistent_settings_->Get(network::kProtocolFilterKey, &value); + if (!value.is_string()) return std::string(); + return value.GetString(); + } return std::string(); } diff --git a/cobalt/input/BUILD.gn b/cobalt/input/BUILD.gn index 978550d2dc8d..10482451e9a0 100644 --- a/cobalt/input/BUILD.gn +++ b/cobalt/input/BUILD.gn @@ -15,6 +15,8 @@ static_library("input") { sources = [ "camera_3d.h", + "camera_3d_input_poller.cc", + "camera_3d_input_poller.h", "create_default_camera_3d.h", "input_device_manager.h", "input_device_manager_desktop.cc", @@ -33,18 +35,6 @@ static_library("input") { "keypress_generator_filter.h", ] - if (enable_vr) { - sources += [ - "//internal/cobalt/input/private/camera_3d_vr.cc", - "//internal/cobalt/input/private/camera_3d_vr.h", - ] - } else { - sources += [ - "camera_3d_input_poller.cc", - "camera_3d_input_poller.h", - ] - } - deps = [ "//cobalt/base", "//cobalt/dom", diff --git a/cobalt/layout_tests/BUILD.gn b/cobalt/layout_tests/BUILD.gn index 6931cfea4a72..eaab794ba4b6 100644 --- a/cobalt/layout_tests/BUILD.gn +++ b/cobalt/layout_tests/BUILD.gn @@ -66,7 +66,7 @@ target(gtest_target_type, "layout_tests") { data_deps = [ "//cobalt/layout_tests/testdata:layout_copy_test_data", - "//cobalt/network:copy_ssl_certificates", + "//starboard/content/ssl:copy_ssl_certificates", ] if (cobalt_font_package == "empty") { data_deps += [ "//starboard/content/fonts:copy_font_data" ] diff --git a/cobalt/media/base/drm_system.cc b/cobalt/media/base/drm_system.cc index 21949bc57233..8f3ccd8f62b1 100644 --- a/cobalt/media/base/drm_system.cc +++ b/cobalt/media/base/drm_system.cc @@ -25,6 +25,23 @@ namespace cobalt { namespace media { +SbDrmSystem CreateSbDrmSystemWithHistogram( + const char* key_system, void* context, + SbDrmSessionUpdateRequestFunc update_request_callback, + SbDrmSessionUpdatedFunc session_updated_callback, + SbDrmSessionKeyStatusesChangedFunc key_statuses_changed_callback, + SbDrmServerCertificateUpdatedFunc server_certificate_updated_callback, + SbDrmSessionClosedFunc session_closed_callback, + MediaMetricsProvider& media_metrics_provider) { + media_metrics_provider.StartTrackingAction(MediaAction::SBDRM_CREATE); + auto drm_system = SbDrmCreateSystem( + key_system, context, update_request_callback, session_updated_callback, + key_statuses_changed_callback, server_certificate_updated_callback, + session_closed_callback); + media_metrics_provider.EndTrackingAction(MediaAction::SBDRM_CREATE); + return drm_system; +} + DECLARE_INSTANCE_COUNTER(DrmSystem); DrmSystem::Session::Session( @@ -80,10 +97,11 @@ void DrmSystem::Session::Close() { } DrmSystem::DrmSystem(const char* key_system) - : wrapped_drm_system_(SbDrmCreateSystem( + : wrapped_drm_system_(CreateSbDrmSystemWithHistogram( key_system, this, OnSessionUpdateRequestGeneratedFunc, OnSessionUpdatedFunc, OnSessionKeyStatusesChangedFunc, - OnServerCertificateUpdatedFunc, OnSessionClosedFunc)), + OnServerCertificateUpdatedFunc, OnSessionClosedFunc, + media_metrics_provider_)), task_runner_(base::SequencedTaskRunner::GetCurrentDefault()), ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)), weak_this_(weak_ptr_factory_.GetWeakPtr()) { diff --git a/cobalt/media/base/drm_system.h b/cobalt/media/base/drm_system.h index c4801c54eb03..446735b8919c 100644 --- a/cobalt/media/base/drm_system.h +++ b/cobalt/media/base/drm_system.h @@ -232,6 +232,7 @@ class DrmSystem : public base::RefCounted { SbDrmStatus status, const char* error_message); + MediaMetricsProvider media_metrics_provider_; const SbDrmSystem wrapped_drm_system_; scoped_refptr const task_runner_; @@ -253,8 +254,6 @@ class DrmSystem : public base::RefCounted { // Supports concurrent calls to |Session::Update|. TicketToSessionUpdateMap ticket_to_session_update_map_; - MediaMetricsProvider media_metrics_provider_; - DISALLOW_COPY_AND_ASSIGN(DrmSystem); }; diff --git a/cobalt/media/base/metrics_provider.cc b/cobalt/media/base/metrics_provider.cc index b6b4d72a5916..687a136a288d 100644 --- a/cobalt/media/base/metrics_provider.cc +++ b/cobalt/media/base/metrics_provider.cc @@ -151,6 +151,72 @@ void MediaMetricsProvider::ReportActionLatencyUMA( UMA_HISTOGRAM_TIMES("Cobalt.Media.SbPlayer.Destroy.LatencyTiming", action_duration); break; + case MediaAction::SBPLAYER_GET_PREFERRED_OUTPUT_MODE: + UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES( + "Cobalt.Media.SbPlayer.GetPreferredOutputMode.LatencyTiming", + action_duration, base::TimeDelta::FromMicroseconds(1), + base::TimeDelta::FromMicroseconds(100), 50); + break; + case MediaAction::SBPLAYER_SEEK: + UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES( + "Cobalt.Media.SbPlayer.Seek.LatencyTiming", action_duration, + base::TimeDelta::FromMicroseconds(1), + base::TimeDelta::FromMicroseconds(800), 50); + break; + case MediaAction::SBPLAYER_WRITE_END_OF_STREAM_AUDIO: + UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES( + "Cobalt.Media.SbPlayer.WriteEndOfStream.Audio.LatencyTiming", + action_duration, base::TimeDelta::FromMicroseconds(1), + base::TimeDelta::FromMilliseconds(25), 50); + break; + case MediaAction::SBPLAYER_WRITE_END_OF_STREAM_VIDEO: + UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES( + "Cobalt.Media.SbPlayer.WriteEndOfStream.Video.LatencyTiming", + action_duration, base::TimeDelta::FromMicroseconds(1), + base::TimeDelta::FromMilliseconds(25), 50); + break; + case MediaAction::SBPLAYER_SET_BOUNDS: + UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES( + "Cobalt.Media.SbPlayer.SetBounds.LatencyTiming", action_duration, + base::TimeDelta::FromMicroseconds(50), + base::TimeDelta::FromMilliseconds(60), 50); + break; + case MediaAction::SBPLAYER_SET_PLAYBACK_RATE: + UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES( + "Cobalt.Media.SbPlayer.SetPlaybackRate.LatencyTiming", + action_duration, base::TimeDelta::FromMicroseconds(1), + base::TimeDelta::FromMilliseconds(50), 50); + break; + case MediaAction::SBPLAYER_SET_VOLUME: + UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES( + "Cobalt.Media.SbPlayer.SetVolume.LatencyTiming", action_duration, + base::TimeDelta::FromMicroseconds(1), + base::TimeDelta::FromMilliseconds(50), 50); + break; + case MediaAction::SBPLAYER_GET_INFO: + UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES( + "Cobalt.Media.SbPlayer.GetInfo.LatencyTiming", action_duration, + base::TimeDelta::FromMicroseconds(1), + base::TimeDelta::FromMilliseconds(20), 50); + break; + case MediaAction::SBPLAYER_GET_CURRENT_FRAME: + UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES( + "Cobalt.Media.SbPlayer.GetCurrentFrame.LatencyTiming", + action_duration, base::TimeDelta::FromMicroseconds(1), + base::TimeDelta::FromMilliseconds(250), 50); + break; + case MediaAction::SBPLAYER_GET_AUDIO_CONFIG: + UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES( + "Cobalt.Media.SbPlayer.GetAudioConfig.LatencyTiming", action_duration, + base::TimeDelta::FromMicroseconds(1), + base::TimeDelta::FromMilliseconds(50), 50); + break; + case MediaAction::SBDRM_CREATE: + UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES( + "Cobalt.Media.SbDrm.Create.LatencyTiming", action_duration, + base::TimeDelta::FromMicroseconds(500), + base::TimeDelta::FromMilliseconds(250), 50); + break; case MediaAction::SBDRM_DESTROY: UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES( "Cobalt.Media.SbDrm.Destroy.LatencyTiming", action_duration, diff --git a/cobalt/media/base/metrics_provider.h b/cobalt/media/base/metrics_provider.h index 56a5c8328f00..135b2601716f 100644 --- a/cobalt/media/base/metrics_provider.h +++ b/cobalt/media/base/metrics_provider.h @@ -44,6 +44,17 @@ enum class MediaAction : uint8_t { SBPLAYER_CREATE, SBPLAYER_CREATE_URL_PLAYER, SBPLAYER_DESTROY, + SBPLAYER_GET_PREFERRED_OUTPUT_MODE, + SBPLAYER_SEEK, + SBPLAYER_WRITE_END_OF_STREAM_AUDIO, + SBPLAYER_WRITE_END_OF_STREAM_VIDEO, + SBPLAYER_SET_BOUNDS, + SBPLAYER_SET_PLAYBACK_RATE, + SBPLAYER_SET_VOLUME, + SBPLAYER_GET_INFO, + SBPLAYER_GET_CURRENT_FRAME, + SBPLAYER_GET_AUDIO_CONFIG, + SBDRM_CREATE, SBDRM_DESTROY, SBDRM_GENERATE_SESSION_UPDATE_REQUEST, SBDRM_UPDATE_SESSION, diff --git a/cobalt/media/base/metrics_provider_test.cc b/cobalt/media/base/metrics_provider_test.cc index 46a5470605fa..0037f02daa31 100644 --- a/cobalt/media/base/metrics_provider_test.cc +++ b/cobalt/media/base/metrics_provider_test.cc @@ -94,6 +94,112 @@ TEST_F(MediaMetricsProviderTest, SbPlayerDestroy) { std::string(kUmaPrefix) + "SbPlayer.Destroy.LatencyTiming", 100, 1); } +TEST_F(MediaMetricsProviderTest, SbPlayerGetPreferredOutputMode) { + metrics_.StartTrackingAction(MediaAction::SBPLAYER_GET_PREFERRED_OUTPUT_MODE); + + clock_.Advance(base::TimeDelta::FromMicroseconds(570)); + metrics_.EndTrackingAction(MediaAction::SBPLAYER_GET_PREFERRED_OUTPUT_MODE); + + histogram_tester_.ExpectUniqueSample( + std::string(kUmaPrefix) + "SbPlayer.GetPreferredOutputMode.LatencyTiming", + 570, 1); +} + +TEST_F(MediaMetricsProviderTest, SbPlayerSeek) { + metrics_.StartTrackingAction(MediaAction::SBPLAYER_SEEK); + + clock_.Advance(base::TimeDelta::FromMicroseconds(570)); + metrics_.EndTrackingAction(MediaAction::SBPLAYER_SEEK); + + histogram_tester_.ExpectUniqueSample( + std::string(kUmaPrefix) + "SbPlayer.Seek.LatencyTiming", 570, 1); +} + +TEST_F(MediaMetricsProviderTest, SbPlayerSetBounds) { + metrics_.StartTrackingAction(MediaAction::SBPLAYER_SET_BOUNDS); + + clock_.Advance(base::TimeDelta::FromMicroseconds(570)); + metrics_.EndTrackingAction(MediaAction::SBPLAYER_SET_BOUNDS); + + histogram_tester_.ExpectUniqueSample( + std::string(kUmaPrefix) + "SbPlayer.SetBounds.LatencyTiming", 570, 1); +} + +TEST_F(MediaMetricsProviderTest, SbPlayerSetPlaybackRate) { + metrics_.StartTrackingAction(MediaAction::SBPLAYER_SET_PLAYBACK_RATE); + + clock_.Advance(base::TimeDelta::FromMicroseconds(570)); + metrics_.EndTrackingAction(MediaAction::SBPLAYER_SET_PLAYBACK_RATE); + + histogram_tester_.ExpectUniqueSample( + std::string(kUmaPrefix) + "SbPlayer.SetPlaybackRate.LatencyTiming", 570, + 1); +} + +TEST_F(MediaMetricsProviderTest, SbPlayerSetVolume) { + metrics_.StartTrackingAction(MediaAction::SBPLAYER_SET_VOLUME); + + clock_.Advance(base::TimeDelta::FromMicroseconds(570)); + metrics_.EndTrackingAction(MediaAction::SBPLAYER_SET_VOLUME); + + histogram_tester_.ExpectUniqueSample( + std::string(kUmaPrefix) + "SbPlayer.SetVolume.LatencyTiming", 570, 1); +} + +TEST_F(MediaMetricsProviderTest, SbPlayerGetInfo) { + metrics_.StartTrackingAction(MediaAction::SBPLAYER_GET_INFO); + + clock_.Advance(base::TimeDelta::FromMicroseconds(570)); + metrics_.EndTrackingAction(MediaAction::SBPLAYER_GET_INFO); + + histogram_tester_.ExpectUniqueSample( + std::string(kUmaPrefix) + "SbPlayer.GetInfo.LatencyTiming", 570, 1); +} + +TEST_F(MediaMetricsProviderTest, SbPlayerGetCurrentFrame) { + metrics_.StartTrackingAction(MediaAction::SBPLAYER_GET_CURRENT_FRAME); + + clock_.Advance(base::TimeDelta::FromMicroseconds(570)); + metrics_.EndTrackingAction(MediaAction::SBPLAYER_GET_CURRENT_FRAME); + + histogram_tester_.ExpectUniqueSample( + std::string(kUmaPrefix) + "SbPlayer.GetCurrentFrame.LatencyTiming", 570, + 1); +} + +TEST_F(MediaMetricsProviderTest, SbPlayerGetAudioConfig) { + metrics_.StartTrackingAction(MediaAction::SBPLAYER_GET_AUDIO_CONFIG); + + clock_.Advance(base::TimeDelta::FromMicroseconds(570)); + metrics_.EndTrackingAction(MediaAction::SBPLAYER_GET_AUDIO_CONFIG); + + histogram_tester_.ExpectUniqueSample( + std::string(kUmaPrefix) + "SbPlayer.GetAudioConfig.LatencyTiming", 570, + 1); +} + +TEST_F(MediaMetricsProviderTest, SbPlayerWriteEndOfStreamAudio) { + metrics_.StartTrackingAction(MediaAction::SBPLAYER_WRITE_END_OF_STREAM_AUDIO); + + clock_.Advance(base::TimeDelta::FromMicroseconds(570)); + metrics_.EndTrackingAction(MediaAction::SBPLAYER_WRITE_END_OF_STREAM_AUDIO); + + histogram_tester_.ExpectUniqueSample( + std::string(kUmaPrefix) + "SbPlayer.WriteEndOfStream.Audio.LatencyTiming", + 570, 1); +} + +TEST_F(MediaMetricsProviderTest, SbPlayerWriteEndOfStreamVideo) { + metrics_.StartTrackingAction(MediaAction::SBPLAYER_WRITE_END_OF_STREAM_VIDEO); + + clock_.Advance(base::TimeDelta::FromMicroseconds(570)); + metrics_.EndTrackingAction(MediaAction::SBPLAYER_WRITE_END_OF_STREAM_VIDEO); + + histogram_tester_.ExpectUniqueSample( + std::string(kUmaPrefix) + "SbPlayer.WriteEndOfStream.Video.LatencyTiming", + 570, 1); +} + TEST_F(MediaMetricsProviderTest, SbDrmCloseSession) { metrics_.StartTrackingAction(MediaAction::SBDRM_CLOSE_SESSION); @@ -104,6 +210,16 @@ TEST_F(MediaMetricsProviderTest, SbDrmCloseSession) { std::string(kUmaPrefix) + "SbDrm.CloseSession.LatencyTiming", 570, 1); } +TEST_F(MediaMetricsProviderTest, SbDrmCreate) { + metrics_.StartTrackingAction(MediaAction::SBDRM_CREATE); + + clock_.Advance(base::TimeDelta::FromMicroseconds(570)); + metrics_.EndTrackingAction(MediaAction::SBDRM_CREATE); + + histogram_tester_.ExpectUniqueSample( + std::string(kUmaPrefix) + "SbDrm.Create.LatencyTiming", 570, 1); +} + TEST_F(MediaMetricsProviderTest, SbDrmDestroy) { metrics_.StartTrackingAction(MediaAction::SBDRM_DESTROY); diff --git a/cobalt/media/base/sbplayer_interface.cc b/cobalt/media/base/sbplayer_interface.cc index ec7b76d1acc1..6b367d4c15ef 100644 --- a/cobalt/media/base/sbplayer_interface.cc +++ b/cobalt/media/base/sbplayer_interface.cc @@ -79,7 +79,12 @@ SbPlayer DefaultSbPlayerInterface::Create( SbPlayerOutputMode DefaultSbPlayerInterface::GetPreferredOutputMode( const SbPlayerCreationParam* creation_param) { - return SbPlayerGetPreferredOutputMode(creation_param); + media_metrics_provider_.StartTrackingAction( + MediaAction::SBPLAYER_GET_PREFERRED_OUTPUT_MODE); + auto output_mode = SbPlayerGetPreferredOutputMode(creation_param); + media_metrics_provider_.EndTrackingAction( + MediaAction::SBPLAYER_GET_PREFERRED_OUTPUT_MODE); + return output_mode; } void DefaultSbPlayerInterface::Destroy(SbPlayer player) { @@ -91,11 +96,13 @@ void DefaultSbPlayerInterface::Destroy(SbPlayer player) { void DefaultSbPlayerInterface::Seek(SbPlayer player, base::TimeDelta seek_to_timestamp, int ticket) { + media_metrics_provider_.StartTrackingAction(MediaAction::SBPLAYER_SEEK); #if SB_API_VERSION >= 15 SbPlayerSeek(player, seek_to_timestamp.InMicroseconds(), ticket); #else // SB_API_VERSION >= 15 SbPlayerSeek2(player, seek_to_timestamp.InMicroseconds(), ticket); #endif // SB_API_VERSION >= 15 + media_metrics_provider_.EndTrackingAction(MediaAction::SBPLAYER_SEEK); } bool DefaultSbPlayerInterface::IsEnhancedAudioExtensionEnabled() const { @@ -131,35 +138,57 @@ int DefaultSbPlayerInterface::GetMaximumNumberOfSamplesPerWrite( void DefaultSbPlayerInterface::WriteEndOfStream(SbPlayer player, SbMediaType stream_type) { + auto media_action = (stream_type == kSbMediaTypeAudio) + ? MediaAction::SBPLAYER_WRITE_END_OF_STREAM_AUDIO + : MediaAction::SBPLAYER_WRITE_END_OF_STREAM_VIDEO; + media_metrics_provider_.StartTrackingAction(media_action); SbPlayerWriteEndOfStream(player, stream_type); + media_metrics_provider_.EndTrackingAction(media_action); } void DefaultSbPlayerInterface::SetBounds(SbPlayer player, int z_index, int x, int y, int width, int height) { + media_metrics_provider_.StartTrackingAction(MediaAction::SBPLAYER_SET_BOUNDS); SbPlayerSetBounds(player, z_index, x, y, width, height); + media_metrics_provider_.EndTrackingAction(MediaAction::SBPLAYER_SET_BOUNDS); } bool DefaultSbPlayerInterface::SetPlaybackRate(SbPlayer player, double playback_rate) { - return SbPlayerSetPlaybackRate(player, playback_rate); + media_metrics_provider_.StartTrackingAction( + MediaAction::SBPLAYER_SET_PLAYBACK_RATE); + auto set_playback_rate = SbPlayerSetPlaybackRate(player, playback_rate); + media_metrics_provider_.EndTrackingAction( + MediaAction::SBPLAYER_SET_PLAYBACK_RATE); + return set_playback_rate; } void DefaultSbPlayerInterface::SetVolume(SbPlayer player, double volume) { + media_metrics_provider_.StartTrackingAction(MediaAction::SBPLAYER_SET_VOLUME); SbPlayerSetVolume(player, volume); + media_metrics_provider_.EndTrackingAction(MediaAction::SBPLAYER_SET_VOLUME); } void DefaultSbPlayerInterface::GetInfo(SbPlayer player, #if SB_API_VERSION >= 15 SbPlayerInfo* out_player_info) { + media_metrics_provider_.StartTrackingAction(MediaAction::SBPLAYER_GET_INFO); SbPlayerGetInfo(player, out_player_info); #else // SB_API_VERSION >= 15 SbPlayerInfo2* out_player_info2) { + media_metrics_provider_.StartTrackingAction(MediaAction::SBPLAYER_GET_INFO); SbPlayerGetInfo2(player, out_player_info2); #endif // SB_API_VERSION >= 15 + media_metrics_provider_.EndTrackingAction(MediaAction::SBPLAYER_GET_INFO); } SbDecodeTarget DefaultSbPlayerInterface::GetCurrentFrame(SbPlayer player) { - return SbPlayerGetCurrentFrame(player); + media_metrics_provider_.StartTrackingAction( + MediaAction::SBPLAYER_GET_CURRENT_FRAME); + auto current_frame = SbPlayerGetCurrentFrame(player); + media_metrics_provider_.EndTrackingAction( + MediaAction::SBPLAYER_GET_CURRENT_FRAME); + return current_frame; } #if SB_HAS(PLAYER_WITH_URL) @@ -199,7 +228,13 @@ void DefaultSbPlayerInterface::GetUrlPlayerExtraInfo( bool DefaultSbPlayerInterface::GetAudioConfiguration( SbPlayer player, int index, SbMediaAudioConfiguration* out_audio_configuration) { - return SbPlayerGetAudioConfiguration(player, index, out_audio_configuration); + media_metrics_provider_.StartTrackingAction( + MediaAction::SBPLAYER_GET_AUDIO_CONFIG); + auto audio_configuration = + SbPlayerGetAudioConfiguration(player, index, out_audio_configuration); + media_metrics_provider_.EndTrackingAction( + MediaAction::SBPLAYER_GET_AUDIO_CONFIG); + return audio_configuration; } #endif // SB_API_VERSION >= 15 diff --git a/cobalt/media/testing/BUILD.gn b/cobalt/media/testing/BUILD.gn index 49052ff3706e..dd0f9252bc79 100644 --- a/cobalt/media/testing/BUILD.gn +++ b/cobalt/media/testing/BUILD.gn @@ -17,7 +17,7 @@ import("//cobalt/media/testing/data/sha1_files.gni") action("cobalt_media_download_test_data") { install_content = true - script = "//cobalt/tools/download_from_gcs.py" + script = "//starboard/tools/download_from_gcs.py" sha_sources = [] foreach(sha1_file, sha1_files) { diff --git a/cobalt/network/BUILD.gn b/cobalt/network/BUILD.gn index 78b1145854c5..fc7b6173b0f3 100644 --- a/cobalt/network/BUILD.gn +++ b/cobalt/network/BUILD.gn @@ -12,8 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -import("//cobalt/network/certs.gni") - # TODO: b/330221826 Change to |public_configs| with matching dependencies. config("network_all_dependent_config") { # Enable network logging on all but gold builds. @@ -85,7 +83,6 @@ static_library("network") { public_deps = [ "//net" ] deps = [ - ":copy_ssl_certificates", "//cobalt/base", "//cobalt/build:cobalt_build_id", "//cobalt/configuration", @@ -93,6 +90,7 @@ static_library("network") { "//cobalt/persistent_storage:persistent_settings", "//cobalt/storage", "//starboard/common", + "//starboard/content/ssl:copy_ssl_certificates", "//third_party/protobuf:protobuf_lite", "//url", ] @@ -123,13 +121,6 @@ static_library("network") { all_dependent_configs = [ ":network_all_dependent_config" ] } -copy("copy_ssl_certificates") { - install_content = true - sources = network_certs - outputs = - [ "$sb_static_contents_output_data_dir/ssl/certs/{{source_file_part}}" ] -} - target(gtest_target_type, "network_test") { testonly = true has_pedantic_warnings = true diff --git a/cobalt/network/certs.gni b/cobalt/network/certs.gni deleted file mode 100644 index a8be5b3e4cb2..000000000000 --- a/cobalt/network/certs.gni +++ /dev/null @@ -1,135 +0,0 @@ -network_certs = [ - "//cobalt/content/ssl/certs/002c0b4f.0", - "//cobalt/content/ssl/certs/02265526.0", - "//cobalt/content/ssl/certs/062cdee6.0", - "//cobalt/content/ssl/certs/064e0aa9.0", - "//cobalt/content/ssl/certs/06dc52d5.0", - "//cobalt/content/ssl/certs/09789157.0", - "//cobalt/content/ssl/certs/0a775a30.0", - "//cobalt/content/ssl/certs/0b1b94ef.0", - "//cobalt/content/ssl/certs/0b9bc432.0", - "//cobalt/content/ssl/certs/0bf05006.0", - "//cobalt/content/ssl/certs/0f5dc4f3.0", - "//cobalt/content/ssl/certs/0f6fa695.0", - "//cobalt/content/ssl/certs/1001acf7.0", - "//cobalt/content/ssl/certs/106f3e4d.0", - "//cobalt/content/ssl/certs/14bc7599.0", - "//cobalt/content/ssl/certs/18856ac4.0", - "//cobalt/content/ssl/certs/1d3472b9.0", - "//cobalt/content/ssl/certs/1e08bfd1.0", - "//cobalt/content/ssl/certs/1e09d511.0", - "//cobalt/content/ssl/certs/244b5494.0", - "//cobalt/content/ssl/certs/2923b3f9.0", - "//cobalt/content/ssl/certs/2ae6433e.0", - "//cobalt/content/ssl/certs/2b349938.0", - "//cobalt/content/ssl/certs/32888f65.0", - "//cobalt/content/ssl/certs/3513523f.0", - "//cobalt/content/ssl/certs/3bde41ac.0", - "//cobalt/content/ssl/certs/3fb36b73.0", - "//cobalt/content/ssl/certs/40193066.0", - "//cobalt/content/ssl/certs/4042bcee.0", - "//cobalt/content/ssl/certs/40547a79.0", - "//cobalt/content/ssl/certs/406c9bb1.0", - "//cobalt/content/ssl/certs/48bec511.0", - "//cobalt/content/ssl/certs/4b718d9b.0", - "//cobalt/content/ssl/certs/4bfab552.0", - "//cobalt/content/ssl/certs/4f316efb.0", - "//cobalt/content/ssl/certs/5443e9e3.0", - "//cobalt/content/ssl/certs/54657681.0", - "//cobalt/content/ssl/certs/57bcb2da.0", - "//cobalt/content/ssl/certs/5860aaa6.0", - "//cobalt/content/ssl/certs/5931b5bc.0", - "//cobalt/content/ssl/certs/5ad8a5d6.0", - "//cobalt/content/ssl/certs/5cd81ad7.0", - "//cobalt/content/ssl/certs/5e98733a.0", - "//cobalt/content/ssl/certs/5f15c80c.0", - "//cobalt/content/ssl/certs/5f618aec.0", - "//cobalt/content/ssl/certs/607986c7.0", - "//cobalt/content/ssl/certs/626dceaf.0", - "//cobalt/content/ssl/certs/653b494a.0", - "//cobalt/content/ssl/certs/68dd7389.0", - "//cobalt/content/ssl/certs/6b99d060.0", - "//cobalt/content/ssl/certs/6d41d539.0", - "//cobalt/content/ssl/certs/6fa5da56.0", - "//cobalt/content/ssl/certs/706f604c.0", - "//cobalt/content/ssl/certs/749e9e03.0", - "//cobalt/content/ssl/certs/75d1b2ed.0", - "//cobalt/content/ssl/certs/76faf6c0.0", - "//cobalt/content/ssl/certs/7719f463.0", - "//cobalt/content/ssl/certs/773e07ad.0", - "//cobalt/content/ssl/certs/7a3adc42.0", - "//cobalt/content/ssl/certs/7a780d93.0", - "//cobalt/content/ssl/certs/7f3d5d1d.0", - "//cobalt/content/ssl/certs/8160b96c.0", - "//cobalt/content/ssl/certs/8508e720.0", - "//cobalt/content/ssl/certs/8cb5ee0f.0", - "//cobalt/content/ssl/certs/8d86cdd1.0", - "//cobalt/content/ssl/certs/8d89cda1.0", - "//cobalt/content/ssl/certs/8f103249.0", - "//cobalt/content/ssl/certs/90c5a3c8.0", - "//cobalt/content/ssl/certs/930ac5d2.0", - "//cobalt/content/ssl/certs/93bc0acc.0", - "//cobalt/content/ssl/certs/9482e63a.0", - "//cobalt/content/ssl/certs/9846683b.0", - "//cobalt/content/ssl/certs/988a38cb.0", - "//cobalt/content/ssl/certs/9b46e03d.0", - "//cobalt/content/ssl/certs/9b5697b0.0", - "//cobalt/content/ssl/certs/9c8dfbd4.0", - "//cobalt/content/ssl/certs/9d04f354.0", - "//cobalt/content/ssl/certs/9ef4a08a.0", - "//cobalt/content/ssl/certs/9f727ac7.0", - "//cobalt/content/ssl/certs/a3418fda.0", - "//cobalt/content/ssl/certs/a94d09e5.0", - "//cobalt/content/ssl/certs/aee5f10d.0", - "//cobalt/content/ssl/certs/b0e59380.0", - "//cobalt/content/ssl/certs/b1159c4c.0", - "//cobalt/content/ssl/certs/b433981b.0", - "//cobalt/content/ssl/certs/b66938e9.0", - "//cobalt/content/ssl/certs/b727005e.0", - "//cobalt/content/ssl/certs/b7a5b843.0", - "//cobalt/content/ssl/certs/b81b93f0.0", - "//cobalt/content/ssl/certs/bf53fb88.0", - "//cobalt/content/ssl/certs/c01eb047.0", - "//cobalt/content/ssl/certs/c28a8a30.0", - "//cobalt/content/ssl/certs/ca6e4ad9.0", - "//cobalt/content/ssl/certs/cbf06781.0", - "//cobalt/content/ssl/certs/cc450945.0", - "//cobalt/content/ssl/certs/cd58d51e.0", - "//cobalt/content/ssl/certs/cd8c0d63.0", - "//cobalt/content/ssl/certs/ce5e74ef.0", - "//cobalt/content/ssl/certs/d4dae3dd.0", - "//cobalt/content/ssl/certs/d52c538d.0", - "//cobalt/content/ssl/certs/d6325660.0", - "//cobalt/content/ssl/certs/d7e8dc79.0", - "//cobalt/content/ssl/certs/d887a5bb.0", - "//cobalt/content/ssl/certs/dc4d6a89.0", - "//cobalt/content/ssl/certs/dd8e9d41.0", - "//cobalt/content/ssl/certs/de6d66f3.0", - "//cobalt/content/ssl/certs/e113c810.0", - "//cobalt/content/ssl/certs/e18bfb83.0", - "//cobalt/content/ssl/certs/e35234b1.0", - "//cobalt/content/ssl/certs/e36a6752.0", - "//cobalt/content/ssl/certs/e73d606e.0", - "//cobalt/content/ssl/certs/e868b802.0", - "//cobalt/content/ssl/certs/e8de2f56.0", - "//cobalt/content/ssl/certs/ecccd8db.0", - "//cobalt/content/ssl/certs/ed858448.0", - "//cobalt/content/ssl/certs/ee64a828.0", - "//cobalt/content/ssl/certs/eed8c118.0", - "//cobalt/content/ssl/certs/ef954a4e.0", - "//cobalt/content/ssl/certs/f081611a.0", - "//cobalt/content/ssl/certs/f0c70a8d.0", - "//cobalt/content/ssl/certs/f249de83.0", - "//cobalt/content/ssl/certs/f30dd6ad.0", - "//cobalt/content/ssl/certs/f3377b1b.0", - "//cobalt/content/ssl/certs/f387163d.0", - "//cobalt/content/ssl/certs/f39fc864.0", - "//cobalt/content/ssl/certs/f51bb24c.0", - "//cobalt/content/ssl/certs/fa5da96b.0", - "//cobalt/content/ssl/certs/fb717492.0", - "//cobalt/content/ssl/certs/fc5a8f99.0", - "//cobalt/content/ssl/certs/fd64f3fc.0", - "//cobalt/content/ssl/certs/fe8a2cd8.0", - "//cobalt/content/ssl/certs/feffd413.0", - "//cobalt/content/ssl/certs/ff34af3f.0", -] diff --git a/cobalt/network/network_module.cc b/cobalt/network/network_module.cc index 8b2ec4558009..8954d43c3fe1 100644 --- a/cobalt/network/network_module.cc +++ b/cobalt/network/network_module.cc @@ -18,6 +18,7 @@ #include "base/bind.h" #include "base/command_line.h" +#include "base/json/json_reader.h" #include "base/logging.h" #include "base/path_service.h" #include "base/strings/string_number_conversions.h" @@ -160,6 +161,74 @@ void NetworkModule::SetEnableHttp3FromPersistentSettings() { } } +void NetworkModule::SetProtocolFilterUpdatePending() { + protocol_filter_update_pending_ = true; +} + +void NetworkModule::SetProtocolFilterFromPersistentSettings() { + if (!options_.persistent_settings) return; + if (!protocol_filter_update_pending_) return; + protocol_filter_update_pending_ = false; + + base::Value value; + options_.persistent_settings->Get(kProtocolFilterKey, &value); + if (!value.is_string()) return; + + if (value.GetString().empty()) { + task_runner()->PostTask(FROM_HERE, + base::Bind( + [](URLRequestContext* url_request_context) { + url_request_context->url_request_context() + ->quic_context() + ->params() + ->protocol_filter = absl::nullopt; + }, + base::Unretained(url_request_context_.get()))); + return; + } + + absl::optional config = + base::JSONReader::Read(value.GetString()); + if (!config.has_value() || !config->is_list()) return; + + net::ProtocolFilter protocol_filter; + for (auto& filter_value : config->GetList()) { + if (!filter_value.is_dict()) return; + const auto& dict = filter_value.GetDict(); + const base::Value* origin = dict.Find("origin"); + const base::Value* alt_svc = dict.Find("altSvc"); + if (!origin || !alt_svc) continue; + if (!origin->is_string() || !alt_svc->is_string()) continue; + net::ProtocolFilterEntry entry; + entry.origin = origin->GetString(); + if (base::StartsWith(alt_svc->GetString(), "h3")) { + entry.alt_svc.protocol = net::kProtoQUIC; + if (base::StartsWith(alt_svc->GetString(), "h3-Q046")) { + entry.alt_svc.quic_version = + net::ProtocolFilterEntry::QuicVersion::Q046; + } else { + entry.alt_svc.quic_version = + net::ProtocolFilterEntry::QuicVersion::RFC_V1; + } + } else { + entry.alt_svc.protocol = net::kProtoUnknown; + } + protocol_filter.push_back(std::move(entry)); + } + + task_runner()->PostTask( + FROM_HERE, base::Bind( + [](URLRequestContext* url_request_context, + net::ProtocolFilter protocol_filter) { + url_request_context->url_request_context() + ->quic_context() + ->params() + ->protocol_filter = std::move(protocol_filter); + }, + base::Unretained(url_request_context_.get()), + std::move(protocol_filter))); +} + void NetworkModule::EnsureStorageManagerStarted() { DCHECK(storage_manager_); storage_manager_->EnsureStarted(); @@ -249,6 +318,8 @@ void NetworkModule::Initialize(const std::string& user_agent_string, SetEnableQuicFromPersistentSettings(); SetEnableHttp2FromPersistentSettings(); SetEnableHttp3FromPersistentSettings(); + protocol_filter_update_pending_ = true; + SetProtocolFilterFromPersistentSettings(); } void NetworkModule::OnCreate( diff --git a/cobalt/network/network_module.h b/cobalt/network/network_module.h index e0151d690139..436d69c95958 100644 --- a/cobalt/network/network_module.h +++ b/cobalt/network/network_module.h @@ -61,6 +61,7 @@ constexpr int32_t kEnabledClientHintHeaders = (kCallTypeLoader | kCallTypeXHR); const char kQuicEnabledPersistentSettingsKey[] = "QUICEnabled"; const char kHttp2EnabledPersistentSettingsKey[] = "HTTP2Enabled"; const char kHttp3EnabledPersistentSettingsKey[] = "HTTP3Enabled"; +const char kProtocolFilterKey[] = "protocolfilter"; class NetworkSystem; // NetworkModule wraps various networking-related components such as @@ -133,6 +134,8 @@ class NetworkModule : public base::CurrentThread::DestructionObserver { void SetEnableQuicFromPersistentSettings(); void SetEnableHttp2FromPersistentSettings(); void SetEnableHttp3FromPersistentSettings(); + void SetProtocolFilterUpdatePending(); + void SetProtocolFilterFromPersistentSettings(); // Adds the Client Hint Headers to the provided URLFetcher if enabled. void AddClientHintHeaders(net::URLFetcher& url_fetcher, @@ -176,6 +179,7 @@ class NetworkModule : public base::CurrentThread::DestructionObserver { std::unique_ptr net_log_{nullptr}; #endif Options options_; + bool protocol_filter_update_pending_; DISALLOW_COPY_AND_ASSIGN(NetworkModule); }; diff --git a/cobalt/renderer/BUILD.gn b/cobalt/renderer/BUILD.gn index 90aadd757236..412218f5c877 100644 --- a/cobalt/renderer/BUILD.gn +++ b/cobalt/renderer/BUILD.gn @@ -66,9 +66,7 @@ static_library("renderer") { "//starboard/content/fonts:copy_font_data", ] - if (is_starboard) { - deps += [ default_renderer_options_dependency ] - } + deps += [ "//cobalt/renderer:default_options" ] if (!is_gold) { deps += [ "//cobalt/debug:console_command_manager" ] @@ -502,7 +500,7 @@ copy("renderer_copy_lottie_test_data") { action("renderer_download_lottie_test_data") { install_content = true - script = "//cobalt/tools/download_from_gcs.py" + script = "//starboard/tools/download_from_gcs.py" inputs = [ "$_lottie_resource_path/finger_print-expected.png.sha1", diff --git a/cobalt/site/docs/reference/starboard/gn-configuration.md b/cobalt/site/docs/reference/starboard/gn-configuration.md index 17133167ac30..23747020ac19 100644 --- a/cobalt/site/docs/reference/starboard/gn-configuration.md +++ b/cobalt/site/docs/reference/starboard/gn-configuration.md @@ -9,7 +9,6 @@ Book: /youtube/cobalt/_book.yaml | **`cobalt_licenses_platform`**

Sub-directory to copy license file to.

The default value is `"default"`. | | **`cobalt_platform_dependencies`**

List of platform-specific targets that get compiled into cobalt.

The default value is `[]`. | | **`cobalt_v8_emit_builtins_as_inline_asm`**

Some compiler can not compile with raw assembly(.S files) and v8 converts asm to inline assembly for these platforms.

The default value is `false`. | -| **`default_renderer_options_dependency`**

Override this value to adjust the default rasterizer setting for your platform.

The default value is `"//cobalt/renderer:default_options"`. | | **`enable_in_app_dial`**

Enables or disables the DIAL server that runs inside Cobalt. Note: Only enable if there's no system-wide DIAL support.

The default value is `false`. | | **`executable_configs`**

Target-specific configurations for executable targets.

The default value is `[]`. | | **`final_executable_type`**

The target type for executable targets. Allows changing the target type on platforms where the native code may require an additional packaging step (ex. Android).

The default value is `"executable"`. | diff --git a/cobalt/site/scripts/generate_sb_reference_yaml.py b/cobalt/site/scripts/generate_sb_reference_yaml.py new file mode 100644 index 000000000000..4584cad7fee1 --- /dev/null +++ b/cobalt/site/scripts/generate_sb_reference_yaml.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python3 +# 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. +""" +Generate the part of the _book.yaml Table of Contents for Starboard modules. +""" + +import os +import sys +import pathlib +import typing + +_REPO_ROOT = pathlib.Path(__file__).resolve().parents[3] +_DEVSITE_ROOT = os.path.relpath(os.path.join(_REPO_ROOT, "cobalt", "site")) + + +def _get_modules(path: str) -> typing.List[str]: + """ + Get a list of all generated Starboard module markdown files in the specified + folder. + """ + sb_modules = [ + os.path.join(path, name) + for name in os.listdir(path) + if os.path.isfile(os.path.join(path, name)) and name[-3:] == ".md" + ] + return sorted(sb_modules) + + +def _get_sb_versions(module_reference_path: str) -> typing.List[str]: + """ + Get the Starboard folders in the module reference path. + """ + sb_versions = [ + os.path.join(module_reference_path, name) + for name in os.listdir(module_reference_path) + if os.path.isdir(os.path.join(module_reference_path, name)) + ] + return sorted(sb_versions) + + +def _print_header(title: str): + print(f" - title: {title}") + print(" section:") + + +def _print_modules(modules: typing.List[str]): + for module_path in modules: + rel_path = os.path.relpath(module_path, _DEVSITE_ROOT) + print(f" - title: {pathlib.Path(module_path).stem}.h") + print(f" path: /youtube/cobalt/{rel_path}") + + +def generate_toc() -> None: + """Generate the Starboard module Table of Contents.""" + if len(sys.argv) > 2: + print(f"Usage: {sys.argv[0]} ") + sys.exit(1) + + path = sys.argv[1] + + # Print a header and link to individual module reference docs. + for sb_version_path in _get_sb_versions(path): + _print_header(f"Starboard {os.path.basename(sb_version_path)}") + _print_modules(_get_modules(sb_version_path)) + + +if __name__ == "__main__": + generate_toc() diff --git a/components/crx_file/BUILD.gn b/components/crx_file/BUILD.gn index 0614a146e2b5..35274525aa2f 100644 --- a/components/crx_file/BUILD.gn +++ b/components/crx_file/BUILD.gn @@ -35,7 +35,7 @@ if (is_starboard) { action("crx_file_download_test_data") { install_content = true - script = "//cobalt/tools/download_from_gcs.py" + script = "//starboard/tools/download_from_gcs.py" sha_sources = [] foreach(sha1_file, sha1_files) { diff --git a/download_resources.py b/download_resources.py index 8e6ab153f679..af5a35078a63 100644 --- a/download_resources.py +++ b/download_resources.py @@ -22,7 +22,7 @@ except ImportError: import urllib2 as urllib -from cobalt.tools import download_from_gcs +from starboard.tools import download_from_gcs def DownloadGerritCommitMsgHook(force=False): diff --git a/net/BUILD.gn b/net/BUILD.gn index ec5057e993fc..f39903c388fe 100644 --- a/net/BUILD.gn +++ b/net/BUILD.gn @@ -3075,7 +3075,7 @@ test("net_unittests") { data_deps += [ ":net_unittest_files", ":third_party_unittest_files", - "//cobalt/network:copy_ssl_certificates", + "//starboard/content/ssl:copy_ssl_certificates", ] } diff --git a/net/http/alternative_service.cc b/net/http/alternative_service.cc index b00f65b91c72..d65ddba2f40e 100644 --- a/net/http/alternative_service.cc +++ b/net/http/alternative_service.cc @@ -77,10 +77,19 @@ AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo( AlternativeServiceInfo AlternativeServiceInfo::CreateQuicAlternativeServiceInfo( const AlternativeService& alternative_service, base::Time expiration, +#if defined(STARBOARD) + const quic::ParsedQuicVersionVector& advertised_versions, + bool protocol_filter_override) { +#else const quic::ParsedQuicVersionVector& advertised_versions) { +#endif // defined(STARBOARD) DCHECK_EQ(alternative_service.protocol, kProtoQUIC); return AlternativeServiceInfo(alternative_service, expiration, +#if defined(STARBOARD) + advertised_versions, protocol_filter_override); +#else advertised_versions); +#endif // defined(STARBOARD) } AlternativeServiceInfo::AlternativeServiceInfo() : alternative_service_() {} @@ -90,11 +99,19 @@ AlternativeServiceInfo::~AlternativeServiceInfo() = default; AlternativeServiceInfo::AlternativeServiceInfo( const AlternativeService& alternative_service, base::Time expiration, +#if defined(STARBOARD) + const quic::ParsedQuicVersionVector& advertised_versions, + bool protocol_filter_override) +#else const quic::ParsedQuicVersionVector& advertised_versions) +#endif // defined(STARBOARD) : alternative_service_(alternative_service), expiration_(expiration) { if (alternative_service_.protocol == kProtoQUIC) { advertised_versions_ = advertised_versions; } +#if defined(STARBOARD) + protocol_filter_override_ = protocol_filter_override; +#endif // defined(STARBOARD) } AlternativeServiceInfo::AlternativeServiceInfo( diff --git a/net/http/alternative_service.h b/net/http/alternative_service.h index 480b45220c6e..73a29180fe7e 100644 --- a/net/http/alternative_service.h +++ b/net/http/alternative_service.h @@ -102,10 +102,18 @@ class NET_EXPORT_PRIVATE AlternativeServiceInfo { const AlternativeService& alternative_service, base::Time expiration); +#if defined(STARBOARD) + static AlternativeServiceInfo CreateQuicAlternativeServiceInfo( + const AlternativeService& alternative_service, + base::Time expiration, + const quic::ParsedQuicVersionVector& advertised_versions, + bool protocol_filter_override = false); +#else static AlternativeServiceInfo CreateQuicAlternativeServiceInfo( const AlternativeService& alternative_service, base::Time expiration, const quic::ParsedQuicVersionVector& advertised_versions); +#endif // defined(STARBOARD) AlternativeServiceInfo(); ~AlternativeServiceInfo(); @@ -116,11 +124,20 @@ class NET_EXPORT_PRIVATE AlternativeServiceInfo { AlternativeServiceInfo& operator=( const AlternativeServiceInfo& alternative_service_info); +#if defined(STARBOARD) + bool operator==(const AlternativeServiceInfo& other) const { + return alternative_service_ == other.alternative_service() && + expiration_ == other.expiration() && + advertised_versions_ == other.advertised_versions() && + protocol_filter_override_ == other.protocol_filter_override(); + } +#else bool operator==(const AlternativeServiceInfo& other) const { return alternative_service_ == other.alternative_service() && expiration_ == other.expiration() && advertised_versions_ == other.advertised_versions(); } +#endif // defined(STARBOARD) bool operator!=(const AlternativeServiceInfo& other) const { return !this->operator==(other); @@ -170,11 +187,25 @@ class NET_EXPORT_PRIVATE AlternativeServiceInfo { return advertised_versions_; } +#if defined(STARBOARD) + const bool protocol_filter_override() const { + return protocol_filter_override_; + } +#endif // defined(STARBOARD) + private: +#if defined(STARBOARD) + AlternativeServiceInfo( + const AlternativeService& alternative_service, + base::Time expiration, + const quic::ParsedQuicVersionVector& advertised_versions, + bool protocol_filter_override = false); +#else AlternativeServiceInfo( const AlternativeService& alternative_service, base::Time expiration, const quic::ParsedQuicVersionVector& advertised_versions); +#endif // defined(STARBOARD) static bool TransportVersionLessThan(const quic::ParsedQuicVersion& lhs, const quic::ParsedQuicVersion& rhs); @@ -186,6 +217,10 @@ class NET_EXPORT_PRIVATE AlternativeServiceInfo { // by Chrome. If empty, defaults to versions used by the current instance of // the netstack. This list is sorted according to the server's preference. quic::ParsedQuicVersionVector advertised_versions_; + +#if defined(STARBOARD) + bool protocol_filter_override_; +#endif // defined(STARBOARD) }; using AlternativeServiceInfoVector = std::vector; diff --git a/net/http/http_stream_factory_job.cc b/net/http/http_stream_factory_job.cc index 5b524b058b32..f17e443c48b3 100644 --- a/net/http/http_stream_factory_job.cc +++ b/net/http/http_stream_factory_job.cc @@ -128,7 +128,12 @@ HttpStreamFactory::Job::Job(Delegate* delegate, quic::ParsedQuicVersion quic_version, bool is_websocket, bool enable_ip_based_pooling, +#if defined(STARBOARD) + NetLog* net_log, + bool protocol_filter_override) +#else NetLog* net_log) +#endif // defined(STARBOARD) : request_info_(request_info), priority_(priority), proxy_info_(proxy_info), @@ -165,6 +170,9 @@ HttpStreamFactory::Job::Job(Delegate* delegate, is_websocket_)) || job_type == DNS_ALPN_H3 || job_type == PRECONNECT_DNS_ALPN_H3), +#if defined(STARBOARD) + protocol_filter_override_(protocol_filter_override), +#endif //defined(STARBOARD) quic_version_(quic_version), expect_spdy_(alternative_protocol == kProtoHTTP2 && !using_quic_), quic_request_(session_->quic_stream_factory()), @@ -218,9 +226,15 @@ HttpStreamFactory::Job::Job(Delegate* delegate, if (expect_spdy_) { DCHECK(origin_url_.SchemeIs(url::kHttpsScheme)); } +#if defined(STARBOARD) + if (using_quic_ && !protocol_filter_override_) { + DCHECK(session_->IsQuicEnabled()); + } +#else if (using_quic_) { DCHECK(session_->IsQuicEnabled()); } +#endif // defined(STARBOARD) if (job_type_ == PRECONNECT || is_websocket_) { DCHECK(request_info_.socket_tag == SocketTag()); } @@ -1342,12 +1356,21 @@ HttpStreamFactory::JobFactory::CreateJob( bool enable_ip_based_pooling, NetLog* net_log, NextProto alternative_protocol, +#if defined(STARBOARD) + quic::ParsedQuicVersion quic_version, + bool protocol_filter_override) { +#else quic::ParsedQuicVersion quic_version) { +#endif // defined(STARBOARD) return std::make_unique( delegate, job_type, session, request_info, priority, proxy_info, server_ssl_config, proxy_ssl_config, std::move(destination), origin_url, alternative_protocol, quic_version, is_websocket, enable_ip_based_pooling, +#if defined(STARBOARD) + net_log, protocol_filter_override); +#else net_log); +#endif // defined(STARBOARD) } bool HttpStreamFactory::Job::ShouldThrottleConnectForSpdy() const { diff --git a/net/http/http_stream_factory_job.h b/net/http/http_stream_factory_job.h index 35d7672624b8..6d003ab1543d 100644 --- a/net/http/http_stream_factory_job.h +++ b/net/http/http_stream_factory_job.h @@ -162,7 +162,12 @@ class HttpStreamFactory::Job quic::ParsedQuicVersion quic_version, bool is_websocket, bool enable_ip_based_pooling, +#if defined(STARBOARD) + NetLog* net_log, + bool protocol_filter_override); +#else NetLog* net_log); +#endif // defined(STARBOARD) Job(const Job&) = delete; Job& operator=(const Job&) = delete; @@ -414,6 +419,11 @@ class HttpStreamFactory::Job // proxy. This differs from `using_ssl_`, which only describes the origin. const bool using_quic_; +#if defined(STARBOARD) + // True if |using_quic_| can be true when QUIC is not enabled by the session. + const bool protocol_filter_override_; +#endif //defined(STARBOARD) + // quic::ParsedQuicVersion that should be used to connect to the QUIC // server if Job uses QUIC. quic::ParsedQuicVersion quic_version_; @@ -515,8 +525,14 @@ class HttpStreamFactory::JobFactory { bool enable_ip_based_pooling, NetLog* net_log, NextProto alternative_protocol = kProtoUnknown, +#if defined(STARBOARD) + quic::ParsedQuicVersion quic_version = + quic::ParsedQuicVersion::Unsupported(), + bool protocol_filter_override = false); +#else quic::ParsedQuicVersion quic_version = quic::ParsedQuicVersion::Unsupported()); +#endif // defined(STARBOARD) }; } // namespace net diff --git a/net/http/http_stream_factory_job_controller.cc b/net/http/http_stream_factory_job_controller.cc index c2d1194a6309..2dc1004470a3 100644 --- a/net/http/http_stream_factory_job_controller.cc +++ b/net/http/http_stream_factory_job_controller.cc @@ -11,6 +11,9 @@ #include "base/functional/bind.h" #include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_macros.h" +#if defined(STARBOARD) +#include "base/strings/pattern.h" +#endif // defined(STARBOARD) #include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" #include "base/task/single_thread_task_runner.h" @@ -817,10 +820,25 @@ int HttpStreamFactory::JobController::DoCreateJobs() { GetAlternativeServiceInfoFor(request_info_, delegate_, stream_type_); } quic::ParsedQuicVersion quic_version = quic::ParsedQuicVersion::Unsupported(); +#if defined(STARBOARD) + bool protocol_filter_override = false; +#endif // defined(STARBOARD) if (alternative_service_info_.protocol() == kProtoQUIC) { +#if defined(STARBOARD) + if (alternative_service_info_.protocol_filter_override() && + alternative_service_info_.advertised_versions().size() == 1) { + protocol_filter_override = true; + quic_version = alternative_service_info_.advertised_versions()[0]; + } else { + quic_version = + SelectQuicVersion(alternative_service_info_.advertised_versions()); + DCHECK_NE(quic_version, quic::ParsedQuicVersion::Unsupported()); + } +#else quic_version = SelectQuicVersion(alternative_service_info_.advertised_versions()); DCHECK_NE(quic_version, quic::ParsedQuicVersion::Unsupported()); +#endif // defined(STARBOARD) } const bool dns_alpn_h3_job_enabled = enable_alternative_services_ && @@ -911,7 +929,12 @@ int HttpStreamFactory::JobController::DoCreateJobs() { server_ssl_config_, proxy_ssl_config_, std::move(alternative_destination), origin_url, is_websocket_, enable_ip_based_pooling_, net_log_.net_log(), +#if defined(STARBOARD) + alternative_service_info_.protocol(), quic_version, + protocol_filter_override); +#else alternative_service_info_.protocol(), quic_version); +#endif // defined(STARBOARD) } if (dns_alpn_h3_job_enabled && !main_job_->using_quic()) { @@ -1203,6 +1226,30 @@ HttpStreamFactory::JobController::GetAlternativeServiceInfoInternal( url::SchemeHostPort(original_url), request_info.network_anonymization_key); #if defined(STARBOARD) + if (session_->context().quic_context->params()->protocol_filter.has_value()) { + url::SchemeHostPort origin(original_url); + const ProtocolFilter& protocol_filter = *(session_->context().quic_context->params()->protocol_filter); + for (const ProtocolFilterEntry& entry : protocol_filter) { + if (!base::MatchPattern(origin.host(), entry.origin)) continue; + + if (entry.alt_svc.protocol != kProtoQUIC) { + return AlternativeServiceInfo(); + } + + quic::ParsedQuicVersionVector versions; + if (entry.alt_svc.quic_version == ProtocolFilterEntry::QuicVersion::Q046) { + versions.push_back(quic::ParsedQuicVersion::Q046()); + } else { + versions.push_back(quic::ParsedQuicVersion::RFCv1()); + } + + return AlternativeServiceInfo::CreateQuicAlternativeServiceInfo( + AlternativeService(net::kProtoQUIC, origin.host(), + origin.port()), + base::Time::Max(), versions, /*protocol_filter_override=*/true); + } + } + // This block of code suggests QUIC connection for initial requests to a // new host. This method is proven to provide performance benefit while still // enabling Cobalt network module to fall back on TCP connection when QUIC @@ -1213,7 +1260,7 @@ HttpStreamFactory::JobController::GetAlternativeServiceInfoInternal( // Leave the port restriction only in production builds to simplify testing #if defined(COBALT_BUILD_TYPE_GOLD) if (origin.port() == kDefaultQUICServerPort) { -#endif +#endif // defined(COBALT_BUILD_TYPE_GOLD) quic::ParsedQuicVersionVector versions = quic::AllSupportedVersions(); return AlternativeServiceInfo::CreateQuicAlternativeServiceInfo( AlternativeService(net::kProtoQUIC, origin.host(), @@ -1221,13 +1268,13 @@ HttpStreamFactory::JobController::GetAlternativeServiceInfoInternal( base::Time::Max(), versions); #if defined(COBALT_BUILD_TYPE_GOLD) } -#endif +#endif // defined(COBALT_BUILD_TYPE_GOLD) return AlternativeServiceInfo(); } #else if (alternative_service_info_vector.empty()) return AlternativeServiceInfo(); -#endif +#endif // defined(STARBOARD) bool quic_advertised = false; bool quic_all_broken = true; diff --git a/net/http/http_stream_factory_test_util.cc b/net/http/http_stream_factory_test_util.cc index b934d2e7d764..bd66262c659a 100644 --- a/net/http/http_stream_factory_test_util.cc +++ b/net/http/http_stream_factory_test_util.cc @@ -46,7 +46,12 @@ MockHttpStreamFactoryJob::MockHttpStreamFactoryJob( quic_version, is_websocket, enable_ip_based_pooling, +#if defined(STARBOARD) + net_log, + /*protocol_filter_override=*/false) { +#else net_log) { +#endif // defined(STARBOARD) DCHECK(!is_waiting()); } @@ -75,8 +80,14 @@ std::unique_ptr TestJobFactory::CreateJob( bool enable_ip_based_pooling, NetLog* net_log, NextProto alternative_protocol = kProtoUnknown, +#if defined(STARBOARD) + quic::ParsedQuicVersion quic_version = + quic::ParsedQuicVersion::Unsupported(), + bool protocol_filter_override = false) { +#else quic::ParsedQuicVersion quic_version = quic::ParsedQuicVersion::Unsupported()) { +#endif // defined(STARBOARD) auto job = std::make_unique( delegate, job_type, session, request_info, priority, proxy_info, SSLConfig(), SSLConfig(), std::move(destination), origin_url, diff --git a/net/http/http_stream_factory_test_util.h b/net/http/http_stream_factory_test_util.h index bae8052f727c..7c93fc6795d5 100644 --- a/net/http/http_stream_factory_test_util.h +++ b/net/http/http_stream_factory_test_util.h @@ -150,7 +150,12 @@ class TestJobFactory : public HttpStreamFactory::JobFactory { bool enable_ip_based_pooling, NetLog* net_log, NextProto alternative_protocol, +#if defined(STARBOARD) + quic::ParsedQuicVersion quic_version, + bool protocol_filter_override) override; +#else quic::ParsedQuicVersion quic_version) override; +#endif // defined(STARBOARD) MockHttpStreamFactoryJob* main_job() const { return main_job_; } MockHttpStreamFactoryJob* alternative_job() const { return alternative_job_; } diff --git a/net/quic/quic_context.h b/net/quic/quic_context.h index a92da726fddd..6faf2508f564 100644 --- a/net/quic/quic_context.h +++ b/net/quic/quic_context.h @@ -12,10 +12,32 @@ #include "base/time/time.h" #include "net/base/features.h" #include "net/base/host_port_pair.h" +#if defined(STARBOARD) +#include "net/socket/next_proto.h" +#endif // defined(STARBOARD) #include "net/third_party/quiche/src/quiche/quic/core/quic_connection.h" namespace net { +#if defined(STARBOARD) +struct ProtocolFilterEntry { + +enum QuicVersion { + Q046, + RFC_V1 +}; + +struct AltSvc { + NextProto protocol; + QuicVersion quic_version; +}; + + std::string origin; + AltSvc alt_svc; +}; +using ProtocolFilter = std::vector; +#endif // defined(STARBOARD) + // Default QUIC supported versions used in absence of any external // configuration. inline NET_EXPORT_PRIVATE quic::ParsedQuicVersionVector @@ -201,6 +223,10 @@ struct NET_EXPORT QuicParams { // If true, delay main job even the request can be sent immediately on an // available SPDY session. bool delay_main_job_with_available_spdy_session = false; +#if defined(STARBOARD) + // Override alternative service for an origin. + absl::optional protocol_filter; +#endif // defined(STARBOARD) }; // QuicContext contains QUIC-related variables that are shared across all of the diff --git a/starboard/build/config/base_configuration.gni b/starboard/build/config/base_configuration.gni index f0a0f2c28c08..e8aa81a26f93 100644 --- a/starboard/build/config/base_configuration.gni +++ b/starboard/build/config/base_configuration.gni @@ -13,7 +13,6 @@ # limitations under the License. import("//starboard/build/config/clang.gni") -import("//starboard/build/config/enable_vr.gni") import("//starboard/content/fonts/font_configuration.gni") # NOTE: @@ -122,10 +121,6 @@ declare_args() { # Note: Only enable if there's no system-wide DIAL support. enable_in_app_dial = false - # Override this value to adjust the default rasterizer setting for your - # platform. - default_renderer_options_dependency = "//cobalt/renderer:default_options" - # A symbolizer path for ASAN can be added to allow translation of callstacks. asan_symbolizer_path = "$clang_base_path/bin/llvm-symbolizer" diff --git a/starboard/client_porting/eztime/BUILD.gn b/starboard/client_porting/eztime/BUILD.gn index 5840b29ce981..aa4342b66686 100644 --- a/starboard/client_porting/eztime/BUILD.gn +++ b/starboard/client_porting/eztime/BUILD.gn @@ -42,5 +42,5 @@ target(gtest_target_type, "eztime_test") { "//testing/gtest", ] - data_deps = [ "//cobalt/network:copy_ssl_certificates" ] + data_deps = [ "//starboard/content/ssl:copy_ssl_certificates" ] } diff --git a/starboard/build/config/enable_vr.gni b/starboard/content/ssl/BUILD.gn similarity index 60% rename from starboard/build/config/enable_vr.gni rename to starboard/content/ssl/BUILD.gn index b7f2d81110b1..b737e13a38a8 100644 --- a/starboard/build/config/enable_vr.gni +++ b/starboard/content/ssl/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright 2022 The Cobalt Authors. All Rights Reserved. +# 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. @@ -12,15 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -declare_args() { - # Whether VR is enabled. - enable_vr = getenv("USE_VR") -} +import("//starboard/content/ssl/certs.gni") -if (enable_vr == true || enable_vr == "1") { - enable_vr = true -} else if (enable_vr == false || enable_vr == "0" || enable_vr == "") { - enable_vr = false -} else { - assert(false, "enable_vr was set to an invalid value.") +copy("copy_ssl_certificates") { + install_content = true + sources = network_certs + outputs = + [ "$sb_static_contents_output_data_dir/ssl/certs/{{source_file_part}}" ] } diff --git a/starboard/content/ssl/certs.gni b/starboard/content/ssl/certs.gni new file mode 100644 index 000000000000..3e1cdc888197 --- /dev/null +++ b/starboard/content/ssl/certs.gni @@ -0,0 +1,135 @@ +network_certs = [ + "//starboard/content/ssl/certs/002c0b4f.0", + "//starboard/content/ssl/certs/02265526.0", + "//starboard/content/ssl/certs/062cdee6.0", + "//starboard/content/ssl/certs/064e0aa9.0", + "//starboard/content/ssl/certs/06dc52d5.0", + "//starboard/content/ssl/certs/09789157.0", + "//starboard/content/ssl/certs/0a775a30.0", + "//starboard/content/ssl/certs/0b1b94ef.0", + "//starboard/content/ssl/certs/0b9bc432.0", + "//starboard/content/ssl/certs/0bf05006.0", + "//starboard/content/ssl/certs/0f5dc4f3.0", + "//starboard/content/ssl/certs/0f6fa695.0", + "//starboard/content/ssl/certs/1001acf7.0", + "//starboard/content/ssl/certs/106f3e4d.0", + "//starboard/content/ssl/certs/14bc7599.0", + "//starboard/content/ssl/certs/18856ac4.0", + "//starboard/content/ssl/certs/1d3472b9.0", + "//starboard/content/ssl/certs/1e08bfd1.0", + "//starboard/content/ssl/certs/1e09d511.0", + "//starboard/content/ssl/certs/244b5494.0", + "//starboard/content/ssl/certs/2923b3f9.0", + "//starboard/content/ssl/certs/2ae6433e.0", + "//starboard/content/ssl/certs/2b349938.0", + "//starboard/content/ssl/certs/32888f65.0", + "//starboard/content/ssl/certs/3513523f.0", + "//starboard/content/ssl/certs/3bde41ac.0", + "//starboard/content/ssl/certs/3fb36b73.0", + "//starboard/content/ssl/certs/40193066.0", + "//starboard/content/ssl/certs/4042bcee.0", + "//starboard/content/ssl/certs/40547a79.0", + "//starboard/content/ssl/certs/406c9bb1.0", + "//starboard/content/ssl/certs/48bec511.0", + "//starboard/content/ssl/certs/4b718d9b.0", + "//starboard/content/ssl/certs/4bfab552.0", + "//starboard/content/ssl/certs/4f316efb.0", + "//starboard/content/ssl/certs/5443e9e3.0", + "//starboard/content/ssl/certs/54657681.0", + "//starboard/content/ssl/certs/57bcb2da.0", + "//starboard/content/ssl/certs/5860aaa6.0", + "//starboard/content/ssl/certs/5931b5bc.0", + "//starboard/content/ssl/certs/5ad8a5d6.0", + "//starboard/content/ssl/certs/5cd81ad7.0", + "//starboard/content/ssl/certs/5e98733a.0", + "//starboard/content/ssl/certs/5f15c80c.0", + "//starboard/content/ssl/certs/5f618aec.0", + "//starboard/content/ssl/certs/607986c7.0", + "//starboard/content/ssl/certs/626dceaf.0", + "//starboard/content/ssl/certs/653b494a.0", + "//starboard/content/ssl/certs/68dd7389.0", + "//starboard/content/ssl/certs/6b99d060.0", + "//starboard/content/ssl/certs/6d41d539.0", + "//starboard/content/ssl/certs/6fa5da56.0", + "//starboard/content/ssl/certs/706f604c.0", + "//starboard/content/ssl/certs/749e9e03.0", + "//starboard/content/ssl/certs/75d1b2ed.0", + "//starboard/content/ssl/certs/76faf6c0.0", + "//starboard/content/ssl/certs/7719f463.0", + "//starboard/content/ssl/certs/773e07ad.0", + "//starboard/content/ssl/certs/7a3adc42.0", + "//starboard/content/ssl/certs/7a780d93.0", + "//starboard/content/ssl/certs/7f3d5d1d.0", + "//starboard/content/ssl/certs/8160b96c.0", + "//starboard/content/ssl/certs/8508e720.0", + "//starboard/content/ssl/certs/8cb5ee0f.0", + "//starboard/content/ssl/certs/8d86cdd1.0", + "//starboard/content/ssl/certs/8d89cda1.0", + "//starboard/content/ssl/certs/8f103249.0", + "//starboard/content/ssl/certs/90c5a3c8.0", + "//starboard/content/ssl/certs/930ac5d2.0", + "//starboard/content/ssl/certs/93bc0acc.0", + "//starboard/content/ssl/certs/9482e63a.0", + "//starboard/content/ssl/certs/9846683b.0", + "//starboard/content/ssl/certs/988a38cb.0", + "//starboard/content/ssl/certs/9b46e03d.0", + "//starboard/content/ssl/certs/9b5697b0.0", + "//starboard/content/ssl/certs/9c8dfbd4.0", + "//starboard/content/ssl/certs/9d04f354.0", + "//starboard/content/ssl/certs/9ef4a08a.0", + "//starboard/content/ssl/certs/9f727ac7.0", + "//starboard/content/ssl/certs/a3418fda.0", + "//starboard/content/ssl/certs/a94d09e5.0", + "//starboard/content/ssl/certs/aee5f10d.0", + "//starboard/content/ssl/certs/b0e59380.0", + "//starboard/content/ssl/certs/b1159c4c.0", + "//starboard/content/ssl/certs/b433981b.0", + "//starboard/content/ssl/certs/b66938e9.0", + "//starboard/content/ssl/certs/b727005e.0", + "//starboard/content/ssl/certs/b7a5b843.0", + "//starboard/content/ssl/certs/b81b93f0.0", + "//starboard/content/ssl/certs/bf53fb88.0", + "//starboard/content/ssl/certs/c01eb047.0", + "//starboard/content/ssl/certs/c28a8a30.0", + "//starboard/content/ssl/certs/ca6e4ad9.0", + "//starboard/content/ssl/certs/cbf06781.0", + "//starboard/content/ssl/certs/cc450945.0", + "//starboard/content/ssl/certs/cd58d51e.0", + "//starboard/content/ssl/certs/cd8c0d63.0", + "//starboard/content/ssl/certs/ce5e74ef.0", + "//starboard/content/ssl/certs/d4dae3dd.0", + "//starboard/content/ssl/certs/d52c538d.0", + "//starboard/content/ssl/certs/d6325660.0", + "//starboard/content/ssl/certs/d7e8dc79.0", + "//starboard/content/ssl/certs/d887a5bb.0", + "//starboard/content/ssl/certs/dc4d6a89.0", + "//starboard/content/ssl/certs/dd8e9d41.0", + "//starboard/content/ssl/certs/de6d66f3.0", + "//starboard/content/ssl/certs/e113c810.0", + "//starboard/content/ssl/certs/e18bfb83.0", + "//starboard/content/ssl/certs/e35234b1.0", + "//starboard/content/ssl/certs/e36a6752.0", + "//starboard/content/ssl/certs/e73d606e.0", + "//starboard/content/ssl/certs/e868b802.0", + "//starboard/content/ssl/certs/e8de2f56.0", + "//starboard/content/ssl/certs/ecccd8db.0", + "//starboard/content/ssl/certs/ed858448.0", + "//starboard/content/ssl/certs/ee64a828.0", + "//starboard/content/ssl/certs/eed8c118.0", + "//starboard/content/ssl/certs/ef954a4e.0", + "//starboard/content/ssl/certs/f081611a.0", + "//starboard/content/ssl/certs/f0c70a8d.0", + "//starboard/content/ssl/certs/f249de83.0", + "//starboard/content/ssl/certs/f30dd6ad.0", + "//starboard/content/ssl/certs/f3377b1b.0", + "//starboard/content/ssl/certs/f387163d.0", + "//starboard/content/ssl/certs/f39fc864.0", + "//starboard/content/ssl/certs/f51bb24c.0", + "//starboard/content/ssl/certs/fa5da96b.0", + "//starboard/content/ssl/certs/fb717492.0", + "//starboard/content/ssl/certs/fc5a8f99.0", + "//starboard/content/ssl/certs/fd64f3fc.0", + "//starboard/content/ssl/certs/fe8a2cd8.0", + "//starboard/content/ssl/certs/feffd413.0", + "//starboard/content/ssl/certs/ff34af3f.0", +] diff --git a/cobalt/content/ssl/certs/002c0b4f.0 b/starboard/content/ssl/certs/002c0b4f.0 similarity index 100% rename from cobalt/content/ssl/certs/002c0b4f.0 rename to starboard/content/ssl/certs/002c0b4f.0 diff --git a/cobalt/content/ssl/certs/02265526.0 b/starboard/content/ssl/certs/02265526.0 similarity index 100% rename from cobalt/content/ssl/certs/02265526.0 rename to starboard/content/ssl/certs/02265526.0 diff --git a/cobalt/content/ssl/certs/062cdee6.0 b/starboard/content/ssl/certs/062cdee6.0 similarity index 100% rename from cobalt/content/ssl/certs/062cdee6.0 rename to starboard/content/ssl/certs/062cdee6.0 diff --git a/cobalt/content/ssl/certs/064e0aa9.0 b/starboard/content/ssl/certs/064e0aa9.0 similarity index 100% rename from cobalt/content/ssl/certs/064e0aa9.0 rename to starboard/content/ssl/certs/064e0aa9.0 diff --git a/cobalt/content/ssl/certs/06dc52d5.0 b/starboard/content/ssl/certs/06dc52d5.0 similarity index 100% rename from cobalt/content/ssl/certs/06dc52d5.0 rename to starboard/content/ssl/certs/06dc52d5.0 diff --git a/cobalt/content/ssl/certs/09789157.0 b/starboard/content/ssl/certs/09789157.0 similarity index 100% rename from cobalt/content/ssl/certs/09789157.0 rename to starboard/content/ssl/certs/09789157.0 diff --git a/cobalt/content/ssl/certs/0a775a30.0 b/starboard/content/ssl/certs/0a775a30.0 similarity index 100% rename from cobalt/content/ssl/certs/0a775a30.0 rename to starboard/content/ssl/certs/0a775a30.0 diff --git a/cobalt/content/ssl/certs/0b1b94ef.0 b/starboard/content/ssl/certs/0b1b94ef.0 similarity index 100% rename from cobalt/content/ssl/certs/0b1b94ef.0 rename to starboard/content/ssl/certs/0b1b94ef.0 diff --git a/cobalt/content/ssl/certs/0b9bc432.0 b/starboard/content/ssl/certs/0b9bc432.0 similarity index 100% rename from cobalt/content/ssl/certs/0b9bc432.0 rename to starboard/content/ssl/certs/0b9bc432.0 diff --git a/cobalt/content/ssl/certs/0bf05006.0 b/starboard/content/ssl/certs/0bf05006.0 similarity index 100% rename from cobalt/content/ssl/certs/0bf05006.0 rename to starboard/content/ssl/certs/0bf05006.0 diff --git a/cobalt/content/ssl/certs/0f5dc4f3.0 b/starboard/content/ssl/certs/0f5dc4f3.0 similarity index 100% rename from cobalt/content/ssl/certs/0f5dc4f3.0 rename to starboard/content/ssl/certs/0f5dc4f3.0 diff --git a/cobalt/content/ssl/certs/0f6fa695.0 b/starboard/content/ssl/certs/0f6fa695.0 similarity index 100% rename from cobalt/content/ssl/certs/0f6fa695.0 rename to starboard/content/ssl/certs/0f6fa695.0 diff --git a/cobalt/content/ssl/certs/1001acf7.0 b/starboard/content/ssl/certs/1001acf7.0 similarity index 100% rename from cobalt/content/ssl/certs/1001acf7.0 rename to starboard/content/ssl/certs/1001acf7.0 diff --git a/cobalt/content/ssl/certs/106f3e4d.0 b/starboard/content/ssl/certs/106f3e4d.0 similarity index 100% rename from cobalt/content/ssl/certs/106f3e4d.0 rename to starboard/content/ssl/certs/106f3e4d.0 diff --git a/cobalt/content/ssl/certs/14bc7599.0 b/starboard/content/ssl/certs/14bc7599.0 similarity index 100% rename from cobalt/content/ssl/certs/14bc7599.0 rename to starboard/content/ssl/certs/14bc7599.0 diff --git a/cobalt/content/ssl/certs/18856ac4.0 b/starboard/content/ssl/certs/18856ac4.0 similarity index 100% rename from cobalt/content/ssl/certs/18856ac4.0 rename to starboard/content/ssl/certs/18856ac4.0 diff --git a/cobalt/content/ssl/certs/1d3472b9.0 b/starboard/content/ssl/certs/1d3472b9.0 similarity index 100% rename from cobalt/content/ssl/certs/1d3472b9.0 rename to starboard/content/ssl/certs/1d3472b9.0 diff --git a/cobalt/content/ssl/certs/1e08bfd1.0 b/starboard/content/ssl/certs/1e08bfd1.0 similarity index 100% rename from cobalt/content/ssl/certs/1e08bfd1.0 rename to starboard/content/ssl/certs/1e08bfd1.0 diff --git a/cobalt/content/ssl/certs/1e09d511.0 b/starboard/content/ssl/certs/1e09d511.0 similarity index 100% rename from cobalt/content/ssl/certs/1e09d511.0 rename to starboard/content/ssl/certs/1e09d511.0 diff --git a/cobalt/content/ssl/certs/244b5494.0 b/starboard/content/ssl/certs/244b5494.0 similarity index 100% rename from cobalt/content/ssl/certs/244b5494.0 rename to starboard/content/ssl/certs/244b5494.0 diff --git a/cobalt/content/ssl/certs/2923b3f9.0 b/starboard/content/ssl/certs/2923b3f9.0 similarity index 100% rename from cobalt/content/ssl/certs/2923b3f9.0 rename to starboard/content/ssl/certs/2923b3f9.0 diff --git a/cobalt/content/ssl/certs/2ae6433e.0 b/starboard/content/ssl/certs/2ae6433e.0 similarity index 100% rename from cobalt/content/ssl/certs/2ae6433e.0 rename to starboard/content/ssl/certs/2ae6433e.0 diff --git a/cobalt/content/ssl/certs/2b349938.0 b/starboard/content/ssl/certs/2b349938.0 similarity index 100% rename from cobalt/content/ssl/certs/2b349938.0 rename to starboard/content/ssl/certs/2b349938.0 diff --git a/cobalt/content/ssl/certs/32888f65.0 b/starboard/content/ssl/certs/32888f65.0 similarity index 100% rename from cobalt/content/ssl/certs/32888f65.0 rename to starboard/content/ssl/certs/32888f65.0 diff --git a/cobalt/content/ssl/certs/3513523f.0 b/starboard/content/ssl/certs/3513523f.0 similarity index 100% rename from cobalt/content/ssl/certs/3513523f.0 rename to starboard/content/ssl/certs/3513523f.0 diff --git a/cobalt/content/ssl/certs/3bde41ac.0 b/starboard/content/ssl/certs/3bde41ac.0 similarity index 100% rename from cobalt/content/ssl/certs/3bde41ac.0 rename to starboard/content/ssl/certs/3bde41ac.0 diff --git a/cobalt/content/ssl/certs/3fb36b73.0 b/starboard/content/ssl/certs/3fb36b73.0 similarity index 100% rename from cobalt/content/ssl/certs/3fb36b73.0 rename to starboard/content/ssl/certs/3fb36b73.0 diff --git a/cobalt/content/ssl/certs/40193066.0 b/starboard/content/ssl/certs/40193066.0 similarity index 100% rename from cobalt/content/ssl/certs/40193066.0 rename to starboard/content/ssl/certs/40193066.0 diff --git a/cobalt/content/ssl/certs/4042bcee.0 b/starboard/content/ssl/certs/4042bcee.0 similarity index 100% rename from cobalt/content/ssl/certs/4042bcee.0 rename to starboard/content/ssl/certs/4042bcee.0 diff --git a/cobalt/content/ssl/certs/40547a79.0 b/starboard/content/ssl/certs/40547a79.0 similarity index 100% rename from cobalt/content/ssl/certs/40547a79.0 rename to starboard/content/ssl/certs/40547a79.0 diff --git a/cobalt/content/ssl/certs/406c9bb1.0 b/starboard/content/ssl/certs/406c9bb1.0 similarity index 100% rename from cobalt/content/ssl/certs/406c9bb1.0 rename to starboard/content/ssl/certs/406c9bb1.0 diff --git a/cobalt/content/ssl/certs/48bec511.0 b/starboard/content/ssl/certs/48bec511.0 similarity index 100% rename from cobalt/content/ssl/certs/48bec511.0 rename to starboard/content/ssl/certs/48bec511.0 diff --git a/cobalt/content/ssl/certs/4b718d9b.0 b/starboard/content/ssl/certs/4b718d9b.0 similarity index 100% rename from cobalt/content/ssl/certs/4b718d9b.0 rename to starboard/content/ssl/certs/4b718d9b.0 diff --git a/cobalt/content/ssl/certs/4bfab552.0 b/starboard/content/ssl/certs/4bfab552.0 similarity index 100% rename from cobalt/content/ssl/certs/4bfab552.0 rename to starboard/content/ssl/certs/4bfab552.0 diff --git a/cobalt/content/ssl/certs/4f316efb.0 b/starboard/content/ssl/certs/4f316efb.0 similarity index 100% rename from cobalt/content/ssl/certs/4f316efb.0 rename to starboard/content/ssl/certs/4f316efb.0 diff --git a/cobalt/content/ssl/certs/5443e9e3.0 b/starboard/content/ssl/certs/5443e9e3.0 similarity index 100% rename from cobalt/content/ssl/certs/5443e9e3.0 rename to starboard/content/ssl/certs/5443e9e3.0 diff --git a/cobalt/content/ssl/certs/54657681.0 b/starboard/content/ssl/certs/54657681.0 similarity index 100% rename from cobalt/content/ssl/certs/54657681.0 rename to starboard/content/ssl/certs/54657681.0 diff --git a/cobalt/content/ssl/certs/57bcb2da.0 b/starboard/content/ssl/certs/57bcb2da.0 similarity index 100% rename from cobalt/content/ssl/certs/57bcb2da.0 rename to starboard/content/ssl/certs/57bcb2da.0 diff --git a/cobalt/content/ssl/certs/5860aaa6.0 b/starboard/content/ssl/certs/5860aaa6.0 similarity index 100% rename from cobalt/content/ssl/certs/5860aaa6.0 rename to starboard/content/ssl/certs/5860aaa6.0 diff --git a/cobalt/content/ssl/certs/5931b5bc.0 b/starboard/content/ssl/certs/5931b5bc.0 similarity index 100% rename from cobalt/content/ssl/certs/5931b5bc.0 rename to starboard/content/ssl/certs/5931b5bc.0 diff --git a/cobalt/content/ssl/certs/5ad8a5d6.0 b/starboard/content/ssl/certs/5ad8a5d6.0 similarity index 100% rename from cobalt/content/ssl/certs/5ad8a5d6.0 rename to starboard/content/ssl/certs/5ad8a5d6.0 diff --git a/cobalt/content/ssl/certs/5cd81ad7.0 b/starboard/content/ssl/certs/5cd81ad7.0 similarity index 100% rename from cobalt/content/ssl/certs/5cd81ad7.0 rename to starboard/content/ssl/certs/5cd81ad7.0 diff --git a/cobalt/content/ssl/certs/5e98733a.0 b/starboard/content/ssl/certs/5e98733a.0 similarity index 100% rename from cobalt/content/ssl/certs/5e98733a.0 rename to starboard/content/ssl/certs/5e98733a.0 diff --git a/cobalt/content/ssl/certs/5f15c80c.0 b/starboard/content/ssl/certs/5f15c80c.0 similarity index 100% rename from cobalt/content/ssl/certs/5f15c80c.0 rename to starboard/content/ssl/certs/5f15c80c.0 diff --git a/cobalt/content/ssl/certs/5f618aec.0 b/starboard/content/ssl/certs/5f618aec.0 similarity index 100% rename from cobalt/content/ssl/certs/5f618aec.0 rename to starboard/content/ssl/certs/5f618aec.0 diff --git a/cobalt/content/ssl/certs/607986c7.0 b/starboard/content/ssl/certs/607986c7.0 similarity index 100% rename from cobalt/content/ssl/certs/607986c7.0 rename to starboard/content/ssl/certs/607986c7.0 diff --git a/cobalt/content/ssl/certs/626dceaf.0 b/starboard/content/ssl/certs/626dceaf.0 similarity index 100% rename from cobalt/content/ssl/certs/626dceaf.0 rename to starboard/content/ssl/certs/626dceaf.0 diff --git a/cobalt/content/ssl/certs/653b494a.0 b/starboard/content/ssl/certs/653b494a.0 similarity index 100% rename from cobalt/content/ssl/certs/653b494a.0 rename to starboard/content/ssl/certs/653b494a.0 diff --git a/cobalt/content/ssl/certs/68dd7389.0 b/starboard/content/ssl/certs/68dd7389.0 similarity index 100% rename from cobalt/content/ssl/certs/68dd7389.0 rename to starboard/content/ssl/certs/68dd7389.0 diff --git a/cobalt/content/ssl/certs/6b99d060.0 b/starboard/content/ssl/certs/6b99d060.0 similarity index 100% rename from cobalt/content/ssl/certs/6b99d060.0 rename to starboard/content/ssl/certs/6b99d060.0 diff --git a/cobalt/content/ssl/certs/6d41d539.0 b/starboard/content/ssl/certs/6d41d539.0 similarity index 100% rename from cobalt/content/ssl/certs/6d41d539.0 rename to starboard/content/ssl/certs/6d41d539.0 diff --git a/cobalt/content/ssl/certs/6fa5da56.0 b/starboard/content/ssl/certs/6fa5da56.0 similarity index 100% rename from cobalt/content/ssl/certs/6fa5da56.0 rename to starboard/content/ssl/certs/6fa5da56.0 diff --git a/cobalt/content/ssl/certs/706f604c.0 b/starboard/content/ssl/certs/706f604c.0 similarity index 100% rename from cobalt/content/ssl/certs/706f604c.0 rename to starboard/content/ssl/certs/706f604c.0 diff --git a/cobalt/content/ssl/certs/749e9e03.0 b/starboard/content/ssl/certs/749e9e03.0 similarity index 100% rename from cobalt/content/ssl/certs/749e9e03.0 rename to starboard/content/ssl/certs/749e9e03.0 diff --git a/cobalt/content/ssl/certs/75d1b2ed.0 b/starboard/content/ssl/certs/75d1b2ed.0 similarity index 100% rename from cobalt/content/ssl/certs/75d1b2ed.0 rename to starboard/content/ssl/certs/75d1b2ed.0 diff --git a/cobalt/content/ssl/certs/76faf6c0.0 b/starboard/content/ssl/certs/76faf6c0.0 similarity index 100% rename from cobalt/content/ssl/certs/76faf6c0.0 rename to starboard/content/ssl/certs/76faf6c0.0 diff --git a/cobalt/content/ssl/certs/7719f463.0 b/starboard/content/ssl/certs/7719f463.0 similarity index 100% rename from cobalt/content/ssl/certs/7719f463.0 rename to starboard/content/ssl/certs/7719f463.0 diff --git a/cobalt/content/ssl/certs/773e07ad.0 b/starboard/content/ssl/certs/773e07ad.0 similarity index 100% rename from cobalt/content/ssl/certs/773e07ad.0 rename to starboard/content/ssl/certs/773e07ad.0 diff --git a/cobalt/content/ssl/certs/7a3adc42.0 b/starboard/content/ssl/certs/7a3adc42.0 similarity index 100% rename from cobalt/content/ssl/certs/7a3adc42.0 rename to starboard/content/ssl/certs/7a3adc42.0 diff --git a/cobalt/content/ssl/certs/7a780d93.0 b/starboard/content/ssl/certs/7a780d93.0 similarity index 100% rename from cobalt/content/ssl/certs/7a780d93.0 rename to starboard/content/ssl/certs/7a780d93.0 diff --git a/cobalt/content/ssl/certs/7f3d5d1d.0 b/starboard/content/ssl/certs/7f3d5d1d.0 similarity index 100% rename from cobalt/content/ssl/certs/7f3d5d1d.0 rename to starboard/content/ssl/certs/7f3d5d1d.0 diff --git a/cobalt/content/ssl/certs/8160b96c.0 b/starboard/content/ssl/certs/8160b96c.0 similarity index 100% rename from cobalt/content/ssl/certs/8160b96c.0 rename to starboard/content/ssl/certs/8160b96c.0 diff --git a/cobalt/content/ssl/certs/8508e720.0 b/starboard/content/ssl/certs/8508e720.0 similarity index 100% rename from cobalt/content/ssl/certs/8508e720.0 rename to starboard/content/ssl/certs/8508e720.0 diff --git a/cobalt/content/ssl/certs/8cb5ee0f.0 b/starboard/content/ssl/certs/8cb5ee0f.0 similarity index 100% rename from cobalt/content/ssl/certs/8cb5ee0f.0 rename to starboard/content/ssl/certs/8cb5ee0f.0 diff --git a/cobalt/content/ssl/certs/8d86cdd1.0 b/starboard/content/ssl/certs/8d86cdd1.0 similarity index 100% rename from cobalt/content/ssl/certs/8d86cdd1.0 rename to starboard/content/ssl/certs/8d86cdd1.0 diff --git a/cobalt/content/ssl/certs/8d89cda1.0 b/starboard/content/ssl/certs/8d89cda1.0 similarity index 100% rename from cobalt/content/ssl/certs/8d89cda1.0 rename to starboard/content/ssl/certs/8d89cda1.0 diff --git a/cobalt/content/ssl/certs/8f103249.0 b/starboard/content/ssl/certs/8f103249.0 similarity index 100% rename from cobalt/content/ssl/certs/8f103249.0 rename to starboard/content/ssl/certs/8f103249.0 diff --git a/cobalt/content/ssl/certs/90c5a3c8.0 b/starboard/content/ssl/certs/90c5a3c8.0 similarity index 100% rename from cobalt/content/ssl/certs/90c5a3c8.0 rename to starboard/content/ssl/certs/90c5a3c8.0 diff --git a/cobalt/content/ssl/certs/930ac5d2.0 b/starboard/content/ssl/certs/930ac5d2.0 similarity index 100% rename from cobalt/content/ssl/certs/930ac5d2.0 rename to starboard/content/ssl/certs/930ac5d2.0 diff --git a/cobalt/content/ssl/certs/93bc0acc.0 b/starboard/content/ssl/certs/93bc0acc.0 similarity index 100% rename from cobalt/content/ssl/certs/93bc0acc.0 rename to starboard/content/ssl/certs/93bc0acc.0 diff --git a/cobalt/content/ssl/certs/9482e63a.0 b/starboard/content/ssl/certs/9482e63a.0 similarity index 100% rename from cobalt/content/ssl/certs/9482e63a.0 rename to starboard/content/ssl/certs/9482e63a.0 diff --git a/cobalt/content/ssl/certs/9846683b.0 b/starboard/content/ssl/certs/9846683b.0 similarity index 100% rename from cobalt/content/ssl/certs/9846683b.0 rename to starboard/content/ssl/certs/9846683b.0 diff --git a/cobalt/content/ssl/certs/988a38cb.0 b/starboard/content/ssl/certs/988a38cb.0 similarity index 100% rename from cobalt/content/ssl/certs/988a38cb.0 rename to starboard/content/ssl/certs/988a38cb.0 diff --git a/cobalt/content/ssl/certs/9b46e03d.0 b/starboard/content/ssl/certs/9b46e03d.0 similarity index 100% rename from cobalt/content/ssl/certs/9b46e03d.0 rename to starboard/content/ssl/certs/9b46e03d.0 diff --git a/cobalt/content/ssl/certs/9b5697b0.0 b/starboard/content/ssl/certs/9b5697b0.0 similarity index 100% rename from cobalt/content/ssl/certs/9b5697b0.0 rename to starboard/content/ssl/certs/9b5697b0.0 diff --git a/cobalt/content/ssl/certs/9c8dfbd4.0 b/starboard/content/ssl/certs/9c8dfbd4.0 similarity index 100% rename from cobalt/content/ssl/certs/9c8dfbd4.0 rename to starboard/content/ssl/certs/9c8dfbd4.0 diff --git a/cobalt/content/ssl/certs/9d04f354.0 b/starboard/content/ssl/certs/9d04f354.0 similarity index 100% rename from cobalt/content/ssl/certs/9d04f354.0 rename to starboard/content/ssl/certs/9d04f354.0 diff --git a/cobalt/content/ssl/certs/9ef4a08a.0 b/starboard/content/ssl/certs/9ef4a08a.0 similarity index 100% rename from cobalt/content/ssl/certs/9ef4a08a.0 rename to starboard/content/ssl/certs/9ef4a08a.0 diff --git a/cobalt/content/ssl/certs/9f727ac7.0 b/starboard/content/ssl/certs/9f727ac7.0 similarity index 100% rename from cobalt/content/ssl/certs/9f727ac7.0 rename to starboard/content/ssl/certs/9f727ac7.0 diff --git a/cobalt/content/ssl/certs/a3418fda.0 b/starboard/content/ssl/certs/a3418fda.0 similarity index 100% rename from cobalt/content/ssl/certs/a3418fda.0 rename to starboard/content/ssl/certs/a3418fda.0 diff --git a/cobalt/content/ssl/certs/a94d09e5.0 b/starboard/content/ssl/certs/a94d09e5.0 similarity index 100% rename from cobalt/content/ssl/certs/a94d09e5.0 rename to starboard/content/ssl/certs/a94d09e5.0 diff --git a/cobalt/content/ssl/certs/aee5f10d.0 b/starboard/content/ssl/certs/aee5f10d.0 similarity index 100% rename from cobalt/content/ssl/certs/aee5f10d.0 rename to starboard/content/ssl/certs/aee5f10d.0 diff --git a/cobalt/content/ssl/certs/b0e59380.0 b/starboard/content/ssl/certs/b0e59380.0 similarity index 100% rename from cobalt/content/ssl/certs/b0e59380.0 rename to starboard/content/ssl/certs/b0e59380.0 diff --git a/cobalt/content/ssl/certs/b1159c4c.0 b/starboard/content/ssl/certs/b1159c4c.0 similarity index 100% rename from cobalt/content/ssl/certs/b1159c4c.0 rename to starboard/content/ssl/certs/b1159c4c.0 diff --git a/cobalt/content/ssl/certs/b433981b.0 b/starboard/content/ssl/certs/b433981b.0 similarity index 100% rename from cobalt/content/ssl/certs/b433981b.0 rename to starboard/content/ssl/certs/b433981b.0 diff --git a/cobalt/content/ssl/certs/b66938e9.0 b/starboard/content/ssl/certs/b66938e9.0 similarity index 100% rename from cobalt/content/ssl/certs/b66938e9.0 rename to starboard/content/ssl/certs/b66938e9.0 diff --git a/cobalt/content/ssl/certs/b727005e.0 b/starboard/content/ssl/certs/b727005e.0 similarity index 100% rename from cobalt/content/ssl/certs/b727005e.0 rename to starboard/content/ssl/certs/b727005e.0 diff --git a/cobalt/content/ssl/certs/b7a5b843.0 b/starboard/content/ssl/certs/b7a5b843.0 similarity index 100% rename from cobalt/content/ssl/certs/b7a5b843.0 rename to starboard/content/ssl/certs/b7a5b843.0 diff --git a/cobalt/content/ssl/certs/b81b93f0.0 b/starboard/content/ssl/certs/b81b93f0.0 similarity index 100% rename from cobalt/content/ssl/certs/b81b93f0.0 rename to starboard/content/ssl/certs/b81b93f0.0 diff --git a/cobalt/content/ssl/certs/bf53fb88.0 b/starboard/content/ssl/certs/bf53fb88.0 similarity index 100% rename from cobalt/content/ssl/certs/bf53fb88.0 rename to starboard/content/ssl/certs/bf53fb88.0 diff --git a/cobalt/content/ssl/certs/c01eb047.0 b/starboard/content/ssl/certs/c01eb047.0 similarity index 100% rename from cobalt/content/ssl/certs/c01eb047.0 rename to starboard/content/ssl/certs/c01eb047.0 diff --git a/cobalt/content/ssl/certs/c28a8a30.0 b/starboard/content/ssl/certs/c28a8a30.0 similarity index 100% rename from cobalt/content/ssl/certs/c28a8a30.0 rename to starboard/content/ssl/certs/c28a8a30.0 diff --git a/cobalt/content/ssl/certs/ca6e4ad9.0 b/starboard/content/ssl/certs/ca6e4ad9.0 similarity index 100% rename from cobalt/content/ssl/certs/ca6e4ad9.0 rename to starboard/content/ssl/certs/ca6e4ad9.0 diff --git a/cobalt/content/ssl/certs/cbf06781.0 b/starboard/content/ssl/certs/cbf06781.0 similarity index 100% rename from cobalt/content/ssl/certs/cbf06781.0 rename to starboard/content/ssl/certs/cbf06781.0 diff --git a/cobalt/content/ssl/certs/cc450945.0 b/starboard/content/ssl/certs/cc450945.0 similarity index 100% rename from cobalt/content/ssl/certs/cc450945.0 rename to starboard/content/ssl/certs/cc450945.0 diff --git a/cobalt/content/ssl/certs/cd58d51e.0 b/starboard/content/ssl/certs/cd58d51e.0 similarity index 100% rename from cobalt/content/ssl/certs/cd58d51e.0 rename to starboard/content/ssl/certs/cd58d51e.0 diff --git a/cobalt/content/ssl/certs/cd8c0d63.0 b/starboard/content/ssl/certs/cd8c0d63.0 similarity index 100% rename from cobalt/content/ssl/certs/cd8c0d63.0 rename to starboard/content/ssl/certs/cd8c0d63.0 diff --git a/cobalt/content/ssl/certs/ce5e74ef.0 b/starboard/content/ssl/certs/ce5e74ef.0 similarity index 100% rename from cobalt/content/ssl/certs/ce5e74ef.0 rename to starboard/content/ssl/certs/ce5e74ef.0 diff --git a/cobalt/content/ssl/certs/d4dae3dd.0 b/starboard/content/ssl/certs/d4dae3dd.0 similarity index 100% rename from cobalt/content/ssl/certs/d4dae3dd.0 rename to starboard/content/ssl/certs/d4dae3dd.0 diff --git a/cobalt/content/ssl/certs/d52c538d.0 b/starboard/content/ssl/certs/d52c538d.0 similarity index 100% rename from cobalt/content/ssl/certs/d52c538d.0 rename to starboard/content/ssl/certs/d52c538d.0 diff --git a/cobalt/content/ssl/certs/d6325660.0 b/starboard/content/ssl/certs/d6325660.0 similarity index 100% rename from cobalt/content/ssl/certs/d6325660.0 rename to starboard/content/ssl/certs/d6325660.0 diff --git a/cobalt/content/ssl/certs/d7e8dc79.0 b/starboard/content/ssl/certs/d7e8dc79.0 similarity index 100% rename from cobalt/content/ssl/certs/d7e8dc79.0 rename to starboard/content/ssl/certs/d7e8dc79.0 diff --git a/cobalt/content/ssl/certs/d887a5bb.0 b/starboard/content/ssl/certs/d887a5bb.0 similarity index 100% rename from cobalt/content/ssl/certs/d887a5bb.0 rename to starboard/content/ssl/certs/d887a5bb.0 diff --git a/cobalt/content/ssl/certs/dc4d6a89.0 b/starboard/content/ssl/certs/dc4d6a89.0 similarity index 100% rename from cobalt/content/ssl/certs/dc4d6a89.0 rename to starboard/content/ssl/certs/dc4d6a89.0 diff --git a/cobalt/content/ssl/certs/dd8e9d41.0 b/starboard/content/ssl/certs/dd8e9d41.0 similarity index 100% rename from cobalt/content/ssl/certs/dd8e9d41.0 rename to starboard/content/ssl/certs/dd8e9d41.0 diff --git a/cobalt/content/ssl/certs/de6d66f3.0 b/starboard/content/ssl/certs/de6d66f3.0 similarity index 100% rename from cobalt/content/ssl/certs/de6d66f3.0 rename to starboard/content/ssl/certs/de6d66f3.0 diff --git a/cobalt/content/ssl/certs/e113c810.0 b/starboard/content/ssl/certs/e113c810.0 similarity index 100% rename from cobalt/content/ssl/certs/e113c810.0 rename to starboard/content/ssl/certs/e113c810.0 diff --git a/cobalt/content/ssl/certs/e18bfb83.0 b/starboard/content/ssl/certs/e18bfb83.0 similarity index 100% rename from cobalt/content/ssl/certs/e18bfb83.0 rename to starboard/content/ssl/certs/e18bfb83.0 diff --git a/cobalt/content/ssl/certs/e35234b1.0 b/starboard/content/ssl/certs/e35234b1.0 similarity index 100% rename from cobalt/content/ssl/certs/e35234b1.0 rename to starboard/content/ssl/certs/e35234b1.0 diff --git a/cobalt/content/ssl/certs/e36a6752.0 b/starboard/content/ssl/certs/e36a6752.0 similarity index 100% rename from cobalt/content/ssl/certs/e36a6752.0 rename to starboard/content/ssl/certs/e36a6752.0 diff --git a/cobalt/content/ssl/certs/e73d606e.0 b/starboard/content/ssl/certs/e73d606e.0 similarity index 100% rename from cobalt/content/ssl/certs/e73d606e.0 rename to starboard/content/ssl/certs/e73d606e.0 diff --git a/cobalt/content/ssl/certs/e868b802.0 b/starboard/content/ssl/certs/e868b802.0 similarity index 100% rename from cobalt/content/ssl/certs/e868b802.0 rename to starboard/content/ssl/certs/e868b802.0 diff --git a/cobalt/content/ssl/certs/e8de2f56.0 b/starboard/content/ssl/certs/e8de2f56.0 similarity index 100% rename from cobalt/content/ssl/certs/e8de2f56.0 rename to starboard/content/ssl/certs/e8de2f56.0 diff --git a/cobalt/content/ssl/certs/ecccd8db.0 b/starboard/content/ssl/certs/ecccd8db.0 similarity index 100% rename from cobalt/content/ssl/certs/ecccd8db.0 rename to starboard/content/ssl/certs/ecccd8db.0 diff --git a/cobalt/content/ssl/certs/ed858448.0 b/starboard/content/ssl/certs/ed858448.0 similarity index 100% rename from cobalt/content/ssl/certs/ed858448.0 rename to starboard/content/ssl/certs/ed858448.0 diff --git a/cobalt/content/ssl/certs/ee64a828.0 b/starboard/content/ssl/certs/ee64a828.0 similarity index 100% rename from cobalt/content/ssl/certs/ee64a828.0 rename to starboard/content/ssl/certs/ee64a828.0 diff --git a/cobalt/content/ssl/certs/eed8c118.0 b/starboard/content/ssl/certs/eed8c118.0 similarity index 100% rename from cobalt/content/ssl/certs/eed8c118.0 rename to starboard/content/ssl/certs/eed8c118.0 diff --git a/cobalt/content/ssl/certs/ef954a4e.0 b/starboard/content/ssl/certs/ef954a4e.0 similarity index 100% rename from cobalt/content/ssl/certs/ef954a4e.0 rename to starboard/content/ssl/certs/ef954a4e.0 diff --git a/cobalt/content/ssl/certs/f081611a.0 b/starboard/content/ssl/certs/f081611a.0 similarity index 100% rename from cobalt/content/ssl/certs/f081611a.0 rename to starboard/content/ssl/certs/f081611a.0 diff --git a/cobalt/content/ssl/certs/f0c70a8d.0 b/starboard/content/ssl/certs/f0c70a8d.0 similarity index 100% rename from cobalt/content/ssl/certs/f0c70a8d.0 rename to starboard/content/ssl/certs/f0c70a8d.0 diff --git a/cobalt/content/ssl/certs/f249de83.0 b/starboard/content/ssl/certs/f249de83.0 similarity index 100% rename from cobalt/content/ssl/certs/f249de83.0 rename to starboard/content/ssl/certs/f249de83.0 diff --git a/cobalt/content/ssl/certs/f30dd6ad.0 b/starboard/content/ssl/certs/f30dd6ad.0 similarity index 100% rename from cobalt/content/ssl/certs/f30dd6ad.0 rename to starboard/content/ssl/certs/f30dd6ad.0 diff --git a/cobalt/content/ssl/certs/f3377b1b.0 b/starboard/content/ssl/certs/f3377b1b.0 similarity index 100% rename from cobalt/content/ssl/certs/f3377b1b.0 rename to starboard/content/ssl/certs/f3377b1b.0 diff --git a/cobalt/content/ssl/certs/f387163d.0 b/starboard/content/ssl/certs/f387163d.0 similarity index 100% rename from cobalt/content/ssl/certs/f387163d.0 rename to starboard/content/ssl/certs/f387163d.0 diff --git a/cobalt/content/ssl/certs/f39fc864.0 b/starboard/content/ssl/certs/f39fc864.0 similarity index 100% rename from cobalt/content/ssl/certs/f39fc864.0 rename to starboard/content/ssl/certs/f39fc864.0 diff --git a/cobalt/content/ssl/certs/f51bb24c.0 b/starboard/content/ssl/certs/f51bb24c.0 similarity index 100% rename from cobalt/content/ssl/certs/f51bb24c.0 rename to starboard/content/ssl/certs/f51bb24c.0 diff --git a/cobalt/content/ssl/certs/fa5da96b.0 b/starboard/content/ssl/certs/fa5da96b.0 similarity index 100% rename from cobalt/content/ssl/certs/fa5da96b.0 rename to starboard/content/ssl/certs/fa5da96b.0 diff --git a/cobalt/content/ssl/certs/fb717492.0 b/starboard/content/ssl/certs/fb717492.0 similarity index 100% rename from cobalt/content/ssl/certs/fb717492.0 rename to starboard/content/ssl/certs/fb717492.0 diff --git a/cobalt/content/ssl/certs/fc5a8f99.0 b/starboard/content/ssl/certs/fc5a8f99.0 similarity index 100% rename from cobalt/content/ssl/certs/fc5a8f99.0 rename to starboard/content/ssl/certs/fc5a8f99.0 diff --git a/cobalt/content/ssl/certs/fd64f3fc.0 b/starboard/content/ssl/certs/fd64f3fc.0 similarity index 100% rename from cobalt/content/ssl/certs/fd64f3fc.0 rename to starboard/content/ssl/certs/fd64f3fc.0 diff --git a/cobalt/content/ssl/certs/fe8a2cd8.0 b/starboard/content/ssl/certs/fe8a2cd8.0 similarity index 100% rename from cobalt/content/ssl/certs/fe8a2cd8.0 rename to starboard/content/ssl/certs/fe8a2cd8.0 diff --git a/cobalt/content/ssl/certs/feffd413.0 b/starboard/content/ssl/certs/feffd413.0 similarity index 100% rename from cobalt/content/ssl/certs/feffd413.0 rename to starboard/content/ssl/certs/feffd413.0 diff --git a/cobalt/content/ssl/certs/ff34af3f.0 b/starboard/content/ssl/certs/ff34af3f.0 similarity index 100% rename from cobalt/content/ssl/certs/ff34af3f.0 rename to starboard/content/ssl/certs/ff34af3f.0 diff --git a/starboard/evergreen/shared/lz4_compress_install_target.gni b/starboard/evergreen/shared/lz4_compress_install_target.gni index cce162edc1da..55d1ef5f9561 100644 --- a/starboard/evergreen/shared/lz4_compress_install_target.gni +++ b/starboard/evergreen/shared/lz4_compress_install_target.gni @@ -35,7 +35,7 @@ template("lz4_compress_install_target") { "install_target_name", ]) - tool = "//cobalt/tools/lz4_compress" + tool = "//starboard/tools/lz4_compress" outputs = [ "$sb_install_output_dir/$install_subdir/$dest_name" ] diff --git a/starboard/extension/BUILD.gn b/starboard/extension/BUILD.gn index 810ffdb88772..fd3dcebef07a 100644 --- a/starboard/extension/BUILD.gn +++ b/starboard/extension/BUILD.gn @@ -16,11 +16,11 @@ target(gtest_target_type, "extension_test") { testonly = true has_pedantic_warnings = true sources = [ + "//starboard/common/test_main.cc", "enhanced_audio_test.cc", "extension_test.cc", ] deps = [ - "//cobalt/test:run_all_unittests", "//starboard:starboard_group", "//testing/gmock", "//testing/gtest", diff --git a/starboard/extension/loader_app_metrics.h b/starboard/extension/loader_app_metrics.h index d077f7090e6d..527b256c051c 100644 --- a/starboard/extension/loader_app_metrics.h +++ b/starboard/extension/loader_app_metrics.h @@ -52,7 +52,8 @@ typedef enum class SlotSelectionStatus { kRollBackFailedToCheckSabi = 9, kRollBackFailedToLookUpSymbols = 10, kEGLite = 11, - kMaxValue = kEGLite, + kLoadSysImgFailedToInitInstallationManager = 12, + kMaxValue = kLoadSysImgFailedToInitInstallationManager, } SlotSelectionStatus; typedef struct StarboardExtensionLoaderAppMetricsApi { diff --git a/starboard/file.h b/starboard/file.h index ead07597879a..697c829d4bc9 100644 --- a/starboard/file.h +++ b/starboard/file.h @@ -26,6 +26,8 @@ extern "C" { #endif +#if SB_API_VERSION < 17 + // Private structure representing an open file. typedef struct SbFilePrivate SbFilePrivate; @@ -127,8 +129,6 @@ static inline bool SbFileIsValid(SbFile file) { return file != kSbFileInvalid; } -#if SB_API_VERSION < 17 - // DEPRECATED with SB_API_VERSION 16 // // Opens the file at |path|, which must be absolute, creating it if specified by diff --git a/starboard/linux/shared/platform_configuration/configuration.gni b/starboard/linux/shared/platform_configuration/configuration.gni index 60ff849320e5..0dfc052c878c 100644 --- a/starboard/linux/shared/platform_configuration/configuration.gni +++ b/starboard/linux/shared/platform_configuration/configuration.gni @@ -41,3 +41,5 @@ platform_tests_path = enable_in_app_dial = true v8_enable_webassembly = true + +sb_enable_cast_codec_tests = true diff --git a/starboard/loader_app/loader_app.cc b/starboard/loader_app/loader_app.cc index 50fb10b70327..39ce43d34117 100644 --- a/starboard/loader_app/loader_app.cc +++ b/starboard/loader_app/loader_app.cc @@ -278,7 +278,17 @@ void SbEventHandle(const SbEvent* event) { starboard::loader_app::LoadSlotManagedLibrary( app_key, alternative_content, &g_cobalt_library_loader, use_memory_mapped_file)); + + if (g_sb_event_func == NULL) { + SB_LOG(ERROR) << "Failed to initialize Installation Manager. Loading " + "system image instead."; + starboard::loader_app::RecordSlotSelectionStatus( + SlotSelectionStatus::kLoadSysImgFailedToInitInstallationManager); + LoadLibraryAndInitialize(alternative_content, use_memory_mapped_file); + } } + // If g_sb_event_func is NULL at this point, the app has no choice but to + // crash. SB_CHECK(g_sb_event_func); } diff --git a/starboard/loader_app/slot_management.cc b/starboard/loader_app/slot_management.cc index c56a81bee7bf..842a702bc232 100644 --- a/starboard/loader_app/slot_management.cc +++ b/starboard/loader_app/slot_management.cc @@ -140,7 +140,8 @@ bool ReadEvergreenVersion(std::vector* manifest_file_path, Json::Reader reader; Json::Value obj; - if (!reader.parse(std::string(file_data.data()), obj) || !obj[kVersionKey]) { + if (!reader.parse(std::string(file_data.data(), file_size), obj) || + !obj[kVersionKey]) { SB_LOG(WARNING) << "Failed to parse version from the manifest file at the " "installation path."; return false; @@ -256,8 +257,10 @@ void* LoadSlotManagedLibrary(const std::string& app_key, LibraryLoader* library_loader, bool use_memory_mapped_file) { // Initialize the Installation Manager. - SB_CHECK(ImInitialize(kMaxNumInstallations, app_key.c_str()) == IM_SUCCESS) - << "Abort. Failed to initialize Installation Manager"; + if (ImInitialize(kMaxNumInstallations, app_key.c_str()) != IM_SUCCESS) { + SB_LOG(ERROR) << "Abort. Failed to initialize Installation Manager"; + return NULL; + } // Roll forward if needed. if (ImRollForwardIfNeeded() == IM_ERROR) { diff --git a/starboard/nplb/BUILD.gn b/starboard/nplb/BUILD.gn index 60480a16dc5e..3581c5c5c903 100644 --- a/starboard/nplb/BUILD.gn +++ b/starboard/nplb/BUILD.gn @@ -14,6 +14,14 @@ import("//starboard/build/config/os_definitions.gni") +declare_args() { + sb_enable_cast_codec_tests = false +} + +config("cast_codec_tests") { + cflags = [ "ENABLE_CAST_CODEC_TESTS" ] +} + target(gtest_target_type, "nplb") { testonly = true @@ -302,6 +310,9 @@ target(gtest_target_type, "nplb") { ] configs += [ "//starboard/build/config:starboard_implementation" ] + if (sb_enable_cast_codec_tests) { + configs += [ ":cast_codec_tests" ] + } deps = [ "//starboard:starboard_group", @@ -329,7 +340,7 @@ target(gtest_target_type, "nplb") { } data_deps = [ - "//cobalt/network:copy_ssl_certificates", + "//starboard/content/ssl:copy_ssl_certificates", "//starboard/nplb/testdata/file_tests:nplb_file_tests_data", "//starboard/shared/starboard/player:player_download_test_data", ] diff --git a/starboard/nplb/nplb_evergreen_compat_tests/BUILD.gn b/starboard/nplb/nplb_evergreen_compat_tests/BUILD.gn index 05d5f97d9c44..ba97bfafe8bf 100644 --- a/starboard/nplb/nplb_evergreen_compat_tests/BUILD.gn +++ b/starboard/nplb/nplb_evergreen_compat_tests/BUILD.gn @@ -33,5 +33,5 @@ target(gtest_target_type, "nplb_evergreen_compat_tests") { "//testing/gtest", ] - data_deps = [ "//cobalt/network:copy_ssl_certificates" ] + data_deps = [ "//starboard/content/ssl:copy_ssl_certificates" ] } diff --git a/starboard/nplb/player_test_util.cc b/starboard/nplb/player_test_util.cc index 0c38b9b6c56a..ea288faa4b2b 100644 --- a/starboard/nplb/player_test_util.cc +++ b/starboard/nplb/player_test_util.cc @@ -60,18 +60,22 @@ const char* kAudioOnlyTestFiles[] = { "iamf_base_profile_stereo_ambisonics.dmp", "iamf_simple_profile_5_1.dmp", #endif // SB_API_VERSION >= 15 + "sintel_5s_pcm_s16le.dmp", "sintel_5s_flac.dmp", +#if defined(ENABLE_CAST_CODEC_TESTS) "sintel_5s_mp3.dmp", - "sintel_5s_pcm_s16le.dmp", "sintel_5s_vorbis.dmp", +#endif }; const char* kVideoTestFiles[] = { "beneath_the_canopy_137_avc.dmp", "beneath_the_canopy_248_vp9.dmp", "sintel_399_av1.dmp", +#if defined(ENABLE_CAST_CODEC_TESTS) "sintel_5s_vp8.dmp", "sintel_5s_hevc.dmp", +#endif }; const SbPlayerOutputMode kOutputModes[] = {kSbPlayerOutputModeDecodeToTexture, diff --git a/starboard/shared/ffmpeg/BUILD.gn b/starboard/shared/ffmpeg/BUILD.gn index 6050196ac294..95578ba6a8a7 100644 --- a/starboard/shared/ffmpeg/BUILD.gn +++ b/starboard/shared/ffmpeg/BUILD.gn @@ -107,11 +107,13 @@ static_library("ffmpeg_dispatch_sources") { target(gtest_target_type, "ffmpeg_demuxer_test") { testonly = true - sources = [ "ffmpeg_demuxer_test.cc" ] + sources = [ + "//starboard/common/test_main.cc", + "ffmpeg_demuxer_test.cc", + ] configs += [ "//starboard/build/config:starboard_implementation" ] deps = [ ":ffmpeg_dispatch_sources", - "//cobalt/test:run_all_unittests", "//starboard:starboard_group", "//starboard/common", "//testing/gmock", diff --git a/starboard/shared/starboard/player/BUILD.gn b/starboard/shared/starboard/player/BUILD.gn index 25b786f71583..ab2fbd9b2ecb 100644 --- a/starboard/shared/starboard/player/BUILD.gn +++ b/starboard/shared/starboard/player/BUILD.gn @@ -34,7 +34,7 @@ static_library("video_dmp") { action("player_download_test_data") { install_content = true - script = "//cobalt/tools/download_from_gcs.py" + script = "//starboard/tools/download_from_gcs.py" sha_sources = [] foreach(sha1_file, sha1_files) { diff --git a/starboard/shared/starboard/player/filter/tools/BUILD.gn b/starboard/shared/starboard/player/filter/tools/BUILD.gn index 1ef43e2ba2ba..43fe5e667895 100644 --- a/starboard/shared/starboard/player/filter/tools/BUILD.gn +++ b/starboard/shared/starboard/player/filter/tools/BUILD.gn @@ -24,7 +24,7 @@ if (current_toolchain == starboard_toolchain) { "//starboard/shared/starboard/player:video_dmp", ] data_deps = [ - "//cobalt/network:copy_ssl_certificates", + "//starboard/content/ssl:copy_ssl_certificates", "//starboard/shared/starboard/player:player_download_test_data", ] } diff --git a/starboard/shared/win32/file_internal.cc b/starboard/shared/win32/file_internal.cc index 0784b1dc7840..0d4bea24d703 100644 --- a/starboard/shared/win32/file_internal.cc +++ b/starboard/shared/win32/file_internal.cc @@ -25,7 +25,7 @@ #include "starboard/shared/win32/error_utils.h" #include "starboard/shared/win32/wchar_utils.h" -#define O_ACCMODE O_RDWR | O_WRONLY | O_RDONLY +#define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR) namespace sbwin32 = starboard::shared::win32; @@ -110,6 +110,10 @@ HANDLE OpenFileOrDirectory(const char* path, int flags) { } DWORD creation_disposition = 0; + if (!flags) { + creation_disposition = OPEN_EXISTING; + } + if (flags & O_CREAT && flags & O_EXCL) { SB_DCHECK(!creation_disposition); creation_disposition = CREATE_NEW; @@ -144,7 +148,6 @@ HANDLE OpenFileOrDirectory(const char* path, int flags) { SB_DCHECK(desired_access != 0) << "Invalid permission flag."; std::wstring path_wstring = NormalizeWin32Path(path); - CREATEFILE2_EXTENDED_PARAMETERS create_ex_params = {0}; // Enabling |FILE_FLAG_BACKUP_SEMANTICS| allows us to figure out if the path // is a directory. diff --git a/starboard/shared/win32/file_internal.h b/starboard/shared/win32/file_internal.h index f249a68823c9..5cecb3b0d874 100644 --- a/starboard/shared/win32/file_internal.h +++ b/starboard/shared/win32/file_internal.h @@ -43,35 +43,12 @@ inline bool IsValidHandle(HANDLE handle) { // to generate a warning. #pragma warning(disable : 4099) -class SbFilePrivate { - public: - explicit SbFilePrivate(HANDLE handle) : file_handle(handle) {} - - bool HasValidHandle() const { - return starboard::shared::win32::IsValidHandle(file_handle); - } - - HANDLE file_handle; - - // SbFilePrivate is neither copyable nor movable. - SbFilePrivate(const SbFilePrivate&) = delete; - SbFilePrivate& operator=(const SbFilePrivate&) = delete; -}; - #pragma warning(pop) namespace starboard { namespace shared { namespace win32 { -inline bool HasValidHandle(SbFile file) { - if (!SbFileIsValid(file)) { - return false; - } - - return file->HasValidHandle(); -} - inline bool PathEndsWith(const std::wstring& path, const wchar_t* filename) { size_t filename_length = std::wcslen(filename); if (filename_length > path.size()) { diff --git a/cobalt/tools/download_from_gcs.py b/starboard/tools/download_from_gcs.py similarity index 100% rename from cobalt/tools/download_from_gcs.py rename to starboard/tools/download_from_gcs.py diff --git a/cobalt/tools/download_from_gcs_test.py b/starboard/tools/download_from_gcs_test.py similarity index 98% rename from cobalt/tools/download_from_gcs_test.py rename to starboard/tools/download_from_gcs_test.py index 120e77a0994a..f10abd858d34 100755 --- a/cobalt/tools/download_from_gcs_test.py +++ b/starboard/tools/download_from_gcs_test.py @@ -18,7 +18,7 @@ import tempfile import unittest -from cobalt.tools import download_from_gcs +from starboard.tools import download_from_gcs _BUCKET = 'chromium-clang-format' _HASH_FILE_EXT = '.sha1' diff --git a/cobalt/tools/lz4_compress/BUILD.gn b/starboard/tools/lz4_compress/BUILD.gn similarity index 100% rename from cobalt/tools/lz4_compress/BUILD.gn rename to starboard/tools/lz4_compress/BUILD.gn diff --git a/cobalt/tools/lz4_compress/lz4_compress.cc b/starboard/tools/lz4_compress/lz4_compress.cc similarity index 100% rename from cobalt/tools/lz4_compress/lz4_compress.cc rename to starboard/tools/lz4_compress/lz4_compress.cc diff --git a/cobalt/tools/testing/download_from_gcs/clang-format.sha1 b/starboard/tools/testing/download_from_gcs/clang-format.sha1 similarity index 100% rename from cobalt/tools/testing/download_from_gcs/clang-format.sha1 rename to starboard/tools/testing/download_from_gcs/clang-format.sha1 diff --git a/cobalt/tools/testing/download_from_gcs/test_dir/clang-format.exe.sha1 b/starboard/tools/testing/download_from_gcs/test_dir/clang-format.exe.sha1 similarity index 100% rename from cobalt/tools/testing/download_from_gcs/test_dir/clang-format.exe.sha1 rename to starboard/tools/testing/download_from_gcs/test_dir/clang-format.exe.sha1 diff --git a/cobalt/tools/testing/download_from_gcs/test_dir/clang-format.sha1 b/starboard/tools/testing/download_from_gcs/test_dir/clang-format.sha1 similarity index 100% rename from cobalt/tools/testing/download_from_gcs/test_dir/clang-format.sha1 rename to starboard/tools/testing/download_from_gcs/test_dir/clang-format.sha1 diff --git a/tools/metrics/histograms/metadata/cobalt/histograms.xml b/tools/metrics/histograms/metadata/cobalt/histograms.xml index 1cc9ae95c457..b5b95018d693 100644 --- a/tools/metrics/histograms/metadata/cobalt/histograms.xml +++ b/tools/metrics/histograms/metadata/cobalt/histograms.xml @@ -284,6 +284,15 @@ Always run the pretty print utility on this file after editing: Timing data for closing session of SbDrm. + + + + borongchen@google.com + cobalt-team@google.com + Timing data for the creation of SbDrm. + + @@ -338,6 +347,96 @@ Always run the pretty print utility on this file after editing: Timing data for the destruction of SbPlayer. + + + + borongchen@google.com + cobalt-team@google.com + Timing data for getting audio configuration. + + + + + + borongchen@google.com + cobalt-team@google.com + Timing data for getting frame. + + + + + + borongchen@google.com + cobalt-team@google.com + Timing data for getting media info. + + + + + + borongchen@google.com + cobalt-team@google.com + Timing data for getting preferred output mode. + + + + + + borongchen@google.com + cobalt-team@google.com + Timing data for setting seek. + + + + + + borongchen@google.com + cobalt-team@google.com + Timing data for setting bounds. + + + + + + borongchen@google.com + cobalt-team@google.com + Timing data for setting playback rate. + + + + + + borongchen@google.com + cobalt-team@google.com + Timing data for setting volume. + + + + + + borongchen@google.com + cobalt-team@google.com + Timing data for writing end of audio stream. + + + + + + borongchen@google.com + cobalt-team@google.com + Timing data for writing end of video stream. + +