diff --git a/.gitignore b/.gitignore index cc851f15e0..2dd9e157d8 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,8 @@ *.swp *.user *.xml +*.VC.opendb +*.VC.db _ReSharper* bin/ diff --git a/CefSharp.Core/Internals/TypeConversion.h b/CefSharp.Core/Internals/TypeConversion.h index 7948d27b42..b9fedb061f 100644 --- a/CefSharp.Core/Internals/TypeConversion.h +++ b/CefSharp.Core/Internals/TypeConversion.h @@ -64,6 +64,7 @@ namespace CefSharp item->FullPath = StringUtils::ToClr(downloadItem->GetFullPath()); item->Id = downloadItem->GetId(); item->Url = StringUtils::ToClr(downloadItem->GetURL()); + item->OriginalUrl = StringUtils::ToClr(downloadItem->GetOriginalUrl()); item->SuggestedFileName = StringUtils::ToClr(downloadItem->GetSuggestedFileName()); item->ContentDisposition = StringUtils::ToClr(downloadItem->GetContentDisposition()); item->MimeType = StringUtils::ToClr(downloadItem->GetMimeType()); diff --git a/CefSharp.Example/DownloadHandler.cs b/CefSharp.Example/DownloadHandler.cs index 8f487ed88e..44275d1f0a 100644 --- a/CefSharp.Example/DownloadHandler.cs +++ b/CefSharp.Example/DownloadHandler.cs @@ -2,12 +2,24 @@ // // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. +using System; + namespace CefSharp.Example { public class DownloadHandler : IDownloadHandler { + public event EventHandler OnBeforeDownloadFired; + + public event EventHandler OnDownloadUpdatedFired; + public void OnBeforeDownload(IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback) { + var handler = OnBeforeDownloadFired; + if (handler != null) + { + handler(this, downloadItem); + } + if (!callback.IsDisposed) { using (callback) @@ -19,7 +31,11 @@ public void OnBeforeDownload(IBrowser browser, DownloadItem downloadItem, IBefor public void OnDownloadUpdated(IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback) { - + var handler = OnDownloadUpdatedFired; + if (handler != null) + { + handler(this, downloadItem); + } } } } diff --git a/CefSharp.Wpf.Example/MainWindow.xaml b/CefSharp.Wpf.Example/MainWindow.xaml index 98c7aa32b1..cc5cb979f5 100644 --- a/CefSharp.Wpf.Example/MainWindow.xaml +++ b/CefSharp.Wpf.Example/MainWindow.xaml @@ -20,6 +20,10 @@ + + + + diff --git a/CefSharp.Wpf.Example/MainWindow.xaml.cs b/CefSharp.Wpf.Example/MainWindow.xaml.cs index 77a8a8885d..4ead0a2de7 100644 --- a/CefSharp.Wpf.Example/MainWindow.xaml.cs +++ b/CefSharp.Wpf.Example/MainWindow.xaml.cs @@ -131,6 +131,16 @@ private void CustomCommandBinding(object sender, ExecutedRoutedEventArgs e) cmd.Execute(null); } + if (param == "ToggleSidebar") + { + browserViewModel.ShowSidebar = !browserViewModel.ShowSidebar; + } + + if (param == "ToggleDownloadInfo") + { + browserViewModel.ShowDownloadInfo = !browserViewModel.ShowDownloadInfo; + } + //NOTE: Add as required //else if (param == "CustomRequest123") //{ diff --git a/CefSharp.Wpf.Example/ViewModels/BrowserTabViewModel.cs b/CefSharp.Wpf.Example/ViewModels/BrowserTabViewModel.cs index f72ee11d3f..aacec4beb6 100644 --- a/CefSharp.Wpf.Example/ViewModels/BrowserTabViewModel.cs +++ b/CefSharp.Wpf.Example/ViewModels/BrowserTabViewModel.cs @@ -70,6 +70,27 @@ public bool ShowSidebar set { Set(ref showSidebar, value); } } + private bool showDownloadInfo; + public bool ShowDownloadInfo + { + get { return showDownloadInfo; } + set { Set(ref showDownloadInfo, value); } + } + + private string lastDownloadAction; + public string LastDownloadAction + { + get { return lastDownloadAction; } + set { Set(ref lastDownloadAction, value); } + } + + private DownloadItem downloadItem; + public DownloadItem DownloadItem + { + get { return downloadItem; } + set { Set(ref downloadItem, value); } + } + public ICommand GoCommand { get; private set; } public ICommand HomeCommand { get; private set; } public ICommand ExecuteJavaScriptCommand { get; private set; } diff --git a/CefSharp.Wpf.Example/Views/BrowserTabView.xaml b/CefSharp.Wpf.Example/Views/BrowserTabView.xaml index 79f0b90dd4..e7cea5f969 100644 --- a/CefSharp.Wpf.Example/Views/BrowserTabView.xaml +++ b/CefSharp.Wpf.Example/Views/BrowserTabView.xaml @@ -154,6 +154,238 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { + var viewModel = (BrowserTabViewModel)this.DataContext; + viewModel.LastDownloadAction = downloadAction; + viewModel.DownloadItem = downloadItem; + }); + } + private void OnBrowserMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { var point = e.GetPosition(browser); diff --git a/CefSharp/DownloadItem.cs b/CefSharp/DownloadItem.cs index f32473ef17..e9cd9e76f1 100644 --- a/CefSharp/DownloadItem.cs +++ b/CefSharp/DownloadItem.cs @@ -76,6 +76,11 @@ public class DownloadItem /// public string Url { get; set; } + /// + /// Returns the URL as it was before any redirects. + /// + public string OriginalUrl { get; set; } + /// /// Returns the suggested file name. ///