Skip to content

Commit 5166dba

Browse files
committed
Improvements
1 parent f7ae8d6 commit 5166dba

4 files changed

Lines changed: 64 additions & 5 deletions

File tree

CefSharp.OutOfProcess.Core/IChromiumWebBrowser.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace CefSharp.OutOfProcess
77
/// <summary>
88
/// OutOfProcess ChromiumWebBrowser
99
/// </summary>
10-
public interface IChromiumWebBrowser
10+
public interface IChromiumWebBrowser : IDisposable
1111
{
1212
/// <summary>
1313
/// Occurs when the browser address changed.
@@ -97,6 +97,11 @@ public interface IChromiumWebBrowser
9797
/// </summary>
9898
event EventHandler<RequestEventArgs> NetworkRequestServedFromCache;
9999

100+
/// <summary>
101+
/// Fired for top level page lifecycle events such as navigation, load, paint, etc.
102+
/// </summary>
103+
event EventHandler<LifecycleEventArgs> LifecycleEvent;
104+
100105
/// <summary>
101106
/// Raised when a <see cref="NetworkResponse"/> is received.
102107
/// </summary>

CefSharp.OutOfProcess.Core/OutOfProcessHost.cs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,21 +34,55 @@ private OutOfProcessHost(string path)
3434
_outofProcessFilePath = path;
3535
}
3636

37+
/// <summary>
38+
/// UI Thread assocuated with this <see cref="OutOfProcessHost"/>
39+
/// </summary>
40+
public int UiThreadId
41+
{
42+
get { return _uiThreadId; }
43+
}
44+
45+
/// <summary>
46+
/// Thread Id of the UI Thread running in the Browser Process
47+
/// </summary>
48+
public int RemoteUiThreadId
49+
{
50+
get { return _remoteuiThreadId; }
51+
}
52+
53+
/// <summary>
54+
/// CefSharp Version
55+
/// </summary>
3756
public string CefSharpVersion
3857
{
3958
get { return _cefSharpVersion; }
4059
}
4160

61+
/// <summary>
62+
/// Cef Version
63+
/// </summary>
4264
public string CefVersion
4365
{
4466
get { return _cefVersion; }
4567
}
4668

69+
/// <summary>
70+
/// Chromium Version
71+
/// </summary>
4772
public string ChromiumVersion
4873
{
4974
get { return _chromiumVersion; }
5075
}
5176

77+
/// <summary>
78+
/// Sends an IPC message to the Browser Process instructing it
79+
/// to create a new Out of process browser
80+
/// </summary>
81+
/// <param name="browser">The <see cref="IChromiumWebBrowserInternal"/> that will host the browser</param>
82+
/// <param name="handle">handle used to host the control</param>
83+
/// <param name="url"></param>
84+
/// <param name="id"></param>
85+
/// <returns></returns>
5286
public bool CreateBrowser(IChromiumWebBrowserInternal browser, IntPtr handle, string url, out int id)
5387
{
5488
id = _browserIdentifier++;

CefSharp.OutOfProcess.WinForms/ChromiumWebBrowser.cs

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using System;
22
using System.Drawing;
3-
using System.Net;
43
using System.Threading.Tasks;
54
using System.Windows.Forms;
65
using CefSharp.OutOfProcess.Internal;
@@ -19,6 +18,7 @@ public class ChromiumWebBrowser : Control, IChromiumWebBrowserInternal
1918
private int _id;
2019
private IDevToolsContext _devToolsContext;
2120
private OutOfProcessConnectionTransport _devToolsContextConnectionTransport;
21+
private bool _devToolsReady;
2222

2323
/// <inheritdoc/>
2424
public event EventHandler DOMContentLoaded;
@@ -56,6 +56,8 @@ public class ChromiumWebBrowser : Control, IChromiumWebBrowserInternal
5656
public event EventHandler<StatusMessageEventArgs> StatusMessage;
5757
/// <inheritdoc/>
5858
public event EventHandler<ConsoleEventArgs> ConsoleMessage;
59+
/// <inheritdoc/>
60+
public event EventHandler<LifecycleEventArgs> LifecycleEvent;
5961

6062
public ChromiumWebBrowser(OutOfProcessHost host, string initialAddress)
6163
{
@@ -81,6 +83,22 @@ protected override Size DefaultSize
8183
get { return new Size(640, 480); }
8284
}
8385

86+
/// <summary>
87+
/// DevToolsContext - provides communication with the underlying browser
88+
/// </summary>
89+
public IDevToolsContext DevToolsContext
90+
{
91+
get
92+
{
93+
if (_devToolsReady)
94+
{
95+
return _devToolsContext;
96+
}
97+
98+
return default;
99+
}
100+
}
101+
84102
/// <inheritdoc/>
85103
public bool IsBrowserInitialized => _browserHwnd != IntPtr.Zero;
86104

@@ -104,8 +122,8 @@ protected override void OnHandleCreated(EventArgs e)
104122

105123
_devToolsContextConnectionTransport = new OutOfProcessConnectionTransport(_id, _host);
106124

107-
var connection = Connection.Attach(_devToolsContextConnectionTransport);
108-
_devToolsContext = DevToolsContext.CreateForOutOfProcess(connection);
125+
var connection = DevToolsConnection.Attach(_devToolsContextConnectionTransport);
126+
_devToolsContext = Puppeteer.DevToolsContext.CreateForOutOfProcess(connection);
109127
}
110128

111129
/// <inheritdoc/>
@@ -239,6 +257,8 @@ void IChromiumWebBrowserInternal.OnDevToolsMessage(string jsonMsg)
239257
/// <inheritdoc/>
240258
void IChromiumWebBrowserInternal.OnDevToolsReady()
241259
{
260+
_devToolsReady = true;
261+
242262
var ctx = (DevToolsContext)_devToolsContext;
243263

244264
ctx.DOMContentLoaded += DOMContentLoaded;

CefSharp.Puppeteer

0 commit comments

Comments
 (0)