Skip to content

Commit 165a050

Browse files
committed
WinForms - ChromiumHostControl now has basic events
- Create ChromiumHostControlBase as common base class for ChromiumHostControl and ChromiumWebBrowser - ChromiumHostControl is now the specific implementation for hosting popups Has AddressChanged, LoadingStateChanged, etc events
1 parent 6f73ea1 commit 165a050

18 files changed

+1695
-277
lines changed

CefSharp.WinForms.Example/BrowserForm.cs

Lines changed: 41 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
using CefSharp.Example;
1313
using CefSharp.Example.Callback;
1414
using CefSharp.Example.Handlers;
15+
using CefSharp.WinForms.Host;
1516

1617
namespace CefSharp.WinForms.Example
1718
{
@@ -63,16 +64,22 @@ private void BrowserFormLoad(object sender, EventArgs e)
6364
/// Used to add a Popup browser as a Tab
6465
/// </summary>
6566
/// <param name="browserHostControl"></param>
66-
public void AddTab(Control browserHostControl, string url)
67+
public void AddTab(ChromiumHostControl browserHostControl, string url)
6768
{
6869
browserTabControl.SuspendLayout();
6970

71+
var browser = new BrowserTabUserControl(browserHostControl)
72+
{
73+
Dock = DockStyle.Fill,
74+
Bounds = browserTabControl.Bounds
75+
};
76+
7077
var tabPage = new TabPage(url)
7178
{
7279
Dock = DockStyle.Fill
7380
};
7481

75-
tabPage.Controls.Add(browserHostControl);
82+
tabPage.Controls.Add(browser);
7683

7784
browserTabControl.TabPages.Add(tabPage);
7885

@@ -222,7 +229,7 @@ private void UndoMenuItemClick(object sender, EventArgs e)
222229
var control = GetCurrentTabControl();
223230
if (control != null)
224231
{
225-
control.Browser.Undo();
232+
control.BrowserControl.Undo();
226233
}
227234
}
228235

@@ -231,7 +238,7 @@ private void RedoMenuItemClick(object sender, EventArgs e)
231238
var control = GetCurrentTabControl();
232239
if (control != null)
233240
{
234-
control.Browser.Redo();
241+
control.BrowserControl.Redo();
235242
}
236243
}
237244

@@ -240,7 +247,7 @@ private void CutMenuItemClick(object sender, EventArgs e)
240247
var control = GetCurrentTabControl();
241248
if (control != null)
242249
{
243-
control.Browser.Cut();
250+
control.BrowserControl.Cut();
244251
}
245252
}
246253

@@ -249,7 +256,7 @@ private void CopyMenuItemClick(object sender, EventArgs e)
249256
var control = GetCurrentTabControl();
250257
if (control != null)
251258
{
252-
control.Browser.Copy();
259+
control.BrowserControl.Copy();
253260
}
254261
}
255262

@@ -258,7 +265,7 @@ private void PasteMenuItemClick(object sender, EventArgs e)
258265
var control = GetCurrentTabControl();
259266
if (control != null)
260267
{
261-
control.Browser.Paste();
268+
control.BrowserControl.Paste();
262269
}
263270
}
264271

@@ -267,7 +274,7 @@ private void DeleteMenuItemClick(object sender, EventArgs e)
267274
var control = GetCurrentTabControl();
268275
if (control != null)
269276
{
270-
control.Browser.Delete();
277+
control.BrowserControl.Delete();
271278
}
272279
}
273280

@@ -276,7 +283,7 @@ private void SelectAllMenuItemClick(object sender, EventArgs e)
276283
var control = GetCurrentTabControl();
277284
if (control != null)
278285
{
279-
control.Browser.SelectAll();
286+
control.BrowserControl.SelectAll();
280287
}
281288
}
282289

@@ -285,7 +292,7 @@ private void PrintToolStripMenuItemClick(object sender, EventArgs e)
285292
var control = GetCurrentTabControl();
286293
if (control != null)
287294
{
288-
control.Browser.Print();
295+
control.BrowserControl.Print();
289296
}
290297
}
291298

@@ -297,7 +304,7 @@ private async void ShowDevToolsMenuItemClick(object sender, EventArgs e)
297304
var isDevToolsOpen = await control.CheckIfDevToolsIsOpenAsync();
298305
if (!isDevToolsOpen)
299306
{
300-
control.Browser.ShowDevTools();
307+
control.BrowserControl.ShowDevTools();
301308
}
302309
}
303310
}
@@ -310,7 +317,8 @@ private async void ShowDevToolsDockedMenuItemClick(object sender, EventArgs e)
310317
var isDevToolsOpen = await control.CheckIfDevToolsIsOpenAsync();
311318
if (!isDevToolsOpen)
312319
{
313-
if (control.Browser.LifeSpanHandler != null)
320+
var chromiumWebBrowser = control.BrowserControl as ChromiumWebBrowser;
321+
if (chromiumWebBrowser != null && chromiumWebBrowser.LifeSpanHandler != null)
314322
{
315323
control.ShowDevToolsDocked();
316324
}
@@ -329,7 +337,7 @@ private async void CloseDevToolsMenuItemClick(object sender, EventArgs e)
329337
var isDevToolsOpen = await control.CheckIfDevToolsIsOpenAsync();
330338
if (isDevToolsOpen)
331339
{
332-
control.Browser.CloseDevTools();
340+
control.BrowserControl.CloseDevTools();
333341
}
334342
}
335343
}
@@ -339,14 +347,14 @@ private void ZoomInToolStripMenuItemClick(object sender, EventArgs e)
339347
var control = GetCurrentTabControl();
340348
if (control != null)
341349
{
342-
var task = control.Browser.GetZoomLevelAsync();
350+
var task = control.BrowserControl.GetZoomLevelAsync();
343351

344352
task.ContinueWith(previous =>
345353
{
346354
if (previous.Status == TaskStatus.RanToCompletion)
347355
{
348356
var currentLevel = previous.Result;
349-
control.Browser.SetZoomLevel(currentLevel + ZoomIncrement);
357+
control.BrowserControl.SetZoomLevel(currentLevel + ZoomIncrement);
350358
}
351359
else
352360
{
@@ -361,13 +369,13 @@ private void ZoomOutToolStripMenuItemClick(object sender, EventArgs e)
361369
var control = GetCurrentTabControl();
362370
if (control != null)
363371
{
364-
var task = control.Browser.GetZoomLevelAsync();
372+
var task = control.BrowserControl.GetZoomLevelAsync();
365373
task.ContinueWith(previous =>
366374
{
367375
if (previous.Status == TaskStatus.RanToCompletion)
368376
{
369377
var currentLevel = previous.Result;
370-
control.Browser.SetZoomLevel(currentLevel - ZoomIncrement);
378+
control.BrowserControl.SetZoomLevel(currentLevel - ZoomIncrement);
371379
}
372380
else
373381
{
@@ -382,7 +390,7 @@ private void CurrentZoomLevelToolStripMenuItemClick(object sender, EventArgs e)
382390
var control = GetCurrentTabControl();
383391
if (control != null)
384392
{
385-
var task = control.Browser.GetZoomLevelAsync();
393+
var task = control.BrowserControl.GetZoomLevelAsync();
386394
task.ContinueWith(previous =>
387395
{
388396
if (previous.Status == TaskStatus.RanToCompletion)
@@ -403,7 +411,7 @@ private void DoesActiveElementAcceptTextInputToolStripMenuItemClick(object sende
403411
var control = GetCurrentTabControl();
404412
if (control != null)
405413
{
406-
var frame = control.Browser.GetFocusedFrame();
414+
var frame = control.BrowserControl.GetFocusedFrame();
407415

408416
//Execute extension method
409417
frame.ActiveElementAcceptsTextInput().ContinueWith(task =>
@@ -442,7 +450,7 @@ private void DoesElementWithIdExistToolStripMenuItemClick(object sender, EventAr
442450
var control = GetCurrentTabControl();
443451
if (control != null)
444452
{
445-
var frame = control.Browser.GetFocusedFrame();
453+
var frame = control.BrowserControl.GetFocusedFrame();
446454

447455
//Execute extension method
448456
frame.ElementWithIdExists(dialog.Value).ContinueWith(task =>
@@ -478,7 +486,7 @@ private void GoToDemoPageToolStripMenuItemClick(object sender, EventArgs e)
478486
var control = GetCurrentTabControl();
479487
if (control != null)
480488
{
481-
control.Browser.Load("custom://cefsharp/ScriptedMethodsTest.html");
489+
control.BrowserControl.LoadUrl("custom://cefsharp/ScriptedMethodsTest.html");
482490
}
483491
}
484492

@@ -487,7 +495,7 @@ private void InjectJavascriptCodeToolStripMenuItemClick(object sender, EventArgs
487495
var control = GetCurrentTabControl();
488496
if (control != null)
489497
{
490-
var frame = control.Browser.GetFocusedFrame();
498+
var frame = control.BrowserControl.GetFocusedFrame();
491499

492500
//Execute extension method
493501
frame.ListenForEvent("test-button", "click");
@@ -507,7 +515,7 @@ private async void PrintToPdfToolStripMenuItemClick(object sender, EventArgs e)
507515

508516
if (dialog.ShowDialog() == DialogResult.OK)
509517
{
510-
var success = await control.Browser.PrintToPdfAsync(dialog.FileName, new PdfPrintSettings
518+
var success = await control.BrowserControl.PrintToPdfAsync(dialog.FileName, new PdfPrintSettings
511519
{
512520
MarginType = CefPdfPrintMarginType.Custom,
513521
MarginBottom = 10,
@@ -536,7 +544,7 @@ private void OpenDataUrlToolStripMenuItemClick(object sender, EventArgs e)
536544
if (control != null)
537545
{
538546
const string html = "<html><head><title>Test</title></head><body><h1>Html Encoded in URL!</h1></body></html>";
539-
control.Browser.LoadHtml(html, false);
547+
control.BrowserControl.LoadHtml(html, false);
540548
}
541549
}
542550

@@ -545,7 +553,7 @@ private void OpenHttpBinOrgToolStripMenuItemClick(object sender, EventArgs e)
545553
var control = GetCurrentTabControl();
546554
if (control != null)
547555
{
548-
control.Browser.Load("https://httpbin.org/");
556+
control.BrowserControl.LoadUrl("https://httpbin.org/");
549557
}
550558
}
551559

@@ -554,7 +562,7 @@ private void RunFileDialogToolStripMenuItemClick(object sender, EventArgs e)
554562
var control = GetCurrentTabControl();
555563
if (control != null)
556564
{
557-
control.Browser.GetBrowserHost().RunFileDialog(CefFileDialogMode.Open, "Open", null, new List<string> { "*.*" }, 0, new RunFileDialogCallback());
565+
control.BrowserControl.GetBrowserHost().RunFileDialog(CefFileDialogMode.Open, "Open", null, new List<string> { "*.*" }, 0, new RunFileDialogCallback());
558566
}
559567
}
560568

@@ -564,9 +572,9 @@ private void LoadExtensionsToolStripMenuItemClick(object sender, EventArgs e)
564572
if (control != null)
565573
{
566574
//The sample extension only works for http(s) schemes
567-
if (control.Browser.Address.StartsWith("http"))
575+
if (control.BrowserControl.GetMainFrame().Url.StartsWith("http"))
568576
{
569-
var requestContext = control.Browser.GetBrowserHost().RequestContext;
577+
var requestContext = control.BrowserControl.GetBrowserHost().RequestContext;
570578

571579
const string cefSharpExampleResourcesFolder =
572580
#if !NETCOREAPP
@@ -604,7 +612,7 @@ private void LoadExtensionsToolStripMenuItemClick(object sender, EventArgs e)
604612
GetActiveBrowser = (extension, isIncognito) =>
605613
{
606614
//Return the active browser for which the extension will act upon
607-
return control.Browser.GetBrowser();
615+
return control.BrowserControl.BrowserCore;
608616
}
609617
};
610618

@@ -622,16 +630,16 @@ private void JavascriptBindingStressTestToolStripMenuItemClick(object sender, Ev
622630
var control = GetCurrentTabControl();
623631
if (control != null)
624632
{
625-
control.Browser.Load(CefExample.BindingTestUrl);
626-
control.Browser.LoadingStateChanged += (o, args) =>
633+
control.BrowserControl.LoadUrl(CefExample.BindingTestUrl);
634+
control.BrowserControl.LoadingStateChanged += (o, args) =>
627635
{
628636
if (args.IsLoading == false)
629637
{
630638
Task.Delay(10000).ContinueWith(t =>
631639
{
632-
if (control.Browser != null)
640+
if (control.BrowserControl != null)
633641
{
634-
control.Browser.Reload();
642+
control.BrowserControl.Reload();
635643
}
636644
});
637645
}

0 commit comments

Comments
 (0)