void ILifeSpanHandler.OnAfterCreated(IWebBrowser browserControl, IBrowser browser) { if (browser.IsPopup) { var interceptor = new PopupAsChildHelper(browser); popupasChildHelpers.Add(browser.Identifier, interceptor); } }
void ILifeSpanHandler.OnBeforeClose(IWebBrowser browserControl, IBrowser browser) { if (!browser.IsDisposed && browser.IsPopup) { PopupAsChildHelper interceptor = null; if (popupasChildHelpers.TryGetValue(browser.Identifier, out interceptor)) { popupasChildHelpers[browser.Identifier] = null; interceptor.Dispose(); } } }
void ILifeSpanHandler.OnAfterCreated(IWebBrowser chromiumWebBrowser, IBrowser browser) { if (browser.IsPopup) { var windowHandle = browser.GetHost().GetWindowHandle(); //WinForms will kindly lookup the child control from it's handle //If no parentControl then likely it's a popup and has no parent handle //(Devtools by default will remain a popup, at this point the Url hasn't been set, so // we're going with this assumption as it fits the use case of this example) var parentControl = Control.FromChildHandle(windowHandle); if (parentControl != null) { var interceptor = new PopupAsChildHelper(browser); popupasChildHelpers.Add(browser.Identifier, interceptor); } } }