2 #define BUG_78521_FIXED
8 namespace MonoTests.SystemWeb.Framework
11 /// This class is used to pass and invoke the user callbacks to all possible
12 /// <see cref="System.Web.UI.Page"/> lifecycle events. For the most
13 /// used events <see cref="System.Web.UI.Control.Init"/> and
14 /// <see cref="System.Web.UI.Control.Load"/> there are convenience
15 /// creation methods <see cref="CreateOnInit"/> and <see cref="CreateOnLoad"/>.
16 /// In .NET 2.0 there same applies to PreInit event.
18 /// <seealso cref="System.Web.UI.Control.Init"/>
19 /// <seealso cref="System.Web.UI.Control.Load"/>
20 /// <seealso cref="CreateOnInit"/>
21 /// <seealso cref="CreateOnLoad"/>
23 public class PageInvoker:BaseInvoker
26 /// The constructor method.
28 /// <param name="delegates">Value which initializes <see cref="Delegates"/> property.</param>
29 /// <seealso cref="Delegates"/>
30 public PageInvoker (PageDelegates delegates)
32 Delegates = delegates;
35 PageDelegates _delegates;
37 /// Set or get the <see cref="PageDelegates"/> collection.
39 /// <seealso cref="PageDelegates"/>
40 public PageDelegates Delegates
42 get { return _delegates; }
43 set { _delegates = value; }
48 /// Create a new <see cref="PageInvoker"/> which Delegates contain the
49 /// given callback for PreInit event.
51 /// <param name="callback">The user callback.</param>
52 /// <returns>A new <see cref="PageInvoker"/> instance.</returns>
53 public static PageInvoker CreateOnPreInit (PageDelegate callback)
55 PageDelegates pd = new PageDelegates ();
56 pd.PreInit = callback;
57 PageInvoker pi = new PageInvoker (pd);
63 /// Create a new <see cref="PageInvoker"/> which Delegates contain the
64 /// given callback for Init event.
66 /// <param name="callback">The user callback.</param>
67 /// <returns>A new <see cref="PageInvoker"/> instance.</returns>
68 public static PageInvoker CreateOnInit (PageDelegate callback)
70 PageDelegates pd = new PageDelegates ();
72 PageInvoker pi = new PageInvoker (pd);
77 /// Create a new <see cref="PageInvoker"/> which Delegates contain the
78 /// given callback for Load event.
80 /// <param name="callback">The user callback.</param>
81 /// <returns>A new <see cref="PageInvoker"/> instance.</returns>
82 public static PageInvoker CreateOnLoad (PageDelegate callback)
84 PageDelegates pd = new PageDelegates ();
86 PageInvoker pi = new PageInvoker (pd);
94 /// Add the callbacks contained in <see cref="Delegates"/> to
95 /// the given page's events.
97 /// <param name="parameters">Must contain one parameter of type
98 /// <see cref="System.Web.UI.Page"/></param>
99 /// <seealso cref="Delegates"/>
100 public override void DoInvoke (params object [] parameters)
102 base.DoInvoke (parameters);
103 if (parameters.Length != 1 || !(parameters[0] is Page))
104 throw new ArgumentException ("A single parameter with type System.Web.UI.Page is expected");
106 _page = (Page) parameters[0];
110 _page.PreInit += OnPreInit;
112 OnPreInit (null, null);
114 _page.LoadComplete += OnLoadComplete;
115 _page.PreLoad += OnPreLoad;
116 _page.PreRenderComplete += OnPreRenderComplete;
117 _page.InitComplete += OnInitComplete;
118 _page.SaveStateComplete += OnSaveStateComplete;
120 _page.CommitTransaction += new EventHandler (OnCommitTransaction);
121 _page.AbortTransaction += new EventHandler (OnAbortTransaction);
122 _page.Error += new EventHandler (OnError);
123 _page.Disposed += new EventHandler (OnDisposed);
124 _page.DataBinding += new EventHandler (OnDataBinding);
125 _page.Init += new EventHandler (OnInit);
126 _page.Load += new EventHandler (OnLoad);
127 _page.PreRender += new EventHandler (OnPreRender);
128 _page.Unload += new EventHandler (OnUnload);
135 /// This must be made private as soon as Mono allows using private methods for delegates
137 /// <param name="sender"></param>
138 /// <param name="a"></param>
139 public void OnLoadComplete (object sender, EventArgs a)
141 Invoke (Delegates.LoadComplete);
144 /// This must be made private as soon as Mono allows using private methods for delegates
146 /// <param name="sender"></param>
147 /// <param name="a"></param>
148 public void OnPreInit (object sender, EventArgs a)
150 Invoke (Delegates.PreInit);
153 /// This must be made private as soon as Mono allows using private methods for delegates
155 /// <param name="sender"></param>
156 /// <param name="a"></param>
157 public void OnPreLoad (object sender, EventArgs a)
159 Invoke (Delegates.PreLoad);
162 /// This must be made private as soon as Mono allows using private methods for delegates
164 /// <param name="sender"></param>
165 /// <param name="a"></param>
166 public void OnPreRenderComplete (object sender, EventArgs a)
168 Invoke (Delegates.PreRenderComplete);
171 /// This must be made private as soon as Mono allows using private methods for delegates
173 /// <param name="sender"></param>
174 /// <param name="a"></param>
175 public void OnInitComplete (object sender, EventArgs a)
177 Invoke (Delegates.InitComplete);
180 /// This must be made private as soon as Mono allows using private methods for delegates
182 /// <param name="sender"></param>
183 /// <param name="a"></param>
184 public void OnSaveStateComplete (object sender, EventArgs a)
186 Invoke (Delegates.SaveStateComplete);
190 /// This must be made private as soon as Mono allows using private methods for delegates
192 /// <param name="sender"></param>
193 /// <param name="a"></param>
194 public void OnCommitTransaction (object sender, EventArgs a)
196 Invoke (Delegates.CommitTransaction);
199 /// This must be made private as soon as Mono allows using private methods for delegates
201 /// <param name="sender"></param>
202 /// <param name="a"></param>
203 public void OnAbortTransaction (object sender, EventArgs a)
205 Invoke (Delegates.AbortTransaction);
208 /// This must be made private as soon as Mono allows using private methods for delegates
210 /// <param name="sender"></param>
211 /// <param name="a"></param>
212 public void OnError (object sender, EventArgs a)
214 Invoke (Delegates.Error);
217 /// This must be made private as soon as Mono allows using private methods for delegates
219 /// <param name="sender"></param>
220 /// <param name="a"></param>
221 public void OnDisposed (object sender, EventArgs a)
223 Invoke (Delegates.Disposed);
226 /// This must be made private as soon as Mono allows using private methods for delegates
228 /// <param name="sender"></param>
229 /// <param name="a"></param>
230 public void OnDataBinding (object sender, EventArgs a)
232 Invoke (Delegates.DataBinding);
235 /// This must be made private as soon as Mono allows using private methods for delegates
237 /// <param name="sender"></param>
238 /// <param name="a"></param>
239 public void OnInit (object sender, EventArgs a)
241 Invoke (Delegates.Init);
244 /// This must be made private as soon as Mono allows using private methods for delegates
246 /// <param name="sender"></param>
247 /// <param name="a"></param>
248 public void OnLoad (object sender, EventArgs a)
250 Invoke (Delegates.Load);
253 /// This must be made private as soon as Mono allows using private methods for delegates
255 /// <param name="sender"></param>
256 /// <param name="a"></param>
257 public void OnPreRender (object sender, EventArgs a)
259 Invoke (Delegates.PreRender);
262 /// This must be made private as soon as Mono allows using private methods for delegates
264 /// <param name="sender"></param>
265 /// <param name="a"></param>
266 public void OnUnload (object sender, EventArgs a)
268 Invoke (Delegates.Unload);
272 void Invoke (PageDelegate callback)
275 if (callback != null)
278 catch (Exception e) {
279 WebTest.RegisterException (e);
285 /// Returns the URL of a generic empty page.
287 /// <returns>The default URL.</returns>
288 public override string GetDefaultUrl ()
290 return StandardUrl.EMPTY_PAGE;