how to add "referer" when create a new CefWebBrowser

Having problems with building or using the CefGlue .NET/Mono binding? Ask your questions here.

Moderator: fddima

how to add "referer" when create a new CefWebBrowser

Postby clorest510 » Sat Jun 20, 2015 10:07 pm

Hi,

I want to create a browser based on CEF 3.1650.1503 + Chromium 31.0.1650.16

it work very well, but I want to show the CefWebBrowser Control in tabPage of my Winform app, not as a popup window when I meet "target:_blank" or "window.open"

1. I try to create a new CefWebBrowser myself in BeforePopup and set e.Handed = true (e is type of BeforePopupEventArgs) to prevent a popup window, here is my code:
Code: Select all
internal protected virtual void OnBeforePopup(BeforePopupEventArgs e)
      {
         if (BeforePopup != null) {
                [color=#FF0000][b]e.Handled = true;[/b][/color]
                BeforePopup(this, e);
            }
         else
            e.Handled = false;
      }


this.cefWebBrowser.BeforePopup += (s, e) =>
            {
                BeginInvoke(new Action(() =>
                {
                    CefWebBrowser clone = new CefWebBrowser();
                    clone._handleCreated = true;
                   
                    var windowInfo = CefWindowInfo.Create();
                    windowInfo.SetAsChild(clone.Handle, new CefRectangle { X = 0, Y = 0, Width = Width, Height = Height });

                    var client = e.Client;
                    CefFrame frame = (CefFrame)e.Frame;
                    CefBrowser browser = frame.Browser;
                    CefRequestContext context = browser.GetHost().GetRequestContext();
                   
                var settings = new CefBrowserSettings
                {
                    // AuthorAndUserStylesDisabled = false,
                };

              [color=#FF0000]CefBrowserHost.CreateBrowser(windowInfo, client, settings, e.TargetUrl, context);[/color] 
                NewTab(clone);
                }));
            };


CefBrowserHost.CreateBrowser(windowInfo, client, settings, e.TargetUrl, context); indeed create a CefWebBrowser and add to tabPage successfully, but when I check the browser, the referer info is lost.
The popup window do not lose referer info !

so my first question is :
How can I add referer info when creating a new CefWebBrowser?


2. In this way, I still set e.Handled = true; in OnBeforePopup, but in BeforePopup function, I do not create a new CefWebBrowser, instead I find the CefBrowser in e.Frame, and add it into tabpage
Code: Select all
 this.cefWebBrowser.BeforePopup += (s, e) =>
            {
                BeginInvoke(new Action(() =>
                {
                    CefWebBrowser clone = new CefWebBrowser();
                    clone._handleCreated = true;
                   
                    var windowInfo = CefWindowInfo.Create();
                    windowInfo.SetAsChild(clone.Handle, new CefRectangle { X = 0, Y = 0, Width = Width, Height = Height });

                    CefFrame frame = (CefFrame)e.Frame;
                    CefBrowser browser = frame.Browser;
                    clone._browser = browser;
                    clone._browserWindowHandle = browser.GetHost().GetWindowHandle();
                    windowInfo.Handle = clone._browserWindowHandle;
                   
                    CefWebBrowser.ResizeWindow(clone._browserWindowHandle, Width, Height);
                    SetParent(clone._browserWindowHandle, clone.Handle);
                    NewTab(clone);
                }));
            };


In this way , the CefBrowser I find in e.Frame.Browser is the same as the old CefWebBrowser.Browser,
So my question 2 is : in OnBeforePopup, is the new CefBrowser is created? if not ,when the new CefBrowser is created?
if I set e.Handled = true in OnBeforePopup, OnBrowserAfterCreated function will not be called!!

Can anybody helps me ? thanks very much. :D
clorest510
Newbie
 
Posts: 7
Joined: Sat Jun 20, 2015 4:31 am

Re: how to add "referer" when create a new CefWebBrowser

Postby clorest510 » Sun Jun 21, 2015 10:14 pm

I have solve this one , here is my code:

Code: Select all
      internal protected virtual void OnBeforePopup(BeforePopupEventArgs e)
      {
         if (BeforePopup != null) {
                e.Handled = false;
                CefWebBrowser clone = new CefWebBrowser();
                e.WindowInfo.SetAsChild(clone.Handle, new CefRectangle { X = 0, Y = 0, Width = Width, Height = Height });
                BeforePopup(clone, e);
            }
         else
            e.Handled = false;
      }
clorest510
Newbie
 
Posts: 7
Joined: Sat Jun 20, 2015 4:31 am


Return to CefGlue Forum

Who is online

Users browsing this forum: No registered users and 23 guests

cron