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:
parent
15f51eccc7
commit
941f2c768f
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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}
|
||||
|
@ -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;
|
||||
|
@ -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.
|
||||
|
@ -2,7 +2,7 @@
|
||||
"UpdateLazPackages" : [
|
||||
{
|
||||
"ForceNotify" : true,
|
||||
"InternalVersion" : 427,
|
||||
"InternalVersion" : 428,
|
||||
"Name" : "cef4delphi_lazarus.lpk",
|
||||
"Version" : "104.4.26.0"
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user