4 namespace MonoTests.SystemWeb.Framework
7 /// This class is used to pass and invoke the user callbacks to all possible
8 /// <see cref="System.Web.UI.Page"/> lifecycle events. For the most
9 /// used events <see cref="System.Web.UI.Control.Init"/> and
10 /// <see cref="System.Web.UI.Control.Load"/> there are convenience
11 /// creation methods <see cref="CreateOnInit"/> and <see cref="CreateOnLoad"/>.
12 /// In .NET 2.0 there same applies to PreInit event.
14 /// <seealso cref="System.Web.UI.Control.Init"/>
15 /// <seealso cref="System.Web.UI.Control.Load"/>
16 /// <seealso cref="CreateOnInit"/>
17 /// <seealso cref="CreateOnLoad"/>
19 public class PageInvoker:BaseInvoker
22 /// The constructor method.
24 /// <param name="delegates">Value which initializes <see cref="Delegates"/> property.</param>
25 /// <seealso cref="Delegates"/>
26 public PageInvoker (PageDelegates delegates)
28 Delegates = delegates;
31 PageDelegates _delegates;
33 /// Set or get the <see cref="PageDelegates"/> collection.
35 /// <seealso cref="PageDelegates"/>
36 public PageDelegates Delegates
38 get { return _delegates; }
39 set { _delegates = value; }
43 /// Create a new <see cref="PageInvoker"/> which Delegates contain the
44 /// given callback for PreInit event.
46 /// <param name="callback">The user callback.</param>
47 /// <returns>A new <see cref="PageInvoker"/> instance.</returns>
48 public static PageInvoker CreateOnPreInit (PageDelegate callback)
50 PageDelegates pd = new PageDelegates ();
51 pd.PreInit = callback;
52 PageInvoker pi = new PageInvoker (pd);
57 /// Create a new <see cref="PageInvoker"/> which Delegates contain the
58 /// given callback for Init event.
60 /// <param name="callback">The user callback.</param>
61 /// <returns>A new <see cref="PageInvoker"/> instance.</returns>
62 public static PageInvoker CreateOnInit (PageDelegate callback)
64 PageDelegates pd = new PageDelegates ();
66 PageInvoker pi = new PageInvoker (pd);
71 /// Create a new <see cref="PageInvoker"/> which Delegates contain the
72 /// given callback for Load event.
74 /// <param name="callback">The user callback.</param>
75 /// <returns>A new <see cref="PageInvoker"/> instance.</returns>
76 public static PageInvoker CreateOnLoad (PageDelegate callback)
78 PageDelegates pd = new PageDelegates ();
80 PageInvoker pi = new PageInvoker (pd);
88 /// Add the callbacks contained in <see cref="Delegates"/> to
89 /// the given page's events.
91 /// <param name="parameters">Must contain one parameter of type
92 /// <see cref="System.Web.UI.Page"/></param>
93 /// <seealso cref="Delegates"/>
94 public override void DoInvoke (params object [] parameters)
96 base.DoInvoke (parameters);
97 if (parameters.Length != 1 || !(parameters[0] is Page))
98 throw new ArgumentException ("A single parameter with type System.Web.UI.Page is expected");
100 _page = (Page) parameters[0];
102 OnPreInit (null, null);
104 _page.LoadComplete += OnLoadComplete;
105 _page.PreLoad += OnPreLoad;
106 _page.PreRenderComplete += OnPreRenderComplete;
107 _page.InitComplete += OnInitComplete;
108 _page.SaveStateComplete += OnSaveStateComplete;
109 _page.CommitTransaction += new EventHandler (OnCommitTransaction);
110 _page.AbortTransaction += new EventHandler (OnAbortTransaction);
111 _page.Error += new EventHandler (OnError);
112 _page.Disposed += new EventHandler (OnDisposed);
113 _page.DataBinding += new EventHandler (OnDataBinding);
114 _page.Init += new EventHandler (OnInit);
115 _page.Load += new EventHandler (OnLoad);
116 _page.PreRender += new EventHandler (OnPreRender);
117 _page.Unload += new EventHandler (OnUnload);
123 /// This must be made private as soon as Mono allows using private methods for delegates
125 /// <param name="sender"></param>
126 /// <param name="a"></param>
127 public void OnLoadComplete (object sender, EventArgs a)
129 Invoke (Delegates.LoadComplete);
132 /// This must be made private as soon as Mono allows using private methods for delegates
134 /// <param name="sender"></param>
135 /// <param name="a"></param>
136 public void OnPreInit (object sender, EventArgs a)
138 Invoke (Delegates.PreInit);
141 /// This must be made private as soon as Mono allows using private methods for delegates
143 /// <param name="sender"></param>
144 /// <param name="a"></param>
145 public void OnPreLoad (object sender, EventArgs a)
147 Invoke (Delegates.PreLoad);
150 /// This must be made private as soon as Mono allows using private methods for delegates
152 /// <param name="sender"></param>
153 /// <param name="a"></param>
154 public void OnPreRenderComplete (object sender, EventArgs a)
156 Invoke (Delegates.PreRenderComplete);
159 /// This must be made private as soon as Mono allows using private methods for delegates
161 /// <param name="sender"></param>
162 /// <param name="a"></param>
163 public void OnInitComplete (object sender, EventArgs a)
165 Invoke (Delegates.InitComplete);
168 /// This must be made private as soon as Mono allows using private methods for delegates
170 /// <param name="sender"></param>
171 /// <param name="a"></param>
172 public void OnSaveStateComplete (object sender, EventArgs a)
174 Invoke (Delegates.SaveStateComplete);
177 /// This must be made private as soon as Mono allows using private methods for delegates
179 /// <param name="sender"></param>
180 /// <param name="a"></param>
181 public void OnCommitTransaction (object sender, EventArgs a)
183 Invoke (Delegates.CommitTransaction);
186 /// This must be made private as soon as Mono allows using private methods for delegates
188 /// <param name="sender"></param>
189 /// <param name="a"></param>
190 public void OnAbortTransaction (object sender, EventArgs a)
192 Invoke (Delegates.AbortTransaction);
195 /// This must be made private as soon as Mono allows using private methods for delegates
197 /// <param name="sender"></param>
198 /// <param name="a"></param>
199 public void OnError (object sender, EventArgs a)
201 Invoke (Delegates.Error);
204 /// This must be made private as soon as Mono allows using private methods for delegates
206 /// <param name="sender"></param>
207 /// <param name="a"></param>
208 public void OnDisposed (object sender, EventArgs a)
210 Invoke (Delegates.Disposed);
213 /// This must be made private as soon as Mono allows using private methods for delegates
215 /// <param name="sender"></param>
216 /// <param name="a"></param>
217 public void OnDataBinding (object sender, EventArgs a)
219 Invoke (Delegates.DataBinding);
222 /// This must be made private as soon as Mono allows using private methods for delegates
224 /// <param name="sender"></param>
225 /// <param name="a"></param>
226 public void OnInit (object sender, EventArgs a)
228 Invoke (Delegates.Init);
231 /// This must be made private as soon as Mono allows using private methods for delegates
233 /// <param name="sender"></param>
234 /// <param name="a"></param>
235 public void OnLoad (object sender, EventArgs a)
237 Invoke (Delegates.Load);
240 /// This must be made private as soon as Mono allows using private methods for delegates
242 /// <param name="sender"></param>
243 /// <param name="a"></param>
244 public void OnPreRender (object sender, EventArgs a)
246 Invoke (Delegates.PreRender);
249 /// This must be made private as soon as Mono allows using private methods for delegates
251 /// <param name="sender"></param>
252 /// <param name="a"></param>
253 public void OnUnload (object sender, EventArgs a)
255 Invoke (Delegates.Unload);
259 void Invoke (PageDelegate callback)
262 if (callback != null)
265 catch (Exception e) {
266 WebTest.RegisterException (e);
272 /// Returns the URL of a generic empty page.
274 /// <returns>The default URL.</returns>
275 public override string GetDefaultUrl ()
277 return StandardUrl.EMPTY_PAGE;