1
0
mirror of https://github.com/salvadordf/CEF4Delphi.git synced 2025-05-23 21:50:21 +02:00

Added TChromiumCore.ToggleAudioMuted

Always set TChromiumCore.AudioMuted in the right CEF thread
This commit is contained in:
salvadordf 2022-08-29 22:45:28 +02:00
parent 15f51eccc7
commit 941f2c768f
6 changed files with 144 additions and 3 deletions

View File

@ -407,6 +407,10 @@ object MiniBrowserFrm: TMiniBrowserFrm
Caption = 'Allow downloads'
OnClick = Allowdownloads1Click
end
object Toggleaudio1: TMenuItem
Caption = 'Toggle audio'
OnClick = Toggleaudio1Click
end
object N5: TMenuItem
Caption = '-'
end

View File

@ -147,6 +147,7 @@ type
CEFinfo1: TMenuItem;
SaveasMHTML1: TMenuItem;
Allowdownloads1: TMenuItem;
Toggleaudio1: TMenuItem;
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
@ -223,6 +224,7 @@ type
procedure CEFinfo1Click(Sender: TObject);
procedure SaveasMHTML1Click(Sender: TObject);
procedure Allowdownloads1Click(Sender: TObject);
procedure Toggleaudio1Click(Sender: TObject);
protected
FPendingMsgID : integer;
@ -1187,6 +1189,11 @@ begin
MessageDlg(TempMessage, mtInformation, [mbOK], 0);
end;
procedure TMiniBrowserFrm.Toggleaudio1Click(Sender: TObject);
begin
Chromium1.ToggleAudioMuted;
end;
procedure TMiniBrowserFrm.Chromium1ResourceResponse(Sender: TObject;
const browser: ICefBrowser; const frame: ICefFrame;
const request: ICefRequest; const response: ICefResponse;

View File

@ -707,6 +707,8 @@ type
procedure doMediaRouteCreateFinished(result: TCefMediaRouterCreateResult; const error: ustring; const route: ICefMediaRoute); virtual;
procedure doOnMediaSinkDeviceInfo(const ip_address: ustring; port: integer; const model_name: ustring); virtual;
procedure doBrowserNavigation(aTask : TCefBrowserNavigation); virtual;
procedure doSetAudioMuted(aValue : boolean); virtual;
procedure doToggleAudioMuted; virtual;
function MustCreateAudioHandler : boolean; virtual;
function MustCreateCommandHandler : boolean; virtual;
function MustCreateDevToolsMessageObserver : boolean; virtual;
@ -797,6 +799,7 @@ type
procedure SetUserAgentOverride(const aUserAgent : ustring; const aAcceptLanguage : ustring = ''; const aPlatform : ustring = '');
procedure ClearDataForOrigin(const aOrigin : ustring; aStorageTypes : TCefClearDataStorageTypes = cdstAll);
procedure ClearCache;
procedure ToggleAudioMuted;
function DeleteCookies(const url : ustring = ''; const cookieName : ustring = ''; aDeleteImmediately : boolean = False) : boolean;
function VisitAllCookies(aID : integer = 0) : boolean;
@ -2936,9 +2939,19 @@ begin
end;
procedure TChromiumCore.SetAudioMuted(aValue : boolean);
var
TempTask : ICefTask;
begin
if Initialized then
Browser.Host.SetAudioMuted(aValue);
if CefCurrentlyOn(TID_UI) then
doSetAudioMuted(aValue)
else
if Initialized then
try
TempTask := TCefSetAudioMutedTask.Create(self, aValue);
CefPostTask(TID_UI, TempTask);
finally
TempTask := nil;
end;
end;
procedure TChromiumCore.SetWindowlessFrameRate(aValue : integer);
@ -4017,6 +4030,22 @@ begin
ExecuteDevToolsMethod(0, 'Network.clearBrowserCache', nil);
end;
procedure TChromiumCore.ToggleAudioMuted;
var
TempTask : ICefTask;
begin
if CefCurrentlyOn(TID_UI) then
doToggleAudioMuted
else
if Initialized then
try
TempTask := TCefToggleAudioMutedTask.Create(self);
CefPostTask(TID_UI, TempTask);
finally
TempTask := nil;
end;
end;
function TChromiumCore.GetRequestContext : ICefRequestContext;
begin
if Initialized then
@ -4691,6 +4720,18 @@ begin
end;
end;
procedure TChromiumCore.doSetAudioMuted(aValue : boolean);
begin
if Initialized then
Browser.Host.SetAudioMuted(aValue);
end;
procedure TChromiumCore.doToggleAudioMuted;
begin
if Initialized then
AudioMuted := not(AudioMuted);
end;
{$IFDEF LINUX}
procedure TChromiumCore.UpdateBrowserSize(aLeft, aTop, aWidth, aHeight : integer);
{$IFDEF FPC}

View File

@ -512,6 +512,8 @@ type
procedure doMediaRouteCreateFinished(result: TCefMediaRouterCreateResult; const error: ustring; const route: ICefMediaRoute);
procedure doOnMediaSinkDeviceInfo(const ip_address: ustring; port: integer; const model_name: ustring);
procedure doBrowserNavigation(aTask : TCefBrowserNavigation);
procedure doSetAudioMuted(aValue : boolean);
procedure doToggleAudioMuted;
function MustCreateAudioHandler : boolean;
function MustCreateCommandHandler : boolean;
function MustCreateLoadHandler : boolean;

View File

@ -219,6 +219,29 @@ type
destructor Destroy; override;
end;
TCefSetAudioMutedTask = class(TCefTaskOwn)
protected
FEvents : Pointer;
FValue : boolean;
procedure Execute; override;
public
constructor Create(const aEvents : IChromiumEvents; aValue : boolean); reintroduce;
destructor Destroy; override;
end;
TCefToggleAudioMutedTask = class(TCefTaskOwn)
protected
FEvents : Pointer;
procedure Execute; override;
public
constructor Create(const aEvents : IChromiumEvents); reintroduce;
destructor Destroy; override;
end;
implementation
uses
@ -681,4 +704,68 @@ begin
inherited Destroy;
end;
// TCefSetAudioMutedTask
procedure TCefSetAudioMutedTask.Execute;
begin
try
try
if (FEvents <> nil) then IChromiumEvents(FEvents).doSetAudioMuted(FValue);
except
on e : exception do
if CustomExceptionHandler('TCefSetAudioMutedTask.Execute', e) then raise;
end;
finally
FEvents := nil;
end;
end;
constructor TCefSetAudioMutedTask.Create(const aEvents : IChromiumEvents; aValue : boolean);
begin
inherited Create;
FEvents := Pointer(aEvents);
FValue := aValue;
end;
destructor TCefSetAudioMutedTask.Destroy;
begin
FEvents := nil;
inherited Destroy;
end;
// TCefToggleAudioMutedTask
procedure TCefToggleAudioMutedTask.Execute;
begin
try
try
if (FEvents <> nil) then IChromiumEvents(FEvents).doToggleAudioMuted;
except
on e : exception do
if CustomExceptionHandler('TCefToggleAudioMutedTask.Execute', e) then raise;
end;
finally
FEvents := nil;
end;
end;
constructor TCefToggleAudioMutedTask.Create(const aEvents : IChromiumEvents);
begin
inherited Create;
FEvents := Pointer(aEvents);
end;
destructor TCefToggleAudioMutedTask.Destroy;
begin
FEvents := nil;
inherited Destroy;
end;
end.

View File

@ -2,7 +2,7 @@
"UpdateLazPackages" : [
{
"ForceNotify" : true,
"InternalVersion" : 427,
"InternalVersion" : 428,
"Name" : "cef4delphi_lazarus.lpk",
"Version" : "104.4.26.0"
}