private void InitializeWebKit() { activationContext.Activate(); frameLoadDelegate = new WebFrameLoadDelegate(); Marshal.AddRef(Marshal.GetIUnknownForObject(frameLoadDelegate)); downloadDelegate = new WebDownloadDelegate(); Marshal.AddRef(Marshal.GetIUnknownForObject(downloadDelegate)); policyDelegate = new WebPolicyDelegate(AllowNavigation, AllowDownloads, AllowNewWindows); Marshal.AddRef(Marshal.GetIUnknownForObject(policyDelegate)); uiDelegate = new WebUIDelegate(this); Marshal.AddRef(Marshal.GetIUnknownForObject(uiDelegate)); webView.setPolicyDelegate(policyDelegate); webView.setFrameLoadDelegate(frameLoadDelegate); webView.setDownloadDelegate(downloadDelegate); webView.setUIDelegate(uiDelegate); webView.setHostWindow(this.host.Handle.ToInt32()); tagRECT rect = new tagRECT(); rect.top = rect.left = 0; rect.bottom = this.host.Height - 1; rect.right = this.host.Width - 1; webView.initWithFrame(rect, null, null); IWebViewPrivate webViewPrivate = (IWebViewPrivate)webView; webViewHWND = (IntPtr)webViewPrivate.viewWindow(); // Subscribe to FrameLoadDelegate events frameLoadDelegate.DidRecieveTitle += new DidRecieveTitleEvent(frameLoadDelegate_DidRecieveTitle); frameLoadDelegate.DidFinishLoadForFrame += new DidFinishLoadForFrameEvent(frameLoadDelegate_DidFinishLoadForFrame); frameLoadDelegate.DidStartProvisionalLoadForFrame += new DidStartProvisionalLoadForFrameEvent(frameLoadDelegate_DidStartProvisionalLoadForFrame); frameLoadDelegate.DidCommitLoadForFrame += new DidCommitLoadForFrameEvent(frameLoadDelegate_DidCommitLoadForFrame); frameLoadDelegate.DidFailLoadWithError += new DidFailLoadWithErrorEvent(frameLoadDelegate_DidFailLoadWithError); frameLoadDelegate.DidFailProvisionalLoadWithError += new DidFailProvisionalLoadWithErrorEvent(frameLoadDelegate_DidFailProvisionalLoadWithError); frameLoadDelegate.DidClearWindowObject += new DidClearWindowObjectEvent(frameLoadDelegate_DidClearWindowObject); // DownloadDelegate events downloadDelegate.DidReceiveResponse += new DidReceiveResponseEvent(downloadDelegate_DidReceiveResponse); downloadDelegate.DidReceiveDataOfLength += new DidReceiveDataOfLengthEvent(downloadDelegate_DidReceiveDataOfLength); downloadDelegate.DecideDestinationWithSuggestedFilename += new DecideDestinationWithSuggestedFilenameEvent(downloadDelegate_DecideDestinationWithSuggestedFilename); downloadDelegate.DidBegin += new DidBeginEvent(downloadDelegate_DidBegin); downloadDelegate.DidFinish += new DidFinishEvent(downloadDelegate_DidFinish); downloadDelegate.DidFailWithError += new DidFailWithErrorEvent(downloadDelegate_DidFailWithError); // UIDelegate events uiDelegate.CreateWebViewWithRequest += new CreateWebViewWithRequestEvent(uiDelegate_CreateWebViewWithRequest); uiDelegate.RunJavaScriptAlertPanelWithMessage += new RunJavaScriptAlertPanelWithMessageEvent(uiDelegate_RunJavaScriptAlertPanelWithMessage); uiDelegate.RunJavaScriptConfirmPanelWithMessage += new RunJavaScriptConfirmPanelWithMessageEvent(uiDelegate_RunJavaScriptConfirmPanelWithMessage); uiDelegate.RunJavaScriptTextInputPanelWithPrompt += new RunJavaScriptTextInputPanelWithPromptEvent(uiDelegate_RunJavaScriptTextInputPanelWithPrompt); activationContext.Deactivate(); }
public WebKitControl(Size size) { _activationContext = new ActivationContextHelper(); _webPolicyDelegate = new WebPolicyDelegate(); _webFrameLoadDelegate = new WebFrameLoadDelegate(); _webUIDelegate = new WebUIDelegate(); _webDownloadDelegate = new WebDownloadDelegate(); _webFrameLoadDelegate.WebFrameLoaded = this.NavigationComplete; Application.OleRequired(); // Required otherwise WebKit will throw an OutOfMemoryException _activationContext.Activate(); _webView = new WebViewClass(); _activationContext.Deactivate(); this.Width = size.Width; this.Height = size.Height; this.Load += OnLoad; }
private void InitializeWebKit() { activationContext.Activate(); frameLoadDelegate = new WebFrameLoadDelegate(); Marshal.AddRef(Marshal.GetIUnknownForObject(frameLoadDelegate)); downloadDelegate = new WebDownloadDelegate(); Marshal.AddRef(Marshal.GetIUnknownForObject(downloadDelegate)); policyDelegate = new WebPolicyDelegate(AllowNavigation, AllowDownloads, AllowNewWindows); Marshal.AddRef(Marshal.GetIUnknownForObject(policyDelegate)); uiDelegate = new WebUIDelegate(this); Marshal.AddRef(Marshal.GetIUnknownForObject(uiDelegate)); webNotificationCenter = new WebNotificationCenter(); Marshal.AddRef(Marshal.GetIUnknownForObject(webNotificationCenter)); // TODO: find out if this is really needed webNotificationObserver = new WebNotificationObserver(); webNotificationCenter.defaultCenter().addObserver(webNotificationObserver, "WebProgressEstimateChangedNotification", webView); webNotificationCenter.defaultCenter().addObserver(webNotificationObserver, "WebProgressStartedNotification", webView); webNotificationCenter.defaultCenter().addObserver(webNotificationObserver, "WebProgressFinishedNotification", webView); webView.setPolicyDelegate(policyDelegate); webView.setFrameLoadDelegate(frameLoadDelegate); webView.setDownloadDelegate(downloadDelegate); webView.setUIDelegate(uiDelegate); webView.setHostWindow(this.host.Handle.ToInt32()); tagRECT rect = new tagRECT(); rect.top = rect.left = 0; rect.bottom = this.host.Height - 1; rect.right = this.host.Width - 1; webView.initWithFrame(rect, null, null); IWebViewPrivate webViewPrivate = (IWebViewPrivate)webView; webViewHWND = (IntPtr)webViewPrivate.viewWindow(); // Subscribe to FrameLoadDelegate events frameLoadDelegate.DidRecieveTitle += new DidRecieveTitleEvent(frameLoadDelegate_DidRecieveTitle); frameLoadDelegate.DidFinishLoadForFrame += new DidFinishLoadForFrameEvent(frameLoadDelegate_DidFinishLoadForFrame); frameLoadDelegate.DidStartProvisionalLoadForFrame += new DidStartProvisionalLoadForFrameEvent(frameLoadDelegate_DidStartProvisionalLoadForFrame); frameLoadDelegate.DidCommitLoadForFrame += new DidCommitLoadForFrameEvent(frameLoadDelegate_DidCommitLoadForFrame); frameLoadDelegate.DidFailLoadWithError += new DidFailLoadWithErrorEvent(frameLoadDelegate_DidFailLoadWithError); frameLoadDelegate.DidFailProvisionalLoadWithError += new DidFailProvisionalLoadWithErrorEvent(frameLoadDelegate_DidFailProvisionalLoadWithError); frameLoadDelegate.DidClearWindowObject += new DidClearWindowObjectEvent(frameLoadDelegate_DidClearWindowObject); // DownloadDelegate events downloadDelegate.DidReceiveResponse += new DidReceiveResponseEvent(downloadDelegate_DidReceiveResponse); downloadDelegate.DidReceiveDataOfLength += new DidReceiveDataOfLengthEvent(downloadDelegate_DidReceiveDataOfLength); downloadDelegate.DecideDestinationWithSuggestedFilename += new DecideDestinationWithSuggestedFilenameEvent(downloadDelegate_DecideDestinationWithSuggestedFilename); downloadDelegate.DidBegin += new DidBeginEvent(downloadDelegate_DidBegin); downloadDelegate.DidFinish += new DidFinishEvent(downloadDelegate_DidFinish); downloadDelegate.DidFailWithError += new DidFailWithErrorEvent(downloadDelegate_DidFailWithError); // UIDelegate events uiDelegate.CreateWebViewWithRequest += new CreateWebViewWithRequestEvent(uiDelegate_CreateWebViewWithRequest); uiDelegate.RunJavaScriptAlertPanelWithMessage += new RunJavaScriptAlertPanelWithMessageEvent(uiDelegate_RunJavaScriptAlertPanelWithMessage); uiDelegate.RunJavaScriptConfirmPanelWithMessage += new RunJavaScriptConfirmPanelWithMessageEvent(uiDelegate_RunJavaScriptConfirmPanelWithMessage); uiDelegate.RunJavaScriptTextInputPanelWithPrompt += new RunJavaScriptTextInputPanelWithPromptEvent(uiDelegate_RunJavaScriptTextInputPanelWithPrompt); // Notification events webNotificationObserver.OnNotify += new OnNotifyEvent(webNotificationObserver_OnNotify); activationContext.Deactivate(); }
private void InitializeWebKit() { activationContext.Activate(); resourceLoadDelegate = new WebResourceLoadDelegate(); Marshal.AddRef(Marshal.GetIUnknownForObject(resourceLoadDelegate)); frameLoadDelegate = new WebFrameLoadDelegate(); Marshal.AddRef(Marshal.GetIUnknownForObject(frameLoadDelegate)); downloadDelegate = new WebDownloadDelegate(); Marshal.AddRef(Marshal.GetIUnknownForObject(downloadDelegate)); policyDelegate = new WebPolicyDelegate(AllowNavigation, AllowDownloads, AllowNewWindows); Marshal.AddRef(Marshal.GetIUnknownForObject(policyDelegate)); uiDelegate = new WebUIDelegate(this); Marshal.AddRef(Marshal.GetIUnknownForObject(uiDelegate)); webView.setPolicyDelegate(policyDelegate); webView.setFrameLoadDelegate(frameLoadDelegate); webView.setDownloadDelegate(downloadDelegate); webView.setUIDelegate(uiDelegate); webView.setHostWindow(this.Handle.ToInt32()); tagRECT rect = new tagRECT(); rect.top = rect.left = 0; rect.bottom = this.Height - 1; rect.right = this.Width - 1; webView.initWithFrame(rect, null, null); IWebViewPrivate webViewPrivate = (IWebViewPrivate)webView; webViewHWND = (IntPtr) webViewPrivate.viewWindow(); // Subscribe to FrameLoadDelegate events frameLoadDelegate.DidRecieveTitle += new DidRecieveTitleEvent(frameLoadDelegate_DidRecieveTitle); frameLoadDelegate.DidFinishLoadForFrame += new DidFinishLoadForFrameEvent(frameLoadDelegate_DidFinishLoadForFrame); frameLoadDelegate.DidStartProvisionalLoadForFrame += new DidStartProvisionalLoadForFrameEvent(frameLoadDelegate_DidStartProvisionalLoadForFrame); frameLoadDelegate.DidCommitLoadForFrame += new DidCommitLoadForFrameEvent(frameLoadDelegate_DidCommitLoadForFrame); frameLoadDelegate.DidFailLoadWithError += new DidFailLoadWithErrorEvent(frameLoadDelegate_DidFailLoadWithError); frameLoadDelegate.DidFailProvisionalLoadWithError += new DidFailProvisionalLoadWithErrorEvent(frameLoadDelegate_DidFailProvisionalLoadWithError); // DownloadDelegate events downloadDelegate.DidReceiveResponse += new DidReceiveResponseEvent(downloadDelegate_DidReceiveResponse); downloadDelegate.DidReceiveDataOfLength += new DidReceiveDataOfLengthEvent(downloadDelegate_DidReceiveDataOfLength); downloadDelegate.DecideDestinationWithSuggestedFilename += new DecideDestinationWithSuggestedFilenameEvent(downloadDelegate_DecideDestinationWithSuggestedFilename); downloadDelegate.DidBegin += new DidBeginEvent(downloadDelegate_DidBegin); downloadDelegate.DidFinish += new DidFinishEvent(downloadDelegate_DidFinish); downloadDelegate.DidFailWithError += new DidFailWithErrorEvent(downloadDelegate_DidFailWithError); // UIDelegate events uiDelegate.CreateWebViewWithRequest += new CreateWebViewWithRequestEvent(uiDelegate_CreateWebViewWithRequest); activationContext.Deactivate(); }