void ICefWebBrowserInternal.OnBrowserAfterCreated(CefBrowser browser)
        {
            this.DispatchIfRequired(() =>
            {
                try
                {
                    if (_browser != null)
                    {
                        return;
                    }

                    _browser = browser;
                    using (var browserHost = _browser.GetHost())
                    {
                        _browserWindowHandle = browserHost.GetWindowHandle();
                        if (_browserWindowHandle != IntPtr.Zero)
                        {
                            OnHandleCreated();
                            _widgetWindowZOrderHandler = new WidgetWindowZOrderHandler(_browserWindowHandle);
                        }
                    }

                    if (!IsPopup)
                    {
                        if (BrowserAfterCreated != null)
                        {
                            BrowserAfterCreated(this, EventArgs.Empty);
                        }
                    }
                    else
                    {
                        var parent = ParagonRuntime.FindBrowser <CefWebBrowser>(_parentBrowserId);
                        if (parent == null)
                        {
                            Close();
                        }
                        else
                        {
                            var ea = parent.RaiseShowPopup(this);
                            if (ea == null || !ea.Shown)
                            {
                                Close();
                            }
                        }
                    }

                    SetBrowserZoomLevel();
                }
                catch (Exception ex)
                {
                    Logger.Error("Error in OnBrowserAfterCreated : {0}", ex);
                    throw;
                }
            }, true);
        }
        protected override void Dispose(bool disposing)
        {
            base.Dispose(disposing);

            if (_browser != null && disposing)
            {
                ParagonRuntime.RemoveBrowser(this);
                if (_widgetWindowZOrderHandler != null)
                {
                    _widgetWindowZOrderHandler.Dispose();
                    _widgetWindowZOrderHandler = null;
                }
                if (_containerWindowMoveListener != null)
                {
                    _containerWindowMoveListener.Dispose();
                    _containerWindowMoveListener = null;
                }
                if (_client != null)
                {
                    _client.Dispose();
                    _client = null;
                }
                if (_router != null)
                {
                    // Router should not be disposed here since it is shared by all cefwebbrowsers
                    //_router.Dispose();
                    _router = null;
                }
                if (_browser != null)
                {
                    _browser.Dispose();
                    _browser = null;
                }
                _browserWindowHandle = IntPtr.Zero;
            }
        }