mirror of
https://github.com/servo/servo.git
synced 2025-08-05 21:50:18 +01:00
Add missing media session callback in UWP embedding.
This commit is contained in:
parent
c6049eda7b
commit
5de6074ad8
7 changed files with 58 additions and 24 deletions
|
@ -81,6 +81,8 @@ void BrowserPage::BindServoEvents() {
|
||||||
urlTextbox().GotFocus(std::bind(&BrowserPage::OnURLFocused, this, _1));
|
urlTextbox().GotFocus(std::bind(&BrowserPage::OnURLFocused, this, _1));
|
||||||
servoView().OnMediaSessionMetadata(
|
servoView().OnMediaSessionMetadata(
|
||||||
[=](hstring title, hstring artist, hstring album) {});
|
[=](hstring title, hstring artist, hstring album) {});
|
||||||
|
servoView().OnMediaSessionPosition(
|
||||||
|
[=](double duration, double position, double rate) {});
|
||||||
servoView().OnMediaSessionPlaybackStateChange([=](const auto &, int state) {
|
servoView().OnMediaSessionPlaybackStateChange([=](const auto &, int state) {
|
||||||
if (state == Servo::MediaSessionPlaybackState::None) {
|
if (state == Servo::MediaSessionPlaybackState::None) {
|
||||||
mediaControls().Visibility(Visibility::Collapsed);
|
mediaControls().Visibility(Visibility::Collapsed);
|
||||||
|
|
|
@ -87,6 +87,8 @@
|
||||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories);$(ProjectDir)\..\..\..\target\aarch64-uwp-windows-msvc\debug\</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories);$(ProjectDir)\..\..\..\target\aarch64-uwp-windows-msvc\debug\</AdditionalIncludeDirectories>
|
||||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories);$(ProjectDir)\..\..\..\target\x86_64-uwp-windows-msvc\debug\</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories);$(ProjectDir)\..\..\..\target\x86_64-uwp-windows-msvc\debug\</AdditionalIncludeDirectories>
|
||||||
|
<LanguageStandard Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">stdcpplatest</LanguageStandard>
|
||||||
|
<LanguageStandard Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">stdcpplatest</LanguageStandard>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">OneCore.lib;WindowsApp.lib;%(AdditionalDependencies);simpleservo.dll.lib</AdditionalDependencies>
|
<AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">OneCore.lib;WindowsApp.lib;%(AdditionalDependencies);simpleservo.dll.lib</AdditionalDependencies>
|
||||||
|
@ -105,6 +107,8 @@
|
||||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories);$(ProjectDir)\..\..\..\target\aarch64-uwp-windows-msvc\release</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories);$(ProjectDir)\..\..\..\target\aarch64-uwp-windows-msvc\release</AdditionalIncludeDirectories>
|
||||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories);$(ProjectDir)\..\..\..\target\x86_64-uwp-windows-msvc\release</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories);$(ProjectDir)\..\..\..\target\x86_64-uwp-windows-msvc\release</AdditionalIncludeDirectories>
|
||||||
|
<LanguageStandard Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">stdcpplatest</LanguageStandard>
|
||||||
|
<LanguageStandard Condition="'$(Configuration)|$(Platform)'=='Release|x64'">stdcpplatest</LanguageStandard>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">OneCore.lib;WindowsApp.lib;%(AdditionalDependencies);simpleservo.dll.lib</AdditionalDependencies>
|
<AdditionalDependencies Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">OneCore.lib;WindowsApp.lib;%(AdditionalDependencies);simpleservo.dll.lib</AdditionalDependencies>
|
||||||
|
@ -1010,4 +1014,4 @@
|
||||||
<Error Condition="!Exists('..\packages\ANGLE.WindowsStore.Servo.2.1.19\build\native\ANGLE.WindowsStore.Servo.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\ANGLE.WindowsStore.Servo.2.1.19\build\native\ANGLE.WindowsStore.Servo.targets'))" />
|
<Error Condition="!Exists('..\packages\ANGLE.WindowsStore.Servo.2.1.19\build\native\ANGLE.WindowsStore.Servo.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\ANGLE.WindowsStore.Servo.2.1.19\build\native\ANGLE.WindowsStore.Servo.targets'))" />
|
||||||
<Error Condition="!Exists('..\packages\Microsoft.UI.Xaml.2.4.2\build\native\Microsoft.UI.Xaml.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.UI.Xaml.2.4.2\build\native\Microsoft.UI.Xaml.targets'))" />
|
<Error Condition="!Exists('..\packages\Microsoft.UI.Xaml.2.4.2\build\native\Microsoft.UI.Xaml.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.UI.Xaml.2.4.2\build\native\Microsoft.UI.Xaml.targets'))" />
|
||||||
</Target>
|
</Target>
|
||||||
</Project>
|
</Project>
|
|
@ -99,6 +99,12 @@ const char *get_clipboard_contents() {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void on_media_session_set_position_state(double duration, double position,
|
||||||
|
double playback_rate) {
|
||||||
|
return sServo->Delegate().OnServoMediaSessionPosition(duration, position,
|
||||||
|
playback_rate);
|
||||||
|
}
|
||||||
|
|
||||||
void on_media_session_metadata(const char *title, const char *album,
|
void on_media_session_metadata(const char *title, const char *album,
|
||||||
const char *artist) {
|
const char *artist) {
|
||||||
return sServo->Delegate().OnServoMediaSessionMetadata(
|
return sServo->Delegate().OnServoMediaSessionMetadata(
|
||||||
|
@ -296,29 +302,32 @@ Servo::Servo(std::optional<hstring> initUrl, hstring args, GLsizei width,
|
||||||
std::to_string(GetLastError()));
|
std::to_string(GetLastError()));
|
||||||
}
|
}
|
||||||
|
|
||||||
capi::CHostCallbacks c;
|
capi::CHostCallbacks c = capi::CHostCallbacks{
|
||||||
c.on_load_started = &on_load_started;
|
.on_load_started = &on_load_started,
|
||||||
c.on_load_ended = &on_load_ended;
|
.on_load_ended = &on_load_ended,
|
||||||
c.on_title_changed = &on_title_changed;
|
.on_title_changed = &on_title_changed,
|
||||||
c.on_url_changed = &on_url_changed;
|
.on_allow_navigation = &on_allow_navigation,
|
||||||
c.on_history_changed = &on_history_changed;
|
.on_url_changed = &on_url_changed,
|
||||||
c.on_animating_changed = &on_animating_changed;
|
.on_history_changed = &on_history_changed,
|
||||||
c.on_shutdown_complete = &on_shutdown_complete;
|
.on_animating_changed = &on_animating_changed,
|
||||||
c.on_allow_navigation = &on_allow_navigation;
|
.on_shutdown_complete = &on_shutdown_complete,
|
||||||
c.on_ime_show = &on_ime_show;
|
.on_ime_show = &on_ime_show,
|
||||||
c.on_ime_hide = &on_ime_hide;
|
.on_ime_hide = &on_ime_hide,
|
||||||
c.get_clipboard_contents = &get_clipboard_contents;
|
.get_clipboard_contents = &get_clipboard_contents,
|
||||||
c.set_clipboard_contents = &set_clipboard_contents;
|
.set_clipboard_contents = &set_clipboard_contents,
|
||||||
c.on_media_session_metadata = &on_media_session_metadata;
|
.on_media_session_metadata = &on_media_session_metadata,
|
||||||
c.on_media_session_playback_state_change =
|
.on_media_session_playback_state_change =
|
||||||
&on_media_session_playback_state_change;
|
&on_media_session_playback_state_change,
|
||||||
c.prompt_alert = &prompt_alert;
|
.on_media_session_set_position_state =
|
||||||
c.prompt_ok_cancel = &prompt_ok_cancel;
|
&on_media_session_set_position_state,
|
||||||
c.prompt_yes_no = &prompt_yes_no;
|
.prompt_alert = &prompt_alert,
|
||||||
c.prompt_input = &prompt_input;
|
.prompt_ok_cancel = &prompt_ok_cancel,
|
||||||
c.on_devtools_started = &on_devtools_started;
|
.prompt_yes_no = &prompt_yes_no,
|
||||||
c.show_context_menu = &show_context_menu;
|
.prompt_input = &prompt_input,
|
||||||
c.on_log_output = &on_log_output;
|
.on_devtools_started = &on_devtools_started,
|
||||||
|
.show_context_menu = &show_context_menu,
|
||||||
|
.on_log_output = &on_log_output,
|
||||||
|
};
|
||||||
|
|
||||||
capi::register_panic_handler(&on_panic);
|
capi::register_panic_handler(&on_panic);
|
||||||
|
|
||||||
|
|
|
@ -124,6 +124,7 @@ public:
|
||||||
virtual void OnServoIMEHide() = 0;
|
virtual void OnServoIMEHide() = 0;
|
||||||
virtual void OnServoDevtoolsStarted(bool, const unsigned int, hstring) = 0;
|
virtual void OnServoDevtoolsStarted(bool, const unsigned int, hstring) = 0;
|
||||||
virtual void OnServoMediaSessionMetadata(hstring, hstring, hstring) = 0;
|
virtual void OnServoMediaSessionMetadata(hstring, hstring, hstring) = 0;
|
||||||
|
virtual void OnServoMediaSessionPosition(double, double, double) = 0;
|
||||||
virtual void OnServoMediaSessionPlaybackStateChange(int) = 0;
|
virtual void OnServoMediaSessionPlaybackStateChange(int) = 0;
|
||||||
virtual void OnServoPromptAlert(hstring, bool) = 0;
|
virtual void OnServoPromptAlert(hstring, bool) = 0;
|
||||||
virtual void OnServoShowContextMenu(std::optional<hstring>,
|
virtual void OnServoShowContextMenu(std::optional<hstring>,
|
||||||
|
|
|
@ -548,6 +548,12 @@ void ServoControl::OnServoIMEShow(hstring text, int32_t x, int32_t y,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ServoControl::OnServoMediaSessionPosition(double duration, double position,
|
||||||
|
double playback_rate) {
|
||||||
|
RunOnUIThread(
|
||||||
|
[=] { mOnMediaSessionPositionEvent(duration, position, playback_rate); });
|
||||||
|
}
|
||||||
|
|
||||||
void ServoControl::OnServoMediaSessionMetadata(hstring title, hstring artist,
|
void ServoControl::OnServoMediaSessionMetadata(hstring title, hstring artist,
|
||||||
hstring album) {
|
hstring album) {
|
||||||
RunOnUIThread([=] { mOnMediaSessionMetadataEvent(title, artist, album); });
|
RunOnUIThread([=] { mOnMediaSessionMetadataEvent(title, artist, album); });
|
||||||
|
|
|
@ -151,6 +151,14 @@ struct ServoControl : ServoControlT<ServoControl>, public servo::ServoDelegate {
|
||||||
mOnCaptureGesturesEndedEvent.remove(token);
|
mOnCaptureGesturesEndedEvent.remove(token);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
winrt::event_token
|
||||||
|
OnMediaSessionPosition(MediaSessionPositionDelegate const &handler) {
|
||||||
|
return mOnMediaSessionPositionEvent.add(handler);
|
||||||
|
};
|
||||||
|
void OnMediaSessionPosition(winrt::event_token const &token) noexcept {
|
||||||
|
mOnMediaSessionPositionEvent.remove(token);
|
||||||
|
}
|
||||||
|
|
||||||
winrt::event_token
|
winrt::event_token
|
||||||
OnMediaSessionMetadata(MediaSessionMetadataDelegate const &handler) {
|
OnMediaSessionMetadata(MediaSessionMetadataDelegate const &handler) {
|
||||||
return mOnMediaSessionMetadataEvent.add(handler);
|
return mOnMediaSessionMetadataEvent.add(handler);
|
||||||
|
@ -187,6 +195,7 @@ struct ServoControl : ServoControlT<ServoControl>, public servo::ServoDelegate {
|
||||||
virtual void OnServoMediaSessionMetadata(winrt::hstring, winrt::hstring,
|
virtual void OnServoMediaSessionMetadata(winrt::hstring, winrt::hstring,
|
||||||
winrt::hstring);
|
winrt::hstring);
|
||||||
virtual void OnServoMediaSessionPlaybackStateChange(int);
|
virtual void OnServoMediaSessionPlaybackStateChange(int);
|
||||||
|
virtual void OnServoMediaSessionPosition(double, double, double);
|
||||||
virtual void OnServoPromptAlert(winrt::hstring, bool);
|
virtual void OnServoPromptAlert(winrt::hstring, bool);
|
||||||
virtual void OnServoShowContextMenu(std::optional<winrt::hstring>,
|
virtual void OnServoShowContextMenu(std::optional<winrt::hstring>,
|
||||||
std::vector<winrt::hstring>);
|
std::vector<winrt::hstring>);
|
||||||
|
@ -210,6 +219,7 @@ private:
|
||||||
winrt::event<EventDelegate> mOnCaptureGesturesStartedEvent;
|
winrt::event<EventDelegate> mOnCaptureGesturesStartedEvent;
|
||||||
winrt::event<EventDelegate> mOnCaptureGesturesEndedEvent;
|
winrt::event<EventDelegate> mOnCaptureGesturesEndedEvent;
|
||||||
winrt::event<MediaSessionMetadataDelegate> mOnMediaSessionMetadataEvent;
|
winrt::event<MediaSessionMetadataDelegate> mOnMediaSessionMetadataEvent;
|
||||||
|
winrt::event<MediaSessionPositionDelegate> mOnMediaSessionPositionEvent;
|
||||||
winrt::event<Windows::Foundation::EventHandler<int>>
|
winrt::event<Windows::Foundation::EventHandler<int>>
|
||||||
mOnMediaSessionPlaybackStateChangeEvent;
|
mOnMediaSessionPlaybackStateChangeEvent;
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ namespace ServoApp {
|
||||||
delegate void EventDelegate();
|
delegate void EventDelegate();
|
||||||
delegate void HistoryChangedDelegate(Boolean back, Boolean forward);
|
delegate void HistoryChangedDelegate(Boolean back, Boolean forward);
|
||||||
delegate void MediaSessionMetadataDelegate(String title, String artist, String album);
|
delegate void MediaSessionMetadataDelegate(String title, String artist, String album);
|
||||||
|
delegate void MediaSessionPositionDelegate(Double duration, Double position, Double rate);
|
||||||
delegate void DevtoolsStatusChangedDelegate(DevtoolsStatus status, UInt32 port, String token);
|
delegate void DevtoolsStatusChangedDelegate(DevtoolsStatus status, UInt32 port, String token);
|
||||||
|
|
||||||
enum DevtoolsStatus {
|
enum DevtoolsStatus {
|
||||||
|
@ -42,6 +43,7 @@ namespace ServoApp {
|
||||||
event Windows.Foundation.EventHandler<String> OnServoPanic;
|
event Windows.Foundation.EventHandler<String> OnServoPanic;
|
||||||
event Windows.Foundation.EventHandler<String> OnURLChanged;
|
event Windows.Foundation.EventHandler<String> OnURLChanged;
|
||||||
event MediaSessionMetadataDelegate OnMediaSessionMetadata;
|
event MediaSessionMetadataDelegate OnMediaSessionMetadata;
|
||||||
|
event MediaSessionPositionDelegate OnMediaSessionPosition;
|
||||||
event Windows.Foundation.EventHandler<int> OnMediaSessionPlaybackStateChange;
|
event Windows.Foundation.EventHandler<int> OnMediaSessionPlaybackStateChange;
|
||||||
Windows.Foundation.Collections.IVector<Pref> Preferences { get; };
|
Windows.Foundation.Collections.IVector<Pref> Preferences { get; };
|
||||||
Pref GetPref(String key);
|
Pref GetPref(String key);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue