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