diff --git a/CefSharp.WinForms/WebView.cpp b/CefSharp.WinForms/WebView.cpp index 3d32e76b4f..b8b8a63140 100644 --- a/CefSharp.WinForms/WebView.cpp +++ b/CefSharp.WinForms/WebView.cpp @@ -332,16 +332,19 @@ namespace WinForms ConsoleMessage(this, gcnew ConsoleMessageEventArgs(message, source, line)); } - void WebView::OnFrameLoadStart(String^ url) + void WebView::OnFrameLoadStart(String^ url, bool isMainFrame) { _browserCore->OnFrameLoadStart(); + + LoadStartedEventArgs^ args = gcnew LoadStartedEventArgs(url, isMainFrame); + LoadStarted(this, args); } - void WebView::OnFrameLoadEnd(String^ url) + void WebView::OnFrameLoadEnd(String^ url, bool isMainFrame) { _browserCore->OnFrameLoadEnd(); - LoadCompletedEventArgs^ args = gcnew LoadCompletedEventArgs(url); + LoadCompletedEventArgs^ args = gcnew LoadCompletedEventArgs(url, isMainFrame); LoadCompleted(this, args); } diff --git a/CefSharp.WinForms/WebView.h b/CefSharp.WinForms/WebView.h index 61753a060d..e95bdb4b2d 100644 --- a/CefSharp.WinForms/WebView.h +++ b/CefSharp.WinForms/WebView.h @@ -46,6 +46,7 @@ namespace WinForms virtual event ConsoleMessageEventHandler^ ConsoleMessage; virtual event KeyEventHandler^ BrowserKey; virtual event LoadCompletedEventHandler^ LoadCompleted; + virtual event LoadStartedEventHandler^ LoadStarted; WebView() { @@ -181,8 +182,8 @@ namespace WinForms virtual void SetNavState(bool isLoading, bool canGoBack, bool canGoForward); - virtual void OnFrameLoadStart(String^ url); - virtual void OnFrameLoadEnd(String^ url); + virtual void OnFrameLoadStart(String^ url, bool isMainFrame); + virtual void OnFrameLoadEnd(String^ url, bool isMainFrame); virtual void OnTakeFocus(bool next); virtual void OnConsoleMessage(String^ message, String^ source, int line); diff --git a/CefSharp.Wpf/WebView.cpp b/CefSharp.Wpf/WebView.cpp index 536a49cfa3..e316b55800 100644 --- a/CefSharp.Wpf/WebView.cpp +++ b/CefSharp.Wpf/WebView.cpp @@ -623,16 +623,19 @@ namespace CefSharp return _browserCore->GetBoundObjects(); } - void WebView::OnFrameLoadStart(String^ url) + void WebView::OnFrameLoadStart(String^ url, bool isMainFrame) { _browserCore->OnFrameLoadStart(); + + LoadStartedEventArgs^ args = gcnew LoadStartedEventArgs(url, isMainFrame); + LoadStarted(this, args); } - void WebView::OnFrameLoadEnd(String^ url) + void WebView::OnFrameLoadEnd(String^ url, bool isMainFrame) { _browserCore->OnFrameLoadEnd(); - LoadCompletedEventArgs^ args = gcnew LoadCompletedEventArgs(url); + LoadCompletedEventArgs^ args = gcnew LoadCompletedEventArgs(url, isMainFrame); LoadCompleted(this, args); } diff --git a/CefSharp.Wpf/WebView.h b/CefSharp.Wpf/WebView.h index 0640f96f30..cc6f8f4426 100644 --- a/CefSharp.Wpf/WebView.h +++ b/CefSharp.Wpf/WebView.h @@ -128,6 +128,7 @@ namespace CefSharp virtual event ConsoleMessageEventHandler^ ConsoleMessage; virtual event KeyEventHandler^ BrowserKey; virtual event LoadCompletedEventHandler^ LoadCompleted; + virtual event LoadStartedEventHandler^ LoadStarted; WebView() { @@ -291,8 +292,8 @@ namespace CefSharp virtual void SetNavState(bool isLoading, bool canGoBack, bool canGoForward); - virtual void OnFrameLoadStart(String^ url); - virtual void OnFrameLoadEnd(String^ url); + virtual void OnFrameLoadStart(String^ url, bool isMainFrame); + virtual void OnFrameLoadEnd(String^ url, bool isMainFrame); virtual void OnTakeFocus(bool next); virtual void OnConsoleMessage(String^ message, String^ source, int line); diff --git a/CefSharp/CefSharp.vcxproj b/CefSharp/CefSharp.vcxproj index d4f00492ed..f87554c413 100644 --- a/CefSharp/CefSharp.vcxproj +++ b/CefSharp/CefSharp.vcxproj @@ -165,6 +165,7 @@ + diff --git a/CefSharp/CefSharp.vcxproj.filters b/CefSharp/CefSharp.vcxproj.filters index d1a64aff73..b9cbe2e32d 100644 --- a/CefSharp/CefSharp.vcxproj.filters +++ b/CefSharp/CefSharp.vcxproj.filters @@ -190,5 +190,8 @@ Header Files + + Header Files + \ No newline at end of file diff --git a/CefSharp/ClientAdapter.cpp b/CefSharp/ClientAdapter.cpp index e6ab734195..53c4ffd2f8 100644 --- a/CefSharp/ClientAdapter.cpp +++ b/CefSharp/ClientAdapter.cpp @@ -123,7 +123,7 @@ namespace CefSharp _browserControl->SetNavState(true, false, false); } - _browserControl->OnFrameLoadStart(toClr(frame->GetURL())); + _browserControl->OnFrameLoadStart(toClr(frame->GetURL()), frame->IsMain()); } void ClientAdapter::OnLoadEnd(CefRefPtr browser, CefRefPtr frame, int httpStatusCode) @@ -139,7 +139,7 @@ namespace CefSharp _browserControl->SetNavState(false, browser->CanGoBack(), browser->CanGoForward()); } - _browserControl->OnFrameLoadEnd(toClr(frame->GetURL())); + _browserControl->OnFrameLoadEnd(toClr(frame->GetURL()), frame->IsMain()); } bool ClientAdapter::OnLoadError(CefRefPtr browser, CefRefPtr frame, ErrorCode errorCode, const CefString& failedUrl, CefString& errorText) diff --git a/CefSharp/IWebBrowser.h b/CefSharp/IWebBrowser.h index e5eb1ef7b4..83da2fe28b 100644 --- a/CefSharp/IWebBrowser.h +++ b/CefSharp/IWebBrowser.h @@ -4,6 +4,7 @@ #include "BrowserCore.h" #include "ConsoleMessageEventArgs.h" #include "LoadCompletedEventArgs.h" +#include "LoadStartedEventArgs.h" using namespace System; using namespace System::ComponentModel; @@ -65,8 +66,8 @@ namespace CefSharp void SetNavState(bool isLoading, bool canGoBack, bool canGoForward); - void OnFrameLoadStart(String^ url); - void OnFrameLoadEnd(String^ url); + void OnFrameLoadStart(String^ url, bool isMainFrame); + void OnFrameLoadEnd(String^ url, bool isMainFrame); void OnTakeFocus(bool next); void OnConsoleMessage(String^ message, String^ source, int line); diff --git a/CefSharp/LoadCompletedEventArgs.h b/CefSharp/LoadCompletedEventArgs.h index c370116e51..aaf54c3af0 100644 --- a/CefSharp/LoadCompletedEventArgs.h +++ b/CefSharp/LoadCompletedEventArgs.h @@ -8,12 +8,14 @@ namespace CefSharp public ref class LoadCompletedEventArgs : EventArgs { String^ _url; + bool _isMainFrame; public: - LoadCompletedEventArgs(String^ url) - : _url(url) {} + LoadCompletedEventArgs(String^ url, bool isMainFrame) + : _url(url), _isMainFrame(isMainFrame) {} property String^ Url { String^ get() { return _url; } } + property bool IsMainFrame { bool get() { return _isMainFrame; } } }; public delegate void LoadCompletedEventHandler(Object^ sender, LoadCompletedEventArgs^ url); diff --git a/CefSharp/LoadStartedEventArgs.h b/CefSharp/LoadStartedEventArgs.h new file mode 100644 index 0000000000..6fef173efc --- /dev/null +++ b/CefSharp/LoadStartedEventArgs.h @@ -0,0 +1,22 @@ +#include "Stdafx.h" +#pragma once + +using namespace System; + +namespace CefSharp +{ + public ref class LoadStartedEventArgs : EventArgs + { + String^ _url; + bool _isMainFrame; + + public: + LoadStartedEventArgs(String^ url, bool isMainFrame) + : _url(url), _isMainFrame(isMainFrame) {} + + property String^ Url { String^ get() { return _url; } } + property bool IsMainFrame { bool get() { return _isMainFrame; } } + }; + + public delegate void LoadStartedEventHandler(Object^ sender, LoadStartedEventArgs^ url); +} \ No newline at end of file