1+ namespace CefSharp . OutOfProcess . BrowserProcess . CallbackProxies
2+ {
3+ using System . Diagnostics ;
4+ using CefSharp ;
5+ using CefSharp . OutOfProcess . Interface ;
6+ using CefSharp . OutOfProcess . Interface . Callbacks ;
7+
8+ internal class DownloadHandlerProxy : CallbackProxyBase < object > , IDownloadHandler
9+ {
10+ public DownloadHandlerProxy ( IOutOfProcessHostRpc host )
11+ : base ( host )
12+ {
13+ }
14+
15+ public void BeforeDownloadCallback ( BeforeDownloadCallbackDetails details )
16+ {
17+ Debugger . Launch ( ) ;
18+ ( ( IBeforeDownloadCallback ) GetCallback ( details . CallbackId ) ) . Continue ( details . DownloadPath , details . ShowDialog ) ;
19+ }
20+
21+ public void DownloadCallback ( DownloadCallbackDetails details )
22+ {
23+ var cb = ( IDownloadItemCallback ) GetCallback ( details . CallbackId ) ;
24+ if ( details . Cancel )
25+ {
26+ cb . Cancel ( ) ;
27+ }
28+ else if ( details . Pause )
29+ {
30+ cb . Pause ( ) ;
31+ }
32+ else if ( details . Resume )
33+ {
34+ cb . Resume ( ) ;
35+ }
36+ }
37+
38+ bool IDownloadHandler . CanDownload ( IWebBrowser chromiumWebBrowser , IBrowser browser , string url , string requestMethod )
39+ {
40+ return host . OnCanDownloadAsync ( ( ( OutOfProcessChromiumWebBrowser ) chromiumWebBrowser ) . Id , url , requestMethod ) . Result ;
41+ }
42+
43+ void IDownloadHandler . OnBeforeDownload ( IWebBrowser chromiumWebBrowser , IBrowser browser , CefSharp . DownloadItem downloadItem , IBeforeDownloadCallback callback )
44+ {
45+ host . OnBeforeDownload ( ( ( OutOfProcessChromiumWebBrowser ) chromiumWebBrowser ) . Id , Convert ( downloadItem ) , CreateCallback ( callback ) ) ;
46+ }
47+
48+ void IDownloadHandler . OnDownloadUpdated ( IWebBrowser chromiumWebBrowser , IBrowser browser , CefSharp . DownloadItem downloadItem , IDownloadItemCallback callback )
49+ {
50+ host . OnDownloadUpdated ( ( ( OutOfProcessChromiumWebBrowser ) chromiumWebBrowser ) . Id , Convert ( downloadItem ) , CreateCallback ( callback ) ) ;
51+ }
52+
53+ private static CefSharp . OutOfProcess . Interface . Callbacks . DownloadItem Convert ( CefSharp . DownloadItem item ) => new CefSharp . OutOfProcess . Interface . Callbacks . DownloadItem ( )
54+ {
55+ SuggestedFileName = item . SuggestedFileName ,
56+ CurrentSpeed = item . CurrentSpeed ,
57+ Id = item . Id ,
58+ ContentDisposition = item . ContentDisposition ,
59+ EndTime = item . EndTime ,
60+ FullPath = item . FullPath ,
61+ IsCancelled = item . IsCancelled ,
62+ IsComplete = item . IsComplete ,
63+ IsInProgress = item . IsInProgress ,
64+ IsValid = item . IsValid ,
65+ MimeType = item . MimeType ,
66+ OriginalUrl = item . OriginalUrl ,
67+ PercentComplete = item . PercentComplete ,
68+ ReceivedBytes = item . ReceivedBytes ,
69+ StartTime = item . StartTime ,
70+ TotalBytes = item . TotalBytes ,
71+ Url = item . Url ,
72+ } ;
73+ }
74+ }
0 commit comments