11using System ;
2+ using System . ComponentModel ;
3+ using System . IO ;
24using System . Linq ;
5+ using System . Net ;
6+ using System . Text ;
37
48namespace CefSharp . Example
59{
6- public class ExamplePresenter
10+ public class ExamplePresenter : IRequestHandler
711 {
812 public static void Init ( )
913 {
@@ -35,7 +39,7 @@ public static void Init()
3539 }
3640
3741 public static string DefaultUrl = "custom://cefsharp/home" ;
38- // private static readonly Uri resource_url = new Uri("http://test/resource/load");
42+ private static readonly Uri resource_url = new Uri ( "http://test/resource/load" ) ;
3943 // private static readonly Uri scheme_url = new Uri("test://test/SchemeTest.html");
4044 // private static readonly Uri bind_url = new Uri("test://test/BindingTest.html");
4145 // private static readonly Uri tooltip_url = new Uri("test://test/TooltipTest.html");
@@ -49,84 +53,88 @@ public static void Init()
4953 // "green",
5054 // };
5155
52- // private readonly IWebBrowser model;
53- // private readonly IExampleView view;
54- // private readonly Action<Action> uiThreadInvoke;
56+ private readonly IWebBrowser model ;
57+ private readonly IExampleView view ;
58+ private readonly Action < Action > uiThreadInvoke ;
5559
56- // public ExamplePresenter(IWebBrowser model, IExampleView view, Action<Action> uiThreadInvoke)
57- // {
58- // this.model = model;
59- // this.view = view;
60- // this.uiThreadInvoke = uiThreadInvoke;
61-
62- // model.RequestHandler = this;
63- // model.PropertyChanged += OnModelPropertyChanged;
64- // model.ConsoleMessage += OnModelConsoleMessage;
65-
66- // // file
67- // view.ShowDevToolsActivated += OnViewShowDevToolsActivated;
68- // view.CloseDevToolsActivated += OnViewCloseDevToolsActivated;
69- // view.ExitActivated += OnViewExitActivated;
70-
71- // // edit
72- // view.UndoActivated += OnViewUndoActivated;
73- // view.RedoActivated += OnViewRedoActivated;
74- // view.CutActivated += OnViewCutActivated;
75- // view.CopyActivated += OnViewCopyActivated;
76- // view.PasteActivated += OnViewPasteActivated;
77- // view.DeleteActivated += OnViewDeleteActivated;
78- // view.SelectAllActivated += OnViewSelectAllActivated;
79-
80- // // test
81- // view.TestResourceLoadActivated += OnViewTestResourceLoadActivated;
82- // view.TestSchemeLoadActivated += OnViewTestSchemeLoadActivated;
83- // view.TestExecuteScriptActivated += OnViewTestExecuteScriptActivated;
84- // view.TestEvaluateScriptActivated += OnViewTestEvaluateScriptActivated;
85- // view.TestBindActivated += OnViewTestBindActivated;
86- // view.TestConsoleMessageActivated += OnViewTestConsoleMessageActivated;
87- // view.TestTooltipActivated += OnViewTestTooltipActivated;
88- // view.TestPopupActivated += OnViewTestPopupActivated;
89- // view.TestLoadStringActivated += OnViewTestLoadStringActivated;
90- // view.TestCookieVisitorActivated += OnViewTestCookieVisitorActivated;
91-
92- // // navigation
93- // view.UrlActivated += OnViewUrlActivated;
94- // view.ForwardActivated += OnViewForwardActivated;
95- // view.BackActivated += OnViewBackActivated;
96- // }
60+ public ExamplePresenter ( IWebBrowser model , IExampleView view , Action < Action > uiThreadInvoke )
61+ {
62+ this . model = model ;
63+ this . view = view ;
64+ this . uiThreadInvoke = uiThreadInvoke ;
65+
66+ var version = String . Format ( "Chromium: {0}, CEF: {1}, CefSharp: {2}" ,
67+ Cef . ChromiumVersion , Cef . CefVersion , Cef . CefSharpVersion ) ;
68+ view . DisplayOutput ( version ) ;
69+
70+ model . RequestHandler = this ;
71+ model . PropertyChanged += OnModelPropertyChanged ;
72+ //model.ConsoleMessage += OnModelConsoleMessage;
73+
74+ //// file
75+ //view.ShowDevToolsActivated += OnViewShowDevToolsActivated;
76+ //view.CloseDevToolsActivated += OnViewCloseDevToolsActivated;
77+ //view.ExitActivated += OnViewExitActivated;
78+
79+ //// edit
80+ //view.UndoActivated += OnViewUndoActivated;
81+ //view.RedoActivated += OnViewRedoActivated;
82+ //view.CutActivated += OnViewCutActivated;
83+ //view.CopyActivated += OnViewCopyActivated;
84+ //view.PasteActivated += OnViewPasteActivated;
85+ //view.DeleteActivated += OnViewDeleteActivated;
86+ //view.SelectAllActivated += OnViewSelectAllActivated;
87+
88+ //// test
89+ //view.TestResourceLoadActivated += OnViewTestResourceLoadActivated;
90+ //view.TestSchemeLoadActivated += OnViewTestSchemeLoadActivated;
91+ //view.TestExecuteScriptActivated += OnViewTestExecuteScriptActivated;
92+ //view.TestEvaluateScriptActivated += OnViewTestEvaluateScriptActivated;
93+ //view.TestBindActivated += OnViewTestBindActivated;
94+ //view.TestConsoleMessageActivated += OnViewTestConsoleMessageActivated;
95+ //view.TestTooltipActivated += OnViewTestTooltipActivated;
96+ //view.TestPopupActivated += OnViewTestPopupActivated;
97+ //view.TestLoadStringActivated += OnViewTestLoadStringActivated;
98+ //view.TestCookieVisitorActivated += OnViewTestCookieVisitorActivated;
99+
100+ //// navigation
101+ view . UrlActivated += OnViewUrlActivated ;
102+ //view.ForwardActivated += OnViewForwardActivated;
103+ //view.BackActivated += OnViewBackActivated;
104+ }
97105
98- // private void OnModelPropertyChanged(object sender, PropertyChangedEventArgs e)
99- // {
100- // switch (e.PropertyName)
101- // {
102- // case "IsBrowserInitialized":
103- // if (model.IsBrowserInitialized)
104- // {
105- // //model.Load(DefaultUrl);
106- // }
107- // break;
108-
109- // case "Title":
110- // uiThreadInvoke(() => view.SetTitle(model.Title));
111- // break;
112-
113- // case "Uri ":
114- // uiThreadInvoke(() => view.SetAddress(model.Address));
115- // break;
116-
117- // case "CanGoBack":
118- // uiThreadInvoke(() => view.SetCanGoBack(model.CanGoBack));
119- // break;
120-
121- // case "CanGoForward":
122- // uiThreadInvoke(() => view.SetCanGoForward(model.CanGoForward));
123- // break;
124-
125- // case "IsLoading":
126- // uiThreadInvoke(() => view.SetIsLoading(model.IsLoading));
127- // break;
128- // }
129- // }
106+ private void OnModelPropertyChanged ( object sender , PropertyChangedEventArgs e )
107+ {
108+ switch ( e . PropertyName )
109+ {
110+ // case "IsBrowserInitialized":
111+ // if (model.IsBrowserInitialized)
112+ // {
113+ // //model.Load(DefaultUrl);
114+ // }
115+ // break;
116+
117+ case "Title" :
118+ uiThreadInvoke ( ( ) => view . SetTitle ( model . Title ) ) ;
119+ break ;
120+
121+ case "Address " :
122+ uiThreadInvoke ( ( ) => view . SetAddress ( model . Address ) ) ;
123+ break ;
124+
125+ case "CanGoBack" :
126+ uiThreadInvoke ( ( ) => view . SetCanGoBack ( model . CanGoBack ) ) ;
127+ break ;
128+
129+ case "CanGoForward" :
130+ uiThreadInvoke ( ( ) => view . SetCanGoForward ( model . CanGoForward ) ) ;
131+ break ;
132+
133+ case "IsLoading" :
134+ uiThreadInvoke ( ( ) => view . SetIsLoading ( model . IsLoading ) ) ;
135+ break ;
136+ }
137+ }
130138
131139 // private void OnModelConsoleMessage(object sender, ConsoleMessageEventArgs e)
132140 // {
@@ -257,10 +265,10 @@ public static void Init()
257265 // Cef.VisitAllCookies(this);
258266 // }
259267
260- // private void OnViewUrlActivated(object sender, string address)
261- // {
262- // // model.Load(address);
263- // }
268+ private void OnViewUrlActivated ( object sender , string address )
269+ {
270+ model . Load ( address ) ;
271+ }
264272
265273 // private void OnViewBackActivated(object sender, EventArgs e)
266274 // {
@@ -272,39 +280,39 @@ public static void Init()
272280 // model.Forward();
273281 // }
274282
275- // bool IRequestHandler.OnBeforeBrowse(IWebBrowser browser, IRequest request, NavigationType naigationvType, bool isRedirect)
276- // {
277- // return false;
278- // }
283+ bool IRequestHandler . OnBeforeBrowse ( IWebBrowser browser , IRequest request , NavigationType naigationvType , bool isRedirect )
284+ {
285+ return false ;
286+ }
279287
280- // bool IRequestHandler.OnBeforeResourceLoad(IWebBrowser browser, IRequestResponse requestResponse)
281- // {
282- // IRequest request = requestResponse.Request;
283- // if (request.Url.StartsWith(resource_url.ToString()))
284- // {
285- // Stream resourceStream = new MemoryStream(Encoding.UTF8.GetBytes(
286- // "<html><body><h1>Success</h1><p>This document is loaded from a System.IO.Stream</p></body></html>"));
287- // requestResponse.RespondWith(resourceStream, "text/html");
288- // }
288+ bool IRequestHandler . OnBeforeResourceLoad ( IWebBrowser browser , IRequestResponse requestResponse )
289+ {
290+ IRequest request = requestResponse . Request ;
291+ if ( request . Url . StartsWith ( resource_url . ToString ( ) ) )
292+ {
293+ Stream resourceStream = new MemoryStream ( Encoding . UTF8 . GetBytes (
294+ "<html><body><h1>Success</h1><p>This document is loaded from a System.IO.Stream</p></body></html>" ) ) ;
295+ requestResponse . RespondWith ( resourceStream , "text/html" ) ;
296+ }
289297
290- // return false;
291- // }
298+ return false ;
299+ }
292300
293- // void IRequestHandler.OnResourceResponse(IWebBrowser browser, string url, int status, string statusText, string mimeType, WebHeaderCollection headers)
294- // {
301+ void IRequestHandler . OnResourceResponse ( IWebBrowser browser , string url , int status , string statusText , string mimeType , WebHeaderCollection headers )
302+ {
295303
296- // }
304+ }
297305
298- // bool IRequestHandler.GetDownloadHandler(IWebBrowser browser, out IDownloadHandler handler)
299- // {
300- // handler = new DownloadHandler();
301- // return true;
302- // }
306+ bool IRequestHandler . GetDownloadHandler ( IWebBrowser browser , out IDownloadHandler handler )
307+ {
308+ handler = new DownloadHandler ( ) ;
309+ return true ;
310+ }
303311
304- // bool IRequestHandler.GetAuthCredentials(IWebBrowser browser, bool isProxy, string host, int port, string realm, string scheme, ref string username, ref string password)
305- // {
306- // return false;
307- // }
312+ bool IRequestHandler . GetAuthCredentials ( IWebBrowser browser , bool isProxy , string host , int port , string realm , string scheme , ref string username , ref string password )
313+ {
314+ return false ;
315+ }
308316
309317 // bool ICookieVisitor.Visit(Cookie cookie, int count, int total, ref bool deleteCookie)
310318 // {
0 commit comments